Function at 0x10015240
Capabilities:
Connect to http server
Create http request
Download and write a file
Parse url
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:
push 0xffffffffffffffff
mov eax, dword fs:[0]
push 0x1001f578
push eax
mov eax, 0x1884
mov dword fs:[0], esp
call fcn.1001c530
push ebx
push ebp
mov ebp, dword [esp + 0x18a4]
push esi
mov esi, ecx
push edi
push ebp
lea ecx, [esp + 0x28]
call fcn.1001be24
xor ebx, ebx
lea ecx, [esp + 0x14]
mov dword [esp + 0x189c], ebx
mov dword [esp + 0x38], str.text_
mov dword [esp + 0x3c], ebx
call sub.MFC42.DLL_CString::CString_1
lea ecx, [esp + 0x20]
mov byte [esp + 0x189c], 1
call sub.MFC42.DLL_CString::CString_1
lea ecx, [esp + 0x10]
mov byte [esp + 0x189c], 2
call sub.MFC42.DLL_CString::CString_1
mov eax, dword [esp + 0x18a4]
lea ecx, [esp + 0x10]
push eax
mov byte [esp + 0x18a0], 3
call sub.MFC42.DLL_CString::operator_1
mov edx, dword [esp + 0x10]
cmp dword [edx - 8], ebx
jne 0x1001531d
mov dword [esi + 0x7c], ebx
lea ecx, [esp + 0x10]
mov byte [esp + 0x189c], 2
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x20]
mov byte [esp + 0x189c], 1
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x14]
mov byte [esp + 0x189c], bl
call sub.MFC42.DLL_CString::CString
mov dword [esp + 0x189c], 0xffffffff
jmp 0x100155d3
mov ecx, 0xf
xor eax, eax
lea edi, [esp + 0x44]
rep stosd dword es:[edi], eax
mov eax, 0x400
lea ecx, [esp + 0x90]
mov dword [esp + 0x58], eax
mov dword [esp + 0x74], eax
lea eax, [esp + 0x44]
mov dword [esp + 0x54], ecx
push eax
push ebx
lea ecx, [esp + 0x498]
push ebx
push edx
mov dword [esp + 0x54], 0x3c
mov dword [esp + 0x80], ecx
call dword [sym.imp.WININET.dll_InternetCrackUrlA]
mov edi, dword [esp + 0x5c]
push 0x1002c1f8
lea ecx, [esp + 0x2c]
and edi, 0xffff
call fcn.1001be24
mov ecx, dword [esp + 0x28]
push ebx
push ebx
push ebx
push ebx
push ecx
mov byte [esp + 0x18b0], 4
call dword [sym.imp.WININET.dll_InternetOpenA]
cmp eax, ebx
mov dword [esi + 0x70], eax
jne 0x100153a1
mov dword [esi + 0x7c], ebx
jmp 0x10015403
lea ecx, [esp + 0x18]
call sub.MFC42.DLL_CString::CString_1
cmp ebp, ebx
mov byte [esp + 0x189c], 5
jne 0x100153bd
push 0x1002c880
jmp 0x100153be
push ebp
lea ecx, [esp + 0x1c]
call sub.MFC42.DLL_CString::operator_1
mov eax, dword [esi + 0x70]
push ebx
push ebx
push 3
push 0x1002d5d0
push 0x1002d5d0
lea edx, [esp + 0xa4]
push edi
push edx
push eax
call dword [sym.imp.WININET.dll_InternetConnectA]
cmp eax, ebx
mov dword [esi + 0x6c], eax
jne 0x10015419
lea ecx, [esp + 0x18]
mov dword [esi + 0x7c], ebx
mov byte [esp + 0x189c], 4
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x28]
mov byte [esp + 0x189c], 3
call sub.MFC42.DLL_CString::CString
jmp 0x100152db
lea ecx, [esp + 0x1c]
call sub.MFC42.DLL_CString::CString_1
lea ecx, [esp + 0x10]
mov byte [esp + 0x189c], 6
push ecx
lea ecx, [esp + 0x20]
call sub.MFC42.DLL_CString::operator
push 8
push 0x1002ca70
lea ecx, [esp + 0x18]
call sub.MFC42.DLL_CString::Find
or ebp, 0xffffffff
cmp eax, ebp
je 0x10015481
lea edx, [esp + 0x30]
push eax
push edx
lea ecx, [esp + 0x18]
call sub.MFC42.DLL_CString::Mid
push eax
lea ecx, [esp + 0x20]
mov byte [esp + 0x18a0], 7
call sub.MFC42.DLL_CString::operator
lea ecx, [esp + 0x30]
mov byte [esp + 0x189c], 6
call sub.MFC42.DLL_CString::CString
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
push ebx
lea eax, [esp + 0x3c]
push 0x4403100
push eax
mov eax, dword [esi + 0x6c]
push ebx
push ebx
push ecx
push edx
push eax
call dword [sym.imp.WININET.dll_HttpOpenRequestA]
cmp eax, ebx
mov dword [esi + 0x74], eax
jne 0x100154bb
mov ecx, dword [esi + 0x6c]
mov dword [esi + 0x7c], ebx
push ecx
call dword [sym.imp.WININET.dll_InternetCloseHandle]
jmp 0x10015567
push str.Content_Type:_text__r_n
lea ecx, [esp + 0x18]
call sub.MFC42.DLL_CString::operator_1
mov eax, dword [esp + 0x14]
mov edx, dword [esi + 0x74]
push ebx
push ebx
mov ecx, dword [eax - 8]
push ecx
push eax
push edx
call dword [sym.imp.WININET.dll_HttpSendRequestA]
test eax, eax
jne 0x100154f9
mov eax, dword [esi + 0x74]
mov edi, dword [sym.imp.WININET.dll_InternetCloseHandle]
push eax
mov dword [esi + 0x7c], ebx
call edi
mov ecx, dword [esi + 0x6c]
push ecx
call edi
jmp 0x10015567
mov ecx, dword [esi + 0x74]
lea edx, [esp + 0x34]
push ebx
lea eax, [esp + 0x84]
push edx
push eax
push 5
push ecx
mov dword [esp + 0x48], 0x10
call dword [sym.imp.WININET.dll_HttpQueryInfoA]
cmp eax, ebx
je 0x10015533
lea edx, [esp + 0x80]
push edx
call dword [sym.imp.MSVCRT.dll_atoi]
add esp, 4
mov dword [esi + 0x78], eax
mov eax, dword [esp + 0x18a8]
xor edi, edi
cmp eax, ebx
je 0x100155e6
push ebx
push 0x80
push 2
push ebx
push ebx
push 0x40000000
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov edi, eax
cmp edi, ebp
jne 0x100155e6
mov dword [esi + 0x7c], ebx
lea ecx, [esp + 0x1c]
mov byte [esp + 0x189c], 5
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x18]
mov byte [esp + 0x189c], 4
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x28]
mov byte [esp + 0x189c], 3
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x10]
mov byte [esp + 0x189c], 2
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x20]
mov byte [esp + 0x189c], 1
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x14]
mov byte [esp + 0x189c], bl
call sub.MFC42.DLL_CString::CString
mov dword [esp + 0x189c], ebp
lea ecx, [esp + 0x24]
call sub.MFC42.DLL_CString::CString
mov eax, 0xffeffffe
jmp 0x10015702
mov edx, dword [esi + 0x74]
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0x894]
push 0x1000
push ecx
push edx
mov dword [esp + 0x3c], ebx
xor ebp, ebp
call dword [sym.imp.WININET.dll_InternetReadFile]
test eax, eax
je 0x1001565d
mov eax, dword [esp + 0x2c]
cmp eax, ebx
je 0x1001565d
cmp dword [esp + 0x18a8], ebx
je 0x1001563b
cmp edi, ebx
je 0x1001563b
lea ecx, [esp + 0x40]
push ebx
push ecx
lea edx, [esp + 0x898]
push eax
push edx
push edi
call dword [sym.imp.KERNEL32.dll_WriteFile]
mov eax, dword [esp + 0x2c]
mov edx, dword [esi + 0x74]
add ebp, eax
lea eax, [esp + 0x2c]
lea ecx, [esp + 0x890]
push eax
push 0x1000
push ecx
push edx
call dword [sym.imp.WININET.dll_InternetReadFile]
test eax, eax
jne 0x1001560c
cmp edi, ebx
je 0x10015668
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [esi + 0x74]
mov edi, dword [sym.imp.WININET.dll_InternetCloseHandle]
push eax
call edi
mov ecx, dword [esi + 0x6c]
push ecx
call edi
mov edx, dword [esi + 0x70]
push edx
call edi
lea ecx, [esp + 0x1c]
mov dword [esi + 0x7c], 1
mov byte [esp + 0x189c], 5
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x18]
mov byte [esp + 0x189c], 4
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x28]
mov byte [esp + 0x189c], 3
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x10]
mov byte [esp + 0x189c], 2
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x20]
mov byte [esp + 0x189c], 1
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x14]
mov byte [esp + 0x189c], bl
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x24]
mov dword [esp + 0x189c], 0xffffffff
call sub.MFC42.DLL_CString::CString
xor eax, eax
mov ecx, dword [esp + 0x1894]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x1890
ret 0xc