PopBatteryUpdateCompositeInformation

VOID __stdcall PopBatteryUpdateCompositeInformation(){
  __int64 v0; 
  __m128i v1; 
  __int32 v2; 
  __int64 v3; 
  unsigned int v4; 
  __int32 v5; 
  unsigned int v6; 
  unsigned __int32 v7; 
  int v8; 
  int v9; 
  unsigned int v10; 
  __m128i v11; 
  __m128i v12; 
  v0 = qword_140C23550;
  v1 = 0i64;
  v11 = 0i64;
  v2 = 0;
  v3 = 0i64;
  v12 = 0i64;
  v4 = 0;
  v5 = 0;
  if( (__int64 *)qword_140C23550 != &qword_140C23550 )
  {
    v6 = 0;
    v7 = 0;
    do
    {
      v3 = *(_DWORD *)(v0 + 48) | (unsigned int)v3;
      v8 = *(_DWORD *)(v0 + 60);
      if( v8 != -1 )
        v2 += v8;
      v9 = *(_DWORD *)(v0 + 64);
      if( v9 != -1 )
        v5 += v9;
      if( v7 < *(_DWORD *)(v0 + 68) )
        v7 = *(_DWORD *)(v0 + 68);
      if( v4 < *(_DWORD *)(v0 + 72) )
        v4 = *(_DWORD *)(v0 + 72);
      v10 = *(_DWORD *)(v0 + 76);
      v0 = *(_QWORD *)v0;
      if( v6 < v10 )
        v6 = v10;
    }
    while( (__int64 *)v0 != &qword_140C23550 );
    v11.m128i_i32[3] = v2;
    v11.m128i_i32[0] = v3;
    v1 = v11;
    v12.m128i_i64[1] = __PAIR64__(v6, v4);
    v12.m128i_i32[1] = v7;
  }
  dword_140C23594 = 0;
  unk_140C23574 = v1;
  if( !v5 )
    v5 = v2;
  v12.m128i_i32[0] = v5;
  *(__m128i *)((char *)&qword_140C23580 + 4) = v12;
  DbgPrintEx(
    0x92u,
    2u,
    "\n"
    "Composite Information\n"
    "|-- Capabilities        = 0x%08x\n"
    "|-- DesignedCapacity    = %u\n"
    "|-- FullChargedCapacity = %u\n"
    "|-- DefaultAlert1       = %u\n"
    "|-- DefaultAlert2       = %u\n"
    "|-- CriticalBias        = %u\n",
    v3,
    HIDWORD(_mm_srli_si128(v1, 8).m128i_u64[0]),
    v5,
    v12.m128i_i32[1],
    v4,
    HIDWORD(_mm_srli_si128(v12, 8).m128i_u64[0]));
  PopAcquirePolicyLock();
  if( byte_140C23E5F )
  {
    byte_140C23E5F = 0;
    PopResetCurrentPolicies();
  }
  PopReleasePolicyLock();
}

Referenced by:

PopBatteryWorker