PpmEventTracePlatformIdleAccounting

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

Referenced by:

PpmEventTraceControlCallback