PopIdleWakeSourceAccountingToDiagnostic

INT64 __fastcall PopIdleWakeSourceAccountingToDiagnostic(INT64 a1, _DWORD *a2){
  unsigned __int16 v4; 
  __int64 v5; 
  __int64 v6; 
  INT64 result; 
  memset((INT64)a2, 0i64);
  *a2 = *(_DWORD *)a1;
  a2[1] = *(_DWORD *)(a1 + 316);
  a2[2] = *(_DWORD *)(a1 + 312);
  *((_QWORD *)a2 + 2) = PpmConvertTimeTo(*(_QWORD *)(a1 + 320), 0xF4240ui64);
  *((_QWORD *)a2 + 3) = PpmConvertTimeTo(*(_QWORD *)(a1 + 328), 0xF4240ui64);
  *((_QWORD *)a2 + 4) = PpmConvertTimeTo(*(_QWORD *)(a1 + 336), 0xF4240ui64);
  v4 = 0;
  *(_OWORD *)(a2 + 10) = *(_OWORD *)(a1 + 344);
  *(_OWORD *)(a2 + 14) = *(_OWORD *)(a1 + 360);
  a2[18] = *(_DWORD *)(a1 + 376);
  *(_OWORD *)(a2 + 19) = *(_OWORD *)(a1 + 380);
  *(_OWORD *)(a2 + 23) = *(_OWORD *)(a1 + 396);
  *(_QWORD *)(a2 + 27) = *(_QWORD *)(a1 + 412);
  a2[29] = *(_DWORD *)(a1 + 420);
  do
  {
    v5 = *((unsigned __int16 *)a2 + 232);
    *((_WORD *)a2 + 5 * v5 + 233) = v4;
    if( v4 >= *(_WORD *)(a1 + 144) )
      v6 = 0i64;
    else
      v6 = *(_QWORD *)(a1 + 8i64 * v4 + 152);
    *(_QWORD *)((char *)a2 + 10 * v5 + 468) = v6;
    if( v6 )
      ++*((_WORD *)a2 + 232);
    ++v4;
  }
  while( v4 < 0x14u );
  *((_QWORD *)a2 + 15) = PpmConvertTimeTo(*(_QWORD *)(a1 + 432), 0xF4240ui64);
  *((_OWORD *)a2 + 8) = *(_OWORD *)(a1 + 440);
  a2[36] = *(_DWORD *)(a1 + 456);
  PopIdleWakeConvertIntervalBucketsTo(5ui64, a1 + 464, (UINT64 *)a2 + 19, 0xF4240ui64);
  *((_QWORD *)a2 + 24) = PpmConvertTimeTo(*(_QWORD *)(a1 + 504), 0xF4240ui64);
  *(_OWORD *)(a2 + 50) = *(_OWORD *)(a1 + 512);
  a2[54] = *(_DWORD *)(a1 + 528);
  PopIdleWakeConvertIntervalBucketsTo(5ui64, a1 + 536, (UINT64 *)a2 + 28, 0xF4240ui64);
  *((_QWORD *)a2 + 33) = PpmConvertTimeTo(*(_QWORD *)(a1 + 576), 0xF4240ui64);
  *((_OWORD *)a2 + 17) = *(_OWORD *)(a1 + 584);
  a2[72] = *(_DWORD *)(a1 + 600);
  PopIdleWakeConvertIntervalBucketsTo(5ui64, a1 + 608, (UINT64 *)a2 + 37, 0xF4240ui64);
  *((_QWORD *)a2 + 42) = PpmConvertTimeTo(*(_QWORD *)(a1 + 648), 0xF4240ui64);
  *((_QWORD *)a2 + 43) = *(_QWORD *)(a1 + 656);
  a2[88] = *(_DWORD *)(a1 + 664);
  PopIdleWakeConvertIntervalBucketsTo(3ui64, a1 + 672, (UINT64 *)a2 + 45, 0xF4240ui64);
  result = PopIdleWakeGenerateDescriptionString((INT64 *)a1, (INT64)a2);
  if( (int)result >= 0 )
    return 0i64;
  return result;
}

Referenced by:

PopIdleWakeNotifyModernStandbyExit