ObReferenceObjectByPointer

NTSTATUS __stdcall ObReferenceObjectByPointer(
        VOID *Object,
        UINT64 DesiredAccess,
        _OBJECT_TYPE *ObjectType,
        INT8 AccessMode){
  bool v5; 
  __int64 BugCheckParameter4; 

  if( ObjectType )
    v5 = ObTypeIndexTable[(unsigned __int8)ObHeaderCookie ^ (unsigned __int8)*((char *)Object - 24) ^ (unsigned __int64)(unsigned __int8)((unsigned __int16)((_WORD)Object - 48) >> 8)] == (_QWORD)ObjectType;
  else
    v5 = AccessMode == 0;
  if( !v5 )
    return -1073741788;
  if( ObpTraceFlags )
    ObpPushStackInfo((_OBJECT_HEADER *)((char *)Object - 48), 1u, 1ui64, 0x746C6644ui64);
  BugCheckParameter4 = _InterlockedIncrement64((volatile signed __int64 *)Object - 6);
  if( BugCheckParameter4 <= 1 )
    KeBugCheckEx(0x18u, 0i64, Object, (PVOID)0x10, (PVOID)BugCheckParameter4);
  return 0;
}

Referenced by:

EtwpRegisterPrivateSession
EtwpStopTrace
HalGetAdapterV2
HalGetAdapterV3
HalpDmaAllocateChildAdapterV2
HalpDmaAllocateChildAdapterV3
IopAllocateFoExtensionsOnCreate
NtImpersonateAnonymousToken
ObpLookupObjectName
ObpParseSymbolicLinkEx
WmipQueryAllData
WmipQuerySetExecuteSI
WmipRegisterDevice