Function at 0x140002b10
Capabilities:
Check os version

Disassembly:
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x68
mov qword [rsp + 0x40], 0xfffffffffffffffe
mov r13, rdx
mov r12, rcx
mov qword [rcx + 0x38], r8
mov dword [rcx + 0x30], r9d
test rdx, rdx
jne 0x140002b44
xor eax, eax
jmp 0x140003307
call fcn.140063708
mov rdx, rax
xor esi, esi
mov ecx, esi
test rax, rax
setne cl
test ecx, ecx
jne 0x140002b65
mov ecx, 0x80004005
call fcn.140001950
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
add rax, 0x18
mov qword [rsp + 0xb0], rax
lea rdx, [0x1400c1af8]
or rbp, 0xffffffffffffffff
test rdx, 0xffffffffffff0000
jne 0x140002bb2
movzx edi, dx
mov ecx, edi
call fcn.140063514
test rax, rax
je 0x140002bd2
mov r8d, edi
mov rdx, rax
lea rcx, [rsp + 0xb0]
call fcn.140001fe0
jmp 0x140002bd2
xor eax, eax
mov rcx, rbp
mov rdi, rdx
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
lea rcx, [rsp + 0xb0]
call fcn.140001bd0
nop
call fcn.140063708
mov rdx, rax
mov ecx, esi
test rax, rax
setne cl
test ecx, ecx
jne 0x140002bf1
mov ecx, 0x80004005
call fcn.140001950
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
lea rbx, [rax + 0x18]
mov qword [rsp + 0xb8], rbx
mov rax, qword [r13]
lea rdx, [rsp + 0xc0]
mov rcx, r13
call qword [rax + 0x28]
test eax, eax
js 0x1400032c0
mov rdx, qword [rsp + 0xc0]
mov rcx, r12
call fcn.140010570
mov rcx, qword [rsp + 0xc0]
call qword [sym.imp.ole32.dll_CoTaskMemFree]
mov rax, qword [r13]
lea r8, [r12 + 0x88]
xor edx, edx
mov rcx, r13
call qword [rax + 0x20]
test eax, eax
js 0x1400032c0
xor eax, eax
mov qword [rsp + 0x48], rax
mov qword [rsp + 0x50], rax
mov qword [rsp + 0x58], rax
mov rcx, qword [r12 + 0x88]
mov rax, qword [rcx]
lea r8, [rsp + 0x48]
lea rdx, [0x1400c3638]
call qword [rax + 0x28]
test eax, eax
js 0x1400032c0
lea rcx, [r12 + 0x48]
mov rdx, qword [rsp + 0x50]
call fcn.140010570
lea rcx, [rsp + 0x48]
call qword [sym.imp.ole32.dll_PropVariantClear]
xor edx, edx
mov qword [rsp + 0x48], rdx
mov qword [rsp + 0x50], rdx
mov qword [rsp + 0x58], rdx
mov rcx, qword [r12 + 0x88]
mov rax, qword [rcx]
lea r8, [rsp + 0x48]
lea rdx, [0x1400c27d8]
call qword [rax + 0x28]
test eax, eax
js 0x140002cfa
mov rdx, qword [rsp + 0x50]
lea rcx, [r12 + 0x50]
call fcn.140010570
lea rcx, [r12 + 0x50]
call fcn.140010640
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 [r12 + 0x88]
mov rax, qword [rcx]
lea r8, [rsp + 0x48]
lea rdx, [0x1400c3650]
call qword [rax + 0x28]
test eax, eax
js 0x1400032c0
mov rdx, qword [rsp + 0x50]
test rdx, rdx
jne 0x140002d3b
mov ecx, esi
jmp 0x140002d4d
xor eax, eax
mov rcx, rbp
mov rdi, rdx
repne scasw ax, word [rdi]
not rcx
sub rcx, 1
mov r8d, ecx
lea rcx, [rsp + 0xb8]
call fcn.140001bd0
lea rcx, [rsp + 0x48]
call qword [sym.imp.ole32.dll_PropVariantClear]
mov rbx, qword [rsp + 0xb8]
cmp dword [rbx - 0x10], 0
jge 0x140002d7a
mov eax, ebp
jmp 0x140002d98
lea rdx, [0x1400c2c80]
mov rcx, rbx
call fcn.14008fb90
test rax, rax
jne 0x140002d92
mov eax, ebp
jmp 0x140002d98
sub rax, rbx
sar rax, 1
mov r15d, esi
test eax, eax
setns r15b
xor eax, eax
mov qword [rsp + 0x48], rax
mov qword [rsp + 0x50], rax
mov qword [rsp + 0x58], rax
mov rcx, qword [r12 + 0x88]
mov rax, qword [rcx]
lea r8, [rsp + 0x48]
lea rdx, [0x1400c2910]
call qword [rax + 0x28]
test eax, eax
js 0x140002e6c
mov rdx, qword [rsp + 0x50]
lea rcx, [rsp + 0xb0]
call fcn.140010570
lea rcx, [rsp + 0x48]
call qword [sym.imp.ole32.dll_PropVariantClear]
lea rdi, [r12 + 0x78]
test rdi, rdi
je 0x140002e6c
mov rsi, qword [rsp + 0xb0]
cmp dword [rsi - 8], 1
jle 0x140002e21
mov edx, dword [rsi - 0x10]
lea rcx, [rsp + 0xb0]
call fcn.1400019d0
mov rsi, qword [rsp + 0xb0]
mov rdx, rdi
mov rcx, rsi
call qword [sym.imp.ole32.dll_CLSIDFromString]
test rsi, rsi
jne 0x140002e36
xor ecx, ecx
jmp 0x140002e4c
xor eax, eax
mov rcx, rbp
mov rdi, rsi
repne scasw ax, word [rdi]
not rcx
sub rcx, 1
test ecx, ecx
js 0x140002e61
cmp ecx, dword [rsi - 0xc]
jg 0x140002e61
mov dword [rsi - 0x10], ecx
movsxd rax, ecx
mov word [rsi + rax*2], 0
xor esi, esi
jmp 0x140002e6c
mov ecx, 0x80070057
call fcn.140001950
int3
xor eax, eax
mov qword [rsp + 0x48], rax
mov qword [rsp + 0x50], rax
mov qword [rsp + 0x58], rax
mov rcx, qword [r12 + 0x88]
mov rax, qword [rcx]
lea r8, [rsp + 0x48]
lea rdx, [0x1400c28e0]
call qword [rax + 0x28]
test eax, eax
js 0x140002eb2
mov eax, dword [rsp + 0x50]
mov dword [r12 + 0x154], eax
lea rcx, [rsp + 0x48]
call qword [sym.imp.ole32.dll_PropVariantClear]
mov qword [r12 + 0x200], r13
mov rcx, r12
call fcn.140003780
test eax, eax
js 0x1400032c0
test r15d, r15d
jne 0x140002ed7
mov rcx, r12
call fcn.1400033c0
mov r14d, 1
cmp dword [r12 + 0x30], 0
jne 0x140003176
cmp dword [r12 + 0x40], 0
jne 0x140002f35
lea rdx, [rbx - 0x18]
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140002f0d
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0xb0]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], ebp
add ebp, 0xffffffff
test ebp, ebp
jg 0x140002f2e
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
jmp 0x140003307
xor eax, eax
mov rcx, rbp
lea rdi, str.SOFTWAREMicrosoftWindowsCurrentVersionMMDevicesAudio_
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
lea rdx, str.SOFTWAREMicrosoftWindowsCurrentVersionMMDevicesAudio_
lea rcx, [r12 + 0x58]
call fcn.140001bd0
lea rax, str.Render_
lea rdx, str.Capture_
cmp dword [r12 + 0x140], 0
cmovne rdx, rax
lea rcx, [r12 + 0x58]
call fcn.140010570
mov rcx, qword [r12]
cmp dword [rcx - 0x10], 0
jge 0x140002f8f
mov eax, ebp
jmp 0x140002fab
lea rdx, [0x1400c2d30]
call fcn.14008fb90
test rax, rax
jne 0x140002fa4
mov eax, ebp
jmp 0x140002fab
sub rax, qword [r12]
sar rax, 1
lea r8d, [rax + 2]
lea rdx, [rsp + 0x30]
mov rcx, r12
call fcn.1400106b0
nop
mov rdx, rax
lea rcx, [r12 + 0x58]
call fcn.1400017e0
nop
mov rdx, qword [rsp + 0x30]
add rdx, 0xffffffffffffffe8
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140002feb
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rdx, [0x1400c2d38]
lea rcx, [r12 + 0x58]
call fcn.140010570
lea r8, str.Properties
lea rdx, [r12 + 0x58]
lea rcx, [rsp + 0x38]
call fcn.140010870
nop
lea rcx, [r12 + 0x60]
mov rdx, rax
call fcn.140001ae0
nop
mov rdx, qword [rsp + 0x38]
add rdx, 0xffffffffffffffe8
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140003041
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rdx, str.FxProperties
lea rcx, [r12 + 0x58]
call fcn.140010570
cmp dword [r12 + 0x20c], 0
je 0x140003062
mov eax, r14d
jmp 0x14000306a
mov rcx, r12
call fcn.140003660
mov dword [r12 + 0x20c], eax
mov eax, dword [0x1400fbfa4]
test eax, eax
jne 0x140003099
mov dword [0x1400fbfa0], 0x114
lea rcx, [0x1400fbfa0]
call qword [sym.imp.KERNEL32.dll_GetVersionExW]
mov eax, dword [0x1400fbfa4]
cmp eax, 6
jne 0x1400030a9
cmp dword [0x1400fbfa8], 1
jae 0x1400030ae
jmp 0x1400030b6
cmp eax, 6
jbe 0x1400030b6
mov rcx, r12
call fcn.140017de0
mov rcx, r12
call fcn.140003660
test eax, eax
jne 0x14000310e
mov rdx, qword [rsp + 0xb8]
add rdx, 0xffffffffffffffe8
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x1400030e6
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0xb0]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], ebp
add ebp, 0xffffffff
test ebp, ebp
jg 0x140003107
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
jmp 0x140003307
cmp dword [r12 + 0x154], 1
jne 0x14000314d
mov eax, dword [0x1400fbf8c]
bt dword [r12 + 0x170], 0x14
cmovb eax, r14d
mov dword [0x1400fbf8c], eax
mov eax, dword [0x1400fc0b4]
bt dword [r12 + 0x178], 0x1d
cmovb eax, r14d
mov dword [0x1400fc0b4], eax
mov rcx, r12
call fcn.14000f7b0
test eax, eax
jne 0x140003161
mov rcx, r12
call fcn.14000f750
mov rcx, r12
call fcn.14000fa00
mov rbx, qword [rsp + 0xb8]
jmp 0x14000327e
mov dword [rsp + 0xc8], esi
mov rax, qword [r13]
lea rdx, [rsp + 0xc8]
mov rcx, r13
call qword [rax + 0x30]
cmp dword [rsp + 0xc8], r14d
je 0x1400031e5
mov qword [r12 + 0x200], rsi
lea rdx, [rbx - 0x18]
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x1400031bd
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0xb0]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], ebp
add ebp, 0xffffffff
test ebp, ebp
jg 0x1400031de
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
jmp 0x140003307
cmp dword [r12 + 0x154], 0xa
jne 0x14000323c
mov qword [r12 + 0x200], rsi
lea rdx, [rbx - 0x18]
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140003214
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0xb0]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], ebp
add ebp, 0xffffffff
test ebp, ebp
jg 0x140003235
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
jmp 0x140003307
lea rdi, [r12 + 8]
mov rax, qword [r13]
mov qword [rsp + 0x20], rdi
xor r9d, r9d
lea r8d, [r9 + 0x17]
lea rdx, [0x1400c3178]
mov rcx, r13
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
test eax, eax
js 0x1400032c0
mov rax, qword [r12 + 0x38]
mov qword [r12 + 0x20], rax
mov rcx, qword [rdi]
mov rax, qword [rcx]
lea rdx, [r12 + 0x10]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
test eax, eax
js 0x1400032c0
lea rdx, [rbx - 0x18]
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x14000329a
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0xb0]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], ebp
add ebp, 0xffffffff
test ebp, ebp
jg 0x1400032bb
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov eax, r14d
jmp 0x140003307
mov qword [r12 + 0x200], rsi
lea rdx, [rbx - 0x18]
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x1400032e4
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0xb0]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], ebp
add ebp, 0xffffffff
test ebp, ebp
jg 0x140003305
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
add rsp, 0x68
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret