private List<DyldFixup> processPointerChain(long segmentOffset, long pageOffset,
			BinaryReader reader, TaskMonitor monitor) throws IOException, CancelledException {
		List<DyldFixup> fixups = new ArrayList<>(1024);
		long valueMask = ~deltaMask;
		long deltaShift = Long.numberOfTrailingZeros(deltaMask);

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

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

			delta = (chainValue & deltaMask) >> deltaShift;
			chainValue &= valueMask;
			if ((chainValue & 0xFFFF8000) == 0) {
				// small positive non-pointer, use as-is
			}
			else if ((chainValue & 0x3FFF8000) == 0x3FFF8000) {
				chainValue |= 0xC0000000;
			}
			else {
				chainValue += valueAdd /* + slide */;
			}

			fixups.add(new DyldFixup(dataOffset, Long.valueOf(chainValue), 4, 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/DyldCacheSlideInfo4.java