IopAddPageDumpRange

NTSTATUS __stdcall IopAddPageDumpRange(_KBUGCHECK_ADD_PAGES *AddPages, UINT8 *ContinueProcessing){
  unsigned int Flags; 
  UINT64 v5; 
  signed int v6; 
  NTSTATUS result; 
  UINT8 v8; 
  unsigned __int64 Count; 
  bool v10; 
  __int64 v11; 
  __int64 v12[2]; 
  _MM_KERNEL_DUMP_CONTEXT Context[2]; 
  __int64 v14; 
  __int64 *v15; 
  __int64 v16; 
  __int128 v17; 

  *(_QWORD *)Context = 0i64;
  v14 = 0i64;
  v17 = 0i64;
  if( ContinueProcessing )
    *ContinueProcessing = 0;
  Flags = AddPages->Flags;
  v5 = Flags & 0xFF0;
  v6 = v5 ^ Flags;
  AddPages->Flags = v6;
  if( (v6 & 0x7FFFFFFC) != 0 )
    return -1073741582;
  if( v6 >= 0 )
  {
    v8 = 0;
  }
  else
  {
    v6 &= ~0x80000000;
    v8 = 1;
    AddPages->Flags = v6;
  }
  if( ((v6 - 1) & v6) != 0 )
    return -1073741811;
  Count = AddPages->Count;
  if( !Count )
    return 0;
  v10 = (v6 & 1) == 0;
  v11 = *(_QWORD *)(qword_140C50960 + 8i64);
  if( v10 )
    v5 = (unsigned int)v5 | 2;
  v16 = *(_QWORD *)(qword_140C50960 + 8i64);
  v12[0] = *(_QWORD *)(v11 + 48);
  v12[1] = v11 + 56;
  v15 = v12;
  if( (*(_DWORD *)(qword_140C50960 + 1368i64) & 4) != 0 )
  {
    DWORD2(v17) |= 3u;
    *(_QWORD *)&v17 = &AvailablePagesForPartialDump;
  }
  IoSetDumpRange(Context, (VOID *)AddPages->Address, Count, v5);
  if( result >= 0 )
  {
    if( ContinueProcessing )
      *ContinueProcessing = v8;
  }
  return result;
}

Referenced by:

IopDumpCallAddPagesCallbacks