HalpIommuFlushDmaDomain

int __fastcall HalpIommuFlushDmaDomain(_QWORD *a1, INT64 a2){
  void **v2; 
  unsigned __int8 v4; 
  unsigned __int8 CurrentIrql; 
  _QWORD *i; 
  void *retaddr; 
  INT64 v9; 

  v2 = &retaddr;
  v9 = a2;
  v4 = 0;
  CurrentIrql = KeGetCurrentIrql();
  if( CurrentIrql != 15 )
  {
    LODWORD(v2) = KeAcquireSpinLockRaiseToDpc(a1 + 2);
    v4 = (unsigned __int8)v2;
  }
  for( i = (_QWORD *)*a1; i != a1; i = (_QWORD *)*i )
    LODWORD(v2) = HalpIommuFlushDomainTB(i[3], (INT64)(i + 4), 1ui64, (INT64)&v9);
  if( CurrentIrql != 15 )
  {
    KxReleaseSpinLock(a1 + 2);
    LODWORD(v2) = v4;
    __writecr8(v4);
  }
  return(int)v2;
}

Referenced by:

HalpIommuDomainUnmapLogicalRange
IommuMapIdentityRange
IommuUnmapIdentityRange