PpmEventProcessorVetoRundown
void __fastcall PpmEventProcessorVetoRundown(__int64 a1, __int64 a2, EVENT_DESCRIPTOR *a3){
__int64 v3;
unsigned int v5;
__int16 v6;
UINT64 v7;
__int16 v8;
unsigned int v9;
unsigned __int8 v10;
unsigned __int64 v11;
__int64 v12;
_QWORD **v13;
_QWORD *v14;
UINT64 UserDataCount;
unsigned int i;
__int16 v17;
int v18[2];
EVENT_DATA_DESCRIPTOR UserData;
__int64 v20;
int v21;
int v22;
int *p_i;
int v24;
int v25;
_QWORD *v26;
int v27;
int v28;
__int64 v29;
int v30;
int v31;
v3 = *(_QWORD *)(a1 + 0x8000);
memset(v18, 0, 7);
if( v3 )
{
v5 = 1;
for( i = 1; v5 < *(_DWORD *)(v3 + 32); i = v5 )
{
v6 = *(unsigned __int8 *)(a1 + 208);
UserData.Reserved = 0;
LOWORD(v18[0]) = v6;
BYTE2(v18[0]) = *(_BYTE *)(a1 + 209);
*(int *)((char *)v18 + 3) = v5;
UserData.Ptr = (unsigned __int64)v18;
UserData.Size = 7;
PpmEventTracePreVetoAccounting(
(EVENT_DESCRIPTOR *)&PPM_ETW_PROCESSOR_PRE_VETO_ACCOUNTING_RUNDOWN,
&UserData,
248i64 * v5 + v3 + 1016);
v5 = i + 1;
}
if( PpmEtwRegistered && EtwEventEnabled(PpmEtwHandle, (EVENT_DESCRIPTOR *)&PPM_ETW_PROCESSOR_IDLE_VETO_RUNDOWN, a3) )
{
v8 = *(unsigned __int8 *)(a1 + 208);
UserData.Reserved = 0;
v22 = 0;
v17 = v8;
UserData.Ptr = (unsigned __int64)&v17;
v20 = a1 + 209;
UserData.Size = 2;
v21 = 1;
KeAcquireSpinLockRaiseToDpc(&PpmIdleVetoLock, v7);
v9 = 0;
v11 = v10;
i = 0;
if( *(_DWORD *)(v3 + 32) )
{
v12 = 0i64;
do
{
v25 = 0;
p_i = (int *)&i;
v24 = 4;
v13 = (_QWORD **)(248 * v12 + v3 + 1024);
v14 = *v13;
if( *v13 != v13 )
{
do
{
v28 = 0;
v31 = 0;
v26 = v14 + 2;
v27 = 4;
v29 = (__int64)v14 + 20;
LODWORD(UserDataCount) = 5;
v30 = 4;
EtwWriteEx(
PpmEtwHandle,
(EVENT_DESCRIPTOR *)&PPM_ETW_PROCESSOR_IDLE_VETO_RUNDOWN,
0i64,
0i64,
0i64,
0i64,
UserDataCount,
&UserData);
v14 = (_QWORD *)*v14;
}
while( v14 != v13 );
v9 = i;
}
i = ++v9;
v12 = v9;
}
while( v9 < *(_DWORD *)(v3 + 32) );
}
KxReleaseSpinLock(&PpmIdleVetoLock);
__writecr8(v11);
}
}
}Referenced by:
PpmEventTraceControlCallback