Function at 0x1400018f0
Capabilities:
Check os version

Disassembly:
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
sub rsp, 0x60
mov qword [rsp + 0x40], 0xfffffffffffffffe
mov r12, rdx
mov rbp, rcx
mov qword [rcx + 0x38], r8
mov dword [rcx + 0x30], r9d
test rdx, rdx
jne 0x140001922
xor eax, eax
jmp 0x140002046
call fcn.1400578a4
mov rdx, rax
xor r14d, r14d
mov ecx, r14d
test rax, rax
setne cl
test ecx, ecx
jne 0x140001945
mov ecx, 0x80004005
call fcn.1400120e0
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
add rax, 0x18
mov qword [rsp + 0xa0], rax
lea rdx, [0x1400b70b8]
or rsi, 0xffffffffffffffff
test rdx, 0xffffffffffff0000
jne 0x140001992
movzx edi, dx
mov ecx, edi
call fcn.140057890
test rax, rax
je 0x1400019b2
mov r8d, edi
mov rdx, rax
lea rcx, [rsp + 0xa0]
call fcn.140011810
jmp 0x1400019b2
xor eax, eax
mov rcx, rsi
mov rdi, rdx
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
lea rcx, [rsp + 0xa0]
call fcn.140011e40
nop
call fcn.1400578a4
mov rdx, rax
mov ecx, r14d
test rax, rax
setne cl
test ecx, ecx
jne 0x1400019d2
mov ecx, 0x80004005
call fcn.1400120e0
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
lea rdi, [rax + 0x18]
mov qword [rsp + 0xa8], rdi
mov rax, qword [r12]
lea rdx, [rsp + 0xb0]
mov rcx, r12
call qword [rax + 0x28]
test eax, eax
js 0x140002000
mov rdx, qword [rsp + 0xb0]
mov rcx, rbp
call fcn.140011090
mov rcx, qword [rsp + 0xb0]
call qword [sym.imp.ole32.dll_CoTaskMemFree]
mov rax, qword [r12]
lea r8, [rbp + 0x88]
xor edx, edx
mov rcx, r12
call qword [rax + 0x20]
test eax, eax
js 0x140002000
xor eax, eax
mov qword [rsp + 0x48], rax
mov qword [rsp + 0x50], rax
mov qword [rsp + 0x58], rax
mov rcx, qword [rbp + 0x88]
mov rax, qword [rcx]
lea r8, [rsp + 0x48]
lea rdx, [0x1400b7158]
call qword [rax + 0x28]
test eax, eax
js 0x140002000
lea rcx, [rbp + 0x48]
mov rdx, qword [rsp + 0x50]
call fcn.140011090
lea rcx, [rsp + 0x48]
call qword [sym.imp.ole32.dll_PropVariantClear]
xor r11d, r11d
mov qword [rsp + 0x48], r11
mov qword [rsp + 0x50], r11
mov qword [rsp + 0x58], r11
mov rcx, qword [rbp + 0x88]
mov rax, qword [rcx]
lea r8, [rsp + 0x48]
lea rdx, [0x1400b65a8]
call qword [rax + 0x28]
test eax, eax
js 0x140001ad6
mov rdx, qword [rsp + 0x50]
lea rcx, [rbp + 0x50]
call fcn.140011090
lea rcx, [rbp + 0x50]
call fcn.140011160
lea rcx, [rsp + 0x48]
call qword [sym.imp.ole32.dll_PropVariantClear]
xor eax, eax
mov qword [rsp + 0x48], rax
mov qword [rsp + 0x50], rax
mov qword [rsp + 0x58], rax
mov rcx, qword [rbp + 0x88]
mov rax, qword [rcx]
lea r8, [rsp + 0x48]
lea rdx, [0x1400b7170]
call qword [rax + 0x28]
test eax, eax
js 0x140002000
mov rdx, qword [rsp + 0x50]
test rdx, rdx
jne 0x140001b17
mov ecx, r14d
jmp 0x140001b29
xor eax, eax
mov rcx, rsi
mov rdi, rdx
repne scasw ax, word [rdi]
not rcx
sub rcx, 1
mov r8d, ecx
lea rcx, [rsp + 0xa8]
call fcn.140011e40
lea rcx, [rsp + 0x48]
call qword [sym.imp.ole32.dll_PropVariantClear]
mov rdi, qword [rsp + 0xa8]
cmp dword [rdi - 0x10], 0
jge 0x140001b56
mov eax, esi
jmp 0x140001b74
lea rdx, [0x1400b6ac8]
mov rcx, rdi
call fcn.1400823b0
test rax, rax
jne 0x140001b6e
mov eax, esi
jmp 0x140001b74
sub rax, rdi
sar rax, 1
mov ebx, r14d
test eax, eax
setns bl
xor eax, eax
mov qword [rsp + 0x48], rax
mov qword [rsp + 0x50], rax
mov qword [rsp + 0x58], rax
mov rcx, qword [rbp + 0x88]
mov rax, qword [rcx]
lea r8, [rsp + 0x48]
lea rdx, [0x1400b6728]
call qword [rax + 0x28]
test eax, eax
js 0x140001bdd
mov rdx, qword [rsp + 0x50]
lea rcx, [rsp + 0xa0]
call fcn.140011090
lea rcx, [rsp + 0x48]
call qword [sym.imp.ole32.dll_PropVariantClear]
lea rdx, [rbp + 0x78]
test rdx, rdx
je 0x140001bdd
lea rcx, [rsp + 0xa0]
call fcn.140012470
xor eax, eax
mov qword [rsp + 0x48], rax
mov qword [rsp + 0x50], rax
mov qword [rsp + 0x58], rax
mov rcx, qword [rbp + 0x88]
mov rax, qword [rcx]
lea r8, [rsp + 0x48]
lea rdx, [0x1400b66f8]
call qword [rax + 0x28]
test eax, eax
js 0x140001c20
mov eax, dword [rsp + 0x50]
mov dword [rbp + 0x154], eax
lea rcx, [rsp + 0x48]
call qword [sym.imp.ole32.dll_PropVariantClear]
mov qword [rbp + 0x200], r12
mov rcx, rbp
call fcn.140002e10
test eax, eax
js 0x140002000
test ebx, ebx
jne 0x140001c43
mov rcx, rbp
call fcn.140002100
mov r13d, 1
cmp dword [rbp + 0x30], 0
jne 0x140001ebd
cmp dword [rbp + 0x40], 0
jne 0x140001c9d
lea rdx, [rdi - 0x18]
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140001c75
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0xa0]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], esi
add esi, 0xffffffff
test esi, esi
jg 0x140001c96
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
jmp 0x140002046
xor eax, eax
mov rcx, rsi
lea rdi, str.SOFTWAREMicrosoftWindowsCurrentVersionMMDevicesAudio_
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
lea rdx, str.SOFTWAREMicrosoftWindowsCurrentVersionMMDevicesAudio_
lea rcx, [rbp + 0x58]
call fcn.140011e40
lea rax, str.Render_
lea rdx, str.Capture_
cmp dword [rbp + 0x140], 0
cmovne rdx, rax
lea rcx, [rbp + 0x58]
call fcn.140011090
mov rcx, qword [rbp]
cmp dword [rcx - 0x10], 0
jge 0x140001cf3
mov eax, esi
jmp 0x140001d0f
lea rdx, [0x1400b6b70]
call fcn.1400823b0
test rax, rax
jne 0x140001d08
mov eax, esi
jmp 0x140001d0f
sub rax, qword [rbp]
sar rax, 1
lea r8d, [rax + 2]
lea rdx, [rsp + 0x30]
mov rcx, rbp
call fcn.1400111d0
nop
mov rdx, rax
lea rcx, [rbp + 0x58]
call fcn.140010fd0
nop
mov rdx, qword [rsp + 0x30]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140001d4e
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rdx, [0x1400b6b78]
lea rcx, [rbp + 0x58]
call fcn.140011090
lea r8, str.Properties
lea rdx, [rbp + 0x58]
lea rcx, [rsp + 0x38]
call fcn.140011390
nop
lea rcx, [rbp + 0x60]
mov rdx, rax
call fcn.140011d50
nop
mov rdx, qword [rsp + 0x38]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140001da1
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rdx, str.FxProperties
lea rcx, [rbp + 0x58]
call fcn.140011090
mov rcx, rbp
call fcn.140003670
mov dword [rbp + 0x20c], eax
mov eax, dword [0x1400ebb04]
test eax, eax
jne 0x140001de6
mov dword [0x1400ebb00], 0x114
lea rcx, [0x1400ebb00]
call qword [sym.imp.KERNEL32.dll_GetVersionExW]
mov eax, dword [0x1400ebb04]
cmp eax, 6
jne 0x140001df6
cmp dword [0x1400ebb08], 1
jae 0x140001dfb
jmp 0x140001e03
cmp eax, 6
jbe 0x140001e03
mov rcx, rbp
call fcn.140014be0
mov rcx, rbp
call fcn.1400023a0
test eax, eax
jne 0x140001e5b
mov rdx, qword [rsp + 0xa8]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140001e33
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0xa0]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], esi
add esi, 0xffffffff
test esi, esi
jg 0x140001e54
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
jmp 0x140002046
cmp dword [rbp + 0x154], 1
jne 0x140001e94
mov eax, dword [0x1400ebaec]
bt dword [rbp + 0x170], 0x14
cmovb eax, r13d
mov dword [0x1400ebaec], eax
mov eax, dword [0x1400ebc14]
bt dword [rbp + 0x178], 0x1d
cmovb eax, r13d
mov dword [0x1400ebc14], eax
mov rcx, rbp
call fcn.140010210
test eax, eax
jne 0x140001ea8
mov rcx, rbp
call fcn.1400101b0
mov rcx, rbp
call fcn.140010460
mov rdi, qword [rsp + 0xa8]
jmp 0x140001fbe
mov dword [rsp + 0xb8], r14d
mov rax, qword [r12]
lea rdx, [rsp + 0xb8]
mov rcx, r12
call qword [rax + 0x30]
cmp dword [rsp + 0xb8], r13d
je 0x140001f2c
mov qword [rbp + 0x200], r14
lea rdx, [rdi - 0x18]
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140001f04
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0xa0]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], esi
add esi, 0xffffffff
test esi, esi
jg 0x140001f25
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
jmp 0x140002046
cmp dword [rbp + 0x154], 0xa
jne 0x140001f80
mov qword [rbp + 0x200], r14
lea rdx, [rdi - 0x18]
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140001f58
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0xa0]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], esi
add esi, 0xffffffff
test esi, esi
jg 0x140001f79
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
jmp 0x140002046
lea rbx, [rbp + 8]
mov rax, qword [r12]
mov qword [rsp + 0x20], rbx
xor r9d, r9d
lea r8d, [r9 + 0x17]
lea rdx, [0x1400b6fc8]
mov rcx, r12
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
test eax, eax
js 0x140002000
mov rax, qword [rbp + 0x38]
mov qword [rbp + 0x20], rax
mov rcx, qword [rbx]
mov rax, qword [rcx]
lea rdx, [rbp + 0x10]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
test eax, eax
js 0x140002000
lea rdx, [rdi - 0x18]
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140001fda
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0xa0]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], esi
add esi, 0xffffffff
test esi, esi
jg 0x140001ffb
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov eax, r13d
jmp 0x140002046
mov qword [rbp + 0x200], r14
lea rdx, [rdi - 0x18]
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140002023
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0xa0]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], esi
add esi, 0xffffffff
test esi, esi
jg 0x140002044
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
add rsp, 0x60
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret