func lookupByHash()

in qf.go [472:500]


func lookupByHash(dq, dr, size uint64, read, storage readFn) (bool, uint64) {
	sd := slotData(read(dq))
	if !sd.occupied() {
		return false, 0
	}
	slot := dq
	if sd.shifted() {
		slot = findStart(dq, size, read)
		sd = slotData(read(slot))
	}
	for {
		if sd.r() == dr {
			value := uint64(0)
			if storage != nil {
				value = storage(slot)
			}
			return true, value
		}
		if sd.r() > dr {
			break
		}
		right(&slot, size)
		sd = slotData(read(slot))
		if !sd.continuation() {
			break
		}
	}
	return false, 0
}