import net.runelite.mapping.Export; import net.runelite.mapping.Implements; import net.runelite.mapping.ObfuscatedName; import net.runelite.mapping.ObfuscatedSignature; @ObfuscatedName("ph") @Implements("BZip2Decompressor") public final class BZip2Decompressor { @ObfuscatedName("w") @ObfuscatedSignature( descriptor = "Lpl;" ) @Export("BZip2Decompressor_state") static BZip2State BZip2Decompressor_state; static { BZip2Decompressor_state = new BZip2State(); // L: 13 } @ObfuscatedName("c") @Export("BZip2Decompressor_decompress") public static int BZip2Decompressor_decompress(byte[] var0, int var1, byte[] var2, int var3, int var4) { synchronized(BZip2Decompressor_state) { // L: 20 BZip2Decompressor_state.inputArray = var2; // L: 21 BZip2Decompressor_state.nextByte = var4; // L: 22 BZip2Decompressor_state.outputArray = var0; // L: 23 BZip2Decompressor_state.next_out = 0; // L: 24 BZip2Decompressor_state.outputLength = var1; // L: 25 BZip2Decompressor_state.bsLive = 0; // L: 26 BZip2Decompressor_state.bsBuff = 0; // L: 27 BZip2Decompressor_state.nextBit_unused = 0; // L: 28 BZip2Decompressor_state.field4528 = 0; // L: 29 BZip2Decompressor_decompress(BZip2Decompressor_state); // L: 30 var1 -= BZip2Decompressor_state.outputLength; // L: 31 BZip2Decompressor_state.inputArray = null; // L: 32 BZip2Decompressor_state.outputArray = null; // L: 33 return var1; // L: 34 } } @ObfuscatedName("l") @ObfuscatedSignature( descriptor = "(Lpl;)V" ) static void method7597(BZip2State var0) { byte var2 = var0.out_char; // L: 40 int var3 = var0.su_rNToGo; // L: 41 int var4 = var0.nblocks_used; // L: 42 int var5 = var0.su_ch2; // L: 43 int[] var6 = class118.BZip2Decompressor_block; // L: 44 int var7 = var0.field4534; // L: 45 byte[] var8 = var0.outputArray; // L: 46 int var9 = var0.next_out; // L: 47 int var10 = var0.outputLength; // L: 48 int var12 = var0.field4552 + 1; // L: 50 label70: while (true) { if (var3 > 0) { // L: 53 while (true) { if (var10 == 0) { // L: 55 break label70; } if (var3 == 1) { // L: 56 if (var10 == 0) { // L: 62 var3 = 1; // L: 63 break label70; } var8[var9] = var2; // L: 66 ++var9; // L: 67 --var10; // L: 68 break; } var8[var9] = var2; // L: 57 --var3; // L: 58 ++var9; // L: 59 --var10; // L: 60 } } while (var4 != var12) { // L: 71 var2 = (byte)var5; // L: 75 var7 = var6[var7]; // L: 76 byte var1 = (byte)var7; // L: 77 var7 >>= 8; // L: 78 ++var4; // L: 79 if (var1 != var5) { // L: 80 var5 = var1; // L: 81 if (var10 == 0) { // L: 82 var3 = 1; // L: 83 break label70; // L: 84 } var8[var9] = var2; // L: 86 ++var9; // L: 87 --var10; // L: 88 } else { if (var4 != var12) { // L: 91 var3 = 2; // L: 103 var7 = var6[var7]; // L: 104 var1 = (byte)var7; // L: 105 var7 >>= 8; // L: 106 ++var4; // L: 107 if (var4 != var12) { // L: 108 if (var1 != var5) { // L: 109 var5 = var1; // L: 110 } else { var3 = 3; // L: 113 var7 = var6[var7]; // L: 114 var1 = (byte)var7; // L: 115 var7 >>= 8; // L: 116 ++var4; // L: 117 if (var4 != var12) { // L: 118 if (var1 != var5) { // L: 119 var5 = var1; // L: 120 } else { var7 = var6[var7]; // L: 123 var1 = (byte)var7; // L: 124 var7 >>= 8; // L: 125 ++var4; // L: 126 var3 = (var1 & 255) + 4; // L: 127 var7 = var6[var7]; // L: 128 var5 = (byte)var7; // L: 129 var7 >>= 8; // L: 130 ++var4; // L: 131 } } } } continue label70; } if (var10 == 0) { // L: 92 var3 = 1; // L: 93 break label70; // L: 94 } var8[var9] = var2; // L: 96 ++var9; // L: 97 --var10; // L: 98 } } var3 = 0; // L: 72 break; // L: 73 } int var13 = var0.field4528; // L: 133 var0.field4528 += var10 - var10; // L: 134 if (var0.field4528 < var13) { // L: 135 } var0.out_char = var2; // L: 136 var0.su_rNToGo = var3; // L: 137 var0.nblocks_used = var4; // L: 138 var0.su_ch2 = var5; // L: 139 class118.BZip2Decompressor_block = var6; // L: 140 var0.field4534 = var7; // L: 141 var0.outputArray = var8; // L: 142 var0.next_out = var9; // L: 143 var0.outputLength = var10; // L: 144 } // L: 145 @ObfuscatedName("s") @ObfuscatedSignature( descriptor = "(Lpl;)V" ) @Export("BZip2Decompressor_decompress") static void BZip2Decompressor_decompress(BZip2State var0) { boolean var4 = false; // L: 151 boolean var5 = false; // L: 152 boolean var6 = false; // L: 153 boolean var7 = false; // L: 154 boolean var8 = false; // L: 155 boolean var9 = false; // L: 156 boolean var10 = false; // L: 157 boolean var11 = false; // L: 158 boolean var12 = false; // L: 159 boolean var13 = false; // L: 160 boolean var14 = false; // L: 161 boolean var15 = false; // L: 162 boolean var16 = false; // L: 163 boolean var17 = false; // L: 164 boolean var18 = false; // L: 165 boolean var19 = false; // L: 166 boolean var20 = false; // L: 167 boolean var21 = false; // L: 168 int var22 = 0; // L: 169 int[] var23 = null; // L: 170 int[] var24 = null; // L: 171 int[] var25 = null; // L: 172 var0.blockSize100k = -1811875505; // L: 173 if (class118.BZip2Decompressor_block == null) { // L: 174 class118.BZip2Decompressor_block = new int[var0.blockSize100k * -813226144]; } boolean var26 = true; // L: 175 while (true) { while (var26) { byte var1 = BZip2Decompressor_readNextByte(var0); // L: 177 if (var1 == 23) { // L: 178 return; } var1 = BZip2Decompressor_readNextByte(var0); // L: 179 var1 = BZip2Decompressor_readNextByte(var0); // L: 180 var1 = BZip2Decompressor_readNextByte(var0); // L: 181 var1 = BZip2Decompressor_readNextByte(var0); // L: 182 var1 = BZip2Decompressor_readNextByte(var0); // L: 183 var1 = BZip2Decompressor_readNextByte(var0); // L: 184 var1 = BZip2Decompressor_readNextByte(var0); // L: 185 var1 = BZip2Decompressor_readNextByte(var0); // L: 186 var1 = BZip2Decompressor_readNextByte(var0); // L: 187 var1 = BZip2Decompressor_readNextBit(var0); // L: 188 if (var1 != 0) { // L: 189 } var0.originalPointer = 0; // L: 191 var1 = BZip2Decompressor_readNextByte(var0); // L: 192 var0.originalPointer = var0.originalPointer << 8 | var1 & 255; // L: 193 var1 = BZip2Decompressor_readNextByte(var0); // L: 194 var0.originalPointer = var0.originalPointer << 8 | var1 & 255; // L: 195 var1 = BZip2Decompressor_readNextByte(var0); // L: 196 var0.originalPointer = var0.originalPointer << 8 | var1 & 255; // L: 197 int var36; for (var36 = 0; var36 < 16; ++var36) { // L: 198 var1 = BZip2Decompressor_readNextBit(var0); // L: 199 if (var1 == 1) { // L: 200 var0.inUse16[var36] = true; } else { var0.inUse16[var36] = false; // L: 201 } } for (var36 = 0; var36 < 256; ++var36) { // L: 203 var0.inUse[var36] = false; } int var37; for (var36 = 0; var36 < 16; ++var36) { // L: 204 if (var0.inUse16[var36]) { // L: 205 for (var37 = 0; var37 < 16; ++var37) { // L: 206 var1 = BZip2Decompressor_readNextBit(var0); // L: 207 if (var1 == 1) { // L: 208 var0.inUse[var37 + var36 * 16] = true; } } } } makeMaps(var0); // L: 212 int var39 = var0.nInUse + 2; // L: 213 int var40 = BZip2Decompressor_readBits(3, var0); // L: 214 int var41 = BZip2Decompressor_readBits(15, var0); // L: 215 for (var36 = 0; var36 < var41; ++var36) { // L: 216 var37 = 0; // L: 217 while (true) { var1 = BZip2Decompressor_readNextBit(var0); // L: 219 if (var1 == 0) { // L: 220 var0.selectorMtf[var36] = (byte)var37; // L: 223 break; } ++var37; // L: 221 } } byte[] var27 = new byte[6]; // L: 226 byte var29; for (var29 = 0; var29 < var40; var27[var29] = var29++) { // L: 229 } for (var36 = 0; var36 < var41; ++var36) { // L: 230 var29 = var0.selectorMtf[var36]; // L: 231 byte var28; for (var28 = var27[var29]; var29 > 0; --var29) { // L: 232 233 235 var27[var29] = var27[var29 - 1]; // L: 234 } var27[0] = var28; // L: 237 var0.selector[var36] = var28; // L: 238 } int var38; for (var38 = 0; var38 < var40; ++var38) { // L: 241 int var50 = BZip2Decompressor_readBits(5, var0); // L: 242 for (var36 = 0; var36 < var39; ++var36) { // L: 243 while (true) { var1 = BZip2Decompressor_readNextBit(var0); // L: 245 if (var1 == 0) { // L: 246 var0.temp_charArray2d[var38][var36] = (byte)var50; // L: 251 break; } var1 = BZip2Decompressor_readNextBit(var0); // L: 247 if (var1 == 0) { // L: 248 ++var50; } else { --var50; // L: 249 } } } } for (var38 = 0; var38 < var40; ++var38) { // L: 254 byte var2 = 32; // L: 255 byte var3 = 0; // L: 256 for (var36 = 0; var36 < var39; ++var36) { // L: 257 if (var0.temp_charArray2d[var38][var36] > var3) { // L: 258 var3 = var0.temp_charArray2d[var38][var36]; } if (var0.temp_charArray2d[var38][var36] < var2) { // L: 259 var2 = var0.temp_charArray2d[var38][var36]; } } BZip2Decompressor_createHuffmanTables(var0.limit[var38], var0.base[var38], var0.perm[var38], var0.temp_charArray2d[var38], var2, var3, var39); // L: 261 var0.minLens[var38] = var2; // L: 262 } int var42 = var0.nInUse + 1; // L: 264 int var43 = -1; // L: 265 byte var44 = 0; // L: 266 for (var36 = 0; var36 <= 255; ++var36) { // L: 267 var0.unzftab[var36] = 0; } int var56 = 4095; // L: 272 int var35; int var55; for (var35 = 15; var35 >= 0; --var35) { // L: 273 for (var55 = 15; var55 >= 0; --var55) { // L: 274 var0.ll8[var56] = (byte)(var55 + var35 * 16); // L: 275 --var56; // L: 276 } var0.getAndMoveToFrontDecode_yy[var35] = var56 + 1; // L: 278 } int var47 = 0; // L: 281 byte var54; if (var44 == 0) { // L: 282 ++var43; // L: 283 var44 = 50; // L: 284 var54 = var0.selector[var43]; // L: 285 var22 = var0.minLens[var54]; // L: 286 var23 = var0.limit[var54]; // L: 287 var25 = var0.perm[var54]; // L: 288 var24 = var0.base[var54]; // L: 289 } int var45 = var44 - 1; // L: 291 int var51 = var22; // L: 292 int var52; byte var53; for (var52 = BZip2Decompressor_readBits(var22, var0); var52 > var23[var51]; var52 = var52 << 1 | var53) { // L: 293 295 298 ++var51; // L: 296 var53 = BZip2Decompressor_readNextBit(var0); // L: 297 } int var46 = var25[var52 - var24[var51]]; // L: 300 while (true) { int[] var10000; int var10002; while (var46 != var42) { // L: 302 if (var46 != 0 && var46 != 1) { // L: 303 int var33 = var46 - 1; // L: 349 int var30; if (var33 < 16) { // L: 350 var30 = var0.getAndMoveToFrontDecode_yy[0]; // L: 351 for (var1 = var0.ll8[var30 + var33]; var33 > 3; var33 -= 4) { // L: 352 353 359 int var34 = var30 + var33; // L: 354 var0.ll8[var34] = var0.ll8[var34 - 1]; // L: 355 var0.ll8[var34 - 1] = var0.ll8[var34 - 2]; // L: 356 var0.ll8[var34 - 2] = var0.ll8[var34 - 3]; // L: 357 var0.ll8[var34 - 3] = var0.ll8[var34 - 4]; // L: 358 } while (var33 > 0) { // L: 361 var0.ll8[var30 + var33] = var0.ll8[var30 + var33 - 1]; // L: 362 --var33; // L: 363 } var0.ll8[var30] = var1; // L: 365 } else { int var31 = var33 / 16; // L: 368 int var32 = var33 % 16; // L: 369 var30 = var0.getAndMoveToFrontDecode_yy[var31] + var32; // L: 370 for (var1 = var0.ll8[var30]; var30 > var0.getAndMoveToFrontDecode_yy[var31]; --var30) { // L: 371 372 374 var0.ll8[var30] = var0.ll8[var30 - 1]; // L: 373 } for (var10002 = var0.getAndMoveToFrontDecode_yy[var31]++; var31 > 0; --var31) { // L: 376 377 380 var10002 = var0.getAndMoveToFrontDecode_yy[var31]--; // L: 378 var0.ll8[var0.getAndMoveToFrontDecode_yy[var31]] = var0.ll8[var0.getAndMoveToFrontDecode_yy[var31 - 1] + 16 - 1]; // L: 379 } var10002 = var0.getAndMoveToFrontDecode_yy[0]--; // L: 382 var0.ll8[var0.getAndMoveToFrontDecode_yy[0]] = var1; // L: 383 if (var0.getAndMoveToFrontDecode_yy[0] == 0) { // L: 384 var56 = 4095; // L: 385 for (var35 = 15; var35 >= 0; --var35) { // L: 386 for (var55 = 15; var55 >= 0; --var55) { // L: 387 var0.ll8[var56] = var0.ll8[var0.getAndMoveToFrontDecode_yy[var35] + var55]; // L: 388 --var56; // L: 389 } var0.getAndMoveToFrontDecode_yy[var35] = var56 + 1; // L: 391 } } } var10002 = var0.unzftab[var0.seqToUnseq[var1 & 255] & 255]++; // L: 396 class118.BZip2Decompressor_block[var47] = var0.seqToUnseq[var1 & 255] & 255; // L: 397 ++var47; // L: 398 if (var45 == 0) { // L: 399 ++var43; // L: 400 var45 = 50; // L: 401 var54 = var0.selector[var43]; // L: 402 var22 = var0.minLens[var54]; // L: 403 var23 = var0.limit[var54]; // L: 404 var25 = var0.perm[var54]; // L: 405 var24 = var0.base[var54]; // L: 406 } --var45; // L: 408 var51 = var22; // L: 409 for (var52 = BZip2Decompressor_readBits(var22, var0); var52 > var23[var51]; var52 = var52 << 1 | var53) { // L: 410 412 415 ++var51; // L: 413 var53 = BZip2Decompressor_readNextBit(var0); // L: 414 } var46 = var25[var52 - var24[var51]]; // L: 417 } else { int var48 = -1; // L: 304 int var49 = 1; // L: 305 do { if (var46 == 0) { // L: 307 var48 += var49; } else if (var46 == 1) { // L: 308 var48 += var49 * 2; } var49 *= 2; // L: 309 if (var45 == 0) { // L: 310 ++var43; // L: 311 var45 = 50; // L: 312 var54 = var0.selector[var43]; // L: 313 var22 = var0.minLens[var54]; // L: 314 var23 = var0.limit[var54]; // L: 315 var25 = var0.perm[var54]; // L: 316 var24 = var0.base[var54]; // L: 317 } --var45; // L: 319 var51 = var22; // L: 320 for (var52 = BZip2Decompressor_readBits(var22, var0); var52 > var23[var51]; var52 = var52 << 1 | var53) { // L: 321 323 326 ++var51; // L: 324 var53 = BZip2Decompressor_readNextBit(var0); // L: 325 } var46 = var25[var52 - var24[var51]]; // L: 328 } while(var46 == 0 || var46 == 1); // L: 329 ++var48; // L: 330 var1 = var0.seqToUnseq[var0.ll8[var0.getAndMoveToFrontDecode_yy[0]] & 255]; // L: 331 var10000 = var0.unzftab; // L: 332 for (var10000[var1 & 255] += var48; var48 > 0; --var48) { // L: 333 336 class118.BZip2Decompressor_block[var47] = var1 & 255; // L: 334 ++var47; // L: 335 } } } var0.su_rNToGo = 0; // L: 421 var0.out_char = 0; // L: 422 var0.cftab[0] = 0; // L: 423 for (var36 = 1; var36 <= 256; ++var36) { // L: 424 var0.cftab[var36] = var0.unzftab[var36 - 1]; } for (var36 = 1; var36 <= 256; ++var36) { // L: 425 var10000 = var0.cftab; var10000[var36] += var0.cftab[var36 - 1]; } for (var36 = 0; var36 < var47; ++var36) { // L: 426 var1 = (byte)(class118.BZip2Decompressor_block[var36] & 255); // L: 427 var10000 = class118.BZip2Decompressor_block; // L: 428 int var10001 = var0.cftab[var1 & 255]; var10000[var10001] |= var36 << 8; var10002 = var0.cftab[var1 & 255]++; // L: 429 } var0.field4534 = class118.BZip2Decompressor_block[var0.originalPointer] >> 8; // L: 431 var0.nblocks_used = 0; // L: 432 var0.field4534 = class118.BZip2Decompressor_block[var0.field4534]; // L: 433 var0.su_ch2 = (byte)(var0.field4534 & 255); // L: 434 var0.field4534 >>= 8; // L: 436 ++var0.nblocks_used; // L: 437 var0.field4552 = var47; // L: 438 method7597(var0); // L: 439 if (var0.field4552 + 1 == var0.nblocks_used && var0.su_rNToGo == 0) { // L: 440 var26 = true; break; } var26 = false; // L: 441 break; } } return; // L: 443 } } @ObfuscatedName("e") @ObfuscatedSignature( descriptor = "(Lpl;)B" ) @Export("BZip2Decompressor_readNextByte") static byte BZip2Decompressor_readNextByte(BZip2State var0) { return (byte)BZip2Decompressor_readBits(8, var0); // L: 447 } @ObfuscatedName("r") @ObfuscatedSignature( descriptor = "(Lpl;)B" ) @Export("BZip2Decompressor_readNextBit") static byte BZip2Decompressor_readNextBit(BZip2State var0) { return (byte)BZip2Decompressor_readBits(1, var0); // L: 451 } @ObfuscatedName("o") @ObfuscatedSignature( descriptor = "(ILpl;)I" ) @Export("BZip2Decompressor_readBits") static int BZip2Decompressor_readBits(int var0, BZip2State var1) { while (var1.bsLive < var0) { // L: 456 var1.bsBuff = var1.bsBuff << 8 | var1.inputArray[var1.nextByte] & 255; // L: 462 var1.bsLive += 8; // L: 463 ++var1.nextByte; // L: 464 ++var1.nextBit_unused; // L: 465 if (var1.nextBit_unused == 0) { // L: 466 } } int var2 = var1.bsBuff >> var1.bsLive - var0 & (1 << var0) - 1; // L: 458 var1.bsLive -= var0; // L: 459 return var2; // L: 460 } @ObfuscatedName("i") @ObfuscatedSignature( descriptor = "(Lpl;)V" ) @Export("makeMaps") static void makeMaps(BZip2State var0) { var0.nInUse = 0; // L: 472 for (int var1 = 0; var1 < 256; ++var1) { // L: 473 if (var0.inUse[var1]) { // L: 474 var0.seqToUnseq[var0.nInUse] = (byte)var1; // L: 475 ++var0.nInUse; // L: 476 } } } // L: 479 @ObfuscatedName("w") @Export("BZip2Decompressor_createHuffmanTables") static void BZip2Decompressor_createHuffmanTables(int[] var0, int[] var1, int[] var2, byte[] var3, int var4, int var5, int var6) { int var7 = 0; // L: 486 int var8; for (var8 = var4; var8 <= var5; ++var8) { // L: 487 for (int var9 = 0; var9 < var6; ++var9) { // L: 488 if (var8 == var3[var9]) { // L: 489 var2[var7] = var9; // L: 490 ++var7; // L: 491 } } } for (var8 = 0; var8 < 23; ++var8) { // L: 495 var1[var8] = 0; } for (var8 = 0; var8 < var6; ++var8) { // L: 496 ++var1[var3[var8] + 1]; } for (var8 = 1; var8 < 23; ++var8) { // L: 497 var1[var8] += var1[var8 - 1]; } for (var8 = 0; var8 < 23; ++var8) { // L: 498 var0[var8] = 0; } int var10 = 0; // L: 499 for (var8 = var4; var8 <= var5; ++var8) { // L: 500 var10 += var1[var8 + 1] - var1[var8]; // L: 501 var0[var8] = var10 - 1; // L: 502 var10 <<= 1; // L: 503 } for (var8 = var4 + 1; var8 <= var5; ++var8) { // L: 505 var1[var8] = (var0[var8 - 1] + 1 << 1) - var1[var8]; // L: 506 } } // L: 508 }