EtwpGetLoggerTimeStamp

_LARGE_INTEGER __stdcall EtwpGetLoggerTimeStamp(INT64 a1){
  unsigned __int64 v1; 
  int v2; 
  _LARGE_INTEGER result; 
  int v4; 
  _LARGE_INTEGER v5; 

  v1 = *(_QWORD *)(a1 + 40);
  if( v1 > 3 )
    goto LABEL_10;
  if( !(_DWORD)v1 )
  {
    result.anonymous_0.LowPart = RtlGetSystemTimePrecise();
    return result;
  }
  v2 = v1 - 1;
  if( !v2 )
    return(_LARGE_INTEGER)KeQueryPerformanceCounter(0i64);
  v4 = v2 - 1;
  if( v4 )
  {
    if( v4 == 1 )
      return(_LARGE_INTEGER)__rdtsc();
LABEL_10:
    __fastfail(0x3Du);
  }
  v5.QuadPart = 0i64;
  ((void(__fastcall *)(_LARGE_INTEGER *))off_140C009E0[0])(&v5);
  return v5;
}

Referenced by:

EtwSendTraceBuffer
EtwpInitializeTimeStamp
EtwpLogContextSwapEvent
EtwpPrepareDirtyBuffer
EtwpRelinquishCompressionTarget
EtwpRotateCompressionTarget