Files
sbot_archive/w.java
T
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;
}
}
}