import net.runelite.mapping.Export; import net.runelite.mapping.Implements; import net.runelite.mapping.ObfuscatedName; @ObfuscatedName("di") @Implements("VorbisResidue") public class VorbisResidue { @ObfuscatedName("f") @Export("residueType") int residueType; @ObfuscatedName("i") @Export("begin") int begin; @ObfuscatedName("y") @Export("end") int end; @ObfuscatedName("w") @Export("partitionSize") int partitionSize; @ObfuscatedName("p") @Export("classifications") int classifications; @ObfuscatedName("b") @Export("classbook") int classbook; @ObfuscatedName("e") @Export("cascade") int[] cascade; VorbisResidue() { this.residueType = VorbisSample.readBits(16); this.begin = VorbisSample.readBits(24); this.end = VorbisSample.readBits(24); this.partitionSize = VorbisSample.readBits(24) + 1; this.classifications = VorbisSample.readBits(6) + 1; this.classbook = VorbisSample.readBits(8); int[] var1 = new int[this.classifications]; int var2; for (var2 = 0; var2 < this.classifications; ++var2) { int var3 = 0; int var4 = VorbisSample.readBits(3); boolean var5 = VorbisSample.readBit() != 0; if (var5) { var3 = VorbisSample.readBits(5); } var1[var2] = var3 << 3 | var4; } this.cascade = new int[this.classifications * 8]; for (var2 = 0; var2 < this.classifications * 8; ++var2) { this.cascade[var2] = (var1[var2 >> 3] & 1 << (var2 & 7)) != 0 ? VorbisSample.readBits(8) : -1; } } @ObfuscatedName("f") void method2531(float[] var1, int var2, boolean var3) { int var4; for (var4 = 0; var4 < var2; ++var4) { var1[var4] = 0.0F; } if (!var3) { var4 = VorbisSample.VorbisSample_codebooks[this.classbook].dimensions; int var5 = this.end - this.begin; int var6 = var5 / this.partitionSize; int[] var7 = new int[var6]; for (int var8 = 0; var8 < 8; ++var8) { int var9 = 0; while (var9 < var6) { int var10; int var11; if (var8 == 0) { var10 = VorbisSample.VorbisSample_codebooks[this.classbook].method2342(); for (var11 = var4 - 1; var11 >= 0; --var11) { if (var9 + var11 < var6) { var7[var9 + var11] = var10 % this.classifications; } var10 /= this.classifications; } } for (var10 = 0; var10 < var4; ++var10) { var11 = var7[var9]; int var12 = this.cascade[var8 + var11 * 8]; if (var12 >= 0) { int var13 = var9 * this.partitionSize + this.begin; VorbisCodebook var14 = VorbisSample.VorbisSample_codebooks[var12]; int var15; if (this.residueType == 0) { var15 = this.partitionSize / var14.dimensions; for (int var16 = 0; var16 < var15; ++var16) { float[] var17 = var14.method2349(); for (int var18 = 0; var18 < var14.dimensions; ++var18) { var1[var13 + var16 + var18 * var15] += var17[var18]; } } } else { var15 = 0; while (var15 < this.partitionSize) { float[] var19 = var14.method2349(); for (int var20 = 0; var20 < var14.dimensions; ++var20) { var1[var13 + var15] += var19[var20]; ++var15; } } } } ++var9; if (var9 >= var6) { break; } } } } } } }