Function at 0x140015c80
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 0x140015c9d
xor eax, eax
add rsp, 0x58
pop r12
pop rsi
ret
test rcx, rcx
je 0x140015c93
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 0x140016059
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 0x14001604b
cmp dword [rsp + 0x88], 4
jne 0x14001604b
cmp dword [rsp + 0x78], ebp
je 0x14001604b
lea r13, [0x1400e5f50]
mov edi, ebp
mov r9, r13
nop
mov rdx, qword [r9]
test rdx, rdx
je 0x140015d8f
mov r8, qword [rdx]
cmp r8, qword [rsi]
jne 0x140015d7e
mov r8, qword [rdx + 8]
cmp r8, qword [rsi + 8]
jne 0x140015d7e
mov eax, ebp
jmp 0x140015d83
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x140015d8f
mov eax, dword [rsi + 0x10]
cmp dword [rdx + 0x10], eax
je 0x140015da0
add edi, 1
add r9, 0x18
cmp edi, 0x23
jb 0x140015d60
jmp 0x14001604b
lea rax, [0x1400b6290]
mov rdx, qword [rax]
cmp rdx, qword [rsi]
jne 0x140015db9
mov rdx, qword [rax + 8]
cmp rdx, qword [rsi + 8]
je 0x140015dc0
sbb eax, eax
sbb eax, 0xffffffff
mov ebp, eax
test ebp, ebp
jne 0x140015fbf
cmp dword [rsi + 0x10], ebp
jne 0x140015fbf
mov eax, dword [r12 + 0x16c]
bt eax, 8
jae 0x140015fbf
bt eax, 0x1f
jb 0x140015f87
bt eax, 0x19
jb 0x140015f87
bt eax, 9
jb 0x140015f87
mov eax, dword [r12 + 0x170]
bt eax, 0x19
jae 0x140015e48
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 0x14001600a
bt eax, 0x1c
jae 0x140015e89
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 0x14001600a
bt eax, 0x1e
jae 0x140015eca
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 0x14001600a
bt eax, 0x1f
jae 0x140015f0b
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 0x14001600a
bt eax, 0x11
jae 0x140015f4c
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 0x14001600a
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 0x14001600a
lea rsi, [0x1400b73f8]
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 0x14001600a
movsxd rax, edi
lea rcx, [rax + rax*2]
mov rsi, qword [r13 + rcx*8 + 0x10]
test rsi, rsi
jne 0x140015fdb
mov ecx, 0x80004005
call fcn.1400120d0
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 0x140016059
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