Не лучший способ хэширования.
В 2012 у AcDbObject был метод приведения типа к Adesk::UInt32, который и есть UINT. Видимо, в новой реализации этого метода нет или он к другому типу преобразовывает, который нельзя напрямую в UINT сохранить (сейчас нету свежего OARX, чтобы посмотреть реализацию).
В перегруженной функции хэширования предполагается, что адрес объекта совпадает с адресом дескриптора, а это может быть не так. ДАж если сейчас это так, то может измениться в последующих версиях. Возможно, там есть метод типа getOld (что-то такое было раньше), который возвращает указатель. И уже этот указатель нужно хэшировать. Именно сам указатель, а не данные, на которые он указывает, потому что он ни на что не указывает, а лишь хранит 32/64 бита информации. В приведённой функции отбрасываются 4 младших бита и 28 старших бит (реальный дескриптор 64 бита на х64 системе).ДУмаю, Лучше сперва ксорить старшие и младшие 32 бита, а уже потом удалять младшие 4 бита результата. На х86 разницы никакой точно не будет по сравнению с имеющейся функцией, на х64 могут быть различия (но я пока не встречал, чтобы в старшие 32 бита было записано что-то отличное от нуля).