24mm12: detector cascade FOUND = vtable stage vt+0x28 = 180529c60 (0x281 bytes, mixes bands@678 + prev track, x0.5, vec6f8 helpers); vtable pipeline map; fn529fe0 only builds kernel from ready tracks
This commit is contained in:
@@ -4236,3 +4236,54 @@ lvl_raw → track_i (буфер [rsp+0x138][band]) и пост-обработк
|
||||
2. Найти консюмера track/FIR после fn529fe0 (FFT-conv движок) — как
|
||||
track_i превращается в применённую маску аудио.
|
||||
3. C++ порт RT_CASCADE=1 (Этап C) — цепь до df0 уже можно транскрибировать.
|
||||
|
||||
## ============ 24mm12: НАЙДЕН ДЕТЕКТОРНЫЙ КАСКАД = СТАДИЯ vt+0x28 = 180529c60; КАРТА VTABLE ПАЙПЛАЙНА ============
|
||||
|
||||
### Оркестратор (0x1805300f0..0x1805305e7)
|
||||
fn529fe0 вызывается ВИРТУАЛЬНО: `call [ctx_vtable+0x30]` (сайт 530371),
|
||||
аргументы (rcx=ctx, rdx=ТАБЛИЦА TRACK = ctx+0x380, r8d=4096=[ctx+0x1a8],
|
||||
r9d=nbands=[ctx+0x30]). До него в том же оркестраторе — серия виртуальных
|
||||
вызовов других стадий. Полоса-цикл после fn: cmp [rsi+0x30],r13;
|
||||
r15=ctx+0x360, r14=ctx+0x2e0 — ещё таблицы-указатели в малых оффсетах ctx.
|
||||
|
||||
### Карта vtable ctx (live, comb_b1234)
|
||||
```
|
||||
+0x08 0x18052cfb0 +0x10 0x180529550 +0x18 0x1804714b0 (чужой модуль?)
|
||||
+0x20 0x18052b940 +0x28 0x180529c60 ← ДЕТЕКТОР +0x30 0x180529fe0 (fn)
|
||||
+0x38 0x180529ef0 (prep) +0x40 0x18052bbf0
|
||||
+0xe8 0x1804731c0 (чужой модуль?) +0x218 0x180481210
|
||||
```
|
||||
Трасса кадра: [e8,e8]? → 38 → 28(×nbands) → 30(fn). Писец track — ТОЛЬКО
|
||||
vt+0x28 (430/430 изменений md5).
|
||||
|
||||
### 180529c60 — детекторный каскад, ВСЯ функция 0x281 байт
|
||||
```
|
||||
lock bts [ctx+0x2404dc] ; тот же лок что в fn
|
||||
r9 = rdx (СТАРЫЙ track всей таблицы? базовый буфер)
|
||||
r12 = band*2; rcx = [ctx + r12*8 + 0x540678] ; bands_curve полосы
|
||||
n2 = ([ctx+0x64]±)/2+1
|
||||
call 0x1805355d0(bands, rdx, n2) ; ?? первичное смешение
|
||||
loop по [ctx+0x1b0]:
|
||||
rbp = [ctx+r12*8+0x540678]
|
||||
call 0x180530080(rbp, rbp+4, n2-1) ; ??
|
||||
call 0x18052d920(rbp, xmm1=0.5f, n2-1) ; масштаб ×0.5 !
|
||||
r15 = [ctx+0x5406f8] ; vec6f8
|
||||
call 0x1800020f0 / 0x180001850(rsi=rbp+4, rdx=rbp, r8=r15, r9=n2-1)
|
||||
call 0x180001a00 / ...(rcx=r15, rdx=rsi, xmm=0.5f/0.5d)
|
||||
```
|
||||
То есть «шаги 9–17» из BLOCKMAP 24mm5 на самом деле живут ЗДЕСЬ (+хелперы),
|
||||
а НЕ в fn529fe0: fn529fe0 получает ГОТОВЫЕ track-буферы (arg2) и строит
|
||||
из них ядро (df0: T⊗F), не вычисляя детектор!
|
||||
|
||||
### Статус Этапа B
|
||||
Осталось декодировать: хелперы 5355d0 / 530080 / 20f0 / 1850 / 1a00 /
|
||||
52d920-семантику и роль vec6f8@6f8 — десятки инструкций, вся рекуррентия
|
||||
track_{t+1} замкнётся офлайн. Затем γ=1.760561 выводится аналитически.
|
||||
|
||||
### Инструменты раунда
|
||||
scripts/wine_stage_trace.py (vtable-stage трассировщик c md5-атрибуцией
|
||||
записей), scripts/wine_ptrace_trace.py (+TRACKSAVE/DIV/DC40/EXPVAR/FN,
|
||||
mapped-фильтр, строгая валидация ctx по trk==exp(scr)).
|
||||
Грабли: адреса-константы в патчах скрипта молча не применялись при чужом
|
||||
отступе — проверять installed-list; DC40=0x1800dc40 (не 0x18000dc40);
|
||||
DIV/DC40/EXPVAR/FN могут быть вне маппинга процесса (пропускать).
|
||||
|
||||
Reference in New Issue
Block a user