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