MiUnlinkStandbyPfn

INT64 __fastcall MiUnlinkStandbyPfn(UINT64 *a1, CHAR a2){
  unsigned __int64 v4; 
  __int64 v5; 
  _MMPFN *PfnDb; 
  UINT64 v7; 
  char v8; 
  unsigned __int8 v9; 
  unsigned __int8 v10; 
  int v11; 
  unsigned int v12; 
  UINT64 ValidPte; 
  v4 = MI_READ_PTE_LOCK_FREE((INT64)a1);
  if( qword_140C4DC80 )
  {
    if( (v4 & 0x10) != 0 )
      v4 &= ~0x10ui64;
    else
      v4 &= ~qword_140C4DC80;
  }
  v5 = (v4 >> 12) & 0xFFFFFFFFFi64;
  PfnDb = MmGetPfnDb();
  v7 = (UINT64)PfnDb + 48 * v5;
  if( (*(_BYTE *)(v7 + 34) & 0x20) != 0 )
    return 2i64;
  if( (unsigned int)MiUnlinkPageFromList((_MMPFN *)((char *)PfnDb + 48 * v5), 0i64) )
  {
    v8 = *(_BYTE *)(v7 + 34);
    ++*(_WORD *)(v7 + 32);
    *(_BYTE *)(v7 + 34) = v8 & 0xF8 | 6;
    *(_QWORD *)(v7 + 24) = *(_QWORD *)(v7 + 24) & 0xC000000000000000ui64 | 1;
    if( (a2 & 2) != 0 && (unsigned int)MiGetPfnPriority(v7) > 2 )
      *(_BYTE *)(v7 + 35) = *(_BYTE *)(v7 + 35) & 0xF8 | 2;
    v9 = MI_READ_PTE_LOCK_FREE(v7 + 16);
    v10 = *(_BYTE *)(v7 + 34);
    v11 = v10 >> 6;
    v12 = v9 >> 5;
    if( v11 )
    {
      if( v11 == 2 )
        v12 |= 0x18u;
    }
    else
    {
      v12 |= 8u;
    }
    ValidPte = MiMakeValidPte(0i64, v5, v12);
    if( (a2 & 4) == 0 || !MiIsPfnFileOnly(v7) )
    {
      *(_BYTE *)(v7 + 34) = v10 | 0x10;
      ValidPte |= 0x42ui64;
    }
    *a1 = ValidPte;
    return 0i64;
  }
  else
  {
    MiDiscardTransitionPteEx(v7, 0i64);
    return 1i64;
  }
}

Referenced by:

MmCopyToCachedPage