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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x10145df8
mov eax, dword fs:[0]
push eax
sub esp, 0x40
push ebx
push esi
push edi
mov eax, dword [0x10189710]
xor eax, esp
push eax
lea eax, [esp + 0x50]
mov dword fs:[0], eax
mov ecx, dword [ebp + 8]
xor esi, esi
cmp ecx, esi
je 0x1003735d
mov eax, dword [ebp + 0x10]
cmp eax, esi
je 0x1003735d
push esi
mov byte [ecx], 0
push esi
mov byte [eax], 0
call dword [sym.imp.ole32.dll_CoInitializeEx]
cmp eax, 0x80070057
je 0x10037329
cmp eax, 0x8007000e
je 0x10037329
cmp eax, 0x8000ffff
je 0x10037329
cmp eax, 0x80010106
je 0x10037329
cmp eax, esi
jge 0x10037329
push eax
mov eax, dword [ebp + 0xc]
push str._PCI__Failed_to_initialize_COM_library._Error_code__0x_x
push eax
call fcn.10127dc0
add esp, 0xc
xor eax, eax
mov ecx, dword [esp + 0x50]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push esi
push esi
push esi
push 3
push esi
push esi
push esi
push 0xffffffffffffffff
push esi
call dword [sym.imp.ole32.dll_CoInitializeSecurity]
cmp eax, esi
jge 0x10037372
cmp eax, 0x80010119
je 0x10037372
mov ecx, dword [ebp + 0xc]
push eax
push str._PCI__Failed_to_initialize_security._Error_code__0x_x
push ecx
call fcn.10127dc0
add esp, 0xc
call dword [sym.imp.ole32.dll_CoUninitialize]
xor eax, eax
mov ecx, dword [esp + 0x50]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
lea edx, [esp + 0x18]
push edx
push 0x1014d1a4
push 1
push esi
push 0x1014d274
mov dword [esp + 0x2c], esi
call dword [sym.imp.ole32.dll_CoCreateInstance]
cmp eax, esi
jge 0x1003739e
push eax
mov eax, dword [ebp + 0xc]
push str._PCI__CoCreateInstance_of_CLSID_WbemLocator_Failed._Error_code__0x_x
push eax
jmp 0x1003734f
lea ecx, [esp + 0x24]
push ecx
mov edi, str.ROOTCIMV2
mov dword [esp + 0x18], esi
call fcn.1000ad90
mov dword [esp + 0x58], esi
mov eax, dword [eax]
cmp eax, esi
je 0x100373bf
mov ecx, dword [eax]
jmp 0x100373c1
xor ecx, ecx
mov eax, dword [esp + 0x18]
mov edx, dword [eax]
lea edi, [esp + 0x14]
push edi
push esi
push esi
push esi
push esi
push esi
push esi
push ecx
push eax
mov eax, dword [edx + 0xc]
call eax
lea edi, [esp + 0x24]
mov ebx, eax
mov dword [esp + 0x58], 0xffffffff
call fcn.1000ae30
cmp ebx, esi
jge 0x1003741b
mov ecx, dword [ebp + 0xc]
push ebx
push str._PCI__Could_not_ConnectServer._Error_code__0x_x
push ecx
call fcn.10127dc0
mov eax, dword [esp + 0x24]
add esp, 0xc
cmp eax, esi
je 0x10037357
mov edx, dword [eax]
push eax
mov eax, dword [edx + 8]
call eax
jmp 0x10037357
mov ecx, dword [esp + 0x14]
push esi
push esi
push 3
push 3
push esi
push esi
push 0xa
push ecx
call dword [sym.imp.ole32.dll_CoSetProxyBlanket]
cmp eax, esi
jge 0x1003746f
mov edx, dword [ebp + 0xc]
push eax
push str._PCI__Could_not_CoSetProxyBlanket._Error_code__0x_x
push edx
call fcn.10127dc0
mov eax, dword [esp + 0x20]
add esp, 0xc
cmp eax, esi
je 0x10037456
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov eax, dword [esp + 0x18]
cmp eax, esi
je 0x10037357
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
jmp 0x10037357
push str.SELECT__FROM_Win32_BaseBoard
lea ebx, [esp + 0x2c]
mov dword [esp + 0x14], esi
call fcn.1000ad00
mov edi, eax
push 0x10156da8
lea ebx, [esp + 0x28]
mov dword [esp + 0x5c], 1
call fcn.1000ad00
mov byte [esp + 0x58], 2
mov ecx, dword [edi]
test ecx, ecx
je 0x100374a8
mov ecx, dword [ecx]
jmp 0x100374aa
xor ecx, ecx
mov eax, dword [eax]
test eax, eax
je 0x100374b4
mov edx, dword [eax]
jmp 0x100374b6
xor edx, edx
mov eax, dword [esp + 0x14]
mov esi, dword [eax]
lea edi, [esp + 0x10]
push edi
push 0
push 0x30
push ecx
push edx
push eax
mov eax, dword [esi + 0x50]
call eax
lea edi, [esp + 0x24]
mov ebx, eax
call fcn.1000ae30
lea edi, [esp + 0x28]
mov dword [esp + 0x58], 0xffffffff
call fcn.1000ae30
test ebx, ebx
jge 0x10037528
mov ecx, dword [ebp + 0xc]
push ebx
push str._PCI__Query_for_Identification_Number_failed._Error_code__0x_x
push ecx
call fcn.10127dc0
mov eax, dword [esp + 0x20]
add esp, 0xc
test eax, eax
je 0x1003750f
mov edx, dword [eax]
push eax
mov eax, dword [edx + 8]
call eax
mov eax, dword [esp + 0x18]
test eax, eax
je 0x10037357
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
jmp 0x10037357
mov eax, dword [esp + 0x10]
mov dword [esp + 0x1c], 0
test eax, eax
je 0x100376b2
lea edx, [esp + 0x20]
push edx
lea edx, [esp + 0x20]
push edx
push 1
xor esi, esi
mov dword [esp + 0x2c], esi
mov ecx, dword [eax]
push 0xffffffffffffffff
push eax
mov eax, dword [ecx + 0x10]
call eax
cmp dword [esp + 0x20], esi
je 0x100376ae
cmp dword [esp + 0x1c], esi
je 0x100376ae
mov edi, dword [ebp + 8]
cmp byte [edi], 0
jne 0x10037607
lea ecx, [esp + 0x2c]
push ecx
call dword [sym.imp.OLEAUT32.dll_VariantClear]
mov eax, dword [esp + 0x1c]
mov edx, dword [eax]
mov edx, dword [edx + 0x10]
push esi
push esi
lea ecx, [esp + 0x34]
push ecx
push esi
push str.SerialNumber
push eax
call edx
cmp word [esp + 0x2c], 8
jne 0x100375fc
mov eax, dword [esp + 0x34]
cmp eax, esi
je 0x100375fc
push eax
lea ebx, [esp + 0x28]
mov dword [esp + 0x28], esi
call fcn.10073be0
mov ebx, dword [esp + 0x28]
add esp, 4
test ebx, ebx
je 0x100375fc
mov edx, edi
mov eax, ebx
sub edx, ebx
jmp 0x100375d0
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x100375d0
mov esi, edi
call fcn.10037250
push 0x10156870
mov eax, esi
push 0x10156858
push eax
call fcn.10064100
push ebx
call fcn.10128243
add esp, 0x10
lea ecx, [esp + 0x2c]
push ecx
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
mov esi, dword [ebp + 0x10]
cmp byte [esi], 0
jne 0x10037696
lea edx, [esp + 0x3c]
push edx
call dword [sym.imp.OLEAUT32.dll_VariantClear]
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax]
push 0
push 0
lea edx, [esp + 0x44]
push edx
push 0
push str.Manufacturer
push eax
mov eax, dword [ecx + 0x10]
call eax
cmp word [esp + 0x3c], 8
jne 0x1003768b
mov eax, dword [esp + 0x44]
test eax, eax
je 0x1003768b
push eax
lea ebx, [esp + 0x28]
mov dword [esp + 0x28], 0
call fcn.10073be0
mov ebx, dword [esp + 0x28]
add esp, 4
test ebx, ebx
je 0x1003768b
mov edx, esi
mov eax, ebx
sub edx, ebx
lea ecx, [ecx]
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x10037670
call fcn.10037250
push ebx
call fcn.10128243
mov edi, dword [ebp + 8]
add esp, 4
lea ecx, [esp + 0x3c]
push ecx
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
cmp byte [edi], 0
je 0x100376a0
cmp byte [esi], 0
jne 0x100376ae
mov eax, dword [esp + 0x10]
test eax, eax
jne 0x1003753c
jmp 0x100376b2
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
test ecx, ecx
je 0x100376c6
mov edx, dword [ecx]
mov eax, dword [edx + 8]
push ecx
call eax
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x18]
test ecx, ecx
je 0x100376da
mov edx, dword [ecx]
mov eax, dword [edx + 8]
push ecx
call eax
mov eax, dword [esp + 0x10]
test eax, eax
je 0x100376e6
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x100376f6
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
call dword [sym.imp.ole32.dll_CoUninitialize]
mov eax, 1
mov ecx, dword [esp + 0x50]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret