Function at 0x40cbe8
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 0x43ffc8
call fcn.0041b9f0
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 0x40d0aa
push edi
call fcn.0041033c
pop ecx
test eax, eax
je 0x40d0aa
cmp dword [ebp + 0x14], ebx
je 0x40cc43
lea eax, [ebp - 0x18c]
push eax
push edi
call fcn.0041033c
pop ecx
pop ecx
lea eax, [ebp - 0x18c]
push eax
call esi
test eax, eax
je 0x40cc92
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 0x40cc92
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 0x40d0aa
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 0x43601c
call dword [sym.imp.wininet.dll_InternetOpenA]
mov dword [ebp - 0x44], eax
cmp eax, ebx
je 0x40d00a
push 0x3c
pop esi
push esi
push ebx
lea eax, [ebp - 0x88]
push eax
call fcn.0041b010
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 0x435d02
push 0x435d03
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 0x40d00a
lea eax, [ebp - 0x28c]
cmp dword [ebp - 0x58], ebx
je 0x40cd5a
push dword [ebp - 0x5c]
jmp 0x40cd5f
push 0x436024
push eax
call dword [sym.imp.kernel32.dll_lstrcpyA]
cmp dword [ebp - 0x50], ebx
je 0x40cd7b
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 0x4400000
push ebx
push 0x435d0a
push 0x436028
lea eax, [ebp - 0x28c]
push eax
push 0x436034
push dword [ebp - 0x34]
call dword [sym.imp.wininet.dll_HttpOpenRequestA]
mov dword [ebp - 0x24], eax
cmp eax, ebx
je 0x40d00a
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 0x40ce28
cmp dword [ebp - 0x1c], ebx
je 0x40d00a
call dword [sym.imp.kernel32.dll_GetLastError]
mov ecx, eax
sub ecx, 0x2ee2
je 0x40ce12
sub ecx, 5
je 0x40ce12
sub ecx, 0x16
je 0x40ce12
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 0x40cdbe
jmp 0x40cdbb
mov dword [ebp - 0x1c], ebx
cmp dword [ebp + 0x18], ebx
je 0x40cdbe
push ebx
push ebx
push eax
push ebx
call fcn.0041033c
add esp, 0x10
jmp 0x40cdbe
cmp dword [ebp - 0x1c], ebx
je 0x40d00a
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 0x40ce60
call dword [sym.imp.kernel32.dll_GetLastError]
mov esi, eax
mov dword [ebp - 0x1c], 1
mov edx, dword [ebp - 0x38]
cmp edx, 0x197
jne 0x40cebe
cmp dword [ebp - 0x1c], ebx
je 0x40cebe
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 0x40ce95
mov dword [ebp - 0x1c], ebx
jmp 0x40ce67
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 0x40ce67
cmp edx, 0xc8
jne 0x40cf03
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 0x40ceed
mov eax, dword [ebp - 0x20]
add dword [ebp - 0x28], eax
cmp dword [ebp - 0x20], ebx
ja 0x40cec6
cmp dword [ebp - 0x28], ebx
jbe 0x40d001
mov dword [ebp - 0x30], ebx
jmp 0x40d001
lea eax, [edx - 0x190]
cmp eax, 0xc7
ja 0x40cfe6
mov eax, 0x193
cmp edx, eax
je 0x40cfb6
add eax, 0x61
cmp edx, eax
jne 0x40cf4f
cmp dword [ebp + 0x18], ebx
je 0x40cfca
push 1
push ebx
push eax
push ebx
call fcn.0041033c
add esp, 0x10
test eax, eax
je 0x40cfca
mov dword [ebp - 0x2c], 1
jmp 0x40cfca
mov ecx, 0x1f7
cmp edx, ecx
jne 0x40cfae
cmp dword [ebp - 0x3c], 5
jge 0x40cf8c
mov eax, dword [ebp - 0x40]
mov dword [ebp - 0x48], eax
cmp dword [ebp - 0x48], ebx
jl 0x40cf79
push 0x3e8
call dword [sym.imp.kernel32.dll_Sleep]
dec dword [ebp - 0x48]
jmp 0x40cf64
inc dword [ebp - 0x3c]
add dword [ebp - 0x40], 0x1e
mov dword [ebp - 0x2c], 1
jmp 0x40cd84
cmp dword [ebp + 0x18], ebx
je 0x40cfca
push 1
push ebx
push ecx
push ebx
call fcn.0041033c
add esp, 0x10
test eax, eax
je 0x40cfca
mov dword [ebp - 0x3c], ebx
mov dword [ebp - 0x40], 0x3c
jmp 0x40cf80
cmp edx, 0x194
je 0x40cfca
xor ecx, ecx
cmp dword [ebp + 0x18], ebx
push ebx
sete cl
push ecx
push eax
push ebx
call fcn.0041033c
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 0x40d001
push ebx
xor eax, eax
cmp dword [ebp + 0x18], ebx
sete al
push eax
push edx
push ebx
call fcn.0041033c
add esp, 0x10
mov dword [ebp - 0x30], 0x80004005
cmp dword [ebp - 0x2c], ebx
jne 0x40cd84
or dword [ebp - 4], 0xffffffff
call fcn.0040d07f
cmp dword [ebp - 0x30], ebx
jne 0x40d078
lea eax, [ebp - 0x18c]
push eax
call dword [sym.imp.kernel32.dll_lstrlenA]
test eax, eax
je 0x40d078
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 0x40d078
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 0x40d078
push dword [ebp + 0x1c]
lea eax, [ebp - 0x18c]
push eax
call fcn.0041033c
pop ecx
pop ecx
mov eax, dword [ebp - 0x30]
jmp 0x40d0ac
xor eax, eax
call fcn.0041ba2b
ret