MiRemoveSystemImagePage

NTSTATUS __stdcall MiRemoveSystemImagePage(INT64 a1, INT64 a2, INT64 a3){
  unsigned __int64 v4; 
  volatile signed __int32 *v5; 
  __int64 v6; 
  UINT64 LogAccess; 
  UINT64 SpinCount; 

  LODWORD(LogAccess) = 0;
  *(_BYTE *)(a3 + 35) |= 8u;
  _InterlockedAnd64((volatile signed __int64 *)(a3 + 24), 0x7FFFFFFFFFFFFFFFui64);
  v4 = ((a2 << 25) - ((_QWORD)MmGetPteBase() << 25)) >> 16;
  if( PsNtosImageBase
    && (v4 < PsNtosImageEnd && v4 >= PsNtosImageBase || v4 < PsHalImageEnd && v4 >= (unsigned __int64)PsHalImageBase) )
  {
    v5 = (volatile signed __int32 *)&xmmword_140C4CA88 + 2;
  }
  else
  {
    v5 = (volatile signed __int32 *)&xmmword_140C4CA88 + 3;
  }
  _InterlockedDecrement(v5);
  MiTerminateWsle((VOID *)a1, (_MMSUPPORT_INSTANCE *)v4, 2ui64, (UINT64)&LogAccess);
  LODWORD(SpinCount) = 0;
  while( _interlockedbittestandset64((volatile signed __int32 *)(a3 + 24), 0x3Fui64) )
  {
    do
    {
      KeYieldProcessorEx(&SpinCount);
      v6 = *(_QWORD *)(a3 + 24);
    }
    while( v6 < 0 );
  }
  return v6;
}

Referenced by:

MiLockCode
MiMakeDriverPageStayResident