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,264 @@
|
||||
// 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: m.java
|
||||
|
||||
|
||||
public final class m
|
||||
{
|
||||
|
||||
public m(int ai[])
|
||||
{
|
||||
label0:
|
||||
{
|
||||
boolean flag = q.d;
|
||||
super();
|
||||
c = new int[256];
|
||||
b = new int[256];
|
||||
int i = 0;
|
||||
do
|
||||
{
|
||||
if(i >= ai.length)
|
||||
break;
|
||||
b[i] = ai[i];
|
||||
i++;
|
||||
if(flag)
|
||||
break label0;
|
||||
} while(!flag);
|
||||
c();
|
||||
}
|
||||
}
|
||||
|
||||
public final int a()
|
||||
{
|
||||
a--;
|
||||
if(q.d) goto _L2; else goto _L1
|
||||
_L1:
|
||||
JVM INSTR ifne 31;
|
||||
goto _L3 _L4
|
||||
_L3:
|
||||
break MISSING_BLOCK_LABEL_20;
|
||||
_L4:
|
||||
break MISSING_BLOCK_LABEL_31;
|
||||
b();
|
||||
a = 255;
|
||||
b[a];
|
||||
_L2:
|
||||
return;
|
||||
}
|
||||
|
||||
private final void b()
|
||||
{
|
||||
boolean flag1 = q.d;
|
||||
boolean flag = false;
|
||||
e += ++f;
|
||||
int i = 0;
|
||||
do
|
||||
{
|
||||
if(i >= 256)
|
||||
break;
|
||||
int j = c[i];
|
||||
if(!flag1)
|
||||
{
|
||||
switch(i & 3)
|
||||
{
|
||||
default:
|
||||
break;
|
||||
|
||||
case 0: // '\0'
|
||||
d ^= d << 13;
|
||||
if(!flag1)
|
||||
break;
|
||||
// fall through
|
||||
|
||||
case 1: // '\001'
|
||||
d ^= d >>> 6;
|
||||
if(!flag1)
|
||||
break;
|
||||
// fall through
|
||||
|
||||
case 2: // '\002'
|
||||
d ^= d << 2;
|
||||
if(!flag1)
|
||||
break;
|
||||
// fall through
|
||||
|
||||
case 3: // '\003'
|
||||
d ^= d >>> 16;
|
||||
break;
|
||||
}
|
||||
d += c[i + 128 & 0xff];
|
||||
}
|
||||
int k;
|
||||
c[i] = k = c[(j & 0x3fc) >> 2] + d + e;
|
||||
b[i] = e = c[(k >> 8 & 0x3fc) >> 2] + j;
|
||||
i++;
|
||||
} while(!flag1);
|
||||
}
|
||||
|
||||
private final void c()
|
||||
{
|
||||
int i;
|
||||
int j;
|
||||
int k;
|
||||
int l;
|
||||
int i1;
|
||||
int j1;
|
||||
int k1;
|
||||
int l1;
|
||||
int i2;
|
||||
boolean flag1;
|
||||
label0:
|
||||
{
|
||||
flag1 = q.d;
|
||||
boolean flag = false;
|
||||
l1 = i = j = k = l = i1 = j1 = k1 = 0x9e3779b9;
|
||||
i2 = 0;
|
||||
do
|
||||
{
|
||||
if(i2 >= 4)
|
||||
break;
|
||||
l1 ^= i << 11;
|
||||
k += l1;
|
||||
i += j;
|
||||
i ^= j >>> 2;
|
||||
l += i;
|
||||
j += k;
|
||||
j ^= k << 8;
|
||||
i1 += j;
|
||||
k += l;
|
||||
k ^= l >>> 16;
|
||||
j1 += k;
|
||||
l += i1;
|
||||
l ^= i1 << 10;
|
||||
k1 += l;
|
||||
i1 += j1;
|
||||
i1 ^= j1 >>> 4;
|
||||
l1 += i1;
|
||||
j1 += k1;
|
||||
j1 ^= k1 << 8;
|
||||
i += j1;
|
||||
k1 += l1;
|
||||
k1 ^= l1 >>> 9;
|
||||
j += k1;
|
||||
l1 += i;
|
||||
i2++;
|
||||
if(flag1)
|
||||
break label0;
|
||||
} while(!flag1);
|
||||
i2 = 0;
|
||||
}
|
||||
label1:
|
||||
{
|
||||
do
|
||||
{
|
||||
if(i2 >= 256)
|
||||
break;
|
||||
l1 += b[i2];
|
||||
i += b[i2 + 1];
|
||||
j += b[i2 + 2];
|
||||
k += b[i2 + 3];
|
||||
l += b[i2 + 4];
|
||||
i1 += b[i2 + 5];
|
||||
j1 += b[i2 + 6];
|
||||
k1 += b[i2 + 7];
|
||||
l1 ^= i << 11;
|
||||
k += l1;
|
||||
i += j;
|
||||
i ^= j >>> 2;
|
||||
l += i;
|
||||
j += k;
|
||||
j ^= k << 8;
|
||||
i1 += j;
|
||||
k += l;
|
||||
k ^= l >>> 16;
|
||||
j1 += k;
|
||||
l += i1;
|
||||
l ^= i1 << 10;
|
||||
k1 += l;
|
||||
i1 += j1;
|
||||
i1 ^= j1 >>> 4;
|
||||
l1 += i1;
|
||||
j1 += k1;
|
||||
j1 ^= k1 << 8;
|
||||
i += j1;
|
||||
k1 += l1;
|
||||
k1 ^= l1 >>> 9;
|
||||
j += k1;
|
||||
l1 += i;
|
||||
c[i2] = l1;
|
||||
c[i2 + 1] = i;
|
||||
c[i2 + 2] = j;
|
||||
c[i2 + 3] = k;
|
||||
c[i2 + 4] = l;
|
||||
c[i2 + 5] = i1;
|
||||
c[i2 + 6] = j1;
|
||||
c[i2 + 7] = k1;
|
||||
i2 += 8;
|
||||
if(flag1)
|
||||
break label1;
|
||||
} while(!flag1);
|
||||
i2 = 0;
|
||||
}
|
||||
label2:
|
||||
{
|
||||
do
|
||||
{
|
||||
if(i2 >= 256)
|
||||
break;
|
||||
l1 += c[i2];
|
||||
i += c[i2 + 1];
|
||||
j += c[i2 + 2];
|
||||
k += c[i2 + 3];
|
||||
l += c[i2 + 4];
|
||||
i1 += c[i2 + 5];
|
||||
j1 += c[i2 + 6];
|
||||
k1 += c[i2 + 7];
|
||||
l1 ^= i << 11;
|
||||
k += l1;
|
||||
i += j;
|
||||
i ^= j >>> 2;
|
||||
l += i;
|
||||
j += k;
|
||||
j ^= k << 8;
|
||||
i1 += j;
|
||||
k += l;
|
||||
k ^= l >>> 16;
|
||||
j1 += k;
|
||||
l += i1;
|
||||
l ^= i1 << 10;
|
||||
k1 += l;
|
||||
i1 += j1;
|
||||
i1 ^= j1 >>> 4;
|
||||
l1 += i1;
|
||||
j1 += k1;
|
||||
j1 ^= k1 << 8;
|
||||
i += j1;
|
||||
k1 += l1;
|
||||
k1 ^= l1 >>> 9;
|
||||
j += k1;
|
||||
l1 += i;
|
||||
c[i2] = l1;
|
||||
c[i2 + 1] = i;
|
||||
c[i2 + 2] = j;
|
||||
c[i2 + 3] = k;
|
||||
c[i2 + 4] = l;
|
||||
c[i2 + 5] = i1;
|
||||
c[i2 + 6] = j1;
|
||||
c[i2 + 7] = k1;
|
||||
i2 += 8;
|
||||
if(flag1)
|
||||
break label2;
|
||||
} while(!flag1);
|
||||
b();
|
||||
a = 256;
|
||||
}
|
||||
}
|
||||
|
||||
private int a;
|
||||
private int b[];
|
||||
private int c[];
|
||||
private int d;
|
||||
private int e;
|
||||
private int f;
|
||||
}
|
||||
Reference in New Issue
Block a user