RtlpLfhBucketUsageUpdate
NTSTATUS __stdcall RtlpLfhBucketUsageUpdate(INT64 a1, UINT64 a2, INT64 a3){
__int64 v3;
signed __int64 v4;
signed __int64 v5;
signed __int64 v7;
v3 = (unsigned int)a2;
do
{
v4 = *(_QWORD *)(a1 + 8 * v3 + 128);
v5 = v4;
v7 = v4;
if( (v4 & 1) == 0 )
break;
if( (_DWORD)a3 )
{
if( (BYTE2(v4) & 0x1Fu) > 0x10 || WORD1(v4) > 0xFF00u )
return v5;
WORD1(v7) = WORD1(v4) + 33;
}
else
{
if( WORD1(v4) <= 1u )
continue;
WORD1(v7) = WORD1(*(_QWORD *)(a1 + 8 * v3 + 128)) - 1;
}
v5 = v7;
}
while( v4 != _InterlockedCompareExchange64((volatile signed __int64 *)(a1 + 8 * v3 + 128), v5, v4) );
return v5;
}Referenced by:
RtlpHpLfhBucketUpdateStats