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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x744d79
mov eax, dword fs:[0]
push eax
sub esp, 0x438
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 + 0x10], 0
mov eax, dword [ebp + 8]
mov edx, dword [ebp + 0x1c]
mov ebx, dword [ebp + 0x14]
mov esi, dword [ebp + 0x20]
mov edi, ecx
mov ecx, dword [ebp + 0xc]
mov dword [ebp - 0x3a0], eax
mov eax, dword [ebp + 0x24]
mov dword [ebp - 0x3ac], ecx
mov ecx, dword [ebp + 0x28]
mov dword [ebp - 0x3c8], edx
mov edx, dword [ebp + 0x2c]
mov dword [ebp - 0x390], ebx
mov dword [ebp - 0x3a4], eax
mov dword [ebp - 0x398], ecx
mov dword [ebp - 0x3d8], edx
je 0x4c6db5
cmp byte [esi + 0xad], 0
jne 0x4c6db5
xor al, al
jmp 0x4c6dba
mov eax, 1
push eax
push str.downloadToOutput2
push esi
lea ecx, [ebp - 0x3d4]
call fcn.00474f30
mov eax, dword [ebx + 4]
lea ecx, [edi + 0x954]
mov dword [ebp - 4], 0
mov dword [ebp - 0x3e0], eax
call fcn.0040a400
mov ecx, dword [ebp - 0x398]
mov edx, dword [ebp - 0x3d8]
mov dword [edi + 0x950], 0
mov byte [ecx], 0
push ebx
mov byte [edi + 0x7b0], 0
push esi
mov ecx, edi
mov byte [edx], 0
call fcn.004bf410
test al, al
je 0x4c6f46
cmp byte [ebp + 0x10], 0
jne 0x4c6e5c
movzx eax, byte [edi + 0x21]
push eax
push str.modeZ
mov ecx, esi
call fcn.00474a80
movzx ecx, byte [edi + 0x22]
push ecx
push str.binaryMode
mov ecx, esi
call fcn.00474a80
cmp byte [edi + 0x22], 0
jne 0x4c6e5c
mov edx, dword [edi + 0x7bc]
push edx
push str.crlfMode
mov ecx, esi
call fcn.00474a80
mov eax, dword [ebp - 0x3c8]
lea ecx, [ebp - 0x444]
mov dword [ebp - 0x384], eax
call fcn.00548950
cmp byte [edi + 0x22], 0
mov byte [ebp - 4], 1
jne 0x4c6ea5
mov eax, dword [edi + 0x7bc]
test eax, eax
je 0x4c6ea5
mov ecx, dword [ebp - 0x3c8]
lea edx, [ebp - 0x444]
mov dword [ebp - 0x3f4], ecx
mov dword [ebp - 0x384], edx
mov dword [ebp - 0x3f0], eax
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x39c]
push eax
push esi
push ebx
push ecx
mov ecx, edi
mov byte [ebp - 0x3b8], 0
mov byte [ebp - 0x39c], 0
call fcn.004beb60
test al, al
je 0x4c6f37
lea ecx, [ebp - 0x3c4]
call fcn.00449010
mov edx, dword [ebp - 0x398]
mov ecx, dword [ebp - 0x3ac]
push esi
push ebx
push edx
mov edx, dword [ebp - 0x39c]
lea eax, [ebp - 0x3c4]
push eax
mov eax, dword [ebp + 0x10]
push ecx
push edx
push eax
mov ecx, edi
mov byte [ebp - 4], 2
call fcn.004c43d0
test al, al
jne 0x4c6f5f
mov edx, dword [esi]
mov eax, dword [edx + 0x14]
push str.Failed_to_setup_data_connection_for_download.
mov ecx, esi
call eax
cmp byte [ebx + 0x11], 0
jne 0x4c6f28
mov ecx, dword [ebp + 0x10]
push esi
push ebx
push ecx
mov ecx, edi
call fcn.004bdfe0
lea ecx, [ebp - 0x3c4]
mov byte [ebp - 4], 1
call fcn.00449330
lea ecx, [ebp - 0x444]
mov byte [ebp - 4], 0
call fcn.00548980
lea ecx, [ebp - 0x3d4]
mov dword [ebp - 4], 0xffffffff
call fcn.00474f80
xor al, al
jmp 0x4c7f5c
cmp byte [edi + 0x7b7], 0
je 0x4c6fe2
mov edx, dword [edi + 0x16c]
mov eax, dword [edi + 0x168]
push edx
push eax
push str.RestartPosition
mov ecx, esi
mov byte [edi + 0x7b7], 0
call fcn.00474b60
lea ecx, [ebp - 0x16c]
call fcn.0040ac30
mov edx, dword [edi + 0x16c]
mov eax, dword [edi + 0x168]
lea ecx, [ebp - 0x16c]
push ecx
push edx
mov byte [ebp - 4], 3
push eax
call fcn.00475300
add esp, 0xc
push ebx
push esi
lea ecx, [ebp - 0x16c]
call fcn.00409d90
push eax
mov ecx, edi
call fcn.004be780
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x16c]
test al, al
jne 0x4c7035
call fcn.0040acf0
jmp 0x4c6f28
cmp byte [edi + 0x178], 0
je 0x4c7041
mov ecx, dword [edi + 0x174]
mov edx, dword [edi + 0x170]
push ecx
push edx
push str.RestartPosition
mov ecx, esi
mov byte [edi + 0x178], 0
call fcn.00474b60
lea ecx, [ebp - 0x16c]
call fcn.0040ac30
mov ecx, dword [edi + 0x174]
mov edx, dword [edi + 0x170]
lea eax, [ebp - 0x16c]
push eax
push ecx
mov byte [ebp - 4], 4
push edx
jmp 0x4c6fad
mov byte [ebp - 0x3b8], 1
call fcn.0040acf0
mov eax, dword [ebp - 0x3a0]
push eax
lea ecx, [ebp - 0xf8]
call fcn.0040ac70
lea ecx, [ebp - 0xf8]
mov byte [ebp - 4], 5
call fcn.00409f00
lea ecx, [ebp - 0xf8]
call fcn.00409da0
test eax, eax
jne 0x4c7093
mov edx, dword [esi]
mov eax, dword [edx + 0x14]
push str.Filename_name_is_empty_or_NULL
mov ecx, esi
call eax
lea ecx, [ebp - 0xf8]
mov byte [ebp - 4], 2
call fcn.0040acf0
jmp 0x4c6f28
mov ecx, dword [ebp + 0x10]
push esi
push ebx
push ecx
lea ecx, [ebp - 0xf8]
call fcn.00409d90
push eax
push str.RETR
mov ecx, edi
call fcn.004c0940
test al, al
je 0x4c707f
xor eax, eax
lea ecx, [ebp - 0x1e0]
mov byte [edi + 0x178], 0
mov byte [ebp - 0x37d], 0
mov dword [ebp - 0x38c], eax
mov dword [ebp - 0x388], eax
mov byte [ebp - 0x37c], al
mov byte [ebp - 0x37b], al
mov byte [ebp - 0x3b1], al
mov byte [ebp - 0x379], al
mov byte [ebp - 0x391], al
mov dword [ebp - 0x3c8], eax
call fcn.0040ac30
push esi
push ebx
lea edx, [ebp - 0x1e0]
push edx
lea eax, [ebp - 0x3c8]
push eax
lea ecx, [ebp - 0x391]
push ecx
lea edx, [ebp - 0x379]
push edx
mov edx, dword [ebp - 0x39c]
lea eax, [ebp - 0x3b1]
push eax
lea ecx, [ebp - 0x37b]
push ecx
mov ecx, dword [ebp - 0x3ac]
push 1
push edx
mov edx, dword [ebp + 0x10]
lea eax, [ebp - 0x3c4]
push eax
push ecx
push 2
push edx
mov ecx, edi
mov byte [ebp - 4], 6
call fcn.004c0710
test al, al
jne 0x4c71b7
cmp byte [ebp - 0x37b], al
je 0x4c71c6
cmp byte [ebx + 0x13], al
je 0x4c71c6
mov ebx, dword [esi]
lea ecx, [edi + 0x72c]
call fcn.00409d90
push eax
mov eax, dword [ebx + 0x2c]
push str.initialGreeting
mov ecx, esi
call eax
mov edx, dword [esi]
mov eax, dword [edx + 0x18]
push str.TLS_data_connection_closed_by_server
mov ecx, esi
call eax
mov edx, dword [esi]
mov eax, dword [edx + 0x18]
push str.Assuming_a_zero_length_file...
mov ecx, esi
call eax
xor eax, eax
mov byte [ebp - 0x37d], 1
mov dword [ebp - 0x38c], eax
mov dword [ebp - 0x388], eax
mov byte [ebp - 0x37c], 1
mov eax, dword [ebp - 0x3bc]
test eax, eax
je 0x4c71f7
lea ebx, [eax - 0x7c]
jmp 0x4c71f9
mov edx, dword [esi]
mov eax, dword [edx + 0x14]
push str.Failed_to_complete_data_connection.
mov ecx, esi
call eax
lea ecx, [ebp - 0x1e0]
mov byte [ebp - 4], 5
call fcn.0040acf0
lea ecx, [ebp - 0xf8]
mov byte [ebp - 4], 2
call fcn.0040acf0
jmp 0x4c6f28
xor ebx, ebx
lea ecx, [ebp - 0x84]
mov dword [ebp - 0x398], 0
call fcn.0040ac30
cmp byte [ebp - 0x379], 0
mov byte [ebp - 4], 7
jne 0x4c726b
cmp byte [ebp - 0x391], 0
jne 0x4c726b
mov ecx, dword [ebp - 0x390]
push esi
push ecx
mov ecx, dword [ebp + 0x10]
lea edx, [ebp - 0x84]
push edx
lea eax, [ebp - 0x398]
push eax
push ecx
mov ecx, edi
call fcn.004b80e0
test al, al
jne 0x4c7289
mov edx, dword [esi]
mov eax, dword [edx + 0x14]
push str.Failed_to_read_RETR_intermediate_reply
mov ecx, esi
call eax
lea ecx, [ebp - 0x84]
mov byte [ebp - 4], 6
call fcn.0040acf0
jmp 0x4c71d4
mov ecx, dword [ebp - 0x3c8]
lea edx, [ebp - 0x1e0]
mov dword [ebp - 0x398], ecx
push edx
lea ecx, [ebp - 0x84]
call fcn.0040c200
mov eax, dword [ebp - 0x398]
lea ecx, [ebp - 0x84]
push ecx
lea ecx, [edi + 0x954]
mov dword [edi + 0x950], eax
call fcn.0040c200
cmp dword [ebp - 0x398], 0xc8
jl 0x4c734b
push 0x7b4b00
lea ecx, [ebp - 0x84]
call fcn.0040aa00
test al, al
je 0x4c72e8
push str.Address_already_in_use
lea ecx, [ebp - 0x84]
call fcn.0040c4b0
test al, al
je 0x4c72e8
mov edx, dword [ebp - 0x3d8]
mov byte [edx], 1
test ebx, ebx
je 0x4c7303
mov eax, dword [ebp - 0x390]
mov ecx, dword [eax + 4]
push ecx
push 0x32
push 1
push 1
mov ecx, ebx
call fcn.005481b0
mov edx, dword [esi]
mov eax, dword [edx + 0x14]
push str.Failed_due_to_status_code.
mov ecx, esi
call eax
mov ecx, dword [ebp - 0x398]
push ecx
push str.statusCode
mov ecx, esi
call fcn.00474a80
lea edx, [ebp - 0x84]
push edx
push str.statusReply
mov ecx, esi
call fcn.00474890
lea ecx, [ebp - 0x84]
mov byte [ebp - 4], 6
call fcn.0040acf0
jmp 0x4c71d4
cmp byte [ebp - 0x37c], 0
mov byte [ebp - 0x37b], 0
jne 0x4c7391
lea eax, [ebp - 0x37b]
push eax
mov eax, dword [ebp - 0x390]
lea ecx, [ebp - 0x38c]
push ecx
mov ecx, dword [ebp + 0x18]
lea edx, [ebp - 0x37d]
push edx
mov edx, dword [ebp - 0x3b8]
push esi
push eax
push ecx
push edx
lea eax, [ebp - 0x84]
push eax
mov ecx, edi
call fcn.004b6fc0
lea ecx, [edi + 0x72c]
push str.Serv_U_FTP_Server_v15
mov byte [ebp - 0x37c], 0
mov dword [ebp - 0x3e4], ecx
call fcn.0040c450
test al, al
je 0x4c73b9
mov byte [ebp - 0x37c], 1
mov ecx, dword [ebp - 0x38c]
or ecx, dword [ebp - 0x388]
je 0x4c741e
cmp dword [ebp - 0x3a4], 0
je 0x4c741e
mov edx, dword [ebp - 0x38c]
mov ecx, dword [ebp - 0x3a4]
sub edx, 0xffffff80
push edx
call fcn.00413a50
test al, al
jne 0x4c741e
mov eax, dword [esi]
mov edx, dword [eax + 0x14]
push str.Unable_to_allocate_memory_to_receive_FTP_file_download
mov ecx, esi
call edx
mov eax, dword [ebp - 0x38c]
push eax
push str.numBytesRequired
mov ecx, esi
call fcn.00474a80
lea ecx, [ebp - 0x84]
mov byte [ebp - 4], 6
call fcn.0040acf0
jmp 0x4c71d4
mov ecx, dword [ebp - 0x3ac]
mov eax, dword [ecx + 0xbac]
test eax, eax
je 0x4c745c
cmp byte [esi + 0xad], 0
je 0x4c7444
push eax
push str.BandwidthThrottleDown
mov ecx, esi
call fcn.00474a80
test ebx, ebx
je 0x4c745c
mov edx, dword [ebp - 0x3ac]
mov eax, dword [edx + 0xbac]
push eax
mov ecx, ebx
call fcn.00545720
cmp byte [ebp - 0x39c], 0
je 0x4c74cc
test ebx, ebx
je 0x4c74cc
mov ecx, dword [ebp - 0x390]
mov edx, dword [ebp - 0x3ac]
mov eax, dword [ebp + 0x10]
push esi
push ecx
push ebx
push edx
push 2
push eax
mov ecx, edi
call fcn.004b79a0
test al, al
jne 0x4c74cc
mov ecx, dword [ebp - 0x390]
mov edx, dword [ecx + 4]
mov eax, dword [edi + 0x590]
push edx
push eax
push 0
push 1
mov ecx, ebx
call fcn.005481b0
lea ecx, [ebx + 0x7c]
call fcn.00449240
lea ecx, [ebp - 0x84]
mov dword [ebp - 0x3bc], 0
mov byte [ebp - 4], 6
call fcn.0040acf0
jmp 0x4c71d4
mov ecx, dword [ebp - 0x3e0]
push ecx
lea ecx, [ebp - 0x304]
call fcn.004a6f80
cmp byte [ebp - 0x37d], 0
mov byte [ebp - 4], 8
mov byte [ebp - 0x37a], 0
mov dword [ebp - 0x39c], 0
jne 0x4c7891
test ebx, ebx
je 0x4c7891
cmp byte [esi + 0xad], 0
je 0x4c7528
mov ecx, ebx
call fcn.00545f30
movzx edx, al
push edx
push str.tlsDataConnection
mov ecx, esi
call fcn.00474a80
call sub.KERNEL32.dll_GetTickCount
mov ecx, dword [ebp - 0x384]
mov edx, dword [ebp - 0x388]
mov dword [ebp - 0x3d8], eax
lea eax, [edi + 0x940]
mov dword [ecx + 0x34], eax
lea eax, [edi + 0x930]
mov dword [ecx + 0x30], eax
lea eax, [edi + 0x5a0]
mov dword [ecx + 0x38], eax
mov eax, dword [ebp - 0x38c]
mov dword [ecx + 0x44], edx
mov edx, dword [ebp - 0x3e0]
mov dword [ecx + 0x40], eax
push esi
lea eax, [edi + 0x934]
push edx
mov dword [ecx + 0x48], eax
call fcn.004a8450
mov eax, dword [esi]
mov edx, dword [eax + 0x24]
push 1
push str.receiveDataToOutput
mov ecx, esi
call edx
cmp byte [edi + 0x21], 0
je 0x4c75e0
mov ecx, ebx
call fcn.00545fb0
mov ecx, dword [ebp - 0x384]
mov word [eax + 0x274], 0
push esi
mov byte [ecx + 0x28], 1
mov edx, dword [edi + 0x590]
push edx
mov edx, dword [ebp - 0x390]
push edx
push 0
push ecx
lea eax, [ebx + 0x50]
push eax
push 1
call fcn.0050fc70
mov eax, dword [ebp - 0x384]
mov cl, byte [eax + 0x10]
add esp, 0x1c
mov byte [ebp - 0x37a], cl
jmp 0x4c7812
cmp byte [edi + 0x640], 0
je 0x4c771b
mov dword [ebp - 0x39c], 0
call sub.KERNEL32.dll_GetTickCount
mov dword [ebp - 0x3b8], eax
xor eax, eax
push 1
mov ecx, esi
mov dword [ebp - 0x3a0], eax
mov dword [ebp - 0x3b0], eax
mov dword [ebp - 0x3ac], eax
call fcn.004749f0
push esi
lea edx, [ebp - 0x3b0]
push edx
lea eax, [ebp - 0x3a0]
push eax
mov eax, dword [edi + 0x594]
lea ecx, [ebp - 0x37a]
push ecx
mov ecx, dword [ebp - 0x384]
lea edx, [ebp - 0x304]
push edx
push 0
push eax
push 0
push 0x400000
push 0x1000
push ecx
mov ecx, ebx
call fcn.00546350
push esi
push 1
mov ecx, ebx
call fcn.005446b0
test al, al
je 0x4c7812
mov ecx, esi
call fcn.00474a20
call sub.KERNEL32.dll_GetTickCount
mov dword [ebp - 0x3a4], eax
cmp eax, dword [ebp - 0x3b8]
jbe 0x4c7602
sub eax, dword [ebp - 0x3b8]
cmp eax, 0xea60
jb 0x4c7602
lea ecx, [ebp - 0x16c]
call fcn.0040ac30
push str.NOOP_r_n
lea ecx, [ebp - 0x16c]
mov byte [ebp - 4], 9
call fcn.0040a8e0
mov edx, dword [ebp - 0x390]
mov eax, dword [edi + 0x590]
mov ecx, dword [edi + 0x928]
push edx
push esi
push eax
push ecx
mov ecx, dword [edi + 0x57c]
lea edx, [ebp - 0x16c]
push edx
call fcn.00546f90
mov byte [ebp - 4], 8
lea ecx, [ebp - 0x16c]
test al, al
je 0x4c7711
mov eax, dword [ebp - 0x3a4]
inc dword [ebp - 0x39c]
mov dword [ebp - 0x3b8], eax
call fcn.0040acf0
jmp 0x4c7602
call fcn.0040acf0
jmp 0x4c7812
cmp byte [edi + 0x22], 0
je 0x4c77b5
cmp byte [ebp - 0x37c], 0
jne 0x4c77b5
cmp byte [ebp - 0x37b], 0
jne 0x4c77b5
cmp dword [ebp - 0x388], 0
jl 0x4c77b5
jg 0x4c774f
cmp dword [ebp - 0x38c], 0
jbe 0x4c77b5
xor eax, eax
push 1
mov ecx, esi
mov dword [ebp - 0x3a0], eax
mov dword [ebp - 0x3a8], eax
mov dword [ebp - 0x3a4], eax
call fcn.004749f0
push esi
lea ecx, [ebp - 0x3a8]
push ecx
lea edx, [ebp - 0x3a0]
push edx
mov edx, dword [edi + 0x594]
lea eax, [ebp - 0x37a]
push eax
mov eax, dword [ebp - 0x388]
lea ecx, [ebp - 0x304]
push ecx
mov ecx, dword [ebp - 0x38c]
push 0
push edx
mov edx, dword [ebp - 0x384]
push eax
push ecx
push 0x1000
push edx
mov ecx, ebx
call fcn.00546350
jmp 0x4c780b
xor eax, eax
push 1
mov ecx, esi
mov dword [ebp - 0x3a0], eax
mov dword [ebp - 0x3a8], eax
mov dword [ebp - 0x3a4], eax
call fcn.004749f0
push esi
lea eax, [ebp - 0x3a8]
push eax
lea ecx, [ebp - 0x3a0]
push ecx
mov ecx, dword [edi + 0x594]
lea edx, [ebp - 0x37a]
push edx
mov edx, dword [ebp - 0x384]
lea eax, [ebp - 0x304]
push eax
push 0
push ecx
push 0x1000
push edx
mov ecx, ebx
call fcn.00546260
mov ecx, esi
call fcn.00474a20
mov eax, dword [esi]
mov edx, dword [eax + 0x28]
mov ecx, esi
call edx
cmp byte [ebp + 0x10], 0
je 0x4c782a
cmp byte [esi + 0xad], 0
je 0x4c786a
mov eax, dword [edi + 0x930]
push eax
push str.downloadRate
mov ecx, esi
call fcn.00474a80
mov ecx, dword [edi + 0x944]
mov edx, dword [edi + 0x940]
push ecx
push edx
push str.totalNumBytesReceived
mov ecx, esi
call fcn.00474b60
mov eax, dword [ebp - 0x3d8]
push eax
push str.receiveTimeMs
mov ecx, esi
call fcn.00474590
cmp byte [ebp + 0x10], 0
jne 0x4c7898
mov ecx, dword [ebp - 0x3e0]
push esi
push ecx
lea ecx, [edi + 0x5a0]
call fcn.004a6ef0
mov edx, dword [edi + 0x5d8]
mov dword [edi + 0x930], edx
jmp 0x4c7898
mov byte [ebp - 0x37a], 0
mov eax, dword [ebp - 0x384]
xor ecx, ecx
mov dword [eax + 0x34], ecx
mov dword [eax + 0x30], ecx
mov dword [eax + 0x38], ecx
mov dword [eax + 0x48], ecx
mov eax, dword [edi + 0x590]
mov dword [ebp - 0x3ac], eax
cmp byte [ebp - 0x2f3], cl
je 0x4c78d5
cmp eax, ecx
je 0x4c78cb
cmp eax, 0xbb8
jbe 0x4c78d5
mov dword [ebp - 0x3ac], 0xbb8
mov byte [ebp - 0x379], cl
cmp byte [ebp - 0x2f1], cl
je 0x4c78fd
cmp byte [ebp + 0x10], cl
jne 0x4c78fd
mov eax, dword [esi]
mov edx, dword [eax + 0x18]
push str.Data_connection_closed.
mov ecx, esi
call edx
mov byte [ebp - 0x379], 1
cmp byte [ebp - 0x2f2], 0
je 0x4c791b
mov eax, dword [esi]
mov edx, dword [eax + 0x18]
push str.Data_read_fatal_error.
mov ecx, esi
call edx
mov byte [ebp - 0x379], 1
cmp byte [ebp - 0x2f4], 0
je 0x4c796e
mov eax, dword [esi]
mov edx, dword [eax + 0x18]
push str.Timeout_while_receiving_data_to_output.
mov ecx, esi
mov byte [ebp - 0x379], 1
call edx
mov eax, dword [edi + 0x594]
push eax
push str.readTimeoutMs
mov ecx, esi
call fcn.00474a80
test ebx, ebx
je 0x4c796e
mov ecx, dword [ebp - 0x390]
mov edx, dword [ecx + 4]
mov eax, dword [ebp - 0x3ac]
push edx
push eax
push 1
push 1
mov ecx, ebx
call fcn.005481b0
xor ebx, ebx
cmp byte [ebp - 0x2f3], 0
je 0x4c79b5
mov edx, dword [esi]
mov eax, dword [edx + 0x14]
push str.Data_read_aborted_by_application
mov ecx, esi
mov byte [ebp - 0x379], 1
call eax
mov byte [edi + 0x7b0], 1
test ebx, ebx
je 0x4c79b5
mov ecx, dword [ebp - 0x390]
mov edx, dword [ecx + 4]
mov eax, dword [ebp - 0x3ac]
push edx
push eax
push 1
push 1
mov ecx, ebx
call fcn.005481b0
xor ebx, ebx
cmp byte [ebp - 0x37a], 0
je 0x4c79f8
mov edx, dword [esi]
mov eax, dword [edx + 0x14]
push str.Failed_to_send_received_data_to_output.
mov ecx, esi
mov byte [ebp - 0x379], 1
call eax
mov byte [edi + 0x7b0], 1
test ebx, ebx
je 0x4c7add
mov ecx, dword [ebp - 0x390]
mov edx, dword [ecx + 4]
mov eax, dword [ebp - 0x3ac]
push edx
push eax
jmp 0x4c7ad0
cmp byte [ebp - 0x379], 0
jne 0x4c7add
cmp byte [ebp - 0x2f4], 0
jne 0x4c7a1b
cmp byte [ebp - 0x2f1], 0
je 0x4c7add
cmp byte [ebp - 0x37d], 0
jne 0x4c7add
cmp byte [ebp - 0x37b], 0
jne 0x4c7add
mov ecx, dword [ebp - 0x38c]
or ecx, dword [ebp - 0x388]
je 0x4c7add
mov edx, dword [ebp - 0x384]
mov eax, dword [edx + 0x1c]
cmp eax, dword [ebp - 0x388]
jg 0x4c7add
jl 0x4c7a6b
mov ecx, edx
mov edx, dword [ecx + 0x18]
cmp edx, dword [ebp - 0x38c]
jae 0x4c7add
mov eax, dword [esi]
mov edx, dword [eax + 0x14]
push str.Partial_transfer_received.
mov ecx, esi
call edx
mov eax, dword [ebp - 0x384]
mov ecx, dword [eax + 0x1c]
mov edx, dword [eax + 0x18]
push ecx
push edx
push str.numBytesDownloaded
mov ecx, esi
call fcn.00474b60
mov eax, dword [ebp - 0x388]
mov ecx, dword [ebp - 0x38c]
push eax
push ecx
push str.expectedNumBytesToDownload
mov ecx, esi
call fcn.00474b60
mov byte [edi + 0x7b0], 1
mov byte [ebp - 0x379], 1
test ebx, ebx
je 0x4c7add
mov edx, dword [ebp - 0x390]
mov eax, dword [edx + 4]
mov ecx, dword [ebp - 0x3ac]
push eax
push ecx
push 1
push 1
mov ecx, ebx
call fcn.005481b0
xor ebx, ebx
cmp byte [edi + 0x22], 0
jne 0x4c7aea
mov byte [ebp - 0x37b], 1
cmp byte [ebp - 0x379], 0
jne 0x4c7cd9
cmp byte [ebp - 0x37b], 0
jne 0x4c7cd9
mov edx, dword [ebp - 0x38c]
or edx, dword [ebp - 0x388]
je 0x4c7cd9
cmp byte [ebp - 0x37d], 0
jne 0x4c7cd9
test ebx, ebx
je 0x4c7cf9
cmp byte [edi + 0x21], 0
jne 0x4c7cd9
mov eax, dword [ebp - 0x384]
mov ecx, dword [eax + 0x1c]
mov dword [ebp - 0x3a4], 0
cmp ecx, dword [ebp - 0x388]
jg 0x4c7cd9
jl 0x4c7b70
mov edx, eax
mov eax, dword [edx + 0x18]
cmp eax, dword [ebp - 0x38c]
jae 0x4c7cd9
jmp 0x4c7b70
mov eax, dword [ebp - 0x3a4]
inc eax
mov dword [ebp - 0x3a4], eax
cmp eax, 1
jle 0x4c7bc4
mov edx, dword [esi]
mov eax, dword [edx + 0x18]
push str.Did_not_receive_the_full_amount__reading_more...
mov ecx, esi
call eax
mov eax, dword [ebp - 0x384]
mov ecx, dword [eax + 0x1c]
mov edx, dword [eax + 0x18]
push ecx
push edx
push str.receivedSoFar
mov ecx, esi
call fcn.00474b60
mov eax, dword [ebp - 0x388]
mov ecx, dword [ebp - 0x38c]
push eax
push ecx
push str.expectedNumBytes
mov ecx, esi
call fcn.00474b60
mov edx, dword [edi + 0x940]
mov eax, dword [edi + 0x944]
push 1
mov ecx, esi
mov dword [ebp - 0x3dc], edx
mov dword [ebp - 0x3d8], eax
call fcn.004749f0
push esi
lea eax, [edi + 0x940]
push eax
lea ecx, [ebp - 0x3a0]
push ecx
mov ecx, dword [edi + 0x594]
lea edx, [ebp - 0x37a]
push edx
mov edx, dword [ebp - 0x384]
lea eax, [ebp - 0x304]
push eax
lea eax, [edi + 0x5a0]
push eax
push ecx
push 0x1000
push edx
mov ecx, ebx
call fcn.00546260
mov ecx, esi
call fcn.00474a20
push esi
push str.ftpReceiveToOutput
lea ecx, [ebp - 0x304]
call fcn.004a7220
cmp byte [ebp - 0x37a], 0
je 0x4c7c52
mov eax, dword [esi]
mov edx, dword [eax + 0x14]
push str.Data_write_to_output_failed.
mov ecx, esi
call edx
cmp byte [ebp - 0x2f4], 0
jne 0x4c7d8f
cmp byte [ebp - 0x2f3], 0
jne 0x4c7d8f
cmp byte [ebp - 0x2f2], 0
jne 0x4c7d8f
cmp byte [ebp - 0x37a], 0
jne 0x4c7d8f
cmp byte [ebp - 0x2f1], 0
jne 0x4c7d8f
mov eax, dword [edi + 0x944]
cmp eax, dword [ebp - 0x3d8]
jl 0x4c7cd9
jg 0x4c7cb1
mov ecx, dword [edi + 0x940]
cmp ecx, dword [ebp - 0x3dc]
jbe 0x4c7cd9
mov edx, dword [ebp - 0x384]
mov eax, dword [edx + 0x1c]
cmp eax, dword [ebp - 0x388]
jl 0x4c7b70
jg 0x4c7cd9
mov ecx, edx
mov edx, dword [ecx + 0x18]
cmp edx, dword [ebp - 0x38c]
jb 0x4c7b70
test ebx, ebx
je 0x4c7cf9
mov eax, dword [ebp - 0x390]
mov ecx, dword [eax + 4]
mov edx, dword [edi + 0x590]
push ecx
push edx
push 1
push 1
mov ecx, ebx
call fcn.005481b0
cmp byte [ebp - 0x391], 0
jne 0x4c7de2
cmp byte [ebp - 0x2f3], 0
mov eax, dword [ebp - 0x3ac]
mov ebx, dword [edi + 0x590]
mov dword [edi + 0x590], eax
je 0x4c7d2f
mov edx, dword [esi]
mov eax, dword [edx + 0x18]
push str.Note:_The_final_response_from_the_FTP_server_may_indicate_success__but_this_download_was_aborted_and_likely_did_not_actually_receive_the_entire_file.
mov ecx, esi
call eax
mov ecx, dword [ebp - 0x390]
push esi
push ecx
mov ecx, dword [ebp + 0x10]
lea edx, [ebp - 0x84]
push edx
lea eax, [ebp - 0x398]
push eax
push ecx
mov ecx, edi
call fcn.004b80e0
mov dword [edi + 0x590], ebx
test al, al
jne 0x4c7e00
mov edx, dword [esi]
mov eax, dword [edx + 0x14]
push str.No_final_status_reply.
mov ecx, esi
call eax
lea ecx, [ebp - 0x304]
mov byte [ebp - 4], 7
call fcn.004a7030
lea ecx, [ebp - 0x84]
mov byte [ebp - 4], 6
call fcn.0040acf0
jmp 0x4c71d4
mov eax, dword [ebp - 0x390]
mov ecx, dword [eax + 4]
mov edx, dword [ebp - 0x3ac]
push ecx
push edx
push 1
push 1
mov ecx, ebx
call fcn.005481b0
cmp dword [edi + 0x598], 3
je 0x4c7dc2
mov eax, dword [esi]
mov edx, dword [eax + 0x14]
push str.Failed_to_read_data_socket.__2_
mov ecx, esi
call edx
cmp byte [ebp - 0x2f3], 0
je 0x4c7cf9
mov eax, dword [esi]
mov edx, dword [eax + 0x14]
push str.aborted_by_app_callback.
mov ecx, esi
call edx
jmp 0x4c7cf9
mov ecx, dword [ebp - 0x3c8]
lea edx, [ebp - 0x1e0]
mov dword [ebp - 0x398], ecx
push edx
lea ecx, [ebp - 0x84]
call fcn.0040c200
cmp byte [edi + 0x640], 0
je 0x4c7e95
mov eax, dword [ebp - 0x39c]
test eax, eax
jle 0x4c7e95
mov dword [ebp - 0x3a4], 0
mov eax, dword [ebp - 0x3ac]
mov ebx, dword [edi + 0x590]
lea ecx, [ebp - 0x378]
mov dword [edi + 0x590], eax
call fcn.0040ac30
mov ecx, dword [ebp - 0x390]
push esi
push ecx
mov ecx, dword [ebp + 0x10]
lea edx, [ebp - 0x378]
push edx
lea eax, [ebp - 0x3a0]
push eax
push ecx
mov ecx, edi
mov byte [ebp - 4], 0xa
call fcn.004b80e0
mov dword [edi + 0x590], ebx
test al, al
je 0x4c7f7a
lea ecx, [ebp - 0x378]
mov byte [ebp - 4], 8
call fcn.0040acf0
mov eax, dword [ebp - 0x3a4]
inc eax
mov dword [ebp - 0x3a4], eax
cmp eax, dword [ebp - 0x39c]
jl 0x4c7e21
mov eax, dword [ebp - 0x398]
mov byte [ebp - 0x37c], 1
cmp eax, 0xc8
jl 0x4c7eb4
cmp eax, 0x12c
jl 0x4c7f9c
mov edx, dword [esi]
mov eax, dword [edx + 0x14]
push str.Reply_status_code_indicates_an_error.
mov ecx, esi
call eax
mov ecx, dword [ebp - 0x3e4]
push ecx
push str.ftpServerGreeting
mov ecx, esi
call fcn.00474890
mov eax, dword [esi]
mov edx, dword [eax + 0x14]
push str.Failed.
mov ecx, esi
mov byte [ebp - 0x37c], 0
call edx
lea ecx, [ebp - 0x304]
mov byte [ebp - 4], 7
call fcn.004a7030
lea ecx, [ebp - 0x84]
mov byte [ebp - 4], 6
call fcn.0040acf0
lea ecx, [ebp - 0x1e0]
mov byte [ebp - 4], 5
call fcn.0040acf0
lea ecx, [ebp - 0xf8]
mov byte [ebp - 4], 2
call fcn.0040acf0
lea ecx, [ebp - 0x3c4]
mov byte [ebp - 4], 1
call fcn.00449330
lea ecx, [ebp - 0x444]
mov byte [ebp - 4], 0
call fcn.00548980
lea ecx, [ebp - 0x3d4]
mov dword [ebp - 4], 0xffffffff
call fcn.00474f80
mov al, byte [ebp - 0x37c]
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 0x28
mov edx, dword [esi]
mov eax, dword [edx + 0x14]
push str.Filed_to_get_large_file_measure_NOOP_reply.
mov ecx, esi
call eax
lea ecx, [ebp - 0x378]
mov byte [ebp - 4], 8
call fcn.0040acf0
jmp 0x4c7d6c
cmp byte [ebp - 0x37b], 0
jne 0x4c8011
mov edx, dword [ebp - 0x38c]
mov ecx, dword [ebp - 0x388]
mov eax, edx
or eax, ecx
je 0x4c8011
cmp dword [edi + 0x598], 3
je 0x4c8011
mov eax, dword [ebp - 0x384]
mov edi, dword [eax + 0x1c]
mov ebx, dword [eax + 0x18]
cmp ecx, edi
jl 0x4c8011
jg 0x4c7fd6
cmp edx, ebx
jbe 0x4c8011
mov edx, dword [esi]
mov eax, dword [edx + 0x14]
push str.Downloaded_byte_count_less_than_expected_byte_count.
mov ecx, esi
call eax
push edi
push ebx
push str.downloadedByteCount
mov ecx, esi
call fcn.00474b60
mov ecx, dword [ebp - 0x388]
mov edx, dword [ebp - 0x38c]
push ecx
push edx
push str.expectedByteCount
mov ecx, esi
call fcn.00474b60
jmp 0x4c7d6c
cmp byte [ebp - 0x2f2], 0
je 0x4c802d
mov eax, dword [esi]
mov edx, dword [eax + 0x14]
push str.Returning_false_because_of_fatal_error_on_data_socket.
mov ecx, esi
call edx
jmp 0x4c7d6c
cmp byte [ebp - 0x2f3], 0
je 0x4c7eea
mov eax, dword [esi]
mov edx, dword [eax + 0x14]
push str.Returning_false_because_application_aborted_the_download.
mov ecx, esi
call edx
jmp 0x4c7d6c