PopCalculateCsSummary

__int64 __fastcall PopCalculateCsSummary(__int64 a1, UINT64 *a2){
  int v3; 
  __int64 v4; 
  __int64 v5; 
  unsigned __int64 v6; 
  unsigned __int64 v7; 
  unsigned int EnergyDrainFromDischage; 
  __int64 v9; 
  int v10; 
  UINT64 v11; 
  __int64 v12; 
  unsigned __int64 v13; 
  unsigned __int64 v14; 
  __int64 v15; 
  unsigned __int64 v16; 
  char v17; 
  int v18; 
  int v19; 
  __int128 v20; 
  char v21; 
  char v22; 
  __int64 v23; 
  __int64 v24; 
  unsigned __int8 v25; 
  unsigned __int64 v26; 
  __int64 result; 
  int v28; 
  int v29; 
  NTSTATUS ModernStandbyTransitionReason; 
  UINT64 PreVetoCount; 
  UINT64 VetoCount; 
  __int64 v33; 
  INT64 v34; 
  unsigned __int64 v35; 
  INT64 CurrentQpc; 
  __int64 v37; 
  UINT64 v38; 
  UINT64 v39; 
  unsigned __int64 v40; 
  UINT64 v41; 
  __int128 v42; 
  UINT64 HwDripsResidency[2]; 
  __int128 v44; 
  SYSTEM_BATTERY_STATE PowerState; 
  int v46; 
  int v47; 
  int v48; 
  int v49; 

  v34 = 0i64;
  memset(&PowerState, 0, sizeof(PowerState));
  CurrentQpc = 0i64;
  v3 = (int)a2;
  LOBYTE(v35) = 0;
  v44 = 0i64;
  v42 = 0i64;
  *(_OWORD *)HwDripsResidency = 0i64;
  PopCalculateIdleInformation((__int64)&v42, a2);
  LODWORD(v4) = RtlGetInterruptTimePrecise(&CurrentQpc);
  v5 = v4;
  v6 = (v4 - qword_140C4FC48) / 0xAui64;
  PopGetModernStandbyTransitionReason(0, &v34);
  if( v34 <= (unsigned __int64)qword_140C4FC48 )
    v7 = 0i64;
  else
    v7 = (v5 - v34) / 0xAui64;
  PopCurrentPowerState(&PowerState);
  if( v6 )
  {
    EnergyDrainFromDischage = PopBatteryGetEnergyDrainFromDischage(
                                (_MMPFN *)(unsigned int)Pfn1,
                                (VOID *)PowerState.RemainingCapacity);
    v46 = PopBatteryCapacityToRate(EnergyDrainFromDischage, v6);
  }
  else
  {
    v46 = 0;
  }
  v9 = PopMeasureEnergyChange((__int64)&v44, (__int64)&CsSessionEnergyCounter);
  v49 = qword_140C23580;
  if( (_DWORD)qword_140C23580 )
    LODWORD(v9) = 100 * HIDWORD(qword_140C23580) / (unsigned int)qword_140C23580;
  else
    LOBYTE(v9) = 0;
  v10 = 0;
  if( (unk_140C23574 & 0x40000000) == 0 )
    v10 = HIDWORD(qword_140C23580);
  v48 = v9;
  v37 = *((_QWORD *)&v42 + 1) - qword_140C4FC50;
  v28 = v10;
  v29 = LODWORD(HwDripsResidency[1]) - dword_140C4FC60;
  v11 = PopCalculateTotalHwDripsResidency(InitialHwDripsResidency, HwDripsResidency[0], v6);
  v12 = v6 + qword_140C4FC58 - v42;
  v41 = v11;
  v13 = _InterlockedExchangeAdd64(qword_140C4FD80, 0i64);
  if( v13 )
    v13 = (v13 - qword_140C4FC48) / 0xA;
  v33 = qword_140C4FC90;
  v33 -= PpmConvertTime(SourceTime, PopQpcFrequency, 0xF4240ui64);
  v14 = qword_140C4FCA0;
  v40 = v6 - qword_140C4FC90;
  if( qword_140C4FC98 )
  {
    if( qword_140C4FC48 <= (unsigned __int64)qword_140C4FC98 )
      v15 = v5 - qword_140C4FC98;
    else
      v15 = v5 - qword_140C4FC48;
    v14 = v15 + qword_140C4FCA0;
  }
  v16 = v14 / 0xA;
  v38 = PpmConvertTime(qword_140C4FCB0, PopQpcFrequency, 0xF4240ui64);
  v39 = PpmConvertTime(CpuBusyTime, PopQpcFrequency, 0xF4240ui64);
  PreVetoCount = 0i64;
  VetoCount = 0i64;
  ModernStandbyTransitionReason = PopGetModernStandbyTransitionReason(0, 0i64);
  PpmGetPlatformSelectionVetoCounts((unsigned int)PlatformIdleStateIndex, &PreVetoCount, &VetoCount);
  PreVetoCount -= qword_140C4FCE0;
  VetoCount -= qword_140C4FCE8;
  if( qword_140C4FC68 )
    v35 = 100 * qword_140C4FC70 / (unsigned __int64)qword_140C4FC68;
  v47 = 0;
  PopQueryInputSuppressionCount(&v47);
  v18 = v47 - dword_140C4FD38;
  v19 = v49;
  v20 = v44;
  *(_DWORD *)a1 = v46;
  *(_QWORD *)(a1 + 40) = v37;
  *(_DWORD *)(a1 + 56) = v29;
  *(_QWORD *)(a1 + 72) = v33;
  *(_QWORD *)(a1 + 96) = v38;
  *(_QWORD *)(a1 + 104) = v39;
  *(_QWORD *)(a1 + 80) = v40;
  *(_DWORD *)(a1 + 116) = ModernStandbyTransitionReason;
  *(_QWORD *)(a1 + 128) = v41;
  *(_BYTE *)(a1 + 160) = v35;
  v21 = 2 * v48;
  *(_DWORD *)(a1 + 24) = v19;
  *(_BYTE *)(a1 + 124) = v17 & 1 ^ v21;
  v22 = *(_BYTE *)(a1 + 125);
  *(_DWORD *)(a1 + 28) = v28;
  *(_OWORD *)(a1 + 8) = v20;
  *(_QWORD *)(a1 + 32) = v6;
  *(_QWORD *)(a1 + 48) = v12;
  *(_QWORD *)(a1 + 64) = v13;
  *(_QWORD *)(a1 + 88) = v16;
  *(_DWORD *)(a1 + 120) = v3;
  *(_QWORD *)(a1 + 136) = v23;
  *(_QWORD *)(a1 + 144) = v24;
  *(_QWORD *)(a1 + 152) = v7;
  v47 = v18;
  *(_BYTE *)(a1 + 125) ^= (byte_140C4FD01 ^ v22) & 1;
  LOBYTE(v19) = *(_BYTE *)(a1 + 125) ^ (byte_140C4FD01 ^ *(_BYTE *)(a1 + 125)) & 2;
  *(_BYTE *)(a1 + 125) = v19;
  *(_BYTE *)(a1 + 125) = v19 ^ (byte_140C4FD01 ^ v19) & 4;
  *(_DWORD *)(a1 + 164) = dword_140C4FCF0;
  *(_DWORD *)(a1 + 168) = dword_140C4FCF4;
  *(_BYTE *)(a1 + 172) = byte_140C4FCF8;
  *(_DWORD *)(a1 + 176) = dword_140C4FCFC;
  *(_DWORD *)(a1 + 180) = dword_140C4FD04;
  *(_DWORD *)(a1 + 184) = dword_140C4FD08;
  *(_BYTE *)(a1 + 188) = byte_140C4FD0C;
  *(_DWORD *)(a1 + 192) = PowerState.RemainingCapacity;
  *(_DWORD *)(a1 + 196) = PowerState.MaxCapacity;
  *(_BYTE *)(a1 + 204) = byte_140C4FD14;
  *(_BYTE *)(a1 + 205) = byte_140C4FD15;
  *(_DWORD *)(a1 + 208) = dword_140C4FD18;
  *(_DWORD *)(a1 + 212) = dword_140C4FD1C;
  *(_DWORD *)(a1 + 216) = v18;
  *(_QWORD *)(a1 + 224) = qword_140C4FCC8;
  *(_QWORD *)(a1 + 232) = qword_140C4FCD0;
  *(_DWORD *)(a1 + 264) = dword_140C4FD3C;
  *(_DWORD *)(a1 + 268) = dword_140C4FD40;
  v25 = KeAcquireSpinLockRaiseToDpc(&qword_140C22E38);
  *(_QWORD *)(a1 + 248) = qword_140C22E28;
  *(_QWORD *)(a1 + 240) = qword_140C22E30;
  *(_QWORD *)(a1 + 256) = PopDisplayOnPerformance;
  v26 = v25;
  KxReleaseSpinLock(&qword_140C22E38);
  result = (unsigned int)KiIrqlFlags;
  __writecr8(v26);
  return result;
}

Referenced by:

PopCaptureSleepStudyStatistics