Function at 0x140002b60
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 0x140002b94
xor eax, eax
jmp 0x1400033c4
call fcn.14006628c
mov rdx, rax
xor ebx, ebx
mov ecx, ebx
test rax, rax
setne cl
test ecx, ecx
jne 0x140002bb5
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, [0x1400c4b18]
or rbp, 0xffffffffffffffff
test rdx, 0xffffffffffff0000
jne 0x140002c02
movzx edi, dx
mov ecx, edi
call fcn.140066098
test rax, rax
je 0x140002c22
mov r8d, edi
mov rdx, rax
lea rcx, [rsp + 0xb0]
call fcn.140001fd0
jmp 0x140002c22
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.140001bc0
nop
call fcn.14006628c
mov rdx, rax
mov ecx, ebx
test rax, rax
setne cl
test ecx, ecx
jne 0x140002c41
mov ecx, 0x80004005
call fcn.140001950
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
lea rsi, [rax + 0x18]
mov qword [rsp + 0xb8], rsi
mov rax, qword [r13]
lea rdx, [rsp + 0xc0]
mov rcx, r13
call qword [rax + 0x28]
test eax, eax
js 0x14000337d
mov rdx, qword [rsp + 0xc0]
mov rcx, r12
call fcn.140010650
mov rcx, qword [rsp + 0xc0]
call qword [sym.imp.ole32.dll_CoTaskMemFree]
mov rax, qword [r13]
lea r8, [r12 + 0x90]
xor edx, edx
mov rcx, r13
call qword [rax + 0x20]
test eax, eax
js 0x14000337d
xor eax, eax
mov qword [rsp + 0x48], rax
mov qword [rsp + 0x50], rax
mov qword [rsp + 0x58], rax
mov rcx, qword [r12 + 0x90]
mov rax, qword [rcx]
lea r8, [rsp + 0x48]
lea rdx, [0x1400c6708]
call qword [rax + 0x28]
test eax, eax
js 0x14000337d
lea rcx, [r12 + 0x48]
mov rdx, qword [rsp + 0x50]
call fcn.140010650
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 + 0x90]
mov rax, qword [rcx]
lea r8, [rsp + 0x48]
lea rdx, [0x1400c58a0]
call qword [rax + 0x28]
test eax, eax
js 0x140002d4a
mov rdx, qword [rsp + 0x50]
lea rcx, [r12 + 0x58]
call fcn.140010650
lea rcx, [r12 + 0x58]
call fcn.140010720
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 + 0x90]
mov rax, qword [rcx]
lea r8, [rsp + 0x48]
lea rdx, [0x1400c6720]
call qword [rax + 0x28]
test eax, eax
js 0x14000337d
mov rdx, qword [rsp + 0x50]
test rdx, rdx
jne 0x140002d8b
mov ecx, ebx
jmp 0x140002d9d
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.140001bc0
lea rcx, [rsp + 0x48]
call qword [sym.imp.ole32.dll_PropVariantClear]
mov rsi, qword [rsp + 0xb8]
cmp dword [rsi - 0x10], 0
jge 0x140002dca
mov eax, ebp
jmp 0x140002de8
lea rdx, [0x1400c5d68]
mov rcx, rsi
call fcn.140092710
test rax, rax
jne 0x140002de2
mov eax, ebp
jmp 0x140002de8
sub rax, rsi
sar rax, 1
mov r15d, ebx
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 + 0x90]
mov rax, qword [rcx]
lea r8, [rsp + 0x48]
lea rdx, [0x1400c59d8]
call qword [rax + 0x28]
test eax, eax
js 0x140002ebf
mov rdx, qword [rsp + 0x50]
lea rcx, [rsp + 0xb0]
call fcn.140010650
lea rcx, [rsp + 0x48]
call qword [sym.imp.ole32.dll_PropVariantClear]
lea rdi, [r12 + 0x80]
test rdi, rdi
je 0x140002ebf
mov rbx, qword [rsp + 0xb0]
cmp dword [rbx - 8], 1
jle 0x140002e74
mov edx, dword [rbx - 0x10]
lea rcx, [rsp + 0xb0]
call fcn.1400019d0
mov rbx, qword [rsp + 0xb0]
mov rdx, rdi
mov rcx, rbx
call qword [sym.imp.ole32.dll_CLSIDFromString]
test rbx, rbx
jne 0x140002e89
xor ecx, ecx
jmp 0x140002e9f
xor eax, eax
mov rcx, rbp
mov rdi, rbx
repne scasw ax, word [rdi]
not rcx
sub rcx, 1
test ecx, ecx
js 0x140002eb4
cmp ecx, dword [rbx - 0xc]
jg 0x140002eb4
mov dword [rbx - 0x10], ecx
movsxd rax, ecx
mov word [rbx + rax*2], 0
xor ebx, ebx
jmp 0x140002ebf
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 + 0x90]
mov rax, qword [rcx]
lea r8, [rsp + 0x48]
lea rdx, [0x1400c59a8]
call qword [rax + 0x28]
test eax, eax
js 0x140002f05
mov eax, dword [rsp + 0x50]
mov dword [r12 + 0x15c], eax
lea rcx, [rsp + 0x48]
call qword [sym.imp.ole32.dll_PropVariantClear]
mov qword [r12 + 0x208], r13
mov rcx, r12
call fcn.140003860
test eax, eax
js 0x14000337d
test r15d, r15d
jne 0x140002f2a
mov rcx, r12
call fcn.140003480
mov r14d, 1
cmp dword [r12 + 0x15c], 4
jne 0x140002f9a
mov rax, qword [0x1400fff40]
cmp word [rax + 2], 0x1025
jne 0x140002f9a
movzx eax, word [rax]
cmp ax, 0x122a
je 0x140002f95
cmp ax, 0x122b
je 0x140002f95
cmp ax, 0x1225
je 0x140002f95
cmp ax, 0x1245
je 0x140002f95
cmp ax, 0x1269
je 0x140002f95
cmp ax, 0x126b
je 0x140002f95
cmp ax, 0x1281
je 0x140002f95
cmp ax, 0x1282
je 0x140002f95
cmp ax, 0x1272
je 0x140002f95
cmp ax, 0x1273
je 0x140002f95
cmp ax, 0x127e
je 0x140002f95
cmp ax, 0x127f
jne 0x140002f9a
mov dword [r12 + 0x40], r14d
cmp dword [r12 + 0x30], 0
jne 0x140003233
cmp dword [r12 + 0x40], 0
jne 0x140002ff2
lea rdx, [rsi - 0x18]
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140002fca
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 0x140002feb
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
jmp 0x1400033c4
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 + 0x60]
call fcn.140001bc0
lea rax, str.Render_
lea rdx, str.Capture_
cmp dword [r12 + 0x148], 0
cmovne rdx, rax
lea rcx, [r12 + 0x60]
call fcn.140010650
mov rcx, qword [r12]
cmp dword [rcx - 0x10], 0
jge 0x14000304c
mov eax, ebp
jmp 0x140003068
lea rdx, [0x1400c5e10]
call fcn.140092710
test rax, rax
jne 0x140003061
mov eax, ebp
jmp 0x140003068
sub rax, qword [r12]
sar rax, 1
lea r8d, [rax + 2]
lea rdx, [rsp + 0x30]
mov rcx, r12
call fcn.140010790
nop
mov rdx, rax
lea rcx, [r12 + 0x60]
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 0x1400030a8
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rdx, [0x1400c5e18]
lea rcx, [r12 + 0x60]
call fcn.140010650
lea r8, str.Properties
lea rdx, [r12 + 0x60]
lea rcx, [rsp + 0x38]
call fcn.140010950
nop
lea rcx, [r12 + 0x68]
mov rdx, rax
call fcn.140001ad0
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 0x1400030fe
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rdx, str.FxProperties
lea rcx, [r12 + 0x60]
call fcn.140010650
cmp dword [r12 + 0x214], 0
je 0x14000311f
mov eax, r14d
jmp 0x140003127
mov rcx, r12
call fcn.140003720
mov dword [r12 + 0x214], eax
mov eax, dword [0x140100084]
test eax, eax
jne 0x140003156
mov dword [0x140100080], 0x114
lea rcx, [0x140100080]
call qword [sym.imp.KERNEL32.dll_GetVersionExW]
mov eax, dword [0x140100084]
cmp eax, 6
jne 0x140003166
cmp dword [0x140100088], 1
jae 0x14000316b
jmp 0x140003173
cmp eax, 6
jbe 0x140003173
mov rcx, r12
call fcn.1400180a0
mov rcx, r12
call fcn.140003720
test eax, eax
jne 0x1400031cb
mov rdx, qword [rsp + 0xb8]
add rdx, 0xffffffffffffffe8
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x1400031a3
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 0x1400031c4
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
jmp 0x1400033c4
cmp dword [r12 + 0x15c], 1
jne 0x14000320a
mov eax, dword [0x140100074]
bt dword [r12 + 0x178], 0x14
cmovb eax, r14d
mov dword [0x140100074], eax
mov eax, dword [0x140100194]
bt dword [r12 + 0x180], 0x1d
cmovb eax, r14d
mov dword [0x140100194], eax
mov rcx, r12
call fcn.14000f890
test eax, eax
jne 0x14000321e
mov rcx, r12
call fcn.14000f830
mov rcx, r12
call fcn.14000fae0
mov rsi, qword [rsp + 0xb8]
jmp 0x14000333b
mov dword [rsp + 0xc8], ebx
mov rax, qword [r13]
lea rdx, [rsp + 0xc8]
mov rcx, r13
call qword [rax + 0x30]
cmp dword [rsp + 0xc8], r14d
je 0x1400032a2
mov qword [r12 + 0x208], rbx
lea rdx, [rsi - 0x18]
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x14000327a
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 0x14000329b
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
jmp 0x1400033c4
cmp dword [r12 + 0x15c], 0xa
jne 0x1400032f9
mov qword [r12 + 0x208], rbx
lea rdx, [rsi - 0x18]
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x1400032d1
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 0x1400032f2
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
jmp 0x1400033c4
lea rdi, [r12 + 8]
mov rax, qword [r13]
mov qword [rsp + 0x20], rdi
xor r9d, r9d
lea r8d, [r9 + 0x17]
lea rdx, [0x1400c6258]
mov rcx, r13
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
test eax, eax
js 0x14000337d
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 0x14000337d
lea rdx, [rsi - 0x18]
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140003357
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 0x140003378
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov eax, r14d
jmp 0x1400033c4
mov qword [r12 + 0x208], rbx
lea rdx, [rsi - 0x18]
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x1400033a1
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 0x1400033c2
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