Function at 0x140005e70
Capabilities:
Create directory
Create process on windows
Query environment variable
Read .ini file
Set environment variable

Disassembly:
mov qword [rsp + 0x20], r9
mov qword [rsp + 0x18], r8
mov dword [rsp + 0x10], edx
mov qword [rsp + 8], rcx
push rbx
push rdi
sub rsp, 0x968
mov rax, qword [0x140035cc8]
xor rax, rsp
mov qword [rsp + 0x958], rax
mov rcx, qword [rsp + 0x980]
add rcx, 8
xor edx, edx
call fcn.1400010f0
mov ecx, 0xc
call qword [sym.imp.USER32.dll_GetSystemMetrics]
mov ebx, eax
mov ecx, 0xb
call qword [sym.imp.USER32.dll_GetSystemMetrics]
mov edi, eax
lea rcx, [0x1400374e0]
call fcn.140002da0
mov dword [rsp + 0x28], 0
mov dword [rsp + 0x20], ebx
mov r9d, edi
mov r8d, 1
mov edx, 0x80
mov rcx, rax
call qword [sym.imp.USER32.dll_LoadImageW]
mov qword [rsp + 0x30], rax
mov rcx, qword [rsp + 0x980]
add rcx, 8
mov r8d, 1
mov rdx, qword [rsp + 0x30]
call fcn.140002f00
mov ecx, 0x32
call qword [sym.imp.USER32.dll_GetSystemMetrics]
mov ebx, eax
mov ecx, 0x31
call qword [sym.imp.USER32.dll_GetSystemMetrics]
mov edi, eax
lea rcx, [0x1400374e0]
call fcn.140002da0
mov dword [rsp + 0x28], 0
mov dword [rsp + 0x20], ebx
mov r9d, edi
mov r8d, 1
mov edx, 0x80
mov rcx, rax
call qword [sym.imp.USER32.dll_LoadImageW]
mov qword [rsp + 0x250], rax
mov rcx, qword [rsp + 0x980]
add rcx, 8
xor r8d, r8d
mov rdx, qword [rsp + 0x250]
call fcn.140002f00
call qword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov edx, eax
lea rcx, [0x1400374e0]
call fcn.14000ba70
mov qword [rsp + 0x258], rax
cmp qword [rsp + 0x980], 0
je 0x140005fc5
mov rax, qword [rsp + 0x980]
add rax, 0x40
mov qword [rsp + 0x920], rax
jmp 0x140005fd1
mov qword [rsp + 0x920], 0
mov rdx, qword [rsp + 0x920]
mov rcx, qword [rsp + 0x258]
call fcn.14000b5c0
cmp qword [rsp + 0x980], 0
je 0x140006007
mov rax, qword [rsp + 0x980]
add rax, 0x48
mov qword [rsp + 0x928], rax
jmp 0x140006013
mov qword [rsp + 0x928], 0
mov rdx, qword [rsp + 0x928]
mov rcx, qword [rsp + 0x258]
call fcn.14000b620
mov rcx, qword [rsp + 0x980]
add rcx, 0x58
mov rdx, qword [rsp + 0x980]
mov rdx, qword [rdx + 8]
call fcn.14000bdb0
mov rdx, qword [rsp + 0x980]
mov dword [rdx + 0x1c0], 0
mov rax, qword [rsp + 0x980]
mov qword [rax + 0xa8], 0
mov rax, qword [rsp + 0x980]
mov dword [rax + 0xb0], 1
mov rax, qword [rsp + 0x980]
mov byte [rax + 0x84], 0
mov rax, qword [rsp + 0x980]
mov dword [rax + 0x88], 0
lea rcx, [0x14002bc30]
call qword [sym.imp.USER32.dll_RegisterWindowMessageW]
call fcn.140019630
mov rcx, qword [rsp + 0x980]
add rcx, 0x90
mov rdx, rax
call fcn.14000a480
mov rcx, qword [rsp + 0x980]
add rcx, 0x90
call fcn.14000b2f0
test eax, eax
je 0x140006173
mov rcx, qword [rsp + 0x980]
add rcx, 0x90
call fcn.14000afd0
lea rdx, [0x14002bc50]
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rsp + 0x680], rax
cmp qword [rsp + 0x680], 0
je 0x140006171
mov rcx, qword [rsp + 0x980]
add rcx, 0x98
call fcn.1400046c0
mov r8, rax
lea rdx, [0x14002b8e0]
lea rcx, [0x14002b8d0]
call qword [rsp + 0x680]
mov rcx, qword [rsp + 0x980]
add rcx, 0xa0
call fcn.1400046c0
mov r8, rax
lea rdx, [0x14002b8f0]
lea rcx, [0x14002b8d0]
call qword [rsp + 0x680]
jmp 0x14000619d
mov ecx, 0xbb8
call qword [sym.imp.KERNEL32.dll_Sleep]
mov rcx, qword [rsp + 0x980]
add rcx, 8
xor r9d, r9d
mov r8d, 1
mov edx, VarUI4FromDisp
call fcn.14000bb50
mov rcx, qword [rsp + 0x980]
call fcn.140007320
mov rcx, qword [rsp + 0x980]
call fcn.140006e60
xor edx, edx
mov word [rsp + 0x40], dx
lea rdi, [rsp + 0x42]
xor eax, eax
mov ecx, 0x206
rep stosb byte [rdi], al
mov r8d, 0x104
lea rdx, [rsp + 0x40]
lea rcx, [0x14002bc60]
call qword [sym.imp.KERNEL32.dll_ExpandEnvironmentStringsW]
xor edx, edx
lea rcx, [rsp + 0x40]
call qword [sym.imp.KERNEL32.dll_CreateDirectoryW]
xor edx, edx
mov word [rsp + 0x260], dx
lea rdi, [rsp + 0x262]
xor eax, eax
mov ecx, 0x206
rep stosb byte [rdi], al
lea r8, [rsp + 0x40]
mov edx, 0x104
lea rcx, [rsp + 0x260]
call fcn.14001d2b4
lea rdx, [0x14002bc88]
lea rcx, [rsp + 0x260]
call fcn.140002ac0
xor edx, edx
mov word [rsp + 0x470], dx
lea rdi, [rsp + 0x472]
xor eax, eax
mov ecx, 0x206
rep stosb byte [rdi], al
lea rax, [rsp + 0x260]
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x20], 0x104
lea r9, [rsp + 0x470]
lea r8, [rsp + 0x40]
lea rdx, [0x14002bca8]
lea rcx, [0x14002bcc0]
call qword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
xor edx, edx
lea rcx, [rsp + 0x470]
call qword [sym.imp.KERNEL32.dll_CreateDirectoryW]
lea rdx, [rsp + 0x470]
lea rcx, [0x14002bcd0]
call qword [sym.imp.KERNEL32.dll_SetEnvironmentVariableW]
mov rcx, qword [rsp + 0x980]
add rcx, 0x98
call fcn.14000afd0
test rax, rax
je 0x140006669
mov byte [rsp + 0x688], 0
mov rcx, qword [rsp + 0x980]
add rcx, 0x98
call fcn.14000afd0
mov qword [rsp + 0x930], rax
mov rax, qword [rsp + 0x930]
mov rax, qword [rax]
lea rdx, [rsp + 0x688]
mov rcx, qword [rsp + 0x930]
call qword [rax + 0x18]
test eax, eax
jne 0x14000663f
movzx eax, byte [rsp + 0x688]
test eax, eax
je 0x1400063a5
mov rcx, qword [rsp + 0x980]
add rcx, 0xa0
call fcn.14000afd0
test rax, rax
je 0x1400063a0
mov rcx, qword [rsp + 0x980]
add rcx, 0xa0
call fcn.14000afd0
mov qword [rsp + 0x938], rax
mov rax, qword [rsp + 0x938]
mov rax, qword [rax]
mov rcx, qword [rsp + 0x938]
call qword [rax + 0x18]
test eax, eax
jne 0x140006382
mov rcx, qword [rsp + 0x980]
call fcn.1400066a0
jmp 0x1400063a0
mov r9d, 0x103
mov r8d, 0x104
mov edx, 0xcd
mov rcx, qword [rsp + 0x980]
call fcn.140007020
jmp 0x14000663d
mov dword [rsp + 0x68c], 0
call fcn.1400049b0
test eax, eax
je 0x1400063f7
mov rcx, qword [rsp + 0x980]
add rcx, 0x98
call fcn.14000afd0
mov qword [rsp + 0x940], rax
mov rax, qword [rsp + 0x940]
mov rax, qword [rax]
mov rcx, qword [rsp + 0x940]
call qword [rax + 0x20]
mov dword [rsp + 0x68c], eax
jmp 0x14000651e
xor eax, eax
mov word [rsp + 0x6a0], ax
lea rdi, [rsp + 0x6a2]
xor eax, eax
mov ecx, 0x206
rep stosb byte [rdi], al
mov r8d, 0x104
lea rdx, [rsp + 0x6a0]
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
mov r8d, 0x70
xor edx, edx
lea rcx, [rsp + 0x8b0]
call fcn.14001db80
mov dword [rsp + 0x8b0], 0x70
mov dword [rsp + 0x8b4], 0x40
mov qword [rsp + 0x8b8], 0
lea rax, [0x14002bcf8]
mov qword [rsp + 0x8c0], rax
lea rax, [rsp + 0x6a0]
mov qword [rsp + 0x8c8], rax
lea rax, [0x14002bd08]
mov qword [rsp + 0x8d0], rax
mov qword [rsp + 0x8d8], 0
mov dword [rsp + 0x8e0], 5
lea rcx, [rsp + 0x8b0]
call qword [sym.imp.SHELL32.dll_ShellExecuteExW]
mov edx, 0xffffffff
mov rcx, qword [rsp + 0x918]
call qword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov byte [rsp + 0x690], 0
mov rcx, qword [rsp + 0x980]
add rcx, 0x98
call fcn.14000afd0
mov qword [rsp + 0x948], rax
mov rax, qword [rsp + 0x948]
mov rax, qword [rax]
lea rdx, [rsp + 0x690]
mov rcx, qword [rsp + 0x948]
call qword [rax + 0x18]
movzx eax, byte [rsp + 0x690]
test eax, eax
jne 0x14000651e
mov dword [rsp + 0x68c], 0x80004005
cmp dword [rsp + 0x68c], 0
jge 0x14000654b
mov r9d, 0x105
mov r8d, 0xfb
mov edx, 0xcd
mov rcx, qword [rsp + 0x980]
call fcn.140007020
jmp 0x14000663d
cmp dword [rsp + 0x68c], 0
jne 0x1400065f5
mov r9d, 0x106
mov r8d, 0xcd
mov edx, 0xcd
mov rcx, qword [rsp + 0x980]
call fcn.140007020
mov rcx, qword [rsp + 0x980]
add rcx, 0xa0
call fcn.14000afd0
test rax, rax
je 0x1400065f3
mov rcx, qword [rsp + 0x980]
add rcx, 0xa0
call fcn.14000afd0
mov qword [rsp + 0x950], rax
mov rax, qword [rsp + 0x950]
mov rax, qword [rax]
mov rcx, qword [rsp + 0x950]
call qword [rax + 0x18]
test eax, eax
jne 0x1400065d5
mov rcx, qword [rsp + 0x980]
call fcn.1400066a0
jmp 0x1400065f3
mov r9d, 0x103
mov r8d, 0x104
mov edx, 0xcd
mov rcx, qword [rsp + 0x980]
call fcn.140007020
jmp 0x14000663d
mov r9d, 0x107
mov r8d, 0xfb
mov edx, 0xcd
mov rcx, qword [rsp + 0x980]
call fcn.140007020
mov ecx, 0xbb8
call qword [sym.imp.KERNEL32.dll_Sleep]
mov rcx, qword [rsp + 0x980]
add rcx, 8
xor r9d, r9d
mov r8d, 1
mov edx, VarUI4FromDisp
call fcn.14000bb50
jmp 0x140006669
mov ecx, 0xbb8
call qword [sym.imp.KERNEL32.dll_Sleep]
mov rcx, qword [rsp + 0x980]
add rcx, 8
xor r9d, r9d
mov r8d, 1
mov edx, VarUI4FromDisp
call fcn.14000bb50
movabs rax, 1
mov rcx, qword [rsp + 0x958]
xor rcx, rsp
call fcn.14001d350
add rsp, 0x968
pop rdi
pop rbx
ret