rendered paste body/* Class9 - Decompiled by JODE * Visit http://jode.sourceforge.net/ * Renamed by Rictoo with help with around 3 methods from IRC (whitecastle, frank_, c|p) <3 */import java.awt.FontMetrics;import java.awt.Graphics;import java.net.MalformedURLException;import java.net.URL;public class MutableString implements Interface1 { public static int anInt1669; public static int anInt1670; public static int anInt1672; public static int anInt1673; public static int anInt1674; public static int anInt1675; public static int anInt1676; public static int anInt1678; public static int anInt1679; public static int anInt1680; public static int anInt1681; public static int anInt1682; public static int anInt1683; public static int anInt1685; public static int anInt1686; public static int anInt1687; public static int anInt1688; public static int anInt1689; public static int anInt1690; public static int anInt1691; public static MutableString aClass9_1692 = Class26.method235(" from your ignore list first)3", -1); public static int anInt1693; public static int anInt1694; public static int anInt1695; public static int anInt1696; public static int anInt1697; public static int anInt1698; public static int anInt1699; public static int anInt1700; public static int anInt1701; public static long aLong1702; public static Class17 aClass17_1703; public static int anInt1704; public static int anInt1705; public static int anInt1706; public static int anInt1707; public static int anInt1709; public static int anInt1710; public static int anInt1711; public static int anInt1712; public static int anInt1713; public static int anInt1714; public static MutableString aClass9_1715 = aClass9_1692; public static int anInt1716; public static int anInt1717; public static Class27 aClass27_1718; public static MutableString aClass9_1719; public static MutableString aClass9_1720; public static int anInt1721; public static MutableString aClass9_1722; public static int anInt1723; public static MutableString aClass9_1724; /*synthetic*/ public static Class aClass1725; static { aClass17_1703 = new Class17(32); aClass9_1719 = Class26.method235("Sichtbare Karte vorbereitet)3", -1); aClass9_1722 = Class26.method235("Error connecting to server)3", -1); aClass9_1720 = aClass9_1722; aClass9_1724 = Class26.method235("::gc", -1); aClass27_1718 = new Class27(); } public boolean editable = true; public int length; public byte[] stringData; public int hashCache; public static void method83(byte i) { aClass9_1724 = null; aClass9_1720 = null; aClass17_1703 = null; aClass9_1719 = null; aClass9_1692 = null; aClass9_1722 = null; aClass27_1718 = null; aClass9_1715 = null; if (i != -37) { aClass9_1715 = null; } } public int method84(MutableString ms) { int len; if (ms.length < length) { len = ms.length; } else { len = length; } anInt1696++; for (int idx = 0; idx < len; idx++) { if (Class73.anIntArray1371[0xff & ms.stringData[idx]] > Class73.anIntArray1371[0xff & stringData[idx]]) { return -1; } if (Class73.anIntArray1371[0xff & ms.stringData[idx]] < Class73.anIntArray1371[0xff & stringData[idx]]) { return 1; } } if (ms.length > length) { return -1; } if (ms.length < length) { return 1; } return 0; } public int toInt() { anInt1693++; return toInt(10); } public MutableString substring(int i) { anInt1674++; return substring(i, length); } public int intHash() { int hash = 0; for (int idx = 0; idx < length; idx++) hash = (stringData[idx] & 0xff) - hash + (hash << 5); anInt1685++; return hash; } public MutableString mask() { MutableString ms = new MutableString(); anInt1710++; ms.length = length; ms.stringData = new byte[length]; for (int i_7_ = 0; i_7_ < length; i_7_++) ms.stringData[i_7_] = (byte) '*'; return ms; } public MutableString trim() { // 0-32 are unprintable chars int start = 0; anInt1673++; for (; (start < length && ((stringData[start] >= 0 && stringData[start] <= 32) || (0xff & stringData[start]) == 160)); start++) { /* empty */ } int end; for (end = length; end > start && ((stringData[end - 1] >= 0 && (stringData[end - 1] <= 32)) || ((0xff & stringData[end - 1]) == 160)); end--) { /* empty */ } if (start == 0 && length == end) { return this; } MutableString ms = new MutableString(); ms.length = end - start; ms.stringData = new byte[ms.length]; for (int idx = 0; idx < ms.length; idx++) ms.stringData[idx] = stringData[start + idx]; return ms; } public int getStringWidth(FontMetrics fontmetrics) { anInt1691++; String string; try { string = new String(stringData, 0, length, "ISO-8859-1"); } catch (java.io.UnsupportedEncodingException uee) { string = new String(stringData, 0, length); } return fontmetrics.stringWidth(string); } public String toString() { anInt1700++; throw new RuntimeException(); } public int compareTo(MutableString ms) { anInt1714++; int i; if (ms.length < length) { i = ms.length; } else { i = length; } for (int idx = 0; idx < i; idx++) { if ((0xff & ms.stringData[idx]) > (0xff & stringData[idx])) { return -1; } if ((stringData[idx] & 0xff) > (ms.stringData[idx] & 0xff)) { return 1; } } if (ms.length > length) { return -1; } if (length > ms.length) { return 1; } return 0; } public int toInt(int radix) { anInt1716++; if (radix < 1 || radix > 36) { radix = 10; } boolean negative = false; int number = 0; boolean validNumber = false; for (int idx = 0; length > idx ; idx++) { int b = 0xff & stringData[idx]; if (idx == 0) { if (b == '-') { negative = true; continue; } if (b == '+') { continue; } } if (b >= '0' && b <= '9') b -= 48; else if (b >= 'A' && b <= 'Z') b -= 55; else if (b >= 'a' && b <= 'z') b -= 87; else throw new NumberFormatException(); if (b >= radix) { throw new NumberFormatException(); } if (negative) { b = -b; } int i_19_ = b + (radix * number); if (number != (i_19_ / radix)) throw new NumberFormatException(); validNumber = true; number = i_19_; } if (!validNumber) { throw new NumberFormatException(); } return number; } public int getLength() { anInt1713++; return length; } public boolean substringEquals(MutableString ms, int i) { anInt1689++; if (length < ms.length) { return false; } for (int i_21_ = i; i_21_ < ms.length; i_21_++) { if (stringData[i_21_] != ms.stringData[i_21_]) { return false; } } return true; } public static void method95(boolean bool) { Class6.method76(113); Class8.method82(10); Class74_Sub7_Sub30.method700(false); Class71_Sub2.method528((byte) 58); anInt1686++; Class74_Sub12_Sub14.method857((byte) -126); Class74_Sub16.method1158(-1); Class89.method1337((byte) -108); Class74_Sub12_Sub5.method787(1); Class74_Sub12_Sub6.method794((byte) -100); Class74_Sub12_Sub16_Sub4.method913(69); Class74_Sub12_Sub16_Sub2_Sub2.method884(-1); if (bool != true) { aClass27_1718 = null; } Class74_Sub12_Sub7.method803(126); ((Class6) Class74_Sub12_Sub18_Sub4.anInterface2_3942).method69((byte) -8); Class74_Sub7_Sub9.aClass70_2474.method517(false); Class74_Sub7_Sub26.aClass46_Sub1_2830.method352((byte) -103); Class7.aClass46_Sub1_151.method352((byte) -103); Class5.aClass46_Sub1_135.method352((byte) -92); Class74_Sub12.aClass46_Sub1_2006.method352((byte) -103); Class38.aClass46_Sub1_760.method352((byte) -93); Class83.aClass46_Sub1_1536.method352((byte) -123); Class28.aClass46_Sub1_615.method352((byte) -93); client.aClass46_Sub1_1772.method352((byte) -113); Class51.aClass46_Sub1_975.method352((byte) -112); Class74_Sub12_Sub10.aClass46_Sub1_3319.method352((byte) -116); Class74_Sub7_Sub2.aClass46_Sub1_2345.method352((byte) -115); } public boolean equalsIgnoreCase(MutableString ms) { anInt1699++; if (ms == null) { return false; } if (length != ms.length) { return false; } for (int i_24_ = 0; i_24_ < length; i_24_++) { byte i_25_ = ms.stringData[i_24_]; if ((i_25_ >= 'A' && i_25_ <= 'Z') || (i_25_ >= -64 && i_25_<= -34 && i_25_ != -41)) { i_25_ += 32; // Make it lower case } byte i_26_ = stringData[i_24_]; if ((i_26_ >= 'A' && i_26_<= 'Z') || (i_26_ >= -64 && i_26_<= -34 && i_26_ != -41)) { i_26_ += 32; // Make it lower case } if (i_25_ != i_26_) { return false; } } return true; } public boolean equals(Object object) { anInt1675++; if (object instanceof MutableString) { return equals((MutableString) object); } throw new IllegalArgumentException(); } public boolean endsWith(MutableString ms) { anInt1687++; if (ms.length > length) { return false; } int off = length - ms.length; for (int idx = 0; idx < ms.length; idx++) { if (stringData[off + idx] != ms.stringData[idx]) { return false; } } return true; } public void drawString(Graphics graphics, int x, int y) { anInt1704++; String string; try { string = new String(stringData, 0, length, "ISO-8859-1"); } catch (java.io.UnsupportedEncodingException unsupportedencodingexception) { string = new String(stringData, 0, length); } graphics.drawString(string, x, y); } public static void method99(int i, byte i_32_, int i_33_, Class22 class22) { anInt1712++; if ((Class6.aClass22_1735 == null) && !Class74_Sub12_Sub11.aBoolean3373 && ((class22 != null) && (Class74_Sub7_Sub7.method608(class22, 2) != null))) { Class6.aClass22_1735 = class22; Class74_Sub24.aClass22_2306 = Class74_Sub7_Sub7.method608(class22, 2); Class20.anInt334 = i_33_; Class69.anInt1317 = i; Class74_Sub7_Sub26.anInt2822 = 0; Class74_Sub12_Sub13.aBoolean3414 = false; if (i_32_ != 118) { method95(true); } } } public int indexOf(int ch, int fromIndex) { anInt1705++; byte c = (byte) ch; int idx = fromIndex; for (; idx < length; idx++) { if (c == stringData[idx]) { return idx; } } return -1; } public MutableString capitalize() { anInt1682++; int c = 2; // 2 = Next is Uppercase, 1 = Neutral, 0 = Next is Lowercase MutableString ms = new MutableString(); ms.length = length; ms.stringData = new byte[length]; for (int idx = 0; idx < length; idx++) { byte b = stringData[idx]; if ((b < 'a' || b > 'z') && (b < -32 || b > -2 || b == -9)) { if ((b >= 'A' && b <= 'Z') || ((b >= -64) && (b <= -34) && (b != -41))) { if (c == 0) { b += 32; } c = 0; } else if (b == '.' || b == '!' || b == '?') { c = 2; } else if (b != ' ') { c = 1; } else if (c != 2) { c = 1; } } else { if (c == 2) { b -= 32; } c = 0; } ms.stringData[idx] = b; } return ms; } public MutableString method102(boolean bool) { anInt1678++; long l = longHash(); synchronized ((aClass1725 != null) ? aClass1725 : (aClass1725 = method123("MutableString"))) { if (Class46.aClass17_892 != null) { for (Class74_Sub11 class74_sub11 = ((Class74_Sub11) Class46.aClass17_892.method175( l, (byte) 28)); class74_sub11 != null; class74_sub11 = ((Class74_Sub11) Class46.aClass17_892.method169( (byte) -97))) { if (equals(class74_sub11.aClass9_1995)) { return class74_sub11.aClass9_1995; } } } else { Class46.aClass17_892 = new Class17(4096); } Class74_Sub11 class74_sub11 = new Class74_Sub11(); class74_sub11.aClass9_1995 = this; editable = bool; Class46.aClass17_892.method177(l, -117, class74_sub11); } return this; } public int method103(int i, int i_44_, MutableString class9_45_) { anInt1711++; int[] is = new int[class9_45_.length]; int[] is_46_ = new int[256]; int[] is_47_ = new int[class9_45_.length]; for (int i_48_ = 0; i_48_ < is_46_.length; i_48_++) is_46_[i_48_] = class9_45_.length; for (int i_49_ = 1; (i_49_ ^ 0xffffffff) >= (class9_45_.length ^ 0xffffffff); i_49_++) { is[i_49_ - 1] = (class9_45_.length << 1557288257) + -i_49_; is_46_[Class74_Sub7_Sub7.method607(255, class9_45_.stringData[-1 + i_49_])] = -i_49_ + class9_45_.length; } int i_50_ = 1 + class9_45_.length; for (int i_51_ = class9_45_.length; i_51_ > 0; i_51_--) { is_47_[i_51_ - 1] = i_50_; for (; (((class9_45_.length ^ 0xffffffff) <= (i_50_ ^ 0xffffffff)) && ((class9_45_.stringData[i_51_ + -1] ^ 0xffffffff) != (class9_45_.stringData[-1 + i_50_] ^ 0xffffffff))); i_50_ = is_47_[-1 + i_50_]) { if ((is[i_50_ - 1] ^ 0xffffffff) <= ((-i_51_ + class9_45_.length) ^ 0xffffffff)) { is[-1 + i_50_] = class9_45_.length + -i_51_; } } i_50_--; } int i_52_ = 0; int i_53_ = 1; int i_54_ = i_50_; i_50_ = -i_54_ + (1 + class9_45_.length); int i_55_ = 1; while (i_50_ >= i_55_) { is_47_[i_55_ + -1] = i_52_; for (; (((i_52_ ^ 0xffffffff) <= -2) && ((class9_45_.stringData[-1 + i_52_] ^ 0xffffffff) != (class9_45_.stringData[i_55_ - 1] ^ 0xffffffff))); i_52_ = is_47_[i_52_ - 1]) { /* empty */ } i_55_++; i_52_++; } if (i != -18621) { aClass9_1692 = null; } while (i_54_ < class9_45_.length) { for (int i_56_ = i_53_; i_54_ >= i_56_; i_56_++) { if ((i_54_ + (class9_45_.length - i_56_)) <= is[-1 + i_56_]) { is[i_56_ + -1] = -i_56_ + (i_54_ + class9_45_.length); } } i_53_ = i_54_ + 1; i_54_ = -is_47_[-1 + i_50_] + (i_54_ + i_50_); i_50_ = is_47_[-1 + i_50_]; } int i_57_; for (int i_58_ = -1 + (class9_45_.length + i_44_); (i_58_ ^ 0xffffffff) > (length ^ 0xffffffff); i_58_ += Math.max(is_46_[0xff & stringData[i_58_]], is[i_57_])) { for (i_57_ = class9_45_.length - 1; (i_57_ >= 0) && ((class9_45_.stringData[i_57_] ^ 0xffffffff) == (stringData[i_58_] ^ 0xffffffff)); i_57_--) i_58_--; if (i_57_ == -1) { return 1 + i_58_; } } return -1; } public MutableString appendChar(int ch) { anInt1717++; if (ch <= 0 || ch > 255) { throw new IllegalArgumentException("invalid char:" + ch); } if (!editable) { throw new IllegalArgumentException(); } hashCache = 0; if (stringData.length == length) { int len = 1; while(len <= length) len <<= 1; byte[] is = new byte[len]; Class44.byteArrayCopy(stringData, 0, is, 0, length); stringData = is; } stringData[length++] = (byte) ch; return this; } public MutableString concat(MutableString ms) { anInt1695++; if (!editable) { throw new IllegalArgumentException(); } hashCache = 0; if (stringData.length < (length + ms.length)) { int len; for (len = 1; len < (ms.length + length); len += len) { /* empty */ } byte[] is = new byte[len]; Class44.byteArrayCopy(stringData, 0, is, 0, length); stringData = is; } Class44.byteArrayCopy(ms.stringData, 0, stringData, length, ms.length); length += ms.length; return this; } public MutableString substring(int off, int len) { anInt1688++; MutableString ms = new MutableString(); ms.stringData = new byte[len - off]; ms.length = len - off; Class44.byteArrayCopy(stringData, off, ms.stringData, 0, ms.length); return ms; } public MutableString appendCharC(int ch) { anInt1681++; if (ch <= 0 || ch > 255) { throw new IllegalArgumentException("invalid char"); } MutableString ms = new MutableString(); ms.stringData = new byte[length + 1]; ms.length = length + 1; Class44.byteArrayCopy(stringData, 0, ms.stringData, 0, length); ms.stringData[length] = (byte) ch; return ms; } public int read(byte[] b, int len, int srcPos, int destPos) { anInt1679++; Class44.byteArrayCopy(stringData, srcPos, b, destPos, len - srcPos); return len - srcPos; } public int hashCode() { anInt1676++; return intHash(); } public MutableString adjustSize() { anInt1698++; if (!editable) { throw new IllegalArgumentException(); } hashCache = 0; if (stringData.length != length) { byte[] is = new byte[length]; Class44.byteArrayCopy(stringData, 0, is, 0, length); stringData = is; } return this; } public int charAt(int i) { anInt1697++; return 0xff & stringData[i]; } public boolean equals(MutableString ms) { anInt1701++; if (ms == null) { return false; } if (length != ms.length) { return false; } if (!editable || !ms.editable) { if (hashCache == 0) { hashCache = intHash(); if (hashCache == 0) { hashCache = 1; } } if (ms.hashCache == 0) { ms.hashCache = ms.intHash(); if (ms.hashCache== 0) { ms.hashCache = 1; } } if (hashCache != ms.hashCache) { return false; } } for (int idx = 0; idx < length; idx++) { if (stringData[idx] != ms.stringData[idx]) { return false; } } return true; } public byte[] getStringData() { anInt1683++; byte[] is = new byte[length]; Class44.byteArrayCopy(stringData, 0, is, 0, length); return is; } public MutableString toLowercase(int i) { anInt1672++; MutableString ms = new MutableString(); ms.length = length; ms.stringData = new byte[length]; if (i != 16864) { aClass9_1719 = null; } for (int idx = 0; idx < length; idx++) { byte b = stringData[idx]; if ((b >= 'A' && b <= 'Z') || (b >= -64 && b <= -34 && b != -41)) { b += 32; } ms.stringData[idx] = b; } return ms; } public MutableString deprepareUsername() { anInt1690++; MutableString ms = new MutableString(); boolean capital = true; ms.length = length; ms.stringData = new byte[length]; for (int idx = 0; idx < length; idx++) { byte b = stringData[idx]; if (b != '_') { if (b >= 'a' && b <= 'z' && capital) { ms.stringData[idx] = (byte) (b - 32); } else { ms.stringData[idx] = b; } capital = false; } else { capital = true; ms.stringData[idx] = (byte) ' '; } } return ms; } public boolean isDecimal() { anInt1723++; return isNumber(10); } public long method116(byte i) { if (i >= -73) { return -84L; } anInt1669++; long l = 0L; for (int i_81_ = 0; (length ^ 0xffffffff) < (i_81_ ^ 0xffffffff); i_81_++) { if ((i_81_ ^ 0xffffffff) <= -13) { break; } l *= 37L; byte i_82_ = stringData[i_81_]; if ((i_82_ < 65) || (i_82_ > 90)) { if (((i_82_ ^ 0xffffffff) > -98) || ((i_82_ ^ 0xffffffff) < -123)) { if ((i_82_ >= 48) && (i_82_ <= 57)) { l += (long) (-21 + i_82_); } } else { l += (long) (i_82_ + -96); } } else { l += (long) (-65 + (i_82_ + 1)); } } for (; (((l % 37L) ^ 0xffffffffffffffffL) == -1L) && (l != 0L); l /= 37L) { /* empty */ } return l; } public MutableString prepareUsername() { anInt1694++; MutableString ms = new MutableString(); int pos = 0; ms.stringData = new byte[12]; ms.length = 0; for (int idx = 0; length > idx; idx++) { if (stringData[idx] < 'A' || stringData[idx] > 'Z') { if ((stringData[idx] >= 'a' && stringData[idx] <= 'z') || (stringData[idx] >= '0' && stringData[idx] <= '9')) { ms.stringData[pos++] = stringData[idx]; ms.length = pos; } else if (pos > 0) { ms.stringData[pos++] = (byte) '_'; } } else { ms.stringData[pos++] = (byte) (32 + stringData[idx]); ms.length = pos; } if (pos == 12) { break; } } return ms; } public int method118(int i, MutableString class9_86_) { if (i != 0) { hashCache = -13; } anInt1670++; return method103(-18621, 0, class9_86_); } public static int method119(int i, int i_87_) { anInt1706++; if (i < i_87_) { int i_89_ = i; i = i_87_; i_87_ = i_89_; } int i_90_; for (; i_87_ != 0; i_87_ = i_90_) { i_90_ = i % i_87_; i = i_87_; } return i; } public long longHash() { long hash = 0L; anInt1680++; for (int i_91_ = 0; i_91_ < length; i_91_++) hash = (long) (stringData[i_91_] & 0xff) + ((hash << -59) - hash); return hash; } public boolean isNumber(int radix) { // frunk told me l0l anInt1707++; if (radix < 1 || radix > 36) { radix = 10; } boolean negative = false; int i_93_ = 0; boolean number = false; for (int idx = 0; idx < length; idx++) { int b = stringData[idx] & 0xff; if (idx == 0) { if (b == '-') { negative = true; continue; } if (b == '+') { continue; } } if (b >= '0' && b <= '9') { b -= 48; } else if (b >= 'A' && b <= 'Z') { b -= 55; } else if (b >= 'a' && b <= 'z') { b -= 87; } else { return false; } if (radix <= b) { return false; } if (negative) { b = -b; } int i_97_ = b + (i_93_ * radix); if (i_93_ != (i_97_ / radix)) { return false; } number = true; i_93_ = i_97_; } return number; } public URL toURL() throws MalformedURLException { anInt1709++; return new URL(new String(stringData, 0, length)); } /*synthetic*/ public static Class method123(String string) { try { return Class.forName(string); } catch (ClassNotFoundException classnotfoundexception) { throw new NoClassDefFoundError(classnotfoundexception.getMessage()); } }}