MiMirrorRemoveInactivePages

INT64 __fastcall MiMirrorRemoveInactivePages(INT64 a1, INT64 a2, INT64 a3){
  int v3; 
  _MMPFN *PfnDb; 
  char *v6; 
  INT64 v7; 
  char *v8; 
  UINT64 v9; 
  __int64 v10; 
  UINT8 PteBase; 
  WCHAR *PteLimit; 
  UNICODE_STRING *v13; 
  unsigned __int64 v14; 
  _MMPFN *v15; 
  __int64 PfnPageSizeIndex; 
  UINT64 v17; 
  __int64 v18; 
  _MMPFN *v19; 
  int v21; 
  unsigned __int64 v22; 
  unsigned __int64 v23; 
  unsigned __int64 v24; 
  unsigned __int64 v25; 
  __int64 v26; 
  unsigned __int64 v27; 
  unsigned __int64 v28; 
  int v29; 
  v3 = *(_DWORD *)(a1 + 8);
  PfnDb = MmGetPfnDb();
  v6 = (char *)PfnDb + 48 * a2;
  v7 = 0i64;
  v8 = &v6[48 * a3];
  v9 = 0i64;
  v10 = -1i64;
  if( v6 >= v8 )
    return v7;
  PteBase = (unsigned __int8)MmGetPteBase();
  PteLimit = (WCHAR *)MmGetPteLimit();
  do
  {
    v13 = (UNICODE_STRING *)*((_QWORD *)v6 + 5);
    v14 = 1i64;
    if( ((unsigned __int64)v13 & 0x1000000000i64) != 0 )
    {
      v15 = MiGetBaseResidentPageForBugCheck((_MMPFN *)v6);
      v29 = *((_BYTE *)v15 + 34) & 7;
      PfnPageSizeIndex = (unsigned int)MiGetPfnPageSizeIndex((INT64)v15);
      v19 = MmGetPfnDb();
      v14 = MiLargePageSizes[PfnPageSizeIndex]
          + (((v6 - (char *)v19) / 48) & ~(MiLargePageSizes[PfnPageSizeIndex] - 1))
          - (v6 - (char *)v19) / 48;
      if( v14 > (v8 - v6) / 48 )
        v14 = (v8 - v6) / 48;
      if( (v29 & 0xFFFFFFFA) == 0 && v29 != 4
        || v18 == 1
        || (v3 & 0x40) != 0 && v17 && MiGetLeafVa(v17) <= 0xFFFF800000000000ui64 )
      {
        goto LABEL_12;
      }
    }
    else
    {
      if( (v6[34] & 7) != 6 )
        goto LABEL_13;
      LOBYTE(v21) = MI_PFN_IS_PROTO((UNICODE_STRING *)v6, v13, PteBase, PteLimit);
      if( v21
        || ((v22 >> 60) & 7) == 1
        || (*((_QWORD *)v6 + 3) & 0x3FFFFFFFFFFFFFFFi64) != 0 && (v22 & 0xFFFFFFFFFi64) == 0xFFFFFFFFDi64 )
      {
        goto LABEL_12;
      }
      if( (v3 & 0x40) != 0 )
      {
        v27 = v26 | *((_QWORD *)v6 + 1);
        if( !*((_QWORD *)v6 + 1) )
          v27 = 0i64;
        if( v27 >= v23 && v27 <= v24 )
        {
          v28 = (__int64)((v27 << 25) - (v23 << 25)) >> 16;
          if( (v28 < v23 || v28 > v24) && v28 <= v25 )
          {
LABEL_12:
            PfnDb = MmGetPfnDb();
LABEL_13:
            if( !v9 )
              v10 = (v6 - (char *)PfnDb) / 48;
            v9 += v14;
            goto LABEL_16;
          }
        }
      }
    }
    if( v9 )
    {
      v7 += v9;
      MiMirrorOmitPagesFromCopy(*(_QWORD *)a1, v10, v9);
      v9 = 0i64;
    }
LABEL_16:
    PteBase = (unsigned __int8)MmGetPteBase();
    v6 += 48 * v14;
    PteLimit = (WCHAR *)MmGetPteLimit();
    PfnDb = MmGetPfnDb();
  }
  while( v6 < v8 );
  if( v9 )
  {
    v7 += v9;
    MiMirrorOmitPagesFromCopy(*(_QWORD *)a1, v10, v9);
  }
  return v7;
}

Referenced by:

MiMirrorReduceBlackToActiveAndPrivatePages