Function at 0x40edd3
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 0x588
push 0x421d78
call fcn.00412374
mov dword [ebp - 0x48], 4
xor ebx, ebx
mov dword [ebp - 0x28], ebx
mov dword [ebp - 0x20], ebx
mov byte [ebp - 0x198], bl
mov esi, dword [ebp + 8]
push esi
mov edi, dword [sym.imp.KERNEL32.dll_lstrlenA]
call edi
test eax, eax
je 0x40f28c
push esi
call fcn.0040bb0f
pop ecx
test eax, eax
je 0x40f28c
cmp dword [ebp + 0x14], ebx
je 0x40ee2e
lea eax, [ebp - 0x198]
push eax
push esi
call fcn.0040c0ee
pop ecx
pop ecx
lea eax, [ebp - 0x198]
push eax
call edi
test eax, eax
je 0x40ee7d
push ebx
push 0x20
push 3
push ebx
push ebx
push 0x40000000
lea eax, [ebp - 0x198]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov edi, eax
cmp edi, 0xffffffff
je 0x40ee7d
push ebx
lea eax, [ebp - 0x20]
push eax
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push edi
call dword [sym.imp.KERNEL32.dll_ReadFile]
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [ebp - 0x20], ebx
ja 0x40f28c
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x34], ebx
mov dword [ebp - 0x3c], 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 0x421868
call dword [sym.imp.WININET.dll_InternetOpenA]
mov dword [ebp - 0x34], eax
cmp eax, ebx
je 0x40f202
push 0xf
pop ecx
xor eax, eax
lea edi, [ebp - 0x8c]
rep stosd dword es:[edi], eax
push 0x3c
pop edi
mov dword [ebp - 0x8c], edi
lea eax, [ebp - 0x398]
mov dword [ebp - 0x7c], eax
mov eax, pe_nt_image_headers32
mov dword [ebp - 0x78], eax
mov word [ebp - 0x74], bx
lea ecx, [ebp - 0x598]
mov dword [ebp - 0x60], ecx
mov dword [ebp - 0x5c], eax
lea ecx, [ebp - 0x498]
mov dword [ebp - 0x58], ecx
mov dword [ebp - 0x54], eax
lea eax, [ebp - 0x8c]
push eax
push ebx
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
push eax
push esi
call dword [sym.imp.WININET.dll_InternetCrackUrlA]
push ebx
push ebx
push 3
push 0x421870
push 0x421871
push dword [ebp - 0x74]
push dword [ebp - 0x7c]
push dword [ebp - 0x34]
call dword [sym.imp.WININET.dll_InternetConnectA]
mov dword [ebp - 0x3c], eax
cmp eax, ebx
je 0x40f202
lea eax, [ebp - 0x298]
cmp dword [ebp - 0x5c], ebx
je 0x40ef3f
push dword [ebp - 0x60]
jmp 0x40ef44
push 0x421874
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
cmp dword [ebp - 0x54], ebx
je 0x40ef60
push dword [ebp - 0x58]
lea eax, [ebp - 0x298]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcatA]
mov dword [ebp - 0x2c], ebx
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x40], edi
mov edi, dword [sym.imp.WININET.dll_InternetErrorDlg]
mov dword [ebp - 0x2c], ebx
push ebx
push 0x4400000
push ebx
push 0x421876
push str.HTTP_1.1
lea eax, [ebp - 0x298]
push eax
push 0x421884
push dword [ebp - 0x3c]
call dword [sym.imp.WININET.dll_HttpOpenRequestA]
mov dword [ebp - 0x24], eax
cmp eax, ebx
je 0x40f202
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 0x40f015
cmp dword [ebp - 0x1c], ebx
je 0x40f202
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x90], eax
mov ecx, eax
sub ecx, 0x2ee2
je 0x40efff
sub ecx, 5
je 0x40efff
sub ecx, 0x16
je 0x40efff
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 edi
cmp eax, 0x2f00
jne 0x40efa9
jmp 0x40efa6
mov dword [ebp - 0x1c], ebx
cmp dword [ebp + 0x18], ebx
je 0x40efa9
push ebx
push ebx
push eax
push ebx
call fcn.0040ec29
add esp, 0x10
jmp 0x40efa9
cmp dword [ebp - 0x1c], ebx
je 0x40f202
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x44], ebx
push ebx
lea eax, [ebp - 0x48]
push eax
lea eax, [ebp - 0x44]
push eax
push 0x20000013
mov esi, dword [ebp - 0x24]
push esi
call dword [sym.imp.WININET.dll_HttpQueryInfoA]
test eax, eax
jne 0x40f04f
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x1c], 1
mov edx, dword [ebp - 0x44]
cmp edx, 0x197
jne 0x40f0ab
cmp dword [ebp - 0x1c], ebx
je 0x40f0ab
push ebx
push 7
push dword [ebp - 0x50]
push esi
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call edi
cmp eax, 0x2f00
je 0x40f082
mov dword [ebp - 0x1c], ebx
jmp 0x40f056
push ebx
push ebx
push ebx
push ebx
push esi
call dword [sym.imp.WININET.dll_HttpSendRequestA]
mov dword [ebp - 0x48], 4
push ebx
lea eax, [ebp - 0x48]
push eax
lea eax, [ebp - 0x44]
push eax
push 0x20000013
push esi
call dword [sym.imp.WININET.dll_HttpQueryInfoA]
jmp 0x40f056
cmp edx, 0xc8
jne 0x40f0f7
mov dword [ebp - 0x20], ebx
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp - 0x28]
add eax, ecx
mov dword [ebp - 0x94], eax
lea ecx, [ebp - 0x20]
push ecx
mov ecx, dword [ebp + 0x10]
sub ecx, dword [ebp - 0x28]
push ecx
push eax
push esi
call dword [sym.imp.WININET.dll_InternetReadFile]
test eax, eax
je 0x40f0e1
mov eax, dword [ebp - 0x20]
add dword [ebp - 0x28], eax
cmp dword [ebp - 0x20], ebx
ja 0x40f0b3
cmp dword [ebp - 0x28], ebx
jbe 0x40f1f9
mov dword [ebp - 0x30], ebx
jmp 0x40f1f9
cmp edx, 0x190
jb 0x40f1de
cmp edx, 0x258
jae 0x40f1de
mov eax, 0x193
cmp edx, eax
je 0x40f1ae
add eax, 0x61
cmp edx, eax
jne 0x40f14a
cmp dword [ebp + 0x18], ebx
je 0x40f1c2
push 1
push ebx
push eax
push ebx
call fcn.0040ec29
add esp, 0x10
test eax, eax
je 0x40f1c2
mov dword [ebp - 0x2c], 1
jmp 0x40f1c2
mov ecx, 0x1f7
cmp edx, ecx
jne 0x40f1a6
cmp dword [ebp - 0x38], 5
jge 0x40f17d
mov eax, dword [ebp - 0x40]
mov dword [ebp - 0x4c], eax
cmp dword [ebp - 0x4c], ebx
jl 0x40f174
push 0x3e8
call dword [sym.imp.KERNEL32.dll_Sleep]
dec dword [ebp - 0x4c]
jmp 0x40f15f
inc dword [ebp - 0x38]
add dword [ebp - 0x40], 0x1e
jmp 0x40f19d
cmp dword [ebp + 0x18], ebx
je 0x40f1c2
push 1
push ebx
push ecx
push ebx
call fcn.0040ec29
add esp, 0x10
test eax, eax
je 0x40f1c2
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x40], 0x3c
mov dword [ebp - 0x2c], 1
jmp 0x40f1f9
cmp edx, 0x194
je 0x40f1c2
xor ecx, ecx
cmp dword [ebp + 0x18], ebx
sete cl
push ebx
push ecx
push eax
push ebx
call fcn.0040ec29
add esp, 0x10
xor eax, eax
cmp dword [ebp - 0x44], 0x194
setne al
dec eax
and eax, 0x6c1fd
add eax, 0x80004005
mov dword [ebp - 0x30], eax
jmp 0x40f1f9
push ebx
xor eax, eax
cmp dword [ebp + 0x18], ebx
sete al
push eax
push edx
push ebx
call fcn.0040ec29
add esp, 0x10
mov dword [ebp - 0x30], 0x80004005
cmp dword [ebp - 0x2c], ebx
jne 0x40ef6f
or dword [ebp - 4], 0xffffffff
call fcn.0040f261
cmp dword [ebp - 0x30], ebx
jne 0x40f25a
lea eax, [ebp - 0x198]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
test eax, eax
je 0x40f25a
push ebx
push 0x20
push 4
push ebx
push ebx
push 0x40000000
lea eax, [ebp - 0x198]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov esi, eax
cmp esi, 0xffffffff
je 0x40f25a
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]
mov eax, dword [ebp - 0x30]
jmp 0x40f28e
xor eax, eax
call fcn.004123af
ret