IopLiveDumpMarkImportantDumpData

NTSTATUS __stdcall IopLiveDumpMarkImportantDumpData(_RTL_BITMAP_EX *Bitmap, UINT64 *MaxAdditionalPageCount){
  __int64 v2; 
  __int64 v5; 
  NTSTATUS v6; 
  NTSTATUS v7; 
  __int64 *i; 
  NTSTATUS v9; 
  NTSTATUS v10; 
  NTSTATUS v11; 
  int v12; 
  NTSTATUS v13; 
  __int64 v15; 
  VOID *Va[2]; 
  _KAFFINITY_ENUMERATION_CONTEXT v17; 
  _MM_KERNEL_DUMP_CONTEXT Context[2]; 
  __int64 v19; 
  _RTL_BITMAP_EX *v20; 
  __int64 v21; 
  UINT64 *v22; 
  __int64 v23; 
  UINT64 ProcIndex; 

  v21 = 0i64;
  v2 = 0i64;
  v23 = 0i64;
  if( (LODWORD(Bitmap[5].SizeOfBitMap) & 0x80u) != 0 )
  {
    LODWORD(v5) = IopLiveDumpGetMillisecondCounter(0);
    v2 = v5;
  }
  v19 = 0i64;
  LODWORD(v23) = v23 | 1;
  LODWORD(ProcIndex) = 0;
  v20 = Bitmap + 34;
  v22 = MaxAdditionalPageCount;
  v6 = 0;
  *(_QWORD *)Context = IoSetDumpRange;
  memset(&v17, 0, sizeof(v17));
  *(_OWORD *)Va = 0i64;
  v7 = ExAddPrivateDataToCrashDump(Context);
  if( v7 < 0 )
  {
    if( v7 == -1073741789 )
      return 0;
    v6 = v7;
  }
  for( i = (__int64 *)PsActiveProcessHead; i != &PsActiveProcessHead; i = (__int64 *)*i )
  {
    v9 = MmAddRangeToCrashDump(Context, i - 137, 0xA40ui64);
    if( v9 < 0 )
    {
      if( v9 == -1073741789 )
        return 0;
      v6 = v9;
    }
  }
  v10 = MmAddPrivateDataToCrashDump(Context, 0x10ui64);
  if( v10 < 0 )
  {
    if( v10 == -1073741789 )
      return 0;
    v6 = v10;
  }
  IopLiveDumpAddTriageDumpData((INT64 *)Bitmap, (INT64)Context);
  v11 = MmAddPrivateDataToCrashDump(Context, 1ui64);
  if( v11 < 0 )
  {
    if( v11 != -1073741789 )
    {
      v6 = v11;
      goto LABEL_18;
    }
    return 0;
  }
LABEL_18:
  if( IptInterface )
  {
    v17.CurrentMask = KeActiveProcessors.Bitmap[0];
    v17.Affinity = &KeActiveProcessors;
    while( 1 )
    {
      KeEnumerateNextProcessor(&ProcIndex, &v17);
      if( v12 )
        break;
      if( (*(int(__fastcall **)(_QWORD, VOID **))(IptInterface + 16))((unsigned int)ProcIndex, Va) >= 0 )
      {
        v13 = MmAddRangeToCrashDump(Context, Va[0], (UINT64)Va[1]);
        if( v13 < 0 )
        {
          if( v13 == -1073741789 )
            return 0;
          v6 = v13;
        }
      }
    }
  }
  if( (LODWORD(Bitmap[5].SizeOfBitMap) & 0x80u) != 0 )
  {
    LODWORD(v15) = IopLiveDumpGetMillisecondCounter(0);
    IopLiveDumpTraceMarkImportantDumpDataDuration((_GUID *)Bitmap, v15 - v2);
  }
  return v6;
}

Referenced by:

IopLiveDumpEndMirroringCallback