IopLiveDumpDiscardVirtualAddressRange

INT64 IopLiveDumpDiscardVirtualAddressRange(void){
  INT64 result; 
  char *v1; 
  __int64 v2; 
  unsigned __int64 v3; 
  char *v4; 
  __int64 v5; 
  unsigned __int64 i; 
  if( v3 )
  {
    v4 = v1;
    v5 = v2;
    if( v1 )
    {
      for( i = (v3 >> 12) + ((v3 & 0xFFF) != 0); i; --i )
      {
        MmIsAddressValid(v4);
        if( (_BYTE)result )
        {
          result = (unsigned __int64)MmGetPhysicalAddress(v4).QuadPart >> 12;
          if( (unsigned __int64)result < *(_QWORD *)(v5 + 576) )
            RtlClearBitsEx(v5 + 576, result, 1ui64);
        }
        v4 += 4096;
      }
    }
  }
  return result;
}

Referenced by:

IopLiveDumpAllocAndInitResources
IopLiveDumpAllocateDumpBuffers
IopLiveDumpAllocateExtraBuffers
IopLiveDumpAllocateIptBuffers