public static String readDecodedString(LittleEndianAccessor llea) {
		int strLength;
		byte b = llea.readByte();

		if (b == 0x00) {
			return "";
		}

		if (b >= 0) {

			// UNICODE BABY
			if (b == 0x7F) {
				strLength = llea.readInt();
			} else {
				strLength = (int) b;
			}

			if (strLength < 0) {
				log.error("Strlength < 0");
				return "";
			}

			byte str[] = new byte[strLength * 2];

			for (int i = 0; i < strLength * 2; i++) {
				str[i] = llea.readByte();
			}

			return DecryptUnicodeStr(str);

		} else {

			// THIS BOAT IS ASCIIIIII
			if (b == -128) {
				strLength = llea.readInt();
			} else {
				strLength = (int) (-b);
			}

			if (strLength < 0) {
				log.error("Strlength < 0");
				return "";
			}

			byte str[] = new byte[strLength];

			for (int i = 0; i < strLength; i++) {
				str[i] = llea.readByte();
			}

			return DecryptAsciiStr(str);
		}
	}