EtwpCoverageProvEnableCallback

_QWORD *EtwpCoverageProvEnableCallback(){
  unsigned __int8 v0; 
  _ETHREAD *CurrentThread; 
  int v3[6]; 
  if( dword_140C02BE8 && tlgKeywordOn((__int64)&dword_140C02BE8, 1i64) )
  {
    v0 = 1;
    if( !EtwpCoverageCoreTracingEnabled && dword_140C0EF54 < KUSER_SHARED_DATA.TelemetryCoverageRound )
    {
      if( !dword_140C0EF50 )
        dword_140C0EF50 = TelemetryCoverageStringHashInternal((_BYTE *)off_140C0EF48, v3);
      EtwTelemetryCoverageReport((INT64)&off_140C0EF48);
    }
  }
  else
  {
    v0 = 0;
  }
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  --*((_WORD *)CurrentThread + 242);
  ExAcquirePushLockExclusiveEx((UINT64)&EtwpCoverageLock, 0i64);
  EtwpCoverageLockOwner = (__int64)KeGetCurrentThread();
  if( EtwpCoverageContext && EtwpCoverageCoreTracingEnabled != v0 )
  {
    if( v0 )
    {
      KUSER_SHARED_DATA.TelemetryCoverageRound = -256;
      *(_WORD *)(*(_QWORD *)(EtwpCoverageContext + 16) + 2i64) |= 1u;
    }
    else
    {
      KUSER_SHARED_DATA.TelemetryCoverageRound = *(_DWORD *)(*(_QWORD *)(EtwpCoverageContext + 16) + 24i64);
      *(_WORD *)(*(_QWORD *)(EtwpCoverageContext + 16) + 2i64) &= ~1u;
    }
  }
  EtwpCoverageLockOwner = 0i64;
  EtwpCoverageCoreTracingEnabled = v0;
  if( (_InterlockedExchangeAdd64((volatile signed __int64 *)&EtwpCoverageLock, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
    ExfTryToWakePushLock((volatile INT64 *)&EtwpCoverageLock);
  KeAbPostRelease(&EtwpCoverageLock);
  return KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
}

Referenced by:

No references.