PpmTranslatePlatformIdleAccounting

__int64 __fastcall PpmTranslatePlatformIdleAccounting(__int64 a1, __int64 a2){
  __int64 v2; 
  __int64 v3; 
  unsigned int v4; 
  __int64 result; 
  __int64 v6; 
  __int64 v7; 
  __int64 v8; 
  unsigned int v9; 
  UINT64 v10; 
  _DWORD *v11; 
  __int64 v12; 
  __int64 v13; 

  v2 = a2;
  v3 = 0i64;
  v4 = *(_DWORD *)(a1 + 4);
  *(_DWORD *)v2 = v4;
  *(_DWORD *)(v2 + 4) = *(_DWORD *)a1;
  result = *(_QWORD *)(a1 + 16);
  *(_QWORD *)(v2 + 16) = result;
  if( v4 )
  {
    v6 = v2 + 40;
    v7 = v4;
    v8 = a1 + 28;
    do
    {
      v9 = *(_DWORD *)v8 + *(_DWORD *)(v8 - 4) + *(_DWORD *)(v8 + 4);
      v10 = PopQpcFrequency;
      *(_DWORD *)(v6 - 8) = v9;
      v3 += v9;
      *(_DWORD *)(v6 - 4) = *(_DWORD *)v8;
      *(_DWORD *)v6 = *(_DWORD *)(v8 - 4);
      *(_DWORD *)(v6 + 12) = *(_DWORD *)(v8 + 36);
      *(_QWORD *)(v6 + 16) = PpmConvertTime(*(_QWORD *)(v8 + 28), v10, 0xF4240ui64);
      *(_DWORD *)(v6 + 8) = PpmConvertTime(*(_QWORD *)(v8 + 20), v10, 0xF4240ui64);
      *(_DWORD *)(v6 + 4) = PpmConvertTime(*(_QWORD *)(v8 + 12), v10, 0xF4240ui64);
      v11 = (_DWORD *)(v6 + 44);
      v12 = v8 + 188;
      v13 = 26i64;
      do
      {
        *(_QWORD *)(v11 - 3) = PpmConvertTime(*(_QWORD *)(v12 - 16), v10, 0xF4240ui64);
        *(v11 - 1) = PpmConvertTime(*(_QWORD *)(v12 - 8), v10, 0xF4240ui64);
        *v11 = PpmConvertTime(*(_QWORD *)v12, v10, 0xF4240ui64);
        v11 += 6;
        result = *(unsigned int *)(v12 + 8);
        v12 += 32i64;
        *(v11 - 5) = result;
        --v13;
      }
      while( v13 );
      v6 += 664i64;
      v8 += 1008i64;
      --v7;
    }
    while( v7 );
    v2 = a2;
  }
  *(_QWORD *)(v2 + 8) = v3;
  return result;
}

Referenced by:

PpmEventTracePlatformIdleAccounting