MiActivePageClaimCandidate

UINT64 __stdcall MiActivePageClaimCandidate(_MI_PARTITION *Partition, _MMPFN *Pfn1, UINT64 PageLockHeld, UINT64 Pass){
  int v4; 
  UINT64 v7; 
  __int64 v8; 
  __int64 v9; 
  unsigned __int64 v10; 
  unsigned __int64 v11; 
  _MMPFN *BaseResidentPage; 
  int PfnPageSizeIndex; 
  __int64 v14; 
  unsigned int v15; 
  __int64 *v16; 
  const signed __int64 **v17; 
  UNICODE_STRING *v18; 
  UINT8 v19; 
  WCHAR *v20; 
  int v21; 
  INT64 v22; 
  __int64 v23; 
  unsigned __int64 v24; 
  unsigned __int64 v25; 
  unsigned __int64 PteBase; 
  unsigned __int64 v27; 
  unsigned __int64 v28; 
  __int16 v29; 
  unsigned __int64 PdeBase; 
  unsigned __int64 v31; 
  int v32; 
  __int64 v33; 
  unsigned __int64 v34; 
  unsigned __int64 v35; 
  INT64 v37; 
  INT64 v38; 
  LODWORD(v38) = Pass;
  v4 = PageLockHeld;
  v7 = 1i64;
  v8 = *((_QWORD *)Pfn1 + 1);
  v9 = (unsigned __int128)((Pfn1 - MmGetPfnDb()) * (__int128)0x2AAAAAAAAAAAAAABi64) >> 64;
  v10 = ((unsigned __int64)v9 >> 63) + (v9 >> 3);
  v11 = v8 | 0x8000000000000000ui64;
  if( (*((_BYTE *)Pfn1 + 35) & 8) == 0 )
  {
    if( (*((_QWORD *)Pfn1 + 5) & 0x1000000000i64) == 0 )
      goto LABEL_9;
    if( (_DWORD)PageLockHeld == 1 )
    {
      BaseResidentPage = MiGetBaseResidentPage(Pfn1);
      PfnPageSizeIndex = MiGetPfnPageSizeIndex((INT64)BaseResidentPage);
      if( (_MMPFN *)v14 != Pfn1 )
        _InterlockedAnd64((volatile signed __int64 *)(v14 + 24), 0x7FFFFFFFFFFFFFFFui64);
    }
    else
    {
      LODWORD(v37) = 0;
      LODWORD(v38) = 0;
      PfnPageSizeIndex = MiGetPfnPageSizeIndexUnsynchronized((INT64)Pfn1, &v37, &v38);
    }
    if( PfnPageSizeIndex == -1 )
    {
LABEL_9:
      if( *(_MI_PARTITION **)(qword_140C4E388 + 8 * ((*((_QWORD *)Pfn1 + 5) >> 39) & 0x3FFi64)) == Partition )
      {
        if( *((_BYTE *)Partition + 4830) )
        {
          v15 = 0;
          v16 = MiLargePageSizes;
          v17 = (const signed __int64 **)((char *)Partition + 5064);
          while( !*v17 || !_bittest64(v17[1], v10 / *v16) )
          {
            ++v15;
            v17 += 2;
            ++v16;
            if( v15 >= 2 )
              goto LABEL_15;
          }
          return MiLargePageSizes[v15];
        }
        else
        {
LABEL_15:
          if( !MiIsPfnFromSlabAllocation((INT64)Pfn1) )
          {
            LOBYTE(v21) = MI_PFN_IS_PROTO((UNICODE_STRING *)Pfn1, v18, v19, v20);
            if( v21 )
            {
              v23 = *((_QWORD *)Pfn1 + 3);
              if( (v23 & 0x4000000000000000i64) == 0
                && v11 != ProtoPte
                && v11 != qword_140C4DB80
                && (v4 != 1 || !MiIsPfnFileOnly(v22)) )
              {
                v24 = *((unsigned __int16 *)Pfn1 + 16);
                if( (unsigned int)v24 <= 1
                  && v24 <= (v23 & 0x3FFFFFFFFFFFFFFFui64)
                  && (*(_BYTE *)Pfn1 & 1) != 0
                  && ((*((_QWORD *)Pfn1 + 5) & 0x1000000000i64) != 0 || *((__int64 *)Pfn1 + 1) <= 0) )
                {
                  return 0i64;
                }
              }
            }
            else if( v11 != -8i64 && (unsigned int)MiGetSystemRegionType(v11) != 5 )
            {
              v25 = *((_QWORD *)Pfn1 + 5);
              if( ((v25 >> 60) & 7) != 1 && (v25 & 0xFFFFFFFFFi64) != 0xFFFFFFFFDi64 )
              {
                PteBase = (unsigned __int64)MmGetPteBase();
                if( v11 >= PteBase && v11 <= (unsigned __int64)MmGetPteLimit() )
                {
                  v27 = (__int64)((v11 << 25) - (PteBase << 25)) >> 16;
                  if( (*(_BYTE *)Pfn1 & 1) != 0 )
                  {
                    if( !PsInitialSystemProcess || v10 != *((_QWORD *)PsInitialSystemProcess + 5) >> 12 )
                    {
                      PdeBase = (unsigned __int64)MmGetPdeBase();
                      v31 = PdeBase + 536870904;
                      v32 = 0;
                      while( v11 < PdeBase || v11 > v31 )
                      {
                        PdeBase = PteBase + ((PdeBase >> 9) & 0x7FFFFFFFF8i64);
                        v31 = PteBase + ((v31 >> 9) & 0x7FFFFFFFF8i64);
                        if( (unsigned int)++v32 >= 3 )
                        {
                          if( (v25 & 0xFFFFFFFFFi64) == v10 )
                          {
                            v7 = 0i64;
                            if( (_MMPTE *)v11 != MmGetPxeSelfRef() || *((_WORD *)Pfn1 + 16) > 1u )
                              return 1i64;
                          }
                          else
                          {
                            v33 = *((_QWORD *)Pfn1 + 3);
                            v34 = v33 & 0x3FFFFFFFFFFFFFFFi64;
                            if( (v33 & 0x3FFFFFFFFFFFFFFFui64) <= 1 )
                            {
                              if( (v33 & 0xFFFFFFFFFi64) != 0
                                && (v27 < qword_140C4DB20 || v27 >= qword_140C4DB20 + 4096) )
                              {
                                v35 = *((unsigned __int16 *)Pfn1 + 16);
                                if( (unsigned int)v35 <= 1 && v35 <= v34 )
                                  return 0i64;
                              }
                            }
                            else if( (unsigned int)MiGetSystemRegionType(v27) == 6 )
                            {
                              if( *((_WORD *)Pfn1 + 16) <= 1u && v34 < 0x10000 )
                                return 0i64;
                            }
                            else if( (unsigned int)MiHyperPage((INT64)Pfn1) && *((_WORD *)Pfn1 + 16) <= 1u )
                            {
                              return 0i64;
                            }
                          }
                          return v7;
                        }
                      }
                      if( *((_WORD *)Pfn1 + 16) <= 1u && (*((_QWORD *)Pfn1 + 3) & 0x3FFFFFFFFFFFFFFFui64) < 0x10000 )
                        return 0i64;
                    }
                  }
                  else if( (unsigned int)MiHyperPage((INT64)Pfn1) )
                  {
                    v28 = *((unsigned __int16 *)Pfn1 + 16);
                    if( (unsigned int)v28 <= 1 && v28 <= (*((_QWORD *)Pfn1 + 3) & 0x3FFFFFFFFFFFFFFFui64) )
                      return 0i64;
                  }
                  else
                  {
                    if( MiVaIsPageFileHash(*(_QWORD *)(qword_140C4E388 + 8 * ((v25 >> 39) & 0x3FF)), v27) )
                      return 0i64;
                    if( (unsigned int)MiGetSystemRegionType(v27) == 5
                      && (*((_BYTE *)Pfn1 + 35) & 0x10) == 0
                      && *((_WORD *)Pfn1 + 16) <= 1u
                      && (MiFlags & 0x800) == 0 )
                    {
                      if( v4 != 1 )
                        return 0i64;
                      v29 = MI_READ_PTE_LOCK_FREE(v11);
                      if( (v29 & 1) != 0 && (v29 & 0x200) == 0 )
                        return 0i64;
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
    else
    {
      return MiLargePageSizes[PfnPageSizeIndex];
    }
  }
  return v7;
}

Referenced by:

MiCheckContiguityTradeEligible
MiPfnsWorthTrying
MiTradePage