MiQueryPfn

CHAR __stdcall MiQueryPfn(INT64 a1, INT64 a2){
  INT64 v2; 
  _MMPFN *PfnDb; 
  _MMPFN *v4; 
  int v5; 
  NTSTATUS PfnPriority; 
  __int64 v7; 
  __int64 v8; 
  __int64 v9; 
  __int64 v10; 
  __int64 v11; 
  CHAR result; 

  v2 = a2;
  PfnDb = MmGetPfnDb();
  v4 = &PfnDb[a1];
  if( (*((_BYTE *)&v4->u3 + 3) & 0x40) != 0 || (LOBYTE(v5) = MiIsPageOnBadList((INT64)&PfnDb[a1]), v5) )
    *(_QWORD *)(v2 + 8) |= 0x80000000ui64;
  PfnPriority = MiGetPfnPriority(v4);
  v10 = v9 ^ ((unsigned int)v9 ^ (PfnPriority << 24)) & 0x7000000;
  *(_QWORD *)(v7 + 8) = v10;
  result = *(_BYTE *)(v11 + 34) & 7;
  if( result == 3 )
    v8 = 0x8000000i64;
  *(_QWORD *)(v7 + 8) = v10 & 0xFFFFFFFFF77FFFFFui64 | v8 & 0xFFFFFFFFFF7FFFFFui64 | 0x400000;
  return result;
}

Referenced by:

MiGetWorkingSetInfoList