IopRemovePageDumpRange

NTSTATUS __stdcall IopRemovePageDumpRange(_KBUGCHECK_REMOVE_PAGES *RemovePages, UINT8 *ContinueProcessing){
  int Flags; 
  NTSTATUS result; 
  UINT8 v5; 
  unsigned __int64 Count; 
  ULONG_PTR Address; 
  int v8; 
  __int64 v9; 
  __int64 v10[2]; 
  __int128 v11; 
  __int128 v12; 
  __int128 v13; 
  v11 = 0i64;
  v12 = 0i64;
  v13 = 0i64;
  if( ContinueProcessing )
    *ContinueProcessing = 0;
  Flags = RemovePages->Flags;
  if( (Flags & 0x7FFFFFFC) != 0 )
    return -1073741582;
  if( Flags >= 0 )
  {
    v5 = 0;
  }
  else
  {
    Flags &= ~0x80000000;
    v5 = 1;
    RemovePages->Flags = Flags;
  }
  if( ((Flags - 1) & Flags) != 0 )
    return -1073741811;
  Count = RemovePages->Count;
  if( !Count )
    return 0;
  Address = RemovePages->Address;
  v8 = Flags & 1;
  if( !v8 )
    Address >>= 12;
  v9 = *(_QWORD *)(CrashdmpDumpBlock + 8);
  v10[0] = *(_QWORD *)(v9 + 48);
  v10[1] = v9 + 56;
  *(_QWORD *)&v12 = v10;
  result = IoFreeDumpRange((__int64)&v11, (char *)Address, Count, 2 * (v8 ^ 1u));
  if( result >= 0 )
  {
    if( ContinueProcessing )
      *ContinueProcessing = v5;
  }
  return result;
}

Referenced by:

IopDumpCallRemovePagesCallbacks