AlpcpTryLockForCachedReferenceBlob

UINT8 __stdcall AlpcpTryLockForCachedReferenceBlob(PVOID Blob){
  _BYTE *v2; 
  signed __int64 BugCheckParameter4; 
  LODWORD(v2) = KeAbPreAcquire((char *)Blob - 16, 0i64, 1ui64);
  if( _interlockedbittestandset64((volatile signed __int32 *)Blob - 4, 0i64) )
  {
    if( v2 )
      KeAbPostReleaseEx((char *)Blob - 16, v2);
    return 0;
  }
  else
  {
    if( v2 )
      v2[26] |= 1u;
    *((char *)Blob - 32) |= 1u;
    BugCheckParameter4 = _InterlockedExchangeAdd64((volatile signed __int64 *)Blob - 3, 0x10000ui64) + 0x10000;
    if( BugCheckParameter4 <= 0 )
      KeBugCheckEx(0x18u, 0i64, (ULONG_PTR)Blob, 0x27ui64, BugCheckParameter4);
    return 1;
  }
}

Referenced by:

AlpcpCancelMessagesByRequestor
AlpcpReceiveMessagePort