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