public synchronized byte[] encode(String str, int size) {
		byte abyte0[] = null;

		if (size > 0) {
			abyte0 = f;
			f = new byte[size];
		}

		g = 0;
		h = 0;
		int l = str.length();
		e += l;

		for (int j1 = 0; j1 < l;) {
			Integer integer = null;
			int i1 = j1 + 1;
			Hashtable hashtable = c;

			do {
				if (j1 >= l) {
					break;
				}

				char c1 = str.charAt(j1);
				Integer integer1 = (Integer) hashtable.get(b(c1));

				if (integer1 != null) {
					i1 = j1 + 1;
					integer = integer1;
				}

				hashtable = (Hashtable) hashtable.get(c(c1));

				if (hashtable == null) {
					break;
				}

				j1++;
			} while (true);

			j1 = i1;

			if (integer == null) {
				a(a);
				a(0x10000000 + str.charAt(j1 - 1));
			} else {
				a(integer.intValue());
			}
		}

		b();
		byte abyte1[] = new byte[h];
		System.arraycopy(f, 0, abyte1, 0, h);
		d += h;

		if (size > 0) {
			f = abyte0;
		}

		return abyte1;
	}