Function at 0x140040a40
Capabilities:
Enumerate devices by category

Disassembly:
mov rax, rsp
mov qword [rax + 0x18], r8
mov qword [rax + 0x10], rdx
mov qword [rax + 8], rcx
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0xb8
mov qword [rsp + 0xa0], 0xfffffffffffffffe
mov r13, rdx
mov r14, rcx
xor r15d, r15d
mov dword [rax + 0x20], r15d
lea rcx, [0x140000000]
mov r10, qword [rdx]
lea r8d, [r15 + 8]
cmp r10, qword [rcx + 0x5a060]
jne 0x140040aa4
mov r10, qword [rdx + r8]
cmp r10, qword [rcx + r8 + 0x5a060]
jne 0x140040aa4
xor eax, eax
jmp 0x140040aa9
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x140040abe
lea rdx, str.CRecorderMgr::RecorderAddedInternal___KSCATEGORY_BDA_NETWORK_TUNER
mov ecx, r8d
call fcn.140001110
jmp 0x140040b05
lea rcx, [rcx + 0x594e8]
mov rdx, qword [rdx]
cmp rdx, qword [rcx]
jne 0x140040adc
mov rdx, qword [r13 + r8]
cmp rdx, qword [rcx + r8]
jne 0x140040adc
xor eax, eax
jmp 0x140040ae1
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x140040af6
lea rdx, str.CRecorderMgr::RecorderAddedInternal___KSCATEGORY_TVTUNER
mov ecx, r8d
call fcn.140001110
jmp 0x140040b05
lea rdx, str.CRecorderMgr::RecorderAddedInternal___unknown_category
mov ecx, r8d
call fcn.140001110
and qword [rsp + 0x58], r15
lea rax, [rsp + 0x58]
mov qword [rsp + 0x20], rax
lea r9, [0x14005aad0]
xor edx, edx
lea r8d, [rdx + 0x17]
lea rcx, [0x14005a1c8]
call qword [sym.imp.ole32.dll_CoCreateInstance]
mov ebx, eax
test eax, eax
jns 0x140040b60
mov r8d, eax
lea rdx, str.CRecorderMgr::RecorderAddedInternal:_Failed_to_call_pDevEnum.CoCreateInstance__0x_x
mov ecx, 1
call fcn.140001110
nop
mov rcx, qword [rsp + 0x58]
test rcx, rcx
je 0x140040b59
mov rdx, qword [rcx]
call qword [rdx + 0x10]
mov eax, ebx
jmp 0x1400415b9
and qword [rsp + 0x78], 0
mov rcx, qword [rsp + 0x58]
mov rax, qword [rcx]
xor r9d, r9d
lea r8, [rsp + 0x78]
mov rdx, r13
call qword [rax + 0x18]
mov ebx, eax
test eax, eax
je 0x140040bbf
mov r8d, eax
lea rdx, str.CRecorderMgr::RecorderAddedInternal:_pDevEnum__CreateClassEnumerator_failed_0x_x
mov ecx, 1
call fcn.140001110
nop
mov rcx, qword [rsp + 0x78]
test rcx, rcx
je 0x140040ba8
mov rdx, qword [rcx]
call qword [rdx + 0x10]
nop
mov rcx, qword [rsp + 0x58]
test rcx, rcx
je 0x140040bb8
mov rax, qword [rcx]
call qword [rax + 0x10]
mov eax, ebx
jmp 0x1400415b9
and qword [rsp + 0x40], 0
and dword [rsp + 0x50], 0
mov rcx, qword [rsp + 0x78]
mov rax, qword [rcx]
lea r9, [rsp + 0x50]
lea r8, [rsp + 0x40]
mov edx, 1
call qword [rax + 0x18]
mov ebx, eax
test eax, eax
js 0x140041585
mov rdi, qword [rsp + 0x98]
mov rbp, qword [rsp + 0x90]
mov rsi, qword [rsp + 0x80]
mov r12, qword [rsp + 0x88]
cmp dword [rsp + 0x50], 1
jne 0x140041573
and qword [rsp + 0x48], 0
mov rcx, qword [rsp + 0x40]
mov rax, qword [rcx]
lea rdx, [rsp + 0x48]
mov qword [rsp + 0x20], rdx
lea r9, [0x1400594f8]
xor r8d, r8d
xor edx, edx
call qword [rax + 0x48]
test eax, eax
jns 0x140040c6e
mov rcx, qword [rsp + 0x48]
test rcx, rcx
je 0x140040c55
mov rax, qword [rcx]
call qword [rax + 0x10]
nop
mov rcx, qword [rsp + 0x40]
test rcx, rcx
je 0x1400414c6
mov rax, qword [rcx]
call qword [rax + 0x10]
jmp 0x1400414c6
lea rcx, [rsp + 0x60]
call qword [sym.imp.OLEAUT32.dll_VariantClear]
nop
mov rcx, qword [rsp + 0x48]
mov rax, qword [rcx]
xor r9d, r9d
lea r8, [rsp + 0x60]
lea rdx, str.DevicePath
call qword [rax + 0x18]
test eax, eax
jns 0x140040cec
mov rcx, qword [rsp + 0x48]
mov rax, qword [rcx]
xor r9d, r9d
lea r8, [rsp + 0x60]
lea rdx, str.FriendlyName
call qword [rax + 0x18]
test eax, eax
jns 0x140040cec
lea rcx, [rsp + 0x60]
call qword [sym.imp.OLEAUT32.dll_VariantCopy]
nop
mov rcx, qword [rsp + 0x48]
test rcx, rcx
je 0x140040cd3
mov rax, qword [rcx]
call qword [rax + 0x10]
nop
mov rcx, qword [rsp + 0x40]
test rcx, rcx
je 0x1400414c6
mov rax, qword [rcx]
call qword [rax + 0x10]
jmp 0x1400414c6
mov rbx, qword [rsp + 0x110]
test rbx, rbx
je 0x140040d5a
mov rdx, qword [rsp + 0x68]
mov rcx, rbx
call qword [sym.imp.msvcrt.dll_wcsstr]
test rax, rax
jne 0x140040d5a
mov r9, rbx
mov r8, qword [rsp + 0x68]
lea rdx, str.CRecorderMgr::RecorderAddedInternal:_DevicePath__s_did_not_match_the_value_passed_by_bstrDevicePath__s
lea ecx, [rax + 8]
call fcn.140001110
nop
lea rcx, [rsp + 0x60]
call qword [sym.imp.OLEAUT32.dll_VariantCopy]
nop
mov rcx, qword [rsp + 0x48]
test rcx, rcx
je 0x140040d41
mov rax, qword [rcx]
call qword [rax + 0x10]
nop
mov rcx, qword [rsp + 0x40]
test rcx, rcx
je 0x1400414c6
mov rax, qword [rcx]
call qword [rax + 0x10]
jmp 0x1400414c6
mov r8, qword [rsp + 0x68]
lea rdx, str.CRecorderMgr::RecorderAddedInternal:_DevicePath_or_FriendlyName_is___s
mov ecx, 8
call fcn.140001110
or dword [rsp + 0x54], 0xffffffff
lea r9, [rsp + 0x54]
mov r8, qword [rsp + 0x68]
mov rdx, r13
mov rcx, r14
call fcn.140042dc0
test eax, eax
jne 0x140041076
lea rcx, [r14 + 0x58]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov r13d, dword [rsp + 0x54]
mov rbx, qword [rsp + 0x100]
mov rbx, qword [rbx + 0x50]
lea rcx, [r14 + 0x58]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov r13, qword [rbx + r13*8]
cmp dword [r13 + 4], 0x80070037
jne 0x140040f7c
mov dword [r13 + 4], 0x8000000a
and dword [r13 + 0x1a0], 0
cmp dword [r13 + 0x5c], 0
je 0x140040df9
lea rdx, str.CRecorderMgr::RecorderAddedInternal:_setting_dwNetworkTunerState_to_ts_NetworkTunerPresent.
mov ecx, 4
call fcn.140001110
mov dword [r13 + 0x74], 2
bts dword [r13 + 0x19c], 7
mov qword [rsp + 0x20], 1
mov r9d, 1
mov r8d, 0x8000
mov rdx, r13
mov r14, qword [rsp + 0x100]
mov rcx, r14
call fcn.14003fbbc
test eax, eax
jns 0x140040e3f
lea rdx, str.CRecorderMgr::RecorderAddedInternal:_failed_to_SendThreadMessage
mov ecx, 1
call fcn.140001110
mov rbx, qword [r13 + 0x90]
test rbx, rbx
jne 0x140040e7b
lea rcx, [0x140058990]
call qword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov rdi, rax
mov qword [rsp + 0x98], rax
test rax, rax
je 0x140041508
or r15d, 1
mov dword [rsp + 0x118], r15d
mov rbx, rax
mov rcx, qword [r13 + 0x88]
test rcx, rcx
jne 0x140040eb7
lea rcx, str.No_Root_Device_Name
call qword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov rbp, rax
mov qword [rsp + 0x90], rax
test rax, rax
je 0x1400414fa
or r15d, 2
mov dword [rsp + 0x118], r15d
mov rcx, rax
test byte [r13 + 0x19c], 1
lea r9, str.Enabled
lea rax, str.DISABLED
cmovne r9, rax
mov qword [rsp + 0x38], rbx
mov qword [rsp + 0x30], rcx
mov rax, qword [r13 + 0x78]
mov qword [rsp + 0x28], rax
mov rax, qword [r13 + 0x80]
mov qword [rsp + 0x20], rax
mov r8d, dword [r13]
lea rdx, str.CRecorderMgr::RecorderAddedInternal:__d___s__s__s__s__s
mov ecx, 8
call fcn.140001110
nop
test r15b, 2
je 0x140040f22
and r15d, 0xfffffffd
mov dword [rsp + 0x118], r15d
mov rcx, rbp
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
nop
test r15b, 1
je 0x140040f3e
and r15d, 0xfffffffe
mov dword [rsp + 0x118], r15d
mov rcx, rdi
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
nop
lea rcx, [rsp + 0x60]
call qword [sym.imp.OLEAUT32.dll_VariantCopy]
nop
mov rcx, qword [rsp + 0x48]
test rcx, rcx
je 0x140040f5b
mov rax, qword [rcx]
call qword [rax + 0x10]
nop
mov rcx, qword [rsp + 0x40]
test rcx, rcx
je 0x1400414b4
mov rax, qword [rcx]
call qword [rax + 0x10]
mov r13, qword [rsp + 0x108]
jmp 0x1400414c6
cmp dword [r13 + 0xc], 0
jne 0x140041030
cmp dword [r13 + 4], 0xc0040597
jne 0x140041030
mov dword [r13 + 4], 0x8000000a
cmp dword [r13 + 0x5c], 0
je 0x140040fbd
lea rdx, str.CRecorderMgr::RecorderAddedInternal:_setting_dwNetworkTunerState_to_ts_NetworkTunerPresent.
mov ecx, 4
call fcn.140001110
mov dword [r13 + 0x74], 2
bts dword [r13 + 0x19c], 7
mov byte [rsp + 0x20], 1
mov r9d, 1
mov r8d, r9d
mov edx, dword [rsp + 0x54]
mov r14, qword [rsp + 0x100]
mov rcx, r14
call fcn.140010930
mov ebx, eax
test eax, eax
js 0x140041513
lea rcx, [rsp + 0x60]
call qword [sym.imp.OLEAUT32.dll_VariantCopy]
nop
mov rcx, qword [rsp + 0x48]
test rcx, rcx
je 0x14004100f
mov rax, qword [rcx]
call qword [rax + 0x10]
nop
mov rcx, qword [rsp + 0x40]
test rcx, rcx
je 0x1400414aa
mov rax, qword [rcx]
call qword [rax + 0x10]
mov r13, qword [rsp + 0x108]
jmp 0x1400414c6
lea rcx, [rsp + 0x60]
call qword [sym.imp.OLEAUT32.dll_VariantCopy]
nop
mov rcx, qword [rsp + 0x48]
test rcx, rcx
je 0x14004104d
mov rax, qword [rcx]
call qword [rax + 0x10]
nop
mov rcx, qword [rsp + 0x40]
test rcx, rcx
je 0x14004147a
mov rax, qword [rcx]
call qword [rax + 0x10]
mov r14, qword [rsp + 0x100]
mov r13, qword [rsp + 0x108]
jmp 0x1400414c6
mov eax, dword [r14 + 0x48]
cmp eax, dword [r14 + 0x80]
ja 0x1400410df
mov edx, 5
mov rcx, r14
call fcn.140012fbc
test eax, eax
jns 0x1400410df
mov r8d, eax
lea rdx, str.CRecorderMgr::RecorderAddedInternal:_cannot_ReallocateRecorders__0x_x
mov ecx, 1
call fcn.140001110
nop
lea rcx, [rsp + 0x60]
call qword [sym.imp.OLEAUT32.dll_VariantCopy]
nop
mov rcx, qword [rsp + 0x48]
test rcx, rcx
je 0x1400410c6
mov rax, qword [rcx]
call qword [rax + 0x10]
nop
mov rcx, qword [rsp + 0x40]
test rcx, rcx
je 0x1400414c6
mov rax, qword [rcx]
call qword [rax + 0x10]
jmp 0x1400414c6
mov r13d, dword [r14 + 0x80]
lea rcx, [r14 + 0x58]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov rbx, qword [rsp + 0x100]
mov rbx, qword [rbx + 0x50]
lea rcx, [r14 + 0x58]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov r13, qword [rbx + r13*8]
mov r8, qword [rsp + 0x108]
movdqu xmm0, xmmword [r8]
movdqu xmmword [r13 + 0xac], xmm0
lea r9, [0x140000000]
mov rdx, qword [r8]
cmp rdx, qword [r9 + 0x594e8]
jne 0x140041144
mov rdx, qword [r8 + 8]
cmp rdx, qword [r9 + 0x594f0]
jne 0x140041144
xor eax, eax
jmp 0x140041149
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x14004116c
mov r14, qword [rsp + 0x100]
mov eax, dword [r14 + 0xa4]
mov dword [r13 + 0x98], eax
inc dword [r14 + 0xa4]
jmp 0x1400411b9
mov rdx, qword [r8]
cmp rdx, qword [r9 + 0x5a060]
jne 0x140041189
mov rdx, qword [r8 + 8]
cmp rdx, qword [r9 + 0x5a068]
jne 0x140041189
xor eax, eax
jmp 0x14004118e
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x1400411b1
mov r14, qword [rsp + 0x100]
mov eax, dword [r14 + 0xa0]
mov dword [r13 + 0x98], eax
inc dword [r14 + 0xa0]
jmp 0x1400411b9
mov r14, qword [rsp + 0x100]
mov r8, qword [rsp + 0x40]
mov rdx, r13
mov rcx, r14
call fcn.140012674
test eax, eax
jns 0x14004120f
mov dword [r13 + 4], eax
lea rcx, [rsp + 0x60]
call qword [sym.imp.OLEAUT32.dll_VariantCopy]
nop
mov rcx, qword [rsp + 0x48]
test rcx, rcx
je 0x1400411ee
mov rax, qword [rcx]
call qword [rax + 0x10]
nop
mov rcx, qword [rsp + 0x40]
test rcx, rcx
je 0x1400414a0
mov rax, qword [rcx]
call qword [rax + 0x10]
mov r13, qword [rsp + 0x108]
jmp 0x1400414c6
or dword [r13 + 0x19c], 0x40
and dword [r13 + 0x1a0], 0
mov r8d, dword [r13]
lea rdx, str.CRecorderMgr::CRecorderAddedInternal:_setting_bRecInfoAdded_for_RecInfo__d_
mov ecx, 1
call fcn.140001110
cmp dword [r13 + 0x5c], 0
je 0x140041254
lea rdx, str.CRecorderMgr::RecorderAddedInternal:_setting_dwNetworkTunerState_to_ts_NetworkTunerPresent.
mov ecx, 4
call fcn.140001110
mov dword [r13 + 0x74], 2
mov edx, 1
mov rcx, r14
call fcn.140011e40
mov rdx, r13
mov rcx, r14
call fcn.140012ad0
test eax, eax
jns 0x1400412b2
mov dword [r13 + 4], eax
lea rcx, [rsp + 0x60]
call qword [sym.imp.OLEAUT32.dll_VariantCopy]
nop
mov rcx, qword [rsp + 0x48]
test rcx, rcx
je 0x140041291
mov rax, qword [rcx]
call qword [rax + 0x10]
nop
mov rcx, qword [rsp + 0x40]
test rcx, rcx
je 0x140041496
mov rax, qword [rcx]
call qword [rax + 0x10]
mov r13, qword [rsp + 0x108]
jmp 0x1400414c6
mov rcx, r14
call fcn.140011aac
test eax, eax
je 0x1400412c9
mov rdx, r13
mov rcx, r14
call fcn.1400449bc
bts dword [r13 + 0x19c], 7
mov edx, dword [r14 + 0x80]
lea eax, [rdx + 1]
mov dword [r14 + 0x80], eax
mov byte [rsp + 0x20], 0
mov r9d, 2
lea r8d, [r9 - 1]
mov rcx, r14
call fcn.140010930
test eax, eax
jns 0x14004133c
lea rcx, [rsp + 0x60]
call qword [sym.imp.OLEAUT32.dll_VariantCopy]
nop
mov rcx, qword [rsp + 0x48]
test rcx, rcx
je 0x14004131b
mov rax, qword [rcx]
call qword [rax + 0x10]
nop
mov rcx, qword [rsp + 0x40]
test rcx, rcx
je 0x14004148c
mov rax, qword [rcx]
call qword [rax + 0x10]
mov r13, qword [rsp + 0x108]
jmp 0x1400414c6
mov rbx, qword [r13 + 0x90]
test rbx, rbx
jne 0x140041378
lea rcx, [0x140058990]
call qword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov rsi, rax
mov qword [rsp + 0x80], rax
test rax, rax
je 0x140041565
or r15d, 4
mov dword [rsp + 0x118], r15d
mov rbx, rax
mov rcx, qword [r13 + 0x88]
test rcx, rcx
jne 0x1400413b4
lea rcx, str.No_Root_Device_Name
call qword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov r12, rax
mov qword [rsp + 0x88], rax
test rax, rax
je 0x140041557
or r15d, 8
mov dword [rsp + 0x118], r15d
mov rcx, rax
test byte [r13 + 0x19c], 1
lea r9, str.Enabled
lea rax, str.DISABLED
cmovne r9, rax
mov qword [rsp + 0x38], rbx
mov qword [rsp + 0x30], rcx
mov rax, qword [r13 + 0x78]
mov qword [rsp + 0x28], rax
mov rax, qword [r13 + 0x80]
mov qword [rsp + 0x20], rax
mov r8d, dword [r13]
lea rdx, str.CRecorderMgr::RecorderAddedInternal:___d___s__s__s__s__s
mov ecx, 8
call fcn.140001110
nop
test r15b, 8
je 0x14004141f
and r15d, 0xfffffff7
mov dword [rsp + 0x118], r15d
mov rcx, r12
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
nop
test r15b, 4
je 0x14004143a
and r15d, 0xfffffffb
mov dword [rsp + 0x118], r15d
mov rcx, rsi
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
mov rcx, r14
call fcn.1400106e0
nop
lea rcx, [rsp + 0x60]
call qword [sym.imp.OLEAUT32.dll_VariantCopy]
nop
mov rcx, qword [rsp + 0x48]
test rcx, rcx
je 0x140041460
mov rax, qword [rcx]
call qword [rax + 0x10]
nop
mov rcx, qword [rsp + 0x40]
test rcx, rcx
je 0x1400414be
mov rax, qword [rcx]
call qword [rax + 0x10]
mov r13, qword [rsp + 0x108]
jmp 0x1400414c6
mov r14, qword [rsp + 0x100]
mov r13, qword [rsp + 0x108]
jmp 0x1400414c6
mov r13, qword [rsp + 0x108]
jmp 0x1400414c6
mov r13, qword [rsp + 0x108]
jmp 0x1400414c6
mov r13, qword [rsp + 0x108]
jmp 0x1400414c6
mov r13, qword [rsp + 0x108]
jmp 0x1400414c6
mov r13, qword [rsp + 0x108]
jmp 0x1400414c6
mov r13, qword [rsp + 0x108]
and qword [rsp + 0x40], 0
and dword [rsp + 0x50], 0
mov rcx, qword [rsp + 0x78]
mov rax, qword [rcx]
lea r9, [rsp + 0x50]
lea r8, [rsp + 0x40]
mov edx, 1
call qword [rax + 0x18]
mov ebx, eax
test eax, eax
js 0x140041585
jmp 0x140040c0e
mov ecx, 0x8007000e
call fcn.140029690
nop
jmp 0x140041507
nop
mov ecx, 0x8007000e
call fcn.140029690
int3
mov r8d, eax
lea rdx, str.CRecorderMgr::RecorderAddedInternal:_Failed_to_create_recorders__0x_x.
mov ecx, 1
call fcn.140001110
nop
lea rcx, [rsp + 0x60]
call qword [sym.imp.OLEAUT32.dll_VariantCopy]
nop
mov rcx, qword [rsp + 0x48]
test rcx, rcx
je 0x140041545
mov rax, qword [rcx]
call qword [rax + 0x10]
nop
mov rcx, qword [rsp + 0x40]
test rcx, rcx
je 0x140041596
mov rax, qword [rcx]
call qword [rax + 0x10]
jmp 0x140041596
mov ecx, 0x8007000e
call fcn.140029690
nop
jmp 0x140041564
nop
mov ecx, 0x8007000e
call fcn.140029690
nop
jmp 0x140041572
nop
mov rcx, qword [rsp + 0x40]
test rcx, rcx
je 0x140041596
mov rax, qword [rcx]
call qword [rax + 0x10]
jmp 0x140041596
mov rcx, qword [rsp + 0x40]
test rcx, rcx
je 0x140041596
mov rax, qword [rcx]
call qword [rax + 0x10]
nop
mov rcx, qword [rsp + 0x78]
test rcx, rcx
je 0x1400415a7
mov rax, qword [rcx]
call qword [rax + 0x10]
nop
mov rcx, qword [rsp + 0x58]
test rcx, rcx
je 0x1400415b7
mov rax, qword [rcx]
call qword [rax + 0x10]
mov eax, ebx
add rsp, 0xb8
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret