diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..46033f7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,22 @@ +# venv и тяжёлые/бинарные артефакты — в репо НЕ пушим +* +!*.py +!*.txt +!*.json +!*.md +!*.npy +!*.npz +!*.java +!roadmap.md +!.gitignore + +# тяжеловесы / чувствительные (исключены даже с include выше) +*.bin +regions/ +regions_dep/ +regions_render/ +regions_rt/ +regions_rt2/ +soothe_rt.bin.regions/ +*.wav +*.rpp diff --git a/Diag.java b/Diag.java new file mode 100644 index 0000000..a65e3b7 --- /dev/null +++ b/Diag.java @@ -0,0 +1,36 @@ +import ghidra.app.script.GhidraScript; +import ghidra.program.model.listing.Function; +import ghidra.program.model.symbol.Symbol; +import ghidra.program.model.symbol.SymbolIterator; +import ghidra.program.model.symbol.SymbolType; + +public class Diag extends GhidraScript { + @Override + public void run() throws Exception { + int nf = 0; + for (Function f : currentProgram.getFunctionManager().getFunctions(true)) { + nf++; + } + println("FUNCTION_COUNT " + nf); + + String[] keys = {"Soothe2", "Spectral", "FilterGraph", "DigitalFilter", + "IIRFilter", "LowPass", "ModuleBase", "Decryptor", + "processBlock", "process"}; + SymbolIterator si = currentProgram.getSymbolTable().getAllSymbols(true); + int shown = 0; + while (si.hasNext()) { + Symbol s = si.next(); + String name = s.getName(true); + if (name == null) name = s.getName(); + if (name == null) continue; + for (String k : keys) { + if (name.toLowerCase().contains(k.toLowerCase())) { + println("SYMB " + name + " " + s.getAddress() + " " + s.getSymbolType()); + shown++; + break; + } + } + } + println("SYM_TOTAL " + shown); + } +} \ No newline at end of file diff --git a/DumpCandidates.java b/DumpCandidates.java new file mode 100644 index 0000000..cfe47d5 --- /dev/null +++ b/DumpCandidates.java @@ -0,0 +1,38 @@ +import ghidra.app.script.GhidraScript; +import ghidra.app.decompiler.DecompInterface; +import ghidra.app.decompiler.DecompileResults; +import ghidra.program.model.listing.Function; +import ghidra.program.model.listing.FunctionManager; +import ghidra.program.model.address.Address; +import java.io.PrintWriter; +import java.io.FileWriter; + +public class DumpCandidates extends GhidraScript { + @Override + public void run() throws Exception { + long[] addrs = { + 0x180536f70L, 0x180537160L, 0x180536f60L, 0x180536670L, + 0x180536660L, 0x180536cc0L, 0x180537720L, 0x180536cb0L, + 0x180536b90L, 0x180537930L, 0x180536b80L, 0x180536c60L, + 0x1813658a0L, 0x18052c7e0L, 0x18053846cL, 0x1852000000L, + 0x18052c7e0L, 0x180538484L, 0x180536b60L, 0x1805379a0L, + 0x180536b50L, 0x180536850L + }; + DecompInterface di = new DecompInterface(); + di.openProgram(currentProgram); + FunctionManager fm = currentProgram.getFunctionManager(); + PrintWriter pw = new PrintWriter(new java.io.BufferedWriter(new FileWriter("/home/m/re-tools/decomp_candidates.txt", false))); + for (long a : addrs) { + Address addr = currentProgram.getAddressFactory().getDefaultAddressSpace().getAddress(a); + Function f = fm.getFunctionAt(addr); + if (f == null) { pw.println("=== 0x" + Long.toHexString(a) + " : NOT A FUNCTION ===\n"); continue; } + DecompileResults res = di.decompileFunction(f, 60, monitor); + pw.println("==================== 0x" + Long.toHexString(a) + " " + f.getName() + " size=" + f.getBody().getNumAddresses() + " refs=" + f.getSymbol().getReferenceCount() + " ===="); + if (res != null) pw.println(res.getDecompiledFunction().getC()); + pw.println(); + } + pw.close(); + di.dispose(); + println("DUMP_DONE"); + } +} \ No newline at end of file diff --git a/DumpDsp.java b/DumpDsp.java new file mode 100644 index 0000000..3931b45 --- /dev/null +++ b/DumpDsp.java @@ -0,0 +1,64 @@ +import ghidra.app.script.GhidraScript; +import ghidra.app.decompiler.DecompInterface; +import ghidra.app.decompiler.DecompileResults; +import ghidra.program.model.listing.Function; +import ghidra.program.model.listing.FunctionManager; +import ghidra.program.model.address.Address; +import java.io.PrintWriter; +import java.io.FileWriter; +import java.util.LinkedHashMap; +import java.util.Map; + +public class DumpDsp extends GhidraScript { + @Override + public void run() throws Exception { + Map vts = new LinkedHashMap(); + vts.put("SpectralProcessor", new long[]{0x1824abb90L, 64}); + vts.put("Soothe2ModuleBase", new long[]{0x1824ac7a8L, 64}); + vts.put("CloudyAudioProcessor", new long[]{0x1824ab7c0L, 64}); + vts.put("AudioProcessingModule", new long[]{0x1824ac638L, 64}); + vts.put("IIRFilterExtended", new long[]{0x1824ac5d8L, 64}); + vts.put("Soothe2FilterGraph", new long[]{0x1824be810L, 64}); + vts.put("FilterGraph_6_0x400", new long[]{0x1824be228L, 64}); + vts.put("FilterGraphGrid", new long[]{0x1824be0a8L, 64}); + DecompInterface di = new DecompInterface(); + di.openProgram(currentProgram); + FunctionManager fm = currentProgram.getFunctionManager(); + PrintWriter pw = new PrintWriter(new java.io.BufferedWriter(new FileWriter("/home/m/re-tools/decomp_dsp.txt", false))); + for (Map.Entry e : vts.entrySet()) { + long base = e.getValue()[0]; int n = (int) e.getValue()[1]; + pw.println("############ VTABLE " + e.getKey() + " 0x" + Long.toHexString(base)); + pw.println("SLOTLIST:"); + for (int i = 0; i < n; i++) { + Address va = currentProgram.getAddressFactory().getDefaultAddressSpace(). + getAddress(base + i * 8L); + long tgt = (long) currentProgram.getMemory().getLong(va); + if (tgt < 0x180000000L || tgt > 0x182a00000L) continue; + Address a = currentProgram.getAddressFactory().getDefaultAddressSpace().getAddress(tgt); + Function f = fm.getFunctionAt(a); + long sz = (f == null) ? 0 : f.getBody().getNumAddresses(); + pw.println(" [" + i + "] 0x" + Long.toHexString(tgt) + " size=" + sz); + } + pw.println("CCODE:"); + for (int i = 0; i < n; i++) { + Address va = currentProgram.getAddressFactory().getDefaultAddressSpace(). + getAddress(base + i * 8L); + long tgt = (long) currentProgram.getMemory().getLong(va); + if (tgt < 0x180000000L || tgt > 0x182a00000L) continue; + Address a = currentProgram.getAddressFactory().getDefaultAddressSpace().getAddress(tgt); + Function f = fm.getFunctionAt(a); + if (f == null) continue; + long sz = f.getBody().getNumAddresses(); + if (sz < 60) continue; + DecompileResults res = di.decompileFunction(f, 90, monitor); + if (res != null && res.getDecompiledFunction() != null) { + pw.println(" --- [" + i + "] 0x" + Long.toHexString(tgt) + " size=" + sz + " ---"); + pw.println(res.getDecompiledFunction().getC()); + } + } + } + pw.close(); + di.dispose(); + println("DSP_DONE"); + } +} \ No newline at end of file diff --git a/DumpVtables.java b/DumpVtables.java new file mode 100644 index 0000000..93e3055 --- /dev/null +++ b/DumpVtables.java @@ -0,0 +1,50 @@ +import ghidra.app.script.GhidraScript; +import ghidra.app.decompiler.DecompInterface; +import ghidra.app.decompiler.DecompileResults; +import ghidra.program.model.listing.Function; +import ghidra.program.model.listing.FunctionManager; +import ghidra.program.model.address.Address; +import java.io.PrintWriter; +import java.io.FileWriter; + +public class DumpVtables extends GhidraScript { + @Override + public void run() throws Exception { + long[][] vts = { + {0x1824abb90L, 64}, // SpectralProcessor + {0x1824ac7a8L, 64}, // Soothe2ModuleBase + {0x1824ab7c0L, 64}, // CloudyAudioProcessor + }; + DecompInterface di = new DecompInterface(); + di.openProgram(currentProgram); + FunctionManager fm = currentProgram.getFunctionManager(); + PrintWriter pw = new PrintWriter(new java.io.BufferedWriter(new FileWriter("/home/m/re-tools/decomp_vtables.txt", false))); + for (long[] vt : vts) { + long base = vt[0]; int n = (int) vt[1]; + pw.println("############ VTABLE 0x" + Long.toHexString(base) + " (" + n + " slots) ############"); + for (int i = 0; i < n; i++) { + Address va = currentProgram.getAddressFactory().getDefaultAddressSpace(). + getAddress(base + i * 8L); + long tgt = (long) currentProgram.getMemory().getLong(va); + if (tgt < 0x180000000L || tgt > 0x182a00000L) { + pw.println(" [" + i + "] 0x" + Long.toHexString(tgt) + " (invalid/enc)"); + continue; + } + Address a = currentProgram.getAddressFactory().getDefaultAddressSpace().getAddress(tgt); + Function f = fm.getFunctionAt(a); + long sz = (f == null) ? 0 : f.getBody().getNumAddresses(); + pw.println(" [" + i + "] 0x" + Long.toHexString(tgt) + " size=" + sz); + if (f != null && sz >= 40) { + DecompileResults res = di.decompileFunction(f, 60, monitor); + if (res != null && res.getDecompiledFunction() != null) { + pw.println(" --- C ---"); + pw.println(res.getDecompiledFunction().getC()); + } + } + } + } + pw.close(); + di.dispose(); + println("DUMP_VT_DONE"); + } +} \ No newline at end of file diff --git a/ImportRtti.java b/ImportRtti.java new file mode 100644 index 0000000..d9906a4 --- /dev/null +++ b/ImportRtti.java @@ -0,0 +1,73 @@ +import ghidra.app.script.GhidraScript; +import ghidra.program.model.symbol.SymbolTable; +import ghidra.program.model.symbol.SourceType; +import ghidra.program.model.address.Address; +import ghidra.program.model.listing.Function; +import ghidra.program.model.listing.FunctionManager; +import ghidra.program.model.symbol.Namespace; +import ghidra.program.model.symbol.Symbol; +import ghidra.program.model.mem.MemoryBlock; +import java.util.*; + +public class ImportRtti extends GhidraScript { + @Override + public void run() throws Exception { + // map: vftable vendor address -> (class name, [func ptrs]) (decimal-addrs form from dump) + // encoded compactly: name|col|vf|func0,func1,... (up to 48) + String[] data = { + "Soothe2AudioProcessor|0x182506ca0|0x1824abf60|0x1813658a0,0x18052c7e0,0x18053846c,0x182504fa0,0x180536f70,0x180536f70,0x180537160,0x180536f60,0x18048db00,0x180481210,0x182505208,0x180536670,0x180536670,0x1804714b0,0x180536660,0x18048db00,0x180481210,0x1825068b0,0x180536cc0,0x180536cc0,0x180537720,0x180536cb0,0x18048db00,0x180481210,0x182504e40,0x180528ba0,0x1804714b0,0x1804714b0,0x1825067d0,0x180536b90,0x180536b90,0x180537930,0x180536b80,0x18048dc80,0x180481210,0x182505680,0x180536c60", + "$SpectralProcessor@M$07$01|0x1825033e0|0x1824abb90|0x18052d390,0x18052cfb0,0x180529550,0x1804714b0,0x180529610,0x18113285a,0x1805295c0,0x180529590,0x180536b60,0x180536b60,0x1805379a0,0x18250e798,0x1804d8db0,0x1804d8db0,0x18250e3f8,0x18052c7b0,0x1804d8db0,0x1804d8db0,0x1825074f0,0x1804714b0,0x18113285a,0x1804714b0,0x1825060e0,0x18113285a,0x18113285a,0x1804d8db0,0x18053fbf0,0x1804d8db0,0x1804d8db0", + "$Soothe2ModuleBase@M$01|0x1825038b0|0x1824ac7a8|0x18052fd40,0x18052cfb0,0x180529550,0x1804714b0,0x18052ce00,0x1804714b0,0x18052cb90,0x18052cbc0,0x180536b60,0x182507120,0x1805367a0,0x18052e540,0x18052ce00,0x18052cbe0,0x18048db00,0x180481210,0x18052ff40,0x180530060,0x18052cfb0", + "$AudioProcessingModule@M$01|0x182503180|0x1824ac638|0x18052d580,0x18052cfb0,0x18052cfa0,0x1804714b0,0x18113285a,0x18113285a,0x18052cbe0,0x180536b60,0x180536b60,0x1825071e8,0x18052cfa0,0x18052cfb0,0x18052cfb0", + "$Soothe2Module@M$01|0x182504e00|0x1824ac210|0x180535ed0,0x18052cfb0,0x180529550,0x1804714b0,0x18052b940,0x180529c60,0x18052bac0,0x18052b9d0,0x18052ba40,0x18052bad0,0x18052d3a0,0x18052b960,0x18052cb90,0x18052cbc0", + "$IIRFilterExtended@M$01|0x182503a58|0x1824ac5d8|0x1805346b0,0x18052cfb0,0x18052cfa0,0x18052fb50,0x18052fb30,0x182506a00,0x18052f820,0x18048db00,0x180481210,0x18052f7d0,0x18052f7c0,0x18052fc70,0x18052f950,0x18053fc00,0x18053fbc0,0x18053fa10", + "$DigitalFilter@M$0BA$01|0x182519b70|0x1824be7a0|0x18058d2b0,0x18052cfb0,0x18052cfa0,0x1804714b0,0x18113285a,0x18113285a,0x18058c850,0x18058c8b0,0x18058c7b0", + "$LowPassFilter@M$0BA$01|0x18251a141|0x1824be990|0x18058d230,0x18052cfb0,0x18052cfa0,0x18058c850,0x18058c8b0,0x18058c7b0", + "Soothe2FilterGraph|0x182518870|0x1824be810|0x180589260,0x18134bc00,0x18058b4d0,0x18058b380,0x18134bbd0,0x18134bbc0,0x18058b2d0,0x18058b290", + "$FilterGraph@M$05$0CAA@|0x1825189b8|0x1824be228|0x18058eb1c,0x18058b010,0x18251ab48,0x18058eab0,0x18160b000,0x1804714b0,0x18058ea70,0x18058ea90,0x18058dfa0,0x18058dfc0,0x18058df40,0x18058df60,0x18058dac0,0x18058daa0", + "Soothe2ModuleDecryptor|0x182504928|0x1824abe68|0x18052d520,0x1813e2a60,0x182505230,0x180536a50,0x180536a50,0x180537680,0x180536a50,0x180536a50,0x180537680", + "$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace|0x1825043d8|0x1824ab228|0x18052d520,0x18113285a,0x182505008,0x180538490,0x18135c520,0x182506e60,0x180536900,0x180536b60", + }; + + SymbolTable st = currentProgram.getSymbolTable(); + FunctionManager fm = currentProgram.getFunctionManager(); + long base = 0x180000000L; + int lab = 0; + int fn = 0; + for (String line : data) { + String[] parts = line.split("\\|"); + if (parts.length < 4) continue; + String cls = parts[0]; + long col = Long.decode("0x" + parts[2]); + // skip vf slot - parts[2] is vftable + long vf = Long.decode("0x" + parts[2]); + String[] fptr = parts[3].split(","); + // namespace = class name + Namespace ns = st.getNamespace(cls, currentProgram.getGlobalNamespace()); + if (ns == null) { + Address aCol = currentProgram.getAddressFactory().getDefaultAddressSpace().getAddress(col); + ns = st.createClass(null, cls, aCol, SourceType.USER_DEFINED); + lab++; + } + for (String fs : fptr) { + long f = Long.decode("0x" + fs); + Address addr = currentProgram.getAddressFactory().getDefaultAddressSpace().getAddress(f); + Function existing = fm.getFunctionAt(addr); + if (existing == null) { + fm.createFunction(null, addr, null, SourceType.USER_DEFINED); + fn++; + } + String nm = cls + "_v" + fptr.length + ""; + Function fx = fm.getFunctionAt(addr); + if (fx != null && fx.getSymbol() != null + && fx.getSymbol().getParentNamespace() == currentProgram.getGlobalNamespace()) { + String sname = "v_" + cls; + st.createLabel(addr, sname, ns, SourceType.USER_DEFINED); + lab++; + } + } + } + println("IMPORT_RTTI_NAMESPACES " + lab); + println("IMPORT_RTTI_FUNCTIONS " + fn); + } +} \ No newline at end of file diff --git a/ImportRtti2.java b/ImportRtti2.java new file mode 100644 index 0000000..98517a1 --- /dev/null +++ b/ImportRtti2.java @@ -0,0 +1,83 @@ +import ghidra.app.script.GhidraScript; +import ghidra.program.model.symbol.SymbolTable; +import ghidra.program.model.symbol.SourceType; +import ghidra.program.model.address.Address; +import ghidra.program.model.listing.Function; +import ghidra.program.model.listing.FunctionManager; +import ghidra.program.model.symbol.Namespace; +import ghidra.program.model.symbol.Symbol; + +public class ImportRtti2 extends GhidraScript { + @Override + public void run() throws Exception { + String[] data = { +".?AUSoothe2VertexData@@|0x18250ce80|0x1824b06c8|0x180561b00,0x180561370,0x180561450,0x180561440,0x18250c878,0x180570ea4,0x180568990,0x18250ce58,0x18056f890,0x18056f890,0x1804714b0,0x18056f880,0x18048db00,0x180481210,0x18250dcf8,0x180570e74,0x18133a110,0x18133a100,0x18133a0f0,0x18133a0e0,0x18250e010,0x18055e9a0,0x180471520,0x18250bd38,0x18056eb30,0x18056eb30,0x18056ef10,0x18056eb20,0x18048dc80,0x180481210,0x18250b6a0,0x180570f28,0x18055fda0,0x18250b9f8,0x180565b90,0x180570ee0,0x18250e268,0x18056f800,0x18056f800,0x18056f8b0,0x18056f7f0,0x18048db00,0x180481210,0x18250c600,0x180570e38,0x1813cc000,0x18250b978,0x18056f830|", + ".?AV?$AudioProcessingModule@M$01@@|0x182504d80|0x1824ac638|0x18052d580,0x18052cfb0,0x18052cfa0,0x1804714b0,0x18113285a,0x1825071e8,0x180536aa0,0x180536aa0,0x180537b10,0x180536a90,0x18048db00,0x180481210,0x182505780,0x180536eb0,0x180536eb0,0x1805373c0,0x180536ea0,0x18048db00,0x180481210,0x182506568,0x1805365d0,0x1805365d0,0x180538110,0x1805365c0,0x18048dc80,0x180481210,0x1825056d8,0x18052fd40,0x18052cfb0|", + ".?AV?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@|0x182506e08|0x1824ab7c0|0x1805384a8,0x18052bd00,0x182507040,0x180536b60,0x180536b60,0x1805379a0,0x180536b50,0x18048dc80,0x180481210,0x182505588,0x180536850,0x180536850,0x180537e90,0x180536840,0x18048db00,0x180481210,0x182506590,0x180536f20,0x180536f20,0x180537290,0x180536f10,0x18048db00,0x180481210,0x182505910,0x180536610,0x180536610,0x1805380e0,0x180536600,0x1805365f0,0x180481210,0x182504cd0,0x180536d60,0x180536d60,0x1805375e0,0x180536d50,0x18048db00,0x180481210,0x182506f18,0x180536dc0,0x180536dc0,0x1805374e0,0x180536db0,0x18048db00,0x180481210,0x182506090,0x1805367f0,0x1805367f0|", + ".?AV?$CloudyAudioProcessorEditor@VSoothe2AudioProcessor@@USoothe2VertexData@@@@|0x18250da78|0x1824b1528|0x180570e68,0x180565a70,0x18250cc08,0x180570f04,0x1813dc0d0,0x1813d8360,0x1813cf5a0,0x1813cde40,0x1813cde30,0x18250ce08,0x18056eb90,0x18056eb90,0x18056eea0,0x18056eb80,0x18048db00,0x180481210,0x18250bd10,0x1805603b0,0x18113285a,0x18250b590,0x18056ec20,0x18056ec20,0x18056eda0,0x18056ec10,0x18048db00,0x180481210,0x18250c018,0x18056e890,0x18056e890,0x18056f5b0,0x18056e880,0x18048dc80,0x180481210,0x18250df00,0x1804841c0,0x18055e1a0,0x18055e1c0,0x1811d2320,0x1811d2340,0x18055e1f0,0x18250bf08,0x180560030,0x18055fd70,0x18250c6a8,0x180564ca0,0x18134bc00,0x18134bbf0,0x18134bbe0|", + ".?AV?$CloudyOpenGLLayer@USoothe2VertexData@@@@|0x18250bb00|0x1824b12b8|0x1805619b0,0x18113285a,0x18113285a,0x18113285a,0x18113285a,0x18113285a,0x18113285a,0x18113285a,0x18250b718,0x180570e80,0x180563430,0x18250d260,0x180570e50,0x1813d3b10,0x18250ca40,0x18056f710,0x18056f710,0x18056fb60,0x18056f700,0x18048db00,0x180481210,0x18250c4a8,0x1804834e0,0x180471520,0x18250bba0,0x18056f6e0,0x18056f6e0,0x18056fb90,0x18056f6d0,0x18048db00,0x180481210,0x18250d578,0x180570f1c,0x180565bd0,0x18250dc00,0x18056f740,0x18056f740,0x18056fb30,0x18056f730,0x18048db00,0x180481210,0x18250cc90,0x180570ed4,0x180568990,0x18250ba98,0x1804841c0,0x1811c9e40,0x1811c9e10|", + ".?AV?$CloudyOpenGLRenderer@USoothe2VertexData@@@@|0x18250c270|0x1824b0678|0x180570e44,0x1805679e0,0x18250d238,0x18056e9b0,0x18056e9b0,0x18056f1e0,0x18056e9a0,0x18048db00,0x180481210,0x18250ce80,0x180561b00,0x180561370,0x180561450,0x180561440,0x18250c878,0x180570ea4,0x180568990,0x18250ce58,0x18056f890,0x18056f890,0x1804714b0,0x18056f880,0x18048db00,0x180481210,0x18250dcf8,0x180570e74,0x18133a110,0x18133a100,0x18133a0f0,0x18133a0e0,0x18250e010,0x18055e9a0,0x180471520,0x18250bd38,0x18056eb30,0x18056eb30,0x18056ef10,0x18056eb20,0x18048dc80,0x180481210,0x18250b6a0,0x180570f28,0x18055fda0,0x18250b9f8,0x180565b90,0x180570ee0,0x18250e268,0x18056f800|", + ".?AV?$DigitalFilter@M$0BA@$01@@|0x18251a770|0x1824be7a0|0x18058d2b0,0x18052cfb0,0x18052cfa0,0x1804714b0,0x18113285a,0x18113285a,0x18251af28,0x18058e2d0,0x18058e2d0,0x18058e450,0x18058e2c0,0x18048db00,0x180481210,0x18251b090,0x180589260,0x18134bc00,0x18058b4d0,0x18058b380,0x18134bbd0,0x18134bbc0,0x18134bbb0,0x18134bba0,0x18134bb30,0x18134bad0,0x18134c900,0x18134c760,0x18134c750,0x18134c3a0,0x18134c2d0,0x18134c2c0,0x18134c270,0x1805689c0,0x18134bf00,0x18134be30,0x18134bde0,0x18134bcf0,0x18134bce0,0x18134bc50,0x18134bc20,0x18058ad80,0x18134bc10,0x18134bac0,0x18134bab0,0x18134ba90,0x18134ba80,0x18134ba70,0x18134ba60,0x18058af50|", + ".?AV?$FilterGraph@M$05$0CAA@@@|0x18251ad88|0x1824be228|0x18058eb1c,0x18058b010,0x18251ab48,0x18058eab0,0x18160b000,0x1804714b0,0x18251a6c8,0x1805893c0,0x18134bc00,0x18134bbf0,0x18134bbe0,0x18134bbd0,0x18134bbc0,0x18134bbb0,0x18134bba0,0x18134bb30,0x18134bad0,0x18134c900,0x18134c760,0x18134c750,0x18134c3a0,0x18134c2d0,0x18134c2c0,0x18134c270,0x18134bf10,0x18134bf00,0x18134be30,0x18134bde0,0x18134bcf0,0x18134bce0,0x18134bc50,0x18134bc20,0x18134ade0,0x18134bc10,0x18134bac0,0x18134bab0,0x18134ba90,0x18134ba80,0x18134ba70,0x18134ba60,0x18160c410,0x18134ba50,0x18134adc0,0x18134ba40,0x18134ba30,0x18134ba20,0x18134ba10,0x18134b940|", + ".?AV?$FilterGraphGrid@M@@|0x18251adb0|0x1824be0a8|0x18058c4b0,0x18134bc00,0x18134bbf0,0x18134bbe0,0x18134bbd0,0x18134bbc0,0x18134bbb0,0x18134bba0,0x18134bb30,0x18134bad0,0x18134c900,0x18134c760,0x18134c750,0x18134c3a0,0x18134c2d0,0x18134c2c0,0x18134c270,0x1805689c0,0x18134bf00,0x18134be30,0x18134bde0,0x18134bcf0,0x18134bce0,0x18134bc50,0x18134bc20,0x18134ade0,0x18134bc10,0x18134bac0,0x18134bab0,0x18134ba90,0x18134ba80,0x18134ba70,0x18134ba60,0x1805895c0,0x18134ba50,0x18134adc0,0x18134ba40,0x18134ba30,0x18134ba20,0x18134ba10,0x18134b940,0x18134b930,0x18134b870,0x180589f40,0x18251a470,0x18058eaf8,0x180568990,0x18251ad88|", + ".?AV?$GainRangeScalingOptionComponent@VSoothe2GainRangeScalingOption@@@@|0x18250d088|0x1824b1e28|0x180570e5c,0x180564fc0,0x18250e158,0x18056f7d0,0x18056f7d0,0x18056f940,0x18056f7c0,0x18048db00,0x180481210,0x18250e628,0x180571090,0x18134bc00,0x18134bbf0,0x18134bbe0,0x18134bbd0,0x18134bbc0,0x18134bbb0,0x18134bba0,0x18134bb30,0x18134bad0,0x18134c900,0x18134c760,0x18134c750,0x18134c3a0,0x18134c2d0,0x18134c2c0,0x18134c270,0x18134bf10,0x18134bf00,0x18134be30,0x18134bde0,0x18134bcf0,0x18134bce0,0x18134bc50,0x18134bc20,0x18134ade0,0x18134bc10,0x18134bac0,0x18134bab0,0x18134ba90,0x18134ba80,0x18134ba70,0x18134ba60,0x18134add0,0x18134ba50,0x18134adc0,0x18134ba40,0x18134ba30|", + ".?AV?$IIRFilterExtended@M$01@@|0x182505b18|0x1824ac5d8|0x1805346b0,0x18052cfb0,0x18052cfa0,0x18052fb50,0x18052fb30,0x182506a00,0x180538460,0x1804714b0,0x180529c50,0x182504d80,0x18052d580,0x18052cfb0,0x18052cfa0,0x1804714b0,0x18113285a,0x1825071e8,0x180536aa0,0x180536aa0,0x180537b10,0x180536a90,0x18048db00,0x180481210,0x182505780,0x180536eb0,0x180536eb0,0x1805373c0,0x180536ea0,0x18048db00,0x180481210,0x182506568,0x1805365d0,0x1805365d0,0x180538110,0x1805365c0,0x18048dc80,0x180481210|", + ".?AV?$LowPassFilter@M$0BA@$01@@|0x18251a8e0|0x1824be990|0x18058d230,0x18052cfb0,0x18052cfa0,0x18058c850,0x18058c8b0,0x18058c7b0,0x18251ae98,0x18058e330,0x18058e330,0x18058e400,0x18058e320,0x18048db00,0x180481210,0x18251aab8,0x18058eb10,0x18058b500,0x18251ae70,0x1804840e0,0x180589190,0x1811efad0,0x1805891b0,0x1811ea380,0x18251a920,0x18058ea98,0x18058b500,0x18251a6f0,0x18058eaa4,0x180568990,0x18251a8b8,0x18058e2a0,0x18058e2a0,0x18058e520,0x18058e290,0x18048db00,0x180481210,0x18251aa40,0x18058ead4,0x18058b630,0x18251ad00,0x18058eae0,0x180568990,0x18251b440|", + ".?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@|0x182505fd8|0x1824ab228|0x18052d520,0x18113285a,0x182505008,0x180538490,0x18135c520,0x182506e60,0x1805368b0,0x1805368b0,0x180537d50,0x1805368a0,0x18048db00,0x180481210,0x182505108,0x1805292a0,0x18052c8f0,0x1812c1fb0,0x18052c4a0,0x1804714b0,0x1804714b0,0x1812c0b50,0x18052bfa0,0x1812c0b60,0x18135fd30,0x1804731c0,0x1804731c0,0x1812c0b40,0x181362010,0x1804731c0,0x1804731c0,0x1804731c0,0x1804731c0,0x1812c0ca0,0x1804727a0,0x1812c0df0,0x18135e010,0x180484870,0x1812c0cc0,0x18052c8d0|", + ".?AV?$Soothe2Module@M$01@@|0x182506a78|0x1824ac210|0x180535ed0,0x18052cfb0,0x180529550,0x1804714b0,0x18052b940,0x180529c60,0x180529fe0,0x180529ef0,0x18052bbf0,0x1804714b0,0x1804714b0,0x1804714b0,0x18052bba0,0x18052bb80,0x18052bb60,0x18052bb40,0x18052bb20,0x18052bb00,0x18052bad0,0x18052baa0,0x18052ba50,0x18052ba40,0x18052ba30,0x18052ba20,0x18052b9b0,0x18052b990,0x18052ce80,0x18052b980,0x18052b960,0x1804731c0,0x18052b950,0x1804714b0,0x182505030,0x1805369d0,0x1805369d0,0x180537bd0,0x1805369c0,0x18048db00,0x180481210,0x1825070a8|", + ".?AV?$Soothe2ModuleBase@M$01@@|0x1825056d8|0x1824ac7a8|0x18052fd40,0x18052cfb0,0x180529550,0x1804714b0,0x18052ce00,0x1804714b0,0x1804714b0,0x1804714b0,0x1804727a0,0x1804714b0,0x1804714b0,0x1804714b0,0x1804714b0,0x1804714b0,0x1804714b0,0x1804714b0,0x1804714b0,0x1804714b0,0x1804714b0,0x1804714b0,0x1804714b0,0x1804714b0,0x1804714b0,0x1804714b0,0x18052cec0,0x18052ce90,0x18052ce80,0x1804727a0,0x18052ce70,0x180484870,0x1804714b0,0x1804714b0,0x182507b08,0x180546620,0x1813afeb0,0x1813afef0,0x18136cc80,0x18136cc60,0x18136cc50,0x18136cc40,0x18136cc30,0x1813afd80,0x1813afe80,0x18136cbb0,0x1813afe40,0x1813afe70|", + ".?AV?$SpectralProcessor@M$07$01@@|0x182504fe0|0x1824abb90|0x18052d390,0x18052cfb0,0x180529550,0x1804714b0,0x180529610,0x18113285a,0x1804714b0,0x1804714b0,0x1804727a0,0x1804714b0,0x1804714b0,0x1804714b0,0x182505548,0x18052d3d0,0x18052c8f0,0x1812c1fb0,0x18052c4a0,0x1804714b0,0x1804714b0,0x1812c0b50,0x18052bfa0,0x1812c0b60,0x18052bdf0,0x1804731c0,0x1804731c0,0x1812c0b40,0x18113285a,0x1804731c0,0x1804731c0,0x1804731c0,0x1804731c0,0x1812c0ca0,0x1804727a0,0x1812c0df0,0x18113285a,0x180484870,0x1812c0cc0,0x18052c8d0,0x18052c8c0,0x18052c880,0x18052c7f0,0x1804714b0|", + ".?AV?$_Func_impl_no_alloc@V?$_Binder@U_Unforced@std@@P8?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@EAAXXZPEAV3@@std@@X$$V@std@@|0x182505910|0x1824ab888|0x180536610,0x180536610,0x1805380e0,0x180536600,0x1805365f0,0x180481210,0x182504cd0,0x180536d60,0x180536d60,0x1805375e0,0x180536d50,0x18048db00,0x180481210,0x182506f18,0x180536dc0,0x180536dc0,0x1805374e0,0x180536db0,0x18048db00,0x180481210,0x182506090,0x1805367f0,0x1805367f0,0x180537f60,0x1805367e0,0x18048db00,0x180481210,0x182506948,0x1805366d0,0x1805366d0,0x180538010,0x1805366c0,0x18048db00,0x180481210,0x1825061b8,0x180536a30,0x180536a30,0x1805376a0,0x180536a20,0x18048db00,0x180481210|", + ".?AVLines@?$FilterGraphGrid@M@@|0x18251af50|0x1824be5d8|0x18058e240,0x18134bc00,0x18134bbf0,0x18134bbe0,0x18134bbd0,0x18134bbc0,0x18134bbb0,0x18134bba0,0x18134bb30,0x18134bad0,0x18134c900,0x18134c760,0x18134c750,0x18134c3a0,0x18134c2d0,0x18134c2c0,0x18134c270,0x18134bf10,0x18134bf00,0x18134be30,0x18134bde0,0x18134bcf0,0x18134bce0,0x18134bc50,0x18134bc20,0x18058c900,0x18134bc10,0x18134bac0,0x18134bab0,0x18134ba90,0x18134ba80,0x18134ba70,0x18134ba60,0x18134add0,0x18134ba50,0x18134adc0,0x18134ba40,0x18134ba30,0x18134ba20,0x18134ba10,0x18134b940,0x18134b930,0x18134b870,0x18251a838,0x18058eaec,0x181a07140,0x18251a5b8,0x18058ea8c|", + ".?AVListener@?$Soothe2ModuleBase@M$01@@|0x18250c588|0x1824b0fd0|0x180564360,0x18113285a,0x18250b740,0x180570e08,0x180565bd0,0x18250e180,0x18056ea10,0x18056ea10,0x18056f130,0x18056ea00,0x18048db00,0x180481210,0x18250cc30,0x180570ebc,0x180565f20,0x1804714b0,0x18250b4b8,0x18056e9e0,0x18056e9e0,0x18056f190,0x18056e9d0,0x18048db00,0x180481210,0x18250d408,0x180570eec,0x180568990,0x18250bfb0,0x18056eb60,0x18056eb60,0x18056eec0,0x18056eb50,0x18048db00,0x180481210,0x18250d060,0x180570df0,0x18055fda0,0x18250c538,0x180570ef8,0x18055fd70,0x18250bdf8,0x18056e980,0x18056e980,0x18056f230,0x18056e970,0x18048db00,0x180481210,0x18250e210,0x180570eb0|", + ".?AVSoothe2AudioProcessor@@|0x182506ca0|0x1824abf60|0x1813658a0,0x18052c7e0,0x18053846c,0x182504fa0,0x180536f70,0x180536f70,0x180537160,0x180536f60,0x18048db00,0x180481210,0x182505208,0x180536670,0x180536670,0x1804714b0,0x180536660,0x18048db00,0x180481210,0x1825068b0,0x180536cc0,0x180536cc0,0x180537720,0x180536cb0,0x18048db00,0x180481210,0x182504e40,0x18113285a,0x18052c7e0,0x180538484,0x182506110,0x180528ba0,0x1804714b0,0x1804714b0,0x1825067d0,0x180536b90,0x180536b90,0x180537930,0x180536b80,0x18048dc80,0x180481210,0x182505680,0x180536c60,0x180536c60|", + ".?AVSoothe2AudioProcessorEditor@@|0x18250e210|0x1824b1148|0x180570eb0,0x180565a70,0x18250d1a8,0x180570ec8,0x180562fd0,0x18250db38,0x180561240,0x181413fd0,0x18250ccb8,0x18056f690,0x18056f690,0x180537680,0x18056f680,0x18048db00,0x180481210,0x18250be20,0x18055e150,0x181639430,0x18055e070,0x181639320,0x1811d2340,0x18055e0a0,0x1816393e0,0x181639350,0x18250d4b0,0x18055e7e0,0x18055e5f0,0x18055e620,0x1811d2320,0x1811d2340,0x18055e650,0x18250dc28,0x18056ea70,0x18056ea70,0x18056f0a0,0x18056ea60,0x18048dc80,0x180481210,0x18250bbf0,0x18056f870,0x18056f870,0x1804714b0,0x18056f860,0x18048db00,0x180481210,0x18250bb00,0x1805619b0,0x18113285a|", + ".?AVSoothe2DummyEqualizerWrapper@@|0x18250db38|0x1824b1178|0x180561240,0x181413fd0,0x18250ccb8,0x18056f690,0x18056f690,0x180537680,0x18056f680,0x18048db00,0x180481210,0x18250be20,0x18055e150,0x181639430,0x18055e070,0x181639320,0x1811d2340,0x18055e0a0,0x1816393e0,0x181639350,0x18250d4b0,0x18055e7e0,0x18055e5f0,0x18055e620,0x1811d2320,0x1811d2340,0x18055e650,0x18250dc28,0x18056ea70,0x18056ea70,0x18056f0a0,0x18056ea60,0x18048dc80,0x180481210,0x18250bbf0,0x18056f870,0x18056f870,0x1804714b0,0x18056f860,0x18048db00,0x180481210,0x18250bb00,0x1805619b0,0x18113285a,0x18113285a,0x18113285a,0x18113285a,0x18113285a,0x18113285a,0x18113285a|", + ".?AVSoothe2FilterGraph@@|0x18251b090|0x1824be810|0x180589260,0x18134bc00,0x18058b4d0,0x18058b380,0x18134bbd0,0x18134bbc0,0x18134bbb0,0x18134bba0,0x18134bb30,0x18134bad0,0x18134c900,0x18134c760,0x18134c750,0x18134c3a0,0x18134c2d0,0x18134c2c0,0x18134c270,0x1805689c0,0x18134bf00,0x18134be30,0x18134bde0,0x18134bcf0,0x18134bce0,0x18134bc50,0x18134bc20,0x18058ad80,0x18134bc10,0x18134bac0,0x18134bab0,0x18134ba90,0x18134ba80,0x18134ba70,0x18134ba60,0x18058af50,0x18134ba50,0x18134adc0,0x18134ba40,0x18134ba30,0x18134ba20,0x18134ba10,0x18134b940,0x18134b930,0x18134b870,0x1804714b0,0x181a06ff0,0x1804714b0,0x181a07170,0x18251a8e0|", + ".?AVSoothe2GainRangeScalingOption@@|0x18250be20|0x1824b11c8|0x18055e150,0x181639430,0x18055e070,0x181639320,0x1811d2340,0x18055e0a0,0x1816393e0,0x181639350,0x18250d4b0,0x18055e7e0,0x18055e5f0,0x18055e620,0x1811d2320,0x1811d2340,0x18055e650,0x18250dc28,0x18056ea70,0x18056ea70,0x18056f0a0,0x18056ea60,0x18048dc80,0x180481210,0x18250bbf0,0x18056f870,0x18056f870,0x1804714b0,0x18056f860,0x18048db00,0x180481210,0x18250bb00,0x1805619b0,0x18113285a,0x18113285a,0x18113285a,0x18113285a,0x18113285a,0x18113285a,0x18113285a,0x18250b718,0x180570e80,0x180563430,0x18250d260,0x180570e50,0x1813d3b10,0x18250ca40,0x18056f710,0x18056f710,0x18056fb60|", + ".?AVSoothe2Grid@@|0x18250b450|0x1824b1ac8|0x1805649b0,0x1805644b0,0x1805644c0,0x1804714b0,0x1804731c0,0x1805615b0,0x1805644e0,0x180564530,0x18250e130,0x18113285a,0x180560370,0x18250bd78,0x18056f770,0x18056f770,0x18056fb00,0x18056f760,0x18048db00,0x180481210,0x18250c640,0x18055e9f0,0x1813489b0,0x1813489a0,0x181348990,0x181348980,0x181348970,0x181348960,0x181411fb0,0x181348940,0x18250ba20,0x18056ebf0,0x18056ebf0,0x18056ee00,0x18056ebe0,0x18048db00,0x180481210,0x18250bf58,0x18056e8c0,0x18056e8c0,0x18056f540,0x18056e8b0,0x18048dc80,0x180481210,0x18250d0d8,0x18056f660,0x18056f660,0x18056fd00,0x18056f650,0x18048db00|", + ".?AVSoothe2Header@@|0x18251d498|0x1824c24f8|0x18059d1e0,0x18134bc00,0x18134bbf0,0x18134bbe0,0x18134bbd0,0x18134bbc0,0x18134bbb0,0x18134bba0,0x18134bb30,0x18134bad0,0x18134c900,0x18134c760,0x18134c750,0x18134c3a0,0x18134c2d0,0x18134c2c0,0x18134c270,0x1805689c0,0x18134bf00,0x18134be30,0x18134bde0,0x18134bcf0,0x18134bce0,0x18134bc50,0x18134bc20,0x18059cc40,0x18134bc10,0x18134bac0,0x18134bab0,0x18134ba90,0x18134ba80,0x18134ba70,0x18134ba60,0x18059cb60,0x18134ba50,0x18134adc0,0x18134ba40,0x18134ba30,0x18134ba20,0x18134ba10,0x18134b940,0x18134b930,0x18134b870,0x1804714b0,0x18251d388,0x18059e974,0x180483fd0,0x1804e4950|", + ".?AVSoothe2ModuleDecryptor@@|0x182506528|0x1824abe68|0x18052d520,0x1813e2a60,0x182505230,0x180536a50,0x180536a50,0x180537680,0x180536a40,0x18048db00,0x180481210,0x182505f28,0x180536be0,0x180536be0,0x180537680,0x180536bd0,0x18048db00,0x180481210,0x182505d30,0x180536d90,0x180536d90,0x180537590,0x180536d80,0x18048db00,0x180481210,0x182506ca0,0x1813658a0,0x18052c7e0,0x18053846c,0x182504fa0,0x180536f70,0x180536f70,0x180537160,0x180536f60,0x18048db00,0x180481210,0x182505208,0x180536670,0x180536670,0x1804714b0,0x180536660,0x18048db00|", + ".?AVSoothe2SectionHeader@@|0x18251bbe0|0x1824bf510|0x1805905e0,0x18134bc00,0x18134bbf0,0x18134bbe0,0x18134bbd0,0x18134bbc0,0x18134bbb0,0x18134bba0,0x18134bb30,0x18134bad0,0x18134c900,0x18134c760,0x18134c750,0x18134c3a0,0x18134c2d0,0x18134c2c0,0x18134c270,0x1805689c0,0x18134bf00,0x18134be30,0x18134bde0,0x18134bcf0,0x18134bce0,0x18134bc50,0x18134bc20,0x180590350,0x18134bc10,0x18134bac0,0x18134bab0,0x18134ba90,0x18134ba80,0x18134ba70,0x18134ba60,0x18058ff10,0x18134ba50,0x18134adc0,0x18134ba40,0x18134ba30,0x18134ba20,0x18134ba10,0x18134b940,0x18134b930,0x18134b870,0x1804714b0,0x18251b890,0x180591ee0,0x180591ee0,0x1805920b0|", + ".?AVSoothe2XYSliderArea@@|0x18251b440|0x1824beb10|0x18058ebf0,0x18134bc00,0x18057f450,0x18057f4f0,0x18158a900,0x181585b70,0x1815810c0,0x18134bba0,0x181585a90,0x18134bad0,0x18134c900,0x18134c760,0x18134c750,0x18134c3a0,0x18134c2d0,0x18134c2c0,0x18134c270,0x18058ee90,0x18134bf00,0x18134be30,0x18134bde0,0x18134bcf0,0x18134bce0,0x18134bc50,0x18134bc20,0x18134ade0,0x18134bc10,0x18134bac0,0x18134bab0,0x18156b440,0x18134ba80,0x18134ba70,0x18134ba60,0x181612000,0x18134ba50,0x18134adc0,0x18134ba40,0x18134ba30,0x18134ba20,0x18134ba10,0x18134b940,0x18134b930,0x18134b870,0x1816139e0,0x1804714b0,0x18251b3c8,0x18058efac,0x180568990|", + ".?AVSoothe2_DynamicCryptoManager@eden@pace@@|0x18250ed68|0x1824b2588|0x180575c40,0x18141b840,0x18141b5e0,0x18250eee8,0x180575990,0x182510fb8,0x18057c6f0,0x18057c6f0,0x1804714b0,0x18057c6e0,0x18048db00,0x180481210,0x18250f310,0x18057ed84,0x180568990,0x18250fb38,0x18057d4b0,0x18057d4b0,0x18057db80,0x18057d4a0,0x18048db00,0x180481210,0x182510490,0x18057bb00,0x18134bc00,0x181336710,0x1813366a0,0x1813365f0,0x1813363e0,0x1813364a0,0x18134bba0,0x18134bb30,0x18134bad0,0x18134c900,0x18134c760,0x1813362b0,0x18134c3a0,0x18134c2d0,0x18134c2c0,0x18134c270,0x180579330,0x18134bf00,0x18134be30,0x18134bde0,0x18134bcf0,0x181336f10,0x18134bc50,0x18134bc20|", + }; + SymbolTable st = currentProgram.getSymbolTable(); + FunctionManager fm = currentProgram.getFunctionManager(); + int lab = 0, fn = 0; + for (String line : data) { + if (line.trim().isEmpty()) continue; + String[] parts = line.replace(",|", "|").split("\\|"); + String cls = parts[0]; + long col = Long.decode(parts[1]); + long vf = Long.decode(parts[2]); + String[] fptrRaw = parts[3].split(","); + Namespace ns = st.getNamespace(cls, currentProgram.getGlobalNamespace()); + if (ns == null) { + ns = st.createClass(null, cls, SourceType.USER_DEFINED); + lab++; + } + for (String fs : fptrRaw) { + if (fs.isEmpty()) continue; + long f = Long.decode(fs); + Address addr = currentProgram.getAddressFactory().getDefaultAddressSpace().getAddress(f); + if (fm.getFunctionAt(addr) == null) { + try { + fm.createFunction(null, addr, null, SourceType.USER_DEFINED); + fn++; + } catch (Exception e) { + // function may already exist as part of larger body; still label + } + } + try { + st.createLabel(addr, "vtbl_" + cls, ns, SourceType.USER_DEFINED); + lab++; + } catch (Exception e) { + // ignore slash/illegal names + } + } + } + println("IMPORT_RTTI_NAMESPACES " + lab); + println("IMPORT_RTTI_FUNCTIONS " + fn); + } +} \ No newline at end of file diff --git a/curve_fits.npz b/curve_fits.npz new file mode 100644 index 0000000..58cbbed Binary files /dev/null and b/curve_fits.npz differ diff --git a/decomp_candidates.txt b/decomp_candidates.txt new file mode 100644 index 0000000..d03a6b9 --- /dev/null +++ b/decomp_candidates.txt @@ -0,0 +1,392 @@ +==================== 0x180536f70 vtbl_.?AVSoothe2AudioProcessor@@ size=22 refs=2 ==== + +undefined8 * +.?AVSoothe2AudioProcessor@@::vtbl___AVSoothe2AudioProcessor__(longlong param_1,undefined8 *param_2) + +{ + *param_2 = std::_Func_impl_no_alloc<,juce::String,float> + ::vftable; + param_2[1] = *(undefined8 *)(param_1 + 8); + return param_2; +} + + + +==================== 0x180537160 vtbl_.?AVSoothe2AudioProcessor@@ size=122 refs=2 ==== + +undefined8 +.?AVSoothe2AudioProcessor@@::vtbl___AVSoothe2AudioProcessor__ + (longlong param_1,undefined8 param_2,undefined4 *param_3) + +{ + undefined4 uVar1; + undefined8 uVar2; + longlong lVar3; + + uVar1 = *param_3; + uVar2 = FUN_18113e800(param_1,0xff547ddd,&DAT_1824aba30,0xb); + lVar3 = FUN_18119aa60(*(undefined8 *)(param_1 + 8),uVar2); + FUN_18141a8b0(param_2,uVar1,0.0 < *(float *)(lVar3 + 0x188)); + return param_2; +} + + + +==================== 0x180536f60 vtbl_.?AVSoothe2AudioProcessor@@ size=8 refs=1 ==== + +TypeDescriptor * .?AVSoothe2AudioProcessor@@::vtbl___AVSoothe2AudioProcessor__(void) + +{ + return &::RTTI_Type_Descriptor; +} + + + +==================== 0x180536670 vtbl_.?AVSoothe2AudioProcessor@@ size=22 refs=2 ==== + +undefined8 * +.?AVSoothe2AudioProcessor@@::vtbl___AVSoothe2AudioProcessor__(longlong param_1,undefined8 *param_2) + +{ + *param_2 = std::_Func_impl_no_alloc<,void,float>::vftable + ; + param_2[1] = *(undefined8 *)(param_1 + 8); + return param_2; +} + + + +==================== 0x180536660 vtbl_.?AVSoothe2AudioProcessor@@ size=8 refs=1 ==== + +TypeDescriptor * .?AVSoothe2AudioProcessor@@::vtbl___AVSoothe2AudioProcessor__(void) + +{ + return &::RTTI_Type_Descriptor; +} + + + +==================== 0x180536cc0 vtbl_.?AVSoothe2AudioProcessor@@ size=22 refs=2 ==== + +undefined8 * +.?AVSoothe2AudioProcessor@@::vtbl___AVSoothe2AudioProcessor__(longlong param_1,undefined8 *param_2) + +{ + *param_2 = std::_Func_impl_no_alloc<,void,float>::vftable + ; + param_2[1] = *(undefined8 *)(param_1 + 8); + return param_2; +} + + + +==================== 0x180537720 vtbl_.?AVSoothe2AudioProcessor@@ size=24 refs=1 ==== + +void .?AVSoothe2AudioProcessor@@::vtbl___AVSoothe2AudioProcessor__ + (longlong param_1,undefined4 *param_2) + +{ + /* WARNING: Could not recover jumptable at 0x000180537731. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (**(code **)(*(longlong *)**(undefined8 **)(param_1 + 8) + 0xc0)) + ((longlong *)**(undefined8 **)(param_1 + 8),*param_2,0); + return; +} + + + +==================== 0x180536cb0 vtbl_.?AVSoothe2AudioProcessor@@ size=8 refs=1 ==== + +TypeDescriptor * .?AVSoothe2AudioProcessor@@::vtbl___AVSoothe2AudioProcessor__(void) + +{ + return &::RTTI_Type_Descriptor; +} + + + +==================== 0x180536b90 vtbl_.?AVSoothe2AudioProcessor@@ size=22 refs=2 ==== + +undefined8 * +.?AVSoothe2AudioProcessor@@::vtbl___AVSoothe2AudioProcessor__(longlong param_1,undefined8 *param_2) + +{ + undefined8 uVar1; + + *param_2 = std::_Func_impl_no_alloc<,void,float>::vftable + ; + uVar1 = *(undefined8 *)(param_1 + 0x10); + param_2[1] = *(undefined8 *)(param_1 + 8); + param_2[2] = uVar1; + return param_2; +} + + + +==================== 0x180537930 vtbl_.?AVSoothe2AudioProcessor@@ size=104 refs=1 ==== + +void .?AVSoothe2AudioProcessor@@::vtbl___AVSoothe2AudioProcessor__ + (longlong param_1,undefined4 *param_2) + +{ + uint uVar1; + longlong lVar2; + longlong lVar3; + longlong lVar4; + + uVar1 = *(uint *)(param_1 + 8); + lVar2 = *(longlong *)(*(longlong *)(param_1 + 0x10) + 0x168); + lVar3 = lVar2 + 0x3d8; + if (uVar1 < *(uint *)(lVar2 + 0x444)) { + lVar4 = *(longlong *)(*(longlong *)(lVar2 + 0x438) + (longlong)(int)uVar1 * 8); + } + else { + lVar4 = 0; + } + *(undefined4 *)(lVar4 + 0x808) = *param_2; + if ((int)uVar1 < 0) { + *(undefined4 *)(lVar2 + 0x240467) = 0x1010101; + *(undefined4 *)(lVar2 + 0x24046b) = 0x1010101; + FUN_18052fc30(lVar3); + return; + } + *(undefined1 *)((longlong)(int)uVar1 + 0x24008f + lVar3) = 1; + FUN_18052fc30(lVar3); + return; +} + + + +==================== 0x180536b80 vtbl_.?AVSoothe2AudioProcessor@@ size=8 refs=1 ==== + +TypeDescriptor * .?AVSoothe2AudioProcessor@@::vtbl___AVSoothe2AudioProcessor__(void) + +{ + return &::RTTI_Type_Descriptor; +} + + + +==================== 0x180536c60 vtbl_.?AVSoothe2AudioProcessor@@ size=22 refs=2 ==== + +undefined8 * +.?AVSoothe2AudioProcessor@@::vtbl___AVSoothe2AudioProcessor__(longlong param_1,undefined8 *param_2) + +{ + *param_2 = std::_Func_impl_no_alloc<,void,float>::vftable + ; + param_2[1] = *(undefined8 *)(param_1 + 8); + return param_2; +} + + + +==================== 0x1813658a0 vtbl_.?AVSoothe2AudioProcessor@@ size=1221 refs=2 ==== + +/* WARNING: Function: _alloca_probe replaced with injection: alloca_probe */ +/* WARNING: Removing unreachable block (ram,0x000181365a33) */ +/* WARNING: Removing unreachable block (ram,0x000181365a1a) */ +/* WARNING: Removing unreachable block (ram,0x0001813659cb) */ +/* WARNING: Removing unreachable block (ram,0x000181365a49) */ + +void .?AVSoothe2AudioProcessor@@::vtbl___AVSoothe2AudioProcessor__(longlong param_1) + +{ + undefined8 uVar1; + ulonglong uVar2; + uint uVar3; + int iVar4; + undefined8 uVar5; + undefined8 uVar6; + undefined8 in_R11; + int unaff_retaddr; + undefined1 auStack_3ae8 [112]; + longlong local_3a78; + longlong local_3a60; + longlong local_3a00; + longlong local_39e8; + undefined4 local_3980; + uint local_397c; + undefined4 local_3978; + undefined8 local_3288; + undefined1 local_568 [24]; + undefined1 local_550 [64]; + undefined1 local_510 [64]; + undefined1 local_4d0 [72]; + undefined1 local_488 [24]; + undefined1 local_470 [64]; + undefined1 local_430 [64]; + undefined1 local_3f0 [832]; + ulonglong local_b0; + + local_3288 = 0xfffffffffffffffe; + local_b0 = DAT_182615970 ^ (ulonglong)auStack_3ae8; + local_3980 = 0xf40; + uVar5 = 0; + uVar6 = 0x23d7; + uVar3 = (uint)&stack0x00000000 & 0x33f; + iVar4 = (uVar3 + 2) * (uVar3 + 1) * uVar3; + local_397c = 0x2877U - (((iVar4 >> 1) - (iVar4 >> 3)) + iVar4 * 0x55555555 >> 0x1e) ^ 0x23d7; + local_3a00 = param_1; + uVar1 = FUN_180529410(local_568,DAT_1824c442c,DAT_1824c45e0,DAT_1824c3ea4); + local_3a60 = param_1 + 0x5c0; + FUN_1805291a0(local_3a60,uVar1); + FUN_180473170(local_4d0); + FUN_180473170(local_510); + FUN_180473170(local_550); + uVar2 = FUN_180487470(local_488,DAT_1824c4724,DAT_1824c4408); + local_3a78 = param_1 + 0x698; + FUN_1805291a0(local_3a78,uVar2); + FUN_180473170(local_3f0); + FUN_180473170(local_430); + FUN_180473170(local_470); + do { + local_3978 = 0x26d2ef6; + uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001; + if ((int)uVar3 < 0) { + uVar3 = (uVar3 - 1 | 0xfffffffe) + 1; + } + } while (uVar3 != 0); + local_39e8 = param_1 + 0x30; + FUN_1813c975b(0,((~(~uVar2 + 1) + 1 ^ 0xffffffffffffffff) + 1 ^ 0xffffffffffffffff) + 1,uVar5, + uVar6,&LAB_1813cf09f,&DAT_181365dbb,0x905206f8,in_R11,0x7bf54441); + return; +} + + + +==================== 0x18052c7e0 vtbl_.?AVSoothe2AudioProcessor@@ size=12 refs=2 ==== + +void .?AVSoothe2AudioProcessor@@::vtbl___AVSoothe2AudioProcessor__(longlong param_1) + +{ + FUN_18115fa70(param_1 + 0x2b8); + return; +} + + + +==================== 0x18053846c vtbl_.?AVSoothe2AudioProcessor@@ size=12 refs=1 ==== + +void .?AVSoothe2AudioProcessor@@::vtbl___AVSoothe2AudioProcessor__(longlong param_1) + +{ + .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@:: + vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____(param_1 + -0x148); + return; +} + + + +=== 0x1852000000 : NOT A FUNCTION === + +==================== 0x18052c7e0 vtbl_.?AVSoothe2AudioProcessor@@ size=12 refs=2 ==== + +void .?AVSoothe2AudioProcessor@@::vtbl___AVSoothe2AudioProcessor__(longlong param_1) + +{ + FUN_18115fa70(param_1 + 0x2b8); + return; +} + + + +==================== 0x180538484 vtbl_.?AVSoothe2AudioProcessor@@ size=12 refs=1 ==== + +void .?AVSoothe2AudioProcessor@@::vtbl___AVSoothe2AudioProcessor__(longlong param_1) + +{ + .?AV?$SpectralProcessor@M$07$01@@::vtbl___AV__SpectralProcessor_M_07_01__(param_1 + -0x148); + return; +} + + + +==================== 0x180536b60 vtbl_.?AV?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@ size=22 refs=2 ==== + +undefined8 * +.?AV?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@ +:: +vtbl___AV__CloudyAudioProcessor_V__Soothe2ModuleBase_M_01__VSoothe2ModuleDecryptor__VParameterStates__M__ + (longlong param_1,undefined8 *param_2) + +{ + undefined8 uVar1; + + *param_2 = std::_Func_impl_no_alloc<,void,float>::vftable + ; + uVar1 = *(undefined8 *)(param_1 + 0x10); + param_2[1] = *(undefined8 *)(param_1 + 8); + param_2[2] = uVar1; + return param_2; +} + + + +==================== 0x1805379a0 vtbl_.?AV?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@ size=104 refs=1 ==== + +void .?AV?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@ + :: + vtbl___AV__CloudyAudioProcessor_V__Soothe2ModuleBase_M_01__VSoothe2ModuleDecryptor__VParameterStates__M__ + (longlong param_1,undefined4 *param_2) + +{ + uint uVar1; + longlong lVar2; + longlong lVar3; + longlong lVar4; + + uVar1 = *(uint *)(param_1 + 8); + lVar2 = *(longlong *)(*(longlong *)(param_1 + 0x10) + 0x168); + lVar3 = lVar2 + 0x3d8; + if (uVar1 < *(uint *)(lVar2 + 0x444)) { + lVar4 = *(longlong *)(*(longlong *)(lVar2 + 0x438) + (longlong)(int)uVar1 * 8); + } + else { + lVar4 = 0; + } + *(undefined4 *)(lVar4 + 0x80c) = *param_2; + if ((int)uVar1 < 0) { + *(undefined4 *)(lVar2 + 0x240467) = 0x1010101; + *(undefined4 *)(lVar2 + 0x24046b) = 0x1010101; + FUN_18052fc30(lVar3); + return; + } + *(undefined1 *)((longlong)(int)uVar1 + 0x24008f + lVar3) = 1; + FUN_18052fc30(lVar3); + return; +} + + + +==================== 0x180536b50 vtbl_.?AV?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@ size=8 refs=1 ==== + +TypeDescriptor * +.?AV?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@ +:: +vtbl___AV__CloudyAudioProcessor_V__Soothe2ModuleBase_M_01__VSoothe2ModuleDecryptor__VParameterStates__M__ + (void) + +{ + return &::RTTI_Type_Descriptor; +} + + + +==================== 0x180536850 vtbl_.?AV?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@ size=22 refs=2 ==== + +undefined8 * +.?AV?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@ +:: +vtbl___AV__CloudyAudioProcessor_V__Soothe2ModuleBase_M_01__VSoothe2ModuleDecryptor__VParameterStates__M__ + (longlong param_1,undefined8 *param_2) + +{ + *param_2 = std::_Func_impl_no_alloc<,void,float>::vftable + ; + param_2[1] = *(undefined8 *)(param_1 + 8); + return param_2; +} + + + diff --git a/decomp_dsp.txt b/decomp_dsp.txt new file mode 100644 index 0000000..cbce3b1 --- /dev/null +++ b/decomp_dsp.txt @@ -0,0 +1,6634 @@ +############ VTABLE SpectralProcessor 0x1824abb90 +SLOTLIST: + [0] 0x18052d390 size=52 + [1] 0x18052cfb0 size=61 + [2] 0x180529550 size=191 + [3] 0x1804714b0 size=3 + [4] 0x180529610 size=1154 + [5] 0x18113285a size=6 + [6] 0x1804714b0 size=3 + [7] 0x1804714b0 size=3 + [8] 0x1804727a0 size=3 + [9] 0x1804714b0 size=3 + [10] 0x1804714b0 size=3 + [11] 0x1804714b0 size=3 + [18] 0x182505548 size=0 + [19] 0x18052d3d0 size=52 + [20] 0x18052c8f0 size=26 + [21] 0x1812c1fb0 size=92 + [22] 0x18052c4a0 size=794 + [23] 0x1804714b0 size=3 + [24] 0x1804714b0 size=3 + [25] 0x1812c0b50 size=3 + [26] 0x18052bfa0 size=870 + [27] 0x1812c0b60 size=152 + [28] 0x18052bdf0 size=432 + [29] 0x1804731c0 size=3 + [30] 0x1804731c0 size=3 + [31] 0x1812c0b40 size=3 + [32] 0x18113285a size=6 + [33] 0x1804731c0 size=3 + [34] 0x1804731c0 size=3 + [35] 0x1804731c0 size=3 + [36] 0x1804731c0 size=3 + [37] 0x1812c0ca0 size=3 + [38] 0x1804727a0 size=3 + [39] 0x1812c0df0 size=4 + [40] 0x18113285a size=6 + [41] 0x180484870 size=3 + [42] 0x1812c0cc0 size=3 + [43] 0x18052c8d0 size=18 + [44] 0x18052c8c0 size=16 + [45] 0x18052c880 size=49 + [46] 0x18052c7f0 size=141 + [47] 0x1804714b0 size=3 + [48] 0x18052bde0 size=15 + [49] 0x1812bfff0 size=10 + [50] 0x18052bdd0 size=15 + [51] 0x1812bffb0 size=55 + [52] 0x1812c0e20 size=3 + [53] 0x1812c0e10 size=3 + [54] 0x18052c490 size=14 + [55] 0x1812c1130 size=139 + [56] 0x1812c1070 size=180 + [57] 0x1812c11d0 size=5 + [58] 0x1812bf000 size=137 + [59] 0x1804d7000 size=33 + [60] 0x1812bffa0 size=3 + [61] 0x18052c310 size=339 + [62] 0x1804d7030 size=10 + [63] 0x1812c0230 size=525 +CCODE: + --- [1] 0x18052cfb0 size=61 --- + +void .?AV?$AudioProcessingModule@M$01@@::vtbl___AV__AudioProcessingModule_M_01__(longlong param_1) + +{ + FUN_1812b4430(param_1 + 0x14,0,2); + *(float *)(param_1 + 0x58) = (float)(DAT_1824c4230 / (double)*(float *)(param_1 + 0x24)); + return; +} + + + --- [2] 0x180529550 size=191 --- + +void .?AV?$Soothe2Module@M$01@@::vtbl___AV__Soothe2Module_M_01__ + (longlong *param_1,undefined4 param_2,undefined4 *param_3,int param_4) + +{ + int *piVar1; + longlong lVar2; + uint *puVar3; + + lVar2 = (longlong)param_4; + puVar3 = (uint *)(param_1 + (lVar2 + 9) * 8); + *(undefined4 *)(*(longlong *)(puVar3 + 8) + (longlong)(int)*puVar3 * 4) = *param_3; + *puVar3 = puVar3[2] - 1 & *puVar3 + 1; + puVar3 = (uint *)(param_1 + (lVar2 + 7) * 8); + *(undefined4 *)(*(longlong *)(puVar3 + 8) + (longlong)(int)*puVar3 * 4) = param_2; + *puVar3 = puVar3[2] - 1 & *puVar3 + 1; + piVar1 = (int *)((longlong)param_1 + lVar2 * 4 + 0x3c0); + *piVar1 = *piVar1 + 1; + if ((*(int *)((longlong)param_1 + lVar2 * 4 + 0x3c0) == (int)param_1[0x79] / 2) && (param_4 == 0)) + { + (**(code **)(*param_1 + 0x38))(param_1); + } + if (*(int *)((longlong)param_1 + lVar2 * 4 + 0x3c0) == (int)param_1[0x79]) { + *(undefined4 *)((longlong)param_1 + lVar2 * 4 + 0x3c0) = 0; + FUN_1805300f0(param_1,param_4); + } + return; +} + + + --- [4] 0x180529610 size=1154 --- + +void .?AV?$SpectralProcessor@M$07$01@@::vtbl___AV__SpectralProcessor_M_07_01__ + (longlong *param_1,longlong *param_2,ulonglong param_3) + +{ + int iVar1; + int iVar2; + longlong lVar3; + ulonglong uVar4; + uint uVar5; + int iVar6; + ulonglong uVar7; + ulonglong uVar8; + ulonglong uVar9; + longlong *plVar10; + longlong *plVar11; + code *pcVar12; + + uVar4 = 0; + uVar9 = uVar4; + if (0 < (int)param_1[6]) { + param_2 = param_1 + 0x3b; + do { + param_2[-3] = 0; + uVar8 = uVar4; + uVar7 = uVar4; + if (0 < (int)*param_2) { + do { + *(undefined4 *)(uVar7 + param_2[-1]) = 0; + uVar5 = (int)uVar8 + 1; + uVar8 = (ulonglong)uVar5; + uVar7 = uVar7 + 4; + } while ((int)uVar5 < (int)*param_2); + } + param_2[1] = param_2[-1]; + param_2[0xd] = 0; + uVar8 = uVar4; + uVar7 = uVar4; + if (0 < (int)param_2[0x10]) { + do { + *(undefined4 *)(uVar8 + param_2[0xf]) = 0; + uVar5 = (int)uVar7 + 1; + uVar8 = uVar8 + 4; + uVar7 = (ulonglong)uVar5; + } while ((int)uVar5 < (int)param_2[0x10]); + } + param_2[0x11] = param_2[0xf]; + param_2[0x1d] = 0; + uVar8 = uVar4; + param_3 = uVar4; + if (0 < (int)param_2[0x20]) { + do { + *(undefined4 *)(uVar8 + param_2[0x1f]) = 0; + uVar5 = (int)param_3 + 1; + param_3 = (ulonglong)uVar5; + uVar8 = uVar8 + 4; + } while ((int)uVar5 < (int)param_2[0x20]); + } + param_2[0x21] = param_2[0x1f]; + uVar5 = (int)uVar9 + 1; + uVar9 = (ulonglong)uVar5; + param_2 = param_2 + 8; + } while ((int)uVar5 < (int)param_1[6]); + } + FUN_18052e130(param_1,param_2,param_3,uVar9,0xfffffffffffffffe); + iVar1 = (int)param_1[0x34]; + uVar9 = (longlong)iVar1 % (longlong)*(int *)((longlong)param_1 + 0x1ac) & 0xffffffff; + *(int *)(param_1 + 0x79) = iVar1 / *(int *)((longlong)param_1 + 0x1ac); + *(int *)(param_1 + 0x35) = (int)param_1[0x36] * iVar1; + if (0 < (int)param_1[6]) { + plVar10 = param_1 + 0x3b; + uVar8 = uVar4; + do { + iVar2 = FUN_1813bbf80(0x10000,uVar9); + if ((int)plVar10[-2] != iVar2) { + FUN_18052e190(plVar10 + -1,iVar2,0); + } + *(int *)(plVar10 + -2) = iVar2; + plVar10[-3] = 0; + uVar9 = uVar4; + uVar7 = uVar4; + if (0 < (int)*plVar10) { + do { + *(undefined4 *)(uVar9 + plVar10[-1]) = 0; + uVar5 = (int)uVar7 + 1; + uVar9 = uVar9 + 4; + uVar7 = (ulonglong)uVar5; + } while ((int)uVar5 < (int)*plVar10); + } + plVar10[1] = plVar10[-1]; + uVar5 = (int)param_1[0x34] + (int)plVar10[-3] & (int)plVar10[-2] - 1U; + if ((int)uVar5 < 0) { + uVar5 = uVar5 + (int)plVar10[-2]; + } + *(uint *)(plVar10 + -3) = uVar5; + iVar2 = FUN_1813bbf80(0x10000); + if ((int)plVar10[0xe] != iVar2) { + FUN_18052e190(plVar10 + 0xf,iVar2,0); + } + *(int *)(plVar10 + 0xe) = iVar2; + plVar10[0xd] = 0; + uVar9 = uVar4; + uVar7 = uVar4; + if (0 < (int)plVar10[0x10]) { + do { + *(undefined4 *)(uVar9 + plVar10[0xf]) = 0; + uVar5 = (int)uVar7 + 1; + uVar9 = uVar9 + 4; + uVar7 = (ulonglong)uVar5; + } while ((int)uVar5 < (int)plVar10[0x10]); + } + plVar10[0x11] = plVar10[0xf]; + uVar5 = (int)param_1[0x34] + (int)plVar10[0xd] & (int)plVar10[0xe] - 1U; + if ((int)uVar5 < 0) { + uVar5 = uVar5 + (int)plVar10[0xe]; + } + *(uint *)(plVar10 + 0xd) = uVar5; + iVar2 = FUN_1813bbf80(0x10000); + if ((int)plVar10[0x1e] != iVar2) { + FUN_18052e190(plVar10 + 0x1f,iVar2,0); + } + *(int *)(plVar10 + 0x1e) = iVar2; + plVar10[0x1d] = 0; + uVar7 = uVar4; + uVar9 = uVar4; + if (0 < (int)plVar10[0x20]) { + do { + *(undefined4 *)(uVar7 + plVar10[0x1f]) = 0; + uVar5 = (int)uVar9 + 1; + uVar9 = (ulonglong)uVar5; + uVar7 = uVar7 + 4; + } while ((int)uVar5 < (int)plVar10[0x20]); + } + plVar10[0x21] = plVar10[0x1f]; + uVar5 = (int)uVar8 + 1; + uVar8 = (ulonglong)uVar5; + plVar10 = plVar10 + 8; + } while ((int)uVar5 < (int)param_1[6]); + } + if (0 < (int)param_1[6]) { + iVar2 = iVar1 * 0x10; + plVar10 = param_1 + 0x6c; + uVar9 = uVar4; + do { + if ((int)plVar10[1] == iVar2) { +LAB_18052990b: + uVar8 = uVar4; + uVar7 = uVar4; + if (0 < (int)plVar10[1]) { + do { + *(undefined4 *)(uVar8 + *plVar10) = 0; + uVar5 = (int)uVar7 + 1; + uVar8 = uVar8 + 4; + uVar7 = (ulonglong)uVar5; + } while ((int)uVar5 < (int)plVar10[1]); + } + } + else { + if ((0 < (int)plVar10[1]) && (*plVar10 != 0)) { + FUN_1800010c0(); + } + *plVar10 = 0; + iVar6 = iVar2; + if (iVar2 < 0) { + iVar6 = 0; + } + *(int *)(plVar10 + 1) = iVar6; + if (iVar6 != 0) { + lVar3 = FUN_180001080(iVar6 * 4); + *plVar10 = lVar3; + goto LAB_18052990b; + } + } + uVar5 = (int)uVar9 + 1; + uVar9 = (ulonglong)uVar5; + plVar10 = plVar10 + 2; + } while ((int)uVar5 < (int)param_1[6]); + } + if (0 < (int)param_1[6]) { + plVar11 = param_1 + 0x70; + plVar10 = param_1 + 0x6c; + uVar9 = uVar4; + do { + *plVar11 = *plVar10; + uVar5 = (int)uVar9 + 1; + uVar9 = (ulonglong)uVar5; + plVar10 = plVar10 + 2; + plVar11 = plVar11 + 1; + } while ((int)uVar5 < (int)param_1[6]); + } + FUN_18052e190(param_1 + 0x72,iVar1 * 0x10,0); + FUN_18052dc30(param_1 + 0xc,(int)param_1[0x35],iVar1 * 8); + FUN_18052e190(param_1 + 0x74,(int)param_1[0x34],0); + uVar9 = uVar4; + uVar8 = uVar4; + if (0 < (int)param_1[0x75]) { + do { + *(undefined4 *)(uVar9 + param_1[0x74]) = 0; + uVar5 = (int)uVar8 + 1; + uVar9 = uVar9 + 4; + uVar8 = (ulonglong)uVar5; + } while ((int)uVar5 < (int)param_1[0x75]); + } + if (0 < (int)param_1[6]) { + plVar10 = param_1 + 0x78; + do { + *(undefined4 *)plVar10 = 0; + uVar5 = (int)uVar4 + 1; + uVar4 = (ulonglong)uVar5; + plVar10 = (longlong *)((longlong)plVar10 + 4); + } while ((int)uVar5 < (int)param_1[6]); + } + FUN_18052df60(param_1); + if (*(char *)((longlong)param_1 + 0x1b6) == '\0') { + if (*(char *)((longlong)param_1 + 0x1b7) == '\0') { + if ((char)param_1[0x37] == '\0') goto LAB_180529a6a; + *(undefined1 *)(param_1 + 0x37) = 0; + pcVar12 = *(code **)(*param_1 + 0x48); + } + else { + *(undefined1 *)((longlong)param_1 + 0x1b7) = 0; + pcVar12 = *(code **)(*param_1 + 0x58); + } + } + else { + *(undefined1 *)((longlong)param_1 + 0x1b6) = 0; + pcVar12 = *(code **)(*param_1 + 0x50); + } + if (pcVar12 != _guard_check_icall) { + (*pcVar12)(param_1); + } +LAB_180529a6a: + *(undefined1 *)((longlong)param_1 + 0x3cc) = 0; + return; +} + + + --- [21] 0x1812c1fb0 size=92 --- + +undefined8 * +.?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@:: +vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____ + (longlong *param_1,undefined8 *param_2) + +{ + uint uVar1; + undefined8 uVar2; + uint *_Memory; + undefined8 *local_res10 [3]; + + local_res10[0] = param_2; + uVar2 = (**(code **)(*param_1 + 8))(param_1,local_res10); + *param_2 = 0; + param_2[1] = 0; + FUN_18049b000(param_2,uVar2); + _Memory = (uint *)(local_res10[0] + -2); + if ((*_Memory & 0x30000000) == 0) { + LOCK(); + uVar1 = *_Memory; + *_Memory = *_Memory - 1; + UNLOCK(); + if (uVar1 == 0) { + /* WARNING: Subroutine does not return */ + free(_Memory); + } + } + return param_2; +} + + + --- [22] 0x18052c4a0 size=794 --- + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +void .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@:: + vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____ + (longlong *param_1,double param_2,undefined4 param_3) + +{ + uint *puVar1; + int iVar2; + undefined8 *puVar3; + undefined8 *puVar4; + undefined8 *puVar5; + char cVar6; + uint uVar7; + undefined8 *puVar8; + code *pcVar9; + int iVar10; + longlong *plVar11; + ulonglong uVar12; + ulonglong uVar13; + ulonglong uVar14; + ulonglong uVar15; + ulonglong uVar16; + undefined1 auStack_e8 [32]; + code *local_c8; + undefined4 uStack_c0; + undefined4 uStack_bc; + undefined8 local_b8; + uint *local_b0; + undefined1 local_a8 [16]; + undefined1 local_98 [16]; + undefined **local_88; + undefined4 local_80; + undefined4 uStack_7c; + undefined4 uStack_78; + undefined4 uStack_74; + longlong *local_70; + undefined ***local_50; + ulonglong local_48; + + local_b8 = 0xfffffffffffffffe; + local_48 = DAT_182615970 ^ (ulonglong)auStack_e8; + puVar1 = (uint *)(param_1 + 0xab); + do { + LOCK(); + uVar7 = *puVar1; + *puVar1 = *puVar1 | 1; + UNLOCK(); + } while ((uVar7 & 1) != 0); + local_b0 = puVar1; + if ((*(char *)((longlong)param_1 + 0x554) != '\0') && (param_1[0xb7] != 0)) { + plVar11 = (longlong *)(param_1[0xb7] + 0x70); + (**(code **)(*plVar11 + 8))(plVar11,param_3,SUB84(param_2,0)); + } + uVar14 = 0; + if ((double)param_1[0x2b] != param_2) { + param_1[0xbb] = 0; + } + param_1[0x2b] = (longlong)param_2; + *(undefined4 *)(param_1 + 0x2c) = param_3; + cVar6 = (**(code **)(*(longlong *)param_1[0x2d] + 0xe8))(); + uVar7 = 0; + if (cVar6 != '\0') { + local_c8 = FUN_18052f680; + uStack_c0 = 0; + local_88 = std:: + _Func_impl_no_alloc,Soothe2ModuleDecryptor,ParameterStates,float>::*)(void)___ptr64,CloudyAudioProcessor,class_Soothe2ModuleDecryptor,class_ParameterStates,float>*___ptr64>,void> + ::vftable; + local_80 = 0x8052f680; + uStack_7c = 1; + uStack_78 = 0; + uStack_74 = uStack_bc; + local_50 = &local_88; + local_70 = param_1; + FUN_18113eab0(); + FUN_18114b490(&local_88); + if (local_50 != (undefined ***)0x0) { + (*(code *)(*local_50)[4])(local_50,local_50 != &local_88); + } + } + puVar8 = (undefined8 *)FUN_1812c37c0(param_1,local_a8); + if (*(int *)((longlong)puVar8 + 0xc) != 0) { + uVar7 = FUN_18123d3f0(*puVar8); + } + FUN_18047c500(local_98); + FUN_18047c500(local_a8); + if (uVar7 != *(uint *)((longlong)param_1 + 0x56c)) { + plVar11 = param_1 + 0xac; + FUN_180531620(plVar11); + if ((int)param_1[0xad] != 0) { + /* WARNING: Subroutine does not return */ + free((void *)*plVar11); + } + *(undefined4 *)(param_1 + 0xad) = 0; + if (0 < (int)uVar7) { + uVar13 = (ulonglong)uVar7; + do { + pcVar9 = (code *)FUN_1811316e0(0x28); + *(undefined8 *)pcVar9 = 0; + *(undefined4 *)(pcVar9 + 8) = 0; + *(undefined8 *)(pcVar9 + 0x10) = 0; + *(undefined4 *)(pcVar9 + 0x18) = 0; + *(undefined8 *)(pcVar9 + 0x20) = 0; + local_c8 = pcVar9; + FUN_18052bc40(pcVar9,0x10000); + iVar2 = *(int *)((longlong)param_1 + 0x56c); + iVar10 = iVar2 + 1; + if ((int)param_1[0xad] < iVar10) { + if (iVar10 < 0) { + iVar10 = iVar2 + 2; + } + FUN_18047cb30(plVar11,iVar2 + 9 + (iVar10 >> 1) & 0xfffffff8); + } + iVar10 = *(int *)((longlong)param_1 + 0x56c); + *(int *)((longlong)param_1 + 0x56c) = iVar10 + 1; + *(code **)(*plVar11 + (longlong)iVar10 * 8) = pcVar9; + uVar13 = uVar13 - 1; + } while (uVar13 != 0); + } + } + (**(code **)(*param_1 + 0x220))(param_1,param_1[0x2b],(int)param_1[0x2c]); + puVar8 = (undefined8 *)param_1[0x36]; + puVar3 = (undefined8 *)*puVar8; + while (puVar3 != puVar8) { + FUN_1811c4880(puVar3[5]); + puVar4 = (undefined8 *)puVar3[2]; + if (*(char *)((longlong)puVar4 + 0x19) == '\0') { + cVar6 = *(char *)((longlong)*puVar4 + 0x19); + puVar3 = puVar4; + puVar4 = (undefined8 *)*puVar4; + while (cVar6 == '\0') { + cVar6 = *(char *)((longlong)*puVar4 + 0x19); + puVar3 = puVar4; + puVar4 = (undefined8 *)*puVar4; + } + } + else { + cVar6 = *(char *)((longlong)puVar3[1] + 0x19); + puVar5 = (undefined8 *)puVar3[1]; + puVar4 = puVar3; + while ((puVar3 = puVar5, cVar6 == '\0' && (puVar4 == (undefined8 *)puVar3[2]))) { + cVar6 = *(char *)((longlong)puVar3[1] + 0x19); + puVar5 = (undefined8 *)puVar3[1]; + puVar4 = puVar3; + } + } + } + FUN_1812a77d0(param_1 + 0x60,0x10); + puVar8 = (undefined8 *)param_1[0xac]; + uVar13 = (ulonglong) + ((longlong)(puVar8 + *(int *)((longlong)param_1 + 0x56c)) + (7 - (longlong)puVar8)) >> 3; + if (puVar8 + *(int *)((longlong)param_1 + 0x56c) < puVar8) { + uVar13 = uVar14; + } + uVar16 = uVar14; + if (uVar13 != 0) { + do { + puVar3 = (undefined8 *)*puVar8; + *puVar3 = 0; + uVar12 = uVar14; + uVar15 = uVar14; + if (0 < *(int *)(puVar3 + 3)) { + do { + *(undefined4 *)(uVar12 + puVar3[2]) = 0; + uVar7 = (int)uVar15 + 1; + uVar12 = uVar12 + 4; + uVar15 = (ulonglong)uVar7; + } while ((int)uVar7 < *(int *)(puVar3 + 3)); + } + puVar3[4] = puVar3[2]; + puVar8 = puVar8 + 1; + uVar16 = uVar16 + 1; + } while (uVar16 != uVar13); + } + LOCK(); + *puVar1 = 0; + UNLOCK(); +} + + + --- [26] 0x18052bfa0 size=870 --- + +void .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@:: + vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____ + (longlong *param_1,longlong param_2,undefined8 param_3) + +{ + longlong *plVar1; + longlong lVar2; + char cVar3; + int iVar4; + uint uVar5; + int iVar6; + longlong lVar7; + uint *puVar8; + longlong lVar9; + uint *puVar10; + uint *puVar11; + uint *puVar12; + bool bVar13; + int local_b0; + int local_ac; + undefined4 local_a8; + undefined8 local_a0; + int local_94; + undefined1 local_90 [16]; + longlong local_80; + ulonglong local_78; + longlong local_70; + undefined4 local_68; + undefined4 local_64; + uint *local_60; + char local_58; + undefined8 local_50; + + local_50 = 0xfffffffffffffffe; + local_60 = (uint *)(param_1 + 0xab); + LOCK(); + bVar13 = (*local_60 & 1) == 0; + *local_60 = *local_60 | 1; + UNLOCK(); + puVar12 = (uint *)0x0; + iVar4 = 0; + if ((((DAT_1826216ff == '\0') || (DAT_18262170c == '\0')) || (DAT_18262170d == '\0')) || + ((DAT_1826216fd == '\0' || (iVar6 = 1, DAT_1826216fe == '\0')))) { + iVar6 = iVar4; + } + local_58 = bVar13; + if (((char)iVar6 == '\0') || + (cVar3 = (**(code **)(*(longlong *)param_1[0x2d] + 0xe8))(), cVar3 == '\0')) { + if (((DAT_1826216ff == '\0') || + (((DAT_18262170c == '\0' || (DAT_18262170d == '\0')) || (DAT_1826216fd == '\0')))) || + (iVar6 = 1, DAT_1826216fe == '\0')) { + iVar6 = iVar4; + } + if (((char)iVar6 != '\0') || + (cVar3 = (**(code **)(*(longlong *)param_1[0x2d] + 0xe8))(), cVar3 != '\0')) + goto LAB_18052c0bb; + } + if (bVar13) { + FUN_18052f850(param_1); + } +LAB_18052c0bb: + uVar5 = MXCSR; + local_78 = (ulonglong)MXCSR; + MXCSR = MXCSR | 0x8040; + if ((char)param_1[0xb6] != *(char *)((longlong)param_1 + 0x41)) { + *(char *)(param_1 + 0xb6) = *(char *)((longlong)param_1 + 0x41); + (**(code **)(*param_1 + 0x230))(param_1); + } + local_78._0_4_ = uVar5; + if (bVar13) { + cVar3 = (**(code **)(*(longlong *)param_1[0x2d] + 0xe8))(); + if (cVar3 == '\0') { + LOCK(); + *(undefined1 *)((longlong)param_1 + 0x164) = 0; + UNLOCK(); + FUN_181198f30(param_1 + 0x2f,0); + if ((*(char *)((longlong)param_1 + 0x554) != '\0') && (param_1[0xb7] != 0)) { + local_68 = 0; + local_64 = *(undefined4 *)(param_2 + 4); + plVar1 = (longlong *)(param_1[0xb7] + 0x70); + local_70 = param_2; + (**(code **)(*plVar1 + 0x18))(plVar1,&local_70); + } + FUN_1812c37c0(param_1,&local_a0); + if (local_94 != 0) { + iVar4 = FUN_18123d3f0(local_a0); + } + iVar6 = *(int *)(param_2 + 4); + local_80 = (longlong)iVar4; + if (0 < local_80) { + puVar8 = puVar12; + puVar10 = puVar12; + do { + lVar2 = *(longlong *)(*(longlong *)(param_2 + 0x10) + (longlong)puVar8 * 8); + puVar11 = puVar12; + if ((uint)puVar10 < *(uint *)((longlong)param_1 + 0x56c)) { + puVar11 = *(uint **)(param_1[0xac] + (longlong)puVar8 * 8); + } + lVar9 = lVar2; + FUN_18052f640(puVar11,&local_b0,iVar6,0,1); + lVar7 = (longlong)local_ac; + FUN_18052dbc0(*(longlong *)(puVar11 + 8) + (longlong)local_b0 * 4,lVar9,local_ac); + FUN_18052dbc0(*(undefined8 *)(puVar11 + 8),lVar2 + lVar7 * 4,local_a8); + uVar5 = *puVar11 + iVar6 & puVar11[2] - 1; + if ((int)uVar5 < 0) { + uVar5 = uVar5 + puVar11[2]; + } + *puVar11 = uVar5; + puVar10 = (uint *)(ulonglong)((uint)puVar10 + 1); + puVar8 = (uint *)((longlong)puVar8 + 1); + } while ((longlong)puVar8 < local_80); + } + FUN_18047c500(local_90); + FUN_18047c500(&local_a0); + (**(code **)(*param_1 + 0x228))(param_1,param_2,param_3); + if ((*(char *)((longlong)param_1 + 0x554) != '\0') && (param_1[0xb7] != 0)) { + FUN_18052fc90(param_2,*(undefined4 *)(param_1[0xb7] + 0x48)); + } + param_1[0xbb] = param_1[0xbb] + (longlong)*(int *)(param_2 + 4); + } + else { + (**(code **)(*param_1 + 0x48))(param_1,param_2,param_3); + FUN_18052fc90(param_2,0); + local_58 = bVar13; + } + } + else { + (**(code **)(*param_1 + 0x48))(param_1,param_2,param_3); + local_58 = bVar13; + } + MXCSR = (uint)local_78; + if (local_58 != '\0') { + LOCK(); + *local_60 = 0; + UNLOCK(); + } + return; +} + + + --- [27] 0x1812c0b60 size=152 --- + +void .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@:: + vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____ + (longlong param_1,longlong param_2) + +{ + int iVar1; + longlong lVar2; + + if ((*(int *)(param_1 + 0xdc) == 0) || (**(longlong **)(param_1 + 0xd0) == 0)) { + iVar1 = 0; + } + else { + iVar1 = *(int *)(**(longlong **)(param_1 + 0xd0) + 0x8c); + } + if (iVar1 < *(int *)(param_1 + 0x104)) { + lVar2 = (longlong)iVar1 * 8; + do { + if (*(char *)(param_2 + 0x120) == '\0') { + memset(*(void **)(*(longlong *)(param_2 + 0x10) + lVar2),0, + (longlong)*(int *)(param_2 + 4) << 3); + } + iVar1 = iVar1 + 1; + lVar2 = lVar2 + 8; + } while (iVar1 < *(int *)(param_1 + 0x104)); + } + return; +} + + + --- [28] 0x18052bdf0 size=432 --- + +void .?AV?$SpectralProcessor@M$07$01@@::vtbl___AV__SpectralProcessor_M_07_01__ + (longlong param_1,longlong param_2) + +{ + int iVar1; + int iVar2; + longlong lVar3; + int iVar4; + uint uVar5; + uint *puVar6; + longlong lVar7; + longlong lVar8; + uint uVar9; + longlong lVar10; + int local_78; + int local_74; + undefined4 local_70; + int local_68; + int local_64; + undefined4 local_60; + undefined8 local_58; + int local_4c; + undefined1 local_48 [16]; + + LOCK(); + *(undefined1 *)(param_1 + 0x164) = 1; + UNLOCK(); + FUN_1812c37c0(param_1,&local_58); + if (local_4c == 0) { + iVar4 = 0; + } + else { + iVar4 = FUN_18123d3f0(local_58); + } + iVar1 = *(int *)(param_1 + 0x3c); + uVar9 = 0; + iVar2 = *(int *)(param_2 + 4); + lVar10 = 0; + if (0 < (longlong)iVar4) { + do { + LOCK(); + *(undefined1 *)(param_2 + 0x120) = 0; + UNLOCK(); + lVar3 = *(longlong *)(*(longlong *)(param_2 + 0x10) + lVar10 * 8); + if (uVar9 < *(uint *)(param_1 + 0x56c)) { + puVar6 = *(uint **)(*(longlong *)(param_1 + 0x560) + lVar10 * 8); + } + else { + puVar6 = (uint *)0x0; + } + FUN_18052f640(puVar6,&local_78,iVar2,0,1); + lVar7 = (longlong)local_74; + FUN_18052dbc0(*(longlong *)(puVar6 + 8) + (longlong)local_78 * 4,lVar3,local_74); + FUN_18052dbc0(*(undefined8 *)(puVar6 + 8),lVar3 + lVar7 * 4,local_70); + uVar5 = *puVar6 + iVar2 & puVar6[2] - 1; + if ((int)uVar5 < 0) { + uVar5 = uVar5 + puVar6[2]; + } + *puVar6 = uVar5; + if (uVar9 < *(uint *)(param_1 + 0x56c)) { + lVar7 = *(longlong *)(*(longlong *)(param_1 + 0x560) + lVar10 * 8); + } + else { + lVar7 = 0; + } + FUN_18052f640(lVar7,&local_68,iVar2,-(iVar1 + iVar2),1); + lVar8 = (longlong)local_64; + FUN_18052dbc0(lVar3,*(longlong *)(lVar7 + 0x20) + (longlong)local_68 * 4,local_64); + FUN_18052dbc0(lVar3 + lVar8 * 4,*(undefined8 *)(lVar7 + 0x20),local_60); + uVar9 = uVar9 + 1; + lVar10 = lVar10 + 1; + } while (lVar10 < iVar4); + } + FUN_18047c500(local_48); + FUN_18047c500(&local_58); + return; +} + + + --- [46] 0x18052c7f0 size=141 --- + +undefined8 * +.?AV?$SpectralProcessor@M$07$01@@::vtbl___AV__SpectralProcessor_M_07_01__ + (longlong param_1,undefined8 *param_2,uint param_3) + +{ + longlong *plVar1; + undefined8 *puVar2; + longlong local_res8 [4]; + + if ((*(int *)(param_1 + 8) == 3) && (param_3 < *(uint *)(param_1 + 0x444))) { + plVar1 = *(longlong **)(*(longlong *)(param_1 + 0x438) + (longlong)(int)param_3 * 8); + if (plVar1 != (longlong *)0x0) { + if ((undefined **)*plVar1 == Preset::vftable) { + local_res8[0] = plVar1[2]; + FUN_18049c9e0(param_2,local_res8[0]); + return param_2; + } + puVar2 = (undefined8 *)(*(code *)((undefined **)*plVar1)[4])(plVar1,local_res8); + FUN_18049c9e0(param_2,*puVar2); + return param_2; + } + } + *param_2 = &DAT_1821dbf98; + return param_2; +} + + + --- [55] 0x1812c1130 size=139 --- + +void FUN_1812c1130(longlong param_1,longlong param_2) + +{ + longlong *plVar1; + int iVar2; + longlong *plVar3; + + EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x74)); + plVar3 = *(longlong **)(param_1 + 0x18); + iVar2 = *(int *)(param_1 + 0x24); + plVar1 = plVar3 + iVar2; + for (; plVar3 != plVar1; plVar3 = plVar3 + 1) { + if (param_2 == *plVar3) goto LAB_1812c11a1; + } + if (*(int *)(param_1 + 0x20) < iVar2 + 1) { + FUN_18047cb30(param_1 + 0x18,iVar2 + 9 + (iVar2 + 1) / 2 & 0xfffffff8); + } + iVar2 = *(int *)(param_1 + 0x24); + *(int *)(param_1 + 0x24) = iVar2 + 1; + *(longlong *)(*(longlong *)(param_1 + 0x18) + (longlong)iVar2 * 8) = param_2; +LAB_1812c11a1: + /* WARNING: Could not recover jumptable at 0x0001812c11b4. Too many branches */ + /* WARNING: Treating indirect jump as call */ + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x74)); + return; +} + + + --- [56] 0x1812c1070 size=180 --- + +void FUN_1812c1070(longlong param_1,longlong param_2) + +{ + void *_Dst; + int iVar1; + longlong lVar2; + int iVar3; + + EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x74)); + iVar1 = *(int *)(param_1 + 0x24); + iVar3 = 0; + lVar2 = 0; + if (0 < iVar1) { + do { + if (param_2 == *(longlong *)(*(longlong *)(param_1 + 0x18) + lVar2 * 8)) { + _Dst = (void *)(*(longlong *)(param_1 + 0x18) + (longlong)iVar3 * 8); + memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar1 - iVar3) + -1) << 3); + *(int *)(param_1 + 0x24) = *(int *)(param_1 + 0x24) + -1; + iVar1 = *(int *)(param_1 + 0x24); + iVar3 = 0; + if (0 < iVar1 * 2) { + iVar3 = iVar1 * 2; + } + if (iVar3 < *(int *)(param_1 + 0x20)) { + if (iVar1 < 8) { + iVar1 = 8; + } + if (iVar1 < *(int *)(param_1 + 0x20)) { + FUN_18047cb30(param_1 + 0x18); + } + } + break; + } + iVar3 = iVar3 + 1; + lVar2 = lVar2 + 1; + } while (lVar2 < iVar1); + } + /* WARNING: Could not recover jumptable at 0x0001812c111d. Too many branches */ + /* WARNING: Treating indirect jump as call */ + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x74)); + return; +} + + + --- [58] 0x1812bf000 size=137 --- + +void FUN_1812bf000(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined1 param_4) + +{ + undefined1 auStack_b8 [32]; + undefined1 local_98; + void *local_68; + undefined8 local_60; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + ulonglong local_40; + + local_40 = DAT_182615970 ^ (ulonglong)auStack_b8; + local_50 = 4; + local_48 = 0xffffffff; + local_68 = (void *)0x0; + local_60 = 0; + local_58 = 0; + local_98 = param_4; + FUN_18123c5f0(param_2,&local_68); + /* WARNING: Subroutine does not return */ + free(local_68); +} + + + --- [61] 0x18052c310 size=339 --- + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ +/* WARNING: Removing unreachable block (ram,0x00018052c3fa) */ +/* WARNING: Removing unreachable block (ram,0x00018052c3ff) */ +/* WARNING: Removing unreachable block (ram,0x00018052c40a) */ +/* WARNING: Removing unreachable block (ram,0x00018052c40f) */ +/* WARNING: Removing unreachable block (ram,0x00018052c413) */ +/* WARNING: Removing unreachable block (ram,0x00018052c3d6) */ + +void FUN_18052c310(undefined8 param_1,longlong param_2) + +{ + int iVar1; + undefined1 auStack_d8 [32]; + undefined4 local_b8; + void *local_b0 [5]; + undefined1 local_88 [40]; + void *local_60 [5]; + void *local_38 [5]; + ulonglong local_10; + + local_10 = DAT_182615970 ^ (ulonglong)auStack_d8; + local_b8 = 0; + FUN_18124a040(local_88,8); + FUN_1804db6f0(param_2 + 0x10,local_b0,0); + iVar1 = FUN_18123c5f0(local_b0,local_88); + if (iVar1 == 0) { + /* WARNING: Subroutine does not return */ + free(local_b0[0]); + } + FUN_18124a040(local_38,6); + FUN_1804db6f0(param_2 + 0x10,local_60,0); + FUN_18123c5f0(local_60,local_38); + /* WARNING: Subroutine does not return */ + free(local_60[0]); +} + + + --- [63] 0x1812c0230 size=525 --- + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +void FUN_1812c0230(longlong param_1,longlong param_2) + +{ + bool bVar1; + char cVar2; + int iVar3; + longlong lVar4; + undefined8 uVar5; + undefined1 auStack_98 [32]; + int local_78; + int local_74; + int local_70; + void *local_68 [2]; + undefined1 local_58 [24]; + ulonglong local_40; + + local_40 = DAT_182615970 ^ (ulonglong)auStack_98; + lVar4 = FUN_1812c37c0(param_1,local_68); + cVar2 = FUN_1804df970(param_2,lVar4); + if ((cVar2 == '\0') || (cVar2 = FUN_1804df970(param_2 + 0x10,lVar4 + 0x10), cVar2 == '\0')) { + bVar1 = false; + } + else { + bVar1 = true; + } + FUN_18047c500(local_58); + FUN_18047c500(local_68); + if (!bVar1) { + local_74 = *(int *)(param_1 + 0x100); + local_78 = *(int *)(param_1 + 0xec); + local_70 = *(int *)(param_1 + 0x104); + if ((*(int *)(param_2 + 0xc) == *(int *)(param_1 + 0xdc)) && + (*(int *)(param_2 + 0x1c) == local_78)) { + if (0 < *(int *)(param_1 + 0xdc)) { + if (*(int *)(param_1 + 0xdc) == 0) { + lVar4 = 0; + } + else { + lVar4 = **(longlong **)(param_1 + 0xd0); + } + FUN_1804db6f0(param_2,local_68,0); + FUN_18123d980(lVar4 + 0x10,local_68); + iVar3 = FUN_18123d3f0(local_68); + if (iVar3 != 0) { + FUN_18123d980(lVar4 + 0x60,local_68); + } + FUN_18123d3f0(local_68); + /* WARNING: Subroutine does not return */ + free(local_68[0]); + } + if (0 < local_78) { + if (*(int *)(param_1 + 0xec) == 0) { + lVar4 = 0; + } + else { + lVar4 = **(longlong **)(param_1 + 0xe0); + } + FUN_1804db6f0(param_2 + 0x10,local_68,0); + FUN_18123d980(lVar4 + 0x10,local_68); + iVar3 = FUN_18123d3f0(local_68); + if (iVar3 != 0) { + FUN_18123d980(lVar4 + 0x60,local_68); + } + FUN_18123d3f0(local_68); + /* WARNING: Subroutine does not return */ + free(local_68[0]); + } + if ((local_74 == 0) && (local_70 == 0)) { + uVar5 = 0; + } + else { + uVar5 = 1; + } + FUN_1812c0000(param_1,0,uVar5); + } + } +} + + +############ VTABLE Soothe2ModuleBase 0x1824ac7a8 +SLOTLIST: + [0] 0x18052fd40 size=38 + [1] 0x18052cfb0 size=61 + [2] 0x180529550 size=191 + [3] 0x1804714b0 size=3 + [4] 0x18052ce00 size=98 + [5] 0x1804714b0 size=3 + [6] 0x1804714b0 size=3 + [7] 0x1804714b0 size=3 + [8] 0x1804727a0 size=3 + [9] 0x1804714b0 size=3 + [10] 0x1804714b0 size=3 + [11] 0x1804714b0 size=3 + [12] 0x1804714b0 size=3 + [13] 0x1804714b0 size=3 + [14] 0x1804714b0 size=3 + [15] 0x1804714b0 size=3 + [16] 0x1804714b0 size=3 + [17] 0x1804714b0 size=3 + [18] 0x1804714b0 size=3 + [19] 0x1804714b0 size=3 + [20] 0x1804714b0 size=3 + [21] 0x1804714b0 size=3 + [22] 0x1804714b0 size=3 + [23] 0x1804714b0 size=3 + [24] 0x18052cec0 size=88 + [25] 0x18052ce90 size=48 + [26] 0x18052ce80 size=14 + [27] 0x1804727a0 size=3 + [28] 0x18052ce70 size=9 + [29] 0x180484870 size=3 + [30] 0x1804714b0 size=3 + [31] 0x1804714b0 size=3 + [34] 0x182507b08 size=0 + [35] 0x180546620 size=62 + [36] 0x1813afeb0 size=43 + [37] 0x1813afef0 size=130 + [38] 0x18136cc80 size=13 + [39] 0x18136cc60 size=13 + [40] 0x18136cc50 size=3 + [41] 0x18136cc40 size=3 + [42] 0x18136cc30 size=3 + [43] 0x1813afd80 size=80 + [44] 0x1813afe80 size=13 + [45] 0x18136cbb0 size=108 + [46] 0x1813afe40 size=32 + [47] 0x1813afe70 size=3 + [48] 0x1813afcf0 size=132 + [49] 0x18136cba0 size=3 + [50] 0x1825080a8 size=0 + [51] 0x18053e010 size=47 + [52] 0x1813af190 size=138 + [53] 0x1813af220 size=771 + [54] 0x1813af160 size=29 + [55] 0x18053dba0 size=990 + [56] 0x182507300 size=0 + [57] 0x1805386e0 size=120 + [58] 0x1813aed50 size=3 + [59] 0x1813aed40 size=3 + [60] 0x1813aec40 size=242 + [61] 0x1813aed90 size=5 + [62] 0x1813aed60 size=24 + [63] 0x1813aeda0 size=9 +CCODE: + --- [1] 0x18052cfb0 size=61 --- + +void .?AV?$AudioProcessingModule@M$01@@::vtbl___AV__AudioProcessingModule_M_01__(longlong param_1) + +{ + FUN_1812b4430(param_1 + 0x14,0,2); + *(float *)(param_1 + 0x58) = (float)(DAT_1824c4230 / (double)*(float *)(param_1 + 0x24)); + return; +} + + + --- [2] 0x180529550 size=191 --- + +void .?AV?$Soothe2Module@M$01@@::vtbl___AV__Soothe2Module_M_01__ + (longlong *param_1,undefined4 param_2,undefined4 *param_3,int param_4) + +{ + int *piVar1; + longlong lVar2; + uint *puVar3; + + lVar2 = (longlong)param_4; + puVar3 = (uint *)(param_1 + (lVar2 + 9) * 8); + *(undefined4 *)(*(longlong *)(puVar3 + 8) + (longlong)(int)*puVar3 * 4) = *param_3; + *puVar3 = puVar3[2] - 1 & *puVar3 + 1; + puVar3 = (uint *)(param_1 + (lVar2 + 7) * 8); + *(undefined4 *)(*(longlong *)(puVar3 + 8) + (longlong)(int)*puVar3 * 4) = param_2; + *puVar3 = puVar3[2] - 1 & *puVar3 + 1; + piVar1 = (int *)((longlong)param_1 + lVar2 * 4 + 0x3c0); + *piVar1 = *piVar1 + 1; + if ((*(int *)((longlong)param_1 + lVar2 * 4 + 0x3c0) == (int)param_1[0x79] / 2) && (param_4 == 0)) + { + (**(code **)(*param_1 + 0x38))(param_1); + } + if (*(int *)((longlong)param_1 + lVar2 * 4 + 0x3c0) == (int)param_1[0x79]) { + *(undefined4 *)((longlong)param_1 + lVar2 * 4 + 0x3c0) = 0; + FUN_1805300f0(param_1,param_4); + } + return; +} + + + --- [4] 0x18052ce00 size=98 --- + +void .?AV?$Soothe2ModuleBase@M$01@@::vtbl___AV__Soothe2ModuleBase_M_01__(longlong param_1) + +{ + float fVar1; + + .?AV?$SpectralProcessor@M$07$01@@::vtbl___AV__SpectralProcessor_M_07_01__(); + fVar1 = *(float *)(param_1 + 0x3fc); + *(float *)(param_1 + 0x3fc) = *(float *)(param_1 + 0x24); + if (fVar1 != *(float *)(param_1 + 0x24)) { + (**(code **)(*(longlong *)(param_1 + 0x3d8) + 0x20))((longlong *)(param_1 + 0x3d8)); + } + *(undefined4 *)(param_1 + 0x240458) = 4; + *(undefined4 *)(param_1 + 0x240467) = 0x1010101; + *(undefined4 *)(param_1 + 0x24046b) = 0x1010101; + return; +} + + + --- [24] 0x18052cec0 size=88 --- + +void .?AV?$Soothe2ModuleBase@M$01@@::vtbl___AV__Soothe2ModuleBase_M_01__(longlong param_1) + +{ + int iVar1; + + iVar1 = *(int *)(param_1 + 0x2404cc); + while( true ) { + if (iVar1 < 1) { + return; + } + iVar1 = iVar1 + -1; + if ((*(int *)(param_1 + 0x2404cc) <= iVar1) && + (iVar1 = *(int *)(param_1 + 0x2404cc) + -1, iVar1 < 0)) break; + FUN_180492ef8(*(undefined8 *)(*(longlong *)(param_1 + 0x2404c0) + (longlong)iVar1 * 8)); + } + return; +} + + + --- [35] 0x180546620 size=62 --- + +undefined8 * +.?AV?$Soothe2ModuleBase@M$01@@::vtbl___AV__Soothe2ModuleBase_M_01__ + (undefined8 *param_1,ulonglong param_2) + +{ + *param_1 = juce::WindowsMediaAudioFormat::vftable; + FUN_1813affa0(); + if ((param_2 & 1) != 0) { + /* WARNING: Subroutine does not return */ + free(param_1); + } + return param_1; +} + + + --- [37] 0x1813afef0 size=130 --- + +void .?AV?$Soothe2ModuleBase@M$01@@::vtbl___AV__Soothe2ModuleBase_M_01__ + (longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4) + +{ + undefined8 *puVar1; + char cVar2; + undefined8 *puVar3; + undefined8 *local_20; + int local_14; + + (**(code **)(*param_1 + 8))(param_1,&local_20,param_3,param_4,0xfffffffffffffffe); + puVar1 = local_20 + local_14; + puVar3 = local_20; + while( true ) { + if (puVar3 == puVar1) { + FUN_180488c50(&local_20); + /* WARNING: Subroutine does not return */ + free(local_20); + } + cVar2 = FUN_18123fe10(param_2,*puVar3); + if (cVar2 != '\0') break; + puVar3 = puVar3 + 1; + } + FUN_180488c50(&local_20); + /* WARNING: Subroutine does not return */ + free(local_20); +} + + + --- [43] 0x1813afd80 size=80 --- + +void .?AV?$Soothe2ModuleBase@M$01@@::vtbl___AV__Soothe2ModuleBase_M_01__ + (undefined8 param_1,undefined8 param_2) + +{ + undefined1 auStack_58 [32]; + void *local_38 [5]; + ulonglong local_10; + + local_10 = DAT_182615970 ^ (ulonglong)auStack_58; + FUN_18124a040(local_38,8); + FUN_18123c5f0(param_2,local_38); + /* WARNING: Subroutine does not return */ + free(local_38[0]); +} + + + --- [45] 0x18136cbb0 size=108 --- + +undefined8 * +.?AV?$Soothe2ModuleBase@M$01@@::vtbl___AV__Soothe2ModuleBase_M_01__ + (undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4) + +{ + undefined8 uVar1; + undefined8 *puVar2; + + uVar1 = FUN_1811316e0(0x90,param_2,param_3,param_4,0xfffffffffffffffe); + puVar2 = (undefined8 *)FUN_180545be0(uVar1,param_2); + if ((double)puVar2[1] <= 0.0) { + if ((char)param_3 == '\0') { + puVar2[10] = 0; + } + (**(code **)*puVar2)(puVar2,1); + puVar2 = (undefined8 *)0x0; + } + return puVar2; +} + + + --- [48] 0x1813afcf0 size=132 --- + +undefined8 +FUN_1813afcf0(longlong *param_1,undefined8 param_2,undefined4 param_3,undefined8 param_4, + undefined4 param_5,undefined8 param_6,undefined4 param_7) + +{ + char cVar1; + undefined4 uVar2; + undefined8 uVar3; + + cVar1 = (**(code **)(*param_1 + 0x40))(param_1,param_4); + if (cVar1 == '\0') { + uVar3 = 0; + } + else { + uVar2 = FUN_18123d3f0(param_4); + uVar3 = (**(code **)(*param_1 + 0x70))(param_1,param_2,param_3,uVar2,param_5,param_6,param_7); + } + return uVar3; +} + + + --- [52] 0x1813af190 size=138 --- + +void FUN_1813af190(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined4 *param_4, + undefined4 *param_5,undefined4 *param_6,undefined4 *param_7) + +{ + if (*(uint *)(param_1 + 4) < 2) { + (**(code **)(*param_1 + 0x10))(); + } + else { + (**(code **)(*param_1 + 0x10))(); + } + *param_4 = 0; + *param_5 = 0; + *param_6 = 0; + *param_7 = 0; + return; +} + + + --- [53] 0x1813af220 size=771 --- + +void FUN_1813af220(longlong *param_1,longlong param_2,ulonglong param_3,longlong param_4,int param_5 + ) + +{ + float fVar1; + int iVar2; + ulonglong uVar3; + bool bVar4; + int iVar5; + float fVar6; + char cVar7; + longlong lVar8; + float *pfVar9; + int iVar10; + longlong lVar11; + longlong lVar12; + int iVar13; + int iVar14; + int *piVar15; + undefined8 *puVar16; + longlong lVar17; + undefined8 *puVar18; + float fVar19; + float fVar20; + float local_1c4; + float local_1c0; + float local_1bc; + float local_1b8; + float local_1b4; + float fStack_1b0; + undefined8 *local_1a8; + longlong local_1a0; + ulonglong local_198; + undefined8 local_190; + undefined1 local_188 [16]; + undefined8 *local_178; + void *local_170; + undefined1 local_68; + + local_190 = 0xfffffffffffffffe; + lVar11 = (longlong)param_5; + if ((longlong)param_3 < 1) { + lVar8 = 0; + if (0 < param_5) { + do { + *(undefined8 *)(param_4 + lVar8 * 8) = 0; + lVar8 = lVar8 + 1; + } while (lVar8 < lVar11); + } + return; + } + iVar10 = (int)param_3; + if (0x1000 < (longlong)param_3) { + iVar10 = 0x1000; + } + local_1a0 = lVar11; + FUN_180535db0(local_188,lVar11,iVar10); + fVar6 = DAT_1824c3c28; + LOCK(); + local_68 = 0; + UNLOCK(); + local_1a8 = local_178; + bVar4 = true; + local_198 = (ulonglong)iVar10; + puVar16 = local_178; + do { + uVar3 = param_3; + if ((longlong)local_198 < (longlong)param_3) { + uVar3 = local_198; + } + iVar13 = (int)uVar3; + lVar17 = (longlong)iVar13; + lVar8 = param_2; + iVar10 = iVar13; + iVar14 = 0; + if (param_2 < 0) { + lVar8 = lVar11; + iVar14 = (int)-param_2; + if (lVar17 < -param_2) { + iVar14 = iVar13; + } + while (lVar8 = lVar8 + -1, -1 < lVar8) { + if ((void *)puVar16[lVar8] != (void *)0x0) { + memset((void *)puVar16[lVar8],0,(longlong)iVar14 << 2); + } + } + iVar10 = iVar13 - iVar14; + lVar8 = 0; + } + if (0 < iVar10) { + iVar5 = (int)param_1[4]; + if (param_5 < (int)param_1[4]) { + iVar5 = param_5; + } + cVar7 = (**(code **)(*param_1 + 0x20))(param_1,puVar16,iVar5,iVar14,lVar8,iVar10); + if (cVar7 == '\0') break; + lVar8 = (longlong)(int)param_1[4]; + if ((int)param_1[4] < param_5) { + for (; lVar8 < lVar11; lVar8 = lVar8 + 1) { + if ((void *)puVar16[lVar8] != (void *)0x0) { + memset((void *)puVar16[lVar8],0,lVar17 * 4); + } + } + } + } + puVar18 = puVar16; + lVar8 = lVar11; + if (0 < lVar11) { + lVar12 = param_4 - (longlong)puVar16; + do { + if (*(char *)((longlong)param_1 + 0x24) == '\0') { + piVar15 = (int *)*puVar16; + if (iVar13 < 1) { + iVar10 = 0; + iVar14 = 0; + } + else { + iVar10 = *piVar15; + iVar14 = iVar10; + iVar5 = iVar13; + while (iVar5 = iVar5 + -1, 0 < iVar5) { + piVar15 = piVar15 + 1; + iVar2 = *piVar15; + if (iVar10 < iVar2) { + iVar10 = iVar2; + } + if (iVar2 < iVar14) { + iVar14 = iVar2; + } + } + } + fVar20 = (float)iVar10 * fVar6; + fVar19 = (float)iVar14 * fVar6; + if (fVar20 <= fVar19) { + fVar20 = fVar19; + } + } + else { + FUN_1804d5400(&local_1bc,*puVar16,uVar3 & 0xffffffff); + fVar19 = local_1bc; + fVar20 = local_1b8; + } + if (bVar4) { + local_1b4 = fVar19; + fStack_1b0 = fVar20; + pfVar9 = &local_1b4; + } + else { + fVar1 = *(float *)(lVar12 + 4 + (longlong)puVar16); + if (fVar20 <= fVar1) { + fVar20 = fVar1; + } + if (*(float *)(lVar12 + (longlong)puVar16) <= fVar19) { + fVar19 = *(float *)(lVar12 + (longlong)puVar16); + } + local_1c4 = fVar19; + if (fVar20 <= fVar19) { + local_1c0 = fVar19; + } + else { + local_1c0 = fVar20; + } + pfVar9 = &local_1c4; + } + *(undefined8 *)(lVar12 + (longlong)puVar16) = *(undefined8 *)pfVar9; + puVar16 = puVar16 + 1; + lVar11 = lVar11 + -1; + puVar18 = local_1a8; + lVar8 = local_1a0; + } while (lVar11 != 0); + } + bVar4 = false; + param_3 = param_3 - lVar17; + param_2 = param_2 + lVar17; + puVar16 = puVar18; + lVar11 = lVar8; + } while (0 < (longlong)param_3); + /* WARNING: Subroutine does not return */ + free(local_170); +} + + + --- [55] 0x18053dba0 size=990 --- + +undefined8 +FUN_18053dba0(longlong param_1,longlong param_2,int param_3,int param_4,longlong param_5,int param_6 + ) + +{ + undefined4 uVar1; + int iVar2; + int iVar3; + int iVar4; + longlong lVar5; + longlong lVar6; + int iVar7; + int iVar8; + int local_res20; + longlong local_48; + + iVar4 = param_6; + local_res20 = param_4; + if (param_6 < 1) { + return 1; + } + do { + iVar2 = (*(int *)(param_1 + 0x4f4) - (int)param_5) + *(int *)(param_1 + 0x4f0); + if ((*(int *)(param_1 + 0x4f0) <= param_5) && (0 < iVar2)) { + iVar8 = iVar4; + if (iVar2 < iVar4) { + iVar8 = iVar2; + } + iVar2 = param_3; + if (*(int *)(param_1 + 0x3c8) < param_3) { + iVar2 = *(int *)(param_1 + 0x3c8); + } + iVar2 = iVar2 + -1; + if (-1 < iVar2) { + lVar5 = (longlong)iVar2 * 8; + do { + if (*(longlong *)(lVar5 + param_2) != 0) { + memcpy((void *)(*(longlong *)(lVar5 + param_2) + (longlong)local_res20 * 4), + (void *)(*(longlong *)(*(longlong *)(param_1 + 0x3d8) + lVar5) + + (longlong)((int)param_5 - *(int *)(param_1 + 0x4f0)) * 4), + (longlong)iVar8 << 2); + } + lVar5 = lVar5 + -8; + iVar2 = iVar2 + -1; + iVar4 = param_6; + } while (-1 < iVar2); + } + iVar4 = iVar4 - iVar8; + param_5 = param_5 + iVar8; + local_res20 = local_res20 + iVar8; + param_6 = iVar4; + if (iVar4 == 0) { + return 1; + } + } + if ((param_5 < *(int *)(param_1 + 0x4f0)) || + ((longlong)(*(int *)(param_1 + 0x4f0) + *(int *)(param_1 + 0x4f4)) < iVar4 + param_5)) { + *(undefined4 *)(param_1 + 0x4f4) = *(undefined4 *)(param_1 + 0x3cc); + iVar2 = -0x83; + iVar8 = 0; + if (0 < (int)param_5) { + iVar8 = (int)param_5; + } + *(int *)(param_1 + 0x4f0) = iVar8; + if (1 < *(int *)(param_1 + 0xe0)) { + iVar2 = (int)*(undefined8 *)(param_1 + 0xd8); + } + if (iVar8 != iVar2) { + FUN_18136fc00(param_1 + 0x60); + } + iVar8 = 0; + for (iVar2 = *(int *)(param_1 + 0x4f4); 0 < iVar2; iVar2 = iVar2 - iVar7) { + local_48 = 0; + iVar4 = param_6; + if (*(int *)(param_1 + 0xe0) < 2) { +LAB_18053deb3: + if ((0 < iVar2) && (*(char *)(param_1 + 0x4e8) == '\0')) { + if ((iVar8 == 0) && (iVar2 == *(int *)(param_1 + 0x3cc))) { + LOCK(); + *(undefined1 *)(param_1 + 0x4e8) = 1; + UNLOCK(); + } + iVar7 = 0; + if (0 < *(int *)(param_1 + 0x3c8)) { + lVar5 = 0; + do { + memset((void *)(*(longlong *)(*(longlong *)(param_1 + 0x3d8) + lVar5) + + (longlong)iVar8 * 4),0,(longlong)iVar2 << 2); + iVar7 = iVar7 + 1; + lVar5 = lVar5 + 8; + } while (iVar7 < *(int *)(param_1 + 0x3c8)); + } + } + break; + } + do { + if (*(int *)(param_1 + 0xe0) == 4) { + lVar5 = *(longlong *)(param_1 + 0x280); + if ((-1 < *(int *)(param_1 + 0x2a0)) && + (*(int *)(param_1 + 0x2a0) < *(int *)(param_1 + 0x29c))) { + iVar7 = 0; + if (0 < *(int *)(lVar5 + 4)) { + lVar6 = 0; + do { + iVar7 = iVar7 + 1; + *(longlong *)(lVar6 + *(longlong *)(param_1 + 0x290)) = + *(longlong *)(*(longlong *)(param_1 + 0x288) + -8 + lVar6 + 8) + + (longlong)*(int *)(param_1 + 0x2a0) * 4; + lVar6 = lVar6 + 8; + } while (iVar7 < *(int *)(lVar5 + 4)); + } + iVar7 = *(int *)(param_1 + 0x29c) - *(int *)(param_1 + 0x2a0); + if (iVar7 != 0) { + if (iVar2 < iVar7) { + iVar7 = iVar2; + } + uVar1 = *(undefined4 *)(*(longlong *)(*(longlong *)(param_1 + 200) + 0x20) + 0x1668) + ; + if ((iVar7 == 0) || (*(int *)(param_1 + 0x2a0) + iVar7 <= *(int *)(param_1 + 0x29c)) + ) { + *(int *)(param_1 + 0x2a0) = *(int *)(param_1 + 0x2a0) + iVar7; + } + *(longlong *)(param_1 + 0xd8) = + *(longlong *)(param_1 + 0xd8) + (longlong)(iVar7 << ((byte)uVar1 & 0x1f)); + local_48 = *(longlong *)(param_1 + 0x290); + break; + } + } + } + iVar7 = FUN_181371870(param_1 + 0x60); + if (iVar7 == -2) goto LAB_18053deb3; + } while (0 < iVar7); + if (iVar7 < 1) goto LAB_18053deb3; + iVar3 = *(int *)(param_1 + 0x20); + if (*(int *)(param_1 + 0x3c8) < *(int *)(param_1 + 0x20)) { + iVar3 = *(int *)(param_1 + 0x3c8); + } + lVar5 = (longlong)(iVar3 + -1); + if (-1 < iVar3 + -1) { + do { + LOCK(); + *(undefined1 *)(param_1 + 0x4e8) = 0; + UNLOCK(); + memcpy((void *)(*(longlong *)(*(longlong *)(param_1 + 0x3d8) + lVar5 * 8) + + (longlong)iVar8 * 4),*(void **)(local_48 + lVar5 * 8), + (longlong)iVar7 << 2); + lVar5 = lVar5 + -1; + } while (-1 < lVar5); + } + iVar8 = iVar8 + iVar7; + } + } + if (iVar4 < 1) { + return 1; + } + } while( true ); +} + + + --- [57] 0x1805386e0 size=120 --- + +undefined8 * FUN_1805386e0(undefined8 *param_1,uint param_2) + +{ + undefined8 *puVar1; + + *param_1 = juce::AudioFormatReaderSource::vftable; + if (*(char *)(param_1 + 2) == '\0') { + param_1[1] = 0; + } + else { + puVar1 = (undefined8 *)param_1[1]; + param_1[1] = 0; + if (puVar1 == (undefined8 *)0x0) goto LAB_180538737; + (**(code **)*puVar1)(puVar1,1); + } + puVar1 = (undefined8 *)param_1[1]; + if (puVar1 != (undefined8 *)0x0) { + (**(code **)*puVar1)(puVar1,1); + } +LAB_180538737: + if ((param_2 & 1) != 0) { + /* WARNING: Subroutine does not return */ + free(param_1); + } + return param_1; +} + + + --- [60] 0x1813aec40 size=242 --- + +void FUN_1813aec40(longlong param_1,undefined8 *param_2) + +{ + longlong lVar1; + longlong lVar2; + longlong lVar3; + longlong lVar4; + ulonglong uVar5; + int iVar6; + + iVar6 = *(int *)((longlong)param_2 + 0xc); + if (0 < iVar6) { + lVar1 = *(longlong *)(param_1 + 0x18); + lVar2 = *(longlong *)(param_1 + 8); + if (*(char *)(param_1 + 0x20) != '\0') { + lVar3 = *(longlong *)(lVar2 + 0x18); + lVar4 = lVar1 % lVar3; + uVar5 = (lVar1 + iVar6) % lVar3; + if (lVar4 < (longlong)uVar5) { + FUN_1813af530(lVar2,*param_2,*(undefined4 *)(param_2 + 1),(int)uVar5 - (int)lVar4,lVar4); + *(ulonglong *)(param_1 + 0x18) = uVar5; + return; + } + iVar6 = (int)lVar3 - (int)lVar4; + FUN_1813af530(lVar2,*param_2,*(undefined4 *)(param_2 + 1),iVar6,lVar4); + FUN_1813af530(*(undefined8 *)(param_1 + 8),*param_2,*(int *)(param_2 + 1) + iVar6, + uVar5 & 0xffffffff,0); + *(ulonglong *)(param_1 + 0x18) = uVar5; + return; + } + FUN_1813af530(lVar2,*param_2,*(undefined4 *)(param_2 + 1),(longlong)iVar6,lVar1); + *(longlong *)(param_1 + 0x18) = + *(longlong *)(param_1 + 0x18) + (longlong)*(int *)((longlong)param_2 + 0xc); + } + return; +} + + +############ VTABLE CloudyAudioProcessor 0x1824ab7c0 +SLOTLIST: + [0] 0x1805384a8 size=12 + [1] 0x18052bd00 size=189 + [2] 0x182507040 size=0 + [3] 0x180536b60 size=22 + [4] 0x180536b60 size=22 + [5] 0x1805379a0 size=104 + [6] 0x180536b50 size=8 + [7] 0x18048dc80 size=15 + [8] 0x180481210 size=5 + [10] 0x182505588 size=0 + [11] 0x180536850 size=22 + [12] 0x180536850 size=22 + [13] 0x180537e90 size=150 + [14] 0x180536840 size=8 + [15] 0x18048db00 size=15 + [16] 0x180481210 size=5 + [17] 0x182506590 size=0 + [18] 0x180536f20 size=14 + [19] 0x180536f20 size=14 + [20] 0x180537290 size=41 + [21] 0x180536f10 size=8 + [22] 0x18048db00 size=15 + [23] 0x180481210 size=5 + [24] 0x182505910 size=0 + [25] 0x180536610 size=30 + [26] 0x180536610 size=30 + [27] 0x1805380e0 size=35 + [28] 0x180536600 size=8 + [29] 0x1805365f0 size=15 + [30] 0x180481210 size=5 + [31] 0x182504cd0 size=0 + [32] 0x180536d60 size=22 + [33] 0x180536d60 size=22 + [34] 0x1805375e0 size=73 + [35] 0x180536d50 size=8 + [36] 0x18048db00 size=15 + [37] 0x180481210 size=5 + [38] 0x182506f18 size=0 + [39] 0x180536dc0 size=22 + [40] 0x180536dc0 size=22 + [41] 0x1805374e0 size=163 + [42] 0x180536db0 size=8 + [43] 0x18048db00 size=15 + [44] 0x180481210 size=5 + [45] 0x182506090 size=0 + [46] 0x1805367f0 size=22 + [47] 0x1805367f0 size=22 + [48] 0x180537f60 size=25 + [49] 0x1805367e0 size=8 + [50] 0x18048db00 size=15 + [51] 0x180481210 size=5 + [53] 0x182506948 size=0 + [54] 0x1805366d0 size=22 + [55] 0x1805366d0 size=22 + [56] 0x180538010 size=25 + [57] 0x1805366c0 size=8 + [58] 0x18048db00 size=15 + [59] 0x180481210 size=5 + [62] 0x1825061b8 size=0 + [63] 0x180536a30 size=14 +CCODE: + --- [1] 0x18052bd00 size=189 --- + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +void .?AV?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@ + :: + vtbl___AV__CloudyAudioProcessor_V__Soothe2ModuleBase_M_01__VSoothe2ModuleDecryptor__VParameterStates__M__ + (longlong param_1,undefined8 param_2,undefined8 *param_3) + +{ + uint *_Memory; + uint uVar1; + undefined1 uVar2; + int iVar3; + undefined1 auStack_58 [32]; + longlong local_38; + undefined8 local_30; + undefined8 *local_28; + ulonglong local_20; + + local_30 = 0xfffffffffffffffe; + local_20 = DAT_182615970 ^ (ulonglong)auStack_58; + local_38 = *(longlong *)(param_1 + 0x478); + _Memory = (uint *)(local_38 + -0x10); + if ((*_Memory & 0x30000000) == 0) { + LOCK(); + *_Memory = *_Memory + 1; + UNLOCK(); + } + local_28 = param_3; + iVar3 = FUN_18048cbc0(param_2,local_38); + if ((*_Memory & 0x30000000) == 0) { + LOCK(); + uVar1 = *_Memory; + *_Memory = *_Memory - 1; + UNLOCK(); + if (uVar1 == 0) { + /* WARNING: Subroutine does not return */ + free(_Memory); + } + } + if (iVar3 == 0) { + uVar2 = FUN_180528b30(param_1 + 0x470); + *(undefined1 *)(param_1 + 0x404) = uVar2; + } + (**(code **)(*(longlong *)*param_3 + 0xb0))((longlong *)*param_3,param_3 + 1); +} + + + --- [5] 0x1805379a0 size=104 --- + +void .?AV?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@ + :: + vtbl___AV__CloudyAudioProcessor_V__Soothe2ModuleBase_M_01__VSoothe2ModuleDecryptor__VParameterStates__M__ + (longlong param_1,undefined4 *param_2) + +{ + uint uVar1; + longlong lVar2; + longlong lVar3; + longlong lVar4; + + uVar1 = *(uint *)(param_1 + 8); + lVar2 = *(longlong *)(*(longlong *)(param_1 + 0x10) + 0x168); + lVar3 = lVar2 + 0x3d8; + if (uVar1 < *(uint *)(lVar2 + 0x444)) { + lVar4 = *(longlong *)(*(longlong *)(lVar2 + 0x438) + (longlong)(int)uVar1 * 8); + } + else { + lVar4 = 0; + } + *(undefined4 *)(lVar4 + 0x80c) = *param_2; + if ((int)uVar1 < 0) { + *(undefined4 *)(lVar2 + 0x240467) = 0x1010101; + *(undefined4 *)(lVar2 + 0x24046b) = 0x1010101; + FUN_18052fc30(lVar3); + return; + } + *(undefined1 *)((longlong)(int)uVar1 + 0x24008f + lVar3) = 1; + FUN_18052fc30(lVar3); + return; +} + + + --- [13] 0x180537e90 size=150 --- + +void .?AV?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@ + :: + vtbl___AV__CloudyAudioProcessor_V__Soothe2ModuleBase_M_01__VSoothe2ModuleDecryptor__VParameterStates__M__ + (longlong param_1,float *param_2) + +{ + longlong lVar1; + char cVar2; + int iVar3; + + iVar3 = (int)*param_2; + if ((*(char *)(*(longlong *)(param_1 + 8) + 0x41) != '\0') && + (cVar2 = FUN_180528d50(), cVar2 != '\0')) { + return; + } + lVar1 = *(longlong *)(*(longlong *)(param_1 + 8) + 0x168); + *(undefined1 *)(lVar1 + 0x3cc) = 1; + *(undefined1 *)(lVar1 + 0x1b6) = 1; + if (iVar3 == 1) { + *(undefined4 *)(lVar1 + 0x1ac) = 4; + } + else if (iVar3 == 2) { + *(undefined4 *)(lVar1 + 0x1ac) = 8; + } + else if (iVar3 == 3) { + *(undefined4 *)(lVar1 + 0x1ac) = 0x10; + } + else { + *(undefined4 *)(lVar1 + 0x1ac) = 2; + } + (**(code **)(**(longlong **)(*(longlong *)(param_1 + 8) + 0x168) + 0x20))(); + return; +} + + + --- [34] 0x1805375e0 size=73 --- + +void .?AV?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@ + :: + vtbl___AV__CloudyAudioProcessor_V__Soothe2ModuleBase_M_01__VSoothe2ModuleDecryptor__VParameterStates__M__ + (longlong param_1,undefined4 *param_2) + +{ + longlong lVar1; + + lVar1 = **(longlong **)(param_1 + 8); + if (*(int *)(lVar1 + 0x444) != 0) { + *(undefined4 *)(**(longlong **)(lVar1 + 0x438) + 0x80c) = *param_2; + *(undefined1 *)(lVar1 + 0x240467) = 1; + FUN_18052fc30(); + return; + } + uRam000000000000080c = *param_2; + *(undefined1 *)(lVar1 + 0x240467) = 1; + FUN_18052fc30(); + return; +} + + + --- [41] 0x1805374e0 size=163 --- + +void .?AV?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@ + :: + vtbl___AV__CloudyAudioProcessor_V__Soothe2ModuleBase_M_01__VSoothe2ModuleDecryptor__VParameterStates__M__ + (longlong param_1,float *param_2) + +{ + longlong *plVar1; + longlong lVar2; + float fVar3; + float fVar4; + float fVar5; + + fVar3 = logf(DAT_1824c43e8); + plVar1 = *(longlong **)(*(longlong *)(param_1 + 8) + 0x168); + lVar2 = *plVar1; + fVar4 = powf(*param_2 * DAT_1824c3cb8,DAT_1824c3ef8); + fVar5 = logf(DAT_1824c45e4); + fVar3 = expf(fVar4 * (fVar5 - fVar3) + fVar3); + /* WARNING: Could not recover jumptable at 0x000180537580. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (**(code **)(lVar2 + 0x80))(plVar1,fVar3); + return; +} + + +############ VTABLE AudioProcessingModule 0x1824ac638 +SLOTLIST: + [0] 0x18052d580 size=47 + [1] 0x18052cfb0 size=61 + [2] 0x18052cfa0 size=13 + [3] 0x1804714b0 size=3 + [4] 0x18113285a size=6 + [9] 0x1825071e8 size=0 + [10] 0x180536aa0 size=22 + [11] 0x180536aa0 size=22 + [12] 0x180537b10 size=74 + [13] 0x180536a90 size=8 + [14] 0x18048db00 size=15 + [15] 0x180481210 size=5 + [20] 0x182505780 size=0 + [21] 0x180536eb0 size=22 + [22] 0x180536eb0 size=22 + [23] 0x1805373c0 size=41 + [24] 0x180536ea0 size=8 + [25] 0x18048db00 size=15 + [26] 0x180481210 size=5 + [27] 0x182506568 size=0 + [28] 0x1805365d0 size=30 + [29] 0x1805365d0 size=30 + [30] 0x180538110 size=44 + [31] 0x1805365c0 size=8 + [32] 0x18048dc80 size=15 + [33] 0x180481210 size=5 + [45] 0x1825056d8 size=0 + [46] 0x18052fd40 size=38 + [47] 0x18052cfb0 size=61 + [48] 0x180529550 size=191 + [49] 0x1804714b0 size=3 + [50] 0x18052ce00 size=98 + [51] 0x1804714b0 size=3 + [52] 0x1804714b0 size=3 + [53] 0x1804714b0 size=3 + [54] 0x1804727a0 size=3 + [55] 0x1804714b0 size=3 + [56] 0x1804714b0 size=3 + [57] 0x1804714b0 size=3 + [58] 0x1804714b0 size=3 + [59] 0x1804714b0 size=3 + [60] 0x1804714b0 size=3 + [61] 0x1804714b0 size=3 + [62] 0x1804714b0 size=3 + [63] 0x1804714b0 size=3 +CCODE: + --- [1] 0x18052cfb0 size=61 --- + +void .?AV?$AudioProcessingModule@M$01@@::vtbl___AV__AudioProcessingModule_M_01__(longlong param_1) + +{ + FUN_1812b4430(param_1 + 0x14,0,2); + *(float *)(param_1 + 0x58) = (float)(DAT_1824c4230 / (double)*(float *)(param_1 + 0x24)); + return; +} + + + --- [12] 0x180537b10 size=74 --- + +void .?AV?$AudioProcessingModule@M$01@@::vtbl___AV__AudioProcessingModule_M_01__ + (longlong param_1,undefined4 *param_2) + +{ + longlong lVar1; + + lVar1 = **(longlong **)(param_1 + 8); + if (5 < *(uint *)(lVar1 + 0x444)) { + *(undefined4 *)(*(longlong *)(*(longlong *)(lVar1 + 0x438) + 0x28) + 0x80c) = *param_2; + *(undefined1 *)(lVar1 + 0x24046c) = 1; + FUN_18052fc30(); + return; + } + uRam000000000000080c = *param_2; + *(undefined1 *)(lVar1 + 0x24046c) = 1; + FUN_18052fc30(); + return; +} + + + --- [47] 0x18052cfb0 size=61 --- + +void .?AV?$AudioProcessingModule@M$01@@::vtbl___AV__AudioProcessingModule_M_01__(longlong param_1) + +{ + FUN_1812b4430(param_1 + 0x14,0,2); + *(float *)(param_1 + 0x58) = (float)(DAT_1824c4230 / (double)*(float *)(param_1 + 0x24)); + return; +} + + + --- [48] 0x180529550 size=191 --- + +void .?AV?$Soothe2Module@M$01@@::vtbl___AV__Soothe2Module_M_01__ + (longlong *param_1,undefined4 param_2,undefined4 *param_3,int param_4) + +{ + int *piVar1; + longlong lVar2; + uint *puVar3; + + lVar2 = (longlong)param_4; + puVar3 = (uint *)(param_1 + (lVar2 + 9) * 8); + *(undefined4 *)(*(longlong *)(puVar3 + 8) + (longlong)(int)*puVar3 * 4) = *param_3; + *puVar3 = puVar3[2] - 1 & *puVar3 + 1; + puVar3 = (uint *)(param_1 + (lVar2 + 7) * 8); + *(undefined4 *)(*(longlong *)(puVar3 + 8) + (longlong)(int)*puVar3 * 4) = param_2; + *puVar3 = puVar3[2] - 1 & *puVar3 + 1; + piVar1 = (int *)((longlong)param_1 + lVar2 * 4 + 0x3c0); + *piVar1 = *piVar1 + 1; + if ((*(int *)((longlong)param_1 + lVar2 * 4 + 0x3c0) == (int)param_1[0x79] / 2) && (param_4 == 0)) + { + (**(code **)(*param_1 + 0x38))(param_1); + } + if (*(int *)((longlong)param_1 + lVar2 * 4 + 0x3c0) == (int)param_1[0x79]) { + *(undefined4 *)((longlong)param_1 + lVar2 * 4 + 0x3c0) = 0; + FUN_1805300f0(param_1,param_4); + } + return; +} + + + --- [50] 0x18052ce00 size=98 --- + +void .?AV?$Soothe2ModuleBase@M$01@@::vtbl___AV__Soothe2ModuleBase_M_01__(longlong param_1) + +{ + float fVar1; + + .?AV?$SpectralProcessor@M$07$01@@::vtbl___AV__SpectralProcessor_M_07_01__(); + fVar1 = *(float *)(param_1 + 0x3fc); + *(float *)(param_1 + 0x3fc) = *(float *)(param_1 + 0x24); + if (fVar1 != *(float *)(param_1 + 0x24)) { + (**(code **)(*(longlong *)(param_1 + 0x3d8) + 0x20))((longlong *)(param_1 + 0x3d8)); + } + *(undefined4 *)(param_1 + 0x240458) = 4; + *(undefined4 *)(param_1 + 0x240467) = 0x1010101; + *(undefined4 *)(param_1 + 0x24046b) = 0x1010101; + return; +} + + +############ VTABLE IIRFilterExtended 0x1824ac5d8 +SLOTLIST: + [0] 0x1805346b0 size=56 + [1] 0x18052cfb0 size=61 + [2] 0x18052cfa0 size=13 + [3] 0x18052fb50 size=119 + [4] 0x18052fb30 size=31 + [5] 0x182506a00 size=0 + [6] 0x180538460 size=12 + [7] 0x1804714b0 size=3 + [8] 0x180529c50 size=8 + [11] 0x182504d80 size=0 + [12] 0x18052d580 size=47 + [13] 0x18052cfb0 size=61 + [14] 0x18052cfa0 size=13 + [15] 0x1804714b0 size=3 + [16] 0x18113285a size=6 + [21] 0x1825071e8 size=0 + [22] 0x180536aa0 size=22 + [23] 0x180536aa0 size=22 + [24] 0x180537b10 size=74 + [25] 0x180536a90 size=8 + [26] 0x18048db00 size=15 + [27] 0x180481210 size=5 + [32] 0x182505780 size=0 + [33] 0x180536eb0 size=22 + [34] 0x180536eb0 size=22 + [35] 0x1805373c0 size=41 + [36] 0x180536ea0 size=8 + [37] 0x18048db00 size=15 + [38] 0x180481210 size=5 + [39] 0x182506568 size=0 + [40] 0x1805365d0 size=30 + [41] 0x1805365d0 size=30 + [42] 0x180538110 size=44 + [43] 0x1805365c0 size=8 + [44] 0x18048dc80 size=15 + [45] 0x180481210 size=5 + [57] 0x1825056d8 size=0 + [58] 0x18052fd40 size=38 + [59] 0x18052cfb0 size=61 + [60] 0x180529550 size=191 + [61] 0x1804714b0 size=3 + [62] 0x18052ce00 size=98 + [63] 0x1804714b0 size=3 +CCODE: + --- [1] 0x18052cfb0 size=61 --- + +void .?AV?$AudioProcessingModule@M$01@@::vtbl___AV__AudioProcessingModule_M_01__(longlong param_1) + +{ + FUN_1812b4430(param_1 + 0x14,0,2); + *(float *)(param_1 + 0x58) = (float)(DAT_1824c4230 / (double)*(float *)(param_1 + 0x24)); + return; +} + + + --- [3] 0x18052fb50 size=119 --- + +void .?AV?$IIRFilterExtended@M$01@@::vtbl___AV__IIRFilterExtended_M_01__ + (longlong param_1,float *param_2,int param_3) + +{ + longlong lVar1; + double dVar2; + + lVar1 = (longlong)param_3; + dVar2 = (double)*param_2 * *(double *)(param_1 + 0xb8) + *(double *)(param_1 + 0x98 + lVar1 * 8); + *(double *)(param_1 + 0x98 + lVar1 * 8) = + ((double)*param_2 * *(double *)(param_1 + 0xc0) - dVar2 * *(double *)(param_1 + 0xd0)) + + *(double *)(param_1 + 0xa8 + lVar1 * 8); + *(double *)(param_1 + 0xa8 + lVar1 * 8) = + (double)*param_2 * *(double *)(param_1 + 200) - dVar2 * *(double *)(param_1 + 0xd8); + *param_2 = (float)dVar2; + return; +} + + + --- [13] 0x18052cfb0 size=61 --- + +void .?AV?$AudioProcessingModule@M$01@@::vtbl___AV__AudioProcessingModule_M_01__(longlong param_1) + +{ + FUN_1812b4430(param_1 + 0x14,0,2); + *(float *)(param_1 + 0x58) = (float)(DAT_1824c4230 / (double)*(float *)(param_1 + 0x24)); + return; +} + + + --- [24] 0x180537b10 size=74 --- + +void .?AV?$AudioProcessingModule@M$01@@::vtbl___AV__AudioProcessingModule_M_01__ + (longlong param_1,undefined4 *param_2) + +{ + longlong lVar1; + + lVar1 = **(longlong **)(param_1 + 8); + if (5 < *(uint *)(lVar1 + 0x444)) { + *(undefined4 *)(*(longlong *)(*(longlong *)(lVar1 + 0x438) + 0x28) + 0x80c) = *param_2; + *(undefined1 *)(lVar1 + 0x24046c) = 1; + FUN_18052fc30(); + return; + } + uRam000000000000080c = *param_2; + *(undefined1 *)(lVar1 + 0x24046c) = 1; + FUN_18052fc30(); + return; +} + + + --- [59] 0x18052cfb0 size=61 --- + +void .?AV?$AudioProcessingModule@M$01@@::vtbl___AV__AudioProcessingModule_M_01__(longlong param_1) + +{ + FUN_1812b4430(param_1 + 0x14,0,2); + *(float *)(param_1 + 0x58) = (float)(DAT_1824c4230 / (double)*(float *)(param_1 + 0x24)); + return; +} + + + --- [60] 0x180529550 size=191 --- + +void .?AV?$Soothe2Module@M$01@@::vtbl___AV__Soothe2Module_M_01__ + (longlong *param_1,undefined4 param_2,undefined4 *param_3,int param_4) + +{ + int *piVar1; + longlong lVar2; + uint *puVar3; + + lVar2 = (longlong)param_4; + puVar3 = (uint *)(param_1 + (lVar2 + 9) * 8); + *(undefined4 *)(*(longlong *)(puVar3 + 8) + (longlong)(int)*puVar3 * 4) = *param_3; + *puVar3 = puVar3[2] - 1 & *puVar3 + 1; + puVar3 = (uint *)(param_1 + (lVar2 + 7) * 8); + *(undefined4 *)(*(longlong *)(puVar3 + 8) + (longlong)(int)*puVar3 * 4) = param_2; + *puVar3 = puVar3[2] - 1 & *puVar3 + 1; + piVar1 = (int *)((longlong)param_1 + lVar2 * 4 + 0x3c0); + *piVar1 = *piVar1 + 1; + if ((*(int *)((longlong)param_1 + lVar2 * 4 + 0x3c0) == (int)param_1[0x79] / 2) && (param_4 == 0)) + { + (**(code **)(*param_1 + 0x38))(param_1); + } + if (*(int *)((longlong)param_1 + lVar2 * 4 + 0x3c0) == (int)param_1[0x79]) { + *(undefined4 *)((longlong)param_1 + lVar2 * 4 + 0x3c0) = 0; + FUN_1805300f0(param_1,param_4); + } + return; +} + + + --- [62] 0x18052ce00 size=98 --- + +void .?AV?$Soothe2ModuleBase@M$01@@::vtbl___AV__Soothe2ModuleBase_M_01__(longlong param_1) + +{ + float fVar1; + + .?AV?$SpectralProcessor@M$07$01@@::vtbl___AV__SpectralProcessor_M_07_01__(); + fVar1 = *(float *)(param_1 + 0x3fc); + *(float *)(param_1 + 0x3fc) = *(float *)(param_1 + 0x24); + if (fVar1 != *(float *)(param_1 + 0x24)) { + (**(code **)(*(longlong *)(param_1 + 0x3d8) + 0x20))((longlong *)(param_1 + 0x3d8)); + } + *(undefined4 *)(param_1 + 0x240458) = 4; + *(undefined4 *)(param_1 + 0x240467) = 0x1010101; + *(undefined4 *)(param_1 + 0x24046b) = 0x1010101; + return; +} + + +############ VTABLE Soothe2FilterGraph 0x1824be810 +SLOTLIST: + [0] 0x180589260 size=278 + [1] 0x18134bc00 size=3 + [2] 0x18058b4d0 size=36 + [3] 0x18058b380 size=324 + [4] 0x18134bbd0 size=3 + [5] 0x18134bbc0 size=3 + [6] 0x18134bbb0 size=3 + [7] 0x18134bba0 size=3 + [8] 0x18134bb30 size=93 + [9] 0x18134bad0 size=82 + [10] 0x18134c900 size=397 + [11] 0x18134c760 size=397 + [12] 0x18134c750 size=3 + [13] 0x18134c3a0 size=933 + [14] 0x18134c2d0 size=3 + [15] 0x18134c2c0 size=3 + [16] 0x18134c270 size=69 + [17] 0x1805689c0 size=60 + [18] 0x18134bf00 size=3 + [19] 0x18134be30 size=195 + [20] 0x18134bde0 size=3 + [21] 0x18134bcf0 size=66 + [22] 0x18134bce0 size=3 + [23] 0x18134bc50 size=126 + [24] 0x18134bc20 size=34 + [25] 0x18058ad80 size=452 + [26] 0x18134bc10 size=3 + [27] 0x18134bac0 size=3 + [28] 0x18134bab0 size=3 + [29] 0x18134ba90 size=20 + [30] 0x18134ba80 size=3 + [31] 0x18134ba70 size=3 + [32] 0x18134ba60 size=3 + [33] 0x18058af50 size=179 + [34] 0x18134ba50 size=3 + [35] 0x18134adc0 size=3 + [36] 0x18134ba40 size=3 + [37] 0x18134ba30 size=3 + [38] 0x18134ba20 size=3 + [39] 0x18134ba10 size=3 + [40] 0x18134b940 size=196 + [41] 0x18134b930 size=3 + [42] 0x18134b870 size=87 + [43] 0x1804714b0 size=3 + [44] 0x181a06ff0 size=323 + [45] 0x1804714b0 size=3 + [46] 0x181a07170 size=1813 + [47] 0x18251a8e0 size=0 + [48] 0x18058d230 size=47 + [49] 0x18052cfb0 size=61 + [50] 0x18052cfa0 size=13 + [51] 0x18058c850 size=83 + [52] 0x18058c8b0 size=74 + [53] 0x18058c7b0 size=149 + [54] 0x18251ae98 size=0 + [55] 0x18058e330 size=22 + [56] 0x18058e330 size=22 + [57] 0x18058e400 size=42 + [58] 0x18058e320 size=8 + [59] 0x18048db00 size=15 + [60] 0x180481210 size=5 + [61] 0x18251aab8 size=0 + [62] 0x18058eb10 size=12 + [63] 0x18058b500 size=275 +CCODE: + --- [0] 0x180589260 size=278 --- + +void .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(undefined8 *param_1) + +{ + void *_Dst; + int iVar1; + longlong lVar2; + longlong lVar3; + longlong lVar4; + int iVar5; + + *param_1 = Soothe2FilterGraph::vftable; + iVar5 = 0; + param_1[0x16] = Soothe2FilterGraph::vftable; + param_1[0x19] = Soothe2FilterGraph::vftable; + param_1[0x1c] = Soothe2FilterGraph::vftable; + param_1[0x1d] = Soothe2FilterGraph::vftable; + param_1[0x1e] = Soothe2FilterGraph::vftable; + param_1[0x138d] = Soothe2FilterGraph::vftable; + lVar2 = *(longlong *)(param_1[0x138e] + 0x168); + lVar4 = 0; + iVar1 = *(int *)(lVar2 + 0x2404cc); + lVar3 = *(longlong *)(lVar2 + 0x2404c0); + if (0 < iVar1) { + do { + if (param_1 + 0x138d == *(undefined8 **)(lVar3 + lVar4 * 8)) { + _Dst = (void *)(lVar3 + (longlong)iVar5 * 8); + memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar1 - iVar5) + -1) << 3); + *(int *)(lVar2 + 0x2404cc) = *(int *)(lVar2 + 0x2404cc) + -1; + iVar1 = *(int *)(lVar2 + 0x2404cc); + iVar5 = 0; + if (0 < iVar1 * 2) { + iVar5 = iVar1 * 2; + } + if (iVar5 < *(int *)(lVar2 + 0x2404c8)) { + if (iVar1 < 8) { + iVar1 = 8; + } + if (iVar1 < *(int *)(lVar2 + 0x2404c8)) { + FUN_18047cb30((longlong *)(lVar2 + 0x2404c0)); + } + } + break; + } + iVar5 = iVar5 + 1; + lVar4 = lVar4 + 1; + } while (lVar4 < iVar1); + } + *(undefined4 *)((longlong)param_1 + 0x209c8c) = 0; + /* WARNING: Subroutine does not return */ + free((void *)param_1[0x41390]); +} + + + --- [3] 0x18058b380 size=324 --- + +void .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__ + (longlong param_1,undefined8 *param_2) + +{ + longlong lVar1; + int iVar2; + int iVar3; + int iVar4; + undefined8 *puVar5; + ulonglong uVar6; + ulonglong uVar7; + float fVar8; + float fStackX_c; + undefined8 local_38; + undefined4 uStack_30; + undefined4 uStack_2c; + + lVar1 = *(longlong *)(param_1 + 0xf8); + if (lVar1 != 0) { + uVar7 = 0; + iVar2 = *(int *)(*(longlong *)(param_1 + 0x9c60) + 0x28) + -10; + iVar3 = *(int *)(*(longlong *)(param_1 + 0x9c60) + 0x2c) + -10; + iVar4 = 0; + if (0 < iVar2) { + iVar4 = iVar2; + } + iVar2 = 0; + if (0 < iVar3) { + iVar2 = iVar3; + } + fVar8 = (float)*param_2; + if ((((fVar8 < DAT_1824c4360) || + (fStackX_c = (float)((ulonglong)*param_2 >> 0x20), fStackX_c < DAT_1824c4360)) || + ((float)iVar4 + DAT_1824c4360 <= fVar8)) || ((float)iVar2 + DAT_1824c4360 <= fStackX_c)) { + puVar5 = *(undefined8 **)(lVar1 + 0xf0); + *(undefined4 *)(lVar1 + 0x204) = 0; + uVar6 = (ulonglong)((longlong)(puVar5 + *(int *)(lVar1 + 0xfc)) + (7 - (longlong)puVar5)) >> 3 + ; + if (puVar5 + *(int *)(lVar1 + 0xfc) < puVar5) { + uVar6 = uVar7; + } + if (uVar6 != 0) { + do { + FUN_181342bf0(*puVar5); + uVar7 = uVar7 + 1; + puVar5 = puVar5 + 1; + } while (uVar7 != uVar6); + } + uStack_30 = *(undefined4 *)(lVar1 + 0x28); + uStack_2c = *(undefined4 *)(lVar1 + 0x2c); + local_38 = 0; + FUN_181342870(lVar1,&local_38,1); + } + } + return; +} + + + --- [8] 0x18134bb30 size=93 --- + +void .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__ + (longlong param_1,undefined8 param_2,undefined8 param_3) + +{ + longlong lVar1; + undefined8 uVar2; + undefined1 local_68 [96]; + + if (*(longlong **)(param_1 + 0x18) != (longlong *)0x0) { + lVar1 = **(longlong **)(param_1 + 0x18); + uVar2 = FUN_181339840(param_2,local_68); + (**(code **)(lVar1 + 0x40))(*(undefined8 *)(param_1 + 0x18),uVar2,param_3); + } + return; +} + + + --- [9] 0x18134bad0 size=82 --- + +void .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__ + (longlong param_1,undefined8 param_2,undefined4 param_3) + +{ + undefined8 uVar1; + undefined1 local_78 [112]; + + if (*(longlong *)(param_1 + 0x18) != 0) { + uVar1 = FUN_181339840(param_2,local_78); + (**(code **)(**(longlong **)(param_1 + 0x18) + 0x48)) + (*(longlong **)(param_1 + 0x18),uVar1,param_3); + } + return; +} + + + --- [10] 0x18134c900 size=397 --- + +void .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__ + (longlong param_1,longlong *param_2,undefined8 param_3,undefined8 param_4) + +{ + int *piVar1; + uint uVar2; + code *pcVar3; + longlong *plVar4; + undefined8 *puVar5; + longlong lVar6; + uint *_Memory; + int iVar7; + bool bVar8; + undefined8 *local_res8; + undefined1 local_res10 [16]; + + lVar6 = *param_2; + if (*(longlong *)(param_1 + 8) == lVar6) { + iVar7 = 0; + } + else { + iVar7 = FUN_18048cbc0(*(undefined8 *)(param_1 + 8),lVar6,param_3,param_4,0xfffffffffffffffe); + } + if (iVar7 != 0) { + if ((*(uint *)(lVar6 + -0x10) & 0x30000000) == 0) { + LOCK(); + *(int *)(lVar6 + -0x10) = *(int *)(lVar6 + -0x10) + 1; + UNLOCK(); + } + LOCK(); + lVar6 = *(longlong *)(param_1 + 8); + *(longlong *)(param_1 + 8) = *param_2; + UNLOCK(); + _Memory = (uint *)(lVar6 + -0x10); + if ((*_Memory & 0x30000000) == 0) { + LOCK(); + uVar2 = *_Memory; + *_Memory = *_Memory - 1; + UNLOCK(); + if (uVar2 == 0) { + /* WARNING: Subroutine does not return */ + free(_Memory); + } + } + if (((*(byte *)(param_1 + 0xa8) & 1) != 0) && + (plVar4 = (longlong *)FUN_1812d2bd0(param_1), plVar4 != (longlong *)0x0)) { + if ((undefined **)*plVar4 == juce::HWNDComponentPeer::vftable) { + puVar5 = (undefined8 *)FUN_18049a930(local_res10); + SetWindowTextW((HWND)plVar4[0x11],(LPCWSTR)*puVar5); + } + else { + (*(code *)((undefined **)*plVar4)[3])(plVar4,param_2); + } + } + FUN_1804de690(&local_res8,param_1); + puVar5 = local_res8; + iVar7 = *(int *)(param_1 + 0x8c); + bVar8 = local_res8 == (undefined8 *)0x0; + while( true ) { + if (bVar8) { + lVar6 = 0; + } + else { + lVar6 = puVar5[2]; + } + if ((lVar6 == 0) || (iVar7 < 1)) break; + iVar7 = iVar7 + -1; + if ((*(int *)(param_1 + 0x8c) <= iVar7) && (iVar7 = *(int *)(param_1 + 0x8c) + -1, iVar7 < 0)) + break; + plVar4 = *(longlong **)(*(longlong *)(param_1 + 0x80) + (longlong)iVar7 * 8); + pcVar3 = *(code **)(*plVar4 + 0x30); + if (pcVar3 != .?AVSoothe2Grid@@::vtbl___AVSoothe2Grid__) { + (*pcVar3)(plVar4,param_1); + } + } + if (puVar5 != (undefined8 *)0x0) { + LOCK(); + piVar1 = (int *)(puVar5 + 1); + iVar7 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar7 == 1) { + (**(code **)*local_res8)(local_res8,1); + } + } + } + return; +} + + + --- [11] 0x18134c760 size=397 --- + +void .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__ + (longlong param_1,byte param_2,undefined8 param_3,undefined8 param_4) + +{ + int *piVar1; + int iVar2; + undefined8 *puVar3; + longlong lVar4; + longlong *plVar5; + longlong lVar6; + bool bVar7; + undefined8 *local_res8; + undefined4 local_28; + undefined4 uStack_24; + undefined4 uStack_20; + undefined4 uStack_1c; + + if ((*(byte *)(param_1 + 0xa8) >> 1 & 1) != param_2) { + FUN_1804de690(&local_res8,param_1,param_3,param_4,0xfffffffffffffffe); + *(byte *)(param_1 + 0xa8) = *(byte *)(param_1 + 0xa8) & 0xfd; + *(byte *)(param_1 + 0xa8) = *(byte *)(param_1 + 0xa8) | (param_2 & 1) * '\x02'; + lVar6 = 0; + if (param_2 == 0) { + FUN_181342b10(param_1); + } + else { + uStack_1c = *(undefined4 *)(param_1 + 0x2c); + uStack_20 = *(undefined4 *)(param_1 + 0x28); + local_28 = 0; + uStack_24 = 0; + FUN_181342870(param_1,&local_28,1); + } + FUN_18133f790(); + if (param_2 == 0) { + FUN_1804e5060(param_1); + for (lVar4 = DAT_182673708; lVar4 != param_1; lVar4 = *(longlong *)(lVar4 + 0x18)) { + if (lVar4 == 0) goto LAB_18134c84f; + } + if (*(longlong *)(param_1 + 0x18) == 0) { + FUN_18133eae0(1); + } + else { + FUN_18133ed60(*(longlong *)(param_1 + 0x18),2,1); + } + } +LAB_18134c84f: + puVar3 = local_res8; + bVar7 = local_res8 != (undefined8 *)0x0; + lVar4 = lVar6; + if (bVar7) { + lVar4 = local_res8[2]; + } + if (lVar4 != 0) { + FUN_1813452b0(param_1); + if (bVar7) { + lVar6 = puVar3[2]; + } + if (((lVar6 != 0) && ((*(byte *)(param_1 + 0xa8) & 1) != 0)) && + (plVar5 = (longlong *)FUN_18134c2e0(param_1), plVar5 != (longlong *)0x0)) { + (**(code **)(*plVar5 + 0x10))(plVar5,param_2); + FUN_181343670(param_1); + } + } + if (puVar3 != (undefined8 *)0x0) { + LOCK(); + piVar1 = (int *)(puVar3 + 1); + iVar2 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar2 == 1) { + (**(code **)*local_res8)(local_res8,1); + } + } + } + return; +} + + + --- [13] 0x18134c3a0 size=933 --- + +void .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__ + (longlong *param_1,uint param_2,undefined8 param_3) + +{ + int *piVar1; + undefined8 *puVar2; + int iVar3; + ulonglong uVar4; + longlong lVar5; + undefined8 *puVar6; + char cVar7; + int iVar8; + longlong *plVar9; + ulonglong *puVar10; + ulonglong uVar11; + undefined4 uVar12; + longlong *plVar13; + undefined8 *puVar14; + ulonglong uVar15; + undefined4 uVar16; + undefined4 uVar17; + undefined4 uVar18; + undefined4 uVar19; + char local_res20; + undefined8 *local_88; + longlong local_80; + undefined8 local_78; + undefined1 local_70 [8]; + longlong *local_68; + undefined8 local_60; + undefined8 local_58; + undefined8 uStack_50; + + local_78 = 0xfffffffffffffffe; + if ((*(byte *)(param_1 + 0x15) >> 2 & 1) == 0) { + param_2 = param_2 | 0x40000000; + } + else { + param_2 = param_2 & 0xbfffffff; + } + plVar9 = (longlong *)FUN_1812d2bd0(); + if ((plVar9 != (longlong *)0x0) && (param_2 == *(uint *)(plVar9 + 2))) { + return; + } + FUN_1804de690(&local_88,param_1); + uVar15 = 0; + uVar4 = uVar15; + puVar6 = local_88; + for (plVar13 = param_1; local_88 = puVar6, plVar13 != (longlong *)0x0; + plVar13 = (longlong *)plVar13[3]) { + puVar10 = (ulonglong *)FUN_18051e290(local_70,plVar13,uVar4); + uVar4 = *puVar10; + puVar6 = local_88; + } + cVar7 = '\0'; + local_res20 = '\0'; + local_80 = 0; + uVar16 = 0; + uVar17 = 0; + uVar18 = 0; + uVar19 = 0; + local_58 = 0; + uStack_50 = 0; + iVar8 = -1; + if (plVar9 != (longlong *)0x0) { + local_68 = plVar9; + cVar7 = (**(code **)(*plVar9 + 0x78))(plVar9); + local_res20 = (**(code **)(*plVar9 + 0x68))(plVar9); + local_80 = plVar9[5]; + uVar16 = *(undefined4 *)((longlong)plVar9 + 0x14); + uVar17 = (undefined4)plVar9[3]; + local_58 = *(undefined8 *)((longlong)plVar9 + 0x14); + uVar18 = *(undefined4 *)((longlong)plVar9 + 0x1c); + uVar19 = (undefined4)plVar9[4]; + uStack_50 = *(undefined8 *)((longlong)plVar9 + 0x1c); + iVar8 = (**(code **)(*plVar9 + 0x100))(plVar9); + *(byte *)(param_1 + 0x15) = *(byte *)(param_1 + 0x15) & 0xfe; + if (DAT_182673700 == 0) { + local_60 = FUN_1811316e0(0x130); + DAT_182673700 = FUN_18133c6c0(local_60); + } + FUN_180488600(DAT_182673700 + 0x58,param_1); + FUN_181343670(param_1); + uVar11 = uVar15; + if (puVar6 != (undefined8 *)0x0) { + uVar11 = puVar6[2]; + } + if (uVar11 == 0) { + (**(code **)*plVar9)(plVar9,1); + goto LAB_18134c6f7; + } + FUN_18134bfe0(param_1,uVar4 & 0xffffffff,uVar4 >> 0x20,(int)param_1[5], + *(undefined4 *)((longlong)param_1 + 0x2c)); + (**(code **)*plVar9)(plVar9,1); + } + lVar5 = param_1[3]; + if (lVar5 != 0) { + plVar9 = *(longlong **)(lVar5 + 0x40); + for (plVar13 = plVar9; plVar13 != plVar9 + *(int *)(lVar5 + 0x4c); plVar13 = plVar13 + 1) { + if (param_1 == (longlong *)*plVar13) { + uVar12 = (undefined4)((longlong)plVar13 - (longlong)plVar9 >> 3); + goto LAB_18134c588; + } + } + uVar12 = 0xffffffff; +LAB_18134c588: + FUN_181343a90(lVar5,uVar12,1); + } + if (puVar6 != (undefined8 *)0x0) { + uVar15 = puVar6[2]; + } + if (uVar15 != 0) { + *(byte *)(param_1 + 0x15) = *(byte *)(param_1 + 0x15) | 1; + plVar9 = (longlong *)(**(code **)(*param_1 + 0x150))(param_1,param_2,param_3); + if (DAT_182673700 == 0) { + local_60 = FUN_1811316e0(0x130); + DAT_182673700 = FUN_18133c6c0(local_60); + } + lVar5 = DAT_182673700; + plVar13 = (longlong *)(DAT_182673700 + 0x58); + puVar14 = (undefined8 *)*plVar13; + iVar3 = *(int *)(DAT_182673700 + 100); + puVar2 = puVar14 + iVar3; + for (; puVar14 != puVar2; puVar14 = puVar14 + 1) { + if (param_1 == (longlong *)*puVar14) goto LAB_18134c651; + } + if (*(int *)(DAT_182673700 + 0x60) < iVar3 + 1) { + FUN_18047cb30(plVar13,iVar3 + 9 + (iVar3 + 1) / 2 & 0xfffffff8); + } + iVar3 = *(int *)(lVar5 + 100); + *(int *)(lVar5 + 100) = iVar3 + 1; + *(longlong **)(*plVar13 + (longlong)iVar3 * 8) = param_1; +LAB_18134c651: + param_1[4] = uVar4; + FUN_18134b470(plVar9); + if (-1 < iVar8) { + (**(code **)(*plVar9 + 0x108))(plVar9,iVar8); + } + (**(code **)(*plVar9 + 0x10))(plVar9,*(byte *)(param_1 + 0x15) >> 1 & 1); + plVar9 = (longlong *)FUN_1812d2bd0(param_1); + if (plVar9 != (longlong *)0x0) { + if (cVar7 != '\0') { + (**(code **)(*plVar9 + 0x70))(plVar9,1); + *(undefined4 *)((longlong)plVar9 + 0x14) = uVar16; + *(undefined4 *)(plVar9 + 3) = uVar17; + *(undefined4 *)((longlong)plVar9 + 0x1c) = uVar18; + *(undefined4 *)(plVar9 + 4) = uVar19; + } + if (local_res20 != '\0') { + (**(code **)(*plVar9 + 0x60))(plVar9,1); + } + if ((*(byte *)((longlong)param_1 + 0xa9) & 1) != 0) { + (**(code **)(*plVar9 + 0xa8))(plVar9,1); + } + plVar9[5] = local_80; + FUN_18134bdf0(param_1); + FUN_181343670(param_1); + } + } +LAB_18134c6f7: + if (puVar6 != (undefined8 *)0x0) { + LOCK(); + piVar1 = (int *)(puVar6 + 1); + iVar8 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar8 == 1) { + (**(code **)*local_88)(local_88,1); + } + } + return; +} + + + --- [16] 0x18134c270 size=69 --- + +undefined4 .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(void) + +{ + undefined8 uVar1; + + if (DAT_182673700 == 0) { + uVar1 = FUN_1811316e0(0x130); + DAT_182673700 = FUN_18133c6c0(uVar1); + } + return *(undefined4 *)(DAT_182673700 + 0xc0); +} + + + --- [17] 0x1805689c0 size=60 --- + +void .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(longlong *param_1) + +{ + if ((char)param_1[0x18] == '\0') { + FUN_180569ff0(); + if (param_1[0x17] != 0) { + (**(code **)(*param_1 + 0x158))(param_1); + *(undefined1 *)(param_1 + 0x18) = 1; + } + } + return; +} + + + --- [19] 0x18134be30 size=195 --- + +uint .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__ + (longlong param_1,undefined4 param_2,undefined4 param_3) + +{ + longlong *plVar1; + ulonglong uVar2; + char cVar3; + uint uVar4; + ulonglong *puVar5; + longlong lVar6; + undefined1 local_res20 [8]; + + uVar4 = 0; + if ((*(byte *)(param_1 + 0xa8) & 8) == 0) { + return 1; + } + if ((*(byte *)(param_1 + 0xa8) & 0x10) != 0) { + uVar4 = *(int *)(param_1 + 0x4c) - 1; + lVar6 = (longlong)(int)uVar4; + if (-1 < (int)uVar4) { + do { + plVar1 = *(longlong **)(*(longlong *)(param_1 + 0x40) + lVar6 * 8); + if ((*(byte *)(plVar1 + 0x15) & 2) != 0) { + puVar5 = (ulonglong *)FUN_18051e060(local_res20,plVar1,CONCAT44(param_3,param_2)); + uVar2 = *puVar5; + if ((((uint)uVar2 < *(uint *)(plVar1 + 5)) && + ((uint)(uVar2 >> 0x20) < *(uint *)((longlong)plVar1 + 0x2c))) && + (cVar3 = (**(code **)(*plVar1 + 0x98))(plVar1,uVar2 & 0xffffffff,uVar2 >> 0x20), + cVar3 != '\0')) { + uVar4 = 1; + } + else { + uVar4 = 0; + } + if ((char)uVar4 != '\0') { + return 1; + } + } + lVar6 = lVar6 + -1; + } while (-1 < lVar6); + } + } + return uVar4 & 0xffffff00; +} + + + --- [21] 0x18134bcf0 size=66 --- + +void .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(longlong param_1) + +{ + undefined8 *puVar1; + + if (((*(byte *)(param_1 + 0xa8) & 0x40) == 0) && + (*(longlong **)(param_1 + 0x18) != (longlong *)0x0)) { + /* WARNING: Could not recover jumptable at 0x00018134bd0d. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (**(code **)(**(longlong **)(param_1 + 0x18) + 0xa8))(); + return; + } + puVar1 = (undefined8 *)FUN_1811316e0(8); + *puVar1 = juce::KeyboardFocusTraverser::vftable; + return; +} + + + --- [23] 0x18134bc50 size=126 --- + +void .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(longlong param_1) + +{ + longlong *plVar1; + undefined8 local_18; + undefined4 uStack_10; + undefined4 uStack_c; + + if ((*(byte *)(param_1 + 0xa8) & 1) == 0) { + uStack_10 = *(undefined4 *)(param_1 + 0x28); + uStack_c = *(undefined4 *)(param_1 + 0x2c); + local_18 = 0; + FUN_181342870(0,&local_18,1); + } + else { + plVar1 = (longlong *)FUN_1812d2bd0(); + if (plVar1 != (longlong *)0x0) { + /* WARNING: Could not recover jumptable at 0x00018134bc94. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (**(code **)(*plVar1 + 0xf0)) + (plVar1,(float)(int)(0xff - (uint)*(byte *)(param_1 + 0xac)) / DAT_1824c4548); + return; + } + } + return; +} + + + --- [25] 0x18058ad80 size=452 --- + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__ + (longlong *param_1,undefined8 param_2) + +{ + float fVar1; + float fVar2; + longlong lVar3; + byte *pbVar4; + int iVar5; + float local_68 [3]; + undefined8 local_5c; + undefined8 uStack_54; + undefined8 local_4c; + + (**(code **)(*param_1 + 0x160))(); + fVar2 = DAT_1824c4548; + fVar1 = DAT_1824c3c8c; + iVar5 = 0; + if (0 < (int)param_1[0x130f]) { + pbVar4 = (byte *)((longlong)param_1 + 0x99c7); + do { + if (fVar1 <= (float)*pbVar4 / fVar2) { + FUN_181296c00(param_2,*(undefined4 *)((longlong)param_1 + (longlong)iVar5 * 4 + 0x99c4)); + local_4c = 0x3f800000; + local_68[0] = 1.0; + local_68[1] = 0.0; + local_68[2] = 0.0; + local_5c = _DAT_1824c4780; + uStack_54 = _UNK_1824c4788; + FUN_181295d20(param_2,param_1 + ((longlong)iVar5 + 0x3d2) * 5,local_68,&local_5c); + } + iVar5 = iVar5 + 1; + pbVar4 = pbVar4 + 4; + } while (iVar5 < (int)param_1[0x130f]); + } + FUN_181296c00(param_2,(int)param_1[0x1338]); + local_5c = _DAT_1824c4780; + uStack_54 = _UNK_1824c4788; + local_4c = 0x3f800000; + if (*(code **)(param_1[0x16] + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) { + if (param_1[0x17] == 0) { + FUN_180569ff0(param_1); + } + lVar3 = param_1[0x17]; + } + else { + lVar3 = (**(code **)(param_1[0x16] + 8))(param_1 + 0x16); + } + local_68[0] = *(float *)((longlong)param_1 + 0x99f4) * *(float *)(lVar3 + 0x88); + local_68[1] = 0.0; + local_68[2] = 0.0; + FUN_181295d20(param_2,param_1 + 0x1315,local_68,&local_5c); + if (*(code **)(*param_1 + 0x168) != _guard_check_icall) { + (**(code **)(*param_1 + 0x168))(param_1,param_2); + return; + } + return; +} + + + --- [33] 0x18058af50 size=179 --- + +void .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(longlong param_1) + +{ + float fVar1; + + if (*(longlong *)(param_1 + 0xf8) != 0) { + FUN_18134bfe0(*(longlong *)(param_1 + 0xf8),0,0,*(undefined4 *)(param_1 + 0x28), + *(undefined4 *)(param_1 + 0x2c)); + } + fVar1 = DAT_1824c3d8c; + *(undefined4 *)(param_1 + 0x99f8) = 0x41200000; + *(float *)(param_1 + 0x99dc) = (float)*(int *)(param_1 + 0x2c) * fVar1; + *(float *)(param_1 + 0x99e0) = (float)*(int *)(param_1 + 0x28) / (float)*(int *)(param_1 + 0x9890) + ; + *(float *)(param_1 + 0x99fc) = + (fVar1 / *(float *)(param_1 + 0x99e8)) * (float)*(int *)(param_1 + 0x9894); + return; +} + + + --- [40] 0x18134b940 size=196 --- + +void .?AV?$FilterGraph@M$05$0CAA@@@::vtbl___AV__FilterGraph_M_05_0CAA___ + (undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4) + +{ + undefined8 *puVar1; + longlong *plVar2; + undefined8 uVar3; + + uVar3 = 0xfffffffffffffffe; + if (DAT_182673c20 == (undefined8 *)0x0) { + puVar1 = (undefined8 *)FUN_1811316e0(0x28); + FUN_1812a59f0(puVar1); + FUN_1812a7230(puVar1 + 2); + *puVar1 = juce::ModalComponentManager::vftable; + puVar1[2] = juce::ModalComponentManager::vftable; + puVar1[3] = 0; + puVar1[4] = 0; + DAT_182673c20 = puVar1; + } + FUN_18133b010(DAT_182673c20,1,param_3,param_4,uVar3); + plVar2 = (longlong *)FUN_18134adf0(param_1); + if (*(code **)(*plVar2 + 0x78) == FUN_1812c6070) { + /* WARNING: Could not recover jumptable at 0x00018134b9e5. Too many branches */ + /* WARNING: Treating indirect jump as call */ + MessageBeep(0); + return; + } + (**(code **)(*plVar2 + 0x78))(plVar2); + return; +} + + + --- [42] 0x18134b870 size=87 --- + +void .?AV?$FilterGraphGrid@M@@::vtbl___AV__FilterGraphGrid_M__ + (undefined8 param_1,undefined4 param_2,undefined8 param_3) + +{ + undefined8 uVar1; + + uVar1 = FUN_1811316e0(0x158); + FUN_18050dd00(uVar1,param_1,param_2,param_3,0); + return; +} + + + --- [44] 0x181a06ff0 size=323 --- + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void .?AVSoothe2FilterGraph@@::vtbl___AVSoothe2FilterGraph__(longlong param_1,undefined8 param_2) + +{ + float fVar1; + longlong lVar2; + byte local_res8; + byte local_res9; + byte local_resa; + undefined1 local_resb; + float local_48 [4]; + undefined8 local_38; + undefined8 uStack_30; + ulonglong local_28; + + if (*(int *)(*(longlong *)(*(longlong *)(param_1 + 0x9c70) + 0x168) + 0x30) != 1) { + FUN_18049fa40(local_48,DAT_18262e938); + FUN_18049fbb0(&local_res8,local_48[0],DAT_1824c3d18,local_48[2], + (char)((uint)DAT_18262e938 >> 0x18)); + FUN_181296c00(param_2,CONCAT13(local_resb, + CONCAT12((char)(int)((float)local_resa * DAT_1824c3e14), + CONCAT11((char)(int)((float)local_res9 * DAT_1824c3e14), + (char)(int)((float)local_res8 * DAT_1824c3e14)) + ))); + fVar1 = *(float *)(param_1 + 0x99f4); + local_38 = _DAT_1824c4780; + uStack_30 = _UNK_1824c4788; + local_28 = (ulonglong)DAT_1824c3ea4; + lVar2 = (**(code **)(*(longlong *)(param_1 + 0xb0) + 8))(); + local_48[0] = fVar1 * *(float *)(lVar2 + 0x88); + local_48[1] = 0.0; + local_48[2] = 0.0; + FUN_181295d20(param_2,param_1 + 0x209c80,local_48,&local_38); + } + return; +} + + + --- [46] 0x181a07170 size=1813 --- + +void .?AVSoothe2FilterGraph@@::vtbl___AVSoothe2FilterGraph__(longlong param_1) + +{ + float fVar1; + float fVar2; + undefined4 uVar3; + undefined4 uVar4; + longlong *plVar5; + void *_Memory; + double dVar6; + char cVar7; + int iVar8; + undefined8 *puVar9; + undefined8 uVar10; + float *pfVar11; + int iVar12; + char *pcVar13; + int iVar14; + int iVar15; + int iVar16; + undefined8 *puVar17; + float *pfVar18; + float *pfVar19; + double dVar20; + float fVar21; + float fVar22; + int local_res8 [2]; + int local_res10 [2]; + longlong local_res18; + float *local_res20; + void *local_188; + undefined4 local_17c; + undefined1 local_138 [24]; + float local_120 [56]; + + iVar14 = 0; + if (0 < *(int *)(param_1 + 0x9878)) { + pcVar13 = (char *)(param_1 + 0x9a02); + puVar17 = (undefined8 *)(param_1 + 0x9c8); + do { + if (*pcVar13 != '\0') { + plVar5 = *(longlong **)(param_1 + 0x140); + local_res10[0] = iVar14; + if (plVar5 == (longlong *)0x0) { + /* WARNING: Subroutine does not return */ + std::_Xbad_function_call(); + } + if ((undefined **)*plVar5 == + std:: + _Func_impl_no_alloc,float_const*___ptr64,int> + ::vftable) { + plVar5 = (longlong *)plVar5[8]; + local_res8[0] = iVar14; + if (plVar5 == (longlong *)0x0) { + /* WARNING: Subroutine does not return */ + std::_Xbad_function_call(); + } + uVar10 = (**(code **)(*plVar5 + 0x10))(plVar5,local_res8); + *puVar17 = uVar10; + } + else { + uVar10 = (*(code *)((undefined **)*plVar5)[2])(plVar5,local_res10); + *puVar17 = uVar10; + } + } + iVar14 = iVar14 + 1; + puVar17 = puVar17 + 1; + pcVar13 = pcVar13 + 1; + } while (iVar14 < *(int *)(param_1 + 0x9878)); + } + fVar2 = DAT_1824c41e0; + fVar1 = DAT_1824c3ea4; + pfVar11 = (float *)(*(longlong *)(param_1 + 0x9c78) + 0x2400d8); + local_res10[0] = *(int *)(*(longlong *)(*(longlong *)(param_1 + 0x9c70) + 0x168) + 0x30); + local_res20 = pfVar11; + if (local_res10[0] == 2) { + iVar14 = 0; + do { + iVar12 = 0; + if (0 < *(int *)(param_1 + 0x9878)) { + local_res18 = param_1 + 0x9c8; + pfVar18 = pfVar11; + do { + if (iVar12 == 0) { + iVar14 = __std_type_info_compare(0x182650db8,0x182650db8); + if (iVar14 != 0) { + /* WARNING: Subroutine does not return */ + thunk_FUN_181ba94b0(); + } + /* WARNING: Subroutine does not return */ + thunk_FUN_181ba94b0(); + } + plVar5 = *(longlong **)(param_1 + 0x180); + local_res8[0] = iVar12; + if (plVar5 == (longlong *)0x0) { + /* WARNING: Subroutine does not return */ + std::_Xbad_function_call(); + } + cVar7 = (**(code **)(*plVar5 + 0x10))(plVar5,local_res8); + if (cVar7 == '\0') { + if (iVar14 == 0) { + fVar21 = fVar1 - *pfVar18; + } + else { + fVar21 = *pfVar18; + } + uVar3 = *(undefined4 *)(param_1 + 0x9890); + fVar22 = fVar21 * fVar2; + if (fVar1 <= fVar21 * fVar2) { + fVar22 = fVar1; + } + iVar14 = __std_type_info_compare(0x182650db8,0x182650db8); + if (iVar14 != 0) { + /* WARNING: Subroutine does not return */ + thunk_FUN_181ba94b0((double)(fVar1 - fVar22),param_1 + 0x209ca8,uVar3); + } + /* WARNING: Subroutine does not return */ + thunk_FUN_181ba94b0(); + } + local_res18 = local_res18 + 8; + iVar12 = iVar12 + 1; + pfVar18 = pfVar18 + 1; + pfVar11 = local_res20; + } while (iVar12 < *(int *)(param_1 + 0x9878)); + } + iVar14 = iVar14 + 1; + } while (iVar14 < 2); + } + else { + iVar14 = 0; + if (0 < *(int *)(param_1 + 0x9878)) { + puVar17 = (undefined8 *)(param_1 + 0x9c8); + do { + plVar5 = *(longlong **)(param_1 + 0x180); + local_res8[0] = iVar14; + if (iVar14 == 0) { + if (plVar5 == (longlong *)0x0) { + /* WARNING: Subroutine does not return */ + std::_Xbad_function_call(); + } + cVar7 = (**(code **)(*plVar5 + 0x10))(plVar5,local_res8); + uVar3 = *(undefined4 *)(param_1 + 0x9890); + if (cVar7 != '\0') { + iVar14 = __std_type_info_compare(0x182650db8,0x182650db8); + if (iVar14 != 0) { + /* WARNING: Subroutine does not return */ + thunk_FUN_181ba94b0(); + } + /* WARNING: Subroutine does not return */ + thunk_FUN_181ba94b0(); + } + uVar10 = *(undefined8 *)(param_1 + 0x9c8); + iVar14 = __std_type_info_compare(0x182650db8,0x182650db8); + if (iVar14 != 0) { + /* WARNING: Subroutine does not return */ + thunk_FUN_181ba94b0(uVar10,param_1 + 0x9c80,uVar3); + } + /* WARNING: Subroutine does not return */ + thunk_FUN_181ba94b0(); + } + if (plVar5 == (longlong *)0x0) { + /* WARNING: Subroutine does not return */ + std::_Xbad_function_call(); + } + cVar7 = (**(code **)(*plVar5 + 0x10))(plVar5,local_res8); + if (cVar7 == '\0') { + uVar3 = *(undefined4 *)(param_1 + 0x9890); + uVar10 = *puVar17; + iVar14 = __std_type_info_compare(0x182650db8,0x182650db8); + if (iVar14 != 0) { + /* WARNING: Subroutine does not return */ + thunk_FUN_181ba94b0(uVar10,param_1 + 0x9c80,uVar3); + } + /* WARNING: Subroutine does not return */ + thunk_FUN_181ba94b0(); + } + iVar14 = iVar14 + 1; + puVar17 = puVar17 + 1; + } while (iVar14 < *(int *)(param_1 + 0x9878)); + } + } + *(undefined4 *)(param_1 + 0x9a10) = *(undefined4 *)(param_1 + 0x99dc); + *(undefined4 *)(param_1 + 0x9a0c) = 0; + iVar14 = *(int *)(param_1 + 0x2c); + fVar1 = *(float *)(param_1 + 0x9b14); + fVar2 = *(float *)(param_1 + 0x9b10); + local_res18 = CONCAT44(local_res18._4_4_,fVar1); + _eh_vector_constructor_iterator_(local_138,0x28,2,FUN_18129e350,FUN_18129e330); + dVar6 = DAT_1824c42b0; + local_res20 = (float *)(longlong)local_res10[0]; + local_res8[0] = 0; + if (0 < local_res10[0]) { + pfVar18 = (float *)(param_1 + 0x9c84); + pfVar11 = local_120; + do { + iVar12 = local_res8[0]; + iVar15 = *(int *)(param_1 + 0x9894) + -1; + dVar20 = log10((double)pfVar18[-1]); + iVar8 = (int)((((float)(dVar20 * dVar6) - fVar2) * ((float)iVar15 - 0.0)) / (fVar1 - fVar2) + + 0.0); + iVar16 = 0; + if ((-1 < iVar8) && (iVar16 = iVar8, iVar15 < iVar8)) { + iVar16 = iVar15; + } + fVar21 = (float)iVar14 - (float)iVar14 * *(float *)(param_1 + 0x19f8 + (longlong)iVar16 * 4); + if (pfVar11[-3] == 0.0) { + *pfVar11 = fVar21; + pfVar11[-2] = 0.0; + pfVar11[-1] = 0.0; +LAB_181a0775d: + pfVar11[1] = fVar21; + } + else { + if (pfVar11[-2] <= 0.0) { + if (pfVar11[-1] <= 0.0 && pfVar11[-1] != 0.0) { + pfVar11[-1] = 0.0; + } + } + else { + pfVar11[-2] = 0.0; + } + if (*pfVar11 <= fVar21) { + if (pfVar11[1] <= fVar21 && fVar21 != pfVar11[1]) goto LAB_181a0775d; + } + else { + *pfVar11 = fVar21; + } + } + FUN_1804b02a0(pfVar11 + -6,&DAT_1821df344,0); + iVar8 = 1; + iVar16 = iVar12; + if (1 < *(int *)(param_1 + 0x9890)) { + pfVar19 = pfVar18; + do { + log10((double)*pfVar19); + FUN_18129ddd0(local_138 + (longlong)iVar12 * 0x28); + iVar8 = iVar8 + 1; + pfVar19 = pfVar19 + 1; + iVar16 = local_res8[0]; + } while (iVar8 < *(int *)(param_1 + 0x9890)); + } + local_res8[0] = iVar16 + 1; + pfVar11 = pfVar11 + 10; + pfVar18 = pfVar18 + 0x200; + local_res20 = (float *)((longlong)local_res20 + -1); + } while (local_res20 != (float *)0x0); + local_res20 = (float *)0x0; + } + puVar9 = (undefined8 *)FUN_18129a910(local_138,&local_188,*(undefined4 *)(param_1 + 0x99f8)); + puVar17 = (undefined8 *)(param_1 + 0x98a8); + if (puVar17 == puVar9) { + uVar10 = puVar9[3]; + *(undefined8 *)(param_1 + 0x98b8) = puVar9[2]; + *(undefined8 *)(param_1 + 0x98c0) = uVar10; + *(undefined1 *)(param_1 + 0x98c8) = *(undefined1 *)(puVar9 + 4); + local_17c = 0; + /* WARNING: Subroutine does not return */ + free(local_188); + } + uVar10 = *puVar9; + *puVar9 = 0; + uVar3 = *(undefined4 *)(puVar9 + 1); + uVar4 = *(undefined4 *)((longlong)puVar9 + 0xc); + puVar9[1] = 0; + _Memory = (void *)*puVar17; + *puVar17 = uVar10; + *(undefined4 *)(param_1 + 0x98b0) = uVar3; + *(undefined4 *)(param_1 + 0x98b4) = uVar4; + /* WARNING: Subroutine does not return */ + free(_Memory); +} + + + --- [49] 0x18052cfb0 size=61 --- + +void .?AV?$AudioProcessingModule@M$01@@::vtbl___AV__AudioProcessingModule_M_01__(longlong param_1) + +{ + FUN_1812b4430(param_1 + 0x14,0,2); + *(float *)(param_1 + 0x58) = (float)(DAT_1824c4230 / (double)*(float *)(param_1 + 0x24)); + return; +} + + + --- [51] 0x18058c850 size=83 --- + +void .?AV?$LowPassFilter@M$0BA@$01@@::vtbl___AV__LowPassFilter_M_0BA__01__ + (longlong param_1,float *param_2,int param_3) + +{ + uint uVar1; + float *pfVar2; + float fVar3; + + pfVar2 = (float *)(param_1 + 0x6c + (longlong)param_3 * 0x40); + uVar1 = 0; + if (*(int *)(param_1 + 100) != 0) { + do { + uVar1 = uVar1 + 1; + fVar3 = *param_2 * *(float *)(param_1 + 0xf0); + *param_2 = fVar3; + fVar3 = *(float *)(param_1 + 0x60) * *pfVar2 + fVar3; + *param_2 = fVar3; + *pfVar2 = fVar3; + pfVar2 = pfVar2 + 1; + } while (uVar1 < *(uint *)(param_1 + 100)); + } + return; +} + + + --- [52] 0x18058c8b0 size=74 --- + +void .?AV?$LowPassFilter@M$0BA@$01@@::vtbl___AV__LowPassFilter_M_0BA__01__(longlong param_1) + +{ + double dVar1; + float fVar2; + + fVar2 = expf((*(float *)(param_1 + 0x68) / *(float *)(param_1 + 0x24)) * + *(float *)(param_1 + 0xf4)); + dVar1 = DAT_1824c4140; + *(float *)(param_1 + 0x60) = fVar2; + *(float *)(param_1 + 0xf0) = (float)(dVar1 - (double)fVar2); + return; +} + + + --- [53] 0x18058c7b0 size=149 --- + +void .?AV?$LowPassFilter@M$0BA@$01@@::vtbl___AV__LowPassFilter_M_0BA__01__ + (longlong param_1,uint param_2) + +{ + double dVar1; + double dVar2; + float fVar3; + + dVar1 = DAT_1824c4140; + *(uint *)(param_1 + 100) = param_2; + dVar2 = pow(DAT_1824c41e8,dVar1 / (double)param_2); + dVar2 = sqrt(dVar2 - dVar1); + fVar3 = (float)((dVar1 / dVar2) * DAT_1824c46b8); + *(float *)(param_1 + 0xf4) = fVar3; + fVar3 = expf((*(float *)(param_1 + 0x68) / *(float *)(param_1 + 0x24)) * fVar3); + *(float *)(param_1 + 0x60) = fVar3; + *(float *)(param_1 + 0xf0) = (float)(dVar1 - (double)fVar3); + return; +} + + + --- [63] 0x18058b500 size=275 --- + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +void .?AV?$LowPassFilter@M$0BA@$01@@::vtbl___AV__LowPassFilter_M_0BA__01__ + (longlong param_1,undefined8 param_2,undefined8 *param_3) + +{ + uint *_Memory; + uint uVar1; + undefined8 uVar2; + double dVar3; + int iVar4; + undefined8 *puVar5; + undefined4 uVar6; + undefined1 auStack_78 [32]; + longlong local_58; + undefined8 local_50; + undefined8 *local_48; + longlong *local_40; + undefined1 local_38 [8]; + ulonglong local_30; + + local_50 = 0xfffffffffffffffe; + local_30 = DAT_182615970 ^ (ulonglong)auStack_78; + local_58 = *(longlong *)(param_1 + 0x9b50); + _Memory = (uint *)(local_58 + -0x10); + if ((*_Memory & 0x30000000) == 0) { + LOCK(); + *_Memory = *_Memory + 1; + UNLOCK(); + } + local_48 = param_3; + iVar4 = FUN_18048cbc0(param_2,local_58); + if ((*_Memory & 0x30000000) == 0) { + LOCK(); + uVar1 = *_Memory; + *_Memory = *_Memory - 1; + UNLOCK(); + if (uVar1 == 0) { + /* WARNING: Subroutine does not return */ + free(_Memory); + } + } + if ((iVar4 == 0) && (*(longlong *)(param_1 + 0x18) != 0)) { + puVar5 = (undefined8 *) + (**(code **)(*(longlong *)(param_1 + 0x9b48) + 0x10)) + ((longlong *)(param_1 + 0x9b48),&local_40); + dVar3 = (double)(**(code **)(*(longlong *)*puVar5 + 0x18))((longlong *)*puVar5,puVar5 + 1); + (**(code **)(*local_40 + 0xb0))(local_40,local_38); + uVar2 = *(undefined8 *)(param_1 + 0x18); + uVar6 = FUN_180487300(param_1 + 0x9958,(float)dVar3); + FUN_18058cb60(uVar2,uVar6); + } + (**(code **)(*(longlong *)*param_3 + 0xb0))((longlong *)*param_3,param_3 + 1); +} + + +############ VTABLE FilterGraph_6_0x400 0x1824be228 +SLOTLIST: + [0] 0x18058eb1c size=12 + [1] 0x18058b010 size=176 + [2] 0x18251ab48 size=0 + [3] 0x18058eab0 size=12 + [4] 0x18160b000 size=4718 + [5] 0x1804714b0 size=3 + [6] 0x18251a6c8 size=0 + [7] 0x1805893c0 size=52 + [8] 0x18134bc00 size=3 + [9] 0x18134bbf0 size=3 + [10] 0x18134bbe0 size=3 + [11] 0x18134bbd0 size=3 + [12] 0x18134bbc0 size=3 + [13] 0x18134bbb0 size=3 + [14] 0x18134bba0 size=3 + [15] 0x18134bb30 size=93 + [16] 0x18134bad0 size=82 + [17] 0x18134c900 size=397 + [18] 0x18134c760 size=397 + [19] 0x18134c750 size=3 + [20] 0x18134c3a0 size=933 + [21] 0x18134c2d0 size=3 + [22] 0x18134c2c0 size=3 + [23] 0x18134c270 size=69 + [24] 0x18134bf10 size=3 + [25] 0x18134bf00 size=3 + [26] 0x18134be30 size=195 + [27] 0x18134bde0 size=3 + [28] 0x18134bcf0 size=66 + [29] 0x18134bce0 size=3 + [30] 0x18134bc50 size=126 + [31] 0x18134bc20 size=34 + [32] 0x18134ade0 size=3 + [33] 0x18134bc10 size=3 + [34] 0x18134bac0 size=3 + [35] 0x18134bab0 size=3 + [36] 0x18134ba90 size=20 + [37] 0x18134ba80 size=3 + [38] 0x18134ba70 size=3 + [39] 0x18134ba60 size=3 + [40] 0x18160c410 size=1445 + [41] 0x18134ba50 size=3 + [42] 0x18134adc0 size=3 + [43] 0x18134ba40 size=3 + [44] 0x18134ba30 size=3 + [45] 0x18134ba20 size=3 + [46] 0x18134ba10 size=3 + [47] 0x18134b940 size=196 + [48] 0x18134b930 size=3 + [49] 0x18134b870 size=87 + [50] 0x18251aed8 size=0 + [51] 0x18058e360 size=22 + [52] 0x18058e360 size=22 + [53] 0x18058e380 size=124 + [54] 0x18058e350 size=8 + [55] 0x18048dc80 size=15 + [56] 0x180481210 size=5 + [57] 0x18251ab70 size=0 + [58] 0x18058eb04 size=12 + [59] 0x1804714b0 size=3 + [60] 0x18058b220 size=318 + [61] 0x18058b0c0 size=313 + [62] 0x1804714b0 size=3 + [63] 0x18251ac50 size=0 +CCODE: + --- [1] 0x18058b010 size=176 --- + +void .?AV?$FilterGraph@M$05$0CAA@@@::vtbl___AV__FilterGraph_M_05_0CAA___(longlong param_1) + +{ + byte *pbVar1; + ulonglong uVar2; + byte bVar3; + undefined8 local_18; + undefined4 uStack_10; + undefined4 uStack_c; + + uVar2 = (ulonglong)*(uint *)(param_1 + 0x97b0); + if (0 < (int)*(uint *)(param_1 + 0x97b0)) { + bVar3 = *(byte *)(param_1 + 0x9939); + pbVar1 = (byte *)(param_1 + 0x993a); + do { + bVar3 = bVar3 | *pbVar1; + pbVar1 = pbVar1 + 1; + *(byte *)(param_1 + 0x9939) = bVar3; + uVar2 = uVar2 - 1; + } while (uVar2 != 0); + } + if (*(char *)(param_1 + 0x9939) != '\0') { + (**(code **)(*(longlong *)(param_1 + -200) + 0x170))(param_1 + -200); + uStack_10 = *(undefined4 *)(param_1 + -0xa0); + uStack_c = *(undefined4 *)(param_1 + -0x9c); + local_18 = 0; + FUN_181342870(param_1 + -200,&local_18,1); + *(undefined1 *)(param_1 + 0x9939) = 0; + } + return; +} + + + --- [4] 0x18160b000 size=4718 --- + +/* WARNING: Instruction at (ram,0x00018160bbc8) overlaps instruction at (ram,0x00018160bbc3) + */ +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ +/* WARNING: Removing unreachable block (ram,0x00018160b5f3) */ +/* WARNING: Removing unreachable block (ram,0x00018160b060) */ +/* WARNING: Removing unreachable block (ram,0x00018160b041) */ +/* WARNING: Removing unreachable block (ram,0x00018160b229) */ +/* WARNING: Removing unreachable block (ram,0x00018160bbc3) */ +/* WARNING: Removing unreachable block (ram,0x00018160b46f) */ +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +void .?AV?$FilterGraph@M$05$0CAA@@@::vtbl___AV__FilterGraph_M_05_0CAA___ + (longlong param_1,int param_2,undefined8 param_3) + +{ + uint uVar1; + uint uVar2; + byte bVar3; + undefined8 uVar4; + longlong lVar5; + undefined1 *puVar6; + uint uVar7; + ulonglong uVar8; + uint uVar9; + uint uVar10; + uint uVar11; + uint uVar12; + uint *puVar13; + uint uVar14; + longlong lVar15; + undefined4 *puVar16; + ulonglong uVar17; + longlong *plVar18; + uint *puVar19; + uint *puVar20; + undefined1 *puVar21; + undefined8 uVar22; + uint uVar23; + uint uVar24; + uint uVar25; + uint uVar26; + uint uVar27; + int iVar28; + uint uVar29; + ulonglong uVar30; + uint uVar31; + longlong lVar32; + bool bVar33; + int unaff_retaddr; + undefined1 auStack_148 [32]; + int local_128; + uint local_124; + uint *local_120; + undefined *local_118; + uint local_110; + uint local_10c; + uint local_108; + uint local_104; + uint local_100; + uint local_fc; + int local_f8; + undefined8 local_f0; + undefined4 local_e8; + uint local_e4; + int local_e0; + uint local_dc; + code *local_d8; + longlong local_d0; + undefined8 local_c8; + undefined4 local_c0; + undefined4 local_bc; + longlong local_b8; + longlong local_b0; + longlong local_a8; + code *local_a0; + uint local_94; + uint local_90; + undefined4 local_80; + uint local_7c; + int local_78; + uint local_74; + undefined1 local_68 [8]; + uint local_60; + uint local_5c; + ulonglong local_40; + + local_40 = DAT_182615970 ^ (ulonglong)auStack_148; + uVar29 = (uint)&stack0x00000000 & 0x3ff; + local_dc = 0x9ea5 - ((uVar29 + 2) * (uVar29 + 1) * uVar29) % 3 ^ 0x9655; + local_e0 = 0x420; + local_f0 = 0x100; + local_120 = &DAT_18163cb4c; + local_118 = &DAT_18163cc4c; + uVar29 = (DAT_18163cb4c ^ 0x811c9e53) * 0x10001d1; + uVar30 = (ulonglong)uVar29; + uVar29 = _DAT_18163cb78 ^ + (_DAT_18163cb74 ^ + (_DAT_18163cb70 ^ + (_DAT_18163cb6c ^ + (_DAT_18163cb68 ^ + (DAT_18163cb64 ^ + (DAT_18163cb60 ^ + (DAT_18163cb5c ^ + (DAT_18163cb58 ^ (DAT_18163cb54 ^ (DAT_18163cb50 ^ uVar29) * 0x10001d1) * 0x10001d1) * + 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) + * 0x10001d1; + local_f8 = param_2; + local_d0 = param_1; + local_c8 = param_3; + do { + uVar22 = rdtsc(); + local_110 = (uint)uVar22 ^ (uint)((ulonglong)uVar22 >> 0x20); + FUN_18160962e(); + uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001; + if ((int)uVar9 < 0) { + uVar9 = (uVar9 - 1 | 0xfffffffe) + 1; + } + } while (uVar9 != 0); + local_110 = (local_110 * -0x3d4d4602 >> 0x18 ^ local_110 * -0x3d4d4602) * -0x3b313595; + if (local_110 < 0x430fc8) { + do { + local_d8 = FUN_1813f2240; + uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001; + if ((int)uVar9 < 0) { + uVar9 = (uVar9 - 1 | 0xfffffffe) + 1; + } + } while (uVar9 != 0); + uVar8 = FUN_1813f2240(0,0x672d); + if (1 < uVar8) { + FUN_18113eab0(); + } + } + lVar15 = 0x17; + uVar29 = (_DAT_18163cb7c ^ uVar29 * 0x10001d1) * 0x10001d1; + local_118 = (undefined *)0xeb1172bd7cee29a8; + puVar19 = (uint *)&DAT_18163cb80; + local_120 = (uint *)CONCAT44(local_120._4_4_,0x7cee29a8); + do { + uVar9 = *puVar19; + puVar19 = puVar19 + 1; + uVar29 = (uVar9 ^ uVar29) * 0x10001d1; + lVar15 = lVar15 + -1; + } while (lVar15 != 0); + uVar29 = (*puVar19 ^ uVar29) * 0x10001d1; + if ((uVar29 >> 8 & 1) == 0) { + uVar9 = uVar29 & 0x27f; + iVar28 = (uVar9 + 2) * (uVar9 + 1) * uVar9; + uVar9 = ((iVar28 >> 1) - (iVar28 >> 3)) + iVar28 * 0x55555555 >> 0x1e; + } + else { + uVar9 = uVar29 & 0x3f; + uVar9 = (uVar9 + 1) * (uVar9 + 1) * uVar9 * uVar9 & 1; + } + uVar9 = 0xf642 - uVar9 ^ 0xf542; + puVar20 = (uint *)((longlong)puVar19 + (longlong)(int)uVar9 + -0x2f4); + uVar24 = (uint)puVar20 & 0xff; + uVar9 = (*puVar20 ^ + (*(uint *)((longlong)puVar19 + (longlong)(int)uVar9 + -0x2f8) ^ + (*(uint *)((longlong)puVar19 + (longlong)(int)uVar9 + -0x2fc) ^ uVar29) * 0x10001d1) * + 0x10001d1) * 0x10001d1; + uVar29 = uVar9 & 0x3bff; + uVar29 = ((uVar29 + 1) * uVar29 + 7) % 0x51 - ((uVar24 + 2) * (uVar24 + 1) * uVar24) % 3; + puVar20 = (uint *)((longlong)puVar20 + + (0x204 - (ulonglong)(~((int)(uVar29 | -uVar29) >> 0x1f & 0xfffffdffU) & 0xfae7)) + ); + bVar33 = puVar20 == (uint *)0x0; + bVar3 = POPCOUNT((ulonglong)puVar20 & 0xff); + do { + if (((bVar3 & 1) == 0) && (bVar33)) { + uVar30 = ~(~uVar30 + 1) + 1; + } + uVar29 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001; + if ((int)uVar29 < 0) { + uVar29 = (uVar29 - 1 | 0xfffffffe) + 1; + } + bVar33 = uVar29 == 0; + bVar3 = POPCOUNT(uVar29 & 0xff); + } while (!bVar33); + uVar24 = (int)puVar20 + 4U & 0x5f; + uVar26 = (puVar20[1] ^ (*puVar20 ^ uVar9) * 0x10001d1) * 0x10001d1; + uVar29 = uVar26 & 0x1f; + puVar20 = (uint *)((longlong)puVar20 + + (((longlong) + (int)(((uVar24 + 1) * (uVar24 + 1) * uVar24 * uVar24 & 1) + + ((uVar29 + 1) * (uVar29 + 1) * uVar29 * uVar29 & 0x80000003)) ^ 0x400U) - + 0x3f8)); + uVar29 = *puVar20; + uVar9 = puVar20[1]; + uVar24 = puVar20[2]; + uVar25 = puVar20[3]; + uVar27 = puVar20[4]; + uVar1 = puVar20[5]; + do { + local_e8 = 0xf4b58d1e; + uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001; + if ((int)uVar10 < 0) { + uVar10 = (uVar10 - 1 | 0xfffffffe) + 1; + } + } while (uVar10 != 0); + uVar10 = puVar20[6]; + uVar2 = puVar20[7]; + do { + local_c0 = 0x72; + local_b8 = 0x18160b707; + uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001; + if ((int)uVar11 < 0) { + uVar11 = (uVar11 - 1 | 0xfffffffe) + 1; + } + } while (uVar11 != 0); + local_128 = 0x101f68d; + do { + plVar18 = &local_b0; + puVar16 = &local_bc; + puVar19 = &local_104; + FUN_18160cf73(); + *puVar19 = 0x4816aad0; + *puVar16 = 0x6c; + *plVar18 = 0x18160b7e7; + uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001; + if ((int)uVar11 < 0) { + uVar11 = (uVar11 - 1 | 0xfffffffe) + 1; + } + } while (uVar11 != 0); + lVar15 = local_128 + local_b8; + uVar11 = local_104 << 4; + uVar14 = local_104 >> 0x1c; + uVar7 = local_104 >> 4; + uVar23 = local_104 << 0x1c; + local_128 = 0; + local_104 = 0; + uVar11 = ((uVar7 | uVar23) & 0xe1e1e1e1 | (uVar11 | uVar14) & 0x1e1e1e1e) ^ 0xe5d863fd; + uVar14 = ((uVar11 & 0x33333333) << 2 | uVar11 >> 2 & 0x33333333) + 0x87604ead; + uVar11 = (uVar14 >> 0xf ^ uVar14) & 0x3fff; + uVar14 = uVar14 ^ (uVar11 << 0xf | uVar11); + uVar14 = ((uVar14 << 0x10 | uVar14 >> 0x10) & 0xed1212ed | + (uVar14 >> 0x10 | uVar14 << 0x10) & 0x12eded12) ^ 0xb938882a; + uVar11 = (uVar14 >> 0xe ^ uVar14) >> 2 & 0x3fff; + uVar14 = uVar14 ^ (uVar11 << 0xe | uVar11) << 2; + lVar32 = ((longlong)(int)(uVar14 << 0x10 | uVar14 >> 0x10) & 0xffffffffcb0934f6U | + (ulonglong)((uVar14 >> 0x10 | uVar14 << 0x10) & 0x34f6cb09)) + local_b0; + *(longlong *)(lVar15 + 4) = + *(longlong *)(lVar15 + 4) + + (ulonglong)((uint)(*(ulonglong *)(lVar32 + 4) >> 0x1b) & 0x45210049); + do { + puVar19 = &local_e4; + puVar13 = &local_124; + FUN_18160a47b(); + uVar22 = rdtsc(); + uVar11 = (int)uVar22 + (int)((ulonglong)uVar22 >> 0x20); + *puVar19 = uVar11; + uVar8 = (ulonglong)uVar11 * -0x47ff - 0x419c2dc1; + uVar8 = uVar8 - (uVar8 * 0x20 | uVar8 >> 0x3b); + *puVar13 = (uint)((uVar8 ^ (uVar8 >> 0xd) - 0x3b73948f) * 0x101 - 0x6d2a332 >> 5) & 0xc78b3a8e; + lVar5 = local_d0; + uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001; + if ((int)uVar11 < 0) { + uVar11 = (uVar11 - 1 | 0xfffffffe) + 1; + } + } while (uVar11 != 0); + *(int *)(lVar15 + 8) = *(int *)(lVar15 + 8) + (local_124 ^ 0x328b734b); + *(int *)(lVar15 + 4) = *(int *)(lVar15 + 4) + (local_124 ^ 0xc0006fe8); + uVar17 = (*(ulonglong *)(lVar15 + 4) << 0x21 | *(ulonglong *)(lVar15 + 4) >> 0x1f) + + 0xb0379220c452d670; + uVar8 = (ulonglong)((uint)((uVar17 >> 0x1e ^ uVar17) >> 2) & 0x1fffff); + uVar8 = ((uVar8 << 0x1e | uVar8) << 2 ^ uVar17) + 0xba631318a0d4a7cb; + uVar17 = (uVar8 >> 4 | uVar8 << 0x3c) & 0xc3c3c3c3c3c3c3c3 | + (uVar8 * 0x10 | uVar8 >> 0x3c) & 0x3c3c3c3c3c3c3c3c; + uVar11 = (uint)((uVar17 >> 9 ^ uVar17) >> 0x1a) & 1; + uVar8 = ((ulonglong)uVar11 << 9 | (ulonglong)uVar11) << 0x1a ^ uVar17; + uVar8 = ((uVar8 << 4 | uVar17 >> 0x3c) & 0xe1e1e1e1e1e1e1e1 | + (uVar8 >> 4 | uVar17 << 0x3c) & 0x1e1e1e1e1e1e1e1e) + 0xcbb348cc940fcd7a; + uVar8 = (uVar8 >> 2 | uVar8 << 0x3e) & 0x9999999999999999 | + (uVar8 * 4 | uVar8 >> 0x3e) & 0x6666666666666666; + *(ulonglong *)(lVar15 + 4) = uVar8; + plVar18 = (longlong *)(lVar32 + 4); + *plVar18 = *plVar18 + (ulonglong)((uint)(uVar8 >> 0xf) & 0x20230248); + local_124 = (uint)(*(ulonglong *)(lVar15 + 4) >> 0x1b) & 0x7fffffff; + local_108 = (uint)(*(ulonglong *)(lVar15 + 4) >> 0x19) ^ 0xb9d9b711; + local_118 = (undefined *)(*(ulonglong *)(lVar15 + 4) ^ 0x49746e3163e2e07a); + uVar29 = (puVar20[0xb] ^ + (puVar20[10] ^ + (puVar20[9] ^ + (puVar20[8] ^ + (uVar2 ^ (uVar10 ^ (uVar1 ^ (uVar27 ^ (uVar25 ^ (uVar24 ^ (uVar9 ^ (uVar29 ^ uVar26) * + 0x10001d1) * 0x10001d1 + ) * 0x10001d1) * 0x10001d1) * 0x10001d1) + * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * + 0x10001d1) * 0x10001d1; + local_f0 = CONCAT44(local_f0._4_4_,uVar29); + do { + uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001; + if ((int)uVar9 < 0) { + uVar9 = (uVar9 - 1 | 0xfffffffe) + 1; + } + } while (uVar9 != 0); + local_90 = (uint)local_118; + uVar9 = ((local_90 ^ local_108) & 0x6593f979 ^ local_108) + 0x4ed1481b; + uVar24 = ((local_90 ^ local_108) & 0x9a6c0686 ^ local_108) + 0xaef7aa14; + uVar27 = (int)((ulonglong)local_118 >> 0x20) + 0x7bc739d3; + uVar25 = (uVar9 * 0x100 | uVar9 >> 0x18) & 0x9a659a65 | + (uVar9 >> 8 | uVar9 * 0x1000000) & 0x659a659a; + uVar27 = uVar27 >> 2 & 0xcccccccc | uVar27 * 0x40000000 | uVar27 * 4 & 0x33333333 | uVar27 >> 0x1e + ; + uVar24 = ((uVar24 * 0x10000 | uVar24 >> 0x10) & 0xc73b38c4 | + (uVar24 >> 0x10 | uVar24 * 0x10000) & 0x38c4c73b) ^ uVar25; + uVar9 = uVar24 & 0x8a578475 ^ uVar25; + uVar22 = 0x1f67ec24; + uVar24 = uVar24 & 0x75a87b8a ^ uVar25 ^ uVar9; + uVar25 = uVar24 & 0x44465b56 ^ uVar9; + uVar9 = uVar24 & 0xbbb9a4a9 ^ uVar9; + uVar24 = uVar25 >> 0x19 | uVar25 << 7; + uVar25 = (uVar27 >> 10 | uVar27 << 0x16) ^ uVar24; + uVar31 = (uVar9 >> 0x1f | uVar9 << 1) ^ 0xea2cbcd1; + uVar8 = (ulonglong)uVar31; + uVar7 = uVar25 & 0xddffbe9c ^ uVar24; + uVar23 = uVar25 & 0x22004163 ^ uVar24 ^ uVar7; + uVar9 = puVar20[0xc]; + uVar24 = puVar20[0xd]; + uVar25 = puVar20[0xe]; + uVar27 = puVar20[0xf]; + uVar1 = puVar20[0x10]; + uVar26 = puVar20[0x11]; + uVar10 = puVar20[0x12]; + uVar2 = puVar20[0x13]; + uVar11 = puVar20[0x14]; + uVar14 = puVar20[0x15]; + do { + uVar4 = rdtsc(); + local_e4 = (int)uVar4 - (int)((ulonglong)uVar4 >> 0x20); + uVar17 = (ulonglong)local_e4 - ((ulonglong)(local_e4 >> 5) - 0x3dd514ae) >> 8; + uVar17 = uVar17 + (~-uVar17 + 1) * 0x200 + -0x72ddc7ad; + uVar17 = uVar17 ^ uVar17 * 0x200; + uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001; + if ((int)uVar12 < 0) { + uVar12 = (uVar12 - 1 | 0xfffffffe) + 1; + } + } while (uVar12 != 0); + local_100 = (uint)((int)uVar17 - (int)(uVar17 << 5)) >> 1 ^ local_124; + local_94 = local_108; + if (local_100 < 0xd698) { + do { + uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001; + if ((int)uVar12 < 0) { + uVar12 = (uVar12 - 1 | 0xfffffffe) + 1; + } + } while (uVar12 != 0); + local_10c = 0x7432a569; + local_80 = 0x1f67ec24; + local_7c = uVar31; + local_78 = (uVar23 & 0x7310039d ^ uVar7) + 0x6bb1bcf9; + local_74 = uVar23 & 0x8ceffc62 ^ uVar7 ^ 0xaa7d1554; + do { + plVar18 = &local_a8; + puVar19 = &local_fc; + FUN_18160cbe4(); + *puVar19 = 0x5e5cf042; + uVar30 = 0; + *plVar18 = 0x18160bf83; + FUN_18160a645(); + uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001; + if ((int)uVar7 < 0) { + uVar7 = (uVar7 - 1 | 0xfffffffe) + 1; + } + } while (uVar7 != 0); + uVar7 = (local_fc + 0x1804952a >> 0x15 | (local_fc + 0x1804952a) * 0x800) ^ 0x90bd4e7c; + local_fc = ~((uVar7 >> 0x11 | uVar7 << 0xf) + 0xe9b473b7); + (*(code *)((int)local_fc + local_a8))(&local_80,local_68); + iVar28 = 7; + do { + uVar31 = ((local_60 << 4 | local_60 >> 0x1c) & 0xb4b4b4b4 | + (local_60 >> 4 | local_60 << 0x1c) & 0x4b4b4b4b) + 0xedf66992; + uVar23 = ((local_5c >> 8 | local_5c << 0x18) & 0xfa05fa05 | + (local_5c << 8 | local_5c >> 0x18) & 0x5fa05fa) + 0x703d2ee4; + uVar7 = uVar31 >> 0xc; + uVar23 = (uVar23 >> 0x1d | uVar23 * 8) + 0x5f26144; + uVar31 = (((uVar7 | uVar31 * 0x100000) ^ 0x2677a938) >> 3 | uVar7 << 0x1d) + 0x70f6a640; + uVar23 = (uVar23 * 0x8000 | uVar23 >> 0x11) + 0x191d2650; + uVar12 = uVar31 >> 0x17 | uVar31 * 0x200; + uVar7 = uVar23 >> 0xc; + uVar23 = uVar23 * 0x100000 | uVar7; + uVar31 = (uVar12 >> 8 | (uVar31 >> 0x17) << 0x18) & 0xa857a857 | + (uVar12 << 8 | (uVar31 & 0x7fffff) >> 0xf) & 0x57a857a8; + uVar23 = (uVar7 << 0x10 | uVar23 >> 0x10) & 0xd65429ab | + (uVar23 >> 0x10 | uVar7 << 0x10) & 0x29abd654; + uVar7 = uVar31 >> 6; + local_60 = uVar7 | uVar31 << 0x1a; + local_5c = uVar23 << 0x16 | uVar23 >> 10; + iVar28 = iVar28 + -1; + } while (-1 < iVar28); + uVar7 = (uVar7 << 0x1d | local_60 >> 3) + 0xa6be00c2; + uVar7 = (uVar7 * 0x80 | uVar7 >> 0x19) + 0xc72db2d0; + uVar7 = (uVar7 * 8 | uVar7 >> 0x1d) + 0x5e0136f7; + uVar7 = (uVar7 * 0x400 | uVar7 >> 0x16) ^ 0xd2776bfa; + if (((uVar7 >> 0x10 | uVar7 << 0x10) ^ local_10c) + local_5c != local_108) { + do { + local_a0 = FUN_180bc28e0; + uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001; + if ((int)uVar7 < 0) { + uVar7 = (uVar7 - 1 | 0xfffffffe) + 1; + } + } while (uVar7 != 0); + FUN_180bc28e0(); + do { + uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001; + if ((int)uVar7 < 0) { + uVar7 = (uVar7 - 1 | 0xfffffffe) + 1; + } + } while (uVar7 != 0); + } + } + uVar9 = (uVar14 ^ (uVar11 ^ (uVar2 ^ (uVar10 ^ (uVar26 ^ (uVar1 ^ (uVar27 ^ (uVar25 ^ (uVar24 ^ ( + uVar9 ^ uVar29) * 0x10001d1) * 0x10001d1) * + 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) + * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1 ^ + 0xd282d6a9; + uVar29 = (uVar9 >> 0xe ^ uVar9) >> 1 & 0xff; + lVar32 = (longlong)local_f8; + uVar29 = ~((uVar29 << 0xe | uVar29) * 2 ^ uVar9) + 0xac1763b7; + uVar9 = uVar29 >> 0x17 | uVar29 * 0x200; + uVar29 = ((uVar29 & 0x7fffff) >> 3 ^ uVar9) >> 7 & 0x1ff; + lVar15 = lVar32 * 0x828 + 0x3830 + lVar5; + if ((uint)local_120 == ((uVar29 << 0xc | uVar29) << 7 ^ uVar9)) { + FUN_180589400(lVar15,local_c8); + *(undefined1 *)(*(longlong *)(lVar5 + 0x10) + 0x9a02 + lVar32) = 1; + thunk_FUN_1805a9280(); + return; + } + FUN_180589400(lVar15,local_c8); + *(undefined1 *)(*(longlong *)(lVar5 + 0x10) + 0x9a02 + lVar32) = 1; + puVar6 = auStack_148; + do { + puVar21 = puVar6; + *(ulonglong *)(puVar21 + -8) = uVar30; + *(undefined8 *)(puVar21 + -0x10) = uVar22; + *(ulonglong *)(puVar21 + -0x18) = uVar8; + lVar15 = -(longlong)local_e0; + uVar8 = *(ulonglong *)(puVar21 + lVar15 + 0x408); + uVar22 = *(undefined8 *)(puVar21 + lVar15 + 0x410); + uVar30 = *(ulonglong *)(puVar21 + lVar15 + 0x418); + uVar29 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001; + if ((int)uVar29 < 0) { + uVar29 = (uVar29 - 1 | 0xfffffffe) + 1; + } + puVar6 = puVar21 + lVar15 + 0x420; + } while (uVar29 != 0); + *(undefined **)(puVar21 + lVar15 + 0x418) = &UNK_18160c3e2; +} + + + --- [15] 0x18134bb30 size=93 --- + +void .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__ + (longlong param_1,undefined8 param_2,undefined8 param_3) + +{ + longlong lVar1; + undefined8 uVar2; + undefined1 local_68 [96]; + + if (*(longlong **)(param_1 + 0x18) != (longlong *)0x0) { + lVar1 = **(longlong **)(param_1 + 0x18); + uVar2 = FUN_181339840(param_2,local_68); + (**(code **)(lVar1 + 0x40))(*(undefined8 *)(param_1 + 0x18),uVar2,param_3); + } + return; +} + + + --- [16] 0x18134bad0 size=82 --- + +void .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__ + (longlong param_1,undefined8 param_2,undefined4 param_3) + +{ + undefined8 uVar1; + undefined1 local_78 [112]; + + if (*(longlong *)(param_1 + 0x18) != 0) { + uVar1 = FUN_181339840(param_2,local_78); + (**(code **)(**(longlong **)(param_1 + 0x18) + 0x48)) + (*(longlong **)(param_1 + 0x18),uVar1,param_3); + } + return; +} + + + --- [17] 0x18134c900 size=397 --- + +void .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__ + (longlong param_1,longlong *param_2,undefined8 param_3,undefined8 param_4) + +{ + int *piVar1; + uint uVar2; + code *pcVar3; + longlong *plVar4; + undefined8 *puVar5; + longlong lVar6; + uint *_Memory; + int iVar7; + bool bVar8; + undefined8 *local_res8; + undefined1 local_res10 [16]; + + lVar6 = *param_2; + if (*(longlong *)(param_1 + 8) == lVar6) { + iVar7 = 0; + } + else { + iVar7 = FUN_18048cbc0(*(undefined8 *)(param_1 + 8),lVar6,param_3,param_4,0xfffffffffffffffe); + } + if (iVar7 != 0) { + if ((*(uint *)(lVar6 + -0x10) & 0x30000000) == 0) { + LOCK(); + *(int *)(lVar6 + -0x10) = *(int *)(lVar6 + -0x10) + 1; + UNLOCK(); + } + LOCK(); + lVar6 = *(longlong *)(param_1 + 8); + *(longlong *)(param_1 + 8) = *param_2; + UNLOCK(); + _Memory = (uint *)(lVar6 + -0x10); + if ((*_Memory & 0x30000000) == 0) { + LOCK(); + uVar2 = *_Memory; + *_Memory = *_Memory - 1; + UNLOCK(); + if (uVar2 == 0) { + /* WARNING: Subroutine does not return */ + free(_Memory); + } + } + if (((*(byte *)(param_1 + 0xa8) & 1) != 0) && + (plVar4 = (longlong *)FUN_1812d2bd0(param_1), plVar4 != (longlong *)0x0)) { + if ((undefined **)*plVar4 == juce::HWNDComponentPeer::vftable) { + puVar5 = (undefined8 *)FUN_18049a930(local_res10); + SetWindowTextW((HWND)plVar4[0x11],(LPCWSTR)*puVar5); + } + else { + (*(code *)((undefined **)*plVar4)[3])(plVar4,param_2); + } + } + FUN_1804de690(&local_res8,param_1); + puVar5 = local_res8; + iVar7 = *(int *)(param_1 + 0x8c); + bVar8 = local_res8 == (undefined8 *)0x0; + while( true ) { + if (bVar8) { + lVar6 = 0; + } + else { + lVar6 = puVar5[2]; + } + if ((lVar6 == 0) || (iVar7 < 1)) break; + iVar7 = iVar7 + -1; + if ((*(int *)(param_1 + 0x8c) <= iVar7) && (iVar7 = *(int *)(param_1 + 0x8c) + -1, iVar7 < 0)) + break; + plVar4 = *(longlong **)(*(longlong *)(param_1 + 0x80) + (longlong)iVar7 * 8); + pcVar3 = *(code **)(*plVar4 + 0x30); + if (pcVar3 != .?AVSoothe2Grid@@::vtbl___AVSoothe2Grid__) { + (*pcVar3)(plVar4,param_1); + } + } + if (puVar5 != (undefined8 *)0x0) { + LOCK(); + piVar1 = (int *)(puVar5 + 1); + iVar7 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar7 == 1) { + (**(code **)*local_res8)(local_res8,1); + } + } + } + return; +} + + + --- [18] 0x18134c760 size=397 --- + +void .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__ + (longlong param_1,byte param_2,undefined8 param_3,undefined8 param_4) + +{ + int *piVar1; + int iVar2; + undefined8 *puVar3; + longlong lVar4; + longlong *plVar5; + longlong lVar6; + bool bVar7; + undefined8 *local_res8; + undefined4 local_28; + undefined4 uStack_24; + undefined4 uStack_20; + undefined4 uStack_1c; + + if ((*(byte *)(param_1 + 0xa8) >> 1 & 1) != param_2) { + FUN_1804de690(&local_res8,param_1,param_3,param_4,0xfffffffffffffffe); + *(byte *)(param_1 + 0xa8) = *(byte *)(param_1 + 0xa8) & 0xfd; + *(byte *)(param_1 + 0xa8) = *(byte *)(param_1 + 0xa8) | (param_2 & 1) * '\x02'; + lVar6 = 0; + if (param_2 == 0) { + FUN_181342b10(param_1); + } + else { + uStack_1c = *(undefined4 *)(param_1 + 0x2c); + uStack_20 = *(undefined4 *)(param_1 + 0x28); + local_28 = 0; + uStack_24 = 0; + FUN_181342870(param_1,&local_28,1); + } + FUN_18133f790(); + if (param_2 == 0) { + FUN_1804e5060(param_1); + for (lVar4 = DAT_182673708; lVar4 != param_1; lVar4 = *(longlong *)(lVar4 + 0x18)) { + if (lVar4 == 0) goto LAB_18134c84f; + } + if (*(longlong *)(param_1 + 0x18) == 0) { + FUN_18133eae0(1); + } + else { + FUN_18133ed60(*(longlong *)(param_1 + 0x18),2,1); + } + } +LAB_18134c84f: + puVar3 = local_res8; + bVar7 = local_res8 != (undefined8 *)0x0; + lVar4 = lVar6; + if (bVar7) { + lVar4 = local_res8[2]; + } + if (lVar4 != 0) { + FUN_1813452b0(param_1); + if (bVar7) { + lVar6 = puVar3[2]; + } + if (((lVar6 != 0) && ((*(byte *)(param_1 + 0xa8) & 1) != 0)) && + (plVar5 = (longlong *)FUN_18134c2e0(param_1), plVar5 != (longlong *)0x0)) { + (**(code **)(*plVar5 + 0x10))(plVar5,param_2); + FUN_181343670(param_1); + } + } + if (puVar3 != (undefined8 *)0x0) { + LOCK(); + piVar1 = (int *)(puVar3 + 1); + iVar2 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar2 == 1) { + (**(code **)*local_res8)(local_res8,1); + } + } + } + return; +} + + + --- [20] 0x18134c3a0 size=933 --- + +void .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__ + (longlong *param_1,uint param_2,undefined8 param_3) + +{ + int *piVar1; + undefined8 *puVar2; + int iVar3; + ulonglong uVar4; + longlong lVar5; + undefined8 *puVar6; + char cVar7; + int iVar8; + longlong *plVar9; + ulonglong *puVar10; + ulonglong uVar11; + undefined4 uVar12; + longlong *plVar13; + undefined8 *puVar14; + ulonglong uVar15; + undefined4 uVar16; + undefined4 uVar17; + undefined4 uVar18; + undefined4 uVar19; + char local_res20; + undefined8 *local_88; + longlong local_80; + undefined8 local_78; + undefined1 local_70 [8]; + longlong *local_68; + undefined8 local_60; + undefined8 local_58; + undefined8 uStack_50; + + local_78 = 0xfffffffffffffffe; + if ((*(byte *)(param_1 + 0x15) >> 2 & 1) == 0) { + param_2 = param_2 | 0x40000000; + } + else { + param_2 = param_2 & 0xbfffffff; + } + plVar9 = (longlong *)FUN_1812d2bd0(); + if ((plVar9 != (longlong *)0x0) && (param_2 == *(uint *)(plVar9 + 2))) { + return; + } + FUN_1804de690(&local_88,param_1); + uVar15 = 0; + uVar4 = uVar15; + puVar6 = local_88; + for (plVar13 = param_1; local_88 = puVar6, plVar13 != (longlong *)0x0; + plVar13 = (longlong *)plVar13[3]) { + puVar10 = (ulonglong *)FUN_18051e290(local_70,plVar13,uVar4); + uVar4 = *puVar10; + puVar6 = local_88; + } + cVar7 = '\0'; + local_res20 = '\0'; + local_80 = 0; + uVar16 = 0; + uVar17 = 0; + uVar18 = 0; + uVar19 = 0; + local_58 = 0; + uStack_50 = 0; + iVar8 = -1; + if (plVar9 != (longlong *)0x0) { + local_68 = plVar9; + cVar7 = (**(code **)(*plVar9 + 0x78))(plVar9); + local_res20 = (**(code **)(*plVar9 + 0x68))(plVar9); + local_80 = plVar9[5]; + uVar16 = *(undefined4 *)((longlong)plVar9 + 0x14); + uVar17 = (undefined4)plVar9[3]; + local_58 = *(undefined8 *)((longlong)plVar9 + 0x14); + uVar18 = *(undefined4 *)((longlong)plVar9 + 0x1c); + uVar19 = (undefined4)plVar9[4]; + uStack_50 = *(undefined8 *)((longlong)plVar9 + 0x1c); + iVar8 = (**(code **)(*plVar9 + 0x100))(plVar9); + *(byte *)(param_1 + 0x15) = *(byte *)(param_1 + 0x15) & 0xfe; + if (DAT_182673700 == 0) { + local_60 = FUN_1811316e0(0x130); + DAT_182673700 = FUN_18133c6c0(local_60); + } + FUN_180488600(DAT_182673700 + 0x58,param_1); + FUN_181343670(param_1); + uVar11 = uVar15; + if (puVar6 != (undefined8 *)0x0) { + uVar11 = puVar6[2]; + } + if (uVar11 == 0) { + (**(code **)*plVar9)(plVar9,1); + goto LAB_18134c6f7; + } + FUN_18134bfe0(param_1,uVar4 & 0xffffffff,uVar4 >> 0x20,(int)param_1[5], + *(undefined4 *)((longlong)param_1 + 0x2c)); + (**(code **)*plVar9)(plVar9,1); + } + lVar5 = param_1[3]; + if (lVar5 != 0) { + plVar9 = *(longlong **)(lVar5 + 0x40); + for (plVar13 = plVar9; plVar13 != plVar9 + *(int *)(lVar5 + 0x4c); plVar13 = plVar13 + 1) { + if (param_1 == (longlong *)*plVar13) { + uVar12 = (undefined4)((longlong)plVar13 - (longlong)plVar9 >> 3); + goto LAB_18134c588; + } + } + uVar12 = 0xffffffff; +LAB_18134c588: + FUN_181343a90(lVar5,uVar12,1); + } + if (puVar6 != (undefined8 *)0x0) { + uVar15 = puVar6[2]; + } + if (uVar15 != 0) { + *(byte *)(param_1 + 0x15) = *(byte *)(param_1 + 0x15) | 1; + plVar9 = (longlong *)(**(code **)(*param_1 + 0x150))(param_1,param_2,param_3); + if (DAT_182673700 == 0) { + local_60 = FUN_1811316e0(0x130); + DAT_182673700 = FUN_18133c6c0(local_60); + } + lVar5 = DAT_182673700; + plVar13 = (longlong *)(DAT_182673700 + 0x58); + puVar14 = (undefined8 *)*plVar13; + iVar3 = *(int *)(DAT_182673700 + 100); + puVar2 = puVar14 + iVar3; + for (; puVar14 != puVar2; puVar14 = puVar14 + 1) { + if (param_1 == (longlong *)*puVar14) goto LAB_18134c651; + } + if (*(int *)(DAT_182673700 + 0x60) < iVar3 + 1) { + FUN_18047cb30(plVar13,iVar3 + 9 + (iVar3 + 1) / 2 & 0xfffffff8); + } + iVar3 = *(int *)(lVar5 + 100); + *(int *)(lVar5 + 100) = iVar3 + 1; + *(longlong **)(*plVar13 + (longlong)iVar3 * 8) = param_1; +LAB_18134c651: + param_1[4] = uVar4; + FUN_18134b470(plVar9); + if (-1 < iVar8) { + (**(code **)(*plVar9 + 0x108))(plVar9,iVar8); + } + (**(code **)(*plVar9 + 0x10))(plVar9,*(byte *)(param_1 + 0x15) >> 1 & 1); + plVar9 = (longlong *)FUN_1812d2bd0(param_1); + if (plVar9 != (longlong *)0x0) { + if (cVar7 != '\0') { + (**(code **)(*plVar9 + 0x70))(plVar9,1); + *(undefined4 *)((longlong)plVar9 + 0x14) = uVar16; + *(undefined4 *)(plVar9 + 3) = uVar17; + *(undefined4 *)((longlong)plVar9 + 0x1c) = uVar18; + *(undefined4 *)(plVar9 + 4) = uVar19; + } + if (local_res20 != '\0') { + (**(code **)(*plVar9 + 0x60))(plVar9,1); + } + if ((*(byte *)((longlong)param_1 + 0xa9) & 1) != 0) { + (**(code **)(*plVar9 + 0xa8))(plVar9,1); + } + plVar9[5] = local_80; + FUN_18134bdf0(param_1); + FUN_181343670(param_1); + } + } +LAB_18134c6f7: + if (puVar6 != (undefined8 *)0x0) { + LOCK(); + piVar1 = (int *)(puVar6 + 1); + iVar8 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar8 == 1) { + (**(code **)*local_88)(local_88,1); + } + } + return; +} + + + --- [23] 0x18134c270 size=69 --- + +undefined4 .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(void) + +{ + undefined8 uVar1; + + if (DAT_182673700 == 0) { + uVar1 = FUN_1811316e0(0x130); + DAT_182673700 = FUN_18133c6c0(uVar1); + } + return *(undefined4 *)(DAT_182673700 + 0xc0); +} + + + --- [26] 0x18134be30 size=195 --- + +uint .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__ + (longlong param_1,undefined4 param_2,undefined4 param_3) + +{ + longlong *plVar1; + ulonglong uVar2; + char cVar3; + uint uVar4; + ulonglong *puVar5; + longlong lVar6; + undefined1 local_res20 [8]; + + uVar4 = 0; + if ((*(byte *)(param_1 + 0xa8) & 8) == 0) { + return 1; + } + if ((*(byte *)(param_1 + 0xa8) & 0x10) != 0) { + uVar4 = *(int *)(param_1 + 0x4c) - 1; + lVar6 = (longlong)(int)uVar4; + if (-1 < (int)uVar4) { + do { + plVar1 = *(longlong **)(*(longlong *)(param_1 + 0x40) + lVar6 * 8); + if ((*(byte *)(plVar1 + 0x15) & 2) != 0) { + puVar5 = (ulonglong *)FUN_18051e060(local_res20,plVar1,CONCAT44(param_3,param_2)); + uVar2 = *puVar5; + if ((((uint)uVar2 < *(uint *)(plVar1 + 5)) && + ((uint)(uVar2 >> 0x20) < *(uint *)((longlong)plVar1 + 0x2c))) && + (cVar3 = (**(code **)(*plVar1 + 0x98))(plVar1,uVar2 & 0xffffffff,uVar2 >> 0x20), + cVar3 != '\0')) { + uVar4 = 1; + } + else { + uVar4 = 0; + } + if ((char)uVar4 != '\0') { + return 1; + } + } + lVar6 = lVar6 + -1; + } while (-1 < lVar6); + } + } + return uVar4 & 0xffffff00; +} + + + --- [28] 0x18134bcf0 size=66 --- + +void .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(longlong param_1) + +{ + undefined8 *puVar1; + + if (((*(byte *)(param_1 + 0xa8) & 0x40) == 0) && + (*(longlong **)(param_1 + 0x18) != (longlong *)0x0)) { + /* WARNING: Could not recover jumptable at 0x00018134bd0d. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (**(code **)(**(longlong **)(param_1 + 0x18) + 0xa8))(); + return; + } + puVar1 = (undefined8 *)FUN_1811316e0(8); + *puVar1 = juce::KeyboardFocusTraverser::vftable; + return; +} + + + --- [30] 0x18134bc50 size=126 --- + +void .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(longlong param_1) + +{ + longlong *plVar1; + undefined8 local_18; + undefined4 uStack_10; + undefined4 uStack_c; + + if ((*(byte *)(param_1 + 0xa8) & 1) == 0) { + uStack_10 = *(undefined4 *)(param_1 + 0x28); + uStack_c = *(undefined4 *)(param_1 + 0x2c); + local_18 = 0; + FUN_181342870(0,&local_18,1); + } + else { + plVar1 = (longlong *)FUN_1812d2bd0(); + if (plVar1 != (longlong *)0x0) { + /* WARNING: Could not recover jumptable at 0x00018134bc94. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (**(code **)(*plVar1 + 0xf0)) + (plVar1,(float)(int)(0xff - (uint)*(byte *)(param_1 + 0xac)) / DAT_1824c4548); + return; + } + } + return; +} + + + --- [40] 0x18160c410 size=1445 --- + +/* WARNING: Instruction at (ram,0x00018160ca3a) overlaps instruction at (ram,0x00018160ca38) + */ +/* WARNING: Possible PIC construction at 0x00018160cb22: Changing call to branch */ +/* WARNING: Removing unreachable block (ram,0x00018160cb27) */ +/* WARNING: Removing unreachable block (ram,0x00018160ca34) */ +/* WARNING: Removing unreachable block (ram,0x00018160c8cc) */ +/* WARNING: Removing unreachable block (ram,0x00018160ca14) */ +/* WARNING: Removing unreachable block (ram,0x00018160c9c7) */ + +undefined8 .?AV?$FilterGraph@M$05$0CAA@@@::vtbl___AV__FilterGraph_M_05_0CAA___(longlong param_1) + +{ + longlong *plVar1; + longlong lVar2; + undefined4 uVar3; + ulonglong uVar4; + undefined8 uVar5; + uint uVar6; + ulonglong uVar7; + code **ppcVar8; + longlong *plVar9; + int iVar10; + longlong lVar11; + longlong *plVar12; + undefined8 *puVar13; + undefined8 *puVar14; + undefined8 *puVar15; + undefined1 *puVar16; + undefined4 *puVar17; + undefined4 *puVar18; + longlong lVar19; + undefined4 *puVar20; + longlong *plVar21; + undefined *puVar22; + longlong lVar23; + undefined4 *puVar24; + undefined **ppuVar25; + uint uVar26; + int unaff_retaddr; + undefined8 auStack_1a8 [2]; + undefined1 auStack_198 [24]; + uint auStack_180 [6]; + undefined8 local_168; + undefined **local_160; + uint local_158; + longlong alStack_148 [2]; + undefined8 local_138; + uint local_130; + uint local_128; + undefined4 local_124; + code *local_120; + undefined **local_118; + longlong local_110; + undefined4 local_108; + undefined4 uStack_104; + undefined4 uStack_100; + undefined4 uStack_fc; + undefined4 local_c8; + undefined4 uStack_c4; + undefined4 uStack_c0; + undefined4 uStack_bc; + undefined4 uStack_b8; + undefined4 uStack_b4; + undefined4 uStack_b0; + undefined4 uStack_ac; + undefined4 uStack_a8; + undefined4 uStack_a4; + undefined4 uStack_a0; + undefined4 uStack_9c; + undefined4 local_68 [14]; + ulonglong local_30; + + puVar15 = (undefined8 *)auStack_198; + local_30 = DAT_182615970 ^ (ulonglong)auStack_198; + uVar6 = (uint)&stack0x00000000 & 0x23f; + lVar23 = 0x1210; + local_124 = 0x8e0; + iVar10 = (uVar6 + 2) * (uVar6 + 1) * uVar6; + uVar6 = ((iVar10 >> 1) - (iVar10 >> 3)) + iVar10 * 0x55555555 >> 0x1e; + uVar4 = (ulonglong)uVar6; + local_128 = -uVar6 ^ 0x740; + local_110 = param_1; + FUN_18134c250(param_1,&local_108); + alStack_148[1] = 0x6f01000; + local_138 = 0x1bab6a8; + local_168 = 0x10; + local_160 = &PTR__guard_check_icall_181bab6a8; + local_118 = (undefined **)&DAT_181bab6b8; + plVar12 = (longlong *)&DAT_186f01000; + auStack_180[2] = 0; + local_c8 = local_108; + uStack_c4 = uStack_104; + uStack_c0 = uStack_100; + uStack_bc = uStack_fc; + FUN_18134c170(*(undefined8 *)(param_1 + 200),&local_c8); + do { + uVar7 = 0xee14; + func_0x00018160aa28(); + if ((uVar7 & 0x43) != 0) goto LAB_18160c66b; + uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001; + if ((int)uVar6 < 0) { + uVar6 = (uVar6 - 1 | 0xfffffffe) + 1; + } + uVar7 = uVar4; + } while (uVar6 != 0); + do { + local_130 = 0x4fa5f61e; +LAB_18160c66b: + uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001; + if ((int)uVar6 < 0) { + uVar6 = (uVar6 - 1 | 0xfffffffe) + 1; + } + } while (uVar6 != 0); + alStack_148[1] = 0xf1e46594c6bad6be; + uVar26 = ((~local_130 ^ 0x61689430) >> 0x13 | (~local_130 ^ 0x61689430) << 0xd) ^ 0xe6c076f9; + local_138 = CONCAT44(local_138._4_4_,0xc6bad6be); + uVar6 = uVar26 >> 7; + local_168 = CONCAT44(local_168._4_4_, + ~((uVar6 << 0x1e | ((uVar26 << 0x19 | uVar6) ^ 0x13f5de1c) >> 2) + 0x84cdc7cb + )); + do { + uVar5 = rdtsc(); + uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001; + if ((int)uVar6 < 0) { + uVar6 = (uVar6 - 1 | 0xfffffffe) + 1; + } + } while (uVar6 != 0); + uVar6 = ((uint)uVar5 ^ (uint)((ulonglong)uVar5 >> 0x20)) * -0x166a12ab; + local_158 = (uVar6 >> 0x18 ^ uVar6) * -0x3d4d13ad; + if (local_158 < 0x5d1745ff) { + local_120 = (code *)0x0; + do { + ppcVar8 = &local_120; + FUN_18160cb18(ppcVar8,&local_120); + *ppcVar8 = FUN_1813bba80; + uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001; + if ((int)uVar6 < 0) { + uVar6 = (uVar6 - 1 | 0xfffffffe) + 1; + } + } while (uVar6 != 0); + uVar4 = (*local_120)(0,0x48eb); + if (1 < uVar4) { + FUN_18113eab0(); + } + } + ppuVar25 = local_160; + puVar24 = (undefined4 *)((longlong)local_118 - (longlong)local_160); + puVar17 = (undefined4 *)0x0; + puVar16 = auStack_198; + if (local_118 == local_160) { +code_r0x00018160ca00: + do { + uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001; + if ((int)uVar6 < 0) { + uVar6 = (uVar6 - 1 | 0xfffffffe) + 1; + } + } while (uVar6 != 0); + uVar5 = *(undefined8 *)(param_1 + 0xc0); + uStack_b8 = local_108; + uStack_b4 = uStack_104; + uStack_b0 = uStack_100; + uStack_ac = uStack_fc; + *(undefined **)(puVar16 + -8) = &UNK_18160ca7f; + FUN_18134c170(uVar5,&uStack_b8,uVar7); + puVar17 = &uStack_a8; + uStack_a8 = local_108; + uStack_a4 = uStack_104; + uStack_a0 = uStack_100; + uStack_9c = uStack_fc; + uVar5 = *(undefined8 *)(local_110 + 0xd0); + *(undefined **)(puVar16 + -8) = &UNK_18160ca9f; + FUN_18134c170(uVar5,puVar17); + do { + *(undefined **)(puVar16 + -8) = &UNK_18160caaa; + func_0x00018160d859(0xee14); + puVar22 = (undefined *)((longlong)ppuVar25 + lVar23); + ppuVar25 = (undefined **)((lVar23 - (longlong)puVar22 ^ 0xffffffffffffffffU) + 1); + lVar23 = (longlong)puVar22 - (longlong)ppuVar25; + uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001; + if ((int)uVar6 < 0) { + uVar6 = (uVar6 - 1 | 0xfffffffe) + 1; + } + } while (uVar6 != 0); + *(undefined4 *)(puVar16 + 0x48) = *(undefined4 *)(puVar16 + 0x20); + *(undefined **)(puVar16 + -8) = &UNK_18160cb0c; + uVar3 = func_0x00018160b4ce(); + *(longlong *)(puVar16 + -8) = lVar23; + *(longlong *)(puVar16 + -0x10) = param_1; + *(undefined **)(puVar16 + -0x18) = &UNK_18160cb27; + lVar23 = *(longlong *)(puVar16 + -0x18); + *(longlong *)(puVar16 + -0x18) = lVar23 + 0x166; + *(longlong *)(puVar16 + -0x20) = lVar23 + 0x3f85dd; + *(longlong *)(puVar16 + -0x28) = lVar23 + -0x1667b; + *(longlong *)(puVar16 + -0x30) = lVar23 + 0x3fe56b; + *(longlong *)(puVar16 + -0x38) = lVar23 + 0x3f85fa; + *(longlong *)(puVar16 + -0x40) = lVar23 + -0x177e0; + *(longlong *)(puVar16 + -0x48) = lVar23 + -0x454f5; + *(longlong *)(puVar16 + -0x50) = lVar23 + -0x7c9eb; + *(longlong *)(puVar16 + -0x58) = lVar23 + 0x3fe56b; + /* WARNING: Could not recover jumptable at 0x00018160cc6b. Too many branches */ + /* WARNING: Treating indirect jump as call */ + uVar5 = (*(code *)(lVar23 + 0x3f85fa))(uVar3,puVar17); + return uVar5; + } +LAB_18160c7f0: + puVar18 = (undefined4 *)((longlong)puVar17 + (longlong)ppuVar25); + if ((plVar12 != (longlong *)0x0) && (lVar11 = *plVar12, -1 < lVar11)) { + *(undefined8 *)((longlong)puVar15 + 0x58) = 0x2621fc0; + lVar19 = (longlong)&DAT_182621fc0 + -*(longlong *)((longlong)puVar15 + 0x58); + do { + if (puVar18 < (undefined4 *)(-*(longlong *)((longlong)puVar15 + 0x58) + 0x182621fc8 + lVar11)) + { + if (-1 < lVar11) { + plVar9 = (longlong *)(lVar19 + lVar11); + plVar1 = (longlong *)(puVar18 + 1); + if (plVar9 < plVar1) { + local_68[0] = *puVar18; + lVar23 = lVar19 - (longlong)puVar18; + plVar21 = plVar12; + goto LAB_18160c870; + } + } + break; + } + lVar11 = plVar12[1]; + plVar12 = plVar12 + 1; + } while (-1 < lVar11); + } + goto LAB_18160c8a0; + while (plVar9 = (longlong *)(lVar19 + lVar11), plVar9 < plVar1) { +LAB_18160c870: + lVar2 = lVar23 + lVar11; + lVar11 = plVar21[1]; + plVar21 = plVar21 + 1; + *(longlong *)((longlong)local_68 + lVar2) = *plVar9 - lVar19; + puVar18 = local_68; + if (lVar11 < 0) break; + } +LAB_18160c8a0: + do { + puVar20 = (undefined4 *)((longlong)puVar15 + 0x20); + uVar4 = 0xee14; + *(undefined4 **)((longlong)puVar15 + -8) = puVar17; + puVar15 = (undefined8 *)((longlong)puVar15 + -8); + puVar17 = puVar18; + while ((uVar4 & 0xc300) != 0) { + while (puVar13 = puVar15, (uVar4 & 0xc300) != 0) { + while( true ) { + puVar13[-1] = 0x18160c901; + uVar3 = FUN_18160cb59(); + *puVar20 = uVar3; + puVar17 = (undefined4 *)*puVar13; + puVar15 = puVar13 + 1; + puVar14 = puVar13 + 1; + if ((uVar4 & 0xc3) != 0) break; + puVar13 = puVar13 + 1; + puVar15 = puVar14; + if ((uVar4 & 0xc3) == 0) goto LAB_18160c93e; + } + } + } +LAB_18160c93e: + uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001; + if ((int)uVar6 < 0) { + uVar6 = (uVar6 - 1 | 0xfffffffe) + 1; + } + } while (uVar6 != 0); + uVar26 = (uint)puVar17 & 0x4aff; + uVar7 = (ulonglong)uVar26; + uVar6 = *(int *)((longlong)puVar15 + 0x20) * 0x401 ^ + (uint)(*(int *)((longlong)puVar15 + 0x20) * 0x401) >> 6; + *(uint *)((longlong)puVar15 + 0x20) = uVar6; + uVar6 = uVar6 & 0x17f; + iVar10 = (uVar6 + 2) * (uVar6 + 1) * uVar6; + puVar17 = (undefined4 *) + ((longlong)puVar17 + + (0xa4 - ((longlong) + ((longlong)(((iVar10 >> 1) - (iVar10 >> 3)) + iVar10 * 0x55555555) ^ + 0x2800000000U) >> 0x1e ^ (longlong)(int)((uVar26 + 1) * uVar26 & 0x80000001)))) + ; + param_1 = local_110; + puVar16 = (undefined1 *)puVar15; + if (puVar24 == puVar17) goto code_r0x00018160ca00; + goto LAB_18160c7f0; +} + + + --- [47] 0x18134b940 size=196 --- + +void .?AV?$FilterGraph@M$05$0CAA@@@::vtbl___AV__FilterGraph_M_05_0CAA___ + (undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4) + +{ + undefined8 *puVar1; + longlong *plVar2; + undefined8 uVar3; + + uVar3 = 0xfffffffffffffffe; + if (DAT_182673c20 == (undefined8 *)0x0) { + puVar1 = (undefined8 *)FUN_1811316e0(0x28); + FUN_1812a59f0(puVar1); + FUN_1812a7230(puVar1 + 2); + *puVar1 = juce::ModalComponentManager::vftable; + puVar1[2] = juce::ModalComponentManager::vftable; + puVar1[3] = 0; + puVar1[4] = 0; + DAT_182673c20 = puVar1; + } + FUN_18133b010(DAT_182673c20,1,param_3,param_4,uVar3); + plVar2 = (longlong *)FUN_18134adf0(param_1); + if (*(code **)(*plVar2 + 0x78) == FUN_1812c6070) { + /* WARNING: Could not recover jumptable at 0x00018134b9e5. Too many branches */ + /* WARNING: Treating indirect jump as call */ + MessageBeep(0); + return; + } + (**(code **)(*plVar2 + 0x78))(plVar2); + return; +} + + + --- [49] 0x18134b870 size=87 --- + +void .?AV?$FilterGraphGrid@M@@::vtbl___AV__FilterGraphGrid_M__ + (undefined8 param_1,undefined4 param_2,undefined8 param_3) + +{ + undefined8 uVar1; + + uVar1 = FUN_1811316e0(0x158); + FUN_18050dd00(uVar1,param_1,param_2,param_3,0); + return; +} + + + --- [53] 0x18058e380 size=124 --- + +longlong FUN_18058e380(longlong param_1,uint *param_2) + +{ + uint uVar1; + longlong lVar2; + longlong lVar3; + undefined8 uVar4; + + uVar1 = *param_2; + lVar2 = *(longlong *)(param_1 + 8); + lVar3 = (longlong)(int)uVar1 * 0x800; + if (uVar1 < *(uint *)(lVar2 + 0x84)) { + uVar4 = *(undefined8 *)(*(longlong *)(lVar2 + 0x78) + (longlong)(int)uVar1 * 8); + } + else { + uVar4 = 0; + } + FUN_180536300(lVar2 + 0x18,*(longlong *)(param_1 + 0x10) + 0x8e0 + lVar3, + *(longlong *)(param_1 + 0x10) + 0xe0,uVar4,0x200); + return *(longlong *)(param_1 + 0x10) + 0x8e0 + lVar3; +} + + + --- [60] 0x18058b220 size=318 --- + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +void FUN_18058b220(longlong param_1,int param_2) + +{ + uint *puVar1; + uint uVar2; + undefined4 uVar3; + longlong lVar4; + int iVar5; + undefined1 auStack_c8 [32]; + undefined4 local_a8; + float local_98; + longlong local_90; + longlong local_88 [5]; + undefined1 local_59 [32]; + undefined1 local_39; + ulonglong local_38 [4]; + + local_88[1] = 0xfffffffffffffffe; + local_38[0] = DAT_182615970 ^ (ulonglong)auStack_c8; + local_98 = *(float *)(*(longlong *)(param_1 + 0x9b28) + 0x188); + iVar5 = (int)local_98; + if (param_2 != iVar5) { + lVar4 = FUN_181233e10(local_59 + 1); + FUN_180495150(&local_90,lVar4,local_59 + -lVar4); + uVar3 = DAT_1824c4680; + local_a8 = DAT_1824c4680; + FUN_181411be0(*(undefined8 *)(param_1 + 0x97b0),local_90,DAT_1824c3ea4,DAT_1824c4680); + puVar1 = (uint *)(local_90 + -0x10); + if ((*puVar1 & 0x30000000) == 0) { + LOCK(); + uVar2 = *puVar1; + *puVar1 = *puVar1 - 1; + UNLOCK(); + if (uVar2 == 0) { + /* WARNING: Subroutine does not return */ + free(puVar1); + } + } + lVar4 = FUN_181233e10(local_38,iVar5); + FUN_180495150(local_88,lVar4,&local_39 + -lVar4); + local_a8 = uVar3; + FUN_181411be0(*(undefined8 *)(param_1 + 0x97b0),local_88[0],DAT_1824c3d8c,uVar3); + puVar1 = (uint *)(local_88[0] + -0x10); + if ((*puVar1 & 0x30000000) == 0) { + LOCK(); + uVar2 = *puVar1; + *puVar1 = *puVar1 - 1; + UNLOCK(); + if (uVar2 == 0) { + /* WARNING: Subroutine does not return */ + free(puVar1); + } + } + } +} + + + --- [61] 0x18058b0c0 size=313 --- + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +void FUN_18058b0c0(longlong param_1,int param_2) + +{ + uint *puVar1; + uint uVar2; + undefined4 uVar3; + longlong lVar4; + int iVar5; + undefined1 auStack_c8 [32]; + undefined4 local_a8; + float local_98; + longlong local_90; + longlong local_88 [5]; + undefined1 local_59 [32]; + undefined1 local_39; + ulonglong local_38 [4]; + + local_88[1] = 0xfffffffffffffffe; + local_38[0] = DAT_182615970 ^ (ulonglong)auStack_c8; + local_98 = *(float *)(*(longlong *)(param_1 + 0x9b28) + 0x188); + iVar5 = (int)local_98; + if (param_2 != iVar5) { + lVar4 = FUN_181233e10(local_59 + 1); + FUN_180495150(&local_90,lVar4,local_59 + -lVar4); + uVar3 = DAT_1824c4680; + local_a8 = DAT_1824c4680; + FUN_181411be0(*(undefined8 *)(param_1 + 0x97b0),local_90,0,DAT_1824c4680); + puVar1 = (uint *)(local_90 + -0x10); + if ((*puVar1 & 0x30000000) == 0) { + LOCK(); + uVar2 = *puVar1; + *puVar1 = *puVar1 - 1; + UNLOCK(); + if (uVar2 == 0) { + /* WARNING: Subroutine does not return */ + free(puVar1); + } + } + lVar4 = FUN_181233e10(local_38,iVar5); + FUN_180495150(local_88,lVar4,&local_39 + -lVar4); + local_a8 = uVar3; + FUN_181411be0(*(undefined8 *)(param_1 + 0x97b0),local_88[0],DAT_1824c3ea4,uVar3); + puVar1 = (uint *)(local_88[0] + -0x10); + if ((*puVar1 & 0x30000000) == 0) { + LOCK(); + uVar2 = *puVar1; + *puVar1 = *puVar1 - 1; + UNLOCK(); + if (uVar2 == 0) { + /* WARNING: Subroutine does not return */ + free(puVar1); + } + } + } +} + + +############ VTABLE FilterGraphGrid 0x1824be0a8 +SLOTLIST: + [0] 0x18058c4b0 size=116 + [1] 0x18134bc00 size=3 + [2] 0x18134bbf0 size=3 + [3] 0x18134bbe0 size=3 + [4] 0x18134bbd0 size=3 + [5] 0x18134bbc0 size=3 + [6] 0x18134bbb0 size=3 + [7] 0x18134bba0 size=3 + [8] 0x18134bb30 size=93 + [9] 0x18134bad0 size=82 + [10] 0x18134c900 size=397 + [11] 0x18134c760 size=397 + [12] 0x18134c750 size=3 + [13] 0x18134c3a0 size=933 + [14] 0x18134c2d0 size=3 + [15] 0x18134c2c0 size=3 + [16] 0x18134c270 size=69 + [17] 0x1805689c0 size=60 + [18] 0x18134bf00 size=3 + [19] 0x18134be30 size=195 + [20] 0x18134bde0 size=3 + [21] 0x18134bcf0 size=66 + [22] 0x18134bce0 size=3 + [23] 0x18134bc50 size=126 + [24] 0x18134bc20 size=34 + [25] 0x18134ade0 size=3 + [26] 0x18134bc10 size=3 + [27] 0x18134bac0 size=3 + [28] 0x18134bab0 size=3 + [29] 0x18134ba90 size=20 + [30] 0x18134ba80 size=3 + [31] 0x18134ba70 size=3 + [32] 0x18134ba60 size=3 + [33] 0x1805895c0 size=2420 + [34] 0x18134ba50 size=3 + [35] 0x18134adc0 size=3 + [36] 0x18134ba40 size=3 + [37] 0x18134ba30 size=3 + [38] 0x18134ba20 size=3 + [39] 0x18134ba10 size=3 + [40] 0x18134b940 size=196 + [41] 0x18134b930 size=3 + [42] 0x18134b870 size=87 + [43] 0x180589f40 size=99 + [44] 0x18251a470 size=0 + [45] 0x18058eaf8 size=12 + [46] 0x180568990 size=48 + [47] 0x18251ad88 size=0 + [48] 0x18058eb1c size=12 + [49] 0x18058b010 size=176 + [50] 0x18251ab48 size=0 + [51] 0x18058eab0 size=12 + [52] 0x18160b000 size=4718 + [53] 0x1804714b0 size=3 + [54] 0x18251a6c8 size=0 + [55] 0x1805893c0 size=52 + [56] 0x18134bc00 size=3 + [57] 0x18134bbf0 size=3 + [58] 0x18134bbe0 size=3 + [59] 0x18134bbd0 size=3 + [60] 0x18134bbc0 size=3 + [61] 0x18134bbb0 size=3 + [62] 0x18134bba0 size=3 + [63] 0x18134bb30 size=93 +CCODE: + --- [0] 0x18058c4b0 size=116 --- + +void .?AV?$FilterGraphGrid@M@@::vtbl___AV__FilterGraphGrid_M__(undefined8 *param_1) + +{ + undefined8 *puVar1; + + *param_1 = FilterGraphGrid::vftable; + param_1[0x16] = FilterGraphGrid::vftable; + FUN_180484cd0(param_1 + 0x25); + puVar1 = (undefined8 *)param_1[0x24]; + if (puVar1 != (undefined8 *)0x0) { + (**(code **)*puVar1)(puVar1,1); + } + FUN_18047cbc0(param_1 + 0x22); + *(undefined4 *)((longlong)param_1 + 0x11c) = 0; + /* WARNING: Subroutine does not return */ + free((void *)param_1[0x22]); +} + + + --- [8] 0x18134bb30 size=93 --- + +void .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__ + (longlong param_1,undefined8 param_2,undefined8 param_3) + +{ + longlong lVar1; + undefined8 uVar2; + undefined1 local_68 [96]; + + if (*(longlong **)(param_1 + 0x18) != (longlong *)0x0) { + lVar1 = **(longlong **)(param_1 + 0x18); + uVar2 = FUN_181339840(param_2,local_68); + (**(code **)(lVar1 + 0x40))(*(undefined8 *)(param_1 + 0x18),uVar2,param_3); + } + return; +} + + + --- [9] 0x18134bad0 size=82 --- + +void .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__ + (longlong param_1,undefined8 param_2,undefined4 param_3) + +{ + undefined8 uVar1; + undefined1 local_78 [112]; + + if (*(longlong *)(param_1 + 0x18) != 0) { + uVar1 = FUN_181339840(param_2,local_78); + (**(code **)(**(longlong **)(param_1 + 0x18) + 0x48)) + (*(longlong **)(param_1 + 0x18),uVar1,param_3); + } + return; +} + + + --- [10] 0x18134c900 size=397 --- + +void .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__ + (longlong param_1,longlong *param_2,undefined8 param_3,undefined8 param_4) + +{ + int *piVar1; + uint uVar2; + code *pcVar3; + longlong *plVar4; + undefined8 *puVar5; + longlong lVar6; + uint *_Memory; + int iVar7; + bool bVar8; + undefined8 *local_res8; + undefined1 local_res10 [16]; + + lVar6 = *param_2; + if (*(longlong *)(param_1 + 8) == lVar6) { + iVar7 = 0; + } + else { + iVar7 = FUN_18048cbc0(*(undefined8 *)(param_1 + 8),lVar6,param_3,param_4,0xfffffffffffffffe); + } + if (iVar7 != 0) { + if ((*(uint *)(lVar6 + -0x10) & 0x30000000) == 0) { + LOCK(); + *(int *)(lVar6 + -0x10) = *(int *)(lVar6 + -0x10) + 1; + UNLOCK(); + } + LOCK(); + lVar6 = *(longlong *)(param_1 + 8); + *(longlong *)(param_1 + 8) = *param_2; + UNLOCK(); + _Memory = (uint *)(lVar6 + -0x10); + if ((*_Memory & 0x30000000) == 0) { + LOCK(); + uVar2 = *_Memory; + *_Memory = *_Memory - 1; + UNLOCK(); + if (uVar2 == 0) { + /* WARNING: Subroutine does not return */ + free(_Memory); + } + } + if (((*(byte *)(param_1 + 0xa8) & 1) != 0) && + (plVar4 = (longlong *)FUN_1812d2bd0(param_1), plVar4 != (longlong *)0x0)) { + if ((undefined **)*plVar4 == juce::HWNDComponentPeer::vftable) { + puVar5 = (undefined8 *)FUN_18049a930(local_res10); + SetWindowTextW((HWND)plVar4[0x11],(LPCWSTR)*puVar5); + } + else { + (*(code *)((undefined **)*plVar4)[3])(plVar4,param_2); + } + } + FUN_1804de690(&local_res8,param_1); + puVar5 = local_res8; + iVar7 = *(int *)(param_1 + 0x8c); + bVar8 = local_res8 == (undefined8 *)0x0; + while( true ) { + if (bVar8) { + lVar6 = 0; + } + else { + lVar6 = puVar5[2]; + } + if ((lVar6 == 0) || (iVar7 < 1)) break; + iVar7 = iVar7 + -1; + if ((*(int *)(param_1 + 0x8c) <= iVar7) && (iVar7 = *(int *)(param_1 + 0x8c) + -1, iVar7 < 0)) + break; + plVar4 = *(longlong **)(*(longlong *)(param_1 + 0x80) + (longlong)iVar7 * 8); + pcVar3 = *(code **)(*plVar4 + 0x30); + if (pcVar3 != .?AVSoothe2Grid@@::vtbl___AVSoothe2Grid__) { + (*pcVar3)(plVar4,param_1); + } + } + if (puVar5 != (undefined8 *)0x0) { + LOCK(); + piVar1 = (int *)(puVar5 + 1); + iVar7 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar7 == 1) { + (**(code **)*local_res8)(local_res8,1); + } + } + } + return; +} + + + --- [11] 0x18134c760 size=397 --- + +void .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__ + (longlong param_1,byte param_2,undefined8 param_3,undefined8 param_4) + +{ + int *piVar1; + int iVar2; + undefined8 *puVar3; + longlong lVar4; + longlong *plVar5; + longlong lVar6; + bool bVar7; + undefined8 *local_res8; + undefined4 local_28; + undefined4 uStack_24; + undefined4 uStack_20; + undefined4 uStack_1c; + + if ((*(byte *)(param_1 + 0xa8) >> 1 & 1) != param_2) { + FUN_1804de690(&local_res8,param_1,param_3,param_4,0xfffffffffffffffe); + *(byte *)(param_1 + 0xa8) = *(byte *)(param_1 + 0xa8) & 0xfd; + *(byte *)(param_1 + 0xa8) = *(byte *)(param_1 + 0xa8) | (param_2 & 1) * '\x02'; + lVar6 = 0; + if (param_2 == 0) { + FUN_181342b10(param_1); + } + else { + uStack_1c = *(undefined4 *)(param_1 + 0x2c); + uStack_20 = *(undefined4 *)(param_1 + 0x28); + local_28 = 0; + uStack_24 = 0; + FUN_181342870(param_1,&local_28,1); + } + FUN_18133f790(); + if (param_2 == 0) { + FUN_1804e5060(param_1); + for (lVar4 = DAT_182673708; lVar4 != param_1; lVar4 = *(longlong *)(lVar4 + 0x18)) { + if (lVar4 == 0) goto LAB_18134c84f; + } + if (*(longlong *)(param_1 + 0x18) == 0) { + FUN_18133eae0(1); + } + else { + FUN_18133ed60(*(longlong *)(param_1 + 0x18),2,1); + } + } +LAB_18134c84f: + puVar3 = local_res8; + bVar7 = local_res8 != (undefined8 *)0x0; + lVar4 = lVar6; + if (bVar7) { + lVar4 = local_res8[2]; + } + if (lVar4 != 0) { + FUN_1813452b0(param_1); + if (bVar7) { + lVar6 = puVar3[2]; + } + if (((lVar6 != 0) && ((*(byte *)(param_1 + 0xa8) & 1) != 0)) && + (plVar5 = (longlong *)FUN_18134c2e0(param_1), plVar5 != (longlong *)0x0)) { + (**(code **)(*plVar5 + 0x10))(plVar5,param_2); + FUN_181343670(param_1); + } + } + if (puVar3 != (undefined8 *)0x0) { + LOCK(); + piVar1 = (int *)(puVar3 + 1); + iVar2 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar2 == 1) { + (**(code **)*local_res8)(local_res8,1); + } + } + } + return; +} + + + --- [13] 0x18134c3a0 size=933 --- + +void .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__ + (longlong *param_1,uint param_2,undefined8 param_3) + +{ + int *piVar1; + undefined8 *puVar2; + int iVar3; + ulonglong uVar4; + longlong lVar5; + undefined8 *puVar6; + char cVar7; + int iVar8; + longlong *plVar9; + ulonglong *puVar10; + ulonglong uVar11; + undefined4 uVar12; + longlong *plVar13; + undefined8 *puVar14; + ulonglong uVar15; + undefined4 uVar16; + undefined4 uVar17; + undefined4 uVar18; + undefined4 uVar19; + char local_res20; + undefined8 *local_88; + longlong local_80; + undefined8 local_78; + undefined1 local_70 [8]; + longlong *local_68; + undefined8 local_60; + undefined8 local_58; + undefined8 uStack_50; + + local_78 = 0xfffffffffffffffe; + if ((*(byte *)(param_1 + 0x15) >> 2 & 1) == 0) { + param_2 = param_2 | 0x40000000; + } + else { + param_2 = param_2 & 0xbfffffff; + } + plVar9 = (longlong *)FUN_1812d2bd0(); + if ((plVar9 != (longlong *)0x0) && (param_2 == *(uint *)(plVar9 + 2))) { + return; + } + FUN_1804de690(&local_88,param_1); + uVar15 = 0; + uVar4 = uVar15; + puVar6 = local_88; + for (plVar13 = param_1; local_88 = puVar6, plVar13 != (longlong *)0x0; + plVar13 = (longlong *)plVar13[3]) { + puVar10 = (ulonglong *)FUN_18051e290(local_70,plVar13,uVar4); + uVar4 = *puVar10; + puVar6 = local_88; + } + cVar7 = '\0'; + local_res20 = '\0'; + local_80 = 0; + uVar16 = 0; + uVar17 = 0; + uVar18 = 0; + uVar19 = 0; + local_58 = 0; + uStack_50 = 0; + iVar8 = -1; + if (plVar9 != (longlong *)0x0) { + local_68 = plVar9; + cVar7 = (**(code **)(*plVar9 + 0x78))(plVar9); + local_res20 = (**(code **)(*plVar9 + 0x68))(plVar9); + local_80 = plVar9[5]; + uVar16 = *(undefined4 *)((longlong)plVar9 + 0x14); + uVar17 = (undefined4)plVar9[3]; + local_58 = *(undefined8 *)((longlong)plVar9 + 0x14); + uVar18 = *(undefined4 *)((longlong)plVar9 + 0x1c); + uVar19 = (undefined4)plVar9[4]; + uStack_50 = *(undefined8 *)((longlong)plVar9 + 0x1c); + iVar8 = (**(code **)(*plVar9 + 0x100))(plVar9); + *(byte *)(param_1 + 0x15) = *(byte *)(param_1 + 0x15) & 0xfe; + if (DAT_182673700 == 0) { + local_60 = FUN_1811316e0(0x130); + DAT_182673700 = FUN_18133c6c0(local_60); + } + FUN_180488600(DAT_182673700 + 0x58,param_1); + FUN_181343670(param_1); + uVar11 = uVar15; + if (puVar6 != (undefined8 *)0x0) { + uVar11 = puVar6[2]; + } + if (uVar11 == 0) { + (**(code **)*plVar9)(plVar9,1); + goto LAB_18134c6f7; + } + FUN_18134bfe0(param_1,uVar4 & 0xffffffff,uVar4 >> 0x20,(int)param_1[5], + *(undefined4 *)((longlong)param_1 + 0x2c)); + (**(code **)*plVar9)(plVar9,1); + } + lVar5 = param_1[3]; + if (lVar5 != 0) { + plVar9 = *(longlong **)(lVar5 + 0x40); + for (plVar13 = plVar9; plVar13 != plVar9 + *(int *)(lVar5 + 0x4c); plVar13 = plVar13 + 1) { + if (param_1 == (longlong *)*plVar13) { + uVar12 = (undefined4)((longlong)plVar13 - (longlong)plVar9 >> 3); + goto LAB_18134c588; + } + } + uVar12 = 0xffffffff; +LAB_18134c588: + FUN_181343a90(lVar5,uVar12,1); + } + if (puVar6 != (undefined8 *)0x0) { + uVar15 = puVar6[2]; + } + if (uVar15 != 0) { + *(byte *)(param_1 + 0x15) = *(byte *)(param_1 + 0x15) | 1; + plVar9 = (longlong *)(**(code **)(*param_1 + 0x150))(param_1,param_2,param_3); + if (DAT_182673700 == 0) { + local_60 = FUN_1811316e0(0x130); + DAT_182673700 = FUN_18133c6c0(local_60); + } + lVar5 = DAT_182673700; + plVar13 = (longlong *)(DAT_182673700 + 0x58); + puVar14 = (undefined8 *)*plVar13; + iVar3 = *(int *)(DAT_182673700 + 100); + puVar2 = puVar14 + iVar3; + for (; puVar14 != puVar2; puVar14 = puVar14 + 1) { + if (param_1 == (longlong *)*puVar14) goto LAB_18134c651; + } + if (*(int *)(DAT_182673700 + 0x60) < iVar3 + 1) { + FUN_18047cb30(plVar13,iVar3 + 9 + (iVar3 + 1) / 2 & 0xfffffff8); + } + iVar3 = *(int *)(lVar5 + 100); + *(int *)(lVar5 + 100) = iVar3 + 1; + *(longlong **)(*plVar13 + (longlong)iVar3 * 8) = param_1; +LAB_18134c651: + param_1[4] = uVar4; + FUN_18134b470(plVar9); + if (-1 < iVar8) { + (**(code **)(*plVar9 + 0x108))(plVar9,iVar8); + } + (**(code **)(*plVar9 + 0x10))(plVar9,*(byte *)(param_1 + 0x15) >> 1 & 1); + plVar9 = (longlong *)FUN_1812d2bd0(param_1); + if (plVar9 != (longlong *)0x0) { + if (cVar7 != '\0') { + (**(code **)(*plVar9 + 0x70))(plVar9,1); + *(undefined4 *)((longlong)plVar9 + 0x14) = uVar16; + *(undefined4 *)(plVar9 + 3) = uVar17; + *(undefined4 *)((longlong)plVar9 + 0x1c) = uVar18; + *(undefined4 *)(plVar9 + 4) = uVar19; + } + if (local_res20 != '\0') { + (**(code **)(*plVar9 + 0x60))(plVar9,1); + } + if ((*(byte *)((longlong)param_1 + 0xa9) & 1) != 0) { + (**(code **)(*plVar9 + 0xa8))(plVar9,1); + } + plVar9[5] = local_80; + FUN_18134bdf0(param_1); + FUN_181343670(param_1); + } + } +LAB_18134c6f7: + if (puVar6 != (undefined8 *)0x0) { + LOCK(); + piVar1 = (int *)(puVar6 + 1); + iVar8 = *piVar1; + *piVar1 = *piVar1 + -1; + UNLOCK(); + if (iVar8 == 1) { + (**(code **)*local_88)(local_88,1); + } + } + return; +} + + + --- [16] 0x18134c270 size=69 --- + +undefined4 .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(void) + +{ + undefined8 uVar1; + + if (DAT_182673700 == 0) { + uVar1 = FUN_1811316e0(0x130); + DAT_182673700 = FUN_18133c6c0(uVar1); + } + return *(undefined4 *)(DAT_182673700 + 0xc0); +} + + + --- [17] 0x1805689c0 size=60 --- + +void .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(longlong *param_1) + +{ + if ((char)param_1[0x18] == '\0') { + FUN_180569ff0(); + if (param_1[0x17] != 0) { + (**(code **)(*param_1 + 0x158))(param_1); + *(undefined1 *)(param_1 + 0x18) = 1; + } + } + return; +} + + + --- [19] 0x18134be30 size=195 --- + +uint .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__ + (longlong param_1,undefined4 param_2,undefined4 param_3) + +{ + longlong *plVar1; + ulonglong uVar2; + char cVar3; + uint uVar4; + ulonglong *puVar5; + longlong lVar6; + undefined1 local_res20 [8]; + + uVar4 = 0; + if ((*(byte *)(param_1 + 0xa8) & 8) == 0) { + return 1; + } + if ((*(byte *)(param_1 + 0xa8) & 0x10) != 0) { + uVar4 = *(int *)(param_1 + 0x4c) - 1; + lVar6 = (longlong)(int)uVar4; + if (-1 < (int)uVar4) { + do { + plVar1 = *(longlong **)(*(longlong *)(param_1 + 0x40) + lVar6 * 8); + if ((*(byte *)(plVar1 + 0x15) & 2) != 0) { + puVar5 = (ulonglong *)FUN_18051e060(local_res20,plVar1,CONCAT44(param_3,param_2)); + uVar2 = *puVar5; + if ((((uint)uVar2 < *(uint *)(plVar1 + 5)) && + ((uint)(uVar2 >> 0x20) < *(uint *)((longlong)plVar1 + 0x2c))) && + (cVar3 = (**(code **)(*plVar1 + 0x98))(plVar1,uVar2 & 0xffffffff,uVar2 >> 0x20), + cVar3 != '\0')) { + uVar4 = 1; + } + else { + uVar4 = 0; + } + if ((char)uVar4 != '\0') { + return 1; + } + } + lVar6 = lVar6 + -1; + } while (-1 < lVar6); + } + } + return uVar4 & 0xffffff00; +} + + + --- [21] 0x18134bcf0 size=66 --- + +void .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(longlong param_1) + +{ + undefined8 *puVar1; + + if (((*(byte *)(param_1 + 0xa8) & 0x40) == 0) && + (*(longlong **)(param_1 + 0x18) != (longlong *)0x0)) { + /* WARNING: Could not recover jumptable at 0x00018134bd0d. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (**(code **)(**(longlong **)(param_1 + 0x18) + 0xa8))(); + return; + } + puVar1 = (undefined8 *)FUN_1811316e0(8); + *puVar1 = juce::KeyboardFocusTraverser::vftable; + return; +} + + + --- [23] 0x18134bc50 size=126 --- + +void .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(longlong param_1) + +{ + longlong *plVar1; + undefined8 local_18; + undefined4 uStack_10; + undefined4 uStack_c; + + if ((*(byte *)(param_1 + 0xa8) & 1) == 0) { + uStack_10 = *(undefined4 *)(param_1 + 0x28); + uStack_c = *(undefined4 *)(param_1 + 0x2c); + local_18 = 0; + FUN_181342870(0,&local_18,1); + } + else { + plVar1 = (longlong *)FUN_1812d2bd0(); + if (plVar1 != (longlong *)0x0) { + /* WARNING: Could not recover jumptable at 0x00018134bc94. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (**(code **)(*plVar1 + 0xf0)) + (plVar1,(float)(int)(0xff - (uint)*(byte *)(param_1 + 0xac)) / DAT_1824c4548); + return; + } + } + return; +} + + + --- [33] 0x1805895c0 size=2420 --- + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void .?AV?$FilterGraphGrid@M@@::vtbl___AV__FilterGraphGrid_M__(longlong param_1) + +{ + double dVar1; + double dVar2; + double dVar3; + double dVar4; + double dVar5; + undefined8 *puVar6; + undefined8 uVar7; + ulonglong uVar8; + uint *_Memory; + ulonglong uVar9; + longlong *plVar10; + longlong *plVar11; + longlong lVar12; + longlong lVar13; + longlong *plVar14; + char cVar15; + uint uVar16; + ulonglong uVar17; + ulonglong uVar18; + ulonglong uVar19; + undefined8 uVar20; + uint uVar21; + bool bVar22; + double dVar23; + float fVar24; + float fVar25; + float fVar26; + float fVar27; + float fVar28; + float fVar29; + char local_res8; + undefined7 uStackX_9; + float local_res10; + double local_res18; + double local_res20; + undefined4 local_180; + undefined4 local_160; + undefined1 local_158 [4]; + undefined4 local_154; + double local_150; + double local_148; + double local_140; + double local_138; + undefined1 local_130 [4]; + undefined4 local_12c; + undefined1 local_128 [8]; + undefined1 local_120 [8]; + undefined1 local_118 [8]; + undefined1 local_110 [8]; + undefined4 local_108; + undefined4 uStack_104; + undefined4 uStack_100; + undefined4 uStack_fc; + undefined4 local_f8; + undefined4 uStack_f4; + undefined4 uStack_f0; + undefined4 uStack_ec; + + if (*(longlong *)(param_1 + 0xb8) != 0) { + plVar14 = (longlong *)(param_1 + 0xb0); + if (*(code **)(*plVar14 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) { + if (*(longlong *)(param_1 + 0xb8) == 0) { + FUN_180569ff0(param_1); + } + uVar7 = *(undefined8 *)(param_1 + 0xb8); + } + else { + uVar7 = (**(code **)(*plVar14 + 8))(plVar14); + } + puVar6 = (undefined8 *)FUN_18140e230(local_128,*(undefined4 *)(param_1 + 0x211)); + FUN_1813f0dc0(uVar7,DAT_18267423c,*puVar6,param_1); + if (*(code **)(*plVar14 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) { + if (*(longlong *)(param_1 + 0xb8) == 0) { + FUN_180569ff0(param_1); + } + uVar7 = *(undefined8 *)(param_1 + 0xb8); + } + else { + uVar7 = (**(code **)(*plVar14 + 8))(plVar14); + } + puVar6 = (undefined8 *)FUN_18140e230(local_120,*(undefined4 *)(param_1 + 0x215)); + FUN_1813f0dc0(uVar7,DAT_182674188,*puVar6,param_1); + } + uVar18 = 0; + fVar29 = (float)*(int *)(param_1 + 0x2c); + fVar26 = (float)*(int *)(param_1 + 0x28); + fVar28 = fVar26 * DAT_1824c3c98; + fVar27 = fVar29 * DAT_1824c3c90; + *(float *)(param_1 + 0x200) = fVar29 * DAT_1824c3c70; + local_res10 = fVar26; + FUN_18134bfe0(*(undefined8 *)(param_1 + 0x120),0,0,*(undefined4 *)(param_1 + 0x28), + *(undefined4 *)(param_1 + 0x2c)); + dVar5 = DAT_1824c4520; + fVar24 = DAT_1824c3d8c; + if (*(char *)(param_1 + 0x210) != '\0') { + if (0 < *(int *)(param_1 + 0xfc)) { + bVar22 = *(int *)(param_1 + 0xfc) != 0; + uVar9 = uVar18; + uVar17 = uVar18; + uVar19 = uVar18; + do { + uVar8 = uVar18; + if (bVar22) { + uVar8 = *(ulonglong *)(uVar17 + *(longlong *)(param_1 + 0xf0)); + } + puVar6 = (undefined8 *)FUN_1812ea010(uVar8,&local_res8); + cVar15 = *(char *)*puVar6; + _Memory = (uint *)(CONCAT71(uStackX_9,local_res8) + -0x10); + if ((*_Memory & 0x30000000) == 0) { + LOCK(); + uVar16 = *_Memory; + *_Memory = *_Memory - 1; + UNLOCK(); + if (uVar16 == 0) { + /* WARNING: Subroutine does not return */ + free(_Memory); + } + } + uVar16 = (uint)uVar9; + if (cVar15 == '\0') { + if (uVar16 < *(uint *)(param_1 + 0xfc)) { + plVar14 = *(longlong **)(uVar17 + *(longlong *)(param_1 + 0xf0)); + (**(code **)(*plVar14 + 0x58))(plVar14,0); + } + else { + (**(code **)(_DAT_00000000 + 0x58))(0,0); + } + } + else { + if (uVar16 < *(uint *)(param_1 + 0xdc)) { + fVar25 = *(float *)(uVar19 + *(longlong *)(param_1 + 0xd0)); + } + else { + fVar25 = 0.0; + } + local_res20 = dVar5; + local_res18 = (double)(fVar25 * fVar26) + dVar5; + local_180 = SUB84((double)fVar27 + dVar5,0); + uVar9 = uVar18; + if (uVar16 < *(uint *)(param_1 + 0xfc)) { + uVar9 = *(ulonglong *)(uVar17 + *(longlong *)(param_1 + 0xf0)); + } + FUN_18134bfe0(uVar9,local_res18._0_4_ - (int)(fVar28 * fVar24), + (ulonglong)dVar5 & 0xffffffff, + (ulonglong)((double)fVar28 + dVar5) & 0xffffffff,local_180); + } + uVar16 = uVar16 + 1; + uVar9 = (ulonglong)uVar16; + uVar19 = uVar19 + 4; + uVar17 = uVar17 + 8; + bVar22 = uVar16 < *(uint *)(param_1 + 0xfc); + } while ((int)uVar16 < (int)*(uint *)(param_1 + 0xfc)); + } + dVar4 = DAT_1824c41c8; + cVar15 = DAT_1824c3ea4 < *(float *)(param_1 + 0x20c); + if (0 < *(int *)(param_1 + 0xec)) { + bVar22 = *(int *)(param_1 + 0xec) != 0; + local_res20 = 0.0; + uVar9 = uVar18; + uVar16 = DAT_1824c4f30; + local_res8 = cVar15; + do { + plVar14 = (longlong *)0x0; + if (bVar22) { + fVar24 = *(float *)((longlong)local_res20 + *(longlong *)(param_1 + 0xe0)); + } + else { + fVar24 = 0.0; + } + fVar24 = fVar24 * fVar29; + uVar21 = (uint)uVar9; + if ((fVar24 <= fVar27) || (fVar29 - fVar27 <= fVar24)) { + plVar10 = plVar14; + if (uVar21 < *(uint *)(param_1 + 0x10c)) { + plVar10 = *(longlong **)(uVar18 + *(longlong *)(param_1 + 0x100)); + } + (**(code **)(*plVar10 + 0x58))(plVar10,0); + if (uVar21 < *(uint *)(param_1 + 0x11c)) { + plVar14 = *(longlong **)(uVar18 + *(longlong *)(param_1 + 0x110)); + } + (**(code **)(*plVar14 + 0x58))(); + } + else { + plVar10 = plVar14; + if (uVar21 < *(uint *)(param_1 + 0x10c)) { + plVar10 = *(longlong **)(uVar18 + *(longlong *)(param_1 + 0x100)); + } + (**(code **)(*plVar10 + 0x58))(fVar29 - fVar27,1); + plVar10 = plVar14; + if (uVar21 < *(uint *)(param_1 + 0x11c)) { + plVar10 = *(longlong **)(uVar18 + *(longlong *)(param_1 + 0x110)); + } + (**(code **)(*plVar10 + 0x58))(plVar10,cVar15); + plVar10 = (longlong *)(param_1 + 0xb0); + fVar25 = fVar28 * DAT_1824c3df0; + fVar26 = fVar26 - fVar28 * DAT_1824c3c94; + fVar24 = (float)((uint)fVar27 ^ uVar16) + fVar24; + dVar3 = (double)fVar27 + dVar5; + dVar2 = (double)fVar25 + dVar5; + local_160 = SUB84(dVar3,0); + if (*(code **)(*plVar10 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) { + if (*(longlong *)(param_1 + 0xb8) == 0) { + FUN_180569ff0(param_1); + } + uVar7 = *(undefined8 *)(param_1 + 0xb8); + } + else { + uVar7 = (**(code **)(*plVar10 + 8))(plVar10); + } + FUN_1813f22a0(uVar7,local_158,DAT_18267423c,param_1); + if (*(code **)(*plVar10 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) { + if (*(longlong *)(param_1 + 0xb8) == 0) { + FUN_180569ff0(param_1); + } + local_res18 = *(double *)(param_1 + 0xb8); + } + else { + local_res18 = (double)(**(code **)(*plVar10 + 8))(plVar10); + } + if (uVar21 < *(uint *)(param_1 + 0x10c)) { + plVar14 = *(longlong **)(uVar18 + *(longlong *)(param_1 + 0x100)); + } + puVar6 = (undefined8 *)FUN_18140e230(local_118,local_154); + FUN_1813f0dc0(local_res18,DAT_182674268,*puVar6,plVar14); + plVar14 = (longlong *)0x0; + plVar11 = plVar14; + if (uVar21 < *(uint *)(param_1 + 0x10c)) { + plVar11 = *(longlong **)(uVar18 + *(longlong *)(param_1 + 0x100)); + } + if (((((int)plVar11[0x3d] != 0) || (*(int *)((longlong)plVar11 + 0x1ec) != 0)) || + ((int)plVar11[0x3e] != 0)) || (*(int *)((longlong)plVar11 + 500) != 0)) { + plVar11[0x3d] = 0; + plVar11[0x3e] = 0; + uStack_100 = (undefined4)plVar11[5]; + uStack_fc = *(undefined4 *)((longlong)plVar11 + 0x2c); + local_108 = 0; + uStack_104 = 0; + FUN_181342870(0,&local_108,1); + } + plVar11 = plVar14; + if (uVar21 < *(uint *)(param_1 + 0x10c)) { + plVar11 = *(longlong **)(uVar18 + *(longlong *)(param_1 + 0x100)); + } + FUN_18134bfe0(plVar11,(ulonglong)((double)(fVar26 - fVar25) + dVar5) & 0xffffffff, + (ulonglong)((double)fVar24 + dVar5) & 0xffffffff, + (ulonglong)dVar2 & 0xffffffff,local_160); + cVar15 = local_res8; + if (local_res8 == '\0') { + if (uVar21 < *(uint *)(param_1 + 0x11c)) { + plVar14 = *(longlong **)(uVar18 + *(longlong *)(param_1 + 0x110)); + } + (**(code **)(*plVar14 + 0x58))(); + uVar16 = DAT_1824c4f30; + fVar26 = local_res10; + } + else { + dVar1 = (double)(float)((double)fVar26 - (double)fVar25 * dVar4) + dVar5; + dVar23 = (double)fVar24 + dVar5; + local_150 = dVar1; + local_148 = dVar23; + local_140 = dVar2; + local_138 = dVar3; + if (*(code **)(*plVar10 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) { + if (*(longlong *)(param_1 + 0xb8) == 0) { + FUN_180569ff0(param_1); + } + uVar7 = *(undefined8 *)(param_1 + 0xb8); + } + else { + uVar7 = (**(code **)(*plVar10 + 8))(plVar10); + } + FUN_1813f22a0(uVar7,local_130,DAT_182674188,param_1); + if (*(code **)(*plVar10 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) { + if (*(longlong *)(param_1 + 0xb8) == 0) { + FUN_180569ff0(param_1); + } + uVar7 = *(undefined8 *)(param_1 + 0xb8); + } + else { + uVar7 = (**(code **)(*plVar10 + 8))(plVar10); + } + if (uVar21 < *(uint *)(param_1 + 0x11c)) { + uVar20 = *(undefined8 *)(uVar18 + *(longlong *)(param_1 + 0x110)); + } + else { + uVar20 = 0; + } + puVar6 = (undefined8 *)FUN_18140e230(local_110,local_12c); + FUN_1813f0dc0(uVar7,DAT_182674268,*puVar6,uVar20); + lVar13 = 0; + lVar12 = lVar13; + if (uVar21 < *(uint *)(param_1 + 0x11c)) { + lVar12 = *(longlong *)(uVar18 + *(longlong *)(param_1 + 0x110)); + } + if (((*(int *)(lVar12 + 0x1e8) != 0) || (*(int *)(lVar12 + 0x1ec) != 0)) || + ((*(int *)(lVar12 + 0x1f0) != 0 || (*(int *)(lVar12 + 500) != 0)))) { + *(undefined8 *)(lVar12 + 0x1e8) = 0; + *(undefined8 *)(lVar12 + 0x1f0) = 0; + uStack_f0 = *(undefined4 *)(lVar12 + 0x28); + uStack_ec = *(undefined4 *)(lVar12 + 0x2c); + local_f8 = 0; + uStack_f4 = 0; + FUN_181342870(0,&local_f8,1); + } + if (uVar21 < *(uint *)(param_1 + 0x11c)) { + lVar13 = *(longlong *)(uVar18 + *(longlong *)(param_1 + 0x110)); + } + FUN_18134bfe0(lVar13,(ulonglong)dVar1 & 0xffffffff,(ulonglong)dVar23 & 0xffffffff, + (ulonglong)dVar2 & 0xffffffff,local_160); + uVar16 = DAT_1824c4f30; + cVar15 = local_res8; + fVar26 = local_res10; + } + } + uVar21 = uVar21 + 1; + uVar9 = (ulonglong)uVar21; + local_res20 = (double)((longlong)local_res20 + 4); + uVar18 = uVar18 + 8; + bVar22 = uVar21 < *(uint *)(param_1 + 0xec); + } while ((int)uVar21 < (int)*(uint *)(param_1 + 0xec)); + } + } + return; +} + + + --- [40] 0x18134b940 size=196 --- + +void .?AV?$FilterGraph@M$05$0CAA@@@::vtbl___AV__FilterGraph_M_05_0CAA___ + (undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4) + +{ + undefined8 *puVar1; + longlong *plVar2; + undefined8 uVar3; + + uVar3 = 0xfffffffffffffffe; + if (DAT_182673c20 == (undefined8 *)0x0) { + puVar1 = (undefined8 *)FUN_1811316e0(0x28); + FUN_1812a59f0(puVar1); + FUN_1812a7230(puVar1 + 2); + *puVar1 = juce::ModalComponentManager::vftable; + puVar1[2] = juce::ModalComponentManager::vftable; + puVar1[3] = 0; + puVar1[4] = 0; + DAT_182673c20 = puVar1; + } + FUN_18133b010(DAT_182673c20,1,param_3,param_4,uVar3); + plVar2 = (longlong *)FUN_18134adf0(param_1); + if (*(code **)(*plVar2 + 0x78) == FUN_1812c6070) { + /* WARNING: Could not recover jumptable at 0x00018134b9e5. Too many branches */ + /* WARNING: Treating indirect jump as call */ + MessageBeep(0); + return; + } + (**(code **)(*plVar2 + 0x78))(plVar2); + return; +} + + + --- [42] 0x18134b870 size=87 --- + +void .?AV?$FilterGraphGrid@M@@::vtbl___AV__FilterGraphGrid_M__ + (undefined8 param_1,undefined4 param_2,undefined8 param_3) + +{ + undefined8 uVar1; + + uVar1 = FUN_1811316e0(0x158); + FUN_18050dd00(uVar1,param_1,param_2,param_3,0); + return; +} + + + --- [43] 0x180589f40 size=99 --- + +void .?AV?$FilterGraphGrid@M@@::vtbl___AV__FilterGraphGrid_M__ + (undefined8 param_1,undefined8 param_2) + +{ + undefined8 *puVar1; + undefined1 local_res18 [16]; + + puVar1 = (undefined8 *)FUN_18140e230(local_res18,DAT_18262bb74); + FUN_1813f0dc0(param_2,DAT_182674268,*puVar1,param_1); + puVar1 = (undefined8 *)FUN_18140e230(local_res18,DAT_182674358); + FUN_1813f0dc0(param_2,DAT_182674230,*puVar1,param_1); + return; +} + + + --- [49] 0x18058b010 size=176 --- + +void .?AV?$FilterGraph@M$05$0CAA@@@::vtbl___AV__FilterGraph_M_05_0CAA___(longlong param_1) + +{ + byte *pbVar1; + ulonglong uVar2; + byte bVar3; + undefined8 local_18; + undefined4 uStack_10; + undefined4 uStack_c; + + uVar2 = (ulonglong)*(uint *)(param_1 + 0x97b0); + if (0 < (int)*(uint *)(param_1 + 0x97b0)) { + bVar3 = *(byte *)(param_1 + 0x9939); + pbVar1 = (byte *)(param_1 + 0x993a); + do { + bVar3 = bVar3 | *pbVar1; + pbVar1 = pbVar1 + 1; + *(byte *)(param_1 + 0x9939) = bVar3; + uVar2 = uVar2 - 1; + } while (uVar2 != 0); + } + if (*(char *)(param_1 + 0x9939) != '\0') { + (**(code **)(*(longlong *)(param_1 + -200) + 0x170))(param_1 + -200); + uStack_10 = *(undefined4 *)(param_1 + -0xa0); + uStack_c = *(undefined4 *)(param_1 + -0x9c); + local_18 = 0; + FUN_181342870(param_1 + -200,&local_18,1); + *(undefined1 *)(param_1 + 0x9939) = 0; + } + return; +} + + + --- [52] 0x18160b000 size=4718 --- + +/* WARNING: Instruction at (ram,0x00018160bbc8) overlaps instruction at (ram,0x00018160bbc3) + */ +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ +/* WARNING: Removing unreachable block (ram,0x00018160b5f3) */ +/* WARNING: Removing unreachable block (ram,0x00018160b060) */ +/* WARNING: Removing unreachable block (ram,0x00018160b041) */ +/* WARNING: Removing unreachable block (ram,0x00018160b229) */ +/* WARNING: Removing unreachable block (ram,0x00018160bbc3) */ +/* WARNING: Removing unreachable block (ram,0x00018160b46f) */ +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +void .?AV?$FilterGraph@M$05$0CAA@@@::vtbl___AV__FilterGraph_M_05_0CAA___ + (longlong param_1,int param_2,undefined8 param_3) + +{ + uint uVar1; + uint uVar2; + byte bVar3; + undefined8 uVar4; + longlong lVar5; + undefined1 *puVar6; + uint uVar7; + ulonglong uVar8; + uint uVar9; + uint uVar10; + uint uVar11; + uint uVar12; + uint *puVar13; + uint uVar14; + longlong lVar15; + undefined4 *puVar16; + ulonglong uVar17; + longlong *plVar18; + uint *puVar19; + uint *puVar20; + undefined1 *puVar21; + undefined8 uVar22; + uint uVar23; + uint uVar24; + uint uVar25; + uint uVar26; + uint uVar27; + int iVar28; + uint uVar29; + ulonglong uVar30; + uint uVar31; + longlong lVar32; + bool bVar33; + int unaff_retaddr; + undefined1 auStack_148 [32]; + int local_128; + uint local_124; + uint *local_120; + undefined *local_118; + uint local_110; + uint local_10c; + uint local_108; + uint local_104; + uint local_100; + uint local_fc; + int local_f8; + undefined8 local_f0; + undefined4 local_e8; + uint local_e4; + int local_e0; + uint local_dc; + code *local_d8; + longlong local_d0; + undefined8 local_c8; + undefined4 local_c0; + undefined4 local_bc; + longlong local_b8; + longlong local_b0; + longlong local_a8; + code *local_a0; + uint local_94; + uint local_90; + undefined4 local_80; + uint local_7c; + int local_78; + uint local_74; + undefined1 local_68 [8]; + uint local_60; + uint local_5c; + ulonglong local_40; + + local_40 = DAT_182615970 ^ (ulonglong)auStack_148; + uVar29 = (uint)&stack0x00000000 & 0x3ff; + local_dc = 0x9ea5 - ((uVar29 + 2) * (uVar29 + 1) * uVar29) % 3 ^ 0x9655; + local_e0 = 0x420; + local_f0 = 0x100; + local_120 = &DAT_18163cb4c; + local_118 = &DAT_18163cc4c; + uVar29 = (DAT_18163cb4c ^ 0x811c9e53) * 0x10001d1; + uVar30 = (ulonglong)uVar29; + uVar29 = _DAT_18163cb78 ^ + (_DAT_18163cb74 ^ + (_DAT_18163cb70 ^ + (_DAT_18163cb6c ^ + (_DAT_18163cb68 ^ + (DAT_18163cb64 ^ + (DAT_18163cb60 ^ + (DAT_18163cb5c ^ + (DAT_18163cb58 ^ (DAT_18163cb54 ^ (DAT_18163cb50 ^ uVar29) * 0x10001d1) * 0x10001d1) * + 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) + * 0x10001d1; + local_f8 = param_2; + local_d0 = param_1; + local_c8 = param_3; + do { + uVar22 = rdtsc(); + local_110 = (uint)uVar22 ^ (uint)((ulonglong)uVar22 >> 0x20); + FUN_18160962e(); + uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001; + if ((int)uVar9 < 0) { + uVar9 = (uVar9 - 1 | 0xfffffffe) + 1; + } + } while (uVar9 != 0); + local_110 = (local_110 * -0x3d4d4602 >> 0x18 ^ local_110 * -0x3d4d4602) * -0x3b313595; + if (local_110 < 0x430fc8) { + do { + local_d8 = FUN_1813f2240; + uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001; + if ((int)uVar9 < 0) { + uVar9 = (uVar9 - 1 | 0xfffffffe) + 1; + } + } while (uVar9 != 0); + uVar8 = FUN_1813f2240(0,0x672d); + if (1 < uVar8) { + FUN_18113eab0(); + } + } + lVar15 = 0x17; + uVar29 = (_DAT_18163cb7c ^ uVar29 * 0x10001d1) * 0x10001d1; + local_118 = (undefined *)0xeb1172bd7cee29a8; + puVar19 = (uint *)&DAT_18163cb80; + local_120 = (uint *)CONCAT44(local_120._4_4_,0x7cee29a8); + do { + uVar9 = *puVar19; + puVar19 = puVar19 + 1; + uVar29 = (uVar9 ^ uVar29) * 0x10001d1; + lVar15 = lVar15 + -1; + } while (lVar15 != 0); + uVar29 = (*puVar19 ^ uVar29) * 0x10001d1; + if ((uVar29 >> 8 & 1) == 0) { + uVar9 = uVar29 & 0x27f; + iVar28 = (uVar9 + 2) * (uVar9 + 1) * uVar9; + uVar9 = ((iVar28 >> 1) - (iVar28 >> 3)) + iVar28 * 0x55555555 >> 0x1e; + } + else { + uVar9 = uVar29 & 0x3f; + uVar9 = (uVar9 + 1) * (uVar9 + 1) * uVar9 * uVar9 & 1; + } + uVar9 = 0xf642 - uVar9 ^ 0xf542; + puVar20 = (uint *)((longlong)puVar19 + (longlong)(int)uVar9 + -0x2f4); + uVar24 = (uint)puVar20 & 0xff; + uVar9 = (*puVar20 ^ + (*(uint *)((longlong)puVar19 + (longlong)(int)uVar9 + -0x2f8) ^ + (*(uint *)((longlong)puVar19 + (longlong)(int)uVar9 + -0x2fc) ^ uVar29) * 0x10001d1) * + 0x10001d1) * 0x10001d1; + uVar29 = uVar9 & 0x3bff; + uVar29 = ((uVar29 + 1) * uVar29 + 7) % 0x51 - ((uVar24 + 2) * (uVar24 + 1) * uVar24) % 3; + puVar20 = (uint *)((longlong)puVar20 + + (0x204 - (ulonglong)(~((int)(uVar29 | -uVar29) >> 0x1f & 0xfffffdffU) & 0xfae7)) + ); + bVar33 = puVar20 == (uint *)0x0; + bVar3 = POPCOUNT((ulonglong)puVar20 & 0xff); + do { + if (((bVar3 & 1) == 0) && (bVar33)) { + uVar30 = ~(~uVar30 + 1) + 1; + } + uVar29 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001; + if ((int)uVar29 < 0) { + uVar29 = (uVar29 - 1 | 0xfffffffe) + 1; + } + bVar33 = uVar29 == 0; + bVar3 = POPCOUNT(uVar29 & 0xff); + } while (!bVar33); + uVar24 = (int)puVar20 + 4U & 0x5f; + uVar26 = (puVar20[1] ^ (*puVar20 ^ uVar9) * 0x10001d1) * 0x10001d1; + uVar29 = uVar26 & 0x1f; + puVar20 = (uint *)((longlong)puVar20 + + (((longlong) + (int)(((uVar24 + 1) * (uVar24 + 1) * uVar24 * uVar24 & 1) + + ((uVar29 + 1) * (uVar29 + 1) * uVar29 * uVar29 & 0x80000003)) ^ 0x400U) - + 0x3f8)); + uVar29 = *puVar20; + uVar9 = puVar20[1]; + uVar24 = puVar20[2]; + uVar25 = puVar20[3]; + uVar27 = puVar20[4]; + uVar1 = puVar20[5]; + do { + local_e8 = 0xf4b58d1e; + uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001; + if ((int)uVar10 < 0) { + uVar10 = (uVar10 - 1 | 0xfffffffe) + 1; + } + } while (uVar10 != 0); + uVar10 = puVar20[6]; + uVar2 = puVar20[7]; + do { + local_c0 = 0x72; + local_b8 = 0x18160b707; + uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001; + if ((int)uVar11 < 0) { + uVar11 = (uVar11 - 1 | 0xfffffffe) + 1; + } + } while (uVar11 != 0); + local_128 = 0x101f68d; + do { + plVar18 = &local_b0; + puVar16 = &local_bc; + puVar19 = &local_104; + FUN_18160cf73(); + *puVar19 = 0x4816aad0; + *puVar16 = 0x6c; + *plVar18 = 0x18160b7e7; + uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001; + if ((int)uVar11 < 0) { + uVar11 = (uVar11 - 1 | 0xfffffffe) + 1; + } + } while (uVar11 != 0); + lVar15 = local_128 + local_b8; + uVar11 = local_104 << 4; + uVar14 = local_104 >> 0x1c; + uVar7 = local_104 >> 4; + uVar23 = local_104 << 0x1c; + local_128 = 0; + local_104 = 0; + uVar11 = ((uVar7 | uVar23) & 0xe1e1e1e1 | (uVar11 | uVar14) & 0x1e1e1e1e) ^ 0xe5d863fd; + uVar14 = ((uVar11 & 0x33333333) << 2 | uVar11 >> 2 & 0x33333333) + 0x87604ead; + uVar11 = (uVar14 >> 0xf ^ uVar14) & 0x3fff; + uVar14 = uVar14 ^ (uVar11 << 0xf | uVar11); + uVar14 = ((uVar14 << 0x10 | uVar14 >> 0x10) & 0xed1212ed | + (uVar14 >> 0x10 | uVar14 << 0x10) & 0x12eded12) ^ 0xb938882a; + uVar11 = (uVar14 >> 0xe ^ uVar14) >> 2 & 0x3fff; + uVar14 = uVar14 ^ (uVar11 << 0xe | uVar11) << 2; + lVar32 = ((longlong)(int)(uVar14 << 0x10 | uVar14 >> 0x10) & 0xffffffffcb0934f6U | + (ulonglong)((uVar14 >> 0x10 | uVar14 << 0x10) & 0x34f6cb09)) + local_b0; + *(longlong *)(lVar15 + 4) = + *(longlong *)(lVar15 + 4) + + (ulonglong)((uint)(*(ulonglong *)(lVar32 + 4) >> 0x1b) & 0x45210049); + do { + puVar19 = &local_e4; + puVar13 = &local_124; + FUN_18160a47b(); + uVar22 = rdtsc(); + uVar11 = (int)uVar22 + (int)((ulonglong)uVar22 >> 0x20); + *puVar19 = uVar11; + uVar8 = (ulonglong)uVar11 * -0x47ff - 0x419c2dc1; + uVar8 = uVar8 - (uVar8 * 0x20 | uVar8 >> 0x3b); + *puVar13 = (uint)((uVar8 ^ (uVar8 >> 0xd) - 0x3b73948f) * 0x101 - 0x6d2a332 >> 5) & 0xc78b3a8e; + lVar5 = local_d0; + uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001; + if ((int)uVar11 < 0) { + uVar11 = (uVar11 - 1 | 0xfffffffe) + 1; + } + } while (uVar11 != 0); + *(int *)(lVar15 + 8) = *(int *)(lVar15 + 8) + (local_124 ^ 0x328b734b); + *(int *)(lVar15 + 4) = *(int *)(lVar15 + 4) + (local_124 ^ 0xc0006fe8); + uVar17 = (*(ulonglong *)(lVar15 + 4) << 0x21 | *(ulonglong *)(lVar15 + 4) >> 0x1f) + + 0xb0379220c452d670; + uVar8 = (ulonglong)((uint)((uVar17 >> 0x1e ^ uVar17) >> 2) & 0x1fffff); + uVar8 = ((uVar8 << 0x1e | uVar8) << 2 ^ uVar17) + 0xba631318a0d4a7cb; + uVar17 = (uVar8 >> 4 | uVar8 << 0x3c) & 0xc3c3c3c3c3c3c3c3 | + (uVar8 * 0x10 | uVar8 >> 0x3c) & 0x3c3c3c3c3c3c3c3c; + uVar11 = (uint)((uVar17 >> 9 ^ uVar17) >> 0x1a) & 1; + uVar8 = ((ulonglong)uVar11 << 9 | (ulonglong)uVar11) << 0x1a ^ uVar17; + uVar8 = ((uVar8 << 4 | uVar17 >> 0x3c) & 0xe1e1e1e1e1e1e1e1 | + (uVar8 >> 4 | uVar17 << 0x3c) & 0x1e1e1e1e1e1e1e1e) + 0xcbb348cc940fcd7a; + uVar8 = (uVar8 >> 2 | uVar8 << 0x3e) & 0x9999999999999999 | + (uVar8 * 4 | uVar8 >> 0x3e) & 0x6666666666666666; + *(ulonglong *)(lVar15 + 4) = uVar8; + plVar18 = (longlong *)(lVar32 + 4); + *plVar18 = *plVar18 + (ulonglong)((uint)(uVar8 >> 0xf) & 0x20230248); + local_124 = (uint)(*(ulonglong *)(lVar15 + 4) >> 0x1b) & 0x7fffffff; + local_108 = (uint)(*(ulonglong *)(lVar15 + 4) >> 0x19) ^ 0xb9d9b711; + local_118 = (undefined *)(*(ulonglong *)(lVar15 + 4) ^ 0x49746e3163e2e07a); + uVar29 = (puVar20[0xb] ^ + (puVar20[10] ^ + (puVar20[9] ^ + (puVar20[8] ^ + (uVar2 ^ (uVar10 ^ (uVar1 ^ (uVar27 ^ (uVar25 ^ (uVar24 ^ (uVar9 ^ (uVar29 ^ uVar26) * + 0x10001d1) * 0x10001d1 + ) * 0x10001d1) * 0x10001d1) * 0x10001d1) + * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * + 0x10001d1) * 0x10001d1; + local_f0 = CONCAT44(local_f0._4_4_,uVar29); + do { + uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001; + if ((int)uVar9 < 0) { + uVar9 = (uVar9 - 1 | 0xfffffffe) + 1; + } + } while (uVar9 != 0); + local_90 = (uint)local_118; + uVar9 = ((local_90 ^ local_108) & 0x6593f979 ^ local_108) + 0x4ed1481b; + uVar24 = ((local_90 ^ local_108) & 0x9a6c0686 ^ local_108) + 0xaef7aa14; + uVar27 = (int)((ulonglong)local_118 >> 0x20) + 0x7bc739d3; + uVar25 = (uVar9 * 0x100 | uVar9 >> 0x18) & 0x9a659a65 | + (uVar9 >> 8 | uVar9 * 0x1000000) & 0x659a659a; + uVar27 = uVar27 >> 2 & 0xcccccccc | uVar27 * 0x40000000 | uVar27 * 4 & 0x33333333 | uVar27 >> 0x1e + ; + uVar24 = ((uVar24 * 0x10000 | uVar24 >> 0x10) & 0xc73b38c4 | + (uVar24 >> 0x10 | uVar24 * 0x10000) & 0x38c4c73b) ^ uVar25; + uVar9 = uVar24 & 0x8a578475 ^ uVar25; + uVar22 = 0x1f67ec24; + uVar24 = uVar24 & 0x75a87b8a ^ uVar25 ^ uVar9; + uVar25 = uVar24 & 0x44465b56 ^ uVar9; + uVar9 = uVar24 & 0xbbb9a4a9 ^ uVar9; + uVar24 = uVar25 >> 0x19 | uVar25 << 7; + uVar25 = (uVar27 >> 10 | uVar27 << 0x16) ^ uVar24; + uVar31 = (uVar9 >> 0x1f | uVar9 << 1) ^ 0xea2cbcd1; + uVar8 = (ulonglong)uVar31; + uVar7 = uVar25 & 0xddffbe9c ^ uVar24; + uVar23 = uVar25 & 0x22004163 ^ uVar24 ^ uVar7; + uVar9 = puVar20[0xc]; + uVar24 = puVar20[0xd]; + uVar25 = puVar20[0xe]; + uVar27 = puVar20[0xf]; + uVar1 = puVar20[0x10]; + uVar26 = puVar20[0x11]; + uVar10 = puVar20[0x12]; + uVar2 = puVar20[0x13]; + uVar11 = puVar20[0x14]; + uVar14 = puVar20[0x15]; + do { + uVar4 = rdtsc(); + local_e4 = (int)uVar4 - (int)((ulonglong)uVar4 >> 0x20); + uVar17 = (ulonglong)local_e4 - ((ulonglong)(local_e4 >> 5) - 0x3dd514ae) >> 8; + uVar17 = uVar17 + (~-uVar17 + 1) * 0x200 + -0x72ddc7ad; + uVar17 = uVar17 ^ uVar17 * 0x200; + uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001; + if ((int)uVar12 < 0) { + uVar12 = (uVar12 - 1 | 0xfffffffe) + 1; + } + } while (uVar12 != 0); + local_100 = (uint)((int)uVar17 - (int)(uVar17 << 5)) >> 1 ^ local_124; + local_94 = local_108; + if (local_100 < 0xd698) { + do { + uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001; + if ((int)uVar12 < 0) { + uVar12 = (uVar12 - 1 | 0xfffffffe) + 1; + } + } while (uVar12 != 0); + local_10c = 0x7432a569; + local_80 = 0x1f67ec24; + local_7c = uVar31; + local_78 = (uVar23 & 0x7310039d ^ uVar7) + 0x6bb1bcf9; + local_74 = uVar23 & 0x8ceffc62 ^ uVar7 ^ 0xaa7d1554; + do { + plVar18 = &local_a8; + puVar19 = &local_fc; + FUN_18160cbe4(); + *puVar19 = 0x5e5cf042; + uVar30 = 0; + *plVar18 = 0x18160bf83; + FUN_18160a645(); + uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001; + if ((int)uVar7 < 0) { + uVar7 = (uVar7 - 1 | 0xfffffffe) + 1; + } + } while (uVar7 != 0); + uVar7 = (local_fc + 0x1804952a >> 0x15 | (local_fc + 0x1804952a) * 0x800) ^ 0x90bd4e7c; + local_fc = ~((uVar7 >> 0x11 | uVar7 << 0xf) + 0xe9b473b7); + (*(code *)((int)local_fc + local_a8))(&local_80,local_68); + iVar28 = 7; + do { + uVar31 = ((local_60 << 4 | local_60 >> 0x1c) & 0xb4b4b4b4 | + (local_60 >> 4 | local_60 << 0x1c) & 0x4b4b4b4b) + 0xedf66992; + uVar23 = ((local_5c >> 8 | local_5c << 0x18) & 0xfa05fa05 | + (local_5c << 8 | local_5c >> 0x18) & 0x5fa05fa) + 0x703d2ee4; + uVar7 = uVar31 >> 0xc; + uVar23 = (uVar23 >> 0x1d | uVar23 * 8) + 0x5f26144; + uVar31 = (((uVar7 | uVar31 * 0x100000) ^ 0x2677a938) >> 3 | uVar7 << 0x1d) + 0x70f6a640; + uVar23 = (uVar23 * 0x8000 | uVar23 >> 0x11) + 0x191d2650; + uVar12 = uVar31 >> 0x17 | uVar31 * 0x200; + uVar7 = uVar23 >> 0xc; + uVar23 = uVar23 * 0x100000 | uVar7; + uVar31 = (uVar12 >> 8 | (uVar31 >> 0x17) << 0x18) & 0xa857a857 | + (uVar12 << 8 | (uVar31 & 0x7fffff) >> 0xf) & 0x57a857a8; + uVar23 = (uVar7 << 0x10 | uVar23 >> 0x10) & 0xd65429ab | + (uVar23 >> 0x10 | uVar7 << 0x10) & 0x29abd654; + uVar7 = uVar31 >> 6; + local_60 = uVar7 | uVar31 << 0x1a; + local_5c = uVar23 << 0x16 | uVar23 >> 10; + iVar28 = iVar28 + -1; + } while (-1 < iVar28); + uVar7 = (uVar7 << 0x1d | local_60 >> 3) + 0xa6be00c2; + uVar7 = (uVar7 * 0x80 | uVar7 >> 0x19) + 0xc72db2d0; + uVar7 = (uVar7 * 8 | uVar7 >> 0x1d) + 0x5e0136f7; + uVar7 = (uVar7 * 0x400 | uVar7 >> 0x16) ^ 0xd2776bfa; + if (((uVar7 >> 0x10 | uVar7 << 0x10) ^ local_10c) + local_5c != local_108) { + do { + local_a0 = FUN_180bc28e0; + uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001; + if ((int)uVar7 < 0) { + uVar7 = (uVar7 - 1 | 0xfffffffe) + 1; + } + } while (uVar7 != 0); + FUN_180bc28e0(); + do { + uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001; + if ((int)uVar7 < 0) { + uVar7 = (uVar7 - 1 | 0xfffffffe) + 1; + } + } while (uVar7 != 0); + } + } + uVar9 = (uVar14 ^ (uVar11 ^ (uVar2 ^ (uVar10 ^ (uVar26 ^ (uVar1 ^ (uVar27 ^ (uVar25 ^ (uVar24 ^ ( + uVar9 ^ uVar29) * 0x10001d1) * 0x10001d1) * + 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) + * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1 ^ + 0xd282d6a9; + uVar29 = (uVar9 >> 0xe ^ uVar9) >> 1 & 0xff; + lVar32 = (longlong)local_f8; + uVar29 = ~((uVar29 << 0xe | uVar29) * 2 ^ uVar9) + 0xac1763b7; + uVar9 = uVar29 >> 0x17 | uVar29 * 0x200; + uVar29 = ((uVar29 & 0x7fffff) >> 3 ^ uVar9) >> 7 & 0x1ff; + lVar15 = lVar32 * 0x828 + 0x3830 + lVar5; + if ((uint)local_120 == ((uVar29 << 0xc | uVar29) << 7 ^ uVar9)) { + FUN_180589400(lVar15,local_c8); + *(undefined1 *)(*(longlong *)(lVar5 + 0x10) + 0x9a02 + lVar32) = 1; + thunk_FUN_1805a9280(); + return; + } + FUN_180589400(lVar15,local_c8); + *(undefined1 *)(*(longlong *)(lVar5 + 0x10) + 0x9a02 + lVar32) = 1; + puVar6 = auStack_148; + do { + puVar21 = puVar6; + *(ulonglong *)(puVar21 + -8) = uVar30; + *(undefined8 *)(puVar21 + -0x10) = uVar22; + *(ulonglong *)(puVar21 + -0x18) = uVar8; + lVar15 = -(longlong)local_e0; + uVar8 = *(ulonglong *)(puVar21 + lVar15 + 0x408); + uVar22 = *(undefined8 *)(puVar21 + lVar15 + 0x410); + uVar30 = *(ulonglong *)(puVar21 + lVar15 + 0x418); + uVar29 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001; + if ((int)uVar29 < 0) { + uVar29 = (uVar29 - 1 | 0xfffffffe) + 1; + } + puVar6 = puVar21 + lVar15 + 0x420; + } while (uVar29 != 0); + *(undefined **)(puVar21 + lVar15 + 0x418) = &UNK_18160c3e2; +} + + + --- [63] 0x18134bb30 size=93 --- + +void .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__ + (longlong param_1,undefined8 param_2,undefined8 param_3) + +{ + longlong lVar1; + undefined8 uVar2; + undefined1 local_68 [96]; + + if (*(longlong **)(param_1 + 0x18) != (longlong *)0x0) { + lVar1 = **(longlong **)(param_1 + 0x18); + uVar2 = FUN_181339840(param_2,local_68); + (**(code **)(lVar1 + 0x40))(*(undefined8 *)(param_1 + 0x18),uVar2,param_3); + } + return; +} + + diff --git a/decomp_vtables.txt b/decomp_vtables.txt new file mode 100644 index 0000000..f41b530 --- /dev/null +++ b/decomp_vtables.txt @@ -0,0 +1,2116 @@ +############ VTABLE 0x1824abb90 (64 slots) ############ + [0] 0x18052d390 size=52 + --- C --- + +void * .?AV?$SpectralProcessor@M$07$01@@::vtbl___AV__SpectralProcessor_M_07_01__ + (void *param_1,ulonglong param_2) + +{ + FUN_180529aa0(); + if ((param_2 & 1) != 0) { + /* WARNING: Subroutine does not return */ + free(param_1); + } + return param_1; +} + + + [1] 0x18052cfb0 size=61 + --- C --- + +void .?AV?$AudioProcessingModule@M$01@@::vtbl___AV__AudioProcessingModule_M_01__(longlong param_1) + +{ + FUN_1812b4430(param_1 + 0x14,0,2); + *(float *)(param_1 + 0x58) = (float)(DAT_1824c4230 / (double)*(float *)(param_1 + 0x24)); + return; +} + + + [2] 0x180529550 size=191 + --- C --- + +void .?AV?$Soothe2Module@M$01@@::vtbl___AV__Soothe2Module_M_01__ + (longlong *param_1,undefined4 param_2,undefined4 *param_3,int param_4) + +{ + int *piVar1; + longlong lVar2; + uint *puVar3; + + lVar2 = (longlong)param_4; + puVar3 = (uint *)(param_1 + (lVar2 + 9) * 8); + *(undefined4 *)(*(longlong *)(puVar3 + 8) + (longlong)(int)*puVar3 * 4) = *param_3; + *puVar3 = puVar3[2] - 1 & *puVar3 + 1; + puVar3 = (uint *)(param_1 + (lVar2 + 7) * 8); + *(undefined4 *)(*(longlong *)(puVar3 + 8) + (longlong)(int)*puVar3 * 4) = param_2; + *puVar3 = puVar3[2] - 1 & *puVar3 + 1; + piVar1 = (int *)((longlong)param_1 + lVar2 * 4 + 0x3c0); + *piVar1 = *piVar1 + 1; + if ((*(int *)((longlong)param_1 + lVar2 * 4 + 0x3c0) == (int)param_1[0x79] / 2) && (param_4 == 0)) + { + (**(code **)(*param_1 + 0x38))(param_1); + } + if (*(int *)((longlong)param_1 + lVar2 * 4 + 0x3c0) == (int)param_1[0x79]) { + *(undefined4 *)((longlong)param_1 + lVar2 * 4 + 0x3c0) = 0; + FUN_1805300f0(param_1,param_4); + } + return; +} + + + [3] 0x1804714b0 size=3 + [4] 0x180529610 size=1154 + --- C --- + +void .?AV?$SpectralProcessor@M$07$01@@::vtbl___AV__SpectralProcessor_M_07_01__ + (longlong *param_1,longlong *param_2,ulonglong param_3) + +{ + int iVar1; + int iVar2; + longlong lVar3; + ulonglong uVar4; + uint uVar5; + int iVar6; + ulonglong uVar7; + ulonglong uVar8; + ulonglong uVar9; + longlong *plVar10; + longlong *plVar11; + code *pcVar12; + + uVar4 = 0; + uVar9 = uVar4; + if (0 < (int)param_1[6]) { + param_2 = param_1 + 0x3b; + do { + param_2[-3] = 0; + uVar8 = uVar4; + uVar7 = uVar4; + if (0 < (int)*param_2) { + do { + *(undefined4 *)(uVar7 + param_2[-1]) = 0; + uVar5 = (int)uVar8 + 1; + uVar8 = (ulonglong)uVar5; + uVar7 = uVar7 + 4; + } while ((int)uVar5 < (int)*param_2); + } + param_2[1] = param_2[-1]; + param_2[0xd] = 0; + uVar8 = uVar4; + uVar7 = uVar4; + if (0 < (int)param_2[0x10]) { + do { + *(undefined4 *)(uVar8 + param_2[0xf]) = 0; + uVar5 = (int)uVar7 + 1; + uVar8 = uVar8 + 4; + uVar7 = (ulonglong)uVar5; + } while ((int)uVar5 < (int)param_2[0x10]); + } + param_2[0x11] = param_2[0xf]; + param_2[0x1d] = 0; + uVar8 = uVar4; + param_3 = uVar4; + if (0 < (int)param_2[0x20]) { + do { + *(undefined4 *)(uVar8 + param_2[0x1f]) = 0; + uVar5 = (int)param_3 + 1; + param_3 = (ulonglong)uVar5; + uVar8 = uVar8 + 4; + } while ((int)uVar5 < (int)param_2[0x20]); + } + param_2[0x21] = param_2[0x1f]; + uVar5 = (int)uVar9 + 1; + uVar9 = (ulonglong)uVar5; + param_2 = param_2 + 8; + } while ((int)uVar5 < (int)param_1[6]); + } + FUN_18052e130(param_1,param_2,param_3,uVar9,0xfffffffffffffffe); + iVar1 = (int)param_1[0x34]; + uVar9 = (longlong)iVar1 % (longlong)*(int *)((longlong)param_1 + 0x1ac) & 0xffffffff; + *(int *)(param_1 + 0x79) = iVar1 / *(int *)((longlong)param_1 + 0x1ac); + *(int *)(param_1 + 0x35) = (int)param_1[0x36] * iVar1; + if (0 < (int)param_1[6]) { + plVar10 = param_1 + 0x3b; + uVar8 = uVar4; + do { + iVar2 = FUN_1813bbf80(0x10000,uVar9); + if ((int)plVar10[-2] != iVar2) { + FUN_18052e190(plVar10 + -1,iVar2,0); + } + *(int *)(plVar10 + -2) = iVar2; + plVar10[-3] = 0; + uVar9 = uVar4; + uVar7 = uVar4; + if (0 < (int)*plVar10) { + do { + *(undefined4 *)(uVar9 + plVar10[-1]) = 0; + uVar5 = (int)uVar7 + 1; + uVar9 = uVar9 + 4; + uVar7 = (ulonglong)uVar5; + } while ((int)uVar5 < (int)*plVar10); + } + plVar10[1] = plVar10[-1]; + uVar5 = (int)param_1[0x34] + (int)plVar10[-3] & (int)plVar10[-2] - 1U; + if ((int)uVar5 < 0) { + uVar5 = uVar5 + (int)plVar10[-2]; + } + *(uint *)(plVar10 + -3) = uVar5; + iVar2 = FUN_1813bbf80(0x10000); + if ((int)plVar10[0xe] != iVar2) { + FUN_18052e190(plVar10 + 0xf,iVar2,0); + } + *(int *)(plVar10 + 0xe) = iVar2; + plVar10[0xd] = 0; + uVar9 = uVar4; + uVar7 = uVar4; + if (0 < (int)plVar10[0x10]) { + do { + *(undefined4 *)(uVar9 + plVar10[0xf]) = 0; + uVar5 = (int)uVar7 + 1; + uVar9 = uVar9 + 4; + uVar7 = (ulonglong)uVar5; + } while ((int)uVar5 < (int)plVar10[0x10]); + } + plVar10[0x11] = plVar10[0xf]; + uVar5 = (int)param_1[0x34] + (int)plVar10[0xd] & (int)plVar10[0xe] - 1U; + if ((int)uVar5 < 0) { + uVar5 = uVar5 + (int)plVar10[0xe]; + } + *(uint *)(plVar10 + 0xd) = uVar5; + iVar2 = FUN_1813bbf80(0x10000); + if ((int)plVar10[0x1e] != iVar2) { + FUN_18052e190(plVar10 + 0x1f,iVar2,0); + } + *(int *)(plVar10 + 0x1e) = iVar2; + plVar10[0x1d] = 0; + uVar7 = uVar4; + uVar9 = uVar4; + if (0 < (int)plVar10[0x20]) { + do { + *(undefined4 *)(uVar7 + plVar10[0x1f]) = 0; + uVar5 = (int)uVar9 + 1; + uVar9 = (ulonglong)uVar5; + uVar7 = uVar7 + 4; + } while ((int)uVar5 < (int)plVar10[0x20]); + } + plVar10[0x21] = plVar10[0x1f]; + uVar5 = (int)uVar8 + 1; + uVar8 = (ulonglong)uVar5; + plVar10 = plVar10 + 8; + } while ((int)uVar5 < (int)param_1[6]); + } + if (0 < (int)param_1[6]) { + iVar2 = iVar1 * 0x10; + plVar10 = param_1 + 0x6c; + uVar9 = uVar4; + do { + if ((int)plVar10[1] == iVar2) { +LAB_18052990b: + uVar8 = uVar4; + uVar7 = uVar4; + if (0 < (int)plVar10[1]) { + do { + *(undefined4 *)(uVar8 + *plVar10) = 0; + uVar5 = (int)uVar7 + 1; + uVar8 = uVar8 + 4; + uVar7 = (ulonglong)uVar5; + } while ((int)uVar5 < (int)plVar10[1]); + } + } + else { + if ((0 < (int)plVar10[1]) && (*plVar10 != 0)) { + FUN_1800010c0(); + } + *plVar10 = 0; + iVar6 = iVar2; + if (iVar2 < 0) { + iVar6 = 0; + } + *(int *)(plVar10 + 1) = iVar6; + if (iVar6 != 0) { + lVar3 = FUN_180001080(iVar6 * 4); + *plVar10 = lVar3; + goto LAB_18052990b; + } + } + uVar5 = (int)uVar9 + 1; + uVar9 = (ulonglong)uVar5; + plVar10 = plVar10 + 2; + } while ((int)uVar5 < (int)param_1[6]); + } + if (0 < (int)param_1[6]) { + plVar11 = param_1 + 0x70; + plVar10 = param_1 + 0x6c; + uVar9 = uVar4; + do { + *plVar11 = *plVar10; + uVar5 = (int)uVar9 + 1; + uVar9 = (ulonglong)uVar5; + plVar10 = plVar10 + 2; + plVar11 = plVar11 + 1; + } while ((int)uVar5 < (int)param_1[6]); + } + FUN_18052e190(param_1 + 0x72,iVar1 * 0x10,0); + FUN_18052dc30(param_1 + 0xc,(int)param_1[0x35],iVar1 * 8); + FUN_18052e190(param_1 + 0x74,(int)param_1[0x34],0); + uVar9 = uVar4; + uVar8 = uVar4; + if (0 < (int)param_1[0x75]) { + do { + *(undefined4 *)(uVar9 + param_1[0x74]) = 0; + uVar5 = (int)uVar8 + 1; + uVar9 = uVar9 + 4; + uVar8 = (ulonglong)uVar5; + } while ((int)uVar5 < (int)param_1[0x75]); + } + if (0 < (int)param_1[6]) { + plVar10 = param_1 + 0x78; + do { + *(undefined4 *)plVar10 = 0; + uVar5 = (int)uVar4 + 1; + uVar4 = (ulonglong)uVar5; + plVar10 = (longlong *)((longlong)plVar10 + 4); + } while ((int)uVar5 < (int)param_1[6]); + } + FUN_18052df60(param_1); + if (*(char *)((longlong)param_1 + 0x1b6) == '\0') { + if (*(char *)((longlong)param_1 + 0x1b7) == '\0') { + if ((char)param_1[0x37] == '\0') goto LAB_180529a6a; + *(undefined1 *)(param_1 + 0x37) = 0; + pcVar12 = *(code **)(*param_1 + 0x48); + } + else { + *(undefined1 *)((longlong)param_1 + 0x1b7) = 0; + pcVar12 = *(code **)(*param_1 + 0x58); + } + } + else { + *(undefined1 *)((longlong)param_1 + 0x1b6) = 0; + pcVar12 = *(code **)(*param_1 + 0x50); + } + if (pcVar12 != _guard_check_icall) { + (*pcVar12)(param_1); + } +LAB_180529a6a: + *(undefined1 *)((longlong)param_1 + 0x3cc) = 0; + return; +} + + + [5] 0x18113285a size=6 + [6] 0x1804714b0 size=3 + [7] 0x1804714b0 size=3 + [8] 0x1804727a0 size=3 + [9] 0x1804714b0 size=3 + [10] 0x1804714b0 size=3 + [11] 0x1804714b0 size=3 + [12] 0xb5729575b468 (invalid/enc) + [13] 0xc2c6f9033f31 (invalid/enc) + [14] 0xdb60f3c4de (invalid/enc) + [15] 0xab1cb574b45de2 (invalid/enc) + [16] 0xd2f04c4cd2f35643 (invalid/enc) + [17] 0x5e (invalid/enc) + [18] 0x182505548 size=0 + [19] 0x18052d3d0 size=52 + --- C --- + +void * .?AV?$SpectralProcessor@M$07$01@@::vtbl___AV__SpectralProcessor_M_07_01__ + (void *param_1,ulonglong param_2) + +{ + FUN_18052c910(); + if ((param_2 & 1) != 0) { + /* WARNING: Subroutine does not return */ + free(param_1); + } + return param_1; +} + + + [20] 0x18052c8f0 size=26 + [21] 0x1812c1fb0 size=92 + --- C --- + +undefined8 * +.?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@:: +vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____ + (longlong *param_1,undefined8 *param_2) + +{ + uint uVar1; + undefined8 uVar2; + uint *_Memory; + undefined8 *local_res10 [3]; + + local_res10[0] = param_2; + uVar2 = (**(code **)(*param_1 + 8))(param_1,local_res10); + *param_2 = 0; + param_2[1] = 0; + FUN_18049b000(param_2,uVar2); + _Memory = (uint *)(local_res10[0] + -2); + if ((*_Memory & 0x30000000) == 0) { + LOCK(); + uVar1 = *_Memory; + *_Memory = *_Memory - 1; + UNLOCK(); + if (uVar1 == 0) { + /* WARNING: Subroutine does not return */ + free(_Memory); + } + } + return param_2; +} + + + [22] 0x18052c4a0 size=794 + --- C --- + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +void .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@:: + vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____ + (longlong *param_1,double param_2,undefined4 param_3) + +{ + uint *puVar1; + int iVar2; + undefined8 *puVar3; + undefined8 *puVar4; + undefined8 *puVar5; + char cVar6; + uint uVar7; + undefined8 *puVar8; + code *pcVar9; + int iVar10; + longlong *plVar11; + ulonglong uVar12; + ulonglong uVar13; + ulonglong uVar14; + ulonglong uVar15; + ulonglong uVar16; + undefined1 auStack_e8 [32]; + code *local_c8; + undefined4 uStack_c0; + undefined4 uStack_bc; + undefined8 local_b8; + uint *local_b0; + undefined1 local_a8 [16]; + undefined1 local_98 [16]; + undefined **local_88; + undefined4 local_80; + undefined4 uStack_7c; + undefined4 uStack_78; + undefined4 uStack_74; + longlong *local_70; + undefined ***local_50; + ulonglong local_48; + + local_b8 = 0xfffffffffffffffe; + local_48 = DAT_182615970 ^ (ulonglong)auStack_e8; + puVar1 = (uint *)(param_1 + 0xab); + do { + LOCK(); + uVar7 = *puVar1; + *puVar1 = *puVar1 | 1; + UNLOCK(); + } while ((uVar7 & 1) != 0); + local_b0 = puVar1; + if ((*(char *)((longlong)param_1 + 0x554) != '\0') && (param_1[0xb7] != 0)) { + plVar11 = (longlong *)(param_1[0xb7] + 0x70); + (**(code **)(*plVar11 + 8))(plVar11,param_3,SUB84(param_2,0)); + } + uVar14 = 0; + if ((double)param_1[0x2b] != param_2) { + param_1[0xbb] = 0; + } + param_1[0x2b] = (longlong)param_2; + *(undefined4 *)(param_1 + 0x2c) = param_3; + cVar6 = (**(code **)(*(longlong *)param_1[0x2d] + 0xe8))(); + uVar7 = 0; + if (cVar6 != '\0') { + local_c8 = FUN_18052f680; + uStack_c0 = 0; + local_88 = std:: + _Func_impl_no_alloc,Soothe2ModuleDecryptor,ParameterStates,float>::*)(void)___ptr64,CloudyAudioProcessor,class_Soothe2ModuleDecryptor,class_ParameterStates,float>*___ptr64>,void> + ::vftable; + local_80 = 0x8052f680; + uStack_7c = 1; + uStack_78 = 0; + uStack_74 = uStack_bc; + local_50 = &local_88; + local_70 = param_1; + FUN_18113eab0(); + FUN_18114b490(&local_88); + if (local_50 != (undefined ***)0x0) { + (*(code *)(*local_50)[4])(local_50,local_50 != &local_88); + } + } + puVar8 = (undefined8 *)FUN_1812c37c0(param_1,local_a8); + if (*(int *)((longlong)puVar8 + 0xc) != 0) { + uVar7 = FUN_18123d3f0(*puVar8); + } + FUN_18047c500(local_98); + FUN_18047c500(local_a8); + if (uVar7 != *(uint *)((longlong)param_1 + 0x56c)) { + plVar11 = param_1 + 0xac; + FUN_180531620(plVar11); + if ((int)param_1[0xad] != 0) { + /* WARNING: Subroutine does not return */ + free((void *)*plVar11); + } + *(undefined4 *)(param_1 + 0xad) = 0; + if (0 < (int)uVar7) { + uVar13 = (ulonglong)uVar7; + do { + pcVar9 = (code *)FUN_1811316e0(0x28); + *(undefined8 *)pcVar9 = 0; + *(undefined4 *)(pcVar9 + 8) = 0; + *(undefined8 *)(pcVar9 + 0x10) = 0; + *(undefined4 *)(pcVar9 + 0x18) = 0; + *(undefined8 *)(pcVar9 + 0x20) = 0; + local_c8 = pcVar9; + FUN_18052bc40(pcVar9,0x10000); + iVar2 = *(int *)((longlong)param_1 + 0x56c); + iVar10 = iVar2 + 1; + if ((int)param_1[0xad] < iVar10) { + if (iVar10 < 0) { + iVar10 = iVar2 + 2; + } + FUN_18047cb30(plVar11,iVar2 + 9 + (iVar10 >> 1) & 0xfffffff8); + } + iVar10 = *(int *)((longlong)param_1 + 0x56c); + *(int *)((longlong)param_1 + 0x56c) = iVar10 + 1; + *(code **)(*plVar11 + (longlong)iVar10 * 8) = pcVar9; + uVar13 = uVar13 - 1; + } while (uVar13 != 0); + } + } + (**(code **)(*param_1 + 0x220))(param_1,param_1[0x2b],(int)param_1[0x2c]); + puVar8 = (undefined8 *)param_1[0x36]; + puVar3 = (undefined8 *)*puVar8; + while (puVar3 != puVar8) { + FUN_1811c4880(puVar3[5]); + puVar4 = (undefined8 *)puVar3[2]; + if (*(char *)((longlong)puVar4 + 0x19) == '\0') { + cVar6 = *(char *)((longlong)*puVar4 + 0x19); + puVar3 = puVar4; + puVar4 = (undefined8 *)*puVar4; + while (cVar6 == '\0') { + cVar6 = *(char *)((longlong)*puVar4 + 0x19); + puVar3 = puVar4; + puVar4 = (undefined8 *)*puVar4; + } + } + else { + cVar6 = *(char *)((longlong)puVar3[1] + 0x19); + puVar5 = (undefined8 *)puVar3[1]; + puVar4 = puVar3; + while ((puVar3 = puVar5, cVar6 == '\0' && (puVar4 == (undefined8 *)puVar3[2]))) { + cVar6 = *(char *)((longlong)puVar3[1] + 0x19); + puVar5 = (undefined8 *)puVar3[1]; + puVar4 = puVar3; + } + } + } + FUN_1812a77d0(param_1 + 0x60,0x10); + puVar8 = (undefined8 *)param_1[0xac]; + uVar13 = (ulonglong) + ((longlong)(puVar8 + *(int *)((longlong)param_1 + 0x56c)) + (7 - (longlong)puVar8)) >> 3; + if (puVar8 + *(int *)((longlong)param_1 + 0x56c) < puVar8) { + uVar13 = uVar14; + } + uVar16 = uVar14; + if (uVar13 != 0) { + do { + puVar3 = (undefined8 *)*puVar8; + *puVar3 = 0; + uVar12 = uVar14; + uVar15 = uVar14; + if (0 < *(int *)(puVar3 + 3)) { + do { + *(undefined4 *)(uVar12 + puVar3[2]) = 0; + uVar7 = (int)uVar15 + 1; + uVar12 = uVar12 + 4; + uVar15 = (ulonglong)uVar7; + } while ((int)uVar7 < *(int *)(puVar3 + 3)); + } + puVar3[4] = puVar3[2]; + puVar8 = puVar8 + 1; + uVar16 = uVar16 + 1; + } while (uVar16 != uVar13); + } + LOCK(); + *puVar1 = 0; + UNLOCK(); +} + + + [23] 0x1804714b0 size=3 + [24] 0x1804714b0 size=3 + [25] 0x1812c0b50 size=3 + [26] 0x18052bfa0 size=870 + --- C --- + +void .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@:: + vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____ + (longlong *param_1,longlong param_2,undefined8 param_3) + +{ + longlong *plVar1; + longlong lVar2; + char cVar3; + int iVar4; + uint uVar5; + int iVar6; + longlong lVar7; + uint *puVar8; + longlong lVar9; + uint *puVar10; + uint *puVar11; + uint *puVar12; + bool bVar13; + int local_b0; + int local_ac; + undefined4 local_a8; + undefined8 local_a0; + int local_94; + undefined1 local_90 [16]; + longlong local_80; + ulonglong local_78; + longlong local_70; + undefined4 local_68; + undefined4 local_64; + uint *local_60; + char local_58; + undefined8 local_50; + + local_50 = 0xfffffffffffffffe; + local_60 = (uint *)(param_1 + 0xab); + LOCK(); + bVar13 = (*local_60 & 1) == 0; + *local_60 = *local_60 | 1; + UNLOCK(); + puVar12 = (uint *)0x0; + iVar4 = 0; + if ((((DAT_1826216ff == '\0') || (DAT_18262170c == '\0')) || (DAT_18262170d == '\0')) || + ((DAT_1826216fd == '\0' || (iVar6 = 1, DAT_1826216fe == '\0')))) { + iVar6 = iVar4; + } + local_58 = bVar13; + if (((char)iVar6 == '\0') || + (cVar3 = (**(code **)(*(longlong *)param_1[0x2d] + 0xe8))(), cVar3 == '\0')) { + if (((DAT_1826216ff == '\0') || + (((DAT_18262170c == '\0' || (DAT_18262170d == '\0')) || (DAT_1826216fd == '\0')))) || + (iVar6 = 1, DAT_1826216fe == '\0')) { + iVar6 = iVar4; + } + if (((char)iVar6 != '\0') || + (cVar3 = (**(code **)(*(longlong *)param_1[0x2d] + 0xe8))(), cVar3 != '\0')) + goto LAB_18052c0bb; + } + if (bVar13) { + FUN_18052f850(param_1); + } +LAB_18052c0bb: + uVar5 = MXCSR; + local_78 = (ulonglong)MXCSR; + MXCSR = MXCSR | 0x8040; + if ((char)param_1[0xb6] != *(char *)((longlong)param_1 + 0x41)) { + *(char *)(param_1 + 0xb6) = *(char *)((longlong)param_1 + 0x41); + (**(code **)(*param_1 + 0x230))(param_1); + } + local_78._0_4_ = uVar5; + if (bVar13) { + cVar3 = (**(code **)(*(longlong *)param_1[0x2d] + 0xe8))(); + if (cVar3 == '\0') { + LOCK(); + *(undefined1 *)((longlong)param_1 + 0x164) = 0; + UNLOCK(); + FUN_181198f30(param_1 + 0x2f,0); + if ((*(char *)((longlong)param_1 + 0x554) != '\0') && (param_1[0xb7] != 0)) { + local_68 = 0; + local_64 = *(undefined4 *)(param_2 + 4); + plVar1 = (longlong *)(param_1[0xb7] + 0x70); + local_70 = param_2; + (**(code **)(*plVar1 + 0x18))(plVar1,&local_70); + } + FUN_1812c37c0(param_1,&local_a0); + if (local_94 != 0) { + iVar4 = FUN_18123d3f0(local_a0); + } + iVar6 = *(int *)(param_2 + 4); + local_80 = (longlong)iVar4; + if (0 < local_80) { + puVar8 = puVar12; + puVar10 = puVar12; + do { + lVar2 = *(longlong *)(*(longlong *)(param_2 + 0x10) + (longlong)puVar8 * 8); + puVar11 = puVar12; + if ((uint)puVar10 < *(uint *)((longlong)param_1 + 0x56c)) { + puVar11 = *(uint **)(param_1[0xac] + (longlong)puVar8 * 8); + } + lVar9 = lVar2; + FUN_18052f640(puVar11,&local_b0,iVar6,0,1); + lVar7 = (longlong)local_ac; + FUN_18052dbc0(*(longlong *)(puVar11 + 8) + (longlong)local_b0 * 4,lVar9,local_ac); + FUN_18052dbc0(*(undefined8 *)(puVar11 + 8),lVar2 + lVar7 * 4,local_a8); + uVar5 = *puVar11 + iVar6 & puVar11[2] - 1; + if ((int)uVar5 < 0) { + uVar5 = uVar5 + puVar11[2]; + } + *puVar11 = uVar5; + puVar10 = (uint *)(ulonglong)((uint)puVar10 + 1); + puVar8 = (uint *)((longlong)puVar8 + 1); + } while ((longlong)puVar8 < local_80); + } + FUN_18047c500(local_90); + FUN_18047c500(&local_a0); + (**(code **)(*param_1 + 0x228))(param_1,param_2,param_3); + if ((*(char *)((longlong)param_1 + 0x554) != '\0') && (param_1[0xb7] != 0)) { + FUN_18052fc90(param_2,*(undefined4 *)(param_1[0xb7] + 0x48)); + } + param_1[0xbb] = param_1[0xbb] + (longlong)*(int *)(param_2 + 4); + } + else { + (**(code **)(*param_1 + 0x48))(param_1,param_2,param_3); + FUN_18052fc90(param_2,0); + local_58 = bVar13; + } + } + else { + (**(code **)(*param_1 + 0x48))(param_1,param_2,param_3); + local_58 = bVar13; + } + MXCSR = (uint)local_78; + if (local_58 != '\0') { + LOCK(); + *local_60 = 0; + UNLOCK(); + } + return; +} + + + [27] 0x1812c0b60 size=152 + --- C --- + +void .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@:: + vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____ + (longlong param_1,longlong param_2) + +{ + int iVar1; + longlong lVar2; + + if ((*(int *)(param_1 + 0xdc) == 0) || (**(longlong **)(param_1 + 0xd0) == 0)) { + iVar1 = 0; + } + else { + iVar1 = *(int *)(**(longlong **)(param_1 + 0xd0) + 0x8c); + } + if (iVar1 < *(int *)(param_1 + 0x104)) { + lVar2 = (longlong)iVar1 * 8; + do { + if (*(char *)(param_2 + 0x120) == '\0') { + memset(*(void **)(*(longlong *)(param_2 + 0x10) + lVar2),0, + (longlong)*(int *)(param_2 + 4) << 3); + } + iVar1 = iVar1 + 1; + lVar2 = lVar2 + 8; + } while (iVar1 < *(int *)(param_1 + 0x104)); + } + return; +} + + + [28] 0x18052bdf0 size=432 + --- C --- + +void .?AV?$SpectralProcessor@M$07$01@@::vtbl___AV__SpectralProcessor_M_07_01__ + (longlong param_1,longlong param_2) + +{ + int iVar1; + int iVar2; + longlong lVar3; + int iVar4; + uint uVar5; + uint *puVar6; + longlong lVar7; + longlong lVar8; + uint uVar9; + longlong lVar10; + int local_78; + int local_74; + undefined4 local_70; + int local_68; + int local_64; + undefined4 local_60; + undefined8 local_58; + int local_4c; + undefined1 local_48 [16]; + + LOCK(); + *(undefined1 *)(param_1 + 0x164) = 1; + UNLOCK(); + FUN_1812c37c0(param_1,&local_58); + if (local_4c == 0) { + iVar4 = 0; + } + else { + iVar4 = FUN_18123d3f0(local_58); + } + iVar1 = *(int *)(param_1 + 0x3c); + uVar9 = 0; + iVar2 = *(int *)(param_2 + 4); + lVar10 = 0; + if (0 < (longlong)iVar4) { + do { + LOCK(); + *(undefined1 *)(param_2 + 0x120) = 0; + UNLOCK(); + lVar3 = *(longlong *)(*(longlong *)(param_2 + 0x10) + lVar10 * 8); + if (uVar9 < *(uint *)(param_1 + 0x56c)) { + puVar6 = *(uint **)(*(longlong *)(param_1 + 0x560) + lVar10 * 8); + } + else { + puVar6 = (uint *)0x0; + } + FUN_18052f640(puVar6,&local_78,iVar2,0,1); + lVar7 = (longlong)local_74; + FUN_18052dbc0(*(longlong *)(puVar6 + 8) + (longlong)local_78 * 4,lVar3,local_74); + FUN_18052dbc0(*(undefined8 *)(puVar6 + 8),lVar3 + lVar7 * 4,local_70); + uVar5 = *puVar6 + iVar2 & puVar6[2] - 1; + if ((int)uVar5 < 0) { + uVar5 = uVar5 + puVar6[2]; + } + *puVar6 = uVar5; + if (uVar9 < *(uint *)(param_1 + 0x56c)) { + lVar7 = *(longlong *)(*(longlong *)(param_1 + 0x560) + lVar10 * 8); + } + else { + lVar7 = 0; + } + FUN_18052f640(lVar7,&local_68,iVar2,-(iVar1 + iVar2),1); + lVar8 = (longlong)local_64; + FUN_18052dbc0(lVar3,*(longlong *)(lVar7 + 0x20) + (longlong)local_68 * 4,local_64); + FUN_18052dbc0(lVar3 + lVar8 * 4,*(undefined8 *)(lVar7 + 0x20),local_60); + uVar9 = uVar9 + 1; + lVar10 = lVar10 + 1; + } while (lVar10 < iVar4); + } + FUN_18047c500(local_48); + FUN_18047c500(&local_58); + return; +} + + + [29] 0x1804731c0 size=3 + [30] 0x1804731c0 size=3 + [31] 0x1812c0b40 size=3 + [32] 0x18113285a size=6 + [33] 0x1804731c0 size=3 + [34] 0x1804731c0 size=3 + [35] 0x1804731c0 size=3 + [36] 0x1804731c0 size=3 + [37] 0x1812c0ca0 size=3 + [38] 0x1804727a0 size=3 + [39] 0x1812c0df0 size=4 + [40] 0x18113285a size=6 + [41] 0x180484870 size=3 + [42] 0x1812c0cc0 size=3 + [43] 0x18052c8d0 size=18 + [44] 0x18052c8c0 size=16 + [45] 0x18052c880 size=49 + --- C --- + +void .?AV?$SpectralProcessor@M$07$01@@::vtbl___AV__SpectralProcessor_M_07_01__ + (longlong param_1,uint param_2) + +{ + if (*(int *)(param_1 + 8) != 3) { + return; + } + if (param_2 < *(uint *)(param_1 + 0x444)) { + FUN_18115d300(param_1 + 0x400, + *(undefined8 *)(*(longlong *)(param_1 + 0x438) + (longlong)(int)param_2 * 8)); + return; + } + FUN_18115d300(param_1 + 0x400,0); + return; +} + + + [46] 0x18052c7f0 size=141 + --- C --- + +undefined8 * +.?AV?$SpectralProcessor@M$07$01@@::vtbl___AV__SpectralProcessor_M_07_01__ + (longlong param_1,undefined8 *param_2,uint param_3) + +{ + longlong *plVar1; + undefined8 *puVar2; + longlong local_res8 [4]; + + if ((*(int *)(param_1 + 8) == 3) && (param_3 < *(uint *)(param_1 + 0x444))) { + plVar1 = *(longlong **)(*(longlong *)(param_1 + 0x438) + (longlong)(int)param_3 * 8); + if (plVar1 != (longlong *)0x0) { + if ((undefined **)*plVar1 == Preset::vftable) { + local_res8[0] = plVar1[2]; + FUN_18049c9e0(param_2,local_res8[0]); + return param_2; + } + puVar2 = (undefined8 *)(*(code *)((undefined **)*plVar1)[4])(plVar1,local_res8); + FUN_18049c9e0(param_2,*puVar2); + return param_2; + } + } + *param_2 = &DAT_1821dbf98; + return param_2; +} + + + [47] 0x1804714b0 size=3 + [48] 0x18052bde0 size=15 + [49] 0x1812bfff0 size=10 + [50] 0x18052bdd0 size=15 + [51] 0x1812bffb0 size=55 + --- C --- + +void FUN_1812bffb0(longlong *param_1,undefined8 param_2,int param_3) + +{ + if (*(code **)(*param_1 + 0xf8) == FUN_18052bdd0) { + FUN_1811fc760(param_1 + 0x67,param_2,(longlong)param_3); + return; + } + (**(code **)(*param_1 + 0xf8))(); + return; +} + + + [52] 0x1812c0e20 size=3 + [53] 0x1812c0e10 size=3 + [54] 0x18052c490 size=14 + [55] 0x1812c1130 size=139 + --- C --- + +void FUN_1812c1130(longlong param_1,longlong param_2) + +{ + longlong *plVar1; + int iVar2; + longlong *plVar3; + + EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x74)); + plVar3 = *(longlong **)(param_1 + 0x18); + iVar2 = *(int *)(param_1 + 0x24); + plVar1 = plVar3 + iVar2; + for (; plVar3 != plVar1; plVar3 = plVar3 + 1) { + if (param_2 == *plVar3) goto LAB_1812c11a1; + } + if (*(int *)(param_1 + 0x20) < iVar2 + 1) { + FUN_18047cb30(param_1 + 0x18,iVar2 + 9 + (iVar2 + 1) / 2 & 0xfffffff8); + } + iVar2 = *(int *)(param_1 + 0x24); + *(int *)(param_1 + 0x24) = iVar2 + 1; + *(longlong *)(*(longlong *)(param_1 + 0x18) + (longlong)iVar2 * 8) = param_2; +LAB_1812c11a1: + /* WARNING: Could not recover jumptable at 0x0001812c11b4. Too many branches */ + /* WARNING: Treating indirect jump as call */ + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x74)); + return; +} + + + [56] 0x1812c1070 size=180 + --- C --- + +void FUN_1812c1070(longlong param_1,longlong param_2) + +{ + void *_Dst; + int iVar1; + longlong lVar2; + int iVar3; + + EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x74)); + iVar1 = *(int *)(param_1 + 0x24); + iVar3 = 0; + lVar2 = 0; + if (0 < iVar1) { + do { + if (param_2 == *(longlong *)(*(longlong *)(param_1 + 0x18) + lVar2 * 8)) { + _Dst = (void *)(*(longlong *)(param_1 + 0x18) + (longlong)iVar3 * 8); + memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar1 - iVar3) + -1) << 3); + *(int *)(param_1 + 0x24) = *(int *)(param_1 + 0x24) + -1; + iVar1 = *(int *)(param_1 + 0x24); + iVar3 = 0; + if (0 < iVar1 * 2) { + iVar3 = iVar1 * 2; + } + if (iVar3 < *(int *)(param_1 + 0x20)) { + if (iVar1 < 8) { + iVar1 = 8; + } + if (iVar1 < *(int *)(param_1 + 0x20)) { + FUN_18047cb30(param_1 + 0x18); + } + } + break; + } + iVar3 = iVar3 + 1; + lVar2 = lVar2 + 1; + } while (lVar2 < iVar1); + } + /* WARNING: Could not recover jumptable at 0x0001812c111d. Too many branches */ + /* WARNING: Treating indirect jump as call */ + LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x74)); + return; +} + + + [57] 0x1812c11d0 size=5 + [58] 0x1812bf000 size=137 + --- C --- + +void FUN_1812bf000(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined1 param_4) + +{ + undefined1 auStack_b8 [32]; + undefined1 local_98; + void *local_68; + undefined8 local_60; + undefined8 local_58; + undefined8 local_50; + undefined8 local_48; + ulonglong local_40; + + local_40 = DAT_182615970 ^ (ulonglong)auStack_b8; + local_50 = 4; + local_48 = 0xffffffff; + local_68 = (void *)0x0; + local_60 = 0; + local_58 = 0; + local_98 = param_4; + FUN_18123c5f0(param_2,&local_68); + /* WARNING: Subroutine does not return */ + free(local_68); +} + + + [59] 0x1804d7000 size=33 + [60] 0x1812bffa0 size=3 + [61] 0x18052c310 size=339 + --- C --- + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ +/* WARNING: Removing unreachable block (ram,0x00018052c3fa) */ +/* WARNING: Removing unreachable block (ram,0x00018052c3ff) */ +/* WARNING: Removing unreachable block (ram,0x00018052c40a) */ +/* WARNING: Removing unreachable block (ram,0x00018052c40f) */ +/* WARNING: Removing unreachable block (ram,0x00018052c413) */ +/* WARNING: Removing unreachable block (ram,0x00018052c3d6) */ + +void FUN_18052c310(undefined8 param_1,longlong param_2) + +{ + int iVar1; + undefined1 auStack_d8 [32]; + undefined4 local_b8; + void *local_b0 [5]; + undefined1 local_88 [40]; + void *local_60 [5]; + void *local_38 [5]; + ulonglong local_10; + + local_10 = DAT_182615970 ^ (ulonglong)auStack_d8; + local_b8 = 0; + FUN_18124a040(local_88,8); + FUN_1804db6f0(param_2 + 0x10,local_b0,0); + iVar1 = FUN_18123c5f0(local_b0,local_88); + if (iVar1 == 0) { + /* WARNING: Subroutine does not return */ + free(local_b0[0]); + } + FUN_18124a040(local_38,6); + FUN_1804db6f0(param_2 + 0x10,local_60,0); + FUN_18123c5f0(local_60,local_38); + /* WARNING: Subroutine does not return */ + free(local_60[0]); +} + + + [62] 0x1804d7030 size=10 + [63] 0x1812c0230 size=525 + --- C --- + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +void FUN_1812c0230(longlong param_1,longlong param_2) + +{ + bool bVar1; + char cVar2; + int iVar3; + longlong lVar4; + undefined8 uVar5; + undefined1 auStack_98 [32]; + int local_78; + int local_74; + int local_70; + void *local_68 [2]; + undefined1 local_58 [24]; + ulonglong local_40; + + local_40 = DAT_182615970 ^ (ulonglong)auStack_98; + lVar4 = FUN_1812c37c0(param_1,local_68); + cVar2 = FUN_1804df970(param_2,lVar4); + if ((cVar2 == '\0') || (cVar2 = FUN_1804df970(param_2 + 0x10,lVar4 + 0x10), cVar2 == '\0')) { + bVar1 = false; + } + else { + bVar1 = true; + } + FUN_18047c500(local_58); + FUN_18047c500(local_68); + if (!bVar1) { + local_74 = *(int *)(param_1 + 0x100); + local_78 = *(int *)(param_1 + 0xec); + local_70 = *(int *)(param_1 + 0x104); + if ((*(int *)(param_2 + 0xc) == *(int *)(param_1 + 0xdc)) && + (*(int *)(param_2 + 0x1c) == local_78)) { + if (0 < *(int *)(param_1 + 0xdc)) { + if (*(int *)(param_1 + 0xdc) == 0) { + lVar4 = 0; + } + else { + lVar4 = **(longlong **)(param_1 + 0xd0); + } + FUN_1804db6f0(param_2,local_68,0); + FUN_18123d980(lVar4 + 0x10,local_68); + iVar3 = FUN_18123d3f0(local_68); + if (iVar3 != 0) { + FUN_18123d980(lVar4 + 0x60,local_68); + } + FUN_18123d3f0(local_68); + /* WARNING: Subroutine does not return */ + free(local_68[0]); + } + if (0 < local_78) { + if (*(int *)(param_1 + 0xec) == 0) { + lVar4 = 0; + } + else { + lVar4 = **(longlong **)(param_1 + 0xe0); + } + FUN_1804db6f0(param_2 + 0x10,local_68,0); + FUN_18123d980(lVar4 + 0x10,local_68); + iVar3 = FUN_18123d3f0(local_68); + if (iVar3 != 0) { + FUN_18123d980(lVar4 + 0x60,local_68); + } + FUN_18123d3f0(local_68); + /* WARNING: Subroutine does not return */ + free(local_68[0]); + } + if ((local_74 == 0) && (local_70 == 0)) { + uVar5 = 0; + } + else { + uVar5 = 1; + } + FUN_1812c0000(param_1,0,uVar5); + } + } +} + + +############ VTABLE 0x1824ac7a8 (64 slots) ############ + [0] 0x18052fd40 size=38 + [1] 0x18052cfb0 size=61 + --- C --- + +void .?AV?$AudioProcessingModule@M$01@@::vtbl___AV__AudioProcessingModule_M_01__(longlong param_1) + +{ + FUN_1812b4430(param_1 + 0x14,0,2); + *(float *)(param_1 + 0x58) = (float)(DAT_1824c4230 / (double)*(float *)(param_1 + 0x24)); + return; +} + + + [2] 0x180529550 size=191 + --- C --- + +void .?AV?$Soothe2Module@M$01@@::vtbl___AV__Soothe2Module_M_01__ + (longlong *param_1,undefined4 param_2,undefined4 *param_3,int param_4) + +{ + int *piVar1; + longlong lVar2; + uint *puVar3; + + lVar2 = (longlong)param_4; + puVar3 = (uint *)(param_1 + (lVar2 + 9) * 8); + *(undefined4 *)(*(longlong *)(puVar3 + 8) + (longlong)(int)*puVar3 * 4) = *param_3; + *puVar3 = puVar3[2] - 1 & *puVar3 + 1; + puVar3 = (uint *)(param_1 + (lVar2 + 7) * 8); + *(undefined4 *)(*(longlong *)(puVar3 + 8) + (longlong)(int)*puVar3 * 4) = param_2; + *puVar3 = puVar3[2] - 1 & *puVar3 + 1; + piVar1 = (int *)((longlong)param_1 + lVar2 * 4 + 0x3c0); + *piVar1 = *piVar1 + 1; + if ((*(int *)((longlong)param_1 + lVar2 * 4 + 0x3c0) == (int)param_1[0x79] / 2) && (param_4 == 0)) + { + (**(code **)(*param_1 + 0x38))(param_1); + } + if (*(int *)((longlong)param_1 + lVar2 * 4 + 0x3c0) == (int)param_1[0x79]) { + *(undefined4 *)((longlong)param_1 + lVar2 * 4 + 0x3c0) = 0; + FUN_1805300f0(param_1,param_4); + } + return; +} + + + [3] 0x1804714b0 size=3 + [4] 0x18052ce00 size=98 + --- C --- + +void .?AV?$Soothe2ModuleBase@M$01@@::vtbl___AV__Soothe2ModuleBase_M_01__(longlong param_1) + +{ + float fVar1; + + .?AV?$SpectralProcessor@M$07$01@@::vtbl___AV__SpectralProcessor_M_07_01__(); + fVar1 = *(float *)(param_1 + 0x3fc); + *(float *)(param_1 + 0x3fc) = *(float *)(param_1 + 0x24); + if (fVar1 != *(float *)(param_1 + 0x24)) { + (**(code **)(*(longlong *)(param_1 + 0x3d8) + 0x20))((longlong *)(param_1 + 0x3d8)); + } + *(undefined4 *)(param_1 + 0x240458) = 4; + *(undefined4 *)(param_1 + 0x240467) = 0x1010101; + *(undefined4 *)(param_1 + 0x24046b) = 0x1010101; + return; +} + + + [5] 0x1804714b0 size=3 + [6] 0x1804714b0 size=3 + [7] 0x1804714b0 size=3 + [8] 0x1804727a0 size=3 + [9] 0x1804714b0 size=3 + [10] 0x1804714b0 size=3 + [11] 0x1804714b0 size=3 + [12] 0x1804714b0 size=3 + [13] 0x1804714b0 size=3 + [14] 0x1804714b0 size=3 + [15] 0x1804714b0 size=3 + [16] 0x1804714b0 size=3 + [17] 0x1804714b0 size=3 + [18] 0x1804714b0 size=3 + [19] 0x1804714b0 size=3 + [20] 0x1804714b0 size=3 + [21] 0x1804714b0 size=3 + [22] 0x1804714b0 size=3 + [23] 0x1804714b0 size=3 + [24] 0x18052cec0 size=88 + --- C --- + +void .?AV?$Soothe2ModuleBase@M$01@@::vtbl___AV__Soothe2ModuleBase_M_01__(longlong param_1) + +{ + int iVar1; + + iVar1 = *(int *)(param_1 + 0x2404cc); + while( true ) { + if (iVar1 < 1) { + return; + } + iVar1 = iVar1 + -1; + if ((*(int *)(param_1 + 0x2404cc) <= iVar1) && + (iVar1 = *(int *)(param_1 + 0x2404cc) + -1, iVar1 < 0)) break; + FUN_180492ef8(*(undefined8 *)(*(longlong *)(param_1 + 0x2404c0) + (longlong)iVar1 * 8)); + } + return; +} + + + [25] 0x18052ce90 size=48 + --- C --- + +undefined1 .?AV?$Soothe2ModuleBase@M$01@@::vtbl___AV__Soothe2ModuleBase_M_01__(longlong param_1) + +{ + if ((*(char *)(param_1 + 0x240464) != '\0') && (*(char *)(param_1 + 0x240464) != '\0')) { + *(undefined1 *)(param_1 + 0x240464) = 0; + FUN_18052fbd0(); + } + return 0; +} + + + [26] 0x18052ce80 size=14 + [27] 0x1804727a0 size=3 + [28] 0x18052ce70 size=9 + [29] 0x180484870 size=3 + [30] 0x1804714b0 size=3 + [31] 0x1804714b0 size=3 + [32] 0x44cfb42858ddbe60 (invalid/enc) + [33] 0x7955c8b128 (invalid/enc) + [34] 0x182507b08 size=0 + [35] 0x180546620 size=62 + --- C --- + +undefined8 * +.?AV?$Soothe2ModuleBase@M$01@@::vtbl___AV__Soothe2ModuleBase_M_01__ + (undefined8 *param_1,ulonglong param_2) + +{ + *param_1 = juce::WindowsMediaAudioFormat::vftable; + FUN_1813affa0(); + if ((param_2 & 1) != 0) { + /* WARNING: Subroutine does not return */ + free(param_1); + } + return param_1; +} + + + [36] 0x1813afeb0 size=43 + --- C --- + +undefined8 * +.?AV?$Soothe2ModuleBase@M$01@@::vtbl___AV__Soothe2ModuleBase_M_01__ + (longlong param_1,undefined8 *param_2) + +{ + *param_2 = 0; + param_2[1] = 0; + FUN_18048c4c0(param_2,*(undefined8 *)(param_1 + 0x10),*(undefined4 *)(param_1 + 0x1c)); + return param_2; +} + + + [37] 0x1813afef0 size=130 + --- C --- + +void .?AV?$Soothe2ModuleBase@M$01@@::vtbl___AV__Soothe2ModuleBase_M_01__ + (longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4) + +{ + undefined8 *puVar1; + char cVar2; + undefined8 *puVar3; + undefined8 *local_20; + int local_14; + + (**(code **)(*param_1 + 8))(param_1,&local_20,param_3,param_4,0xfffffffffffffffe); + puVar1 = local_20 + local_14; + puVar3 = local_20; + while( true ) { + if (puVar3 == puVar1) { + FUN_180488c50(&local_20); + /* WARNING: Subroutine does not return */ + free(local_20); + } + cVar2 = FUN_18123fe10(param_2,*puVar3); + if (cVar2 != '\0') break; + puVar3 = puVar3 + 1; + } + FUN_180488c50(&local_20); + /* WARNING: Subroutine does not return */ + free(local_20); +} + + + [38] 0x18136cc80 size=13 + [39] 0x18136cc60 size=13 + [40] 0x18136cc50 size=3 + [41] 0x18136cc40 size=3 + [42] 0x18136cc30 size=3 + [43] 0x1813afd80 size=80 + --- C --- + +void .?AV?$Soothe2ModuleBase@M$01@@::vtbl___AV__Soothe2ModuleBase_M_01__ + (undefined8 param_1,undefined8 param_2) + +{ + undefined1 auStack_58 [32]; + void *local_38 [5]; + ulonglong local_10; + + local_10 = DAT_182615970 ^ (ulonglong)auStack_58; + FUN_18124a040(local_38,8); + FUN_18123c5f0(param_2,local_38); + /* WARNING: Subroutine does not return */ + free(local_38[0]); +} + + + [44] 0x1813afe80 size=13 + [45] 0x18136cbb0 size=108 + --- C --- + +undefined8 * +.?AV?$Soothe2ModuleBase@M$01@@::vtbl___AV__Soothe2ModuleBase_M_01__ + (undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4) + +{ + undefined8 uVar1; + undefined8 *puVar2; + + uVar1 = FUN_1811316e0(0x90,param_2,param_3,param_4,0xfffffffffffffffe); + puVar2 = (undefined8 *)FUN_180545be0(uVar1,param_2); + if ((double)puVar2[1] <= 0.0) { + if ((char)param_3 == '\0') { + puVar2[10] = 0; + } + (**(code **)*puVar2)(puVar2,1); + puVar2 = (undefined8 *)0x0; + } + return puVar2; +} + + + [46] 0x1813afe40 size=32 + [47] 0x1813afe70 size=3 + [48] 0x1813afcf0 size=132 + --- C --- + +undefined8 +FUN_1813afcf0(longlong *param_1,undefined8 param_2,undefined4 param_3,undefined8 param_4, + undefined4 param_5,undefined8 param_6,undefined4 param_7) + +{ + char cVar1; + undefined4 uVar2; + undefined8 uVar3; + + cVar1 = (**(code **)(*param_1 + 0x40))(param_1,param_4); + if (cVar1 == '\0') { + uVar3 = 0; + } + else { + uVar2 = FUN_18123d3f0(param_4); + uVar3 = (**(code **)(*param_1 + 0x70))(param_1,param_2,param_3,uVar2,param_5,param_6,param_7); + } + return uVar3; +} + + + [49] 0x18136cba0 size=3 + [50] 0x1825080a8 size=0 + [51] 0x18053e010 size=47 + --- C --- + +void FUN_18053e010(undefined8 *param_1) + +{ + *param_1 = juce::OggReader::vftable; + FUN_181371350(param_1 + 0xc); + /* WARNING: Subroutine does not return */ + free((void *)param_1[0x7c]); +} + + + [52] 0x1813af190 size=138 + --- C --- + +void FUN_1813af190(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined4 *param_4, + undefined4 *param_5,undefined4 *param_6,undefined4 *param_7) + +{ + if (*(uint *)(param_1 + 4) < 2) { + (**(code **)(*param_1 + 0x10))(); + } + else { + (**(code **)(*param_1 + 0x10))(); + } + *param_4 = 0; + *param_5 = 0; + *param_6 = 0; + *param_7 = 0; + return; +} + + + [53] 0x1813af220 size=771 + --- C --- + +void FUN_1813af220(longlong *param_1,longlong param_2,ulonglong param_3,longlong param_4,int param_5 + ) + +{ + float fVar1; + int iVar2; + ulonglong uVar3; + bool bVar4; + int iVar5; + float fVar6; + char cVar7; + longlong lVar8; + float *pfVar9; + int iVar10; + longlong lVar11; + longlong lVar12; + int iVar13; + int iVar14; + int *piVar15; + undefined8 *puVar16; + longlong lVar17; + undefined8 *puVar18; + float fVar19; + float fVar20; + float local_1c4; + float local_1c0; + float local_1bc; + float local_1b8; + float local_1b4; + float fStack_1b0; + undefined8 *local_1a8; + longlong local_1a0; + ulonglong local_198; + undefined8 local_190; + undefined1 local_188 [16]; + undefined8 *local_178; + void *local_170; + undefined1 local_68; + + local_190 = 0xfffffffffffffffe; + lVar11 = (longlong)param_5; + if ((longlong)param_3 < 1) { + lVar8 = 0; + if (0 < param_5) { + do { + *(undefined8 *)(param_4 + lVar8 * 8) = 0; + lVar8 = lVar8 + 1; + } while (lVar8 < lVar11); + } + return; + } + iVar10 = (int)param_3; + if (0x1000 < (longlong)param_3) { + iVar10 = 0x1000; + } + local_1a0 = lVar11; + FUN_180535db0(local_188,lVar11,iVar10); + fVar6 = DAT_1824c3c28; + LOCK(); + local_68 = 0; + UNLOCK(); + local_1a8 = local_178; + bVar4 = true; + local_198 = (ulonglong)iVar10; + puVar16 = local_178; + do { + uVar3 = param_3; + if ((longlong)local_198 < (longlong)param_3) { + uVar3 = local_198; + } + iVar13 = (int)uVar3; + lVar17 = (longlong)iVar13; + lVar8 = param_2; + iVar10 = iVar13; + iVar14 = 0; + if (param_2 < 0) { + lVar8 = lVar11; + iVar14 = (int)-param_2; + if (lVar17 < -param_2) { + iVar14 = iVar13; + } + while (lVar8 = lVar8 + -1, -1 < lVar8) { + if ((void *)puVar16[lVar8] != (void *)0x0) { + memset((void *)puVar16[lVar8],0,(longlong)iVar14 << 2); + } + } + iVar10 = iVar13 - iVar14; + lVar8 = 0; + } + if (0 < iVar10) { + iVar5 = (int)param_1[4]; + if (param_5 < (int)param_1[4]) { + iVar5 = param_5; + } + cVar7 = (**(code **)(*param_1 + 0x20))(param_1,puVar16,iVar5,iVar14,lVar8,iVar10); + if (cVar7 == '\0') break; + lVar8 = (longlong)(int)param_1[4]; + if ((int)param_1[4] < param_5) { + for (; lVar8 < lVar11; lVar8 = lVar8 + 1) { + if ((void *)puVar16[lVar8] != (void *)0x0) { + memset((void *)puVar16[lVar8],0,lVar17 * 4); + } + } + } + } + puVar18 = puVar16; + lVar8 = lVar11; + if (0 < lVar11) { + lVar12 = param_4 - (longlong)puVar16; + do { + if (*(char *)((longlong)param_1 + 0x24) == '\0') { + piVar15 = (int *)*puVar16; + if (iVar13 < 1) { + iVar10 = 0; + iVar14 = 0; + } + else { + iVar10 = *piVar15; + iVar14 = iVar10; + iVar5 = iVar13; + while (iVar5 = iVar5 + -1, 0 < iVar5) { + piVar15 = piVar15 + 1; + iVar2 = *piVar15; + if (iVar10 < iVar2) { + iVar10 = iVar2; + } + if (iVar2 < iVar14) { + iVar14 = iVar2; + } + } + } + fVar20 = (float)iVar10 * fVar6; + fVar19 = (float)iVar14 * fVar6; + if (fVar20 <= fVar19) { + fVar20 = fVar19; + } + } + else { + FUN_1804d5400(&local_1bc,*puVar16,uVar3 & 0xffffffff); + fVar19 = local_1bc; + fVar20 = local_1b8; + } + if (bVar4) { + local_1b4 = fVar19; + fStack_1b0 = fVar20; + pfVar9 = &local_1b4; + } + else { + fVar1 = *(float *)(lVar12 + 4 + (longlong)puVar16); + if (fVar20 <= fVar1) { + fVar20 = fVar1; + } + if (*(float *)(lVar12 + (longlong)puVar16) <= fVar19) { + fVar19 = *(float *)(lVar12 + (longlong)puVar16); + } + local_1c4 = fVar19; + if (fVar20 <= fVar19) { + local_1c0 = fVar19; + } + else { + local_1c0 = fVar20; + } + pfVar9 = &local_1c4; + } + *(undefined8 *)(lVar12 + (longlong)puVar16) = *(undefined8 *)pfVar9; + puVar16 = puVar16 + 1; + lVar11 = lVar11 + -1; + puVar18 = local_1a8; + lVar8 = local_1a0; + } while (lVar11 != 0); + } + bVar4 = false; + param_3 = param_3 - lVar17; + param_2 = param_2 + lVar17; + puVar16 = puVar18; + lVar11 = lVar8; + } while (0 < (longlong)param_3); + /* WARNING: Subroutine does not return */ + free(local_170); +} + + + [54] 0x1813af160 size=29 + [55] 0x18053dba0 size=990 + --- C --- + +undefined8 +FUN_18053dba0(longlong param_1,longlong param_2,int param_3,int param_4,longlong param_5,int param_6 + ) + +{ + undefined4 uVar1; + int iVar2; + int iVar3; + int iVar4; + longlong lVar5; + longlong lVar6; + int iVar7; + int iVar8; + int local_res20; + longlong local_48; + + iVar4 = param_6; + local_res20 = param_4; + if (param_6 < 1) { + return 1; + } + do { + iVar2 = (*(int *)(param_1 + 0x4f4) - (int)param_5) + *(int *)(param_1 + 0x4f0); + if ((*(int *)(param_1 + 0x4f0) <= param_5) && (0 < iVar2)) { + iVar8 = iVar4; + if (iVar2 < iVar4) { + iVar8 = iVar2; + } + iVar2 = param_3; + if (*(int *)(param_1 + 0x3c8) < param_3) { + iVar2 = *(int *)(param_1 + 0x3c8); + } + iVar2 = iVar2 + -1; + if (-1 < iVar2) { + lVar5 = (longlong)iVar2 * 8; + do { + if (*(longlong *)(lVar5 + param_2) != 0) { + memcpy((void *)(*(longlong *)(lVar5 + param_2) + (longlong)local_res20 * 4), + (void *)(*(longlong *)(*(longlong *)(param_1 + 0x3d8) + lVar5) + + (longlong)((int)param_5 - *(int *)(param_1 + 0x4f0)) * 4), + (longlong)iVar8 << 2); + } + lVar5 = lVar5 + -8; + iVar2 = iVar2 + -1; + iVar4 = param_6; + } while (-1 < iVar2); + } + iVar4 = iVar4 - iVar8; + param_5 = param_5 + iVar8; + local_res20 = local_res20 + iVar8; + param_6 = iVar4; + if (iVar4 == 0) { + return 1; + } + } + if ((param_5 < *(int *)(param_1 + 0x4f0)) || + ((longlong)(*(int *)(param_1 + 0x4f0) + *(int *)(param_1 + 0x4f4)) < iVar4 + param_5)) { + *(undefined4 *)(param_1 + 0x4f4) = *(undefined4 *)(param_1 + 0x3cc); + iVar2 = -0x83; + iVar8 = 0; + if (0 < (int)param_5) { + iVar8 = (int)param_5; + } + *(int *)(param_1 + 0x4f0) = iVar8; + if (1 < *(int *)(param_1 + 0xe0)) { + iVar2 = (int)*(undefined8 *)(param_1 + 0xd8); + } + if (iVar8 != iVar2) { + FUN_18136fc00(param_1 + 0x60); + } + iVar8 = 0; + for (iVar2 = *(int *)(param_1 + 0x4f4); 0 < iVar2; iVar2 = iVar2 - iVar7) { + local_48 = 0; + iVar4 = param_6; + if (*(int *)(param_1 + 0xe0) < 2) { +LAB_18053deb3: + if ((0 < iVar2) && (*(char *)(param_1 + 0x4e8) == '\0')) { + if ((iVar8 == 0) && (iVar2 == *(int *)(param_1 + 0x3cc))) { + LOCK(); + *(undefined1 *)(param_1 + 0x4e8) = 1; + UNLOCK(); + } + iVar7 = 0; + if (0 < *(int *)(param_1 + 0x3c8)) { + lVar5 = 0; + do { + memset((void *)(*(longlong *)(*(longlong *)(param_1 + 0x3d8) + lVar5) + + (longlong)iVar8 * 4),0,(longlong)iVar2 << 2); + iVar7 = iVar7 + 1; + lVar5 = lVar5 + 8; + } while (iVar7 < *(int *)(param_1 + 0x3c8)); + } + } + break; + } + do { + if (*(int *)(param_1 + 0xe0) == 4) { + lVar5 = *(longlong *)(param_1 + 0x280); + if ((-1 < *(int *)(param_1 + 0x2a0)) && + (*(int *)(param_1 + 0x2a0) < *(int *)(param_1 + 0x29c))) { + iVar7 = 0; + if (0 < *(int *)(lVar5 + 4)) { + lVar6 = 0; + do { + iVar7 = iVar7 + 1; + *(longlong *)(lVar6 + *(longlong *)(param_1 + 0x290)) = + *(longlong *)(*(longlong *)(param_1 + 0x288) + -8 + lVar6 + 8) + + (longlong)*(int *)(param_1 + 0x2a0) * 4; + lVar6 = lVar6 + 8; + } while (iVar7 < *(int *)(lVar5 + 4)); + } + iVar7 = *(int *)(param_1 + 0x29c) - *(int *)(param_1 + 0x2a0); + if (iVar7 != 0) { + if (iVar2 < iVar7) { + iVar7 = iVar2; + } + uVar1 = *(undefined4 *)(*(longlong *)(*(longlong *)(param_1 + 200) + 0x20) + 0x1668) + ; + if ((iVar7 == 0) || (*(int *)(param_1 + 0x2a0) + iVar7 <= *(int *)(param_1 + 0x29c)) + ) { + *(int *)(param_1 + 0x2a0) = *(int *)(param_1 + 0x2a0) + iVar7; + } + *(longlong *)(param_1 + 0xd8) = + *(longlong *)(param_1 + 0xd8) + (longlong)(iVar7 << ((byte)uVar1 & 0x1f)); + local_48 = *(longlong *)(param_1 + 0x290); + break; + } + } + } + iVar7 = FUN_181371870(param_1 + 0x60); + if (iVar7 == -2) goto LAB_18053deb3; + } while (0 < iVar7); + if (iVar7 < 1) goto LAB_18053deb3; + iVar3 = *(int *)(param_1 + 0x20); + if (*(int *)(param_1 + 0x3c8) < *(int *)(param_1 + 0x20)) { + iVar3 = *(int *)(param_1 + 0x3c8); + } + lVar5 = (longlong)(iVar3 + -1); + if (-1 < iVar3 + -1) { + do { + LOCK(); + *(undefined1 *)(param_1 + 0x4e8) = 0; + UNLOCK(); + memcpy((void *)(*(longlong *)(*(longlong *)(param_1 + 0x3d8) + lVar5 * 8) + + (longlong)iVar8 * 4),*(void **)(local_48 + lVar5 * 8), + (longlong)iVar7 << 2); + lVar5 = lVar5 + -1; + } while (-1 < lVar5); + } + iVar8 = iVar8 + iVar7; + } + } + if (iVar4 < 1) { + return 1; + } + } while( true ); +} + + + [56] 0x182507300 size=0 + [57] 0x1805386e0 size=120 + --- C --- + +undefined8 * FUN_1805386e0(undefined8 *param_1,uint param_2) + +{ + undefined8 *puVar1; + + *param_1 = juce::AudioFormatReaderSource::vftable; + if (*(char *)(param_1 + 2) == '\0') { + param_1[1] = 0; + } + else { + puVar1 = (undefined8 *)param_1[1]; + param_1[1] = 0; + if (puVar1 == (undefined8 *)0x0) goto LAB_180538737; + (**(code **)*puVar1)(puVar1,1); + } + puVar1 = (undefined8 *)param_1[1]; + if (puVar1 != (undefined8 *)0x0) { + (**(code **)*puVar1)(puVar1,1); + } +LAB_180538737: + if ((param_2 & 1) != 0) { + /* WARNING: Subroutine does not return */ + free(param_1); + } + return param_1; +} + + + [58] 0x1813aed50 size=3 + [59] 0x1813aed40 size=3 + [60] 0x1813aec40 size=242 + --- C --- + +void FUN_1813aec40(longlong param_1,undefined8 *param_2) + +{ + longlong lVar1; + longlong lVar2; + longlong lVar3; + longlong lVar4; + ulonglong uVar5; + int iVar6; + + iVar6 = *(int *)((longlong)param_2 + 0xc); + if (0 < iVar6) { + lVar1 = *(longlong *)(param_1 + 0x18); + lVar2 = *(longlong *)(param_1 + 8); + if (*(char *)(param_1 + 0x20) != '\0') { + lVar3 = *(longlong *)(lVar2 + 0x18); + lVar4 = lVar1 % lVar3; + uVar5 = (lVar1 + iVar6) % lVar3; + if (lVar4 < (longlong)uVar5) { + FUN_1813af530(lVar2,*param_2,*(undefined4 *)(param_2 + 1),(int)uVar5 - (int)lVar4,lVar4); + *(ulonglong *)(param_1 + 0x18) = uVar5; + return; + } + iVar6 = (int)lVar3 - (int)lVar4; + FUN_1813af530(lVar2,*param_2,*(undefined4 *)(param_2 + 1),iVar6,lVar4); + FUN_1813af530(*(undefined8 *)(param_1 + 8),*param_2,*(int *)(param_2 + 1) + iVar6, + uVar5 & 0xffffffff,0); + *(ulonglong *)(param_1 + 0x18) = uVar5; + return; + } + FUN_1813af530(lVar2,*param_2,*(undefined4 *)(param_2 + 1),(longlong)iVar6,lVar1); + *(longlong *)(param_1 + 0x18) = + *(longlong *)(param_1 + 0x18) + (longlong)*(int *)((longlong)param_2 + 0xc); + } + return; +} + + + [61] 0x1813aed90 size=5 + [62] 0x1813aed60 size=24 + [63] 0x1813aeda0 size=9 +############ VTABLE 0x1824ab7c0 (64 slots) ############ + [0] 0x1805384a8 size=12 + [1] 0x18052bd00 size=189 + --- C --- + +/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ + +void .?AV?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@ + :: + vtbl___AV__CloudyAudioProcessor_V__Soothe2ModuleBase_M_01__VSoothe2ModuleDecryptor__VParameterStates__M__ + (longlong param_1,undefined8 param_2,undefined8 *param_3) + +{ + uint *_Memory; + uint uVar1; + undefined1 uVar2; + int iVar3; + undefined1 auStack_58 [32]; + longlong local_38; + undefined8 local_30; + undefined8 *local_28; + ulonglong local_20; + + local_30 = 0xfffffffffffffffe; + local_20 = DAT_182615970 ^ (ulonglong)auStack_58; + local_38 = *(longlong *)(param_1 + 0x478); + _Memory = (uint *)(local_38 + -0x10); + if ((*_Memory & 0x30000000) == 0) { + LOCK(); + *_Memory = *_Memory + 1; + UNLOCK(); + } + local_28 = param_3; + iVar3 = FUN_18048cbc0(param_2,local_38); + if ((*_Memory & 0x30000000) == 0) { + LOCK(); + uVar1 = *_Memory; + *_Memory = *_Memory - 1; + UNLOCK(); + if (uVar1 == 0) { + /* WARNING: Subroutine does not return */ + free(_Memory); + } + } + if (iVar3 == 0) { + uVar2 = FUN_180528b30(param_1 + 0x470); + *(undefined1 *)(param_1 + 0x404) = uVar2; + } + (**(code **)(*(longlong *)*param_3 + 0xb0))((longlong *)*param_3,param_3 + 1); +} + + + [2] 0x182507040 size=0 + [3] 0x180536b60 size=22 + [4] 0x180536b60 size=22 + [5] 0x1805379a0 size=104 + --- C --- + +void .?AV?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@ + :: + vtbl___AV__CloudyAudioProcessor_V__Soothe2ModuleBase_M_01__VSoothe2ModuleDecryptor__VParameterStates__M__ + (longlong param_1,undefined4 *param_2) + +{ + uint uVar1; + longlong lVar2; + longlong lVar3; + longlong lVar4; + + uVar1 = *(uint *)(param_1 + 8); + lVar2 = *(longlong *)(*(longlong *)(param_1 + 0x10) + 0x168); + lVar3 = lVar2 + 0x3d8; + if (uVar1 < *(uint *)(lVar2 + 0x444)) { + lVar4 = *(longlong *)(*(longlong *)(lVar2 + 0x438) + (longlong)(int)uVar1 * 8); + } + else { + lVar4 = 0; + } + *(undefined4 *)(lVar4 + 0x80c) = *param_2; + if ((int)uVar1 < 0) { + *(undefined4 *)(lVar2 + 0x240467) = 0x1010101; + *(undefined4 *)(lVar2 + 0x24046b) = 0x1010101; + FUN_18052fc30(lVar3); + return; + } + *(undefined1 *)((longlong)(int)uVar1 + 0x24008f + lVar3) = 1; + FUN_18052fc30(lVar3); + return; +} + + + [6] 0x180536b50 size=8 + [7] 0x18048dc80 size=15 + [8] 0x180481210 size=5 + [9] 0x891a (invalid/enc) + [10] 0x182505588 size=0 + [11] 0x180536850 size=22 + [12] 0x180536850 size=22 + [13] 0x180537e90 size=150 + --- C --- + +void .?AV?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@ + :: + vtbl___AV__CloudyAudioProcessor_V__Soothe2ModuleBase_M_01__VSoothe2ModuleDecryptor__VParameterStates__M__ + (longlong param_1,float *param_2) + +{ + longlong lVar1; + char cVar2; + int iVar3; + + iVar3 = (int)*param_2; + if ((*(char *)(*(longlong *)(param_1 + 8) + 0x41) != '\0') && + (cVar2 = FUN_180528d50(), cVar2 != '\0')) { + return; + } + lVar1 = *(longlong *)(*(longlong *)(param_1 + 8) + 0x168); + *(undefined1 *)(lVar1 + 0x3cc) = 1; + *(undefined1 *)(lVar1 + 0x1b6) = 1; + if (iVar3 == 1) { + *(undefined4 *)(lVar1 + 0x1ac) = 4; + } + else if (iVar3 == 2) { + *(undefined4 *)(lVar1 + 0x1ac) = 8; + } + else if (iVar3 == 3) { + *(undefined4 *)(lVar1 + 0x1ac) = 0x10; + } + else { + *(undefined4 *)(lVar1 + 0x1ac) = 2; + } + (**(code **)(**(longlong **)(*(longlong *)(param_1 + 8) + 0x168) + 0x20))(); + return; +} + + + [14] 0x180536840 size=8 + [15] 0x18048db00 size=15 + [16] 0x180481210 size=5 + [17] 0x182506590 size=0 + [18] 0x180536f20 size=14 + [19] 0x180536f20 size=14 + [20] 0x180537290 size=41 + --- C --- + +undefined8 +.?AV?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@ +:: +vtbl___AV__CloudyAudioProcessor_V__Soothe2ModuleBase_M_01__VSoothe2ModuleDecryptor__VParameterStates__M__ + (undefined8 param_1,undefined8 param_2,float *param_3) + +{ + FUN_1812339a0(param_2,(double)*param_3,1); + return param_2; +} + + + [21] 0x180536f10 size=8 + [22] 0x18048db00 size=15 + [23] 0x180481210 size=5 + [24] 0x182505910 size=0 + [25] 0x180536610 size=30 + [26] 0x180536610 size=30 + [27] 0x1805380e0 size=35 + [28] 0x180536600 size=8 + [29] 0x1805365f0 size=15 + [30] 0x180481210 size=5 + [31] 0x182504cd0 size=0 + [32] 0x180536d60 size=22 + [33] 0x180536d60 size=22 + [34] 0x1805375e0 size=73 + --- C --- + +void .?AV?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@ + :: + vtbl___AV__CloudyAudioProcessor_V__Soothe2ModuleBase_M_01__VSoothe2ModuleDecryptor__VParameterStates__M__ + (longlong param_1,undefined4 *param_2) + +{ + longlong lVar1; + + lVar1 = **(longlong **)(param_1 + 8); + if (*(int *)(lVar1 + 0x444) != 0) { + *(undefined4 *)(**(longlong **)(lVar1 + 0x438) + 0x80c) = *param_2; + *(undefined1 *)(lVar1 + 0x240467) = 1; + FUN_18052fc30(); + return; + } + uRam000000000000080c = *param_2; + *(undefined1 *)(lVar1 + 0x240467) = 1; + FUN_18052fc30(); + return; +} + + + [35] 0x180536d50 size=8 + [36] 0x18048db00 size=15 + [37] 0x180481210 size=5 + [38] 0x182506f18 size=0 + [39] 0x180536dc0 size=22 + [40] 0x180536dc0 size=22 + [41] 0x1805374e0 size=163 + --- C --- + +void .?AV?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@ + :: + vtbl___AV__CloudyAudioProcessor_V__Soothe2ModuleBase_M_01__VSoothe2ModuleDecryptor__VParameterStates__M__ + (longlong param_1,float *param_2) + +{ + longlong *plVar1; + longlong lVar2; + float fVar3; + float fVar4; + float fVar5; + + fVar3 = logf(DAT_1824c43e8); + plVar1 = *(longlong **)(*(longlong *)(param_1 + 8) + 0x168); + lVar2 = *plVar1; + fVar4 = powf(*param_2 * DAT_1824c3cb8,DAT_1824c3ef8); + fVar5 = logf(DAT_1824c45e4); + fVar3 = expf(fVar4 * (fVar5 - fVar3) + fVar3); + /* WARNING: Could not recover jumptable at 0x000180537580. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (**(code **)(lVar2 + 0x80))(plVar1,fVar3); + return; +} + + + [42] 0x180536db0 size=8 + [43] 0x18048db00 size=15 + [44] 0x180481210 size=5 + [45] 0x182506090 size=0 + [46] 0x1805367f0 size=22 + [47] 0x1805367f0 size=22 + [48] 0x180537f60 size=25 + [49] 0x1805367e0 size=8 + [50] 0x18048db00 size=15 + [51] 0x180481210 size=5 + [52] 0x90f8daaa9ae9 (invalid/enc) + [53] 0x182506948 size=0 + [54] 0x1805366d0 size=22 + [55] 0x1805366d0 size=22 + [56] 0x180538010 size=25 + [57] 0x1805366c0 size=8 + [58] 0x18048db00 size=15 + [59] 0x180481210 size=5 + [60] 0x6a5500ee6cd5 (invalid/enc) + [61] 0x1b39b7231a23 (invalid/enc) + [62] 0x1825061b8 size=0 + [63] 0x180536a30 size=14 diff --git a/depthcurve.npy b/depthcurve.npy new file mode 100644 index 0000000..5a731fb Binary files /dev/null and b/depthcurve.npy differ diff --git a/dump_soothe.py b/dump_soothe.py new file mode 100644 index 0000000..a2459a3 --- /dev/null +++ b/dump_soothe.py @@ -0,0 +1,70 @@ +#!/usr/bin/env python3 +import frida, sys, struct, time + +TARGET = "yabridge-host" +OUT = "/home/m/re-tools/soothe_mem.bin" + +js = r""" +const name = "soothe2_x64.vst3"; +let mod = null; +for (const m of Process.enumerateModules()) { + if (m.name.toLowerCase().includes(name)) { mod = m; break; } +} +if (!mod) { + for (const m of Process.enumerateModules()) { + if (m.path.toLowerCase().includes("soothe")) { mod = m; break; } + } +} +if (!mod) { send({err: "soothe module not found"}); } +else { + send({base: mod.base.toString(), size: mod.size, path: mod.path, name: mod.name}); + const buf = new ArrayBuffer(mod.size); + try { + const r = Memory.readByteArray(mod.base, mod.size); + buf = r; + send({ok: true, size: mod.size}, buf ? buf : new ArrayBuffer(0)); + } catch (e) { send({err: "readByteArray: " + e}); } +} +""" + +def main(): + dev = frida.get_local_device() + procs = dev.enumerate_processes() + target = None + for p in procs: + if TARGET in p.name and ("yabridge" in p.name or "wine" in p.name): + target = p + if target is None: + print("target process not found:") + for p in procs: + if "wine" in p.name or "yabridge" in p.name or "reaper" in p.name: + print(" ", p.pid, p.name) + sys.exit(1) + print("attaching to", target.pid, target.name) + session = dev.attach(target.pid) + done = {} + def on_message(msg, data): + if msg["type"] == "send": + payload = msg["payload"] + if isinstance(payload, dict) and "err" in payload: + print("ERR:", payload["err"]) + done["err"] = payload + return + if payload.get("ok"): + with open(OUT, "wb") as f: + f.write(data) + print("DUMPED", len(data), "bytes to", OUT) + done["dumped"] = len(data) + else: + print("module:", payload) + elif msg["type"] == "error": + print("JS ERR:", msg.get("description")) + script = session.create_script(js) + script.on("message", on_message) + script.load() + for _ in range(60): + if done: break + time.sleep(0.2) + session.detach() + +main() \ No newline at end of file diff --git a/fit_curves.py b/fit_curves.py new file mode 100644 index 0000000..d934ab6 --- /dev/null +++ b/fit_curves.py @@ -0,0 +1,52 @@ +#!/usr/bin/env python3 +"""Fit parametric curves (v2): amount_total = A(depth)*S(sens)*H(sharp). +S normalized so S(12)=1, H(10)=1. A→1 as depth→large. +Saturation form: f(x)=1-exp(-(x/k)^m). +""" +import numpy as np +from scipy.optimize import curve_fit + +def sat(x, k, m): + return 1 - np.exp(-(x / k) ** m) + +def to_amount(red): + return 1 - 10 ** (-red / 20.0) + +def fit(name, x, y, p0): + popt, _ = curve_fit(sat, x, y, p0=p0, maxfev=50000) + pred = sat(x, *popt) + print(f"{name}: k={popt[0]:.4f} m={popt[1]:.3f} RMSE={np.sqrt(np.mean((pred-y)**2)):.5f}") + for xi, yi, pi in zip(x, y, pred): + print(f" x={xi:6.2f} meas={yi:.4f} pred={pi:.4f}") + return popt + +A_def = to_amount(7.70) + +# A: depth sweep at S=H=1 (sens12 sharp10) +x = np.array([0.5, 0.864, 1.0, 2.0, 3.0, 5.0, 10.0, 20.0], float) +y = np.array([to_amount(d) for d in [7.14, 7.70, 7.91, 9.56, 11.29, 14.89, 24.25, 39.41]]) +ka = fit('A(depth)', x, y, [3.0, 0.8]) + +# S: sens at depth0.864 (S saturates -> S(12)=1). amount = A_def * S +# S has a floor at sens=0 (still 2.89dB): S(x) = s0 + (1-s0)*sat(x) +def S(x, s0, k, m): + return s0 + (1 - s0) * sat(x, k, m) +x = np.array([0.0, 6.0, 12.0, 24.0, 48.0], float) +y = np.array([to_amount(d) for d in [2.89, 5.14, 7.70, 7.70, 7.70]]) / A_def +popt, _ = curve_fit(S, x, y, p0=[0.4, 3.0, 3.0], maxfev=50000) +pred = S(x, *popt) +print(f"S(sens): s0={popt[0]:.4f} k={popt[1]:.4f} m={popt[2]:.3f} RMSE={np.sqrt(np.mean((pred-y)**2)):.5f}") +for xi, yi, pi in zip(x, y, pred): + print(f" x={xi:6.2f} meas={yi:.4f} pred={pi:.4f}") +ks = popt + +# H: sharp at depth0.864 -> H(10)=1 +x = np.array([1.0, 3.0, 5.0, 10.0, 20.0], float) +y = np.array([to_amount(d) for d in [1.11, 3.71, 5.90, 7.70, 7.70]]) / A_def +kh = fit('H(sharp)/norm', x, y, [3.0, 1.5]) + +print("\ncross-check amount_total = A*S*H at default:") +print(f" A(0.864)*S(12)*H(10) = {sat(0.864,*ka):.4f}*1*1 -> red {(-20*np.log10(1-sat(0.864,*ka))):.2f} dB (meas 7.70)") +print(f" depth=10 sens=0: A(10)*S(0) = {sat(10,*ka):.4f}*{sat(0,*ks):.4f} = {sat(10,*ka)*sat(0,*ks):.4f} -> {( -20*np.log10(1-sat(10,*ka)*sat(0,*ks))):.2f} dB") +np.savez('/home/m/re-tools/curve_fits.npz', + k_depth=ka, k_sens=ks, k_sharp=kh, A_def=A_def) \ No newline at end of file diff --git a/ghidra_diag.py b/ghidra_diag.py new file mode 100644 index 0000000..a31aed2 --- /dev/null +++ b/ghidra_diag.py @@ -0,0 +1,44 @@ +from ghidra.program.model.listing import CodeUnit +from ghidra.program.model.symbol import SymbolTable, SymbolType, SourceType +from ghidra.program.model.data import DataUtilities + +program = getCurrentProgram() +listing = program.getListing() +symtab = program.getSymbolTable() + +def p(*a): + out = ",".join(str(x) for x in a) + print(out) + +# 1. functions count +funcs = listing.getFunctions(True) +n = 0 +for f in funcs: + n += 1 +p("FUNCTION_COUNT", n) + +# 2. symbols matching DSP keywords +import re +keys = ["Soothe2", "Spectral", "FilterGraph", "DigitalFilter", "IIRFilter", "LowPass", "ModuleBase", "Decryptor", "processBlock", "ProcessData"] +syms = symtab.getAllSymbols(True) +shown = set() +for s in syms: + name = s.getName(True) or s.getName() + for k in keys: + if k.lower() in name.lower(): + key = (name, str(s.getAddress()), s.getSymbolType().toString()) + if key not in shown: + shown.add(key) + p("SYMB", name, s.getAddress(), s.getSymbolType().toString()) + break +p("SYM_TOTAL", len(shown)) + +# 3. exports +for s in symtab.getExternalSymbols(): + pass + +# external functions imports (VST exports / DLL imports of interest) +for f in listing.getFunctions(True): + sym = f.getSymbol() + if sym is not None and sym.isExternalEntryPoint(): + p("EXP", f.getName(), f.getEntryPoint()) \ No newline at end of file diff --git a/harness_dep.py b/harness_dep.py new file mode 100644 index 0000000..3e9e9c1 --- /dev/null +++ b/harness_dep.py @@ -0,0 +1,92 @@ +#!/usr/bin/env python3 +import os, glob, sys, time, subprocess + +REAPER = "/usr/bin/reaper" +RPP = "/home/m/soothe-bt/dep0b_rt.rpp" +OUTDIR = "/home/m/re-tools/regions_dep" + +os.makedirs(OUTDIR, exist_ok=True) + +def find_soothe2_pid(): + for p in glob.glob('/proc/[0-9]*'): + try: + pid = int(os.path.basename(p)) + cmd = open(p + '/cmdline','rb').read().replace(b'\0',b' ').decode('utf8','replace') + if 'yabridge' not in cmd and 'wine' not in cmd: + continue + maps = open(f'/proc/{pid}/maps').read() + if 'soothe2' in maps: + st = open(p + '/stat','rb').read().decode('utf8','replace') + state = st.split(')')[-1].split()[0] + return pid, state + except Exception: + pass + return None, None + +def init_ok(pid, base=0x180000000): + try: + maps = open(f'/proc/{pid}/maps').read() + except Exception: + return False + seen = 0 + for line in maps.splitlines(): + parts = line.split() + if len(parts) < 6: continue + lo = int(parts[0].split('-')[0],16) + if 'r' in parts[1] and base <= lo < base+0x7000000: + seen += 1 + return seen >= 8 + +def dump_module(pid, base=0x180000000, extent=0x7000000): + maps = open(f'/proc/{pid}/maps').read() + readable = [] + for line in maps.splitlines(): + parts = line.split() + if len(parts) < 6: continue + lo, hi = (int(x,16) for x in parts[0].split('-')) + if 'r' in parts[1] and (base <= lo < base+extent): + readable.append((lo, hi, parts[1])) + print(f' pid {pid}: {len(readable)} regions') + mem = os.open(f'/proc/{pid}/mem', os.O_RDONLY) + total = 0 + for lo, hi, perms in readable: + try: + data = os.pread(mem, hi-lo, lo) + total += len(data) + fn = os.path.join(OUTDIR, f'pid{pid}_{lo:08x}_{hi:08x}.bin') + with open(fn,'wb') as f: f.write(data) + except Exception as e: + print(' fail', lo, e) + os.close(mem) + print(f' dumped total {total} bytes in {time.time()-T0:.1f}s') + +T0 = time.time() +print("spawning reaper (realtime render)...") +proc = subprocess.Popen( + [REAPER, "-nosplash", "-renderproject", RPP], + stdout=open('/tmp/harness_dep.log','w'), stderr=subprocess.STDOUT, + env={**os.environ}) +print("reaper pid", proc.pid) + +deadline = time.time() + 200 +dumped = False +while time.time() < deadline and proc.poll() is None: + pid, state = find_soothe2_pid() + if pid and init_ok(pid): + print(f' found pid {pid} state {state}, dumping...') + try: + dump_module(pid) + except Exception as e: + print(' dump error:', e) + dumped = True + break + time.sleep(0.05) + +if not dumped: + print("no live soothe2 captured") +print("waiting for render to finish...") +try: + proc.wait(timeout=240) +except Exception: + proc.kill() +print(f"done in {time.time()-T0:.0f}s, exit {proc.returncode}") \ No newline at end of file diff --git a/harness_dump.py b/harness_dump.py new file mode 100644 index 0000000..93d3767 --- /dev/null +++ b/harness_dump.py @@ -0,0 +1,114 @@ +#!/usr/bin/env python3 +import os, glob, sys, time, subprocess + +REAPER = "/usr/bin/reaper" +RPP = "/home/m/0.RPP" +OUTDIR = "/home/m/re-tools/regions" + +os.makedirs(OUTDIR, exist_ok=True) + +def all_procs(): + out = {} + for p in glob.glob('/proc/[0-9]*'): + try: + pid = int(os.path.basename(p)) + cmd = open(p + '/cmdline','rb').read().replace(b'\0',b' ').decode('utf8','replace') + st = open(p + '/stat','rb').read().decode('utf8','replace') + ppid = int(st.split(')')[-1].split()[3]) # rough: parse later + state = st.split(')')[-1].split()[0] + out[pid] = (ppid, state, cmd.strip()) + except Exception: + pass + return out + +def wait_full(pid, base=0x180000000, extent=0x7000000, tmo=40): + start = time.time() + while time.time() - start < tmo: + try: + maps = open(f'/proc/{pid}/maps').read() + except Exception: + return False + seen = 0 + for line in maps.splitlines(): + parts = line.split() + if len(parts) < 6: continue + lo, hi = (int(x,16) for x in parts[0].split('-')) + if 'r' in parts[1] and base <= lo < base+extent: + seen += 1 + if lo <= 0x184000000 < hi: + return True + if seen < 8: + time.sleep(1) + continue + # big enough set of readable regions present; dump what exists + return True + +def dump_module(pid, base=0x180000000, extent=0x7000000): + maps_path = f'/proc/{pid}/maps' + maps = open(maps_path).read() + readable = [] + for line in maps.splitlines(): + parts = line.split() + if len(parts) < 6: continue + addr, perms, off, dev, ino, *rest = parts + lo, hi = (int(x,16) for x in addr.split('-')) + if 'r' in perms and (base <= lo < base+extent): + readable.append((lo, hi, perms)) + print(f' pid {pid}: {len(readable)} readable regions in [{base:#x},{base+extent:#x})') + if not readable: + print(' LISTING MAPS around base:') + for line in maps.splitlines(): + parts = line.split() + if len(parts) < 6: continue + addr, perms, *rest = parts + lo = int(addr.split('-')[0],16) + if base-0x100000 <= lo <= base+0x1000000: + print(' ', line) + mem = os.open(f'/proc/{pid}/mem', os.O_RDONLY) + total = 0 + for lo, hi, perms in readable: + size = hi - lo + try: + data = os.pread(mem, size, lo) + total += len(data) + fn = os.path.join(OUTDIR, f'pid{pid}_{lo:08x}_{hi:08x}_{perms.replace("-","")}.bin') + with open(fn,'wb') as f: f.write(data) + print(f' dumped {lo:#x}-{hi:#x} {len(data):#x} bytes {perms}') + except Exception as e: + print(f' {lo:#x}-{hi:#x} {perms} FAIL {e}') + os.close(mem) + print(f' pid {pid} total {total} bytes') + +print("spawning reaper...") +proc = subprocess.Popen( + [REAPER, "-nosplash", RPP], + stdout=open('/tmp/harness.log','w'), stderr=subprocess.STDOUT, + env={**os.environ}) +print("reaper pid", proc.pid) + +deadline = time.time() + 120 +dumped = False +while time.time() < deadline and proc.poll() is None: + time.sleep(1) + procs = all_procs() + for pid,(ppid,state,cmd) in list(procs.items()): + if state != 'S': continue + if 'yabridge' in cmd or 'wine' in cmd: + with open(f'/proc/{pid}/maps') as f: + if 'soothe2' in f.read(): + ok = wait_full(pid) + print(f' wait_full(pid {pid}): {ok}') + if not ok: + continue + dump_module(pid) + dumped = True + time.sleep(2) + if dumped: + break +if not dumped: + print("no live soothe2 process observed") +print("killing reaper") +proc.terminate() +time.sleep(1) +if proc.poll() is None: + proc.kill() \ No newline at end of file diff --git a/harness_dump_render.py b/harness_dump_render.py new file mode 100644 index 0000000..0c513a6 --- /dev/null +++ b/harness_dump_render.py @@ -0,0 +1,114 @@ +#!/usr/bin/env python3 +import os, glob, sys, time, subprocess + +REAPER = "/usr/bin/reaper" +RPP = "/home/m/soothe-bt/render_long.rpp" +OUTDIR = "/home/m/re-tools/regions_render" + +os.makedirs(OUTDIR, exist_ok=True) + +def all_procs(): + out = {} + for p in glob.glob('/proc/[0-9]*'): + try: + pid = int(os.path.basename(p)) + cmd = open(p + '/cmdline','rb').read().replace(b'\0',b' ').decode('utf8','replace') + st = open(p + '/stat','rb').read().decode('utf8','replace') + ppid = int(st.split(')')[-1].split()[3]) # rough: parse later + state = st.split(')')[-1].split()[0] + out[pid] = (ppid, state, cmd.strip()) + except Exception: + pass + return out + +def wait_full(pid, base=0x180000000, extent=0x7000000, tmo=40): + start = time.time() + while time.time() - start < tmo: + try: + maps = open(f'/proc/{pid}/maps').read() + except Exception: + return False + seen = 0 + for line in maps.splitlines(): + parts = line.split() + if len(parts) < 6: continue + lo, hi = (int(x,16) for x in parts[0].split('-')) + if 'r' in parts[1] and base <= lo < base+extent: + seen += 1 + if lo <= 0x184000000 < hi: + return True + if seen < 8: + time.sleep(1) + continue + # big enough set of readable regions present; dump what exists + return True + +def dump_module(pid, base=0x180000000, extent=0x7000000): + maps_path = f'/proc/{pid}/maps' + maps = open(maps_path).read() + readable = [] + for line in maps.splitlines(): + parts = line.split() + if len(parts) < 6: continue + addr, perms, off, dev, ino, *rest = parts + lo, hi = (int(x,16) for x in addr.split('-')) + if 'r' in perms and (base <= lo < base+extent): + readable.append((lo, hi, perms)) + print(f' pid {pid}: {len(readable)} readable regions in [{base:#x},{base+extent:#x})') + if not readable: + print(' LISTING MAPS around base:') + for line in maps.splitlines(): + parts = line.split() + if len(parts) < 6: continue + addr, perms, *rest = parts + lo = int(addr.split('-')[0],16) + if base-0x100000 <= lo <= base+0x1000000: + print(' ', line) + mem = os.open(f'/proc/{pid}/mem', os.O_RDONLY) + total = 0 + for lo, hi, perms in readable: + size = hi - lo + try: + data = os.pread(mem, size, lo) + total += len(data) + fn = os.path.join(OUTDIR, f'pid{pid}_{lo:08x}_{hi:08x}_{perms.replace("-","")}.bin') + with open(fn,'wb') as f: f.write(data) + print(f' dumped {lo:#x}-{hi:#x} {len(data):#x} bytes {perms}') + except Exception as e: + print(f' {lo:#x}-{hi:#x} {perms} FAIL {e}') + os.close(mem) + print(f' pid {pid} total {total} bytes') + +print("spawning reaper...") +proc = subprocess.Popen( + [REAPER, "-nosplash", "-renderproject", RPP], + stdout=open('/tmp/harness.log','w'), stderr=subprocess.STDOUT, + env={**os.environ}) +print("reaper pid", proc.pid) + +deadline = time.time() + 120 +dumped = False +while time.time() < deadline and proc.poll() is None: + time.sleep(1) + procs = all_procs() + for pid,(ppid,state,cmd) in list(procs.items()): + if state != 'S': continue + if 'yabridge' in cmd or 'wine' in cmd: + with open(f'/proc/{pid}/maps') as f: + if 'soothe2' in f.read(): + ok = wait_full(pid) + print(f' wait_full(pid {pid}): {ok}') + if not ok: + continue + dump_module(pid) + dumped = True + time.sleep(2) + if dumped: + break +if not dumped: + print("no live soothe2 process observed") +print("killing reaper") +proc.terminate() +time.sleep(1) +if proc.poll() is None: + proc.kill() \ No newline at end of file diff --git a/harness_fastdump.py b/harness_fastdump.py new file mode 100644 index 0000000..8df76e9 --- /dev/null +++ b/harness_fastdump.py @@ -0,0 +1,92 @@ +#!/usr/bin/env python3 +import os, glob, sys, time, subprocess + +REAPER = "/usr/bin/reaper" +RPP = "/home/m/soothe-bt/render_rt.rpp" +OUTDIR = "/home/m/re-tools/regions_rt" + +os.makedirs(OUTDIR, exist_ok=True) + +def find_soothe2_pid(): + for p in glob.glob('/proc/[0-9]*'): + try: + pid = int(os.path.basename(p)) + cmd = open(p + '/cmdline','rb').read().replace(b'\0',b' ').decode('utf8','replace') + if 'yabridge' not in cmd and 'wine' not in cmd: + continue + maps = open(f'/proc/{pid}/maps').read() + if 'soothe2' in maps: + st = open(p + '/stat','rb').read().decode('utf8','replace') + state = st.split(')')[-1].split()[0] + return pid, state + except Exception: + pass + return None, None + +def init_ok(pid, base=0x180000000): + try: + maps = open(f'/proc/{pid}/maps').read() + except Exception: + return False + seen = 0 + for line in maps.splitlines(): + parts = line.split() + if len(parts) < 6: continue + lo = int(parts[0].split('-')[0],16) + if 'r' in parts[1] and base <= lo < base+0x7000000: + seen += 1 + return seen >= 8 + +def dump_module(pid, base=0x180000000, extent=0x7000000): + maps = open(f'/proc/{pid}/maps').read() + readable = [] + for line in maps.splitlines(): + parts = line.split() + if len(parts) < 6: continue + lo, hi = (int(x,16) for x in parts[0].split('-')) + if 'r' in parts[1] and (base <= lo < base+extent): + readable.append((lo, hi, parts[1])) + print(f' pid {pid}: {len(readable)} regions') + mem = os.open(f'/proc/{pid}/mem', os.O_RDONLY) + total = 0 + for lo, hi, perms in readable: + try: + data = os.pread(mem, hi-lo, lo) + total += len(data) + fn = os.path.join(OUTDIR, f'pid{pid}_{lo:08x}_{hi:08x}.bin') + with open(fn,'wb') as f: f.write(data) + except Exception as e: + print(' fail', lo, e) + os.close(mem) + print(f' dumped total {total} bytes in {time.time()-T0:.1f}s') + +T0 = time.time() +print("spawning reaper (realtime render)...") +proc = subprocess.Popen( + [REAPER, "-nosplash", "-renderproject", RPP], + stdout=open('/tmp/harness_fast.log','w'), stderr=subprocess.STDOUT, + env={**os.environ}) +print("reaper pid", proc.pid) + +deadline = time.time() + 200 +dumped = False +while time.time() < deadline and proc.poll() is None: + pid, state = find_soothe2_pid() + if pid and init_ok(pid): + print(f' found pid {pid} state {state}, dumping...') + try: + dump_module(pid) + except Exception as e: + print(' dump error:', e) + dumped = True + break + time.sleep(0.05) + +if not dumped: + print("no live soothe2 captured") +print("waiting for render to finish...") +try: + proc.wait(timeout=240) +except Exception: + proc.kill() +print(f"done in {time.time()-T0:.0f}s, exit {proc.returncode}") \ No newline at end of file diff --git a/measure.py b/measure.py new file mode 100644 index 0000000..13b8dba --- /dev/null +++ b/measure.py @@ -0,0 +1,114 @@ +#!/usr/bin/env python3 +"""Burst analyzer for soothe2 renders. +Reads a 24-bit stereo wav (fx) and dry, computes bin magnitude at fc with a +10ms sliding window, then tracks NOTCH DEPTH over time: + reduction(t) = -20*log10(g_fx(t)/g_dry(t)) (>=0 when suppressed) +and fits: + - settled depth (mean over plateau window) + - attack tau (fit reduction: A*(1-exp(-(t-t0)/tau)) on burst onset) + - release tau (fit reduction: A*exp(-(t-b1)/tau) after burst end) +Works best when a weak probe tone at fc is present during the whole file so +the notch remains observable after the burst (see synth_burstp.py). +Usage: measure.py --fc 500 [--burst 0.5 1.5] [--name X] +""" +import argparse, os +import numpy as np + +def read_wav(path): + import wave + w = wave.open(path, 'rb') + sw, nc, n = w.getsampwidth(), w.getnchannels(), w.getnframes() + d = np.frombuffer(w.readframes(n), dtype=np.uint8).reshape(n, nc, sw) + w.close() + ch = d[:, 0, :] + v = ch[:, 0].astype(np.int64) | (ch[:, 1].astype(np.int64) << 8) | (ch[:, 2].astype(np.int64) << 16) + v = (v ^ (1 << 23)) - (1 << 23) + return v.astype(np.float64) / (1 << 23) + +def mag_at(x, fc, sr, win=0.010): + w = int(sr * win) + n = x.size // w + if n == 0: return np.array([]) + xw = x[:n * w].reshape(n, w) + X = np.fft.rfft(xw, axis=1) + k = int(round(fc * w / sr)) + return 2.0 * np.abs(X[:, k]) / w + +def fit_tau(t, red, t0, A, lo, hi, t1=None, invert=False, floor=None): + """fit red(t) = A*(1-exp(-(t-t0)/tau)) [invert=False] or A*exp(-(t-t0)/tau) [invert]. + Window [t0, t1]; grid search tau on [lo,hi] by r2. Returns (tau, r2).""" + if t1 is None: + t1 = t0 + 1.5 + m = (t >= t0) & (t <= t1) + tt, rr = t[m], red[m] + if floor is not None: + rr = rr - floor + if rr.size < 4: return (float('nan'), 0.0) + best, bestr2 = None, -1e9 + for tau in np.geomspace(lo, hi, 200): + if invert: + pred = A * np.exp(-(tt - t0) / tau) + else: + pred = A * (1 - np.exp(-(tt - t0) / tau)) + ss = 1 - np.sum((rr - pred) ** 2) / np.sum((rr - rr.mean()) ** 2) + if ss > bestr2: + bestr2, best = ss, tau + return (best, bestr2) + +def profile(fx_path, dry_path, freqs, win0=1.6, win1=3.0, sr=44100, win=0.010): + """Notch transfer profile via probe tones: red(f) in window. Returns dict f->dB.""" + fx = read_wav(fx_path); dry = read_wav(dry_path) + n = min(fx.size, dry.size) + fx, dry = fx[:n], dry[:n] + out = {} + for f in freqs: + mf = mag_at(fx, f, sr, win); md = mag_at(dry, f, sr, win) + tw = (np.arange(min(mf.size, md.size)) + 0.5) * win + m = (tw >= win0) & (tw <= win1) + if m.sum() == 0: + out[f] = float('nan'); continue + out[f] = -20 * np.log10( + np.maximum(mf[m].mean(), 1e-9) / np.maximum(md[m].mean(), 1e-9)) + return out + +def measure(fx_path, dry_path, fc=500.0, burst=(0.5, 1.5), sr=44100, win=0.010): + fx = read_wav(fx_path); dry = read_wav(dry_path) + n = min(fx.size, dry.size) + fx, dry = fx[:n], dry[:n] + mf = mag_at(fx, fc, sr, win); md = mag_at(dry, fc, sr, win) + tw = (np.arange(mf.size) + 0.5) * win + nmin = min(mf.size, md.size) + tw, mf, md = tw[:nmin], mf[:nmin], md[:nmin] + guard = 1e-9 + red = -20 * np.log10(np.maximum(mf, guard) / np.maximum(md, guard)) + + b0, b1 = burst + pl0, pl1 = b1 - 0.30, b1 - 0.01 + pm = (tw >= pl0) & (tw <= pl1) + settled = red[pm].mean() if pm.sum() else float('nan') + + # attack: relative rise of reduction from burst start; A=settled + t0a = b0 + ta, r2a = fit_tau(tw, red, t0a, max(settled, 0.001), 0.001, 1.0, t1=b1 - 0.03) + # release: decay (invert) after burst end; A=settled, toward a floor + # floor = mean of red in the last stable probe window (well after burst) + tail = (tw >= b1 + 0.35) & (tw <= b1 + 0.85) + floor = red[tail].mean() if tail.sum() else 0.0 + tr, r2r = fit_tau(tw, red, b1, max(settled - floor, 0.001), 0.001, 5.0, + t1=b1 + 0.35, invert=True, floor=floor) + + return dict(depth_db=settled, attack_tau=ta, attack_r2=r2a, + release_tau=tr, release_r2=r2r) + +if __name__ == '__main__': + ap = argparse.ArgumentParser() + ap.add_argument('fx'); ap.add_argument('dry') + ap.add_argument('--fc', type=float, default=500.0) + ap.add_argument('--burst', nargs=2, type=float, default=[0.5, 1.5]) + ap.add_argument('--name') + a = ap.parse_args() + r = measure(a.fx, a.dry, a.fc, tuple(a.burst)) + nm = a.name or os.path.basename(a.fx) + print(f"{nm}: depth={r['depth_db']:7.2f}dB att_tau={r['attack_tau']*1000:7.2f}ms " + f"(r2={r['attack_r2']:.3f}) rel_tau={r['release_tau']*1000:7.2f}ms " + f"(r2={r['release_r2']:.3f})") \ No newline at end of file diff --git a/mkbase.py b/mkbase.py new file mode 100644 index 0000000..094fecb --- /dev/null +++ b/mkbase.py @@ -0,0 +1,9 @@ +import re, sys +def patch_tt(template, src_wav, out_rpp, out_wav, dur=6.0): + t = open(template).read() + t = t.replace('/home/m/soothe-bt/testtone.wav', src_wav) + ns = int(44100*dur) + t = re.sub(r'LENGTH 6\.000000 264600 264600 1', f'LENGTH {dur:.6f} {ns} {ns} 1', t) + t = re.sub(r'NAME ".*?"', 'NAME "' + out_wav.split("/")[-1] + '"', t) + t = t.replace('RENDER_FILE "/home/m/soothe-bt/tt_ref.wav"', f'RENDER_FILE "{out_wav}"') + open(out_rpp, 'w').write(t) diff --git a/notch.py b/notch.py new file mode 100644 index 0000000..f8a8124 --- /dev/null +++ b/notch.py @@ -0,0 +1,90 @@ +#!/usr/bin/env python3 +import sys, os, struct +import numpy as np + +SR = 44100 + +def read_wav(path): + d = open(path, 'rb').read() + i = 12 + ch = bps = None + data_off = data_sz = None + while i + 8 <= len(d): + cid = d[i:i+4]; sz = struct.unpack('= fl) & (frq <= fh) + total += float(np.sum(np.abs(X[m])**2)) + frames += 1 + if frames == 0: return -300.0 + return 10*np.log10(total/frames + 1e-30) + +def main(): + # probe band around the carrier at flexible freqs + center = float(sys.argv[1]) + outs = sys.argv[2:] + half_w = float(os.environ.get('PROBE_BW', 800.0)) + widths = [] + step = float(os.environ.get('PROBE_STEP', 25.0)) + f = center - half_w + while f <= center + half_w: + widths.append(f) + f += step + datas = {p: load(p) for p in outs} + colw = 11 + print(f"{'freq':>6}" + ''.join(f" {os.path.basename(p)[:colw]:>{colw}}" for p in outs)) + prevbase = None + for fl in widths: + fh = fl + step + row = f"{fl + step/2:6.0f}" + base = None + for p in outs: + d = band_db(datas[p], fl, fh) + if base is None: base = d + row += f" {d:>{colw}.1f}" + print(row) + # also print relative-to-first file per bin is tricky; print a second table relative to first col + print("--- relative dB to first file ---") + for fl in widths: + fh = fl + step + row = f"{fl + step/2:6.0f}" + first = None + for p in outs: + d = band_db(datas[p], fl, fh) + if first is None: first = d + row += f" {d - first:>+{colw}.1f}" + print(row) + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/patchparam.py b/patchparam.py new file mode 100644 index 0000000..862bf72 --- /dev/null +++ b/patchparam.py @@ -0,0 +1,62 @@ +#!/usr/bin/env python3 +"""Patch a soothe2 PARAM value inside an RPP's base64 state block. +Usage: patchparam.py param=value [param=value...] +Value formatting: %16 params (depth, band freq/q/sens/balance, offset etc) +need %.16f; short params (selectivity, mix, mode, oversample, resolution, +attack, band on/balance?) use 'X.0'. Append '!' to force %.16f, e.g. +depth=0.0! to guarantee full precision. +""" +import re, sys, base64 + +def fmt(val: float, force16: bool): + if force16: + return '%.16f' % val + s = repr(val) + if '.' not in s: + s += '.0' + if '.' in s and float(s) == int(float(s)) and len(s.rstrip('0').rstrip('.')) <= 4: + return s.rstrip('0').rstrip('.') if '.' in s else s + return '%.16f' % val + +def main(): + src, out = sys.argv[1], sys.argv[2] + params = {} + for a in sys.argv[3:]: + if a in ('-f16',): + continue + k, v, f16 = a.split('=', 1)[0], a.split('=', 1)[1], '!' in a + params[k] = (float(v.rstrip('!')), f16) + s = open(src, encoding='utf8', errors='replace').read() + i = s.find('PpeX') + if i < 0: + i = s.find('VkMy') + if i < 0: + sys.exit('no state block found') + j = s.find('>', i) + if j < 0: + sys.exit('malformed state block') + block = s[i:j] + raw = bytearray(base64.b64decode(block)) + txt = raw.decode('latin-1') + n = 0 + for pm in re.finditer(r'(', txt): + did = pm.group(2) + if did in params: + val, f16 = params[did] + txt = txt[:pm.start()] + pm.group(1) + fmt(val, f16) + pm.group(3) + '/>' + txt[pm.end():] + n += 1 + if n != len(params): + print(f'warning: patched {n}/{len(params)} params') + raw = txt.encode('latin-1') + enc = base64.b64encode(raw).decode('ascii') + line_start = s.rfind('\n', 0, i) + 1 + indent = s[line_start:i] + wrapped = '\n'.join(indent + enc[i:i+128] for i in range(0, len(enc), 128)) + jline = s.rfind('\n', 0, j) + 1 + gt_indent = s[jline:j] + s = s[:line_start] + wrapped + '\n' + gt_indent + s[j:] + open(out, 'w', encoding='utf8').write(s) + print(f'{out}: patched {n} params') + +if __name__ == '__main__': + main() diff --git a/pipeline_ocr.txt b/pipeline_ocr.txt new file mode 100644 index 0000000..10e2fb3 --- /dev/null +++ b/pipeline_ocr.txt @@ -0,0 +1,229 @@ +depth + +sharpness + +/ + +\ + +selectivity + +visualisation + +\. + +(GUI) + +f + +\ + +N + +y, + +[ per-band balances }controls—> EQ curves + +N + +N + +controls + +channel link + +f + +\ + +\ + +\ + +[ + +\ + +( + +\ + +f + +\ + +/ + +\ + +[ + +/ + +\ + +. + +f + +\ + +—> + +—> + +—» + +—> + +global + +—> + +—> + +sidechain + +ms encode? + +sidechain + +stereo + +apply + +trim + +inputs + +enabled? + +input trim + +X + +analysis + +balance + +processing + +—> + +—> + +—> + +— + +— > + +— + +- + +J + +. + +/ + +\ + +/ + +\- + +/ + +\ + +y + +\- + +/ + +Ny + +/ + +N + +Yy + +A + +A + +\ + +/ + +\ + +/ + +\ + +/ + +\ + +s + +f + +\ + +f + +\ + +< + +> + +> + +—> + +> + +ms encode? + +mix + +ms decode? + +main inputs + +bypass? + +output + +> + +—> + +\ + +y + +\. + +/ + +. + +y + +. + +y + +\ + +y + +—, J"—) diff --git a/probe.py b/probe.py new file mode 100644 index 0000000..1d2ad5e --- /dev/null +++ b/probe.py @@ -0,0 +1,66 @@ +#!/usr/bin/env python3 +import sys, os, struct +import numpy as np + +SR = 44100 +TONES = [110, 220, 440, 880, 1760, 3520, 7040, 14080] + +def read_wav(path): + d = open(path, 'rb').read() + i = 12 + ch = bps = None + data_off = data_sz = None + while i + 8 <= len(d): + cid = d[i:i+4]; sz = struct.unpack(' n0: n0 = len(y) + print(f"{'Hz':>5}" + ''.join(f" {os.path.basename(p)[:colw]:>{colw}}" for p in outs)) + for f in TONES: + row = f"{f:5d}" + base = None + for p in outs: + d = tone_db(datas[p], f) + if base is None: base = d + row += f" {d:>{colw}.1f}" + print(row, f" (rel ref {outs[0]})") + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/procdump.py b/procdump.py new file mode 100644 index 0000000..42fddcb --- /dev/null +++ b/procdump.py @@ -0,0 +1,52 @@ +#!/usr/bin/env python3 +import os, glob, sys, re, time + +def find_procs(): + out = [] + for p in glob.glob('/proc/[0-9]*'): + try: + cmd = open(p + '/cmdline','rb').read().replace(b'\0',b' ').decode('utf8','replace') + st = open(p + '/stat','rb').read().decode('utf8','replace') + state = st.split(')')[-1].split()[0] + except Exception: + continue + if 'yabridge' in cmd or 'wine' in cmd: + out.append((int(os.path.basename(p)), state, cmd.strip())) + return out + +def dump_module(pid): + maps = open(f'/proc/{pid}/maps').read() + regs = [] + for line in maps.splitlines(): + parts = line.split() + if len(parts) < 6: continue + addr, perms, off, dev, ino, *rest = parts + if 'soothe2' in ' '.join(rest) and 'r' in perms: + lo, hi = (int(x,16) for x in addr.split('-')) + regs.append((lo, hi, perms, ' '.join(rest))) + if not regs: + print(f' pid {pid}: no soothe2 maps') + return + print(f' pid {pid}: {len(regs)} sobering readable regions') + total = 0 + mem = os.open(f'/proc/{pid}/mem', os.O_RDONLY) + try: + for lo, hi, perms, path in regs: + size = hi - lo + try: + data = os.pread(mem, size, lo) + except Exception as e: + print(f' region {lo:#x}-{hi:#x} ({perms}) READ FAIL: {e} [{path}]') + continue + fn = f'/home/m/re-tools/regions/pid{pid}_{lo:08x}_{hi:08x}_{perms.replace("-","")}.bin' + with open(fn,'wb') as f: f.write(data) + total += len(data) + print(f' dumped {lo:#x}-{hi:#x} size={len(data):#x} rw={perms} -> {fn.split("/")[-1]}') + finally: + os.close(mem) + print(f' total {total} bytes') + +for pid, state, cmd in find_procs(): + print(f'{pid} [{state}] {cmd}') + if state == 'S': + dump_module(pid) \ No newline at end of file diff --git a/roadmap.md b/roadmap.md new file mode 100644 index 0000000..43e9f84 --- /dev/null +++ b/roadmap.md @@ -0,0 +1,94 @@ +# Roadmap: bit-exact реверс DSP-ядра oeksound soothe2 (v1.1.2) + +## Цель +Воспроизвести DSP-путь soothe2 в виде **собираемого standalone C++** с **побайтово идентичным** +выходом (bit-exact) на верификационных свипах, с пониманием логики и подписанными функциями. + +## Результат +`re-tools/dsp/` — `*.cpp/*.h` (классы DSP, подписаны), `CMakeLists.txt`, `harness.cpp` +(WAV16 → рендер → WAV24), `dsp_notes.md` (карта функция↔смысл, константы, LUT), +`verify_bit_exact.py` (прогон всех свипов, побайтовое сравнение). + +## Задел (уже есть) +- Ghidra-проект `ghidra-proj/soothe2.rep` + скрипты `Dump*.java`/`ImportRtti*.java`/`Diag.java`. +- RTTI иерархия DSP: `SpectralProcessor`, `Soothe2ModuleBase`, + `Soothe2Module`, `FilterGraph`, `FilterGraphGrid`, + `DigitalFilter`, `IIRFilterExtended`, `AudioProcessingModule` + (`rtti_dsp.json`, `rtti_full.json`). +- Декомпиляция vtable-слотов DSP-классов (`decomp_dsp.txt`, `decomp_vtables.txt`, + `decomp_candidates.txt`) — 6634 строки C, 127 неразрешённых `FUN_*`, ~30 констант `DAT_1824c*`. +- Поведенческая модель `sim_v5.py` (RMSE ≈ 0.3dB): base_red, W(f)=6.02·min(1,sens/12)·H, + H=1/√(1+(Qeff·A)²), Qeff=1.54·q^1.33, sat(level), Q_notch=qn·(1−g)+1, per-frame env, WOLA-маска. +- LUT: depthcurve (207 float @0x1826170e8, `0.302+0.698·sin(π/2·x)^0.94`, r²=0.99999). +- Рендер-свипы в `/home/m/soothe-bt/` (506 wav + 609 rpp) — эталон для bit-exact. + +## Контракт из manual (`soothe2_ManualFAQ.pdf`, v1.0.0) + +| # | Факт | Следствие для DSP | +|---|---|---| +| M1 | Soft/Hard: выбор режима меняет всё; depth 3.0 в soft ≠ hard (стр.7). Soft менее level-dependent | mode = глобальный препроцессор детектора (перемасштаб глубины/масштаба) | +| M2 | Depth — референтный dB (−18..18), реальная глубина до 60dB (стр.8) | вход depthcurve-LUT; clip 60dB = `red.clip(0,60)` в sim | +| M3 | Sharpness: выше = глубже и уже (стр.8) | Q_notch растёт с sharp; подтверждает `Q≈qn·(1−g)` | +| M4 | Selectivity: выше = только сильные резонансы; 0 = «everything must go» (стр.9) | selectivity = отбор/порог пиков, число нотчей НЕ ограничивает | +| M5 | Attack/Release: референтные константы, **реальные времена частотно-зависимы**, атака быстрее на ВЧ (стр.11) | Env НЕ один one-pole; нужен частотный масштаб времени — замер τ(f) + код | +| M6 | Oversample = «расчёт reduction-фильтра в более высоком спектральном разрешении» (стр.11) | это интерполяция детекторной сетки → фильтра, НЕ up/downsample аудио | +| M7 | Resolution = «частота обновления детекции и фильтра» (стр.11), eco/high/ultra | период пересчёта коэффициентов фильтра | +| M8 | Stereo: link 100% = сумма каналов для анализа + общий фикс; 0% = dual mono; balance глоб+per-band; L/R vs M/S | детектор на sum; коррекция симметрична/раздельна | +| M9 | Trim: «регулирует ТОЛЬКО wet»; Delta = x−wet; Mix 0..100% (стр.14) | порядок: detect→notch→trim→mix/delta/bypass | +| M10 | Банды: 2 cut + 4 general; general: peak/shelf/reject/tilt (стр.17-19) | `FilterGraph`, `DigitalFilter` мультитипный | +| M11 | Кривая = «inverse EQ / side-chain EQ», сумма band-кривых = белая кривая (стр.17) | `red(f)=base+ΣW_i·H_i` подтверждён | +| M12 | Sidechain: детект по второму входу; Input trim — скрытый предусилитель анализа (стр.26) | analysis имеет отдельный вход/гейн — граф с 2 входами | + +## Топология пайплайна (Приложение A, стр.30 — OCR `pipeline_ocr.txt`) + +``` + main inputs ──┐ + sidechain ────┤ (sidechain enabled?) + ▼ + input trim ──► analysis (детекция; depth/sharpness/selectivity; EQ curves из per-band balances) + │ + stereo apply + balance (channel link + global balance) + │ + ms encode? ──► processing (нотч-синтез в M/S) ──► ms decode? + │ + mix ──► bypass? ──► output +``` +- **mid/side ручка**: обработка в M/S-области (`ms encode?`/`ms decode?`) — стерео-путь подтверждён диаграммой. +- GUI/visualisation (depth/sharpness/selectivity, EQ curves, per-band balances) — побочная ветвь, в DSP-ядро не входит (кроме параметров). + +## Фазы + +### Фаза 0 — Снятие диаграммы пайплайна (сделано) +0.1. OCR стр.30 (`tesseract`, PNG в `/tmp/opencode/manual/p30_s4.png`) → `pipeline_ocr.txt`. ✅ + +### Фаза A — Полный статический RE (Ghidra headless) +- A.1. Декомпилировать все 127 `FUN_*` из vtable-слотов 8 DSP-классов → полный `processBlock`-путь. +- A.2. Извлечь float-константы `DAT_1824c*` + все LUT-таблицы в `.data` (поиск массивов float). +- A.3. **Идентифицировать FFT** (twiddle/бит-реверс/радикс) и окно (формула `sin²` vs LUT) — ключ bit-exact. +- A.4. Найти частотно-зависимые attack/release (M5): функции масштабирования времени по частоте. +- A.5. Найти oversample/resolution-путь (M6/M7): интерполяция сетки, период обновления. +- A.6. Сопоставить топологию с диаграммой (0.1) и stereo/link/balance (M8). + +### Фаза B — Реконструкция C++ (bit-exact) +- B.1. Классы 1:1: `Soothe2FilterGraph::processBlock`, `FilterGraphGrid`, `DigitalFilter`, + `SpectralProcessor` (STFT), `AudioProcessingModule`, `IIRFilterExtended`, env-модуль с + частотным масштабом (M5), интерполятор oversample (M6), периодичность resolution (M7). +- B.2. Точный порядок FP-операций float32, без перестановок; буферный фрейминг независимо от блока хоста. +- B.3. Имена по смыслу + подписи, сверяемые с моделью sim_v5 (base_red, W, Qeff, sat, Q_notch). +- B.4. Модули по manual: mode (M1), input trim/sidechain (M12), trim/delta/mix/bypass-порядок (M9), + stereo/link/balance + ms encode/decode (M8). + +### Фаза C — Сборка и bit-exact-верификация +- C.1. `libsoothe2_dsp.so` + CLI-харнесс (WAV16→рендер→WAV24, как Reaper). +- C.2. Критерий: каждый свип (`trk_*`, `wf_*`, `qmap`, `sens`, `lvl`, `neut`, `al`, `psh`, + `dual`, `pair`, `chirp`, `burst`, `tj`) — **побайтовая идентичность** int24 PCM с рендерами. +- C.3. Итеративный цикл diff → локализация блока → фикс → повтор. + +## Риски +- **FFT bit-exact**: если FFTW — нужна та же сборка; свой radix-2 — воспроизводим напрямую (A.3). +- **Хост-зависимость**: уточнить точный размер буфера/фрейма (рендеры при разных RENDER_RANGE должны давать одинаковые байты). +- **Stereo**: все текущие свипы mono; для бит-exact графа M8 нужны стерео-рендеры (link/balance/ms). + +## Открытые вопросы +1. Окна/oversample детали — из декомпиляции (A.6) или требуется доп. замеры. +2. Стерео-верификация (M8) — приоритет mono-путь или сразу стерео-граф. diff --git a/rtdump.py b/rtdump.py new file mode 100644 index 0000000..eaee036 --- /dev/null +++ b/rtdump.py @@ -0,0 +1,62 @@ +#!/usr/bin/env python3 +import subprocess, os, glob, sys, time + +RPP = sys.argv[1] if len(sys.argv) > 1 else "/home/m/soothe-bt/render_rt.rpp" +OUT = sys.argv[2] if len(sys.argv) > 2 else "/home/m/re-tools/rt.bin" + +proc = subprocess.Popen( + ['reaper', '-nosplash', '-renderproject', RPP], + stdout=open('/tmp/rtdump.log', 'w'), stderr=subprocess.STDOUT) +print('reaper', proc.pid, flush=True) + +base = 0x180000000 +extent = 0x7000000 +host = None +deadline = time.time() + 90 +while time.time() < deadline and proc.poll() is None: + for p in glob.glob('/proc/[0-9]*'): + try: + pid = int(os.path.basename(p)) + cmd = open(p + '/cmdline', 'rb').read().replace(b'\0', b' ').decode('utf8', 'replace') + if 'yabridge-host' not in cmd: + continue + maps = open(f'/proc/{pid}/maps').read() + if 'soothe2' in maps: + host = pid + break + except Exception: + pass + if host: + break + time.sleep(0.2) +print('host', host, flush=True) +if not host: + proc.kill() + sys.exit('no host') + +readable = [] +maps = open(f'/proc/{host}/maps').read() +for line in maps.splitlines(): + parts = line.split() + lo, hi = (int(x, 16) for x in parts[0].split('-')) + if 'r' in parts[1] and base <= lo < base + extent: + readable.append((lo, hi, parts[1])) +print('regions:', len(readable), flush=True) + +mem = os.open(f'/proc/{host}/mem', os.O_RDONLY) +outdir = OUT + '.regions' +os.makedirs(outdir, exist_ok=True) +with open(OUT, 'wb') as out: + total = 0 + for lo, hi, _ in readable: + try: + d = os.pread(mem, hi - lo, lo) + out.write(d) + total += len(d) + with open(os.path.join(outdir, f'{lo:08x}_{hi:08x}.bin'), 'wb') as rf: + rf.write(d) + except Exception as e: + print('fail', hex(lo), e, flush=True) +os.close(mem) +print('dumped', total, flush=True) +proc.kill() \ No newline at end of file diff --git a/rtti_dsp.json b/rtti_dsp.json new file mode 100644 index 0000000..07a9b44 --- /dev/null +++ b/rtti_dsp.json @@ -0,0 +1,2210 @@ +{ + ".?AVDecryptionAssistData@fusion@thrift@eden@pace@@": { + "col": 6481093312, + "vftable": 6471502328, + "funcs": [ + 6448631184, + 6481093432, + 6448630896, + 6481093552, + 6448631248, + 6481093720, + 6448631312, + 7596286578345654884, + 6659817200458429294, + 7596555920107463781, + 7305790155740442213, + 7308620316236145500, + 8241994560065789042, + 6657290513981597033, + 7378412834664900972, + 7596548300852523893, + 7809632516216612195, + 7953753227351122540, + 8102084780778417252, + 0, + 0, + 7575166119466855504, + 7953674101420553070, + 7599578542011869472, + 7163375568633751668, + 8245921732065717861, + 6998719642545104160, + 2334399943808742499, + 8317697039444746337, + 8297073564367331429, + 8247620858624832544, + 7310597220861960992, + 8367798532893060210, + 8315178112915498344, + 5702155698120695923, + 8031172083014705739, + 7957688057546940526, + 8319591506770815348, + 8316293034885475945, + 8386676005320945696 + ] + }, + ".?AVGetContentDecryptionKeyInput@authorize@thrift@eden@pace@@": { + "col": 6481116336, + "vftable": 6471539168, + "funcs": [ + 6449262080, + 6481116456, + 6449262144, + 6481116576, + 6449262208, + 6481116696, + 6449262256, + 6481116816, + 6449265008, + 6481116936, + 6449265072, + 6481117056, + 6449265136, + 6481117176, + 6449265200, + 6481117296, + 6449265808, + 6481117416, + 6449265856, + 6481117536, + 6449265968, + 6481117656, + 6449266032, + 6481117776, + 6449266288, + 6481117896, + 6449266368, + 6481118016, + 6449259168, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6481118176, + 6449258432, + 6449380368, + 6449462588, + 6449292160 + ] + }, + ".?AVGetContentDecryptionKeyReturn@authorize@thrift@eden@pace@@": { + "col": 6481116456, + "vftable": 6471539184, + "funcs": [ + 6449262144, + 6481116576, + 6449262208, + 6481116696, + 6449262256, + 6481116816, + 6449265008, + 6481116936, + 6449265072, + 6481117056, + 6449265136, + 6481117176, + 6449265200, + 6481117296, + 6449265808, + 6481117416, + 6449265856, + 6481117536, + 6449265968, + 6481117656, + 6449266032, + 6481117776, + 6449266288, + 6481117896, + 6449266368, + 6481118016, + 6449259168, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6481118176, + 6449258432, + 6449380368, + 6449462588, + 6449292160, + 6449361360, + 6449433292 + ] + }, + ".?AVAuthorizationFull_createDecryptionAssistData_pargs@authorize@thrift@eden@pace@@": { + "col": 6481127400, + "vftable": 6471663472, + "funcs": [ + 6450564160, + 6481127520, + 6450564208, + 6481127640, + 6450564336, + 6481127760, + 6450564384, + 6481127880, + 6450564512, + 6481128000, + 6450564560, + 6481128120, + 6450564688, + 6481128240, + 6450564736, + 6481128360, + 6450564864, + 6481128480, + 6450564912, + 6481128600, + 6450565040, + 6481128720, + 6450565088, + 6481128840, + 6450565216, + 6481128960, + 6450565264, + 6481129080, + 6450565392, + 6481129200, + 6450565440, + 6481129320, + 6450565568, + 6481129440, + 6450565616, + 6481129560, + 6450565744, + 6481129680, + 6450565792, + 6481129800 + ] + }, + ".?AVAuthorizationFull_createDecryptionAssistData_presult@authorize@thrift@eden@pace@@": { + "col": 6481127520, + "vftable": 6471663488, + "funcs": [ + 6450564208, + 6481127640, + 6450564336, + 6481127760, + 6450564384, + 6481127880, + 6450564512, + 6481128000, + 6450564560, + 6481128120, + 6450564688, + 6481128240, + 6450564736, + 6481128360, + 6450564864, + 6481128480, + 6450564912, + 6481128600, + 6450565040, + 6481128720, + 6450565088, + 6481128840, + 6450565216, + 6481128960, + 6450565264, + 6481129080, + 6450565392, + 6481129200, + 6450565440, + 6481129320, + 6450565568, + 6481129440, + 6450565616, + 6481129560, + 6450565744, + 6481129680, + 6450565792, + 6481129800, + 6450565920, + 6481129920 + ] + }, + ".?AVAuthorizationFull_getContentDecryptionKey_pargs@authorize@thrift@eden@pace@@": { + "col": 6481131240, + "vftable": 6471663984, + "funcs": [ + 6450566976, + 6481131360, + 6450567024, + 6481131480, + 6450567152, + 6481131600, + 6450567200, + 6481131720, + 6450567328, + 6481131840, + 6450567376, + 6481131960, + 6450567504, + 6481132080, + 6450567552, + 6481132200, + 6450567680, + 6481132320, + 6450567728, + 6481132440, + 6450567856, + 6481132560, + 6450567904, + 6481132680, + 6450568032, + 6481132800, + 6450568080, + 6481132920, + 6450568208, + 6481133040, + 6450568256, + 6481133160, + 6450568384, + 6481133280, + 6450568432, + 6481133400, + 6450568560, + 6481133520, + 6450568608, + 6481133640 + ] + }, + ".?AVAuthorizationFull_getContentDecryptionKey_presult@authorize@thrift@eden@pace@@": { + "col": 6481131360, + "vftable": 6471664000, + "funcs": [ + 6450567024, + 6481131480, + 6450567152, + 6481131600, + 6450567200, + 6481131720, + 6450567328, + 6481131840, + 6450567376, + 6481131960, + 6450567504, + 6481132080, + 6450567552, + 6481132200, + 6450567680, + 6481132320, + 6450567728, + 6481132440, + 6450567856, + 6481132560, + 6450567904, + 6481132680, + 6450568032, + 6481132800, + 6450568080, + 6481132920, + 6450568208, + 6481133040, + 6450568256, + 6481133160, + 6450568384, + 6481133280, + 6450568432, + 6481133400, + 6450568560, + 6481133520, + 6450568608, + 6481133640, + 6450568736, + 6481133760 + ] + }, + ".?AUDelayed@AutoCueState@@": { + "col": 6481175800, + "vftable": 6480812864, + "funcs": [ + 6447191856, + 6460818688, + 6481180728, + 6447186144, + 6461211584, + 6461258448, + 6461248080, + 6461236096, + 6481176112, + 6447231872, + 6447231808, + 6447232176, + 6447231792, + 6447231696, + 6447174160, + 6481185832, + 6447186368, + 6461108080, + 6461108032, + 6461137696, + 6461137728, + 6461131344, + 6481181168, + 6447188272, + 6460691728, + 6481184584, + 6447186144, + 6461214752, + 6461258448, + 6461214784, + 6461236096, + 652835028992, + 6481179968, + 6447190432, + 6460992864, + 6460992752, + 6460992640, + 6481186088, + 6447238144, + 6481180128 + ] + }, + ".?AV?$_Func_impl_no_alloc@UFuncWithLeakDetector@CloudyAsyncCaller@@X$$V@std@@": { + "col": 6481176112, + "vftable": 6480812936, + "funcs": [ + 6447231872, + 6447231808, + 6447232176, + 6447231792, + 6447231696, + 6447174160, + 6481185832, + 6447186368, + 6461108080, + 6461108032, + 6461137696, + 6461137728, + 6461131344, + 6481181168, + 6447188272, + 6460691728, + 6481184584, + 6447186144, + 6461214752, + 6461258448, + 6461214784, + 6461236096, + 652835028992, + 6481179968, + 6447190432, + 6460992864, + 6460992752, + 6460992640, + 6481186088, + 6447238144, + 6481180128, + 6447210944, + 6481177888, + 6447247072, + 6460822656, + 6481180912, + 6447238048, + 6481185872, + 6447188272, + 6460707728 + ] + }, + ".?AVFileFilter@juce@@": { + "col": 6481187368, + "vftable": 6480818456, + "funcs": [ + 6447270816, + 6460483674, + 6460483674, + 6481193472, + 6447255680, + 6461542816, + 6461542672, + 6461542704, + 6461546128, + 6461546048, + 6461545984, + 6461545920, + 6461545840, + 6461545760, + 6461545456, + 6461545360, + 6461545200, + 6461545040, + 6461544928, + 6461544800, + 6461545536, + 6461543728, + 6461544304, + 6461543104, + 6461543376, + 6461542608, + 6461542624, + 6461542560, + 6481193056, + 6447256128, + 6460477070, + 6460477076, + 6460477136, + 6460477142, + 6460477082, + 6460477148, + 6460477088, + 6460477094, + 6460477100, + 6460477154 + ] + }, + ".?AVWildcardFileFilter@juce@@": { + "col": 6481193432, + "vftable": 6480815080, + "funcs": [ + 6447270912, + 6461425296, + 6461425264, + 5208208757389214273, + 5786930140093827657, + 6365651522798441041, + 7378413942531512921, + 7957135325236127847, + 8535856707940741231, + 3689065129052829815, + 3398873257388422452, + 0, + 6481187128, + 6447255520, + 6461547952, + 6461547840, + 6461547248, + 6461546128, + 6461546048, + 6461545984, + 6461545920, + 6461545840, + 6461545760, + 6461545456, + 6461545360, + 6461545200, + 6461545040, + 6461544928, + 6461544800, + 6461545536, + 6461543728, + 6461547040, + 6461543104, + 6461543376, + 6461547936, + 6461547904, + 6461542928, + 6481189288, + 6447256832, + 6460483674 + ] + }, + ".?AVDeviceChangeDetector@juce@@": { + "col": 6481202560, + "vftable": 6480829672, + "funcs": [ + 6447494736, + 6447494704, + 6460483674, + 409183933770, + 5508025770450318698, + 1600873327, + 7883925120266491210, + 29285, + 6481204400, + 6447516864, + 6447516640, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6447109296, + 6460483674, + 6447516672, + 6481204232, + 6447517952, + 6462022400, + 6462022064, + 6462020128, + 6481203320, + 6447517456, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6447109296, + 6481203136, + 6447517680, + 6462025888, + 6462025856, + 6462025472 + ] + }, + ".?AVMountedVolumeListChangeDetector@juce@@": { + "col": 6481202976, + "vftable": 6480829608, + "funcs": [ + 6447503680, + 6460483674, + 6481199488, + 6447495776, + 6447495328, + 6481198640, + 6447495840, + 6481202560, + 6447494736, + 6447494704, + 6460483674, + 409183933770, + 5508025770450318698, + 1600873327, + 7883925120266491210, + 29285, + 6481204400, + 6447516864, + 6447516640, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6447109296, + 6460483674, + 6447516672, + 6481204232, + 6447517952, + 6462022400, + 6462022064, + 6462020128, + 6481203320, + 6447517456, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674 + ] + }, + ".?AVIIRFilterAudioSource@juce@@": { + "col": 6481203136, + "vftable": 6480829960, + "funcs": [ + 6447517680, + 6462025888, + 6462025856, + 6462025472, + 6481205272, + 6447518464, + 6460483674, + 6460483674, + 6460483674, + 6462017968, + 6460483674, + 6460483674, + 6462017872, + 6462017856, + 6462017664, + 6460483674, + 6462017984, + 6462018000, + 6481204528, + 6447183072, + 6460483674, + 6481205208, + 6447525540, + 6462027280, + 6481203536, + 6447520704, + 6481204128, + 6447516912, + 6462033072, + 6462032848, + 6462032624, + 6462032400, + 6462032176, + 6462031968, + 6462031760, + 6462031504, + 6462030080, + 6462030288, + 6462030496, + 6447109296 + ] + }, + ".?AUDelayChannelOp@?$GraphRenderSequence@M@juce@@": { + "col": 6481206200, + "vftable": 6480831592, + "funcs": [ + 6447560992, + 6447560336, + 6481211616, + 6447535568, + 6447534896, + 6481206240, + 6447563984, + 6447563568, + 6481206368, + 6447573184, + 6447573184, + 6447573200, + 6447573168, + 6447225600, + 6447174160, + 6481212392, + 6447559040, + 6447557008, + 6481209104, + 6447535888, + 6447535456, + 6481206656, + 6447581300, + 6462083856, + 6481210672, + 6447568480, + 6447568480, + 6447571808, + 6447568464, + 6447225984, + 6447174160, + 6481210400, + 6447529664, + 6460483674, + 6462087440, + 6481208576, + 6447527088, + 6462099936, + 6462119856, + 6462096688 + ] + }, + ".?AUDelayChannelOp@?$GraphRenderSequence@N@juce@@": { + "col": 6481207472, + "vftable": 6480834200, + "funcs": [ + 6447560912, + 6447559872, + 6481209832, + 6447563936, + 6447563440, + 6481207288, + 6447568624, + 6447568624, + 6447571680, + 6447568608, + 6447225600, + 6447174160, + 6481213216, + 6447527744, + 6481207080, + 6447535952, + 6460483674, + 6460483674, + 6460483674, + 6462121360, + 6462121312, + 6462124624, + 6462105600, + 6462123888, + 6462105552, + 6460483674, + 6462123872, + 6462105664, + 6462105648, + 6462121296, + 6462123792, + 6462127856, + 6460483674, + 6481209312, + 6447526592, + 6460483674, + 6462119856, + 6460483674, + 6460483674, + 6447109296 + ] + }, + ".?AVMouseInactivityDetector@juce@@": { + "col": 6481247640, + "vftable": 6480897800, + "funcs": [ + 6447849040, + 6447581488, + 6447581488, + 6447581488, + 6447581504, + 6447581504, + 6447581504, + 6462681856, + 6447581504, + 6462681824, + 6481224000, + 6447850956, + 6462155952, + 6481256984, + 6447835888, + 6447835888, + 6447836336, + 6447835872, + 6447225600, + 6447174160, + 6481226088, + 6447849832, + 6462433728, + 6462434576, + 6462433696, + 6481242232, + 6447601824, + 6462684160, + 6462596880, + 6462596768, + 6462596592, + 6462596064, + 6462596256, + 6462684064, + 6462683952, + 6462683856, + 6462687488, + 6462687072, + 6462595760, + 6462686112 + ] + }, + ".?AV?$AudioProcessingModule@M$01@@": { + "col": 6481268096, + "vftable": 6480905784, + "funcs": [ + 6447879552, + 6447878064, + 6447878048, + 6447109296, + 6460483674, + 20215, + 9076743667518146896, + 12422714616134243146, + 23087, + 6481277416, + 6447917728, + 6447917728, + 6447921936, + 6447917712, + 6447225600, + 6447174160, + 13914592658046159427, + 320260376924, + 7154382229308598437, + 25528, + 6481270656, + 6447918768, + 6447918768, + 6447920064, + 6447918752, + 6447225600, + 6447174160, + 6481274216, + 6447916496, + 6447916496, + 6447923472, + 6447916480, + 6447225984, + 6447174160, + 2031195209439791872, + 78168524935496, + 0, + 16816072981264251663, + 17890756257733324871, + 667364968035116281 + ] + }, + ".?AV?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@": { + "col": 6481276424, + "vftable": 6480902080, + "funcs": [ + 6447924392, + 6447873280, + 6481276992, + 6447917920, + 6447917920, + 6447921568, + 6447917904, + 6447225984, + 6447174160, + 35098, + 6481270152, + 6447917136, + 6447917136, + 6447922832, + 6447917120, + 6447225600, + 6447174160, + 6481274256, + 6447918880, + 6447918880, + 6447919760, + 6447918864, + 6447225600, + 6447174160, + 6481271056, + 6447916560, + 6447916560, + 6447923424, + 6447916544, + 6447916528, + 6447174160, + 6481267920, + 6447918432, + 6447918432, + 6447920608, + 6447918416, + 6447225600, + 6447174160, + 6481276696, + 6447918528 + ] + }, + ".?AV?$SpectralProcessor@M$07$01@@": { + "col": 6481268704, + "vftable": 6480903056, + "funcs": [ + 6447879056, + 6447878064, + 6447863120, + 6447109296, + 6447863312, + 6460483674, + 6447109296, + 6447109296, + 6447114144, + 6447109296, + 6447109296, + 6447109296, + 199503738418280, + 214159837052721, + 942224426206, + 48163786690158050, + 15199732635215812163, + 94, + 6481270088, + 6447879120, + 6447876336, + 6462119856, + 6447875232, + 6447109296, + 6447109296, + 6462114640, + 6447873952, + 6462114656, + 6447873520, + 6447116736, + 6447116736, + 6462114624, + 6460483674, + 6447116736, + 6447116736, + 6447116736, + 6447116736, + 6462114976, + 6447114144, + 6462115312 + ] + }, + ".?AVSoothe2AudioProcessor@@": { + "col": 6481276064, + "vftable": 6480904032, + "funcs": [ + 6462789792, + 6447876064, + 6447924332, + 1048371580408, + 6481268640, + 6447918960, + 6447918960, + 6447919456, + 6447918944, + 6447225600, + 6447174160, + 6481269256, + 6447916656, + 6447916656, + 6447109296, + 6447916640, + 6447225600, + 6447174160, + 6481275056, + 6447918272, + 6447918272, + 6447920928, + 6447918256, + 6447225600, + 6447174160, + 6481268288, + 6460483674, + 6447876064, + 6447924356, + 54228544076611, + 15944350892158266535, + 23820531197125289, + 12847278016066795777, + 10560612183233904457, + 6481273104, + 6447860640, + 6447109296, + 6447109296, + 6481274832, + 6447917968 + ] + }, + ".?AV?$Soothe2ModuleBase@M$01@@": { + "col": 6481270488, + "vftable": 6480906152, + "funcs": [ + 6447889728, + 6447878064, + 6447863120, + 6447109296, + 6447877632, + 6447109296, + 6447109296, + 6447109296, + 6447114144, + 6447109296, + 6447109296, + 6447109296, + 6447109296, + 6447109296, + 6447109296, + 6447109296, + 6447109296, + 6447109296, + 6447109296, + 6447109296, + 6447109296, + 6447109296, + 6447109296, + 6447109296, + 6447877824, + 6447877776, + 6447877760, + 6447114144, + 6447877744, + 6447188080, + 6447109296, + 6447109296, + 4958379800140824160, + 521130258728, + 6481279752, + 6447982112, + 6463094448, + 6463094512, + 6462819456, + 6462819424 + ] + }, + ".?AV?$IIRFilterExtended@M$01@@": { + "col": 6481271576, + "vftable": 6480905688, + "funcs": [ + 6447908528, + 6447878064, + 6447878048, + 6447889232, + 6447889200, + 6481275392, + 6447924320, + 6447109296, + 6447864912, + 2064833067380298668, + 803538719999, + 6481268096, + 6447879552, + 6447878064, + 6447878048, + 6447109296, + 6460483674, + 20215, + 9076743667518146896, + 12422714616134243146, + 23087, + 6481277416, + 6447917728, + 6447917728, + 6447921936, + 6447917712, + 6447225600, + 6447174160, + 13914592658046159427, + 320260376924, + 7154382229308598437, + 25528, + 6481270656, + 6447918768, + 6447918768, + 6447920064, + 6447918752, + 6447225600, + 6447174160, + 6481274216 + ] + }, + ".?AV?$_Func_impl_no_alloc@V?$_Binder@U_Unforced@std@@P8?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@EAAXXZPEAV3@@std@@X$$V@std@@": { + "col": 6481271056, + "vftable": 6480902280, + "funcs": [ + 6447916560, + 6447916560, + 6447923424, + 6447916544, + 6447916528, + 6447174160, + 6481267920, + 6447918432, + 6447918432, + 6447920608, + 6447918416, + 6447225600, + 6447174160, + 6481276696, + 6447918528, + 6447918528, + 6447920352, + 6447918512, + 6447225600, + 6447174160, + 6481272976, + 6447917040, + 6447917040, + 6447923040, + 6447917024, + 6447225600, + 6447174160, + 159398494903017, + 6481275208, + 6447916752, + 6447916752, + 6447923216, + 6447916736, + 6447225600, + 6447174160, + 116913320389845, + 29934699616803, + 6481273272, + 6447917616, + 6447917616 + ] + }, + ".?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@": { + "col": 6481272792, + "vftable": 6480900648, + "funcs": [ + 6447879456, + 6460483674, + 12236060219235247538, + 3571460498590229695, + 873140123781040144, + 6481268744, + 6447924368, + 6462752032, + 39628, + 9249055085719729822, + 15011396420900693662, + 13725, + 6481276512, + 6447917232, + 6447917232, + 6447922512, + 6447917216, + 6447225600, + 6447174160, + 51134413789772905, + 16264330899661702037, + 54162, + 6481269000, + 6447862432, + 6447876336, + 6462119856, + 6447875232, + 6447109296, + 6447109296, + 6462114640, + 6447873952, + 6462114656, + 6462766384, + 6447116736, + 6447116736, + 6462114624, + 6462775312, + 6447116736, + 6447116736, + 6447116736 + ] + }, + ".?AVSoothe2ModuleDecryptor@@": { + "col": 6481274152, + "vftable": 6480903784, + "funcs": [ + 6447879456, + 6463302240, + 610414313767493062, + 6481269296, + 6447917648, + 6447917648, + 6447920768, + 6447917632, + 6447225600, + 6447174160, + 61840095711572517, + 246054381423050, + 67166326367465990, + 6481272616, + 6447918048, + 6447918048, + 6447920768, + 6447918032, + 6447225600, + 6447174160, + 6481272112, + 6447918480, + 6447918480, + 6447920528, + 6447918464, + 6447225600, + 6447174160, + 4814177912612482376, + 1353167122339953992, + 28235, + 6481276064, + 6462789792, + 6447876064, + 6447924332, + 1048371580408, + 6481268640, + 6447918960, + 6447918960, + 6447919456, + 6447918944 + ] + }, + ".?AV?$Soothe2Module@M$01@@": { + "col": 6481275512, + "vftable": 6480904720, + "funcs": [ + 6447914704, + 6447878064, + 6447863120, + 6447109296, + 6447872320, + 6447864928, + 6447865824, + 6447865584, + 6447873008, + 6447109296, + 6447109296, + 6447109296, + 6447872928, + 6447872896, + 6447872864, + 6447872832, + 6447872800, + 6447872768, + 6447872720, + 6447872672, + 6447872592, + 6447872576, + 6447872560, + 6447872544, + 6447872432, + 6447872400, + 6447877760, + 6447872384, + 6447872352, + 6447116736, + 6447872336, + 6447109296, + 11029702, + 6481268784, + 6447917520, + 6447917520, + 6447922128, + 6447917504, + 6447225600, + 6447174160 + ] + }, + ".?AVSoothe2Grid@@": { + "col": 6481294416, + "vftable": 6480927432, + "funcs": [ + 6448105904, + 6448104624, + 6448104640, + 6447109296, + 6447116736, + 6448092592, + 6448104672, + 6448104752, + 6481305904, + 6460483674, + 6448087920, + 6481296760, + 6448150384, + 6448150384, + 6448151296, + 6448150368, + 6447225600, + 6447174160, + 6481299008, + 6448081392, + 6462671280, + 6462671264, + 6462671248, + 6462671232, + 6462671216, + 6462671200, + 6463496112, + 6462671168, + 6481295904, + 6448147440, + 6448147440, + 6448147968, + 6448147424, + 6447225600, + 6447174160, + 6481297240, + 6448146624, + 6448146624, + 6448149824, + 6448146608 + ] + }, + ".?AVSoothe2AudioProcessorEditor@@": { + "col": 6481306128, + "vftable": 6480925000, + "funcs": [ + 6448156336, + 6448110192, + 6481301928, + 6448156360, + 6448099280, + 6481304376, + 6448091712, + 6463504336, + 6481300664, + 6448150160, + 6448150160, + 6447920768, + 6448150144, + 6447225600, + 6447174160, + 6481296928, + 6448079184, + 6465754160, + 6448078960, + 6465753888, + 6461137728, + 6448079008, + 6465754080, + 6465753936, + 6481302704, + 6448080864, + 6448080368, + 6448080416, + 6461137696, + 6461137728, + 6448080464, + 6481304616, + 6448147056, + 6448147056, + 6448148640, + 6448147040, + 6447225984, + 6447174160, + 6481296368, + 6448150640 + ] + }, + ".?AVFilterCurveLayer@@": { + "col": 6481301928, + "vftable": 6480925024, + "funcs": [ + 6448156360, + 6448099280, + 6481304376, + 6448091712, + 6463504336, + 6481300664, + 6448150160, + 6448150160, + 6447920768, + 6448150144, + 6447225600, + 6447174160, + 6481296928, + 6448079184, + 6465754160, + 6448078960, + 6465753888, + 6461137728, + 6448079008, + 6465754080, + 6465753936, + 6481302704, + 6448080864, + 6448080368, + 6448080416, + 6461137696, + 6461137728, + 6448080464, + 6481304616, + 6448147056, + 6448147056, + 6448148640, + 6448147040, + 6447225984, + 6447174160, + 6481296368, + 6448150640, + 6448150640, + 6447109296, + 6448150624 + ] + }, + ".?AV?$CloudyAudioProcessorEditor@VSoothe2AudioProcessor@@USoothe2VertexData@@@@": { + "col": 6481304184, + "vftable": 6480925992, + "funcs": [ + 6448156264, + 6448110192, + 6481300488, + 6448156420, + 6463275216, + 6463259488, + 6463223200, + 6463217216, + 6463217200, + 6481301000, + 6448147344, + 6448147344, + 6448148128, + 6448147328, + 6447225600, + 6447174160, + 6481296656, + 6448087984, + 6460483674, + 6481294736, + 6448147488, + 6448147488, + 6448147872, + 6448147472, + 6447225600, + 6447174160, + 6481297432, + 6448146576, + 6448146576, + 6448149936, + 6448146560, + 6447225984, + 6447174160, + 6481305344, + 6447186368, + 6448079264, + 6448079296, + 6461137696, + 6461137728, + 6448079344 + ] + }, + ".?AV?$CloudyOpenGLRenderer@USoothe2VertexData@@@@": { + "col": 6481298032, + "vftable": 6480922232, + "funcs": [ + 6448156228, + 6448118240, + 6481302072, + 6448146864, + 6448146864, + 6448148960, + 6448146848, + 6447225600, + 6447174160, + 6481301120, + 6448093952, + 6448092016, + 6448092240, + 6448092224, + 6481299576, + 6448156324, + 6448122256, + 6481301080, + 6448150672, + 6448150672, + 6447109296, + 6448150656, + 6447225600, + 6447174160, + 6481304824, + 6448156276, + 6462611728, + 6462611712, + 6462611696, + 6462611680, + 6481305616, + 6448081312, + 6447109408, + 6481296696, + 6448147248, + 6448147248, + 6448148240, + 6448147232, + 6447225984, + 6447174160 + ] + }, + ".?AV?$GainRangeScalingOptionComponent@VSoothe2GainRangeScalingOption@@@@": { + "col": 6481301640, + "vftable": 6480928296, + "funcs": [ + 6448156252, + 6448107456, + 6481305944, + 6448150480, + 6448150480, + 6448150848, + 6448150464, + 6447225600, + 6447174160, + 6481307176, + 6448156816, + 6462684160, + 6462684144, + 6462684128, + 6462684112, + 6462684096, + 6462684080, + 6462684064, + 6462683952, + 6462683856, + 6462687488, + 6462687072, + 6462687056, + 6462686112, + 6462685904, + 6462685888, + 6462685808, + 6462684944, + 6462684928, + 6462684720, + 6462684640, + 6462684400, + 6462684384, + 6462684240, + 6462684192, + 6462680544, + 6462684176, + 6462683840, + 6462683824, + 6462683792 + ] + }, + ".?AV?$CloudyOpenGLLayer@USoothe2VertexData@@@@": { + "col": 6481296128, + "vftable": 6480925368, + "funcs": [ + 6448093616, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6481295128, + 6448156288, + 6448100400, + 6481302112, + 6448156240, + 6463240976, + 6481300032, + 6448150288, + 6448150288, + 6448151392, + 6448150272, + 6447225600, + 6447174160, + 6481298600, + 6447183072, + 6447109408, + 6481296288, + 6448150240, + 6448150240, + 6448151440, + 6448150224, + 6447225600, + 6447174160, + 6481302904, + 6448156444, + 6448110544, + 6481304576, + 6448150336, + 6448150336, + 6448151344, + 6448150320, + 6447225600 + ] + }, + ".?AVSoothe2GainRangeScalingOption@@": { + "col": 6481296928, + "vftable": 6480925128, + "funcs": [ + 6448079184, + 6465754160, + 6448078960, + 6465753888, + 6461137728, + 6448079008, + 6465754080, + 6465753936, + 6481302704, + 6448080864, + 6448080368, + 6448080416, + 6461137696, + 6461137728, + 6448080464, + 6481304616, + 6448147056, + 6448147056, + 6448148640, + 6448147040, + 6447225984, + 6447174160, + 6481296368, + 6448150640, + 6448150640, + 6447109296, + 6448150624, + 6447225600, + 6447174160, + 6481296128, + 6448093616, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6481295128, + 6448156288 + ] + }, + ".?AVListener@?$Soothe2ModuleBase@M$01@@": { + "col": 6481298824, + "vftable": 6480924624, + "funcs": [ + 6448104288, + 6460483674, + 6481295168, + 6448156168, + 6448110544, + 6481305984, + 6448146960, + 6448146960, + 6448148784, + 6448146944, + 6447225600, + 6447174160, + 6481300528, + 6448156348, + 6448111392, + 6447109296, + 6481294520, + 6448146912, + 6448146912, + 6448148880, + 6448146896, + 6447225600, + 6447174160, + 6481302536, + 6448156396, + 6448122256, + 6481297328, + 6448147296, + 6448147296, + 6448148160, + 6448147280, + 6447225600, + 6447174160, + 6481301600, + 6448156144, + 6448086432, + 6481298744, + 6448156408, + 6448086384, + 6481296888 + ] + }, + ".?AUSoothe2VertexData@@": { + "col": 6481301120, + "vftable": 6480922312, + "funcs": [ + 6448093952, + 6448092016, + 6448092240, + 6448092224, + 6481299576, + 6448156324, + 6448122256, + 6481301080, + 6448150672, + 6448150672, + 6447109296, + 6448150656, + 6447225600, + 6447174160, + 6481304824, + 6448156276, + 6462611728, + 6462611712, + 6462611696, + 6462611680, + 6481305616, + 6448081312, + 6447109408, + 6481296696, + 6448147248, + 6448147248, + 6448148240, + 6448147232, + 6447225984, + 6447174160, + 6481295008, + 6448156456, + 6448086432, + 6481295864, + 6448110480, + 6448156384, + 6481306216, + 6448150528, + 6448150528, + 6448150704 + ] + }, + ".?AVSoothe2DummyEqualizerWrapper@@": { + "col": 6481304376, + "vftable": 6480925048, + "funcs": [ + 6448091712, + 6463504336, + 6481300664, + 6448150160, + 6448150160, + 6447920768, + 6448150144, + 6447225600, + 6447174160, + 6481296928, + 6448079184, + 6465754160, + 6448078960, + 6465753888, + 6461137728, + 6448079008, + 6465754080, + 6465753936, + 6481302704, + 6448080864, + 6448080368, + 6448080416, + 6461137696, + 6461137728, + 6448080464, + 6481304616, + 6448147056, + 6448147056, + 6448148640, + 6448147040, + 6447225984, + 6447174160, + 6481296368, + 6448150640, + 6448150640, + 6447109296, + 6448150624, + 6447225600, + 6447174160, + 6481296128 + ] + }, + ".?AVSoothe2_DynamicCryptoManager@eden@pace@@": { + "col": 6481309032, + "vftable": 6480930184, + "funcs": [ + 6448176192, + 6463535168, + 6463534560, + 6481309416, + 6448175504, + 6481317816, + 6448203504, + 6448203504, + 6447109296, + 6448203488, + 6447225600, + 6447174160, + 6481310480, + 6448213380, + 6448122256, + 6481312568, + 6448207024, + 6448207024, + 6448208768, + 6448207008, + 6447225600, + 6447174160, + 6481314960, + 6448200448, + 6462684160, + 6462596880, + 6462596768, + 6462596592, + 6462596064, + 6462596256, + 6462684064, + 6462683952, + 6462683856, + 6462687488, + 6462687072, + 6462595760, + 6462686112, + 6462685904, + 6462685888, + 6462685808 + ] + }, + ".?AVSoothe2FilterGraph@@": { + "col": 6481358992, + "vftable": 6480979984, + "funcs": [ + 6448255584, + 6462684160, + 6448264400, + 6448264064, + 6462684112, + 6462684096, + 6462684080, + 6462684064, + 6462683952, + 6462683856, + 6462687488, + 6462687072, + 6462687056, + 6462686112, + 6462685904, + 6462685888, + 6462685808, + 6448122304, + 6462684928, + 6462684720, + 6462684640, + 6462684400, + 6462684384, + 6462684240, + 6462684192, + 6448262528, + 6462684176, + 6462683840, + 6462683824, + 6462683792, + 6462683776, + 6462683760, + 6462683744, + 6448262992, + 6462683728, + 6462680512, + 6462683712, + 6462683696, + 6462683680, + 6462683664 + ] + }, + ".?AV?$FilterGraph@M$05$0CAA@@@": { + "col": 6481358216, + "vftable": 6480978472, + "funcs": [ + 6448278300, + 6448263184, + 6481357640, + 6448278192, + 6465564672, + 6447109296, + 6481356488, + 6448255936, + 6462684160, + 6462684144, + 6462684128, + 6462684112, + 6462684096, + 6462684080, + 6462684064, + 6462683952, + 6462683856, + 6462687488, + 6462687072, + 6462687056, + 6462686112, + 6462685904, + 6462685888, + 6462685808, + 6462684944, + 6462684928, + 6462684720, + 6462684640, + 6462684400, + 6462684384, + 6462684240, + 6462684192, + 6462680544, + 6462684176, + 6462683840, + 6462683824, + 6462683792, + 6462683776, + 6462683760, + 6462683744 + ] + }, + ".?AV?$DigitalFilter@M$0BA@$01@@": { + "col": 6481356656, + "vftable": 6480979872, + "funcs": [ + 6448272048, + 6447878064, + 6447878048, + 6447109296, + 6460483674, + 6460483674, + 6481358632, + 6448276176, + 6448276176, + 6448276560, + 6448276160, + 6447225600, + 6447174160, + 6481358992, + 6448255584, + 6462684160, + 6448264400, + 6448264064, + 6462684112, + 6462684096, + 6462684080, + 6462684064, + 6462683952, + 6462683856, + 6462687488, + 6462687072, + 6462687056, + 6462686112, + 6462685904, + 6462685888, + 6462685808, + 6448122304, + 6462684928, + 6462684720, + 6462684640, + 6462684400, + 6462684384, + 6462684240, + 6462684192, + 6448262528 + ] + }, + ".?AV?$LowPassFilter@M$0BA@$01@@": { + "col": 6481357024, + "vftable": 6480980368, + "funcs": [ + 6448271920, + 6447878064, + 6447878048, + 6448269392, + 6448269488, + 6448269232, + 6481358488, + 6448276272, + 6448276272, + 6448276480, + 6448276256, + 6447225600, + 6447174160, + 6481357496, + 6448278288, + 6448264448, + 6481358448, + 6447186144, + 6448255376, + 6461258448, + 6448255408, + 6461236096, + 6481357088, + 6448278168, + 6448264448, + 6481356528, + 6448278180, + 6448122256, + 6481356984, + 6448276128, + 6448276128, + 6448276768, + 6448276112, + 6447225600, + 6447174160, + 6481357376, + 6448278228, + 6448264752, + 6481358080, + 6448278240 + ] + }, + ".?AV?$FilterGraphGrid@M@@": { + "col": 6481358256, + "vftable": 6480978088, + "funcs": [ + 6448268464, + 6462684160, + 6462684144, + 6462684128, + 6462684112, + 6462684096, + 6462684080, + 6462684064, + 6462683952, + 6462683856, + 6462687488, + 6462687072, + 6462687056, + 6462686112, + 6462685904, + 6462685888, + 6462685808, + 6448122304, + 6462684928, + 6462684720, + 6462684640, + 6462684400, + 6462684384, + 6462684240, + 6462684192, + 6462680544, + 6462684176, + 6462683840, + 6462683824, + 6462683792, + 6462683776, + 6462683760, + 6462683744, + 6448256448, + 6462683728, + 6462680512, + 6462683712, + 6462683696, + 6462683680, + 6462683664 + ] + }, + ".?AVLines@?$FilterGraphGrid@M@@": { + "col": 6481358672, + "vftable": 6480979416, + "funcs": [ + 6448276032, + 6462684160, + 6462684144, + 6462684128, + 6462684112, + 6462684096, + 6462684080, + 6462684064, + 6462683952, + 6462683856, + 6462687488, + 6462687072, + 6462687056, + 6462686112, + 6462685904, + 6462685888, + 6462685808, + 6462684944, + 6462684928, + 6462684720, + 6462684640, + 6462684400, + 6462684384, + 6462684240, + 6462684192, + 6448269568, + 6462684176, + 6462683840, + 6462683824, + 6462683792, + 6462683776, + 6462683760, + 6462683744, + 6462680528, + 6462683728, + 6462680512, + 6462683712, + 6462683696, + 6462683680, + 6462683664 + ] + }, + ".?AVSoothe2XYSliderArea@@": { + "col": 6481359936, + "vftable": 6480980752, + "funcs": [ + 6448278512, + 6462684160, + 6448215120, + 6448215280, + 6465038592, + 6465018736, + 6464999616, + 6462684064, + 6465018512, + 6462683856, + 6462687488, + 6462687072, + 6462687056, + 6462686112, + 6462685904, + 6462685888, + 6462685808, + 6448279184, + 6462684928, + 6462684720, + 6462684640, + 6462684400, + 6462684384, + 6462684240, + 6462684192, + 6462680544, + 6462684176, + 6462683840, + 6462683824, + 6464910400, + 6462683776, + 6462683760, + 6462683744, + 6465593344, + 6462683728, + 6462680512, + 6462683712, + 6462683696, + 6462683680, + 6462683664 + ] + }, + ".?AVSoothe2SectionHeader@@": { + "col": 6481361888, + "vftable": 6480983312, + "funcs": [ + 6448285152, + 6462684160, + 6462684144, + 6462684128, + 6462684112, + 6462684096, + 6462684080, + 6462684064, + 6462683952, + 6462683856, + 6462687488, + 6462687072, + 6462687056, + 6462686112, + 6462685904, + 6462685888, + 6462685808, + 6448122304, + 6462684928, + 6462684720, + 6462684640, + 6462684400, + 6462684384, + 6462684240, + 6462684192, + 6448284496, + 6462684176, + 6462683840, + 6462683824, + 6462683792, + 6462683776, + 6462683760, + 6462683744, + 6448283408, + 6462683728, + 6462680512, + 6462683712, + 6462683696, + 6462683680, + 6462683664 + ] + }, + ".?AVSoothe2Header@@": { + "col": 6481368216, + "vftable": 6480995576, + "funcs": [ + 6448337376, + 6462684160, + 6462684144, + 6462684128, + 6462684112, + 6462684096, + 6462684080, + 6462684064, + 6462683952, + 6462683856, + 6462687488, + 6462687072, + 6462687056, + 6462686112, + 6462685904, + 6462685888, + 6462685808, + 6448122304, + 6462684928, + 6462684720, + 6462684640, + 6462684400, + 6462684384, + 6462684240, + 6462684192, + 6448335936, + 6462684176, + 6462683840, + 6462683824, + 6462683792, + 6462683776, + 6462683760, + 6462683744, + 6448335712, + 6462683728, + 6462680512, + 6462683712, + 6462683696, + 6462683680, + 6462683664 + ] + } +} \ No newline at end of file diff --git a/rtti_full.json b/rtti_full.json new file mode 100644 index 0000000..91f29ff --- /dev/null +++ b/rtti_full.json @@ -0,0 +1,4062 @@ +{ + ".?AVJuceAudioProcessor@juce@@": { + "col": 6481168928, + "vftable": 6480807160, + "funcs": [ + 6447121840, + 6447121856, + 6447121872, + 6447121920, + 6447121936, + 6447122496, + 6447122560, + 6447123024, + 6447123312, + 6447123312, + 6447123312, + 6447114144, + 6447123312, + 6447123328, + 6447123312, + 6447125088, + 6481172456, + 6460528368, + 6460528608, + 6460528544, + 6447109296, + 6447152144, + 6447109232, + 6447113456, + 6447113472, + 6460528320, + 6460528272, + 6460528192, + 6460528112, + 6447109296, + 6447109312, + 6447128080, + 6447128336, + 6447128464, + 6447128784, + 6447128816, + 6481173128, + 6447120224, + 6447119760, + 6447119792, + 6447119824, + 6447119856, + 6447119904, + 6447119952, + 6447119984, + 6447116736, + 6447120208, + 6447120192, + 6447120016, + 6447120048, + 6447120080, + 6447120112, + 6447120144, + 6462127856, + 6481169064, + 6460516016, + 6460516224, + 6460516160, + 6460515792, + 6460515312, + 6460515232, + 6460515200, + 6447112576, + 6481172576 + ] + }, + ".?AUDelayed@AutoCueState@@": { + "col": 6481175800, + "vftable": 6480812864, + "funcs": [ + 6447191856, + 6460818688, + 6481180728, + 6447186144, + 6461211584, + 6461258448, + 6461248080, + 6461236096, + 6481176112, + 6447231872, + 6447231808, + 6447232176, + 6447231792, + 6447231696, + 6447174160, + 6481185832, + 6447186368, + 6461108080, + 6461108032, + 6461137696, + 6461137728, + 6461131344, + 6481181168, + 6447188272, + 6460691728, + 6481184584, + 6447186144, + 6461214752, + 6461258448, + 6461214784, + 6461236096, + 652835028992, + 6481179968, + 6447190432, + 6460992864, + 6460992752, + 6460992640, + 6481186088, + 6447238144, + 6481180128, + 6447210944, + 6481177888, + 6447247072, + 6460822656, + 6481180912, + 6447238048, + 6481185872, + 6447188272, + 6460707728, + 6481185360, + 6447231552, + 6447231472, + 6447232208, + 6447231456, + 6447231104, + 6447174160, + 6481176456, + 6447238144, + 6481178136, + 6447182720, + 6447110512, + 6481176736, + 6447192528, + 6460596192 + ] + }, + ".?AV?$_Func_impl_no_alloc@UFuncWithLeakDetector@CloudyAsyncCaller@@X$$V@std@@": { + "col": 6481176112, + "vftable": 6480812936, + "funcs": [ + 6447231872, + 6447231808, + 6447232176, + 6447231792, + 6447231696, + 6447174160, + 6481185832, + 6447186368, + 6461108080, + 6461108032, + 6461137696, + 6461137728, + 6461131344, + 6481181168, + 6447188272, + 6460691728, + 6481184584, + 6447186144, + 6461214752, + 6461258448, + 6461214784, + 6461236096, + 652835028992, + 6481179968, + 6447190432, + 6460992864, + 6460992752, + 6460992640, + 6481186088, + 6447238144, + 6481180128, + 6447210944, + 6481177888, + 6447247072, + 6460822656, + 6481180912, + 6447238048, + 6481185872, + 6447188272, + 6460707728, + 6481185360, + 6447231552, + 6447231472, + 6447232208, + 6447231456, + 6447231104, + 6447174160, + 6481176456, + 6447238144, + 6481178136, + 6447182720, + 6447110512, + 6481176736, + 6447192528, + 6460596192, + 6481179424, + 6447232000, + 6447232000, + 6447232080, + 6447231984, + 6447225600, + 6447174160, + 6481181088, + 6447231968 + ] + }, + ".?AVAutoBandSoloOption@@": { + "col": 6481185832, + "vftable": 6480812992, + "funcs": [ + 6447186368, + 6461108080, + 6461108032, + 6461137696, + 6461137728, + 6461131344, + 6481181168, + 6447188272, + 6460691728, + 6481184584, + 6447186144, + 6461214752, + 6461258448, + 6461214784, + 6461236096, + 652835028992, + 6481179968, + 6447190432, + 6460992864, + 6460992752, + 6460992640, + 6481186088, + 6447238144, + 6481180128, + 6447210944, + 6481177888, + 6447247072, + 6460822656, + 6481180912, + 6447238048, + 6481185872, + 6447188272, + 6460707728, + 6481185360, + 6447231552, + 6447231472, + 6447232208, + 6447231456, + 6447231104, + 6447174160, + 6481176456, + 6447238144, + 6481178136, + 6447182720, + 6447110512, + 6481176736, + 6447192528, + 6460596192, + 6481179424, + 6447232000, + 6447232000, + 6447232080, + 6447231984, + 6447225600, + 6447174160, + 6481181088, + 6447231968, + 6447231968, + 6447232128, + 6447231952, + 6447225600, + 6447174160, + 8250, + 27981962743276903 + ] + }, + ".?AVFileFilter@juce@@": { + "col": 6481187368, + "vftable": 6480818456, + "funcs": [ + 6447270816, + 6460483674, + 6460483674, + 6481193472, + 6447255680, + 6461542816, + 6461542672, + 6461542704, + 6461546128, + 6461546048, + 6461545984, + 6461545920, + 6461545840, + 6461545760, + 6461545456, + 6461545360, + 6461545200, + 6461545040, + 6461544928, + 6461544800, + 6461545536, + 6461543728, + 6461544304, + 6461543104, + 6461543376, + 6461542608, + 6461542624, + 6461542560, + 6481193056, + 6447256128, + 6460477070, + 6460477076, + 6460477136, + 6460477142, + 6460477082, + 6460477148, + 6460477088, + 6460477094, + 6460477100, + 6460477154, + 6460477160, + 6460477106, + 6460477112, + 6460477118, + 6481192912, + 6447257440, + 6447114144, + 6447114144, + 6447120192, + 6447260080, + 6447258320, + 6447258192, + 6447114144, + 6447114144, + 6447260416, + 6447116736, + 6447116736, + 6447116736, + 6447116736, + 6447116736, + 6447116736, + 6447116736, + 6447188080, + 6447116736 + ] + }, + ".?AVWildcardFileFilter@juce@@": { + "col": 6481193432, + "vftable": 6480815080, + "funcs": [ + 6447270912, + 6461425296, + 6461425264, + 5208208757389214273, + 5786930140093827657, + 6365651522798441041, + 7378413942531512921, + 7957135325236127847, + 8535856707940741231, + 3689065129052829815, + 3398873257388422452, + 0, + 6481187128, + 6447255520, + 6461547952, + 6461547840, + 6461547248, + 6461546128, + 6461546048, + 6461545984, + 6461545920, + 6461545840, + 6461545760, + 6461545456, + 6461545360, + 6461545200, + 6461545040, + 6461544928, + 6461544800, + 6461545536, + 6461543728, + 6461547040, + 6461543104, + 6461543376, + 6461547936, + 6461547904, + 6461542928, + 6481189288, + 6447256832, + 6460483674, + 6481190736, + 6447255024, + 6447110512, + 6481191064, + 6447255184, + 6447250960, + 6447253328, + 6447251008, + 6447251312, + 6447120192, + 6447250928, + 6447253472, + 6447250960, + 6447250976, + 6461568032, + 6447253568, + 6447253488, + 6447250032, + 6447250176, + 6447253456, + 6447253536, + 3978425819141910832, + 7378413942531504440, + 0 + ] + }, + ".?AVDeviceChangeDetector@juce@@": { + "col": 6481202560, + "vftable": 6480829672, + "funcs": [ + 6447494736, + 6447494704, + 6460483674, + 409183933770, + 5508025770450318698, + 1600873327, + 7883925120266491210, + 29285, + 6481204400, + 6447516864, + 6447516640, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6447109296, + 6460483674, + 6447516672, + 6481204232, + 6447517952, + 6462022400, + 6462022064, + 6462020128, + 6481203320, + 6447517456, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6447109296, + 6481203136, + 6447517680, + 6462025888, + 6462025856, + 6462025472, + 6481205272, + 6447518464, + 6460483674, + 6460483674, + 6460483674, + 6462017968, + 6460483674, + 6460483674, + 6462017872, + 6462017856, + 6462017664, + 6460483674, + 6462017984, + 6462018000, + 6481204528, + 6447183072, + 6460483674, + 6481205208, + 6447525540, + 6462027280, + 6481203536, + 6447520704, + 6481204128, + 6447516912 + ] + }, + ".?AVMountedVolumeListChangeDetector@juce@@": { + "col": 6481202976, + "vftable": 6480829608, + "funcs": [ + 6447503680, + 6460483674, + 6481199488, + 6447495776, + 6447495328, + 6481198640, + 6447495840, + 6481202560, + 6447494736, + 6447494704, + 6460483674, + 409183933770, + 5508025770450318698, + 1600873327, + 7883925120266491210, + 29285, + 6481204400, + 6447516864, + 6447516640, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6447109296, + 6460483674, + 6447516672, + 6481204232, + 6447517952, + 6462022400, + 6462022064, + 6462020128, + 6481203320, + 6447517456, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6447109296, + 6481203136, + 6447517680, + 6462025888, + 6462025856, + 6462025472, + 6481205272, + 6447518464, + 6460483674, + 6460483674, + 6460483674, + 6462017968, + 6460483674, + 6460483674, + 6462017872, + 6462017856, + 6462017664, + 6460483674, + 6462017984, + 6462018000, + 6481204528, + 6447183072 + ] + }, + ".?AVIIRFilterAudioSource@juce@@": { + "col": 6481203136, + "vftable": 6480829960, + "funcs": [ + 6447517680, + 6462025888, + 6462025856, + 6462025472, + 6481205272, + 6447518464, + 6460483674, + 6460483674, + 6460483674, + 6462017968, + 6460483674, + 6460483674, + 6462017872, + 6462017856, + 6462017664, + 6460483674, + 6462017984, + 6462018000, + 6481204528, + 6447183072, + 6460483674, + 6481205208, + 6447525540, + 6462027280, + 6481203536, + 6447520704, + 6481204128, + 6447516912, + 6462033072, + 6462032848, + 6462032624, + 6462032400, + 6462032176, + 6462031968, + 6462031760, + 6462031504, + 6462030080, + 6462030288, + 6462030496, + 6447109296, + 6447109296, + 6462031296, + 6462030672, + 63333334372647468, + 6481204736, + 6447516720, + 6462044176, + 6462040192, + 6462039664, + 6462039536, + 6462039408, + 6462039280, + 6462039072, + 6462036496, + 6462036384, + 6481205408, + 6447518416, + 6462018368, + 6462018352, + 6462018144, + 6481203416, + 6447518576, + 6462015616, + 6462014944 + ] + }, + ".?AVAudioProcessorGraph@juce@@": { + "col": 6481208576, + "vftable": 6480831880, + "funcs": [ + 6447527088, + 6462099936, + 6462119856, + 6462096688, + 6462096016, + 6447109296, + 6462094912, + 6462095232, + 6462114656, + 6462114816, + 6447116736, + 6447116736, + 6462096672, + 6462095616, + 6462095600, + 6462095584, + 6447116736, + 6447116736, + 6462095824, + 6447114144, + 6462095632, + 6447114144, + 6447116736, + 6462115008, + 6447114144, + 6447114144, + 6447109296, + 6447120208, + 6447109296, + 6462095568, + 6462111728, + 6462095552, + 6462111664, + 6462115360, + 6462115344, + 6462115328, + 6462116144, + 6462115952, + 6462116304, + 6462107648, + 6447525888, + 6462111648, + 6447188080, + 6447525936, + 6462112304, + 6462110960, + 6462106512, + 6462107232, + 6462106272, + 6462106080, + 6462106464, + 6462106528, + 6462106960, + 6462106032, + 6462105984, + 6462106368, + 6462105904, + 6462105808, + 6462106416, + 6462105856, + 6462105760, + 6462105712, + 6462114208, + 6462114160 + ] + }, + ".?AUDelayChannelOp@?$GraphRenderSequence@M@juce@@": { + "col": 6481206200, + "vftable": 6480831592, + "funcs": [ + 6447560992, + 6447560336, + 6481211616, + 6447535568, + 6447534896, + 6481206240, + 6447563984, + 6447563568, + 6481206368, + 6447573184, + 6447573184, + 6447573200, + 6447573168, + 6447225600, + 6447174160, + 6481212392, + 6447559040, + 6447557008, + 6481209104, + 6447535888, + 6447535456, + 6481206656, + 6447581300, + 6462083856, + 6481210672, + 6447568480, + 6447568480, + 6447571808, + 6447568464, + 6447225984, + 6447174160, + 6481210400, + 6447529664, + 6460483674, + 6462087440, + 6481208576, + 6447527088, + 6462099936, + 6462119856, + 6462096688, + 6462096016, + 6447109296, + 6462094912, + 6462095232, + 6462114656, + 6462114816, + 6447116736, + 6447116736, + 6462096672, + 6462095616, + 6462095600, + 6462095584, + 6447116736, + 6447116736, + 6462095824, + 6447114144, + 6462095632, + 6447114144, + 6447116736, + 6462115008, + 6447114144, + 6447114144, + 6447109296, + 6447120208 + ] + }, + ".?AVAudioProcessorValueTreeState@juce@@": { + "col": 6481208264, + "vftable": 6480833560, + "funcs": [ + 6447581336, + 6462067200, + 6462067088, + 6462708160, + 6462708144, + 6462708128, + 6462067056, + 6481211296, + 6447538576, + 6447538336, + 6447109296, + 6481210256, + 6447563936, + 6447563408, + 6481206696, + 6447517456, + 6460483674, + 6447109296, + 6481205824, + 6447563984, + 6447563536, + 6481212672, + 6447563984, + 6447563344, + 6481208384, + 6447535952, + 6460483674, + 6460483674, + 6460483674, + 6462121360, + 6462121312, + 6462105616, + 6462105600, + 6462123888, + 6462105552, + 6460483674, + 6462123872, + 6462105664, + 6462105648, + 6462121296, + 6462123792, + 6462127856, + 6481207392, + 6447568672, + 6447568672, + 6447571664, + 6447568656, + 6447225600, + 6447174160, + 6481213160, + 6447568576, + 6447568576, + 6447571696, + 6447568560, + 6447225984, + 6447174160, + 6481212784, + 6447568720, + 6447568720, + 6447571504, + 6447568704, + 6447225984, + 6447174160, + 6481207432 + ] + }, + ".?AUDelayChannelOp@?$GraphRenderSequence@N@juce@@": { + "col": 6481207472, + "vftable": 6480834200, + "funcs": [ + 6447560912, + 6447559872, + 6481209832, + 6447563936, + 6447563440, + 6481207288, + 6447568624, + 6447568624, + 6447571680, + 6447568608, + 6447225600, + 6447174160, + 6481213216, + 6447527744, + 6481207080, + 6447535952, + 6460483674, + 6460483674, + 6460483674, + 6462121360, + 6462121312, + 6462124624, + 6462105600, + 6462123888, + 6462105552, + 6460483674, + 6462123872, + 6462105664, + 6462105648, + 6462121296, + 6462123792, + 6462127856, + 6460483674, + 6481209312, + 6447526592, + 6460483674, + 6462119856, + 6460483674, + 6460483674, + 6447109296, + 6462114640, + 6460483674, + 6462114656, + 6462114816, + 6447116736, + 6447116736, + 6462114624, + 6460483674, + 6460483674, + 6460483674, + 6447116736, + 6447116736, + 6462114976, + 6447114144, + 6462115312, + 6460483674, + 6460483674, + 6462115008, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674 + ] + }, + ".?AVAudioGraphIOProcessor@AudioProcessorGraph@juce@@": { + "col": 6481207512, + "vftable": 6480835976, + "funcs": [ + 6447527600, + 6462094720, + 6462119856, + 6462094064, + 6462094048, + 6447109296, + 6462093936, + 6462093984, + 6462114656, + 6462114816, + 6447116736, + 6447116736, + 6462094032, + 6462093920, + 6462093888, + 6462093856, + 6447116736, + 6447116736, + 6462114976, + 6447114144, + 6462115312, + 6462093824, + 6462093840, + 6462115008, + 6462093808, + 6462093792, + 6462093776, + 6462093744, + 6462093728, + 6462093712, + 6462111728, + 6462093696, + 6462111664, + 6462115360, + 6462115344, + 6462115328, + 6462116144, + 6462115952, + 6462116304, + 6462107648, + 6447525888, + 6462111648, + 6447188080, + 6447525936, + 6462112304, + 6462110960, + 6462106512, + 6462104928, + 6462105024, + 6462105248, + 6462105184, + 6462104640, + 6462104832, + 6462104512, + 6462104448, + 6462104576, + 6462104288, + 6462104224, + 6462105120, + 6462104384, + 6462104160, + 6462104096, + 6462114208, + 6462114160 + ] + }, + ".?AVAudioProcessorParameterWithID@juce@@": { + "col": 6481208384, + "vftable": 6480833760, + "funcs": [ + 6447535952, + 6460483674, + 6460483674, + 6460483674, + 6462121360, + 6462121312, + 6462105616, + 6462105600, + 6462123888, + 6462105552, + 6460483674, + 6462123872, + 6462105664, + 6462105648, + 6462121296, + 6462123792, + 6462127856, + 6481207392, + 6447568672, + 6447568672, + 6447571664, + 6447568656, + 6447225600, + 6447174160, + 6481213160, + 6447568576, + 6447568576, + 6447571696, + 6447568560, + 6447225984, + 6447174160, + 6481212784, + 6447568720, + 6447568720, + 6447571504, + 6447568704, + 6447225984, + 6447174160, + 6481207432, + 6447581324, + 6481208184, + 6447568432, + 6447568432, + 6447571696, + 6447568416, + 6447225984, + 6447174160, + 6481211696, + 6447572768, + 6447572768, + 6447573264, + 6447572752, + 6447225600, + 6447174160, + 6481207472, + 6447560912, + 6447559872, + 6481209832, + 6447563936, + 6447563440, + 6481207288, + 6447568624, + 6447568624, + 6447571680 + ] + }, + ".?AVAudioProcessorEditor@juce@@": { + "col": 6481208792, + "vftable": 6480833168, + "funcs": [ + 6447527024, + 6462684160, + 6462684144, + 6462684128, + 6462684112, + 6462684096, + 6462684080, + 6462684064, + 6462683952, + 6462683856, + 6462687488, + 6462687072, + 6462687056, + 6462686112, + 6462685904, + 6462685888, + 6462685808, + 6462684944, + 6462684928, + 6462684720, + 6462684640, + 6462684400, + 6462684384, + 6462684240, + 6462684192, + 6462680544, + 6462684176, + 6462683840, + 6462683824, + 6462683792, + 6462683776, + 6462683760, + 6462683744, + 6462680528, + 6462683728, + 6462680512, + 6462683712, + 6462683696, + 6462683680, + 6462683664, + 6462683456, + 6462683440, + 6462101168, + 6462102112, + 6462102096, + 6462102080, + 6462102064, + 6462101264, + 6481208264, + 6447581336, + 6462067200, + 6462067088, + 6462708160, + 6462708144, + 6462708128, + 6462067056, + 6481211296, + 6447538576, + 6447538336, + 6447109296, + 6481210256, + 6447563936, + 6447563408, + 6481206696 + ] + }, + ".?AVAudioProcessor@juce@@": { + "col": 6481209312, + "vftable": 6480834472, + "funcs": [ + 6447526592, + 6460483674, + 6462119856, + 6460483674, + 6460483674, + 6447109296, + 6462114640, + 6460483674, + 6462114656, + 6462114816, + 6447116736, + 6447116736, + 6462114624, + 6460483674, + 6460483674, + 6460483674, + 6447116736, + 6447116736, + 6462114976, + 6447114144, + 6462115312, + 6460483674, + 6460483674, + 6462115008, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6462111728, + 6460483674, + 6462111664, + 6462115360, + 6462115344, + 6462115328, + 6462116144, + 6462115952, + 6462116304, + 6462107648, + 6447525888, + 6462111648, + 6447188080, + 6447525936, + 6462112304, + 6462110960, + 6462106512, + 6462107232, + 6462106272, + 6462106080, + 6462106464, + 6462106528, + 6462106960, + 6462106032, + 6462105984, + 6462106368, + 6462105904, + 6462105808, + 6462106416, + 6462105856, + 6462105760, + 6462105712, + 6462114208, + 6462114160 + ] + }, + ".?AVParameterAdapter@AudioProcessorValueTreeState@juce@@": { + "col": 6481211296, + "vftable": 6480833624, + "funcs": [ + 6447538576, + 6447538336, + 6447109296, + 6481210256, + 6447563936, + 6447563408, + 6481206696, + 6447517456, + 6460483674, + 6447109296, + 6481205824, + 6447563984, + 6447563536, + 6481212672, + 6447563984, + 6447563344, + 6481208384, + 6447535952, + 6460483674, + 6460483674, + 6460483674, + 6462121360, + 6462121312, + 6462105616, + 6462105600, + 6462123888, + 6462105552, + 6460483674, + 6462123872, + 6462105664, + 6462105648, + 6462121296, + 6462123792, + 6462127856, + 6481207392, + 6447568672, + 6447568672, + 6447571664, + 6447568656, + 6447225600, + 6447174160, + 6481213160, + 6447568576, + 6447568576, + 6447571696, + 6447568560, + 6447225984, + 6447174160, + 6481212784, + 6447568720, + 6447568720, + 6447571504, + 6447568704, + 6447225984, + 6447174160, + 6481207432, + 6447581324, + 6481208184, + 6447568432, + 6447568432, + 6447571696, + 6447568416, + 6447225984, + 6447174160 + ] + }, + ".?AVGenericAudioProcessorEditor@juce@@": { + "col": 6481212632, + "vftable": 6480831200, + "funcs": [ + 6447527664, + 6462684160, + 6462684144, + 6462684128, + 6462684112, + 6462684096, + 6462684080, + 6462684064, + 6462683952, + 6462683856, + 6462687488, + 6462687072, + 6462687056, + 6462686112, + 6462685904, + 6462685888, + 6462685808, + 6462684944, + 6462684928, + 6462684720, + 6462684640, + 6462684400, + 6462684384, + 6462684240, + 6462684192, + 6462093456, + 6462684176, + 6462683840, + 6462683824, + 6462683792, + 6462683776, + 6462683760, + 6462683744, + 6462093312, + 6462683728, + 6462680512, + 6462683712, + 6462683696, + 6462683680, + 6462683664, + 6462683456, + 6462683440, + 6462101168, + 6462102112, + 6462102096, + 6462102080, + 6462102064, + 6462101264, + 6481206200, + 6447560992, + 6447560336, + 6481211616, + 6447535568, + 6447534896, + 6481206240, + 6447563984, + 6447563568, + 6481206368, + 6447573184, + 6447573184, + 6447573200, + 6447573168, + 6447225600, + 6447174160 + ] + }, + ".?AVAudioProcessorParameter@juce@@": { + "col": 6481213488, + "vftable": 6480830952, + "funcs": [ + 6447120224, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6462105616, + 6462105600, + 6462123888, + 6462105552, + 6460483674, + 6462123872, + 6462105664, + 6462105648, + 6462105632, + 6462123792, + 6462127856, + 6481210440, + 6447563984, + 6447563280, + 6481209392, + 6447568768, + 6447568768, + 6447571488, + 6447568752, + 6447225600, + 6447174160, + 6481206816, + 6447538672, + 6462066736, + 6481212632, + 6447527664, + 6462684160, + 6462684144, + 6462684128, + 6462684112, + 6462684096, + 6462684080, + 6462684064, + 6462683952, + 6462683856, + 6462687488, + 6462687072, + 6462687056, + 6462686112, + 6462685904, + 6462685888, + 6462685808, + 6462684944, + 6462684928, + 6462684720, + 6462684640, + 6462684400, + 6462684384, + 6462684240, + 6462684192, + 6462093456, + 6462684176, + 6462683840, + 6462683824, + 6462683792, + 6462683776, + 6462683760, + 6462683744 + ] + }, + ".?AUAudioProcessorEditorListener@AudioProcessorEditor@juce@@": { + "col": 6481213744, + "vftable": 6480832760, + "funcs": [ + 6447183072, + 6447525760, + 6462671264, + 6462671248, + 6462671232, + 6447525776, + 6462671200, + 6462671184, + 6462671168, + 6481206896, + 6447572400, + 6447572400, + 6447575472, + 6447572384, + 6447225984, + 6447174160, + 6481213680, + 6447526848, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6462105616, + 6462105600, + 6462123888, + 6462103024, + 6462102688, + 6462123872, + 6462105664, + 6462105648, + 6462105632, + 6462123792, + 6462127856, + 6481206936, + 6447563936, + 6447563280, + 6481205528, + 6447581312, + 6462096880, + 6481209168, + 6447568528, + 6447568528, + 6447571728, + 6447568512, + 6447225984, + 6447174160, + 6481213448, + 6447563936, + 6447563472, + 6481208792, + 6447527024, + 6462684160, + 6462684144, + 6462684128, + 6462684112, + 6462684096, + 6462684080, + 6462684064, + 6462683952, + 6462683856, + 6462687488, + 6462687072, + 6462687056 + ] + }, + ".?AVMouseInactivityDetector@juce@@": { + "col": 6481247640, + "vftable": 6480897800, + "funcs": [ + 6447849040, + 6447581488, + 6447581488, + 6447581488, + 6447581504, + 6447581504, + 6447581504, + 6462681856, + 6447581504, + 6462681824, + 6481224000, + 6447850956, + 6462155952, + 6481256984, + 6447835888, + 6447835888, + 6447836336, + 6447835872, + 6447225600, + 6447174160, + 6481226088, + 6447849832, + 6462433728, + 6462434576, + 6462433696, + 6481242232, + 6447601824, + 6462684160, + 6462596880, + 6462596768, + 6462596592, + 6462596064, + 6462596256, + 6462684064, + 6462683952, + 6462683856, + 6462687488, + 6462687072, + 6462595760, + 6462686112, + 6462685904, + 6462685888, + 6462685808, + 6462595440, + 6462684928, + 6462684720, + 6462684640, + 6462684400, + 6462598928, + 6462684240, + 6462684192, + 6462596992, + 6462684176, + 6462594176, + 6462683824, + 6462683792, + 6462595872, + 6462595792, + 6462683744, + 6462680528, + 6462683728, + 6462680512, + 6462683712, + 6462683696 + ] + }, + ".?AV?$AudioProcessingModule@M$01@@": { + "col": 6481268096, + "vftable": 6480905784, + "funcs": [ + 6447879552, + 6447878064, + 6447878048, + 6447109296, + 6460483674, + 20215, + 9076743667518146896, + 12422714616134243146, + 23087, + 6481277416, + 6447917728, + 6447917728, + 6447921936, + 6447917712, + 6447225600, + 6447174160, + 13914592658046159427, + 320260376924, + 7154382229308598437, + 25528, + 6481270656, + 6447918768, + 6447918768, + 6447920064, + 6447918752, + 6447225600, + 6447174160, + 6481274216, + 6447916496, + 6447916496, + 6447923472, + 6447916480, + 6447225984, + 6447174160, + 2031195209439791872, + 78168524935496, + 0, + 16816072981264251663, + 17890756257733324871, + 667364968035116281, + 3827645339180003300, + 63, + 17482051593650351696, + 12984446478163426643, + 13720632196738857758, + 6481270488, + 6447889728, + 6447878064, + 6447863120, + 6447109296, + 6447877632, + 6447109296, + 6447109296, + 6447109296, + 6447114144, + 6447109296, + 6447109296, + 6447109296, + 6447109296, + 6447109296, + 6447109296, + 6447109296, + 6447109296, + 6447109296 + ] + }, + ".?AV?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@": { + "col": 6481276424, + "vftable": 6480902080, + "funcs": [ + 6447924392, + 6447873280, + 6481276992, + 6447917920, + 6447917920, + 6447921568, + 6447917904, + 6447225984, + 6447174160, + 35098, + 6481270152, + 6447917136, + 6447917136, + 6447922832, + 6447917120, + 6447225600, + 6447174160, + 6481274256, + 6447918880, + 6447918880, + 6447919760, + 6447918864, + 6447225600, + 6447174160, + 6481271056, + 6447916560, + 6447916560, + 6447923424, + 6447916544, + 6447916528, + 6447174160, + 6481267920, + 6447918432, + 6447918432, + 6447920608, + 6447918416, + 6447225600, + 6447174160, + 6481276696, + 6447918528, + 6447918528, + 6447920352, + 6447918512, + 6447225600, + 6447174160, + 6481272976, + 6447917040, + 6447917040, + 6447923040, + 6447917024, + 6447225600, + 6447174160, + 159398494903017, + 6481275208, + 6447916752, + 6447916752, + 6447923216, + 6447916736, + 6447225600, + 6447174160, + 116913320389845, + 29934699616803, + 6481273272, + 6447917616 + ] + }, + ".?AV?$SpectralProcessor@M$07$01@@": { + "col": 6481268704, + "vftable": 6480903056, + "funcs": [ + 6447879056, + 6447878064, + 6447863120, + 6447109296, + 6447863312, + 6460483674, + 6447109296, + 6447109296, + 6447114144, + 6447109296, + 6447109296, + 6447109296, + 199503738418280, + 214159837052721, + 942224426206, + 48163786690158050, + 15199732635215812163, + 94, + 6481270088, + 6447879120, + 6447876336, + 6462119856, + 6447875232, + 6447109296, + 6447109296, + 6462114640, + 6447873952, + 6462114656, + 6447873520, + 6447116736, + 6447116736, + 6462114624, + 6460483674, + 6447116736, + 6447116736, + 6447116736, + 6447116736, + 6462114976, + 6447114144, + 6462115312, + 6460483674, + 6447188080, + 6462115008, + 6447876304, + 6447876288, + 6447876224, + 6447876080, + 6447109296, + 6447873504, + 6462111728, + 6447873488, + 6462111664, + 6462115360, + 6462115344, + 6447875216, + 6462116144, + 6462115952, + 6462116304, + 6462107648, + 6447525888, + 6462111648, + 6447874832, + 6447525936, + 6462112304 + ] + }, + ".?AVSoothe2AudioProcessor@@": { + "col": 6481276064, + "vftable": 6480904032, + "funcs": [ + 6462789792, + 6447876064, + 6447924332, + 1048371580408, + 6481268640, + 6447918960, + 6447918960, + 6447919456, + 6447918944, + 6447225600, + 6447174160, + 6481269256, + 6447916656, + 6447916656, + 6447109296, + 6447916640, + 6447225600, + 6447174160, + 6481275056, + 6447918272, + 6447918272, + 6447920928, + 6447918256, + 6447225600, + 6447174160, + 6481268288, + 6460483674, + 6447876064, + 6447924356, + 54228544076611, + 15944350892158266535, + 23820531197125289, + 12847278016066795777, + 10560612183233904457, + 6481273104, + 6447860640, + 6447109296, + 6447109296, + 6481274832, + 6447917968, + 6447917968, + 6447921456, + 6447917952, + 6447225984, + 6447174160, + 6481270400, + 6447918176, + 6447918176, + 6447921104, + 6447918160, + 6447225600, + 6447174160, + 6753545923604392814, + 12136, + 6481271496, + 6447918128, + 6447918128, + 6447921216, + 6447918112, + 6447225984, + 6447174160, + 964190142452, + 6481277376, + 6447916448 + ] + }, + ".?AV?$Soothe2ModuleBase@M$01@@": { + "col": 6481270488, + "vftable": 6480906152, + "funcs": [ + 6447889728, + 6447878064, + 6447863120, + 6447109296, + 6447877632, + 6447109296, + 6447109296, + 6447109296, + 6447114144, + 6447109296, + 6447109296, + 6447109296, + 6447109296, + 6447109296, + 6447109296, + 6447109296, + 6447109296, + 6447109296, + 6447109296, + 6447109296, + 6447109296, + 6447109296, + 6447109296, + 6447109296, + 6447877824, + 6447877776, + 6447877760, + 6447114144, + 6447877744, + 6447188080, + 6447109296, + 6447109296, + 4958379800140824160, + 521130258728, + 6481279752, + 6447982112, + 6463094448, + 6463094512, + 6462819456, + 6462819424, + 6462819408, + 6462819392, + 6462819376, + 6463094144, + 6463094400, + 6462819248, + 6463094336, + 6463094384, + 6463094000, + 6462819232, + 6481281192, + 6447947792, + 6463091088, + 6463091232, + 6463091040, + 6447946656, + 6481277696, + 6447924960, + 6463090000, + 6463089984, + 6463089728, + 6463090064, + 6463090016, + 6463090080 + ] + }, + ".?AV?$IIRFilterExtended@M$01@@": { + "col": 6481271576, + "vftable": 6480905688, + "funcs": [ + 6447908528, + 6447878064, + 6447878048, + 6447889232, + 6447889200, + 6481275392, + 6447924320, + 6447109296, + 6447864912, + 2064833067380298668, + 803538719999, + 6481268096, + 6447879552, + 6447878064, + 6447878048, + 6447109296, + 6460483674, + 20215, + 9076743667518146896, + 12422714616134243146, + 23087, + 6481277416, + 6447917728, + 6447917728, + 6447921936, + 6447917712, + 6447225600, + 6447174160, + 13914592658046159427, + 320260376924, + 7154382229308598437, + 25528, + 6481270656, + 6447918768, + 6447918768, + 6447920064, + 6447918752, + 6447225600, + 6447174160, + 6481274216, + 6447916496, + 6447916496, + 6447923472, + 6447916480, + 6447225984, + 6447174160, + 2031195209439791872, + 78168524935496, + 0, + 16816072981264251663, + 17890756257733324871, + 667364968035116281, + 3827645339180003300, + 63, + 17482051593650351696, + 12984446478163426643, + 13720632196738857758, + 6481270488, + 6447889728, + 6447878064, + 6447863120, + 6447109296, + 6447877632, + 6447109296 + ] + }, + ".?AV?$_Func_impl_no_alloc@V?$_Binder@U_Unforced@std@@P8?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@EAAXXZPEAV3@@std@@X$$V@std@@": { + "col": 6481271056, + "vftable": 6480902280, + "funcs": [ + 6447916560, + 6447916560, + 6447923424, + 6447916544, + 6447916528, + 6447174160, + 6481267920, + 6447918432, + 6447918432, + 6447920608, + 6447918416, + 6447225600, + 6447174160, + 6481276696, + 6447918528, + 6447918528, + 6447920352, + 6447918512, + 6447225600, + 6447174160, + 6481272976, + 6447917040, + 6447917040, + 6447923040, + 6447917024, + 6447225600, + 6447174160, + 159398494903017, + 6481275208, + 6447916752, + 6447916752, + 6447923216, + 6447916736, + 6447225600, + 6447174160, + 116913320389845, + 29934699616803, + 6481273272, + 6447917616, + 6447917616, + 6447920800, + 6447917600, + 6447225600, + 6447174160, + 105, + 4675283699518927250, + 1007650506689213843, + 132, + 6351194641503350524, + 65023, + 8679540299014535592, + 9552203681507817637, + 15388569115182531511, + 10553080410687998382, + 3217842, + 2334393380930741871, + 7598827579867620722, + 28271, + 2334393380930741871, + 8101238453177775727, + 8389191686055552364, + 3451441826509095009, + 126939393194338, + 7788717361369058874 + ] + }, + ".?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@": { + "col": 6481272792, + "vftable": 6480900648, + "funcs": [ + 6447879456, + 6460483674, + 12236060219235247538, + 3571460498590229695, + 873140123781040144, + 6481268744, + 6447924368, + 6462752032, + 39628, + 9249055085719729822, + 15011396420900693662, + 13725, + 6481276512, + 6447917232, + 6447917232, + 6447922512, + 6447917216, + 6447225600, + 6447174160, + 51134413789772905, + 16264330899661702037, + 54162, + 6481269000, + 6447862432, + 6447876336, + 6462119856, + 6447875232, + 6447109296, + 6447109296, + 6462114640, + 6447873952, + 6462114656, + 6462766384, + 6447116736, + 6447116736, + 6462114624, + 6462775312, + 6447116736, + 6447116736, + 6447116736, + 6447116736, + 6462114976, + 6447114144, + 6462115312, + 6462758928, + 6447188080, + 6462115008, + 6447876304, + 6447876288, + 6447876224, + 6447876080, + 6447109296, + 6462738432, + 6462111728, + 6447873488, + 6462111664, + 6462115360, + 6462115344, + 6447875216, + 6462116144, + 6462115952, + 6462116304, + 6462107648, + 6447525888 + ] + }, + ".?AVSoothe2ModuleDecryptor@@": { + "col": 6481274152, + "vftable": 6480903784, + "funcs": [ + 6447879456, + 6463302240, + 610414313767493062, + 6481269296, + 6447917648, + 6447917648, + 6447920768, + 6447917632, + 6447225600, + 6447174160, + 61840095711572517, + 246054381423050, + 67166326367465990, + 6481272616, + 6447918048, + 6447918048, + 6447920768, + 6447918032, + 6447225600, + 6447174160, + 6481272112, + 6447918480, + 6447918480, + 6447920528, + 6447918464, + 6447225600, + 6447174160, + 4814177912612482376, + 1353167122339953992, + 28235, + 6481276064, + 6462789792, + 6447876064, + 6447924332, + 1048371580408, + 6481268640, + 6447918960, + 6447918960, + 6447919456, + 6447918944, + 6447225600, + 6447174160, + 6481269256, + 6447916656, + 6447916656, + 6447109296, + 6447916640, + 6447225600, + 6447174160, + 6481275056, + 6447918272, + 6447918272, + 6447920928, + 6447918256, + 6447225600, + 6447174160, + 6481268288, + 6460483674, + 6447876064, + 6447924356, + 54228544076611, + 15944350892158266535, + 23820531197125289, + 12847278016066795777 + ] + }, + ".?AV?$Soothe2Module@M$01@@": { + "col": 6481275512, + "vftable": 6480904720, + "funcs": [ + 6447914704, + 6447878064, + 6447863120, + 6447109296, + 6447872320, + 6447864928, + 6447865824, + 6447865584, + 6447873008, + 6447109296, + 6447109296, + 6447109296, + 6447872928, + 6447872896, + 6447872864, + 6447872832, + 6447872800, + 6447872768, + 6447872720, + 6447872672, + 6447872592, + 6447872576, + 6447872560, + 6447872544, + 6447872432, + 6447872400, + 6447877760, + 6447872384, + 6447872352, + 6447116736, + 6447872336, + 6447109296, + 11029702, + 6481268784, + 6447917520, + 6447917520, + 6447922128, + 6447917504, + 6447225600, + 6447174160, + 15517651246018907537, + 11405610777517739660, + 4090689009200711057, + 9173, + 17438255966860435519, + 244545577009, + 13705521025604557585, + 6481277096, + 6447918672, + 6447918672, + 6447920144, + 6447918656, + 6447225600, + 6447174160, + 6481276592, + 6447916992, + 6447916992, + 6447923072, + 6447916976, + 6447225600, + 6447174160, + 6481274400, + 6447917376, + 6447917376 + ] + }, + ".?AVSoothe2Grid@@": { + "col": 6481294416, + "vftable": 6480927432, + "funcs": [ + 6448105904, + 6448104624, + 6448104640, + 6447109296, + 6447116736, + 6448092592, + 6448104672, + 6448104752, + 6481305904, + 6460483674, + 6448087920, + 6481296760, + 6448150384, + 6448150384, + 6448151296, + 6448150368, + 6447225600, + 6447174160, + 6481299008, + 6448081392, + 6462671280, + 6462671264, + 6462671248, + 6462671232, + 6462671216, + 6462671200, + 6463496112, + 6462671168, + 6481295904, + 6448147440, + 6448147440, + 6448147968, + 6448147424, + 6447225600, + 6447174160, + 6481297240, + 6448146624, + 6448146624, + 6448149824, + 6448146608, + 6447225984, + 6447174160, + 6481301720, + 6448150112, + 6448150112, + 6448151808, + 6448150096, + 6447225600, + 6447174160, + 6481299400, + 6448156204, + 6447109408, + 6481299768, + 6448146768, + 6448146768, + 6448149072, + 6448146752, + 6447225600, + 6447174160, + 6481299992, + 6448147392, + 6448147392, + 6448148048, + 6448147376 + ] + }, + ".?AVSoothe2AudioProcessorEditor@@": { + "col": 6481306128, + "vftable": 6480925000, + "funcs": [ + 6448156336, + 6448110192, + 6481301928, + 6448156360, + 6448099280, + 6481304376, + 6448091712, + 6463504336, + 6481300664, + 6448150160, + 6448150160, + 6447920768, + 6448150144, + 6447225600, + 6447174160, + 6481296928, + 6448079184, + 6465754160, + 6448078960, + 6465753888, + 6461137728, + 6448079008, + 6465754080, + 6465753936, + 6481302704, + 6448080864, + 6448080368, + 6448080416, + 6461137696, + 6461137728, + 6448080464, + 6481304616, + 6448147056, + 6448147056, + 6448148640, + 6448147040, + 6447225984, + 6447174160, + 6481296368, + 6448150640, + 6448150640, + 6447109296, + 6448150624, + 6447225600, + 6447174160, + 6481296128, + 6448093616, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6481295128, + 6448156288, + 6448100400, + 6481302112, + 6448156240, + 6463240976, + 6481300032, + 6448150288, + 6448150288, + 6448151392 + ] + }, + ".?AVFilterCurveLayer@@": { + "col": 6481301928, + "vftable": 6480925024, + "funcs": [ + 6448156360, + 6448099280, + 6481304376, + 6448091712, + 6463504336, + 6481300664, + 6448150160, + 6448150160, + 6447920768, + 6448150144, + 6447225600, + 6447174160, + 6481296928, + 6448079184, + 6465754160, + 6448078960, + 6465753888, + 6461137728, + 6448079008, + 6465754080, + 6465753936, + 6481302704, + 6448080864, + 6448080368, + 6448080416, + 6461137696, + 6461137728, + 6448080464, + 6481304616, + 6448147056, + 6448147056, + 6448148640, + 6448147040, + 6447225984, + 6447174160, + 6481296368, + 6448150640, + 6448150640, + 6447109296, + 6448150624, + 6447225600, + 6447174160, + 6481296128, + 6448093616, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6481295128, + 6448156288, + 6448100400, + 6481302112, + 6448156240, + 6463240976, + 6481300032, + 6448150288, + 6448150288, + 6448151392, + 6448150272, + 6447225600, + 6447174160 + ] + }, + ".?AV?$CloudyAudioProcessorEditor@VSoothe2AudioProcessor@@USoothe2VertexData@@@@": { + "col": 6481304184, + "vftable": 6480925992, + "funcs": [ + 6448156264, + 6448110192, + 6481300488, + 6448156420, + 6463275216, + 6463259488, + 6463223200, + 6463217216, + 6463217200, + 6481301000, + 6448147344, + 6448147344, + 6448148128, + 6448147328, + 6447225600, + 6447174160, + 6481296656, + 6448087984, + 6460483674, + 6481294736, + 6448147488, + 6448147488, + 6448147872, + 6448147472, + 6447225600, + 6447174160, + 6481297432, + 6448146576, + 6448146576, + 6448149936, + 6448146560, + 6447225984, + 6447174160, + 6481305344, + 6447186368, + 6448079264, + 6448079296, + 6461137696, + 6461137728, + 6448079344, + 6481297160, + 6448087088, + 6448086384, + 6481299112, + 6448106656, + 6462684160, + 6462684144, + 6462684128, + 6462684112, + 6462684096, + 6462684080, + 6462684064, + 6462683952, + 6462683856, + 6462687488, + 6462687072, + 6462687056, + 6462686112, + 6462685904, + 6462685888, + 6462685808, + 6448122304, + 6462684928, + 6462684720 + ] + }, + ".?AV?$CloudyOpenGLRenderer@USoothe2VertexData@@@@": { + "col": 6481298032, + "vftable": 6480922232, + "funcs": [ + 6448156228, + 6448118240, + 6481302072, + 6448146864, + 6448146864, + 6448148960, + 6448146848, + 6447225600, + 6447174160, + 6481301120, + 6448093952, + 6448092016, + 6448092240, + 6448092224, + 6481299576, + 6448156324, + 6448122256, + 6481301080, + 6448150672, + 6448150672, + 6447109296, + 6448150656, + 6447225600, + 6447174160, + 6481304824, + 6448156276, + 6462611728, + 6462611712, + 6462611696, + 6462611680, + 6481305616, + 6448081312, + 6447109408, + 6481296696, + 6448147248, + 6448147248, + 6448148240, + 6448147232, + 6447225984, + 6447174160, + 6481295008, + 6448156456, + 6448086432, + 6481295864, + 6448110480, + 6448156384, + 6481306216, + 6448150528, + 6448150528, + 6448150704, + 6448150512, + 6447225600, + 6447174160, + 6481298944, + 6448156216, + 6463209472, + 6481295736, + 6448150576, + 6448150576, + 6447109296, + 6448150560, + 6447225600, + 6447174160, + 6481301160 + ] + }, + ".?AV?$GainRangeScalingOptionComponent@VSoothe2GainRangeScalingOption@@@@": { + "col": 6481301640, + "vftable": 6480928296, + "funcs": [ + 6448156252, + 6448107456, + 6481305944, + 6448150480, + 6448150480, + 6448150848, + 6448150464, + 6447225600, + 6447174160, + 6481307176, + 6448156816, + 6462684160, + 6462684144, + 6462684128, + 6462684112, + 6462684096, + 6462684080, + 6462684064, + 6462683952, + 6462683856, + 6462687488, + 6462687072, + 6462687056, + 6462686112, + 6462685904, + 6462685888, + 6462685808, + 6462684944, + 6462684928, + 6462684720, + 6462684640, + 6462684400, + 6462684384, + 6462684240, + 6462684192, + 6462680544, + 6462684176, + 6462683840, + 6462683824, + 6462683792, + 6462683776, + 6462683760, + 6462683744, + 6462680528, + 6462683728, + 6462680512, + 6462683712, + 6462683696, + 6462683680, + 6462683664, + 6462683456, + 6462683440, + 6462683248, + 6460483674, + 6463373536, + 6463373360, + 6463373296, + 6463373248, + 6481307384, + 6448156752, + 6463435744, + 6481307672, + 6448161312, + 6462684160 + ] + }, + ".?AV?$CloudyOpenGLLayer@USoothe2VertexData@@@@": { + "col": 6481296128, + "vftable": 6480925368, + "funcs": [ + 6448093616, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6481295128, + 6448156288, + 6448100400, + 6481302112, + 6448156240, + 6463240976, + 6481300032, + 6448150288, + 6448150288, + 6448151392, + 6448150272, + 6447225600, + 6447174160, + 6481298600, + 6447183072, + 6447109408, + 6481296288, + 6448150240, + 6448150240, + 6448151440, + 6448150224, + 6447225600, + 6447174160, + 6481302904, + 6448156444, + 6448110544, + 6481304576, + 6448150336, + 6448150336, + 6448151344, + 6448150320, + 6447225600, + 6447174160, + 6481300624, + 6448156372, + 6448122256, + 6481296024, + 6447186368, + 6461103680, + 6461103632, + 6461137696, + 6461137728, + 6461131344, + 6481295528, + 6448156192, + 6462611728, + 6462611712, + 6462611696, + 6462611680, + 6481301680, + 6448147104, + 6448147104, + 6448148544, + 6448147088, + 6447225984, + 6447174160 + ] + }, + ".?AVSoothe2GainRangeScalingOption@@": { + "col": 6481296928, + "vftable": 6480925128, + "funcs": [ + 6448079184, + 6465754160, + 6448078960, + 6465753888, + 6461137728, + 6448079008, + 6465754080, + 6465753936, + 6481302704, + 6448080864, + 6448080368, + 6448080416, + 6461137696, + 6461137728, + 6448080464, + 6481304616, + 6448147056, + 6448147056, + 6448148640, + 6448147040, + 6447225984, + 6447174160, + 6481296368, + 6448150640, + 6448150640, + 6447109296, + 6448150624, + 6447225600, + 6447174160, + 6481296128, + 6448093616, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6481295128, + 6448156288, + 6448100400, + 6481302112, + 6448156240, + 6463240976, + 6481300032, + 6448150288, + 6448150288, + 6448151392, + 6448150272, + 6447225600, + 6447174160, + 6481298600, + 6447183072, + 6447109408, + 6481296288, + 6448150240, + 6448150240, + 6448151440, + 6448150224, + 6447225600, + 6447174160, + 6481302904, + 6448156444, + 6448110544 + ] + }, + ".?AVGainRangeScalingOption@@": { + "col": 6481298784, + "vftable": 6480923816, + "funcs": [ + 6448079184, + 6460483674, + 6448078960, + 6461137696, + 6461137728, + 6448079008, + 6460483674, + 6460483674, + 6481303184, + 6448147200, + 6448147200, + 6448148352, + 6448147184, + 6447225984, + 6447174160, + 6481302280, + 6448156108, + 6447109408, + 6481299360, + 6448122944, + 6462684160, + 6462684144, + 6462684128, + 6448112528, + 6462684096, + 6462684080, + 6462684064, + 6462683952, + 6462683856, + 6462687488, + 6462687072, + 6462687056, + 6462686112, + 6462685904, + 6462685888, + 6462685808, + 6462684944, + 6462684928, + 6462684720, + 6462684640, + 6462684400, + 6462684384, + 6462684240, + 6462684192, + 6448113472, + 6462684176, + 6447116736, + 6462683824, + 6462683792, + 6462683776, + 6462683760, + 6462683744, + 6448113152, + 6462683728, + 6462680512, + 6462683712, + 6462683696, + 6462683680, + 6462683664, + 6462683456, + 6462683440, + 6462101168, + 6462102112, + 6448111248 + ] + }, + ".?AVListener@?$Soothe2ModuleBase@M$01@@": { + "col": 6481298824, + "vftable": 6480924624, + "funcs": [ + 6448104288, + 6460483674, + 6481295168, + 6448156168, + 6448110544, + 6481305984, + 6448146960, + 6448146960, + 6448148784, + 6448146944, + 6447225600, + 6447174160, + 6481300528, + 6448156348, + 6448111392, + 6447109296, + 6481294520, + 6448146912, + 6448146912, + 6448148880, + 6448146896, + 6447225600, + 6447174160, + 6481302536, + 6448156396, + 6448122256, + 6481297328, + 6448147296, + 6448147296, + 6448148160, + 6448147280, + 6447225600, + 6447174160, + 6481301600, + 6448156144, + 6448086432, + 6481298744, + 6448156408, + 6448086384, + 6481296888, + 6448146816, + 6448146816, + 6448149040, + 6448146800, + 6447225600, + 6447174160, + 6481306128, + 6448156336, + 6448110192, + 6481301928, + 6448156360, + 6448099280, + 6481304376, + 6448091712, + 6463504336, + 6481300664, + 6448150160, + 6448150160, + 6447920768, + 6448150144, + 6447225600, + 6447174160, + 6481296928, + 6448079184 + ] + }, + ".?AUSoothe2VertexData@@": { + "col": 6481301120, + "vftable": 6480922312, + "funcs": [ + 6448093952, + 6448092016, + 6448092240, + 6448092224, + 6481299576, + 6448156324, + 6448122256, + 6481301080, + 6448150672, + 6448150672, + 6447109296, + 6448150656, + 6447225600, + 6447174160, + 6481304824, + 6448156276, + 6462611728, + 6462611712, + 6462611696, + 6462611680, + 6481305616, + 6448081312, + 6447109408, + 6481296696, + 6448147248, + 6448147248, + 6448148240, + 6448147232, + 6447225984, + 6447174160, + 6481295008, + 6448156456, + 6448086432, + 6481295864, + 6448110480, + 6448156384, + 6481306216, + 6448150528, + 6448150528, + 6448150704, + 6448150512, + 6447225600, + 6447174160, + 6481298944, + 6448156216, + 6463209472, + 6481295736, + 6448150576, + 6448150576, + 6447109296, + 6448150560, + 6447225600, + 6447174160, + 6481301160, + 6448082080, + 6460483674, + 6481295696, + 6448144512, + 6462684160, + 6462684144, + 6462684128, + 6462684112, + 6462684096, + 6462684080 + ] + }, + ".?AVSoothe2DummyEqualizerWrapper@@": { + "col": 6481304376, + "vftable": 6480925048, + "funcs": [ + 6448091712, + 6463504336, + 6481300664, + 6448150160, + 6448150160, + 6447920768, + 6448150144, + 6447225600, + 6447174160, + 6481296928, + 6448079184, + 6465754160, + 6448078960, + 6465753888, + 6461137728, + 6448079008, + 6465754080, + 6465753936, + 6481302704, + 6448080864, + 6448080368, + 6448080416, + 6461137696, + 6461137728, + 6448080464, + 6481304616, + 6448147056, + 6448147056, + 6448148640, + 6448147040, + 6447225984, + 6447174160, + 6481296368, + 6448150640, + 6448150640, + 6447109296, + 6448150624, + 6447225600, + 6447174160, + 6481296128, + 6448093616, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6460483674, + 6481295128, + 6448156288, + 6448100400, + 6481302112, + 6448156240, + 6463240976, + 6481300032, + 6448150288, + 6448150288, + 6448151392, + 6448150272, + 6447225600, + 6447174160, + 6481298600, + 6447183072, + 6447109408 + ] + }, + ".?AVSoothe2_DynamicCryptoManager@eden@pace@@": { + "col": 6481309032, + "vftable": 6480930184, + "funcs": [ + 6448176192, + 6463535168, + 6463534560, + 6481309416, + 6448175504, + 6481317816, + 6448203504, + 6448203504, + 6447109296, + 6448203488, + 6447225600, + 6447174160, + 6481310480, + 6448213380, + 6448122256, + 6481312568, + 6448207024, + 6448207024, + 6448208768, + 6448207008, + 6447225600, + 6447174160, + 6481314960, + 6448200448, + 6462684160, + 6462596880, + 6462596768, + 6462596592, + 6462596064, + 6462596256, + 6462684064, + 6462683952, + 6462683856, + 6462687488, + 6462687072, + 6462595760, + 6462686112, + 6462685904, + 6462685888, + 6462685808, + 6448190256, + 6462684928, + 6462684720, + 6462684640, + 6462684400, + 6462598928, + 6462684240, + 6462684192, + 6462596992, + 6462684176, + 6462594176, + 6462683824, + 6462683792, + 6462595872, + 6462595792, + 6462683744, + 6462680528, + 6462683728, + 6462680512, + 6462683712, + 6462683696, + 6462597760, + 6462683664, + 6462683456 + ] + }, + ".?AVAutoBandSoloOptionComponent@@": { + "col": 6481327104, + "vftable": 6480932816, + "funcs": [ + 6448213176, + 6464160320, + 6481310944, + 6448212984, + 6464182624, + 6481323752, + 6448213188, + 6463535472, + 6481310784, + 6448212948, + 6464155216, + 6447109296, + 6481318272, + 6448187440, + 6462684160, + 6463973232, + 6463966752, + 6463881424, + 6462684096, + 6463952288, + 6462684064, + 6462683952, + 6462683856, + 6462687488, + 6462687072, + 6462687056, + 6462686112, + 6462685904, + 6462685888, + 6462685808, + 6448122304, + 6462684928, + 6462684720, + 6462684640, + 6462684400, + 6462684384, + 6462684240, + 6462684192, + 6463916640, + 6462684176, + 6463929392, + 6462683824, + 6462683792, + 6463945920, + 6463939488, + 6462683744, + 6462680528, + 6462683728, + 6462680512, + 6462683712, + 6462683696, + 6462683680, + 6462683664, + 6462683456, + 6462683440, + 6462683248, + 6447109296, + 6463978720, + 6463887488, + 6463902560, + 6463893248, + 6463881696, + 6481325272, + 6448182448 + ] + }, + ".?AVCloudyBandModeButtonGroup@@": { + "col": 6481354360, + "vftable": 6480970896, + "funcs": [ + 6448254964, + 6447185872, + 6464485872, + 6481342152, + 6448254040, + 6462361792, + 6462339840, + 6462439824, + 6462444864, + 6462442864, + 6462339232, + 6462439808, + 6462338384, + 6462419120, + 6462439296, + 6462439424, + 6462337872, + 6462438768, + 6462438752, + 6462438736, + 6462438720, + 6481343680, + 6447186144, + 6448079264, + 6461258448, + 6461248080, + 6461236096, + 6481352264, + 6448255228, + 6464324832, + 6481354320, + 6448219696, + 6462684160, + 6448215120, + 6448215280, + 6465038592, + 6465018736, + 6464999616, + 6462684064, + 6465018512, + 6462683856, + 6462687488, + 6462687072, + 6462687056, + 6462686112, + 6462685904, + 6462685888, + 6462685808, + 6462684944, + 6462684928, + 6462684720, + 6462684640, + 6462684400, + 6462684384, + 6462684240, + 6462684192, + 6462680544, + 6462684176, + 6462683840, + 6462683824, + 6464910400, + 6462683776, + 6462683760, + 6462683744 + ] + }, + ".?AVCloudyBandModeButton@@": { + "col": 6481347192, + "vftable": 6480965912, + "funcs": [ + 6448253584, + 6464552592, + 6464552784, + 6462610752, + 6464552704, + 6464552496, + 6462610720, + 6481332680, + 6448254628, + 6448157040, + 6481338656, + 6448245952, + 6448245952, + 6448204496, + 6448245936, + 6447225600, + 6447174160, + 6481341192, + 6448245904, + 6448245904, + 6448246496, + 6448245888, + 6447225984, + 6447174160, + 6481330568, + 6448216624, + 6462375792, + 6462449216, + 6465439824, + 6462446368, + 6462446336, + 6462345360, + 6462446288, + 6462462432, + 6462462272, + 6462461952, + 6462450224, + 6462344704, + 6462344448, + 6462418992, + 6462136432, + 6481345280, + 6448254736, + 6462371440, + 6462407728, + 6481331800, + 6448254424, + 6462399632, + 6462399600, + 6462399536, + 6481340808, + 6448221984, + 6462684160, + 6464409040, + 6464403184, + 6462684112, + 6462684096, + 6464397712, + 6462684064, + 6462683952, + 6462683856, + 6462687488, + 6462687072, + 6462687056 + ] + }, + ".?AVBandModePopupMenuItem@@": { + "col": 6481348312, + "vftable": 6480962848, + "funcs": [ + 6448253572, + 6465236832, + 6464459552, + 6465500176, + 6465500160, + 6465271776, + 6465258448, + 6481338592, + 6448255156, + 6447185872, + 6462600960, + 6481347152, + 6464884288, + 6448253284, + 6481339488, + 6448254568, + 6462277856, + 6462277616, + 6462277408, + 6462277216, + 6481333272, + 6447186144, + 6448214400, + 6461258448, + 6461248080, + 6461236096, + 6481330120, + 6448223664, + 6462684160, + 6462684144, + 6462684128, + 6462684112, + 6462684096, + 6462684080, + 6462684064, + 6462683952, + 6462683856, + 6462687488, + 6462687072, + 6462687056, + 6462686112, + 6462685904, + 6462685888, + 6462685808, + 6462684944, + 6462684928, + 6462684720, + 6462684640, + 6462684400, + 6462684384, + 6462684240, + 6462684192, + 6464323712, + 6462684176, + 6462683840, + 6462683824, + 6462683792, + 6462683776, + 6462683760, + 6462683744, + 6462680528, + 6462683728, + 6462680512, + 6462683712 + ] + }, + ".?AVSoothe2FilterGraph@@": { + "col": 6481358992, + "vftable": 6480979984, + "funcs": [ + 6448255584, + 6462684160, + 6448264400, + 6448264064, + 6462684112, + 6462684096, + 6462684080, + 6462684064, + 6462683952, + 6462683856, + 6462687488, + 6462687072, + 6462687056, + 6462686112, + 6462685904, + 6462685888, + 6462685808, + 6448122304, + 6462684928, + 6462684720, + 6462684640, + 6462684400, + 6462684384, + 6462684240, + 6462684192, + 6448262528, + 6462684176, + 6462683840, + 6462683824, + 6462683792, + 6462683776, + 6462683760, + 6462683744, + 6448262992, + 6462683728, + 6462680512, + 6462683712, + 6462683696, + 6462683680, + 6462683664, + 6462683456, + 6462683440, + 6462683248, + 6447109296, + 6469742576, + 6447109296, + 6469742960, + 6481357024, + 6448271920, + 6447878064, + 6447878048, + 6448269392, + 6448269488, + 6448269232, + 6481358488, + 6448276272, + 6448276272, + 6448276480, + 6448276256, + 6447225600, + 6447174160, + 6481357496, + 6448278288, + 6448264448 + ] + }, + ".?AV?$FilterGraph@M$05$0CAA@@@": { + "col": 6481358216, + "vftable": 6480978472, + "funcs": [ + 6448278300, + 6448263184, + 6481357640, + 6448278192, + 6465564672, + 6447109296, + 6481356488, + 6448255936, + 6462684160, + 6462684144, + 6462684128, + 6462684112, + 6462684096, + 6462684080, + 6462684064, + 6462683952, + 6462683856, + 6462687488, + 6462687072, + 6462687056, + 6462686112, + 6462685904, + 6462685888, + 6462685808, + 6462684944, + 6462684928, + 6462684720, + 6462684640, + 6462684400, + 6462684384, + 6462684240, + 6462684192, + 6462680544, + 6462684176, + 6462683840, + 6462683824, + 6462683792, + 6462683776, + 6462683760, + 6462683744, + 6465569808, + 6462683728, + 6462680512, + 6462683712, + 6462683696, + 6462683680, + 6462683664, + 6462683456, + 6462683440, + 6462683248, + 6481358552, + 6448276320, + 6448276320, + 6448276352, + 6448276304, + 6447225984, + 6447174160, + 6481357680, + 6448278276, + 6447109296, + 6448263712, + 6448263360, + 6447109296, + 6481357904 + ] + }, + ".?AV?$DigitalFilter@M$0BA@$01@@": { + "col": 6481356656, + "vftable": 6480979872, + "funcs": [ + 6448272048, + 6447878064, + 6447878048, + 6447109296, + 6460483674, + 6460483674, + 6481358632, + 6448276176, + 6448276176, + 6448276560, + 6448276160, + 6447225600, + 6447174160, + 6481358992, + 6448255584, + 6462684160, + 6448264400, + 6448264064, + 6462684112, + 6462684096, + 6462684080, + 6462684064, + 6462683952, + 6462683856, + 6462687488, + 6462687072, + 6462687056, + 6462686112, + 6462685904, + 6462685888, + 6462685808, + 6448122304, + 6462684928, + 6462684720, + 6462684640, + 6462684400, + 6462684384, + 6462684240, + 6462684192, + 6448262528, + 6462684176, + 6462683840, + 6462683824, + 6462683792, + 6462683776, + 6462683760, + 6462683744, + 6448262992, + 6462683728, + 6462680512, + 6462683712, + 6462683696, + 6462683680, + 6462683664, + 6462683456, + 6462683440, + 6462683248, + 6447109296, + 6469742576, + 6447109296, + 6469742960, + 6481357024, + 6448271920, + 6447878064 + ] + }, + ".?AV?$LowPassFilter@M$0BA@$01@@": { + "col": 6481357024, + "vftable": 6480980368, + "funcs": [ + 6448271920, + 6447878064, + 6447878048, + 6448269392, + 6448269488, + 6448269232, + 6481358488, + 6448276272, + 6448276272, + 6448276480, + 6448276256, + 6447225600, + 6447174160, + 6481357496, + 6448278288, + 6448264448, + 6481358448, + 6447186144, + 6448255376, + 6461258448, + 6448255408, + 6461236096, + 6481357088, + 6448278168, + 6448264448, + 6481356528, + 6448278180, + 6448122256, + 6481356984, + 6448276128, + 6448276128, + 6448276768, + 6448276112, + 6447225600, + 6447174160, + 6481357376, + 6448278228, + 6448264752, + 6481358080, + 6448278240, + 6448122256, + 8092811735930918723, + 1852795252, + 7234316346692756851, + 431348605472, + 7305508526278406759, + 108, + 6481359936, + 6448278512, + 6462684160, + 6448215120, + 6448215280, + 6465038592, + 6465018736, + 6464999616, + 6462684064, + 6465018512, + 6462683856, + 6462687488, + 6462687072, + 6462687056, + 6462686112, + 6462685904, + 6462685888 + ] + }, + ".?AV?$FilterGraphGrid@M@@": { + "col": 6481358256, + "vftable": 6480978088, + "funcs": [ + 6448268464, + 6462684160, + 6462684144, + 6462684128, + 6462684112, + 6462684096, + 6462684080, + 6462684064, + 6462683952, + 6462683856, + 6462687488, + 6462687072, + 6462687056, + 6462686112, + 6462685904, + 6462685888, + 6462685808, + 6448122304, + 6462684928, + 6462684720, + 6462684640, + 6462684400, + 6462684384, + 6462684240, + 6462684192, + 6462680544, + 6462684176, + 6462683840, + 6462683824, + 6462683792, + 6462683776, + 6462683760, + 6462683744, + 6448256448, + 6462683728, + 6462680512, + 6462683712, + 6462683696, + 6462683680, + 6462683664, + 6462683456, + 6462683440, + 6462683248, + 6448258880, + 6481355888, + 6448278264, + 6448122256, + 6481358216, + 6448278300, + 6448263184, + 6481357640, + 6448278192, + 6465564672, + 6447109296, + 6481356488, + 6448255936, + 6462684160, + 6462684144, + 6462684128, + 6462684112, + 6462684096, + 6462684080, + 6462684064, + 6462683952 + ] + }, + ".?AVLines@?$FilterGraphGrid@M@@": { + "col": 6481358672, + "vftable": 6480979416, + "funcs": [ + 6448276032, + 6462684160, + 6462684144, + 6462684128, + 6462684112, + 6462684096, + 6462684080, + 6462684064, + 6462683952, + 6462683856, + 6462687488, + 6462687072, + 6462687056, + 6462686112, + 6462685904, + 6462685888, + 6462685808, + 6462684944, + 6462684928, + 6462684720, + 6462684640, + 6462684400, + 6462684384, + 6462684240, + 6462684192, + 6448269568, + 6462684176, + 6462683840, + 6462683824, + 6462683792, + 6462683776, + 6462683760, + 6462683744, + 6462680528, + 6462683728, + 6462680512, + 6462683712, + 6462683696, + 6462683680, + 6462683664, + 6462683456, + 6462683440, + 6462683248, + 6481356856, + 6448278252, + 6469742912, + 6481356216, + 6448278156, + 6448264752, + 6481357184, + 6448277104, + 6448277088, + 6448277216, + 6448277072, + 6447231696, + 6447174160, + 6481356656, + 6448272048, + 6447878064, + 6447878048, + 6447109296, + 6460483674, + 6460483674, + 6481358632 + ] + }, + ".?AVSoothe2XYSliderArea@@": { + "col": 6481359936, + "vftable": 6480980752, + "funcs": [ + 6448278512, + 6462684160, + 6448215120, + 6448215280, + 6465038592, + 6465018736, + 6464999616, + 6462684064, + 6465018512, + 6462683856, + 6462687488, + 6462687072, + 6462687056, + 6462686112, + 6462685904, + 6462685888, + 6462685808, + 6448279184, + 6462684928, + 6462684720, + 6462684640, + 6462684400, + 6462684384, + 6462684240, + 6462684192, + 6462680544, + 6462684176, + 6462683840, + 6462683824, + 6464910400, + 6462683776, + 6462683760, + 6462683744, + 6465593344, + 6462683728, + 6462680512, + 6462683712, + 6462683696, + 6462683680, + 6462683664, + 6462683456, + 6462683440, + 6462683248, + 6465599968, + 6447109296, + 6481359816, + 6448279468, + 6448122256, + 6481359096, + 6464910112, + 6448279504, + 6481359352, + 6448278832, + 6462684160, + 6462684144, + 6462684128, + 6462684112, + 6462684096, + 6462684080, + 6462684064, + 6462683952, + 6462683856, + 6462687488, + 6462687072 + ] + }, + ".?AVSoothe2SectionHeader@@": { + "col": 6481361888, + "vftable": 6480983312, + "funcs": [ + 6448285152, + 6462684160, + 6462684144, + 6462684128, + 6462684112, + 6462684096, + 6462684080, + 6462684064, + 6462683952, + 6462683856, + 6462687488, + 6462687072, + 6462687056, + 6462686112, + 6462685904, + 6462685888, + 6462685808, + 6448122304, + 6462684928, + 6462684720, + 6462684640, + 6462684400, + 6462684384, + 6462684240, + 6462684192, + 6448284496, + 6462684176, + 6462683840, + 6462683824, + 6462683792, + 6462683776, + 6462683760, + 6462683744, + 6448283408, + 6462683728, + 6462680512, + 6462683712, + 6462683696, + 6462683680, + 6462683664, + 6462683456, + 6462683440, + 6462683248, + 6447109296, + 6481361040, + 6448291552, + 6448291552, + 6448292016, + 6448291536, + 6447225600, + 6447174160, + 6481362640, + 6465702368, + 6448292980, + 6481363576, + 6448293028, + 6465650736, + 6447109296, + 6481361160, + 6448286416, + 6462684160, + 6462684144, + 6462684128, + 6462684112 + ] + }, + ".?AVSoothe2Header@@": { + "col": 6481368216, + "vftable": 6480995576, + "funcs": [ + 6448337376, + 6462684160, + 6462684144, + 6462684128, + 6462684112, + 6462684096, + 6462684080, + 6462684064, + 6462683952, + 6462683856, + 6462687488, + 6462687072, + 6462687056, + 6462686112, + 6462685904, + 6462685888, + 6462685808, + 6448122304, + 6462684928, + 6462684720, + 6462684640, + 6462684400, + 6462684384, + 6462684240, + 6462684192, + 6448335936, + 6462684176, + 6462683840, + 6462683824, + 6462683792, + 6462683776, + 6462683760, + 6462683744, + 6448335712, + 6462683728, + 6462680512, + 6462683712, + 6462683696, + 6462683680, + 6462683664, + 6462683456, + 6462683440, + 6462683248, + 6447109296, + 6481367944, + 6448343412, + 6447185872, + 6447581520, + 6481367840, + 6465765632, + 6448343436, + 6481367880, + 6448343120, + 6448343120, + 6448292016, + 6448343104, + 6447225600, + 6447174160, + 6481368536, + 6448340176, + 6448338400, + 6448338336, + 6448338480, + 6448338544 + ] + } +} \ No newline at end of file diff --git a/run_sweep.py b/run_sweep.py new file mode 100644 index 0000000..ff82f45 --- /dev/null +++ b/run_sweep.py @@ -0,0 +1,63 @@ +#!/usr/bin/env python3 +"""Batch soothes2 RPP render runner with hang protection. +Usage: run_sweep.py [--src burst500.wav] [--dur 2.0] [--outdir ...] +grid.json: + { "name": "verif", + "base": "/home/m/soothe-bt/render_rt.rpp", + "data": [ {"rpp":"d05", "wav":"d05.wav", "params":{"depth":"0.5!"}}, ... ] } +Each data row renders base template with src substituted and params applied, +then runs reaper -renderproject with a per-render timeout and kills on hang. +""" +import json, sys, os, time, subprocess, signal, argparse +sys.path.insert(0, '/home/m/re-tools') +from mkbase import patch_tt +from tt_sweep import TPL as _x # noqa + +REAPER = '/usr/bin/reaper' +SRC = '/home/m/soothe-bt/burst500p.wav' +DUR = 2.0 +OUTDIR = '/home/m/soothe-bt' + +def render(rpp, timeout=150): + proc = subprocess.Popen([REAPER, '-nosplash', '-renderproject', rpp], + stdout=open('/tmp/render.log','w'), stderr=subprocess.STDOUT) + try: + return proc.wait(timeout=timeout) + except subprocess.TimeoutExpired: + for sig in (signal.SIGTERM, signal.SIGKILL): + try: proc.send_signal(sig); proc.wait(timeout=5) + except Exception: pass + print(f' !! HANG killed {rpp}') + return 'hang' + +def pkill_sos(): + os.system("pkill -9 -x reaper 2>/dev/null; pkill -9 -f '[y]abridge' 2>/dev/null") + +def main(): + ap = argparse.ArgumentParser() + ap.add_argument('grid') + ap.add_argument('--src', default=SRC) + ap.add_argument('--dur', type=float, default=DUR) + ap.add_argument('--outdir', default=OUTDIR) + a = ap.parse_args() + g = json.load(open(a.grid)) + pkill_sos(); time.sleep(1) + miss = 0 + for row in g['data']: + rpp = os.path.join(a.outdir, row['rpp'] + '.rpp') + wav = os.path.join(a.outdir, row['wav']) + if not os.path.exists(wav): + patch_tt(g['base'], a.src, rpp, wav, dur=a.dur) + # now patch params on top + os.system(f"python3 /home/m/re-tools/tt_sweep.py {rpp} {rpp}.tmp {wav} " + + ' '.join(f'{k}={v.rstrip("!")}' for k, v in row['params'].items())) + os.rename(rpp + '.tmp', rpp) + rc = render(rpp) + print(f"{row['rpp']}: render rc={rc}") + miss += 1 if os.path.exists(wav) else 0 + else: + print(f"{row['rpp']}: already exists") + print(f"done. rendered {miss} fresh.") + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/run_verif.py b/run_verif.py new file mode 100644 index 0000000..ef418e0 --- /dev/null +++ b/run_verif.py @@ -0,0 +1,62 @@ +#!/usr/bin/env python3 +"""Verification sweep: generate RPPs from burst500p_b1 template, render, measure. +Cleanup-friendly: skips already-rendered wavs. +""" +import os, re, sys, time, subprocess, signal +sys.path.insert(0, '/home/m/re-tools') + +TPL = '/home/m/soothe-bt/burst500p_b1.rpp' +DIR = '/home/m/soothe-bt' +REAPER = '/usr/bin/reaper' + +def render(rpp, wav, timeout=150): + proc = subprocess.Popen([REAPER, '-nosplash', '-renderproject', rpp], + stdout=open('/tmp/verif_render.log','w'), stderr=subprocess.STDOUT) + try: + proc.wait(timeout=timeout) + return 'ok' if os.path.exists(wav) else 'no-file' + except subprocess.TimeoutExpired: + for s in (signal.SIGTERM, signal.SIGKILL): + try: proc.send_signal(s); proc.wait(timeout=5) + except Exception: pass + return 'hang' + +os.system("pkill -9 -x reaper 2>/dev/null; pkill -9 -f '[y]abridge' 2>/dev/null; sleep 1") + +def gen_rpp(name, params): + rpp = os.path.join(DIR, name + '.rpp') + wav = os.path.join(DIR, name + '.wav') + args = [f'{k}={v}' for k, v in params.items()] + if os.path.exists(wav): + print(f'{name}: cached') + return wav + os.system(f"python3 /home/m/re-tools/tt_sweep.py {TPL} {rpp} {wav} " + ' '.join(args)) + rc = render(rpp, wav) + print(f'{name}: {rc}') + return wav + +DRY = '/home/m/soothe-bt/burst500p_byp.wav' +if not os.path.exists(DRY): + os.system("cp /home/m/soothe-bt/burst500p_byp.rpp /home/m/soothe-bt/zz_byp.rpp") + # render dry baseline + proc = subprocess.Popen([REAPER, '-nosplash', '-renderproject', '/home/m/soothe-bt/burst500p_byp.rpp'], + stdout=open('/tmp/verif_byp.log','w'), stderr=subprocess.STDOUT) + try: + proc.wait(timeout=150) + except subprocess.TimeoutExpired: + proc.kill() + print('dry baseline', os.path.exists(DRY)) + +sweeps = { + 'depth': {'0.5':'0.5','1':'1.0','2':'2.0','3':'3.0','5':'5.0','10':'10.0'}, + 'attack': {'a5':'5.0','a25':'25.0','a100':'100.0','a250':'250.0','a500':'500.0'}, + 'release': {'r10':'10.0','r100':'100.0','r500':'500.0','r1000':'1000.0'}, + 'sharp': {'sh1':'1.0','sh3':'3.0','sh5':'5.0','sh20':'20.0'}, + 'mode': {'m0':'0.0','m2':'2.0'}, + 'sens': {'sn0':'0.0','sn6':'6.0','sn24':'24.0','sn48':'48.0'}, +} +for group, vals in sweeps.items(): + for name, val in vals.items(): + gen_rpp(f'vp_{group}_{name}', {group: val}) + +print('\nall done; run measure.py on each vp_*.wav vs dry') \ No newline at end of file diff --git a/run_verif2.py b/run_verif2.py new file mode 100644 index 0000000..29947aa --- /dev/null +++ b/run_verif2.py @@ -0,0 +1,56 @@ +#!/usr/bin/env python3 +"""Render remaining verification sweeps serially with hang protection. +Waits for reaper process EXIT (not just wav file appearing).""" +import os, sys, time, subprocess, signal + +TPL = '/home/m/soothe-bt/burst500q_b1.rpp' +DIR = '/home/m/soothe-bt' +REAPER = '/usr/bin/reaper' + +def render(rpp, timeout=180): + proc = subprocess.Popen([REAPER, '-nosplash', '-renderproject', rpp], + stdout=open('/tmp/verif2.log','w'), stderr=subprocess.STDOUT) + try: + proc.wait(timeout=timeout) + return proc.returncode + except subprocess.TimeoutExpired: + for s in (signal.SIGTERM, signal.SIGKILL): + try: proc.send_signal(s); proc.wait(timeout=5) + except Exception: pass + return 'hang' + +os.system("pkill -9 -x reaper 2>/dev/null; pkill -9 -f '[y]abridge' 2>/dev/null; sleep 1") + +def gen(name, params, depth_base='0.8639736175537109'): + rpp = os.path.join(DIR, name + '.rpp') + wav = os.path.join(DIR, name + '.wav') + if os.path.exists(wav) and os.path.getsize(wav) == 1588290: + print(f'{name}: cached') + return + args = ' '.join(f'{k}={v}' for k, v in params.items()) + cmd = ['python3', '/home/m/re-tools/tt_sweep.py', TPL, rpp, wav] + for k, v in params.items(): + cmd.append(f'{k}={v}') + subprocess.run(cmd, capture_output=True) + rc = render(rpp) + size = os.path.getsize(wav) if os.path.exists(wav) else 0 + print(f'{name}: rc={rc} size={size}') + # avoid "already exists" false positives on truncated files + if size != 1588290 and os.path.exists(wav): + os.remove(wav) + +sweeps = { + 'release': {'r10':'10.0','r100':'100.0','r500':'500.0','r1000':'1000.0'}, + 'sharpness': {'sh1':'1.0','sh3':'3.0','sh5':'5.0','sh20':'20.0'}, + 'sens': {'sn0':'0.0','sn6':'6.0','sn24':'24.0','sn48':'48.0'}, + 'mode_d5': {'m0':'0.0','m2':'2.0'}, +} +for group, vals in sweeps.items(): + for name, val in vals.items(): + params = {group.replace('_d5',''): val} + if group == 'sens': + params = {'band1 sens': val} + if group == 'mode_d5': + params = {'mode': val, 'depth': '5.0'} + gen(f'vpq_{group}_{name}', params) +print('done') \ No newline at end of file diff --git a/sim.py b/sim.py new file mode 100644 index 0000000..f946150 --- /dev/null +++ b/sim.py @@ -0,0 +1,125 @@ +#!/usr/bin/env python3 +"""soothe2 поведенческий симулятор. +Модель: out = x − amount(t)·bp(x; fc, Q) + bp — 2nd-order bandpass, пик gain 1.0 на fc; Q из selectivity. + amount(t) = amt_total·env(t), env — one-pole со скоростью attack (в рост) / release (в спад). + env управляется энергией полосы (детектор): bp-loudness > порога → целимся в amt, иначе в 0. +Кривые из fit_curves.py / измерения. +""" +import numpy as np +import wave + +def _lut_sat(xs, ys, x): + return np.interp(x, xs, ys, left=ys[0], right=ys[-1]) + +# --- измеренные кривые как LUT (максимальная точность) --- +_DEPTH_LUT = (np.array([0.5, 0.864, 1.0, 2.0, 3.0, 5.0, 10.0, 20.0]), + np.array([0.5605, 0.5879, 0.5977, 0.6673, 0.7274, 0.8199, 0.9387, 0.9893])) +_SENS_LUT = (np.array([0.0, 6.0, 12.0, 24.0, 48.0]), + np.array([0.4814, 0.7597, 1.0, 1.0, 1.0])) +_SHARP_LUT = (np.array([1.0, 3.0, 5.0, 10.0, 20.0]), + np.array([0.2041, 0.5913, 0.8386, 1.0, 1.0])) + +def amount_total(depth=0.864, sens=12.0, sharp=10.0, mode=1): + A = _lut_sat(*_DEPTH_LUT, depth) + S = _lut_sat(*_SENS_LUT, sens) + H = _lut_sat(*_SHARP_LUT, sharp) + M = 0.745 if mode == 0 else 1.0 + return A * S * H * M + +def read_wav(path): + w = wave.open(path, 'rb') + sw, nc, n = w.getsampwidth(), w.getnchannels(), w.getnframes() + d = np.frombuffer(w.readframes(n), dtype=np.uint8).reshape(n, nc, sw) + w.close() + ch = d[:, 0, :] + if sw == 3: + v = (ch[:, 0].astype(np.int64) | (ch[:, 1].astype(np.int64) << 8) | + (ch[:, 2].astype(np.int64) << 16)) + v = (v ^ (1 << 23)) - (1 << 23) + return v.astype(np.float64) / (1 << 23) + elif sw == 2: + v = (ch[:, 0].astype(np.int64) | (ch[:, 1].astype(np.int64) << 8)) + v = (v ^ (1 << 15)) - (1 << 15) + return v.astype(np.float64) / (1 << 15) + else: + v = ch[:, 0].astype(np.float64) + return (v - 128) / 128.0 + +def write_wav(path, x, sr=44100): + x = np.clip(x, -1, 1) + frames = (x.astype(np.float64) * (1 << 23)).astype(np.int64) + out = np.empty((frames.size, 1, 3), dtype=np.uint8) + out[:, 0, 0] = (frames & 0xFF).astype(np.uint8) + out[:, 0, 1] = ((frames >> 8) & 0xFF).astype(np.uint8) + out[:, 0, 2] = ((frames >> 16) & 0xFF).astype(np.uint8) + w = wave.open(path, 'wb') + w.setnchannels(1); w.setsampwidth(3); w.setframerate(sr) + w.writeframes(np.ascontiguousarray(out).tobytes()); w.close() + +def tau_attack(attack): + return 0.020 * np.exp(attack / 1.955) # a=0→20ms, a=5→258ms, a=10→3.3s + +def tau_release(release): + # измеренные tau (экспоненциальный фит спада к floor 0.2dB) + xs = np.array([0.0, 1.0, 2.0, 5.0, 10.0, 100.0]) + ys = np.array([0.027, 0.08, 0.11, 0.14, 15.0, 15.0]) + return float(np.interp(release, xs, ys)) + +def q_from_sel(sel): + # лучший фит ширины (probes-зонд): sel1→3.5, sel8→6.0 (2-порядка полоса) + return 3.0 + 0.36 * min(sel, 10.0) + +# --- bandpass biquad: peak gain = 1.0 на fc (RBJ normalized) --- +def bp_coeffs(fc, q, sr): + w0 = 2 * np.pi * fc / sr + alpha = np.sin(w0) / (2 * q) + b = np.array([alpha, 0.0, -alpha]) / alpha # [1, 0, -1] + a = np.array([1 + alpha, -2 * np.cos(w0), 1 - alpha]) + an = a / a[0] # normalize denominator: a[0]=1 + # численное сканирование → норм на пик=1 (fn scale) + w = np.linspace(w0 * 0.4, w0 * 1.6, 8000) + H = np.abs(b[0] / a[0] * (1 - np.exp(-2j * w)) / + (1 + an[1] * np.exp(-1j * w) + an[2] * np.exp(-2j * w))) + G = H.max() + bn = b / a[0] / G + return bn, an + +def apply_bp(x, fc, q, sr): + b, a = bp_coeffs(fc, q, sr) + b0, b1, b2 = b + a1, a2 = a[1], a[2] + y = np.zeros_like(x) + z1 = z2 = 0.0 + for i in range(x.size): + v = x[i] + out = b0 * v + z1 + z1 = b1 * v - a1 * out + z2 + z2 = b2 * v - a2 * out + y[i] = out + return y + +def simulate(x, sr=44100, fc=500.0, depth=0.864, sens=12.0, sharp=10.0, + sel=10.0, mode=1, attack=0.0, release=0.0, mix=100.0, thr=0.010): + amt = amount_total(depth, sens, sharp, mode) + q = q_from_sel(sel) + ta, tr = tau_attack(attack), tau_release(release) + a_alpha = 1 - np.exp(-1.0 / (ta * sr)) + r_alpha = 1 - np.exp(-1.0 / (tr * sr)) + bp = apply_bp(x, fc, q, sr) + # детектор: мгновенная амплитуда полосы → smoothed loudness + if len(x) > 0: + loud = np.abs(bp) + N = int(0.005 * sr) + win = np.ones(N) / N + loud = np.convolve(loud, win, mode='same') + env = 0.0 + out = np.zeros_like(x) + lp = 0.0 + for i in range(x.size): + tar = amt if loud[i] > thr else 0.0 + env += (a_alpha if tar > env else r_alpha) * (tar - env) + out[i] = x[i] - env * bp[i] + if mix < 100: + out = (100 - mix) / 100.0 * x + mix / 100.0 * out + return out \ No newline at end of file diff --git a/sim_v5.py b/sim_v5.py new file mode 100644 index 0000000..acdb1bf --- /dev/null +++ b/sim_v5.py @@ -0,0 +1,212 @@ +#!/usr/bin/env python3 +"""soothe2 поведенческий симулятор v5 — STFT-детектор (архитектура фазы 3-6). + +Модель (верифицировано рендерами фазы 4-6): + red(f) = base_red(level_f) + 6.02 * min(1, |sens_i|/12) * H(f; fc_i, Qeff_i) * sat(level) + H(f; fc, Qeff) = 1/sqrt(1 + (Qeff*A)^2), A = f/fc - fc/f + Qeff = 1.54 * q^1.33 (измерено: q=1->1.54, 2->3.32, 3->5.64, 6->16.8) + sat(level) = 1/(1+exp(-0.117*(level_db - (-32.99)))) (boost насыщается к 6.02 на высоком уровне) + base_red(level): 2.22/3.36/4.85/5.71/6.65/7.65/9.80 @ -30/-24/-18/-15/-12/-9/-3 dBFS (neut, depth0.864) + +Синтез нотча: per detected peak - спектральная маска на кадре FFT: + X[k] *= 1 - g_peak * bell(k; f_peak, Q_notch), g_peak = 1 - 10^(-red(f_peak)/20) + Q_notch = 1.15 * sharpness (измерено psh_{1,3,5,10}: Q ~11/6/3/1.2) + +Детектор: окно 2048/hop 512 Hann; |X| на кадре -> лок. луднесс -> red(f) -> пики +(лок. макс. выше порога; selectivity = min-peak-spacing + кол-во). Env attack/release на g_peak. +""" +import numpy as np +import wave + +SR = 44100 + +# ---- измеренные LUT ---- +_NLEVEL_DB = np.array([-30.02, -24.02, -18.02, -15.02, -12.02, -9.02, -3.05]) +_NLEVEL_RED = np.array([2.22, 3.36, 4.85, 5.71, 6.65, 7.65, 9.80]) +_DEPTH_MULT = {0.5: 0.56, 0.864: 1.0, 1.0: 1.03, 2.0: 1.24, 3.0: 1.36, + 5.0: 1.51, 10.0: 1.58, 20.0: 1.60} # base_red * mult(depth) (грубо, калибровать) +_DEPTH_XS = np.array([0.5, 0.864, 1.0, 2.0, 3.0, 5.0, 10.0, 20.0]) +_DEPTH_YS = np.array([0.56, 1.0, 1.03, 1.24, 1.36, 1.51, 1.58, 1.60]) + +def base_red(level_db, depth=0.864): + b = np.interp(level_db, _NLEVEL_DB, _NLEVEL_RED) + return b * float(np.interp(depth, _DEPTH_XS, _DEPTH_YS)) + +def sat_level(level_db): + return 1.0 / (1 + np.exp(-0.117 * (level_db - (-32.99)))) + +def qeff(q): + return 1.54 * q ** 1.33 + +def bell_h(f, fc, q): + a = f / fc - fc / f + qe = qeff(q) + return 1.0 / np.sqrt(1 + (qe * a) ** 2) + +def eq_weight_db(freqs, bands, sens_global=0.0): + """Сумма весов по включённым полосам (on=1). bands: list of dict(freq,q,sens,on).""" + w = np.zeros_like(freqs, dtype=float) + for b in bands: + if not b.get('on', 0): + continue + s = b.get('sens', 0.0) + if abs(s) < 1e-9: + continue + coeff = 6.02 * min(1.0, abs(s) / 12.0) + h = bell_h(freqs, b.get('freq', 500.0), b.get('q', 1.0)) + w = w + coeff * h + return w + +_QSHARP = (np.array([1.0, 3.0, 5.0, 10.0]), np.array([2.0, 6.0, 10.0, 12.0])) + +def q_notch_from_sharp(sharp): + """Базовый Q нотча от sharpness (умеренный драйв).""" + sh = max(float(sharp), 0.05) + return float(np.interp(sh, _QSHARP[0], _QSHARP[1], left=2.0, right=12.0)) + +def notch_bell(freqs, f_peak, qn): + """Колокол нотча (gain-форма), peak 1 на f_peak, асимметричный BP-форм.""" + a = freqs / f_peak - f_peak / freqs + return 1.0 / np.sqrt(1 + (qn * a) ** 2) + +def stft_frames(x, nfft=2048, hop=512): + w = np.hanning(nfft) + n = len(x) + nf = max(0, (n - nfft) // hop + 1) + fr = np.fft.rfftfreq(nfft, 1 / SR) + return fr, w, nf, hop + +def detect_peaks(red, freqs, spacing_hz, min_red_db=3.0, max_peaks=16, floor_db=1.0): + """Локальные максимумы red(f) (нормир. к 0..max) выше min_red_db + min spacing.""" + if red.size == 0: + return [] + r = red.copy() + # локальные максимумы + d = np.diff(np.sign(np.diff(r))) + idx = np.where(d < 0)[0] + 1 + out = [] + for i in idx: + f = freqs[i] + if r[i] < min_red_db: + continue + # spacing + if any(abs(f - o) < spacing_hz for o in out): + continue + out.append(f) + if len(out) >= max_peaks: + break + return out + +def lp_smooth(x, alpha): + y = np.empty_like(x) + s = 0.0 + for i in range(x.size): + s += alpha * (x[i] - s) + y[i] = s + return y + +def simulate(x, sr=SR, bands=None, depth=0.864, sharp=10.0, sel=10.0, + attack=0.0, release=0.0, mix=100.0, nfft=2048, hop=512, + thr_db=6.0, level_ref=1.0): + """bands: [{'on':1,'freq':500,'q':1,'sens':12}, ...] дефолт = factory trk.""" + if bands is None: + bands = [dict(on=1, freq=500.0, q=1.0, sens=12.0)] + x = np.asarray(x, dtype=np.float64) + fr, w, nf, H = stft_frames(x, nfft, hop) + W = eq_weight_db(fr, bands) + # loudness per bin: |X| на кадре -> dBFS относительно level_ref + out = np.zeros(len(x) + nfft) + win_cnt = np.zeros(len(x) + nfft) + # параметры + from sim_v5 import q_notch_from_sharp as qn_map + qn = qn_map(sharp) + # Q растёт с sharpness, сужается при глубоком нотче (g->1): Q_eff = qn*(1-g)+1 + # (умеренный драйв Q=12 при sharp10; глубокий нотч сильного тона Q~4.5) + spacing = max(80.0, nfft / sr * 2.0) # ~ bin-разрешение*2 по умолчанию + # selectivity -> spacing & порог (sel больше = меньше ложных пиков) + spacing = 6.02 * sel * (nfft / sr) if False else max(80.0, 90.0 * sel) + minred = thr_db * (1.0) + (10 - sel) * 0.0 + # level_db на кадре = 20log10( |X| / (level_ref * nfft/2) ) - 3dB (peak-bin -> rms) + norm = level_ref * nfft / 4.0 + # per-frame smoothing alpha (кадр = hop сэмплов) + ta = max(0.020 * np.exp(attack / 1.955), 1e-9) + tr = max(float(np.interp(release, [0, 1, 2, 5, 10, 100], + [0.027, 0.08, 0.11, 0.14, 15, 15])), 1e-9) + a_alpha = 1 - np.exp(-hop / (ta * sr)) + r_alpha = 1 - np.exp(-hop / (tr * sr)) + # state per peak: current gain; мы будем сглаживать маску целиком (nfft/2+1) + mask_prev = np.ones(fr.size) + mask_cur = np.ones(fr.size) + for fi in range(nf): + s0 = fi * hop + seg = x[s0:s0 + nfft] + seg = seg * w + X = np.fft.rfft(seg) + mag = np.abs(X) + # per-bin уровень: |X|/(level_ref*nfft/4) -> dBFS (peak-bin ~ амплитуда тона) + lvl_bin = 20 * np.log10(mag / norm + 1e-12) + # кадровый уровень для sat: rms кадра + lvl = np.sqrt(np.mean(x[s0:s0 + nfft] ** 2) + 1e-12) + level_db = 20 * np.log10(lvl / level_ref + 1e-12) + # red(f): база от per-bin уровня + EQ-вес с sat(кадровый уровень) + red = base_red(lvl_bin, depth) + W * sat_level(level_db) + red = np.clip(red, 0, 60) + # пики детектим по lvl_bin (тон выделяется над шумовым дном на любом уровне) + thr = float(np.max(lvl_bin)) - 40.0 + peaks = detect_peaks(lvl_bin, fr, spacing, thr) + if not peaks: + im = int(np.argmax(lvl_bin)) + if lvl_bin[im] > thr and red[im] > 1.0: + peaks = [float(fr[im])] + factor = np.ones(fr.size) + for f_peak in peaks: + rr = float(np.interp(f_peak, fr, red)) + g = 1 - 10 ** (-rr / 20.0) + qeff = max(qn * (1 - g) + 1.0, 0.5) + bell = notch_bell(fr, f_peak, qeff) + factor = factor * (1 - g * bell) + factor = np.clip(factor, 1e-6, 1.0) + # env smoothing (целевая маска -> сглаженная) + alpha = a_alpha if (factor < mask_prev).mean() > 0.5 else r_alpha + mask = mask_prev + alpha * (factor - mask_prev) + mask_prev = mask + Y = X * mask + y = np.fft.irfft(Y, nfft) + out[s0:s0 + nfft] += y * w + win_cnt[s0:s0 + nfft] += w * w + out = out[:len(x)] / np.maximum(win_cnt[:len(x)], 1e-9) + if mix < 100: + out = (100 - mix) / 100.0 * x + mix / 100.0 * out + return out + +# ---- wav IO (как в sim.py) ---- +def read_wav(path): + w = wave.open(path, 'rb') + sw, nc, n = w.getsampwidth(), w.getnchannels(), w.getnframes() + d = np.frombuffer(w.readframes(n), dtype=np.uint8).reshape(n, nc, sw) + w.close() + ch = d[:, 0, :] + if sw == 3: + v = (ch[:, 0].astype(np.int64) | (ch[:, 1].astype(np.int64) << 8) | + (ch[:, 2].astype(np.int64) << 16)) + v = (v ^ (1 << 23)) - (1 << 23) + return v.astype(np.float64) / (1 << 23) + elif sw == 2: + v = (ch[:, 0].astype(np.int64) | (ch[:, 1].astype(np.int64) << 8)) + v = (v ^ (1 << 15)) - (1 << 15) + return v.astype(np.float64) / (1 << 15) + v = ch[:, 0].astype(np.float64) + return (v - 128) / 128.0 + +if __name__ == '__main__': + import sys + import os + # test: tone1k через factory trk (band1@500 sens12) + base = '/home/m/soothe-bt' + x = read_wav(os.path.join(base, 'tone1k.wav')) + y = simulate(x, bands=[dict(on=1, freq=500.0, q=1.0, sens=12.0)]) + # ред на 1k + sr = SR + i0, i1 = int(1.5 * sr), int(2.0 * sr) + red = -20 * np.log10(np.sqrt(np.mean(y[i0:i1] ** 2)) / np.sqrt(np.mean(x[i0:i1] ** 2))) + print("sim_v5 tone1k factory(b1@500,s12): red = %.2f dB (real trk_b1_500 = 11.91)" % red) \ No newline at end of file diff --git a/spec.py b/spec.py new file mode 100644 index 0000000..f860601 --- /dev/null +++ b/spec.py @@ -0,0 +1,73 @@ +#!/usr/bin/env python3 +import sys, os, struct +import numpy as np + +SR = 44100 + +def read_wav(path): + d = open(path, 'rb').read() + i = 12 + ch = bps = None + data_off = data_sz = None + while i + 8 <= len(d): + cid = d[i:i+4]; sz = struct.unpack(' -120 and bin[f] == np.max(bin[max(0,f-8):f+9]): + peakset.add(f) + print("peaks in input (Hz):", sorted(round(fr[f]) for f in peakset if fr[f] < 18000)) + colw = 22 + hdr = f"{'Hz':>6} {'IN dB':>7}" + ''.join(f" {os.path.basename(p)[:colw]:>{colw}}" for p in outs) + print(hdr) + for f in sorted(peakset): + if fr[f] < 18000: + row = f"{fr[f]:6.0f} {bin[f]:7.1f}" + refbase = None + for p in outs: + y, _ = read_wav(p) + b, f2 = db_spec_mono(y) + # nearest bin to fr[f] + idx = int(round(fr[f]*(len(f2)-1)/f2[-1])) + idx = int(np.argmin(np.abs(f2 - fr[f]))) + if p == outs[0]: + refbase = b[idx] + row += f" {b[idx]:{colw}.2f}" + print(row) + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/spectrum.py b/spectrum.py new file mode 100644 index 0000000..96a19e5 --- /dev/null +++ b/spectrum.py @@ -0,0 +1,73 @@ +#!/usr/bin/env python3 +import struct, os, sys, math + +SR = 44100 + +def read24(path): + d = open(path, 'rb').read() + i = 12 + ch = bps = None + data_off = data_sz = None + while i + 8 <= len(d): + cid = d[i:i+4]; sz = struct.unpack('7} {'IN':>8}" + ''.join(f" {os.path.basename(p):>18}" for _,p in outs)) + print("LOG2-ish band graph") + # print compact dB difference + dbin = profile_db(pi) + for b in range(2, 64, 2): + row = f"{freqs[b]:7.0f} {dbin[b]:8.1f}" + for _, p in outs: + pp = pids[p] + d = 20*math.log10(pp[b]+1e-12) - dbin[b] + row += f" {d:18.2f}" + print(row) \ No newline at end of file diff --git a/summary.md b/summary.md new file mode 100644 index 0000000..beb98cd --- /dev/null +++ b/summary.md @@ -0,0 +1,146 @@ +## Objective +- Реверс-DSP oeksound soothe2 v1.1.2 VST3 → математическая модель (STFT, детектор резонансов, нотич-синтез). Текущая фаза — поведенческий параметр-свип через рендер Reaper RPP + статический декомпил (без декрипты бинарника пока). + +## Key Facts +- Пользователь русскоязычный; sudo нет. Объект: `~/.wine/.../soothe2_x64.vst3` (PE32+, base 0x180000000), yabridge 5.1.1, Reaper 7.78. +- Frida невозможна (Seccomp). Дамп памяти — `pread /proc/pid/mem` от родителя. pkill-ловушки: paths без `harneb`/`reaper` → `pkill -9 -x reaper`, `pkill -9 -f '[y]abridge'`. +- Рендер-проект: `RENDER_RANGE 1 0 0 0 1000`, ITEM обязательно `POSITION 0`. Offline-рендер мгновенный → для живого дампа realtime (`RENDER_1X 1`) + `testtone.wav`. +- VST-state = 92-байт JUCE-заголовок + base64 XML `` + 54 ``; внутри — UI-state без DSP. + +## Breakthrough (исправлено в этой сессии) +- **Формат-адаптивность PARAM**: плагин применяет `` ТОЛЬКО если строка сериализована в том же формате, что оригинал: + - full-precision (depth, band freq/q...) → `%.16f` (напр. `"0.9000000000000000"`). Короткие строки → схлопывание (fallback). + - short-формат `"X.0"` (selectivity, mix, mode, oversample, resolution) → ЛОМАЕТСЯ от `%.16f`. + - `sweep.py`/`tt_sweep.py` адаптивны: >4 десятичных в оригинале → `%.16f`, 1-4 → то же число знаков, иначе — как есть. + +## Синтез модели (поведенческая, v4 — реализована в sim.py, RMSE на settled ≤0.05dB по всем свипам) +``` +PARADИГМА (реализована): out(t) = x(t) − amount_b(t)·bp_b(t; fc, Q) [субтрактивный нотч, не микш-параллельный] + amount(total) = A(depth)·S(sens)·H(sharp)·M(mode) — LUT из измерений (пересечение, не аналит. фит) + A(depth): 0.5/0.864/1/2/3/5/10/20 → 0.560/0.588/0.598/0.667/0.727/0.820/0.939/0.989 + S(sens): 0/6/12/24 → 0.48/0.76/1.0/1.0 (floor при sens=0!) + H(sharp): 1/3/5/10 → 0.20/0.59/0.84/1.0 + M(mode): 0 → 0.745 (mode0 слабее), 1.. → 1.0 + Q(sel): = 3.0+0.36·sel (2nd-order bandpass; реал. даёт более крутые борта — приближ.) + env(t): one-pole, α_attack=1−e^(−1/(T_a·fs)), α_release=1−e^(−1/(T_r·fs)) + T_a = 0.02·e^(a/1.955) (0→20мс, 5→258мс, 10→3.3c); T_r LUT из спадов (0→27мс, 5→140мс, 10→15c) + детектор: лауднеss полосы |bp| smoothed 5мс > thr 0.01 → цель amt, иначе 0 (порог между probe 0.0005 и burst 0.2) +выход: x_out = mix/100·… — линейный кроссфейд: (100−mix)/100·x + mix/100·fully_reduced + (mix=100 = полная обработка = ref; mix=0 → сухой; проверено на s_corr_mix: монот. линейно) +``` +Верификация (settled, RMSE по reduction dB на burst-окне): +| параметр | реал | sim | RMSE | | параметр | реал | sim | RMSE | +|---|---|---|--|---|---|---|---|---| +| дефолт | 7.70 | 7.70 | 0.002 | sharp=1 | 1.11 | 1.11 | 0.002 | +| depth=2 | 9.56 | 9.56 | 0.001 | sharp=3 | 3.72 | 3.71 | 0.006 | +| depth=5 | 14.90 | 14.89 | 0.008 | attack=5 | 5.68 | 5.90 | 0.360 | +| depth=10 | 24.27 | 24.25 | 0.018 | mode=0 | 5.03 | 5.00 | 0.023 | +| depth=20 | 39.43 | 39.40 | 0.054 | mode=2 | 7.70 | 7.70 | 0.002 | +| sens=0 | 2.89 | 2.89 | 0.001 | sens=24 | 7.70 | 7.70 | 0.002 | +Q-профиль (probes-зонд): sim sel1 500→680@540→0.62@700 vs real 8.03→4.54→1.13; 2nd-order не покрывает +крутые борта реала (реал резче ~×3): допустимо как 1-я итерация, RMSE макс по профилю ~1.6dB. +Release-трассы: r0/r1/r2/r5 совпадают (sim против real 1.6s:3.5/4.3, 1.7s:1.5/1.9, 1.9s:0.3/0.3). + +## Q/width-зонд (probes500/probes500b, drive 500Hz amp0.2 + справки 0.02) +- Методика: длинный single-FFT на окне 1.7..2.9s (разрешение ~0.7Hz), справки на 500,505,510,520,540, + 555,575,600,700 (b-set) / 500,505,515,530,560,640,780 (a-set). Драйв-тон держит детект-клок, + справки зондируют передаточную характеристику в установившемся режиме. +- Данные (a-set) red@freq: sel1: 500:8.0 510:7.9 520:7.7 540:4.5 555:2.7 575:1.6 600:0.7 (плавный хвост) + sel8: 500:8.7 510:9.1 520:6.6 540:1.3 555:0.1 575:0.0 600:0.0 (резкий срез) — Q уверенно растёт с sel. +- Центраئة нотча на 500..510 чуть выше 500 (fs на 505..510) — трекинг слегка субадио. +- Значения на дип-тонах 530/560/640 в b-наборе — из мусора (нет справки) и исключены; a-набор чистый. +- ВАЖНО: dry-файлы дважды перезаписывались провальными dry-рендерами (RENDER_FILE не патчился по + `.wav` напр. burst500L_byp → overwritten probes). ФИКС: патчить RENDER_FILE явно в sed до рендера. +- data: оба svипа предсказуемо монотонны; таблица в summary выше. + +## Верифицированные данные (все свипы с корректным форматом) +- **depth (mir)**: монотонно distinct (vs-ref 496k→441k→...→347k@0.85→384k@1.0) — работает. +- **selectivity**: 0/1/2/5 distinct (476k/466k/458k/461k vs ref); 10==20==50==100 (сатурация ≥10). +- **oversample**: 0==ref; 1 distinct; 2==3==4 (сатурация на 2). +- **resolution**: 0 distinct; 1==ref; 2 distinct (все distinct); 3==4. +- **mix**: 0/25/50/75/100 всё distinct монотонно; 100==ref. +- **mode**: 0 distinct; 1==2==3==4==ref. +- **band1 freq**: tt_b1f_678 (дефолт banda freq) == tt_ref бит-в-бит; свип 100..8000 отрендерен. + +## Прочие находки +- 60-сек рендер p60_ref/p60_dep0/p60_dep1 подтвердил collapse класса при коротких строках. +- rtdump.py живые дампы (регионы по VA, RA/WA) — DSP-кластер .data меняется между глубинами; раньше не совпали по layout (артефакт noise). + +## Work State +### Completed +- Свип-инфраструктура: sweep.py + tt_sweep.py (адаптив формата), рендер, сверочный анализ (spectrum.py медленный, нужно numpy). +- Тест-тон: testtone.wav (2s, multi-tone 110Hz–14kHz с AM) для изоляции резонансов; tt_ref==tt_678 (0 diff). +- Базовые свипы по всем основным параметрам. + +### Active +- **Извлечена статическая depth-кривая**: LUT 207 float @0x1826170e8..0x182617420, форма `0.302 + 0.698·sin(π/2·x)^0.94` (r²=0.99999), saved `depthcurve.npy`. ИДЕНТИЧНА у ref/dep0/dep1 → вшита в бинарь (build-time), не меняется от параметра = внутренний «depth→amount» маппинг. +- **Адаптивная динамика (burst-тест, band1@500Hz, q≈1, depth 0.864)**: burst500.wav (2s: 0.5s тишины → 1.0s 500Hz burst amp 0.2 → 0.5s тишины, + 1000Hz amp 0.05 фон). `burst500_b1` (fx) vs `burst500_byp` (dry): + - ATTACK: плавное включение нотч-ослабления, τ≈**18 мс** (фит на экспоненту A·(1−e^−t/τ), stable 17.6/17.7/18.8/18.8), установка −7.7dB бай-в-бай за ~100мс. + - RELEASE: хвост после снятия бурста спадает за τ≈**5 мс** (после 1.5s fx-энергия 24→0 за ~30мс) — быстрый трелинг, симметрия фола не классическая (вероятно фильтр-транзиент, не медленный rel). + - Глубина ослабления НЕ зависит от «порога» — это фикс. нотч на частоте band, amount задаётся curve(depth). + - Рендерится через те же tt-файлы; РЕЗУЛЬТАТЫ в wav — 24-bit (`sampwidth=3`), читать через 24-bit decode (или любой np.frombuffer под sw), не 16-bit! + - **τ-инвариантность** (burst-тест, band1@500Hz, win 10ms, Goertzel, фит к A(1−e^−t/τ)): + - depth 0→0.86→1: A=6.39→7.70→7.91 dB; τ=18.3→16.8→16.5 ms (τ почти const) → depth контролирует amount, НЕ скорость. + - selectivity: τ РАСТЁТ монотонно 12.3→16.8 ms при sel 0→10 (12.3/12.4/12.6/12.9/13.0/13.4/14.3/16.8) → Q/selectivity = time-const антреккинга. + - depth-amount таблица (settled, band1@500): sel 0..6 монотонно −7.79→−9.08 dB, затем dip sel8=−8.79, sel10=−7.71 (non-monotonic у высоких sel, нюанс трекера). + - «650Hz notch» в раннем FFT-анализе — АРТЕФАКТ деления на near-zero dry; реальные числа = ratio dry/fx только там, где dry>5% пика (pure 500Hz tone → окно вокруг 500). +- **secret свипа: `patchparam.py`** обязателен для формат-сохранения: state-блок в RPP = base64, wrapped по 128-симв/строка с 2-sp indent и НОВОЙ строкой перед '>'. Ключевое: глубина пишется ТОЛЬКО `%.16f` (короткая `0.0` → collapse!), поэтому CLI `depth=0.0!` форсит полную точность. +- Float-поиск по живому дампу: depth 301 hits (множество копий по bands), selectivity/sharpness → общий бакет (10.015, 9.997), mix → 4 копии 100.0, band freqs (678.76, 8242.67) → 0 точных (хранятся иначе, напр. Hz→binidx или через npf). +- Живой diff dep0 vs dep1 в .data (0x182622130, 0x182622350, 0x1826223c0, 0x18262aca8, 0x182672fe4) — флоаты-состояние меняются; но регион содержит много мусора/nan (это .data буферы рендера, не коэфф). + +### Провалы/уроки +- ASLR между отдельными rtdump-запусками сдвигает раскладку регионов → прямого VA-сравнения НЕТ (dep0b 10 регионов, dep1b 9). Только те адреса, что реально в 0x18260a000-0x18267c000 (совпадают) сравнимы. + +## Relevant Files +- **`/home/m/re-tools/sim.py`** — поведенческий симулятор (LUT amount + 2nd-order bp Q(sel) + env attack/release + mix/mode). `simulate(x, fc, depth, sens, sharp, sel, mode, attack, release, mix)`. RMSE settled ≤0.05dB (см. таблицу выше). +- **`/home/m/re-tools/verify_sim.py`** — RMSE-сверка симулятора против рендеров (mag@500 трасса). Использование: `verify_sim.py --params depth=5 attack=5`. +- **`/home/m/re-tools/fit_curves.py`** — фит LUT (остаётся как аналитический эквивалент; LUT в sim.py приоритетнее). +- probes500/probes500b_wav+byp — зонды ширины нотча; prb_*/prb2_* — рендеры. +- `synth_multi.py` (AM-комб 200–3000Hz резонансный), `burst500.wav` + `burst500_b1.rpp/.wav` + `burst500_byp.rpp/.wav` (burst-атак/релиз band1@500Hz), `burst_dep0/dep1/sel0/sel2/sel5.rpp/.wav` (τ-sweep), `comb.wav` + `comb_b1_*.rpp/wav`, `comb_dep_{0..1}`, `depthcurve.npy`. **Рендеры Reaper = 24-bit** — читать с `sampwidth=3`, не 16-bit! +- `/home/m/re-tools/patchparam.py` — патчер PARAM в base64 state с формат-сохранением (128-wrap, `depth=...!` → %.16f). +- `/home/m/re-tools/spec.py`, `probe.py`, `notch.py`, `synth.py`, `mkbase.py`, `tt_sweep.py`. +- `/home/m/soothe-bt/tone1kq.wav` (чистый 1k, -18dBFS), `dual.wav` (500+2000Hz), `resonant.wav` (500Hz-резонанс). +- `/home/m/soothe-bt/t1kq_*.rpp/wav`, `res_only1_*.rpp/wav`, `dual_b1_*.rpp/wav`. +- `/home/m/re-tools/sweep.py` — адаптивный генератор RPP (tpl фиксирован, для смены файла использовать mkbase + tt_sweep). +- `/home/m/soothe-bt/tt_base.rpp` (template: testtone + дефолтные парамы), `tt_ref.wav`. +- `/home/m/soothe-bt/s_corr_{sel,os,res,mix,mode}*.wav` — верифицированные свипы на resonant.wav. +- `/home/m/soothe-bt/render_v5.rpp`, `s_ref2.wav` (бит-в-бит оригинал). +## Фаза 3: Трекинг подтверждён (aug 16) — ARCHITECTURE REVISION +- **Вход-зависимость**: ред@1k растёт с уровнем сигнала (band1=1000, тон 1k): + `-27→-21→-15→-12→-9→-6→-3 dBFS` ⇒ `5.80→7.75→9.91→11.05→12.21→13.40→14.60 dB`. amount растёт с уровнем детектируемого резонанса (не бинарный порог). +- **Трекинг нотча** (fresh renders `trk_b1_*`, вход tone1k 1k, band1∈{500,1000,2000}, длинная FFT): нотч ВСЕГДА на fc=тон=1k, band-частота НЕ двигает позицию режектора: + - band=500 → 11.91dB, band=1000 → 15.82dB, band=2000 → 11.91dB, band1 off → 9.80dB, sens=0 → 9.80dB. + - Единственный вклад band-EQ — ВЕС глубины детекции в области (совпадение band~тон даёт +4dB; off/sens0 −2dB). +- **Мульти-пики**: dual (500+2000), оба нотча активны одновременно при sel=1..20 (~10dB оба) → детектор находит НЕСКОЛЬКО резонансов; selectivity НЕ регулирует число нотчей на явных тонах. +- **Пользователь (иерархия)**: детектор оценивает каждую частоту спектра; band-EQ формирует его ВХОД (усиление/ослабление детекции по областям, у band2 sens может быть −12); selectivity = отбор пиков; sharpness = форма нотча; depth = глобальная глубина. +- **Reaper-ловушка**: tt_sweep с ОТНОСИТЕЛЬНЫМ out_wav создаёт ПОДДИРЕКТОРИЮ → всегда абсолютный путь в RENDER_FILE. +- Файлы: `trk_base.rpp`, `trk_b1_{500,1000,2000,eqoff,sens0}.rpp/.wav`, `sel_base.rpp`, `sel_{1,3,10,20}.rpp/.wav`, `lvl_{03..27}db.wav` + `lvl_t_*.rpp/.wav`. +### Фаза 3b: amount зависИТ от уровня сигнала (не просто порог) +- lvl_sweep (тон 1k, band1@1000, depth=0.864): ред@1k = 5.80 / 7.75 / 9.91 / 11.05 / 12.21 / 13.40 / 14.60 для −27..−3 dBFS. +- При depth=10: 21.67 / 24.15 / 26.63 / 27.86 / 29.09 / 30.33 / 31.56. Наклон d(ред)/d(level) ≈ 0.37–0.41 dB/dB обоих depth → amount ∝ уровень^p (монотонно с насыщением), НЕ бинарный порог. depth — масштаб, не floor. +- Обе кривые монотонны и близки по форме (отношение ~2.2 при громком, ~3.7 при тихом → форма зависит от depth слабо). +### Фаза 4 (aug 16): КАРТА EQ-ВЕСОВ ДЕТЕКТОРА +- **`on` полосы = enable детекторного веса**; off-полоса её sens НЕ отдаёт в детекцию. Подтверждения: + - eqT_b1_b2/b3/b4/b2b3b4 и trk_b1_500 (sens off-полос любая) ВСЕ = 11.91dB (только от b1 sens12); eq_off_sensfac (все off, factory sens) = 9.80dB = нейтраль. + - eq1778_b2s_12 (b2 on=0) = 11.81, b1on12_b2s12 (b2 on=1) = 17.60 — ЕДИНСТВЕННАЯ разница band2 on. + - Баг в раннем clear_bands сбрасывал b1 sens→0 (eq_b1_on был sens0=нейтраль 9.80; правильный net_b1on12 sens12 = 11.91). +- **S(sens) при совмещённом весе (band1@1k, тон 1k)**: sens 0/6/9/12/18/24 → boost над полом 0.00/3.16/4.65/6.02/6.02/6.02 dB. + boost = 6.02·min(1, sens/12), насыщение +6dB при sens≥12 (не монотонно из-за сатурации детектора, не бага). +- **W(f) — колокол EQ-веса** (тон 1k, одна полоса on sens12, варьирую band freq): + - band1 (q≈1): 500→11.91(+2.11), 600→12.80(+3.00), 750→14.28(+4.48), 850→15.19(+5.39), 950→15.75(+5.95), 1000→15.82(+6.02), 1050→15.76, 1200→15.05(+5.25), 1500→13.44(+3.64), 2000→11.91(+2.11), 2500→11.16(+1.36). Симметричный широкий колокол (первый октав хвост +2.1dB, не спадает к 0). + - band2 (q≈4.5): 600→10.15(+0.35), 750→10.78(+0.98), 850→11.97(+2.17), 1000→15.80(+6.00), 1200→11.68(+1.88), 1500→10.34(+0.54) — РЕЗКИЙ колокол. **Q полосы управляет шириной детекторного веса** (q=4.5 на −1 октаве теряет ~полностью, q=1 теряет только ~66%). +- **Позиция нотча**: band freq не двигает режектор (всегда на резонансе тона); EQ-веса модулируют ТОЛЬКО глубину. +- Новый модельный блок: `red(f_tone) = floor(level) + Σ_on boost_i`, `boost_i = 6.02·min(1,|sens_i|/12)·H_q(f_tone; fc_i, Q_i)`. +- Файлы: `wf_{600,750,...,2500}.wav` (band1 q-sweep), `ws_{6,9,18,24}.wav` (aligned sens), `b2q_{600..1500}.wav` (band2 q=4.5 sweep), `b1on12_b2{on12,s12}.wav`. +### Фаза 5 (aug 16): STFT-параметры детектора (Stage 1) +- **Хоп/задержка**: tone-jump зонд tj.wav (1k→1.5k в t=2.0s) → нотч пересаживается на новый резонанс за ~1 кадр ≈ 18мс (hop ≤ 512 сэмплов). Трекинг чирпа 400→2000Hz в реальном времени, dt≈0.03→0.05s (шум оценки FFT-бина, значимой задержки нет). +- **Разрешение по частоте**: пары 1000+1040 → сливаются в один широкий нотч; 1000+1100 разделяются (центры ≈996/1104, но провал между ними всё ещё глубокий); 1000+1200 → два чётких отдельных нотча с полным восстановлением на 1100. → окно FFT ≈ 1024–2048 (бины 21–43Hz), multiple-нотч подтверждён. +- **Энерготрекинг (fx@f по окну 2048, sync-Goertzel)**: до прыжка fx@1000 ≈ −24dB (ред ~14dB), после — fx@1500 ≈ −23.8dB. Двойной бурст (gap 10..100ms) → нотч на том же тоне не переоткрывается между бурстами (ред остаётся ~4dB floor) — bурст probe (осб) указывает на фиксированный window-центр, не пер-открытие. +- Вывод для v5: STFT с окном ~2048, хоп ~512–1024; window function Hann; детектор по |X| per-bin → локальные пики (selectivity); EQ-веса W(f) как множитель sensitivity per-bin; per-пик нотч (bandstop Q=sharpness). +- Файлы: `chirp_log_400_2000.wav`, `chirp_trk.rpp/.wav`, `pair_{1040,1100,1200}.wav` + `pair_trk_{40,100,200}`, `dburst_{10,20,50,100}.wav` + `dburst_trk_*`, `tj.wav` + `tj_trk.rpp/.wav`. +### Фаза 6 (aug 16): КОЛОКОЛ EQ-ВЕСА + SHARPNESS + level-floor (Stage 2 фит) +- **H(f) — колокол**: `H(f) = 1/sqrt(1 + (Qeff·A)²)`, `A = f/fc − fc/f`. Qeff = **1.54·q^1.33** (q=1→1.54, 2→3.32, 3→5.64, 6→16.8). Воспроизводит кривую band1 (wf_*) с ошибкой ≤0.15dB по всему диапазону 500..2500. +- **Sharpness → Q нотча**: psh_{1,3,5,10} (probes500, drive 500·0.2, band1@500): центр 505Hz red 1.3/4.3/6.8/8.7dB; ширина Q_notch≈1.15·sharp (sh10→~11, sh5→~6, sh3→~3, sh1→~1.2). Центр-глубина НЕ постоянна — растёт с sharp (1.3→8.7), т.е. sharp масштабирует amount И Q. +- **level-floor (нейтраль)**: `neut_{24..3}` (все полосы off/sens0, тон 1k): red = 2.22/3.36/4.85/5.71/6.65/7.65 dB при −24/−18/−12/−9/−6/−3 dBFS rms. Монотонно, наклон ~0.31 dB/dB. `al_{*}` (b1@1000 sens12): 5.80/7.75/9.91/11.04/12.21/13.39 → boost = 3.59/4.39/5.06/5.33/5.56/5.74, **насыщается к ~6dB** с уровнем (не аддитивен в dB!). +- Модель amount: `red(f) = curv(level·G_eq(f))` с насыщением (не линейный сдвиг в dB). depth масштабирует (фаза 3b). Для sim: 2D LUT level×W. +- Файлы: `lvl_tone_lv{24,18,12,9,6,3}.wav`, `neut_{*}.rpp/.wav`, `al_{*}.rpp/.wav`, `psh_{1,3,5,10}.rpp/.wav`. diff --git a/sweep.py b/sweep.py new file mode 100644 index 0000000..5d2a5cf --- /dev/null +++ b/sweep.py @@ -0,0 +1,78 @@ +#!/usr/bin/env python3 +import base64, re, sys, os + +# Reads render_v5.rpp, changes plugin PARAM values, writes a new RPP targeting an output name. + +TPL = "/home/m/soothe-bt/render_v5.rpp" + +def load_state(rpp=TPL): + txt = open(rpp).read().split('\n') + vi = [i for i,l in enumerate(txt) if 'VST "VST3: soothe2' in l][0] + blob = [] + end = vi + for i in range(vi+1, vi+40): + s = txt[i].strip() + if s == '>' or not s: + end = i + break + blob.append(s) + out = b'' + for l in blob: + out += base64.b64decode(l + '=' * ((-len(l)) % 4)) + return txt, vi, end, blob, out + +def save_state(txt, vi, end, blob, out, binary_len, rpp_out): + # re-encode: binary_len bytes header + rest is ascii xml + header = out[:binary_len] + xml = out[binary_len:] + new = base64.b64encode(header + xml).decode() + lines = [new[i:i+128] for i in range(0, len(new), 128)] + newblk = [' ' + l for l in lines] + txt2 = txt[:vi+1] + newblk + [txt[end]] + open(rpp_out, 'w').write('\n'.join(txt2)) + +def set_params(rpp, out_rpp, out_wav, params): + txt, vi, end, blob, out = load_state(rpp) + # preserve everything: prefix before ' 4: + # full-precision param (e.g. depth) -> needs 16 decimals + full = f"{float(val):.16f}" + elif '.' in orig: + # short-form param (e.g. selectivity "10.0") -> keep decimal count + full = f"{float(val):.{len(orig.split('.')[1])}f}" + else: + full = val + xml = xml[:m.start()] + f' [id=val ...] + rpp_out = sys.argv[1] + out_wav = sys.argv[2] + params = dict(a.split('=', 1) for a in sys.argv[3:]) + set_params(TPL, rpp_out, out_wav, params) + print("wrote", rpp_out, params) \ No newline at end of file diff --git a/symbols.txt b/symbols.txt new file mode 100644 index 0000000..94e73ef --- /dev/null +++ b/symbols.txt @@ -0,0 +1,28 @@ +650 matches in 1 files: + +52:INFO Diag.java> FUNCTION_COUNT 38538 (GhidraScript) +53:INFO Diag.java> SYMB KERNEL32.DLL::TerminateProcess EXTERNAL:00000024 Label ... +54:INFO Diag.java> SYMB KERNEL32.DLL::ExitProcess EXTERNAL:00000043 Function (G... +55:INFO Diag.java> SYMB KERNEL32.DLL::GetCurrentProcess EXTERNAL:00000095 Funct... +56:INFO Diag.java> SYMB KERNEL32.DLL::IsProcessorFeaturePresent EXTERNAL:000000... +57:INFO Diag.java> SYMB KERNEL32.DLL::GetProcessHeap EXTERNAL:000000a8 Function... +58:INFO Diag.java> SYMB KERNEL32.DLL::GetCurrentProcessId EXTERNAL:000000a9 Fun... +59:INFO Diag.java> SYMB USER32.DLL::GetWindowThreadProcessId EXTERNAL:000000f8 ... +60:INFO Diag.java> SYMB USER32.DLL::GetProcessWindowStation EXTERNAL:00000106 F... +61:INFO Diag.java> SYMB KERNEL32.DLL::IsProcessorFeaturePresent 181132908 Funct... +62:INFO Diag.java> SYMB PTR_TerminateProcess_181baa1c0 181baa1c0 Label (GhidraS... +63:INFO Diag.java> SYMB PTR_ExitProcess_181baa2b8 181baa2b8 Label (GhidraScript) +64:INFO Diag.java> SYMB PTR_GetCurrentProcess_181baa548 181baa548 Label (Ghidra... +65:INFO Diag.java> SYMB PTR_IsProcessorFeaturePresent_181baa5b0 181baa5b0 Label... +66:INFO Diag.java> SYMB PTR_GetProcessHeap_181baa5e0 181baa5e0 Label (GhidraScr... +67:INFO Diag.java> SYMB PTR_GetCurrentProcessId_181baa5e8 181baa5e8 Label (Ghid... +68:INFO Diag.java> SYMB PTR_GetWindowThreadProcessId_181baaec8 181baaec8 Label ... +69:INFO Diag.java> SYMB s_Error_processing_the_command_lin_181bb56b0 181bb56b0 ... +70:INFO Diag.java> SYMB s_[%d]_HASH_ByID_ProcessBuffer_err_181bb7db8 181bb7db8 ... +71:INFO Diag.java> SYMB s_Cannot_process_the_request_becau_181bc3610 181bc3610 ... +72:INFO Diag.java> SYMB s_FailedToStartChildProcess_181bc9480 181bc9480 Label (... +73:INFO Diag.java> SYMB s_Could_not_start_a_child_process._181bc94a0 181bc94a0 ... +74:INFO Diag.java> SYMB s_ChildProcessWaitTimeout_181bc94c8 181bc94c8 Label (Gh... +75:INFO Diag.java> SYMB s_ChildProcessFailed_181bc9508 181bc9508 Label (GhidraS... +76:INFO Diag.java> SYMB s_Child_process_failed._181bc9520 181bc9520 Label (Ghid... + +625 more in /home/m/re-tools/diag2.log [see remaining: tail -n +26 ~/.local/share/rtk/tee/1786831385_grep_0__home_m_re_tools_diag2_log.log] diff --git a/synth.py b/synth.py new file mode 100644 index 0000000..ea2e6e1 --- /dev/null +++ b/synth.py @@ -0,0 +1,41 @@ +#!/usr/bin/env python3 +import wave, array, math, sys + +SR = 44100 + +def synth(path, freqs, dur=6.0, amp=1.0, gain_dbs=None, sr=SR): + # amp = target peak amplitude (1.0 = full scale) + n = int(sr*dur) + out = [0.0]*n + if gain_dbs is None: + gain_dbs = [-20*math.log10(len(freqs))*0 + 0]*len(freqs) # equal + for k, f in enumerate(freqs): + g = 1.0/len(freqs) if len(gain_dbs) != len(freqs) else 10**(gain_dbs[k]/20) + for i in range(n): + t = i/sr + out[i] += g*math.sin(2*math.pi*f*t) + peak = max(abs(v) for v in out) or 1.0 + sc = amp/peak + a = array.array('h') + for i, v in enumerate(out): + t = i/sr + fade = min(1.0, t/0.03, (dur-t)/0.05) + a.append(max(-32767, min(32767, int(v*sc*fade*32767)))) + w = wave.open(path, 'wb') + w.setnchannels(1); w.setsampwidth(2); w.setframerate(sr) + w.writeframes(a.tobytes()) + w.close() + +if __name__ == '__main__': + # usage: synth.py [] [] + import os + freq = float(sys.argv[1]) + amp = 1.0 + path = '/home/m/soothe-bt/tone.wav' + for a in sys.argv[2:]: + try: + amp = float(a) + except ValueError: + path = a + synth(path, [freq], amp=amp) + print("wrote", path, freq, "Hz amp", amp) \ No newline at end of file diff --git a/synth_multi.py b/synth_multi.py new file mode 100644 index 0000000..f61e3e8 --- /dev/null +++ b/synth_multi.py @@ -0,0 +1,29 @@ +#!/usr/bin/env python3 +import wave, array, math, sys + +SR = 44100 + +def synth_multi(path, freqs, dur=6.0, amp=0.5, am=0.3, sr=SR): + n = int(sr*dur) + out = [0.0]*n + for f in freqs: + for i in range(n): + t = i/sr + # each tone: carrier + gentle AM (makes it "resonant" for the detector) + out[i] += math.sin(2*math.pi*f*t)*(1.0 + am*math.sin(2*math.pi*(f/8.0)*t)) + peak = max(abs(v) for v in out) or 1.0 + sc = amp/peak + a = array.array('h') + for i, v in enumerate(out): + t = i/sr + fade = min(1.0, t/0.05, (dur-t)/0.1) + a.append(max(-32767, min(32767, int(v*sc*32767*fade)))) + w = wave.open(path, 'wb') + w.setnchannels(1); w.setsampwidth(2); w.setframerate(sr) + w.writeframes(a.tobytes()) + w.close() + print("wrote", path, "tones", len(freqs), "amp", amp) + +if __name__ == '__main__': + freqs = [int(f) for f in sys.argv[2].split(',')] + synth_multi(sys.argv[1], freqs, dur=float(sys.argv[3]) if len(sys.argv)>3 else 6.0) \ No newline at end of file diff --git a/tt_sweep.py b/tt_sweep.py new file mode 100644 index 0000000..4a11699 --- /dev/null +++ b/tt_sweep.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python3 +import sys +sys.path.insert(0, '/home/m/re-tools') +import re, base64 +from sweep import load_state + +TPL = sys.argv[1] +rpp_out = sys.argv[2] +out_wav = sys.argv[3] +params = dict(a.split('=', 1) for a in sys.argv[4:]) + +txt, vi, end, blob, out = load_state(TPL) +xml_idx = out.find(b' 4: + full = f"{float(val):.16f}" + elif '.' in orig: + full = f"{float(val):.{len(orig.split('.')[1])}f}" + else: + full = val + xml = xml[:m.start()] + f'= b0 + 0.15) & (tw <= b1 - 0.05) + rmse = np.sqrt(np.mean((red_mdl[seg] - red_real[seg]) ** 2)) + print(f"params {a.params or '(default)'}") + print(f" settled real={red_real[seg].mean():7.2f}dB sim={red_mdl[seg].mean():7.2f}dB") + print(f" RMSE(reduction dB, burst steady) = {rmse:.3f}") + for t in [b0 + 0.02, b0 + 0.05, b0 + 0.1, b0 + 0.2, b0 + 0.5]: + i = int(t / 0.010) + print(f" t={t:.2f}s real={red_real[i]:6.2f} sim={red_mdl[i]:6.2f}") + +if __name__ == '__main__': + main() \ No newline at end of file