MiSlistGetFreePage

NTSTATUS __stdcall MiSlistGetFreePage(_MI_PARTITION *Partition, _MMLISTS PageType, UINT64 Color){
  int v3; 
  __int64 v4; 
  __int64 v6; 
  _SLIST_HEADER *v7; 
  PSLIST_ENTRY v9; 
  _QWORD *p_Next; 

  v3 = **(_DWORD **)&PageType;
  v4 = *(_QWORD *)&PageType;
  v6 = (unsigned int)Color;
  while( 1 )
  {
    v7 = &Partition->PageLists.FreePageSlist[v3][v6];
    if( LOWORD(v7->Alignment) )
    {
      v9 = RtlpInterlockedPopEntrySList(v7);
      p_Next = &v9->Next;
      if( v9 )
        break;
    }
    if( v3 == *(_DWORD *)(v4 + 4) )
      return 0;
    v3 = *(_DWORD *)(v4 + 4);
  }
  v9[1].Next = (_SLIST_ENTRY *)ZeroPte.u.Long;
  if( v3 )
  {
    MiSetOriginalPtePfnFromFreeList((UINT64 *)&v9[1]);
  }
  else if( (MiFlags & 0x80u) != 0 && (++*(&stru_140C4DB30 + 631) & MmPageValidationFrequency) == 0 )
  {
    MiArePageContentsZero((PVOID)(((char *)v9 - (char *)MmGetPfnDb()) / 48));
  }
  *p_Next = 0i64;
  return(int)p_Next;
}

Referenced by:

MiGetPageSlist
MiRemovePageAnyColor