private List<DyldFixup> processPointerChain(long segmentOffset, long pageOffset,
			BinaryReader reader, TaskMonitor monitor) throws IOException, CancelledException {

		List<DyldFixup> fixups = new ArrayList<>(1024);

		for (long delta = -1; delta != 0; pageOffset += delta * 8) {
			monitor.checkCancelled();

			long dataOffset = segmentOffset + pageOffset;
			long chainValue = reader.readLong(dataOffset);

			// if authenticated pointer
			boolean isAuthenticated = chainValue >>> 63 != 0;
			delta = (chainValue & (0x7FFL << 51L)) >> 51L;

			if (isAuthenticated) {
				long offsetFromSharedCacheBase = chainValue & 0xFFFFFFFFL;
				//long diversityData = (chainValue >> 32L) & 0xFFFFL;
				//long hasAddressDiversity = (chainValue >> 48L) & 0x1L;
				//long key = (chainValue >> 49L) & 0x3L;
				chainValue = offsetFromSharedCacheBase + authValueAdd /* + slide */;
			}
			else {
				long top8Bits = chainValue & 0x0007F80000000000L;
				long bottom43Bits = chainValue & 0x000007FFFFFFFFFFL;
				chainValue = (top8Bits << 13) | bottom43Bits /* + slide */;
			}

			fixups.add(new DyldFixup(dataOffset, chainValue, 8, null, null));
		}

		return fixups;
	}
Walks the pointer chain at the given reader offset to find necessary {@link DyldFixup}s

@param segmentOffset The segment offset
@param pageOffset The page offset
@param reader A reader positioned at the start of the segment to fix
@param monitor A cancellable monitor
@return A {@link List} of {@link DyldFixup}s
@throws IOException If an IO-related error occurred
@throws CancelledException If the user cancelled the operation
Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/macho/dyld/DyldCacheSlideInfo3.java