PpmEventPlatformVetoRundown
VOID __stdcall PpmEventPlatformVetoRundown(){
EVENT_DESCRIPTOR *v0;
UINT64 v1;
__int64 v2;
UINT64 v3;
UINT64 v4;
unsigned int v5;
unsigned __int8 v6;
unsigned __int64 v7;
__int64 v8;
_QWORD **v9;
_QWORD *v10;
UINT64 UserDataCount;
unsigned int i;
EVENT_DATA_DESCRIPTOR UserData;
_QWORD *v14;
int v15;
int v16;
__int64 v17;
int v18;
int v19;
v1 = PpmPlatformStates;
if( PpmPlatformStates )
{
v2 = 0i64;
for( i = 0; (unsigned int)v2 < *(_DWORD *)PpmPlatformStates; i = v2 )
{
UserData.Reserved = 0;
UserData.Size = 4;
UserData.Ptr = (unsigned __int64)&i;
PpmEventTracePreVetoAccounting(
(EVENT_DESCRIPTOR *)&PPM_ETW_PLATFORM_PRE_VETO_ACCOUNTING_RUNDOWN,
&UserData,
384 * v2 + v1 + 80);
v1 = PpmPlatformStates;
v2 = i + 1;
}
if( PpmEtwRegistered && EtwEventEnabled(PpmEtwHandle, (EVENT_DESCRIPTOR *)&PPM_ETW_PLATFORM_IDLE_VETO_RUNDOWN, v0) )
{
KeAcquireSpinLockRaiseToDpc(&PpmIdleVetoLock, v3);
v4 = PpmPlatformStates;
v5 = 0;
i = 0;
v7 = v6;
if( *(_DWORD *)PpmPlatformStates )
{
v8 = 0i64;
do
{
UserData.Reserved = 0;
UserData.Ptr = (unsigned __int64)&i;
UserData.Size = 4;
v9 = (_QWORD **)(384 * v8 + v4 + 88);
v10 = *v9;
if( *v9 != v9 )
{
do
{
v16 = 0;
v19 = 0;
v14 = v10 + 2;
v15 = 4;
v17 = (__int64)v10 + 20;
LODWORD(UserDataCount) = 3;
v18 = 4;
EtwWriteEx(
PpmEtwHandle,
(EVENT_DESCRIPTOR *)&PPM_ETW_PLATFORM_IDLE_VETO_RUNDOWN,
0i64,
0i64,
0i64,
0i64,
UserDataCount,
&UserData);
v10 = (_QWORD *)*v10;
}
while( v10 != v9 );
v5 = i;
}
v4 = PpmPlatformStates;
i = ++v5;
v8 = v5;
}
while( v5 < *(_DWORD *)PpmPlatformStates );
}
KxReleaseSpinLock(&PpmIdleVetoLock);
__writecr8(v7);
}
}
}Referenced by:
PpmEventTraceControlCallback