PopDripsWatchdogUpdateMetrics
INT64 __fastcall PopDripsWatchdogUpdateMetrics(INT64 a1, INT64 a2, INT64 a3, _DWORD *a4, _QWORD *a5, _DWORD *a6){
int v7;
unsigned int v8;
__int64 v9;
int v10;
int v11;
__int64 v12;
unsigned __int64 v13;
_QWORD *v14;
unsigned __int64 v15;
bool v16;
unsigned int v17;
int v18;
unsigned int v19;
unsigned int v20;
INT64 result;
UINT64 CpuBusyTime;
v7 = *(_DWORD *)(a3 + 28);
v8 = HIDWORD(qword_140C23560);
v9 = *(_QWORD *)(a3 + 8);
v10 = *(_DWORD *)(a3 + 24);
CpuBusyTime = 0i64;
*(_BYTE *)(a1 + 592) = byte_140C4FD00 & 1;
v11 = v7 - *(_DWORD *)(a1 + 636);
v12 = v9 - *(_QWORD *)(a1 + 616);
v13 = a2 - *(_QWORD *)(a1 + 560);
v14 = a5;
*a4 = v11;
*v14 = v12;
LODWORD(v12) = v10 - *(_DWORD *)(a1 + 632);
*a6 = v12;
v15 = v13 / 0x2710;
*(_DWORD *)(a1 + 576) = v13 / 0x2710;
if( (_DWORD)v12 )
{
*(_DWORD *)(a1 + 568) = 0;
*(_DWORD *)(a1 + 588) = 0;
*(_DWORD *)(a1 + 632) = v10;
*(_QWORD *)(a1 + 616) = v9;
*(_DWORD *)(a1 + 596) = v8;
}
else
{
v16 = (_DWORD)v15 + *(_DWORD *)(a1 + 568) == 0;
*(_DWORD *)(a1 + 568) += v15;
if( !v16 && (unk_140C23574 & 0x40000000) == 0 )
{
v17 = *(_DWORD *)(a1 + 596);
if( v8 < v17 )
*(_DWORD *)(a1 + 588) = PopBatteryCapacityToRate(v17 - v8, 1000i64 * *(unsigned int *)(a1 + 568));
}
}
if( v11 || !PopDeepSleepEnabled() )
{
*(_DWORD *)(a1 + 572) = 0;
*(_DWORD *)(a1 + 636) = v7;
}
else
{
*(_DWORD *)(a1 + 572) += v18;
}
PopAccumulateNonActivatedCpuTime(0, (UINT64 *)(a1 + 600), &CpuBusyTime);
v19 = PpmConvertTimeTo(CpuBusyTime, 0x3E8ui64);
v20 = *(_DWORD *)(a1 + 576);
*(_DWORD *)(a1 + 580) = v19;
if( v19 <= v20 )
result = 100 * v19 / v20;
else
result = 100i64;
*(_DWORD *)(a1 + 584) = result;
return result;
}Referenced by:
PopDripsWatchdogDiagnosticWorker