PopAccountBatteryEnergyChange

NTSTATUS __stdcall PopAccountBatteryEnergyChange(INT64 a1){
  void **v1; 
  __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 v48; 
  int v49; 
  int v50; 
  int v51; 
  unsigned int v52; 
  int v53; 
  unsigned int v54; 
  int v55; 
  unsigned int v56; 
  unsigned int v57; 
  __int128 v58; 
  __int64 v59; 
  _EVENT_DATA_DESCRIPTOR v60; 
  int *v61; 
  __int64 v62; 
  __int64 v63; 
  int v64[2]; 
  __int64 *v65; 
  __int64 v66; 
  __int64 v67[2]; 
  __int64 v68[2]; 
  __int64 v69[2]; 
  INT64 v70[12]; 
  __int64 v71[2]; 
  __int64 v72[2]; 
  __int64 v73[2]; 
  __int64 v74[2]; 
  __int64 v75[2]; 
  __int64 v76[2]; 
  INT64 v77[14]; 
  void *retaddr; 

  v1 = &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);
  v58 = *(_OWORD *)(a1 + 192);
  *(_DWORD *)(a1 + 192) = 0;
  if( v3 )
  {
    LODWORD(v1) = v9 - 1;
    if( (unsigned int)(v9 - 1) > 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;
      }
      LODWORD(v1) = 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)v58 || (LODWORD(v1) = DWORD2(v58), *(_QWORD *)(a1 + 200) != *((_QWORD *)&v58 + 1)) )
  {
    if( *(&stru_140C00F40 + 1194) > 5u )
    {
      v62 = 2i64;
      v61 = v64;
      v11 = "Energy Counter Unavailable";
      v63 = *(_QWORD *)(a1 + 40);
      v64[0] = *(unsigned __int16 *)(a1 + 32);
      if( (v10 & 1) == 0 )
        v11 = "-";
      v59 = *(_QWORD *)(a1 + 200);
      v65 = &v59;
      v64[1] = 0;
      v66 = 8i64;
      tlgCreate1Sz_char((INT64)v67, v11);
      v14 = "Relative Capacity Unit";
      if( (*(_DWORD *)(v13 + 192) & 2) == 0 )
        v14 = v12;
      tlgCreate1Sz_char((INT64)v68, v14);
      v17 = "FCC Unavailable";
      if( (*(_DWORD *)(v16 + 192) & 4) == 0 )
        v17 = v15;
      tlgCreate1Sz_char((INT64)v69, v17);
      v20 = "Capacity Unavailable";
      if( (*(_DWORD *)(v19 + 192) & 8) == 0 )
        v20 = v18;
      tlgCreate1Sz_char((INT64)v70, v20);
      *(_QWORD *)&v58 = v6;
      v70[2] = (INT64)&v58;
      v22 = "AC Power";
      v70[3] = 8i64;
      v70[4] = (INT64)&v48;
      v48 = v2;
      v70[6] = (INT64)&v49;
      v70[8] = (INT64)&v50;
      v51 = Data;
      v70[10] = (INT64)&v51;
      v3 = (*(_DWORD *)(v23 + 148) & 1) == 0;
      v70[5] = 4i64;
      if( v3 )
        v22 = "DC Power";
      v49 = v21;
      v70[7] = 4i64;
      v50 = v5;
      v70[9] = 4i64;
      v70[11] = 4i64;
      tlgCreate1Sz_char((INT64)v71, v22);
      v26 = "Battery Discharging";
      if( (*(_DWORD *)(v25 + 148) & 2) == 0 )
        v26 = v24;
      tlgCreate1Sz_char((INT64)v72, v26);
      v29 = "Battery Charging";
      if( (*(_DWORD *)(v28 + 148) & 4) == 0 )
        v29 = v27;
      tlgCreate1Sz_char((INT64)v73, v29);
      v32 = "Battery Critical";
      if( (*(_DWORD *)(v31 + 148) & 8) == 0 )
        v32 = v30;
      tlgCreate1Sz_char((INT64)v74, v32);
      v35 = "Battery charge limiting mode";
      if( (*(_DWORD *)(v34 + 148) & 0x10) == 0 )
        v35 = v33;
      tlgCreate1Sz_char((INT64)v75, v35);
      v38 = "Battery charging state power supply present";
      if( (*(_DWORD *)(v37 + 148) & 0x20) == 0 )
        v38 = v36;
      tlgCreate1Sz_char((INT64)v76, v38);
      v41 = "Battery charging state adequate";
      if( (*(_DWORD *)(v40 + 148) & 0x40) == 0 )
        v41 = v39;
      tlgCreate1Sz_char((INT64)v77, v41);
      v43 = v42[32];
      v44 = v42[38];
      if( (_DWORD)v43 )
        v45 = (((unsigned int)v43 >> 1) + 100 * v44) / (unsigned int)v43;
      else
        v45 = 0;
      v52 = v45;
      v77[2] = (INT64)&v52;
      v77[3] = 4i64;
      if( (_DWORD)v43 )
        v46 = 100000 * (unsigned __int64)v44 / v43;
      else
        LODWORD(v46) = 0;
      v53 = v46;
      v54 = v44;
      v77[4] = (INT64)&v53;
      v77[5] = 4i64;
      v77[6] = (INT64)&v54;
      v77[7] = 4i64;
      v77[8] = (INT64)&v55;
      v56 = v42[39];
      v77[10] = (INT64)&v56;
      v57 = v42[40];
      v77[12] = (INT64)&v57;
      v55 = v43;
      v77[9] = 4i64;
      v77[11] = 4i64;
      v77[13] = 4i64;
      LODWORD(v1) = tlgWriteTransfer_EtwWriteTransfer(
                      (__int64)&stru_140C00F40 + 4776,
                      (unsigned __int8 *)&word_1400281AE,
                      0i64,
                      0i64,
                      0x1Bu,
                      &v60);
    }
  }
  return(int)v1;
}

Referenced by:

PopBatteryWorker