import net.runelite.mapping.Export; import net.runelite.mapping.Implements; import net.runelite.mapping.ObfuscatedName; import net.runelite.mapping.ObfuscatedSignature; @ObfuscatedName("cs") @Implements("VorbisSample") public class VorbisSample extends Node { @ObfuscatedName("t") @Export("VorbisSample_bytes") static byte[] VorbisSample_bytes; @ObfuscatedName("q") @Export("VorbisSample_byteOffset") static int VorbisSample_byteOffset; @ObfuscatedName("x") @Export("VorbisSample_bitOffset") static int VorbisSample_bitOffset; @ObfuscatedName("d") @Export("VorbisSample_blockSize0") static int VorbisSample_blockSize0; @ObfuscatedName("f") @Export("VorbisSample_blockSize1") static int VorbisSample_blockSize1; @ObfuscatedName("c") @ObfuscatedSignature( signature = "[Lcx;" ) @Export("VorbisSample_codebooks") static VorbisCodebook[] VorbisSample_codebooks; @ObfuscatedName("r") @ObfuscatedSignature( signature = "[Ldr;" ) @Export("VorbisSample_floors") static VorbisFloor[] VorbisSample_floors; @ObfuscatedName("y") @ObfuscatedSignature( signature = "[Ldc;" ) @Export("VorbisSample_residues") static VorbisResidue[] VorbisSample_residues; @ObfuscatedName("p") @ObfuscatedSignature( signature = "[Ldw;" ) @Export("VorbisSample_mappings") static VorbisMapping[] VorbisSample_mappings; @ObfuscatedName("b") @Export("VorbisSample_blockFlags") static boolean[] VorbisSample_blockFlags; @ObfuscatedName("g") @Export("VorbisSample_mapping") static int[] VorbisSample_mapping; @ObfuscatedName("e") static boolean field1345; @ObfuscatedName("h") static float[] field1329; @ObfuscatedName("v") static float[] field1330; @ObfuscatedName("m") static float[] field1343; @ObfuscatedName("o") static float[] field1353; @ObfuscatedName("av") static float[] field1354; @ObfuscatedName("am") static float[] field1355; @ObfuscatedName("ai") static float[] field1356; @ObfuscatedName("af") static int[] field1357; @ObfuscatedName("az") static int[] field1341; @ObfuscatedName("s") byte[][] field1348; @ObfuscatedName("j") @Export("sampleRate") int sampleRate; @ObfuscatedName("i") @Export("sampleCount") int sampleCount; @ObfuscatedName("k") @Export("start") int start; @ObfuscatedName("u") @Export("end") int end; @ObfuscatedName("n") boolean field1342; @ObfuscatedName("z") float[] field1346; @ObfuscatedName("a") int field1347; @ObfuscatedName("w") int field1335; @ObfuscatedName("l") boolean field1349; @ObfuscatedName("aj") @Export("samples") byte[] samples; @ObfuscatedName("an") int field1360; @ObfuscatedName("at") int field1361; static { field1345 = false; } VorbisSample(byte[] var1) { this.read(var1); } @ObfuscatedName("u") @Export("read") void read(byte[] var1) { Buffer var2 = new Buffer(var1); this.sampleRate = var2.readInt(); this.sampleCount = var2.readInt(); this.start = var2.readInt(); this.end = var2.readInt(); if (this.end < 0) { this.end = ~this.end; this.field1342 = true; } int var3 = var2.readInt(); this.field1348 = new byte[var3][]; for (int var4 = 0; var4 < var3; ++var4) { int var5 = 0; int var6; do { var6 = var2.readUnsignedByte(); var5 += var6; } while(var6 >= 255); byte[] var7 = new byte[var5]; var2.readBytes(var7, 0, var5); this.field1348[var4] = var7; } } @ObfuscatedName("t") float[] method2282(int var1) { VorbisSample_setData(this.field1348[var1], 0); readBit(); int var2 = readBits(class160.iLog(VorbisSample_mapping.length - 1)); boolean var3 = VorbisSample_blockFlags[var2]; int var4 = var3 ? VorbisSample_blockSize1 : VorbisSample_blockSize0; boolean var5 = false; boolean var6 = false; if (var3) { var5 = readBit() != 0; var6 = readBit() != 0; } int var7 = var4 >> 1; int var8; int var9; int var10; if (var3 && !var5) { var8 = (var4 >> 2) - (VorbisSample_blockSize0 >> 2); var9 = (VorbisSample_blockSize0 >> 2) + (var4 >> 2); var10 = VorbisSample_blockSize0 >> 1; } else { var8 = 0; var9 = var7; var10 = var4 >> 1; } int var11; int var12; int var13; if (var3 && !var6) { var11 = var4 - (var4 >> 2) - (VorbisSample_blockSize0 >> 2); var12 = (VorbisSample_blockSize0 >> 2) + (var4 - (var4 >> 2)); var13 = VorbisSample_blockSize0 >> 1; } else { var11 = var7; var12 = var4; var13 = var4 >> 1; } VorbisMapping var14 = VorbisSample_mappings[VorbisSample_mapping[var2]]; int var16 = var14.mappingMux; int var17 = var14.submapFloor[var16]; boolean var15 = !VorbisSample_floors[var17].readSubmapFloor(); boolean var45 = var15; for (var17 = 0; var17 < var14.submaps; ++var17) { VorbisResidue var18 = VorbisSample_residues[var14.submapResidue[var17]]; float[] var19 = field1329; var18.method2444(var19, var4 >> 1, var45); } int var40; if (!var15) { var17 = var14.mappingMux; var40 = var14.submapFloor[var17]; VorbisSample_floors[var40].method2321(field1329, var4 >> 1); } int var42; if (var15) { for (var17 = var4 >> 1; var17 < var4; ++var17) { field1329[var17] = 0.0F; } } else { var17 = var4 >> 1; var40 = var4 >> 2; var42 = var4 >> 3; float[] var43 = field1329; int var21; for (var21 = 0; var21 < var17; ++var21) { var43[var21] *= 0.5F; } for (var21 = var17; var21 < var4; ++var21) { var43[var21] = -var43[var4 - var21 - 1]; } float[] var44 = var3 ? field1354 : field1330; float[] var22 = var3 ? field1355 : field1343; float[] var23 = var3 ? field1356 : field1353; int[] var24 = var3 ? field1341 : field1357; int var25; float var26; float var27; float var28; float var29; for (var25 = 0; var25 < var40; ++var25) { var26 = var43[var25 * 4] - var43[var4 - var25 * 4 - 1]; var27 = var43[var25 * 4 + 2] - var43[var4 - var25 * 4 - 3]; var28 = var44[var25 * 2]; var29 = var44[var25 * 2 + 1]; var43[var4 - var25 * 4 - 1] = var26 * var28 - var27 * var29; var43[var4 - var25 * 4 - 3] = var26 * var29 + var27 * var28; } float var30; float var31; for (var25 = 0; var25 < var42; ++var25) { var26 = var43[var17 + var25 * 4 + 3]; var27 = var43[var17 + var25 * 4 + 1]; var28 = var43[var25 * 4 + 3]; var29 = var43[var25 * 4 + 1]; var43[var17 + var25 * 4 + 3] = var26 + var28; var43[var17 + var25 * 4 + 1] = var27 + var29; var30 = var44[var17 - 4 - var25 * 4]; var31 = var44[var17 - 3 - var25 * 4]; var43[var25 * 4 + 3] = (var26 - var28) * var30 - (var27 - var29) * var31; var43[var25 * 4 + 1] = (var27 - var29) * var30 + (var26 - var28) * var31; } var25 = class160.iLog(var4 - 1); int var47; int var48; int var49; int var50; for (var47 = 0; var47 < var25 - 3; ++var47) { var48 = var4 >> var47 + 2; var49 = 8 << var47; for (var50 = 0; var50 < 2 << var47; ++var50) { int var51 = var4 - var48 * var50 * 2; int var52 = var4 - var48 * (var50 * 2 + 1); for (int var32 = 0; var32 < var4 >> var47 + 4; ++var32) { int var33 = var32 * 4; float var34 = var43[var51 - 1 - var33]; float var35 = var43[var51 - 3 - var33]; float var36 = var43[var52 - 1 - var33]; float var37 = var43[var52 - 3 - var33]; var43[var51 - 1 - var33] = var34 + var36; var43[var51 - 3 - var33] = var35 + var37; float var38 = var44[var32 * var49]; float var39 = var44[var32 * var49 + 1]; var43[var52 - 1 - var33] = (var34 - var36) * var38 - (var35 - var37) * var39; var43[var52 - 3 - var33] = (var35 - var37) * var38 + (var34 - var36) * var39; } } } for (var47 = 1; var47 < var42 - 1; ++var47) { var48 = var24[var47]; if (var47 < var48) { var49 = var47 * 8; var50 = var48 * 8; var30 = var43[var49 + 1]; var43[var49 + 1] = var43[var50 + 1]; var43[var50 + 1] = var30; var30 = var43[var49 + 3]; var43[var49 + 3] = var43[var50 + 3]; var43[var50 + 3] = var30; var30 = var43[var49 + 5]; var43[var49 + 5] = var43[var50 + 5]; var43[var50 + 5] = var30; var30 = var43[var49 + 7]; var43[var49 + 7] = var43[var50 + 7]; var43[var50 + 7] = var30; } } for (var47 = 0; var47 < var17; ++var47) { var43[var47] = var43[var47 * 2 + 1]; } for (var47 = 0; var47 < var42; ++var47) { var43[var4 - 1 - var47 * 2] = var43[var47 * 4]; var43[var4 - 2 - var47 * 2] = var43[var47 * 4 + 1]; var43[var4 - var40 - 1 - var47 * 2] = var43[var47 * 4 + 2]; var43[var4 - var40 - 2 - var47 * 2] = var43[var47 * 4 + 3]; } for (var47 = 0; var47 < var42; ++var47) { var27 = var23[var47 * 2]; var28 = var23[var47 * 2 + 1]; var29 = var43[var17 + var47 * 2]; var30 = var43[var17 + var47 * 2 + 1]; var31 = var43[var4 - 2 - var47 * 2]; float var53 = var43[var4 - 1 - var47 * 2]; float var54 = var28 * (var29 - var31) + var27 * (var30 + var53); var43[var17 + var47 * 2] = (var29 + var31 + var54) * 0.5F; var43[var4 - 2 - var47 * 2] = (var29 + var31 - var54) * 0.5F; var54 = var28 * (var30 + var53) - var27 * (var29 - var31); var43[var17 + var47 * 2 + 1] = (var30 - var53 + var54) * 0.5F; var43[var4 - 1 - var47 * 2] = (-var30 + var53 + var54) * 0.5F; } for (var47 = 0; var47 < var40; ++var47) { var43[var47] = var43[var17 + var47 * 2] * var22[var47 * 2] + var43[var17 + var47 * 2 + 1] * var22[var47 * 2 + 1]; var43[var17 - 1 - var47] = var43[var17 + var47 * 2] * var22[var47 * 2 + 1] - var43[var17 + var47 * 2 + 1] * var22[var47 * 2]; } for (var47 = 0; var47 < var40; ++var47) { var43[var47 + (var4 - var40)] = -var43[var47]; } for (var47 = 0; var47 < var40; ++var47) { var43[var47] = var43[var40 + var47]; } for (var47 = 0; var47 < var40; ++var47) { var43[var40 + var47] = -var43[var40 - var47 - 1]; } for (var47 = 0; var47 < var40; ++var47) { var43[var17 + var47] = var43[var4 - var47 - 1]; } float[] var10000; for (var47 = var8; var47 < var9; ++var47) { var27 = (float)Math.sin(((double)(var47 - var8) + 0.5D) / (double)var10 * 0.5D * 3.141592653589793D); var10000 = field1329; var10000[var47] *= (float)Math.sin(1.5707963267948966D * (double)var27 * (double)var27); } for (var47 = var11; var47 < var12; ++var47) { var27 = (float)Math.sin(((double)(var47 - var11) + 0.5D) / (double)var13 * 0.5D * 3.141592653589793D + 1.5707963267948966D); var10000 = field1329; var10000[var47] *= (float)Math.sin(1.5707963267948966D * (double)var27 * (double)var27); } } float[] var41 = null; if (this.field1347 > 0) { var40 = var4 + this.field1347 >> 2; var41 = new float[var40]; int var20; if (!this.field1349) { for (var42 = 0; var42 < this.field1335; ++var42) { var20 = var42 + (this.field1347 >> 1); var41[var42] += this.field1346[var20]; } } if (!var15) { for (var42 = var8; var42 < var4 >> 1; ++var42) { var20 = var41.length - (var4 >> 1) + var42; var41[var20] += field1329[var42]; } } } float[] var46 = this.field1346; this.field1346 = field1329; field1329 = var46; this.field1347 = var4; this.field1335 = var12 - (var4 >> 1); this.field1349 = var15; return var41; } @ObfuscatedName("d") @ObfuscatedSignature( signature = "([I)Lco;" ) @Export("toRawSound") RawSound toRawSound(int[] var1) { if (var1 != null && var1[0] <= 0) { return null; } else { if (this.samples == null) { this.field1347 = 0; this.field1346 = new float[VorbisSample_blockSize1]; this.samples = new byte[this.sampleCount]; this.field1360 = 0; this.field1361 = 0; } for (; this.field1361 < this.field1348.length; ++this.field1361) { if (var1 != null && var1[0] <= 0) { return null; } float[] var2 = this.method2282(this.field1361); if (var2 != null) { int var3 = this.field1360; int var4 = var2.length; if (var4 > this.sampleCount - var3) { var4 = this.sampleCount - var3; } for (int var5 = 0; var5 < var4; ++var5) { int var6 = (int)(128.0F + var2[var5] * 128.0F); if ((var6 & -256) != 0) { var6 = ~var6 >> 31; } this.samples[var3++] = (byte)(var6 - 128); } if (var1 != null) { var1[0] -= var3 - this.field1360; } this.field1360 = var3; } } this.field1346 = null; byte[] var7 = this.samples; this.samples = null; return new RawSound(this.sampleRate, var7, this.start, this.end, this.field1342); } } @ObfuscatedName("s") @Export("float32Unpack") static float float32Unpack(int var0) { int var1 = var0 & 2097151; int var2 = var0 & Integer.MIN_VALUE; int var3 = (var0 & 2145386496) >> 21; if (var2 != 0) { var1 = -var1; } return (float)((double)var1 * Math.pow(2.0D, (double)(var3 - 788))); } @ObfuscatedName("j") @Export("VorbisSample_setData") static void VorbisSample_setData(byte[] var0, int var1) { VorbisSample_bytes = var0; VorbisSample_byteOffset = var1; VorbisSample_bitOffset = 0; } @ObfuscatedName("i") @Export("readBit") static int readBit() { int var0 = VorbisSample_bytes[VorbisSample_byteOffset] >> VorbisSample_bitOffset & 1; ++VorbisSample_bitOffset; VorbisSample_byteOffset += VorbisSample_bitOffset >> 3; VorbisSample_bitOffset &= 7; return var0; } @ObfuscatedName("k") @Export("readBits") static int readBits(int var0) { int var1 = 0; int var2; int var3; for (var2 = 0; var0 >= 8 - VorbisSample_bitOffset; var0 -= var3) { var3 = 8 - VorbisSample_bitOffset; int var4 = (1 << var3) - 1; var1 += (VorbisSample_bytes[VorbisSample_byteOffset] >> VorbisSample_bitOffset & var4) << var2; VorbisSample_bitOffset = 0; ++VorbisSample_byteOffset; var2 += var3; } if (var0 > 0) { var3 = (1 << var0) - 1; var1 += (VorbisSample_bytes[VorbisSample_byteOffset] >> VorbisSample_bitOffset & var3) << var2; VorbisSample_bitOffset += var0; } return var1; } @ObfuscatedName("n") static void method2294(byte[] var0) { VorbisSample_setData(var0, 0); VorbisSample_blockSize0 = 1 << readBits(4); VorbisSample_blockSize1 = 1 << readBits(4); field1329 = new float[VorbisSample_blockSize1]; int var1; int var2; int var3; int var4; int var5; for (var1 = 0; var1 < 2; ++var1) { var2 = var1 != 0 ? VorbisSample_blockSize1 : VorbisSample_blockSize0; var3 = var2 >> 1; var4 = var2 >> 2; var5 = var2 >> 3; float[] var6 = new float[var3]; for (int var7 = 0; var7 < var4; ++var7) { var6[var7 * 2] = (float)Math.cos((double)(var7 * 4) * 3.141592653589793D / (double)var2); var6[var7 * 2 + 1] = -((float)Math.sin((double)(var7 * 4) * 3.141592653589793D / (double)var2)); } float[] var12 = new float[var3]; for (int var8 = 0; var8 < var4; ++var8) { var12[var8 * 2] = (float)Math.cos((double)(var8 * 2 + 1) * 3.141592653589793D / (double)(var2 * 2)); var12[var8 * 2 + 1] = (float)Math.sin((double)(var8 * 2 + 1) * 3.141592653589793D / (double)(var2 * 2)); } float[] var13 = new float[var4]; for (int var9 = 0; var9 < var5; ++var9) { var13[var9 * 2] = (float)Math.cos((double)(var9 * 4 + 2) * 3.141592653589793D / (double)var2); var13[var9 * 2 + 1] = -((float)Math.sin((double)(var9 * 4 + 2) * 3.141592653589793D / (double)var2)); } int[] var14 = new int[var5]; int var10 = class160.iLog(var5 - 1); for (int var11 = 0; var11 < var5; ++var11) { var14[var11] = WorldMapSection0.method215(var11, var10); } if (var1 != 0) { field1354 = var6; field1355 = var12; field1356 = var13; field1341 = var14; } else { field1330 = var6; field1343 = var12; field1353 = var13; field1357 = var14; } } var1 = readBits(8) + 1; VorbisSample_codebooks = new VorbisCodebook[var1]; for (var2 = 0; var2 < var1; ++var2) { VorbisSample_codebooks[var2] = new VorbisCodebook(); } var2 = readBits(6) + 1; for (var3 = 0; var3 < var2; ++var3) { readBits(16); } var2 = readBits(6) + 1; VorbisSample_floors = new VorbisFloor[var2]; for (var3 = 0; var3 < var2; ++var3) { VorbisSample_floors[var3] = new VorbisFloor(); } var3 = readBits(6) + 1; VorbisSample_residues = new VorbisResidue[var3]; for (var4 = 0; var4 < var3; ++var4) { VorbisSample_residues[var4] = new VorbisResidue(); } var4 = readBits(6) + 1; VorbisSample_mappings = new VorbisMapping[var4]; for (var5 = 0; var5 < var4; ++var5) { VorbisSample_mappings[var5] = new VorbisMapping(); } var5 = readBits(6) + 1; VorbisSample_blockFlags = new boolean[var5]; VorbisSample_mapping = new int[var5]; for (int var15 = 0; var15 < var5; ++var15) { VorbisSample_blockFlags[var15] = readBit() != 0; readBits(16); readBits(16); VorbisSample_mapping[var15] = readBits(8); } } @ObfuscatedName("q") @ObfuscatedSignature( signature = "(Lhz;)Z" ) static boolean method2289(AbstractArchive var0) { if (!field1345) { byte[] var1 = var0.takeFile(0, 0); if (var1 == null) { return false; } method2294(var1); field1345 = true; } return true; } @ObfuscatedName("x") @ObfuscatedSignature( signature = "(Lhz;II)Lcs;" ) @Export("readMusicSample") static VorbisSample readMusicSample(AbstractArchive var0, int var1, int var2) { if (!method2289(var0)) { var0.tryLoadFile(var1, var2); return null; } else { byte[] var3 = var0.takeFile(var1, var2); return var3 == null ? null : new VorbisSample(var3); } } }