EtwTelemetryCoverageReport

INT64 __fastcall EtwTelemetryCoverageReport(INT64 a1){
  int v1; 
  int v2; 
  _QWORD *v4; 
  BOOL v5; 
  __int64 v6; 
  __int64 v7; 
  unsigned int v8; 
  UINT64 v10; 
  unsigned int v11; 
  INT64 v12; 
  unsigned __int8 v13; 
  unsigned __int64 v14; 
  int v15; 
  UINT64 v16; 
  _QWORD *PoolWithTag; 
  unsigned __int8 v18; 
  unsigned __int64 v19; 
  __int64 v20; 
  _QWORD *v21; 
  _QWORD *v22; 
  int v23; 
  int v24; 
  int v25; 
  int v26; 
  const CHAR *v27; 
  int v28; 
  int v29; 
  int v30; 
  int v31; 
  int v32; 
  int v33; 
  int v34; 
  __int64 v35; 
  struct _EVENT_DATA_DESCRIPTOR v36; 
  int *v37; 
  int v38; 
  int v39; 
  int *v40; 
  int v41; 
  int v42; 
  int *v43; 
  int v44; 
  int v45; 
  int *v46; 
  int v47; 
  int v48; 
  int *v49; 
  int v50; 
  int v51; 
  int *v52; 
  int v53; 
  int v54; 
  char v55[16]; 
  v1 = 0;
  v2 = 0;
  v28 = 0;
  v4 = 0i64;
  v5 = ObGetCurrentIrql() < 2u && (*(_DWORD *)(a1 + 16) & 1) == 0;
  if( !EtwpCoverageNonPagedContext )
  {
    if( !v5 )
      return(unsigned int)-1073741641;
    v8 = EtwpCoverageEnsureContext();
    if( (v8 & 0x80000000) != 0 )
      return v8;
  }
  v6 = EtwpCoverageNonPagedContext;
  v7 = EtwpCoverageNonPagedContext + 24;
  if( *(_DWORD *)(a1 + 12) >= 0xFFFFFF00 )
    return(unsigned int)-1073741637;
  if( v5 )
  {
    EtwpCoverageRecord((INT64 **)EtwpCoverageContext, a1);
    return 0;
  }
  if( !(unsigned int)EtwpCoverageValidateCP((INT64 *)a1) )
  {
    v8 = -1073741811;
LABEL_39:
    if( EtwpCoverageCoreTracingEnabled
      && (unsigned int)dword_140C02BE8 > 5
      && tlgKeywordOn((__int64)&dword_140C02BE8, 1i64) )
    {
      v24 = *(_DWORD *)v6;
      v39 = 0;
      v42 = 0;
      v45 = 0;
      v48 = 0;
      v51 = 0;
      v54 = 0;
      v29 = v24;
      v37 = &v29;
      v30 = *(_DWORD *)(v6 + 4);
      v40 = &v30;
      v25 = v23 - *(_DWORD *)(v6 + 16);
      v26 = v23 - *(_DWORD *)(v6 + 20);
      v31 = v25;
      v43 = &v31;
      v46 = &v32;
      v49 = &v33;
      v38 = 4;
      v41 = 4;
      v44 = 4;
      v47 = 4;
      v50 = 4;
      v53 = 4;
      v27 = *(const CHAR **)a1;
      v52 = &v34;
      v32 = v26;
      v33 = v2;
      v34 = v1;
      tlgCreate1Sz_char((__int64)v55, v27);
      tlgWriteTransfer_EtwWriteTransfer(
        (__int64)&dword_140C02BE8,
        (unsigned __int8 *)byte_14002B629,
        0i64,
        0i64,
        9u,
        &v36);
    }
    return v8;
  }
  v11 = *(_DWORD *)(a1 + 12);
  if( v11 >= *(_DWORD *)v6 )
  {
    v8 = 0;
    v2 = 1;
    v1 = 1;
    goto LABEL_39;
  }
  *(_DWORD *)(a1 + 12) = *(_DWORD *)v6;
  while( 1 )
  {
    KeAcquireSpinLockRaiseToDpc((UINT64 *)v7, v10);
    v12 = *(_QWORD *)(v7 + 8);
    v14 = v13;
    v35 = *(_QWORD *)(v7 + 64);
    if( v12 )
    {
      v28 = EtwpCoverageAddToStringBuffer(v12, *(const CHAR **)a1, 0i64);
      if( v28 == 1 )
        break;
    }
    KxReleaseSpinLock((UINT64 *)v7);
    __writecr8(v14);
    if( !v4 )
    {
      PoolWithTag = ExAllocatePoolWithTag(NonPagedPoolNx, 0x400ui64, 0x56777445ui64);
      v4 = PoolWithTag;
      if( !PoolWithTag )
      {
        *(_DWORD *)(a1 + 12) = v11;
        _InterlockedIncrement((volatile signed __int32 *)(v6 + 4));
        v15 = 1;
        v8 = -1073741670;
        goto LABEL_35;
      }
      memset((INT64)PoolWithTag, 0i64);
      v4[2] = v4 + 128;
      v4[3] = v4 + 5;
      v4[4] = v4 + 5;
    }
    KeAcquireSpinLockRaiseToDpc((UINT64 *)v7, v16);
    v19 = v18;
    v20 = *(_QWORD *)(v7 + 64);
    if( v35 == v20 )
    {
      v21 = *(_QWORD **)(v7 + 8);
      if( v21 )
      {
        v22 = *(_QWORD **)(v7 + 24);
        if( *v22 != v7 + 16 )
          __fastfail(3u);
        *v21 = v7 + 16;
        v21[1] = v22;
        *v22 = v21;
        *(_QWORD *)(v7 + 24) = v21;
        v20 = *(_QWORD *)(v7 + 64);
      }
      *(_QWORD *)(v7 + 8) = v4;
      *(_QWORD *)(v7 + 64) = v20 + 1;
      v4 = 0i64;
    }
    KxReleaseSpinLock((UINT64 *)v7);
    __writecr8(v19);
  }
  if( !*(_DWORD *)(v7 + 72) )
  {
    ExQueueWorkItem((WORK_QUEUE_ITEM *)(v7 + 32), DelayedWorkQueue);
    *(_DWORD *)(v7 + 72) = 1;
  }
  KxReleaseSpinLock((UINT64 *)v7);
  __writecr8(v14);
  v15 = 0;
  v8 = 0;
LABEL_35:
  if( v4 )
    ExFreePoolWithTag(v4, 0x56777445u);
  if( v15 )
  {
    v2 = v28;
    v1 = 0;
    goto LABEL_39;
  }
  return v8;
}

Referenced by:

EtwpCoverageEnsureContext
EtwpCoverageProvEnableCallback
EtwpCoverageRecordAtHighIrql
EtwpCoverageReset
EtwpCoverageResetCP
PopTransitionTelemetryOsState
PsSetProcessFaultInformation