MiRebuildPageTableLeafAges

UINT64 __stdcall MiRebuildPageTableLeafAges(INT64 rcx0, UINT64 a2){
  UINT64 *v3; 
  UINT64 v4; 
  INT64 v5; 
  UINT64 *v6; 
  UINT64 result; 
  unsigned __int8 v8; 
  int v9; 
  UINT64 v10; 
  _OWORD a3[2]; 
  v3 = (UINT64 *)((char *)MmGetPdeBase() + ((a2 >> 18) & 0x3FFFFFF8));
  v4 = *v3;
  MiPteInShadowRange((UINT64)v3);
  v10 = v4;
  MiPteInShadowRange((UINT64)&v10);
  v6 = (UINT64 *)((char *)MmGetPfnDb() + 48 * ((v4 >> 12) & 0xFFFFFFFFFi64));
  result = (unsigned __int64)*(unsigned int *)v6 >> 4;
  if( (result & 0x3FF) == 0 )
  {
    MiCountWslesInPageTable(v5, a2, a3);
    v8 = 8;
    while( 1 )
    {
      result = --v8;
      v9 = *((_DWORD *)a3 + v8);
      if( v9 )
        break;
      if( !v8 )
        return result;
    }
    result = *v6 & 0xFFFFFFFFFFFE000Fui64;
    *v6 = result | (16 * (v9 & 0x3FF | ((unsigned __int64)(v8 & 7) << 10)));
  }
  return result;
}

Referenced by:

MiConvertPrivateToProto
MiFreeWsleList
MmUnmapViewInSystemCache