Function at 0x401630
Capabilities:
Connect to wmi namespace via wbemlocator
Reference wmi statements

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x9c
mov eax, dword [ebp + 0x1c]
mov dword [eax], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call dword [sym.imp.ole32.dll_CoInitializeEx]
sub esp, 8
test eax, eax
js 0x401f00
mov ebx, dword [0x82f038]
test ebx, ebx
je 0x401ce0
lea eax, [ebp - 0x64]
mov dword [ebp - 0x64], 0
mov dword [esp + 0xc], 0x74dfa0
mov dword [esp + 8], 1
mov dword [esp + 4], 0
mov dword [esp + 0x10], eax
mov dword [esp], 0x7491b4
call dword [sym.imp.ole32.dll_CoCreateInstance]
sub esp, 0x14
test eax, eax
js 0x401ea0
mov eax, dword [ebp - 0x64]
mov dword [ebp - 0x60], 0
mov eax, dword [eax]
mov esi, dword [eax + 0xc]
mov dword [esp], 0xc
call fcn.006eb380
mov dword [eax + 4], 0
mov dword [eax + 8], 1
mov ebx, eax
mov eax, dword [sym.imp.OLEAUT32.dll_SysAllocString]
mov dword [esp], str.ROOTCIMV2
mov dword [ebp - 0x6c], eax
call eax
sub esp, 4
test eax, eax
mov dword [ebx], eax
je 0x401ec4
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x64]
lea edx, [ebp - 0x60]
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x20], edx
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp], eax
call esi
sub esp, 0x24
mov esi, eax
lock sub dword [ebx + 8], 1
je 0x401d35
test esi, esi
js 0x401d66
mov eax, dword [ebp - 0x60]
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 3
mov dword [esp + 0x10], 3
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0xa
mov dword [esp], eax
call dword [sym.imp.ole32.dll_CoSetProxyBlanket]
sub esp, 0x20
test eax, eax
js 0x401ed0
mov eax, dword [ebp - 0x60]
mov dword [ebp - 0x5c], 0
mov eax, dword [eax]
mov eax, dword [eax + 0x50]
mov dword [esp], 0xc
mov dword [ebp - 0x70], eax
call fcn.006eb380
mov dword [eax + 4], 0
mov dword [eax + 8], 1
mov ebx, eax
mov dword [esp], str.SELECT__FROM_Win32_BaseBoard
call dword [ebp - 0x6c]
sub esp, 4
test eax, eax
mov edi, eax
mov dword [ebx], eax
je 0x401f20
mov dword [esp], 0xc
call fcn.006eb380
mov dword [eax + 4], 0
mov dword [eax + 8], 1
mov esi, eax
mov dword [esp], 0x71a194
call dword [ebp - 0x6c]
sub esp, 4
test eax, eax
mov dword [esi], eax
je 0x401f60
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x60]
lea ecx, [ebp - 0x5c]
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0x30
mov dword [esp + 0x14], ecx
mov dword [esp + 8], edi
mov dword [esp], eax
call dword [ebp - 0x70]
sub esp, 0x18
mov edi, eax
lock sub dword [esi + 8], 1
je 0x401dd0
lock sub dword [ebx + 8], 1
je 0x401da0
test edi, edi
js 0x402090
mov eax, dword [ebp - 0x5c]
mov dword [ebp - 0x4c], 0
test eax, eax
je 0x4019b5
lea ebx, [ebp - 0x4c]
lea esi, [ebp - 0x50]
lea edi, [ebp - 0x38]
jmp 0x401987
mov eax, dword [ebp - 0x50]
mov dword [ebp - 0x40], 0
lea ecx, [ebp - 0x48]
mov edx, dword [eax]
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], ecx
mov dword [esp + 8], 0
mov dword [esp + 4], str.Manufacturer
mov dword [esp], eax
call dword [edx + 0x10]
mov eax, dword [ebp - 0x40]
sub esp, 0x18
test eax, eax
je 0x4018e1
mov ecx, dword [ebp + 8]
mov dword [esp], eax
call fcn.00403d90
sub esp, 4
mov eax, dword [ebp - 0x50]
mov dword [ebp - 0x30], 0
mov edx, dword [eax]
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], edi
mov dword [esp + 8], 0
mov dword [esp + 4], str.Model
mov dword [esp], eax
call dword [edx + 0x10]
mov eax, dword [ebp - 0x30]
sub esp, 0x18
test eax, eax
je 0x40192f
mov ecx, dword [ebp + 0xc]
mov dword [esp], eax
call fcn.00403d90
sub esp, 4
mov eax, dword [ebp - 0x50]
mov dword [ebp - 0x20], 0
lea ecx, [ebp - 0x28]
mov edx, dword [eax]
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], ecx
mov dword [esp + 8], 0
mov dword [esp + 4], 0x71a1fc
mov dword [esp], eax
call dword [edx + 0x10]
mov eax, dword [ebp - 0x20]
sub esp, 0x18
test eax, eax
je 0x401980
mov ecx, dword [ebp + 0x10]
mov dword [esp], eax
call fcn.00403d90
sub esp, 4
mov eax, dword [ebp - 0x5c]
test eax, eax
je 0x4019b5
mov edx, dword [eax]
mov dword [esp + 0x10], ebx
mov dword [esp + 0xc], esi
mov dword [esp + 8], 1
mov dword [esp + 4], 0xffffffff
mov dword [esp], eax
call dword [edx + 0x10]
mov ecx, dword [ebp - 0x4c]
sub esp, 0x14
test ecx, ecx
jne 0x401890
mov eax, dword [ebp - 0x60]
mov eax, dword [eax]
mov eax, dword [eax + 0x50]
mov dword [esp], 0xc
mov dword [ebp - 0x70], eax
call fcn.006eb380
mov dword [eax + 4], 0
mov dword [eax + 8], 1
mov ebx, eax
mov dword [esp], str.SELECT__FROM_Win32_ComputerSystem
call dword [ebp - 0x6c]
sub esp, 4
test eax, eax
mov edi, eax
mov dword [ebx], eax
je 0x401fa0
mov dword [esp], 0xc
call fcn.006eb380
mov dword [eax + 4], 0
mov dword [eax + 8], 1
mov esi, eax
mov dword [esp], 0x71a194
call dword [ebp - 0x6c]
sub esp, 4
test eax, eax
mov dword [esi], eax
je 0x40200c
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x60]
lea ecx, [ebp - 0x5c]
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0x30
mov dword [esp + 0x14], ecx
mov dword [esp + 8], edi
mov dword [esp], eax
call dword [ebp - 0x70]
sub esp, 0x18
mov edi, eax
lock sub dword [esi + 8], 1
je 0x402020
lock sub dword [ebx + 8], 1
je 0x40204e
test edi, edi
js 0x4020b2
mov eax, dword [ebp - 0x5c]
mov dword [ebp - 0x48], 0
test eax, eax
je 0x401b67
lea ebx, [ebp - 0x4c]
lea esi, [ebp - 0x48]
lea edi, [ebp - 0x28]
jmp 0x401b39
mov eax, dword [ebp - 0x4c]
mov dword [ebp - 0x30], 0
lea ecx, [ebp - 0x38]
mov edx, dword [eax]
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], ecx
mov dword [esp + 8], 0
mov dword [esp + 4], str.Manufacturer
mov dword [esp], eax
call dword [edx + 0x10]
mov eax, dword [ebp - 0x30]
sub esp, 0x18
test eax, eax
je 0x401ae4
mov ecx, dword [ebp + 0x14]
mov dword [esp], eax
call fcn.00403d90
sub esp, 4
mov eax, dword [ebp - 0x4c]
mov dword [ebp - 0x20], 0
mov edx, dword [eax]
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], edi
mov dword [esp + 8], 0
mov dword [esp + 4], str.Model
mov dword [esp], eax
call dword [edx + 0x10]
mov eax, dword [ebp - 0x20]
sub esp, 0x18
test eax, eax
je 0x401b32
mov ecx, dword [ebp + 0x18]
mov dword [esp], eax
call fcn.00403d90
sub esp, 4
mov eax, dword [ebp - 0x5c]
test eax, eax
je 0x401b67
mov edx, dword [eax]
mov dword [esp + 0x10], esi
mov dword [esp + 0xc], ebx
mov dword [esp + 8], 1
mov dword [esp + 4], 0xffffffff
mov dword [esp], eax
call dword [edx + 0x10]
mov edx, dword [ebp - 0x48]
sub esp, 0x14
test edx, edx
jne 0x401a93
mov eax, dword [ebp - 0x60]
mov eax, dword [eax]
mov eax, dword [eax + 0x50]
mov dword [esp], 0xc
mov dword [ebp - 0x70], eax
call fcn.006eb380
mov dword [eax + 4], 0
mov dword [eax + 8], 1
mov ebx, eax
mov dword [esp], str.SELECT__FROM_Win32_SystemEnclosure
call dword [ebp - 0x6c]
sub esp, 4
test eax, eax
mov edi, eax
mov dword [ebx], eax
je 0x40207c
mov dword [esp], 0xc
call fcn.006eb380
mov dword [eax + 4], 0
mov dword [eax + 8], 1
mov esi, eax
mov dword [esp], 0x71a194
call dword [ebp - 0x6c]
sub esp, 4
test eax, eax
mov dword [esi], eax
je 0x4020a1
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x60]
lea ecx, [ebp - 0x5c]
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0x30
mov dword [esp + 0x14], ecx
mov dword [esp + 8], edi
mov dword [esp], eax
call dword [ebp - 0x70]
sub esp, 0x18
mov edi, eax
lock sub dword [esi + 8], 1
je 0x401fb0
lock sub dword [ebx + 8], 1
je 0x401fde
test edi, edi
js 0x4020c3
mov eax, dword [ebp - 0x5c]
mov dword [ebp - 0x54], 0
test eax, eax
je 0x401f30
mov esi, dword [ebp + 0x1c]
jmp 0x401c54
test ah, 0x20
jne 0x401e00
mov eax, dword [ebp - 0x5c]
test eax, eax
je 0x401f30
lea edi, [ebp - 0x54]
mov edx, dword [eax]
mov dword [esp + 8], 1
mov dword [esp + 4], 0xffffffff
mov dword [esp], eax
mov dword [esp + 0x10], edi
lea edi, [ebp - 0x58]
mov dword [esp + 0xc], edi
call dword [edx + 0x10]
mov eax, dword [ebp - 0x54]
sub esp, 0x14
test eax, eax
je 0x401f30
mov eax, dword [ebp - 0x58]
lea ebx, [ebp - 0x28]
mov edx, dword [eax]
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], ebx
mov dword [esp + 8], 0
mov dword [esp + 4], str.ChassisTypes
mov dword [esp], eax
call dword [edx + 0x10]
sub esp, 0x18
test eax, eax
js 0x401c49
movzx eax, word [ebp - 0x28]
cmp ax, 1
ja 0x401c40
mov dword [esi], 0
jmp 0x401c49
mov dword [esp + 0x20], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 3
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0xffffffff
mov dword [esp], 0
call dword [sym.imp.ole32.dll_CoInitializeSecurity]
sub esp, 0x24
jmp 0x401673
mov eax, dword [ebx]
test eax, eax
je 0x401d47
mov dword [esp], eax
call dword [sym.imp.OLEAUT32.dll_SysFreeString]
sub esp, 4
mov eax, dword [ebx + 4]
test eax, eax
je 0x401d56
mov dword [esp], eax
call fcn.006eb310
mov dword [esp], ebx
call fcn.006eb330
test esi, esi
jns 0x401755
mov dword [esp + 8], esi
mov dword [esp + 4], str.FAILED_to_connect_to_rootcimv2._Error_code__0x_lX_n
mov dword [esp], 0x835180
call fcn.0041e920
mov eax, dword [ebp - 0x64]
mov edx, dword [eax]
mov dword [esp], eax
call dword [edx + 8]
xor eax, eax
sub esp, 4
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret 0x18
mov eax, dword [ebx]
test eax, eax
je 0x401db2
mov dword [esp], eax
call dword [sym.imp.OLEAUT32.dll_SysFreeString]
sub esp, 4
mov eax, dword [ebx + 4]
test eax, eax
je 0x401dc1
mov dword [esp], eax
call fcn.006eb310
mov dword [esp], ebx
call fcn.006eb330
jmp 0x401861
mov eax, dword [esi]
test eax, eax
je 0x401de2
mov dword [esp], eax
call dword [sym.imp.OLEAUT32.dll_SysFreeString]
sub esp, 4
mov eax, dword [esi + 4]
test eax, eax
je 0x401df1
mov dword [esp], eax
call fcn.006eb310
mov dword [esp], esi
call fcn.006eb330
jmp 0x401856
mov ebx, dword [ebp - 0x20]
lea eax, [ebp - 0x50]
mov dword [ebp - 0x48], 0
mov dword [esp + 4], 1
lea edi, [ebp - 0x48]
mov dword [esp + 8], eax
mov dword [esp], ebx
call dword [sym.imp.OLEAUT32.dll_SafeArrayGetLBound]
lea eax, [ebp - 0x4c]
sub esp, 0xc
mov dword [esp + 4], 1
mov dword [esp], ebx
mov dword [esp + 8], eax
call dword [sym.imp.OLEAUT32.dll_SafeArrayGetUBound]
mov eax, dword [ebp - 0x50]
sub esp, 0xc
cmp eax, dword [ebp - 0x4c]
mov ecx, edi
lea edi, [ebp - 0x38]
mov dword [ebp - 0x38], eax
jg 0x401e8a
mov dword [ebp - 0x6c], ecx
lea esi, [esi]
lea edi, [edi]
mov eax, dword [ebp - 0x6c]
mov dword [esp + 4], edi
mov dword [esp], ebx
mov dword [esp + 8], eax
call dword [sym.imp.OLEAUT32.dll_SafeArrayGetElement]
mov eax, dword [ebp - 0x48]
sub esp, 0xc
mov dword [esi], eax
mov eax, dword [ebp - 0x38]
add eax, 1
cmp dword [ebp - 0x4c], eax
mov dword [ebp - 0x38], eax
jge 0x401e60
mov dword [esp], ebx
call dword [sym.imp.OLEAUT32.dll_SafeArrayDestroy]
sub esp, 4
jmp 0x401c49
mov dword [esp + 8], eax
mov dword [esp + 4], str.FAILED_to_create_IWbemLocator_object._Error_code__0x_lX_n
mov dword [esp], 0x835180
call fcn.0041e920
lea esp, [ebp - 0xc]
xor eax, eax
pop ebx
pop esi
pop edi
pop ebp
ret 0x18
mov dword [esp], 0x8007000e
call fcn.005f3960
mov dword [esp + 8], eax
mov dword [esp + 4], str.FAILED_to_set_proxy_blanket._Error_code__0x_lX_n
mov dword [esp], 0x835180
call fcn.0041e920
mov eax, dword [ebp - 0x60]
mov edx, dword [eax]
mov dword [esp], eax
call dword [edx + 8]
sub esp, 4
jmp 0x401d7e
mov dword [esp + 8], eax
mov dword [esp + 4], str.FAILED_to_initialize_COM_library._Error_code__0x_lX_n
mov dword [esp], 0x835180
call fcn.0041e920
xor eax, eax
jmp 0x401d8e
mov dword [esp], 0x8007000e
call fcn.005f3960
lea esi, [esi]
mov eax, dword [ebp - 0x60]
mov dword [0x82f038], 1
mov edx, dword [eax]
mov dword [esp], eax
call dword [edx + 8]
mov eax, dword [ebp - 0x64]
sub esp, 4
mov edx, dword [eax]
mov dword [esp], eax
call dword [edx + 8]
mov eax, 1
sub esp, 4
jmp 0x401d8e
mov dword [esp], 0x8007000e
call fcn.005f3960
mov esi, eax
mov dword [esp], ebx
call fcn.006eb330
mov dword [esp], esi
call fcn.005d7530
jmp 0x401f6c
mov dword [esp], esi
mov edi, eax
call fcn.006eb330
mov ecx, ebx
call fcn.00632ef0
mov dword [esp], edi
call fcn.005d7530
lea esi, [esi]
mov dword [esp], 0x8007000e
call fcn.005f3960
jmp 0x401f6c
mov eax, dword [esi]
test eax, eax
je 0x401fc2
mov dword [esp], eax
call dword [sym.imp.OLEAUT32.dll_SysFreeString]
sub esp, 4
mov eax, dword [esi + 4]
test eax, eax
je 0x401fd1
mov dword [esp], eax
call fcn.006eb310
mov dword [esp], esi
call fcn.006eb330
jmp 0x401c12
mov eax, dword [ebx]
test eax, eax
je 0x401ff0
mov dword [esp], eax
call dword [sym.imp.OLEAUT32.dll_SysFreeString]
sub esp, 4
mov eax, dword [ebx + 4]
test eax, eax
je 0x401fff
mov dword [esp], eax
call fcn.006eb310
mov dword [esp], ebx
call fcn.006eb330
jmp 0x401c1d
mov dword [esp], 0x8007000e
call fcn.005f3960
jmp 0x401f80
mov eax, dword [esi]
test eax, eax
je 0x402032
mov dword [esp], eax
call dword [sym.imp.OLEAUT32.dll_SysFreeString]
sub esp, 4
mov eax, dword [esi + 4]
test eax, eax
je 0x402041
mov dword [esp], eax
call fcn.006eb310
mov dword [esp], esi
call fcn.006eb330
jmp 0x401a60
mov eax, dword [ebx]
test eax, eax
je 0x402060
mov dword [esp], eax
call dword [sym.imp.OLEAUT32.dll_SysFreeString]
sub esp, 4
mov eax, dword [ebx + 4]
test eax, eax
je 0x40206f
mov dword [esp], eax
call fcn.006eb310
mov dword [esp], ebx
call fcn.006eb330
jmp 0x401a6b
mov dword [esp], 0x8007000e
call fcn.005f3960
jmp 0x401f6c
mov dword [esp + 8], edi
mov dword [esp + 4], str.FAILED_to_query_for_Win32_BaseBoard._Error_code__0x_lX_n
jmp 0x401edc
mov dword [esp], 0x8007000e
call fcn.005f3960
jmp 0x401f80
mov dword [esp + 8], edi
mov dword [esp + 4], str.FAILED_to_query_for_Win32_ComputerSystem._Error_code__0x_lX_n
jmp 0x401edc
mov dword [esp + 8], edi
mov dword [esp + 4], str.FAILED_to_query_for_Win32_SystemEnclosure._Error_code__0x_lX_n
jmp 0x401edc