// Decompiled by JEB v0.9.0 alpha
public static int lzss_decompress(byte[] arg12, byte[] arg13) {
int v9 = -1;
int v2 = 0;
int v4 = 0;
int v1 = 0;
int v0 = 7;
while(v4 < arg13.length) {
++v0;
if(v0 == 8) {
if(v2 < arg12.length) {
v1 = arg12[v2] & 0xFF;
v0 = 0;
++v2;
}
else {
break;
}
}
if((v1 & 1) != 0) {
if(v2 + 1 < arg12.length) {
int v8 = arg12[v2] & 0xFF | (arg12[v2 + 1] & 0xFF) << 8;
v2 += 2;
int v7 = (v8 >> 4) + 1;
int v6 = (v8 & 0xF) + 3;
if(v7 > v4) {
v4 = v9;
break;
}
else if(arg13.length - v4 < v6) {
v4 = v9;
break;
}
else {
int v5 = 0;
while(v5 < v6) {
arg13[v4 + v5] = arg13[v4 + v5 - v7];
++v5;
}
v4 += v6;
}
}
else {
v4 = v9;
break;
}
}
else if(v2 < arg12.length) {
arg13[v4] = arg12[v2];
++v4;
++v2;
}
else {
break;
}
v1 >>= 1;
}
return v4;
} |
// Decompiled by Jad v1.5.8g
public static int lzss_decompress(byte abyte0[], byte abyte1[])
{
int i;
int j;
int k;
int l;
i = 0;
j = 0;
k = 0;
l = 7;
_L7:
if(j < abyte1.length) goto _L2; else goto _L1
_L1:
return j;
_L2:
if(++l != 8)
break MISSING_BLOCK_LABEL_55;
if(i >= abyte0.length) goto _L1; else goto _L3
_L3:
int i2 = i + 1;
k = 0xff & abyte0[i];
l = 0;
i = i2;
if((k & 1) != 0) goto _L5; else goto _L4
_L4:
if(i >= abyte0.length) goto _L1; else goto _L6
_L6:
abyte1[j] = abyte0[i];
j++;
i++;
_L8:
k >>= 1;
goto _L7
_L5:
int j1;
int k1;
if(i + 1 >= abyte0.length)
{
j = -1;
} else
{
int i1 = 0xff & abyte0[i] | (0xff & abyte0[i + 1]) << 8;
i += 2;
j1 = 1 + (i1 >> 4);
k1 = 3 + (i1 & 0xf);
if(j1 > j)
{
j = -1;
} else
{
label0:
{
if(abyte1.length - j >= k1)
break label0;
j = -1;
}
}
}
goto _L1
int l1 = 0;
_L9:
label1:
{
if(l1 < k1)
break label1;
j += k1;
}
goto _L8
abyte1[j + l1] = abyte1[(j + l1) - j1];
l1++;
goto _L9
}
|