Function at 0x14002f540
Capabilities:
Create a process with modified i/o handles and window
Create process on windows
Encode data using base64
Get common file path
Query environment variable

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 0x6b8
lea rbp, [rsp + 0x80]
movaps xmmword [rbp + 0x620], xmm6
mov qword [rbp + 0x618], 0xfffffffffffffffe
mov byte [rbp + 0x440], r9b
mov qword [rbp + 0x5d0], r8
mov qword [rbp + 0x538], rcx
movzx eax, byte [rdx + 0xa0]
mov qword [rbp + 0x4a8], rdx
mov r8, qword [rdx + 0x98]
test al, al
jne 0x14002f5c0
test r8, r8
jne 0x14002f5c0
mov qword [rbp + 0x3e0], 0
lea rdx, [rbp + 0x3e8]
xor eax, eax
mov qword [rbp + 0x5e8], rax
jmp 0x14002fffd
mov qword [rbp + 0x408], 0
mov qword [rbp + 0x418], 0
test al, al
jne 0x14002f769
mov qword [rbp + 0x5e0], r8
call qword [sym.imp.kernel32.dll_GetEnvironmentStringsW]
test rax, rax
je 0x14003334e
mov qword [rbp + 0x4b0], rax
lea rsi, [rbp + 0x4b8]
mov qword [rbp + 0x4b8], rax
lea r13, [rbp + 0x570]
lea rdi, [rbp - 0x30]
lea rbx, [rbp + 0x4f0]
lea r14, [rbp + 0x450]
lea r15, [rbp + 0x408]
lea r12, [rbp + 0x550]
mov rcx, rdi
mov rdx, rsi
call fcn.14002d400
mov rcx, qword [rbp - 0x30]
movabs rax, 0x8000000000000000
cmp rcx, rax
je 0x14002f755
mov qword [rbp + 0x5e8], rcx
mov rcx, qword [rbp - 0x28]
movups xmm6, xmmword [rbp - 0x20]
mov rax, qword [rbp - 0x10]
mov qword [rbp + 0x5f8], rax
mov rax, qword [rbp - 8]
mov qword [rbp + 0x608], rax
mov rax, qword [rbp - 0x20]
add rax, rcx
mov qword [rbp + 0x5c0], rcx
mov qword [rbp + 0x450], rcx
mov qword [rbp + 0x458], rax
mov word [rbp + 0x460], 0
mov rcx, rbx
mov rdx, r14
call fcn.140020450
mov rax, qword [rbp + 0x5e8]
mov qword [rbp + 0x550], rax
mov rax, qword [rbp + 0x5c0]
mov qword [rbp + 0x558], rax
movups xmmword [rbp + 0x560], xmm6
mov rax, qword [rbp + 0x500]
mov qword [r13 + 0x10], rax
movups xmm0, xmmword [rbp + 0x4f0]
movups xmmword [r13], xmm0
mov rax, qword [rbp + 0x5f8]
mov qword [rbp + 0x450], rax
mov rax, qword [rbp + 0x608]
mov qword [rbp + 0x458], rax
lea rax, [rbp]
movups xmm0, xmmword [rax]
lea rax, [rbp + 0x460]
movups xmmword [rax], xmm0
mov byte [rbp + 0x5df], 0
mov rcx, rbx
mov rdx, r15
mov r8, r12
mov r9, r14
call fcn.14001c470
mov rdx, qword [rbp + 0x4f0]
lea rax, [rdx*2]
test rax, rax
je 0x14002f630
mov rcx, qword [rbp + 0x4f8]
mov r8d, 1
call fcn.140002fe0
jmp 0x14002f630
mov rcx, qword [rbp + 0x4b0]
call qword [sym.imp.kernel32.dll_FreeEnvironmentStringsW]
mov r8, qword [rbp + 0x5e0]
mov rcx, qword [rbp + 0x4a8]
mov rax, qword [rcx + 0x88]
mov rcx, qword [rcx + 0x90]
xor edx, edx
test rax, rax
cmove r8, rax
setne dl
mov qword [rbp + 0x4f0], rdx
mov qword [rbp + 0x4f8], 0
mov qword [rbp + 0x500], rax
mov qword [rbp + 0x508], rcx
mov qword [rbp + 0x510], rdx
mov qword [rbp + 0x518], 0
mov qword [rbp + 0x520], rax
mov qword [rbp + 0x528], rcx
mov qword [rbp + 0x530], r8
lea r14, [rbp + 0x4f0]
nop dword [rax + rax]
call qword [sym.imp.kernel32.dll_GetLastError]
shl rax, 0x20
or rax, 2
mov qword [rbp + 0x450], rax
lea rax, [rbp + 0x450]
mov qword [rbp + 0x550], rax
lea rax, [0x140022150]
mov qword [rbp + 0x558], rax
lea rax, str.failure_getting_env_string_from_OS:
mov qword [rbp - 0x30], rax
mov qword [rbp - 0x28], 1
mov qword [rbp - 0x10], 0
lea rax, [rbp + 0x550]
mov qword [rbp - 0x20], rax
mov qword [rbp - 0x18], 1
lea rdx, str.library_std_src_syspalwindowsos.rs
lea rcx, [rbp - 0x30]
call fcn.14004a570
jmp 0x14003344d