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

Disassembly:
push rsi
push r12
sub rsp, 0x58
test rdx, rdx
mov rsi, rdx
mov r12, rcx
jne 0x140015d5d
xor eax, eax
add rsp, 0x58
pop r12
pop rsi
ret
test rcx, rcx
je 0x140015d53
mov qword [rsp + 0x70], rbx
mov qword [rsp + 0x50], rbp
lea rax, [rsp + 0x30]
lea rdx, str.SoftwareRealtekSBCoexist
xor ebp, ebp
mov r9d, 0x2001f
xor r8d, r8d
mov rcx, 0xffffffff80000002
mov qword [rsp + 0x48], rdi
mov qword [rsp + 0x30], rbp
mov qword [rsp + 0x20], rax
mov qword [rsp + 0x40], r13
call qword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x140016119
mov rbx, qword [rsp + 0x30]
lea rax, [rsp + 0x80]
lea r9, [rsp + 0x88]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x78]
lea rdx, str.ExclusiveEnable
xor r8d, r8d
mov rcx, rbx
mov dword [rsp + 0x78], ebp
mov qword [rsp + 0x20], rax
mov dword [rsp + 0x80], 4
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x14001610b
cmp dword [rsp + 0x88], 4
jne 0x14001610b
cmp dword [rsp + 0x78], ebp
je 0x14001610b
lea r13, str._1_v_
mov edi, ebp
mov r9, r13
nop
mov rdx, qword [r9]
test rdx, rdx
je 0x140015e4f
mov r8, qword [rdx]
cmp r8, qword [rsi]
jne 0x140015e3e
mov r8, qword [rdx + 8]
cmp r8, qword [rsi + 8]
jne 0x140015e3e
mov eax, ebp
jmp 0x140015e43
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x140015e4f
mov eax, dword [rsi + 0x10]
cmp dword [rdx + 0x10], eax
je 0x140015e60
add edi, 1
add r9, 0x18
cmp edi, 0x23
jb 0x140015e20
jmp 0x14001610b
lea rax, [0x1400b32c0]
mov rdx, qword [rax]
cmp rdx, qword [rsi]
jne 0x140015e79
mov rdx, qword [rax + 8]
cmp rdx, qword [rsi + 8]
je 0x140015e80
sbb eax, eax
sbb eax, 0xffffffff
mov ebp, eax
test ebp, ebp
jne 0x14001607f
cmp dword [rsi + 0x10], ebp
jne 0x14001607f
mov eax, dword [r12 + 0x16c]
bt eax, 8
jae 0x14001607f
bt eax, 0x1f
jb 0x140016047
bt eax, 0x19
jb 0x140016047
bt eax, 9
jb 0x140016047
mov eax, dword [r12 + 0x170]
bt eax, 0x19
jae 0x140015f08
lea rsi, str.SRS_PC_Sound
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_lstrlenW]
lea r9d, [rbp + 1]
lea rdx, str.TechnologyName
lea eax, [rax + rax + 2]
xor r8d, r8d
mov rcx, rbx
mov dword [rsp + 0x28], eax
mov qword [rsp + 0x20], rsi
call qword [sym.imp.ADVAPI32.dll_RegSetValueExW]
jmp 0x1400160ca
bt eax, 0x1c
jae 0x140015f49
lea rsi, str.SRS_Wide_3D_Sound
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_lstrlenW]
lea rdx, str.TechnologyName
mov r9d, 1
lea eax, [rax + rax + 2]
xor r8d, r8d
mov rcx, rbx
mov dword [rsp + 0x28], eax
mov qword [rsp + 0x20], rsi
call qword [sym.imp.ADVAPI32.dll_RegSetValueExW]
jmp 0x1400160ca
bt eax, 0x1e
jae 0x140015f8a
lea rsi, str.SRS_Premium_Sound_HD
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_lstrlenW]
lea rdx, str.TechnologyName
mov r9d, 1
lea eax, [rax + rax + 2]
xor r8d, r8d
mov rcx, rbx
mov dword [rsp + 0x28], eax
mov qword [rsp + 0x20], rsi
call qword [sym.imp.ADVAPI32.dll_RegSetValueExW]
jmp 0x1400160ca
bt eax, 0x1f
jae 0x140015fcb
lea rsi, str.SRS_Premium_Voice_Pro
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_lstrlenW]
lea rdx, str.TechnologyName
mov r9d, 1
lea eax, [rax + rax + 2]
xor r8d, r8d
mov rcx, rbx
mov dword [rsp + 0x28], eax
mov qword [rsp + 0x20], rsi
call qword [sym.imp.ADVAPI32.dll_RegSetValueExW]
jmp 0x1400160ca
bt eax, 0x11
jae 0x14001600c
lea rsi, str.SRS_Premium_Voice
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_lstrlenW]
lea rdx, str.TechnologyName
mov r9d, 1
lea eax, [rax + rax + 2]
xor r8d, r8d
mov rcx, rbx
mov dword [rsp + 0x28], eax
mov qword [rsp + 0x20], rsi
call qword [sym.imp.ADVAPI32.dll_RegSetValueExW]
jmp 0x1400160ca
lea rsi, str.SRS_Premium_Sound
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_lstrlenW]
lea rdx, str.TechnologyName
mov r9d, 1
lea eax, [rax + rax + 2]
xor r8d, r8d
mov rcx, rbx
mov dword [rsp + 0x28], eax
mov qword [rsp + 0x20], rsi
call qword [sym.imp.ADVAPI32.dll_RegSetValueExW]
jmp 0x1400160ca
lea rsi, [0x1400b4418]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_lstrlenW]
lea rdx, str.TechnologyName
mov r9d, 1
lea eax, [rax + rax + 2]
xor r8d, r8d
mov rcx, rbx
mov dword [rsp + 0x28], eax
mov qword [rsp + 0x20], rsi
call qword [sym.imp.ADVAPI32.dll_RegSetValueExW]
jmp 0x1400160ca
movsxd rax, edi
lea rcx, [rax + rax*2]
mov rsi, qword [r13 + rcx*8 + 0x10]
test rsi, rsi
jne 0x14001609b
mov ecx, 0x80004005
call fcn.140012170
int3
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_lstrlenW]
lea rdx, str.TechnologyName
mov r9d, 1
lea eax, [rax + rax + 2]
xor r8d, r8d
mov rcx, rbx
mov dword [rsp + 0x28], eax
mov qword [rsp + 0x20], rsi
call qword [sym.imp.ADVAPI32.dll_RegSetValueExW]
movsxd rax, edi
lea rdx, str.Technology
mov r9d, 4
lea rcx, [rax + rax*2]
xor r8d, r8d
mov dword [rsp + 0x28], 4
mov eax, dword [r13 + rcx*8 + 8]
mov rcx, rbx
mov dword [rsp + 0x80], eax
lea rax, [rsp + 0x80]
mov qword [rsp + 0x20], rax
call qword [sym.imp.ADVAPI32.dll_RegSetValueExW]
test rbx, rbx
je 0x140016119
mov rcx, rbx
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov rdi, qword [rsp + 0x48]
mov rbp, qword [rsp + 0x50]
mov rbx, qword [rsp + 0x70]
mov r13, qword [rsp + 0x40]
mov eax, 1
add rsp, 0x58
pop r12
pop rsi
ret