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