HalpDmaAddReservedRangesToDomain

NTSTATUS __stdcall HalpDmaAddReservedRangesToDomain(INT64 a1, INT64 a2){
  NTSTATUS ReservedRanges; 
  __int64 v4; 
  __int64 v5; 
  signed __int64 v6; 
  signed __int64 v7; 
  unsigned __int64 v8; 
  unsigned int v10; 
  __int64 v11; 

  v11 = 0i64;
  v10 = 0;
  if( !a2 )
    return 0;
  ReservedRanges = HalpIommuGetReservedRanges(a2, &v10, &v11);
  if( ReservedRanges >= 0 )
  {
    if( v10 )
      *(_BYTE *)(a1 + 33) = 1;
    v4 = 0i64;
    if( v10 )
    {
      v5 = v11;
      do
      {
        if( !*(_BYTE *)(v5 + 24 * v4 + 16) )
        {
          v6 = *(_QWORD *)(v5 + 24 * v4);
          v7 = *(_QWORD *)(v5 + 24 * v4 + 8);
          if( v6 >= v7 )
            return -1073741503;
          v8 = v7 - v6 + 1;
          if( v8 >= 0xFFFFFFFF )
            return -1073741503;
          ReservedRanges = HalpLaReserveRange(*(_QWORD *)(a1 + 48), *(_QWORD *)(v5 + 24 * v4), v8);
          if( ReservedRanges < 0 )
            return ReservedRanges;
          ReservedRanges = HalpIommuDomainMapLogicalRange(*(_QWORD *)(a1 + 40), 3i64, *(_QWORD *)(v5 + 24 * v4), v8, v6);
        }
        v4 = (unsigned int)(v4 + 1);
      }
      while( (unsigned int)v4 < v10 );
    }
  }
  return ReservedRanges;
}

Referenced by:

No references.