EtwpCoverageHighIrqlCPWorkItemCallback

INT64 __fastcall EtwpCoverageHighIrqlCPWorkItemCallback(INT64 **a1){
  UINT64 v1; 
  INT64 *v2; 
  __int64 **v3; 
  __int64 *v4; 
  unsigned __int8 v5; 
  unsigned __int64 v6; 
  __int64 v7; 
  int v8; 
  unsigned __int64 v9; 
  _BYTE *v10; 
  INT64 result; 
  INT64 v12[11]; 
  int a2; 
  v2 = *a1 + 3;
  a2 = 0;
  memset(v12, 0, 24);
  v3 = (__int64 **)(v2 + 2);
  while( 1 )
  {
    KeAcquireSpinLockRaiseToDpc((UINT64 *)v2, v1);
    v4 = *v3;
    v6 = v5;
    if( *v3 == (__int64 *)v3 )
      break;
    v7 = *v4;
    if( (__int64 **)v4[1] != v3 || *(__int64 **)(v7 + 8) != v4 )
      __fastfail(3u);
    *v3 = (__int64 *)v7;
    v8 = 1;
    *(_QWORD *)(v7 + 8) = v3;
LABEL_8:
    v9 = v4[3];
    v10 = (_BYTE *)v4[4];
    v4[4] = v9;
    KxReleaseSpinLock((UINT64 *)v2);
    __writecr8(v6);
    if( (unsigned __int64)v10 < v9 )
    {
      do
      {
        *(INT64 *)((char *)&v12[1] + 4) = 0i64;
        HIDWORD(v12[2]) = 0;
        v12[0] = (INT64)v10;
        LODWORD(v12[1]) = TelemetryCoverageStringHashInternal(v10, &a2);
        EtwpCoverageRecord(a1, (INT64)v12);
        v1 = (unsigned int)(a2 + 1);
        v10 += v1;
      }
      while( (unsigned __int64)v10 < v9 );
      v3 = (__int64 **)(v2 + 2);
    }
    if( v8 )
      ExFreePoolWithTag(v4, 0x56777445u);
  }
  v4 = (__int64 *)v2[1];
  if( v4[4] < (unsigned __int64)v4[3] )
  {
    v8 = 0;
    goto LABEL_8;
  }
  v4[3] = (__int64)(v4 + 5);
  v4[4] = (__int64)(v4 + 5);
  *((_DWORD *)v2 + 18) = 0;
  KxReleaseSpinLock((UINT64 *)v2);
  result = (unsigned int)KiIrqlFlags;
  __writecr8(v6);
  return result;
}

Referenced by:

No references.