Function at 0x100371b0
Capabilities:
Allocate or change rwx memory
Create thread
Execute shellcode via indirect call
Spawn thread to rwx shellcode

Disassembly:
push ebp
mov ebp, esp
sub esp, 8
mov eax, dword [0x1004f040]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0xc]
push esi
sub eax, 0
je 0x1003735a
sub eax, 1
jne 0x100373b2
mov eax, dword [ebp + 8]
push str.send
push str.ws2_32.dll
mov dword [0x1004fa7c], eax
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov ecx, eax
mov dword [0x1004fa4c], ecx
test ecx, ecx
jne 0x10037216
push 0x10
push str.Error
push str.Failed_to_get_the_address_of_send
push eax
call dword [sym.imp.USER32.dll_MessageBoxA]
jmp 0x10037275
mov eax, dword [ecx]
mov esi, dword [sym.imp.KERNEL32.dll_VirtualProtect]
mov dword [0x1004fa44], eax
mov al, byte [ecx + 4]
mov byte [0x1004fa48], al
lea eax, [ebp - 8]
push eax
push 0x40
push 5
push ecx
call esi
mov ecx, dword [0x1004fa4c]
mov eax, 0x10036f70
sub eax, ecx
add eax, 0xfffffffb
mov byte [ecx], 0xe9
mov dword [ecx + 1], eax
lea eax, [ebp - 8]
push eax
push dword [ebp - 8]
push 5
push ecx
call esi
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
mov edx, str._Hook__Successfully_hooked_send_
call fcn.100374a0
push 0x100376c0
mov ecx, eax
call dword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______thiscall_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::basic_ostream_char__struct_std::char_traits_char_______cdecl___class_std::basic_ostream_char__struct_std::char_traits_char_____]
mov esi, dword [sym.imp.KERNEL32.dll_CreateThread]
push 0
push 0
push 0
push 0x10037020
push 0
push 0
call esi
push 0
push 0
push 0
push 0x10038770
push 0
push 0
call esi
push 0
push 0
push 0
push 0x100388c0
push 0
push 0
call esi
push 0
push 0
push 0
push 0x10038b50
push 0
push 0
call esi
push 0
push 0
push 0
push 0x10038c60
push 0
push 0
call esi
push 0
push 0
push 0
push 0x10038210
push 0
push 0
call esi
push 0
push 0
push 0
push 0x10039420
push 0
push 0
call esi
push 0
push 0
push 0
push 0x100396b0
push 0
push 0
call esi
push 0
push 0
push 0
push 0x10039a20
push 0
push 0
call esi
push 0
push 0
push 0
push 0x10039fa0
push 0
push 0
call esi
push 0
push 0
push 0
push 0x1003b600
push 0
push 0
call esi
push 0
push 0
push 0
push 0x1003b8f0
push 0
push 0
call esi
push 0
push 0
push 0
push 0x1003bb60
push 0
push 0
call esi
jmp 0x100373b2
mov eax, dword [0x1004fa4c]
test eax, eax
je 0x100373b2
mov esi, dword [sym.imp.KERNEL32.dll_VirtualProtect]
lea ecx, [ebp - 8]
push ecx
push 0x40
push 5
push eax
call esi
mov ecx, dword [0x1004fa4c]
mov eax, dword [0x1004fa44]
mov dword [ecx], eax
mov al, byte [0x1004fa48]
mov byte [ecx + 4], al
lea eax, [ebp - 8]
push eax
push dword [ebp - 8]
push 5
push ecx
call esi
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
mov edx, str._Unhook__Successfully_unhooked_send_
call fcn.100374a0
push 0x100376c0
mov ecx, eax
call dword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______thiscall_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::basic_ostream_char__struct_std::char_traits_char_______cdecl___class_std::basic_ostream_char__struct_std::char_traits_char_____]
mov ecx, dword [ebp - 4]
mov eax, 1
xor ecx, ebp
pop esi
call fcn.100416c0
mov esp, ebp
pop ebp
ret 0xc