HalpIommuAcquireNewDomain
NTSTATUS __stdcall HalpIommuAcquireNewDomain(INT64 a1, INT64 a2){
UINT64 *v5;
NTSTATUS v6;
unsigned __int64 v7;
UINT8 *v8;
unsigned int ClearBitsAndSet;
__int64(__fastcall *v10)(_QWORD, INT64, _QWORD, _QWORD);
VOID *v11;
_TABLE_SEARCH_RESULT v12;
if( byte_140C49B2C )
return -1073741637;
v5 = (UINT64 *)(a1 + 432);
v6 = 0;
v7 = (unsigned __int8)KeAcquireSpinLockRaiseToDpc((UINT64 *)(a1 + 432));
ClearBitsAndSet = (unsigned int)RtlFindClearBitsAndSet((_RTL_AVL_TABLE *)(a1 + 440), (VOID *)1, 0i64, v8, v11, v12);
if( ClearBitsAndSet == -1 )
{
v6 = -1073741670;
}
else
{
*(_DWORD *)(a2 + 24) = ClearBitsAndSet;
v10 = *(__int64(__fastcall **)(_QWORD, INT64, _QWORD, _QWORD))(a1 + 72);
if( v10 )
v6 = v10(*(_QWORD *)(a1 + 16), a2, 0i64, 0i64);
}
KxReleaseSpinLock(v5);
__writecr8(v7);
return v6;
}Referenced by:
HalpIommuGetHardwareDomain