MiReturnSystemPtes

VOID __stdcall MiReturnSystemPtes(
        _MI_SYSTEM_PTE_TYPE *SystemPteInfo,
        UINT64 StartBit,
        UINT64 NumberOfBits,
        UINT64 Large){
  _MMPTE *BasePte; 
  UINT64 v7; 
  unsigned int v8; 
  __int64 v9; 
  UINT64 v10; 
  __int64 v11; 
  __int64 v12; 
  _MI_SYSTEM_VA_TYPE VaType; 
  __int64 v14; 

  BasePte = SystemPteInfo->BasePte;
  v7 = 16 * StartBit;
  v8 = SystemPteInfo->Flags & 4;
  if( !v8 )
    v7 = StartBit;
  _InterlockedExchangeAdd64((volatile signed __int64 *)&SystemPteInfo->TotalFreeSystemPtes, -(__int64)NumberOfBits);
  _InterlockedExchangeAdd64((volatile signed __int64 *)&SystemPteInfo->TotalSystemPtes, -(__int64)NumberOfBits);
  v9 = ((_QWORD)&BasePte[v7] << 25) - ((_QWORD)MmGetPteBase() << 25);
  v10 = 16 * NumberOfBits;
  v11 = v9 >> 16;
  if( !v8 )
    v10 = NumberOfBits;
  v12 = v9 + (v10 << 28);
  VaType = SystemPteInfo->VaType;
  v14 = v12 >> 16;
  if( (_DWORD)Large == 1 )
    VaType = MiVaSystemPtesLarge;
  MiReturnSystemVa((VOID *)v11, (VOID *)v14, VaType, 0i64);
}

Referenced by:

MiAttemptCoalesce
MiReleasePtes