EtwpFlushCoverage

VOID __stdcall EtwpFlushCoverage(){
  _ETHREAD *CurrentThread; 
  char v1; 
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  --*((_WORD *)CurrentThread + 242);
  ExAcquirePushLockExclusiveEx((UINT64)&EtwpCoverageLock, 0i64);
  EtwpCoverageLockOwner = (__int64)KeGetCurrentThread();
  if( EtwpCoverageContext )
    EtwpCoverageFlushPending(EtwpCoverageContext);
  EtwpCoverageLockOwner = 0i64;
  v1 = _InterlockedExchangeAdd64((volatile signed __int64 *)&EtwpCoverageLock, 0xFFFFFFFFFFFFFFFFui64);
  if( (v1 & 2) != 0 && (v1 & 4) == 0 )
    ExfTryToWakePushLock((volatile INT64 *)&EtwpCoverageLock);
  KeAbPostRelease(&EtwpCoverageLock);
  KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
}

Referenced by:

EtwShutdown