Function at 0x140034f80
Capabilities:
Enumerate devices by category

Disassembly:
push rbp
push rsi
push r14
lea rbp, [rsp - 0x100]
sub rsp, 0x200
mov rax, qword [0x14031a940]
xor rax, rsp
mov qword [rbp + 0xe8], rax
movdqa xmm1, xmmword [0x1402d3620]
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.1400184d0
call fcn.140021130
cmp dword [rax + 8], 4
jl 0x140034ffb
lea rcx, [rbp + 0xc0]
call fcn.140016330
xorps xmm0, xmm0
mov qword [rsp + 0x220], rbx
mov ecx, 1
mov qword [rbp - 0x50], r14
movdqu xmmword [rbp - 0x60], xmm0
call fcn.1400850d8
xor edx, edx
lea r9, [0x1402d3178]
mov rsi, rax
lea rcx, [0x1402bd430]
lea rax, [rsp + 0x60]
mov qword [rsp + 0x20], rax
lea r8d, [rdx + 1]
call qword [sym.imp.ole32.dll_CoCreateInstance]
test eax, eax
js 0x14003508f
mov rcx, qword [rsp + 0x60]
lea r8, [rbp - 0x48]
xor r9d, r9d
lea rdx, [0x1402bd440]
mov rax, qword [rcx]
call qword [rax + 0x18]
mov rcx, qword [rsp + 0x60]
mov ebx, eax
cmp eax, 1
mov rax, qword [rcx]
jne 0x140035071
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
jmp 0x14003508f
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
test ebx, ebx
js 0x14003508f
mov rcx, qword [rbp - 0x48]
lea rdx, [rbp - 0x60]
call fcn.14007c050
mov rcx, qword [rbp - 0x48]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
call fcn.1400102e4
mov rcx, rax
test rax, rax
je 0x140035a78
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, [0x1402d3178]
lea rcx, [0x1402bd430]
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 0x140035152
mov rcx, qword [rsp + 0x68]
lea r8, [rbp - 0x40]
xor r9d, r9d
lea rdx, [0x1402bd440]
mov rax, qword [rcx]
call qword [rax + 0x18]
mov rcx, qword [rsp + 0x68]
mov edi, eax
cmp eax, 1
mov rax, qword [rcx]
jne 0x140035129
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
jmp 0x140035152
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
test edi, edi
js 0x140035152
mov rcx, qword [rbp - 0x40]
lea rdx, [rsp + 0x38]
call fcn.14007bda0
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.1400041d4
lea rcx, [rbp + 0x70]
call fcn.140036520
lea rcx, [rbp + 0x70]
call fcn.140035cd0
xorps xmm0, xmm0
mov qword [rbp - 0x68], r14
movdqu xmmword [rbp - 0x78], xmm0
call fcn.1400656e0
mov rcx, rax
lea rdx, [rbp - 0x78]
call fcn.140065750
xorps xmm0, xmm0
mov qword [rbp - 0x80], r14
movdqu xmmword [rsp + 0x70], xmm0
call fcn.1400656e0
mov rcx, rax
lea rdx, [rsp + 0x70]
call fcn.140065b20
call fcn.140051a40
mov rcx, rax
call fcn.140054250
mov rax, qword [0x140329ca0]
xorps xmm0, xmm0
mov qword [rsp + 0x58], r14
movdqu xmmword [rsp + 0x48], xmm0
test rax, rax
jne 0x1400351f7
mov ecx, 0x90
call fcn.1400850d8
test rax, rax
je 0x1400351ed
mov rcx, rax
call fcn.14005a4d0
jmp 0x1400351f0
mov rax, r14
mov qword [0x140329ca0], rax
lea rdx, [rsp + 0x48]
mov rcx, rax
call fcn.14005ea30
mov rax, qword [rsp + 0x50]
mov rdi, 0xffffffffffffffff
mov r15, qword [rsp + 0x48]
mov qword [rsp + 0x40], rax
cmp r15, rax
je 0x14003539f
lea rbx, [r15 + 0x10]
nop word [rax + rax]
mov rcx, qword [rbx - 0x10]
sub rcx, 0x18
call fcn.140002cec
mov rcx, qword [rbx - 8]
mov rsi, rax
sub rcx, 0x18
call fcn.140002cec
mov rcx, qword [rbx]
mov r14, rax
sub rcx, 0x18
call fcn.140002cec
mov rcx, qword [rbx + 8]
mov r15, rax
sub rcx, 0x18
call fcn.140002cec
mov rcx, qword [rbx + 0x10]
mov r12, rax
sub rcx, 0x18
call fcn.140002cec
mov rcx, qword [rbx + 0x18]
mov r13, rax
sub rcx, 0x18
call fcn.140002cec
mov rcx, qword [rbx + 0x20]
sub rcx, 0x18
mov qword [rbp - 0x28], rax
call fcn.140002cec
mov rcx, qword [rbx + 0x30]
sub rcx, 0x18
mov qword [rsp + 0x30], rax
call fcn.140002cec
mov ecx, edi
lock xadd dword [rax + 0x10], ecx
sub ecx, 1
jg 0x1400352c8
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 0x1400352e2
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 0x1400352fb
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 0x140035315
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 0x140035330
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 0x140035349
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 0x140035362
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 0x14003537a
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 0x140035230
mov rbx, qword [rsp + 0x38]
xor r14d, r14d
mov r15, qword [rsp + 0x48]
mov qword [rsp + 0x30], rbx
mov rax, qword [0x140329c68]
mov r12d, r14d
test rax, rax
jne 0x1400353d6
mov ecx, 0xd8
call fcn.1400850d8
test rax, rax
je 0x1400353c7
mov rcx, rax
call fcn.140010cc0
jmp 0x1400353ca
mov rax, r14
mov r15, qword [rsp + 0x48]
mov qword [0x140329c68], rax
mov r13, qword [rsp + 0x50]
lea rsi, [rax + 0xa8]
cmp r15, r13
je 0x1400355e3
add r15, 0x10
nop
mov r9, qword [r15 - 0x10]
mov r8d, r12d
mov edx, 0x1159a
mov rcx, rsi
call fcn.14001e7c0
mov r9, qword [r15]
mov r8d, r12d
mov edx, 0x1159f
mov rcx, rsi
call fcn.14001e7c0
mov rcx, qword [r15 - 0x10]
sub rcx, 0x18
call fcn.140002cec
mov rcx, qword [r15 - 8]
add rax, 0x18
sub rcx, 0x18
mov qword [rbp + 0x20], rax
call fcn.140002cec
mov rbx, rax
lea rcx, [rax + 0x18]
mov qword [rbp + 0x28], rcx
mov rcx, qword [r15]
sub rcx, 0x18
call fcn.140002cec
mov rcx, qword [r15 + 8]
add rax, 0x18
sub rcx, 0x18
mov qword [rbp + 0x30], rax
call fcn.140002cec
mov rcx, qword [r15 + 0x10]
add rax, 0x18
sub rcx, 0x18
mov qword [rbp + 0x38], rax
call fcn.140002cec
mov rcx, qword [r15 + 0x18]
add rax, 0x18
sub rcx, 0x18
mov qword [rbp + 0x40], rax
call fcn.140002cec
mov rcx, qword [r15 + 0x20]
add rax, 0x18
sub rcx, 0x18
mov qword [rbp + 0x48], rax
call fcn.140002cec
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.140002cec
add rax, 0x18
mov rcx, rbx
mov qword [rbp + 0x60], rax
call fcn.140002cec
movsxd r14, dword [rax + 8]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x40], rbx
test r14d, r14d
js 0x140035a8e
mov ecx, 1
sub ecx, dword [rax + 0x10]
mov eax, dword [rax + 0xc]
sub eax, r14d
or ecx, eax
jge 0x14003550b
mov edx, r14d
lea rcx, [rsp + 0x40]
call fcn.140002ac8
mov rbx, qword [rsp + 0x40]
lea eax, [r14 + 1]
mov rcx, rbx
movsxd rdx, eax
call fcn.140232790
cmp r14d, dword [rbx - 0xc]
jg 0x140035a8e
mov dword [rbx - 0x10], r14d
mov rax, r14
xor r14d, r14d
mov word [rbx + rax*2], r14w
cmp dword [rbx - 0x10], r14d
jl 0x140035574
lea rdx, str.ven_1102
mov rcx, rbx
call fcn.140225168
test rax, rax
je 0x140035574
sub rax, rbx
sar rax, 1
test eax, eax
js 0x140035574
lea rdx, [rbx - 0x18]
mov eax, edi
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x140035570
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov bl, 1
jmp 0x14003558f
lea rdx, [rbx - 0x18]
mov eax, edi
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14003558d
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor bl, bl
lea rcx, [rbp + 0x20]
call fcn.140035aa0
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.14001e990
add r15, 0x48
lea rax, vtable.srl::Value.0
mov qword [rbp - 0x20], rax
inc r12d
lea rax, [r15 - 0x10]
cmp rax, r13
jne 0x1400353f0
mov rbx, qword [rsp + 0x38]
mov qword [rsp + 0x30], rbx
lea r8, [rbp + 0x88]
mov edx, 0x116cb
mov rcx, rsi
call fcn.14001ed20
lea r8, [rbp + 0x90]
mov edx, 0x116cc
mov rcx, rsi
call fcn.14001ed20
lea r8, [rbp + 0x98]
mov edx, 0x116cd
mov rcx, rsi
call fcn.14001ed20
lea r8, [rbp + 0xa0]
mov edx, 0x116ce
mov rcx, rsi
call fcn.14001ed20
mov r12, qword [rbp - 0x70]
mov r15d, r14d
mov r14, qword [rbp - 0x78]
cmp r14, r12
je 0x14003569c
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.14001e7c0
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.14001e990
inc r15d
mov qword [rbp - 0x10], rbx
add r14, 0x48
cmp r14, r12
jne 0x140035651
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 0x140035709
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.14001e7c0
lea r9, [rbp]
mov qword [rbp], r13
mov r8d, r15d
mov byte [rbp + 8], 1
mov edx, 0x11792
mov rcx, rsi
call fcn.14001e990
inc r15d
mov qword [rbp], rdi
add r14, 0x48
cmp r14, r12
jne 0x1400356c0
mov rdi, 0xffffffffffffffff
xor r13d, r13d
mov r12, qword [rbp - 0x58]
mov r15d, r13d
mov r14, qword [rbp - 0x60]
cmp r14, r12
je 0x140035779
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.14001e7c0
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.14001e990
inc r15d
mov qword [rbp + 0x10], rdi
add r14, 0x48
cmp r14, r12
jne 0x140035730
mov rdi, 0xffffffffffffffff
xor r13d, r13d
lea r14, vtable.srl::Resolution.0
mov qword [rbp - 0x38], r14
call fcn.1400102e4
mov rcx, rax
test rax, rax
je 0x140035a83
mov rax, qword [rax]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rbp - 0x30], rax
test rbx, rbx
je 0x1400357c7
mov r8, rdi
nop dword [rax + rax]
inc r8
cmp word [rbx + r8*2], 0
jne 0x1400357b0
mov rdx, rbx
lea rcx, [rbp - 0x30]
call fcn.140002b2c
lea r9, [rbp - 0x38]
xor r8d, r8d
mov edx, 0x117af
mov rcx, rsi
call fcn.14001e990
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 0x1400357fc
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 0x140035889
mov rsi, qword [rsp + 0x50]
cmp rbx, rsi
je 0x140035836
nop word [rax + rax]
mov rcx, rbx
call fcn.140035aa0
add rbx, 0x48
cmp rbx, rsi
jne 0x140035820
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 0x140035873
mov rbx, qword [rbx - 8]
add rdx, 0x27
sub rax, rbx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140035a72
mov rcx, rbx
call fcn.1400041d4
xorps xmm0, xmm0
mov qword [rsp + 0x58], r13
movdqu xmmword [rsp + 0x48], xmm0
mov rbx, qword [rsp + 0x70]
test rbx, rbx
je 0x140035907
mov rsi, qword [rsp + 0x78]
cmp rbx, rsi
je 0x1400358b6
nop dword [rax]
mov rcx, rbx
call fcn.140035aa0
add rbx, 0x48
cmp rbx, rsi
jne 0x1400358a0
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 0x1400358f2
mov rbx, qword [rbx - 8]
add rdx, 0x27
sub rax, rbx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140035a72
mov rcx, rbx
call fcn.1400041d4
xorps xmm0, xmm0
mov qword [rbp - 0x80], r13
movdqu xmmword [rsp + 0x70], xmm0
mov rbx, qword [rbp - 0x78]
test rbx, rbx
je 0x140035985
mov rsi, qword [rbp - 0x70]
cmp rbx, rsi
je 0x140035935
nop dword [rax]
mov rcx, rbx
call fcn.140035aa0
add rbx, 0x48
cmp rbx, rsi
jne 0x140035920
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 0x140035971
mov rbx, qword [rbx - 8]
add rdx, 0x27
sub rax, rbx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140035a72
mov rcx, rbx
call fcn.1400041d4
xorps xmm0, xmm0
mov qword [rbp - 0x68], r13
movdqu xmmword [rbp - 0x78], xmm0
lea rcx, [rbp + 0x70]
call fcn.140035aa0
mov rdx, qword [rsp + 0x38]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], edi
sub edi, 1
jg 0x1400359aa
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rbx, qword [rbp - 0x60]
test rbx, rbx
je 0x140035a21
mov rdi, qword [rbp - 0x58]
cmp rbx, rdi
je 0x1400359d5
nop dword [rax]
mov rcx, rbx
call fcn.140035aa0
add rbx, 0x48
cmp rbx, rdi
jne 0x1400359c0
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 0x140035a0d
mov rbx, qword [rbx - 8]
add rdx, 0x27
sub rax, rbx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140035a72
mov rcx, rbx
call fcn.1400041d4
xorps xmm0, xmm0
mov qword [rbp - 0x50], r13
movdqu xmmword [rbp - 0x60], xmm0
lea rcx, [rbp + 0xc0]
call fcn.140017d20
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.140220e50
add rsp, 0x200
pop r14
pop rsi
pop rbp
ret
call fcn.14022a144
int3
mov ecx, 0x80004005
call fcn.140002dfc
int3
mov ecx, 0x80004005
call fcn.140002dfc
int3
mov ecx, 0x80070057
call fcn.140002dfc
int3