Function at 0x140016280
Capabilities:
Create process on windows
Get common file path
Print debug messages

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x18], rdi
push rbp
lea rbp, [rsp - 0x820]
sub rsp, 0x920
mov rax, qword [0x14006c038]
xor rax, rsp
mov qword [rbp + 0x810], rax
xor edi, edi
lea rcx, [rbp + 0x10]
mov rbx, rdx
mov qword [rsp + 0x60], rdi
mov edx, 0x200
mov qword [rbp - 0x70], rdi
mov qword [rsp + 0x68], rdi
call qword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
mov r9, rbx
lea r8, [0x14005b1b8]
mov edx, 0x400
lea rcx, [rbp + 0x10]
call fcn.140002050
xor edx, edx
lea r8d, [rdi + 0x64]
lea rcx, [rbp - 0x5c]
call fcn.14001cd80
xor eax, eax
mov dword [rbp - 0x60], 0x68
mov qword [rsp + 0x78], rax
mov qword [rbp - 0x80], rax
mov qword [rbp - 0x78], rax
call qword [sym.imp.KERNEL32.dll_WTSGetActiveConsoleSessionId]
mov ecx, eax
lea rdx, [rsp + 0x60]
call qword [sym.imp.WTSAPI32.dll_WTSQueryUserToken]
mov rcx, qword [rsp + 0x60]
lea rax, [rbp - 0x70]
mov qword [rsp + 0x28], rax
lea r9d, [rdi + 1]
xor r8d, r8d
mov dword [rsp + 0x20], 1
mov edx, 0x2000000
call qword [sym.imp.ADVAPI32.dll_DuplicateTokenEx]
test eax, eax
je 0x1400164e4
mov rcx, qword [rsp + 0x60]
lea rax, [rbp - 0x68]
lea r9d, [rdi + 8]
mov qword [rsp + 0x20], rax
lea r8, [rsp + 0x70]
mov qword [rsp + 0x70], rdi
lea edx, [rdi + 0x13]
mov dword [rbp - 0x68], 8
call qword [sym.imp.ADVAPI32.dll_GetTokenInformation]
test eax, eax
je 0x140016437
mov rcx, qword [rsp + 0x70]
lea rax, [rsp + 0x68]
mov qword [rsp + 0x28], rax
lea r9d, [rdi + 2]
xor r8d, r8d
mov dword [rsp + 0x20], 1
mov edx, 0x2000000
call qword [sym.imp.ADVAPI32.dll_DuplicateTokenEx]
test eax, eax
je 0x140016424
mov rcx, qword [rsp + 0x68]
lea rax, [rsp + 0x78]
mov qword [rsp + 0x50], rax
lea r8, [rbp + 0x10]
lea rax, [rbp - 0x60]
xor r9d, r9d
mov qword [rsp + 0x48], rax
xor edx, edx
mov qword [rsp + 0x40], rdi
mov qword [rsp + 0x38], rdi
mov dword [rsp + 0x30], 0x8000000
mov dword [rsp + 0x28], edi
mov qword [rsp + 0x20], rdi
call qword [sym.imp.ADVAPI32.dll_CreateProcessAsUserW]
test eax, eax
je 0x140016419
mov rcx, qword [rsp + 0x78]
mov edx, 0x1388
call qword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov rcx, qword [rsp + 0x78]
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rcx, qword [rbp - 0x80]
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rcx, qword [rsp + 0x68]
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rcx, qword [rsp + 0x70]
test rcx, rcx
je 0x1400164c5
jmp 0x1400164bf
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea r8, str.GetTokenInformation_fail:__d_r_n
mov edx, 0x400
mov r9d, eax
lea rcx, [rbp + 0x410]
call fcn.140002050
lea rcx, [rbp + 0x410]
call qword [sym.imp.KERNEL32.dll_OutputDebugStringW]
lea rax, [rsp + 0x78]
xor r9d, r9d
mov qword [rsp + 0x48], rax
lea rdx, [rbp + 0x10]
lea rax, [rbp - 0x60]
xor r8d, r8d
mov qword [rsp + 0x40], rax
xor ecx, ecx
mov qword [rsp + 0x38], rdi
mov qword [rsp + 0x30], rdi
mov dword [rsp + 0x28], edi
mov dword [rsp + 0x20], edi
call qword [sym.imp.KERNEL32.dll_CreateProcessW]
test eax, eax
je 0x1400164c5
mov rcx, qword [rsp + 0x78]
mov edx, 0x1388
call qword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov rcx, qword [rsp + 0x78]
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rcx, qword [rbp - 0x80]
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rcx, qword [rsp + 0x60]
test rcx, rcx
je 0x1400164d5
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rcx, qword [rbp - 0x70]
test rcx, rcx
je 0x1400164e4
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, 1
mov rcx, qword [rbp + 0x810]
xor rcx, rsp
call fcn.140019840
lea r11, [rsp + 0x920]
mov rbx, qword [r11 + 0x10]
mov rdi, qword [r11 + 0x20]
mov rsp, r11
pop rbp
ret