ExfReleasePushLockExclusive
VOID __fastcall ExfReleasePushLockExclusive(volatile INT64 *a1){
signed __int64 v1;
signed __int64 v2;
__int64 v3;
signed __int64 v4;
signed __int64 v5;
v1 = _InterlockedCompareExchange64(a1, 0i64, 1i64);
if( v1 != 1 )
{
do
{
v2 = v1 & 6;
v3 = 3i64;
if( v2 != 2 )
v3 = -1i64;
v4 = v1 + v3;
v5 = v1;
v1 = _InterlockedCompareExchange64(a1, v4, v1);
}
while( v5 != v1 );
if( v2 == 2 )
ExpWakePushLock(a1, v4);
}
}Referenced by:
ExfAcquireReleasePushLockExclusive
ExfReleasePushLock