MiReleaseArbitraryPage

VOID __stdcall MiReleaseArbitraryPage(_MI_ARBITRARY_PAGE_MAP *PageMap){
  __int64 v1; 
  unsigned __int8 CurrentIrql; 
  unsigned __int64 *v4; 
  unsigned __int64 Long; 
  int v6; 
  UINT64 SpinCount; 

  v1 = *((_QWORD *)PageMap + 6);
  CurrentIrql = KeGetCurrentIrql();
  __writecr8(2ui64);
  LODWORD(SpinCount) = 0;
  while( _interlockedbittestandset64((volatile signed __int32 *)(v1 + 24), 0x3Fui64) )
  {
    do
      KeYieldProcessorEx(&SpinCount);
    while( *(__int64 *)(v1 + 24) < 0 );
  }
  v4 = (unsigned __int64 *)*((_QWORD *)PageMap + 7);
  Long = ZeroPte.u.Long;
  *((_QWORD *)PageMap + 6) = 0i64;
  LOBYTE(v6) = MiPteInShadowRange((UINT64)v4);
  if( v6 && (KeGetCurrentThread()->ApcState.Process->Flags3 & 0x1000) != 0 && (ZeroPte.u.Long & 1) != 0 )
    Long = ZeroPte.u.Long | 0x8000000000000000ui64;
  *v4 = Long;
  *((_QWORD *)PageMap + 7) = 0i64;
  _InterlockedAnd64((volatile signed __int64 *)(v1 + 24), 0x7FFFFFFFFFFFFFFFui64);
  __writecr8(CurrentIrql);
}

Referenced by:

MiCombineAllPhysicalMemory
MiCombinePte
MiSharePages