From 25cf786c54950849a85bd2e515a25c4ed6c7d846 Mon Sep 17 00:00:00 2001 From: Matiq Date: Sun, 16 Aug 2026 18:54:32 +0300 Subject: [PATCH] Initial commit: soothe2 RE workspace + roadmap MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Инфраструктура: RTTI-дампы (rtti_dsp/full.json), декомпиляции DSP-классов (decomp_*.txt), Ghidra-скрипты (Dump*.java, ImportRtti*.java, Diag.java), depthcurve/curve_fits LUT. - Поведенческая модель sim_v5.py + sim.py (RMSE ~0.3dB), утилиты (measure, tt_sweep, patchparam, sweep, harness_*, verify_sim). - summary.md + roadmap.md (контракт из manual M1-M12, топология пайплайна из OCR, фазы A-C). - pipeline_ocr.txt: OCR диаграммы Appendix A (mid/side ручка, trim/mix/bypass порядок). --- .gitignore | 22 + Diag.java | 36 + DumpCandidates.java | 38 + DumpDsp.java | 64 + DumpVtables.java | 50 + ImportRtti.java | 73 + ImportRtti2.java | 83 + curve_fits.npz | Bin 0 -> 1056 bytes decomp_candidates.txt | 392 +++ decomp_dsp.txt | 6634 ++++++++++++++++++++++++++++++++++++++++ decomp_vtables.txt | 2116 +++++++++++++ depthcurve.npy | Bin 0 -> 952 bytes dump_soothe.py | 70 + fit_curves.py | 52 + ghidra_diag.py | 44 + harness_dep.py | 92 + harness_dump.py | 114 + harness_dump_render.py | 114 + harness_fastdump.py | 92 + measure.py | 114 + mkbase.py | 9 + notch.py | 90 + patchparam.py | 62 + pipeline_ocr.txt | 229 ++ probe.py | 66 + procdump.py | 52 + roadmap.md | 94 + rtdump.py | 62 + rtti_dsp.json | 2210 +++++++++++++ rtti_full.json | 4062 ++++++++++++++++++++++++ run_sweep.py | 63 + run_verif.py | 62 + run_verif2.py | 56 + sim.py | 125 + sim_v5.py | 212 ++ spec.py | 73 + spectrum.py | 73 + summary.md | 146 + sweep.py | 78 + symbols.txt | 28 + synth.py | 41 + synth_multi.py | 29 + tt_sweep.py | 36 + verify_sim.py | 50 + 44 files changed, 18208 insertions(+) create mode 100644 .gitignore create mode 100644 Diag.java create mode 100644 DumpCandidates.java create mode 100644 DumpDsp.java create mode 100644 DumpVtables.java create mode 100644 ImportRtti.java create mode 100644 ImportRtti2.java create mode 100644 curve_fits.npz create mode 100644 decomp_candidates.txt create mode 100644 decomp_dsp.txt create mode 100644 decomp_vtables.txt create mode 100644 depthcurve.npy create mode 100644 dump_soothe.py create mode 100644 fit_curves.py create mode 100644 ghidra_diag.py create mode 100644 harness_dep.py create mode 100644 harness_dump.py create mode 100644 harness_dump_render.py create mode 100644 harness_fastdump.py create mode 100644 measure.py create mode 100644 mkbase.py create mode 100644 notch.py create mode 100644 patchparam.py create mode 100644 pipeline_ocr.txt create mode 100644 probe.py create mode 100644 procdump.py create mode 100644 roadmap.md create mode 100644 rtdump.py create mode 100644 rtti_dsp.json create mode 100644 rtti_full.json create mode 100644 run_sweep.py create mode 100644 run_verif.py create mode 100644 run_verif2.py create mode 100644 sim.py create mode 100644 sim_v5.py create mode 100644 spec.py create mode 100644 spectrum.py create mode 100644 summary.md create mode 100644 sweep.py create mode 100644 symbols.txt create mode 100644 synth.py create mode 100644 synth_multi.py create mode 100644 tt_sweep.py create mode 100644 verify_sim.py 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 0000000000000000000000000000000000000000..58cbbeddfdfc62465d35882a8874185e6a860169 GIT binary patch literal 1056 zcmWIWW@gc4fB;2?Qw1?K|Dk}JL4+YYJ|(rFBttK+ppub6fMEhuA&j2v7wQ`j$;eQ~ zP_3SlTAW;@Zl$1ZlV+i=qoAIaUsO_*m=~X4l#&V(cT3DEP6dh=XCxM+0{I$7I+{8P zwF(pfu2TK|^B5j~vY%=_mG$SN8}eN)h{!y+&I4fk*LFZ z)3>MXj`2C5`lUPko+ZpLkca_>V^P6i^~~|Nv)0Sa=5+Ayp5>qX?h9JPTskQ00P_qd zFk&2msVoiVl@4ecgV7YFF-lXIf&$l{TVi)5E<6Hyfssj<88xeb@&O2QL){Fb8W=$& zQpQ2o2uhYPja(qLP|(157Rbtuhb2;UeV`-&(}!x|OrVuOeXs<9t`QX6pwI+iPN-!d bs(~?$i2)J#0p6@^AYm3Dd,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 0000000000000000000000000000000000000000..5a731fbd716531d410ee5a31cc84bebfbf383a72 GIT binary patch literal 952 zcmbWr`BT(o0D$ogMC2GD?otkgTp$RLqPX5C!4M&kSP!7UHrQq5W_LN3UH0oBSu;*U z1`Y;dG+i2`Ks9ABtHl+8lSj@FjSP8*PL2i)kYm}u(DU2#X-?mfmXZCKtXgK27pQdk zT6v70JWlDTWVyBwU(46+`=vi(gFLBBt`BxSQW6?ri^B1aJOUbVl@x6mN_0vHf1S z-yIY|mqvu*)R;KXJ|TWG{w(ZrE{IK0mqfAiq}Y3FN*FAc#kTim#B%;sQ5AVZd?Wiq z^pD>bhL%6YY|cGl>pLgLXBI?g=aP`;J`jDL|A=chW%MRk5r4#*#<>+Vq^>0DLtEPC zSMf!%J;iMfoSSuIDta}IZ#i-HqBA`{E(B{_iSBXZ*9CWM<2*Sdc_I7Z2}Z2e;Fz$M z^O83%13ru|__7qXj`s`KbG*Z!r!E9wZ?l1&QF3h5fw;E>(Qqc1l-p0U$1RlU*k|}e z8Akt`;dmd5VC=_@4BU+5uNBWx;unQ~%=36;zCeN|nvYE}#5ToZ-5JNyiFnow2nt7G z>fDP|Ol~4*Isw_0MCPw<#`@Yz1Yb!)HNAx|CzEkGzZGdTg~k3<3@2X3>Vq`ieJ35? zx^0{+$RIxL6-FX6+3KZWa9KgbZ`)};wS()2cCw*j7mDO8ihQyux}QzPP!3PFyvnHZ zH58$_SQc`zvE(7&x0`iIuXBH;lEcGFoEzRCCoUh|Tt3;K7vPYm;%z526Bad-#f2R6 z&=7Z8!$H*^KC>&r*j0pMYB5>2ipkqog7?}|n)^zzB$aV=vW##|IlB3B)O#yfWmn0r zrb;qhwJf%1+2W>ygE}rd=vm*W$6;AdYiSiD(^a&lRb%^IHJ$-A3?Hb$`Cbi+idu|c z)pFRyKzf;hj!^@RK6O~>>hKt@!{TP-fzrs?ZX*%%Mgn6^^q5VIoi?F+Xreo&9=*Pv ziLQEjXX*)XHRGRXrl-QpSi70hAu}DbX0ldGbc9Kirb~<#Npv+zcpZ^&>Xm33lxV#u V5%jx6;vI<_a}tmLEiv>^;$LZ#ZQ%d_ literal 0 HcmV?d00001 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