RtlTimelineBitmapUpdateRange

INT64 __fastcall RtlTimelineBitmapUpdateRange(INT64 *a1, UINT64 a2, UINT64 a3){
  INT64 result; 
  unsigned int v5; 
  int v6; 
  unsigned int v7; 
  int v8; 
  int v9; 
  int v10; 
  unsigned int v11; 
  INT64 v12; 
  result = *a1;
  v12 = result;
  v5 = a3;
  v6 = *a1;
  if( (unsigned int)a3 <= (unsigned int)result )
  {
    v11 = v6 - a3;
    if( v11 >= 0x20 )
      return result;
    v9 = HIDWORD(result);
    v8 = 1 << v11;
  }
  else
  {
    LODWORD(v12) = a3;
    v7 = a3 - v6;
    v8 = 1;
    if( v7 < 0x20 )
      v9 = HIDWORD(v12) << v7;
    else
      v9 = 0;
  }
  v10 = v8 | v9;
  while( 1 )
  {
    HIDWORD(v12) = v10;
    if( (unsigned int)a2 >= v5 )
      break;
    v8 *= 2;
    if( !v8 )
      break;
    v10 |= v8;
    LODWORD(a2) = a2 + 1;
  }
  result = v12;
  *a1 = v12;
  return result;
}

Referenced by:

PoEnergyContextCleanup
PoEnergyContextUpdateComponentPower
PsQueryProcessEnergyValues