@Override
	protected void parseInternal() throws MDException {
		name = "";
		// Up to this point the following characters have been stripped: '??_C'
		if (dmang.getAndIncrement() != '@') {
			throw new MDException("MDString parse error: missing @");
		}
		if (dmang.getAndIncrement() != '_') {
			throw new MDException("MDString parse error: missing _");
		}
		charType = dmang.getAndIncrement();
		MDEncodedNumber len = new MDEncodedNumber(dmang);
		len.parse();
		lenVal = len.getValue().intValue();
		MDEncodedNumber crcNumber = new MDEncodedNumber(dmang);
		crcNumber.parse();
		crcVal = crcNumber.getValue().longValue();
		switch (charType) {
			case '0': // char string
				typeSize = 1;
				name = "`string'";
				break;
			case '1': // wchar_t string
				typeSize = 2;
				name = "`string'";
				break;
			default:
				typeSize = 1;
				name = "`string'";
				// name = "MDString: Microsoft string of unknown type: " + charType;
				break;
		}
		if ((lenVal % typeSize) != 0) {
			// error... which we are currently ignoring
		}
		parseByteArray();
		if (dmang.peek() != MDMang.DONE) {
			MDEncodedNumber addr = new MDEncodedNumber(dmang);
			addr.parse();
			addrVal = addr.getValue().longValue();
			hasAddr = true;
		}
		if (lenVal <= (32 * typeSize)) {
			CrcChecker checker = new CrcChecker();
			crcPass = checker.crcCheck(byteArray, crcVal, typeSize);
		}
		else {
			// Returning true for now, as we do not have the data needed to calculate the CRC.
			crcPass = true;
		}
	}
This class represents "string" within a Microsoft mangled symbol.
Ghidra/Features/MicrosoftDmang/src/main/java/mdemangler/MDString.java