PopEstimateChargeTime
UINT64 __fastcall PopEstimateChargeTime(){
unsigned __int64 v0;
__int64 v1;
unsigned __int64 v2;
unsigned __int64 v3;
int v4;
char v5;
__int64 i;
unsigned int v7;
unsigned int v8;
__int64 v9;
unsigned __int64 v10;
char v12;
int v13;
__int64 v14;
unsigned __int64 v15;
__int64 v16;
unsigned __int64 v17;
struct _EVENT_DATA_DESCRIPTOR v18;
__int64 *v19;
int v20;
int v21;
__int64 *v22;
int v23;
int v24;
__int64 *v25;
int v26;
int v27;
char *v28;
int v29;
int v30;
__int64 *v31;
int v32;
int v33;
int *v34;
int v35;
int v36;
v0 = -1i64;
v1 = 0i64;
v2 = -1i64;
v3 = 0i64;
v4 = 0;
if( (unsigned __int8)PopBatteryEstimatesSpoiled() )
{
v5 = 83;
}
else
{
for( i = qword_140C23550; (__int64 *)i != &qword_140C23550; i = *(_QWORD *)i )
{
v7 = *(_DWORD *)(i + 64);
if( v7 != -1 )
{
v8 = *(_DWORD *)(i + 88);
if( v8 != -1 && v8 < v7 )
v1 += v7 - v8;
}
v9 = *(int *)(i + 96);
if( (_DWORD)v9 != 0x80000000 && (int)v9 > 0 )
v3 += v9;
v4 |= *(_DWORD *)(i + 84);
}
v4 &= 7u;
if( v4 == 5 )
{
v10 = PopMaxChargeRate;
if( PopMaxChargeRate < v3 )
{
v10 = v3;
PopMaxChargeRate = v3;
}
if( v1 && v10 )
{
v2 = 4000 * v1 / v10;
if( v2 > 0x5460 )
{
v5 = 76;
}
else
{
v0 = 4000 * v1 / v10;
v5 = 79;
}
}
else
{
v5 = 90;
}
}
else
{
v5 = 80;
}
}
DbgPrintEx(0x92u, 3u, "Charge time: Rate=%lld CapToChg=%lld MaxRate=%lld Est=%lld\n", v3, v1, PopMaxChargeRate, v0);
if( (unsigned int)dword_140C021E8 > 5 )
{
v21 = 0;
v24 = 0;
v27 = 0;
v30 = 0;
v33 = 0;
v36 = 0;
v19 = &v14;
v22 = (__int64 *)&v15;
v16 = PopMaxChargeRate;
v25 = &v16;
v28 = &v12;
v31 = (__int64 *)&v17;
v34 = &v13;
v20 = 8;
v23 = 8;
v26 = 8;
v32 = 8;
v14 = v1;
v15 = v2;
v12 = v5;
v29 = 1;
v17 = v3;
v13 = v4;
v35 = 4;
tlgWriteTransfer_EtwWriteTransfer(
(__int64)&dword_140C021E8,
(unsigned __int8 *)byte_140027EEB,
0i64,
0i64,
8u,
&v18);
}
return v0;
}Referenced by:
PopBatteryWorker