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