PopFxFreeUniqueId
void __fastcall PopFxFreeUniqueId(__int64 a1){
__int64 v1;
signed __int32 v3;
signed __int32 v4;
v1 = *(_QWORD *)(a1 + 136);
if( *(_QWORD *)(a1 + 48) != v1 )
{
if( v1 )
{
_m_prefetchw((const void *)(a1 + 296));
v3 = *(_DWORD *)(a1 + 296);
do
{
v4 = v3;
v3 = _InterlockedCompareExchange((volatile signed __int32 *)(a1 + 296), v3, v3);
}
while( v4 != v3 );
if( (v3 & 0x2000) == 0 )
ExFreePoolWithTag(*(PVOID *)(a1 + 136), 0x4D584650u);
}
}
*(_OWORD *)(a1 + 128) = 0i64;
}Referenced by:
PoFxAbandonDevice