RtlInternEntryDereference
NTSTATUS __fastcall RtlInternEntryDereference(INT64 a1, INT64 a2){
__int64 v4;
_QWORD *i;
__int64 v7;
v4 = _InterlockedDecrement64((volatile signed __int64 *)(a2 + 16));
if( v4 <= 0 )
{
if( v4 )
__fastfail(0xEu);
(*(void(__fastcall **)(INT64, _QWORD))(*(_QWORD *)(a1 + 16) + 16i64))(a1, 0i64);
v7 = *(_QWORD *)(a2 + 8) & (-1i64 << (*(_DWORD *)(a1 + 4) & 0x1F));
for( i = (_QWORD *)(*(_QWORD *)(a1 + 8)
+ 8i64
* ((37
* (BYTE6(v7)
+ 37
* (BYTE5(v7)
+ 37
* (BYTE4(v7)
+ 37
* (BYTE3(v7) + 37 * (BYTE2(v7) + 37 * (BYTE1(v7) + 37 * ((unsigned __int8)v7 + 11623883)))))))
+ HIBYTE(v7)) & (unsigned int)((*(_DWORD *)(a1 + 4) >> 5) - 1))); (*i & 1) == 0; i = (_QWORD *)*i )
{
if( *i == a2 )
{
*i = *(_QWORD *)a2;
--*(_DWORD *)a1;
*(_QWORD *)a2 |= 0x8000000000000002ui64;
break;
}
}
(*(void(__fastcall **)(INT64, _QWORD))(*(_QWORD *)(a1 + 16) + 24i64))(a1, 0i64);
LODWORD(v4) = (*(__int64(__fastcall **)(INT64, INT64))(*(_QWORD *)(a1 + 16) + 8i64))(a1, a2);
}
return v4;
}Referenced by:
PoEnergyContextCleanup
PopEtAggregateKeyCleanup
PopEtAppIdDereference
PopEtEnergyContextSetState
PopEtStringSet