PopTransitionTelemetryOsState
INT64 __fastcall PopTransitionTelemetryOsState(INT64 a1, INT64 rdx0){
int v2;
int v3;
unsigned int v4;
INT64 *v6;
int v7;
UINT64 v8;
UINT64 v9;
unsigned __int64 v10;
unsigned __int64 v11;
unsigned __int64 v12;
DWORD v13;
DWORD MaxCapacity;
__int16 v15;
__int16 v16;
int v17;
int v18;
int v19;
int v20;
int v21;
int a2;
unsigned int BootId;
int v24;
int v25;
unsigned int v26;
DWORD v27;
DWORD v28;
int v29;
int AcOnLine;
__int64 v31;
_DWORD v32[2];
_DWORD v33[2];
__int64 v34;
int v35;
int v36;
int v37;
int v38;
int v39;
int v40;
__int64 v41;
__int64 v42;
unsigned __int64 v43;
UINT64 v44;
INT64 v45;
__int64 v46;
INT64 rcx0a[2];
SYSTEM_BATTERY_STATE PowerState;
struct _EVENT_DATA_DESCRIPTOR v49;
__int16 *v50;
__int64 v51;
__int16 *v52;
__int64 v53;
__int64 *v54;
__int64 v55;
unsigned int *p_BootId;
__int64 v57;
__int64 *v58;
__int64 v59;
__int64 *v60;
__int64 v61;
__int64 *v62;
__int64 v63;
__int64 *v64;
__int64 v65;
int *v66;
__int64 v67;
int *v68;
__int64 v69;
int *v70;
__int64 v71;
int *v72;
__int64 v73;
int *v74;
__int64 v75;
int *v76;
__int64 v77;
int *v78;
__int64 v79;
INT64 *v80;
__int64 v81;
int *v82;
__int64 v83;
int *p_AcOnLine;
__int64 v85;
__int64 *v86;
__int64 v87;
__int64 *v88;
__int64 v89;
v2 = rdx0;
v3 = a1;
v4 = 0;
*(_OWORD *)&PowerState.AcOnLine = 0i64;
*(_OWORD *)rcx0a = 0i64;
if( !dword_140C021E8 || !tlgKeywordOn((__int64)&dword_140C021E8, 0x800000000000i64) || !byte_140C22C0C )
return v4;
switch( v3 )
{
case 2:
if( v2 == 2 )
{
if( dword_140C0EDAC < KUSER_SHARED_DATA.TelemetryCoverageRound )
{
if( !dword_140C0EDA8 )
dword_140C0EDA8 = TelemetryCoverageStringHashInternal(off_140C0EDA0, v32);
v6 = (INT64 *)&off_140C0EDA0;
goto LABEL_67;
}
}
else if( dword_140C0ED64 < KUSER_SHARED_DATA.TelemetryCoverageRound )
{
if( !dword_140C0ED60 )
dword_140C0ED60 = TelemetryCoverageStringHashInternal((_BYTE *)off_140C0ED58, v33);
v6 = &off_140C0ED58;
goto LABEL_67;
}
break;
case 3:
switch( v2 )
{
case 3:
if( dword_140C0ED4C < KUSER_SHARED_DATA.TelemetryCoverageRound )
{
if( !dword_140C0ED48 )
dword_140C0ED48 = TelemetryCoverageStringHashInternal(off_140C0ED40, &v37);
v6 = (INT64 *)&off_140C0ED40;
goto LABEL_67;
}
break;
case 4:
if( dword_140C0ED94 < KUSER_SHARED_DATA.TelemetryCoverageRound )
{
if( !dword_140C0ED90 )
dword_140C0ED90 = TelemetryCoverageStringHashInternal(off_140C0ED88, &v36);
v6 = (INT64 *)&off_140C0ED88;
goto LABEL_67;
}
break;
case 5:
if( dword_140C0ED7C < KUSER_SHARED_DATA.TelemetryCoverageRound )
{
if( !dword_140C0ED78 )
dword_140C0ED78 = TelemetryCoverageStringHashInternal(off_140C0ED70, &v35);
v6 = (INT64 *)&off_140C0ED70;
goto LABEL_67;
}
break;
case 6:
if( dword_140C0ED04 < KUSER_SHARED_DATA.TelemetryCoverageRound )
{
if( !dword_140C0ED00 )
dword_140C0ED00 = TelemetryCoverageStringHashInternal(off_140C0ECF8, &v40);
v6 = (INT64 *)&off_140C0ECF8;
goto LABEL_67;
}
break;
default:
if( v2 == 8 && dword_140C0ECEC < KUSER_SHARED_DATA.TelemetryCoverageRound )
{
if( !dword_140C0ECE8 )
dword_140C0ECE8 = TelemetryCoverageStringHashInternal(off_140C0ECE0, &v39);
v6 = (INT64 *)&off_140C0ECE0;
goto LABEL_67;
}
break;
}
break;
case 4:
switch( v2 )
{
case 3:
if( dword_140C0ED34 < KUSER_SHARED_DATA.TelemetryCoverageRound )
{
if( !dword_140C0ED30 )
dword_140C0ED30 = TelemetryCoverageStringHashInternal(off_140C0ED28, &v38);
v6 = (INT64 *)&off_140C0ED28;
goto LABEL_67;
}
break;
case 4:
if( dword_140C0ED1C < KUSER_SHARED_DATA.TelemetryCoverageRound )
{
if( !dword_140C0ED18 )
dword_140C0ED18 = TelemetryCoverageStringHashInternal(off_140C0ED10, &v19);
v6 = (INT64 *)&off_140C0ED10;
goto LABEL_67;
}
break;
case 5:
if( dword_140C0ECBC < KUSER_SHARED_DATA.TelemetryCoverageRound )
{
if( !dword_140C0ECB8 )
dword_140C0ECB8 = TelemetryCoverageStringHashInternal(off_140C0ECB0, &v20);
v6 = (INT64 *)&off_140C0ECB0;
goto LABEL_67;
}
break;
case 6:
if( dword_140C0ECA4 < KUSER_SHARED_DATA.TelemetryCoverageRound )
{
if( !dword_140C0ECA0 )
dword_140C0ECA0 = TelemetryCoverageStringHashInternal(off_140C0EC98, &v21);
v6 = (INT64 *)&off_140C0EC98;
goto LABEL_67;
}
break;
default:
if( v2 == 8 && dword_140C0ECD4 < KUSER_SHARED_DATA.TelemetryCoverageRound )
{
if( !dword_140C0ECD0 )
dword_140C0ECD0 = TelemetryCoverageStringHashInternal(off_140C0ECC8, &a2);
v6 = (INT64 *)&off_140C0ECC8;
LABEL_67:
EtwTelemetryCoverageReport((INT64)v6);
}
break;
}
break;
}
PopAcquireRwLockExclusive(&PopTelemetryOsState);
v4 = dword_140C22C08;
if( v3 != 5 || dword_140C22BD0 == 1 || (unsigned int)(dword_140C22BD0 - 4) <= 1 )
{
v8 = (KiQueryUnbiasedInterruptTime(1u) - qword_140C22BE8) / 0x2710;
v9 = v8 - qword_140C22BF8;
v10 = (*(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart - qword_140C22BE0) / 0x2710ui64;
qword_140C22BF8 = v8;
v11 = v10 - qword_140C22BF0;
*(_QWORD *)v33 = v10 - qword_140C22BF0;
v12 = v10 - qword_140C22BF0;
qword_140C22BF0 = v10;
if( v9 <= v11 )
v12 = v9;
*(_QWORD *)v32 = v12;
v21 = v7 + dword_140C22C00;
dword_140C22C00 += v7;
v19 = dword_140C22BD0;
v20 = dword_140C22BD4;
if( v3 != 5 )
{
dword_140C22C04 += v7;
dword_140C22BD0 = v3;
dword_140C22BD4 = v2;
}
if( v3 == v7 || v3 == 4 )
dword_140C22C08 += v7;
v4 = dword_140C22C08;
a2 = dword_140C22C04;
PopReleaseRwLock((UINT64)&PopTelemetryOsState);
PopCurrentPowerState(&PowerState);
v13 = 0;
MaxCapacity = PowerState.MaxCapacity;
if( PowerState.MaxCapacity )
v13 = 100 * PowerState.RemainingCapacity / PowerState.MaxCapacity;
PopMeasureEnergyChange((INT64)rcx0a, (INT64)&OsStateChangeEnergyCounter);
v34 = qword_140C22BD8;
if( (unsigned int)dword_140C021E8 > 5 && tlgKeywordOn((__int64)&dword_140C021E8, 0x800000000000i64) )
{
v15 = v3;
v50 = &v15;
v52 = &v16;
v41 = *(_QWORD *)v33;
v54 = &v41;
v51 = 2i64;
v16 = v2;
v53 = 2i64;
v55 = 8i64;
BootId = KUSER_SHARED_DATA.BootId;
p_BootId = &BootId;
v58 = &v34;
v42 = *(_QWORD *)v32;
v60 = &v42;
v62 = (__int64 *)&v43;
v64 = (__int64 *)&v44;
LOWORD(v17) = v19;
v66 = &v17;
LOWORD(v18) = v20;
v68 = &v18;
v24 = v21;
v70 = &v24;
v25 = a2;
v72 = &v25;
v74 = (int *)&v26;
v76 = (int *)&v27;
v78 = (int *)&v28;
v45 = rcx0a[1];
v80 = &v45;
v29 = rcx0a[0];
v82 = &v29;
AcOnLine = PowerState.AcOnLine;
p_AcOnLine = &AcOnLine;
v57 = 4i64;
v59 = 8i64;
v61 = 8i64;
v43 = v10;
v63 = 8i64;
v44 = v8;
v65 = 8i64;
v67 = 2i64;
v69 = 2i64;
v71 = 4i64;
v73 = 4i64;
v26 = v4;
v75 = 4i64;
v27 = MaxCapacity;
v77 = 4i64;
v28 = v13;
v79 = 4i64;
v81 = 8i64;
v83 = 4i64;
v85 = 4i64;
LODWORD(v31) = PowerState.Discharging;
v87 = 4i64;
v86 = &v31;
v46 = 0x1000000i64;
v88 = &v46;
v89 = 8i64;
tlgWriteTransfer_EtwWriteTransfer(
(__int64)&dword_140C021E8,
(unsigned __int8 *)byte_140026E0D,
0i64,
0i64,
0x16u,
&v49);
}
}
else
{
PopReleaseRwLock((UINT64)&PopTelemetryOsState);
}
return v4;
}Referenced by:
PopDiagInitialize
PopNotifyTelemetryOsState
PopPowerAggregatorActiveToScreenOffStateHandler
PopPowerAggregatorDisplayPoweringOnStateHandler