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

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0xf8
xor ecx, ecx
mov r15, qword [rsp + 0x170]
mov rdi, rdx
mov rbp, r8
xor edx, edx
mov qword [rsp + 0x158], r9
mov dword [r15], 0
call qword [sym.imp.ole32.dll_CoInitializeEx]
test eax, eax
js 0x401f10
mov r8d, dword [0x008b5030]
test r8d, r8d
je 0x401d10
lea rax, [rsp + 0x70]
xor edx, edx
mov qword [rsp + 0x70], 0
mov r9, qword [0x00826900]
mov qword [rsp + 0x20], rax
mov r8d, 1
mov rcx, qword [0x008265e0]
call qword [sym.imp.ole32.dll_CoCreateInstance]
test eax, eax
js 0x401eb0
mov rax, qword [rsp + 0x70]
mov ecx, 0x18
mov qword [rsp + 0x78], 0
mov rax, qword [rax]
mov rsi, qword [rax + 0x18]
call fcn.007da0a0
lea rcx, str.ROOTCIMV2
mov rbx, rax
mov qword [rax + 8], 0
mov dword [rax + 0x10], 1
mov rax, qword [sym.imp.OLEAUT32.dll_SysAllocString]
mov qword [rsp + 0x50], rax
call rax
test rax, rax
mov qword [rbx], rax
je 0x401ed0
lea rdx, [rsp + 0x78]
xor r9d, r9d
xor r8d, r8d
mov rcx, qword [rsp + 0x70]
mov qword [rsp + 0x40], rdx
mov rdx, rax
mov qword [rsp + 0x38], 0
mov qword [rsp + 0x30], 0
mov dword [rsp + 0x28], 0
mov qword [rsp + 0x20], 0
call rsi
mov esi, eax
lock sub dword [rbx + 0x10], 1
je 0x401d52
test esi, esi
js 0x401d7e
xor r8d, r8d
xor r9d, r9d
mov edx, 0xa
mov rcx, qword [rsp + 0x78]
mov dword [rsp + 0x38], 0
mov qword [rsp + 0x30], 0
mov dword [rsp + 0x28], 3
mov dword [rsp + 0x20], 3
call qword [sym.imp.ole32.dll_CoSetProxyBlanket]
lea rdx, str.FAILED_to_set_proxy_blanket._Error_code__0x_lX_n
test eax, eax
mov r8d, eax
js 0x401ee4
mov rax, qword [rsp + 0x78]
mov ecx, 0x18
mov qword [rsp + 0x80], 0
mov rax, qword [rax]
mov r13, qword [rax + 0xa0]
call fcn.007da0a0
lea rcx, str.SELECT__FROM_Win32_BaseBoard
mov rbx, rax
mov qword [rax + 8], 0
mov dword [rax + 0x10], 1
mov rax, qword [rsp + 0x50]
call rax
test rax, rax
mov r12, rax
mov qword [rbx], rax
je 0x401f30
mov ecx, 0x18
call fcn.007da0a0
mov rsi, rax
mov qword [rax + 8], 0
mov dword [rax + 0x10], 1
lea rcx, [0x007f6164]
mov rax, qword [rsp + 0x50]
call rax
test rax, rax
mov qword [rsi], rax
je 0x401f70
lea rdx, [rsp + 0x80]
mov r9d, 0x30
mov r8, r12
mov rcx, qword [rsp + 0x78]
mov qword [rsp + 0x58], rdx
mov qword [rsp + 0x28], rdx
mov rdx, rax
mov qword [rsp + 0x20], 0
call r13
mov r12d, eax
lock sub dword [rsi + 0x10], 1
je 0x401de0
lock sub dword [rbx + 0x10], 1
je 0x401db5
lea rdx, str.FAILED_to_query_for_Win32_BaseBoard._Error_code__0x_lX_n
test r12d, r12d
mov r8d, r12d
js 0x401ee4
mov rcx, qword [rsp + 0x80]
mov dword [rsp + 0x6c], 0
test rcx, rcx
je 0x401984
mov qword [rsp + 0x170], r15
lea rbx, [rsp + 0x88]
mov r15, qword [rsp + 0x158]
lea rsi, [rsp + 0x6c]
lea r13, [rsp + 0x90]
lea r12, [rsp + 0xb0]
lea r14, [rsp + 0xd0]
jmp 0x401957
mov rcx, qword [rsp + 0x88]
xor r8d, r8d
mov r9, r13
mov qword [rsp + 0x98], 0
lea rdx, str.Manufacturer
mov rax, qword [rcx]
mov qword [rsp + 0x28], 0
mov qword [rsp + 0x20], 0
call qword [rax + 0x20]
mov rdx, qword [rsp + 0x98]
test rdx, rdx
je 0x4018ae
mov rcx, rdi
call fcn.00403c20
mov rcx, qword [rsp + 0x88]
xor r8d, r8d
mov r9, r12
mov qword [rsp + 0xb8], 0
lea rdx, str.Model
mov rax, qword [rcx]
mov qword [rsp + 0x28], 0
mov qword [rsp + 0x20], 0
call qword [rax + 0x20]
mov rdx, qword [rsp + 0xb8]
test rdx, rdx
je 0x4018fc
mov rcx, rbp
call fcn.00403c20
mov rcx, qword [rsp + 0x88]
xor r8d, r8d
mov r9, r14
mov qword [rsp + 0xd8], 0
lea rdx, [0x007f61d0]
mov rax, qword [rcx]
mov qword [rsp + 0x28], 0
mov qword [rsp + 0x20], 0
call qword [rax + 0x20]
mov rdx, qword [rsp + 0xd8]
test rdx, rdx
je 0x40194a
mov rcx, r15
call fcn.00403c20
mov rcx, qword [rsp + 0x80]
test rcx, rcx
je 0x40197c
mov rax, qword [rcx]
mov r9, rbx
mov qword [rsp + 0x20], rsi
mov r8d, 1
mov edx, 0xffffffff
call qword [rax + 0x20]
mov ecx, dword [rsp + 0x6c]
test ecx, ecx
jne 0x401860
mov r15, qword [rsp + 0x170]
mov rax, qword [rsp + 0x78]
mov ecx, 0x18
mov rax, qword [rax]
mov rbp, qword [rax + 0xa0]
call fcn.007da0a0
lea rcx, str.SELECT__FROM_Win32_ComputerSystem
mov rbx, rax
mov qword [rax + 8], 0
mov dword [rax + 0x10], 1
mov rax, qword [rsp + 0x50]
call rax
test rax, rax
mov rdi, rax
mov qword [rbx], rax
je 0x401fb0
mov ecx, 0x18
call fcn.007da0a0
mov rsi, rax
mov qword [rax + 8], 0
mov dword [rax + 0x10], 1
lea rcx, [0x007f6164]
mov rax, qword [rsp + 0x50]
call rax
test rax, rax
mov qword [rsi], rax
je 0x402012
mov rdx, qword [rsp + 0x58]
mov r9d, 0x30
mov r8, rdi
mov qword [rsp + 0x20], 0
mov rcx, qword [rsp + 0x78]
mov qword [rsp + 0x28], rdx
mov rdx, rax
call rbp
mov edi, eax
lock sub dword [rsi + 0x10], 1
je 0x40204a
lock sub dword [rbx + 0x10], 1
je 0x402021
lea rdx, str.FAILED_to_query_for_Win32_ComputerSystem._Error_code__0x_lX_n
test edi, edi
mov r8d, edi
js 0x401ee4
mov rcx, qword [rsp + 0x80]
mov dword [rsp + 0x88], 0
test rcx, rcx
je 0x401b7d
lea rbx, [rsp + 0x88]
mov r13, qword [rsp + 0x160]
lea rsi, [rsp + 0x90]
mov r14, qword [rsp + 0x168]
lea r12, [rsp + 0xb0]
lea rbp, str.Manufacturer
lea rdi, [rsp + 0xd0]
jmp 0x401b55
mov rcx, qword [rsp + 0x90]
xor r8d, r8d
mov rdx, rbp
mov r9, r12
mov qword [rsp + 0xb8], 0
mov rax, qword [rcx]
mov qword [rsp + 0x28], 0
mov qword [rsp + 0x20], 0
call qword [rax + 0x20]
mov rdx, qword [rsp + 0xb8]
test rdx, rdx
je 0x401afa
mov rcx, r13
call fcn.00403c20
mov rcx, qword [rsp + 0x90]
xor r8d, r8d
mov r9, rdi
mov qword [rsp + 0xd8], 0
lea rdx, str.Model
mov rax, qword [rcx]
mov qword [rsp + 0x28], 0
mov qword [rsp + 0x20], 0
call qword [rax + 0x20]
mov rdx, qword [rsp + 0xd8]
test rdx, rdx
je 0x401b48
mov rcx, r14
call fcn.00403c20
mov rcx, qword [rsp + 0x80]
test rcx, rcx
je 0x401b7d
mov rax, qword [rcx]
mov edx, 0xffffffff
mov qword [rsp + 0x20], rbx
mov r9, rsi
mov r8d, 1
call qword [rax + 0x20]
mov edx, dword [rsp + 0x88]
test edx, edx
jne 0x401ab0
mov rax, qword [rsp + 0x78]
mov ecx, 0x18
mov rax, qword [rax]
mov rbp, qword [rax + 0xa0]
call fcn.007da0a0
lea rcx, str.SELECT__FROM_Win32_SystemEnclosure
mov rbx, rax
mov qword [rax + 8], 0
mov dword [rax + 0x10], 1
mov rax, qword [rsp + 0x50]
call rax
test rax, rax
mov rdi, rax
mov qword [rbx], rax
je 0x402073
mov ecx, 0x18
call fcn.007da0a0
mov rsi, rax
mov qword [rax + 8], 0
mov dword [rax + 0x10], 1
lea rcx, [0x007f6164]
mov rax, qword [rsp + 0x50]
call rax
test rax, rax
mov qword [rsi], rax
je 0x402082
mov rdx, qword [rsp + 0x58]
mov r9d, 0x30
mov r8, rdi
mov qword [rsp + 0x20], 0
mov rcx, qword [rsp + 0x78]
mov qword [rsp + 0x28], rdx
mov rdx, rax
call rbp
mov edi, eax
lock sub dword [rsi + 0x10], 1
je 0x401fe9
lock sub dword [rbx + 0x10], 1
je 0x401fc0
test edi, edi
js 0x401eda
mov rcx, qword [rsp + 0x80]
mov dword [rsp + 0x64], 0
test rcx, rcx
je 0x401f40
lea rax, [rsp + 0x68]
mov rbp, qword [sym.imp.OLEAUT32.dll_SafeArrayGetElement]
lea r13, [rsp + 0xb0]
mov qword [rsp + 0x50], rax
lea r12, [rsp + 0x64]
lea r14, [rsp + 0xd0]
jmp 0x401c9c
test ah, 0x20
jne 0x401e10
mov rcx, qword [rsp + 0x80]
test rcx, rcx
je 0x401f40
mov rax, qword [rcx]
mov r9, r13
mov qword [rsp + 0x20], r12
mov r8d, 1
mov edx, 0xffffffff
call qword [rax + 0x20]
mov eax, dword [rsp + 0x64]
test eax, eax
je 0x401f40
mov rcx, qword [rsp + 0xb0]
xor r8d, r8d
mov r9, r14
lea rdx, str.ChassisTypes
mov rax, qword [rcx]
mov qword [rsp + 0x28], 0
mov qword [rsp + 0x20], 0
call qword [rax + 0x20]
test eax, eax
js 0x401c8b
movzx eax, word [rsp + 0xd0]
cmp ax, 1
ja 0x401c82
mov dword [r15], 0
jmp 0x401c8b
mov dword [rsp + 0x38], 0
xor r9d, r9d
xor r8d, r8d
xor ecx, ecx
mov qword [rsp + 0x40], 0
mov edx, 0xffffffff
mov qword [rsp + 0x30], 0
mov dword [rsp + 0x28], 3
mov dword [rsp + 0x20], 0
call qword [sym.imp.ole32.dll_CoInitializeSecurity]
jmp 0x401602
mov rcx, qword [rbx]
test rcx, rcx
je 0x401d60
call qword [sym.imp.OLEAUT32.dll_SysFreeString]
mov rcx, qword [rbx + 8]
test rcx, rcx
je 0x401d6e
call fcn.007da030
mov rcx, rbx
call fcn.007da050
test esi, esi
jns 0x4016dd
mov rcx, qword [0x00826910]
mov r8d, esi
lea rdx, str.FAILED_to_connect_to_rootcimv2._Error_code__0x_lX_n
call fcn.0041db00
mov rcx, qword [rsp + 0x70]
mov rax, qword [rcx]
call qword [rax + 0x10]
xor eax, eax
add rsp, 0xf8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov rcx, qword [rbx]
test rcx, rcx
je 0x401dc3
call qword [sym.imp.OLEAUT32.dll_SysFreeString]
mov rcx, qword [rbx + 8]
test rcx, rcx
je 0x401dd1
call fcn.007da030
mov rcx, rbx
call fcn.007da050
jmp 0x4017f8
mov rcx, qword [rsi]
test rcx, rcx
je 0x401dee
call qword [sym.imp.OLEAUT32.dll_SysFreeString]
mov rcx, qword [rsi + 8]
test rcx, rcx
je 0x401dfc
call fcn.007da030
mov rcx, rsi
call fcn.007da050
jmp 0x4017ed
mov rbx, qword [rsp + 0xd8]
mov edx, 1
mov dword [rsp + 0x88], 0
mov r8, qword [rsp + 0x50]
lea rdi, [rsp + 0x88]
lea rsi, [rsp + 0x90]
mov rcx, rbx
call qword [sym.imp.OLEAUT32.dll_SafeArrayGetLBound]
lea r8, [rsp + 0x6c]
mov edx, 1
mov rcx, rbx
call qword [sym.imp.OLEAUT32.dll_SafeArrayGetUBound]
mov eax, dword [rsp + 0x68]
cmp eax, dword [rsp + 0x6c]
mov dword [rsp + 0x90], eax
jg 0x401e9c
nop word [rax + rax]
mov r8, rdi
mov rdx, rsi
mov rcx, rbx
call rbp
mov eax, dword [rsp + 0x88]
mov dword [r15], eax
mov eax, dword [rsp + 0x90]
add eax, 1
cmp dword [rsp + 0x6c], eax
mov dword [rsp + 0x90], eax
jge 0x401e70
mov rcx, rbx
call qword [sym.imp.OLEAUT32.dll_SafeArrayDestroy]
jmp 0x401c8b
mov rcx, qword [0x00826910]
mov r8d, eax
lea rdx, str.FAILED_to_create_IWbemLocator_object._Error_code__0x_lX_n
call fcn.0041db00
xor eax, eax
jmp 0x401da1
mov ecx, 0x8007000e
call fcn.00697cc0
lea rdx, str.FAILED_to_query_for_Win32_SystemEnclosure._Error_code__0x_lX_n
mov r8d, edi
mov rcx, qword [0x00826910]
call fcn.0041db00
mov rcx, qword [rsp + 0x78]
mov rax, qword [rcx]
call qword [rax + 0x10]
mov rcx, qword [rsp + 0x70]
mov rax, qword [rcx]
call qword [rax + 0x10]
xor eax, eax
jmp 0x401da1
mov rcx, qword [0x00826910]
mov r8d, eax
lea rdx, str.FAILED_to_initialize_COM_library._Error_code__0x_lX_n
call fcn.0041db00
xor eax, eax
jmp 0x401da1
mov ecx, 0x8007000e
call fcn.00697cc0
nop word [rax + rax]
mov dword [0x008b5030], 1
mov rcx, qword [rsp + 0x78]
mov rax, qword [rcx]
call qword [rax + 0x10]
mov rcx, qword [rsp + 0x70]
mov rax, qword [rcx]
call qword [rax + 0x10]
mov eax, 1
jmp 0x401da1
mov ecx, 0x8007000e
call fcn.00697cc0
mov rsi, rax
mov rcx, rbx
call fcn.007da050
mov rcx, rsi
call fcn.0067d310
jmp 0x401f7a
mov rcx, rsi
mov rdi, rax
call fcn.007da050
mov rcx, rbx
call fcn.006fcfa0
mov rcx, rdi
call fcn.0067d310
nop word [rax + rax]
mov ecx, 0x8007000e
call fcn.00697cc0
jmp 0x401f7a
mov rcx, qword [rbx]
test rcx, rcx
je 0x401fce
call qword [sym.imp.OLEAUT32.dll_SysFreeString]
mov rcx, qword [rbx + 8]
test rcx, rcx
je 0x401fdc
call fcn.007da030
mov rcx, rbx
call fcn.007da050
jmp 0x401c39
mov rcx, qword [rsi]
test rcx, rcx
je 0x401ff7
call qword [sym.imp.OLEAUT32.dll_SysFreeString]
mov rcx, qword [rsi + 8]
test rcx, rcx
je 0x402005
call fcn.007da030
mov rcx, rsi
call fcn.007da050
jmp 0x401c2e
mov ecx, 0x8007000e
call fcn.00697cc0
jmp 0x401f8f
mov rcx, qword [rbx]
test rcx, rcx
je 0x40202f
call qword [sym.imp.OLEAUT32.dll_SysFreeString]
mov rcx, qword [rbx + 8]
test rcx, rcx
je 0x40203d
call fcn.007da030
mov rcx, rbx
call fcn.007da050
jmp 0x401a40
mov rcx, qword [rsi]
test rcx, rcx
je 0x402058
call qword [sym.imp.OLEAUT32.dll_SysFreeString]
mov rcx, qword [rsi + 8]
test rcx, rcx
je 0x402066
call fcn.007da030
mov rcx, rsi
call fcn.007da050
jmp 0x401a35
mov ecx, 0x8007000e
call fcn.00697cc0
jmp 0x401f7a
mov ecx, 0x8007000e
call fcn.00697cc0
jmp 0x401f8f