Function at 0x140005de0
Capabilities:
Check os version

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x1f]
sub rsp, 0xb8
mov qword [rbp - 0x19], 0xfffffffffffffffe
mov r13, rdx
mov rsi, rcx
xor r12d, r12d
mov dword [rbp + 0x7f], r12d
mov qword [rcx + 0x38], r8
mov dword [rcx + 0x30], r9d
test rdx, rdx
jne 0x140005e22
xor eax, eax
jmp 0x140006688
call fcn.14004aa80
mov rcx, rax
test rax, rax
je 0x1400066a7
mov rax, qword [rax]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
add rax, 0x18
mov qword [rbp - 0x51], rax
lea rbx, [0x140280a28]
mov rdx, rbx
lea rcx, [rbp - 0x51]
call fcn.1400050a0
mov r15, 0xffffffffffffffff
test al, al
jne 0x140005e7c
mov rax, r15
inc rax
cmp word [rbx + rax*2], 0
jne 0x140005e62
mov r8d, eax
mov rdx, rbx
lea rcx, [rbp - 0x51]
call fcn.1400054e0
nop
call fcn.14004aa80
mov rcx, rax
test rax, rax
je 0x1400066b2
mov rax, qword [rax]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
add rax, 0x18
mov qword [rbp - 0x49], rax
mov rax, qword [r13]
lea rdx, [rbp - 0x39]
mov rcx, r13
call qword [rax + 0x28]
test eax, eax
js 0x140006641
mov rdx, qword [rbp - 0x39]
test rdx, rdx
jne 0x140005ebf
mov eax, r12d
jmp 0x140005ecc
mov rax, r15
inc rax
cmp word [rdx + rax*2], 0
jne 0x140005ec2
mov r8d, eax
mov rcx, rsi
call fcn.140004b30
mov rcx, qword [rbp - 0x39]
call qword [sym.imp.ole32.dll_CoTaskMemFree]
lea rbx, [rsi + 0x90]
mov rax, qword [r13]
mov r8, rbx
xor edx, edx
mov rcx, r13
call qword [rax + 0x20]
test eax, eax
js 0x140006641
xor eax, eax
mov qword [rbp - 0x69], rax
mov qword [rbp - 0x61], rax
mov qword [rbp - 0x59], rax
mov rcx, qword [rbx]
mov rax, qword [rcx]
lea r8, [rbp - 0x69]
lea rdx, [0x140282670]
call qword [rax + 0x28]
test eax, eax
js 0x140006641
lea rcx, [rsi + 0x48]
mov rdx, qword [rbp - 0x61]
test rdx, rdx
jne 0x140005f3b
mov eax, r12d
jmp 0x140005f4a
mov rax, r15
nop
inc rax
cmp word [rdx + rax*2], 0
jne 0x140005f40
mov r8d, eax
call fcn.140004b30
lea rcx, [rbp - 0x69]
call qword [sym.imp.ole32.dll_PropVariantClear]
xor eax, eax
mov qword [rbp - 0x69], rax
mov qword [rbp - 0x61], rax
mov qword [rbp - 0x59], rax
mov rcx, qword [rbx]
mov rax, qword [rcx]
lea r8, [rbp - 0x69]
lea rdx, [0x1402813b0]
call qword [rax + 0x28]
test eax, eax
js 0x140005fc3
mov rdx, qword [rbp - 0x61]
test rdx, rdx
jne 0x140005f90
mov eax, r12d
jmp 0x140005f9d
mov rax, r15
inc rax
cmp word [rdx + rax*2], 0
jne 0x140005f93
mov r8d, eax
lea rcx, [rsi + 0x58]
call fcn.140004b30
lea rcx, [rsi + 0x58]
call fcn.14000d980
lea rcx, [rbp - 0x69]
call qword [sym.imp.ole32.dll_PropVariantClear]
lea rbx, [rsi + 0x90]
xor eax, eax
mov qword [rbp - 0x69], rax
mov qword [rbp - 0x61], rax
mov qword [rbp - 0x59], rax
mov rcx, qword [rbx]
mov rax, qword [rcx]
lea r8, [rbp - 0x69]
lea rdx, [0x140282658]
call qword [rax + 0x28]
test eax, eax
js 0x140006641
mov rdx, qword [rbp - 0x61]
test rdx, rdx
jne 0x140005ffb
mov eax, r12d
jmp 0x14000600a
mov rax, r15
nop
inc rax
cmp word [rdx + rax*2], 0
jne 0x140006000
mov r8d, eax
lea rcx, [rbp - 0x49]
call fcn.1400054e0
lea rcx, [rbp - 0x69]
call qword [sym.imp.ole32.dll_PropVariantClear]
mov rax, qword [rbp - 0x49]
cmp dword [rax - 0x10], 0
jge 0x14000602f
mov edi, r15d
jmp 0x140006053
lea rdx, [0x140280aa8]
mov rcx, qword [rbp - 0x49]
call fcn.1401e5cdc
mov rdi, rax
test rax, rax
jne 0x14000604c
mov edi, r15d
jmp 0x140006053
sub rdi, qword [rbp - 0x49]
sar rdi, 1
xor eax, eax
mov qword [rbp - 0x69], rax
mov qword [rbp - 0x61], rax
mov qword [rbp - 0x59], rax
mov rcx, qword [rbx]
mov rax, qword [rcx]
lea r8, [rbp - 0x69]
lea rdx, [0x140282640]
call qword [rax + 0x28]
test eax, eax
js 0x140006110
mov rdx, qword [rbp - 0x61]
test rdx, rdx
jne 0x14000608b
mov eax, r12d
jmp 0x14000609a
mov rax, r15
nop
inc rax
cmp word [rdx + rax*2], 0
jne 0x140006090
mov r8d, eax
lea rcx, [rbp - 0x51]
call fcn.140004b30
lea rcx, [rbp - 0x69]
call qword [sym.imp.ole32.dll_PropVariantClear]
lea r14, [rsi + 0x80]
test r14, r14
je 0x140006110
mov rbx, qword [rbp - 0x51]
cmp dword [rbx - 8], 1
jle 0x1400060d6
mov edx, dword [rbx - 0x10]
lea rcx, [rbp - 0x51]
call fcn.1400052d0
mov rbx, qword [rbp - 0x51]
mov rdx, r14
mov rcx, rbx
call qword [sym.imp.ole32.dll_CLSIDFromString]
movsxd rdx, dword [rbx - 0xc]
mov rcx, rbx
call fcn.1401edae8
test eax, eax
js 0x1400066c8
cmp eax, dword [rbx - 0xc]
jg 0x1400066c8
mov dword [rbx - 0x10], eax
cdqe
mov word [rbx + rax*2], r12w
lea rbx, [rsi + 0x90]
xor eax, eax
mov qword [rbp - 0x69], rax
mov qword [rbp - 0x61], rax
mov qword [rbp - 0x59], rax
mov rcx, qword [rbx]
mov rax, qword [rcx]
lea r8, [rbp - 0x69]
lea rdx, [0x140282628]
call qword [rax + 0x28]
test eax, eax
js 0x140006149
mov eax, dword [rbp - 0x61]
mov dword [rsi + 0x15c], eax
lea rcx, [rbp - 0x69]
call qword [sym.imp.ole32.dll_PropVariantClear]
mov qword [rsi + 0x208], r13
mov rcx, rsi
call fcn.1400067b0
test eax, eax
js 0x140006641
mov r14d, 1
test edi, edi
jns 0x140006221
call fcn.14004aa80
mov rcx, rax
test rax, rax
je 0x1400066bd
mov rax, qword [rax]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
add rax, 0x18
mov qword [rbp - 0x41], rax
xor eax, eax
mov dword [rbp + 0x77], eax
mov word [rbp + 0x7b], ax
lea rdx, [rbp - 0x41]
mov rcx, rsi
call fcn.140006b90
test eax, eax
jne 0x1400061b0
mov rdx, qword [rbp - 0x41]
add rdx, 0xffffffffffffffe8
jmp 0x14000620b
movups xmm0, xmmword [0x140282618]
mov dword [rsp + 0x28], 6
lea rax, [rbp + 0x77]
xor r9d, r9d
xor r8d, r8d
mov rbx, qword [rbp - 0x41]
mov qword [rsp + 0x20], rax
mov rcx, rbx
cmp dword [rsi + 0x44], r8d
je 0x1400061f2
movaps xmmword [rbp - 9], xmm0
lea rdx, [rbp - 9]
call fcn.140011360
test eax, eax
jne 0x140006203
mov dword [rsi + 0x44], r12d
jmp 0x140006207
movaps xmmword [rbp + 7], xmm0
lea rdx, [rbp + 7]
call fcn.140011110
test eax, eax
je 0x140006207
mov dword [rsi + 0x40], r14d
lea rdx, [rbx - 0x18]
mov eax, r15d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x140006221
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
cmp dword [rsi + 0x15c], 4
jne 0x14000627c
mov ecx, 0x1025
mov rax, qword [0x1402e9d08]
cmp word [rax + 2], cx
jne 0x14000627c
movzx ecx, word [rax]
mov edx, 0x122a
movzx eax, cx
sub ax, dx
cmp ax, 1
jbe 0x140006278
mov eax, 0x1225
cmp cx, ax
je 0x140006278
mov eax, 0x1245
sub cx, ax
cmp cx, 0x3d
ja 0x14000627c
movabs rax, 0x3600605000000001
bt rax, rcx
jae 0x14000627c
mov dword [rsi + 0x40], r14d
cmp dword [rsi + 0x30], 0
jne 0x1400065dd
cmp dword [rsi + 0x40], 0
je 0x140006648
lea rdx, str.SOFTWAREMicrosoftWindowsCurrentVersionMMDevicesAudio_
mov rax, r15
nop word [rax + rax]
inc rax
cmp word [rdx + rax*2], 0
jne 0x1400062a0
mov r8d, eax
lea rcx, [rsi + 0x60]
call fcn.1400054e0
lea rax, str.Render_
lea rdx, str.Capture_
cmp dword [rsi + 0x148], 0
cmovne rdx, rax
mov rax, r15
inc rax
cmp word [rdx + rax*2], 0
jne 0x1400062d2
mov r8d, eax
lea rcx, [rsi + 0x60]
call fcn.140004b30
mov rcx, qword [rsi]
cmp dword [rcx - 0x10], 0
jge 0x1400062f6
mov eax, r15d
jmp 0x140006315
lea rdx, [0x140280b50]
call fcn.1401e5cdc
mov rcx, qword [rsi]
test rax, rax
jne 0x14000630f
mov eax, r15d
jmp 0x140006315
sub rax, rcx
sar rax, 1
lea r8d, [rax + 2]
mov r9d, dword [rcx - 0x10]
sub r9d, r8d
lea rdx, [rbp - 0x29]
mov rcx, rsi
call fcn.14000da40
mov dword [rbp + 0x7f], r14d
mov rbx, qword [rbp - 0x29]
mov r8d, dword [rbx - 0x10]
mov rdx, rbx
lea rcx, [rsi + 0x60]
call fcn.140004b30
nop
lea rdx, [rbx - 0x18]
mov eax, r15d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14000635f
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rdx, [0x140281050]
mov rax, r15
nop dword [rax]
inc rax
cmp word [rdx + rax*2], 0
jne 0x140006370
mov r8d, eax
lea rcx, [rsi + 0x60]
call fcn.140004b30
nop
mov rax, qword [rsi + 0x60]
mov rcx, qword [rax - 0x18]
test rcx, rcx
je 0x1400063a2
mov rax, qword [rcx]
call qword [rax + 0x20]
mov rcx, rax
test rax, rax
jne 0x1400063b3
call fcn.14004aa80
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + 0x20]
mov rcx, rax
test rcx, rcx
je 0x1400066d3
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
lea rbx, [rax + 0x18]
mov qword [rbp - 0x31], rbx
mov dword [rbp + 0x7f], 3
lea rax, str.Properties
mov r14, r15
nop dword [rax + rax]
inc r14
cmp word [rax + r14*2], 0
jne 0x1400063e0
mov rax, qword [rsi + 0x60]
mov qword [rbp - 0x21], rax
mov edx, dword [rax - 0x10]
mov dword [rbp + 0x6f], edx
lea r13d, [rdx + r14]
test r13d, r13d
js 0x1400066de
mov ecx, 1
sub ecx, dword [rbx - 8]
mov eax, dword [rbx - 0xc]
sub eax, r13d
or eax, ecx
jge 0x14000642b
mov edx, r13d
lea rcx, [rbp - 0x31]
call fcn.1400053f0
mov rbx, qword [rbp - 0x31]
mov edx, dword [rbp + 0x6f]
movsxd rdi, edx
mov r9d, edx
mov r8, qword [rbp - 0x21]
mov rdx, rdi
mov rcx, rbx
call fcn.140005450
movsxd rdx, r14d
lea rcx, [rbx + rdi*2]
mov r9d, r14d
lea r8, str.Properties
call fcn.140005450
cmp r13d, dword [rbx - 0xc]
jg 0x14000669c
mov dword [rbx - 0x10], r13d
movsxd rax, r13d
mov word [rbx + rax*2], r12w
lea r14, [rbx - 0x18]
mov rdi, qword [rsi + 0x68]
sub rdi, 0x18
cmp r14, rdi
je 0x1400064ca
cmp dword [rdi + 0x10], 0
jl 0x1400064b9
mov rax, qword [rdi]
cmp qword [r14], rax
jne 0x1400064b9
mov rcx, r14
call fcn.140004c20
mov rbx, rax
mov eax, r15d
lock xadd dword [rdi + 0x10], eax
sub eax, 1
jg 0x1400064af
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rdx, rdi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rax, [rbx + 0x18]
mov qword [rsi + 0x68], rax
jmp 0x1400064ca
mov r8d, dword [rbx - 0x10]
mov rdx, rbx
lea rcx, [rsi + 0x68]
call fcn.1400054e0
nop
mov eax, r15d
lock xadd dword [r14 + 0x10], eax
sub eax, 1
jg 0x1400064e4
mov rcx, qword [r14]
mov rax, qword [rcx]
mov rdx, r14
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rdx, str.FxProperties
mov rax, r15
nop
inc rax
cmp word [rdx + rax*2], 0
jne 0x1400064f0
mov r8d, eax
lea rcx, [rsi + 0x60]
call fcn.140004b30
cmp dword [rsi + 0x214], 0
je 0x14000651a
mov r14d, 1
mov eax, r14d
jmp 0x140006528
mov rcx, rsi
call fcn.1400066f0
mov r14d, 1
mov dword [rsi + 0x214], eax
mov eax, dword [0x1402e9b74]
test eax, eax
jne 0x140006555
mov dword [0x1402e9b70], 0x114
lea rcx, [0x1402e9b70]
call qword [sym.imp.KERNEL32.dll_GetVersionExW]
mov eax, dword [0x1402e9b74]
cmp eax, 6
jne 0x140006565
cmp dword [0x1402e9b78], 1
jae 0x140006567
jmp 0x14000656f
jbe 0x14000656f
mov rcx, rsi
call fcn.140013720
mov rcx, rsi
call fcn.1400066f0
test eax, eax
je 0x140006648
cmp dword [rsi + 0x15c], 1
jne 0x1400065bc
test dword [rsi + 0x178], 0x100000
mov eax, dword [0x1402e9c8c]
cmovne eax, r14d
mov dword [0x1402e9c8c], eax
test dword [rsi + 0x180], 0x20000000
mov eax, dword [0x1402e9c88]
cmovne eax, r14d
mov dword [0x1402e9c88], eax
mov rcx, rsi
call fcn.14000d000
test eax, eax
jne 0x1400065d0
mov rcx, rsi
call fcn.14000cfa0
mov rcx, rsi
call fcn.14000d1e0
mov r12d, r14d
jmp 0x140006648
mov dword [rbp + 0x67], r12d
mov rax, qword [r13]
lea rdx, [rbp + 0x67]
mov rcx, r13
call qword [rax + 0x30]
cmp dword [rbp + 0x67], 1
jne 0x140006641
cmp dword [rsi + 0x15c], 0xa
je 0x140006641
lea rbx, [rsi + 8]
mov rax, qword [r13]
mov qword [rsp + 0x20], rbx
xor r9d, r9d
lea r8d, [r9 + 0x17]
lea rdx, [0x140281040]
mov rcx, r13
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
test eax, eax
js 0x140006641
mov rax, qword [rsi + 0x38]
mov qword [rsi + 0x20], rax
mov rcx, qword [rbx]
mov rax, qword [rcx]
lea rdx, [rsi + 0x10]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
test eax, eax
js 0x140006641
mov r12d, r14d
jmp 0x140006648
mov qword [rsi + 0x208], r12
mov rdx, qword [rbp - 0x49]
add rdx, 0xffffffffffffffe8
mov eax, r15d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x140006667
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rbp - 0x51]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], r15d
sub r15d, 1
jg 0x140006685
mov rcx, qword [rdx]
mov r8, qword [rcx]
call qword [rreloc.OLEAUT32.dll_VariantClear + 8]
mov eax, r12d
add rsp, 0xb8
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret
mov ecx, 0x80070057
call fcn.140005680
nop
mov ecx, 0x80004005
call fcn.140005680
nop
mov ecx, 0x80004005
call fcn.140005680
nop
mov ecx, 0x80004005
call fcn.140005680
int3
mov ecx, 0x80070057
call fcn.140005680
nop
mov ecx, 0x80004005
call fcn.140005680
int3
mov ecx, 0x80070057
call fcn.140005680
int3