PopAccountBatteryEnergyChange

INT64 __fastcall PopAccountBatteryEnergyChange(INT64 a1){
  INT64 result; 
  __int64 v2; 
  bool v3; 
  unsigned __int64 v5; 
  __int64 v6; 
  __int64 v7; 
  __int64 v8; 
  __int64 v9; 
  int v10; 
  const CHAR *v11; 
  const CHAR *v12; 
  __int64 v13; 
  const CHAR *v14; 
  const CHAR *v15; 
  __int64 v16; 
  const CHAR *v17; 
  const CHAR *v18; 
  __int64 v19; 
  const CHAR *v20; 
  int v21; 
  const CHAR *v22; 
  __int64 v23; 
  const CHAR *v24; 
  __int64 v25; 
  const CHAR *v26; 
  const CHAR *v27; 
  __int64 v28; 
  const CHAR *v29; 
  const CHAR *v30; 
  __int64 v31; 
  const CHAR *v32; 
  const CHAR *v33; 
  __int64 v34; 
  const CHAR *v35; 
  const CHAR *v36; 
  __int64 v37; 
  const CHAR *v38; 
  const CHAR *v39; 
  __int64 v40; 
  const CHAR *v41; 
  unsigned int *v42; 
  unsigned __int64 v43; 
  unsigned int v44; 
  unsigned int v45; 
  unsigned __int64 v46; 
  int v47; 
  int v48; 
  int v49; 
  int v50; 
  unsigned int v51; 
  int v52; 
  unsigned int v53; 
  int v54; 
  unsigned int v55; 
  unsigned int v56; 
  __int128 v57; 
  __int64 v58; 
  struct _EVENT_DATA_DESCRIPTOR v59; 
  int *v60; 
  __int64 v61; 
  __int64 v62; 
  int v63[2]; 
  __int64 *v64; 
  __int64 v65; 
  char v66[16]; 
  char v67[16]; 
  char v68[16]; 
  char v69[16]; 
  __int128 *v70; 
  __int64 v71; 
  int *v72; 
  __int64 v73; 
  int *v74; 
  __int64 v75; 
  int *v76; 
  __int64 v77; 
  int *v78; 
  __int64 v79; 
  char v80[16]; 
  char v81[16]; 
  char v82[16]; 
  char v83[16]; 
  char v84[16]; 
  char v85[16]; 
  char v86[16]; 
  int *v87; 
  __int64 v88; 
  int *v89; 
  __int64 v90; 
  int *v91; 
  __int64 v92; 
  int *v93; 
  __int64 v94; 
  unsigned int *v95; 
  __int64 v96; 
  unsigned int *v97; 
  __int64 v98; 
  void *retaddr; 
  result = (INT64)&retaddr;
  v2 = *(unsigned int *)(a1 + 208);
  v3 = (*(_DWORD *)(a1 + 112) & 0x40000000) == 0;
  v5 = *(unsigned int *)(a1 + 212);
  v6 = 0i64;
  v7 = *(unsigned int *)(a1 + 152);
  LODWORD(v8) = *(_DWORD *)(a1 + 208);
  v9 = *(unsigned int *)(a1 + 128);
  v57 = *(_OWORD *)(a1 + 192);
  *(_DWORD *)(a1 + 192) = 0;
  if( v3 )
  {
    result = (unsigned int)(v9 - 1);
    if( (unsigned int)result > 0xFFFFFFFD )
    {
      *(_QWORD *)(a1 + 208) = 0i64;
      *(_DWORD *)(a1 + 192) = 4;
      v10 = 4;
    }
    else if( (_DWORD)v7 == -1 )
    {
      *(_DWORD *)(a1 + 192) = 8;
      v10 = 8;
    }
    else if( (_DWORD)v5 )
    {
      if( (_DWORD)v5 != (_DWORD)v9 )
      {
        *(_DWORD *)(a1 + 212) = v9;
        v8 = v9 * (unsigned int)(100000 * v2 / v5) / 100000;
      }
      result = (unsigned int)v8;
      v6 = v7 - (unsigned int)v8;
      *(_DWORD *)(a1 + 208) = v7;
      *(_QWORD *)(a1 + 200) += v6;
      v10 = 0;
    }
    else
    {
      *(_DWORD *)(a1 + 212) = v9;
      *(_DWORD *)(a1 + 208) = v7;
      *(_DWORD *)(a1 + 192) = 1;
      v10 = 1;
    }
  }
  else
  {
    *(_DWORD *)(a1 + 192) = 2;
    v10 = 2;
  }
  if( v10 != (_DWORD)v57 || (result = *((_QWORD *)&v57 + 1), *(_QWORD *)(a1 + 200) != *((_QWORD *)&v57 + 1)) )
  {
    if( (unsigned int)dword_140C021E8 > 5 )
    {
      v61 = 2i64;
      v60 = v63;
      v11 = "Energy Counter Unavailable";
      v62 = *(_QWORD *)(a1 + 40);
      v63[0] = *(unsigned __int16 *)(a1 + 32);
      if( (v10 & 1) == 0 )
        v11 = "-";
      v58 = *(_QWORD *)(a1 + 200);
      v64 = &v58;
      v63[1] = 0;
      v65 = 8i64;
      tlgCreate1Sz_char((__int64)v66, v11);
      v14 = "Relative Capacity Unit";
      if( (*(_DWORD *)(v13 + 192) & 2) == 0 )
        v14 = v12;
      tlgCreate1Sz_char((__int64)v67, v14);
      v17 = "FCC Unavailable";
      if( (*(_DWORD *)(v16 + 192) & 4) == 0 )
        v17 = v15;
      tlgCreate1Sz_char((__int64)v68, v17);
      v20 = "Capacity Unavailable";
      if( (*(_DWORD *)(v19 + 192) & 8) == 0 )
        v20 = v18;
      tlgCreate1Sz_char((__int64)v69, v20);
      *(_QWORD *)&v57 = v6;
      v70 = &v57;
      v22 = "AC Power";
      v71 = 8i64;
      v72 = &v47;
      v47 = v2;
      v74 = &v48;
      v76 = &v49;
      v50 = dword_140C23534;
      v78 = &v50;
      v3 = (*(_DWORD *)(v23 + 148) & 1) == 0;
      v73 = 4i64;
      if( v3 )
        v22 = "DC Power";
      v48 = v21;
      v75 = 4i64;
      v49 = v5;
      v77 = 4i64;
      v79 = 4i64;
      tlgCreate1Sz_char((__int64)v80, v22);
      v26 = "Battery Discharging";
      if( (*(_DWORD *)(v25 + 148) & 2) == 0 )
        v26 = v24;
      tlgCreate1Sz_char((__int64)v81, v26);
      v29 = "Battery Charging";
      if( (*(_DWORD *)(v28 + 148) & 4) == 0 )
        v29 = v27;
      tlgCreate1Sz_char((__int64)v82, v29);
      v32 = "Battery Critical";
      if( (*(_DWORD *)(v31 + 148) & 8) == 0 )
        v32 = v30;
      tlgCreate1Sz_char((__int64)v83, v32);
      v35 = "Battery charge limiting mode";
      if( (*(_DWORD *)(v34 + 148) & 0x10) == 0 )
        v35 = v33;
      tlgCreate1Sz_char((__int64)v84, v35);
      v38 = "Battery charging state power supply present";
      if( (*(_DWORD *)(v37 + 148) & 0x20) == 0 )
        v38 = v36;
      tlgCreate1Sz_char((__int64)v85, v38);
      v41 = "Battery charging state adequate";
      if( (*(_DWORD *)(v40 + 148) & 0x40) == 0 )
        v41 = v39;
      tlgCreate1Sz_char((__int64)v86, v41);
      v43 = v42[32];
      v44 = v42[38];
      if( (_DWORD)v43 )
        v45 = (((unsigned int)v43 >> 1) + 100 * v44) / (unsigned int)v43;
      else
        v45 = 0;
      v51 = v45;
      v87 = (int *)&v51;
      v88 = 4i64;
      if( (_DWORD)v43 )
        v46 = 100000 * (unsigned __int64)v44 / v43;
      else
        LODWORD(v46) = 0;
      v52 = v46;
      v53 = v44;
      v89 = &v52;
      v90 = 4i64;
      v91 = (int *)&v53;
      v92 = 4i64;
      v93 = &v54;
      v55 = v42[39];
      v95 = &v55;
      v56 = v42[40];
      v97 = &v56;
      v54 = v43;
      v94 = 4i64;
      v96 = 4i64;
      v98 = 4i64;
      LODWORD(result) = tlgWriteTransfer_EtwWriteTransfer(
                          (__int64)&dword_140C021E8,
                          (unsigned __int8 *)&word_1400281AE,
                          0i64,
                          0i64,
                          0x1Bu,
                          &v59);
    }
  }
  return result;
}

Referenced by:

PopBatteryWorker