Function at 0x14002f530
Capabilities:
Query or enumerate registry value

Disassembly:
mov rax, rsp
push rbp
push r12
push r13
push r14
push r15
lea rbp, [rax - 0x4c8]
sub rsp, 0x5a0
mov qword [rbp - 0x30], 0xfffffffffffffffe
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], rsi
mov qword [rax + 0x20], rdi
mov rax, qword [0x1403d88e8]
xor rax, rsp
mov qword [rbp + 0x490], rax
mov r13, rcx
xor r15d, r15d
mov edi, r15d
mov dword [rsp + 0x30], r15d
lea esi, [r15 + 1]
cmp dword [0x1403ff83c], 7
jne 0x14002f6aa
cmp dword [0x140401350], r15d
jne 0x14002f6aa
mov dword [0x140401350], esi
lea rax, [rbp - 0x70]
mov qword [rsp + 0x20], rax
mov r9d, 0x20019
xor r8d, r8d
lea rdx, str.SoftwareMicrosoftPlus_ThemesCurrent
mov rcx, 0xffffffff80000001
call qword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x14002f6aa
mov dword [rsp + 0x4c], 0x104
mov dword [rsp + 0x50], esi
lea rax, [rsp + 0x4c]
mov qword [rsp + 0x28], rax
lea rax, [rbp + 0x270]
mov qword [rsp + 0x20], rax
lea r9, [rsp + 0x50]
xor r8d, r8d
xor edx, edx
mov rcx, qword [rbp - 0x70]
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x14002f6a0
movups xmm0, xmmword [str.Windows_Classic.theme]
movups xmmword [rbp + 0x240], xmm0
movups xmm1, xmmword [0x140348a30]
movups xmmword [rbp + 0x250], xmm1
movsd xmm0, qword [0x140348a40]
movsd qword [rbp + 0x260], xmm0
mov eax, dword [0x140348a48]
mov dword [rbp + 0x268], eax
lea rcx, [rbp + 0x270]
call qword [sym.imp.KERNEL32.dll_lstrlenW]
mov ebx, eax
lea rcx, [rbp + 0x240]
call qword [sym.imp.KERNEL32.dll_lstrlenW]
cmp ebx, eax
jl 0x14002f6a0
lea rcx, [rbp + 0x240]
call qword [sym.imp.KERNEL32.dll_lstrlenW]
sub ebx, eax
movsxd rax, ebx
lea rcx, [rbp + 0x270]
lea rcx, [rcx + rax*2]
lea rdx, [rbp + 0x240]
call qword [sym.imp.KERNEL32.dll_lstrcmpiW]
mov ecx, dword [0x14040134c]
test eax, eax
cmove ecx, esi
mov dword [0x14040134c], ecx
mov rcx, qword [rbp - 0x70]
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
call fcn.1400f9930
mov rcx, rax
test rax, rax
je 0x14002fdab
mov rax, qword [rax]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x40], rax
call fcn.1400f9930
mov rcx, rax
test rax, rax
je 0x14002fdb6
mov rax, qword [rax]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x38], rax
mov qword [rbp - 0x78], r15
lea rax, vtable.CFont.0
mov qword [rbp - 0x80], rax
xor edx, edx
lea r8d, [rdx + 0x5c]
lea rcx, [rbp - 0x20]
call fcn.14029ff20
mov dword [rbp + 0x40], 0x1f8
xor r9d, r9d
lea r8, [rbp + 0x40]
mov edx, 0x1f8
lea ecx, [r9 + 0x29]
call qword [sym.imp.USER32.dll_SystemParametersInfoW]
movaps xmm0, xmmword [rbp + 0x120]
movaps xmmword [rbp - 0x20], xmm0
movaps xmm1, xmmword [rbp + 0x130]
movaps xmmword [rbp - 0x10], xmm1
movaps xmm0, xmmword [rbp + 0x140]
movaps xmmword [rbp], xmm0
movaps xmm1, xmmword [rbp + 0x150]
movaps xmmword [rbp + 0x10], xmm1
movaps xmm0, xmmword [rbp + 0x160]
movaps xmmword [rbp + 0x20], xmm0
movsd xmm1, qword [rbp + 0x170]
movsd qword [rbp + 0x30], xmm1
mov eax, dword [rbp + 0x178]
mov dword [rbp + 0x38], eax
lea rcx, [rbp - 0x20]
call qword [sym.imp.GDI32.dll_CreateFontIndirectW]
mov rdx, rax
lea rcx, [rbp - 0x80]
call fcn.1400fa688
call fcn.14010fd08
test rax, rax
je 0x14002f7a7
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + 0xe8]
mov qword [rbp - 0x60], rax
test rax, rax
jne 0x14002f7b9
call qword [sym.imp.USER32.dll_GetDesktopWindow]
mov rcx, rax
call fcn.1400fe1b8
mov qword [rbp - 0x60], rax
mov rcx, qword [rax + 0x40]
call qword [sym.imp.USER32.dll_GetDC]
mov rcx, rax
call fcn.1400fa914
mov rbx, rax
mov qword [rsp + 0x78], rax
mov r8, qword [rax]
lea rdx, [rbp - 0x80]
mov rcx, rax
call qword [r8 + 0x50]
mov qword [rbp - 0x38], rax
mov rcx, qword [r13 + 8]
call qword [sym.imp.USER32.dll_GetMenuItemCount]
or r14, 0xffffffffffffffff
mov dword [rsp + 0x48], r14d
cdqe
mov qword [rbp - 0x68], rax
test rax, rax
jle 0x14002fcff
mov r12, r15
nop word [rax + rax]
test r12, r12
js 0x14002fdf9
cmp r12, qword [r13 + 0x20]
jge 0x14002fdf9
mov rax, qword [r13 + 0x18]
mov rsi, qword [rax + r12*8]
call fcn.1400f9930
mov rcx, rax
test rax, rax
je 0x14002fdee
mov rax, qword [rax]
call qword [rax + 0x18]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x58], rbx
or edi, 1
mov dword [rsp + 0x30], edi
mov rdx, qword [rsi + 0x10]
test rdx, rdx
je 0x14002f87c
mov rax, r14
nop
inc rax
cmp word [rdx + rax*2], 0
jne 0x14002f860
mov r8d, eax
lea rcx, [rsp + 0x58]
call fcn.1400105e0
mov rbx, qword [rsp + 0x58]
lea rdx, [rsp + 0x58]
lea rcx, [rsp + 0x40]
call fcn.1400157c0
and edi, 0xfffffffe
mov dword [rsp + 0x30], edi
lea rdx, [rbx - 0x18]
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14002f8ac
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rbx, qword [rsp + 0x40]
lea r15, [rbx - 0x10]
cmp dword [r15], 0
jg 0x14002f8c0
mov edi, r14d
jmp 0x14002f8e0
mov edx, 9
mov rcx, rbx
call fcn.14029fc6c
mov rdi, rax
test rax, rax
jne 0x14002f8da
mov edi, r14d
jmp 0x14002f8e0
sub rdi, rbx
sar rdi, 1
mov rax, qword [rsp + 0x38]
lea rdx, [rax - 0x18]
mov rsi, qword [rdx]
cmp dword [rdx + 8], 0
je 0x14002f939
cmp dword [rdx + 0x10], 0
jge 0x14002f90c
cmp dword [rax - 0xc], 0
jl 0x14002fdc1
xor ecx, ecx
mov dword [rax - 0x10], ecx
mov word [rax], cx
jmp 0x14002f93b
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14002f922
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x38], rax
mov rbx, qword [rsp + 0x40]
xor ecx, ecx
cmp edi, 0xffffffff
je 0x14002f9d5
mov esi, ecx
test edi, edi
cmovns esi, edi
cmp esi, dword [r15]
jl 0x14002f964
lea rcx, [rbx - 0x18]
call fcn.140015740
lea rbx, [rax + 0x18]
mov qword [rsp + 0x60], rbx
jmp 0x14002f99e
mov rcx, qword [rbx - 0x18]
test rcx, rcx
je 0x14002f978
mov rax, qword [rcx]
call qword [rax + 0x20]
test rax, rax
jne 0x14002f986
call fcn.1400f9930
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + 0x20]
mov r9, rax
mov r8d, esi
mov rdx, rbx
lea rcx, [rsp + 0x60]
call fcn.1400151e0
mov rbx, qword [rsp + 0x60]
mov edi, dword [rsp + 0x30]
or edi, 2
lea rdx, [rsp + 0x60]
lea rcx, [rsp + 0x38]
call fcn.1400157c0
nop
lea rdx, [rbx - 0x18]
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14002f9cf
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov dword [rsp + 0x30], edi
jmp 0x14002f9e8
lea rdx, [rsp + 0x40]
lea rcx, [rsp + 0x38]
call fcn.1400157c0
mov edi, dword [rsp + 0x30]
mov r8d, 1
lea rdx, [0x1403489c0]
lea rcx, [rsp + 0x38]
call fcn.14001cfc0
mov rdx, qword [rsp + 0x38]
mov rax, r14
nop word [rax + rax]
inc rax
cmp word [rdx + rax*2], 0
jne 0x14002fa10
lea r9, [rbp - 0x58]
mov r8d, eax
mov rax, qword [rsp + 0x78]
mov rcx, qword [rax + 0x10]
call qword [sym.imp.GDI32.dll_GetTextExtentPoint32W]
mov rax, qword [rbp - 0x58]
mov ecx, dword [rsp + 0x48]
cmp eax, ecx
cmovg ecx, eax
mov dword [rsp + 0x48], ecx
inc r12
cmp r12, qword [rbp - 0x68]
jl 0x14002f810
xor r12d, r12d
mov esi, edi
test r12, r12
js 0x14002fde8
cmp r12, qword [r13 + 0x20]
jge 0x14002fde8
mov rax, qword [r13 + 0x18]
mov r15, qword [rax + r12*8]
call fcn.1400f9930
mov rcx, rax
test rax, rax
je 0x14002fddd
mov rax, qword [rax]
call qword [rax + 0x18]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x68], rbx
or edi, 4
mov dword [rsp + 0x30], edi
mov rdx, qword [r15 + 0x10]
test rdx, rdx
je 0x14002fabd
mov rax, r14
inc rax
cmp word [rdx + rax*2], 0
jne 0x14002faa1
mov r8d, eax
lea rcx, [rsp + 0x68]
call fcn.1400105e0
mov rbx, qword [rsp + 0x68]
lea rdx, [rsp + 0x68]
lea rcx, [rsp + 0x40]
call fcn.1400157c0
and esi, 0xfffffffb
mov dword [rsp + 0x30], esi
lea rdx, [rbx - 0x18]
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14002faed
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rbx, qword [rsp + 0x40]
lea r15, [rbx - 0x10]
cmp dword [r15], 0
jle 0x14002fce8
mov edx, 9
mov rcx, rbx
call fcn.14029fc6c
mov rsi, rax
test rax, rax
je 0x14002fce8
sub rsi, rbx
sar rsi, 1
cmp esi, 0xffffffff
je 0x14002fce8
mov rcx, qword [rsp + 0x38]
lea rdx, [rcx - 0x18]
mov rdi, qword [rdx]
cmp dword [rdx + 8], 0
je 0x14002fb81
cmp dword [rdx + 0x10], 0
jge 0x14002fb54
cmp dword [rcx - 0xc], 0
jl 0x14002fdcc
xor eax, eax
mov dword [rcx - 0x10], eax
mov word [rcx], ax
jmp 0x14002fb83
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14002fb6a
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x38], rax
mov rbx, qword [rsp + 0x40]
xor eax, eax
mov edi, eax
test esi, esi
cmovns edi, esi
cmp edi, dword [r15]
jl 0x14002fba3
lea rcx, [rbx - 0x18]
call fcn.140015740
lea rbx, [rax + 0x18]
mov qword [rsp + 0x70], rbx
jmp 0x14002fbdd
mov rcx, qword [rbx - 0x18]
test rcx, rcx
je 0x14002fbb7
mov rax, qword [rcx]
call qword [rax + 0x20]
test rax, rax
jne 0x14002fbc5
call fcn.1400f9930
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + 0x20]
mov r9, rax
mov r8d, edi
mov rdx, rbx
lea rcx, [rsp + 0x70]
call fcn.1400151e0
mov rbx, qword [rsp + 0x70]
lea rdx, [rsp + 0x70]
lea rcx, [rsp + 0x38]
call fcn.1400157c0
nop
lea rdx, [rbx - 0x18]
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14002fc07
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rdx, qword [rsp + 0x38]
mov rax, r14
nop
inc rax
cmp word [rdx + rax*2], 0
jne 0x14002fc10
lea r9, [rbp - 0x50]
mov r8d, eax
mov rdi, qword [rsp + 0x78]
mov rcx, qword [rdi + 0x10]
call qword [sym.imp.GDI32.dll_GetTextExtentPoint32W]
mov ebx, dword [rsp + 0x48]
cmp dword [rbp - 0x50], ebx
jge 0x14002fc80
nop dword [rax]
mov edx, 0x20
lea rcx, [rsp + 0x38]
call fcn.140031cb0
mov rdx, qword [rsp + 0x38]
mov rax, r14
nop word [rax + rax]
inc rax
cmp word [rdx + rax*2], 0
jne 0x14002fc60
lea r9, [rbp - 0x48]
mov r8d, eax
mov rcx, qword [rdi + 0x10]
call qword [sym.imp.GDI32.dll_GetTextExtentPoint32W]
cmp dword [rbp - 0x48], ebx
jl 0x14002fc40
mov r9d, dword [r15]
sub r9d, esi
mov r8d, esi
lea rdx, [rbp - 0x40]
lea rcx, [rsp + 0x40]
call fcn.14001cee0
or dword [rsp + 0x30], 0x18
mov rbx, qword [rbp - 0x40]
mov r8d, dword [rbx - 0x10]
mov rdx, rbx
lea rcx, [rsp + 0x38]
call fcn.14001cfc0
nop
lea rdx, [rbx - 0x18]
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14002fccc
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
cmp r12, qword [r13 + 0x20]
jge 0x14002fdd7
mov rax, qword [r13 + 0x18]
mov rdx, qword [rsp + 0x38]
mov rcx, qword [rax + r12*8]
call fcn.14002b3c0
inc r12
cmp r12, qword [rbp - 0x68]
jge 0x14002fcfa
mov edi, dword [rsp + 0x30]
jmp 0x14002fa51
mov rbx, qword [rsp + 0x78]
mov rax, qword [rbx]
mov rdx, qword [rbp - 0x38]
mov rcx, rbx
call qword [rax + 0x50]
mov rdx, qword [rbx + 8]
mov rcx, qword [rbp - 0x60]
mov rcx, qword [rcx + 0x40]
call qword [sym.imp.USER32.dll_ReleaseDC]
lea rcx, [rbp - 0x80]
call int.1400fa7e4
nop
lea rax, vtable.CFont.0
mov qword [rbp - 0x80], rax
lea rcx, [rbp - 0x80]
call fcn.14000e0a0
nop
mov rdx, qword [rsp + 0x38]
add rdx, 0xffffffffffffffe8
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14002fd5d
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x40]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], r14d
sub r14d, 1
jg 0x14002fd7b
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rcx, qword [rbp + 0x490]
xor rcx, rsp
call fcn.14029d880
lea r11, [rsp + 0x5a0]
mov rbx, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
mov rdi, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rbp
ret
mov ecx, 0x80004005
call fcn.14000de90
nop
mov ecx, 0x80004005
call fcn.14000de90
nop
mov ecx, 0x80070057
call fcn.14000de90
int3
mov ecx, 0x80070057
call fcn.14000de90
int3
call fcn.1400f91a0
nop
mov ecx, 0x80004005
call fcn.14000de90
nop
call fcn.1400f91a0
nop
mov ecx, 0x80004005
call fcn.14000de90
nop
call fcn.1400f91a0
int3