Function at 0x1400151c0
Capabilities:
Query or enumerate registry value
Set registry value

Disassembly:
push rbp
push rdi
sub rsp, 0x68
mov rdi, rdx
mov rbp, rcx
test rdx, rdx
je 0x1400154bf
test rcx, rcx
je 0x1400154bf
mov qword [rsp + 0x60], rbx
lea r8, str.SoftwareRealtekSBCoexist
xor ebx, ebx
mov qword [rsp + 0x58], rsi
mov r9d, 0x2001f
mov qword [rsp + 0x30], rbx
mov rdx, 0xffffffff80000002
mov dword [rsp + 0x38], ebx
lea rcx, [rsp + 0x30]
mov qword [rsp + 0x40], rbx
call fcn.14000e2b0
mov rsi, qword [rsp + 0x30]
test eax, eax
jne 0x14001549b
lea rax, [rsp + 0x90]
mov dword [rsp + 0x88], ebx
mov qword [rsp + 0x28], rax
lea r9, [rsp + 0x98]
lea rax, [rsp + 0x88]
mov dword [rsp + 0x90], 4
xor r8d, r8d
mov qword [rsp + 0x20], rax
lea rdx, str.ExclusiveEnable
mov rcx, rsi
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x14001549b
cmp dword [rsp + 0x98], 4
jne 0x14001549b
cmp dword [rsp + 0x88], ebx
je 0x14001549b
mov qword [rsp + 0x50], r14
lea r14, [0x1402dc0b0]
mov rdx, r14
nop dword [rax]
mov rcx, qword [rdx]
test rcx, rcx
je 0x1400152c4
mov rax, qword [rcx]
cmp rax, qword [rdi]
jne 0x1400152c4
mov rax, qword [rcx + 8]
cmp rax, qword [rdi + 8]
jne 0x1400152c4
mov r8d, dword [rdi + 0x10]
cmp dword [rcx + 0x10], r8d
je 0x1400152d4
inc ebx
add rdx, 0x18
cmp ebx, 0x23
jb 0x1400152a0
jmp 0x140015496
mov rax, qword [0x140281b18]
cmp rax, qword [rdi]
jne 0x14001540b
mov rax, qword [0x140281b20]
cmp rax, qword [rdi + 8]
jne 0x14001540b
test r8d, r8d
jne 0x14001540b
mov eax, dword [rbp + 0x174]
bt eax, 8
jae 0x14001540b
test eax, eax
js 0x1400153d9
test eax, 0x2000200
jne 0x1400153d9
mov eax, dword [rbp + 0x178]
bt eax, 0x19
jae 0x140015341
mov dword [rsp + 0x28], reloc.OLEAUT32.dll_SafeArrayCopy
lea rax, str.SRS_PC_Sound
jmp 0x1400153e8
bt eax, 0x1c
jae 0x14001535b
mov dword [rsp + 0x28], 0x24
lea rax, str.SRS_Wide_3D_Sound
jmp 0x1400153e8
bt eax, 0x1e
jae 0x140015372
mov dword [rsp + 0x28], 0x2a
lea rax, str.SRS_Premium_Sound_HD
jmp 0x1400153e8
test eax, eax
jns 0x140015387
mov dword [rsp + 0x28], 0x2c
lea rax, str.SRS_Premium_Voice_Pro
jmp 0x1400153e8
xor r8d, r8d
mov dword [rsp + 0x28], 0x24
lea rdx, str.TechnologyName
mov r9d, 1
mov rcx, rsi
bt eax, 0x11
jae 0x1400153c2
lea rax, str.SRS_Premium_Voice
mov qword [rsp + 0x20], rax
call qword [sym.imp.ADVAPI32.dll_RegSetValueExW]
movsxd rbx, ebx
jmp 0x140015458
lea rax, str.SRS_Premium_Sound
mov qword [rsp + 0x20], rax
call qword [sym.imp.ADVAPI32.dll_RegSetValueExW]
movsxd rbx, ebx
jmp 0x140015458
mov dword [rsp + 0x28], 8
lea rax, [0x140282b40]
mov r9d, 1
mov qword [rsp + 0x20], rax
xor r8d, r8d
lea rdx, str.TechnologyName
mov rcx, rsi
call qword [sym.imp.ADVAPI32.dll_RegSetValueExW]
movsxd rbx, ebx
jmp 0x140015458
movsxd rbx, ebx
lea rax, [rbx + rbx*2]
mov rcx, qword [r14 + rax*8 + 0x10]
test rcx, rcx
je 0x140015458
mov rax, 0xffffffffffffffff
cmp word [rcx + rax*2 + 2], 0
lea rax, [rax + 1]
jne 0x140015423
lea eax, [rax*2 + 2]
mov r9d, 1
mov dword [rsp + 0x28], eax
lea rdx, str.TechnologyName
mov qword [rsp + 0x20], rcx
xor r8d, r8d
mov rcx, rsi
call qword [sym.imp.ADVAPI32.dll_RegSetValueExW]
lea rax, [rbx + rbx*2]
mov dword [rsp + 0x28], 4
mov eax, dword [r14 + rax*8 + 8]
lea rdx, str.Technology
mov dword [rsp + 0x90], eax
mov r9d, 4
lea rax, [rsp + 0x90]
xor r8d, r8d
mov rcx, rsi
mov qword [rsp + 0x20], rax
call qword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov r14, qword [rsp + 0x50]
mov rbx, qword [rsp + 0x60]
test rsi, rsi
je 0x1400154ae
mov rcx, rsi
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov rsi, qword [rsp + 0x58]
mov eax, 1
add rsp, 0x68
pop rdi
pop rbp
ret
xor eax, eax
add rsp, 0x68
pop rdi
pop rbp
ret