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

Disassembly:
push 0x174
mov eax, 0x4298bb
call fcn.00413ec1
lea eax, [ebp - 0x15c]
push eax
mov dword [ebp - 0x16c], ecx
mov dword [ebp - 0x15c], 0x114
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
xor ebx, ebx
cmp dword [ebp - 0x158], 5
ja 0x40ea7e
jne 0x40ea76
cmp dword [ebp - 0x154], 1
jae 0x40ea7e
mov byte [ebp - 0x15d], bl
jmp 0x40ea85
mov byte [ebp - 0x15d], 1
push ebx
push ebx
mov byte [ebp - 0x15e], 1
call dword [sym.imp.ole32.dll_CoInitializeEx]
cmp eax, 0x80010106
jne 0x40eaa3
mov byte [ebp - 0x15e], bl
jmp 0x40eaab
cmp eax, ebx
jl 0x40ecb6
push ebx
push ebx
push ebx
push 3
push ebx
push ebx
push ebx
push 0xffffffffffffffff
push ebx
call dword [sym.imp.ole32.dll_CoInitializeSecurity]
cmp eax, 0x80010119
je 0x40eacb
cmp eax, ebx
jl 0x40eca8
mov dword [ebp - 0x168], ebx
xor eax, eax
inc eax
mov dword [ebp - 4], eax
lea ecx, [ebp - 0x168]
push ecx
push 0x43b5d8
push eax
push ebx
push 0x43b6a8
call dword [sym.imp.ole32.dll_CoCreateInstance]
cmp eax, ebx
jge 0x40eaf9
jmp 0x40ec94
mov dword [ebp - 0x164], ebx
mov byte [ebp - 4], 4
mov esi, dword [ebp - 0x168]
push str.rootcimv2
lea ecx, [ebp - 0x170]
call fcn.0040dd7b
mov byte [ebp - 4], 5
mov eax, dword [eax]
cmp eax, ebx
je 0x40eb27
mov eax, dword [eax]
jmp 0x40eb29
xor eax, eax
mov ecx, dword [esi]
lea edx, [ebp - 0x164]
push edx
movzx edx, byte [ebp - 0x15d]
push ebx
push ebx
neg edx
sbb edx, edx
and edx, 0x80
push edx
push ebx
push ebx
push ebx
push eax
push esi
call dword [ecx + 0xc]
mov esi, eax
mov byte [ebp - 4], 4
mov ecx, dword [ebp - 0x170]
cmp ecx, ebx
je 0x40eb69
call fcn.0040ddc8
mov dword [ebp - 0x170], ebx
cmp esi, ebx
jge 0x40eb86
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x164]
cmp eax, ebx
je 0x40eb81
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
jmp 0x40ec94
push ebx
push ebx
push 3
push 3
push ebx
push ebx
push 0xa
push dword [ebp - 0x164]
call dword [sym.imp.ole32.dll_CoSetProxyBlanket]
mov edx, dword [ebp - 0x164]
mov eax, str.SerialNumber
mov dword [ebp - 0x180], eax
mov dword [ebp - 0x174], eax
push 3
lea eax, [ebp - 0x180]
push eax
push str.SELECT__FROM_Win32_BIOS
lea ecx, [ebp - 0x48]
mov dword [ebp - 0x17c], str.Caption
mov dword [ebp - 0x178], str.Manufacturer
mov dword [ebp - 0x170], str.Model
call fcn.0040e6a7
mov byte [ebp - 4], 8
mov ecx, dword [ebp - 0x16c]
lea eax, [ebp - 0x48]
push eax
push 3
pop edx
call fcn.0040e559
mov ecx, dword [ebp - 0x16c]
push ebx
lea edx, [ebp - 0x2c]
call fcn.0040e89a
mov byte [ebp - 4], 9
cmp dword [eax + 0x10], ebx
sete byte [ebp - 0x15d]
mov byte [ebp - 4], 8
push ebx
push 1
lea ecx, [ebp - 0x2c]
call fcn.00401250
cmp byte [ebp - 0x15d], bl
je 0x40ec71
mov edx, dword [ebp - 0x164]
push 2
lea eax, [ebp - 0x174]
push eax
push str.SELECT__FROM_Win32_PhysicalMedia
lea ecx, [ebp - 0x2c]
call fcn.0040e6a7
mov byte [ebp - 4], 0xa
mov ecx, dword [ebp - 0x16c]
lea eax, [ebp - 0x2c]
push eax
xor edx, edx
call fcn.0040e559
mov byte [ebp - 4], 8
push ebx
push 1
lea ecx, [ebp - 0x2c]
call fcn.00401250
mov byte [ebp - 4], 4
push ebx
push 1
lea ecx, [ebp - 0x48]
call fcn.00401250
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x164]
cmp eax, ebx
je 0x40ec94
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
or dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x168]
cmp eax, ebx
je 0x40eca8
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
cmp byte [ebp - 0x15e], bl
je 0x40ecb6
call dword [sym.imp.ole32.dll_CoUninitialize]
xor al, al
call fcn.00413f44
ret