Function at 0x18f96d8
Capabilities:
Query or enumerate registry value

Disassembly:
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r15
sub rsp, 0xa0
mov rax, qword [0x0195c138]
xor rax, rsp
mov qword [rsp + 0x90], rax
test rdx, rdx
mov rsi, r8
mov rbp, rdx
mov r13, rcx
jne 0x18f974a
mov rcx, qword [0x01965a38]
lea rdi, [0x01965a38]
cmp rcx, rdi
je 0x18f973f
bt dword [rcx + 0x1c], 8
jae 0x18f973f
lea r9, [0x018e6a10]
mov dx, 0x17
mov rcx, qword [rcx + 0x10]
lea r8, [0x018e4500]
call fcn.018ec120
mov r12d, 0x80004003
jmp 0x18fa02b
test r8, r8
jne 0x18f9776
mov rcx, qword [0x01965a38]
lea rdi, [0x01965a38]
cmp rcx, rdi
je 0x18f973f
bt dword [rcx + 0x1c], 8
jae 0x18f973f
lea r9, [0x018e6a20]
mov dx, 0x18
jmp 0x18f972f
cmp word [r8], 0x7b
je 0x18f9788
mov r12d, 0x800401f3
jmp 0x18fa02b
lea rax, [rsp + 0x70]
mov r15d, 0x20019
xor ebx, ebx
and qword [rsp + 0x70], rbx
xor r8d, r8d
mov rdx, rsi
mov r9d, r15d
mov rcx, rbp
mov qword [rsp + 0x20], rax
call qword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x18f97ba
mov rbx, qword [rsp + 0x70]
movzx r12d, ax
mov r9d, r15d
mov rdx, rsi
or r12d, 0x80070000
test eax, eax
mov rcx, rbp
cmovle r12d, eax
and qword [rsp + 0x78], 0
lea rax, [rsp + 0x78]
xor r8d, r8d
mov qword [rsp + 0x20], rax
call qword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x18f9fa4
test rbx, rbx
je 0x18f9803
mov rcx, rbx
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
test eax, eax
mov rbx, qword [rsp + 0x78]
jne 0x18f9fa4
movdqu xmm0, xmmword [0x018e6bb8]
lea rdx, [rsp + 0x80]
mov rcx, rsi
movdqu xmmword [rsp + 0x80], xmm0
call qword [sym.imp.ole32.dll_CLSIDFromString]
test eax, eax
mov r12d, eax
jns 0x18f987f
mov rcx, qword [0x01965a38]
lea rdi, [0x01965a38]
cmp rcx, rdi
je 0x18fa01d
bt dword [rcx + 0x1c], 8
jae 0x18fa01d
mov rcx, qword [rcx + 0x10]
lea r9, [0x018e6a58]
lea r8, [0x018e4500]
mov dx, 0x1a
mov dword [rsp + 0x20], eax
call fcn.018ec180
jmp 0x18fa01d
mov rcx, qword [0x01965a38]
lea rdi, [0x01965a38]
lea rsi, [0x018e4500]
cmp rcx, rdi
mov r15d, 4
je 0x18f98c4
bt dword [rcx + 0x1c], 0x16
jae 0x18f98c4
cmp byte [rcx + 0x19], r15b
jb 0x18f98c4
mov rcx, qword [rcx + 0x10]
lea r9, [rsp + 0x80]
mov r8, rsi
mov dx, 0x1b
call fcn.018ec028
lea rdx, [rsp + 0x80]
mov rcx, r13
call fcn.018fa390
test rax, rax
mov rbp, rax
jne 0x18f999d
lea ecx, [rax + 0x60]
call sub.msvcrt.dll_void____ptr64___cdecl_operator_new_unsigned_long_long_unsigned___int64__
or ecx, 0xffffffff
test rax, rax
mov r11, rax
je 0x18f9950
lea rax, [0x0198d010]
mov qword [r11], rax
movdqu xmm0, xmmword [rsp + 0x80]
and dword [r11 + 0x1c], ebp
and dword [r11 + 0x54], ebp
movdqu xmmword [r11 + 8], xmm0
and dword [r11 + 0x58], ebp
and dword [r11 + 0x5c], ebp
mov byte [r11 + 0x33], cl
mov word [r11 + 0x30], 3
or dword [r11 + 0x30], 0xff0000
mov word [r11 + 0x2c], 3
mov rax, qword [r11 + 0x2c]
mov dword [r11 + 0x24], ecx
mov dword [r11 + 0x4c], ecx
mov qword [r11 + 0x34], rax
mov dword [r11 + 0x20], 0xffffffef
jmp 0x18f9953
xor r11d, r11d
and dword [r11 + 0x48], 0
and dword [r11 + 0x54], 0
mov dword [r11 + 0x20], ecx
mov dword [r11 + 0x24], ecx
mov dword [r11 + 0x50], ecx
mov dword [r11 + 0x4c], ecx
lea rcx, [r13 + 0x10]
lea rdx, [rsp + 0x38]
mov qword [rsp + 0x38], r11
mov dword [r11 + 0x18], 0x800
call fcn.018fb388
mov rbp, qword [rsp + 0x38]
test rbp, rbp
jne 0x18f999d
mov r12d, 0x8007000e
jmp 0x18fa01d
lea rax, [rsp + 0x48]
lea r9, [rsp + 0x30]
lea rdx, [0x018e45d8]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x44]
xor r8d, r8d
mov rcx, rbx
mov dword [rsp + 0x48], r15d
mov qword [rsp + 0x20], rax
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov r13b, 5
test eax, eax
jne 0x18f9a90
cmp dword [rsp + 0x30], r15d
jne 0x18f9a90
test eax, eax
jne 0x18f9a90
lea rax, [rsp + 0x30]
lea r9, [rsp + 0x48]
lea rdx, [0x018e4600]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x38]
xor r8d, r8d
mov rcx, rbx
mov word [rsp + 0x40], 3
mov dword [rsp + 0x30], r15d
mov qword [rsp + 0x20], rax
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
mov r11d, eax
jne 0x18f9a32
cmp dword [rsp + 0x48], r15d
jne 0x18f9a45
movzx eax, word [rsp + 0x40]
test r11d, r11d
cmove ax, word [rsp + 0x38]
mov word [rsp + 0x40], ax
mov rax, qword [rsp + 0x40]
mov qword [rbp + 0x2c], rax
mov rcx, qword [0x01965a38]
cmp rcx, rdi
je 0x18f9a90
bt dword [rcx + 0x1c], 0x16
jae 0x18f9a90
cmp byte [rcx + 0x19], r13b
jb 0x18f9a90
movzx edx, word [rsp + 0x40]
mov eax, dword [rsp + 0x44]
mov rcx, qword [rcx + 0x10]
mov dword [rsp + 0x28], eax
mov dword [rsp + 0x20], edx
lea r9, [rsp + 0x80]
mov dx, 0x1c
mov r8, rsi
call fcn.018f8b88
lea rax, [rsp + 0x38]
lea r9, [rsp + 0x30]
lea rdx, [0x018e4630]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x44]
xor r8d, r8d
mov rcx, rbx
mov dword [rsp + 0x38], r15d
mov qword [rsp + 0x20], rax
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x18f9b80
cmp dword [rsp + 0x30], r15d
jne 0x18f9b80
test eax, eax
jne 0x18f9b80
lea rax, [rsp + 0x38]
lea r9, [rsp + 0x30]
lea rdx, [0x018e4660]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x48]
xor r8d, r8d
mov rcx, rbx
mov word [rsp + 0x40], 3
mov dword [rsp + 0x38], r15d
mov qword [rsp + 0x20], rax
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
mov r11d, eax
jne 0x18f9b22
cmp dword [rsp + 0x30], r15d
jne 0x18f9b35
movzx eax, word [rsp + 0x40]
test r11d, r11d
cmove ax, word [rsp + 0x48]
mov word [rsp + 0x40], ax
mov rax, qword [rsp + 0x40]
mov qword [rbp + 0x34], rax
mov rcx, qword [0x01965a38]
cmp rcx, rdi
je 0x18f9b80
bt dword [rcx + 0x1c], 0x16
jae 0x18f9b80
cmp byte [rcx + 0x19], r13b
jb 0x18f9b80
movzx edx, word [rsp + 0x40]
mov eax, dword [rsp + 0x44]
mov rcx, qword [rcx + 0x10]
mov dword [rsp + 0x28], eax
mov dword [rsp + 0x20], edx
lea r9, [rsp + 0x80]
mov dx, 0x1d
mov r8, rsi
call fcn.018f8b88
lea rax, [rsp + 0x38]
lea r9, [rsp + 0x30]
lea rdx, [0x018e4690]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x5c]
xor r8d, r8d
mov rcx, rbx
mov dword [rsp + 0x38], r15d
mov qword [rsp + 0x20], rax
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x18f9c00
cmp dword [rsp + 0x30], r15d
jne 0x18f9c00
test eax, eax
jne 0x18f9c00
mov eax, dword [rsp + 0x5c]
mov dword [rbp + 0x48], eax
mov rcx, qword [0x01965a38]
cmp rcx, rdi
je 0x18f9c00
bt dword [rcx + 0x1c], 0x16
jae 0x18f9c00
cmp byte [rcx + 0x19], r13b
jb 0x18f9c00
mov eax, dword [rsp + 0x5c]
mov rcx, qword [rcx + 0x10]
lea r9, [rsp + 0x80]
mov r8, rsi
mov dx, 0x1e
mov dword [rsp + 0x20], eax
call fcn.018f8b40
and dword [rsp + 0x54], 0
lea rax, [rsp + 0x38]
lea r9, [rsp + 0x30]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x54]
lea rdx, [0x018e46b0]
xor r8d, r8d
mov rcx, rbx
mov dword [rsp + 0x38], r15d
mov qword [rsp + 0x20], rax
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x18f9c85
cmp dword [rsp + 0x30], r15d
jne 0x18f9c85
test eax, eax
jne 0x18f9c85
mov eax, dword [rsp + 0x54]
mov dword [rbp + 0x54], eax
mov rcx, qword [0x01965a38]
cmp rcx, rdi
je 0x18f9c85
bt dword [rcx + 0x1c], 0x16
jae 0x18f9c85
cmp byte [rcx + 0x19], r13b
jb 0x18f9c85
mov eax, dword [rsp + 0x54]
mov rcx, qword [rcx + 0x10]
lea r9, [rsp + 0x80]
mov r8, rsi
mov dx, 0x1f
mov dword [rsp + 0x20], eax
call fcn.018ec05c
lea rax, [rsp + 0x38]
lea r9, [rsp + 0x30]
lea rdx, [0x018e46d0]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x58]
xor r8d, r8d
mov rcx, rbx
mov dword [rsp + 0x38], r15d
mov qword [rsp + 0x20], rax
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x18f9d05
cmp dword [rsp + 0x30], r15d
jne 0x18f9d05
test eax, eax
jne 0x18f9d05
mov eax, dword [rsp + 0x58]
mov dword [rbp + 0x18], eax
mov rcx, qword [0x01965a38]
cmp rcx, rdi
je 0x18f9d05
bt dword [rcx + 0x1c], 0x16
jae 0x18f9d05
cmp byte [rcx + 0x19], r13b
jb 0x18f9d05
mov eax, dword [rsp + 0x58]
mov rcx, qword [rcx + 0x10]
lea r9, [rsp + 0x80]
mov r8, rsi
mov dx, 0x20
mov dword [rsp + 0x20], eax
call fcn.018ec05c
lea rax, [rsp + 0x38]
lea r9, [rsp + 0x30]
lea rdx, [0x018e45a0]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x50]
xor r8d, r8d
mov rcx, rbx
mov dword [rsp + 0x38], r15d
mov qword [rsp + 0x20], rax
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x18f9d85
cmp dword [rsp + 0x30], r15d
jne 0x18f9d85
test eax, eax
jne 0x18f9d85
mov eax, dword [rsp + 0x50]
mov dword [rbp + 0x20], eax
mov rcx, qword [0x01965a38]
cmp rcx, rdi
je 0x18f9d85
bt dword [rcx + 0x1c], 0x16
jae 0x18f9d85
cmp byte [rcx + 0x19], r13b
jb 0x18f9d85
mov eax, dword [rsp + 0x50]
mov rcx, qword [rcx + 0x10]
lea r9, [rsp + 0x80]
mov r8, rsi
mov dx, 0x21
mov dword [rsp + 0x20], eax
call fcn.018ec05c
lea rax, [rsp + 0x38]
lea r9, [rsp + 0x30]
lea rdx, [0x018e45b8]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x68]
xor r8d, r8d
mov rcx, rbx
mov dword [rsp + 0x38], r15d
mov qword [rsp + 0x20], rax
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x18f9e05
cmp dword [rsp + 0x30], r15d
jne 0x18f9e05
test eax, eax
jne 0x18f9e05
mov eax, dword [rsp + 0x68]
mov dword [rbp + 0x24], eax
mov rcx, qword [0x01965a38]
cmp rcx, rdi
je 0x18f9e05
bt dword [rcx + 0x1c], 0x16
jae 0x18f9e05
cmp byte [rcx + 0x19], r13b
jb 0x18f9e05
mov eax, dword [rsp + 0x50]
mov rcx, qword [rcx + 0x10]
lea r9, [rsp + 0x80]
mov r8, rsi
mov dx, 0x22
mov dword [rsp + 0x20], eax
call fcn.018ec05c
lea rax, [rsp + 0x38]
lea r9, [rsp + 0x30]
lea rdx, [0x018e46c0]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x64]
xor r8d, r8d
mov rcx, rbx
mov dword [rsp + 0x38], r15d
mov qword [rsp + 0x20], rax
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x18f9e85
cmp dword [rsp + 0x30], r15d
jne 0x18f9e85
test eax, eax
jne 0x18f9e85
mov eax, dword [rsp + 0x64]
mov dword [rbp + 0x4c], eax
mov rcx, qword [0x01965a38]
cmp rcx, rdi
je 0x18f9e85
bt dword [rcx + 0x1c], 0x16
jae 0x18f9e85
cmp byte [rcx + 0x19], r13b
jb 0x18f9e85
mov eax, dword [rsp + 0x64]
mov rcx, qword [rcx + 0x10]
lea r9, [rsp + 0x80]
mov r8, rsi
mov dx, 0x23
mov dword [rsp + 0x20], eax
call fcn.018ec05c
lea rax, [rsp + 0x38]
lea r9, [rsp + 0x30]
lea rdx, [0x018e4588]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x60]
xor r8d, r8d
mov rcx, rbx
mov dword [rsp + 0x38], r15d
mov qword [rsp + 0x20], rax
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x18f9f05
cmp dword [rsp + 0x30], r15d
jne 0x18f9f05
test eax, eax
jne 0x18f9f05
mov eax, dword [rsp + 0x60]
mov dword [rbp + 0x50], eax
mov rcx, qword [0x01965a38]
cmp rcx, rdi
je 0x18f9f05
bt dword [rcx + 0x1c], 0x16
jae 0x18f9f05
cmp byte [rcx + 0x19], r13b
jb 0x18f9f05
mov eax, dword [rsp + 0x60]
mov rcx, qword [rcx + 0x10]
lea r9, [rsp + 0x80]
mov r8, rsi
mov dx, 0x24
mov dword [rsp + 0x20], eax
call fcn.018ec05c
and dword [rsp + 0x4c], 0
lea rax, [rsp + 0x38]
lea r9, [rsp + 0x30]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x4c]
lea rdx, [0x018e46e0]
xor r8d, r8d
mov rcx, rbx
mov dword [rsp + 0x38], r15d
mov qword [rsp + 0x20], rax
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x18fa01d
cmp dword [rsp + 0x30], r15d
jne 0x18fa01d
test eax, eax
jne 0x18fa01d
mov eax, dword [rsp + 0x4c]
mov dword [rbp + 0x1c], eax
mov rcx, qword [0x01965a38]
cmp rcx, rdi
je 0x18fa01d
bt dword [rcx + 0x1c], 0x16
jae 0x18fa01d
cmp byte [rcx + 0x19], r13b
jb 0x18fa01d
mov eax, dword [rsp + 0x4c]
mov rcx, qword [rcx + 0x10]
lea r9, [rsp + 0x80]
mov r8, rsi
mov dx, 0x25
mov dword [rsp + 0x20], eax
call fcn.018ec05c
jmp 0x18fa01d
mov rax, qword [0x01965a38]
lea rdi, [0x01965a38]
cmp rax, rdi
je 0x18fa01d
bt dword [rax + 0x1c], 8
jae 0x18fa01d
and qword [rsp + 0x38], 0
lea rax, [rsp + 0x38]
mov r9d, r15d
xor r8d, r8d
mov rdx, rsi
mov rcx, rbp
mov qword [rsp + 0x20], rax
call qword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x18f9ff7
test rbx, rbx
je 0x18f9ff2
mov rcx, rbx
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov rbx, qword [rsp + 0x38]
mov rcx, qword [0x01965a38]
lea r9, [0x018e6a30]
lea r8, [0x018e4500]
mov rcx, qword [rcx + 0x10]
mov dx, 0x19
mov dword [rsp + 0x20], eax
call fcn.018f8be0
test rbx, rbx
je 0x18fa02b
mov rcx, rbx
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, r12d
mov rcx, qword [rsp + 0x90]
xor rcx, rsp
call fcn.018fdad0
add rsp, 0xa0
pop r15
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret