RtlTimelineBitmapUpdateRange

NTSTATUS __stdcall RtlTimelineBitmapUpdateRange(INT64 *a1, UINT64 a2, UINT64 a3){
  INT64 v3; 
  unsigned int v5; 
  int v6; 
  unsigned int v7; 
  int v8; 
  int v9; 
  int v10; 
  unsigned int v11; 
  INT64 v13; 

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

Referenced by:

PoEnergyContextCleanup
PoEnergyContextUpdateComponentPower
PsQueryProcessEnergyValues