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

Disassembly:
mov rax, rsp
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0xe0
mov qword [rsp + 0x68], 0xfffffffffffffffe
mov qword [rax + 0x18], rbx
mov rax, qword [section..data]
xor rax, rsp
mov qword [rsp + 0xd0], rax
mov rsi, rdx
mov r15, rcx
mov ebx, 0x9f
mov eax, 2
mul rbx
mov rcx, 0xffffffffffffffff
cmovo rax, rcx
mov rcx, rax
call fcn.1400025a0
mov qword [rsi + 0x48], rax
xor r13d, r13d
cmp rax, r13
je 0x140021d47
lea rcx, [rsi + 0xac]
mov r12d, reloc.OLEAUT32.dll_SafeArrayAllocDescriptorEx
mov r8d, r12d
lea rdx, [rsp + 0x80]
call qword [sym.imp.ole32.dll_StringFromGUID2]
cmp eax, r13d
jle 0x140021d64
lea rax, [rsp + 0x80]
mov qword [rsp + 0x20], rax
lea r9, str.SoftwareMicrosoftWindowsCurrentVersionMedia_CenterServiceVideoTuners
lea r8, str._s_s_
mov rdx, rbx
mov rcx, qword [rsi + 0x48]
call fcn.14000f360
mov ebx, eax
cmp eax, r13d
jl 0x140021d7f
mov qword [rsp + 0x50], r13
mov qword [rsp + 0x58], r13
mov qword [rsp + 0x60], r13
mov qword [rsp + 0x38], r13
mov qword [rsp + 0x30], r13
mov dword [rsp + 0x28], 0x2001f
mov dword [rsp + 0x20], r13d
xor r9d, r9d
mov r8, qword [rsi + 0x48]
mov rdx, 0xffffffff80000002
lea rcx, [rsp + 0x50]
call fcn.1400039c8
mov rbx, qword [rsp + 0x50]
cmp eax, r13d
jne 0x140012be9
mov r8, rbx
mov rdx, rsi
mov rcx, r15
call fcn.140012d40
mov edi, 1
mov ebp, 0x80070000
cmp qword [rsi + 0x30], r13
je 0x140021d9a
cmp eax, r13d
jne 0x140021d9a
lea rcx, [rsi + 0x9c]
mov r8d, r12d
lea rdx, [rsp + 0x80]
call qword [sym.imp.ole32.dll_StringFromGUID2]
test byte [rsi + 0x19c], dil
jne 0x140012c80
mov dword [rsp + 0x48], r13d
mov dword [rsp + 0x40], 4
lea rax, [rsp + 0x40]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x48]
mov qword [rsp + 0x20], rax
lea r9, [rsp + 0x4c]
xor r8d, r8d
lea rdx, str.Disabled
mov rcx, qword [rsi + 0x30]
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov r11d, r13d
cmp dword [rsp + 0x48], r13d
setne r11b
xor r11d, dword [rsi + 0x19c]
and r11d, edi
xor dword [rsi + 0x19c], r11d
jmp 0x140012c80
mov eax, dword [rsi + 0x98]
mov dword [rsp + 0x40], eax
mov ecx, 4
mov dword [rsp + 0x28], ecx
lea rax, [rsp + 0x40]
mov qword [rsp + 0x20], rax
mov r9d, ecx
xor r8d, r8d
lea rdx, str.DevInstance
mov rcx, qword [rsi + 0x30]
call qword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov r12d, eax
cmp eax, r13d
jne 0x1400221ad
lea r8, [rsp + 0x80]
mov r12d, 0x9f
mov rdx, r12
mov rcx, qword [rsi + 0x48]
call fcn.1400119d0
mov ebp, eax
cmp eax, r13d
jl 0x1400221e0
lea r8, [0x140058994]
mov rdx, r12
mov rcx, qword [rsi + 0x48]
call fcn.1400119d0
mov edi, eax
cmp rbx, r13
je 0x140012d08
mov rcx, rbx
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, edi
mov rcx, qword [rsp + 0xd0]
xor rcx, rsp
call fcn.140001170
mov rbx, qword [rsp + 0x130]
add rsp, 0xe0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
mov r8d, ebx
lea rdx, str.CRecorderMgr::CreateDeviceRegEntry:_new_WCHAR_dwSize__returned_NULL.
lea ecx, [r13 + 1]
call fcn.140001110
mov eax, 0x8007000e
jmp 0x140012d0a
lea rdx, str.CRecorderMgr::CreateDeviceRegEntry:_Failed_to_call_StringFromGUID2
lea ecx, [r12 - 0x27]
call fcn.140001110
mov eax, 0x80004005
jmp 0x140012d0a
mov r8d, eax
lea rdx, str.CRecorderMgr::CreateDeviceRegEntry:_Failed_to_call_StringCchPrintf__0x_x.
mov ecx, 1
call fcn.140001110
mov eax, ebx
jmp 0x140012d0a
lea rcx, [rsp + 0x70]
call qword [sym.imp.ole32.dll_CoCreateGuid]
mov r12d, eax
cmp eax, r13d
jge 0x140021dd5
mov r8d, eax
lea rdx, str.CRecorderMgr::CreateDeviceRegEntry:_Failed_to_call_CoCreateGuid__0x_x.
mov ecx, edi
call fcn.140001110
nop
cmp rbx, r13
je 0x140021dcd
mov rcx, rbx
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, r12d
jmp 0x140012d0a
lea rcx, [rsi + 0x9c]
movdqu xmm0, xmmword [rsp + 0x70]
movdqu xmmword [rcx], xmm0
mov r8d, reloc.OLEAUT32.dll_SafeArrayAllocDescriptorEx
lea rdx, [rsp + 0x80]
call qword [sym.imp.ole32.dll_StringFromGUID2]
lea r11, [rsp + 0x4c]
mov qword [rsp + 0x38], r11
mov qword [rsp + 0x30], r13
mov dword [rsp + 0x28], 0x2001f
mov dword [rsp + 0x20], r13d
xor r9d, r9d
lea r8, [rsp + 0x80]
mov rdx, rbx
lea rcx, [rsi + 0x30]
call fcn.1400039c8
cmp eax, r13d
jne 0x140012c80
lea r13, [0x140058990]
mov r12, r13
cmp qword [rsi + 0x78], 0
cmovne r12, qword [rsi + 0x78]
xor eax, eax
test r12, r12
setne al
test eax, eax
jne 0x140021e61
mov ecx, 0x80004005
call fcn.140029690
int3
mov rcx, r12
call qword [sym.imp.KERNEL32.dll_lstrlenW]
lea eax, [rax + rax + 2]
mov dword [rsp + 0x28], eax
mov qword [rsp + 0x20], r12
mov r9d, edi
xor r8d, r8d
lea rdx, str.DevPath
mov rcx, qword [rsi + 0x30]
call qword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov r12d, eax
test eax, eax
je 0x140021ec8
mov r8d, eax
lea rdx, str.CRecorderMgr::CreateDeviceRegEntry:_Failed_to_call_hKeyConfig.SetValue__0x_x.
mov ecx, edi
call fcn.140001110
movzx edi, r12w
or edi, ebp
test r12d, r12d
cmovle edi, r12d
test rbx, rbx
je 0x140021ec1
mov rcx, rbx
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, edi
jmp 0x140012d0a
mov rax, qword [rsi + 0x80]
mov r12, r13
test rax, rax
cmovne r12, rax
xor eax, eax
test r12, r12
setne al
test eax, eax
jne 0x140021ef0
mov ecx, 0x80004005
call fcn.140029690
int3
mov rcx, r12
call qword [sym.imp.KERNEL32.dll_lstrlenW]
lea eax, [rax + rax + 2]
mov dword [rsp + 0x28], eax
mov qword [rsp + 0x20], r12
mov r9d, edi
xor r8d, r8d
lea rdx, str.DevName
mov rcx, qword [rsi + 0x30]
call qword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov r12d, eax
test eax, eax
je 0x140021f57
mov r8d, eax
lea rdx, str.CRecorderMgr::CreateDeviceRegEntry:_Failed_to_call_hKeyConfig.SetValue__0x_x.
mov ecx, edi
call fcn.140001110
movzx edi, r12w
or edi, ebp
test r12d, r12d
cmovle edi, r12d
test rbx, rbx
je 0x140021f50
mov rcx, rbx
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, edi
jmp 0x140012d0a
cmp dword [r15 + 0xe8], 0
jne 0x140021fd6
mov eax, dword [rsi + 0x19c]
and al, dil
neg al
sbb eax, eax
mov dword [rsp + 0x40], eax
mov ecx, 4
mov dword [rsp + 0x28], ecx
lea rax, [rsp + 0x40]
mov qword [rsp + 0x20], rax
mov r9d, ecx
xor r8d, r8d
lea rdx, str.Disabled
mov rcx, qword [rsi + 0x30]
call qword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov r12d, eax
test eax, eax
je 0x140021fd6
mov r8d, eax
lea rdx, str.CRecorderMgr::CreateDeviceRegEntry:_Failed_to_call_hKeyConfig.SetValue__0x_x.
mov ecx, edi
call fcn.140001110
movzx edi, r12w
or edi, ebp
test r12d, r12d
cmovle edi, r12d
test rbx, rbx
je 0x140021fcf
mov rcx, rbx
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, edi
jmp 0x140012d0a
mov rax, qword [rsi + 0xd0]
test rax, rax
cmovne r13, rax
xor eax, eax
test r13, r13
setne al
test eax, eax
jne 0x140021ffb
mov ecx, 0x80004005
call fcn.140029690
int3
mov rcx, r13
call qword [sym.imp.KERNEL32.dll_lstrlenW]
lea eax, [rax + rax + 2]
mov dword [rsp + 0x28], eax
mov qword [rsp + 0x20], r13
mov r9d, edi
xor r8d, r8d
lea rdx, str.SerialNumber
mov rcx, qword [rsi + 0x30]
call qword [sym.imp.ADVAPI32.dll_RegSetValueExW]
movzx r12d, ax
or r12d, ebp
xor r13d, r13d
cmp eax, r13d
cmovle r12d, eax
cmp r12d, r13d
je 0x140022071
mov r8d, r12d
lea rdx, str.CRecorderMgr::CreateDeviceRegEntry:_Failed_to_call_hKeyConfig.SetValue__0x_x.
mov ecx, edi
call fcn.140001110
movzx edi, r12w
or edi, ebp
cmp r12d, r13d
cmovle edi, r12d
cmp rbx, r13
je 0x14002206a
mov rcx, rbx
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, edi
jmp 0x140012d0a
mov r12, qword [rsi + 0x88]
cmp r12, r13
je 0x14002210d
mov eax, r13d
cmp r12, r13
setne al
cmp eax, r13d
jne 0x14002209a
mov ecx, 0x80004005
call fcn.140029690
int3
mov rcx, r12
call qword [sym.imp.KERNEL32.dll_lstrlenW]
lea eax, [rax + rax + 2]
mov dword [rsp + 0x28], eax
mov qword [rsp + 0x20], r12
mov r9d, edi
xor r8d, r8d
lea rdx, str.RootDevice
mov rcx, qword [rsi + 0x30]
call qword [sym.imp.ADVAPI32.dll_RegSetValueExW]
movzx r12d, ax
or r12d, ebp
cmp eax, r13d
cmovle r12d, eax
cmp r12d, r13d
je 0x14002210d
mov r8d, r12d
lea rdx, str.CRecorderMgr::CreateDeviceRegEntry:_Failed_to_call_hKeyConfig.SetValue__0x_x.
mov ecx, edi
call fcn.140001110
movzx edi, r12w
or edi, ebp
cmp r12d, r13d
cmovle edi, r12d
cmp rbx, r13
je 0x140022106
mov rcx, rbx
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, edi
jmp 0x140012d0a
mov r12, qword [rsi + 0x90]
cmp r12, r13
je 0x140012c80
mov eax, r13d
cmp r12, r13
setne al
cmp eax, r13d
jne 0x140022136
mov ecx, 0x80004005
call fcn.140029690
int3
mov rcx, r12
call qword [sym.imp.KERNEL32.dll_lstrlenW]
lea eax, [rax + rax + 2]
mov dword [rsp + 0x28], eax
mov qword [rsp + 0x20], r12
mov r9d, edi
xor r8d, r8d
lea rdx, str.TunerInstanceId
mov rcx, qword [rsi + 0x30]
call qword [sym.imp.ADVAPI32.dll_RegSetValueExW]
movzx r12d, ax
or r12d, ebp
cmp eax, r13d
cmovle r12d, eax
cmp r12d, r13d
je 0x140012c80
mov r8d, r12d
lea rdx, str.CRecorderMgr::CreateDeviceRegEntry:_Failed_to_call_hKeyConfig.SetValue__0x_x.
mov ecx, edi
call fcn.140001110
movzx edi, r12w
or edi, ebp
cmp r12d, r13d
cmovle edi, r12d
cmp rbx, r13
je 0x1400221a6
mov rcx, rbx
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, edi
jmp 0x140012d0a
mov r8d, eax
lea rdx, str.CRecorderMgr::CreateDeviceRegEntry:_Failed_to_call_hKeyConfig.SetValue__0x_x.
mov ecx, edi
call fcn.140001110
movzx edi, r12w
or edi, ebp
cmp r12d, r13d
cmovle edi, r12d
cmp rbx, r13
je 0x1400221d9
mov rcx, rbx
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, edi
jmp 0x140012d0a
mov r8d, eax
lea rdx, str.CRecorderMgr::CreateDeviceRegEntry:_Failed_to_call_StringCchCat__0x_x.
mov ecx, edi
call fcn.140001110
nop
cmp rbx, r13
je 0x140022200
mov rcx, rbx
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, ebp
jmp 0x140012d0a