PopFxTransitionCriticalResource
VOID __stdcall PopFxTransitionCriticalResource(POHANDLE *Handle, UINT64 Component, UINT8 Active, UINT64 a4){
unsigned int v5;
unsigned int v6;
UINT64 v7;
UINT64 v8;
signed __int32 v9;
signed __int32 v10;
v5 = Component;
v6 = Active;
v7 = *((_QWORD *)Handle[104] + (unsigned int)Component);
v8 = v7 + 88;
v9 = _InterlockedCompareExchange((volatile signed __int32 *)(v7 + 92), 0, 0);
if( (_BYTE)v6 )
{
if( (v9 & 1) == 0 )
PopFxBugCheck(0x606ui64, v7, *(int *)(v7 + 92), v6);
v10 = v9 & 0xFFFFFFFE;
}
else
{
if( (v9 & 1) != 0 )
PopFxBugCheck(0x606ui64, v7, *(int *)(v7 + 92), 0i64);
v10 = v9 | 1;
}
if( v9 != _InterlockedCompareExchange((volatile signed __int32 *)(v7 + 92), v10, v9) )
PopFxBugCheck(0x606ui64, v7, v8, v10);
LOBYTE(v8) = v6;
((void(__fastcall *)(POHANDLE, _QWORD, UINT64, UINT64))Handle[20])(Handle[24], v5, v8, a4);
}Referenced by:
No references.