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