ExpTryAcquireFannedOutPushLockShared

UINT64 __fastcall ExpTryAcquireFannedOutPushLockShared(UINT64 a1){
  unsigned int v1; 
  unsigned __int64 v2; 
  unsigned int v3; 
  UINT64 v4; 
  v1 = ((unsigned int)a1 >> 13) & 0x3FFFF;
  v2 = (unsigned __int64)(unsigned int)a1 >> 4;
  _BitScanReverse(&v3, v1);
  v4 = *(_QWORD *)(*(_QWORD *)(*((_QWORD *)KeGetCurrentPrcb() + 4198) + 8i64 * (v3 - 2)) + 8i64 * (v1 ^ (1 << v3)) + 8)
     + 8 * (v2 & 0x1FF);
  if( _InterlockedCompareExchange64((volatile signed __int64 *)v4, 17i64, 0i64) )
    v4 &= -(__int64)(ExfTryAcquirePushLockShared((UINT64 *)v4) != 0);
  return v4;
}

Referenced by:

ExTryAcquireAutoExpandPushLockShared