Function at 0x140034d60
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 [0x1402d4850]
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 0x140034ddb
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.140084d70
xor edx, edx
lea r9, [0x1402d43a8]
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 0x140034e6f
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 0x140034e51
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
jmp 0x140034e6f
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
test ebx, ebx
js 0x140034e6f
mov rcx, qword [rbp - 0x48]
lea rdx, [rbp - 0x60]
call fcn.14007bd30
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 0x140035858
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, [0x1402d43a8]
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 0x140034f32
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 0x140034f09
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
jmp 0x140034f32
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
test edi, edi
js 0x140034f32
mov rcx, qword [rbp - 0x40]
lea rdx, [rsp + 0x38]
call fcn.14007ba80
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.140036300
lea rcx, [rbp + 0x70]
call fcn.140035ab0
xorps xmm0, xmm0
mov qword [rbp - 0x68], r14
movdqu xmmword [rbp - 0x78], xmm0
call fcn.140065b20
mov rcx, rax
lea rdx, [rbp - 0x78]
call fcn.140065b90
xorps xmm0, xmm0
mov qword [rbp - 0x80], r14
movdqu xmmword [rsp + 0x70], xmm0
call fcn.140065b20
mov rcx, rax
lea rdx, [rsp + 0x70]
call fcn.140065f60
call fcn.140051c90
mov rcx, rax
call fcn.1400546d0
mov rax, qword [0x14032acd0]
xorps xmm0, xmm0
mov qword [rsp + 0x58], r14
movdqu xmmword [rsp + 0x48], xmm0
test rax, rax
jne 0x140034fd7
mov ecx, 0x90
call fcn.140084d70
test rax, rax
je 0x140034fcd
mov rcx, rax
call fcn.14005a950
jmp 0x140034fd0
mov rax, r14
mov qword [0x14032acd0], rax
lea rdx, [rsp + 0x48]
mov rcx, rax
call fcn.14005ee60
mov rax, qword [rsp + 0x50]
mov rdi, 0xffffffffffffffff
mov r15, qword [rsp + 0x48]
mov qword [rsp + 0x40], rax
cmp r15, rax
je 0x14003517f
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 0x1400350a8
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 0x1400350c2
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 0x1400350db
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 0x1400350f5
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 0x140035110
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 0x140035129
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 0x140035142
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 0x14003515a
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 0x140035010
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 0x1400351b6
mov ecx, 0xd8
call fcn.140084d70
test rax, rax
je 0x1400351a7
mov rcx, rax
call fcn.140010a50
jmp 0x1400351aa
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 0x1400353c3
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 0x14003586e
mov ecx, 1
sub ecx, dword [rax + 0x10]
mov eax, dword [rax + 0xc]
sub eax, r14d
or ecx, eax
jge 0x1400352eb
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.14022ad00
cmp r14d, dword [rbx - 0xc]
jg 0x14003586e
mov dword [rbx - 0x10], r14d
mov rax, r14
xor r14d, r14d
mov word [rbx + rax*2], r14w
cmp dword [rbx - 0x10], r14d
jl 0x140035354
lea rdx, str.ven_1102
mov rcx, rbx
call fcn.1402250e8
test rax, rax
je 0x140035354
sub rax, rbx
sar rax, 1
test eax, eax
js 0x140035354
lea rdx, [rbx - 0x18]
mov eax, edi
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x140035350
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov bl, 1
jmp 0x14003536f
lea rdx, [rbx - 0x18]
mov eax, edi
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14003536d
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor bl, bl
lea rcx, [rbp + 0x20]
call fcn.140035880
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 0x1400351d0
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 0x14003547c
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 0x140035431
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 0x1400354e9
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 0x1400354a0
mov rdi, 0xffffffffffffffff
xor r13d, r13d
mov r12, qword [rbp - 0x58]
mov r15d, r13d
mov r14, qword [rbp - 0x60]
cmp r14, r12
je 0x140035559
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 0x140035510
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 0x140035863
mov rax, qword [rax]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rbp - 0x30], rax
test rbx, rbx
je 0x1400355a7
mov r8, rdi
nop dword [rax + rax]
inc r8
cmp word [rbx + r8*2], 0
jne 0x140035590
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 0x1400355dc
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 0x140035669
mov rsi, qword [rsp + 0x50]
cmp rbx, rsi
je 0x140035616
nop word [rax + rax]
mov rcx, rbx
call fcn.140035880
add rbx, 0x48
cmp rbx, rsi
jne 0x140035600
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 0x140035653
mov rbx, qword [rbx - 8]
add rdx, 0x27
sub rax, rbx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140035852
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 0x1400356e7
mov rsi, qword [rsp + 0x78]
cmp rbx, rsi
je 0x140035696
nop dword [rax]
mov rcx, rbx
call fcn.140035880
add rbx, 0x48
cmp rbx, rsi
jne 0x140035680
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 0x1400356d2
mov rbx, qword [rbx - 8]
add rdx, 0x27
sub rax, rbx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140035852
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 0x140035765
mov rsi, qword [rbp - 0x70]
cmp rbx, rsi
je 0x140035715
nop dword [rax]
mov rcx, rbx
call fcn.140035880
add rbx, 0x48
cmp rbx, rsi
jne 0x140035700
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 0x140035751
mov rbx, qword [rbx - 8]
add rdx, 0x27
sub rax, rbx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140035852
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.140035880
mov rdx, qword [rsp + 0x38]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], edi
sub edi, 1
jg 0x14003578a
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rbx, qword [rbp - 0x60]
test rbx, rbx
je 0x140035801
mov rdi, qword [rbp - 0x58]
cmp rbx, rdi
je 0x1400357b5
nop dword [rax]
mov rcx, rbx
call fcn.140035880
add rbx, 0x48
cmp rbx, rdi
jne 0x1400357a0
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 0x1400357ed
mov rbx, qword [rbx - 8]
add rdx, 0x27
sub rax, rbx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140035852
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.140220eb0
add rsp, 0x200
pop r14
pop rsi
pop rbp
ret
call fcn.14022a650
int3
mov ecx, 0x80004005
call fcn.140002e3c
int3
mov ecx, 0x80004005
call fcn.140002e3c
int3
mov ecx, 0x80070057
call fcn.140002e3c
int3