MiCompareTbFlushTimeStamp

UINT8 __stdcall MiCompareTbFlushTimeStamp(UINT64 OldStamp, UINT64 Mask, INT64 a3, INT64 a4, UINT64 a5){
  int v5; 
  int v6; 
  int v7; 
  unsigned int v8; 
  signed __int32 v10[10]; 
  UINT64 SpinCount; 

  v5 = Mask;
  v6 = OldStamp & 1;
  v7 = OldStamp;
  while( 1 )
  {
    _InterlockedOr(v10, 0);
    v8 = v5 & (KiTbFlushTimeStamp - v7);
    if( v8 > 2 || !v6 && v8 >= 2 )
      return 0;
    if( (KiTbFlushTimeStamp & 1) == 0 )
      break;
    LODWORD(SpinCount) = 0;
    _InterlockedOr(v10, 0);
    while( _bittest((const signed __int32 *)&KiTbFlushTimeStamp, 0) )
      KeYieldProcessorEx(&SpinCount);
    if( !v6 )
      return 0;
  }
  return 1;
}

Referenced by:

MiAttachSession
MiFlushTbAsNeeded
MiObtainSystemCacheView
MmMapViewInSystemCache