MiWorkingSetInfoCheckPageTable

NTSTATUS __stdcall MiWorkingSetInfoCheckPageTable(INT64 a1, UINT64 a2, INT64 a3, CHAR a4, UINT8 WsIrql){
  NTSTATUS v9; 
  union {unsigned __int64 Long;volatile unsigned __int64 VolatileLong;_MMPTE_HARDWARE Hard;_MMPTE_PROTOTYPE Proto;_MMPTE_SOFTWARE Soft;_MMPTE_TIMESTAMP TimeStamp;_MMPTE_TRANSITION Trans;_MMPTE_SUBSECTION Subsect;_MMPTE_LIST List;} v10; 
  __int64 v11; 
  unsigned __int64 v12; 
  _MMPTE *PteBase; 
  UINT64 Flags; 
  _MMPTE PointerPte; 

  v9 = 0;
  LODWORD(v10.Long) = MI_READ_PTE_LOCK_FREE(a2);
  PointerPte.u.Long = v10.Long;
  v11 = v10.Long & 0x800;
  if( (v10.Long & 0x800) != 0 || MiGetPagingFileOffset(&PointerPte) )
  {
    if( (a4 & 1) != 0 )
    {
      if( v11 )
        v12 = *(_QWORD *)(a3 + 8) & 0xFFFFFFFFFF1FFFFFui64 | 0x600000;
      else
        v12 = *(_QWORD *)(a3 + 8) & 0xFFFFFFFFFF1FFFFFui64 | 0xA00000;
      *(_QWORD *)(a3 + 8) = v12;
    }
    else if( (a4 & 2) != 0 )
    {
      PteBase = MmGetPteBase();
      MiUnlockPageTableInternal(a1, (UINT64)PteBase + ((a2 >> 9) & 0x7FFFFFFFF8i64));
      LODWORD(Flags) = 0;
      MiMakeSystemAddressValid(
        (VOID *)((__int64)((a2 << 25) - ((_QWORD)PteBase << 25)) >> 16),
        0i64,
        0i64,
        WsIrql,
        Flags);
      MiUnlockPageTableInternal(a1, a2);
      return 1;
    }
  }
  return v9;
}

Referenced by:

MiGetWorkingSetInfoList