@Override
	protected void parseInternal() throws MDException {
		parsed = true;
		// TODO: Provide mechanism to turn on/off (move this boolean into MDMang?)
		boolean boolean32BitSymbols = true;
		if (boolean32BitSymbols) {
			switch (dmang.getAndIncrement()) {
				case '0': // UINFO: void
					basedName = "void";
					break;
				case '2': // UINFO: nearptr
					MDQualifiedName qn = new MDQualifiedName(dmang);
					qn.parse();
					StringBuilder qnBuilder = new StringBuilder();
					qn.insert(qnBuilder);
					basedName = qnBuilder.toString();
					break;
				case '5': // UINFO: basedptr (reserved: based on basedptr)--should "fail"
					basedPtrBased = true;
					// basedName = " ";
					basedName = null;
					break;
				case MDMang.DONE:
					throw new MDException("Missing based value.");
				default:
					basedName = "";
					return;
			}
		}
		else {
			switch (dmang.getAndIncrement()) {
				case '0': // UINFO: void
					basedName = "void";
					break;
				case '1': // UINFO: self
					basedName = "__self";
					break;
				case '2': // UINFO: nearptr
					basedName = "NYI:__near*";
					break;
				case '3': // UINFO: farptr
					basedName = "NYI:__far*";
					break;
				case '4': // UINFO: hugeptr
					basedName = "NYI:__huge*";
					break;
				case '5': // UINFO: basedptr (reserved: based on basedptr)
					basedPtrBased = true;
					basedName = null;
					// basedName = null;
					break;
				case '6': // UINFO: segment
					basedName = "NYI:__segment";
					break;
				case '7': // UINFO: segname
					MDBasicName bn = new MDBasicName(dmang);
					bn.parse();
					StringBuilder bnBuilder = new StringBuilder();
					bn.insert(bnBuilder);
					dmang.appendString(bnBuilder, "\"");
					dmang.insertString(bnBuilder, "__segmname(\"");
					basedName = bnBuilder.toString();
					break;
				case '8': // UINFO: segaddr
					basedName = "NYI:<segment-address-of-variable>";
					break;
				case MDMang.DONE:
					throw new MDException("Missing based value.");
				default:
					basedName = "";
					return;
			}
		}
	}
This class represents a based property of a modifier type within a Microsoft
mangled symbol.
Ghidra/Features/MicrosoftDmang/src/main/java/mdemangler/datatype/modifier/MDBasedAttribute.java