Function at 0x100019d70
Capabilities:
Check os version
Connect to wmi namespace via wbemlocator
Reference wmi statements

Disassembly:
mov r11, rsp
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x2b0
mov qword [rsp + 0x100], 0xfffffffffffffffe
mov qword [r11 + 0x10], rbx
mov qword [r11 + 0x18], rsi
mov rax, qword [0x100039110]
xor rax, rsp
mov qword [rsp + 0x2a0], rax
mov qword [rsp + 0x90], rcx
xor r14d, r14d
mov qword [rsp + 0x58], r14
mov qword [rsp + 0x70], r14
mov qword [rsp + 0x68], r14
mov qword [r11 - 0x240], r14
mov qword [rsp + 0x60], r14
mov qword [r11 - 0x250], r14
mov rsi, qword [rcx + 0x1f0]
mov rbx, qword [rcx + 0x1e8]
cmp rbx, rsi
je 0x100019e59
mov rdi, rsi
cmp rdi, rsi
je 0x100019e0d
or r9, 0xffffffffffffffff
xor r8d, r8d
mov rdx, rdi
mov rcx, rbx
call fcn.10001bba8
add rbx, 0x28
add rdi, 0x28
jmp 0x100019dec
mov rax, qword [rsp + 0x90]
mov rsi, qword [rax + 0x1f0]
mov rdi, rbx
cmp rdi, rsi
je 0x100019e4a
cmp qword [rdi + 0x20], 0x10
jb 0x100019e34
mov rcx, qword [rdi + 8]
call fcn.10002deec
mov qword [rdi + 0x20], 0xf
mov qword [rdi + 0x18], r14
mov byte [rdi + 8], r14b
add rdi, 0x28
jmp 0x100019e1f
mov rax, qword [rsp + 0x90]
mov qword [rax + 0x1f0], rbx
xor edx, edx
mov r8d, 0x118
lea rcx, [rsp + 0x184]
call sub.msvcrt.dll_memset
mov dword [rsp + 0x180], 0x11c
lea rcx, [rsp + 0x180]
call qword [sym.imp.KERNEL32.dll_GetVersionExW]
cmp eax, r14d
jne 0x100019e99
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, eax
call fcn.100029968
cmp dword [rsp + 0x184], 6
jb 0x100019ef4
mov rbx, r14
lea rcx, [0x100004c70]
cmp rcx, r14
je 0x100019edf
call qword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov rbx, rax
cmp rax, r14
jne 0x100019edf
mov r9d, 0x8007000e
mov r8d, 0x23c
lea rdx, [0x100002358]
lea rcx, [0x100002388]
call fcn.100029e7c
mov qword [rsp + 0x58], rbx
cmp r14, r14
je 0x100019f43
mov rcx, r14
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
jmp 0x100019f43
mov rbx, r14
lea rcx, [0x100004ca8]
cmp rcx, r14
je 0x100019f30
call qword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov rbx, rax
cmp rax, r14
jne 0x100019f30
mov r9d, 0x8007000e
mov r8d, 0x23c
lea rdx, [0x100002358]
lea rcx, [0x100002388]
call fcn.100029e7c
mov qword [rsp + 0x58], rbx
cmp r14, r14
je 0x100019f43
mov rcx, r14
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
lea rax, [rsp + 0x98]
mov qword [rsp + 0x20], rax
lea r9, [0x1000032c0]
xor edx, edx
lea r8d, [rdx + 1]
lea rcx, [0x1000032d0]
call qword [sym.imp.ole32.dll_CoCreateInstance]
cmp eax, r14d
jge 0x100019f76
mov ecx, eax
call fcn.100029b7c
mov rcx, qword [rsp + 0x98]
mov rax, qword [rcx]
lea rdx, [rsp + 0x60]
mov qword [rsp + 0x40], rdx
mov qword [rsp + 0x38], r14
mov qword [rsp + 0x30], r14
mov dword [rsp + 0x28], 0x80
mov qword [rsp + 0x20], r14
xor r9d, r9d
xor r8d, r8d
mov rdx, rbx
call qword [rax + 0x18]
cmp eax, r14d
jge 0x100019fba
mov ecx, eax
call fcn.100029b7c
mov dword [rsp + 0x38], r14d
mov qword [rsp + 0x30], r14
mov dword [rsp + 0x28], 3
mov dword [rsp + 0x20], 6
xor r9d, r9d
xor r8d, r8d
or edx, 0xffffffff
mov rcx, qword [rsp + 0x60]
call qword [sym.imp.ole32.dll_CoSetProxyBlanket]
cmp eax, r14d
jge 0x100019ff4
mov ecx, eax
call fcn.100029b7c
mov r12, r14
lea rcx, [0x100004cc0]
cmp rcx, r14
je 0x10001a030
call qword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov r12, rax
cmp rax, r14
jne 0x10001a030
mov r9d, 0x8007000e
mov r8d, 0x23c
lea rdx, [0x100002358]
lea rcx, [0x100002388]
call fcn.100029e7c
mov qword [rsp + 0x70], r12
cmp r14, r14
je 0x10001a043
mov rcx, r14
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
mov rsi, r14
lea rcx, [0x100004cd0]
cmp rcx, r14
je 0x10001a07f
call qword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov rsi, rax
cmp rax, r14
jne 0x10001a07f
mov r9d, 0x8007000e
mov r8d, 0x23c
lea rdx, [0x100002358]
lea rcx, [0x100002388]
call fcn.100029e7c
mov qword [rsp + 0x68], rsi
cmp r14, r14
je 0x10001a092
mov rcx, r14
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
mov rcx, qword [rsp + 0x60]
mov rax, qword [rcx]
lea rdx, [rsp + 0x88]
mov qword [rsp + 0x28], rdx
mov qword [rsp + 0x20], r14
mov r9d, 0x20
mov r8, rsi
mov rdx, r12
call qword [rax + 0xa0]
cmp eax, r14d
jge 0x10001a0ca
mov ecx, eax
call fcn.100029b7c
mov eax, r14d
movabs r15, 0x6666666666666667
mov r13b, byte [rsp + 0x54]
cmp eax, r14d
jne 0x10001a518
mov qword [rsp + 0x80], r14
mov dword [rsp + 0x7c], r14d
mov rcx, qword [rsp + 0x88]
mov rax, qword [rcx]
lea rdx, [rsp + 0x7c]
mov qword [rsp + 0x20], rdx
lea r9, [rsp + 0x80]
mov r8d, 1
or edx, 0xffffffff
call qword [rax + 0x20]
mov dword [rsp + 0x50], eax
cmp eax, r14d
jne 0x10001a4f8
lea rcx, [rsp + 0xa8]
call qword [sym.imp.OLEAUT32.dll_VariantClear]
nop
mov rcx, qword [rsp + 0x80]
mov rax, qword [rcx]
mov qword [rsp + 0x28], r14
lea rdx, [rsp + 0x78]
mov qword [rsp + 0x20], rdx
lea r9, [rsp + 0xa8]
xor r8d, r8d
lea rdx, [0x100004d28]
call qword [rax + 0x20]
mov edi, eax
cmp eax, r14d
jge 0x10001a263
mov ecx, eax
and ecx, 0x1fff0000
cmp ecx, 0x70000
jne 0x10001a189
movzx ecx, ax
call fcn.100029968
mov ebx, 0x80004003
cmp eax, ebx
jne 0x10001a1e9
lea rcx, [rsp + 0x110]
call sub.msvcrt.dll_public:_void___cdecl_exception::constructor_void____ptr64
mov dword [rsp + 0x128], ebx
mov qword [rsp + 0x130], r14
mov qword [rsp + 0x138], r14
mov qword [rsp + 0x140], r14
mov dword [rsp + 0x148], r14d
lea rax, [0x100010db8]
mov qword [rsp + 0x110], rax
lea rdx, [0x100036e80]
lea rcx, [rsp + 0x110]
call sub.msvcrt.dll__CxxThrowException
mov ebx, 0x4001
mov ecx, ebx
call fcn.100029738
cmp eax, r14d
je 0x10001a20c
mov r8d, edi
lea rdx, [0x100010bc0]
movzx ecx, bx
call fcn.1000297dc
lea rcx, [rsp + 0xc0]
call sub.msvcrt.dll_public:_void___cdecl_exception::constructor_void____ptr64
lea rax, [0x100010d88]
mov qword [rsp + 0xc0], rax
mov dword [rsp + 0xd8], edi
mov qword [rsp + 0xe0], r14
mov qword [rsp + 0xe8], r14
mov qword [rsp + 0xf0], r14
mov dword [rsp + 0xf8], r14d
lea rdx, [0x100036e18]
lea rcx, [rsp + 0xc0]
call sub.msvcrt.dll__CxxThrowException
cmp dword [rsp + 0x78], 8
jne 0x10001a4e6
mov rdx, qword [rsp + 0xb0]
mov qword [rsp + 0xa0], rdx
mov qword [rsp + 0x170], 0xf
mov qword [rsp + 0x168], r14
mov byte [rsp + 0x158], r14b
xor eax, eax
or rcx, 0xffffffffffffffff
mov rdi, rdx
repne scasw ax, word [rdi]
not rcx
sub rcx, 1
mov rdi, rcx
je 0x10001a3c4
cmp rcx, 0x7fffffff
jbe 0x10001a2da
lea r9d, [rax + 0x6f]
lea r8d, [rax + 0x4e]
lea rdx, [0x100010e98]
lea rcx, [0x100010ec8]
call fcn.100029c5c
mov qword [rsp + 0x38], r14
mov qword [rsp + 0x30], r14
mov dword [rsp + 0x28], r14d
mov qword [rsp + 0x20], r14
mov r9d, ecx
mov r8, rdx
xor edx, edx
lea ecx, [rdx + 3]
call qword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
movsxd r15, eax
cmp r15d, r14d
je 0x10001a3ae
mov rdx, r15
cmp r15, qword [rsp + 0x168]
ja 0x10001a32b
or r8, 0xffffffffffffffff
lea rcx, [rsp + 0x150]
call fcn.10001b9b4
jmp 0x10001a343
sub rdx, qword [rsp + 0x168]
xor r8d, r8d
lea rcx, [rsp + 0x150]
call fcn.10002a7c4
lea rax, [rsp + 0x158]
cmp qword [rsp + 0x170], 0x10
cmovae rax, qword [rsp + 0x158]
mov qword [rsp + 0x38], r14
mov qword [rsp + 0x30], r14
mov dword [rsp + 0x28], r15d
mov qword [rsp + 0x20], rax
mov r9d, edi
mov r8, qword [rsp + 0xa0]
xor edx, edx
lea ecx, [rdx + 3]
call qword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
cmp eax, r14d
jne 0x10001a3ba
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r9d, eax
mov r8d, 0x6a
lea rdx, [0x100010e98]
lea rcx, [0x100010ec8]
call fcn.100029c5c
movabs r15, 0x6666666666666667
jmp 0x10001a3c4
movabs r15, 0x6666666666666667
mov rdi, qword [rsp + 0x90]
mov r8, qword [rdi + 0x1e8]
cmp r8, r14
jne 0x10001a3dd
mov r9, r14
jmp 0x10001a3fe
mov rcx, qword [rdi + 0x1f0]
sub rcx, r8
mov rax, r15
imul rcx
mov r9, rdx
sar r9, 4
mov rax, r9
shr rax, 0x3f
add r9, rax
cmp r8, r14
je 0x10001a45c
mov rcx, qword [rdi + 0x1f8]
sub rcx, r8
mov rax, r15
imul rcx
sar rdx, 4
mov rax, rdx
shr rax, 0x3f
add rdx, rax
cmp r9, rdx
jae 0x10001a45c
mov rcx, qword [rdi + 0x1f0]
lea r15, [rcx + 0x28]
xor eax, eax
mov byte [rsp + 0x28], al
mov byte [rsp + 0x20], r13b
lea r9, [rdi + 0x1e0]
lea r8, [rsp + 0x150]
lea edx, [rax + 1]
call fcn.10001b4ac
mov qword [rdi + 0x1f0], r15
jmp 0x10001a47d
lea r9, [rsp + 0x150]
mov r8d, 1
mov rdx, qword [rdi + 0x1f0]
lea rcx, [rdi + 0x1e0]
call fcn.10001af9c
mov edi, 0xc102
mov ecx, edi
call fcn.100029738
cmp eax, r14d
je 0x10001a4b8
lea r8, [rsp + 0x158]
cmp qword [rsp + 0x170], 0x10
cmovae r8, qword [rsp + 0x158]
lea rdx, [0x100004d50]
movzx ecx, di
call fcn.1000297dc
nop
cmp qword [rsp + 0x170], 0x10
jb 0x10001a4dc
mov rcx, qword [rsp + 0x158]
call fcn.10002deec
movabs r15, 0x6666666666666667
jmp 0x10001a4e6
movabs r15, 0x6666666666666667
lea rcx, [rsp + 0xa8]
call qword [sym.imp.OLEAUT32.dll_VariantCopy]
mov eax, dword [rsp + 0x50]
mov rcx, qword [rsp + 0x80]
cmp rcx, r14
je 0x10001a0dc
mov rax, qword [rcx]
call qword [rax + 0x10]
mov eax, dword [rsp + 0x50]
jmp 0x10001a0dc
mov edi, r14d
jmp 0x10001a577
cmp edi, r14d
setge dil
mov rcx, qword [rsp + 0x88]
cmp rcx, r14
je 0x10001a592
mov rax, qword [rcx]
call qword [rax + 0x10]
nop
mov rcx, qword [rsp + 0x60]
cmp rcx, r14
je 0x10001a5a3
mov rax, qword [rcx]
call qword [rax + 0x10]
nop
mov rcx, qword [rsp + 0x98]
cmp rcx, r14
je 0x10001a5b7
mov rax, qword [rcx]
call qword [rax + 0x10]
nop
cmp rsi, r14
je 0x10001a5c6
mov rcx, rsi
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
nop
cmp r12, r14
je 0x10001a5d5
mov rcx, r12
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
nop
cmp rbx, r14
je 0x10001a5e3
mov rcx, rbx
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
mov al, dil
mov rcx, qword [rsp + 0x2a0]
xor rcx, rsp
call fcn.10002e2d0
lea r11, [rsp + 0x2b0]
mov rbx, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
ret