MiMirrorRemoveInactivePages

NTSTATUS __stdcall MiMirrorRemoveInactivePages(INT64 a1, INT64 a2, INT64 a3){
  int v3; 
  _MMPFN *PfnDb; 
  _MMPFN *v6; 
  NTSTATUS v7; 
  _MMPFN *v8; 
  UINT64 v9; 
  __int64 v10; 
  UINT8 PteBase; 
  wchar_t *PteLimit; 
  __int64 bf_0; 
  unsigned __int64 v14; 
  _MMPFN *v15; 
  __int64 PfnPageSizeIndex; 
  UINT64 v17; 
  __int64 v18; 
  _MMPFN *v19; 
  unsigned __int64 v20; 
  int v22; 
  unsigned __int64 v23; 
  unsigned __int64 v24; 
  unsigned __int64 v25; 
  unsigned __int64 v26; 
  __int64 v27; 
  unsigned __int64 v28; 
  unsigned __int64 v29; 
  int v30; 

  v3 = *(_DWORD *)(a1 + 8);
  PfnDb = MmGetPfnDb();
  v6 = &PfnDb[a2];
  v7 = 0;
  v8 = &v6[a3];
  v9 = 0i64;
  v10 = -1i64;
  if( v6 >= v8 )
    return v7;
  PteBase = (unsigned __int8)MmGetPteBase();
  PteLimit = (wchar_t *)MmGetPteLimit();
  do
  {
    bf_0 = v6->u4._bf_0;
    v14 = 1i64;
    if( (bf_0 & 0x1000000000i64) != 0 )
    {
      v15 = MiGetBaseResidentPageForBugCheck(v6);
      v30 = *(_BYTE *)(&v15->u3 + 1) & 7;
      PfnPageSizeIndex = (unsigned int)MiGetPfnPageSizeIndex((INT64)v15);
      v19 = MmGetPfnDb();
      v14 = MiLargePageSizes[PfnPageSizeIndex] + ((v6 - v19) & ~(MiLargePageSizes[PfnPageSizeIndex] - 1)) - (v6 - v19);
      if( v14 > v8 - v6 )
        v14 = v8 - v6;
      if( (v30 & 0xFFFFFFFA) == 0 && v30 != 4 )
        goto LABEL_12;
      if( v18 == 1 )
        goto LABEL_12;
      if( (v3 & 0x40) != 0 )
      {
        if( v17 )
        {
          LODWORD(v20) = MiGetLeafVa(v17);
          if( v20 <= 0xFFFF800000000000ui64 )
            goto LABEL_12;
        }
      }
    }
    else
    {
      if( (*(_BYTE *)(&v6->u3 + 1) & 7) != 6 )
        goto LABEL_13;
      LOBYTE(v22) = MI_PFN_IS_PROTO((_UNICODE_STRING *)v6, (_UNICODE_STRING *)bf_0, PteBase, PteLimit);
      if( v22
        || ((v23 >> 60) & 7) == 1
        || (v6->u2._bf_0 & 0x3FFFFFFFFFFFFFFFi64) != 0 && (v23 & 0xFFFFFFFFFi64) == 0xFFFFFFFFDi64 )
      {
        goto LABEL_12;
      }
      if( (v3 & 0x40) != 0 )
      {
        v28 = v27 | v6->PteLong;
        if( !v6->PteLong )
          v28 = 0i64;
        if( v28 >= v24 && v28 <= v25 )
        {
          v29 = (__int64)((v28 << 25) - (v24 << 25)) >> 16;
          if( (v29 < v24 || v29 > v25) && v29 <= v26 )
          {
LABEL_12:
            PfnDb = MmGetPfnDb();
LABEL_13:
            if( !v9 )
              v10 = v6 - PfnDb;
            v9 += v14;
            goto LABEL_16;
          }
        }
      }
    }
    if( v9 )
    {
      v7 += v9;
      MiMirrorOmitPagesFromCopy(*(_QWORD *)a1, v10, v9);
      v9 = 0i64;
    }
LABEL_16:
    PteBase = (unsigned __int8)MmGetPteBase();
    v6 += v14;
    PteLimit = (wchar_t *)MmGetPteLimit();
    PfnDb = MmGetPfnDb();
  }
  while( v6 < v8 );
  if( v9 )
  {
    v7 += v9;
    MiMirrorOmitPagesFromCopy(*(_QWORD *)a1, v10, v9);
  }
  return v7;
}

Referenced by:

MiMirrorReduceBlackToActiveAndPrivatePages