mirror of
https://gitlab.com/2009scape/rt4-client.git
synced 2026-08-01 14:39:16 -06:00
38 lines
1.3 KiB
Java
38 lines
1.3 KiB
Java
import org.openrs2.deob.annotation.OriginalArg;
|
|
import org.openrs2.deob.annotation.OriginalMember;
|
|
import org.openrs2.deob.annotation.Pc;
|
|
|
|
public final class Js5Compression {
|
|
|
|
@OriginalMember(owner = "client!mf", name = "x", descriptor = "Lclient!ha;")
|
|
public static final GzipDecompressor GZIP_DECOMPRESSOR = new GzipDecompressor();
|
|
|
|
@OriginalMember(owner = "client!kf", name = "j", descriptor = "I")
|
|
public static final int MAX_LENGTH = 0;
|
|
|
|
@OriginalMember(owner = "client!ml", name = "a", descriptor = "(B[B)[B")
|
|
public static byte[] uncompress(@OriginalArg(1) byte[] in) {
|
|
@Pc(17) Buffer buffer = new Buffer(in);
|
|
@Pc(21) int type = buffer.g1();
|
|
@Pc(25) int len = buffer.g4();
|
|
if (len < 0 || MAX_LENGTH != 0 && MAX_LENGTH < len) {
|
|
throw new RuntimeException();
|
|
} else if (type == 0) {
|
|
@Pc(53) byte[] bytes = new byte[len];
|
|
buffer.gBytes(len, bytes);
|
|
return bytes;
|
|
} else {
|
|
@Pc(65) int uncompressedLen = buffer.g4();
|
|
if (uncompressedLen < 0 || MAX_LENGTH != 0 && MAX_LENGTH < uncompressedLen) {
|
|
throw new RuntimeException();
|
|
}
|
|
@Pc(85) byte[] out = new byte[uncompressedLen];
|
|
if (type == 1) {
|
|
Bzip2Decompressor.bunzip2(out, uncompressedLen, in, len);
|
|
} else {
|
|
GZIP_DECOMPRESSOR.method1842(out, buffer);
|
|
}
|
|
return out;
|
|
}
|
|
}
|
|
}
|