Files
wes c30e839b64 SBoT 1.0 decompiled with CFR 0.152
Full source recovered from SBoT.jar (July 2004) plus the three bundled
example scripts (BoneBury, GuildFish, GuildFisher). Class names are the
original RSC-era single-letter obfuscation (a.java-z.java); mudclient.java
and Script.java kept their real names since those weren't obfuscated.
2026-08-25 13:11:31 -04:00

434 lines
13 KiB
Java

/*
* Decompiled with CFR 0.152.
*/
import java.io.IOException;
public class w {
protected int a;
public int b;
public int c;
public int d;
private int e;
private int f;
public byte[] g;
private static int[] h;
final int i = 61;
final int j = 59;
final int k = 42;
final int l = 43;
final int m = 44;
final int n = 45;
final int o = 46;
final int p = 47;
final int q = 92;
final int r = 32;
final int s = 124;
final int t = 34;
public m u;
public m v;
static char[] w;
public static int[] x;
protected boolean y;
public static int[] z;
protected int A;
protected int B;
protected String C;
public static int D;
private static String E;
public void a(int[] nArray) {
this.u = new m(nArray);
this.v = new m(nArray);
}
public void a() {
}
public int b() throws IOException {
return this.h();
}
public long c() throws IOException {
long l2 = this.g();
long l3 = this.g();
long l4 = this.g();
long l5 = this.g();
return (l2 << 48) + (l3 << 32) + (l4 << 16) + l5;
}
public void a(int n2, int n3, byte[] byArray) throws IOException {
}
public int d() throws IOException {
return 0;
}
/*
* Unable to fully structure code
*/
public int a(byte[] var1_1) {
block21: {
var3_2 = q.d;
try {
block27: {
block26: {
block24: {
block25: {
block22: {
block23: {
++this.b;
v0 = this.c;
if (!var3_2) {
if (v0 > 0) {
v0 = this.b;
if (!var3_2) {
if (v0 > this.c) {
this.y = true;
this.C = w.E;
this.c += this.c;
return 0;
} else {
** GOTO lbl-1000
}
}
} else lbl-1000:
// 3 sources
{
v0 = this.a;
}
}
if (var3_2) break block22;
if (v0 != 0) break block23;
v0 = this.d();
if (var3_2) break block22;
if (v0 < 2) break block23;
v0 = this.a = this.h();
if (var3_2) break block22;
if (v0 >= 160) {
this.a = (this.a - 160) * 256 + this.h();
}
}
v0 = this.a;
}
if (!var3_2) {
if (v0 <= 0) break block21;
v0 = this.d();
}
v1 = this.a;
if (!var3_2) {
if (v0 < v1) break block21;
v0 = this.a;
v1 = 160;
}
if (var3_2) break block24;
if (v0 < v1) break block25;
this.a(this.a, var1_1);
if (!var3_2) break block26;
}
var1_1[this.a - 1] = (byte)this.h();
v0 = this.a;
if (var3_2) break block27;
v1 = 1;
}
if (v0 > v1) {
this.a(this.a - 1, var1_1);
}
}
v0 = this.a;
}
var2_3 = v0;
this.a = 0;
this.b = 0;
return var2_3;
}
catch (IOException var2_4) {
this.y = true;
this.C = var2_4.getMessage();
}
}
return 0;
}
public void a(int n2) {
this.g[this.e++] = (byte)(n2 >> 8);
this.g[this.e++] = (byte)n2;
}
public void b(int n2) {
this.g[this.e++] = (byte)n2;
}
public void c(int n2) {
this.g[this.e++] = (byte)(n2 >> 24);
this.g[this.e++] = (byte)(n2 >> 16);
this.g[this.e++] = (byte)(n2 >> 8);
this.g[this.e++] = (byte)n2;
}
public void a(byte[] byArray, int n2, int n3) {
for (int i2 = 0; i2 < n3; ++i2) {
this.g[this.e++] = byArray[n2 + i2];
if (!q.d) continue;
}
}
public int d(int n2) {
return n2 - this.u.a() & 0xFF;
}
public boolean e() {
boolean bl = this.d;
if (!q.d) {
bl = bl > false;
}
return bl;
}
public void f() {
boolean bl;
block11: {
block9: {
int n2;
block10: {
bl = q.d;
w w2 = this;
if (!bl) {
if (w2.v != null) {
n2 = this.g[this.d + 2] & 0xFF;
this.g[this.d + 2] = (byte)(n2 + this.v.a());
}
w2 = this;
}
int n3 = w2.f;
int n4 = 8;
if (!bl) {
if (n3 != n4) {
++this.e;
}
n3 = this.e - this.d;
n4 = 2;
}
n2 = n3 - n4;
if (bl) break block9;
if (n2 < 160) break block10;
this.g[this.d] = (byte)(160 + n2 / 256);
this.g[this.d + 1] = (byte)(n2 & 0xFF);
if (!bl) break block11;
}
this.g[this.d] = (byte)n2;
--this.e;
}
this.g[this.d + 1] = this.g[this.e];
}
w w3 = this;
if (!bl) {
if (w3.A <= 10000) {
int n5;
int n6 = n5 = this.g[this.d + 2] & 0xFF;
x[n6] = x[n6] + 1;
int n7 = n5;
z[n7] = z[n7] + (this.e - this.d);
}
w3 = this;
}
w3.d = this.e;
}
public void a(long l2) {
this.c((int)(l2 >> 32));
this.c((int)(l2 & 0xFFFFFFFFFFFFFFFFL));
}
public int g() throws IOException {
int n2 = this.b();
int n3 = this.b();
return n2 * 256 + n3;
}
public void a(int n2, byte[] byArray) throws IOException {
this.a(n2, 0, byArray);
}
public void e(int n2) {
boolean bl = q.d;
w w2 = this;
if (!bl) {
if (w2.d > this.A * 4 / 5) {
try {
this.f(0);
}
catch (IOException iOException) {
this.y = true;
this.C = iOException.getMessage();
}
}
w2 = this;
}
byte[] byArray = w2.g;
if (!bl) {
if (byArray == null) {
this.g = new byte[this.A];
}
this.g[this.d + 2] = (byte)n2;
byArray = this.g;
}
byArray[this.d + 3] = 0;
this.e = this.d + 3;
this.f = 8;
}
public void a(String string) {
string.getBytes(0, string.length(), this.g, this.e);
this.e += string.length();
}
public void f(int n2) throws IOException {
block8: {
w w2;
int n3;
block7: {
boolean bl = q.d;
n3 = this.y;
if (!bl) {
if (n3 != 0) {
this.d = 0;
this.e = 3;
this.y = false;
throw new IOException(this.C);
}
n3 = ++this.B;
}
if (bl) break block7;
if (n3 < n2) {
return;
}
w2 = this;
if (bl) break block8;
n3 = w2.d;
}
if (n3 > 0) {
this.B = 0;
this.b(this.g, 0, this.d);
}
this.d = 0;
w2 = this;
}
w2.e = 3;
}
public void b(byte[] byArray, int n2, int n3) throws IOException {
}
public int h() throws IOException {
return 0;
}
public void i() throws IOException {
this.f();
this.f(0);
}
public w() {
boolean bl = false;
this.e = 3;
this.f = 8;
this.y = false;
this.A = 5000;
this.C = "";
}
/*
* Handled impossible loop by duplicating code
* Enabled aggressive block sorting
*/
static {
char[] cArray;
block12: {
int n2;
int n3;
char[] cArray2;
int n4;
block11: {
Object var1 = null;
char[] cArray3 = "!uwy\u0010:in".toCharArray();
n4 = 0;
int n5 = cArray3.length;
cArray2 = cArray3;
n3 = n5;
if (n5 <= 1) break block11;
cArray = cArray2;
n2 = n3;
if (n3 <= n4) break block12;
}
do {
char[] cArray4 = cArray2;
char[] cArray5 = cArray2;
int n6 = n4;
while (true) {
int n7;
char c2 = cArray4[n6];
switch (n4 % 5) {
case 0: {
n7 = 85;
break;
}
case 1: {
n7 = 28;
break;
}
case 2: {
n7 = 26;
break;
}
case 3: {
n7 = 28;
break;
}
default: {
n7 = 61;
}
}
cArray4[n6] = (char)(c2 ^ n7);
++n4;
cArray2 = cArray5;
n3 = n3;
if (n3 != 0) break;
cArray5 = cArray2;
n2 = n3;
n6 = n3;
cArray4 = cArray2;
}
cArray = cArray2;
n2 = n3;
} while (n3 > n4);
}
E = new String(cArray).intern();
h = new int[]{0, 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191, 16383, Short.MAX_VALUE, 65535, 131071, 262143, 524287, 1048575, 0x1FFFFF, 0x3FFFFF, 0x7FFFFF, 0xFFFFFF, 0x1FFFFFF, 0x3FFFFFF, 0x7FFFFFF, 0xFFFFFFF, 0x1FFFFFFF, 0x3FFFFFFF, Integer.MAX_VALUE, -1};
x = new int[256];
z = new int[256];
w = new char[256];
int n8 = 0;
while (true) {
if (n8 >= 256) {
w.w[61] = 61;
w.w[59] = 59;
w.w[42] = 42;
w.w[43] = 43;
w.w[44] = 44;
w.w[45] = 45;
w.w[46] = 46;
w.w[47] = 47;
w.w[92] = 92;
w.w[124] = 124;
w.w[33] = 33;
w.w[34] = 34;
return;
}
w.w[n8] = (char)n8;
++n8;
}
}
}