public BigInteger getUnsignedValueIgnoreMask() {
		// translate bit positions to change 0 to mean the most significant bit for internal use
		int totalBitLength = bytes.length * 4;
		int start = totalBitLength - endBit - 1;
		int end = totalBitLength - startBit - 1;

		int numBits = end - start + 1;
		int size = (end - start) / 8 + 1;
		int extraBytes = 0;

		// see if we need an extra byte of zeros so that it is treated
		// as unsigned by BigInteger
		if (size * 8 == numBits && getBit(start) == 1) {
			extraBytes = 1;
		}
		byte[] result = new byte[size + extraBytes];

		int endByte = end / 8 + bytes.length / 2;
		int bitInEndByte = end % 8;

		int lowShift = 7 - bitInEndByte;
		int highShift = bitInEndByte + 1;

		int highByteMask = START_BYTE_MASK[size * 8 - (end - start + 1)];

		for (int i = size - 1; i >= 0; i--) {
			int lowPart = (bytes[endByte] & END_BYTE_MASK[bitInEndByte]) >>> lowShift;
			int highPart = (bytes[endByte - 1] & START_BYTE_MASK[bitInEndByte + 1]) << highShift;
			result[i + extraBytes] = (byte) (highPart | lowPart);
			if (i == 0) {
				result[i + extraBytes] = (byte) (result[i + extraBytes] & highByteMask);
			}
			endByte--;
		}

		return new BigInteger(result);
	}
Returns the unsigned value for this register regardless of the mask bits.  Bits that have "OFF" mask
bits will have the value of 0.
@return the unsigned value for this register regardless of the mask bits.  Bits that have "OFF" mask
bits will have the value of 0.
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/lang/RegisterValue.java