Function at 0x4c0dd0
Capabilities:
Check for time delay via gettickcount

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x74471e
mov eax, dword fs:[0]
push eax
sub esp, 0x470
mov eax, dword [0x899944]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
cmp byte [ebp + 0xc], 0
mov eax, dword [ebp + 8]
mov edi, dword [ebp + 0x10]
mov esi, dword [ebp + 0x14]
mov ebx, ecx
mov dword [ebp - 0x444], eax
mov dword [ebp - 0x44c], edi
je 0x4c0e28
cmp byte [esi + 0xad], 0
jne 0x4c0e28
xor al, al
jmp 0x4c0e2d
mov eax, 1
push eax
push str.setupPassiveDataSocket
push esi
lea ecx, [ebp - 0x45c]
call fcn.00474f30
mov ecx, edi
mov dword [ebp - 4], 0
call fcn.004a71c0
call sub.KERNEL32.dll_GetTickCount
mov dword [ebp - 0x460], eax
jmp 0x4c0e60
cmp byte [ebx + 0x1f0], 0
mov eax, str.EPSV
jne 0x4c0e73
mov eax, str.PASV
mov ecx, dword [ebp + 0xc]
push esi
push edi
push ecx
push 0
push eax
mov ecx, ebx
call fcn.004c0940
test al, al
je 0x4c18f6
lea ecx, [ebp - 0x154]
mov dword [ebp - 0x448], 0
call fcn.0040ac30
mov ecx, dword [ebp + 0xc]
push esi
push edi
lea edx, [ebp - 0x154]
push edx
lea eax, [ebp - 0x448]
push eax
push ecx
mov ecx, ebx
mov byte [ebp - 4], 1
call fcn.004b80e0
test al, al
je 0x4c18e7
cmp byte [ebx + 0x1f0], 0
mov eax, dword [ebp - 0x448]
je 0x4c0ef8
cmp eax, 0x1f4
jne 0x4c0f46
lea ecx, [ebp - 0x154]
mov byte [ebx + 0x1f0], 0
mov byte [ebp - 4], 0
call fcn.0040acf0
jmp 0x4c0e60
cmp eax, 0x1f4
jne 0x4c0f46
push str.use_the_EPSV
lea ecx, [ebp - 0x154]
call fcn.0040c4b0
test al, al
jne 0x4c0f2b
push str.use_EPSV
lea ecx, [ebp - 0x154]
call fcn.0040c4b0
test al, al
je 0x4c18e7
lea ecx, [ebp - 0x154]
mov byte [ebx + 0x1f0], 1
mov byte [ebp - 4], 0
call fcn.0040acf0
jmp 0x4c0e60
cmp eax, 0x1a5
jne 0x4c0fda
push str.Could_not_create_socket
lea ecx, [ebp - 0x154]
call fcn.0040c4b0
test al, al
je 0x4c18e7
xor edi, edi
jmp 0x4c0f70
push 0x32
call fcn.004213c0
mov ecx, dword [ebp - 0x44c]
add esp, 4
push esi
call fcn.004a71f0
test al, al
jne 0x4c18e7
inc edi
cmp edi, 0x28
jl 0x4c0f70
mov edi, dword [ebx + 0x590]
test edi, edi
jne 0x4c0fa3
mov edi, 0x7530
call sub.KERNEL32.dll_GetTickCount
mov ecx, dword [ebp - 0x460]
mov byte [ebp - 4], 0
cmp eax, ecx
jb 0x4c18eb
sub eax, ecx
lea ecx, [ebp - 0x154]
cmp eax, edi
ja 0x4c18f1
call fcn.0040acf0
mov edi, dword [ebp - 0x44c]
jmp 0x4c0e60
cmp eax, 0xc8
jl 0x4c18e7
cmp eax, 0x12c
jge 0x4c18e7
lea ecx, [ebp - 0x154]
call fcn.0040bd80
cmp byte [ebx + 0x1f0], 0
jne 0x4c16a1
lea ecx, [ebp - 0x154]
call fcn.00409d90
mov edi, eax
push 0x28
push edi
call fcn.00408df0
add esp, 8
test eax, eax
je 0x4c1027
inc eax
jmp 0x4c1072
push str.MODE
push edi
call fcn.0070f1e0
add esp, 8
test eax, eax
je 0x4c103e
add eax, 5
jmp 0x4c1072
push str.227
lea ecx, [ebp - 0x154]
call fcn.0040aa00
test al, al
je 0x4c1697
mov cl, byte [edi + 4]
lea eax, [edi + 4]
test cl, cl
je 0x4c1072
cmp cl, 0x30
jl 0x4c106a
cmp cl, 0x39
jle 0x4c1072
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x4c1060
lea edx, [ebp - 0x470]
push edx
lea ecx, [ebp - 0x478]
push ecx
lea edx, [ebp - 0x46c]
push edx
lea ecx, [ebp - 0x460]
push ecx
lea edx, [ebp - 0x464]
push edx
lea ecx, [ebp - 0x468]
push ecx
push str._d__d__d__d__d__d
push eax
call fcn.00421b10
add esp, 0x20
cmp eax, 6
je 0x4c10d5
push str.Malformed_PASV_reply__4_
mov edx, dword [esi]
mov eax, dword [edx + 0x14]
mov ecx, esi
call eax
mov edi, dword [esi]
lea ecx, [ebp - 0x154]
call fcn.00409d90
push eax
push str.ReplyText
jmp 0x4c18e0
cmp byte [esi + 0xad], 0
mov al, byte [ebx + 0x7c0]
mov byte [ebp - 0x450], al
je 0x4c10fd
mov ecx, dword [ebp - 0x450]
push ecx
push str.passiveUseHostAddr
mov ecx, esi
call fcn.00474a40
lea ecx, [ebp - 0x43c]
mov byte [ebp - 0x43d], 1
call fcn.00403e00
cmp dword [ebx + 0x57c], 0
mov byte [ebp - 4], 2
jne 0x4c1140
mov edx, dword [esi]
mov eax, dword [ebx + 0x634]
mov edx, dword [edx + 0x14]
push eax
mov ecx, esi
call edx
lea ecx, [ebp - 0x43c]
mov byte [ebp - 4], 1
call fcn.00403e90
jmp 0x4c18e7
lea ecx, [ebp - 0x23c]
call fcn.0040ac30
cmp byte [ebx + 0x179], 0
mov byte [ebp - 4], 3
je 0x4c1180
lea edi, [ebx + 0x17c]
mov ecx, edi
call fcn.00409da0
test eax, eax
je 0x4c1177
push edi
lea ecx, [ebp - 0x23c]
call fcn.0040c010
jmp 0x4c1192
mov byte [ebp - 0x43d], 0
jmp 0x4c1192
mov ecx, dword [ebx + 0x57c]
lea eax, [ebp - 0x23c]
push eax
call fcn.00545890
lea ecx, [ebp - 0x23c]
call fcn.00409f40
push 0x63
lea ecx, [ebp - 0x23c]
call fcn.00409d90
push eax
lea ecx, [ebp - 0xe0]
push ecx
call fcn.00408f20
add esp, 0xc
lea ecx, [ebp - 0x23c]
mov byte [ebp - 0x7d], 0
mov byte [ebp - 4], 2
call fcn.0040acf0
lea edx, [ebp - 0x46c]
push edx
lea eax, [ebp - 0x460]
push eax
lea ecx, [ebp - 0x464]
push ecx
lea edx, [ebp - 0x468]
push edx
push str._d._d._d._d
lea eax, [ebp - 0x78]
push 0x64
push eax
call fcn.00421bf0
mov eax, dword [ebp - 0x478]
shl eax, 8
add eax, dword [ebp - 0x470]
add esp, 0x1c
cmp byte [esi + 0xad], 0
mov dword [ebp - 0x448], eax
je 0x4c1235
cmp byte [ebp + 0xc], 0
jne 0x4c1235
mov edx, dword [esi]
mov edx, dword [edx + 0x2c]
lea eax, [ebp - 0xe0]
push eax
push str.passiveHostAddr
mov ecx, esi
call edx
mov eax, dword [ebp - 0x444]
mov cl, byte [eax + 0xdfa]
mov dl, byte [ebp + 0xc]
mov byte [ebp - 0x43e], cl
mov byte [eax + 0xdfa], dl
call sub.KERNEL32.dll_GetTickCount
xor edi, edi
mov dword [ebp - 0x47c], eax
cmp dword [ebx + 0x630], edi
jne 0x4c1322
cmp byte [ebx + 0x7c0], 0
jne 0x4c1322
cmp byte [ebp - 0x43d], 0
je 0x4c1322
mov ecx, dword [ebp - 0x444]
mov eax, dword [ecx + 0xba0]
mov edx, 0x1388
mov dword [ebp - 0x474], eax
mov dword [ecx + 0xba0], edx
cmp eax, edx
jae 0x4c12b4
mov dword [ecx + 0xba0], eax
test eax, eax
jne 0x4c12b4
mov dword [ecx + 0xba0], edx
lea eax, [ebp - 0xe0]
push eax
lea ecx, [ebp - 0x1c8]
call fcn.0040ac70
mov ecx, dword [ebp - 0x44c]
mov edx, dword [ebp - 0x444]
mov eax, dword [ebp + 0xc]
push esi
push ecx
mov ecx, dword [ebp - 0x448]
push edx
push eax
push 1
push ecx
lea edx, [ebp - 0x1c8]
push edx
mov ecx, ebx
mov byte [ebp - 4], 4
call fcn.004b62a0
mov ecx, dword [ebp - 0x444]
mov edi, eax
mov eax, dword [ebp - 0x474]
mov dword [ecx + 0xba0], eax
test edi, edi
je 0x4c1313
mov byte [ebx + 0x7c0], 1
lea ecx, [ebp - 0x1c8]
mov byte [ebp - 4], 2
call fcn.0040acf0
lea edx, [ebp - 0x78]
push edx
lea ecx, [ebp - 0x2b0]
call fcn.0040ac70
cmp byte [ebx + 0x7c0], 0
mov byte [ebp - 4], 5
je 0x4c135e
cmp byte [ebp - 0x43d], 0
je 0x4c135e
lea eax, [ebp - 0xe0]
push eax
lea ecx, [ebp - 0x2b0]
call fcn.0040c0a0
jmp 0x4c13fa
lea ecx, [ebp - 0x78]
push ecx
lea ecx, [ebp - 0x2b0]
call fcn.0040c0a0
lea edx, [ebp - 0x2b0]
push edx
call fcn.005134f0
add esp, 4
test al, al
je 0x4c13fa
cmp byte [ebp - 0x43d], 0
je 0x4c13fa
lea ecx, [ebp - 0x1c8]
call fcn.0040ac30
lea eax, [ebp - 0xe0]
push eax
lea ecx, [ebp - 0x1c8]
mov byte [ebp - 4], 6
call fcn.0040a8e0
lea ecx, [ebp - 0x1c8]
push ecx
call fcn.005134f0
add esp, 4
test al, al
jne 0x4c13eb
mov edx, dword [esi]
mov eax, dword [edx + 0x18]
push str.Server_sent_unroutable_address_in_PASV_reply.
mov ecx, esi
call eax
mov edx, dword [esi]
mov eax, dword [edx + 0x18]
push str.Using_server_address_instead.
mov ecx, esi
call eax
lea ecx, [ebp - 0x1c8]
push ecx
lea ecx, [ebp - 0x2b0]
call fcn.0040c200
lea ecx, [ebp - 0x1c8]
mov byte [ebp - 4], 5
call fcn.0040acf0
test edi, edi
jne 0x4c1429
mov edx, dword [ebp - 0x44c]
mov eax, dword [ebp - 0x444]
mov ecx, dword [ebp + 0xc]
push esi
push edx
mov edx, dword [ebp - 0x448]
push eax
push ecx
push edi
push edx
lea eax, [ebp - 0x2b0]
push eax
mov ecx, ebx
call fcn.004b62a0
mov edi, eax
mov cl, byte [ebp - 0x43e]
mov edx, dword [ebp - 0x444]
mov byte [edx + 0xdfa], cl
test edi, edi
jne 0x4c1651
cmp byte [ebp - 0x43d], 0
je 0x4c161d
call sub.KERNEL32.dll_GetTickCount
mov ecx, dword [ebp - 0x44c]
cmp dword [ecx + 0x24], 7
jne 0x4c161d
sub eax, dword [ebp - 0x47c]
cmp eax, 0xc8
jae 0x4c161d
cmp byte [esi + 0xad], 0
je 0x4c148d
mov edx, dword [esi]
mov eax, dword [edx + 0x18]
push str.Connection_rejected_quickly__retrying_with_opposite_of_PassiveUseHostAddr...
mov ecx, esi
call eax
cmp byte [ebp - 0x450], 0
sete al
test al, al
je 0x4c1574
cmp dword [ebx + 0x57c], 0
jne 0x4c14db
mov edx, dword [esi]
mov eax, dword [ebx + 0x634]
mov edx, dword [edx + 0x14]
push eax
mov ecx, esi
call edx
lea ecx, [ebp - 0x2b0]
mov byte [ebp - 4], 2
call fcn.0040acf0
lea ecx, [ebp - 0x43c]
mov byte [ebp - 4], 1
call fcn.00403e90
jmp 0x4c18e7
lea ecx, [ebp - 0x1c8]
call fcn.0040ac30
cmp byte [ebx + 0x179], 0
mov byte [ebp - 4], 7
je 0x4c150c
lea ecx, [ebp - 0x43c]
call fcn.00406f60
push eax
lea ecx, [ebp - 0x1c8]
call fcn.0040c010
jmp 0x4c151e
mov ecx, dword [ebx + 0x57c]
lea eax, [ebp - 0x1c8]
push eax
call fcn.00545890
cmp byte [esi + 0xad], 0
je 0x4c153a
lea ecx, [ebp - 0x2b0]
push ecx
push str.passiveHostAddress
mov ecx, esi
call fcn.00474890
lea ecx, [ebp - 0x1c8]
call fcn.00409f40
push 0x63
lea ecx, [ebp - 0x1c8]
call fcn.00409d90
push eax
lea edx, [ebp - 0x78]
push edx
call fcn.00408f20
add esp, 0xc
lea ecx, [ebp - 0x1c8]
mov byte [ebp - 0x15], 0
mov byte [ebp - 4], 5
call fcn.0040acf0
jmp 0x4c15a3
lea eax, [ebp - 0x46c]
push eax
lea ecx, [ebp - 0x460]
push ecx
lea edx, [ebp - 0x464]
push edx
lea eax, [ebp - 0x468]
push eax
push str._d._d._d._d
lea ecx, [ebp - 0x78]
push 0x64
push ecx
call fcn.00421bf0
add esp, 0x1c
mov edi, dword [ebp - 0x444]
mov dl, byte [edi + 0xdfa]
mov al, byte [ebp + 0xc]
lea ecx, [ebp - 0x78]
push ecx
lea ecx, [ebp - 0x324]
mov byte [ebp - 0x43e], dl
mov byte [edi + 0xdfa], al
call fcn.0040ac70
mov edx, dword [ebp - 0x44c]
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp - 0x448]
push esi
push edx
push edi
push eax
push 0
push ecx
lea edx, [ebp - 0x324]
push edx
mov ecx, ebx
mov byte [ebp - 4], 8
call fcn.004b62a0
mov ecx, dword [ebp - 0x444]
mov edi, eax
movzx eax, byte [ebp - 0x43e]
mov byte [ecx + 0xdfa], al
lea ecx, [ebp - 0x324]
mov byte [ebp - 4], 5
call fcn.0040acf0
test edi, edi
jne 0x4c1651
cmp dword [ebp - 0x468], 0xc0
jne 0x4c1643
cmp dword [ebp - 0x464], 0xa8
jne 0x4c1643
mov edx, dword [esi]
mov eax, dword [edx + 0x18]
push str.Try_setting_the_PassiveUseHostAddr_property__true
mov ecx, esi
call eax
mov edx, dword [esi]
mov eax, dword [edx + 0x14]
push str.setupPassiveDataSocket_dataConnect_failed.
mov ecx, esi
call eax
lea ecx, [ebp - 0x2b0]
mov byte [ebp - 4], 2
call fcn.0040acf0
lea ecx, [ebp - 0x43c]
mov byte [ebp - 4], 1
call fcn.00403e90
lea ecx, [ebp - 0x154]
mov byte [ebp - 4], 0
call fcn.0040acf0
lea ecx, [ebp - 0x45c]
mov dword [ebp - 4], 0xffffffff
call fcn.00474f80
mov eax, edi
jmp 0x4c190a
push str.Malformed_PASV_reply__3_
jmp 0x4c10b4
cmp byte [esi + 0xad], 0
je 0x4c16bd
lea eax, [ebp - 0x154]
push eax
push str.epsvReply
mov ecx, esi
call fcn.00474890
lea ecx, [ebp - 0x154]
call fcn.00409d90
push 0x28
push eax
call fcn.00408df0
mov edi, eax
add esp, 8
test edi, edi
jne 0x4c16e3
push str.Unrecognized_EPSV_reply.
jmp 0x4c18c4
push 0x29
push edi
call fcn.00408df0
add esp, 8
test eax, eax
je 0x4c18bf
sub eax, edi
cmp eax, 5
jl 0x4c18bf
mov cl, byte [edi + 1]
inc edi
xor edx, edx
mov al, byte [edi + 1]
inc edi
cmp al, cl
je 0x4c171c
nop
test al, al
je 0x4c176c
mov al, byte [edi + 1]
inc edi
cmp al, cl
jne 0x4c1710
inc edx
cmp edx, 2
jl 0x4c1707
lea ecx, [ebp - 0x450]
push ecx
inc edi
push 0x76788c
push edi
mov dword [ebp - 0x450], 0
call fcn.00421a40
add esp, 0xc
test eax, eax
jne 0x4c1792
mov edx, dword [esi]
mov eax, dword [edx + 0x14]
push str.Unrecognized_EPSV_reply...
mov ecx, esi
call eax
lea ecx, [ebp - 0x154]
push ecx
push str.epsv_reply
mov ecx, esi
call fcn.00474890
jmp 0x4c18e7
mov eax, dword [esi]
mov edx, dword [eax + 0x14]
push str.Unrecognized_EPSV_reply....
mov ecx, esi
call edx
lea eax, [ebp - 0x154]
push eax
push str.epsv_reply
mov ecx, esi
call fcn.00474890
jmp 0x4c18e7
lea ecx, [ebp - 0x23c]
call fcn.0040ac30
cmp byte [ebx + 0x179], 0
mov byte [ebp - 4], 9
je 0x4c17eb
lea edi, [ebx + 0x17c]
mov ecx, edi
call fcn.00409da0
test eax, eax
je 0x4c17c9
push edi
lea ecx, [ebp - 0x23c]
call fcn.0040c010
jmp 0x4c1825
mov edx, dword [esi]
mov eax, dword [edx + 0x14]
push str.Unable_to_get_indirect_dest_IP_address
mov ecx, esi
call eax
lea ecx, [ebp - 0x23c]
mov byte [ebp - 4], 1
call fcn.0040acf0
jmp 0x4c18e7
mov ecx, dword [ebx + 0x57c]
test ecx, ecx
jne 0x4c1819
mov edx, dword [esi]
mov eax, dword [ebx + 0x634]
mov edx, dword [edx + 0x14]
push eax
mov ecx, esi
call edx
lea ecx, [ebp - 0x23c]
mov byte [ebp - 4], 1
call fcn.0040acf0
jmp 0x4c18e7
lea eax, [ebp - 0x23c]
push eax
call fcn.00545890
cmp byte [esi + 0xad], 0
je 0x4c1841
lea ecx, [ebp - 0x23c]
push ecx
push str.epsvHostAddr
mov ecx, esi
call fcn.00474890
mov ecx, dword [ebp - 0x44c]
mov edi, dword [ebp - 0x444]
mov dl, byte [edi + 0xdfa]
mov eax, dword [ebp + 0xc]
push esi
push ecx
push edi
push eax
mov byte [ebp - 0x43e], dl
mov edx, dword [ebp - 0x450]
push 0
mov byte [edi + 0xdfa], al
push edx
lea eax, [ebp - 0x23c]
push eax
mov ecx, ebx
call fcn.004b62a0
mov cl, byte [ebp - 0x43e]
mov byte [edi + 0xdfa], cl
lea ecx, [ebp - 0x23c]
mov esi, eax
mov byte [ebp - 4], 1
call fcn.0040acf0
lea ecx, [ebp - 0x154]
mov byte [ebp - 4], 0
call fcn.0040acf0
lea ecx, [ebp - 0x45c]
mov dword [ebp - 4], 0xffffffff
call fcn.00474f80
mov eax, esi
jmp 0x4c190a
push str.Unrecognized_EPSV_reply..
mov edx, dword [esi]
mov eax, dword [edx + 0x14]
mov ecx, esi
call eax
mov edi, dword [esi]
lea ecx, [ebp - 0x154]
call fcn.00409d90
push eax
push str.epsv_reply
mov edx, dword [edi + 0x2c]
mov ecx, esi
call edx
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x154]
call fcn.0040acf0
lea ecx, [ebp - 0x45c]
mov dword [ebp - 4], 0xffffffff
call fcn.00474f80
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0070bb4c
mov esp, ebp
pop ebp
ret 0x10