Function at 0x40101c
Capabilities:
Connect to http server
Create http request
Download and write a file
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
mov ebp, esp
sub esp, 0x418
push 0
push 0
push 0
push 0
push str.DownloadClient
call dword [sym.imp.WININET.dll_InternetOpenA]
mov dword [ebp - 0x410], eax
cmp dword [ebp - 0x410], 0
jne 0x40104f
or eax, 0xffffffff
jmp 0x401232
push 0
push 0
push 3
push 0
push 0
push 0x50
mov eax, dword [ebp + 8]
push eax
mov ecx, dword [ebp - 0x410]
push ecx
call dword [sym.imp.WININET.dll_InternetConnectA]
mov dword [ebp - 0x40c], eax
cmp dword [ebp - 0x40c], 0
jne 0x401090
mov edx, dword [ebp - 0x410]
push edx
call dword [sym.imp.WININET.dll_InternetCloseHandle]
or eax, 0xffffffff
jmp 0x401232
push 0
push 0
push 0
push 0
push 0
mov eax, dword [ebp + 0xc]
push eax
push 0x407048
mov ecx, dword [ebp - 0x40c]
push ecx
call dword [sym.imp.WININET.dll_HttpOpenRequestA]
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
jne 0x4010db
mov edx, dword [ebp - 0x40c]
push edx
call dword [sym.imp.WININET.dll_InternetCloseHandle]
mov eax, dword [ebp - 0x410]
push eax
call dword [sym.imp.WININET.dll_InternetCloseHandle]
or eax, 0xffffffff
jmp 0x401232
push 0
push 0
push 0
push 0
mov ecx, dword [ebp - 8]
push ecx
call dword [sym.imp.WININET.dll_HttpSendRequestA]
test eax, eax
jne 0x40111d
mov edx, dword [ebp - 8]
push edx
call dword [sym.imp.WININET.dll_InternetCloseHandle]
mov eax, dword [ebp - 0x40c]
push eax
call dword [sym.imp.WININET.dll_InternetCloseHandle]
mov ecx, dword [ebp - 0x410]
push ecx
call dword [sym.imp.WININET.dll_InternetCloseHandle]
or eax, 0xffffffff
jmp 0x401232
push 0
push 0x80
push 2
push 0
push 0
push 0x40000000
mov edx, dword [ebp + 0x10]
push edx
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov dword [ebp - 0x414], eax
cmp dword [ebp - 0x414], 0xffffffff
jne 0x401174
mov eax, dword [ebp - 8]
push eax
call dword [sym.imp.WININET.dll_InternetCloseHandle]
mov ecx, dword [ebp - 0x40c]
push ecx
call dword [sym.imp.WININET.dll_InternetCloseHandle]
mov edx, dword [ebp - 0x410]
push edx
call dword [sym.imp.WININET.dll_InternetCloseHandle]
or eax, 0xffffffff
jmp 0x401232
lea eax, [ebp - 4]
push eax
push 0x400
lea ecx, [ebp - 0x408]
push ecx
mov edx, dword [ebp - 8]
push edx
call dword [sym.imp.WININET.dll_InternetReadFile]
test eax, eax
je 0x4011ff
cmp dword [ebp - 4], 0
jbe 0x4011ff
push 0
lea eax, [ebp - 0x418]
push eax
mov ecx, dword [ebp - 4]
push ecx
lea edx, [ebp - 0x408]
push edx
mov eax, dword [ebp - 0x414]
push eax
call dword [sym.imp.KERNEL32.dll_WriteFile]
mov ecx, dword [ebp - 4]
cmp ecx, dword [ebp - 0x418]
je 0x4011fa
mov edx, dword [ebp - 0x414]
push edx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [ebp - 8]
push eax
call dword [sym.imp.WININET.dll_InternetCloseHandle]
mov ecx, dword [ebp - 0x40c]
push ecx
call dword [sym.imp.WININET.dll_InternetCloseHandle]
mov edx, dword [ebp - 0x410]
push edx
call dword [sym.imp.WININET.dll_InternetCloseHandle]
or eax, 0xffffffff
jmp 0x401232
jmp 0x401174
mov eax, dword [ebp - 0x414]
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, dword [ebp - 8]
push ecx
call dword [sym.imp.WININET.dll_InternetCloseHandle]
mov edx, dword [ebp - 0x40c]
push edx
call dword [sym.imp.WININET.dll_InternetCloseHandle]
mov eax, dword [ebp - 0x410]
push eax
call dword [sym.imp.WININET.dll_InternetCloseHandle]
xor eax, eax
mov esp, ebp
pop ebp
ret