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.
This commit is contained in:
@@ -0,0 +1,433 @@
|
||||
/*
|
||||
* 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user