MiDeleteTransitionPte

INT64 __fastcall MiDeleteTransitionPte(_MMPTE *PoINTerPte, _MMPFN *Pfn1, UINT8 *PageIrql, UINT64 ReleasePageFileInfo){
  INT64 v4; 
  INT64 v5; 
  INT64 v6; 
  INT64 v7; 
  INT64 v8; 
  __int64 v11; 
  UINT64 v12; 
  __int64 v13; 
  __int64 v14; 
  __int64 v15; 
  UINT64 v16; 
  __int64 v17; 
  __int64 v18; 
  __int64 v19; 
  unsigned int v20; 
  char *v21; 
  INT64 v22; 
  __int64 v23; 
  unsigned __int8 v24; 
  char v26; 
  ULONG_PTR BugCheckParameter4; 
  INT64 v28; 
  INT64 v29; 
  INT64 a8; 
  INT64 a9; 
  INT64 a10; 
  INT64 a11; 
  INT64 a12; 
  UINT64 SpinCount; 
  INT64 a1; 
  unsigned __int8 v37; 
  int v38; 
  v38 = ReleasePageFileInfo;
  v37 = (unsigned __int8)PageIrql;
  v11 = (unsigned __int128)((Pfn1 - MmGetPfnDb()) * (__int128)0x2AAAAAAAAAAAAAABi64) >> 64;
  v12 = ((unsigned __int64)v11 >> 63) + (v11 >> 3);
  if( (_MMPTE *)(*((_QWORD *)Pfn1 + 1) | 0x8000000000000000ui64) != PoINTerPte )
    KeBugCheckEx(0x1Au, 0x402ui64, (ULONG_PTR)PoINTerPte, *(_QWORD *)PoINTerPte, *((_QWORD *)Pfn1 + 1));
  v13 = *((_QWORD *)Pfn1 + 2);
  a12 = v4;
  a11 = v5;
  a10 = v6;
  a9 = v7;
  v14 = *((_QWORD *)Pfn1 + 5) & 0xFFFFFFFFFi64;
  v15 = 0i64;
  a8 = v8;
  a1 = 0i64;
  v16 = 0i64;
  if( (v13 & 0x400) != 0 )
  {
    if( qword_140C4DC80 && (v13 & 0x10) == 0 )
      v13 &= ~qword_140C4DC80;
    MiDereferenceControlAreaPfnList(*(_CONTROL_AREA **)(v13 >> 16), (_SUBSECTION *)(v13 >> 16), (UINT64)PageIrql, 2ui64);
    v17 = *((_QWORD *)Pfn1 + 2);
    v18 = -2049i64;
    if( (v17 & 0x400) == 0 )
      v18 = -9i64;
    v19 = v18 & *((_QWORD *)Pfn1 + 2);
    if( (v17 & 0x400) == 0 )
      v19 &= 0xFFFFFFFFFFFFFFF9ui64;
  }
  else
  {
    v19 = 0i64;
  }
  if( *((_WORD *)Pfn1 + 16) )
  {
    *((_QWORD *)Pfn1 + 3) |= 0x4000000000000000ui64;
    v26 = *((_BYTE *)Pfn1 + 34);
    if( (v26 & 0x20) != 0 && (v26 & 8) == 0 )
    {
      v15 = *(_QWORD *)Pfn1 - 32i64;
      if( *(_QWORD *)(v15 + 16) == v15 + 16 )
        v15 = 0i64;
    }
    v20 = 3;
  }
  else
  {
    MiUnlinkPageFromList(Pfn1, 0i64);
    if( (*((_DWORD *)Pfn1 + 4) & 0x400i64) == 0 )
    {
      v16 = MiCapturePageFileInfoInline((UINT64 *)Pfn1 + 2, 0i64, 1i64);
      a1 = *(_QWORD *)(qword_140C4E388 + 8 * ((*((_QWORD *)Pfn1 + 5) >> 39) & 0x3FFi64));
    }
    v20 = 4;
  }
  *(_QWORD *)PoINTerPte = v19;
  if( v20 == 4 )
    MiInsertPageInFreeOrZeroedList(v12, 2ui64);
  _InterlockedAnd64((volatile signed __int64 *)Pfn1 + 3, 0x7FFFFFFFFFFFFFFFui64);
  v21 = (char *)MmGetPfnDb() + 48 * v14;
  LODWORD(SpinCount) = 0;
  while( _interlockedbittestandset64((volatile signed __int32 *)v21 + 6, 0x3Fui64) )
  {
    do
      KeYieldProcessorEx(&SpinCount);
    while( *((__int64 *)v21 + 3) < 0 );
  }
  v22 = (unsigned __int8)v21[34];
  v23 = *((_QWORD *)v21 + 3) & 0x3FFFFFFFFFFFFFFFi64;
  if( (v22 & 7) != 6 )
    KeBugCheckEx(0x4Eu, 0x99ui64, 48 * v14 / 48, v22 & 7, *((_QWORD *)v21 + 3) & 0x3FFFFFFFFFFFFFFFi64);
  *((_QWORD *)v21 + 3) ^= ((v23 - 1) ^ *((_QWORD *)v21 + 3)) & 0x3FFFFFFFFFFFFFFFi64;
  if( v23 == 1 )
    MiPfnShareCountIsZero((UINT64)v21, 0i64);
  _InterlockedAnd64((volatile signed __int64 *)v21 + 3, 0x7FFFFFFFFFFFFFFFui64);
  v24 = v37;
  if( v37 != 17 )
    __writecr8(v37);
  if( v15 )
    MiInvalidateCollidedIos(v15);
  if( v16 && v38 )
    MiReleasePageFileInfo(a1, v16, v24 == 17, v22, BugCheckParameter4, v28, v29, a8, a9, a10, a11, a12);
  return v20;
}

Referenced by:

MiDecommitPages
MiDeletePerSessionProtos
MiDeleteSubsectionPages
MiDeleteSystemPagableVm
MiPurgeFileOnlyPfn
MiTryDeleteTransitionPte
MiWalkEntireImage
MmPurgeSection