Function at 0x40cdff
Capabilities:
Check http status code
Connect to http server
Create http request
Download and write a file
Parse url
Read and send data from client to server
Read data from internet
Read file on windows
Receive and write data from server to client
Receive data
Send data
Send http request
Write file on windows

Disassembly:
push 0x57c
push 0x440218
call fcn.0041c080
mov dword [ebp - 0x4c], 4
xor ebx, ebx
mov dword [ebp - 0x28], ebx
mov dword [ebp - 0x20], ebx
mov byte [ebp - 0x18c], bl
mov edi, dword [ebp + 8]
push edi
mov esi, dword [sym.imp.KERNEL32.dll_lstrlenA]
call esi
test eax, eax
je 0x40d2c9
push edi
call fcn.00417c50
pop ecx
test eax, eax
je 0x40d2c9
cmp dword [ebp + 0x14], ebx
je 0x40ce5a
lea eax, [ebp - 0x18c]
push eax
push edi
call fcn.00418336
pop ecx
pop ecx
lea eax, [ebp - 0x18c]
push eax
call esi
test eax, eax
je 0x40cea9
push ebx
push 0x20
push 3
push ebx
push ebx
push 0x40000000
lea eax, [ebp - 0x18c]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov esi, eax
cmp esi, 0xffffffff
je 0x40cea9
push ebx
lea eax, [ebp - 0x20]
push eax
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push esi
call dword [sym.imp.KERNEL32.dll_ReadFile]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [ebp - 0x20], ebx
ja 0x40d2c9
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x44], ebx
mov dword [ebp - 0x34], ebx
mov dword [ebp - 0x24], ebx
mov dword [ebp - 0x30], 0x80004005
mov dword [ebp - 4], ebx
push ebx
push ebx
push ebx
push ebx
push 0x436160
call dword [sym.imp.WININET.dll_InternetOpenA]
mov dword [ebp - 0x44], eax
cmp eax, ebx
je 0x40d221
push 0x3c
pop esi
push esi
push ebx
lea eax, [ebp - 0x88]
push eax
call fcn.0041b5c0
add esp, 0xc
mov dword [ebp - 0x88], esi
lea eax, [ebp - 0x38c]
mov dword [ebp - 0x78], eax
mov eax, 0x100
mov dword [ebp - 0x74], eax
xor ecx, ecx
mov word [ebp - 0x70], cx
lea ecx, [ebp - 0x58c]
mov dword [ebp - 0x5c], ecx
mov dword [ebp - 0x58], eax
lea ecx, [ebp - 0x48c]
mov dword [ebp - 0x54], ecx
mov dword [ebp - 0x50], eax
lea eax, [ebp - 0x88]
push eax
push ebx
push edi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
push eax
push edi
call dword [sym.imp.WININET.dll_InternetCrackUrlA]
push ebx
push ebx
push 3
push 0x435e42
push 0x435e43
push dword [ebp - 0x70]
push dword [ebp - 0x78]
push dword [ebp - 0x44]
call dword [sym.imp.WININET.dll_InternetConnectA]
mov dword [ebp - 0x34], eax
cmp eax, ebx
je 0x40d221
lea eax, [ebp - 0x28c]
cmp dword [ebp - 0x58], ebx
je 0x40cf71
push dword [ebp - 0x5c]
jmp 0x40cf76
push 0x436168
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
cmp dword [ebp - 0x50], ebx
je 0x40cf92
push dword [ebp - 0x54]
lea eax, [ebp - 0x28c]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcatA]
mov dword [ebp - 0x2c], ebx
mov dword [ebp - 0x3c], ebx
mov dword [ebp - 0x40], esi
mov dword [ebp - 0x2c], ebx
push ebx
push 0x4c00000
push ebx
push 0x435e4a
push 0x43616c
lea eax, [ebp - 0x28c]
push eax
push 0x436178
push dword [ebp - 0x34]
call dword [sym.imp.WININET.dll_HttpOpenRequestA]
mov dword [ebp - 0x24], eax
cmp eax, ebx
je 0x40d221
xor esi, esi
inc esi
mov dword [ebp - 0x1c], esi
push ebx
push ebx
push ebx
push ebx
push dword [ebp - 0x24]
call dword [sym.imp.WININET.dll_HttpSendRequestA]
test eax, eax
jne 0x40d03f
cmp dword [ebp - 0x1c], ebx
je 0x40d221
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, eax
sub ecx, 0x2ee2
je 0x40d029
sub ecx, 5
je 0x40d029
sub ecx, 0x16
je 0x40d029
mov dword [ebp - 0x1c], ebx
push ebx
push 7
push eax
push dword [ebp - 0x24]
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.WININET.dll_InternetErrorDlg]
cmp eax, 0x2f00
jne 0x40cfd5
jmp 0x40cfd2
mov dword [ebp - 0x1c], ebx
cmp dword [ebp + 0x18], ebx
je 0x40cfd5
push ebx
push ebx
push eax
push ebx
call fcn.0040cc55
add esp, 0x10
jmp 0x40cfd5
cmp dword [ebp - 0x1c], ebx
je 0x40d221
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
mov dword [ebp - 0x38], ebx
push ebx
lea eax, [ebp - 0x4c]
push eax
lea eax, [ebp - 0x38]
push eax
push 0x20000013
mov edi, dword [ebp - 0x24]
push edi
call dword [sym.imp.WININET.dll_HttpQueryInfoA]
test eax, eax
jne 0x40d077
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
mov dword [ebp - 0x1c], 1
mov edx, dword [ebp - 0x38]
cmp edx, 0x197
jne 0x40d0d5
cmp dword [ebp - 0x1c], ebx
je 0x40d0d5
push ebx
push 7
push esi
push edi
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.WININET.dll_InternetErrorDlg]
cmp eax, 0x2f00
je 0x40d0ac
mov dword [ebp - 0x1c], ebx
jmp 0x40d07e
push ebx
push ebx
push ebx
push ebx
push edi
call dword [sym.imp.WININET.dll_HttpSendRequestA]
mov dword [ebp - 0x4c], 4
push ebx
lea eax, [ebp - 0x4c]
push eax
lea eax, [ebp - 0x38]
push eax
push 0x20000013
push edi
call dword [sym.imp.WININET.dll_HttpQueryInfoA]
jmp 0x40d07e
cmp edx, 0xc8
jne 0x40d11a
mov dword [ebp - 0x20], ebx
mov ecx, dword [ebp - 0x28]
mov eax, dword [ebp + 0xc]
add eax, ecx
lea edx, [ebp - 0x20]
push edx
mov edx, dword [ebp + 0x10]
sub edx, ecx
push edx
push eax
push edi
call dword [sym.imp.WININET.dll_InternetReadFile]
test eax, eax
je 0x40d104
mov eax, dword [ebp - 0x20]
add dword [ebp - 0x28], eax
cmp dword [ebp - 0x20], ebx
ja 0x40d0dd
cmp dword [ebp - 0x28], ebx
jbe 0x40d218
mov dword [ebp - 0x30], ebx
jmp 0x40d218
lea eax, [edx - 0x190]
cmp eax, 0xc7
ja 0x40d1fd
mov eax, 0x193
cmp edx, eax
je 0x40d1cd
add eax, 0x61
cmp edx, eax
jne 0x40d166
cmp dword [ebp + 0x18], ebx
je 0x40d1e1
push 1
push ebx
push eax
push ebx
call fcn.0040cc55
add esp, 0x10
test eax, eax
je 0x40d1e1
mov dword [ebp - 0x2c], 1
jmp 0x40d1e1
mov ecx, 0x1f7
cmp edx, ecx
jne 0x40d1c5
cmp dword [ebp - 0x3c], 5
jge 0x40d1a3
mov eax, dword [ebp - 0x40]
mov dword [ebp - 0x48], eax
cmp dword [ebp - 0x48], ebx
jl 0x40d190
push 0x3e8
call dword [sym.imp.KERNEL32.dll_Sleep]
dec dword [ebp - 0x48]
jmp 0x40d17b
inc dword [ebp - 0x3c]
add dword [ebp - 0x40], 0x1e
mov dword [ebp - 0x2c], 1
jmp 0x40cf9b
cmp dword [ebp + 0x18], ebx
je 0x40d1e1
push 1
push ebx
push ecx
push ebx
call fcn.0040cc55
add esp, 0x10
test eax, eax
je 0x40d1e1
mov dword [ebp - 0x3c], ebx
mov dword [ebp - 0x40], 0x3c
jmp 0x40d197
cmp edx, 0x194
je 0x40d1e1
xor ecx, ecx
cmp dword [ebp + 0x18], ebx
push ebx
sete cl
push ecx
push eax
push ebx
call fcn.0040cc55
add esp, 0x10
xor eax, eax
cmp dword [ebp - 0x38], 0x194
setne al
dec eax
and eax, 0x6c1fd
add eax, 0x80004005
mov dword [ebp - 0x30], eax
jmp 0x40d218
push ebx
xor eax, eax
cmp dword [ebp + 0x18], ebx
sete al
push eax
push edx
push ebx
call fcn.0040cc55
add esp, 0x10
mov dword [ebp - 0x30], 0x80004005
cmp dword [ebp - 0x2c], ebx
jne 0x40cf9b
or dword [ebp - 4], 0xffffffff
call fcn.0040d29e
cmp dword [ebp - 0x30], ebx
jne 0x40d297
lea eax, [ebp - 0x18c]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
test eax, eax
je 0x40d297
push ebx
push 0x20
push 4
push ebx
push ebx
push 0x40000000
lea eax, [ebp - 0x18c]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov esi, eax
cmp esi, 0xffffffff
je 0x40d297
push ebx
lea eax, [ebp - 0x20]
push eax
push dword [ebp - 0x28]
push dword [ebp + 0xc]
push esi
call dword [sym.imp.KERNEL32.dll_WriteFile]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [ebp + 0x1c], ebx
je 0x40d297
push 0x20
push 0x800c
push dword [ebp + 0x1c]
lea eax, [ebp - 0x18c]
push eax
call fcn.0041055e
add esp, 0x10
mov eax, dword [ebp - 0x30]
jmp 0x40d2cb
xor eax, eax
call fcn.0041c0bb
ret