EtwpCovSampCaptureBufferMapAddressesAndQueue
VOID __stdcall EtwpCovSampCaptureBufferMapAddressesAndQueue(INT64 *a1, INT64 a2){
_LIST_ENTRY *v3;
INT64 v4;
int v5;
INT64 v6;
void *CoverageSamplerContext;
__int16 v8;
UINT64 v9;
UINT64 v10;
_LIST_ENTRY *v11;
LODWORD(v10) = 0;
v3 = 0i64;
v11 = 0i64;
v4 = a2;
LOBYTE(v5) = EtwpCovSampCaptureBufferIsEmpty(a2);
if( !v5 )
{
if( (int)EtwpCovSampAcquireSamplerRundown(&v11) < 0
|| EtwpCovSampStackHashCheck(a1, v6, (UINT8 *)(v4 + 64), *(unsigned __int16 *)(v4 + 62))
|| (CoverageSamplerContext = KeGetCurrentThread()->ApcState.Process->CoverageSamplerContext) == 0i64 )
{
v3 = v11;
}
else
{
v3 = v11;
LODWORD(v9) = *(unsigned __int16 *)(v4 + 60);
EtwpCovSampProcessMapAddresses(
(INT64)CoverageSamplerContext,
(INT64)&v11[1],
(UINT64 *)(v4 + 64),
*(unsigned __int16 *)(v4 + 62),
v4 + 64,
v9,
&v10);
v8 = v10;
*(_DWORD *)(v4 + 56) &= 0xFFFFFFF4;
*(_WORD *)(v4 + 62) = v8;
if( v8 )
*(_DWORD *)(v4 + 56) |= 4u;
EtwpCovSampCaptureBufferQueue((INT64)a1, v4);
v4 = 0i64;
}
}
if( v4 )
EtwpCovSampCaptureBufferRelease((INT64)a1, v4);
if( v3 )
{
ExReleaseRundownProtection((_EX_RUNDOWN_REF *)&ExBootDevicesRemovedEvent + 152);
KeLeaveCriticalRegion();
}
}Referenced by:
EtwpCovSampCaptureUserAddresses