EmClientQueryRuleState
__int64 __fastcall EmClientQueryRuleState(_QWORD *a1, _DWORD *a2){
unsigned int v2;
SINGLE_LIST_ENTRY *v5;
SINGLE_LIST_ENTRY *v6;
volatile signed __int32 *v7;
__int64 v8;
volatile signed __int32 *v9;
v2 = 0;
if( a1 && a2 )
{
*a2 = 1;
if( EmpAcquirePagingReference() )
{
ExAcquirePushLockExclusiveEx((UINT64)&EmpDatabaseLock, 0i64);
v5 = EmpSearchRuleDatabase((const GUID *)a1);
v6 = v5;
if( v5 && (v7 = (volatile signed __int32 *)EmpSearchTargetRuleList((__int64)v5), (v9 = v7) != 0i64) )
{
_InterlockedIncrement(v7);
EmpUpdateRuleState(v8, 0i64);
_InterlockedAdd(v9, 0xFFFFFFFF);
*a2 = v6[2].Next;
}
else
{
v2 = -1073741275;
}
if( (_InterlockedExchangeAdd64((volatile signed __int64 *)&EmpDatabaseLock, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
ExfTryToWakePushLock((volatile INT64 *)&EmpDatabaseLock);
KeAbPostRelease(&EmpDatabaseLock);
EmpReleasePagingReference();
}
else
{
return(unsigned int)-1073741818;
}
}
else
{
return(unsigned int)-1073741811;
}
return v2;
}Referenced by:
HalpInterruptIsMsiSupported
KeInitializeClock
PoInitHiberServices
PoInitSystem
PopDirectedDripsQueryEmPS4DisableSetting
PopDirectedDripsQueryEmSettings
PopEnableHiberFile
PopFilterCapabilities
PopHiberEvaluateSkippingMemoryMapValidation