private void populateBlockPointerTable() throws IOException {

		int numBlockPointers = calculateStartAddress();

		if (numBlockPointers < 0) {
			throw new IOException("Start Address for data block not found");
		}

		int inodeDataOffset = cramfsInode.getOffsetAdjusted();
		for (int i = 0; i < numBlockPointers - 1; i++) {

			byte[] tempBuffer =
				provider.readBytes(inodeDataOffset, CramFsConstants.BLOCK_POINTER_SIZE);
			//byteProvider will be Big Endian by default
			ByteBuffer byteBuffer = ByteBuffer.wrap(tempBuffer);
			if (isLittleEndian) {
				blockPointerTable.add(Integer.reverseBytes(byteBuffer.getInt()));
			}
			else {
				blockPointerTable.add(byteBuffer.getInt());
			}

			inodeDataOffset += CramFsConstants.BLOCK_POINTER_SIZE;
		}
	}
This constructor reads the CramFS Block.
@param provider the byteProvider for the block header.
@param cramfsInode the parent node for this block.
@param isLittleEndian if the block is little endian or not.
@throws IOException if there is an error while reading the block.
Ghidra/Features/FileFormats/src/main/java/ghidra/file/formats/cramfs/CramFsBlockReader.java