Function at 0x140034b90
Capabilities:
Enumerate devices by category

Disassembly:
push rbp
push rsi
push r14
lea rbp, [rsp - 0x100]
sub rsp, 0x200
mov rax, qword [0x14031b940]
xor rax, rsp
mov qword [rbp + 0xe8], rax
movdqa xmm1, xmmword [0x1402d4800]
lea rdx, str.srl::Sound::Detect
xorps xmm0, xmm0
lea rcx, [rbp + 0xc8]
xor r14d, r14d
movups xmmword [rbp + 0xc8], xmm0
mov word [rbp + 0xc8], r14w
movdqu xmmword [rbp + 0xd8], xmm1
mov byte [rbp + 0xc0], r14b
call fcn.1400182b0
call fcn.140020e90
cmp dword [rax + 8], 4
jl 0x140034c0b
lea rcx, [rbp + 0xc0]
call fcn.140016100
xorps xmm0, xmm0
mov qword [rsp + 0x220], rbx
mov ecx, 1
mov qword [rbp - 0x50], r14
movdqu xmmword [rbp - 0x60], xmm0
call fcn.140084970
xor edx, edx
lea r9, [0x1402d4358]
mov rsi, rax
lea rcx, [0x1402be430]
lea rax, [rsp + 0x60]
mov qword [rsp + 0x20], rax
lea r8d, [rdx + 1]
call qword [sym.imp.ole32.dll_CoCreateInstance]
test eax, eax
js 0x140034c9f
mov rcx, qword [rsp + 0x60]
lea r8, [rbp - 0x48]
xor r9d, r9d
lea rdx, [0x1402be440]
mov rax, qword [rcx]
call qword [rax + 0x18]
mov rcx, qword [rsp + 0x60]
mov ebx, eax
cmp eax, 1
mov rax, qword [rcx]
jne 0x140034c81
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
jmp 0x140034c9f
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
test ebx, ebx
js 0x140034c9f
mov rcx, qword [rbp - 0x48]
lea rdx, [rbp - 0x60]
call fcn.14007b930
mov rcx, qword [rbp - 0x48]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
call fcn.140010070
mov rcx, rax
test rax, rax
je 0x140035688
mov rax, qword [rax]
mov qword [rsp + 0x228], rdi
mov qword [rsp + 0x230], r12
mov qword [rsp + 0x1f8], r13
mov qword [rsp + 0x1f0], r15
call qword [rax + 0x18]
xor edx, edx
lea r9, [0x1402d4358]
lea rcx, [0x1402be430]
lea rbx, [rax + 0x18]
lea rax, [rsp + 0x68]
mov qword [rsp + 0x30], rbx
lea r8d, [rdx + 1]
mov qword [rsp + 0x20], rax
mov qword [rsp + 0x38], rbx
call qword [sym.imp.ole32.dll_CoCreateInstance]
test eax, eax
js 0x140034d62
mov rcx, qword [rsp + 0x68]
lea r8, [rbp - 0x40]
xor r9d, r9d
lea rdx, [0x1402be440]
mov rax, qword [rcx]
call qword [rax + 0x18]
mov rcx, qword [rsp + 0x68]
mov edi, eax
cmp eax, 1
mov rax, qword [rcx]
jne 0x140034d39
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
jmp 0x140034d62
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
test edi, edi
js 0x140034d62
mov rcx, qword [rbp - 0x40]
lea rdx, [rsp + 0x38]
call fcn.14007b680
mov rcx, qword [rbp - 0x40]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
mov rbx, qword [rsp + 0x38]
mov qword [rsp + 0x30], rbx
mov edx, 1
mov rcx, rsi
call fcn.140003e94
lea rcx, [rbp + 0x70]
call fcn.140036130
lea rcx, [rbp + 0x70]
call fcn.1400358e0
xorps xmm0, xmm0
mov qword [rbp - 0x68], r14
movdqu xmmword [rbp - 0x78], xmm0
call fcn.140065720
mov rcx, rax
lea rdx, [rbp - 0x78]
call fcn.140065790
xorps xmm0, xmm0
mov qword [rbp - 0x80], r14
movdqu xmmword [rsp + 0x70], xmm0
call fcn.140065720
mov rcx, rax
lea rdx, [rsp + 0x70]
call fcn.140065b60
call fcn.140051ac0
mov rcx, rax
call fcn.1400542d0
mov rax, qword [0x14032acd0]
xorps xmm0, xmm0
mov qword [rsp + 0x58], r14
movdqu xmmword [rsp + 0x48], xmm0
test rax, rax
jne 0x140034e07
mov ecx, 0x90
call fcn.140084970
test rax, rax
je 0x140034dfd
mov rcx, rax
call fcn.14005a550
jmp 0x140034e00
mov rax, r14
mov qword [0x14032acd0], rax
lea rdx, [rsp + 0x48]
mov rcx, rax
call fcn.14005ea60
mov rax, qword [rsp + 0x50]
mov rdi, 0xffffffffffffffff
mov r15, qword [rsp + 0x48]
mov qword [rsp + 0x40], rax
cmp r15, rax
je 0x140034faf
lea rbx, [r15 + 0x10]
nop word [rax + rax]
mov rcx, qword [rbx - 0x10]
sub rcx, 0x18
call fcn.140002d2c
mov rcx, qword [rbx - 8]
mov rsi, rax
sub rcx, 0x18
call fcn.140002d2c
mov rcx, qword [rbx]
mov r14, rax
sub rcx, 0x18
call fcn.140002d2c
mov rcx, qword [rbx + 8]
mov r15, rax
sub rcx, 0x18
call fcn.140002d2c
mov rcx, qword [rbx + 0x10]
mov r12, rax
sub rcx, 0x18
call fcn.140002d2c
mov rcx, qword [rbx + 0x18]
mov r13, rax
sub rcx, 0x18
call fcn.140002d2c
mov rcx, qword [rbx + 0x20]
sub rcx, 0x18
mov qword [rbp - 0x28], rax
call fcn.140002d2c
mov rcx, qword [rbx + 0x30]
sub rcx, 0x18
mov qword [rsp + 0x30], rax
call fcn.140002d2c
mov ecx, edi
lock xadd dword [rax + 0x10], ecx
sub ecx, 1
jg 0x140034ed8
mov rcx, qword [rax]
mov rdx, rax
mov r8, qword [rcx]
call qword [rreloc.OLEAUT32.dll_VariantClear + 8]
mov rdx, qword [rsp + 0x30]
mov eax, edi
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x140034ef2
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rdx, qword [rbp - 0x28]
mov eax, edi
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x140034f0b
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov eax, edi
lock xadd dword [r13 + 0x10], eax
sub eax, 1
jg 0x140034f25
mov rcx, qword [r13]
mov rdx, r13
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov eax, edi
lock xadd dword [r12 + 0x10], eax
sub eax, 1
jg 0x140034f40
mov rcx, qword [r12]
mov rdx, r12
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov eax, edi
lock xadd dword [r15 + 0x10], eax
sub eax, 1
jg 0x140034f59
mov rcx, qword [r15]
mov rdx, r15
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov eax, edi
lock xadd dword [r14 + 0x10], eax
sub eax, 1
jg 0x140034f72
mov rcx, qword [r14]
mov rdx, r14
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov eax, edi
lock xadd dword [rsi + 0x10], eax
sub eax, 1
jg 0x140034f8a
mov rcx, qword [rsi]
mov rdx, rsi
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
add rbx, 0x48
lea rax, [rbx - 0x10]
cmp rax, qword [rsp + 0x40]
jne 0x140034e40
mov rbx, qword [rsp + 0x38]
xor r14d, r14d
mov r15, qword [rsp + 0x48]
mov qword [rsp + 0x30], rbx
mov rax, qword [0x14032ac98]
mov r12d, r14d
test rax, rax
jne 0x140034fe6
mov ecx, 0xd8
call fcn.140084970
test rax, rax
je 0x140034fd7
mov rcx, rax
call fcn.140010a50
jmp 0x140034fda
mov rax, r14
mov r15, qword [rsp + 0x48]
mov qword [0x14032ac98], rax
mov r13, qword [rsp + 0x50]
lea rsi, [rax + 0xa8]
cmp r15, r13
je 0x1400351f3
add r15, 0x10
nop
mov r9, qword [r15 - 0x10]
mov r8d, r12d
mov edx, 0x1159a
mov rcx, rsi
call fcn.14001e4c0
mov r9, qword [r15]
mov r8d, r12d
mov edx, 0x1159f
mov rcx, rsi
call fcn.14001e4c0
mov rcx, qword [r15 - 0x10]
sub rcx, 0x18
call fcn.140002d2c
mov rcx, qword [r15 - 8]
add rax, 0x18
sub rcx, 0x18
mov qword [rbp + 0x20], rax
call fcn.140002d2c
mov rbx, rax
lea rcx, [rax + 0x18]
mov qword [rbp + 0x28], rcx
mov rcx, qword [r15]
sub rcx, 0x18
call fcn.140002d2c
mov rcx, qword [r15 + 8]
add rax, 0x18
sub rcx, 0x18
mov qword [rbp + 0x30], rax
call fcn.140002d2c
mov rcx, qword [r15 + 0x10]
add rax, 0x18
sub rcx, 0x18
mov qword [rbp + 0x38], rax
call fcn.140002d2c
mov rcx, qword [r15 + 0x18]
add rax, 0x18
sub rcx, 0x18
mov qword [rbp + 0x40], rax
call fcn.140002d2c
mov rcx, qword [r15 + 0x20]
add rax, 0x18
sub rcx, 0x18
mov qword [rbp + 0x48], rax
call fcn.140002d2c
mov rcx, qword [r15 + 0x30]
add rax, 0x18
mov qword [rbp + 0x50], rax
sub rcx, 0x18
movzx eax, byte [r15 + 0x28]
mov byte [rbp + 0x58], al
call fcn.140002d2c
add rax, 0x18
mov rcx, rbx
mov qword [rbp + 0x60], rax
call fcn.140002d2c
movsxd r14, dword [rax + 8]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x40], rbx
test r14d, r14d
js 0x14003569e
mov ecx, 1
sub ecx, dword [rax + 0x10]
mov eax, dword [rax + 0xc]
sub eax, r14d
or ecx, eax
jge 0x14003511b
mov edx, r14d
lea rcx, [rsp + 0x40]
call fcn.140002b08
mov rbx, qword [rsp + 0x40]
lea eax, [r14 + 1]
mov rcx, rbx
movsxd rdx, eax
call fcn.14022a900
cmp r14d, dword [rbx - 0xc]
jg 0x14003569e
mov dword [rbx - 0x10], r14d
mov rax, r14
xor r14d, r14d
mov word [rbx + rax*2], r14w
cmp dword [rbx - 0x10], r14d
jl 0x140035184
lea rdx, str.ven_1102
mov rcx, rbx
call fcn.140224ce8
test rax, rax
je 0x140035184
sub rax, rbx
sar rax, 1
test eax, eax
js 0x140035184
lea rdx, [rbx - 0x18]
mov eax, edi
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x140035180
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov bl, 1
jmp 0x14003519f
lea rdx, [rbx - 0x18]
mov eax, edi
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14003519d
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor bl, bl
lea rcx, [rbp + 0x20]
call fcn.1400356b0
lea rax, vtable.srl::Exists.0
mov byte [rbp - 0x18], bl
lea r9, [rbp - 0x20]
mov qword [rbp - 0x20], rax
mov r8d, r12d
mov edx, 0x1169d
mov rcx, rsi
call fcn.14001e690
add r15, 0x48
lea rax, vtable.srl::Value.0
mov qword [rbp - 0x20], rax
inc r12d
lea rax, [r15 - 0x10]
cmp rax, r13
jne 0x140035000
mov rbx, qword [rsp + 0x38]
mov qword [rsp + 0x30], rbx
lea r8, [rbp + 0x88]
mov edx, 0x116cb
mov rcx, rsi
call fcn.14001ea20
lea r8, [rbp + 0x90]
mov edx, 0x116cc
mov rcx, rsi
call fcn.14001ea20
lea r8, [rbp + 0x98]
mov edx, 0x116cd
mov rcx, rsi
call fcn.14001ea20
lea r8, [rbp + 0xa0]
mov edx, 0x116ce
mov rcx, rsi
call fcn.14001ea20
mov r12, qword [rbp - 0x70]
mov r15d, r14d
mov r14, qword [rbp - 0x78]
cmp r14, r12
je 0x1400352ac
lea rdi, vtable.srl::Exists.0
lea rbx, vtable.srl::Value.0
mov r9, qword [r14]
mov r8d, r15d
mov edx, 0x1178f
mov rcx, rsi
call fcn.14001e4c0
lea r9, [rbp - 0x10]
mov qword [rbp - 0x10], rdi
mov r8d, r15d
mov byte [rbp - 8], 1
mov edx, 0x11790
mov rcx, rsi
call fcn.14001e690
inc r15d
mov qword [rbp - 0x10], rbx
add r14, 0x48
cmp r14, r12
jne 0x140035261
mov rbx, qword [rsp + 0x30]
mov rdi, 0xffffffffffffffff
mov r12, qword [rsp + 0x78]
xor r13d, r13d
mov r14, qword [rsp + 0x70]
mov r15d, r13d
cmp r14, r12
je 0x140035319
lea r13, vtable.srl::Exists.0
lea rdi, vtable.srl::Value.0
nop
mov r9, qword [r14]
mov r8d, r15d
mov edx, 0x11791
mov rcx, rsi
call fcn.14001e4c0
lea r9, [rbp]
mov qword [rbp], r13
mov r8d, r15d
mov byte [rbp + 8], 1
mov edx, 0x11792
mov rcx, rsi
call fcn.14001e690
inc r15d
mov qword [rbp], rdi
add r14, 0x48
cmp r14, r12
jne 0x1400352d0
mov rdi, 0xffffffffffffffff
xor r13d, r13d
mov r12, qword [rbp - 0x58]
mov r15d, r13d
mov r14, qword [rbp - 0x60]
cmp r14, r12
je 0x140035389
lea r13, vtable.srl::Exists.0
lea rdi, vtable.srl::Value.0
nop word [rax + rax]
mov r9, qword [r14]
mov r8d, r15d
mov edx, 0x11793
mov rcx, rsi
call fcn.14001e4c0
lea r9, [rbp + 0x10]
mov qword [rbp + 0x10], r13
mov r8d, r15d
mov byte [rbp + 0x18], 1
mov edx, 0x11794
mov rcx, rsi
call fcn.14001e690
inc r15d
mov qword [rbp + 0x10], rdi
add r14, 0x48
cmp r14, r12
jne 0x140035340
mov rdi, 0xffffffffffffffff
xor r13d, r13d
lea r14, vtable.srl::Resolution.0
mov qword [rbp - 0x38], r14
call fcn.140010070
mov rcx, rax
test rax, rax
je 0x140035693
mov rax, qword [rax]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rbp - 0x30], rax
test rbx, rbx
je 0x1400353d7
mov r8, rdi
nop dword [rax + rax]
inc r8
cmp word [rbx + r8*2], 0
jne 0x1400353c0
mov rdx, rbx
lea rcx, [rbp - 0x30]
call fcn.140002b6c
lea r9, [rbp - 0x38]
xor r8d, r8d
mov edx, 0x117af
mov rcx, rsi
call fcn.14001e690
mov rdx, qword [rbp - 0x30]
mov eax, edi
add rdx, 0xffffffffffffffe8
mov qword [rbp - 0x38], r14
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14003540c
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rbx, qword [rsp + 0x48]
movabs r14, 0x8e38e38e38e38e39
test rbx, rbx
je 0x140035499
mov rsi, qword [rsp + 0x50]
cmp rbx, rsi
je 0x140035446
nop word [rax + rax]
mov rcx, rbx
call fcn.1400356b0
add rbx, 0x48
cmp rbx, rsi
jne 0x140035430
mov rbx, qword [rsp + 0x48]
mov rax, qword [rsp + 0x58]
sub rax, rbx
sar rax, 3
imul rax, r14
lea rdx, [rax + rax*8]
mov rax, rbx
shl rdx, 3
cmp rdx, 0x1000
jb 0x140035483
mov rbx, qword [rbx - 8]
add rdx, 0x27
sub rax, rbx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140035682
mov rcx, rbx
call fcn.140003e94
xorps xmm0, xmm0
mov qword [rsp + 0x58], r13
movdqu xmmword [rsp + 0x48], xmm0
mov rbx, qword [rsp + 0x70]
test rbx, rbx
je 0x140035517
mov rsi, qword [rsp + 0x78]
cmp rbx, rsi
je 0x1400354c6
nop dword [rax]
mov rcx, rbx
call fcn.1400356b0
add rbx, 0x48
cmp rbx, rsi
jne 0x1400354b0
mov rbx, qword [rsp + 0x70]
mov rax, qword [rbp - 0x80]
sub rax, rbx
sar rax, 3
imul rax, r14
lea rdx, [rax + rax*8]
mov rax, rbx
shl rdx, 3
cmp rdx, 0x1000
jb 0x140035502
mov rbx, qword [rbx - 8]
add rdx, 0x27
sub rax, rbx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140035682
mov rcx, rbx
call fcn.140003e94
xorps xmm0, xmm0
mov qword [rbp - 0x80], r13
movdqu xmmword [rsp + 0x70], xmm0
mov rbx, qword [rbp - 0x78]
test rbx, rbx
je 0x140035595
mov rsi, qword [rbp - 0x70]
cmp rbx, rsi
je 0x140035545
nop dword [rax]
mov rcx, rbx
call fcn.1400356b0
add rbx, 0x48
cmp rbx, rsi
jne 0x140035530
mov rbx, qword [rbp - 0x78]
mov rax, qword [rbp - 0x68]
sub rax, rbx
sar rax, 3
imul rax, r14
lea rdx, [rax + rax*8]
mov rax, rbx
shl rdx, 3
cmp rdx, 0x1000
jb 0x140035581
mov rbx, qword [rbx - 8]
add rdx, 0x27
sub rax, rbx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140035682
mov rcx, rbx
call fcn.140003e94
xorps xmm0, xmm0
mov qword [rbp - 0x68], r13
movdqu xmmword [rbp - 0x78], xmm0
lea rcx, [rbp + 0x70]
call fcn.1400356b0
mov rdx, qword [rsp + 0x38]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], edi
sub edi, 1
jg 0x1400355ba
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rbx, qword [rbp - 0x60]
test rbx, rbx
je 0x140035631
mov rdi, qword [rbp - 0x58]
cmp rbx, rdi
je 0x1400355e5
nop dword [rax]
mov rcx, rbx
call fcn.1400356b0
add rbx, 0x48
cmp rbx, rdi
jne 0x1400355d0
mov rbx, qword [rbp - 0x60]
mov rax, qword [rbp - 0x50]
sub rax, rbx
sar rax, 3
imul rax, r14
lea rdx, [rax + rax*8]
mov rax, rbx
shl rdx, 3
cmp rdx, 0x1000
jb 0x14003561d
mov rbx, qword [rbx - 8]
add rdx, 0x27
sub rax, rbx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140035682
mov rcx, rbx
call fcn.140003e94
xorps xmm0, xmm0
mov qword [rbp - 0x50], r13
movdqu xmmword [rbp - 0x60], xmm0
lea rcx, [rbp + 0xc0]
call fcn.140017b00
mov r13, qword [rsp + 0x1f8]
mov al, 1
mov r12, qword [rsp + 0x230]
mov rdi, qword [rsp + 0x228]
mov r15, qword [rsp + 0x1f0]
mov rbx, qword [rsp + 0x220]
mov rcx, qword [rbp + 0xe8]
xor rcx, rsp
call fcn.140220ab0
add rsp, 0x200
pop r14
pop rsi
pop rbp
ret
call fcn.14022a250
int3
mov ecx, 0x80004005
call fcn.140002e3c
int3
mov ecx, 0x80004005
call fcn.140002e3c
int3
mov ecx, 0x80070057
call fcn.140002e3c
int3