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.