Function at 0x140021bc0
Capabilities:
Query or enumerate registry value

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r13
push r14
lea rbp, [rsp - 0x2f]
sub rsp, 0x88
mov rax, qword [rcx + 0xd8]
xor r14d, r14d
mov dword [rbp + 0x67], r14d
mov r13, rcx
mov rdi, qword [rax + 0x10]
test rdi, rdi
je 0x140021f60
cmp dword [rdi + 0x3c], r14d
je 0x140021e44
mov rax, qword [rdi]
lea rdx, [rbp + 0x67]
mov rcx, rdi
call qword [rax + 0x40]
test eax, eax
je 0x140021f60
mov ecx, dword [rbp + 0x67]
mov eax, 4
mul rcx
mov rbx, 0xffffffffffffffff
cmovo rax, rbx
mov rcx, rax
call fcn.140153a84
mov rsi, rax
test rax, rax
je 0x140021f60
mov r8d, dword [rbp + 0x67]
xor edx, edx
shl r8, 2
mov rcx, rax
mov qword [rsp + 0x80], r12
call fcn.1402ef020
lea rdx, str.RecDefaultVol_IntMic
mov dword [rbp + 0x6f], r14d
lea rcx, [rbp - 0x19]
call fcn.1400169b0
lea r8, [rbp + 0x6f]
mov rdx, rax
lea rcx, str.SOFTWARERealtekRealtekEffectsDriver
call fcn.140040170
test eax, eax
je 0x140021c9e
mov ecx, r14d
cmp dword [rbp + 0x67], ecx
jbe 0x140021cb1
mov edx, dword [rbp + 0x6f]
nop dword [rax]
mov eax, ecx
inc ecx
mov dword [rsi + rax*4], edx
cmp ecx, dword [rbp + 0x67]
jb 0x140021c90
jmp 0x140021cb1
mov rax, qword [rdi]
mov rdx, rsi
mov r8d, dword [rbp + 0x67]
mov rcx, rdi
call qword [rax + 0x98]
mov qword [rsp + 0x78], r15
call fcn.140155310
mov r9, rsi
lea r8, str.IntMicGain
lea rdx, str.Others
mov rcx, qword [rax + 8]
mov eax, dword [rbp + 0x67]
mov r10, qword [rcx]
lea eax, [rax*4]
mov dword [rsp + 0x20], eax
call qword [r10 + 0x120]
lea rdx, str.RecDefaultVol_ExtMic
lea rcx, [rbp - 0x11]
call fcn.1400169b0
mov r9d, 1
mov qword [rbp - 9], r14
lea r8, str.SOFTWARERealtekRealtekEffectsDriver
mov dword [rbp - 1], r14d
mov rdx, 0xffffffff80000002
mov qword [rbp + 7], r14
lea rcx, [rbp - 9]
mov dword [rbp + 0x77], r14d
mov r12, rax
call fcn.140024490
test eax, eax
je 0x140021d3e
mov rcx, qword [rbp - 9]
test rcx, rcx
je 0x140021dcf
jmp 0x140021dc9
mov r15, qword [rbp - 9]
lea rax, [rbp - 0x25]
mov rdx, qword [r12]
lea r9, [rbp - 0x21]
mov qword [rsp + 0x28], rax
xor r8d, r8d
lea rax, [rbp + 0x77]
mov dword [rbp - 0x25], 4
mov rcx, r15
mov qword [rsp + 0x20], rax
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x140021dc1
cmp dword [rbp - 0x21], 4
jne 0x140021dc1
mov eax, dword [rbp + 0x77]
mov dword [rbp + 0x6f], eax
test r15, r15
je 0x140021d8d
mov rcx, r15
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov rdx, qword [r12]
sub rdx, 0x18
lock xadd dword [rdx + 0x10], ebx
sub ebx, 1
jg 0x140021da8
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov ecx, r14d
cmp dword [rbp + 0x67], ecx
jbe 0x140021dfd
mov edx, dword [rbp + 0x6f]
mov eax, ecx
inc ecx
mov dword [rsi + rax*4], edx
cmp ecx, dword [rbp + 0x67]
jb 0x140021db3
jmp 0x140021dfd
test r15, r15
je 0x140021dcf
mov rcx, r15
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov rdx, qword [r12]
sub rdx, 0x18
lock xadd dword [rdx + 0x10], ebx
sub ebx, 1
jg 0x140021dea
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rax, qword [rdi]
mov rdx, rsi
mov r8d, dword [rbp + 0x67]
mov rcx, rdi
call qword [rax + 0x98]
call fcn.140155310
mov r9, rsi
lea r8, str.ExtMicGain
lea rdx, str.Others
mov rcx, qword [rax + 8]
mov eax, dword [rbp + 0x67]
mov r10, qword [rcx]
lea eax, [rax*4]
mov dword [rsp + 0x20], eax
call qword [r10 + 0x120]
mov rcx, rsi
call fcn.140153a7c
mov r15, qword [rsp + 0x78]
mov r12, qword [rsp + 0x80]
cmp dword [rdi + 0x4c], r14d
je 0x140021ead
xorps xmm0, xmm0
lea rdx, [rbp + 0x7f]
mov rcx, rdi
movss dword [rbp + 0x7f], xmm0
call fcn.1400eff20
test eax, eax
je 0x140021ead
cvttss2si ebx, dword [rbp + 0x7f]
call fcn.140155310
mov r9d, ebx
lea r8, str.IntMicBoost
lea rdx, str.Others
mov rcx, qword [rax + 8]
mov rax, qword [rcx]
call qword [rax + 0x100]
call fcn.140155310
mov r9d, ebx
lea r8, str.ExtMicBoost
lea rdx, str.Others
mov rcx, qword [rax + 8]
mov rax, qword [rcx]
call qword [rax + 0x100]
cmp dword [rdi + 0x34], r14d
je 0x140021f17
mov rax, qword [rdi]
lea rdx, [rbp - 0x29]
mov rcx, rdi
mov dword [rbp - 0x29], r14d
call qword [rax + 0x28]
test eax, eax
je 0x140021f17
mov ebx, r14d
cmp dword [rbp - 0x29], ebx
setne bl
call fcn.140155310
mov r9d, ebx
lea r8, str.IntMicMute
lea rdx, str.Others
mov rcx, qword [rax + 8]
mov rax, qword [rcx]
call qword [rax + 0x100]
call fcn.140155310
mov r9d, ebx
lea r8, str.ExtMicMute
lea rdx, str.Others
mov rcx, qword [rax + 8]
mov rax, qword [rcx]
call qword [rax + 0x100]
mov rcx, r13
call fcn.140021ab0
mov ebx, eax
call fcn.140155310
test ebx, ebx
lea r8, str.IsExtMicPlugged
lea rdx, str.Others
setne r14b
mov rcx, qword [rax + 8]
mov r9d, r14d
mov r10, qword [rcx]
call qword [r10 + 0x100]
mov eax, 1
add rsp, 0x88
pop r14
pop r13
pop rdi
pop rsi
pop rbx
pop rbp
ret
xor eax, eax
add rsp, 0x88
pop r14
pop r13
pop rdi
pop rsi
pop rbx
pop rbp
ret