Function at 0x140007b80
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 [0x140042d30]
xor rax, rsp
mov qword [rsp + 0x958], rax
mov rcx, qword [rsp + 0x980]
add rcx, 8
xor edx, edx
call fcn.140002da0
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, [0x140044590]
call fcn.14000d0e0
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.140004b80
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, [0x140044590]
call fcn.14000d0e0
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.140004b80
call qword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov edx, eax
lea rcx, [0x140044590]
call fcn.14000d870
mov qword [rsp + 0x258], rax
cmp qword [rsp + 0x980], 0
je 0x140007cd5
mov rax, qword [rsp + 0x980]
add rax, 0x40
mov qword [rsp + 0x920], rax
jmp 0x140007ce1
mov qword [rsp + 0x920], 0
mov rdx, qword [rsp + 0x920]
mov rcx, qword [rsp + 0x258]
call fcn.14000d3a0
cmp qword [rsp + 0x980], 0
je 0x140007d17
mov rax, qword [rsp + 0x980]
add rax, 0x48
mov qword [rsp + 0x928], rax
jmp 0x140007d23
mov qword [rsp + 0x928], 0
mov rdx, qword [rsp + 0x928]
mov rcx, qword [rsp + 0x258]
call fcn.14000d400
mov rcx, qword [rsp + 0x980]
add rcx, 0x58
mov rdx, qword [rsp + 0x980]
mov rdx, qword [rdx + 8]
call fcn.14000dbc0
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.14001e150
mov rcx, qword [rsp + 0x980]
add rcx, 0x90
mov rdx, rax
call fcn.14000c170
mov rcx, qword [rsp + 0x980]
add rcx, 0x90
call fcn.140012040
test eax, eax
je 0x140007e83
mov rcx, qword [rsp + 0x980]
add rcx, 0x90
call fcn.140002d50
lea rdx, [0x140034d10]
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rsp + 0x680], rax
cmp qword [rsp + 0x680], 0
je 0x140007e81
mov rcx, qword [rsp + 0x980]
add rcx, 0x98
call fcn.140017780
mov r8, rax
lea rdx, [0x140034900]
lea rcx, [0x1400348f0]
call qword [rsp + 0x680]
mov rcx, qword [rsp + 0x980]
add rcx, 0xa0
call fcn.140017780
mov r8, rax
lea rdx, [0x140034910]
lea rcx, [0x1400348f0]
call qword [rsp + 0x680]
jmp 0x140007ead
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.14000d960
mov rcx, qword [rsp + 0x980]
call fcn.140009050
mov rcx, qword [rsp + 0x980]
call fcn.140008b90
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.140022aa8
lea rdx, [0x140034d48]
lea rcx, [rsp + 0x260]
call fcn.140004740
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.140002d50
test rax, rax
je 0x140008379
mov byte [rsp + 0x688], 0
mov rcx, qword [rsp + 0x980]
add rcx, 0x98
call fcn.140002d50
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 0x14000834f
movzx eax, byte [rsp + 0x688]
test eax, eax
je 0x1400080b5
mov rcx, qword [rsp + 0x980]
add rcx, 0xa0
call fcn.140002d50
test rax, rax
je 0x1400080b0
mov rcx, qword [rsp + 0x980]
add rcx, 0xa0
call fcn.140002d50
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 0x140008092
mov rcx, qword [rsp + 0x980]
call fcn.1400083b0
jmp 0x1400080b0
mov r9d, 0x2813
mov r8d, 0xd5
mov edx, 0x27dd
mov rcx, qword [rsp + 0x980]
call fcn.140008d50
jmp 0x14000834d
mov dword [rsp + 0x68c], 0
call fcn.140006650
test eax, eax
je 0x140008107
mov rcx, qword [rsp + 0x980]
add rcx, 0x98
call fcn.140002d50
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 0x14000822e
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.140023ac0
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.140002d50
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 0x14000822e
mov dword [rsp + 0x68c], 0x80004005
cmp dword [rsp + 0x68c], 0
jge 0x14000825b
mov r9d, 0x2815
mov r8d, 0xbd
mov edx, 0x27dd
mov rcx, qword [rsp + 0x980]
call fcn.140008d50
jmp 0x14000834d
cmp dword [rsp + 0x68c], 0
jne 0x140008305
mov r9d, 0x2816
mov r8d, 0x27dd
mov edx, 0x27dd
mov rcx, qword [rsp + 0x980]
call fcn.140008d50
mov rcx, qword [rsp + 0x980]
add rcx, 0xa0
call fcn.140002d50
test rax, rax
je 0x140008303
mov rcx, qword [rsp + 0x980]
add rcx, 0xa0
call fcn.140002d50
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 0x1400082e5
mov rcx, qword [rsp + 0x980]
call fcn.1400083b0
jmp 0x140008303
mov r9d, 0x2813
mov r8d, 0xd5
mov edx, 0x27dd
mov rcx, qword [rsp + 0x980]
call fcn.140008d50
jmp 0x14000834d
mov r9d, 0x2817
mov r8d, 0xbd
mov edx, 0x27dd
mov rcx, qword [rsp + 0x980]
call fcn.140008d50
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.14000d960
jmp 0x140008379
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.14000d960
movabs rax, 1
mov rcx, qword [rsp + 0x958]
xor rcx, rsp
call fcn.140022b40
add rsp, 0x968
pop rdi
pop rbx
ret