Function at 0x100046b4
Capabilities:
Check mutex on windows

Disassembly:
push ecx
push ecx
push ebx
push ebp
push esi
push edi
push str.GlobalAccess_hw_scan
xor ebp, ebp
push ebp
push ebp
mov esi, ecx
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov ebx, eax
mov dword [esp + 0x14], ebx
cmp ebx, ebp
je 0x100046de
push 0xffffffffffffffff
push ebx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov ecx, esi
call sym.RTCore.dll_private:_void___thiscall_CDisplayDeviceManager::LoadSettings_void_
mov ecx, esi
call sym.RTCore.dll_private:_long_int___thiscall_CDisplayDeviceManager::EnumDevices_void_
mov edi, eax
cmp edi, ebp
jge 0x1000470b
cmp ebx, ebp
je 0x10004704
push ebx
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, edi
jmp 0x100047fc
mov ecx, sym.RTCore.dll_class_COSVersion_g_osVersion
call dword [sym.imp.RTFC.dll_public:_int___thiscall_COSVersion::IsWindows2000OrLater_void_]
test eax, eax
je 0x10004721
mov ecx, esi
call sym.RTCore.dll_private:_void___thiscall_CDisplayDeviceManager::InitPCIBusFilter_SetupDi_void_
lea eax, [esp + 0x10]
push eax
mov ecx, esi
mov dword [esp + 0x14], ebp
call sym.RTCore.dll_private:_unsigned_long_int___thiscall_CDisplayDeviceManager::ScanPCI_struct_PCI_DEVICE_DESC___
mov ebx, dword [esp + 0x10]
mov edi, eax
test ebx, ebx
je 0x10004759
test edi, edi
je 0x10004760
xor ecx, ecx
test edi, edi
jbe 0x10004760
lea eax, [ebx + 0x18]
cmp dword [eax], ebp
jne 0x10004756
inc ecx
add eax, 0x1c
cmp ecx, edi
jb 0x10004748
jmp 0x10004760
xor ebp, ebp
inc ebp
mov ecx, esi
call sym.RTCore.dll_private:_void___thiscall_CDisplayDeviceManager::InitDevicesInstanceIDs_void_
mov ecx, esi
call sym.RTCore.dll_private:_void___thiscall_CDisplayDeviceManager::MarkSecondaryDevices_void_
test ebp, ebp
jne 0x1000476f
test ebx, ebx
jne 0x10004789
mov ecx, sym.RTCore.dll_class_COSVersion_g_osVersion
call dword [sym.imp.RTFC.dll_public:_int___thiscall_COSVersion::IsWindows2000OrLater_void_]
test eax, eax
je 0x10004785
mov ecx, esi
call sym.RTCore.dll_private:_void___thiscall_CDisplayDeviceManager::InitDevicesLocations_SetupDi_void_
test ebx, ebx
je 0x100047aa
test edi, edi
je 0x1000479f
push edi
push ebx
mov ecx, esi
call sym.RTCore.dll_private:_void___thiscall_CDisplayDeviceManager::InitDevicesLocations_struct_PCI_DEVICE_DESC___unsigned_long_int_
push edi
push ebx
mov ecx, esi
call sym.RTCore.dll_private:_void___thiscall_CDisplayDeviceManager::EnumUnattachedDevices_struct_PCI_DEVICE_DESC___unsigned_long_int_
test ebx, ebx
je 0x100047aa
push ebx
call sub.MSVCR90.dll_void___cdecl_operator_delete_void__
pop ecx
mov ecx, sym.RTCore.dll_class_COSVersion_g_osVersion
call dword [sym.imp.RTFC.dll_public:_int___thiscall_COSVersion::IsWindows2000OrLater_void_]
test eax, eax
je 0x100047c0
mov ecx, esi
call sym.RTCore.dll_private:_void___thiscall_CDisplayDeviceManager::InitDevicesDriverKeys_SetupDi_void_
mov ecx, esi
call sym.RTCore.dll_private:_void___thiscall_CDisplayDeviceManager::InitDevicesDrvDescriptors_void_
mov ecx, esi
call sym.RTCore.dll_private:_void___thiscall_CDisplayDeviceManager::InitDevicesGpuDescriptors_void_
push dword [esi + 0x30]
mov ecx, esi
call sym.RTCore.dll_public:_int___thiscall_CDisplayDeviceManager::SelectDevice_unsigned_long_int_
test eax, eax
jne 0x100047e4
push eax
mov ecx, esi
call sym.RTCore.dll_public:_int___thiscall_CDisplayDeviceManager::SelectDevice_unsigned_long_int_
mov esi, dword [esp + 0x14]
test esi, esi
je 0x100047fa
push esi
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
pop ecx
pop ecx
ret