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