PpmEventTracePreVetoAccounting
VOID __fastcall PpmEventTracePreVetoAccounting(
PCEVENT_DESCRIPTOR EventDescriptor,
_EVENT_DATA_DESCRIPTOR *a2,
INT64 a3){
unsigned int v6;
VOID **PoolWithTag;
unsigned __int64 v8;
__int64 v9;
__int64 v10;
__int64 v11;
__int64 v12;
__int64 v13;
int v14;
__int64 v15;
_EVENT_DATA_DESCRIPTOR v16;
unsigned int v17;
INT64 CurrentQpc;
_EVENT_DATA_DESCRIPTOR UserData;
unsigned int *v20;
int v21;
int v22;
VOID **v23;
unsigned int v24;
int v25;
CurrentQpc = 0i64;
if( PpmEtwRegistered )
{
if( EtwEventEnabled(PpmEtwHandle, EventDescriptor) )
{
if( a3 )
{
v6 = *(_DWORD *)(a3 + 28);
if( v6 )
{
PoolWithTag = ExAllocatePoolWithTag(0x200ui64, 20 * v6, 1699565648i64);
if( PoolWithTag )
{
v8 = (unsigned __int8)KeAcquireSpinLockRaiseToDpc((UINT64 *)&stru_140C23628 + 122);
LODWORD(v9) = RtlGetInterruptTimePrecise(&CurrentQpc);
v10 = 0i64;
v17 = 0;
v11 = 0i64;
v12 = v6;
do
{
v13 = *(_QWORD *)(a3 + 32);
v14 = *(_DWORD *)(v11 + v13 + 16);
if( v14 )
{
*((_DWORD *)PoolWithTag + 5 * v10) = v14;
*(VOID **)((char *)PoolWithTag + 20 * v17 + 4) = *(VOID **)(v11 + v13 + 24);
*(VOID **)((char *)PoolWithTag + 20 * v17 + 12) = *(VOID **)(v11 + v13 + 40);
v15 = *(_QWORD *)(v11 + v13 + 32);
if( v15 )
*(VOID **)((char *)PoolWithTag + 20 * v17 + 12) = *(char **)((char *)PoolWithTag + 20 * v17 + 12)
+ v9
- v15;
v10 = ++v17;
}
v11 += 64i64;
--v12;
}
while( v12 );
KxReleaseSpinLock((UINT64 *)&stru_140C23628 + 122);
__writecr8(v8);
v16 = *a2;
v22 = 0;
v25 = 0;
v20 = &v17;
UserData = v16;
v21 = 4;
v23 = PoolWithTag;
v24 = 20 * v17;
EtwWriteEx(PpmEtwHandle, EventDescriptor, 0i64, 0, 0, 0, 3u, &UserData);
ExFreePoolWithTag(PoolWithTag, 0x654D5050u);
}
}
}
}
}
}Referenced by:
PpmEventPlatformVetoRundown
PpmEventProcessorVetoRundown