SBoT 1.0 decompiled with jad 1.5.8e
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.
This commit is contained in:
@@ -0,0 +1,378 @@
|
||||
// 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: x.java
|
||||
|
||||
import java.io.*;
|
||||
import java.net.Socket;
|
||||
|
||||
public class x extends w
|
||||
implements Runnable
|
||||
{
|
||||
|
||||
public x(Socket socket, a a1)
|
||||
throws IOException
|
||||
{
|
||||
H = false;
|
||||
L = true;
|
||||
G = socket;
|
||||
E = socket.getInputStream();
|
||||
F = socket.getOutputStream();
|
||||
L = false;
|
||||
a1.a(this);
|
||||
}
|
||||
|
||||
public void a()
|
||||
{
|
||||
boolean flag;
|
||||
flag = q.d;
|
||||
super.a();
|
||||
H = true;
|
||||
this;
|
||||
if(flag) goto _L2; else goto _L1
|
||||
_L1:
|
||||
E;
|
||||
JVM INSTR ifnull 31;
|
||||
goto _L3 _L4
|
||||
_L3:
|
||||
E.close();
|
||||
_L4:
|
||||
this;
|
||||
_L2:
|
||||
if(flag) goto _L6; else goto _L5
|
||||
_L5:
|
||||
F;
|
||||
JVM INSTR ifnull 49;
|
||||
goto _L7 _L8
|
||||
_L7:
|
||||
F.close();
|
||||
_L8:
|
||||
this;
|
||||
_L6:
|
||||
G;
|
||||
if(flag) goto _L10; else goto _L9
|
||||
_L9:
|
||||
JVM INSTR ifnull 67;
|
||||
goto _L11 _L12
|
||||
_L12:
|
||||
break MISSING_BLOCK_LABEL_82;
|
||||
_L11:
|
||||
G;
|
||||
_L10:
|
||||
close();
|
||||
break MISSING_BLOCK_LABEL_82;
|
||||
IOException ioexception;
|
||||
ioexception;
|
||||
System.out.println(M[1]);
|
||||
L = true;
|
||||
synchronized(this)
|
||||
{
|
||||
notify();
|
||||
}
|
||||
I = null;
|
||||
return;
|
||||
}
|
||||
|
||||
public int h()
|
||||
throws IOException
|
||||
{
|
||||
H;
|
||||
if(q.d) goto _L2; else goto _L1
|
||||
_L1:
|
||||
if(H)
|
||||
return 0;
|
||||
E.read();
|
||||
_L2:
|
||||
return;
|
||||
}
|
||||
|
||||
public int d()
|
||||
throws IOException
|
||||
{
|
||||
H;
|
||||
if(q.d) goto _L2; else goto _L1
|
||||
_L1:
|
||||
if(H)
|
||||
return 0;
|
||||
E.available();
|
||||
_L2:
|
||||
return;
|
||||
}
|
||||
|
||||
public void a(int i, int j, byte abyte0[])
|
||||
throws IOException
|
||||
{
|
||||
boolean flag1 = q.d;
|
||||
H;
|
||||
if(flag1) goto _L2; else goto _L1
|
||||
_L1:
|
||||
if(H)
|
||||
return;
|
||||
false;
|
||||
_L2:
|
||||
int k;
|
||||
k;
|
||||
boolean flag = false;
|
||||
_L8:
|
||||
if(k >= i)
|
||||
break; /* Loop/switch isn't completed */
|
||||
int l = E.read(abyte0, k + j, i - k);
|
||||
if(flag1) goto _L4; else goto _L3
|
||||
_L3:
|
||||
JVM INSTR ifgt 70;
|
||||
goto _L5 _L6
|
||||
_L5:
|
||||
break MISSING_BLOCK_LABEL_57;
|
||||
_L6:
|
||||
break MISSING_BLOCK_LABEL_70;
|
||||
throw new IOException(M[0]);
|
||||
k + l;
|
||||
_L4:
|
||||
k;
|
||||
if(!flag1) goto _L8; else goto _L7
|
||||
_L7:
|
||||
}
|
||||
|
||||
public void b(byte abyte0[], int i, int j)
|
||||
throws IOException
|
||||
{
|
||||
boolean flag = q.d;
|
||||
this;
|
||||
if(flag) goto _L2; else goto _L1
|
||||
_L1:
|
||||
H;
|
||||
JVM INSTR ifeq 18;
|
||||
goto _L3 _L4
|
||||
_L3:
|
||||
break MISSING_BLOCK_LABEL_17;
|
||||
_L4:
|
||||
break MISSING_BLOCK_LABEL_18;
|
||||
return;
|
||||
this;
|
||||
_L2:
|
||||
if(flag) goto _L6; else goto _L5
|
||||
_L5:
|
||||
I;
|
||||
JVM INSTR ifnonnull 39;
|
||||
goto _L7 _L8
|
||||
_L7:
|
||||
break MISSING_BLOCK_LABEL_30;
|
||||
_L8:
|
||||
break MISSING_BLOCK_LABEL_39;
|
||||
I = new byte[5000];
|
||||
this;
|
||||
_L6:
|
||||
JVM INSTR dup ;
|
||||
x x1;
|
||||
x1;
|
||||
JVM INSTR monitorenter ;
|
||||
int k = 0;
|
||||
_L14:
|
||||
if(k >= j)
|
||||
break; /* Loop/switch isn't completed */
|
||||
I[K] = abyte0[k + i];
|
||||
K = (K + 1) % 5000;
|
||||
if(flag)
|
||||
continue; /* Loop/switch isn't completed */
|
||||
this;
|
||||
if(flag) goto _L10; else goto _L9
|
||||
_L9:
|
||||
K;
|
||||
(J + 4900) % 5000;
|
||||
JVM INSTR icmpne 124;
|
||||
goto _L11 _L12
|
||||
_L11:
|
||||
throw new IOException(M[3]);
|
||||
_L12:
|
||||
k++;
|
||||
if(!flag) goto _L14; else goto _L13
|
||||
_L13:
|
||||
notify();
|
||||
x1;
|
||||
_L10:
|
||||
JVM INSTR monitorexit ;
|
||||
goto _L15
|
||||
Exception exception;
|
||||
exception;
|
||||
throw exception;
|
||||
_L15:
|
||||
}
|
||||
|
||||
public void run()
|
||||
{
|
||||
boolean flag1;
|
||||
flag1 = q.d;
|
||||
boolean flag = false;
|
||||
_L15:
|
||||
if(L)
|
||||
break; /* Loop/switch isn't completed */
|
||||
x x1 = this;
|
||||
JVM INSTR monitorenter ;
|
||||
K;
|
||||
if(flag1) goto _L2; else goto _L1
|
||||
_L1:
|
||||
J;
|
||||
JVM INSTR icmpne 44;
|
||||
goto _L3 _L4
|
||||
_L3:
|
||||
wait();
|
||||
goto _L4
|
||||
InterruptedException interruptedexception;
|
||||
interruptedexception;
|
||||
_L4:
|
||||
L;
|
||||
_L2:
|
||||
if(flag1) goto _L6; else goto _L5
|
||||
_L5:
|
||||
JVM INSTR ifeq 60;
|
||||
goto _L7 _L8
|
||||
_L7:
|
||||
return;
|
||||
_L8:
|
||||
J;
|
||||
_L6:
|
||||
int j;
|
||||
j;
|
||||
K;
|
||||
J;
|
||||
if(flag1) goto _L10; else goto _L9
|
||||
_L9:
|
||||
JVM INSTR icmplt 96;
|
||||
goto _L11 _L12
|
||||
_L11:
|
||||
int i = K - J;
|
||||
if(!flag1) goto _L13; else goto _L12
|
||||
_L12:
|
||||
'\u1388';
|
||||
J;
|
||||
_L10:
|
||||
JVM INSTR isub ;
|
||||
i;
|
||||
goto _L13
|
||||
Exception exception;
|
||||
exception;
|
||||
throw exception;
|
||||
_L13:
|
||||
if(i <= 0) goto _L15; else goto _L14
|
||||
_L14:
|
||||
try
|
||||
{
|
||||
F.write(I, j, i);
|
||||
}
|
||||
catch(IOException ioexception)
|
||||
{
|
||||
super.y = true;
|
||||
super.C = M[2] + ioexception;
|
||||
}
|
||||
J = (J + i) % 5000;
|
||||
this;
|
||||
if(flag1) goto _L17; else goto _L16
|
||||
_L16:
|
||||
K;
|
||||
J;
|
||||
JVM INSTR icmpne 210;
|
||||
goto _L18 _L15
|
||||
_L18:
|
||||
this;
|
||||
_L17:
|
||||
F;
|
||||
flush();
|
||||
goto _L15
|
||||
IOException ioexception1;
|
||||
ioexception1;
|
||||
super.y = true;
|
||||
super.C = M[2] + ioexception1;
|
||||
if(!flag1) goto _L15; else goto _L19
|
||||
_L19:
|
||||
}
|
||||
|
||||
private InputStream E;
|
||||
private OutputStream F;
|
||||
private Socket G;
|
||||
private boolean H;
|
||||
private byte I[];
|
||||
private int J;
|
||||
private int K;
|
||||
private boolean L;
|
||||
private static String M[];
|
||||
|
||||
static
|
||||
{
|
||||
String as[];
|
||||
as = new String[4];
|
||||
as[0] = "\005\023|";
|
||||
as[1] = "\005.H3y`?V3x)2]|x4._=f";
|
||||
as[2] = "\024+H5\177%.\0";
|
||||
as[3] = "\")\\:n2|U*n2:V3|";
|
||||
M = as;
|
||||
break MISSING_BLOCK_LABEL_155;
|
||||
local;
|
||||
toCharArray();
|
||||
JVM INSTR dup ;
|
||||
JVM INSTR arraylength .length;
|
||||
JVM INSTR swap ;
|
||||
int i = 0;
|
||||
JVM INSTR swap ;
|
||||
JVM INSTR dup_x1 ;
|
||||
1;
|
||||
JVM INSTR icmpgt 134;
|
||||
goto _L1 _L2
|
||||
_L1:
|
||||
JVM INSTR dup ;
|
||||
i;
|
||||
_L4:
|
||||
JVM INSTR dup2 ;
|
||||
JVM INSTR caload ;
|
||||
byte byte0;
|
||||
switch(i % 5)
|
||||
{
|
||||
case 0: // '\0'
|
||||
byte0 = 0x40;
|
||||
break;
|
||||
|
||||
case 1: // '\001'
|
||||
byte0 = 92;
|
||||
break;
|
||||
|
||||
case 2: // '\002'
|
||||
byte0 = 58;
|
||||
break;
|
||||
|
||||
case 3: // '\003'
|
||||
byte0 = 92;
|
||||
break;
|
||||
|
||||
default:
|
||||
byte0 = 11;
|
||||
break;
|
||||
}
|
||||
byte0;
|
||||
JVM INSTR ixor ;
|
||||
(char);
|
||||
JVM INSTR castore ;
|
||||
i++;
|
||||
JVM INSTR swap ;
|
||||
JVM INSTR dup_x1 ;
|
||||
JVM INSTR ifne 134;
|
||||
goto _L3 _L2
|
||||
_L3:
|
||||
JVM INSTR dup2 ;
|
||||
JVM INSTR swap ;
|
||||
goto _L4
|
||||
_L2:
|
||||
JVM INSTR swap ;
|
||||
JVM INSTR dup_x1 ;
|
||||
i;
|
||||
JVM INSTR icmpgt 57;
|
||||
goto _L5 _L1
|
||||
_L5:
|
||||
JVM INSTR new #157 <Class String>;
|
||||
JVM INSTR dup_x1 ;
|
||||
JVM INSTR swap ;
|
||||
String();
|
||||
intern();
|
||||
JVM INSTR swap ;
|
||||
JVM INSTR pop ;
|
||||
JVM INSTR ret 0;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user