Function at 0x180015190
Capabilities:
Query or enumerate registry value

Disassembly:
mov dword [rsp + 0x18], r8d
push rbp
push rbx
push rsi
push rdi
push r14
lea rbp, [rsp - 0x37]
sub rsp, 0xd0
mov qword [rbp - 0x31], 0xfffffffffffffffe
mov rbx, rdx
mov rax, qword [rcx]
mov qword [rbp + 0x7f], rax
lea rcx, [rax - 0x10]
lea r14, [0x1802bccb0]
cmp rcx, r14
je 0x1800151d2
mov eax, 1
lock xadd dword [rcx], eax
xor r8d, r8d
lea rdx, [rbp + 0x7f]
lea rcx, [rbp - 0x61]
call fcn.180014d30
nop
xor esi, esi
cmp qword [rbp - 0x61], rsi
je 0x1800153d1
mov eax, 0x400
mov dword [rbp + 0x77], eax
mov edi, eax
cmp qword [rbx + 8], rdi
je 0x180015248
mov rcx, qword [rbx]
test eax, eax
jne 0x180015214
call fcn.1800a09c8
mov qword [rbx], rsi
mov qword [rbx + 8], rsi
jmp 0x180015248
test rcx, rcx
je 0x18001522b
mov rdx, rdi
call fcn.1800a0f0c
mov qword [rbx], rax
test rax, rax
je 0x18001528e
jmp 0x180015244
call fcn.1800a09c8
mov rcx, rdi
call fcn.1800a0a4c
mov qword [rbx], rax
test rax, rax
je 0x1800152c8
mov qword [rbx + 8], rdi
mov dword [rbp + 0x67], esi
mov rax, qword [rbx]
lea rcx, [rbp + 0x77]
mov qword [rsp + 0x28], rcx
mov qword [rsp + 0x20], rax
lea r9, [rbp + 0x67]
xor r8d, r8d
mov rdx, qword [rbp - 0x59]
mov rcx, qword [rbp - 0x61]
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
je 0x180015302
cmp eax, 0xea
jne 0x1800153d1
mov eax, dword [rbp + 0x77]
add eax, eax
jmp 0x1800151f4
lea rax, str.bad_allocation
mov qword [rbp - 0x39], rax
mov r8d, 1
lea rdx, [rbp - 0x39]
lea rcx, [rbp + 7]
call fcn.1800a02bc
lea rax, vtable.std::bad_alloc.0
mov qword [rbp + 7], rax
lea rdx, [0x180411c30]
lea rcx, [rbp + 7]
call fcn.1800a6538
int3
lea rax, str.bad_allocation
mov qword [rbp - 0x41], rax
mov r8d, 1
lea rdx, [rbp - 0x41]
lea rcx, [rbp - 0x29]
call fcn.1800a02bc
lea rax, vtable.std::bad_alloc.0
mov qword [rbp - 0x29], rax
lea rdx, [0x180411c30]
lea rcx, [rbp - 0x29]
call fcn.1800a6538
int3
mov edi, dword [rbp + 0x77]
cmp qword [rbx + 8], rdi
je 0x1800153ce
mov rcx, qword [rbx]
test rdi, rdi
jne 0x180015328
call fcn.1800a09c8
mov qword [rbx], rsi
mov qword [rbx + 8], rsi
jmp 0x1800153ce
test rcx, rcx
je 0x18001537b
mov rdx, rdi
call fcn.1800a0f0c
mov qword [rbx], rax
test rax, rax
jne 0x1800153ca
lea rax, str.bad_allocation
mov qword [rbp - 0x69], rax
mov r8d, 1
lea rdx, [rbp - 0x69]
lea rcx, [rbp - 0x11]
call fcn.1800a02bc
lea rax, vtable.std::bad_alloc.0
mov qword [rbp - 0x11], rax
lea rdx, [0x180411c30]
lea rcx, [rbp - 0x11]
call fcn.1800a6538
int3
call fcn.1800a09c8
mov rcx, rdi
call fcn.1800a0a4c
mov qword [rbx], rax
test rax, rax
jne 0x1800153ca
lea rax, str.bad_allocation
mov qword [rbp - 0x49], rax
mov r8d, 1
lea rdx, [rbp - 0x49]
lea rcx, [rbp + 0x1f]
call fcn.1800a02bc
lea rax, vtable.std::bad_alloc.0
mov qword [rbp + 0x1f], rax
lea rdx, [0x180411c30]
lea rcx, [rbp + 0x1f]
call fcn.1800a6538
int3
mov qword [rbx + 8], rdi
mov esi, dword [rbp + 0x67]
mov rcx, qword [rbp - 0x61]
test rcx, rcx
je 0x1800153e0
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov rcx, qword [rbp - 0x51]
add rcx, 0xfffffffffffffff0
cmp rcx, r14
je 0x180015400
or edx, 0xffffffff
lock xadd dword [rcx], edx
dec edx
cmp edx, 0xffffffff
jne 0x180015400
call fcn.1800a0c6c
mov eax, esi
add rsp, 0xd0
pop r14
pop rdi
pop rsi
pop rbx
pop rbp
ret