From 5aaf6a9ad0683ac83577ae0274dde44ea77cf3dc Mon Sep 17 00:00:00 2001 From: Pazaz Date: Mon, 27 Jun 2022 15:18:43 -0400 Subject: [PATCH] Renamed Vorbis methods/fields --- client/src/main/java/rt4/IntUtils.java | 26 + client/src/main/java/rt4/VorbisCodebook.java | 150 ++--- client/src/main/java/rt4/VorbisFloor.java | 278 ++++++++- client/src/main/java/rt4/VorbisMapping.java | 34 +- client/src/main/java/rt4/VorbisRange.java | 278 --------- client/src/main/java/rt4/VorbisResidue.java | 64 +- client/src/main/java/rt4/VorbisSound.java | 625 +++++++++---------- 7 files changed, 724 insertions(+), 731 deletions(-) delete mode 100644 client/src/main/java/rt4/VorbisRange.java diff --git a/client/src/main/java/rt4/IntUtils.java b/client/src/main/java/rt4/IntUtils.java index de8667fe..db68ab23 100644 --- a/client/src/main/java/rt4/IntUtils.java +++ b/client/src/main/java/rt4/IntUtils.java @@ -32,4 +32,30 @@ public class IntUtils { @Pc(40) int local40 = local34 | local34 >>> 16; return local40 + 1; } + + @OriginalMember(owner = "client!qi", name = "b", descriptor = "(II)I") + public static int bitCount(@OriginalArg(0) int arg0) { + @Pc(5) int local5 = 0; + if (arg0 < 0 || arg0 >= 65536) { + local5 += 16; + arg0 >>>= 0x10; + } + if (arg0 >= 256) { + local5 += 8; + arg0 >>>= 0x8; + } + if (arg0 >= 16) { + local5 += 4; + arg0 >>>= 0x4; + } + if (arg0 >= 4) { + arg0 >>>= 0x2; + local5 += 2; + } + if (arg0 >= 1) { + arg0 >>>= 0x1; + local5++; + } + return arg0 + local5; + } } diff --git a/client/src/main/java/rt4/VorbisCodebook.java b/client/src/main/java/rt4/VorbisCodebook.java index 9c3d546c..34084092 100644 --- a/client/src/main/java/rt4/VorbisCodebook.java +++ b/client/src/main/java/rt4/VorbisCodebook.java @@ -9,83 +9,83 @@ import org.openrs2.deob.annotation.Pc; public final class VorbisCodebook { @OriginalMember(owner = "client!ji", name = "f", descriptor = "[I") - private int[] anIntArray288; + private int[] entryTree; @OriginalMember(owner = "client!ji", name = "c", descriptor = "I") - public final int anInt3055; + public final int dimensions; @OriginalMember(owner = "client!ji", name = "e", descriptor = "I") - private final int anInt3056; + private final int entries; @OriginalMember(owner = "client!ji", name = "a", descriptor = "[I") - private final int[] anIntArray286; + private final int[] lengths; @OriginalMember(owner = "client!ji", name = "d", descriptor = "[I") - private int[] anIntArray287; + private int[] multiplicands; @OriginalMember(owner = "client!ji", name = "b", descriptor = "[[F") - private float[][] aFloatArrayArray1; + private float[][] valueVector; @OriginalMember(owner = "client!ji", name = "", descriptor = "()V") public VorbisCodebook() { - VorbisSound.method2350(24); - this.anInt3055 = VorbisSound.method2350(16); - this.anInt3056 = VorbisSound.method2350(24); - this.anIntArray286 = new int[this.anInt3056]; - @Pc(23) boolean local23 = VorbisSound.method2346() != 0; + VorbisSound.readBits(24); + this.dimensions = VorbisSound.readBits(16); + this.entries = VorbisSound.readBits(24); + this.lengths = new int[this.entries]; + @Pc(23) boolean local23 = VorbisSound.readBit() != 0; @Pc(27) int local27; @Pc(32) int local32; @Pc(46) int local46; if (local23) { local27 = 0; - local32 = VorbisSound.method2350(5) + 1; - while (local27 < this.anInt3056) { - @Pc(44) int local44 = VorbisSound.method2350(method3674(this.anInt3056 - local27)); + local32 = VorbisSound.readBits(5) + 1; + while (local27 < this.entries) { + @Pc(44) int local44 = VorbisSound.readBits(IntUtils.bitCount(this.entries - local27)); for (local46 = 0; local46 < local44; local46++) { - this.anIntArray286[local27++] = local32; + this.lengths[local27++] = local32; } local32++; } } else { - @Pc(66) boolean local66 = VorbisSound.method2346() != 0; - for (local32 = 0; local32 < this.anInt3056; local32++) { - if (local66 && VorbisSound.method2346() == 0) { - this.anIntArray286[local32] = 0; + @Pc(66) boolean local66 = VorbisSound.readBit() != 0; + for (local32 = 0; local32 < this.entries; local32++) { + if (local66 && VorbisSound.readBit() == 0) { + this.lengths[local32] = 0; } else { - this.anIntArray286[local32] = VorbisSound.method2350(5) + 1; + this.lengths[local32] = VorbisSound.readBits(5) + 1; } } } - this.method2414(); - local27 = VorbisSound.method2350(4); + this.createEntryTree(); + local27 = VorbisSound.readBits(4); if (local27 > 0) { - @Pc(103) float local103 = VorbisSound.method2340(VorbisSound.method2350(32)); - @Pc(107) float local107 = VorbisSound.method2340(VorbisSound.method2350(32)); - local46 = VorbisSound.method2350(4) + 1; - @Pc(118) boolean local118 = VorbisSound.method2346() != 0; + @Pc(103) float local103 = VorbisSound.float32Unpack(VorbisSound.readBits(32)); + @Pc(107) float local107 = VorbisSound.float32Unpack(VorbisSound.readBits(32)); + local46 = VorbisSound.readBits(4) + 1; + @Pc(118) boolean local118 = VorbisSound.readBit() != 0; @Pc(127) int local127; if (local27 == 1) { - local127 = lookup1Values(this.anInt3056, this.anInt3055); + local127 = lookup1Values(this.entries, this.dimensions); } else { - local127 = this.anInt3056 * this.anInt3055; + local127 = this.entries * this.dimensions; } - this.anIntArray287 = new int[local127]; + this.multiplicands = new int[local127]; @Pc(140) int local140; for (local140 = 0; local140 < local127; local140++) { - this.anIntArray287[local140] = VorbisSound.method2350(local46); + this.multiplicands[local140] = VorbisSound.readBits(local46); } - this.aFloatArrayArray1 = new float[this.anInt3056][this.anInt3055]; + this.valueVector = new float[this.entries][this.dimensions]; @Pc(169) float local169; @Pc(171) int local171; @Pc(173) int local173; if (local27 == 1) { - for (local140 = 0; local140 < this.anInt3056; local140++) { + for (local140 = 0; local140 < this.entries; local140++) { local169 = 0.0F; local171 = 1; - for (local173 = 0; local173 < this.anInt3055; local173++) { + for (local173 = 0; local173 < this.dimensions; local173++) { @Pc(183) int local183 = local140 / local171 % local127; - @Pc(195) float local195 = (float) this.anIntArray287[local183] * local107 + local103 + local169; - this.aFloatArrayArray1[local140][local173] = local195; + @Pc(195) float local195 = (float) this.multiplicands[local183] * local107 + local103 + local169; + this.valueVector[local140][local173] = local195; if (local118) { local169 = local195; } @@ -93,12 +93,12 @@ public final class VorbisCodebook { } } } else { - for (local140 = 0; local140 < this.anInt3056; local140++) { + for (local140 = 0; local140 < this.entries; local140++) { local169 = 0.0F; - local171 = local140 * this.anInt3055; - for (local173 = 0; local173 < this.anInt3055; local173++) { - @Pc(246) float local246 = (float) this.anIntArray287[local171] * local107 + local103 + local169; - this.aFloatArrayArray1[local140][local173] = local246; + local171 = local140 * this.dimensions; + for (local173 = 0; local173 < this.dimensions; local173++) { + @Pc(246) float local246 = (float) this.multiplicands[local171] * local107 + local103 + local169; + this.valueVector[local140][local173] = local246; if (local118) { local169 = local246; } @@ -117,40 +117,14 @@ public final class VorbisCodebook { return returnValue; } - @OriginalMember(owner = "client!qi", name = "b", descriptor = "(II)I") - public static int method3674(@OriginalArg(0) int arg0) { - @Pc(5) int local5 = 0; - if (arg0 < 0 || arg0 >= 65536) { - local5 += 16; - arg0 >>>= 0x10; - } - if (arg0 >= 256) { - local5 += 8; - arg0 >>>= 0x8; - } - if (arg0 >= 16) { - local5 += 4; - arg0 >>>= 0x4; - } - if (arg0 >= 4) { - arg0 >>>= 0x2; - local5 += 2; - } - if (arg0 >= 1) { - arg0 >>>= 0x1; - local5++; - } - return arg0 + local5; - } - - @OriginalMember(owner = "client!ji", name = "a", descriptor = "()[F") - public final float[] method2413() { - return this.aFloatArrayArray1[this.method2415()]; + @OriginalMember(owner = "client!ji", name = "a", descriptor = "()[F") + public final float[] decodeVq() { + return this.valueVector[this.decodeScalar()]; } @OriginalMember(owner = "client!ji", name = "b", descriptor = "()V") - private void method2414() { - @Pc(3) int[] local3 = new int[this.anInt3056]; + private void createEntryTree() { + @Pc(3) int[] local3 = new int[this.entries]; @Pc(6) int[] local6 = new int[33]; @Pc(8) int local8; @Pc(17) int local17; @@ -159,8 +133,8 @@ public final class VorbisCodebook { @Pc(44) int local44; @Pc(53) int local53; @Pc(69) int local69; - for (local8 = 0; local8 < this.anInt3056; local8++) { - local17 = this.anIntArray286[local8]; + for (local8 = 0; local8 < this.entries; local8++) { + local17 = this.lengths[local8]; if (local17 != 0) { local26 = 0x1 << 32 - local17; local30 = local6[local17]; @@ -192,10 +166,10 @@ public final class VorbisCodebook { } } } - this.anIntArray288 = new int[8]; + this.entryTree = new int[8]; @Pc(122) int local122 = 0; - for (local8 = 0; local8 < this.anInt3056; local8++) { - local17 = this.anIntArray286[local8]; + for (local8 = 0; local8 < this.entries; local8++) { + local17 = this.lengths[local8]; if (local17 != 0) { local26 = local3[local8]; local30 = 0; @@ -204,20 +178,20 @@ public final class VorbisCodebook { if ((local26 & local53) == 0) { local30++; } else { - if (this.anIntArray288[local30] == 0) { - this.anIntArray288[local30] = local122; + if (this.entryTree[local30] == 0) { + this.entryTree[local30] = local122; } - local30 = this.anIntArray288[local30]; + local30 = this.entryTree[local30]; } - if (local30 >= this.anIntArray288.length) { - @Pc(184) int[] local184 = new int[this.anIntArray288.length * 2]; - for (local69 = 0; local69 < this.anIntArray288.length; local69++) { - local184[local69] = this.anIntArray288[local69]; + if (local30 >= this.entryTree.length) { + @Pc(184) int[] local184 = new int[this.entryTree.length * 2]; + for (local69 = 0; local69 < this.entryTree.length; local69++) { + local184[local69] = this.entryTree[local69]; } - this.anIntArray288 = local184; + this.entryTree = local184; } } - this.anIntArray288[local30] = ~local8; + this.entryTree[local30] = ~local8; if (local30 >= local122) { local122 = local30 + 1; } @@ -226,10 +200,10 @@ public final class VorbisCodebook { } @OriginalMember(owner = "client!ji", name = "c", descriptor = "()I") - public final int method2415() { + public final int decodeScalar() { @Pc(1) int local1; - for (local1 = 0; this.anIntArray288[local1] >= 0; local1 = VorbisSound.method2346() == 0 ? local1 + 1 : this.anIntArray288[local1]) { + for (local1 = 0; this.entryTree[local1] >= 0; local1 = VorbisSound.readBit() == 0 ? local1 + 1 : this.entryTree[local1]) { } - return ~this.anIntArray288[local1]; + return ~this.entryTree[local1]; } } diff --git a/client/src/main/java/rt4/VorbisFloor.java b/client/src/main/java/rt4/VorbisFloor.java index 4325305a..4dec563e 100644 --- a/client/src/main/java/rt4/VorbisFloor.java +++ b/client/src/main/java/rt4/VorbisFloor.java @@ -1,8 +1,280 @@ package rt4; +import org.openrs2.deob.annotation.OriginalArg; +import org.openrs2.deob.annotation.OriginalClass; import org.openrs2.deob.annotation.OriginalMember; +import org.openrs2.deob.annotation.Pc; -public class VorbisFloor { - @OriginalMember(owner = "client!ie", name = "l", descriptor = "[F") - public static final float[] INVERSE_DB_TABLE = new float[] { 1.0649863E-7F, 1.1341951E-7F, 1.2079015E-7F, 1.2863978E-7F, 1.369995E-7F, 1.459025E-7F, 1.5538409E-7F, 1.6548181E-7F, 1.7623574E-7F, 1.8768856E-7F, 1.998856E-7F, 2.128753E-7F, 2.2670913E-7F, 2.4144197E-7F, 2.5713223E-7F, 2.7384212E-7F, 2.9163792E-7F, 3.1059022E-7F, 3.307741E-7F, 3.5226967E-7F, 3.7516213E-7F, 3.995423E-7F, 4.255068E-7F, 4.5315863E-7F, 4.8260745E-7F, 5.1397E-7F, 5.4737063E-7F, 5.829419E-7F, 6.208247E-7F, 6.611694E-7F, 7.041359E-7F, 7.4989464E-7F, 7.98627E-7F, 8.505263E-7F, 9.057983E-7F, 9.646621E-7F, 1.0273513E-6F, 1.0941144E-6F, 1.1652161E-6F, 1.2409384E-6F, 1.3215816E-6F, 1.4074654E-6F, 1.4989305E-6F, 1.5963394E-6F, 1.7000785E-6F, 1.8105592E-6F, 1.9282195E-6F, 2.053526E-6F, 2.1869757E-6F, 2.3290977E-6F, 2.4804558E-6F, 2.6416496E-6F, 2.813319E-6F, 2.9961443E-6F, 3.1908505E-6F, 3.39821E-6F, 3.619045E-6F, 3.8542307E-6F, 4.1047006E-6F, 4.371447E-6F, 4.6555283E-6F, 4.958071E-6F, 5.280274E-6F, 5.623416E-6F, 5.988857E-6F, 6.3780467E-6F, 6.7925284E-6F, 7.2339453E-6F, 7.704048E-6F, 8.2047E-6F, 8.737888E-6F, 9.305725E-6F, 9.910464E-6F, 1.0554501E-5F, 1.1240392E-5F, 1.1970856E-5F, 1.2748789E-5F, 1.3577278E-5F, 1.4459606E-5F, 1.5399271E-5F, 1.6400005E-5F, 1.7465769E-5F, 1.8600793E-5F, 1.9809577E-5F, 2.1096914E-5F, 2.2467912E-5F, 2.3928002E-5F, 2.5482977E-5F, 2.7139005E-5F, 2.890265E-5F, 3.078091E-5F, 3.2781227E-5F, 3.4911533E-5F, 3.718028E-5F, 3.9596467E-5F, 4.2169668E-5F, 4.491009E-5F, 4.7828602E-5F, 5.0936775E-5F, 5.424693E-5F, 5.7772202E-5F, 6.152657E-5F, 6.552491E-5F, 6.9783084E-5F, 7.4317984E-5F, 7.914758E-5F, 8.429104E-5F, 8.976875E-5F, 9.560242E-5F, 1.0181521E-4F, 1.0843174E-4F, 1.1547824E-4F, 1.2298267E-4F, 1.3097477E-4F, 1.3948625E-4F, 1.4855085E-4F, 1.5820454E-4F, 1.6848555E-4F, 1.7943469E-4F, 1.9109536E-4F, 2.0351382E-4F, 2.167393E-4F, 2.3082423E-4F, 2.4582449E-4F, 2.6179955E-4F, 2.7881275E-4F, 2.9693157E-4F, 3.1622787E-4F, 3.3677815E-4F, 3.5866388E-4F, 3.8197188E-4F, 4.0679457E-4F, 4.3323037E-4F, 4.613841E-4F, 4.913675E-4F, 5.2329927E-4F, 5.573062E-4F, 5.935231E-4F, 6.320936E-4F, 6.731706E-4F, 7.16917E-4F, 7.635063E-4F, 8.1312325E-4F, 8.6596457E-4F, 9.2223985E-4F, 9.821722E-4F, 0.0010459992F, 0.0011139743F, 0.0011863665F, 0.0012634633F, 0.0013455702F, 0.0014330129F, 0.0015261382F, 0.0016253153F, 0.0017309374F, 0.0018434235F, 0.0019632196F, 0.0020908006F, 0.0022266726F, 0.0023713743F, 0.0025254795F, 0.0026895993F, 0.0028643848F, 0.0030505287F, 0.003248769F, 0.0034598925F, 0.0036847359F, 0.0039241905F, 0.0041792067F, 0.004450795F, 0.004740033F, 0.005048067F, 0.0053761187F, 0.005725489F, 0.0060975635F, 0.0064938175F, 0.0069158226F, 0.0073652514F, 0.007843887F, 0.008353627F, 0.008896492F, 0.009474637F, 0.010090352F, 0.01074608F, 0.011444421F, 0.012188144F, 0.012980198F, 0.013823725F, 0.014722068F, 0.015678791F, 0.016697686F, 0.017782796F, 0.018938422F, 0.020169148F, 0.021479854F, 0.022875736F, 0.02436233F, 0.025945531F, 0.027631618F, 0.029427277F, 0.031339627F, 0.03337625F, 0.035545226F, 0.037855156F, 0.0403152F, 0.042935107F, 0.045725275F, 0.048696756F, 0.05186135F, 0.05523159F, 0.05882085F, 0.062643364F, 0.06671428F, 0.07104975F, 0.075666964F, 0.08058423F, 0.08582105F, 0.09139818F, 0.097337745F, 0.1036633F, 0.11039993F, 0.11757434F, 0.12521498F, 0.13335215F, 0.14201812F, 0.15124726F, 0.16107617F, 0.1715438F, 0.18269168F, 0.19456401F, 0.20720787F, 0.22067343F, 0.23501402F, 0.25028655F, 0.26655158F, 0.28387362F, 0.3023213F, 0.32196787F, 0.34289113F, 0.36517414F, 0.3889052F, 0.41417846F, 0.44109413F, 0.4697589F, 0.50028646F, 0.53279793F, 0.5674221F, 0.6042964F, 0.64356697F, 0.6853896F, 0.72993004F, 0.777365F, 0.8278826F, 0.88168305F, 0.9389798F, 1.0F }; +@OriginalClass("client!ie") +public final class VorbisFloor { + + @OriginalMember(owner = "client!ie", name = "k", descriptor = "[I") + public static final int[] RANGES = new int[] { 256, 128, 86, 64 }; + @OriginalMember(owner = "client!ie", name = "l", descriptor = "[F") + public static final float[] INVERSE_DB_TABLE = new float[] { 1.0649863E-7F, 1.1341951E-7F, 1.2079015E-7F, 1.2863978E-7F, 1.369995E-7F, 1.459025E-7F, 1.5538409E-7F, 1.6548181E-7F, 1.7623574E-7F, 1.8768856E-7F, 1.998856E-7F, 2.128753E-7F, 2.2670913E-7F, 2.4144197E-7F, 2.5713223E-7F, 2.7384212E-7F, 2.9163792E-7F, 3.1059022E-7F, 3.307741E-7F, 3.5226967E-7F, 3.7516213E-7F, 3.995423E-7F, 4.255068E-7F, 4.5315863E-7F, 4.8260745E-7F, 5.1397E-7F, 5.4737063E-7F, 5.829419E-7F, 6.208247E-7F, 6.611694E-7F, 7.041359E-7F, 7.4989464E-7F, 7.98627E-7F, 8.505263E-7F, 9.057983E-7F, 9.646621E-7F, 1.0273513E-6F, 1.0941144E-6F, 1.1652161E-6F, 1.2409384E-6F, 1.3215816E-6F, 1.4074654E-6F, 1.4989305E-6F, 1.5963394E-6F, 1.7000785E-6F, 1.8105592E-6F, 1.9282195E-6F, 2.053526E-6F, 2.1869757E-6F, 2.3290977E-6F, 2.4804558E-6F, 2.6416496E-6F, 2.813319E-6F, 2.9961443E-6F, 3.1908505E-6F, 3.39821E-6F, 3.619045E-6F, 3.8542307E-6F, 4.1047006E-6F, 4.371447E-6F, 4.6555283E-6F, 4.958071E-6F, 5.280274E-6F, 5.623416E-6F, 5.988857E-6F, 6.3780467E-6F, 6.7925284E-6F, 7.2339453E-6F, 7.704048E-6F, 8.2047E-6F, 8.737888E-6F, 9.305725E-6F, 9.910464E-6F, 1.0554501E-5F, 1.1240392E-5F, 1.1970856E-5F, 1.2748789E-5F, 1.3577278E-5F, 1.4459606E-5F, 1.5399271E-5F, 1.6400005E-5F, 1.7465769E-5F, 1.8600793E-5F, 1.9809577E-5F, 2.1096914E-5F, 2.2467912E-5F, 2.3928002E-5F, 2.5482977E-5F, 2.7139005E-5F, 2.890265E-5F, 3.078091E-5F, 3.2781227E-5F, 3.4911533E-5F, 3.718028E-5F, 3.9596467E-5F, 4.2169668E-5F, 4.491009E-5F, 4.7828602E-5F, 5.0936775E-5F, 5.424693E-5F, 5.7772202E-5F, 6.152657E-5F, 6.552491E-5F, 6.9783084E-5F, 7.4317984E-5F, 7.914758E-5F, 8.429104E-5F, 8.976875E-5F, 9.560242E-5F, 1.0181521E-4F, 1.0843174E-4F, 1.1547824E-4F, 1.2298267E-4F, 1.3097477E-4F, 1.3948625E-4F, 1.4855085E-4F, 1.5820454E-4F, 1.6848555E-4F, 1.7943469E-4F, 1.9109536E-4F, 2.0351382E-4F, 2.167393E-4F, 2.3082423E-4F, 2.4582449E-4F, 2.6179955E-4F, 2.7881275E-4F, 2.9693157E-4F, 3.1622787E-4F, 3.3677815E-4F, 3.5866388E-4F, 3.8197188E-4F, 4.0679457E-4F, 4.3323037E-4F, 4.613841E-4F, 4.913675E-4F, 5.2329927E-4F, 5.573062E-4F, 5.935231E-4F, 6.320936E-4F, 6.731706E-4F, 7.16917E-4F, 7.635063E-4F, 8.1312325E-4F, 8.6596457E-4F, 9.2223985E-4F, 9.821722E-4F, 0.0010459992F, 0.0011139743F, 0.0011863665F, 0.0012634633F, 0.0013455702F, 0.0014330129F, 0.0015261382F, 0.0016253153F, 0.0017309374F, 0.0018434235F, 0.0019632196F, 0.0020908006F, 0.0022266726F, 0.0023713743F, 0.0025254795F, 0.0026895993F, 0.0028643848F, 0.0030505287F, 0.003248769F, 0.0034598925F, 0.0036847359F, 0.0039241905F, 0.0041792067F, 0.004450795F, 0.004740033F, 0.005048067F, 0.0053761187F, 0.005725489F, 0.0060975635F, 0.0064938175F, 0.0069158226F, 0.0073652514F, 0.007843887F, 0.008353627F, 0.008896492F, 0.009474637F, 0.010090352F, 0.01074608F, 0.011444421F, 0.012188144F, 0.012980198F, 0.013823725F, 0.014722068F, 0.015678791F, 0.016697686F, 0.017782796F, 0.018938422F, 0.020169148F, 0.021479854F, 0.022875736F, 0.02436233F, 0.025945531F, 0.027631618F, 0.029427277F, 0.031339627F, 0.03337625F, 0.035545226F, 0.037855156F, 0.0403152F, 0.042935107F, 0.045725275F, 0.048696756F, 0.05186135F, 0.05523159F, 0.05882085F, 0.062643364F, 0.06671428F, 0.07104975F, 0.075666964F, 0.08058423F, 0.08582105F, 0.09139818F, 0.097337745F, 0.1036633F, 0.11039993F, 0.11757434F, 0.12521498F, 0.13335215F, 0.14201812F, 0.15124726F, 0.16107617F, 0.1715438F, 0.18269168F, 0.19456401F, 0.20720787F, 0.22067343F, 0.23501402F, 0.25028655F, 0.26655158F, 0.28387362F, 0.3023213F, 0.32196787F, 0.34289113F, 0.36517414F, 0.3889052F, 0.41417846F, 0.44109413F, 0.4697589F, 0.50028646F, 0.53279793F, 0.5674221F, 0.6042964F, 0.64356697F, 0.6853896F, 0.72993004F, 0.777365F, 0.8278826F, 0.88168305F, 0.9389798F, 1.0F }; + @OriginalMember(owner = "client!ie", name = "b", descriptor = "[Z") + public static boolean[] step2Flag; + @OriginalMember(owner = "client!ie", name = "h", descriptor = "[I") + public static int[] currentXList; + @OriginalMember(owner = "client!ie", name = "j", descriptor = "[I") + public static int[] y; + @OriginalMember(owner = "client!ie", name = "e", descriptor = "[I") + private final int[] classList; + + @OriginalMember(owner = "client!ie", name = "i", descriptor = "[I") + private final int[] classDimensions; + + @OriginalMember(owner = "client!ie", name = "g", descriptor = "[I") + private final int[] subclasses; + + @OriginalMember(owner = "client!ie", name = "a", descriptor = "[I") + private final int[] classMasterBooks; + + @OriginalMember(owner = "client!ie", name = "c", descriptor = "[[I") + private final int[][] subclassBooks; + + @OriginalMember(owner = "client!ie", name = "f", descriptor = "I") + private final int multiplier; + + @OriginalMember(owner = "client!ie", name = "d", descriptor = "[I") + private final int[] xList; + + @OriginalMember(owner = "client!ie", name = "", descriptor = "()V") + public VorbisFloor() { + @Pc(4) int type = VorbisSound.readBits(16); + if (type != 1) { + throw new RuntimeException(); + } + @Pc(14) int local14 = VorbisSound.readBits(5); + @Pc(16) int local16 = 0; + this.classList = new int[local14]; + @Pc(22) int local22; + @Pc(28) int local28; + for (local22 = 0; local22 < local14; local22++) { + local28 = VorbisSound.readBits(4); + this.classList[local22] = local28; + if (local28 >= local16) { + local16 = local28 + 1; + } + } + this.classDimensions = new int[local16]; + this.subclasses = new int[local16]; + this.classMasterBooks = new int[local16]; + this.subclassBooks = new int[local16][]; + @Pc(101) int local101; + for (local22 = 0; local22 < local16; local22++) { + this.classDimensions[local22] = VorbisSound.readBits(3) + 1; + local28 = this.subclasses[local22] = VorbisSound.readBits(2); + if (local28 != 0) { + this.classMasterBooks[local22] = VorbisSound.readBits(8); + } + local28 = 0x1 << local28; + @Pc(94) int[] local94 = new int[local28]; + this.subclassBooks[local22] = local94; + for (local101 = 0; local101 < local28; local101++) { + local94[local101] = VorbisSound.readBits(8) - 1; + } + } + this.multiplier = VorbisSound.readBits(2) + 1; + local22 = VorbisSound.readBits(4); + local28 = 2; + @Pc(128) int local128; + for (local128 = 0; local128 < local14; local128++) { + local28 += this.classDimensions[this.classList[local128]]; + } + this.xList = new int[local28]; + this.xList[0] = 0; + this.xList[1] = 0x1 << local22; + local28 = 2; + for (local128 = 0; local128 < local14; local128++) { + local101 = this.classList[local128]; + for (@Pc(173) int local173 = 0; local173 < this.classDimensions[local101]; local173++) { + this.xList[local28++] = VorbisSound.readBits(local22); + } + } + if (currentXList == null || currentXList.length < local28) { + currentXList = new int[local28]; + y = new int[local28]; + step2Flag = new boolean[local28]; + } + } + + @OriginalMember(owner = "client!ie", name = "a", descriptor = "([II)I") + public static int lowNeighbour(@OriginalArg(0) int[] arg0, @OriginalArg(1) int arg1) { + @Pc(3) int local3 = arg0[arg1]; + @Pc(5) int local5 = -1; + @Pc(7) int local7 = Integer.MIN_VALUE; + for (@Pc(9) int local9 = 0; local9 < arg1; local9++) { + @Pc(16) int local16 = arg0[local9]; + if (local16 < local3 && local16 > local7) { + local5 = local9; + local7 = local16; + } + } + return local5; + } + + @OriginalMember(owner = "client!ie", name = "b", descriptor = "([II)I") + public static int highNeighbour(@OriginalArg(0) int[] arg0, @OriginalArg(1) int arg1) { + @Pc(3) int local3 = arg0[arg1]; + @Pc(5) int local5 = -1; + @Pc(7) int local7 = Integer.MAX_VALUE; + for (@Pc(9) int local9 = 0; local9 < arg1; local9++) { + @Pc(16) int local16 = arg0[local9]; + if (local16 > local3 && local16 < local7) { + local5 = local9; + local7 = local16; + } + } + return local5; + } + + @OriginalMember(owner = "client!ie", name = "a", descriptor = "(IIII[FI)V") + private void renderLine(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1, @OriginalArg(2) int arg2, @OriginalArg(3) int arg3, @OriginalArg(4) float[] arg4, @OriginalArg(5) int arg5) { + @Pc(3) int local3 = arg3 - arg1; + @Pc(7) int local7 = arg2 - arg0; + @Pc(14) int local14 = local3 < 0 ? -local3 : local3; + @Pc(18) int local18 = local3 / local7; + @Pc(20) int local20 = arg1; + @Pc(22) int local22 = 0; + @Pc(32) int local32 = local3 < 0 ? local18 - 1 : local18 + 1; + @Pc(43) int local43 = local14 - (local18 < 0 ? -local18 : local18) * local7; + arg4[arg0] *= INVERSE_DB_TABLE[arg1]; + if (arg2 > arg5) { + arg2 = arg5; + } + for (@Pc(61) int local61 = arg0 + 1; local61 < arg2; local61++) { + local22 += local43; + if (local22 >= local7) { + local22 -= local7; + local20 += local32; + } else { + local20 += local18; + } + arg4[local61] *= INVERSE_DB_TABLE[local20]; + } + } + + @OriginalMember(owner = "client!ie", name = "a", descriptor = "(II)V") + private void sort(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1) { + if (arg0 >= arg1) { + return; + } + @Pc(5) int local5 = arg0; + @Pc(9) int local9 = currentXList[arg0]; + @Pc(13) int local13 = y[arg0]; + @Pc(17) boolean local17 = step2Flag[arg0]; + for (@Pc(21) int local21 = arg0 + 1; local21 <= arg1; local21++) { + @Pc(28) int local28 = currentXList[local21]; + if (local28 < local9) { + currentXList[local5] = local28; + y[local5] = y[local21]; + step2Flag[local5] = step2Flag[local21]; + local5++; + currentXList[local21] = currentXList[local5]; + y[local21] = y[local5]; + step2Flag[local21] = step2Flag[local5]; + } + } + currentXList[local5] = local9; + y[local5] = local13; + step2Flag[local5] = local17; + this.sort(arg0, local5 - 1); + this.sort(local5 + 1, arg1); + } + + @OriginalMember(owner = "client!ie", name = "a", descriptor = "(IIIII)I") + private int renderPoint(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1, @OriginalArg(2) int arg2, @OriginalArg(3) int arg3, @OriginalArg(4) int arg4) { + @Pc(3) int local3 = arg3 - arg1; + @Pc(7) int local7 = arg2 - arg0; + @Pc(14) int local14 = local3 < 0 ? -local3 : local3; + @Pc(20) int local20 = local14 * (arg4 - arg0); + @Pc(24) int local24 = local20 / local7; + return local3 < 0 ? arg1 - local24 : arg1 + local24; + } + + @OriginalMember(owner = "client!ie", name = "a", descriptor = "([FI)V") + public final void synthesize(@OriginalArg(0) float[] arg0, @OriginalArg(1) int arg1) { + @Pc(3) int local3 = this.xList.length; + @Pc(10) int local10 = RANGES[this.multiplier - 1]; + step2Flag[0] = step2Flag[1] = true; + @Pc(20) int local20; + @Pc(27) int local27; + @Pc(31) int local31; + @Pc(49) int local49; + @Pc(53) int local53; + for (local20 = 2; local20 < local3; local20++) { + local27 = lowNeighbour(currentXList, local20); + local31 = highNeighbour(currentXList, local20); + local49 = this.renderPoint(currentXList[local27], y[local27], currentXList[local31], y[local31], currentXList[local20]); + local53 = y[local20]; + @Pc(57) int local57 = local10 - local49; + @Pc(68) int local68 = (local57 < local49 ? local57 : local49) << 1; + if (local53 == 0) { + step2Flag[local20] = false; + y[local20] = local49; + } else { + step2Flag[local27] = step2Flag[local31] = true; + step2Flag[local20] = true; + if (local53 >= local68) { + y[local20] = local57 > local49 ? local53 + local49 - local49 : local49 - local53 + local57 - 1; + } else { + y[local20] = (local53 & 0x1) == 0 ? local49 + local53 / 2 : local49 - (local53 + 1) / 2; + } + } + } + this.sort(0, local3 - 1); + local20 = 0; + local27 = y[0] * this.multiplier; + for (local31 = 1; local31 < local3; local31++) { + if (step2Flag[local31]) { + local49 = currentXList[local31]; + local53 = y[local31] * this.multiplier; + this.renderLine(local20, local27, local49, local53, arg0, arg1); + if (local49 >= arg1) { + return; + } + local20 = local49; + local27 = local53; + } + } + @Pc(193) float local193 = INVERSE_DB_TABLE[local27]; + for (local49 = local20; local49 < arg1; local49++) { + arg0[local49] *= local193; + } + } + + @OriginalMember(owner = "client!ie", name = "b", descriptor = "()Z") + public final boolean decodePacket() { + @Pc(5) boolean local5 = VorbisSound.readBit() != 0; + if (!local5) { + return false; + } + @Pc(13) int local13 = this.xList.length; + @Pc(15) int local15; + for (local15 = 0; local15 < local13; local15++) { + currentXList[local15] = this.xList[local15]; + } + local15 = RANGES[this.multiplier - 1]; + @Pc(40) int local40 = IntUtils.bitCount(local15 - 1); + y[0] = VorbisSound.readBits(local40); + y[1] = VorbisSound.readBits(local40); + @Pc(52) int local52 = 2; + for (@Pc(54) int local54 = 0; local54 < this.classList.length; local54++) { + @Pc(64) int local64 = this.classList[local54]; + @Pc(69) int local69 = this.classDimensions[local64]; + @Pc(74) int local74 = this.subclasses[local64]; + @Pc(80) int local80 = (0x1 << local74) - 1; + @Pc(82) int local82 = 0; + if (local74 > 0) { + local82 = VorbisSound.codebooks[this.classMasterBooks[local64]].decodeScalar(); + } + for (@Pc(94) int local94 = 0; local94 < local69; local94++) { + @Pc(106) int local106 = this.subclassBooks[local64][local82 & local80]; + local82 >>>= local74; + y[local52++] = local106 >= 0 ? VorbisSound.codebooks[local106].decodeScalar() : 0; + } + } + return true; + } } diff --git a/client/src/main/java/rt4/VorbisMapping.java b/client/src/main/java/rt4/VorbisMapping.java index 3fe27874..88c45e7c 100644 --- a/client/src/main/java/rt4/VorbisMapping.java +++ b/client/src/main/java/rt4/VorbisMapping.java @@ -8,34 +8,34 @@ import org.openrs2.deob.annotation.Pc; public final class VorbisMapping { @OriginalMember(owner = "client!uk", name = "d", descriptor = "I") - public final int anInt5563; + public final int submaps; @OriginalMember(owner = "client!uk", name = "a", descriptor = "I") - public int anInt5562; + public int mux; @OriginalMember(owner = "client!uk", name = "b", descriptor = "[I") - public final int[] anIntArray490; + public final int[] submapFloor; @OriginalMember(owner = "client!uk", name = "c", descriptor = "[I") - public final int[] anIntArray491; + public final int[] submapResidue; @OriginalMember(owner = "client!uk", name = "", descriptor = "()V") public VorbisMapping() { - VorbisSound.method2350(16); - this.anInt5563 = VorbisSound.method2346() == 0 ? 1 : VorbisSound.method2350(4) + 1; - if (VorbisSound.method2346() != 0) { - VorbisSound.method2350(8); + VorbisSound.readBits(16); + this.submaps = VorbisSound.readBit() == 0 ? 1 : VorbisSound.readBits(4) + 1; + if (VorbisSound.readBit() != 0) { + VorbisSound.readBits(8); } - VorbisSound.method2350(2); - if (this.anInt5563 > 1) { - this.anInt5562 = VorbisSound.method2350(4); + VorbisSound.readBits(2); + if (this.submaps > 1) { + this.mux = VorbisSound.readBits(4); } - this.anIntArray490 = new int[this.anInt5563]; - this.anIntArray491 = new int[this.anInt5563]; - for (@Pc(42) int local42 = 0; local42 < this.anInt5563; local42++) { - VorbisSound.method2350(8); - this.anIntArray490[local42] = VorbisSound.method2350(8); - this.anIntArray491[local42] = VorbisSound.method2350(8); + this.submapFloor = new int[this.submaps]; + this.submapResidue = new int[this.submaps]; + for (@Pc(42) int local42 = 0; local42 < this.submaps; local42++) { + VorbisSound.readBits(8); + this.submapFloor[local42] = VorbisSound.readBits(8); + this.submapResidue[local42] = VorbisSound.readBits(8); } } } diff --git a/client/src/main/java/rt4/VorbisRange.java b/client/src/main/java/rt4/VorbisRange.java deleted file mode 100644 index d565233d..00000000 --- a/client/src/main/java/rt4/VorbisRange.java +++ /dev/null @@ -1,278 +0,0 @@ -package rt4; - -import org.openrs2.deob.annotation.OriginalArg; -import org.openrs2.deob.annotation.OriginalClass; -import org.openrs2.deob.annotation.OriginalMember; -import org.openrs2.deob.annotation.Pc; - -@OriginalClass("client!ie") -public final class VorbisRange { - - @OriginalMember(owner = "client!ie", name = "k", descriptor = "[I") - public static final int[] anIntArray267 = new int[] { 256, 128, 86, 64 }; - @OriginalMember(owner = "client!ie", name = "b", descriptor = "[Z") - public static boolean[] aBooleanArray60; - @OriginalMember(owner = "client!ie", name = "h", descriptor = "[I") - public static int[] anIntArray264; - @OriginalMember(owner = "client!ie", name = "j", descriptor = "[I") - public static int[] anIntArray266; - @OriginalMember(owner = "client!ie", name = "e", descriptor = "[I") - private final int[] anIntArray262; - - @OriginalMember(owner = "client!ie", name = "i", descriptor = "[I") - private final int[] anIntArray265; - - @OriginalMember(owner = "client!ie", name = "g", descriptor = "[I") - private final int[] anIntArray263; - - @OriginalMember(owner = "client!ie", name = "a", descriptor = "[I") - private final int[] anIntArray260; - - @OriginalMember(owner = "client!ie", name = "c", descriptor = "[[I") - private final int[][] anIntArrayArray20; - - @OriginalMember(owner = "client!ie", name = "f", descriptor = "I") - private final int anInt2880; - - @OriginalMember(owner = "client!ie", name = "d", descriptor = "[I") - private final int[] anIntArray261; - - @OriginalMember(owner = "client!ie", name = "", descriptor = "()V") - public VorbisRange() { - @Pc(4) int local4 = VorbisSound.method2350(16); - if (local4 != 1) { - throw new RuntimeException(); - } - @Pc(14) int local14 = VorbisSound.method2350(5); - @Pc(16) int local16 = 0; - this.anIntArray262 = new int[local14]; - @Pc(22) int local22; - @Pc(28) int local28; - for (local22 = 0; local22 < local14; local22++) { - local28 = VorbisSound.method2350(4); - this.anIntArray262[local22] = local28; - if (local28 >= local16) { - local16 = local28 + 1; - } - } - this.anIntArray265 = new int[local16]; - this.anIntArray263 = new int[local16]; - this.anIntArray260 = new int[local16]; - this.anIntArrayArray20 = new int[local16][]; - @Pc(101) int local101; - for (local22 = 0; local22 < local16; local22++) { - this.anIntArray265[local22] = VorbisSound.method2350(3) + 1; - local28 = this.anIntArray263[local22] = VorbisSound.method2350(2); - if (local28 != 0) { - this.anIntArray260[local22] = VorbisSound.method2350(8); - } - local28 = 0x1 << local28; - @Pc(94) int[] local94 = new int[local28]; - this.anIntArrayArray20[local22] = local94; - for (local101 = 0; local101 < local28; local101++) { - local94[local101] = VorbisSound.method2350(8) - 1; - } - } - this.anInt2880 = VorbisSound.method2350(2) + 1; - local22 = VorbisSound.method2350(4); - local28 = 2; - @Pc(128) int local128; - for (local128 = 0; local128 < local14; local128++) { - local28 += this.anIntArray265[this.anIntArray262[local128]]; - } - this.anIntArray261 = new int[local28]; - this.anIntArray261[0] = 0; - this.anIntArray261[1] = 0x1 << local22; - local28 = 2; - for (local128 = 0; local128 < local14; local128++) { - local101 = this.anIntArray262[local128]; - for (@Pc(173) int local173 = 0; local173 < this.anIntArray265[local101]; local173++) { - this.anIntArray261[local28++] = VorbisSound.method2350(local22); - } - } - if (anIntArray264 == null || anIntArray264.length < local28) { - anIntArray264 = new int[local28]; - anIntArray266 = new int[local28]; - aBooleanArray60 = new boolean[local28]; - } - } - - @OriginalMember(owner = "client!ie", name = "a", descriptor = "([II)I") - public static int method2268(@OriginalArg(0) int[] arg0, @OriginalArg(1) int arg1) { - @Pc(3) int local3 = arg0[arg1]; - @Pc(5) int local5 = -1; - @Pc(7) int local7 = Integer.MIN_VALUE; - for (@Pc(9) int local9 = 0; local9 < arg1; local9++) { - @Pc(16) int local16 = arg0[local9]; - if (local16 < local3 && local16 > local7) { - local5 = local9; - local7 = local16; - } - } - return local5; - } - - @OriginalMember(owner = "client!ie", name = "b", descriptor = "([II)I") - public static int method2270(@OriginalArg(0) int[] arg0, @OriginalArg(1) int arg1) { - @Pc(3) int local3 = arg0[arg1]; - @Pc(5) int local5 = -1; - @Pc(7) int local7 = Integer.MAX_VALUE; - for (@Pc(9) int local9 = 0; local9 < arg1; local9++) { - @Pc(16) int local16 = arg0[local9]; - if (local16 > local3 && local16 < local7) { - local5 = local9; - local7 = local16; - } - } - return local5; - } - - @OriginalMember(owner = "client!ie", name = "a", descriptor = "(IIII[FI)V") - private void method2265(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1, @OriginalArg(2) int arg2, @OriginalArg(3) int arg3, @OriginalArg(4) float[] arg4, @OriginalArg(5) int arg5) { - @Pc(3) int local3 = arg3 - arg1; - @Pc(7) int local7 = arg2 - arg0; - @Pc(14) int local14 = local3 < 0 ? -local3 : local3; - @Pc(18) int local18 = local3 / local7; - @Pc(20) int local20 = arg1; - @Pc(22) int local22 = 0; - @Pc(32) int local32 = local3 < 0 ? local18 - 1 : local18 + 1; - @Pc(43) int local43 = local14 - (local18 < 0 ? -local18 : local18) * local7; - arg4[arg0] *= VorbisFloor.INVERSE_DB_TABLE[arg1]; - if (arg2 > arg5) { - arg2 = arg5; - } - for (@Pc(61) int local61 = arg0 + 1; local61 < arg2; local61++) { - local22 += local43; - if (local22 >= local7) { - local22 -= local7; - local20 += local32; - } else { - local20 += local18; - } - arg4[local61] *= VorbisFloor.INVERSE_DB_TABLE[local20]; - } - } - - @OriginalMember(owner = "client!ie", name = "a", descriptor = "(II)V") - private void method2266(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1) { - if (arg0 >= arg1) { - return; - } - @Pc(5) int local5 = arg0; - @Pc(9) int local9 = anIntArray264[arg0]; - @Pc(13) int local13 = anIntArray266[arg0]; - @Pc(17) boolean local17 = aBooleanArray60[arg0]; - for (@Pc(21) int local21 = arg0 + 1; local21 <= arg1; local21++) { - @Pc(28) int local28 = anIntArray264[local21]; - if (local28 < local9) { - anIntArray264[local5] = local28; - anIntArray266[local5] = anIntArray266[local21]; - aBooleanArray60[local5] = aBooleanArray60[local21]; - local5++; - anIntArray264[local21] = anIntArray264[local5]; - anIntArray266[local21] = anIntArray266[local5]; - aBooleanArray60[local21] = aBooleanArray60[local5]; - } - } - anIntArray264[local5] = local9; - anIntArray266[local5] = local13; - aBooleanArray60[local5] = local17; - this.method2266(arg0, local5 - 1); - this.method2266(local5 + 1, arg1); - } - - @OriginalMember(owner = "client!ie", name = "a", descriptor = "(IIIII)I") - private int method2267(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1, @OriginalArg(2) int arg2, @OriginalArg(3) int arg3, @OriginalArg(4) int arg4) { - @Pc(3) int local3 = arg3 - arg1; - @Pc(7) int local7 = arg2 - arg0; - @Pc(14) int local14 = local3 < 0 ? -local3 : local3; - @Pc(20) int local20 = local14 * (arg4 - arg0); - @Pc(24) int local24 = local20 / local7; - return local3 < 0 ? arg1 - local24 : arg1 + local24; - } - - @OriginalMember(owner = "client!ie", name = "a", descriptor = "([FI)V") - public final void method2269(@OriginalArg(0) float[] arg0, @OriginalArg(1) int arg1) { - @Pc(3) int local3 = this.anIntArray261.length; - @Pc(10) int local10 = anIntArray267[this.anInt2880 - 1]; - aBooleanArray60[0] = aBooleanArray60[1] = true; - @Pc(20) int local20; - @Pc(27) int local27; - @Pc(31) int local31; - @Pc(49) int local49; - @Pc(53) int local53; - for (local20 = 2; local20 < local3; local20++) { - local27 = method2268(anIntArray264, local20); - local31 = method2270(anIntArray264, local20); - local49 = this.method2267(anIntArray264[local27], anIntArray266[local27], anIntArray264[local31], anIntArray266[local31], anIntArray264[local20]); - local53 = anIntArray266[local20]; - @Pc(57) int local57 = local10 - local49; - @Pc(68) int local68 = (local57 < local49 ? local57 : local49) << 1; - if (local53 == 0) { - aBooleanArray60[local20] = false; - anIntArray266[local20] = local49; - } else { - aBooleanArray60[local27] = aBooleanArray60[local31] = true; - aBooleanArray60[local20] = true; - if (local53 >= local68) { - anIntArray266[local20] = local57 > local49 ? local53 + local49 - local49 : local49 - local53 + local57 - 1; - } else { - anIntArray266[local20] = (local53 & 0x1) == 0 ? local49 + local53 / 2 : local49 - (local53 + 1) / 2; - } - } - } - this.method2266(0, local3 - 1); - local20 = 0; - local27 = anIntArray266[0] * this.anInt2880; - for (local31 = 1; local31 < local3; local31++) { - if (aBooleanArray60[local31]) { - local49 = anIntArray264[local31]; - local53 = anIntArray266[local31] * this.anInt2880; - this.method2265(local20, local27, local49, local53, arg0, arg1); - if (local49 >= arg1) { - return; - } - local20 = local49; - local27 = local53; - } - } - @Pc(193) float local193 = VorbisFloor.INVERSE_DB_TABLE[local27]; - for (local49 = local20; local49 < arg1; local49++) { - arg0[local49] *= local193; - } - } - - @OriginalMember(owner = "client!ie", name = "b", descriptor = "()Z") - public final boolean method2272() { - @Pc(5) boolean local5 = VorbisSound.method2346() != 0; - if (!local5) { - return false; - } - @Pc(13) int local13 = this.anIntArray261.length; - @Pc(15) int local15; - for (local15 = 0; local15 < local13; local15++) { - anIntArray264[local15] = this.anIntArray261[local15]; - } - local15 = anIntArray267[this.anInt2880 - 1]; - @Pc(40) int local40 = VorbisCodebook.method3674(local15 - 1); - anIntArray266[0] = VorbisSound.method2350(local40); - anIntArray266[1] = VorbisSound.method2350(local40); - @Pc(52) int local52 = 2; - for (@Pc(54) int local54 = 0; local54 < this.anIntArray262.length; local54++) { - @Pc(64) int local64 = this.anIntArray262[local54]; - @Pc(69) int local69 = this.anIntArray265[local64]; - @Pc(74) int local74 = this.anIntArray263[local64]; - @Pc(80) int local80 = (0x1 << local74) - 1; - @Pc(82) int local82 = 0; - if (local74 > 0) { - local82 = VorbisSound.aClass78Array1[this.anIntArray260[local64]].method2415(); - } - for (@Pc(94) int local94 = 0; local94 < local69; local94++) { - @Pc(106) int local106 = this.anIntArrayArray20[local64][local82 & local80]; - local82 >>>= local74; - anIntArray266[local52++] = local106 >= 0 ? VorbisSound.aClass78Array1[local106].method2415() : 0; - } - } - return true; - } -} diff --git a/client/src/main/java/rt4/VorbisResidue.java b/client/src/main/java/rt4/VorbisResidue.java index c85db952..b94fb204 100644 --- a/client/src/main/java/rt4/VorbisResidue.java +++ b/client/src/main/java/rt4/VorbisResidue.java @@ -9,47 +9,47 @@ import org.openrs2.deob.annotation.Pc; public final class VorbisResidue { @OriginalMember(owner = "client!vb", name = "c", descriptor = "I") - private final int anInt5679 = VorbisSound.method2350(16); + private final int type = VorbisSound.readBits(16); @OriginalMember(owner = "client!vb", name = "b", descriptor = "I") - private final int anInt5678 = VorbisSound.method2350(24); + private final int begin = VorbisSound.readBits(24); @OriginalMember(owner = "client!vb", name = "d", descriptor = "I") - private final int anInt5680 = VorbisSound.method2350(24); + private final int end = VorbisSound.readBits(24); @OriginalMember(owner = "client!vb", name = "e", descriptor = "I") - private final int anInt5681 = VorbisSound.method2350(24) + 1; + private final int partitionSize = VorbisSound.readBits(24) + 1; @OriginalMember(owner = "client!vb", name = "g", descriptor = "I") - private final int anInt5682 = VorbisSound.method2350(6) + 1; + private final int classifications = VorbisSound.readBits(6) + 1; @OriginalMember(owner = "client!vb", name = "a", descriptor = "I") - private final int anInt5677 = VorbisSound.method2350(8); + private final int classBook = VorbisSound.readBits(8); @OriginalMember(owner = "client!vb", name = "f", descriptor = "[I") - private final int[] anIntArray511; + private final int[] books; @OriginalMember(owner = "client!vb", name = "", descriptor = "()V") public VorbisResidue() { - @Pc(33) int[] local33 = new int[this.anInt5682]; + @Pc(33) int[] local33 = new int[this.classifications]; @Pc(35) int local35; - for (local35 = 0; local35 < this.anInt5682; local35++) { + for (local35 = 0; local35 < this.classifications; local35++) { @Pc(41) int local41 = 0; - @Pc(44) int local44 = VorbisSound.method2350(3); - @Pc(50) boolean local50 = VorbisSound.method2346() != 0; + @Pc(44) int local44 = VorbisSound.readBits(3); + @Pc(50) boolean local50 = VorbisSound.readBit() != 0; if (local50) { - local41 = VorbisSound.method2350(5); + local41 = VorbisSound.readBits(5); } local33[local35] = local41 << 3 | local44; } - this.anIntArray511 = new int[this.anInt5682 * 8]; - for (local35 = 0; local35 < this.anInt5682 * 8; local35++) { - this.anIntArray511[local35] = (local33[local35 >> 3] & 0x1 << (local35 & 0x7)) == 0 ? -1 : VorbisSound.method2350(8); + this.books = new int[this.classifications * 8]; + for (local35 = 0; local35 < this.classifications * 8; local35++) { + this.books[local35] = (local33[local35 >> 3] & 0x1 << (local35 & 0x7)) == 0 ? -1 : VorbisSound.readBits(8); } } @OriginalMember(owner = "client!vb", name = "a", descriptor = "([FIZ)V") - public final void method4450(@OriginalArg(0) float[] arg0, @OriginalArg(1) int arg1, @OriginalArg(2) boolean arg2) { + public final void synthesize(@OriginalArg(0) float[] arg0, @OriginalArg(1) int arg1, @OriginalArg(2) boolean arg2) { @Pc(1) int local1; for (local1 = 0; local1 < arg1; local1++) { arg0[local1] = 0.0F; @@ -57,9 +57,9 @@ public final class VorbisResidue { if (arg2) { return; } - local1 = VorbisSound.aClass78Array1[this.anInt5677].anInt3055; - @Pc(25) int local25 = this.anInt5680 - this.anInt5678; - @Pc(30) int local30 = local25 / this.anInt5681; + local1 = VorbisSound.codebooks[this.classBook].dimensions; + @Pc(25) int local25 = this.end - this.begin; + @Pc(30) int local30 = local25 / this.partitionSize; @Pc(33) int[] local33 = new int[local30]; for (@Pc(35) int local35 = 0; local35 < 8; local35++) { @Pc(40) int local40 = 0; @@ -67,34 +67,34 @@ public final class VorbisResidue { @Pc(51) int local51; @Pc(55) int local55; if (local35 == 0) { - local51 = VorbisSound.aClass78Array1[this.anInt5677].method2415(); + local51 = VorbisSound.codebooks[this.classBook].decodeScalar(); for (local55 = local1 - 1; local55 >= 0; local55--) { if (local40 + local55 < local30) { - local33[local40 + local55] = local51 % this.anInt5682; + local33[local40 + local55] = local51 % this.classifications; } - local51 /= this.anInt5682; + local51 /= this.classifications; } } for (local51 = 0; local51 < local1; local51++) { local55 = local33[local40]; - @Pc(96) int local96 = this.anIntArray511[local55 * 8 + local35]; + @Pc(96) int local96 = this.books[local55 * 8 + local35]; if (local96 >= 0) { - @Pc(106) int local106 = this.anInt5678 + local40 * this.anInt5681; - @Pc(110) VorbisCodebook local110 = VorbisSound.aClass78Array1[local96]; + @Pc(106) int local106 = this.begin + local40 * this.partitionSize; + @Pc(110) VorbisCodebook local110 = VorbisSound.codebooks[local96]; @Pc(119) int local119; - if (this.anInt5679 == 0) { - local119 = this.anInt5681 / local110.anInt3055; + if (this.type == 0) { + local119 = this.partitionSize / local110.dimensions; for (@Pc(121) int local121 = 0; local121 < local119; local121++) { - @Pc(127) float[] local127 = local110.method2413(); - for (@Pc(129) int local129 = 0; local129 < local110.anInt3055; local129++) { + @Pc(127) float[] local127 = local110.decodeVq(); + for (@Pc(129) int local129 = 0; local129 < local110.dimensions; local129++) { arg0[local106 + local121 + local129 * local119] += local127[local129]; } } } else { local119 = 0; - while (local119 < this.anInt5681) { - @Pc(162) float[] local162 = local110.method2413(); - for (@Pc(164) int local164 = 0; local164 < local110.anInt3055; local164++) { + while (local119 < this.partitionSize) { + @Pc(162) float[] local162 = local110.decodeVq(); + for (@Pc(164) int local164 = 0; local164 < local110.dimensions; local164++) { arg0[local106 + local119] += local162[local164]; local119++; } diff --git a/client/src/main/java/rt4/VorbisSound.java b/client/src/main/java/rt4/VorbisSound.java index 99e6155b..5b8a0aa9 100644 --- a/client/src/main/java/rt4/VorbisSound.java +++ b/client/src/main/java/rt4/VorbisSound.java @@ -9,100 +9,100 @@ import org.openrs2.deob.annotation.Pc; public final class VorbisSound extends Node { @OriginalMember(owner = "client!jc", name = "p", descriptor = "[F") - public static float[] aFloatArray9; + public static float[] trigB1; @OriginalMember(owner = "client!jc", name = "q", descriptor = "[F") - public static float[] aFloatArray10; + public static float[] trigC1; @OriginalMember(owner = "client!jc", name = "t", descriptor = "[I") - public static int[] anIntArray276; + public static int[] bitReverse0; @OriginalMember(owner = "client!jc", name = "u", descriptor = "[Lclient!vb;") - public static VorbisResidue[] aClass152Array1; + public static VorbisResidue[] residues; @OriginalMember(owner = "client!jc", name = "v", descriptor = "[Z") - public static boolean[] aBooleanArray63; + public static boolean[] modeBlockFlags; @OriginalMember(owner = "client!jc", name = "y", descriptor = "I") - public static int anInt2975; + public static int blockSize1; @OriginalMember(owner = "client!jc", name = "A", descriptor = "[Lclient!uk;") - public static VorbisMapping[] aClass151Array1; + public static VorbisMapping[] mappings; @OriginalMember(owner = "client!jc", name = "B", descriptor = "[F") - public static float[] aFloatArray12; + public static float[] trigA1; @OriginalMember(owner = "client!jc", name = "C", descriptor = "[F") - public static float[] aFloatArray13; + public static float[] trigA0; @OriginalMember(owner = "client!jc", name = "E", descriptor = "I") - public static int anInt2978; + public static int blockSize0; @OriginalMember(owner = "client!jc", name = "F", descriptor = "[F") - public static float[] aFloatArray14; + public static float[] vector; @OriginalMember(owner = "client!jc", name = "I", descriptor = "[Lclient!ji;") - public static VorbisCodebook[] aClass78Array1; + public static VorbisCodebook[] codebooks; @OriginalMember(owner = "client!jc", name = "J", descriptor = "[Lclient!ie;") - public static VorbisRange[] aClass67Array1; + public static VorbisFloor[] floors; @OriginalMember(owner = "client!jc", name = "L", descriptor = "[I") - public static int[] anIntArray277; + public static int[] bitReverse1; @OriginalMember(owner = "client!jc", name = "P", descriptor = "[F") - public static float[] aFloatArray15; + public static float[] trigB0; @OriginalMember(owner = "client!jc", name = "S", descriptor = "[F") - public static float[] aFloatArray16; + public static float[] trigC0; @OriginalMember(owner = "client!jc", name = "W", descriptor = "[I") - public static int[] anIntArray278; + public static int[] modeMappings; @OriginalMember(owner = "client!jc", name = "G", descriptor = "I") - private static int anInt2979; + private static int position; @OriginalMember(owner = "client!jc", name = "Q", descriptor = "I") - private static int anInt2982; + private static int bitPosition; @OriginalMember(owner = "client!jc", name = "T", descriptor = "[B") - private static byte[] aByteArray42; + private static byte[] bytes; @OriginalMember(owner = "client!jc", name = "H", descriptor = "Z") private static boolean aBoolean149 = false; @OriginalMember(owner = "client!jc", name = "r", descriptor = "I") - private int anInt2973; + private int prevN; @OriginalMember(owner = "client!jc", name = "s", descriptor = "I") - private int anInt2974; + private int samplesLen; @OriginalMember(owner = "client!jc", name = "w", descriptor = "[F") - private float[] aFloatArray11; + private float[] prevVector; @OriginalMember(owner = "client!jc", name = "x", descriptor = "Z") private boolean aBoolean148; @OriginalMember(owner = "client!jc", name = "z", descriptor = "I") - private int anInt2976; + private int start; @OriginalMember(owner = "client!jc", name = "D", descriptor = "I") - private int anInt2977; + private int end; @OriginalMember(owner = "client!jc", name = "K", descriptor = "I") - private int anInt2980; + private int rate; @OriginalMember(owner = "client!jc", name = "M", descriptor = "[[B") - private byte[][] aByteArrayArray10; + private byte[][] packets; @OriginalMember(owner = "client!jc", name = "N", descriptor = "Z") - private boolean aBoolean150; + private boolean prevNoResidue; @OriginalMember(owner = "client!jc", name = "O", descriptor = "I") - private int anInt2981; + private int prevQuarter; @OriginalMember(owner = "client!jc", name = "R", descriptor = "[B") - private byte[] aByteArray41; + private byte[] samples; @OriginalMember(owner = "client!jc", name = "U", descriptor = "I") - private int anInt2983; + private int packetIndex; @OriginalMember(owner = "client!jc", name = "V", descriptor = "I") - private int anInt2984; + private int sampleIndex; @OriginalMember(owner = "client!jc", name = "", descriptor = "([B)V") - public VorbisSound(@OriginalArg(0) byte[] arg0) { - this.method2342(arg0); + public VorbisSound(@OriginalArg(0) byte[] bytes) { + this.decode(bytes); } @OriginalMember(owner = "client!jc", name = "c", descriptor = "(I)F") - public static float method2340(@OriginalArg(0) int arg0) { - @Pc(3) int local3 = arg0 & 0x1FFFFF; - @Pc(7) int local7 = arg0 & Integer.MIN_VALUE; - @Pc(13) int local13 = arg0 >> 21 & 0x3FF; - if (local7 != 0) { - local3 = -local3; + public static float float32Unpack(@OriginalArg(0) int x) { + @Pc(3) int mantissa = x & 0x1FFFFF; + @Pc(7) int sign = x & Integer.MIN_VALUE; + @Pc(13) int exponent = x >> 21 & 0x3FF; + if (sign != 0) { + mantissa = -mantissa; } - return (float) ((double) local3 * Math.pow(2.0D, (double) (local13 - 788))); + return (float) ((double) mantissa * Math.pow(2.0D, exponent - 788)); } @OriginalMember(owner = "client!jc", name = "a", descriptor = "(Lclient!ve;)Z") @@ -130,34 +130,34 @@ public final class VorbisSound extends Node { } @OriginalMember(owner = "client!jc", name = "b", descriptor = "()I") - public static int method2346() { - @Pc(7) int local7 = aByteArray42[anInt2979] >> anInt2982 & 0x1; - anInt2982++; - anInt2979 += anInt2982 >> 3; - anInt2982 &= 0x7; + public static int readBit() { + @Pc(7) int local7 = bytes[position] >> bitPosition & 0x1; + bitPosition++; + position += bitPosition >> 3; + bitPosition &= 0x7; return local7; } @OriginalMember(owner = "client!jc", name = "a", descriptor = "([BI)V") - public static void method2347(@OriginalArg(0) byte[] arg0) { - aByteArray42 = arg0; - anInt2979 = 0; - anInt2982 = 0; + public static void setBytes(@OriginalArg(0) byte[] arg0) { + bytes = arg0; + position = 0; + bitPosition = 0; } @OriginalMember(owner = "client!jc", name = "b", descriptor = "([B)V") private static void method2349(@OriginalArg(0) byte[] arg0) { - method2347(arg0); - anInt2978 = 0x1 << method2350(4); - anInt2975 = 0x1 << method2350(4); - aFloatArray14 = new float[anInt2975]; + setBytes(arg0); + blockSize0 = 0x1 << readBits(4); + blockSize1 = 0x1 << readBits(4); + vector = new float[blockSize1]; @Pc(17) int local17; @Pc(26) int local26; @Pc(30) int local30; @Pc(34) int local34; @Pc(38) int local38; for (local17 = 0; local17 < 2; local17++) { - local26 = local17 == 0 ? anInt2978 : anInt2975; + local26 = local17 == 0 ? blockSize0 : blockSize1; local30 = local26 >> 1; local34 = local26 >> 2; local38 = local26 >> 3; @@ -177,75 +177,75 @@ public final class VorbisSound extends Node { local138[local140 * 2 + 1] = -((float) Math.sin((double) (local140 * 4 + 2) * 3.141592653589793D / (double) local26)); } @Pc(187) int[] local187 = new int[local38]; - @Pc(193) int local193 = VorbisCodebook.method3674(local38 - 1); + @Pc(193) int local193 = IntUtils.bitCount(local38 - 1); for (@Pc(195) int local195 = 0; local195 < local38; local195++) { local187[local195] = method667(local193, local195); } if (local17 == 0) { - aFloatArray13 = local41; - aFloatArray15 = local86; - aFloatArray16 = local138; - anIntArray276 = local187; + trigA0 = local41; + trigB0 = local86; + trigC0 = local138; + bitReverse0 = local187; } else { - aFloatArray12 = local41; - aFloatArray9 = local86; - aFloatArray10 = local138; - anIntArray277 = local187; + trigA1 = local41; + trigB1 = local86; + trigC1 = local138; + bitReverse1 = local187; } } - local17 = method2350(8) + 1; - aClass78Array1 = new VorbisCodebook[local17]; + local17 = readBits(8) + 1; + codebooks = new VorbisCodebook[local17]; for (local26 = 0; local26 < local17; local26++) { - aClass78Array1[local26] = new VorbisCodebook(); + codebooks[local26] = new VorbisCodebook(); } - local26 = method2350(6) + 1; + local26 = readBits(6) + 1; for (local30 = 0; local30 < local26; local30++) { - method2350(16); + readBits(16); } - local26 = method2350(6) + 1; - aClass67Array1 = new VorbisRange[local26]; + local26 = readBits(6) + 1; + floors = new VorbisFloor[local26]; for (local30 = 0; local30 < local26; local30++) { - aClass67Array1[local30] = new VorbisRange(); + floors[local30] = new VorbisFloor(); } - local30 = method2350(6) + 1; - aClass152Array1 = new VorbisResidue[local30]; + local30 = readBits(6) + 1; + residues = new VorbisResidue[local30]; for (local34 = 0; local34 < local30; local34++) { - aClass152Array1[local34] = new VorbisResidue(); + residues[local34] = new VorbisResidue(); } - local34 = method2350(6) + 1; - aClass151Array1 = new VorbisMapping[local34]; + local34 = readBits(6) + 1; + mappings = new VorbisMapping[local34]; for (local38 = 0; local38 < local34; local38++) { - aClass151Array1[local38] = new VorbisMapping(); + mappings[local38] = new VorbisMapping(); } - local38 = method2350(6) + 1; - aBooleanArray63 = new boolean[local38]; - anIntArray278 = new int[local38]; + local38 = readBits(6) + 1; + modeBlockFlags = new boolean[local38]; + modeMappings = new int[local38]; for (@Pc(340) int local340 = 0; local340 < local38; local340++) { - aBooleanArray63[local340] = method2346() != 0; - method2350(16); - method2350(16); - anIntArray278[local340] = method2350(8); + modeBlockFlags[local340] = readBit() != 0; + readBits(16); + readBits(16); + modeMappings[local340] = readBits(8); } } @OriginalMember(owner = "client!jc", name = "e", descriptor = "(I)I") - public static int method2350(@OriginalArg(0) int arg0) { + public static int readBits(@OriginalArg(0) int len) { @Pc(1) int local1 = 0; @Pc(3) int local3 = 0; @Pc(12) int local12; - while (arg0 >= 8 - anInt2982) { - local12 = 8 - anInt2982; + while (len >= 8 - bitPosition) { + local12 = 8 - bitPosition; @Pc(18) int local18 = (0x1 << local12) - 1; - local1 += (aByteArray42[anInt2979] >> anInt2982 & local18) << local3; - anInt2982 = 0; - anInt2979++; + local1 += (bytes[position] >> bitPosition & local18) << local3; + bitPosition = 0; + position++; local3 += local12; - arg0 -= local12; + len -= local12; } - if (arg0 > 0) { - local12 = (0x1 << arg0) - 1; - local1 += (aByteArray42[anInt2979] >> anInt2982 & local12) << local3; - anInt2982 += arg0; + if (len > 0) { + local12 = (0x1 << len) - 1; + local1 += (bytes[position] >> bitPosition & local12) << local3; + bitPosition += len; } return local1; } @@ -266,288 +266,287 @@ public final class VorbisSound extends Node { if (arg0 != null && arg0[0] <= 0) { return null; } - if (this.aByteArray41 == null) { - this.anInt2973 = 0; - this.aFloatArray11 = new float[anInt2975]; - this.aByteArray41 = new byte[this.anInt2974]; - this.anInt2984 = 0; - this.anInt2983 = 0; + if (this.samples == null) { + this.prevN = 0; + this.prevVector = new float[blockSize1]; + this.samples = new byte[this.samplesLen]; + this.sampleIndex = 0; + this.packetIndex = 0; } - while (this.anInt2983 < this.aByteArrayArray10.length) { + while (this.packetIndex < this.packets.length) { if (arg0 != null && arg0[0] <= 0) { return null; } - @Pc(47) float[] local47 = this.method2348(this.anInt2983); + @Pc(47) float[] local47 = this.decodePacket(this.packetIndex); if (local47 != null) { - @Pc(52) int local52 = this.anInt2984; + @Pc(52) int local52 = this.sampleIndex; @Pc(55) int local55 = local47.length; - if (local55 > this.anInt2974 - local52) { - local55 = this.anInt2974 - local52; + if (local55 > this.samplesLen - local52) { + local55 = this.samplesLen - local52; } for (@Pc(68) int local68 = 0; local68 < local55; local68++) { @Pc(80) int local80 = (int) (local47[local68] * 128.0F + 128.0F); if ((local80 & 0xFFFFFF00) != 0) { local80 = ~local80 >> 31; } - this.aByteArray41[local52++] = (byte) (local80 - 128); + this.samples[local52++] = (byte) (local80 - 128); } if (arg0 != null) { - arg0[0] -= local52 - this.anInt2984; + arg0[0] -= local52 - this.sampleIndex; } - this.anInt2984 = local52; + this.sampleIndex = local52; } - this.anInt2983++; + this.packetIndex++; } - this.aFloatArray11 = null; - @Pc(129) byte[] local129 = this.aByteArray41; - this.aByteArray41 = null; - return new PcmSound(this.anInt2980, local129, this.anInt2976, this.anInt2977, this.aBoolean148); + this.prevVector = null; + @Pc(129) byte[] local129 = this.samples; + this.samples = null; + return new PcmSound(this.rate, local129, this.start, this.end, this.aBoolean148); } @OriginalMember(owner = "client!jc", name = "a", descriptor = "([B)V") - private void method2342(@OriginalArg(0) byte[] arg0) { - @Pc(4) Buffer local4 = new Buffer(arg0); - this.anInt2980 = local4.g4(); - this.anInt2974 = local4.g4(); - this.anInt2976 = local4.g4(); - this.anInt2977 = local4.g4(); - if (this.anInt2977 < 0) { - this.anInt2977 = ~this.anInt2977; + private void decode(@OriginalArg(0) byte[] arg0) { + @Pc(4) Buffer buffer = new Buffer(arg0); + this.rate = buffer.g4(); + this.samplesLen = buffer.g4(); + this.start = buffer.g4(); + this.end = buffer.g4(); + if (this.end < 0) { + this.end = ~this.end; this.aBoolean148 = true; } - @Pc(40) int local40 = local4.g4(); - this.aByteArrayArray10 = new byte[local40][]; - for (@Pc(46) int local46 = 0; local46 < local40; local46++) { - @Pc(51) int local51 = 0; - @Pc(55) int local55; + @Pc(40) int packetsLen = buffer.g4(); + this.packets = new byte[packetsLen][]; + for (@Pc(46) int i = 0; i < packetsLen; i++) { + @Pc(51) int len = 0; + @Pc(55) int n; do { - local55 = local4.g1(); - local51 += local55; - } while (local55 >= 255); - @Pc(67) byte[] local67 = new byte[local51]; - local4.gdata(local51, local67); - this.aByteArrayArray10[local46] = local67; + n = buffer.g1(); + len += n; + } while (n >= 255); + @Pc(67) byte[] packet = new byte[len]; + buffer.gdata(len, packet); + this.packets[i] = packet; } } @OriginalMember(owner = "client!jc", name = "d", descriptor = "(I)[F") - private float[] method2348(@OriginalArg(0) int arg0) { - method2347(this.aByteArrayArray10[arg0]); - method2346(); - @Pc(15) int local15 = method2350(VorbisCodebook.method3674(anIntArray278.length - 1)); - @Pc(19) boolean local19 = aBooleanArray63[local15]; - @Pc(25) int local25 = local19 ? anInt2975 : anInt2978; - @Pc(27) boolean local27 = false; - @Pc(29) boolean local29 = false; - if (local19) { - local27 = method2346() != 0; - local29 = method2346() != 0; + private float[] decodePacket(@OriginalArg(0) int index) { + setBytes(this.packets[index]); + readBit(); + @Pc(15) int modeNumber = readBits(IntUtils.bitCount(modeMappings.length - 1)); + @Pc(19) boolean modeBlockFlag = modeBlockFlags[modeNumber]; + @Pc(25) int n = modeBlockFlag ? blockSize1 : blockSize0; + @Pc(27) boolean previousWindowFlag = false; + @Pc(29) boolean nextWindowFlag = false; + if (modeBlockFlag) { + previousWindowFlag = readBit() != 0; + nextWindowFlag = readBit() != 0; } - @Pc(47) int local47 = local25 >> 1; - @Pc(59) int local59; - @Pc(67) int local67; - @Pc(71) int local71; - if (local19 && !local27) { - local59 = (local25 >> 2) - (anInt2978 >> 2); - local67 = (local25 >> 2) + (anInt2978 >> 2); - local71 = anInt2978 >> 1; + @Pc(47) int windowCenter = n >> 1; + @Pc(59) int leftWindowStart; + @Pc(67) int leftWindowEnd; + @Pc(71) int leftN; + if (modeBlockFlag && !previousWindowFlag) { + leftWindowStart = (n >> 2) - (blockSize0 >> 2); + leftWindowEnd = (n >> 2) + (blockSize0 >> 2); + leftN = blockSize0 >> 1; } else { - local59 = 0; - local67 = local47; - local71 = local25 >> 1; + leftWindowStart = 0; + leftWindowEnd = windowCenter; + leftN = n >> 1; } - @Pc(94) int local94; - @Pc(104) int local104; - @Pc(108) int local108; - if (local19 && !local29) { - local94 = local25 - (local25 >> 2) - (anInt2978 >> 2); - local104 = local25 + (anInt2978 >> 2) - (local25 >> 2); - local108 = anInt2978 >> 1; + @Pc(94) int rightWindowStart; + @Pc(104) int rightWindowEnd; + @Pc(108) int rightN; + if (modeBlockFlag && !nextWindowFlag) { + rightWindowStart = n - (n >> 2) - (blockSize0 >> 2); + rightWindowEnd = n + (blockSize0 >> 2) - (n >> 2); + rightN = blockSize0 >> 1; } else { - local94 = local47; - local104 = local25; - local108 = local25 >> 1; + rightWindowStart = windowCenter; + rightWindowEnd = n; + rightN = n >> 1; } - @Pc(123) VorbisMapping local123 = aClass151Array1[anIntArray278[local15]]; - @Pc(126) int local126 = local123.anInt5562; - @Pc(131) int local131 = local123.anIntArray490[local126]; - @Pc(140) boolean local140 = !aClass67Array1[local131].method2272(); - for (@Pc(144) int local144 = 0; local144 < local123.anInt5563; local144++) { - @Pc(155) VorbisResidue local155 = aClass152Array1[local123.anIntArray491[local144]]; - @Pc(157) float[] local157 = aFloatArray14; - local155.method4450(local157, local25 >> 1, local140); + @Pc(123) VorbisMapping mapping = mappings[modeMappings[modeNumber]]; + @Pc(126) int submapNumber = mapping.mux; + @Pc(131) int floorNumber = mapping.submapFloor[submapNumber]; + @Pc(140) boolean noResidue = !floors[floorNumber].decodePacket(); + for (@Pc(144) int local144 = 0; local144 < mapping.submaps; local144++) { + @Pc(155) VorbisResidue residue = residues[mapping.submapResidue[local144]]; + @Pc(157) float[] vector = VorbisSound.vector; + residue.synthesize(vector, n >> 1, noResidue); } - @Pc(176) int local176; - if (!local140) { - local131 = local123.anInt5562; - local176 = local123.anIntArray490[local131]; - aClass67Array1[local176].method2269(aFloatArray14, local25 >> 1); + @Pc(176) int floorNumber2; + if (!noResidue) { + floorNumber = mapping.mux; + floorNumber2 = mapping.submapFloor[floorNumber]; + floors[floorNumber2].synthesize(vector, n >> 1); } @Pc(212) int local212; - if (local140) { - for (local131 = local25 >> 1; local131 < local25; local131++) { - aFloatArray14[local131] = 0.0F; + if (noResidue) { + for (floorNumber = n >> 1; floorNumber < n; floorNumber++) { + vector[floorNumber] = 0.0F; } } else { - local131 = local25 >> 1; - local176 = local25 >> 2; - local212 = local25 >> 3; - @Pc(214) float[] local214 = aFloatArray14; - @Pc(216) int local216; - for (local216 = 0; local216 < local131; local216++) { - local214[local216] *= 0.5F; + int n2 = n >> 1; + int n4 = n >> 2; + int n8 = n >> 3; + @Pc(214) float[] vector = VorbisSound.vector; + for (int k = 0; k < n2; k++) { + vector[k] *= 0.5F; } - for (local216 = local131; local216 < local25; local216++) { - local214[local216] = -local214[local25 - local216 - 1]; + for (int k = n2; k < n; k++) { + vector[k] = -vector[n - k - 1]; } - @Pc(252) float[] local252 = local19 ? aFloatArray12 : aFloatArray13; - @Pc(258) float[] local258 = local19 ? aFloatArray9 : aFloatArray15; - @Pc(264) float[] local264 = local19 ? aFloatArray10 : aFloatArray16; - @Pc(270) int[] local270 = local19 ? anIntArray277 : anIntArray276; - @Pc(272) int local272; - @Pc(291) float local291; - @Pc(309) float local309; - @Pc(315) float local315; - @Pc(323) float local323; - for (local272 = 0; local272 < local176; local272++) { - local291 = local214[local272 * 4] - local214[local25 - local272 * 4 - 1]; - local309 = local214[local272 * 4 + 2] - local214[local25 - local272 * 4 - 3]; - local315 = local252[local272 * 2]; - local323 = local252[local272 * 2 + 1]; - local214[local25 - local272 * 4 - 1] = local291 * local315 - local309 * local323; - local214[local25 - local272 * 4 - 3] = local291 * local323 + local309 * local315; + @Pc(252) float[] local252 = modeBlockFlag ? trigA1 : trigA0; + @Pc(258) float[] local258 = modeBlockFlag ? trigB1 : trigB0; + @Pc(264) float[] local264 = modeBlockFlag ? trigC1 : trigC0; + @Pc(270) int[] local270 = modeBlockFlag ? bitReverse1 : bitReverse0; + @Pc(272) int k; + @Pc(291) float a; + @Pc(309) float b; + @Pc(315) float c; + @Pc(323) float d; + for (k = 0; k < n4; k++) { + a = vector[k * 4] - vector[n - k * 4 - 1]; + b = vector[k * 4 + 2] - vector[n - k * 4 - 3]; + c = local252[k * 2]; + d = local252[k * 2 + 1]; + vector[n - k * 4 - 1] = a * c - b * d; + vector[n - k * 4 - 3] = a * d + b * c; } - @Pc(432) float local432; - @Pc(442) float local442; - for (local272 = 0; local272 < local212; local272++) { - local291 = local214[local131 + local272 * 4 + 3]; - local309 = local214[local131 + local272 * 4 + 1]; - local315 = local214[local272 * 4 + 3]; - local323 = local214[local272 * 4 + 1]; - local214[local131 + local272 * 4 + 3] = local291 + local315; - local214[local131 + local272 * 4 + 1] = local309 + local323; - local432 = local252[local131 - local272 * 4 - 4]; - local442 = local252[local131 - local272 * 4 - 3]; - local214[local272 * 4 + 3] = (local291 - local315) * local432 - (local309 - local323) * local442; - local214[local272 * 4 + 1] = (local309 - local323) * local432 + (local291 - local315) * local442; + @Pc(432) float e; + @Pc(442) float f; + for (k = 0; k < n8; k++) { + a = vector[n2 + k * 4 + 3]; + b = vector[n2 + k * 4 + 1]; + c = vector[k * 4 + 3]; + d = vector[k * 4 + 1]; + vector[n2 + k * 4 + 3] = a + c; + vector[n2 + k * 4 + 1] = b + d; + e = local252[n2 - k * 4 - 4]; + f = local252[n2 - k * 4 - 3]; + vector[k * 4 + 3] = (a - c) * e - (b - d) * f; + vector[k * 4 + 1] = (b - d) * e + (a - c) * f; } - local272 = VorbisCodebook.method3674(local25 - 1); - @Pc(488) int local488; - @Pc(499) int local499; - @Pc(503) int local503; - @Pc(505) int local505; - for (local488 = 0; local488 < local272 - 3; local488++) { - local499 = local25 >> local488 + 2; - local503 = 0x8 << local488; - for (local505 = 0; local505 < 0x2 << local488; local505++) { - @Pc(518) int local518 = local25 - local499 * 2 * local505; - @Pc(528) int local528 = local25 - local499 * (local505 * 2 + 1); - for (@Pc(530) int local530 = 0; local530 < local25 >> local488 + 4; local530++) { + int logN = IntUtils.bitCount(n - 1); + @Pc(488) int l; + @Pc(499) int k0; + @Pc(503) int k1; + @Pc(505) int s; + for (l = 0; l < logN - 3; l++) { + k0 = n >> l + 2; + k1 = 0x8 << l; + for (s = 0; s < 0x2 << l; s++) { + @Pc(518) int local518 = n - k0 * 2 * s; + @Pc(528) int local528 = n - k0 * (s * 2 + 1); + for (@Pc(530) int local530 = 0; local530 < n >> l + 4; local530++) { @Pc(541) int local541 = local530 * 4; - @Pc(549) float local549 = local214[local518 - local541 - 1]; - @Pc(557) float local557 = local214[local518 - local541 - 3]; - @Pc(565) float local565 = local214[local528 - local541 - 1]; - @Pc(573) float local573 = local214[local528 - local541 - 3]; - local214[local518 - local541 - 1] = local549 + local565; - local214[local518 - local541 - 3] = local557 + local573; - @Pc(599) float local599 = local252[local530 * local503]; - @Pc(607) float local607 = local252[local530 * local503 + 1]; - local214[local528 - local541 - 1] = (local549 - local565) * local599 - (local557 - local573) * local607; - local214[local528 - local541 - 3] = (local557 - local573) * local599 + (local549 - local565) * local607; + @Pc(549) float local549 = vector[local518 - local541 - 1]; + @Pc(557) float local557 = vector[local518 - local541 - 3]; + @Pc(565) float local565 = vector[local528 - local541 - 1]; + @Pc(573) float local573 = vector[local528 - local541 - 3]; + vector[local518 - local541 - 1] = local549 + local565; + vector[local518 - local541 - 3] = local557 + local573; + @Pc(599) float local599 = local252[local530 * k1]; + @Pc(607) float local607 = local252[local530 * k1 + 1]; + vector[local528 - local541 - 1] = (local549 - local565) * local599 - (local557 - local573) * local607; + vector[local528 - local541 - 3] = (local557 - local573) * local599 + (local549 - local565) * local607; } } } - for (local488 = 1; local488 < local212 - 1; local488++) { - local499 = local270[local488]; - if (local488 < local499) { - local503 = local488 * 8; - local505 = local499 * 8; - local432 = local214[local503 + 1]; - local214[local503 + 1] = local214[local505 + 1]; - local214[local505 + 1] = local432; - local432 = local214[local503 + 3]; - local214[local503 + 3] = local214[local505 + 3]; - local214[local505 + 3] = local432; - local432 = local214[local503 + 5]; - local214[local503 + 5] = local214[local505 + 5]; - local214[local505 + 5] = local432; - local432 = local214[local503 + 7]; - local214[local503 + 7] = local214[local505 + 7]; - local214[local505 + 7] = local432; + for (l = 1; l < n8 - 1; l++) { + k0 = local270[l]; + if (l < k0) { + k1 = l * 8; + s = k0 * 8; + e = vector[k1 + 1]; + vector[k1 + 1] = vector[s + 1]; + vector[s + 1] = e; + e = vector[k1 + 3]; + vector[k1 + 3] = vector[s + 3]; + vector[s + 3] = e; + e = vector[k1 + 5]; + vector[k1 + 5] = vector[s + 5]; + vector[s + 5] = e; + e = vector[k1 + 7]; + vector[k1 + 7] = vector[s + 7]; + vector[s + 7] = e; } } - for (local488 = 0; local488 < local131; local488++) { - local214[local488] = local214[local488 * 2 + 1]; + for (l = 0; l < n2; l++) { + vector[l] = vector[l * 2 + 1]; } - for (local488 = 0; local488 < local212; local488++) { - local214[local25 - local488 * 2 - 1] = local214[local488 * 4]; - local214[local25 - local488 * 2 - 2] = local214[local488 * 4 + 1]; - local214[local25 - local176 - local488 * 2 - 1] = local214[local488 * 4 + 2]; - local214[local25 - local176 - local488 * 2 - 2] = local214[local488 * 4 + 3]; + for (l = 0; l < n8; l++) { + vector[n - l * 2 - 1] = vector[l * 4]; + vector[n - l * 2 - 2] = vector[l * 4 + 1]; + vector[n - n4 - l * 2 - 1] = vector[l * 4 + 2]; + vector[n - n4 - l * 2 - 2] = vector[l * 4 + 3]; } - for (local488 = 0; local488 < local212; local488++) { - local309 = local264[local488 * 2]; - local315 = local264[local488 * 2 + 1]; - local323 = local214[local131 + local488 * 2]; - local432 = local214[local131 + local488 * 2 + 1]; - local442 = local214[local25 - local488 * 2 - 2]; - @Pc(908) float local908 = local214[local25 - local488 * 2 - 1]; - @Pc(920) float local920 = local315 * (local323 - local442) + local309 * (local432 + local908); - local214[local131 + local488 * 2] = (local323 + local442 + local920) * 0.5F; - local214[local25 - local488 * 2 - 2] = (local323 + local442 - local920) * 0.5F; - @Pc(962) float local962 = local315 * (local432 + local908) - local309 * (local323 - local442); - local214[local131 + local488 * 2 + 1] = (local432 + local962 - local908) * 0.5F; - local214[local25 - local488 * 2 - 1] = (local908 + local962 - local432) * 0.5F; + for (l = 0; l < n8; l++) { + b = local264[l * 2]; + c = local264[l * 2 + 1]; + d = vector[n2 + l * 2]; + e = vector[n2 + l * 2 + 1]; + f = vector[n - l * 2 - 2]; + @Pc(908) float local908 = vector[n - l * 2 - 1]; + @Pc(920) float local920 = c * (d - f) + b * (e + local908); + vector[n2 + l * 2] = (d + f + local920) * 0.5F; + vector[n - l * 2 - 2] = (d + f - local920) * 0.5F; + @Pc(962) float local962 = c * (e + local908) - b * (d - f); + vector[n2 + l * 2 + 1] = (e + local962 - local908) * 0.5F; + vector[n - l * 2 - 1] = (local908 + local962 - e) * 0.5F; } - for (local488 = 0; local488 < local176; local488++) { - local214[local488] = local214[local488 * 2 + local131] * local258[local488 * 2] + local214[local488 * 2 + local131 + 1] * local258[local488 * 2 + 1]; - local214[local131 - local488 - 1] = local214[local488 * 2 + local131] * local258[local488 * 2 + 1] - local214[local488 * 2 + local131 + 1] * local258[local488 * 2]; + for (l = 0; l < n4; l++) { + vector[l] = vector[l * 2 + n2] * local258[l * 2] + vector[l * 2 + n2 + 1] * local258[l * 2 + 1]; + vector[n2 - l - 1] = vector[l * 2 + n2] * local258[l * 2 + 1] - vector[l * 2 + n2 + 1] * local258[l * 2]; } - for (local488 = 0; local488 < local176; local488++) { - local214[local25 + local488 - local176] = -local214[local488]; + for (l = 0; l < n4; l++) { + vector[n + l - n4] = -vector[l]; } - for (local488 = 0; local488 < local176; local488++) { - local214[local488] = local214[local176 + local488]; + for (l = 0; l < n4; l++) { + vector[l] = vector[n4 + l]; } - for (local488 = 0; local488 < local176; local488++) { - local214[local176 + local488] = -local214[local176 - local488 - 1]; + for (l = 0; l < n4; l++) { + vector[n4 + l] = -vector[n4 - l - 1]; } - for (local488 = 0; local488 < local176; local488++) { - local214[local131 + local488] = local214[local25 - local488 - 1]; + for (l = 0; l < n4; l++) { + vector[n2 + l] = vector[n - l - 1]; } - for (local488 = local59; local488 < local67; local488++) { - local309 = (float) Math.sin(((double) (local488 - local59) + 0.5D) / (double) local71 * 0.5D * 3.141592653589793D); - aFloatArray14[local488] *= (float) Math.sin((double) local309 * 1.5707963267948966D * (double) local309); + for (l = leftWindowStart; l < leftWindowEnd; l++) { + b = (float) Math.sin(((double) (l - leftWindowStart) + 0.5D) / (double) leftN * 0.5D * 3.141592653589793D); + VorbisSound.vector[l] *= (float) Math.sin((double) b * 1.5707963267948966D * (double) b); } - for (local488 = local94; local488 < local104; local488++) { - local309 = (float) Math.sin(((double) (local488 - local94) + 0.5D) / (double) local108 * 0.5D * 3.141592653589793D + 1.5707963267948966D); - aFloatArray14[local488] *= (float) Math.sin((double) local309 * 1.5707963267948966D * (double) local309); + for (l = rightWindowStart; l < rightWindowEnd; l++) { + b = (float) Math.sin(((double) (l - rightWindowStart) + 0.5D) / (double) rightN * 0.5D * 3.141592653589793D + 1.5707963267948966D); + VorbisSound.vector[l] *= (float) Math.sin((double) b * 1.5707963267948966D * (double) b); } } @Pc(1228) float[] local1228 = null; - if (this.anInt2973 > 0) { - local176 = this.anInt2973 + local25 >> 2; - local1228 = new float[local176]; + if (this.prevN > 0) { + floorNumber2 = this.prevN + n >> 2; + local1228 = new float[floorNumber2]; @Pc(1257) int local1257; - if (!this.aBoolean150) { - for (local212 = 0; local212 < this.anInt2981; local212++) { - local1257 = (this.anInt2973 >> 1) + local212; - local1228[local212] += this.aFloatArray11[local1257]; + if (!this.prevNoResidue) { + for (local212 = 0; local212 < this.prevQuarter; local212++) { + local1257 = (this.prevN >> 1) + local212; + local1228[local212] += this.prevVector[local1257]; } } - if (!local140) { - for (local212 = local59; local212 < local25 >> 1; local212++) { - local1257 = local1228.length + local212 - (local25 >> 1); - local1228[local1257] += aFloatArray14[local212]; + if (!noResidue) { + for (local212 = leftWindowStart; local212 < n >> 1; local212++) { + local1257 = local1228.length + local212 - (n >> 1); + local1228[local1257] += vector[local212]; } } } - @Pc(1301) float[] local1301 = this.aFloatArray11; - this.aFloatArray11 = aFloatArray14; - aFloatArray14 = local1301; - this.anInt2973 = local25; - this.anInt2981 = local104 - (local25 >> 1); - this.aBoolean150 = local140; + @Pc(1301) float[] local1301 = this.prevVector; + this.prevVector = vector; + vector = local1301; + this.prevN = n; + this.prevQuarter = rightWindowEnd - (n >> 1); + this.prevNoResidue = noResidue; return local1228; } }