MmTryIdentifyPage

VOID __stdcall MmTryIdentifyPage(UINT64 PageFrameIndex, _MMPFN_IDENTITY *Identity){
  _MMPFN *v2; 
  unsigned __int8 CurrentIrql; 
  int v4; 
  INT64 v5; 
  int v6; 
  _MMPFN_IDENTITY *v7; 

  *(_OWORD *)Identity = 0i64;
  *((_QWORD *)Identity + 2) = 0i64;
  v2 = &MmGetPfnDb()[PageFrameIndex];
  CurrentIrql = KeGetCurrentIrql();
  __writecr8(2ui64);
  if( !_interlockedbittestandset64((volatile signed __int32 *)&v2->u2, 0x3Fui64) )
  {
    if( (*((_BYTE *)&v2->u3 + 3) & 0x40) == 0 )
    {
      LOBYTE(v4) = MiIsPageOnBadList((INT64)v2);
      if( !v4 )
      {
        LOBYTE(v6) = MiIsPageSecured(v5);
        if( !v6 )
          MiIdentifyPfn(v2, v7);
      }
    }
    _InterlockedAnd64(&v2->u2.Lock, 0x7FFFFFFFFFFFFFFFui64);
  }
  __writecr8(CurrentIrql);
}

Referenced by:

IopLiveDumpMirrorPhysicalMemoryCallback