MiGetPageFileSectionForReservation

VOID __fastcall MiGetPageFileSectionForReservation(
        _MMPTE *ProtoPte,
        _MI_PAGEFILE_SECTION_RESERVE_INFO *Info,
        UINT64 LockProtoPool){
  int v3; 
  _SUBSECTION *v6; 
  _SUBSECTION *v7; 
  unsigned __int64 v8; 
  unsigned __int64 v9; 
  unsigned __int64 SubsectionBase; 
  unsigned __int64 v11; 
  _MMPFN *v12; 

  v3 = LockProtoPool;
  v6 = MiReferencePfBackedSection(ProtoPte);
  v7 = v6;
  if( v6 )
  {
    *(_QWORD *)Info = v6->ControlArea;
    v8 = (unsigned __int64)ProtoPte & 0xFFFFFFFFFFFFF000ui64;
    *((_QWORD *)Info + 2) = (unsigned __int64)ProtoPte & 0xFFFFFFFFFFFFF000ui64;
    v9 = ((unsigned __int64)ProtoPte & 0xFFFFFFFFFFFFF000ui64) + 4088;
    *((_QWORD *)Info + 3) = v9;
    SubsectionBase = (unsigned __int64)v7->SubsectionBase;
    if( ((unsigned __int64)ProtoPte & 0xFFFFFFFFFFFFF000ui64) < SubsectionBase )
      v8 = (unsigned __int64)v7->SubsectionBase;
    *((_QWORD *)Info + 2) = v8;
    v11 = SubsectionBase + 8i64 * (v7->PtesInSubsection - 1);
    if( v9 > v11 )
      v9 = v11;
    *((_QWORD *)Info + 3) = v9;
    if( v3 )
    {
      v12 = MiLockProtoPoolPage(ProtoPte, (UINT8 *)Info + 32);
      *((_QWORD *)Info + 1) = v12;
      if( !v12 )
        MiReleasePageFileSectionInfo(Info);
    }
    else
    {
      *((_QWORD *)Info + 1) = 0i64;
    }
  }
}

Referenced by:

MiBuildReservationCluster
MiReservePageFileSpace