Function at 0x1400018e0
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 0x140001912
xor eax, eax
jmp 0x140002036
call fcn.140054628
mov rdx, rax
xor r14d, r14d
mov ecx, r14d
test rax, rax
setne cl
test ecx, ecx
jne 0x140001935
mov ecx, 0x80004005
call fcn.140012060
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, [0x1400b40d8]
or rsi, 0xffffffffffffffff
test rdx, 0xffffffffffff0000
jne 0x140001982
movzx edi, dx
mov ecx, edi
call fcn.140054614
test rax, rax
je 0x1400019a2
mov r8d, edi
mov rdx, rax
lea rcx, [rsp + 0xa0]
call fcn.140011760
jmp 0x1400019a2
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.140011dc0
nop
call fcn.140054628
mov rdx, rax
mov ecx, r14d
test rax, rax
setne cl
test ecx, ecx
jne 0x1400019c2
mov ecx, 0x80004005
call fcn.140012060
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 0x140001ff0
mov rdx, qword [rsp + 0xb0]
mov rcx, rbp
call fcn.140010fe0
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 0x140001ff0
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, [0x1400b4178]
call qword [rax + 0x28]
test eax, eax
js 0x140001ff0
lea rcx, [rbp + 0x48]
mov rdx, qword [rsp + 0x50]
call fcn.140010fe0
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, [0x1400b35d8]
call qword [rax + 0x28]
test eax, eax
js 0x140001ac6
mov rdx, qword [rsp + 0x50]
lea rcx, [rbp + 0x50]
call fcn.140010fe0
lea rcx, [rbp + 0x50]
call fcn.1400110b0
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, [0x1400b4190]
call qword [rax + 0x28]
test eax, eax
js 0x140001ff0
mov rdx, qword [rsp + 0x50]
test rdx, rdx
jne 0x140001b07
mov ecx, r14d
jmp 0x140001b19
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.140011dc0
lea rcx, [rsp + 0x48]
call qword [sym.imp.ole32.dll_PropVariantClear]
mov rdi, qword [rsp + 0xa8]
cmp dword [rdi - 0x10], 0
jge 0x140001b46
mov eax, esi
jmp 0x140001b64
lea rdx, [0x1400b3ae0]
mov rcx, rdi
call fcn.14007ed30
test rax, rax
jne 0x140001b5e
mov eax, esi
jmp 0x140001b64
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, [0x1400b3740]
call qword [rax + 0x28]
test eax, eax
js 0x140001bcd
mov rdx, qword [rsp + 0x50]
lea rcx, [rsp + 0xa0]
call fcn.140010fe0
lea rcx, [rsp + 0x48]
call qword [sym.imp.ole32.dll_PropVariantClear]
lea rdx, [rbp + 0x78]
test rdx, rdx
je 0x140001bcd
lea rcx, [rsp + 0xa0]
call fcn.1400123e0
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, [0x1400b3710]
call qword [rax + 0x28]
test eax, eax
js 0x140001c10
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.140002df0
test eax, eax
js 0x140001ff0
test ebx, ebx
jne 0x140001c33
mov rcx, rbp
call fcn.1400020f0
mov r13d, 1
cmp dword [rbp + 0x30], 0
jne 0x140001ead
cmp dword [rbp + 0x40], 0
jne 0x140001c8d
lea rdx, [rdi - 0x18]
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140001c65
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 0x140001c86
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
jmp 0x140002036
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.140011dc0
lea rax, str.Render_
lea rdx, str.Capture_
cmp dword [rbp + 0x140], 0
cmovne rdx, rax
lea rcx, [rbp + 0x58]
call fcn.140010fe0
mov rcx, qword [rbp]
cmp dword [rcx - 0x10], 0
jge 0x140001ce3
mov eax, esi
jmp 0x140001cff
lea rdx, [0x1400b3b90]
call fcn.14007ed30
test rax, rax
jne 0x140001cf8
mov eax, esi
jmp 0x140001cff
sub rax, qword [rbp]
sar rax, 1
lea r8d, [rax + 2]
lea rdx, [rsp + 0x30]
mov rcx, rbp
call fcn.140011120
nop
mov rdx, rax
lea rcx, [rbp + 0x58]
call fcn.140010f20
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 0x140001d3e
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rdx, [0x1400b3b98]
lea rcx, [rbp + 0x58]
call fcn.140010fe0
lea r8, str.Properties
lea rdx, [rbp + 0x58]
lea rcx, [rsp + 0x38]
call fcn.1400112e0
nop
lea rcx, [rbp + 0x60]
mov rdx, rax
call fcn.140011cd0
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 0x140001d91
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.140010fe0
mov rcx, rbp
call fcn.140003650
mov dword [rbp + 0x20c], eax
mov eax, dword [0x1400e7ae4]
test eax, eax
jne 0x140001dd6
mov dword [0x1400e7ae0], 0x114
lea rcx, [0x1400e7ae0]
call qword [sym.imp.KERNEL32.dll_GetVersionExW]
mov eax, dword [0x1400e7ae4]
cmp eax, 6
jne 0x140001de6
cmp dword [0x1400e7ae8], 1
jae 0x140001deb
jmp 0x140001df3
cmp eax, 6
jbe 0x140001df3
mov rcx, rbp
call fcn.140014b70
mov rcx, rbp
call fcn.140002390
test eax, eax
jne 0x140001e4b
mov rdx, qword [rsp + 0xa8]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140001e23
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 0x140001e44
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
jmp 0x140002036
cmp dword [rbp + 0x154], 1
jne 0x140001e84
mov eax, dword [0x1400e7ad4]
bt dword [rbp + 0x170], 0x14
cmovb eax, r13d
mov dword [0x1400e7ad4], eax
mov eax, dword [0x1400e7bf4]
bt dword [rbp + 0x178], 0x1d
cmovb eax, r13d
mov dword [0x1400e7bf4], eax
mov rcx, rbp
call fcn.140010160
test eax, eax
jne 0x140001e98
mov rcx, rbp
call fcn.140010100
mov rcx, rbp
call fcn.1400103b0
mov rdi, qword [rsp + 0xa8]
jmp 0x140001fae
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 0x140001f1c
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 0x140001ef4
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 0x140001f15
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
jmp 0x140002036
cmp dword [rbp + 0x154], 0xa
jne 0x140001f70
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 0x140001f48
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 0x140001f69
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
jmp 0x140002036
lea rbx, [rbp + 8]
mov rax, qword [r12]
mov qword [rsp + 0x20], rbx
xor r9d, r9d
lea r8d, [r9 + 0x17]
lea rdx, [0x1400b3fe8]
mov rcx, r12
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
test eax, eax
js 0x140001ff0
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 0x140001ff0
lea rdx, [rdi - 0x18]
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140001fca
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 0x140001feb
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov eax, r13d
jmp 0x140002036
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 0x140002013
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 0x140002034
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