Function at 0x140087570
Capabilities:
Query or enumerate registry value

Disassembly:
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x2010]
mov eax, 0x2110
call fcn.1400ad030
sub rsp, rax
mov qword [rbp - 0x68], 0xfffffffffffffffe
mov qword [rsp + 0x2150], rbx
mov rax, qword [0x14011f010]
xor rax, rsp
mov qword [rbp + 0x2000], rax
mov r15, r9
mov qword [rbp - 0x70], r9
mov rsi, r8
mov qword [rbp - 0x78], r8
mov r13, rdx
mov qword [rsp + 0x78], rdx
test rdx, rdx
jne 0x1400875ed
mov r8d, 0x2b7
lea rdx, str.CRtkBssGen4PresetLoader::GetDriverVersion
lea rcx, str._s__d_RETURN_FALSE_ON_FALSE
call fcn.14004c3d0
xor eax, eax
jmp 0x140087b31
xor edi, edi
mov qword [rbp - 0x48], rdi
cmp dword [rdx + 0x178], edi
je 0x140087b5b
call fcn.140004540
mov rcx, rax
test rax, rax
je 0x140087d16
mov rax, qword [rax]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
add rax, 0x18
mov qword [rbp - 0x58], rax
lea rbx, [0x1400c4360]
mov rdx, rbx
lea rcx, [rbp - 0x58]
call fcn.140003d00
lea rsi, [rdi - 1]
test al, al
jne 0x14008765a
mov rax, rsi
nop dword [rax]
inc rax
cmp word [rbx + rax*2], 0
jne 0x140087640
mov r8d, eax
mov rdx, rbx
lea rcx, [rbp - 0x58]
call fcn.140003f80
nop
mov qword [rbp - 0x28], rdi
mov r8, r13
lea rdx, [rbp - 0x28]
call fcn.1400874d0
nop
mov qword [rbp - 0x40], rdi
mov rcx, qword [rbp - 0x28]
add rcx, 0xffffffffffffffe8
call fcn.140006110
add rax, 0x18
mov qword [rsp + 0x58], rax
lea rdx, [rsp + 0x58]
lea rcx, [rbp - 0x40]
call fcn.140075f90
nop
lea rax, [rsp + 0x48]
mov qword [rsp + 0x50], rax
call fcn.140004540
mov rcx, rax
test rax, rax
je 0x140087d21
mov rax, qword [rax]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
add rax, 0x18
mov qword [rsp + 0x48], rax
lea rbx, str.DriverVersion
mov rdx, rbx
lea rcx, [rsp + 0x48]
call fcn.140003d00
test al, al
jne 0x1400876fb
mov rax, rsi
nop dword [rax]
inc rax
cmp word [rbx + rax*2], 0
jne 0x1400876e0
mov r8d, eax
mov rdx, rbx
lea rcx, [rsp + 0x48]
call fcn.140003f80
nop
mov rcx, qword [rbp - 0x40]
add rcx, 0xffffffffffffffe8
call fcn.140006110
add rax, 0x18
mov qword [rsp + 0x60], rax
lea r9, [rsp + 0x48]
lea r8, [rsp + 0x60]
mov rdx, 0xffffffff80000002
lea rcx, [rbp - 0x80]
call fcn.14006b340
nop
mov rdx, qword [rax]
lea rcx, [rdx - 0x18]
mov rbx, qword [rbp - 0x58]
add rbx, 0xffffffffffffffe8
cmp rcx, rbx
je 0x140087788
cmp dword [rbx + 0x10], 0
jl 0x14008777a
mov rax, qword [rbx]
cmp qword [rcx], rax
jne 0x14008777a
call fcn.140006110
mov rdi, rax
mov eax, esi
lock xadd dword [rbx + 0x10], eax
sub eax, 1
jg 0x14008776e
mov rcx, qword [rbx]
mov rax, qword [rcx]
mov rdx, rbx
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rax, [rdi + 0x18]
mov qword [rbp - 0x58], rax
xor edi, edi
jmp 0x140087788
mov r8d, dword [rdx - 0x10]
lea rcx, [rbp - 0x58]
call fcn.140003f80
nop
mov rdx, qword [rbp - 0x80]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x1400877a5
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov r12, qword [rbp - 0x58]
mov qword [rsp + 0x70], r12
cmp dword [r12 - 0x10], 0
je 0x140087a88
call fcn.140004540
mov rcx, rax
test rax, rax
je 0x140087d2c
mov rax, qword [rax]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
lea rbx, [rax + 0x18]
mov qword [rbp - 0x50], rbx
mov dword [rsp + 0x40], edi
mov r14d, edi
lea r9, [rsp + 0x40]
lea rdx, [rsp + 0x50]
lea rcx, [rbp - 0x58]
call fcn.140087eb0
nop
mov rdx, qword [rax]
lea rcx, [rdx - 0x18]
add rbx, 0xffffffffffffffe8
cmp rcx, rbx
je 0x14008784a
cmp dword [rbx + 0x10], 0
jl 0x14008783c
mov rax, qword [rbx]
cmp qword [rcx], rax
jne 0x14008783c
call fcn.140006110
mov rdi, rax
mov eax, esi
lock xadd dword [rbx + 0x10], eax
sub eax, 1
jg 0x140087832
mov rcx, qword [rbx]
mov rax, qword [rcx]
mov rdx, rbx
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rax, [rdi + 0x18]
mov qword [rbp - 0x50], rax
jmp 0x14008784a
mov r8d, dword [rdx - 0x10]
lea rcx, [rbp - 0x50]
call fcn.140003f80
nop
mov rdx, qword [rsp + 0x50]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x140087870
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop dword [rax + rax]
mov rbx, qword [rbp - 0x50]
movzx eax, word [rbx]
cmp ax, word [0x1400c4360]
je 0x1400879ff
cmp r14d, 4
jge 0x1400879ff
cmp dword [rbx - 8], 1
jle 0x1400878a4
mov edx, dword [rbx - 0x10]
lea rcx, [rbp - 0x50]
call fcn.140003e20
mov rbx, qword [rbp - 0x50]
xor edx, edx
lea r8d, [rdx + 0xa]
mov rcx, rbx
call qword [sym.imp.api_ms_win_crt_convert_l1_1_0.dll_wcstoul]
mov rcx, qword [rbp - 0x48]
shl rcx, 0x10
mov eax, eax
add rcx, rax
mov qword [rbp - 0x48], rcx
inc r14d
mov dword [rsp + 0x44], r14d
movsxd r15, dword [rsp + 0x40]
test r15d, r15d
js 0x140087d0b
mov rdi, qword [rbp - 0x58]
lea r14, [rdi + r15*2]
movsxd rax, dword [r12 - 0x10]
lea r12, [rdi + rax*2]
cmp r14, r12
jae 0x140087940
lea rdx, [0x1400d290c]
mov rcx, r14
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_wcsspn]
mov r13, rax
cdqe
lea rcx, [r14 + rax*2]
cmp rcx, r12
jae 0x140087940
lea rdx, [0x1400d290c]
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_wcscspn]
mov r9d, eax
lea r8d, [r15 + r13]
inc eax
add eax, r8d
mov dword [rsp + 0x40], eax
lea rdx, [rsp + 0x68]
lea rcx, [rbp - 0x58]
call fcn.14000f210
mov rdx, qword [rsp + 0x68]
jmp 0x140087984
mov dword [rsp + 0x40], esi
mov rcx, qword [rdi - 0x18]
test rcx, rcx
je 0x14008795b
mov rax, qword [rcx]
call qword [rax + 0x20]
mov rcx, rax
test rax, rax
jne 0x14008796c
call fcn.140004540
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + 0x20]
mov rcx, rax
test rcx, rcx
je 0x140087d37
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
lea rdx, [rax + 0x18]
mov qword [rsp + 0x68], rdx
lea rdi, [rdx - 0x18]
add rbx, 0xffffffffffffffe8
cmp rdi, rbx
je 0x1400879da
cmp dword [rbx + 0x10], 0
jl 0x1400879cc
mov rax, qword [rbx]
cmp qword [rdi], rax
jne 0x1400879cc
mov rcx, rdi
call fcn.140006110
mov r14, rax
mov eax, esi
lock xadd dword [rbx + 0x10], eax
sub eax, 1
jg 0x1400879c2
mov rcx, qword [rbx]
mov rax, qword [rcx]
mov rdx, rbx
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rax, [r14 + 0x18]
mov qword [rbp - 0x50], rax
jmp 0x1400879da
mov r8d, dword [rdx - 0x10]
lea rcx, [rbp - 0x50]
call fcn.140003f80
nop
mov eax, esi
lock xadd dword [rdi + 0x10], eax
sub eax, 1
mov r14d, dword [rsp + 0x44]
mov r12, qword [rsp + 0x70]
jg 0x140087870
mov rcx, qword [rdi]
mov rdx, rdi
jmp 0x140087862
mov rax, qword [rbp - 0x48]
mov rcx, qword [rbp - 0x78]
mov qword [rcx], rax
mov rdx, qword [rbp - 0x40]
lea rcx, [rdx - 0x18]
mov r15, qword [rbp - 0x70]
mov rdi, qword [r15]
sub rdi, 0x18
cmp rcx, rdi
je 0x140087a6a
cmp dword [rdi + 0x10], 0
jl 0x140087a5d
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x140087a5d
call fcn.140006110
mov rbx, rax
mov eax, esi
lock xadd dword [rdi + 0x10], eax
sub eax, 1
jg 0x140087a50
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rdx, rdi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rax, [rbx + 0x18]
mov qword [r15], rax
mov rbx, qword [rbp - 0x50]
jmp 0x140087a6a
mov r8d, dword [rdx - 0x10]
mov rcx, r15
call fcn.140003f80
nop
lea rdx, [rbx - 0x18]
mov eax, esi
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x140087a83
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov r13, qword [rsp + 0x78]
mov rax, qword [rbp - 0x48]
mov qword [rsp + 0x30], rax
mov rax, qword [rbp - 0x58]
mov qword [rsp + 0x28], rax
mov rax, qword [rbp - 0x40]
mov qword [rsp + 0x20], rax
mov r9, qword [r13 + 0x10]
mov r8d, 0x2eb
lea rdx, str.CRtkBssGen4PresetLoader::GetDriverVersion
lea rcx, str._s__d_EpId_s_AudDevDrvRegPath_s_DrvVer_s_qwDrvVer_llx
call fcn.14004c3d0
nop
mov rdx, qword [rbp - 0x40]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x140087adf
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rbp - 0x28]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x140087afd
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rbp - 0x58]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], esi
sub esi, 1
jg 0x140087b18
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor edi, edi
cmp qword [rbp - 0x48], 0
jbe 0x140087b2f
mov rax, qword [r15]
cmp dword [rax - 0x10], 0
je 0x140087b2f
mov edi, 1
mov eax, edi
mov rcx, qword [rbp + 0x2000]
xor rcx, rsp
call fcn.1400a4020
mov rbx, qword [rsp + 0x2150]
add rsp, 0x2110
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
xor eax, eax
mov qword [rbp - 0x18], rax
mov qword [rbp - 0x20], rdi
mov dword [rbp - 0x18], edi
mov qword [rbp - 0x10], rdi
mov r9d, 0x2001b
lea r8, str.SOFTWARERealtekAudioRtkAudUServiceBssGen4Preset
mov rdx, 0xffffffff80000002
lea rcx, [rbp - 0x20]
call fcn.140021cb0
test eax, eax
jne 0x140087ccc
mov dword [rbp - 0x38], 8
lea rax, [rbp - 0x38]
mov qword [rsp + 0x28], rax
lea rax, [rbp - 0x48]
mov qword [rsp + 0x20], rax
lea r9, [rbp - 0x34]
xor r8d, r8d
lea rdx, str.PropDeviceDrvVerForBtUsbPreset
mov rbx, qword [rbp - 0x20]
mov rcx, rbx
call qword [sym.imp.api_ms_win_core_registry_l1_1_0.dll_RegQueryValueExW]
test eax, eax
jne 0x140087bd4
cmp dword [rbp - 0x34], 0xb
je 0x140087bfa
mov eax, SafeArrayDestroy
mov dword [rsp + 0x20], eax
lea r9, str.PropDeviceDrvVerForBtUsbPreset
mov r8d, 0x2f8
lea rdx, str.CRtkBssGen4PresetLoader::GetDriverVersion
lea rcx, str._s__d_QueryQWORDValue__s__ret_d
call fcn.14004c3d0
jmp 0x140087c01
mov rax, qword [rbp - 0x48]
mov qword [rsi], rax
xor edx, edx
mov r8d, 0x2000
lea rcx, [rbp]
call fcn.1400aa8f0
mov dword [rbp - 0x60], 0x2000
lea rax, [rbp - 0x60]
mov qword [rsp + 0x28], rax
lea rax, [rbp]
mov qword [rsp + 0x20], rax
lea r9, [rbp - 0x30]
xor r8d, r8d
lea rdx, str.PropDeviceDrvRegPathForBtUsbPreset
mov rcx, rbx
call qword [sym.imp.api_ms_win_core_registry_l1_1_0.dll_RegQueryValueExW]
test eax, eax
jne 0x140087c6b
mov eax, dword [rbp - 0x30]
dec eax
cmp eax, 1
ja 0x140087c66
mov eax, dword [rbp - 0x60]
test eax, eax
je 0x140087c91
test al, 1
jne 0x140087c66
shr rax, 1
cmp word [rbp + rax*2 - 2], 0
je 0x140087c95
mov eax, SafeArrayDestroy
mov dword [rsp + 0x20], eax
lea r9, str.PropDeviceDrvRegPathForBtUsbPreset
mov r8d, 0x308
lea rdx, str.CRtkBssGen4PresetLoader::GetDriverVersion
lea rcx, str._s__d_QueryStringValue__s__ret_d
call fcn.14004c3d0
jmp 0x140087cb9
mov word [rbp], di
lea rax, [rbp]
mov rsi, 0xffffffffffffffff
inc rsi
cmp word [rax + rsi*2], 0
jne 0x140087ca0
mov r8d, esi
lea rdx, [rbp]
mov rcx, r15
call fcn.140003f80
test rbx, rbx
je 0x140087cf4
mov rcx, rbx
call qword [sym.imp.api_ms_win_core_registry_l1_1_0.dll_RegCloseKey]
mov rbx, rdi
jmp 0x140087cf4
mov dword [rsp + 0x20], eax
lea r9, str.SOFTWARERealtekAudioRtkAudUServiceBssGen4Preset
mov r8d, 0x313
lea rdx, str.CRtkBssGen4PresetLoader::GetDriverVersion
lea rcx, str._s__d_RegBSSGen4RootStore__s__ret_d
call fcn.14004c3d0
mov rbx, qword [rbp - 0x20]
test rbx, rbx
je 0x140087b1a
mov rcx, rbx
call qword [sym.imp.api_ms_win_core_registry_l1_1_0.dll_RegCloseKey]
jmp 0x140087b1a
mov ecx, 0x80070057
call fcn.140004670
nop
mov ecx, 0x80004005
call fcn.140004670
nop
mov ecx, 0x80004005
call fcn.140004670
int3
mov ecx, 0x80004005
call fcn.140004670
nop
mov ecx, 0x80004005
call fcn.140004670
int3