PpmEventTracePlatformIdleAccounting
VOID __stdcall PpmEventTracePlatformIdleAccounting(){
VOID **v0;
__int64 v1;
int v2;
unsigned int v3;
VOID **PoolWithTag;
_QWORD *v5;
__int64 v6;
__int64 *v7;
__int64 v8;
VOID **v9;
VOID **v10;
ULONG v11;
char v12;
__int16 v13;
unsigned int v14;
_EVENT_DATA_DESCRIPTOR UserData;
__int16 *v16;
__int64 v17;
char *v18;
__int64 v19;
int *v20;
__int64 v21;
VOID **v22;
int v23;
int v24;
v14 = 0;
v0 = 0i64;
v13 = 20;
v12 = 64;
if( PpmEtwRegistered && EtwEventEnabled(PpmEtwHandle, &PPM_ETW_PLATFORM_IDLE_ACCOUNTING_RUNDOWN) && PpmPlatformStates )
{
v1 = *(_QWORD *)(PpmPlatformStates + 48);
v2 = 0;
v3 = *(_DWORD *)(v1 + 4);
if( *(_DWORD *)(PpmPlatformStates + 4) == 1 )
{
v2 = 80 * v3;
PoolWithTag = ExAllocatePoolWithTag(0x200ui64, 80 * v3, 1699565648i64);
v0 = PoolWithTag;
if( !PoolWithTag )
return;
memset(PoolWithTag, 0i64, 80 * v3);
if( v3 )
{
v5 = v0 + 2;
v6 = v3;
v7 = (__int64 *)(v1 + 112);
do
{
*(v5 - 1) = *(v7 - 1);
v8 = *v7;
v7 += 126;
*v5 = v8;
v5 += 10;
*(v5 - 9) = *(v7 - 124);
*(v5 - 8) = *(v7 - 125);
*(v5 - 5) = *(v7 - 129);
*(v5 - 4) = *(v7 - 130);
*(v5 - 3) = *(v7 - 131);
*(v5 - 12) = *(v7 - 121);
*(v5 - 7) = *(v7 - 119);
*(v5 - 6) = *(v7 - 120);
--v6;
}
while( v6 );
}
}
v9 = ExAllocatePoolWithTag(0x200ui64, 664 * v3 + 32, 1699565648i64);
v10 = v9;
if( v9 )
{
memset(v9, 0i64, 664 * v3 + 32);
PpmTranslatePlatformIdleAccounting(v1, (__int64)v10);
UserData.Ptr = (unsigned __int64)v10;
UserData.Size = 664 * v3 + 32;
v16 = &v13;
UserData.Reserved = 0;
v17 = 2i64;
v18 = &v12;
v11 = 4;
v19 = 1i64;
if( v0 )
{
v11 = 5;
v22 = v0;
v23 = v2;
v24 = 0;
}
else
{
v3 = 0;
}
v20 = (int *)&v14;
v21 = 4i64;
v14 = v3;
EtwWrite(PpmEtwHandle, &PPM_ETW_PLATFORM_IDLE_ACCOUNTING_RUNDOWN, 0, v11, &UserData);
ExFreePoolWithTag(v10, 0x654D5050u);
}
if( v0 )
ExFreePoolWithTag(v0, 0x654D5050u);
}
}Referenced by:
PpmEventTraceControlCallback