RtlStateDurationUpdate

INT64 __fastcall RtlStateDurationUpdate(UINT64 *a1, UINT8 a2, UINT64 a3){
  unsigned __int64 v3; 
  unsigned int v4; 
  int v5; 
  UINT64 v6; 
  unsigned int v7; 
  int v8; 
  int v10; 
  UINT64 v11; 
  v3 = *a1;
  v4 = a3;
  v5 = a2;
  v6 = HIDWORD(*a1);
  v7 = 0;
  v11 = *a1;
  if( (unsigned int)HIDWORD(*a1) >> 31 != a2 )
  {
    if( (HIDWORD(*a1) & 0x80000000) != 0 )
    {
      v10 = -1;
      v7 = v4 - v11;
      if( v4 - (_DWORD)v11 != -1 && ~v7 >= (v6 & 0x7FFFFFFF) )
        v10 = (v6 & 0x7FFFFFFF) + v7;
      v8 = v6 ^ (v10 ^ v6) & 0x7FFFFFFF;
    }
    else
    {
      v8 = HIDWORD(*a1);
    }
    v3 = __PAIR64__(v8 & 0x7FFFFFFF | (unsigned int)(v5 << 31), v4);
  }
  *a1 = v3;
  return v7;
}

Referenced by:

PoEnergyContextUpdateComponentPower
PopEtEnergyContextSetState