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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x413f40
mov eax, dword fs:[0]
push eax
sub esp, 0x104
mov eax, dword [0x41b040]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
push 0
push 0
call dword [sym.imp.ole32.dll_CoInitializeEx]
push 0
push 0
push 0
push 3
push 0
push 0
push 0
push 0xffffffffffffffff
push 0
call dword [sym.imp.ole32.dll_CoInitializeSecurity]
lea eax, [ebp - 0xd0]
mov dword [ebp - 0xd0], 0
push eax
push 0x4155b8
push 1
push 0
push 0x4155c8
call dword [sym.imp.ole32.dll_CoCreateInstance]
mov eax, dword [ebp - 0xd0]
mov dword [ebp - 0xcc], 0
push 0xc
mov eax, dword [eax]
mov edi, dword [eax + 0xc]
call fcn.0041211b
mov esi, eax
add esp, 4
mov dword [ebp - 0xec], esi
mov dword [ebp - 4], 0
test esi, esi
je 0x40546a
xorps xmm0, xmm0
movq qword [esi], xmm0
mov dword [esi + 8], 0
push 0x41584c
mov dword [esi + 4], 0
mov dword [esi + 8], 1
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov dword [esi], eax
test eax, eax
je 0x405be9
jmp 0x40546c
xor esi, esi
mov dword [ebp - 4], 0xffffffff
mov dword [ebp - 0xec], esi
test esi, esi
je 0x405bf3
lea eax, [ebp - 0xcc]
mov dword [ebp - 4], 1
push eax
push 0
push 0
push 0
push 0
push 0
push 0
push dword [esi]
push dword [ebp - 0xd0]
call edi
or edi, 0xffffffff
mov dword [ebp - 4], 0xffffffff
mov eax, edi
lock xadd dword [esi + 8], eax
dec eax
mov ebx, dword [sym.imp.OLEAUT32.dll_SysStringLen]
jne 0x4054f0
mov eax, dword [esi]
test eax, eax
je 0x4054ce
push eax
call ebx
mov dword [esi], 0
mov eax, dword [esi + 4]
test eax, eax
je 0x4054e5
push eax
call fcn.00412382
add esp, 4
mov dword [esi + 4], 0
push 0xc
push esi
call fcn.00412260
add esp, 8
push 0
push 0
push 3
push 3
push 0
push 0
push 0xa
push dword [ebp - 0xcc]
call dword [sym.imp.ole32.dll_CoSetProxyBlanket]
mov eax, dword [ebp - 0xcc]
lea ecx, [ebp - 0xec]
mov dword [ebp - 0xd8], 0
push str.SELECT__FROM_Win32_VideoController
mov eax, dword [eax]
mov eax, dword [eax + 0x50]
mov dword [ebp - 0xf4], eax
call fcn.00405290
mov dword [ebp - 4], 2
mov esi, dword [eax]
test esi, esi
je 0x405546
mov esi, dword [esi]
jmp 0x405548
xor esi, esi
push 0x415888
lea ecx, [ebp - 0xf0]
call fcn.00405290
mov byte [ebp - 4], 3
mov eax, dword [eax]
test eax, eax
je 0x405566
mov eax, dword [eax]
jmp 0x405568
xor eax, eax
lea ecx, [ebp - 0xd8]
push ecx
push 0
push 0x30
push esi
push eax
push dword [ebp - 0xcc]
call dword [ebp - 0xf4]
mov esi, dword [ebp - 0xf0]
test esi, esi
je 0x4055d4
mov eax, edi
lock xadd dword [esi + 8], eax
dec eax
jne 0x4055ca
test esi, esi
je 0x4055ca
mov eax, dword [esi]
test eax, eax
je 0x4055a8
push eax
call ebx
mov dword [esi], 0
mov eax, dword [esi + 4]
test eax, eax
je 0x4055bf
push eax
call fcn.00412382
add esp, 4
mov dword [esi + 4], 0
push 0xc
push esi
call fcn.00412260
add esp, 8
mov dword [ebp - 0xf0], 0
mov dword [ebp - 4], 0xffffffff
mov esi, dword [ebp - 0xec]
test esi, esi
je 0x405624
mov eax, edi
lock xadd dword [esi + 8], eax
dec eax
jne 0x405624
test esi, esi
je 0x405624
mov eax, dword [esi]
test eax, eax
je 0x405602
push eax
call ebx
mov dword [esi], 0
mov eax, dword [esi + 4]
test eax, eax
je 0x405619
push eax
call fcn.00412382
add esp, 4
mov dword [esi + 4], 0
push 0xc
push esi
call fcn.00412260
add esp, 8
push 0x98
lea eax, [ebp - 0xc8]
mov dword [ebp - 0xd4], 0
push 0
push eax
mov dword [ebp - 0x2c], 0
call sub.VCRUNTIME140.dll_memset
add esp, 8
lea ecx, [ebp - 0xc8]
call fcn.004077f0
mov dword [ebp - 4], 4
mov ecx, dword [ebp - 0xd8]
test ecx, ecx
je 0x405b58
mov eax, dword [ecx]
lea edx, [ebp - 0x2c]
push edx
lea edx, [ebp - 0xd4]
push edx
push 1
push 0xffffffffffffffff
push ecx
call dword [eax + 0x10]
cmp dword [ebp - 0x2c], 0
je 0x405b58
mov ecx, dword [ebp - 0xd4]
lea edx, [ebp - 0xe8]
push 0
push 0
push edx
mov eax, dword [ecx]
push 0
push 0x41588c
push ecx
call dword [eax + 0x10]
test eax, eax
js 0x405785
mov eax, dword [ebp - 0xe0]
push 0xc
mov dword [ebp - 0xf0], eax
call fcn.0041211b
mov esi, eax
add esp, 4
mov dword [ebp - 0xec], esi
mov byte [ebp - 4], 5
test esi, esi
je 0x405712
push dword [ebp - 0xf0]
xorps xmm0, xmm0
movq qword [esi], xmm0
mov dword [esi + 8], 0
mov dword [esi + 4], 0
mov dword [esi + 8], 1
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov dword [esi], eax
test eax, eax
jne 0x405714
cmp dword [ebp - 0xf0], eax
jne 0x405bfd
jmp 0x405714
xor esi, esi
mov byte [ebp - 4], 4
mov dword [ebp - 0xec], esi
test esi, esi
je 0x405c07
mov byte [ebp - 4], 6
mov eax, dword [esi + 4]
test eax, eax
jne 0x40573b
push dword [esi]
call fcn.004130d0
mov dword [esi + 4], eax
mov edx, eax
lea ecx, [ebp - 0xc8]
call fcn.00402da0
mov byte [ebp - 4], 4
lock xadd dword [esi + 8], edi
dec edi
jne 0x405785
mov eax, dword [esi]
test eax, eax
je 0x405763
push eax
call ebx
mov dword [esi], 0
mov eax, dword [esi + 4]
test eax, eax
je 0x40577a
push eax
call fcn.00412382
add esp, 4
mov dword [esi + 4], 0
push 0xc
push esi
call fcn.00412260
add esp, 8
lea eax, [ebp - 0xe8]
push eax
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
mov eax, dword [ebp - 0xd4]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
lea eax, [ebp - 0x10c]
push eax
lea ecx, [ebp - 0xc4]
call fcn.00407b10
mov edi, dword [ebp - 0xf8]
lea ecx, [ebp - 0x10c]
mov esi, dword [ebp - 0x10c]
cmp edi, 0xf
mov edx, dword [ebp - 0xfc]
push 0x1f
cmova ecx, esi
push str.Microsoft_Basic_Display_Adapter
call fcn.00409a40
add esp, 8
mov bl, al
cmp edi, 0xf
jbe 0x405811
lea ecx, [edi + 1]
mov eax, esi
cmp ecx, 0x1000
jb 0x405807
mov esi, dword [eax - 4]
add ecx, 0x23
sub eax, esi
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x405807
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
push ecx
push esi
call fcn.00412260
add esp, 8
test bl, bl
jne 0x405b82
lea eax, [ebp - 0x28]
push eax
lea ecx, [ebp - 0xc4]
call fcn.00407b10
mov ebx, dword [ebp - 0x14]
lea eax, [ebp - 0x28]
mov edx, dword [ebp - 0x28]
lea edi, [ebp - 0x28]
cmp ebx, 0xf
lea esi, [ebp - 0x28]
cmova eax, edx
cmova edi, edx
add eax, dword [ebp - 0x18]
cmp ebx, 0xf
mov dword [ebp - 0xec], eax
cmova esi, edx
cmp esi, eax
je 0x40587b
mov ebx, dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_tolower]
sub edi, esi
nop dword [eax + eax]
movzx eax, byte [esi]
push eax
call ebx
mov byte [edi + esi], al
add esp, 4
inc esi
cmp esi, dword [ebp - 0xec]
jne 0x405860
mov edx, dword [ebp - 0x28]
mov ebx, dword [ebp - 0x14]
mov esi, dword [ebp - 0x18]
lea ecx, [ebp - 0x28]
cmp ebx, 0xf
push 6
cmova ecx, edx
mov edx, esi
push str.vmware
push ecx
call fcn.00402fc0
add esp, 0xc
cmp eax, 0xffffffff
jne 0x405b1c
mov eax, dword [ebp - 0x14]
lea ebx, [ebp - 0x28]
cmp eax, 0xf
cmova ebx, dword [ebp - 0x28]
cmp esi, 0xa
jb 0x405961
lea eax, [esi - 9]
add eax, ebx
sub eax, ebx
push eax
push 0x76
push ebx
call sub.VCRUNTIME140.dll_memchr
mov edi, eax
add esp, 0xc
test edi, edi
je 0x40595e
nop word [eax + eax]
mov ecx, edi
mov edx, str.virtualbox
mov esi, 6
nop dword [eax]
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x405901
add ecx, 4
add edx, 4
sub esi, 4
jae 0x4058f0
mov al, byte [ecx]
cmp al, byte [edx]
jne 0x405928
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x405928
cmp esi, 0xfffffffe
je 0x405924
mov al, byte [ecx + 2]
cmp al, byte [edx + 2]
jne 0x405928
mov al, byte [ecx + 3]
cmp al, byte [edx + 3]
jne 0x405928
xor eax, eax
jmp 0x40592d
sbb eax, eax
or eax, 1
test eax, eax
je 0x405950
mov esi, dword [ebp - 0x18]
inc edi
lea eax, [esi - 9]
add eax, ebx
sub eax, edi
push eax
push 0x76
push edi
call sub.VCRUNTIME140.dll_memchr
mov edi, eax
add esp, 0xc
test edi, edi
jne 0x4058e0
jmp 0x40595e
sub edi, ebx
cmp edi, 0xffffffff
jne 0x405b1c
mov esi, dword [ebp - 0x18]
mov eax, dword [ebp - 0x14]
cmp eax, 0xf
lea ebx, [ebp - 0x28]
cmova ebx, dword [ebp - 0x28]
cmp esi, 7
jb 0x405a08
lea eax, [ebx - 6]
add eax, esi
sub eax, ebx
push eax
push 0x76
push ebx
call sub.VCRUNTIME140.dll_memchr
mov ecx, eax
add esp, 0xc
test ecx, ecx
je 0x405a08
nop dword [eax]
mov edx, ecx
mov esi, str.virtual
mov edi, 3
mov eax, dword [edx]
cmp eax, dword [esi]
jne 0x4059ab
add edx, 4
add esi, 4
or edi, 0xffffffff
mov al, byte [edx]
cmp al, byte [esi]
jne 0x4059d2
mov al, byte [edx + 1]
cmp al, byte [esi + 1]
jne 0x4059d2
mov al, byte [edx + 2]
cmp al, byte [esi + 2]
jne 0x4059d2
cmp edi, 0xffffffff
je 0x4059ce
mov al, byte [edx + 3]
cmp al, byte [esi + 3]
jne 0x4059d2
xor eax, eax
jmp 0x4059d7
sbb eax, eax
or eax, 1
test eax, eax
je 0x4059fa
mov esi, dword [ebp - 0x18]
inc ecx
lea eax, [esi - 6]
add eax, ebx
sub eax, ecx
push eax
push 0x76
push ecx
call sub.VCRUNTIME140.dll_memchr
mov ecx, eax
add esp, 0xc
test ecx, ecx
jne 0x405990
jmp 0x405a08
sub ecx, ebx
cmp ecx, 0xffffffff
jne 0x405b1c
mov esi, dword [ebp - 0x18]
mov ebx, dword [ebp - 0x14]
lea edi, [ebp - 0x28]
cmp ebx, 0xf
cmova edi, dword [ebp - 0x28]
cmp esi, 4
jb 0x405a95
lea ebx, [esi + edi]
lea eax, [ebx - 3]
sub eax, edi
push eax
push 0x71
push edi
call sub.VCRUNTIME140.dll_memchr
mov esi, eax
add esp, 0xc
test esi, esi
je 0x405a8f
mov ecx, esi
mov edx, str.qemu
mov eax, dword [ecx]
cmp eax, dword [edx]
je 0x405a5d
cmp al, byte [edx]
jne 0x405a61
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x405a61
mov al, byte [ecx + 2]
cmp al, byte [edx + 2]
jne 0x405a61
mov al, byte [ecx + 3]
cmp al, byte [edx + 3]
jne 0x405a61
xor eax, eax
jmp 0x405a66
sbb eax, eax
or eax, 1
test eax, eax
je 0x405a84
inc esi
lea eax, [ebx - 3]
sub eax, esi
push eax
push 0x71
push esi
call sub.VCRUNTIME140.dll_memchr
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x405a34
jmp 0x405a8f
sub esi, edi
cmp esi, 0xffffffff
jne 0x405b1c
mov esi, dword [ebp - 0x18]
mov ebx, dword [ebp - 0x14]
cmp ebx, 0xf
lea edi, [ebp - 0x28]
cmova edi, dword [ebp - 0x28]
cmp esi, 4
jb 0x405b18
lea ebx, [esi - 3]
add ebx, edi
mov eax, ebx
sub eax, edi
push eax
push 0x76
push edi
call sub.VCRUNTIME140.dll_memchr
mov esi, eax
add esp, 0xc
test esi, esi
je 0x405b18
nop
mov ecx, esi
mov edx, str.vbox
mov eax, dword [ecx]
cmp eax, dword [edx]
je 0x405ae9
cmp al, byte [edx]
jne 0x405aed
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x405aed
mov al, byte [ecx + 2]
cmp al, byte [edx + 2]
jne 0x405aed
mov al, byte [ecx + 3]
cmp al, byte [edx + 3]
jne 0x405aed
xor eax, eax
jmp 0x405af2
sbb eax, eax
or eax, 1
test eax, eax
je 0x405b11
inc esi
mov eax, ebx
sub eax, esi
push eax
push 0x76
push esi
call sub.VCRUNTIME140.dll_memchr
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x405ac0
xor bl, bl
jmp 0x405b1e
sub esi, edi
cmp esi, 0xffffffff
jne 0x405b1c
xor bl, bl
jmp 0x405b1e
mov bl, 1
mov eax, dword [ebp - 0x14]
cmp eax, 0xf
jbe 0x405b84
mov edx, dword [ebp - 0x28]
lea ecx, [eax + 1]
mov eax, edx
cmp ecx, 0x1000
jb 0x405b4c
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x405b4c
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
push ecx
push edx
call fcn.00412260
add esp, 8
jmp 0x405b84
mov eax, dword [ebp - 0xcc]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [ebp - 0xd0]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [ebp - 0xd8]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
call dword [sym.imp.ole32.dll_CoUninitialize]
mov bl, 1
mov eax, dword [ebp - 0xc8]
mov eax, dword [eax + 4]
mov dword [ebp + eax - 0xc8], vtable.std::basic_ostringstream_char__struct_std::char_traits_char___class_std::allocator_char__.0
mov ecx, dword [ebp - 0xc8]
mov edx, dword [ecx + 4]
lea ecx, [edx - 0x50]
mov dword [ebp + edx - 0xcc], ecx
lea ecx, [ebp - 0xc4]
call fcn.00407740
lea ecx, [ebp - 0xc0]
call dword [sym.imp.MSVCP140.dll_public_virtual:_void___thiscall_std::basic_ostream_char__struct_std::char_traits_char__::destructor_void_]
lea ecx, [ebp - 0x78]
call dword [sym.imp.MSVCP140.dll_public_virtual:_void___thiscall_std::basic_ios_char__struct_std::char_traits_char__::destructor_void_]
mov al, bl
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0041210d
mov esp, ebp
pop ebp
ret
push 0x8007000e
call fcn.004130b0
push 0x8007000e
call fcn.004130b0
push 0x8007000e
call fcn.004130b0
push 0x8007000e
call fcn.004130b0
int3