MiFinishLastForkPageTable

VOID __stdcall MiFinishLastForkPageTable(UINT64 PageFrameIndex, UINT64 a2){
  _BOOL4 v3; 
  _MMPFN *v4; 
  unsigned __int64 PteBase; 
  unsigned __int64 v6; 
  unsigned __int64 v7; 
  unsigned __int64 v8; 
  _QWORD *v9; 
  __int64 v10; 
  __int64 v11; 
  int v12; 

  v3 = 1;
  v4 = &MmGetPfnDb()[a2];
  PteBase = (unsigned __int64)MmGetPteBase();
  v6 = v4->PteLong | 0x8000000000000000ui64;
  v7 = (__int64)(((__int64)((v6 << 25) - (PteBase << 25)) >> 16 << 25) - (PteBase << 25)) >> 16;
  if( v7 >= PteBase )
    v3 = (unsigned __int64)MmGetPteLimit() < v7;
  v8 = MiLockPageInline(v4);
  MiRemoveLockedPageChargeAndDecRef(v4);
  if( v3 )
  {
    if( (v4->u2._bf_0 & 0x3FFFFFFFFFFFFFFFui64) <= 1 )
    {
      MiDecrementShareCount(v4);
    }
    else
    {
      v9 = (char *)MiMapPageInHyperSpaceWorker(v4->u4._bf_0 & 0xFFFFFFFFFi64, 0i64, 0x80000000ui64)
         + 8 * ((v6 >> 3) & 0x1FF);
      if( (MI_READ_PTE_LOCK_FREE((INT64)v9) & 1) == 0 )
      {
        LODWORD(v10) = MiMakeValidPte((_XSTATE_CONFIGURATION *)v6, a2, 2147483652i64);
        v11 = v10;
        LOBYTE(v12) = MiPteInShadowRange((UINT64)v9);
        if( v12 && (KeGetCurrentThread()->ApcState.Process->Flags3 & 0x1000) != 0 && (v11 & 1) != 0 )
          v11 |= 0x8000000000000000ui64;
        *v9 = v11;
      }
      MiUnmapPageInHyperSpaceWorker(v9, 0x11u, 0x80000000ui64);
    }
  }
  _InterlockedAnd64(&v4->u2.Lock, 0x7FFFFFFFFFFFFFFFui64);
  __writecr8(v8);
}

Referenced by:

MiDoneWithThisPageGetAnother
MiFreeForkMaps