Function at 0x403484
Capabilities:
Check for time delay via gettickcount
Download and write a file
Get http content length
Read data from internet
Receive and write data from server to client
Receive data
Send data
Send http request
Write file on windows

Disassembly:
push ebp
lea ebp, [esp - 0x283c]
mov eax, 0x283c
call fcn.00433e30
push 0xffffffffffffffff
push 0x44a31d
mov eax, dword fs:[0]
push eax
sub esp, 0x58
mov eax, dword [0x466b10]
xor eax, ebp
mov dword [ebp + 0x2838], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, dword [ebp + 0x2844]
mov esi, ecx
mov eax, dword [esi + 8]
mov ecx, dword [ebp + 0x2848]
xor ebx, ebx
cmp eax, ebx
mov dword [ebp - 0x28], ecx
jne 0x403502
xor al, al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x2838]
xor ecx, ebp
call fcn.00432980
add ebp, 0x283c
leave
ret 0xc
cmp dword [ebp + 0x284c], 1
mov dword [ebp - 0x14], ebx
jne 0x40354f
push ecx
push edi
mov ecx, esi
call fcn.00403310
push ebx
push 2
push SysReAllocStringLen
push edi
push dword [esi + 8]
mov dword [ebp - 0x14], eax
call dword [sym.imp.WININET.dll_FtpOpenFileA]
cmp eax, ebx
mov dword [ebp - 0x18], eax
jne 0x4035b1
push ebx
call dword [sym.imp.WININET.dll_InternetCloseHandle]
push 0x10
push str.FTP_Error
push str.FtpOpenFile_Error
push ebx
call dword [sym.imp.USER32.dll_MessageBoxA]
jmp 0x4034db
push ebx
push 0x84400000
push ebx
push ebx
push str.HTTP_1.0
push edi
push 0x44fc60
push eax
call dword [sym.imp.WININET.dll_HttpOpenRequestA]
mov esi, eax
cmp esi, ebx
mov dword [ebp - 0x18], esi
je 0x4034db
push ebx
push ebx
push ebx
push ebx
push esi
call dword [sym.imp.WININET.dll_HttpSendRequestA]
test eax, eax
jne 0x403591
push esi
call dword [sym.imp.WININET.dll_InternetCloseHandle]
jmp 0x4034db
push ebx
lea eax, [ebp - 0x2c]
push eax
lea eax, [ebp - 0x14]
push eax
push 0x20000005
push esi
mov dword [ebp - 0x2c], 4
call dword [sym.imp.WININET.dll_HttpQueryInfoA]
test eax, eax
je 0x403585
push 0xf
pop esi
push ebx
lea ecx, [ebp + 0x1c]
mov dword [ebp + 0x34], esi
call fcn.0040155f
mov eax, dword [0x46811c]
add eax, 0x9ec
push 0x44fc5c
push eax
lea eax, [ebp - 0x20]
push eax
mov dword [ebp - 4], ebx
call fcn.004032ac
push dword [ebp - 0x28]
mov byte [ebp - 4], 1
push eax
lea eax, [ebp - 0x1c]
push eax
call fcn.004032ac
add esp, 0x18
push dword [eax]
lea ecx, [ebp + 0x1c]
mov byte [ebp - 4], 2
call fcn.00401a04
mov ecx, dword [ebp - 0x1c]
add ecx, 0xfffffff0
call fcn.00402050
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff0
mov byte [ebp - 4], bl
call fcn.00402050
cmp dword [ebp + 0x34], 0x10
mov eax, dword [ebp + 0x20]
jae 0x403623
lea eax, [ebp + 0x20]
push 0x44fc58
push eax
call fcn.00433e19
cmp eax, ebx
pop ecx
pop ecx
mov dword [ebp - 0x1c], eax
jne 0x403663
push dword [ebp - 0x18]
call dword [sym.imp.WININET.dll_InternetCloseHandle]
push 0x10
push str.DOWNLOAD
push str.Can_t_open_local_file
push ebx
call dword [sym.imp.USER32.dll_MessageBoxA]
push ebx
push 1
lea ecx, [ebp + 0x1c]
call fcn.00401627
jmp 0x4034db
xor edi, edi
call dword [sym.imp.KERNEL32.dll_GetTickCount]
push ebx
lea ecx, [ebp]
mov dword [ebp + 0x18], esi
call fcn.0040155f
push dword [ebp - 0x28]
lea ecx, [ebp]
mov byte [ebp - 4], 3
call fcn.00401a04
lea eax, [ebp]
push eax
lea eax, [ebp - 0x64]
push str.Downloading
push eax
call fcn.00403439
add esp, 0xc
push 0xffffffffffffffff
push ebx
push eax
lea ecx, [ebp]
mov byte [ebp - 4], 4
call fcn.004018b9
push ebx
push 1
lea ecx, [ebp - 0x64]
mov byte [ebp - 4], 3
call fcn.00401627
mov ecx, dword [0x46811c]
lea eax, [ebp]
push eax
call fcn.00404788
cmp dword [ebp - 0x14], ebx
jbe 0x40376e
mov esi, 0x27ff
lea eax, [ebp - 0x24]
push eax
push esi
lea eax, [ebp + 0x38]
push eax
push dword [ebp - 0x18]
call dword [sym.imp.WININET.dll_InternetReadFile]
push dword [ebp - 0x1c]
mov dword [ebp - 0x20], eax
push dword [ebp - 0x24]
lea eax, [ebp + 0x38]
push 1
push eax
call fcn.00433cd3
mov eax, dword [ebp - 0x14]
xor edx, edx
mov ecx, esi
div ecx
add edi, dword [ebp - 0x24]
add esp, 0x10
xor edx, edx
test eax, eax
mov eax, edi
jne 0x40371b
div ecx
imul eax, eax, 0x64
jmp 0x403721
imul eax, eax, 0x64
div dword [ebp - 0x14]
mov ecx, dword [0x46811c]
push eax
add ecx, 0x53c
call fcn.0040297d
call dword [sym.imp.KERNEL32.dll_GetTickCount]
push 1
push ebx
push ebx
push ebx
lea eax, [ebp - 0x48]
push eax
call dword [sym.imp.USER32.dll_PeekMessageA]
test eax, eax
je 0x403760
lea eax, [ebp - 0x48]
push eax
call dword [sym.imp.USER32.dll_TranslateMessage]
lea eax, [ebp - 0x48]
push eax
call dword [sym.imp.USER32.dll_DispatchMessageA]
cmp dword [ebp - 0x20], ebx
je 0x40376e
cmp edi, dword [ebp - 0x14]
jb 0x4036d7
push dword [ebp - 0x1c]
call fcn.00433af8
cmp edi, dword [ebp - 0x14]
pop ecx
jae 0x4037a6
mov byte [ebp - 0xd], bl
push dword [ebp - 0x18]
call dword [sym.imp.WININET.dll_InternetCloseHandle]
push ebx
push 1
lea ecx, [ebp]
call fcn.00401627
push ebx
push 1
lea ecx, [ebp + 0x1c]
call fcn.00401627
mov al, byte [ebp - 0xd]
jmp 0x4034dd
mov byte [ebp - 0xd], 1
jmp 0x40377f