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