EtwpCovSampProcessCleanup
VOID __stdcall EtwpCovSampProcessCleanup(INT64 a1, CHAR a2){
void *v4;
unsigned int v5;
int v6;
INT64 v7;
v4 = *(void **)(a1 + 24);
if( v4 )
{
v5 = 0;
if( *(_DWORD *)(a1 + 32) )
{
do
{
EtwpCovSampModuleDereference(*(_QWORD *)a1, *(_QWORD *)(*(_QWORD *)(a1 + 24) + 16i64 * v5 + 8));
v5 = v6 + 1;
}
while( v5 < *(_DWORD *)(a1 + 32) );
v4 = *(void **)(a1 + 24);
}
ExFreePoolWithTag(v4, 0x56777445u);
*(_QWORD *)(a1 + 24) = 0i64;
*(_DWORD *)(a1 + 32) = 0;
*(_DWORD *)(a1 + 36) = 0;
}
v7 = *(_QWORD *)(a1 + 48);
if( v7 )
{
EtwpCovSampModuleDereference(*(_QWORD *)a1, v7);
*(_QWORD *)(a1 + 48) = 0i64;
}
if( *(_QWORD *)a1 )
{
if( a2 )
HalPutDmaAdapter(**(PADAPTER_OBJECT **)a1);
*(_QWORD *)a1 = 0i64;
}
}Referenced by:
EtwExitProcess
EtwpCovSampContextCleanup
EtwpCovSampProcessEnsureContext
EtwpCoverageSamplerStop