MiInitializeTransitionPfn

VOID __stdcall MiInitializeTransitionPfn(UINT64 PageFrameIndex, MMPTE *PointerPte){
  __int64 v2; 
  __int64 v3; 
  char *v6; 
  UINT64 ContainingPageTable; 
  UINT64 v8; 
  INT64 v9; 
  __int64 v10; 
  char v11; 
  char v12; 
  unsigned __int64 v13; 
  _MI_PFN_CACHE_ATTRIBUTE v14; 
  UINT64 v15; 
  char *v16; 
  INT64 TransitionPte; 
  v3 = v2;
  v6 = (char *)MmGetPfnDb() + 48 * PageFrameIndex;
  ContainingPageTable = MiGetContainingPageTable((UINT64)PointerPte);
  *(_QWORD *)v6 = 0i64;
  v8 = ContainingPageTable;
  v9 = MI_READ_PTE_LOCK_FREE((INT64)PointerPte);
  TransitionPte = v9;
  if( (v9 & 0x400) == 0 && (v9 & 0x800) != 0 )
  {
    v9 = *((_QWORD *)MmGetPfnDb() + 6 * v3 + 2);
    TransitionPte = v9;
  }
  v10 = *((_QWORD *)v6 + 5);
  *((_QWORD *)v6 + 2) = v9;
  *((_QWORD *)v6 + 1) = PointerPte;
  *((_QWORD *)v6 + 3) &= ~0x4000000000000000ui64;
  v11 = v6[34];
  *((_QWORD *)v6 + 5) = v8 & 0xFFFFFFFFFi64 | v10 & 0xFFFFFFF000000000ui64 | 0x8000000000000000ui64;
  if( (v11 & 0x10) != 0 )
    v12 = v11 & 0xF8 | 3;
  else
    v12 = v11 & 0xF8 | 2;
  v6[34] = v12;
  TransitionPte = MI_READ_PTE_LOCK_FREE((INT64)PointerPte);
  v13 = ((unsigned __int64)MI_READ_PTE_LOCK_FREE((INT64)&TransitionPte) >> 5) & 0x1F;
  v14 = (unsigned int)MiProtectionToCacheAttribute(v13);
  MiFinalizePageAttribute((_MMPFN *)v6, v14, 1ui64);
  *((_QWORD *)v6 + 3) &= 0xC000000000000000ui64;
  if( v3 == -1 )
  {
    TransitionPte = MiMakeTransitionPte(PageFrameIndex, (unsigned int)v13, v15);
    *(_QWORD *)PointerPte = TransitionPte;
  }
  v16 = (char *)MmGetPfnDb() + 48 * v8;
  MiLockNestedPageAtDpcInline((INT64)v16);
  *((_QWORD *)v16 + 3) ^= (*((_QWORD *)v16 + 3) ^ (*((_QWORD *)v16 + 3) + 1i64)) & 0x3FFFFFFFFFFFFFFFi64;
  _InterlockedAnd64((volatile signed __int64 *)v16 + 3, 0x7FFFFFFFFFFFFFFFui64);
}

Referenced by:

MiCopyDataPageToImagePage
MiCopyFileOnlyGlobalSubsectionPage
MiCopyImageExtentContents
MiInitializeImageProtos
MiSectionCreated