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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x24
push ebx
push esi
push edi
mov edi, dword [sym.imp.KERNEL32.dll_GetStdHandle]
push 0xa
push 0xfffffffffffffff5
call edi
mov esi, dword [sym.imp.KERNEL32.dll_SetConsoleTextAttribute]
push eax
call esi
push str._Device_Scanner__Retrieving_mices_VID_and_PID...
push dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_wchar_t__struct_std::char_traits_wchar_t___std::wcout]
call fcn.00401d40
add esp, 8
mov ecx, eax
push 0x4026c0
call dword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_wchar_t__struct_std::char_traits_wchar_t______thiscall_std::basic_ostream_wchar_t__struct_std::char_traits_wchar_t__::operator___class_std::basic_ostream_wchar_t__struct_std::char_traits_wchar_t_______cdecl___class_std::basic_ostream_wchar_t__struct_std::char_traits_wchar_t_____]
push 7
push 0xfffffffffffffff5
call edi
push eax
call esi
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]
mov ebx, dword [sym.imp.ole32.dll_CoUninitialize]
test eax, eax
jns 0x403ec5
call ebx
lea eax, [ebp - 8]
mov dword [ebp - 8], 0
push eax
push 0x4318cc
push 1
push 0
push 0x4318dc
call dword [sym.imp.ole32.dll_CoCreateInstance]
test eax, eax
jns 0x403eea
call ebx
mov eax, dword [ebp - 8]
mov dword [ebp - 4], 0
push str.ROOTCIMv2
mov eax, dword [eax]
mov esi, dword [eax + 0xc]
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
lea ecx, [ebp - 4]
push ecx
push 0
push 0
push 0
push 0
push 0
push 0
push eax
push dword [ebp - 8]
call esi
test eax, eax
jns 0x403f29
mov eax, dword [ebp - 8]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
call ebx
push 0
push 0
push 3
push 3
push 0
push 0
push 0xa
push dword [ebp - 4]
call dword [sym.imp.ole32.dll_CoSetProxyBlanket]
test eax, eax
jns 0x403f58
mov eax, dword [ebp - 4]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [ebp - 8]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
call ebx
mov eax, dword [ebp - 4]
mov dword [ebp - 0xc], 0
push str.SELECT__FROM_Win32_PointingDevice
mov eax, dword [eax]
mov edi, dword [eax + 0x50]
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
push 0x42a888
mov esi, eax
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
lea ecx, [ebp - 0xc]
push ecx
push 0
push 0x30
push esi
push eax
push dword [ebp - 4]
call edi
test eax, eax
jns 0x403fa6
mov eax, dword [ebp - 4]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [ebp - 8]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
call ebx
mov ecx, dword [ebp - 0xc]
mov dword [ebp - 0x10], 0
mov dword [ebp - 0x14], 0
test ecx, ecx
je 0x404039
mov edi, dword [sym.imp.OLEAUT32.dll_VariantClear]
mov esi, dword [sym.imp.OLEAUT32.dll_VariantCopy]
mov eax, dword [ecx]
lea edx, [ebp - 0x14]
push edx
lea edx, [ebp - 0x10]
push edx
push 1
push 0xffffffffffffffff
push ecx
call dword [eax + 0x10]
cmp dword [ebp - 0x14], 0
je 0x404036
lea eax, [ebp - 0x24]
push eax
call edi
mov ecx, dword [ebp - 0x10]
lea edx, [ebp - 0x24]
push 0
push 0
push edx
mov eax, dword [ecx]
push 0
push str.DeviceID
push ecx
call dword [eax + 0x10]
test eax, eax
js 0x404017
push dword [ebp - 0x1c]
push str.___Users_mouse_VID_and_PID:__s_n
call fcn.00404070
add esp, 8
lea eax, [ebp - 0x24]
push eax
call esi
push 0x42a8ec
call fcn.00404070
mov eax, dword [ebp - 0x10]
add esp, 4
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov ecx, dword [ebp - 0xc]
test ecx, ecx
jne 0x403fc7
jmp 0x404039
mov ecx, dword [ebp - 0xc]
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
mov eax, dword [ebp - 4]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [ebp - 8]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
call ebx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret