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