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