Function at 0x1000fc10
Capabilities:
Check http status code
Check os version
Connect to http server
Create http request
Download and write a file
Get file size
Get http content length
Parse url
Query remote server for available data
Read data from internet
Receive and write data from server to client
Receive data
Resolve function by parsing pe exports
Send data
Send http request
Write file on windows

Disassembly:
mov eax, 0x3034
call fcn.10023930
mov eax, dword [0x10035400]
xor eax, esp
mov dword [esp + 0x302c], eax
push ebx
push ebp
push esi
push edi
xor ebp, ebp
push 0x103
lea eax, [esp + 0x115]
mov esi, edx
push ebp
push eax
mov edi, ecx
mov dword [esp + 0x3c], esi
mov dword [esp + 0x38], ebp
mov byte [esp + 0x11c], 0
call fcn.1001f410
add esp, 0xc
push 0x103
lea ecx, [esp + 0x21d]
push ebp
push ecx
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x20], ebp
mov dword [esp + 0x28], ebp
mov dword [esp + 0x30], ebp
mov dword [esp + 0x34], ebp
mov byte [esp + 0x224], 0
call fcn.1001f410
add esp, 0xc
push 0x513
lea edx, [esp + 0x325]
push ebp
push edx
mov byte [esp + 0x32c], 0
call fcn.1001f410
add esp, 0xc
push 0x27ff
lea eax, [esp + 0x83d]
push ebp
push eax
mov byte [esp + 0x844], 0
call fcn.1001f410
add esp, 0xc
cmp edi, ebp
je 0x1000ff70
cmp esi, ebp
je 0x1000ff70
push edi
lea ecx, [esp + 0x83c]
push 0x1000
push ecx
call fcn.1001ac74
lea eax, [esp + 0x844]
add esp, 0xc
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x1000fcf6
sub eax, edx
xor ecx, ecx
cmp eax, ebp
jle 0x1000fd29
jmp 0x1000fd10
cmp byte [esp + ecx + 0x838], 0x5c
jne 0x1000fd22
mov byte [esp + ecx + 0x838], 0x2f
add ecx, 1
cmp ecx, eax
jl 0x1000fd10
push 0x90
lea edx, [esp + 0x80]
push ebp
push edx
call fcn.1001f410
add esp, 0xc
lea eax, [esp + 0x78]
push eax
mov dword [esp + 0x7c], 0x94
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
test eax, eax
je 0x1000fe5f
cmp dword [esp + 0x7c], 6
jae 0x1000fe5f
push 8
lea ecx, [esp + 0x83c]
push str.https:__
push ecx
call fcn.10025beb
add esp, 0xc
test eax, eax
jne 0x1000fdbf
push str.http:__
lea edx, [esp + 0x83c]
push str.https:__
push edx
call fcn.1000f770
mov esi, eax
add esp, 0xc
cmp esi, ebp
je 0x1000fdbf
push esi
lea eax, [esp + 0x83c]
push 0x2800
push eax
call fcn.10018328
add esp, 0xc
push esi
call fcn.100186a9
add esp, 4
push 8
lea ecx, [esp + 0x83c]
push str.HTTPS:__
push ecx
call fcn.10025beb
add esp, 0xc
test eax, eax
jne 0x1000fe19
push str.http:__
lea edx, [esp + 0x83c]
push str.HTTPS:__
push edx
call fcn.1000f770
mov esi, eax
add esp, 0xc
cmp esi, ebp
je 0x1000fe19
push esi
lea eax, [esp + 0x83c]
push 0x2800
push eax
call fcn.10018328
add esp, 0xc
push esi
call fcn.100186a9
add esp, 4
push 0x1002ea4c
lea ecx, [esp + 0x83c]
push str.:443_
push ecx
call fcn.1000f770
mov esi, eax
add esp, 0xc
cmp esi, ebp
je 0x1000fe58
push esi
lea edx, [esp + 0x83c]
push 0x2800
push edx
call fcn.10018328
add esp, 0xc
push esi
call fcn.100186a9
add esp, 4
lea edi, [esp + 0x838]
lea eax, [esp + 0x838]
push 0x2f
push eax
call fcn.10019420
mov esi, eax
add esp, 8
cmp esi, ebp
je 0x1000ff70
push 0x3f
push esi
call fcn.10018930
add esp, 8
add esi, 1
test eax, eax
jne 0x1000fec6
lea ecx, [esp + 0x838]
sub edi, ecx
lea ecx, [edi + esi]
mov eax, ecx
lea edi, [eax + 1]
mov edi, edi
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x1000fea0
sub eax, edi
cmp ecx, ebp
je 0x1000febf
push ecx
push esi
push eax
mov eax, 0x1000
call fcn.1000f110
add esp, 0xc
lea edi, [esp + 0x838]
push 0x3c
lea edx, [esp + 0x40]
push ebp
push edx
call fcn.1001f410
lea eax, [esp + 0x224]
mov dword [esp + 0x58], eax
lea ecx, [esp + 0x32c]
mov eax, edi
add esp, 0xc
mov dword [esp + 0x3c], 0x3c
mov dword [esp + 0x50], 0x104
mov dword [esp + 0x68], ecx
mov dword [esp + 0x6c], 0x514
mov dword [esp + 0x44], 1
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x1000ff11
sub eax, edx
lea edx, [esp + 0x3c]
push edx
push ebp
push eax
push edi
call dword [sym.imp.WININET.dll_InternetCrackUrlA]
test eax, eax
jne 0x1000ff77
mov esi, dword [sym.imp.KERNEL32.dll_GetLastError]
call esi
push eax
push str.InternetCrackUrl_failed._GetLastError_d
push 0x69
push str..Cutil_FileDownload.c
push 1
mov ecx, str.HttpDownloadEx
call fcn.1000be40
add esp, 0x14
call esi
push eax
push str.InternetCrackUrl_failed._GetLastError_d
push 0x69
push str..Cutil_FileDownload.c
push 1
mov ecx, str.HttpDownloadEx
call fcn.1000bb50
add esp, 0x14
xor eax, eax
jmp 0x100103d6
push ebp
push 0x1002bf9a
push 0x1002bf9a
push 1
push str.WININET
call dword [sym.imp.WININET.dll_InternetOpenA]
mov ebx, eax
cmp ebx, ebp
mov dword [esp + 0x34], ebx
je 0x100103d2
mov eax, dword [esp + 0x54]
push ebp
push ebp
push 3
push ebp
push ebp
push eax
lea ecx, [esp + 0x230]
push ecx
push ebx
call dword [sym.imp.WININET.dll_InternetConnectA]
mov esi, eax
cmp esi, ebp
mov dword [esp + 0x38], esi
je 0x100103ae
mov edx, dword [esp + 0x48]
mov ebx, 4
sub edx, ebx
neg edx
sbb edx, edx
push ebp
and edx, 0xff7fc000
add edx, 0x808000
or edx, 0x804c0200
push edx
push ebp
push str.fafc768124b1326a0f7a6dbc9e84b435
push str.HTTP_1.0
lea eax, [esp + 0x334]
push eax
push 0x1002f61c
push esi
call dword [sym.imp.WININET.dll_HttpOpenRequestA]
mov ebp, eax
test ebp, ebp
mov dword [esp + 0x18], ebp
je 0x100103a1
cmp dword [esp + 0x48], ebx
jne 0x10010032
push ebx
lea ecx, [esp + 0x24]
push ecx
push 0x1f
push ebp
mov dword [esp + 0x30], 0x3180
call dword [sym.imp.WININET.dll_InternetSetOptionA]
push 0
push 0
push 0
push 0
push ebp
call dword [sym.imp.WININET.dll_HttpSendRequestA]
test eax, eax
jne 0x10010094
mov esi, dword [sym.imp.KERNEL32.dll_GetLastError]
call esi
push eax
push edi
push str.HttpSendRequest:__s__failed.GetLastError:__d
push 0x96
push str..Cutil_FileDownload.c
push 1
mov ecx, str.HttpDownloadEx
call fcn.1000be40
add esp, 0x18
call esi
push eax
push edi
push str.HttpSendRequest:__s__failed.GetLastError:__d
push 0x96
push str..Cutil_FileDownload.c
push 1
mov ecx, str.HttpDownloadEx
call fcn.1000bb50
add esp, 0x18
jmp 0x10010396
mov esi, dword [sym.imp.WININET.dll_HttpQueryInfoA]
push 0
lea edx, [esp + 0x28]
push edx
lea eax, [esp + 0x30]
push eax
push 0x20000013
push ebp
mov dword [esp + 0x38], ebx
call esi
mov eax, dword [esp + 0x28]
cmp eax, 0xc8
je 0x10010103
push eax
push edi
push str.Url:__s__HTTP
push 0xa7
push str..Cutil_FileDownload.c
push 1
mov ecx, str.HttpDownloadEx
call fcn.1000be40
mov ecx, dword [esp + 0x40]
push ecx
push edi
push str.Url:__s__HTTP
push 0xa7
push str..Cutil_FileDownload.c
push 1
mov ecx, str.HttpDownloadEx
call fcn.1000bb50
add esp, 0x30
jmp 0x10010396
push 0
lea edx, [esp + 0x28]
push edx
lea eax, [esp + 0x18]
push eax
push 0x20000005
push ebp
mov dword [esp + 0x38], ebx
call esi
mov eax, dword [esp + 0x10]
cmp eax, 0x80000000
jb 0x1001016c
push eax
push edi
push 0x1002f670
push 0xba
push str..Cutil_FileDownload.c
push 1
mov ecx, str.HttpDownloadEx
call fcn.1000be40
mov ecx, dword [esp + 0x28]
push ecx
push edi
push 0x1002f670
push 0xba
push str..Cutil_FileDownload.c
push 1
mov ecx, str.HttpDownloadEx
call fcn.1000bb50
add esp, 0x30
jmp 0x10010396
mov esi, dword [esp + 0x30]
mov ecx, esi
call fcn.100112a0
push esi
push str._s.bak
lea edx, [esp + 0x118]
push 0x104
push edx
call fcn.10018328
add esp, 0x10
push 0
push 0x80
push ebx
push 0
push 1
push 0xc0000000
lea eax, [esp + 0x128]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov ebx, eax
cmp ebx, 0xffffffff
je 0x1001038b
push 0
push ebx
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov esi, dword [esp + 0x18]
mov ebp, eax
test ebp, ebp
jbe 0x10010234
push 0
push 0
push 0
push ebp
push esi
call dword [sym.imp.WININET.dll_InternetSetFilePointer]
cmp eax, 0xffffffff
jne 0x1001036d
mov esi, dword [sym.imp.KERNEL32.dll_GetLastError]
call esi
push eax
push ebp
push str.InternetSetFilePointer__d__failed.GetLastError_d
push 0xcf
push str..Cutil_FileDownload.c
push 1
mov ecx, str.HttpDownloadEx
call fcn.1000be40
add esp, 0x18
call esi
push eax
push ebp
push str.InternetSetFilePointer__d__failed.GetLastError_d
push 0xcf
push str..Cutil_FileDownload.c
push 1
mov ecx, str.HttpDownloadEx
call fcn.1000bb50
mov esi, dword [esp + 0x30]
add esp, 0x18
mov ebp, dword [esp + 0x14]
xor eax, eax
push 0x2800
push eax
lea ecx, [esp + 0x840]
push ecx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x20], eax
call fcn.1001f410
add esp, 0xc
push 0
push 0
lea edx, [esp + 0x24]
push edx
push esi
mov dword [esp + 0x2c], 0
call dword [sym.imp.WININET.dll_InternetQueryDataAvailable]
test eax, eax
je 0x1001030b
jmp 0x10010280
cmp dword [esp + 0x1c], 0
jbe 0x1001030b
lea eax, [esp + 0x20]
push eax
push 0x2800
lea ecx, [esp + 0x840]
push ecx
push esi
call dword [sym.imp.WININET.dll_InternetReadFile]
test eax, eax
je 0x1001030b
mov eax, dword [esp + 0x20]
push 0
lea edx, [esp + 0x18]
push edx
push eax
lea ecx, [esp + 0x844]
push ecx
push ebx
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
je 0x1001030b
add ebp, dword [esp + 0x14]
xor eax, eax
push 0x2800
push eax
lea edx, [esp + 0x840]
push edx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x20], eax
call fcn.1001f410
add esp, 0xc
push 0
push 0
lea eax, [esp + 0x24]
push eax
push esi
mov dword [esp + 0x2c], 0
call dword [sym.imp.WININET.dll_InternetQueryDataAvailable]
test eax, eax
jne 0x10010280
cmp dword [esp + 0x10], 0
jne 0x10010316
mov dword [esp + 0x10], ebp
push ebx
call dword [sym.imp.KERNEL32.dll_FlushFileBuffers]
mov eax, dword [esp + 0x10]
cmp eax, ebp
je 0x1001037f
push eax
push ebp
push edi
push 0x1002f6c4
push 0xf3
push str..Cutil_FileDownload.c
push 1
mov ecx, str.HttpDownloadEx
call fcn.1000be40
mov ecx, dword [esp + 0x2c]
add esp, 0x1c
push ecx
push ebp
push edi
push 0x1002f6c4
push 0xf3
push str..Cutil_FileDownload.c
push 1
mov ecx, str.HttpDownloadEx
call fcn.1000bb50
add esp, 0x1c
jmp 0x10010387
push 2
push 0
push 0
push ebx
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
jmp 0x10010238
mov dword [esp + 0x2c], 1
mov ebp, dword [esp + 0x18]
test ebx, ebx
je 0x10010396
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push ebp
call dword [sym.imp.WININET.dll_InternetCloseHandle]
mov esi, dword [esp + 0x38]
push esi
call dword [sym.imp.WININET.dll_InternetCloseHandle]
mov ebx, dword [esp + 0x34]
xor ebp, ebp
push ebx
call dword [sym.imp.WININET.dll_InternetCloseHandle]
cmp dword [esp + 0x2c], ebp
je 0x100103d2
mov esi, dword [esp + 0x30]
lea edi, [esp + 0x110]
call fcn.10011390
mov esi, edi
call fcn.10011490
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x303c]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.1001829e
add esp, 0x3034
ret