Function at 0x140003fb8
Capabilities:
Query environment variable
Query or enumerate registry value

Disassembly:
mov rax, rsp
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rax - 0x278]
sub rsp, 0x340
mov qword [rsp + 0x60], 0xfffffffffffffffe
mov qword [rax + 0x18], rbx
mov rax, qword [0x140059d90]
xor rax, rsp
mov qword [rbp + 0x230], rax
mov r15, rdx
mov rdi, rcx
mov qword [rsp + 0x68], rcx
xor ebx, ebx
mov sil, bl
cmp qword [rcx + 0x10], rbx
jne 0x140004024
cmp qword [rcx + 0x18], 0x10
jb 0x140004017
mov rcx, qword [rcx]
call fcn.140020508
mov r12d, SafeArrayLock
xor al, al
jmp 0x140004355
or r13, 0xffffffffffffffff
mov r8, r13
xor edx, edx
mov rcx, r15
call fcn.140002bf4
lea rcx, str..exe
call fcn.140020e10
mov r8, rax
lea rdx, str..exe
mov rcx, rdi
call fcn.140003184
lea r12d, [r13 + 0x10]
mov qword [rbp - 0x50], r12
mov qword [rbp - 0x58], rbx
mov byte [rbp - 0x68], bl
lea rcx, str.SoftwareMicrosoftWindowsCurrentVersionApp_Paths_
call fcn.140020e10
mov r8, rax
lea rdx, str.SoftwareMicrosoftWindowsCurrentVersionApp_Paths_
lea rcx, [rbp - 0x68]
call fcn.1400033ac
nop
mov qword [rbp - 0x78], r12
mov qword [rbp - 0x80], rbx
mov byte [rsp + 0x70], bl
mov r9, r13
xor r8d, r8d
mov rdx, rdi
lea rcx, [rbp - 0x68]
call fcn.140003070
lea rdx, [rbp - 0x68]
cmp qword [rbp - 0x50], 0x10
cmovae rdx, qword [rbp - 0x68]
lea r8, [rsp + 0x48]
mov rcx, 0xffffffff80000002
call qword [sym.imp.ADVAPI32.dll_RegOpenKeyA]
test eax, eax
jne 0x1400041a2
mov dword [rsp + 0x44], 0x104
lea rax, [rsp + 0x44]
mov qword [rsp + 0x28], rax
lea rax, [rbp + 0x10]
mov qword [rsp + 0x20], rax
lea r9, [rsp + 0x40]
xor r8d, r8d
xor edx, edx
mov rcx, qword [rsp + 0x48]
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
mov ebx, eax
mov rcx, qword [rsp + 0x48]
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
test ebx, ebx
jne 0x140004309
cmp dword [rsp + 0x40], 1
je 0x14000411f
cmp dword [rsp + 0x40], 2
jne 0x140004309
lea rcx, [rbp + 0x10]
call fcn.140020e10
mov r8, rax
lea rdx, [rbp + 0x10]
lea rcx, [rsp + 0x70]
call fcn.1400033ac
mov byte [rsp + 0x38], 0x25
mov r9d, 1
xor r8d, r8d
lea rdx, [rsp + 0x38]
lea rcx, [rsp + 0x70]
call fcn.1400028a8
mov r14, rax
cmp rax, r13
jne 0x140004179
mov r9, r13
xor r8d, r8d
lea rdx, [rsp + 0x70]
mov rcx, r15
call fcn.1400032b0
mov sil, 1
jmp 0x140004309
mov byte [rsp + 0x30], 0x25
mov r9d, 1
lea r8, [rax + 1]
lea rdx, [rsp + 0x30]
lea rcx, [rsp + 0x70]
call fcn.1400028a8
mov r13, rax
cmp rax, 0xffffffffffffffff
jne 0x1400041aa
xor ebx, ebx
mov sil, bl
jmp 0x14000430b
sub r13, r14
lea r9, [r13 - 1]
lea r8, [r14 + 1]
lea rdx, [rbp - 0x18]
lea rcx, [rsp + 0x70]
call fcn.140003efc
nop
mov qword [rbp - 0x28], r12
xor ebx, ebx
mov qword [rbp - 0x30], rbx
mov byte [rbp - 0x40], bl
lea rdx, [rbp - 0x18]
cmp qword [rbp], 0x10
cmovae rdx, qword [rbp - 0x18]
lea rcx, [rbp + 0x120]
call fcn.140021640
lea r11, [rbp + 0x120]
test r11, r11
je 0x14000429a
lea rcx, [rbp + 0x120]
call fcn.14002237c
mov rdx, rax
lea rcx, [rsp + 0x50]
call fcn.1400026fc
nop
mov rbx, qword [rax]
test rbx, rbx
je 0x140004236
cmp qword [rbx + 8], 0
jne 0x140004230
mov rcx, qword [rbx]
call fcn.14001f6f0
mov qword [rbx + 8], rax
mov rsi, qword [rbx + 8]
jmp 0x140004238
xor esi, esi
mov rbx, qword [rsp + 0x50]
test rbx, rbx
je 0x14000427e
or eax, 0xffffffff
lock xadd dword [rbx + 0x10], eax
dec eax
jne 0x140004277
test rbx, rbx
je 0x140004277
mov rcx, qword [rbx]
test rcx, rcx
je 0x140004261
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
mov rcx, qword [rbx + 8]
test rcx, rcx
je 0x14000426f
call fcn.14002098c
mov rcx, rbx
call fcn.140020508
xor ebx, ebx
mov qword [rsp + 0x50], rbx
test rsi, rsi
je 0x14000429a
mov rcx, rsi
call fcn.140020e10
mov r8, rax
mov rdx, rsi
lea rcx, [rbp - 0x40]
call fcn.1400033ac
cmp qword [rbp - 0x30], rbx
je 0x1400042d9
lea r8, [r13 + 1]
or qword [rsp + 0x28], 0xffffffffffffffff
mov qword [rsp + 0x20], rbx
lea r9, [rbp - 0x40]
mov rdx, r14
lea rcx, [rsp + 0x70]
call fcn.1400034a4
or r9, 0xffffffffffffffff
xor r8d, r8d
lea rdx, [rsp + 0x70]
mov rcx, r15
call fcn.1400032b0
mov sil, 1
jmp 0x1400042dc
mov sil, bl
cmp qword [rbp - 0x28], 0x10
jb 0x1400042ec
mov rcx, qword [rbp - 0x40]
call fcn.140020508
mov qword [rbp - 0x28], r12
mov qword [rbp - 0x30], rbx
mov byte [rbp - 0x40], bl
cmp qword [rbp], 0x10
jb 0x14000430b
mov rcx, qword [rbp - 0x18]
call fcn.140020508
jmp 0x14000430b
xor ebx, ebx
cmp qword [rbp - 0x78], 0x10
jb 0x14000431c
mov rcx, qword [rsp + 0x70]
call fcn.140020508
mov qword [rbp - 0x78], r12
mov qword [rbp - 0x80], rbx
mov byte [rsp + 0x70], bl
cmp qword [rbp - 0x50], 0x10
jb 0x140004338
mov rcx, qword [rbp - 0x68]
call fcn.140020508
mov qword [rbp - 0x50], r12
mov qword [rbp - 0x58], rbx
mov byte [rbp - 0x68], bl
cmp qword [rdi + 0x18], 0x10
jb 0x140004352
mov rcx, qword [rdi]
call fcn.140020508
mov al, sil
mov qword [rdi + 0x18], r12
mov qword [rdi + 0x10], rbx
mov byte [rdi], bl
mov rcx, qword [rbp + 0x230]
xor rcx, rsp
call fcn.140021570
mov rbx, qword [rsp + 0x390]
add rsp, 0x340
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret