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