Function at 0x140034ef0
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 [0x1402d3570]
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.140018440
call fcn.1400210a0
cmp dword [rax + 8], 4
jl 0x140034f6b
lea rcx, [rbp + 0xc0]
call fcn.1400162a0
xorps xmm0, xmm0
mov qword [rsp + 0x220], rbx
mov ecx, 1
mov qword [rbp - 0x50], r14
movdqu xmmword [rbp - 0x60], xmm0
call fcn.140084538
xor edx, edx
lea r9, [0x1402d30c8]
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 0x140034fff
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 0x140034fe1
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
jmp 0x140034fff
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
test ebx, ebx
js 0x140034fff
mov rcx, qword [rbp - 0x48]
lea rdx, [rbp - 0x60]
call fcn.14007b4b0
mov rcx, qword [rbp - 0x48]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
call fcn.140010254
mov rcx, rax
test rax, rax
je 0x1400359e8
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, [0x1402d30c8]
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 0x1400350c2
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 0x140035099
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
jmp 0x1400350c2
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
test edi, edi
js 0x1400350c2
mov rcx, qword [rbp - 0x40]
lea rdx, [rsp + 0x38]
call fcn.14007b200
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.140004144
lea rcx, [rbp + 0x70]
call fcn.140036490
lea rcx, [rbp + 0x70]
call fcn.140035c40
xorps xmm0, xmm0
mov qword [rbp - 0x68], r14
movdqu xmmword [rbp - 0x78], xmm0
call fcn.140064b40
mov rcx, rax
lea rdx, [rbp - 0x78]
call fcn.140064bb0
xorps xmm0, xmm0
mov qword [rbp - 0x80], r14
movdqu xmmword [rsp + 0x70], xmm0
call fcn.140064b40
mov rcx, rax
lea rdx, [rsp + 0x70]
call fcn.140064f80
call fcn.140050ea0
mov rcx, rax
call fcn.1400536b0
mov rax, qword [0x140329ca0]
xorps xmm0, xmm0
mov qword [rsp + 0x58], r14
movdqu xmmword [rsp + 0x48], xmm0
test rax, rax
jne 0x140035167
mov ecx, 0x90
call fcn.140084538
test rax, rax
je 0x14003515d
mov rcx, rax
call fcn.140059930
jmp 0x140035160
mov rax, r14
mov qword [0x140329ca0], rax
lea rdx, [rsp + 0x48]
mov rcx, rax
call fcn.14005de90
mov rax, qword [rsp + 0x50]
mov rdi, 0xffffffffffffffff
mov r15, qword [rsp + 0x48]
mov qword [rsp + 0x40], rax
cmp r15, rax
je 0x14003530f
lea rbx, [r15 + 0x10]
nop word [rax + rax]
mov rcx, qword [rbx - 0x10]
sub rcx, 0x18
call fcn.140002c5c
mov rcx, qword [rbx - 8]
mov rsi, rax
sub rcx, 0x18
call fcn.140002c5c
mov rcx, qword [rbx]
mov r14, rax
sub rcx, 0x18
call fcn.140002c5c
mov rcx, qword [rbx + 8]
mov r15, rax
sub rcx, 0x18
call fcn.140002c5c
mov rcx, qword [rbx + 0x10]
mov r12, rax
sub rcx, 0x18
call fcn.140002c5c
mov rcx, qword [rbx + 0x18]
mov r13, rax
sub rcx, 0x18
call fcn.140002c5c
mov rcx, qword [rbx + 0x20]
sub rcx, 0x18
mov qword [rbp - 0x28], rax
call fcn.140002c5c
mov rcx, qword [rbx + 0x30]
sub rcx, 0x18
mov qword [rsp + 0x30], rax
call fcn.140002c5c
mov ecx, edi
lock xadd dword [rax + 0x10], ecx
sub ecx, 1
jg 0x140035238
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 0x140035252
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 0x14003526b
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 0x140035285
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 0x1400352a0
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 0x1400352b9
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 0x1400352d2
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 0x1400352ea
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 0x1400351a0
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 0x140035346
mov ecx, 0xd8
call fcn.140084538
test rax, rax
je 0x140035337
mov rcx, rax
call fcn.140010c30
jmp 0x14003533a
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 0x140035553
add r15, 0x10
nop
mov r9, qword [r15 - 0x10]
mov r8d, r12d
mov edx, 0x1159a
mov rcx, rsi
call fcn.14001e730
mov r9, qword [r15]
mov r8d, r12d
mov edx, 0x1159f
mov rcx, rsi
call fcn.14001e730
mov rcx, qword [r15 - 0x10]
sub rcx, 0x18
call fcn.140002c5c
mov rcx, qword [r15 - 8]
add rax, 0x18
sub rcx, 0x18
mov qword [rbp + 0x20], rax
call fcn.140002c5c
mov rbx, rax
lea rcx, [rax + 0x18]
mov qword [rbp + 0x28], rcx
mov rcx, qword [r15]
sub rcx, 0x18
call fcn.140002c5c
mov rcx, qword [r15 + 8]
add rax, 0x18
sub rcx, 0x18
mov qword [rbp + 0x30], rax
call fcn.140002c5c
mov rcx, qword [r15 + 0x10]
add rax, 0x18
sub rcx, 0x18
mov qword [rbp + 0x38], rax
call fcn.140002c5c
mov rcx, qword [r15 + 0x18]
add rax, 0x18
sub rcx, 0x18
mov qword [rbp + 0x40], rax
call fcn.140002c5c
mov rcx, qword [r15 + 0x20]
add rax, 0x18
sub rcx, 0x18
mov qword [rbp + 0x48], rax
call fcn.140002c5c
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.140002c5c
add rax, 0x18
mov rcx, rbx
mov qword [rbp + 0x60], rax
call fcn.140002c5c
movsxd r14, dword [rax + 8]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x40], rbx
test r14d, r14d
js 0x1400359fe
mov ecx, 1
sub ecx, dword [rax + 0x10]
mov eax, dword [rax + 0xc]
sub eax, r14d
or ecx, eax
jge 0x14003547b
mov edx, r14d
lea rcx, [rsp + 0x40]
call fcn.140002a38
mov rbx, qword [rsp + 0x40]
lea eax, [r14 + 1]
mov rcx, rbx
movsxd rdx, eax
call fcn.140231bf0
cmp r14d, dword [rbx - 0xc]
jg 0x1400359fe
mov dword [rbx - 0x10], r14d
mov rax, r14
xor r14d, r14d
mov word [rbx + rax*2], r14w
cmp dword [rbx - 0x10], r14d
jl 0x1400354e4
lea rdx, str.ven_1102
mov rcx, rbx
call fcn.1402245c8
test rax, rax
je 0x1400354e4
sub rax, rbx
sar rax, 1
test eax, eax
js 0x1400354e4
lea rdx, [rbx - 0x18]
mov eax, edi
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x1400354e0
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov bl, 1
jmp 0x1400354ff
lea rdx, [rbx - 0x18]
mov eax, edi
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x1400354fd
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor bl, bl
lea rcx, [rbp + 0x20]
call fcn.140035a10
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.14001e900
add r15, 0x48
lea rax, vtable.srl::Value.0
mov qword [rbp - 0x20], rax
inc r12d
lea rax, [r15 - 0x10]
cmp rax, r13
jne 0x140035360
mov rbx, qword [rsp + 0x38]
mov qword [rsp + 0x30], rbx
lea r8, [rbp + 0x88]
mov edx, 0x116cb
mov rcx, rsi
call fcn.14001ec90
lea r8, [rbp + 0x90]
mov edx, 0x116cc
mov rcx, rsi
call fcn.14001ec90
lea r8, [rbp + 0x98]
mov edx, 0x116cd
mov rcx, rsi
call fcn.14001ec90
lea r8, [rbp + 0xa0]
mov edx, 0x116ce
mov rcx, rsi
call fcn.14001ec90
mov r12, qword [rbp - 0x70]
mov r15d, r14d
mov r14, qword [rbp - 0x78]
cmp r14, r12
je 0x14003560c
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.14001e730
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.14001e900
inc r15d
mov qword [rbp - 0x10], rbx
add r14, 0x48
cmp r14, r12
jne 0x1400355c1
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 0x140035679
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.14001e730
lea r9, [rbp]
mov qword [rbp], r13
mov r8d, r15d
mov byte [rbp + 8], 1
mov edx, 0x11792
mov rcx, rsi
call fcn.14001e900
inc r15d
mov qword [rbp], rdi
add r14, 0x48
cmp r14, r12
jne 0x140035630
mov rdi, 0xffffffffffffffff
xor r13d, r13d
mov r12, qword [rbp - 0x58]
mov r15d, r13d
mov r14, qword [rbp - 0x60]
cmp r14, r12
je 0x1400356e9
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.14001e730
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.14001e900
inc r15d
mov qword [rbp + 0x10], rdi
add r14, 0x48
cmp r14, r12
jne 0x1400356a0
mov rdi, 0xffffffffffffffff
xor r13d, r13d
lea r14, vtable.srl::Resolution.0
mov qword [rbp - 0x38], r14
call fcn.140010254
mov rcx, rax
test rax, rax
je 0x1400359f3
mov rax, qword [rax]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rbp - 0x30], rax
test rbx, rbx
je 0x140035737
mov r8, rdi
nop dword [rax + rax]
inc r8
cmp word [rbx + r8*2], 0
jne 0x140035720
mov rdx, rbx
lea rcx, [rbp - 0x30]
call fcn.140002a9c
lea r9, [rbp - 0x38]
xor r8d, r8d
mov edx, 0x117af
mov rcx, rsi
call fcn.14001e900
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 0x14003576c
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 0x1400357f9
mov rsi, qword [rsp + 0x50]
cmp rbx, rsi
je 0x1400357a6
nop word [rax + rax]
mov rcx, rbx
call fcn.140035a10
add rbx, 0x48
cmp rbx, rsi
jne 0x140035790
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 0x1400357e3
mov rbx, qword [rbx - 8]
add rdx, 0x27
sub rax, rbx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1400359e2
mov rcx, rbx
call fcn.140004144
xorps xmm0, xmm0
mov qword [rsp + 0x58], r13
movdqu xmmword [rsp + 0x48], xmm0
mov rbx, qword [rsp + 0x70]
test rbx, rbx
je 0x140035877
mov rsi, qword [rsp + 0x78]
cmp rbx, rsi
je 0x140035826
nop dword [rax]
mov rcx, rbx
call fcn.140035a10
add rbx, 0x48
cmp rbx, rsi
jne 0x140035810
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 0x140035862
mov rbx, qword [rbx - 8]
add rdx, 0x27
sub rax, rbx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1400359e2
mov rcx, rbx
call fcn.140004144
xorps xmm0, xmm0
mov qword [rbp - 0x80], r13
movdqu xmmword [rsp + 0x70], xmm0
mov rbx, qword [rbp - 0x78]
test rbx, rbx
je 0x1400358f5
mov rsi, qword [rbp - 0x70]
cmp rbx, rsi
je 0x1400358a5
nop dword [rax]
mov rcx, rbx
call fcn.140035a10
add rbx, 0x48
cmp rbx, rsi
jne 0x140035890
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 0x1400358e1
mov rbx, qword [rbx - 8]
add rdx, 0x27
sub rax, rbx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1400359e2
mov rcx, rbx
call fcn.140004144
xorps xmm0, xmm0
mov qword [rbp - 0x68], r13
movdqu xmmword [rbp - 0x78], xmm0
lea rcx, [rbp + 0x70]
call fcn.140035a10
mov rdx, qword [rsp + 0x38]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], edi
sub edi, 1
jg 0x14003591a
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rbx, qword [rbp - 0x60]
test rbx, rbx
je 0x140035991
mov rdi, qword [rbp - 0x58]
cmp rbx, rdi
je 0x140035945
nop dword [rax]
mov rcx, rbx
call fcn.140035a10
add rbx, 0x48
cmp rbx, rdi
jne 0x140035930
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 0x14003597d
mov rbx, qword [rbx - 8]
add rdx, 0x27
sub rax, rbx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1400359e2
mov rcx, rbx
call fcn.140004144
xorps xmm0, xmm0
mov qword [rbp - 0x50], r13
movdqu xmmword [rbp - 0x60], xmm0
lea rcx, [rbp + 0xc0]
call fcn.140017c90
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.1402202b0
add rsp, 0x200
pop r14
pop rsi
pop rbp
ret
call fcn.1402295a4
int3
mov ecx, 0x80004005
call fcn.140002d6c
int3
mov ecx, 0x80004005
call fcn.140002d6c
int3
mov ecx, 0x80070057
call fcn.140002d6c
int3