Same SBoT.jar, decompiled with jad instead of CFR for comparison -- jad is the same decompiler the community used on RSC client dumps back in 2004 (see DeobedMC201.rar). A few methods didn't fully resolve (jad is much less capable than CFR on complex control flow); those are marked inline where jad gave up.
541 lines
10 KiB
Java
541 lines
10 KiB
Java
// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov.
|
|
// Jad home page: http://www.geocities.com/kpdus/jad.html
|
|
// Decompiler options: packimports(3)
|
|
// Source File Name: w.java
|
|
|
|
import java.io.IOException;
|
|
|
|
public class w
|
|
{
|
|
|
|
public void a(int ai[])
|
|
{
|
|
u = new m(ai);
|
|
v = new m(ai);
|
|
}
|
|
|
|
public void a()
|
|
{
|
|
}
|
|
|
|
public int b()
|
|
throws IOException
|
|
{
|
|
return h();
|
|
}
|
|
|
|
public long c()
|
|
throws IOException
|
|
{
|
|
long l1 = g();
|
|
long l2 = g();
|
|
long l3 = g();
|
|
long l4 = g();
|
|
return (l1 << 48) + (l2 << 32) + (l3 << 16) + l4;
|
|
}
|
|
|
|
public void a(int i1, int j1, byte abyte0[])
|
|
throws IOException
|
|
{
|
|
}
|
|
|
|
public int d()
|
|
throws IOException
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
public int a(byte abyte0[])
|
|
{
|
|
boolean flag = q.d;
|
|
b++;
|
|
c;
|
|
if(flag) goto _L2; else goto _L1
|
|
_L1:
|
|
if(c <= 0) goto _L4; else goto _L3
|
|
_L3:
|
|
b;
|
|
if(flag) goto _L2; else goto _L5
|
|
_L5:
|
|
c;
|
|
JVM INSTR icmple 67;
|
|
goto _L6 _L4
|
|
_L6:
|
|
y = true;
|
|
C = E;
|
|
c += c;
|
|
return 0;
|
|
_L4:
|
|
a;
|
|
_L2:
|
|
if(flag) goto _L8; else goto _L7
|
|
_L7:
|
|
JVM INSTR ifne 133;
|
|
goto _L9 _L10
|
|
_L9:
|
|
d();
|
|
if(flag) goto _L8; else goto _L11
|
|
_L11:
|
|
2;
|
|
JVM INSTR icmplt 133;
|
|
goto _L12 _L10
|
|
_L12:
|
|
a = h();
|
|
a;
|
|
if(flag) goto _L8; else goto _L13
|
|
_L13:
|
|
160;
|
|
JVM INSTR icmplt 133;
|
|
goto _L14 _L10
|
|
_L14:
|
|
a = (a - 160) * 256 + h();
|
|
_L10:
|
|
a;
|
|
_L8:
|
|
if(flag) goto _L16; else goto _L15
|
|
_L15:
|
|
JVM INSTR ifle 239;
|
|
goto _L17 _L18
|
|
_L18:
|
|
break MISSING_BLOCK_LABEL_256;
|
|
_L17:
|
|
d();
|
|
_L16:
|
|
a;
|
|
if(flag) goto _L20; else goto _L19
|
|
_L19:
|
|
JVM INSTR icmplt 239;
|
|
goto _L21 _L22
|
|
_L22:
|
|
break MISSING_BLOCK_LABEL_256;
|
|
_L21:
|
|
a;
|
|
'\240';
|
|
_L20:
|
|
if(flag) goto _L24; else goto _L23
|
|
_L23:
|
|
JVM INSTR icmplt 186;
|
|
goto _L25 _L26
|
|
_L25:
|
|
a(a, abyte0);
|
|
if(!flag) goto _L27; else goto _L26
|
|
_L26:
|
|
abyte0[a - 1] = (byte)h();
|
|
a;
|
|
if(flag) goto _L29; else goto _L28
|
|
_L28:
|
|
true;
|
|
_L24:
|
|
JVM INSTR icmple 222;
|
|
goto _L30 _L27
|
|
_L30:
|
|
a(a - 1, abyte0);
|
|
_L27:
|
|
a;
|
|
_L29:
|
|
int i1;
|
|
i1;
|
|
a = 0;
|
|
b = 0;
|
|
return i1;
|
|
IOException ioexception;
|
|
ioexception;
|
|
y = true;
|
|
C = ioexception.getMessage();
|
|
return 0;
|
|
}
|
|
|
|
public void a(int i1)
|
|
{
|
|
g[e++] = (byte)(i1 >> 8);
|
|
g[e++] = (byte)i1;
|
|
}
|
|
|
|
public void b(int i1)
|
|
{
|
|
g[e++] = (byte)i1;
|
|
}
|
|
|
|
public void c(int i1)
|
|
{
|
|
g[e++] = (byte)(i1 >> 24);
|
|
g[e++] = (byte)(i1 >> 16);
|
|
g[e++] = (byte)(i1 >> 8);
|
|
g[e++] = (byte)i1;
|
|
}
|
|
|
|
public void a(byte abyte0[], int i1, int j1)
|
|
{
|
|
int k1 = 0;
|
|
do
|
|
{
|
|
if(k1 >= j1)
|
|
break;
|
|
g[e++] = abyte0[i1 + k1];
|
|
k1++;
|
|
} while(!q.d);
|
|
}
|
|
|
|
public int d(int i1)
|
|
{
|
|
return i1 - u.a() & 0xff;
|
|
}
|
|
|
|
public boolean e()
|
|
{
|
|
d;
|
|
if(q.d) goto _L2; else goto _L1
|
|
_L1:
|
|
d > 0;
|
|
_L2:
|
|
return;
|
|
}
|
|
|
|
public void f()
|
|
{
|
|
boolean flag = q.d;
|
|
this;
|
|
if(flag) goto _L2; else goto _L1
|
|
_L1:
|
|
v;
|
|
JVM INSTR ifnull 52;
|
|
goto _L3 _L4
|
|
_L3:
|
|
break MISSING_BLOCK_LABEL_15;
|
|
_L4:
|
|
break MISSING_BLOCK_LABEL_52;
|
|
int i1 = g[d + 2] & 0xff;
|
|
g[d + 2] = (byte)(i1 + v.a());
|
|
this;
|
|
_L2:
|
|
f;
|
|
8;
|
|
if(flag) goto _L6; else goto _L5
|
|
_L5:
|
|
JVM INSTR icmpeq 75;
|
|
goto _L7 _L8
|
|
_L7:
|
|
break MISSING_BLOCK_LABEL_65;
|
|
_L8:
|
|
break MISSING_BLOCK_LABEL_75;
|
|
e++;
|
|
e - d;
|
|
2;
|
|
_L6:
|
|
JVM INSTR isub ;
|
|
int j1;
|
|
j1;
|
|
label0:
|
|
{
|
|
if(!flag)
|
|
{
|
|
if(j1 >= 160)
|
|
{
|
|
g[d] = (byte)(160 + j1 / 256);
|
|
g[d + 1] = (byte)(j1 & 0xff);
|
|
if(!flag)
|
|
break label0;
|
|
}
|
|
g[d] = (byte)j1;
|
|
e--;
|
|
}
|
|
g[d + 1] = g[e];
|
|
}
|
|
this;
|
|
if(flag) goto _L10; else goto _L9
|
|
_L9:
|
|
A;
|
|
10000;
|
|
JVM INSTR icmpgt 235;
|
|
goto _L11 _L12
|
|
_L11:
|
|
break MISSING_BLOCK_LABEL_193;
|
|
_L12:
|
|
break MISSING_BLOCK_LABEL_235;
|
|
int k1 = g[d + 2] & 0xff;
|
|
x[k1]++;
|
|
z[k1] += e - d;
|
|
this;
|
|
_L10:
|
|
e;
|
|
d;
|
|
}
|
|
|
|
public void a(long l1)
|
|
{
|
|
c((int)(l1 >> 32));
|
|
c((int)(l1 & -1L));
|
|
}
|
|
|
|
public int g()
|
|
throws IOException
|
|
{
|
|
int i1 = b();
|
|
int j1 = b();
|
|
return i1 * 256 + j1;
|
|
}
|
|
|
|
public void a(int i1, byte abyte0[])
|
|
throws IOException
|
|
{
|
|
a(i1, 0, abyte0);
|
|
}
|
|
|
|
public void e(int i1)
|
|
{
|
|
boolean flag = q.d;
|
|
this;
|
|
if(flag) goto _L2; else goto _L1
|
|
_L1:
|
|
d;
|
|
(A * 4) / 5;
|
|
JVM INSTR icmple 45;
|
|
goto _L3 _L4
|
|
_L3:
|
|
break MISSING_BLOCK_LABEL_23;
|
|
_L4:
|
|
break MISSING_BLOCK_LABEL_45;
|
|
try
|
|
{
|
|
f(0);
|
|
}
|
|
catch(IOException ioexception)
|
|
{
|
|
y = true;
|
|
C = ioexception.getMessage();
|
|
}
|
|
this;
|
|
_L2:
|
|
g;
|
|
if(flag) goto _L6; else goto _L5
|
|
_L5:
|
|
JVM INSTR ifnonnull 66;
|
|
goto _L7 _L8
|
|
_L7:
|
|
break MISSING_BLOCK_LABEL_56;
|
|
_L8:
|
|
break MISSING_BLOCK_LABEL_66;
|
|
g = new byte[A];
|
|
g[d + 2] = (byte)i1;
|
|
g;
|
|
_L6:
|
|
d + 3;
|
|
0;
|
|
JVM INSTR bastore ;
|
|
e = d + 3;
|
|
f = 8;
|
|
return;
|
|
}
|
|
|
|
public void a(String s1)
|
|
{
|
|
s1.getBytes(0, s1.length(), g, e);
|
|
e += s1.length();
|
|
}
|
|
|
|
public void f(int i1)
|
|
throws IOException
|
|
{
|
|
boolean flag = q.d;
|
|
y;
|
|
if(flag) goto _L2; else goto _L1
|
|
_L1:
|
|
if(y)
|
|
{
|
|
d = 0;
|
|
e = 3;
|
|
y = false;
|
|
throw new IOException(C);
|
|
}
|
|
B++;
|
|
B;
|
|
_L2:
|
|
if(flag) goto _L4; else goto _L3
|
|
_L3:
|
|
i1;
|
|
JVM INSTR icmpge 65;
|
|
goto _L5 _L6
|
|
_L5:
|
|
break MISSING_BLOCK_LABEL_64;
|
|
_L6:
|
|
break MISSING_BLOCK_LABEL_65;
|
|
return;
|
|
this;
|
|
if(flag) goto _L8; else goto _L7
|
|
_L7:
|
|
d;
|
|
_L4:
|
|
JVM INSTR ifle 94;
|
|
goto _L9 _L10
|
|
_L9:
|
|
break MISSING_BLOCK_LABEL_76;
|
|
_L10:
|
|
break MISSING_BLOCK_LABEL_94;
|
|
B = 0;
|
|
b(g, 0, d);
|
|
d = 0;
|
|
this;
|
|
_L8:
|
|
3;
|
|
e;
|
|
}
|
|
|
|
public void b(byte abyte0[], int i1, int j1)
|
|
throws IOException
|
|
{
|
|
}
|
|
|
|
public int h()
|
|
throws IOException
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
public void i()
|
|
throws IOException
|
|
{
|
|
f();
|
|
f(0);
|
|
}
|
|
|
|
public w()
|
|
{
|
|
boolean flag = false;
|
|
e = 3;
|
|
f = 8;
|
|
y = false;
|
|
A = 5000;
|
|
C = "";
|
|
}
|
|
|
|
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;
|
|
|
|
static
|
|
{
|
|
E = "!uwy\020:in";
|
|
break MISSING_BLOCK_LABEL_123;
|
|
local;
|
|
toCharArray();
|
|
JVM INSTR dup ;
|
|
JVM INSTR arraylength .length;
|
|
JVM INSTR swap ;
|
|
int j1 = 0;
|
|
JVM INSTR swap ;
|
|
JVM INSTR dup_x1 ;
|
|
1;
|
|
JVM INSTR icmpgt 102;
|
|
goto _L1 _L2
|
|
_L1:
|
|
JVM INSTR dup ;
|
|
j1;
|
|
_L4:
|
|
JVM INSTR dup2 ;
|
|
JVM INSTR caload ;
|
|
byte byte0;
|
|
switch(j1 % 5)
|
|
{
|
|
case 0: // '\0'
|
|
byte0 = 0x55;
|
|
break;
|
|
|
|
case 1: // '\001'
|
|
byte0 = 28;
|
|
break;
|
|
|
|
case 2: // '\002'
|
|
byte0 = 26;
|
|
break;
|
|
|
|
case 3: // '\003'
|
|
byte0 = 28;
|
|
break;
|
|
|
|
default:
|
|
byte0 = 61;
|
|
break;
|
|
}
|
|
byte0;
|
|
JVM INSTR ixor ;
|
|
(char);
|
|
JVM INSTR castore ;
|
|
j1++;
|
|
JVM INSTR swap ;
|
|
JVM INSTR dup_x1 ;
|
|
JVM INSTR ifne 102;
|
|
goto _L3 _L2
|
|
_L3:
|
|
JVM INSTR dup2 ;
|
|
JVM INSTR swap ;
|
|
goto _L4
|
|
_L2:
|
|
JVM INSTR swap ;
|
|
JVM INSTR dup_x1 ;
|
|
j1;
|
|
JVM INSTR icmpgt 26;
|
|
goto _L5 _L1
|
|
_L5:
|
|
JVM INSTR new #169 <Class String>;
|
|
JVM INSTR dup_x1 ;
|
|
JVM INSTR swap ;
|
|
String();
|
|
intern();
|
|
JVM INSTR swap ;
|
|
JVM INSTR pop ;
|
|
JVM INSTR ret 1;
|
|
h = (new int[] {
|
|
0, 1, 3, 7, 15, 31, 63, 127, 255, 511,
|
|
1023, 2047, 4095, 8191, 16383, 32767, 65535, 0x1ffff, 0x3ffff, 0x7ffff,
|
|
0xfffff, 0x1fffff, 0x3fffff, 0x7fffff, 0xffffff, 0x1ffffff, 0x3ffffff, 0x7ffffff, 0xfffffff, 0x1fffffff,
|
|
0x3fffffff, 0x7fffffff, -1
|
|
});
|
|
x = new int[256];
|
|
z = new int[256];
|
|
w = new char[256];
|
|
for(int i1 = 0; i1 < 256; i1++)
|
|
w[i1] = (char)i1;
|
|
|
|
w[61] = '=';
|
|
w[59] = ';';
|
|
w[42] = '*';
|
|
w[43] = '+';
|
|
w[44] = ',';
|
|
w[45] = '-';
|
|
w[46] = '.';
|
|
w[47] = '/';
|
|
w[92] = '\\';
|
|
w[124] = '|';
|
|
w[33] = '!';
|
|
w[34] = '"';
|
|
}
|
|
}
|