ObpGrantAccess

INT64 __fastcall ObpGrantAccess(
        _OB_OPEN_REASON OpenReason,
        VOID *Object,
        _ACCESS_STATE *AccessState,
        INT64 AccessMode,
        UINT64 Attributes,
        UINT *GrantedAccess){
  unsigned __int64 v8; 
  KPROCESSOR_MODE v9; 
  unsigned __int64 v10; 
  INT64 result; 
  INT64 AccessStatus; 
  LODWORD(AccessStatus) = 0;
  v8 = (unsigned __int8)*((char *)Object - 24) ^ (unsigned __int64)(unsigned __int8)((unsigned __int16)((_WORD)Object - 48) >> 8);
  v9 = 1;
  v10 = (unsigned __int8)ObHeaderCookie ^ v8;
  if( (Attributes & 0x400) == 0 )
    v9 = AccessMode;
  if( (unsigned int)(OpenReason - 1) > 1 )
  {
    result = ObpAdjustCreatorAccessState(AccessState, v9, ObTypeIndexTable[v10], (__int64)Object);
    if( (int)result >= 0 )
      goto LABEL_5;
  }
  else
  {
    if( ObCheckObjectAccess(Object, AccessState, 1u, v9, &AccessStatus) )
    {
LABEL_5:
      *GrantedAccess = *((_DWORD *)AccessState + 5);
      return 0i64;
    }
    return(unsigned int)AccessStatus;
  }
  return result;
}

Referenced by:

ObpInsertOrLocateNamedObject