Function at 0x140005ec0
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 [0x140042dd0]
xor rax, rsp
mov qword [rsp + 0x958], rax
mov rcx, qword [rsp + 0x980]
add rcx, 8
xor edx, edx
call fcn.1400010d0
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, [0x1400445c0]
call fcn.14000b540
mov dword [rsp + 0x28], 0
mov dword [rsp + 0x20], ebx
mov r9d, edi
mov r8d, 1
mov edx, 0x80
mov rcx, qword [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, [0x1400445c0]
call fcn.14000b540
mov dword [rsp + 0x28], 0
mov dword [rsp + 0x20], ebx
mov r9d, edi
mov r8d, 1
mov edx, 0x80
mov rcx, qword [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, [0x1400445c0]
call fcn.14000bcd0
mov qword [rsp + 0x258], rax
cmp qword [rsp + 0x980], 0
je 0x140006015
mov rax, qword [rsp + 0x980]
add rax, 0x40
mov qword [rsp + 0x920], rax
jmp 0x140006021
mov qword [rsp + 0x920], 0
mov rdx, qword [rsp + 0x920]
mov rcx, qword [rsp + 0x258]
call fcn.14000b800
cmp qword [rsp + 0x980], 0
je 0x140006057
mov rax, qword [rsp + 0x980]
add rax, 0x48
mov qword [rsp + 0x928], rax
jmp 0x140006063
mov qword [rsp + 0x928], 0
mov rdx, qword [rsp + 0x928]
mov rcx, qword [rsp + 0x258]
call fcn.14000b860
mov rcx, qword [rsp + 0x980]
add rcx, 0x58
mov rdx, qword [rsp + 0x980]
mov rdx, qword [rdx + 8]
call fcn.14000c020
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, [0x140034cf0]
call qword [sym.imp.USER32.dll_RegisterWindowMessageW]
call fcn.14001dcc0
mov rcx, qword [rsp + 0x980]
add rcx, 0x90
mov rdx, rax
call fcn.14000a4e0
mov rcx, qword [rsp + 0x980]
add rcx, 0x90
call fcn.14000b450
test eax, eax
je 0x1400061c3
mov rcx, qword [rsp + 0x980]
add rcx, 0x90
call fcn.14000a6a0
lea rdx, [0x140034d10]
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rsp + 0x680], rax
cmp qword [rsp + 0x680], 0
je 0x1400061c1
mov rcx, qword [rsp + 0x980]
add rcx, 0x98
call fcn.14000a0e0
mov r8, rax
lea rdx, [0x140034900]
lea rcx, [0x1400348f0]
call qword [rsp + 0x680]
mov rcx, qword [rsp + 0x980]
add rcx, 0xa0
call fcn.14000a0e0
mov r8, rax
lea rdx, [0x140034910]
lea rcx, [0x1400348f0]
call qword [rsp + 0x680]
jmp 0x1400061ed
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.14000bdc0
mov rcx, qword [rsp + 0x980]
call fcn.140007390
mov rcx, qword [rsp + 0x980]
call fcn.140006ed0
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, [0x140034d20]
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.140022658
lea rdx, [0x140034d48]
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, [0x140034d68]
lea rcx, [0x140034d80]
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, [0x140034d90]
call qword [sym.imp.KERNEL32.dll_SetEnvironmentVariableW]
mov rcx, qword [rsp + 0x980]
add rcx, 0x98
call fcn.14000a6a0
test rax, rax
je 0x1400066b9
mov byte [rsp + 0x688], 0
mov rcx, qword [rsp + 0x980]
add rcx, 0x98
call fcn.14000a6a0
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 0x14000668f
movzx eax, byte [rsp + 0x688]
test eax, eax
je 0x1400063f5
mov rcx, qword [rsp + 0x980]
add rcx, 0xa0
call fcn.14000a6a0
test rax, rax
je 0x1400063f0
mov rcx, qword [rsp + 0x980]
add rcx, 0xa0
call fcn.14000a6a0
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 0x1400063d2
mov rcx, qword [rsp + 0x980]
call fcn.1400066f0
jmp 0x1400063f0
mov r9d, 0x2813
mov r8d, 0xd5
mov edx, 0x27dd
mov rcx, qword [rsp + 0x980]
call fcn.140007090
jmp 0x14000668d
mov dword [rsp + 0x68c], 0
call fcn.140004990
test eax, eax
je 0x140006447
mov rcx, qword [rsp + 0x980]
add rcx, 0x98
call fcn.14000a6a0
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 0x14000656e
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.140023670
mov dword [rsp + 0x8b0], 0x70
mov dword [rsp + 0x8b4], 0x40
mov qword [rsp + 0x8b8], 0
lea rax, [0x140034db8]
mov qword [rsp + 0x8c0], rax
lea rax, [rsp + 0x6a0]
mov qword [rsp + 0x8c8], rax
lea rax, [0x140034dc8]
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.14000a6a0
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 0x14000656e
mov dword [rsp + 0x68c], 0x80004005
cmp dword [rsp + 0x68c], 0
jge 0x14000659b
mov r9d, 0x2815
mov r8d, 0xbd
mov edx, 0x27dd
mov rcx, qword [rsp + 0x980]
call fcn.140007090
jmp 0x14000668d
cmp dword [rsp + 0x68c], 0
jne 0x140006645
mov r9d, 0x2816
mov r8d, 0x27dd
mov edx, 0x27dd
mov rcx, qword [rsp + 0x980]
call fcn.140007090
mov rcx, qword [rsp + 0x980]
add rcx, 0xa0
call fcn.14000a6a0
test rax, rax
je 0x140006643
mov rcx, qword [rsp + 0x980]
add rcx, 0xa0
call fcn.14000a6a0
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 0x140006625
mov rcx, qword [rsp + 0x980]
call fcn.1400066f0
jmp 0x140006643
mov r9d, 0x2813
mov r8d, 0xd5
mov edx, 0x27dd
mov rcx, qword [rsp + 0x980]
call fcn.140007090
jmp 0x14000668d
mov r9d, 0x2817
mov r8d, 0xbd
mov edx, 0x27dd
mov rcx, qword [rsp + 0x980]
call fcn.140007090
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.14000bdc0
jmp 0x1400066b9
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.14000bdc0
movabs rax, 1
mov rcx, qword [rsp + 0x958]
xor rcx, rsp
call fcn.1400226f0
add rsp, 0x968
pop rdi
pop rbx
ret