PopEtEnergyContextSetState
__int64 __fastcall PopEtEnergyContextSetState(_QWORD *a1, _DWORD *a2){
int v2;
__int64 v3;
INT64 v4;
char v7;
int v8;
int v9;
unsigned int v10;
unsigned __int64 v12;
_DWORD *v13;
INT64 v14;
int v15;
INT64 v16;
v2 = a2[3];
v3 = a1[285];
v4 = 0i64;
v16 = 0i64;
v7 = 0;
if( (v2 & 1) != 0 )
{
v13 = a2 + 4;
v14 = -1i64;
do
++v14;
while( *((_WORD *)v13 + v14) );
if( v14 )
{
v15 = PopEtStringIntern((INT64)v13, v14, &v16);
v4 = v16;
v10 = v15;
if( v15 < 0 )
goto LABEL_7;
}
if( *(_QWORD *)(v3 + 456) != v4 )
{
PopEtStringSet((INT64 *)(v3 + 456), v4);
v7 = 1;
}
}
v8 = *(_DWORD *)(v3 + 464);
v9 = a2[1] | (unsigned __int16)(v8 & ~(unsigned __int16)*a2);
if( (unsigned __int16)v8 != v9 )
{
v12 = (KUSER_SHARED_DATA.TickCountQuad * KUSER_SHARED_DATA.TickCountMultiplier) >> 24;
RtlStateDurationUpdate((UINT64 *)(v3 + 120), (v9 & 4) != 0, (unsigned int)v12);
RtlStateDurationUpdate((UINT64 *)(v3 + 416), (v9 & 8) != 0, (unsigned int)v12);
v4 = v16;
v7 = 1;
*(_WORD *)(v3 + 464) = v9;
}
if( v7 )
PopEtEnergyContextProcessStateUpdate(a1);
v10 = 0;
LABEL_7:
if( v4 )
RtlInternEntryDereference(PopEtGlobals + 56, v4);
return v10;
}Referenced by:
PoEnergyContextUpdateComponentPower
PoSetProcessEnergyTrackingState