mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-10-06 01:04:13 -04:00
feat(phase-33): A2 reporting instruments — make sig-main rewritten (tools/main_seed_ends.py: main's game-code boundaries DERIVED from the link map + objects, tiling asserted; 809 fns / 45,150 ins), progress.py weighs main by the build-derived sig and EXITS with no sig (R32), the digest's oracle clause derived live (0 phantom / 0 truncated / 0 pad-tail), backlog.linked_closed retires the LINKED-range legacy row (0 open), dup_report on the derived sig; CORRECTED main denominator 45,150 (Ghidra's flow boundaries left 3,628 words of game code unowned) — fleet instr 13,492,113 / distinct 5,820,205, all 100%; make report BINARY=main EXIT=0, audit-digest OK; SETUP §6.8 + P33 A2 rows (R21)
This commit is contained in:
@@ -1 +0,0 @@
|
||||
{"ts": "2026-09-01 20:34:37", "addr": "0x80062144", "name": "func_80062144", "reach": null, "klass": null, "nins": null, "status": "failed", "closeness": null, "where_stuck": "won't compile standalone (loose-typing / missing decl)", "best_draft": null, "binary": "main", "source": "S70-332b", "residual": null, "passes_tried": null}
|
||||
|
||||
@@ -261,6 +261,9 @@ tools-health:
|
||||
# in the wave. Without this line sig_is_independent("main") silently reverts to False on a
|
||||
# fresh clone and main's boundary blind spot comes back with the audit still green.
|
||||
$(MAKE) --no-print-directory sig-main-oracle
|
||||
# P33 A2: main's build-derived game-code sig — the one the fleet digest weighs main by. Regenerated
|
||||
# here for the R51 reason: progress.py prefers it, so a stale copy would be a stale denominator.
|
||||
$(MAKE) --no-print-directory sig-main
|
||||
$(MAKE) --no-print-directory audit-corpus
|
||||
$(MAKE) --no-print-directory audit-cdecl
|
||||
$(MAKE) --no-print-directory audit-binaries
|
||||
@@ -295,6 +298,9 @@ report:
|
||||
# only fires for the default binary — avoids `make report BINARY=resident` rewriting the
|
||||
# identical file. --cross ignores --binary and scans every sig in BINARIES.
|
||||
ifeq ($(BINARY),main)
|
||||
# P33 A2: refresh main's build-derived sig before anything weighs main by it (a no-op message when
|
||||
# main is not built; progress.py then falls back to the legacy Ghidra sig or fails loudly — R32).
|
||||
$(MAKE) --no-print-directory sig-main
|
||||
$(VENV_PY) tools/dup_report.py --cross
|
||||
# Fleet roll-up (Phase 15): deterministic per-binary table + fleet totals -> docs/progress.fleet.md.
|
||||
$(VENV_PY) tools/progress.py --fleet
|
||||
@@ -394,10 +400,24 @@ atlas:
|
||||
# beyond each function's own slice. This sig is deliberately splat-SEEDED (the atlas needs the
|
||||
# boundaries a match must hit); it is NOT main's independent second oracle
|
||||
# (docs/second-oracle.md — sig_is_independent stays False for main).
|
||||
# P33 A2 — REWRITTEN: main's GAME-CODE sig at BUILD-TRUE lengths, Ghidra-free and splat-free. The stub
|
||||
# seeding above became a sig of nothing at 100% (0 stubs), and the whole-EXE alternative was the
|
||||
# 2026-08-05 Ghidra sig (.run/sig.SLUS_007.26.jsonl), which a public clone cannot regenerate and whose
|
||||
# flow-derived boundary on FUN_80023bf0 was 22 ins short (P31 S79). Seeds now come from the linked
|
||||
# objects themselves — tools/main_seed_ends.py reads each game-code object's .text section from the
|
||||
# link map and slices it at its own nm symbols (the data islands and the LINKED blocks sit BETWEEN
|
||||
# objects, so every slice is exact); sig_image then hashes the ORIGINAL EXE bytes at those boundaries.
|
||||
# This is the sig progress.py weighs main by. Needs a built main (map + objects): without one it
|
||||
# leaves any existing .run/sig.main.jsonl alone and says so — never a heuristic sig under the same
|
||||
# name (R51).
|
||||
sig-main:
|
||||
$(VENV_PY) tools/corpus.py main --seed-ends > .run/seeds.main.txt
|
||||
$(VENV_PY) tools/sig_image.py --image $(main_EXE) --vram-base $(main_VRAM_BASE) --seeds .run/seeds.main.txt --name main
|
||||
echo "sig-main: signed $$(wc -l < .run/seeds.main.txt) main stubs (splat-true lengths) -> .run/sig.main.jsonl"
|
||||
if [ -f "$(main_MAPFILE)" ]; then
|
||||
$(VENV_PY) tools/main_seed_ends.py --map $(main_MAPFILE) --out .run/seeds.main.txt
|
||||
$(VENV_PY) tools/sig_image.py --image $(main_EXE) --vram-base $(main_VRAM_BASE) --seeds .run/seeds.main.txt --name main
|
||||
echo "sig-main: signed $$(wc -l < .run/seeds.main.txt) main game-code fns (build-true lengths, from the link map + objects) -> .run/sig.main.jsonl"
|
||||
else
|
||||
echo "sig-main: no main build ($(main_MAPFILE) absent) — run 'make check BINARY=main' first; .run/sig.main.jsonl left as is"
|
||||
fi
|
||||
|
||||
# sig-main-oracle (P31 S77) — MAIN'S INDEPENDENT SECOND ORACLE (roadmap contract §1.3).
|
||||
# Distinct from `sig-main` above, which is splat-SEEDED on purpose. This one signs the ORIGINAL EXE
|
||||
|
||||
+31
-2
@@ -455,7 +455,23 @@ Modern cpp preprocesses → **vintage cc1** compiles to asm → **maspsx** emula
|
||||
- **`make tools-health`** (new) = regenerate the byte-derived sigs (`sig-overlays` + `sig-resident`) then run `audit-corpus` + `audit-cdecl` + `audit-binaries` + `report` + `audit-digest`, fail-closed — the deliberate pre-matching ritual the roadmap's standing invariant names. Deliberately NOT a prerequisite of `report`/`build` (audit-cdecl cross-compiles every C declaration through real gcc, ~minutes). `audit-cdecl` ≈ several minutes; `audit-corpus` ≈ 7 s.
|
||||
- **`make sig-resident`** (Phase-27 T10; **P31 T0 ELF-seeded** — bootstrap's linear partition fused the +0 data word with the first fn and dropped the last, 144→the true 145; S45 nm-seed pattern, bootstrap fresh-clone fallback) signs the resident flat blob with `sig_image` (byte-derived) so `make audit-corpus`'s second boundary oracle (R34) covers the **resident** — probed clean (0 phantom/truncated). `sig-overlays` derives its payload list from `config/overlays.mk` (not a `0.4.dec` glob, which dropped the 4 SC07 index-1 overlays). `progress.py --fleet` reports a separate **MAIN game-code weighted** line (provisional) — the metrics-contract "main in the denominators", honestly un-folded.
|
||||
- **`make atlas`** (P31 T5) — the Frontier Atlas regen chain: `family_hseq` → `family_cousins` (+both card emitters) → `tools/atlas_features.py` (per-fn feature layer: 363k rows / 93k distinct bodies in ~21 s; §172b tell detectors live here as importable functions — `li_norm_toks`/`extpair_count`/`dupselect_count`/`sign_mix`/`magic_div_count`, one implementation R33) → `tools/atlas.py` (the survey: cousin units + T1.5 h_seqn merges + calibrated warm tier + seed sweep vs the matched-skeleton pool + kNN graph + evidence joins + lever labels → `.run/atlas.json` + committed `docs/frontier-atlas.md`, partition-asserted). `tools/atlas.py --calibrate` freezes THRESH_WARM/KNN_FLOOR from measured recall/false-accept (seeded RNG, regenerable); `--targets N [--lever L] [--cat C]` emits crack slates. Main joins at the ATLAS layer only (family maps stay non-main by design — four enumerated silent-skip hazards in their consumers).
|
||||
- **`make sig-main`** (P31 T3) signs main's 2,002 game-code stubs at **splat-true lengths**: `corpus.py main --seed-ends` emits `0xADDR NINS` per stub (`corpus.s_ins_count`, the same counter audit() uses) and `sig_image --seeds` treats a seeded nins as authoritative (`[addr, addr+4·nins)`, no `func_end` heuristic — which mis-sliced 3/40 main samples). Verified by a full word cross-check (2,002/2,002 EXE slices == `.s` words; note the `.s` word field is byte-order hex, not the LE value). **Deliberately splat-SEEDED** — the atlas needs the boundaries a match must hit; main's *independent* second oracle stays scoped + deferred in `docs/second-oracle.md` (`sig_is_independent("main")` remains False). `family_remap.vram_of/img_path` special-case `"main"` (derived from `splat.us.exe.yaml`: file0-vram = code-seg `vram − start` = 0x8000F800; target_path), so `stream_words("main", …)` works fleet-wide (verified 25/25 vs `.s`).
|
||||
- **`make sig-main` — REWRITTEN P33 A2 (S86, 2026-09-06):** signs ALL of main's game-code functions at **build-true
|
||||
lengths**, Ghidra-free and splat-free: `tools/main_seed_ends.py --map build/us/SLUS_007.26.map` reads each game-code
|
||||
object's `.text` input section from the link map and slices it at the object's own `nm` function symbols (the rodata
|
||||
islands and the LINKED PsyQ blocks sit BETWEEN objects, so every slice is exact — tiling asserted), emits `0xVRAM NINS`
|
||||
seeds, and `sig_image --seeds` hashes the ORIGINAL EXE bytes at those boundaries → `.run/sig.main.jsonl` (809 fns /
|
||||
45,150 ins). Needs a built main; without the map it leaves the file alone and says so (R51). `progress.py` weighs main
|
||||
by this sig (falling back to the legacy Ghidra sig, and EXITING non-zero when neither exists — it used to print
|
||||
"217 binaries" and MAIN 0/0 silently, R32); `dup_report.py` reads it for main; `tools-health` and `make report
|
||||
BINARY=main` regenerate it first. **Corrected denominator:** the Ghidra sig's flow-derived boundaries left **3,628
|
||||
words of real game code owned by no function** (switch tails after unresolved jump tables, 2–4-ins thunks, and
|
||||
`SaveLoadRoutine` = the `case 0:` body inside `func_8002b0b4`), so MAIN game-code weighted is **45,150 / 45,150**, not
|
||||
41,534 (P31 S79 had caught one instance, +22). Proof (S86): the derived sig tiles the 15 game-code objects' `.text`
|
||||
exactly (45,150 words, no overlaps), is never shorter than Ghidra's for any shared function, and Ghidra covers 41,522
|
||||
words all inside that text. The fleet totals moved accordingly (instr 13,488,497 → 13,492,113; distinct 5,816,589 →
|
||||
5,820,205); the digest's oracle clause is now DERIVED at render time (`progress.main_oracle_line`, was a literal).
|
||||
*(Historical P31 T3 text follows.)*
|
||||
- **`make sig-main`** (P31 T3 — SUPERSEDED above) signed main's 2,002 game-code stubs at **splat-true lengths**: `corpus.py main --seed-ends` emits `0xADDR NINS` per stub (`corpus.s_ins_count`, the same counter audit() uses) and `sig_image --seeds` treats a seeded nins as authoritative (`[addr, addr+4·nins)`, no `func_end` heuristic — which mis-sliced 3/40 main samples). Verified by a full word cross-check (2,002/2,002 EXE slices == `.s` words; note the `.s` word field is byte-order hex, not the LE value). **Deliberately splat-SEEDED** — the atlas needs the boundaries a match must hit; main's *independent* second oracle stays scoped + deferred in `docs/second-oracle.md` (`sig_is_independent("main")` remains False). `family_remap.vram_of/img_path` special-case `"main"` (derived from `splat.us.exe.yaml`: file0-vram = code-seg `vram − start` = 0x8000F800; target_path), so `stream_words("main", …)` works fleet-wide (verified 25/25 vs `.s`).
|
||||
|
||||
### §6.4 asm-differ + baseline discipline
|
||||
|
||||
@@ -999,7 +1015,7 @@ fills fast). Nothing is leaking — but the host does not get the memory back on
|
||||
| `tools/gate_main_parallel.py` **(NEW)** | runs the REAL `gate_main` inside N git worktrees to discover which drafts pass, then hands the union to ONE authoritative `gate_main` in the real tree. Workers discover; only the final serial pass banks | a main slate large enough that serial bisection hurts. **Measured: one gate cycle is 16 s**, so MAX_STEPS=24 is ~6.4 min serial and ~90 s across four workers. Run `--negative-control` once per environment first |
|
||||
| `tools/permuter_sweep.py` **(NEW)** | selects a wave's NEARs the permuter can actually search (small residual + SCHEDULE/DELAY-SLOT/REGALLOC class) and runs `permuter_ils` on them; journals are scoped to the wave so an older run's row cannot win on a bare fn name (R48) | after every wave gate — agents are briefed to STOP at permuter-class residuals, so these arrive unattempted and cost no tokens. Measured yield ~3 in 8; there is NO validated predictor of which 3 |
|
||||
| `tools/psyq_bss_probe.py` **(NEW)** | derives a PsyQ object's `.bss` bases FROM THE BYTES (base = resolved − addend over each HI16/LO16 pair) and reports whether the section can be cut into single-base pieces | before accepting any "scattered .bss, unlinkable" exclusion. Measured S76: SYS.o splits at 0x148 (2 bases), 2D_BG0.o/VM_NO1.o have no `.bss` at all. **S78 #4 correction:** its "GS_001.o: 5 interleaved bases, NOT splittable" grouped by BASE; grouped by RUN in offset order GS_001 is six pieces, every cut on a symbol start — it now reports over `psyq_bss_split.analyze` (one implementation, R33). Locates the object itself by masked search, so a wrong `--vram` cannot fake a clean answer (cookbook §484/§489) |
|
||||
| `make sig-main-oracle` **(NEW)** | main's INDEPENDENT second boundary oracle (roadmap contract §1.3): signs the ORIGINAL EXE bytes over 28 game-code ranges derived from the splat yaml's SEGMENT TYPES, never its function boundaries | run by `tools-health`; needed before any 100% claim on main. Distinct from `make sig-main`, which is splat-SEEDED on purpose — `corpus.ORACLE_SIG` keeps the audit off that one. Result: 986 fns, 0 phantom / 0 truncated / 1 pad-tail (docs/second-oracle.md) |
|
||||
| `make sig-main-oracle` **(NEW)** | main's INDEPENDENT second boundary oracle (roadmap contract §1.3): signs the ORIGINAL EXE bytes over 28 game-code ranges derived from the splat yaml's SEGMENT TYPES, never its function boundaries | run by `tools-health`; needed before any 100% claim on main. Distinct from `make sig-main`, which is splat-SEEDED on purpose — `corpus.ORACLE_SIG` keeps the audit off that one. Result: 986 fns, 0 phantom / 0 truncated / 1 pad-tail (docs/second-oracle.md); 0 pad-tail since S85 — the digest derives the clause live (P33 A2) |
|
||||
| `tools/recover_route.py` **(NEW)** | reads a gate's DROP ledger and names the tool that actually applies — SELF / CALLEE / DATA, each with its ordered ladder; refuses a verbatim draft up front. Wired into `gate_main`'s dropped report | after any gate that drops a draft. Replaces the single hardcoded chain gate_main used to print for every drop, which was the SELF chain and measured RED on a callee (S69) and inert on data. Negative-controlled against all 7 S77 drops whose winning tool was already known |
|
||||
| `tools/sync_tu_decls.py` **(NEW)** | banks a draft the gate refuses by copying the TU's OWN `extern` line for whatever symbol the gate names, re-gating, and repeating | a draft that is byte-correct but rejected on a declaration conflict. Refuses `self_decl_tu` (use `cast_self_callers --sync-decls`) and refuses a NEAR up front, since syncing declarations makes a body COMPILE, never MATCH |
|
||||
|
||||
@@ -1053,6 +1069,19 @@ fills fast). Nothing is leaking — but the host does not get the memory back on
|
||||
* `gate_main` **REFUSES a draft containing its own `INCLUDE_ASM`** (substituting it restores the stub,
|
||||
so the build passes for free and the function counts as banked), and counts banks from the SOURCE.
|
||||
|
||||
### P33 A2 (S86, 2026-09-06) — reporting instruments made regenerable and honest
|
||||
- `tools/main_seed_ends.py [--map build/us/SLUS_007.26.map] [--out .run/seeds.main.txt]` — main's game-code function
|
||||
boundaries DERIVED from the build (link-map `.text` sections × each object's `nm` symbols; LINKED subsegs and
|
||||
`build/psyq/` skipped; tiling + 4-alignment + first-symbol-at-0 asserted, R32; totals printed with denominators).
|
||||
Feeds the rewritten `make sig-main` (§6.8 above).
|
||||
- `tools/progress.py`: main's sig = `.run/sig.main.jsonl` (build-derived) → legacy `.run/sig.SLUS_007.26.jsonl` →
|
||||
**SystemExit** (no silent `mt=0`); the digest's oracle clause comes from `progress.main_oracle_line()` (live
|
||||
`corpus.audit('main')`), the provenance + date of the sig used are printed on the MAIN line.
|
||||
- `tools/backlog.py`: `linked_closed(binary, addr)` — a main address inside a LINKED PsyQ range is retired by `prune`
|
||||
(byte-identical by link, not work); controls: `0x80062144` True, `0x80018730` False, non-main False. The legacy S70
|
||||
row `func_80062144` is gone; `docs/backlog.md` reads 0 open.
|
||||
- `tools/dup_report.py`: main's sig path → `.run/sig.main.jsonl`.
|
||||
|
||||
### P32 T4c (S85, 2026-09-06) — real-TU dump instruments
|
||||
- `tools/cc1_dumps_tu.sh <rtu_match --work dir> <tag>` — dumps every gcc-2.7.2 pass (-dr -ds -dj -dl -dg -df -dc -dS -dL) of the
|
||||
SPLICED REAL TU that `rtu_match --work` left behind (`<dir>/<fn>/t.c`); the standalone `tools/cc1_dumps.sh` compile is not
|
||||
|
||||
+1
-2
@@ -2,8 +2,7 @@
|
||||
|
||||
> Generated by `tools/backlog.py render` from `.run/backlog.jsonl`. These are functions the Phase-21 automation got **close** on but did NOT byte-match. The whole-binary byte-gate is the sole arbiter (G3/P9): **byte-matches bank and are NOT listed here** — only genuine near-misses/blockers are. Ranked by hand-session priority: **reach** (×N propagation leverage) → **closeness** (match_one mismatch count, lower = closer) → **size**. Each row's `best_draft` is the closest C the machine reached — resume from there.
|
||||
|
||||
**Open near-misses:** 1 · by status {'failed': 1} · by class {None: 1}
|
||||
**Open near-misses:** 0 · by status {} · by class {}
|
||||
|
||||
| # | addr | reach | class | nins | status | closeness | where it stuck | best draft |
|
||||
|--:|------|------:|-------|-----:|--------|----------:|----------------|------------|
|
||||
| 1 | func_80062144 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | |
|
||||
|
||||
+235
-241
@@ -1,6 +1,6 @@
|
||||
# Cross-binary duplicate function groups (generated by tools/dup_report.py --cross)
|
||||
# sources:
|
||||
# main .run/sig.SLUS_007.26.jsonl sha1=46c735b8d1f514a95f8a2ba061cccf291f45a631
|
||||
# main .run/sig.main.jsonl sha1=8bcb8eb2f6e3dc4562b39a6be9a0721bf0215fb3
|
||||
# resident .run/sig.resident.jsonl sha1=76556f34476524f1c8160139f5993ad6d66d5f52
|
||||
# md_MAIN_013 .run/sig.md_MAIN_013.jsonl sha1=7ef0aab887b13304929d00a324e50f883c30a903
|
||||
# md_MAIN_014 .run/sig.md_MAIN_014.jsonl sha1=d67de8a37cbdb814e14360689965c68c8888ff97
|
||||
@@ -290,7 +290,7 @@
|
||||
| ex198 | 33040 | 59 | 141 | 141 | ov_MAIN_012:0x801777bc; ov_SC01_000:0x801777bc; ov_SC01_001:0x801777bc; ov_SC01_004:0x801777bc; …+137 |
|
||||
| ex199 | 32480 | 58 | 141 | 141 | ov_MAIN_012:0x8012b77c; ov_SC01_000:0x8012b77c; ov_SC01_001:0x8012b77c; ov_SC01_004:0x8012b77c; …+137 |
|
||||
|
||||
### intra-binary — 187 groups, 29072 collapsible bytes
|
||||
### intra-binary — 181 groups, 28800 collapsible bytes
|
||||
| gid | bytes | nins | count | #bin | sample members (binary:addr) |
|
||||
|---|---|---|---|---|---|
|
||||
| ei0 | 304 | 38 | 3 | 1 | ov_SC07_007:0x8017d8e0; ov_SC07_007:0x8017d978; ov_SC07_007:0x8017da10 |
|
||||
@@ -441,49 +441,43 @@
|
||||
| ei145 | 112 | 14 | 3 | 1 | ov_SC07_011:0x8017d5dc; ov_SC07_011:0x8017d6ac; ov_SC07_011:0x8017d77c |
|
||||
| ei146 | 104 | 13 | 3 | 1 | ov_SC07_002:0x80181cbc; ov_SC07_002:0x80182038; ov_SC07_002:0x80182648 |
|
||||
| ei147 | 104 | 13 | 3 | 1 | ov_SC07_011:0x8017d5a8; ov_SC07_011:0x8017d678; ov_SC07_011:0x8017d748 |
|
||||
| ei148 | 88 | 11 | 3 | 1 | main:0x80043948; main:0x80060904; main:0x80060bc0 |
|
||||
| ei149 | 88 | 22 | 2 | 1 | ov_SC05_018:0x8017efe0; ov_SC05_018:0x8017f2bc |
|
||||
| ei150 | 84 | 21 | 2 | 1 | ov_SC01_009:0x80182438; ov_SC01_009:0x801827fc |
|
||||
| ei151 | 84 | 21 | 2 | 1 | ov_SC03_095:0x8017d704; ov_SC03_095:0x8017d7b0 |
|
||||
| ei152 | 84 | 21 | 2 | 1 | ov_SC05_008:0x80180e30; ov_SC05_008:0x80181380 |
|
||||
| ei153 | 84 | 21 | 2 | 1 | ov_SC05_008:0x801810d8; ov_SC05_008:0x80181628 |
|
||||
| ei154 | 84 | 21 | 2 | 1 | ov_SC05_008:0x801818d4; ov_SC05_008:0x80181b30 |
|
||||
| ei155 | 80 | 20 | 2 | 1 | ov_SC03_124:0x801807d8; ov_SC03_124:0x80180868 |
|
||||
| ei156 | 76 | 19 | 2 | 1 | ov_SC02_028:0x8017e778; ov_SC02_028:0x8017e7c4 |
|
||||
| ei157 | 68 | 17 | 2 | 1 | ov_SC03_024:0x801854b0; ov_SC03_024:0x80185638 |
|
||||
| ei158 | 64 | 16 | 2 | 1 | ov_SC02_031:0x8017db98; ov_SC02_031:0x8017f3c0 |
|
||||
| ei159 | 60 | 15 | 2 | 1 | ov_SC01_008:0x8017f250; ov_SC01_008:0x8017f66c |
|
||||
| ei160 | 60 | 15 | 2 | 1 | ov_SC02_017:0x801805d4; ov_SC02_017:0x8018096c |
|
||||
| ei161 | 60 | 15 | 2 | 1 | ov_SC03_124:0x8017fe3c; ov_SC03_124:0x8017fe78 |
|
||||
| ei162 | 56 | 14 | 2 | 1 | main:0x80014cf8; main:0x80014dec |
|
||||
| ei163 | 56 | 14 | 2 | 1 | ov_SC01_077:0x8017e6bc; ov_SC01_077:0x8017e830 |
|
||||
| ei164 | 56 | 14 | 2 | 1 | ov_SC06_006:0x80180534; ov_SC06_006:0x801805ec |
|
||||
| ei165 | 56 | 14 | 2 | 1 | resident:0x800d065c; resident:0x800d0694 |
|
||||
| ei166 | 48 | 12 | 2 | 1 | ov_SC03_024:0x80180800; ov_SC03_024:0x801808e4 |
|
||||
| ei167 | 44 | 11 | 2 | 1 | main:0x80013f3c; main:0x80017d98 |
|
||||
| ei168 | 44 | 11 | 2 | 1 | main:0x80014c28; main:0x80014dc0 |
|
||||
| ei169 | 44 | 11 | 2 | 1 | ov_SC02_005:0x80187a0c; ov_SC02_005:0x8018893c |
|
||||
| ei170 | 40 | 10 | 2 | 1 | main:0x800432d8; main:0x80045918 |
|
||||
| ei171 | 40 | 10 | 2 | 1 | main:0x800433c0; main:0x800433e8 |
|
||||
| ei172 | 40 | 10 | 2 | 1 | ov_SC01_009:0x8017f9cc; ov_SC01_009:0x80181918 |
|
||||
| ei173 | 40 | 10 | 2 | 1 | ov_SC02_011:0x80182614; ov_SC02_011:0x801847f0 |
|
||||
| ei174 | 40 | 10 | 2 | 1 | ov_SC03_006:0x80188080; ov_SC03_006:0x80188710 |
|
||||
| ei175 | 40 | 10 | 2 | 1 | ov_SC03_029:0x801866a4; ov_SC03_029:0x80186d34 |
|
||||
| ei176 | 36 | 9 | 2 | 1 | main:0x80014070; main:0x80015a2c |
|
||||
| ei177 | 36 | 9 | 2 | 1 | main:0x80014094; main:0x80015a50 |
|
||||
| ei178 | 36 | 9 | 2 | 1 | main:0x8001599c; main:0x800159c0 |
|
||||
| ei179 | 36 | 9 | 2 | 1 | main:0x80037004; main:0x80037334 |
|
||||
| ei180 | 36 | 9 | 2 | 1 | main:0x80042290; main:0x800459c4 |
|
||||
| ei181 | 36 | 9 | 2 | 1 | main:0x8004561c; main:0x8005b660 |
|
||||
| ei182 | 36 | 9 | 2 | 1 | ov_SC05_017:0x80182ce8; ov_SC05_017:0x80183ed4 |
|
||||
| ei183 | 32 | 8 | 2 | 1 | main:0x80042134; main:0x8005ba70 |
|
||||
| ei184 | 32 | 8 | 2 | 1 | ov_SC06_029:0x80180ee8; ov_SC06_029:0x801870b4 |
|
||||
| ei185 | 32 | 8 | 2 | 1 | ov_SC07_007:0x8017f370; ov_SC07_007:0x80180b38 |
|
||||
| ei186 | 32 | 8 | 2 | 1 | resident:0x800cefb0; resident:0x800cf398 |
|
||||
| ei148 | 88 | 22 | 2 | 1 | ov_SC05_018:0x8017efe0; ov_SC05_018:0x8017f2bc |
|
||||
| ei149 | 84 | 21 | 2 | 1 | ov_SC01_009:0x80182438; ov_SC01_009:0x801827fc |
|
||||
| ei150 | 84 | 21 | 2 | 1 | ov_SC03_095:0x8017d704; ov_SC03_095:0x8017d7b0 |
|
||||
| ei151 | 84 | 21 | 2 | 1 | ov_SC05_008:0x80180e30; ov_SC05_008:0x80181380 |
|
||||
| ei152 | 84 | 21 | 2 | 1 | ov_SC05_008:0x801810d8; ov_SC05_008:0x80181628 |
|
||||
| ei153 | 84 | 21 | 2 | 1 | ov_SC05_008:0x801818d4; ov_SC05_008:0x80181b30 |
|
||||
| ei154 | 80 | 20 | 2 | 1 | ov_SC03_124:0x801807d8; ov_SC03_124:0x80180868 |
|
||||
| ei155 | 76 | 19 | 2 | 1 | ov_SC02_028:0x8017e778; ov_SC02_028:0x8017e7c4 |
|
||||
| ei156 | 68 | 17 | 2 | 1 | ov_SC03_024:0x801854b0; ov_SC03_024:0x80185638 |
|
||||
| ei157 | 64 | 16 | 2 | 1 | ov_SC02_031:0x8017db98; ov_SC02_031:0x8017f3c0 |
|
||||
| ei158 | 60 | 15 | 2 | 1 | ov_SC01_008:0x8017f250; ov_SC01_008:0x8017f66c |
|
||||
| ei159 | 60 | 15 | 2 | 1 | ov_SC02_017:0x801805d4; ov_SC02_017:0x8018096c |
|
||||
| ei160 | 60 | 15 | 2 | 1 | ov_SC03_124:0x8017fe3c; ov_SC03_124:0x8017fe78 |
|
||||
| ei161 | 56 | 14 | 2 | 1 | main:0x80014cf8; main:0x80014dec |
|
||||
| ei162 | 56 | 14 | 2 | 1 | ov_SC01_077:0x8017e6bc; ov_SC01_077:0x8017e830 |
|
||||
| ei163 | 56 | 14 | 2 | 1 | ov_SC06_006:0x80180534; ov_SC06_006:0x801805ec |
|
||||
| ei164 | 56 | 14 | 2 | 1 | resident:0x800d065c; resident:0x800d0694 |
|
||||
| ei165 | 48 | 12 | 2 | 1 | ov_SC03_024:0x80180800; ov_SC03_024:0x801808e4 |
|
||||
| ei166 | 44 | 11 | 2 | 1 | main:0x80013f3c; main:0x80017d98 |
|
||||
| ei167 | 44 | 11 | 2 | 1 | main:0x80014c28; main:0x80014dc0 |
|
||||
| ei168 | 44 | 11 | 2 | 1 | ov_SC02_005:0x80187a0c; ov_SC02_005:0x8018893c |
|
||||
| ei169 | 40 | 10 | 2 | 1 | ov_SC01_009:0x8017f9cc; ov_SC01_009:0x80181918 |
|
||||
| ei170 | 40 | 10 | 2 | 1 | ov_SC02_011:0x80182614; ov_SC02_011:0x801847f0 |
|
||||
| ei171 | 40 | 10 | 2 | 1 | ov_SC03_006:0x80188080; ov_SC03_006:0x80188710 |
|
||||
| ei172 | 40 | 10 | 2 | 1 | ov_SC03_029:0x801866a4; ov_SC03_029:0x80186d34 |
|
||||
| ei173 | 36 | 9 | 2 | 1 | main:0x80014070; main:0x80015a2c |
|
||||
| ei174 | 36 | 9 | 2 | 1 | main:0x80014094; main:0x80015a50 |
|
||||
| ei175 | 36 | 9 | 2 | 1 | main:0x8001599c; main:0x800159c0 |
|
||||
| ei176 | 36 | 9 | 2 | 1 | main:0x80037004; main:0x80037334 |
|
||||
| ei177 | 36 | 9 | 2 | 1 | ov_SC05_017:0x80182ce8; ov_SC05_017:0x80183ed4 |
|
||||
| ei178 | 32 | 8 | 2 | 1 | ov_SC06_029:0x80180ee8; ov_SC06_029:0x801870b4 |
|
||||
| ei179 | 32 | 8 | 2 | 1 | ov_SC07_007:0x8017f370; ov_SC07_007:0x80180b38 |
|
||||
| ei180 | 32 | 8 | 2 | 1 | resident:0x800cefb0; resident:0x800cf398 |
|
||||
|
||||
## h_norm (structural)
|
||||
|
||||
### cross-binary (binaries > 1) — 9337 groups, 40285260 collapsible bytes (top 200 of 9337 shown)
|
||||
### cross-binary (binaries > 1) — 9341 groups, 40286720 collapsible bytes (top 200 of 9341 shown)
|
||||
| gid | bytes | nins | count | #bin | sample members (binary:addr) |
|
||||
|---|---|---|---|---|---|
|
||||
| nx0 | 431200 | 770 | 141 | 141 | ov_MAIN_012:0x80144b9c; ov_SC01_000:0x80144b9c; ov_SC01_001:0x80144b9c; ov_SC01_004:0x80144b9c; …+137 |
|
||||
@@ -492,7 +486,7 @@
|
||||
| nx3 | 223440 | 399 | 141 | 141 | ov_MAIN_012:0x80133cd4; ov_SC01_000:0x80133cd4; ov_SC01_001:0x80133cd4; ov_SC01_004:0x80133cd4; …+137 |
|
||||
| nx4 | 211584 | 12 | 4409 | 145 | md_MAIN_027:0x800cb7fc; md_MAIN_034:0x800cc260; md_MAIN_035:0x800cafbc; md_MAIN_046:0x800cdba4; …+4405 |
|
||||
| nx5 | 206640 | 369 | 141 | 141 | ov_MAIN_012:0x80166994; ov_SC01_000:0x80166994; ov_SC01_001:0x80166994; ov_SC01_004:0x80166994; …+137 |
|
||||
| nx6 | 202208 | 8 | 6320 | 197 | md_MAIN_003:0x800d2c88; md_MAIN_007:0x800cf390; md_MAIN_015:0x800cb474; md_MAIN_019:0x800cb4a8; …+6316 |
|
||||
| nx6 | 202560 | 8 | 6331 | 198 | main:0x80014128; main:0x80014148; main:0x80016a5c; main:0x80017274; …+6327 |
|
||||
| nx7 | 186032 | 22 | 2115 | 141 | ov_MAIN_012:0x8014ccb4; ov_MAIN_012:0x8014d04c; ov_MAIN_012:0x8014d3e0; ov_MAIN_012:0x8014d738; …+2111 |
|
||||
| nx8 | 184828 | 41 | 1128 | 141 | ov_MAIN_012:0x80151fb4; ov_MAIN_012:0x801522cc; ov_MAIN_012:0x801525f4; ov_MAIN_012:0x80152ac8; …+1124 |
|
||||
| nx9 | 184240 | 329 | 141 | 141 | ov_MAIN_012:0x8013c414; ov_SC01_000:0x8013c414; ov_SC01_001:0x8013c414; ov_SC01_004:0x8013c414; …+137 |
|
||||
@@ -687,207 +681,207 @@
|
||||
| nx198 | 43680 | 78 | 141 | 141 | ov_MAIN_012:0x8015e714; ov_SC01_000:0x8015e714; ov_SC01_001:0x8015e714; ov_SC01_004:0x8015e714; …+137 |
|
||||
| nx199 | 43680 | 78 | 141 | 141 | ov_MAIN_012:0x8016163c; ov_SC01_000:0x8016163c; ov_SC01_001:0x8016163c; ov_SC01_004:0x8016163c; …+137 |
|
||||
|
||||
### intra-binary — 431 groups, 77268 collapsible bytes (top 200 of 431 shown)
|
||||
### intra-binary — 403 groups, 75116 collapsible bytes (top 200 of 403 shown)
|
||||
| gid | bytes | nins | count | #bin | sample members (binary:addr) |
|
||||
|---|---|---|---|---|---|
|
||||
| ni0 | 2232 | 186 | 4 | 1 | ov_SC07_006:0x801802ec; ov_SC07_006:0x8018163c; ov_SC07_006:0x801823f8; ov_SC07_006:0x801828a4 |
|
||||
| ni1 | 1268 | 317 | 2 | 1 | ov_SC07_006:0x8017fdf8; ov_SC07_006:0x80181148 |
|
||||
| ni2 | 1100 | 275 | 2 | 1 | ov_SC07_006:0x8017f9ac; ov_SC07_006:0x80180cfc |
|
||||
| ni3 | 1000 | 125 | 3 | 1 | main:0x80054544; main:0x80054808; main:0x80054ae4 |
|
||||
| ni4 | 984 | 246 | 2 | 1 | ov_SC07_006:0x8017f5d4; ov_SC07_006:0x80180924 |
|
||||
| ni5 | 960 | 48 | 6 | 1 | ov_SC07_002:0x8017ff84; ov_SC07_002:0x8018094c; ov_SC07_002:0x80180a2c; ov_SC07_002:0x80180b0c; …+2 |
|
||||
| ni6 | 848 | 212 | 2 | 1 | ov_SC07_006:0x801805d4; ov_SC07_006:0x80181924 |
|
||||
| ni7 | 756 | 63 | 4 | 1 | ov_SC03_028:0x8018966c; ov_SC03_028:0x80189af4; ov_SC03_028:0x80189f7c; ov_SC03_028:0x8018a404 |
|
||||
| ni8 | 640 | 10 | 17 | 1 | ov_SC03_007:0x8017d4c4; ov_SC03_007:0x8017d4ec; ov_SC03_007:0x8017d514; ov_SC03_007:0x8017d53c; …+13 |
|
||||
| ni9 | 624 | 39 | 5 | 1 | ov_SC01_001:0x8017f28c; ov_SC01_001:0x8017f8b4; ov_SC01_001:0x8017fe44; ov_SC01_001:0x80180478; …+1 |
|
||||
| ni10 | 600 | 50 | 4 | 1 | ov_SC03_031:0x801802e4; ov_SC03_031:0x801805b8; ov_SC03_031:0x80180878; ov_SC03_031:0x80180b38 |
|
||||
| ni11 | 588 | 49 | 4 | 1 | ov_SC04_015:0x8017e16c; ov_SC04_015:0x8017f9b4; ov_SC04_015:0x8017fc7c; ov_SC04_015:0x8017ff50 |
|
||||
| ni12 | 576 | 18 | 9 | 1 | ov_SC05_008:0x8017f65c; ov_SC05_008:0x8017f82c; ov_SC05_008:0x8017f9fc; ov_SC05_008:0x8017fbcc; …+5 |
|
||||
| ni13 | 540 | 45 | 4 | 1 | ov_SC03_028:0x80189518; ov_SC03_028:0x801899a0; ov_SC03_028:0x80189e28; ov_SC03_028:0x8018a2b0 |
|
||||
| ni14 | 400 | 50 | 3 | 1 | ov_SC04_015:0x8017fa78; ov_SC04_015:0x8017fd40; ov_SC04_015:0x80180014 |
|
||||
| ni15 | 336 | 21 | 5 | 1 | ov_SC05_008:0x801800d8; ov_SC05_008:0x80180484; ov_SC05_008:0x80180830; ov_SC05_008:0x80180988; …+1 |
|
||||
| ni16 | 308 | 77 | 2 | 1 | main:0x800604c4; main:0x800606d4 |
|
||||
| ni17 | 304 | 38 | 3 | 1 | ov_SC07_007:0x8017d8e0; ov_SC07_007:0x8017d978; ov_SC07_007:0x8017da10 |
|
||||
| ni18 | 288 | 8 | 10 | 1 | main:0x80014128; main:0x80014148; main:0x80016a5c; main:0x80017274; …+6 |
|
||||
| ni19 | 280 | 70 | 2 | 1 | ov_SC04_011:0x801845a8; ov_SC04_011:0x80184728 |
|
||||
| ni20 | 248 | 62 | 2 | 1 | ov_SC03_007:0x80186310; ov_SC03_007:0x80186584 |
|
||||
| ni21 | 240 | 15 | 5 | 1 | ov_SC01_001:0x8017f7f4; ov_SC01_001:0x8017fd70; ov_SC01_001:0x801803a4; ov_SC01_001:0x80180854; …+1 |
|
||||
| ni22 | 240 | 15 | 5 | 1 | ov_SC03_001:0x80185d14; ov_SC03_001:0x80185d50; ov_SC03_001:0x80185d8c; ov_SC03_001:0x80185fb4; …+1 |
|
||||
| ni23 | 240 | 20 | 4 | 1 | ov_SC03_007:0x8017dc04; ov_SC03_007:0x8017dc54; ov_SC03_007:0x8017dca4; ov_SC03_007:0x8017dcf4 |
|
||||
| ni24 | 232 | 58 | 2 | 1 | main:0x8001382c; main:0x800139c8 |
|
||||
| ni25 | 228 | 57 | 2 | 1 | main:0x800134fc; main:0x80013694 |
|
||||
| ni26 | 228 | 57 | 2 | 1 | main:0x80013b64; main:0x80013cfc |
|
||||
| ni27 | 228 | 19 | 4 | 1 | main:0x8002a1b4; main:0x8002a400; main:0x8002a670; main:0x8002a8e0 |
|
||||
| ni28 | 228 | 19 | 4 | 1 | ov_SC07_009:0x8017d508; ov_SC07_009:0x8017d634; ov_SC07_009:0x8017d760; ov_SC07_009:0x8017d88c |
|
||||
| ni29 | 228 | 19 | 4 | 1 | ov_SC07_009:0x8017d554; ov_SC07_009:0x8017d680; ov_SC07_009:0x8017d7ac; ov_SC07_009:0x8017d8d8 |
|
||||
| ni30 | 224 | 8 | 8 | 1 | main:0x80027bf0; main:0x8002eeb8; main:0x8002fdc8; main:0x80046610; …+4 |
|
||||
| ni31 | 220 | 55 | 2 | 1 | ov_SC01_009:0x80182030; ov_SC01_009:0x8018210c |
|
||||
| ni32 | 208 | 52 | 2 | 1 | ov_SC03_007:0x80186408; ov_SC03_007:0x8018669c |
|
||||
| ni33 | 204 | 51 | 2 | 1 | ov_SC03_012:0x8017d6b4; ov_SC03_012:0x8017d780 |
|
||||
| ni34 | 204 | 51 | 2 | 1 | ov_SC05_008:0x801802ec; ov_SC05_008:0x80180698 |
|
||||
| ni35 | 204 | 17 | 4 | 1 | ov_SC07_002:0x8017f004; ov_SC07_002:0x8017f184; ov_SC07_002:0x8017f2d8; ov_SC07_002:0x8017f418 |
|
||||
| ni36 | 200 | 25 | 3 | 1 | ov_SC03_124:0x8017dfe4; ov_SC03_124:0x8017ebec; ov_SC03_124:0x8017ff64 |
|
||||
| ni37 | 200 | 50 | 2 | 1 | ov_SC06_000:0x801816ac; ov_SC06_000:0x80181774 |
|
||||
| ni38 | 196 | 49 | 2 | 1 | main:0x800167f0; main:0x80016978 |
|
||||
| ni39 | 188 | 47 | 2 | 1 | ov_MAIN_012:0x8015dcb8; ov_MAIN_012:0x8015e018 |
|
||||
| ni40 | 188 | 47 | 2 | 1 | ov_SC01_000:0x8015dcb8; ov_SC01_000:0x8015e018 |
|
||||
| ni41 | 188 | 47 | 2 | 1 | ov_SC01_001:0x8015dcb8; ov_SC01_001:0x8015e018 |
|
||||
| ni42 | 188 | 47 | 2 | 1 | ov_SC01_004:0x8015dcb8; ov_SC01_004:0x8015e018 |
|
||||
| ni43 | 188 | 47 | 2 | 1 | ov_SC01_008:0x8015dcb8; ov_SC01_008:0x8015e018 |
|
||||
| ni44 | 188 | 47 | 2 | 1 | ov_SC01_009:0x8015dcb8; ov_SC01_009:0x8015e018 |
|
||||
| ni45 | 188 | 47 | 2 | 1 | ov_SC01_074:0x8015dcb8; ov_SC01_074:0x8015e018 |
|
||||
| ni46 | 188 | 47 | 2 | 1 | ov_SC01_077:0x8015dcb8; ov_SC01_077:0x8015e018 |
|
||||
| ni47 | 188 | 47 | 2 | 1 | ov_SC01_080:0x8015dcb8; ov_SC01_080:0x8015e018 |
|
||||
| ni48 | 188 | 47 | 2 | 1 | ov_SC01_084:0x8015dcb8; ov_SC01_084:0x8015e018 |
|
||||
| ni49 | 188 | 47 | 2 | 1 | ov_SC02_004:0x8015dcb8; ov_SC02_004:0x8015e018 |
|
||||
| ni50 | 188 | 47 | 2 | 1 | ov_SC02_005:0x8015dcb8; ov_SC02_005:0x8015e018 |
|
||||
| ni51 | 188 | 47 | 2 | 1 | ov_SC02_011:0x8015dcb8; ov_SC02_011:0x8015e018 |
|
||||
| ni52 | 188 | 47 | 2 | 1 | ov_SC02_015:0x8015dcb8; ov_SC02_015:0x8015e018 |
|
||||
| ni53 | 188 | 47 | 2 | 1 | ov_SC02_016:0x8015dcb8; ov_SC02_016:0x8015e018 |
|
||||
| ni54 | 188 | 47 | 2 | 1 | ov_SC02_017:0x8015dcb8; ov_SC02_017:0x8015e018 |
|
||||
| ni55 | 188 | 47 | 2 | 1 | ov_SC02_021:0x8015dcb8; ov_SC02_021:0x8015e018 |
|
||||
| ni56 | 188 | 47 | 2 | 1 | ov_SC02_026:0x8015dcb8; ov_SC02_026:0x8015e018 |
|
||||
| ni57 | 188 | 47 | 2 | 1 | ov_SC02_027:0x8015dcb8; ov_SC02_027:0x8015e018 |
|
||||
| ni58 | 188 | 47 | 2 | 1 | ov_SC02_028:0x8015dcb8; ov_SC02_028:0x8015e018 |
|
||||
| ni59 | 188 | 47 | 2 | 1 | ov_SC02_031:0x8015dcb8; ov_SC02_031:0x8015e018 |
|
||||
| ni60 | 188 | 47 | 2 | 1 | ov_SC02_035:0x8015dcb8; ov_SC02_035:0x8015e018 |
|
||||
| ni61 | 188 | 47 | 2 | 1 | ov_SC02_037:0x8015dcb8; ov_SC02_037:0x8015e018 |
|
||||
| ni62 | 188 | 47 | 2 | 1 | ov_SC02_039:0x8015dcb8; ov_SC02_039:0x8015e018 |
|
||||
| ni63 | 188 | 47 | 2 | 1 | ov_SC02_041:0x8015dcb8; ov_SC02_041:0x8015e018 |
|
||||
| ni64 | 188 | 47 | 2 | 1 | ov_SC03_001:0x8015dcb8; ov_SC03_001:0x8015e018 |
|
||||
| ni65 | 188 | 47 | 2 | 1 | ov_SC03_002:0x8015dcb8; ov_SC03_002:0x8015e018 |
|
||||
| ni66 | 188 | 47 | 2 | 1 | ov_SC03_003:0x8015dcb8; ov_SC03_003:0x8015e018 |
|
||||
| ni67 | 188 | 47 | 2 | 1 | ov_SC03_006:0x8015dcb8; ov_SC03_006:0x8015e018 |
|
||||
| ni68 | 188 | 47 | 2 | 1 | ov_SC03_007:0x8015dcb8; ov_SC03_007:0x8015e018 |
|
||||
| ni69 | 188 | 47 | 2 | 1 | ov_SC03_010:0x8015dcb8; ov_SC03_010:0x8015e018 |
|
||||
| ni70 | 188 | 47 | 2 | 1 | ov_SC03_011:0x8015dcb8; ov_SC03_011:0x8015e018 |
|
||||
| ni71 | 188 | 47 | 2 | 1 | ov_SC03_012:0x8015dcb8; ov_SC03_012:0x8015e018 |
|
||||
| ni72 | 188 | 47 | 2 | 1 | ov_SC03_013:0x8015dcb8; ov_SC03_013:0x8015e018 |
|
||||
| ni73 | 188 | 47 | 2 | 1 | ov_SC03_023:0x8015dcb8; ov_SC03_023:0x8015e018 |
|
||||
| ni74 | 188 | 47 | 2 | 1 | ov_SC03_024:0x8015dcb8; ov_SC03_024:0x8015e018 |
|
||||
| ni75 | 188 | 47 | 2 | 1 | ov_SC03_028:0x8015dcb8; ov_SC03_028:0x8015e018 |
|
||||
| ni76 | 188 | 47 | 2 | 1 | ov_SC03_029:0x8015dcb8; ov_SC03_029:0x8015e018 |
|
||||
| ni77 | 188 | 47 | 2 | 1 | ov_SC03_030:0x8015dcb8; ov_SC03_030:0x8015e018 |
|
||||
| ni78 | 188 | 47 | 2 | 1 | ov_SC03_031:0x8015dcb8; ov_SC03_031:0x8015e018 |
|
||||
| ni79 | 188 | 47 | 2 | 1 | ov_SC03_089:0x8015dcb8; ov_SC03_089:0x8015e018 |
|
||||
| ni80 | 188 | 47 | 2 | 1 | ov_SC03_090:0x8015dcb8; ov_SC03_090:0x8015e018 |
|
||||
| ni81 | 188 | 47 | 2 | 1 | ov_SC03_091:0x8015dcb8; ov_SC03_091:0x8015e018 |
|
||||
| ni82 | 188 | 47 | 2 | 1 | ov_SC03_092:0x8015dcb8; ov_SC03_092:0x8015e018 |
|
||||
| ni83 | 188 | 47 | 2 | 1 | ov_SC03_093:0x8015dcb8; ov_SC03_093:0x8015e018 |
|
||||
| ni84 | 188 | 47 | 2 | 1 | ov_SC03_094:0x8015dcb8; ov_SC03_094:0x8015e018 |
|
||||
| ni85 | 188 | 47 | 2 | 1 | ov_SC03_095:0x8015dcb8; ov_SC03_095:0x8015e018 |
|
||||
| ni86 | 188 | 47 | 2 | 1 | ov_SC03_096:0x8015dcb8; ov_SC03_096:0x8015e018 |
|
||||
| ni87 | 188 | 47 | 2 | 1 | ov_SC03_097:0x8015dcb8; ov_SC03_097:0x8015e018 |
|
||||
| ni88 | 188 | 47 | 2 | 1 | ov_SC03_098:0x8015dcb8; ov_SC03_098:0x8015e018 |
|
||||
| ni89 | 188 | 47 | 2 | 1 | ov_SC03_099:0x8015dcb8; ov_SC03_099:0x8015e018 |
|
||||
| ni90 | 188 | 47 | 2 | 1 | ov_SC03_100:0x8015dcb8; ov_SC03_100:0x8015e018 |
|
||||
| ni91 | 188 | 47 | 2 | 1 | ov_SC03_101:0x8015dcb8; ov_SC03_101:0x8015e018 |
|
||||
| ni92 | 188 | 47 | 2 | 1 | ov_SC03_102:0x8015dcb8; ov_SC03_102:0x8015e018 |
|
||||
| ni93 | 188 | 47 | 2 | 1 | ov_SC03_103:0x8015dcb8; ov_SC03_103:0x8015e018 |
|
||||
| ni94 | 188 | 47 | 2 | 1 | ov_SC03_104:0x8015dcb8; ov_SC03_104:0x8015e018 |
|
||||
| ni95 | 188 | 47 | 2 | 1 | ov_SC03_105:0x8015dcb8; ov_SC03_105:0x8015e018 |
|
||||
| ni96 | 188 | 47 | 2 | 1 | ov_SC03_107:0x8015dcb8; ov_SC03_107:0x8015e018 |
|
||||
| ni97 | 188 | 47 | 2 | 1 | ov_SC03_108:0x8015dcb8; ov_SC03_108:0x8015e018 |
|
||||
| ni98 | 188 | 47 | 2 | 1 | ov_SC03_109:0x8015dcb8; ov_SC03_109:0x8015e018 |
|
||||
| ni99 | 188 | 47 | 2 | 1 | ov_SC03_110:0x8015dcb8; ov_SC03_110:0x8015e018 |
|
||||
| ni100 | 188 | 47 | 2 | 1 | ov_SC03_111:0x8015dcb8; ov_SC03_111:0x8015e018 |
|
||||
| ni101 | 188 | 47 | 2 | 1 | ov_SC03_112:0x8015dcb8; ov_SC03_112:0x8015e018 |
|
||||
| ni102 | 188 | 47 | 2 | 1 | ov_SC03_113:0x8015dcb8; ov_SC03_113:0x8015e018 |
|
||||
| ni103 | 188 | 47 | 2 | 1 | ov_SC03_114:0x8015dcb8; ov_SC03_114:0x8015e018 |
|
||||
| ni104 | 188 | 47 | 2 | 1 | ov_SC03_115:0x8015dcb8; ov_SC03_115:0x8015e018 |
|
||||
| ni105 | 188 | 47 | 2 | 1 | ov_SC03_116:0x8015dcb8; ov_SC03_116:0x8015e018 |
|
||||
| ni106 | 188 | 47 | 2 | 1 | ov_SC03_117:0x8015dcb8; ov_SC03_117:0x8015e018 |
|
||||
| ni107 | 188 | 47 | 2 | 1 | ov_SC03_121:0x8015dcb8; ov_SC03_121:0x8015e018 |
|
||||
| ni108 | 188 | 47 | 2 | 1 | ov_SC03_124:0x8015dcb8; ov_SC03_124:0x8015e018 |
|
||||
| ni109 | 188 | 47 | 2 | 1 | ov_SC03_125:0x8015dcb8; ov_SC03_125:0x8015e018 |
|
||||
| ni110 | 188 | 47 | 2 | 1 | ov_SC04_000:0x8015dcb8; ov_SC04_000:0x8015e018 |
|
||||
| ni111 | 188 | 47 | 2 | 1 | ov_SC04_002:0x8015dcb8; ov_SC04_002:0x8015e018 |
|
||||
| ni112 | 188 | 47 | 2 | 1 | ov_SC04_003:0x8015dcb8; ov_SC04_003:0x8015e018 |
|
||||
| ni113 | 188 | 47 | 2 | 1 | ov_SC04_004:0x8015dcb8; ov_SC04_004:0x8015e018 |
|
||||
| ni114 | 188 | 47 | 2 | 1 | ov_SC04_005:0x8015dcb8; ov_SC04_005:0x8015e018 |
|
||||
| ni115 | 188 | 47 | 2 | 1 | ov_SC04_006:0x8015dcb8; ov_SC04_006:0x8015e018 |
|
||||
| ni116 | 188 | 47 | 2 | 1 | ov_SC04_007:0x8015dcb8; ov_SC04_007:0x8015e018 |
|
||||
| ni117 | 188 | 47 | 2 | 1 | ov_SC04_009:0x8015dcb8; ov_SC04_009:0x8015e018 |
|
||||
| ni118 | 188 | 47 | 2 | 1 | ov_SC04_010:0x8015dcb8; ov_SC04_010:0x8015e018 |
|
||||
| ni119 | 188 | 47 | 2 | 1 | ov_SC04_011:0x8015dcb8; ov_SC04_011:0x8015e018 |
|
||||
| ni120 | 188 | 47 | 2 | 1 | ov_SC04_012:0x8015dcb8; ov_SC04_012:0x8015e018 |
|
||||
| ni121 | 188 | 47 | 2 | 1 | ov_SC04_015:0x8015dcb8; ov_SC04_015:0x8015e018 |
|
||||
| ni122 | 188 | 47 | 2 | 1 | ov_SC04_016:0x8015dcb8; ov_SC04_016:0x8015e018 |
|
||||
| ni123 | 188 | 47 | 2 | 1 | ov_SC04_020:0x8015dcb8; ov_SC04_020:0x8015e018 |
|
||||
| ni124 | 188 | 47 | 2 | 1 | ov_SC05_000:0x8015dcb8; ov_SC05_000:0x8015e018 |
|
||||
| ni125 | 188 | 47 | 2 | 1 | ov_SC05_001:0x8015dcb8; ov_SC05_001:0x8015e018 |
|
||||
| ni126 | 188 | 47 | 2 | 1 | ov_SC05_002:0x8015dcb8; ov_SC05_002:0x8015e018 |
|
||||
| ni127 | 188 | 47 | 2 | 1 | ov_SC05_003:0x8015dcb8; ov_SC05_003:0x8015e018 |
|
||||
| ni128 | 188 | 47 | 2 | 1 | ov_SC05_004:0x8015dcb8; ov_SC05_004:0x8015e018 |
|
||||
| ni129 | 188 | 47 | 2 | 1 | ov_SC05_005:0x8015dcb8; ov_SC05_005:0x8015e018 |
|
||||
| ni130 | 188 | 47 | 2 | 1 | ov_SC05_006:0x8015dcb8; ov_SC05_006:0x8015e018 |
|
||||
| ni131 | 188 | 47 | 2 | 1 | ov_SC05_007:0x8015dcb8; ov_SC05_007:0x8015e018 |
|
||||
| ni132 | 188 | 47 | 2 | 1 | ov_SC05_008:0x8015dcb8; ov_SC05_008:0x8015e018 |
|
||||
| ni133 | 188 | 47 | 2 | 1 | ov_SC05_008:0x80180230; ov_SC05_008:0x801805dc |
|
||||
| ni134 | 188 | 47 | 2 | 1 | ov_SC05_010:0x8015dcb8; ov_SC05_010:0x8015e018 |
|
||||
| ni135 | 188 | 47 | 2 | 1 | ov_SC05_011:0x8015dcb8; ov_SC05_011:0x8015e018 |
|
||||
| ni136 | 188 | 47 | 2 | 1 | ov_SC05_017:0x8015dcb8; ov_SC05_017:0x8015e018 |
|
||||
| ni137 | 188 | 47 | 2 | 1 | ov_SC05_018:0x8015dcb8; ov_SC05_018:0x8015e018 |
|
||||
| ni138 | 188 | 47 | 2 | 1 | ov_SC06_000:0x8015dcb8; ov_SC06_000:0x8015e018 |
|
||||
| ni139 | 188 | 47 | 2 | 1 | ov_SC06_006:0x8015dcb8; ov_SC06_006:0x8015e018 |
|
||||
| ni140 | 188 | 47 | 2 | 1 | ov_SC06_008:0x8015dcb8; ov_SC06_008:0x8015e018 |
|
||||
| ni141 | 188 | 47 | 2 | 1 | ov_SC06_010:0x8015dcb8; ov_SC06_010:0x8015e018 |
|
||||
| ni142 | 188 | 47 | 2 | 1 | ov_SC06_011:0x8015dcb8; ov_SC06_011:0x8015e018 |
|
||||
| ni143 | 188 | 47 | 2 | 1 | ov_SC06_013:0x8015dcb8; ov_SC06_013:0x8015e018 |
|
||||
| ni144 | 188 | 47 | 2 | 1 | ov_SC06_014:0x8015dcb8; ov_SC06_014:0x8015e018 |
|
||||
| ni145 | 188 | 47 | 2 | 1 | ov_SC06_015:0x8015dcb8; ov_SC06_015:0x8015e018 |
|
||||
| ni146 | 188 | 47 | 2 | 1 | ov_SC06_016:0x8015dcb8; ov_SC06_016:0x8015e018 |
|
||||
| ni147 | 188 | 47 | 2 | 1 | ov_SC06_018:0x8015dcb8; ov_SC06_018:0x8015e018 |
|
||||
| ni148 | 188 | 47 | 2 | 1 | ov_SC06_020:0x8015dcb8; ov_SC06_020:0x8015e018 |
|
||||
| ni149 | 188 | 47 | 2 | 1 | ov_SC06_022:0x8015dcb8; ov_SC06_022:0x8015e018 |
|
||||
| ni150 | 188 | 47 | 2 | 1 | ov_SC06_024:0x8015dcb8; ov_SC06_024:0x8015e018 |
|
||||
| ni151 | 188 | 47 | 2 | 1 | ov_SC06_025:0x8015dcb8; ov_SC06_025:0x8015e018 |
|
||||
| ni152 | 188 | 47 | 2 | 1 | ov_SC06_027:0x8015dcb8; ov_SC06_027:0x8015e018 |
|
||||
| ni153 | 188 | 47 | 2 | 1 | ov_SC06_029:0x8015dcb8; ov_SC06_029:0x8015e018 |
|
||||
| ni154 | 188 | 47 | 2 | 1 | ov_SC06_030:0x8015dcb8; ov_SC06_030:0x8015e018 |
|
||||
| ni155 | 188 | 47 | 2 | 1 | ov_SC06_032:0x8015dcb8; ov_SC06_032:0x8015e018 |
|
||||
| ni156 | 188 | 47 | 2 | 1 | ov_SC06_033:0x8015dcb8; ov_SC06_033:0x8015e018 |
|
||||
| ni157 | 188 | 47 | 2 | 1 | ov_SC07_000:0x8015dcb8; ov_SC07_000:0x8015e018 |
|
||||
| ni158 | 188 | 47 | 2 | 1 | ov_SC07_001:0x8015dcb8; ov_SC07_001:0x8015e018 |
|
||||
| ni159 | 188 | 47 | 2 | 1 | ov_SC07_002:0x8015dcb8; ov_SC07_002:0x8015e018 |
|
||||
| ni160 | 188 | 47 | 2 | 1 | ov_SC07_006:0x8015dcb8; ov_SC07_006:0x8015e018 |
|
||||
| ni161 | 188 | 47 | 2 | 1 | ov_SC07_007:0x8015dcb8; ov_SC07_007:0x8015e018 |
|
||||
| ni162 | 188 | 47 | 2 | 1 | ov_SC07_008:0x8015dcb8; ov_SC07_008:0x8015e018 |
|
||||
| ni163 | 188 | 47 | 2 | 1 | ov_SC07_009:0x8015dcb8; ov_SC07_009:0x8015e018 |
|
||||
| ni164 | 188 | 47 | 2 | 1 | ov_SC07_010:0x8015dcb8; ov_SC07_010:0x8015e018 |
|
||||
| ni165 | 188 | 47 | 2 | 1 | ov_SC07_011:0x8015dcb8; ov_SC07_011:0x8015e018 |
|
||||
| ni166 | 184 | 23 | 3 | 1 | ov_SC01_001:0x8017fdac; ov_SC01_001:0x801803e0; ov_SC01_001:0x80180e90 |
|
||||
| ni167 | 176 | 44 | 2 | 1 | ov_MAIN_012:0x8015dbd4; ov_MAIN_012:0x8015df34 |
|
||||
| ni168 | 176 | 44 | 2 | 1 | ov_SC01_000:0x8015dbd4; ov_SC01_000:0x8015df34 |
|
||||
| ni169 | 176 | 44 | 2 | 1 | ov_SC01_001:0x8015dbd4; ov_SC01_001:0x8015df34 |
|
||||
| ni170 | 176 | 44 | 2 | 1 | ov_SC01_004:0x8015dbd4; ov_SC01_004:0x8015df34 |
|
||||
| ni171 | 176 | 44 | 2 | 1 | ov_SC01_008:0x8015dbd4; ov_SC01_008:0x8015df34 |
|
||||
| ni172 | 176 | 44 | 2 | 1 | ov_SC01_009:0x8015dbd4; ov_SC01_009:0x8015df34 |
|
||||
| ni173 | 176 | 44 | 2 | 1 | ov_SC01_074:0x8015dbd4; ov_SC01_074:0x8015df34 |
|
||||
| ni174 | 176 | 44 | 2 | 1 | ov_SC01_077:0x8015dbd4; ov_SC01_077:0x8015df34 |
|
||||
| ni175 | 176 | 44 | 2 | 1 | ov_SC01_080:0x8015dbd4; ov_SC01_080:0x8015df34 |
|
||||
| ni176 | 176 | 44 | 2 | 1 | ov_SC01_084:0x8015dbd4; ov_SC01_084:0x8015df34 |
|
||||
| ni177 | 176 | 44 | 2 | 1 | ov_SC02_004:0x8015dbd4; ov_SC02_004:0x8015df34 |
|
||||
| ni178 | 176 | 44 | 2 | 1 | ov_SC02_005:0x8015dbd4; ov_SC02_005:0x8015df34 |
|
||||
| ni179 | 176 | 44 | 2 | 1 | ov_SC02_011:0x8015dbd4; ov_SC02_011:0x8015df34 |
|
||||
| ni180 | 176 | 44 | 2 | 1 | ov_SC02_015:0x8015dbd4; ov_SC02_015:0x8015df34 |
|
||||
| ni181 | 176 | 44 | 2 | 1 | ov_SC02_016:0x8015dbd4; ov_SC02_016:0x8015df34 |
|
||||
| ni182 | 176 | 44 | 2 | 1 | ov_SC02_017:0x8015dbd4; ov_SC02_017:0x8015df34 |
|
||||
| ni183 | 176 | 44 | 2 | 1 | ov_SC02_021:0x8015dbd4; ov_SC02_021:0x8015df34 |
|
||||
| ni184 | 176 | 44 | 2 | 1 | ov_SC02_026:0x8015dbd4; ov_SC02_026:0x8015df34 |
|
||||
| ni185 | 176 | 44 | 2 | 1 | ov_SC02_027:0x8015dbd4; ov_SC02_027:0x8015df34 |
|
||||
| ni186 | 176 | 44 | 2 | 1 | ov_SC02_028:0x8015dbd4; ov_SC02_028:0x8015df34 |
|
||||
| ni187 | 176 | 44 | 2 | 1 | ov_SC02_031:0x8015dbd4; ov_SC02_031:0x8015df34 |
|
||||
| ni188 | 176 | 44 | 2 | 1 | ov_SC02_035:0x8015dbd4; ov_SC02_035:0x8015df34 |
|
||||
| ni189 | 176 | 44 | 2 | 1 | ov_SC02_037:0x8015dbd4; ov_SC02_037:0x8015df34 |
|
||||
| ni190 | 176 | 44 | 2 | 1 | ov_SC02_039:0x8015dbd4; ov_SC02_039:0x8015df34 |
|
||||
| ni191 | 176 | 44 | 2 | 1 | ov_SC02_041:0x8015dbd4; ov_SC02_041:0x8015df34 |
|
||||
| ni192 | 176 | 44 | 2 | 1 | ov_SC03_001:0x8015dbd4; ov_SC03_001:0x8015df34 |
|
||||
| ni193 | 176 | 44 | 2 | 1 | ov_SC03_002:0x8015dbd4; ov_SC03_002:0x8015df34 |
|
||||
| ni194 | 176 | 44 | 2 | 1 | ov_SC03_003:0x8015dbd4; ov_SC03_003:0x8015df34 |
|
||||
| ni195 | 176 | 44 | 2 | 1 | ov_SC03_006:0x8015dbd4; ov_SC03_006:0x8015df34 |
|
||||
| ni196 | 176 | 44 | 2 | 1 | ov_SC03_007:0x8015dbd4; ov_SC03_007:0x8015df34 |
|
||||
| ni197 | 176 | 44 | 2 | 1 | ov_SC03_010:0x8015dbd4; ov_SC03_010:0x8015df34 |
|
||||
| ni198 | 176 | 44 | 2 | 1 | ov_SC03_011:0x8015dbd4; ov_SC03_011:0x8015df34 |
|
||||
| ni199 | 176 | 44 | 2 | 1 | ov_SC03_012:0x8015dbd4; ov_SC03_012:0x8015df34 |
|
||||
| ni3 | 984 | 246 | 2 | 1 | ov_SC07_006:0x8017f5d4; ov_SC07_006:0x80180924 |
|
||||
| ni4 | 960 | 48 | 6 | 1 | ov_SC07_002:0x8017ff84; ov_SC07_002:0x8018094c; ov_SC07_002:0x80180a2c; ov_SC07_002:0x80180b0c; …+2 |
|
||||
| ni5 | 848 | 212 | 2 | 1 | ov_SC07_006:0x801805d4; ov_SC07_006:0x80181924 |
|
||||
| ni6 | 756 | 63 | 4 | 1 | ov_SC03_028:0x8018966c; ov_SC03_028:0x80189af4; ov_SC03_028:0x80189f7c; ov_SC03_028:0x8018a404 |
|
||||
| ni7 | 640 | 10 | 17 | 1 | ov_SC03_007:0x8017d4c4; ov_SC03_007:0x8017d4ec; ov_SC03_007:0x8017d514; ov_SC03_007:0x8017d53c; …+13 |
|
||||
| ni8 | 624 | 39 | 5 | 1 | ov_SC01_001:0x8017f28c; ov_SC01_001:0x8017f8b4; ov_SC01_001:0x8017fe44; ov_SC01_001:0x80180478; …+1 |
|
||||
| ni9 | 600 | 50 | 4 | 1 | ov_SC03_031:0x801802e4; ov_SC03_031:0x801805b8; ov_SC03_031:0x80180878; ov_SC03_031:0x80180b38 |
|
||||
| ni10 | 588 | 49 | 4 | 1 | ov_SC04_015:0x8017e16c; ov_SC04_015:0x8017f9b4; ov_SC04_015:0x8017fc7c; ov_SC04_015:0x8017ff50 |
|
||||
| ni11 | 576 | 18 | 9 | 1 | ov_SC05_008:0x8017f65c; ov_SC05_008:0x8017f82c; ov_SC05_008:0x8017f9fc; ov_SC05_008:0x8017fbcc; …+5 |
|
||||
| ni12 | 540 | 45 | 4 | 1 | ov_SC03_028:0x80189518; ov_SC03_028:0x801899a0; ov_SC03_028:0x80189e28; ov_SC03_028:0x8018a2b0 |
|
||||
| ni13 | 516 | 43 | 4 | 1 | main:0x8002a108; main:0x8002a354; main:0x8002a5c4; main:0x8002a834 |
|
||||
| ni14 | 412 | 103 | 2 | 1 | main:0x8001382c; main:0x800139c8 |
|
||||
| ni15 | 408 | 102 | 2 | 1 | main:0x800134fc; main:0x80013694 |
|
||||
| ni16 | 408 | 102 | 2 | 1 | main:0x80013b64; main:0x80013cfc |
|
||||
| ni17 | 400 | 50 | 3 | 1 | ov_SC04_015:0x8017fa78; ov_SC04_015:0x8017fd40; ov_SC04_015:0x80180014 |
|
||||
| ni18 | 336 | 21 | 5 | 1 | ov_SC05_008:0x801800d8; ov_SC05_008:0x80180484; ov_SC05_008:0x80180830; ov_SC05_008:0x80180988; …+1 |
|
||||
| ni19 | 304 | 38 | 3 | 1 | ov_SC07_007:0x8017d8e0; ov_SC07_007:0x8017d978; ov_SC07_007:0x8017da10 |
|
||||
| ni20 | 280 | 70 | 2 | 1 | ov_SC04_011:0x801845a8; ov_SC04_011:0x80184728 |
|
||||
| ni21 | 248 | 62 | 2 | 1 | ov_SC03_007:0x80186310; ov_SC03_007:0x80186584 |
|
||||
| ni22 | 240 | 15 | 5 | 1 | ov_SC01_001:0x8017f7f4; ov_SC01_001:0x8017fd70; ov_SC01_001:0x801803a4; ov_SC01_001:0x80180854; …+1 |
|
||||
| ni23 | 240 | 15 | 5 | 1 | ov_SC03_001:0x80185d14; ov_SC03_001:0x80185d50; ov_SC03_001:0x80185d8c; ov_SC03_001:0x80185fb4; …+1 |
|
||||
| ni24 | 240 | 20 | 4 | 1 | ov_SC03_007:0x8017dc04; ov_SC03_007:0x8017dc54; ov_SC03_007:0x8017dca4; ov_SC03_007:0x8017dcf4 |
|
||||
| ni25 | 228 | 19 | 4 | 1 | main:0x8002a1b4; main:0x8002a400; main:0x8002a670; main:0x8002a8e0 |
|
||||
| ni26 | 228 | 19 | 4 | 1 | ov_SC07_009:0x8017d508; ov_SC07_009:0x8017d634; ov_SC07_009:0x8017d760; ov_SC07_009:0x8017d88c |
|
||||
| ni27 | 228 | 19 | 4 | 1 | ov_SC07_009:0x8017d554; ov_SC07_009:0x8017d680; ov_SC07_009:0x8017d7ac; ov_SC07_009:0x8017d8d8 |
|
||||
| ni28 | 220 | 55 | 2 | 1 | ov_SC01_009:0x80182030; ov_SC01_009:0x8018210c |
|
||||
| ni29 | 208 | 52 | 2 | 1 | ov_SC03_007:0x80186408; ov_SC03_007:0x8018669c |
|
||||
| ni30 | 204 | 51 | 2 | 1 | ov_SC03_012:0x8017d6b4; ov_SC03_012:0x8017d780 |
|
||||
| ni31 | 204 | 51 | 2 | 1 | ov_SC05_008:0x801802ec; ov_SC05_008:0x80180698 |
|
||||
| ni32 | 204 | 17 | 4 | 1 | ov_SC07_002:0x8017f004; ov_SC07_002:0x8017f184; ov_SC07_002:0x8017f2d8; ov_SC07_002:0x8017f418 |
|
||||
| ni33 | 200 | 25 | 3 | 1 | ov_SC03_124:0x8017dfe4; ov_SC03_124:0x8017ebec; ov_SC03_124:0x8017ff64 |
|
||||
| ni34 | 200 | 50 | 2 | 1 | ov_SC06_000:0x801816ac; ov_SC06_000:0x80181774 |
|
||||
| ni35 | 196 | 49 | 2 | 1 | main:0x800145ec; main:0x800146b0 |
|
||||
| ni36 | 196 | 49 | 2 | 1 | main:0x800167f0; main:0x80016978 |
|
||||
| ni37 | 188 | 47 | 2 | 1 | ov_MAIN_012:0x8015dcb8; ov_MAIN_012:0x8015e018 |
|
||||
| ni38 | 188 | 47 | 2 | 1 | ov_SC01_000:0x8015dcb8; ov_SC01_000:0x8015e018 |
|
||||
| ni39 | 188 | 47 | 2 | 1 | ov_SC01_001:0x8015dcb8; ov_SC01_001:0x8015e018 |
|
||||
| ni40 | 188 | 47 | 2 | 1 | ov_SC01_004:0x8015dcb8; ov_SC01_004:0x8015e018 |
|
||||
| ni41 | 188 | 47 | 2 | 1 | ov_SC01_008:0x8015dcb8; ov_SC01_008:0x8015e018 |
|
||||
| ni42 | 188 | 47 | 2 | 1 | ov_SC01_009:0x8015dcb8; ov_SC01_009:0x8015e018 |
|
||||
| ni43 | 188 | 47 | 2 | 1 | ov_SC01_074:0x8015dcb8; ov_SC01_074:0x8015e018 |
|
||||
| ni44 | 188 | 47 | 2 | 1 | ov_SC01_077:0x8015dcb8; ov_SC01_077:0x8015e018 |
|
||||
| ni45 | 188 | 47 | 2 | 1 | ov_SC01_080:0x8015dcb8; ov_SC01_080:0x8015e018 |
|
||||
| ni46 | 188 | 47 | 2 | 1 | ov_SC01_084:0x8015dcb8; ov_SC01_084:0x8015e018 |
|
||||
| ni47 | 188 | 47 | 2 | 1 | ov_SC02_004:0x8015dcb8; ov_SC02_004:0x8015e018 |
|
||||
| ni48 | 188 | 47 | 2 | 1 | ov_SC02_005:0x8015dcb8; ov_SC02_005:0x8015e018 |
|
||||
| ni49 | 188 | 47 | 2 | 1 | ov_SC02_011:0x8015dcb8; ov_SC02_011:0x8015e018 |
|
||||
| ni50 | 188 | 47 | 2 | 1 | ov_SC02_015:0x8015dcb8; ov_SC02_015:0x8015e018 |
|
||||
| ni51 | 188 | 47 | 2 | 1 | ov_SC02_016:0x8015dcb8; ov_SC02_016:0x8015e018 |
|
||||
| ni52 | 188 | 47 | 2 | 1 | ov_SC02_017:0x8015dcb8; ov_SC02_017:0x8015e018 |
|
||||
| ni53 | 188 | 47 | 2 | 1 | ov_SC02_021:0x8015dcb8; ov_SC02_021:0x8015e018 |
|
||||
| ni54 | 188 | 47 | 2 | 1 | ov_SC02_026:0x8015dcb8; ov_SC02_026:0x8015e018 |
|
||||
| ni55 | 188 | 47 | 2 | 1 | ov_SC02_027:0x8015dcb8; ov_SC02_027:0x8015e018 |
|
||||
| ni56 | 188 | 47 | 2 | 1 | ov_SC02_028:0x8015dcb8; ov_SC02_028:0x8015e018 |
|
||||
| ni57 | 188 | 47 | 2 | 1 | ov_SC02_031:0x8015dcb8; ov_SC02_031:0x8015e018 |
|
||||
| ni58 | 188 | 47 | 2 | 1 | ov_SC02_035:0x8015dcb8; ov_SC02_035:0x8015e018 |
|
||||
| ni59 | 188 | 47 | 2 | 1 | ov_SC02_037:0x8015dcb8; ov_SC02_037:0x8015e018 |
|
||||
| ni60 | 188 | 47 | 2 | 1 | ov_SC02_039:0x8015dcb8; ov_SC02_039:0x8015e018 |
|
||||
| ni61 | 188 | 47 | 2 | 1 | ov_SC02_041:0x8015dcb8; ov_SC02_041:0x8015e018 |
|
||||
| ni62 | 188 | 47 | 2 | 1 | ov_SC03_001:0x8015dcb8; ov_SC03_001:0x8015e018 |
|
||||
| ni63 | 188 | 47 | 2 | 1 | ov_SC03_002:0x8015dcb8; ov_SC03_002:0x8015e018 |
|
||||
| ni64 | 188 | 47 | 2 | 1 | ov_SC03_003:0x8015dcb8; ov_SC03_003:0x8015e018 |
|
||||
| ni65 | 188 | 47 | 2 | 1 | ov_SC03_006:0x8015dcb8; ov_SC03_006:0x8015e018 |
|
||||
| ni66 | 188 | 47 | 2 | 1 | ov_SC03_007:0x8015dcb8; ov_SC03_007:0x8015e018 |
|
||||
| ni67 | 188 | 47 | 2 | 1 | ov_SC03_010:0x8015dcb8; ov_SC03_010:0x8015e018 |
|
||||
| ni68 | 188 | 47 | 2 | 1 | ov_SC03_011:0x8015dcb8; ov_SC03_011:0x8015e018 |
|
||||
| ni69 | 188 | 47 | 2 | 1 | ov_SC03_012:0x8015dcb8; ov_SC03_012:0x8015e018 |
|
||||
| ni70 | 188 | 47 | 2 | 1 | ov_SC03_013:0x8015dcb8; ov_SC03_013:0x8015e018 |
|
||||
| ni71 | 188 | 47 | 2 | 1 | ov_SC03_023:0x8015dcb8; ov_SC03_023:0x8015e018 |
|
||||
| ni72 | 188 | 47 | 2 | 1 | ov_SC03_024:0x8015dcb8; ov_SC03_024:0x8015e018 |
|
||||
| ni73 | 188 | 47 | 2 | 1 | ov_SC03_028:0x8015dcb8; ov_SC03_028:0x8015e018 |
|
||||
| ni74 | 188 | 47 | 2 | 1 | ov_SC03_029:0x8015dcb8; ov_SC03_029:0x8015e018 |
|
||||
| ni75 | 188 | 47 | 2 | 1 | ov_SC03_030:0x8015dcb8; ov_SC03_030:0x8015e018 |
|
||||
| ni76 | 188 | 47 | 2 | 1 | ov_SC03_031:0x8015dcb8; ov_SC03_031:0x8015e018 |
|
||||
| ni77 | 188 | 47 | 2 | 1 | ov_SC03_089:0x8015dcb8; ov_SC03_089:0x8015e018 |
|
||||
| ni78 | 188 | 47 | 2 | 1 | ov_SC03_090:0x8015dcb8; ov_SC03_090:0x8015e018 |
|
||||
| ni79 | 188 | 47 | 2 | 1 | ov_SC03_091:0x8015dcb8; ov_SC03_091:0x8015e018 |
|
||||
| ni80 | 188 | 47 | 2 | 1 | ov_SC03_092:0x8015dcb8; ov_SC03_092:0x8015e018 |
|
||||
| ni81 | 188 | 47 | 2 | 1 | ov_SC03_093:0x8015dcb8; ov_SC03_093:0x8015e018 |
|
||||
| ni82 | 188 | 47 | 2 | 1 | ov_SC03_094:0x8015dcb8; ov_SC03_094:0x8015e018 |
|
||||
| ni83 | 188 | 47 | 2 | 1 | ov_SC03_095:0x8015dcb8; ov_SC03_095:0x8015e018 |
|
||||
| ni84 | 188 | 47 | 2 | 1 | ov_SC03_096:0x8015dcb8; ov_SC03_096:0x8015e018 |
|
||||
| ni85 | 188 | 47 | 2 | 1 | ov_SC03_097:0x8015dcb8; ov_SC03_097:0x8015e018 |
|
||||
| ni86 | 188 | 47 | 2 | 1 | ov_SC03_098:0x8015dcb8; ov_SC03_098:0x8015e018 |
|
||||
| ni87 | 188 | 47 | 2 | 1 | ov_SC03_099:0x8015dcb8; ov_SC03_099:0x8015e018 |
|
||||
| ni88 | 188 | 47 | 2 | 1 | ov_SC03_100:0x8015dcb8; ov_SC03_100:0x8015e018 |
|
||||
| ni89 | 188 | 47 | 2 | 1 | ov_SC03_101:0x8015dcb8; ov_SC03_101:0x8015e018 |
|
||||
| ni90 | 188 | 47 | 2 | 1 | ov_SC03_102:0x8015dcb8; ov_SC03_102:0x8015e018 |
|
||||
| ni91 | 188 | 47 | 2 | 1 | ov_SC03_103:0x8015dcb8; ov_SC03_103:0x8015e018 |
|
||||
| ni92 | 188 | 47 | 2 | 1 | ov_SC03_104:0x8015dcb8; ov_SC03_104:0x8015e018 |
|
||||
| ni93 | 188 | 47 | 2 | 1 | ov_SC03_105:0x8015dcb8; ov_SC03_105:0x8015e018 |
|
||||
| ni94 | 188 | 47 | 2 | 1 | ov_SC03_107:0x8015dcb8; ov_SC03_107:0x8015e018 |
|
||||
| ni95 | 188 | 47 | 2 | 1 | ov_SC03_108:0x8015dcb8; ov_SC03_108:0x8015e018 |
|
||||
| ni96 | 188 | 47 | 2 | 1 | ov_SC03_109:0x8015dcb8; ov_SC03_109:0x8015e018 |
|
||||
| ni97 | 188 | 47 | 2 | 1 | ov_SC03_110:0x8015dcb8; ov_SC03_110:0x8015e018 |
|
||||
| ni98 | 188 | 47 | 2 | 1 | ov_SC03_111:0x8015dcb8; ov_SC03_111:0x8015e018 |
|
||||
| ni99 | 188 | 47 | 2 | 1 | ov_SC03_112:0x8015dcb8; ov_SC03_112:0x8015e018 |
|
||||
| ni100 | 188 | 47 | 2 | 1 | ov_SC03_113:0x8015dcb8; ov_SC03_113:0x8015e018 |
|
||||
| ni101 | 188 | 47 | 2 | 1 | ov_SC03_114:0x8015dcb8; ov_SC03_114:0x8015e018 |
|
||||
| ni102 | 188 | 47 | 2 | 1 | ov_SC03_115:0x8015dcb8; ov_SC03_115:0x8015e018 |
|
||||
| ni103 | 188 | 47 | 2 | 1 | ov_SC03_116:0x8015dcb8; ov_SC03_116:0x8015e018 |
|
||||
| ni104 | 188 | 47 | 2 | 1 | ov_SC03_117:0x8015dcb8; ov_SC03_117:0x8015e018 |
|
||||
| ni105 | 188 | 47 | 2 | 1 | ov_SC03_121:0x8015dcb8; ov_SC03_121:0x8015e018 |
|
||||
| ni106 | 188 | 47 | 2 | 1 | ov_SC03_124:0x8015dcb8; ov_SC03_124:0x8015e018 |
|
||||
| ni107 | 188 | 47 | 2 | 1 | ov_SC03_125:0x8015dcb8; ov_SC03_125:0x8015e018 |
|
||||
| ni108 | 188 | 47 | 2 | 1 | ov_SC04_000:0x8015dcb8; ov_SC04_000:0x8015e018 |
|
||||
| ni109 | 188 | 47 | 2 | 1 | ov_SC04_002:0x8015dcb8; ov_SC04_002:0x8015e018 |
|
||||
| ni110 | 188 | 47 | 2 | 1 | ov_SC04_003:0x8015dcb8; ov_SC04_003:0x8015e018 |
|
||||
| ni111 | 188 | 47 | 2 | 1 | ov_SC04_004:0x8015dcb8; ov_SC04_004:0x8015e018 |
|
||||
| ni112 | 188 | 47 | 2 | 1 | ov_SC04_005:0x8015dcb8; ov_SC04_005:0x8015e018 |
|
||||
| ni113 | 188 | 47 | 2 | 1 | ov_SC04_006:0x8015dcb8; ov_SC04_006:0x8015e018 |
|
||||
| ni114 | 188 | 47 | 2 | 1 | ov_SC04_007:0x8015dcb8; ov_SC04_007:0x8015e018 |
|
||||
| ni115 | 188 | 47 | 2 | 1 | ov_SC04_009:0x8015dcb8; ov_SC04_009:0x8015e018 |
|
||||
| ni116 | 188 | 47 | 2 | 1 | ov_SC04_010:0x8015dcb8; ov_SC04_010:0x8015e018 |
|
||||
| ni117 | 188 | 47 | 2 | 1 | ov_SC04_011:0x8015dcb8; ov_SC04_011:0x8015e018 |
|
||||
| ni118 | 188 | 47 | 2 | 1 | ov_SC04_012:0x8015dcb8; ov_SC04_012:0x8015e018 |
|
||||
| ni119 | 188 | 47 | 2 | 1 | ov_SC04_015:0x8015dcb8; ov_SC04_015:0x8015e018 |
|
||||
| ni120 | 188 | 47 | 2 | 1 | ov_SC04_016:0x8015dcb8; ov_SC04_016:0x8015e018 |
|
||||
| ni121 | 188 | 47 | 2 | 1 | ov_SC04_020:0x8015dcb8; ov_SC04_020:0x8015e018 |
|
||||
| ni122 | 188 | 47 | 2 | 1 | ov_SC05_000:0x8015dcb8; ov_SC05_000:0x8015e018 |
|
||||
| ni123 | 188 | 47 | 2 | 1 | ov_SC05_001:0x8015dcb8; ov_SC05_001:0x8015e018 |
|
||||
| ni124 | 188 | 47 | 2 | 1 | ov_SC05_002:0x8015dcb8; ov_SC05_002:0x8015e018 |
|
||||
| ni125 | 188 | 47 | 2 | 1 | ov_SC05_003:0x8015dcb8; ov_SC05_003:0x8015e018 |
|
||||
| ni126 | 188 | 47 | 2 | 1 | ov_SC05_004:0x8015dcb8; ov_SC05_004:0x8015e018 |
|
||||
| ni127 | 188 | 47 | 2 | 1 | ov_SC05_005:0x8015dcb8; ov_SC05_005:0x8015e018 |
|
||||
| ni128 | 188 | 47 | 2 | 1 | ov_SC05_006:0x8015dcb8; ov_SC05_006:0x8015e018 |
|
||||
| ni129 | 188 | 47 | 2 | 1 | ov_SC05_007:0x8015dcb8; ov_SC05_007:0x8015e018 |
|
||||
| ni130 | 188 | 47 | 2 | 1 | ov_SC05_008:0x8015dcb8; ov_SC05_008:0x8015e018 |
|
||||
| ni131 | 188 | 47 | 2 | 1 | ov_SC05_008:0x80180230; ov_SC05_008:0x801805dc |
|
||||
| ni132 | 188 | 47 | 2 | 1 | ov_SC05_010:0x8015dcb8; ov_SC05_010:0x8015e018 |
|
||||
| ni133 | 188 | 47 | 2 | 1 | ov_SC05_011:0x8015dcb8; ov_SC05_011:0x8015e018 |
|
||||
| ni134 | 188 | 47 | 2 | 1 | ov_SC05_017:0x8015dcb8; ov_SC05_017:0x8015e018 |
|
||||
| ni135 | 188 | 47 | 2 | 1 | ov_SC05_018:0x8015dcb8; ov_SC05_018:0x8015e018 |
|
||||
| ni136 | 188 | 47 | 2 | 1 | ov_SC06_000:0x8015dcb8; ov_SC06_000:0x8015e018 |
|
||||
| ni137 | 188 | 47 | 2 | 1 | ov_SC06_006:0x8015dcb8; ov_SC06_006:0x8015e018 |
|
||||
| ni138 | 188 | 47 | 2 | 1 | ov_SC06_008:0x8015dcb8; ov_SC06_008:0x8015e018 |
|
||||
| ni139 | 188 | 47 | 2 | 1 | ov_SC06_010:0x8015dcb8; ov_SC06_010:0x8015e018 |
|
||||
| ni140 | 188 | 47 | 2 | 1 | ov_SC06_011:0x8015dcb8; ov_SC06_011:0x8015e018 |
|
||||
| ni141 | 188 | 47 | 2 | 1 | ov_SC06_013:0x8015dcb8; ov_SC06_013:0x8015e018 |
|
||||
| ni142 | 188 | 47 | 2 | 1 | ov_SC06_014:0x8015dcb8; ov_SC06_014:0x8015e018 |
|
||||
| ni143 | 188 | 47 | 2 | 1 | ov_SC06_015:0x8015dcb8; ov_SC06_015:0x8015e018 |
|
||||
| ni144 | 188 | 47 | 2 | 1 | ov_SC06_016:0x8015dcb8; ov_SC06_016:0x8015e018 |
|
||||
| ni145 | 188 | 47 | 2 | 1 | ov_SC06_018:0x8015dcb8; ov_SC06_018:0x8015e018 |
|
||||
| ni146 | 188 | 47 | 2 | 1 | ov_SC06_020:0x8015dcb8; ov_SC06_020:0x8015e018 |
|
||||
| ni147 | 188 | 47 | 2 | 1 | ov_SC06_022:0x8015dcb8; ov_SC06_022:0x8015e018 |
|
||||
| ni148 | 188 | 47 | 2 | 1 | ov_SC06_024:0x8015dcb8; ov_SC06_024:0x8015e018 |
|
||||
| ni149 | 188 | 47 | 2 | 1 | ov_SC06_025:0x8015dcb8; ov_SC06_025:0x8015e018 |
|
||||
| ni150 | 188 | 47 | 2 | 1 | ov_SC06_027:0x8015dcb8; ov_SC06_027:0x8015e018 |
|
||||
| ni151 | 188 | 47 | 2 | 1 | ov_SC06_029:0x8015dcb8; ov_SC06_029:0x8015e018 |
|
||||
| ni152 | 188 | 47 | 2 | 1 | ov_SC06_030:0x8015dcb8; ov_SC06_030:0x8015e018 |
|
||||
| ni153 | 188 | 47 | 2 | 1 | ov_SC06_032:0x8015dcb8; ov_SC06_032:0x8015e018 |
|
||||
| ni154 | 188 | 47 | 2 | 1 | ov_SC06_033:0x8015dcb8; ov_SC06_033:0x8015e018 |
|
||||
| ni155 | 188 | 47 | 2 | 1 | ov_SC07_000:0x8015dcb8; ov_SC07_000:0x8015e018 |
|
||||
| ni156 | 188 | 47 | 2 | 1 | ov_SC07_001:0x8015dcb8; ov_SC07_001:0x8015e018 |
|
||||
| ni157 | 188 | 47 | 2 | 1 | ov_SC07_002:0x8015dcb8; ov_SC07_002:0x8015e018 |
|
||||
| ni158 | 188 | 47 | 2 | 1 | ov_SC07_006:0x8015dcb8; ov_SC07_006:0x8015e018 |
|
||||
| ni159 | 188 | 47 | 2 | 1 | ov_SC07_007:0x8015dcb8; ov_SC07_007:0x8015e018 |
|
||||
| ni160 | 188 | 47 | 2 | 1 | ov_SC07_008:0x8015dcb8; ov_SC07_008:0x8015e018 |
|
||||
| ni161 | 188 | 47 | 2 | 1 | ov_SC07_009:0x8015dcb8; ov_SC07_009:0x8015e018 |
|
||||
| ni162 | 188 | 47 | 2 | 1 | ov_SC07_010:0x8015dcb8; ov_SC07_010:0x8015e018 |
|
||||
| ni163 | 188 | 47 | 2 | 1 | ov_SC07_011:0x8015dcb8; ov_SC07_011:0x8015e018 |
|
||||
| ni164 | 184 | 23 | 3 | 1 | ov_SC01_001:0x8017fdac; ov_SC01_001:0x801803e0; ov_SC01_001:0x80180e90 |
|
||||
| ni165 | 176 | 44 | 2 | 1 | ov_MAIN_012:0x8015dbd4; ov_MAIN_012:0x8015df34 |
|
||||
| ni166 | 176 | 44 | 2 | 1 | ov_SC01_000:0x8015dbd4; ov_SC01_000:0x8015df34 |
|
||||
| ni167 | 176 | 44 | 2 | 1 | ov_SC01_001:0x8015dbd4; ov_SC01_001:0x8015df34 |
|
||||
| ni168 | 176 | 44 | 2 | 1 | ov_SC01_004:0x8015dbd4; ov_SC01_004:0x8015df34 |
|
||||
| ni169 | 176 | 44 | 2 | 1 | ov_SC01_008:0x8015dbd4; ov_SC01_008:0x8015df34 |
|
||||
| ni170 | 176 | 44 | 2 | 1 | ov_SC01_009:0x8015dbd4; ov_SC01_009:0x8015df34 |
|
||||
| ni171 | 176 | 44 | 2 | 1 | ov_SC01_074:0x8015dbd4; ov_SC01_074:0x8015df34 |
|
||||
| ni172 | 176 | 44 | 2 | 1 | ov_SC01_077:0x8015dbd4; ov_SC01_077:0x8015df34 |
|
||||
| ni173 | 176 | 44 | 2 | 1 | ov_SC01_080:0x8015dbd4; ov_SC01_080:0x8015df34 |
|
||||
| ni174 | 176 | 44 | 2 | 1 | ov_SC01_084:0x8015dbd4; ov_SC01_084:0x8015df34 |
|
||||
| ni175 | 176 | 44 | 2 | 1 | ov_SC02_004:0x8015dbd4; ov_SC02_004:0x8015df34 |
|
||||
| ni176 | 176 | 44 | 2 | 1 | ov_SC02_005:0x8015dbd4; ov_SC02_005:0x8015df34 |
|
||||
| ni177 | 176 | 44 | 2 | 1 | ov_SC02_011:0x8015dbd4; ov_SC02_011:0x8015df34 |
|
||||
| ni178 | 176 | 44 | 2 | 1 | ov_SC02_015:0x8015dbd4; ov_SC02_015:0x8015df34 |
|
||||
| ni179 | 176 | 44 | 2 | 1 | ov_SC02_016:0x8015dbd4; ov_SC02_016:0x8015df34 |
|
||||
| ni180 | 176 | 44 | 2 | 1 | ov_SC02_017:0x8015dbd4; ov_SC02_017:0x8015df34 |
|
||||
| ni181 | 176 | 44 | 2 | 1 | ov_SC02_021:0x8015dbd4; ov_SC02_021:0x8015df34 |
|
||||
| ni182 | 176 | 44 | 2 | 1 | ov_SC02_026:0x8015dbd4; ov_SC02_026:0x8015df34 |
|
||||
| ni183 | 176 | 44 | 2 | 1 | ov_SC02_027:0x8015dbd4; ov_SC02_027:0x8015df34 |
|
||||
| ni184 | 176 | 44 | 2 | 1 | ov_SC02_028:0x8015dbd4; ov_SC02_028:0x8015df34 |
|
||||
| ni185 | 176 | 44 | 2 | 1 | ov_SC02_031:0x8015dbd4; ov_SC02_031:0x8015df34 |
|
||||
| ni186 | 176 | 44 | 2 | 1 | ov_SC02_035:0x8015dbd4; ov_SC02_035:0x8015df34 |
|
||||
| ni187 | 176 | 44 | 2 | 1 | ov_SC02_037:0x8015dbd4; ov_SC02_037:0x8015df34 |
|
||||
| ni188 | 176 | 44 | 2 | 1 | ov_SC02_039:0x8015dbd4; ov_SC02_039:0x8015df34 |
|
||||
| ni189 | 176 | 44 | 2 | 1 | ov_SC02_041:0x8015dbd4; ov_SC02_041:0x8015df34 |
|
||||
| ni190 | 176 | 44 | 2 | 1 | ov_SC03_001:0x8015dbd4; ov_SC03_001:0x8015df34 |
|
||||
| ni191 | 176 | 44 | 2 | 1 | ov_SC03_002:0x8015dbd4; ov_SC03_002:0x8015df34 |
|
||||
| ni192 | 176 | 44 | 2 | 1 | ov_SC03_003:0x8015dbd4; ov_SC03_003:0x8015df34 |
|
||||
| ni193 | 176 | 44 | 2 | 1 | ov_SC03_006:0x8015dbd4; ov_SC03_006:0x8015df34 |
|
||||
| ni194 | 176 | 44 | 2 | 1 | ov_SC03_007:0x8015dbd4; ov_SC03_007:0x8015df34 |
|
||||
| ni195 | 176 | 44 | 2 | 1 | ov_SC03_010:0x8015dbd4; ov_SC03_010:0x8015df34 |
|
||||
| ni196 | 176 | 44 | 2 | 1 | ov_SC03_011:0x8015dbd4; ov_SC03_011:0x8015df34 |
|
||||
| ni197 | 176 | 44 | 2 | 1 | ov_SC03_012:0x8015dbd4; ov_SC03_012:0x8015df34 |
|
||||
| ni198 | 176 | 44 | 2 | 1 | ov_SC03_013:0x8015dbd4; ov_SC03_013:0x8015df34 |
|
||||
| ni199 | 176 | 44 | 2 | 1 | ov_SC03_023:0x8015dbd4; ov_SC03_023:0x8015df34 |
|
||||
|
||||
|
||||
+53
-78
@@ -1,88 +1,63 @@
|
||||
# EXE-wide duplicate function groups (generated by tools/dup_report.py)
|
||||
# sig: .run/sig.SLUS_007.26.jsonl sha1=46c735b8d1f514a95f8a2ba061cccf291f45a631 (2205 funcs, 1393 with nins>=8)
|
||||
# sig: .run/sig.main.jsonl sha1=8bcb8eb2f6e3dc4562b39a6be9a0721bf0215fb3 (809 funcs, 718 with nins>=8)
|
||||
# Match the representative once -> share the body to the duplicates (h_exact = guaranteed
|
||||
# byte-match; h_norm = same source, re-point any single address constant).
|
||||
|
||||
## h_exact (byte-identical) — nins>=8: 14 groups, 15 redundant (collapsible)
|
||||
## h_exact (byte-identical) — nins>=8: 8 groups, 8 redundant (collapsible)
|
||||
| score | nins | count | representative | duplicates |
|
||||
|---|---|---|---|---|
|
||||
| 66 | 33 | 2 | FUN_8001c044 (0x8001c044) | 0x8001c0c8 |
|
||||
| 33 | 11 | 3 | SYS_OBJ_538 (0x80043948) | 0x80060904 0x80060bc0 |
|
||||
| 28 | 14 | 2 | FUN_80014cf8 (0x80014cf8) | 0x80014dec |
|
||||
| 22 | 11 | 2 | FUN_80013f3c (0x80013f3c) | 0x80017d98 |
|
||||
| 22 | 11 | 2 | FUN_80014c28 (0x80014c28) | 0x80014dc0 |
|
||||
| 20 | 10 | 2 | TOC_OBJ_220 (0x800432d8) | 0x80045918 |
|
||||
| 20 | 10 | 2 | def_cbready (0x800433c0) | 0x800433e8 |
|
||||
| 18 | 9 | 2 | FUN_80014070 (0x80014070) | 0x80015a2c |
|
||||
| 18 | 9 | 2 | FUN_80014094 (0x80014094) | 0x80015a50 |
|
||||
| 18 | 9 | 2 | FUN_8001599c (0x8001599c) | 0x800159c0 |
|
||||
| 18 | 9 | 2 | FUN_80037004 (0x80037004) | 0x80037334 |
|
||||
| 18 | 9 | 2 | VS_VTBP_OBJ_13C (0x80042290) | 0x800459c4 |
|
||||
| 18 | 9 | 2 | ISO9660_OBJ_2A8 (0x8004561c) | 0x8005b660 |
|
||||
| 16 | 8 | 2 | S_M_M_OBJ_2A8 (0x80042134) | 0x8005ba70 |
|
||||
| 66 | 33 | 2 | func_8001c044 (0x8001c044) | 0x8001c0c8 |
|
||||
| 28 | 14 | 2 | func_80014cf8 (0x80014cf8) | 0x80014dec |
|
||||
| 22 | 11 | 2 | func_80013f3c (0x80013f3c) | 0x80017d98 |
|
||||
| 22 | 11 | 2 | func_80014c28 (0x80014c28) | 0x80014dc0 |
|
||||
| 18 | 9 | 2 | func_80014070 (0x80014070) | 0x80015a2c |
|
||||
| 18 | 9 | 2 | func_80014094 (0x80014094) | 0x80015a50 |
|
||||
| 18 | 9 | 2 | func_8001599c (0x8001599c) | 0x800159c0 |
|
||||
| 18 | 9 | 2 | func_80037004 (0x80037004) | 0x80037334 |
|
||||
|
||||
## h_norm (structural) — nins>=8: 61 groups, 91 redundant (collapsible)
|
||||
## h_norm (structural) — nins>=8: 42 groups, 68 redundant (collapsible)
|
||||
| score | nins | count | representative | duplicates |
|
||||
|---|---|---|---|---|
|
||||
| 375 | 125 | 3 | GS_133_OBJ_30 (0x80054544) | 0x80054808 0x80054ae4 |
|
||||
| 154 | 77 | 2 | _card_read_data (0x800604c4) | 0x800606d4 |
|
||||
| 116 | 58 | 2 | FUN_8001382c (0x8001382c) | 0x800139c8 |
|
||||
| 114 | 57 | 2 | FUN_800134fc (0x800134fc) | 0x80013694 |
|
||||
| 114 | 57 | 2 | FUN_80013b64 (0x80013b64) | 0x80013cfc |
|
||||
| 98 | 49 | 2 | FUN_800167f0 (0x800167f0) | 0x80016978 |
|
||||
| 80 | 8 | 10 | FUN_80014128 (0x80014128) | 0x80014148 0x80016a5c 0x80017274 0x800173bc 0x800174fc 0x8001a9d8 0x8003d630 0x8005d0d8 0x8005d118 |
|
||||
| 76 | 19 | 4 | FUN_8002a1b4 (0x8002a1b4) | 0x8002a400 0x8002a670 0x8002a8e0 |
|
||||
| 74 | 37 | 2 | FUN_80011818 (0x80011818) | 0x80011b7c |
|
||||
| 72 | 36 | 2 | FUN_800623a4 (0x800623a4) | 0x80062434 |
|
||||
| 70 | 35 | 2 | LIBMCRD_OBJ_DD0 (0x80060a38) | 0x80060cf4 |
|
||||
| 64 | 8 | 8 | FUN_80027bf0 (0x80027bf0) | 0x8002eeb8 0x8002fdc8 0x80046610 0x80053308 0x8005d0f8 0x8005fc98 0x80061a80 |
|
||||
| 64 | 32 | 2 | FUN_80031e94 (0x80031e94) | 0x80031fc8 |
|
||||
| 62 | 31 | 2 | FUN_80029b4c (0x80029b4c) | 0x80029bc8 |
|
||||
| 56 | 28 | 2 | VM_NOWON_OBJ_1C0 (0x80040af8) | 0x80040b68 |
|
||||
| 54 | 27 | 2 | FUN_8002eff8 (0x8002eff8) | 0x8002f064 |
|
||||
| 52 | 13 | 4 | FUN_8002a200 (0x8002a200) | 0x8002a44c 0x8002a6bc 0x8002a92c |
|
||||
| 50 | 10 | 5 | FUN_80013200 (0x80013200) | 0x80013294 0x80013328 0x800133bc 0x80013450 |
|
||||
| 50 | 25 | 2 | RotMatrixX (0x80049f3c) | 0x8004a27c |
|
||||
| 48 | 24 | 2 | FUN_80012e0c (0x80012e0c) | 0x80012fc8 |
|
||||
| 44 | 22 | 2 | FUN_8001534c (0x8001534c) | 0x800153cc |
|
||||
| 42 | 21 | 2 | FUN_80012b04 (0x80012b04) | 0x80012cb8 |
|
||||
| 40 | 20 | 2 | OBJT2_OBJ_69C (0x80057730) | 0x800577d4 |
|
||||
| 38 | 19 | 2 | FUN_80012c6c (0x80012c6c) | 0x800130d0 |
|
||||
| 38 | 19 | 2 | S_M_UTIL_OBJ_2C (0x8003b37c) | 0x8003b408 |
|
||||
| 36 | 18 | 2 | PRESET2_OBJ_550 (0x80056290) | 0x80056324 |
|
||||
| 33 | 11 | 3 | SYS_OBJ_538 (0x80043948) | 0x80060904 0x80060bc0 |
|
||||
| 32 | 8 | 4 | FUN_80016a3c (0x80016a3c) | 0x80017254 0x8001739c 0x800174dc |
|
||||
| 32 | 16 | 2 | SYS_OBJ_1964 (0x8005ab98) | 0x8005ac64 |
|
||||
| 32 | 16 | 2 | _card_read_file (0x80060930) | 0x80060bec |
|
||||
| 32 | 16 | 2 | LIBMCRD_OBJ_D2C (0x80060994) | 0x80060c50 |
|
||||
| 30 | 10 | 3 | FUN_8002ee90 (0x8002ee90) | 0x8002efd0 0x80062360 |
|
||||
| 28 | 14 | 2 | FUN_80014cf8 (0x80014cf8) | 0x80014dec |
|
||||
| 28 | 14 | 2 | FUN_800167b8 (0x800167b8) | 0x80016940 |
|
||||
| 28 | 14 | 2 | FUN_80017df8 (0x80017df8) | 0x80017e30 |
|
||||
| 28 | 14 | 2 | PRESET2_OBJ_AF0 (0x80056830) | 0x800568a8 |
|
||||
| 28 | 14 | 2 | SYS_OBJ_1FF4 (0x8005b228) | 0x8005b460 |
|
||||
| 27 | 9 | 3 | FUN_80016eb0 (0x80016eb0) | 0x800176f0 0x800178c8 |
|
||||
| 27 | 9 | 3 | FUN_80016ed4 (0x80016ed4) | 0x80017714 0x800178ec |
|
||||
| 26 | 13 | 2 | SYS_OBJ_19A4 (0x8005abd8) | 0x8005aca4 |
|
||||
| 26 | 13 | 2 | LIBMCRD_OBJ_D9C (0x80060a04) | 0x80060cc0 |
|
||||
| 24 | 12 | 2 | FUN_8001096c (0x8001096c) | 0x80011320 |
|
||||
| 24 | 8 | 3 | FUN_80016ef8 (0x80016ef8) | 0x80017758 0x80017910 |
|
||||
| 24 | 8 | 3 | SsUtReverbOff (0x800285ac) | 0x8003a424 0x8003d96c |
|
||||
| 24 | 12 | 2 | LIBMCRD_OBJ_D6C (0x800609d4) | 0x80060c90 |
|
||||
| 22 | 11 | 2 | FUN_80013f3c (0x80013f3c) | 0x80017d98 |
|
||||
| 22 | 11 | 2 | PRESET2_OBJ_4FC (0x8005623c) | 0x8005636c |
|
||||
| 22 | 11 | 2 | PRESET2_OBJ_AA8 (0x800567e8) | 0x800568e0 |
|
||||
| 22 | 11 | 2 | OBJT2_OBJ_640 (0x800576d4) | 0x80057824 |
|
||||
| 20 | 10 | 2 | VM_NO1_OBJ_264 (0x80040608) | 0x80040bd8 |
|
||||
| 20 | 10 | 2 | TOC_OBJ_220 (0x800432d8) | 0x80045918 |
|
||||
| 20 | 10 | 2 | def_cbready (0x800433c0) | 0x800433e8 |
|
||||
| 18 | 9 | 2 | FUN_80014070 (0x80014070) | 0x80015a2c |
|
||||
| 18 | 9 | 2 | FUN_80014094 (0x80014094) | 0x80015a50 |
|
||||
| 18 | 9 | 2 | FUN_8001599c (0x8001599c) | 0x800159c0 |
|
||||
| 18 | 9 | 2 | FUN_8001cfb8 (0x8001cfb8) | 0x8001d050 |
|
||||
| 18 | 9 | 2 | FUN_80037004 (0x80037004) | 0x80037334 |
|
||||
| 18 | 9 | 2 | VS_VTBP_OBJ_13C (0x80042290) | 0x800459c4 |
|
||||
| 18 | 9 | 2 | ISO9660_OBJ_2A8 (0x8004561c) | 0x8005b660 |
|
||||
| 18 | 9 | 2 | LIBMCRD_OBJ_D08 (0x80060970) | 0x80060c2c |
|
||||
| 16 | 8 | 2 | S_M_M_OBJ_2A8 (0x80042134) | 0x8005ba70 |
|
||||
| 206 | 103 | 2 | func_8001382c (0x8001382c) | 0x800139c8 |
|
||||
| 204 | 102 | 2 | func_800134fc (0x800134fc) | 0x80013694 |
|
||||
| 204 | 102 | 2 | func_80013b64 (0x80013b64) | 0x80013cfc |
|
||||
| 172 | 43 | 4 | func_8002a108 (0x8002a108) | 0x8002a354 0x8002a5c4 0x8002a834 |
|
||||
| 98 | 49 | 2 | func_800145ec (0x800145ec) | 0x800146b0 |
|
||||
| 98 | 49 | 2 | func_800167f0 (0x800167f0) | 0x80016978 |
|
||||
| 88 | 8 | 11 | func_80014128 (0x80014128) | 0x80014148 0x80016a5c 0x80017274 0x800173bc 0x800174fc 0x8001a9d8 0x80027bf0 0x8002eeb8 0x8002fdc8 0x8003d630 |
|
||||
| 76 | 19 | 4 | func_8002a1b4 (0x8002a1b4) | 0x8002a400 0x8002a670 0x8002a8e0 |
|
||||
| 66 | 33 | 2 | func_8001c044 (0x8001c044) | 0x8001c0c8 |
|
||||
| 64 | 32 | 2 | func_80031e94 (0x80031e94) | 0x80031fc8 |
|
||||
| 62 | 31 | 2 | func_80029b4c (0x80029b4c) | 0x80029bc8 |
|
||||
| 60 | 30 | 2 | func_800110cc (0x800110cc) | 0x80011144 |
|
||||
| 56 | 14 | 4 | func_8002a234 (0x8002a234) | 0x8002a480 0x8002a6f0 0x8002a960 |
|
||||
| 54 | 27 | 2 | func_8002eff8 (0x8002eff8) | 0x8002f064 |
|
||||
| 52 | 13 | 4 | func_8002a200 (0x8002a200) | 0x8002a44c 0x8002a6bc 0x8002a92c |
|
||||
| 50 | 10 | 5 | func_80013200 (0x80013200) | 0x80013294 0x80013328 0x800133bc 0x80013450 |
|
||||
| 48 | 24 | 2 | func_80012e0c (0x80012e0c) | 0x80012fc8 |
|
||||
| 44 | 22 | 2 | func_8001534c (0x8001534c) | 0x800153cc |
|
||||
| 42 | 21 | 2 | func_80012b04 (0x80012b04) | 0x80012cb8 |
|
||||
| 38 | 19 | 2 | func_80012c6c (0x80012c6c) | 0x800130d0 |
|
||||
| 36 | 12 | 3 | func_80010b10 (0x80010b10) | 0x80011350 0x80011df4 |
|
||||
| 32 | 8 | 4 | func_80016a3c (0x80016a3c) | 0x80017254 0x8001739c 0x800174dc |
|
||||
| 28 | 14 | 2 | func_80014cf8 (0x80014cf8) | 0x80014dec |
|
||||
| 28 | 14 | 2 | func_800167b8 (0x800167b8) | 0x80016940 |
|
||||
| 28 | 14 | 2 | func_80017df8 (0x80017df8) | 0x80017e30 |
|
||||
| 27 | 9 | 3 | func_80016eb0 (0x80016eb0) | 0x800176f0 0x800178c8 |
|
||||
| 27 | 9 | 3 | func_80016ed4 (0x80016ed4) | 0x80017714 0x800178ec |
|
||||
| 24 | 12 | 2 | func_8001096c (0x8001096c) | 0x80011320 |
|
||||
| 24 | 12 | 2 | func_80010ae0 (0x80010ae0) | 0x80011e84 |
|
||||
| 24 | 8 | 3 | func_80016ef8 (0x80016ef8) | 0x80017758 0x80017910 |
|
||||
| 24 | 12 | 2 | func_8001b23c (0x8001b23c) | 0x8001b394 |
|
||||
| 22 | 11 | 2 | func_80013f3c (0x80013f3c) | 0x80017d98 |
|
||||
| 22 | 11 | 2 | func_80014c28 (0x80014c28) | 0x80014dc0 |
|
||||
| 20 | 10 | 2 | func_8002ee90 (0x8002ee90) | 0x8002efd0 |
|
||||
| 20 | 10 | 2 | func_8002f620 (0x8002f620) | 0x8002fae0 |
|
||||
| 18 | 9 | 2 | func_80014070 (0x80014070) | 0x80015a2c |
|
||||
| 18 | 9 | 2 | func_80014094 (0x80014094) | 0x80015a50 |
|
||||
| 18 | 9 | 2 | func_8001599c (0x8001599c) | 0x800159c0 |
|
||||
| 18 | 9 | 2 | func_8001cfb8 (0x8001cfb8) | 0x8001d050 |
|
||||
| 18 | 9 | 2 | func_80037004 (0x80037004) | 0x80037334 |
|
||||
| 16 | 8 | 2 | func_8001bfb0 (0x8001bfb0) | 0x8002955c |
|
||||
| 16 | 8 | 2 | func_800285ac (0x800285ac) | 0x8003a424 |
|
||||
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
|
||||
# THREE progress metrics (all matter — see the labels):
|
||||
FLEET fn-count byte-ident: 363214 / 363214 = 100.00% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay)
|
||||
FLEET instr-weighted : 13488497 / 13488497 = 100.0% (shipped .text across main + resident + 216 overlays; the decomp.dev-DISPLAY number)
|
||||
FLEET distinct-code(uniq): 5816589 / 5816589 = 100.0% (90984/90984 unique fns; the DISTINCT-RE number)
|
||||
MAIN game-code weighted : 41534 / 41534 = 100.0% (INCLUDED in the fleet numbers above since 2026-07-22 — roadmap §1 metrics contract; LINKED-excluding Ghidra sig dated 2026-08-05; boundaries INDEPENDENTLY VERIFIED since P31 S77 — `make sig-main-oracle` + `make audit-corpus`: 0 phantom, 0 truncated, 1 explained pad-tail)
|
||||
FLEET instr-weighted : 13492113 / 13492113 = 100.0% (shipped .text across main + resident + 216 overlays; the decomp.dev-DISPLAY number)
|
||||
FLEET distinct-code(uniq): 5820205 / 5820205 = 100.0% (90984/90984 unique fns; the DISTINCT-RE number)
|
||||
MAIN game-code weighted : 45150 / 45150 = 100.0% (INCLUDED in the fleet numbers above since 2026-07-22 — roadmap §1 metrics contract; build-derived sig (make sig-main) dated 2026-09-06; boundaries INDEPENDENTLY VERIFIED since P31 S77 — `make sig-main-oracle` + `make audit-corpus`: 0 phantom, 0 truncated, 0 pad-tail)
|
||||
(fleet EXCLUDING main, for continuity with pre-2026-07-22 readings: 13446963 / 13446963 = 100.0%)
|
||||
|
||||
FLEET REAL substantive : 360737 (of which dedup-shared 255632 via 2220 groups / 255708 instances)
|
||||
|
||||
+47
-17
@@ -44,9 +44,9 @@ R20's new home = the Ghidra text export (`config/ghidra/*.jsonl`) + `ghidra_rebu
|
||||
one-time snapshot, `CLAUDE.md` gains "never `git clean -x`" (R20 amendment proposed at the PhaseEnd).
|
||||
|
||||
## Tasks (strict order; one commit per task after this file is updated; harness task list = the same 41 items, R28)
|
||||
- [ ] **A1** Governance commit (R65–R73 in DIGEST §3; this file; the harness list) — xHigh
|
||||
- [ ] **A2** Reporting-instrument fixes (pad-tail literal → derived; backlog LINKED-aware prune; `sig-main` ELF-seeded +
|
||||
`progress.py` loud-fail) — xHigh, R39 controls
|
||||
- [x] **A1** Governance commit (R65–R73 in DIGEST §3; this file; the harness list) — xHigh — `commit:4012`
|
||||
- [x] **A2** Reporting-instrument fixes (pad-tail literal → derived; backlog LINKED-aware prune; `sig-main` build-derived +
|
||||
`progress.py` loud-fail) — xHigh, R39 controls — see Log 2026-09-06 A2
|
||||
- [ ] **A3** `NO_SDK` knob + `make sdk-dual` (+ tools-health wiring, `[skip]` without SDK dirs) — Max
|
||||
- [ ] **A4** `tools/family_hseq.py` regen — Low
|
||||
- [ ] **B1** `make disc-extract` (extract.py `--expect-manifest` / `--allow-missing-audio`; check-env; `.gitignore`
|
||||
@@ -96,20 +96,38 @@ Mid-phase rules check after every 4 completed tasks (P6). Commit banked artifact
|
||||
(every blob on every ref; the Ghidra DB proven to embed the EXE bytes under the page XOR mask; 28/28 RAM dumps carry the
|
||||
EXE's code; no secrets in tree, history diffs or the 1.27 GB transcript archive); Drew's decisions 1–11 (above); three
|
||||
read-only exploration agents + three design agents; the plan approved via plan mode. No repo change before A1.
|
||||
- **2026-09-06 (S86) — A1** `commit:4012`: R65–R73 appended to DIGEST §3; this file opened with the plan verbatim; 41 harness tasks.
|
||||
- **2026-09-06 (S86) — A2 (reporting instruments).** `make sig-main` REWRITTEN: `tools/main_seed_ends.py` derives main's
|
||||
game-code function boundaries from the build (link-map `.text` sections × each object's `nm` symbols; tiling asserted) and
|
||||
`sig_image` hashes the original EXE bytes at them → `.run/sig.main.jsonl` (809 fns / 45,150 ins); wired into `tools-health`
|
||||
and `report BINARY=main`; `progress.py` prefers it, falls back to the legacy Ghidra sig, and EXITS 1 with no sig (control:
|
||||
both hidden → rc=1 + the message); the digest's oracle clause is derived live (`main_oracle_line`: "0 phantom, 0 truncated,
|
||||
0 pad-tail"); `backlog.linked_closed` retires main addresses inside LINKED ranges (controls 4/4; `backlog prune: 1 rows ->
|
||||
0`; `docs/backlog.md` 0 open); `dup_report` main sig → `.run/sig.main.jsonl`. **Measured correction (R14/R41):** the derived
|
||||
sig tiles the 15 game-code objects' text EXACTLY (45,150 words, no overlaps, never shorter than Ghidra's), while the Ghidra
|
||||
sig covered 41,522 words and left **3,628 words of real game code owned by no function** (switch tails after unresolved
|
||||
jump tables, 52 two-to-four-ins thunks, and `SaveLoadRoutine` = the `case 0:` body inside `func_8002b0b4`) — so **MAIN
|
||||
game-code weighted is 45,150 / 45,150**, not 41,534 (P31 S79's +22 was one instance of this class); fleet instr
|
||||
13,488,497 → **13,492,113**, distinct 5,816,589 → **5,820,205**, all still 100%. `make report BINARY=main` EXIT=0
|
||||
(`.run/P33/a2_report.log`: lint OK, dedup-check 2220/0); `make audit-digest` OK; `docs/duplicates*.md` regenerated
|
||||
(main's table now game-code-only). SETUP §6.8 + a P33 A2 section (R21).
|
||||
|
||||
## 🛑 SESSION CHECKPOINT — PHASE 33 OPEN, GATE 1 APPROVED; NEXT = A1 commit, then A2 (2026-09-06, written by session bd19e14a "S86" at gate 1; SUPERSEDES nothing — first block of the phase)
|
||||
## 🛑 SESSION CHECKPOINT — A1 ✓ A2 ✓; NEXT = A3 (the `NO_SDK` knob + `make sdk-dual`, Max) (2026-09-06, written by session bd19e14a "S86"; SUPERSEDES the gate-1 block)
|
||||
|
||||
### 0. How to use this block
|
||||
You are a FRESH SESSION that has read `PROJECT_CONTEXT.md`, `phase-ends/DIGEST.md`, `PhaseEnd_Phase30/31/32.md` and this file,
|
||||
and nothing else (R64). Replay this block verbatim, state phase / done / NEXT / effort, list the rules from the digest
|
||||
(R1–R73), then WAIT for Drew. **NEXT = task A1 if its commit is not yet at HEAD (`git log -1 --format=%s` should read
|
||||
`docs(phase-33): A1 …`); otherwise A2.** Effort for A1/A2: xHigh-class (Max, the session default, is fine).
|
||||
(R1–R73), then WAIT for Drew. **NEXT = A3** (`NO_SDK` knob + `make sdk-dual`; Max — it touches main's link recipe, a wrong
|
||||
knob is a false green). If `git log -1 --format=%s` does not start with `feat(phase-33): A2`, A2's commit did not land: re-run
|
||||
its controls from the Log entry before committing.
|
||||
|
||||
### 1. Where we are
|
||||
**Phase 33 — 100% verification + the public flip + Gen2 exit.** Gate 1 approved 2026-09-06 (plan mode, Max). R65–R73 ratified at
|
||||
gate 1 (DIGEST §3). Tasks done: NONE yet (A1 is the first commit of the phase). The approved plan is VERBATIM at the end of this
|
||||
file — read its Blocks A–G for every task's files, commands and verification; the "Execution order and why" section is the
|
||||
sequence; the "Honest scale" table is the budget (≈17–21 sessions; the flip precedes the writing so later items can be cut).
|
||||
gate 1 (DIGEST §3). **Done: A1 (`commit:4012`), A2 (see the Log — the corrected main denominator 45,150 is now the published
|
||||
number; `.run/sig.main.jsonl` is the sig main is weighed by; `tools/main_seed_ends.py` is new).** The approved plan is VERBATIM
|
||||
at the end of this file — read its Blocks A–G for every task's files, commands and verification; the "Execution order and
|
||||
why" section is the sequence; the "Honest scale" table is the budget (≈17–21 sessions; the flip precedes the writing so later
|
||||
items can be cut). Harness tasks: #1 A1 done, #2 A2 done, #3 A3 next … #41 G2.
|
||||
|
||||
### 2. Facts measured this session that every task depends on (do not re-derive; verify if in doubt, R14)
|
||||
- **History:** `main` = 4,011 commits (HEAD `commit:4011`); `git rev-list --all` = 4,282 because the `S76-pre-scrub-backup` tag
|
||||
@@ -167,16 +185,28 @@ sequence; the "Honest scale" table is the budget (≈17–21 sessions; the flip
|
||||
`ign_branch_targets, objdump_command` after our pin and its MIPS symbol wildcard is `"." in field` (`scorer.py:66-67`).
|
||||
|
||||
### 3. NEXT — in order
|
||||
0. **Preflight:** `git status --short | grep -v ghidra/` (empty) · `git log -1 --format='%h %s'` · `df -h ~` (13 GB free) ·
|
||||
`.venv/bin/python -c 'import splat'`.
|
||||
1. **A1** (if not committed): `git add phase-ends/DIGEST.md phase-ends/CURRENT_PHASE.md && git commit -m "docs(phase-33): A1
|
||||
governance — R65–R73 ratified at gate 1 (DIGEST §3), CURRENT_PHASE.md opened with the approved plan + checkpoint"`.
|
||||
2. **A2** per the plan's Block A (each fix with its known-true control; commit "feat(phase-33): A2 …").
|
||||
3. Then A3 → A4 → B1 … in the task order above. After every task: tick the box, add a Log line, refresh this checkpoint
|
||||
block (the 🛑 block is the ONLY in-phase context the next session inherits), commit.
|
||||
0. **Preflight:** `git status --short | grep -v ghidra/` (empty) · `git log -1 --format='%h %s'` · `df -h ~` (≈13 GB free) ·
|
||||
`.venv/bin/python -c 'import splat'` · `ls build/us/SLUS_007.26.map` (main is built; `make check BINARY=main` if not).
|
||||
1. **A3** per the plan's Block A: `NO_SDK ?=` knob in the Makefile; the 11 `psyq_integrate` calls and the `-T` externals
|
||||
fragments skipped when set; `sdk-dual` target (refuses without every SDK ELF dir — they exist on this machine:
|
||||
`.run/obj40/{libcd,libetc,libgpu,libmcrd,libc2,libgte,libgs_used,snd_used}`, `.run/obj42/{apicard_used,libapi42,libpad421}`
|
||||
— check with `ls`); runs `extract BINARY=main` between legs; asserts the WITH map contains `build/psyq/libcd/` and the NO-SDK
|
||||
map contains `build/src/libcd1.o` and no `build/psyq/`; both legs == `config/check.us.sha`; add to `tools-health` after
|
||||
`sig-main` with a `[skip]` when no SDK dirs exist. Gotcha: psyq_integrate rewrites `build/us/SLUS_007.26.ld` in place, and
|
||||
`make extract BINARY=main` regenerates it and deletes main's objects (Makefile:706-712) — that is why the legs are separated
|
||||
by an extract. After the NO-SDK leg, run `make check BINARY=main` once more WITHOUT `NO_SDK` so the tree's main build is
|
||||
the WITH-SDK one again (the map is what `sig-main` reads; either leg gives the same game-code seeds). Commit
|
||||
"feat(phase-33): A3 …" with a Log line + this block refreshed.
|
||||
2. **A4** `.venv/bin/python tools/family_hseq.py` (clears the audit-binaries `[warn]`), commit. Then **B1** (Max).
|
||||
3. After every task: tick the box, add a Log line, refresh this checkpoint block (the 🛑 block is the ONLY in-phase context
|
||||
the next session inherits), commit. Mid-phase rules check after A4 (4 tasks done).
|
||||
|
||||
### 4. Files this session touched
|
||||
`phase-ends/DIGEST.md` (R65–R73 appended to §3), `phase-ends/CURRENT_PHASE.md` (this file), `.run/public_audit/` (scratch).
|
||||
A1: `phase-ends/DIGEST.md`, `phase-ends/CURRENT_PHASE.md`. A2: `tools/main_seed_ends.py` (new), `Makefile` (`sig-main`
|
||||
rewritten; `tools-health` + `report` wiring), `tools/progress.py` (sig selection + SystemExit + `main_oracle_line` + the MAIN
|
||||
header line), `tools/backlog.py` (`linked_closed`), `tools/dup_report.py` (main sig path), `docs/SETUP.md` (§6.8 + P33 A2
|
||||
section), regenerated `docs/progress.fleet.md`, `docs/duplicates.md`, `docs/duplicates.cross.md`, `docs/backlog.md`,
|
||||
`.run/backlog.jsonl`. Scratch: `.run/public_audit/` (the history inventory), `.run/P33/a2_report.log`.
|
||||
The plan file: `~/.claude/plans/max-effort-set-plan-twinkling-moonbeam.md` (copied below).
|
||||
|
||||
---
|
||||
|
||||
+25
-1
@@ -156,11 +156,33 @@ def _open_anywhere(nm):
|
||||
return key in _ANYWHERE_CACHE
|
||||
|
||||
|
||||
_LINKED_RANGES = None
|
||||
|
||||
|
||||
def linked_closed(binary, addr):
|
||||
"""True iff `addr` lies inside one of main's LINKED PsyQ subsegs (P33 A2, R33 — derived from the
|
||||
Makefile's psyq_integrate stub lists + the splat yaml, exactly as progress.py weighs main).
|
||||
|
||||
Such a function is byte-identical by LINK (a Sony object, or its INCLUDE_ASM fallback tile on a
|
||||
machine without the SDK) — it is not decomp work, and corpus.stubs('main') still lists its
|
||||
INCLUDE_ASM stub, so the "no longer an open stub" test alone can never retire it. That is how
|
||||
the legacy row func_80062144 (inside apicard5, S70) survived every prune to the P32 close as the
|
||||
tree's only "open near-miss" at 100%."""
|
||||
global _LINKED_RANGES
|
||||
if binary != "main" or addr is None:
|
||||
return False
|
||||
if _LINKED_RANGES is None:
|
||||
import progress
|
||||
_LINKED_RANGES = progress._main_linked_ranges()
|
||||
return any(lo <= addr < hi for lo, hi in _LINKED_RANGES)
|
||||
|
||||
|
||||
def load_best():
|
||||
"""Best (lowest closeness, latest ts) record per addr, restricted to fns still OPEN in their OWN
|
||||
binary (rec['binary']; legacy records default ov_SC01_077). Fleet-aware so a 077-matched-but-
|
||||
stuck-local fn surfaces via its overlay record — the grinder must SEE it to grind it (P9 honesty:
|
||||
a fn banked in its own binary since logged is dropped)."""
|
||||
a fn banked in its own binary since logged is dropped; a fn inside a LINKED PsyQ subseg is not
|
||||
work at all and is dropped too — linked_closed, P33 A2)."""
|
||||
if not os.path.exists(JSONL):
|
||||
return []
|
||||
_STUB_CACHE.clear()
|
||||
@@ -172,6 +194,8 @@ def load_best():
|
||||
r = json.loads(line)
|
||||
nm = r.get("name")
|
||||
binary = r.get("binary") or _binary_of(r) or "ov_SC01_077"
|
||||
if linked_closed(binary, addr_of(r)):
|
||||
continue # a Sony object — byte-identical by link, not work
|
||||
# banked in ITS binary since logged -> drop (P9). Hex-case-canonical on BOTH sides (T0d):
|
||||
# corpus-derived names are upper-hex; a lower-hex record name must not silently drop (R32).
|
||||
if nm and nm.upper().replace("FUNC_", "func_") not in _open_stubs(binary):
|
||||
|
||||
+1
-1
@@ -24,7 +24,7 @@ ROOT = pathlib.Path(__file__).resolve().parent.parent
|
||||
# here, so a new overlay binary (Phase 13) joins the cross report automatically. The dict
|
||||
# insertion order is the report's deterministic source order (committable digests).
|
||||
BINARIES = {
|
||||
"main": dict(sig=".run/sig.SLUS_007.26.jsonl", md="docs/duplicates.md"),
|
||||
"main": dict(sig=".run/sig.main.jsonl", md="docs/duplicates.md"), # P33 A2: build-derived (make sig-main), was the Ghidra sig
|
||||
"resident": dict(sig=".run/sig.resident.jsonl", md="docs/duplicates.resident.md"),
|
||||
"ov_SC01_077": dict(sig=".run/sig.ov_SC01_077.jsonl", md="docs/duplicates.ov_SC01_077.md"),
|
||||
"ov_SC01_005": dict(sig=".run/sig.ov_SC01_005.jsonl", md="docs/duplicates.ov_SC01_005.md"),
|
||||
|
||||
@@ -0,0 +1,147 @@
|
||||
#!/usr/bin/env python3
|
||||
"""main_seed_ends.py — the EXE's game-code function boundaries, DERIVED from the build (P33 A2, R33).
|
||||
|
||||
Emits `0xVRAM NINS` per function (the two-column `--seeds` form tools/sig_image.py accepts, where a
|
||||
seeded nins is authoritative) for every function in main's GAME-CODE objects:
|
||||
|
||||
* the `.text` input sections of the link map (build/us/SLUS_007.26.map) give each object's vram
|
||||
and size — the same map the byte-identical link wrote, so the numbers are the build's own;
|
||||
* objects that are LINKED PsyQ subsegs (progress._main_linked_segs_from_makefile — the Makefile's
|
||||
psyq_integrate stub lists, R33) or that live under build/psyq/ are skipped: Sony's objects are
|
||||
outside the game-code denominator whether the machine linked the real SDK objects or the
|
||||
INCLUDE_ASM fallback tiles;
|
||||
* inside one object `.text` is contiguous code — the interleaved rodata islands and the linked
|
||||
library blocks sit BETWEEN objects — so slicing at the object's own `nm` function symbols, with
|
||||
the last function ending at the section size, is exact. No func_end heuristic, no Ghidra.
|
||||
|
||||
Why this exists: main's only whole-EXE sig was Ghidra's (.run/sig.SLUS_007.26.jsonl, 2026-08-05),
|
||||
which a public clone cannot regenerate and whose flow-derived boundary on FUN_80023bf0 is 22 ins
|
||||
short (P31 S79: the corrected game-code denominator is 41,556, the digest printed 41,534). The old
|
||||
`make sig-main` seeded from `corpus.py main --seed-ends` = the open STUB list, which is empty at
|
||||
100% — a sig of nothing.
|
||||
|
||||
Coverage assertions (R32 — a silent skip is a defect): every game-code `.text` section is
|
||||
non-empty and 4-aligned, starts with a function symbol at offset 0, and its functions tile it
|
||||
exactly; every object the map lists is either counted, LINKED-skipped, or psyq-skipped, and all
|
||||
three counts are printed with the instruction totals (R41). Any object counted from outside
|
||||
build/src/ is named, so an unexpected code source cannot slip in unnoticed (R14).
|
||||
"""
|
||||
import argparse
|
||||
import pathlib
|
||||
import re
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
ROOT = pathlib.Path(__file__).resolve().parent.parent
|
||||
sys.path.insert(0, str(ROOT / "tools"))
|
||||
|
||||
NM = "mipsel-linux-gnu-nm"
|
||||
# gas emits these two at .text+0 for every gcc-2.7.2 TU; they are markers, not functions.
|
||||
NOT_FUNCS = {"__gnu_compiled_c", "gcc2_compiled."}
|
||||
MAP_TEXT = re.compile(r"^\s*\.text\s+(0x[0-9a-fA-F]+)\s+(0x[0-9a-fA-F]+)\s+(\S+\.o)\s*$")
|
||||
MAP_TEXT_WRAPPED = re.compile(r"^\s*\.text\s*$")
|
||||
MAP_CONT = re.compile(r"^\s+(0x[0-9a-fA-F]+)\s+(0x[0-9a-fA-F]+)\s+(\S+\.o)\s*$")
|
||||
|
||||
|
||||
def text_sections(map_path):
|
||||
"""[(vram, size, obj_path)] for every `.text` input section in a GNU ld map. A long object
|
||||
name makes ld wrap the record onto the next line; both forms are read."""
|
||||
out, lines = [], map_path.read_text(errors="replace").splitlines()
|
||||
i = 0
|
||||
while i < len(lines):
|
||||
m = MAP_TEXT.match(lines[i])
|
||||
if m:
|
||||
out.append((int(m.group(1), 16), int(m.group(2), 16), m.group(3)))
|
||||
elif MAP_TEXT_WRAPPED.match(lines[i]) and i + 1 < len(lines):
|
||||
m2 = MAP_CONT.match(lines[i + 1])
|
||||
if m2:
|
||||
out.append((int(m2.group(1), 16), int(m2.group(2), 16), m2.group(3)))
|
||||
i += 1
|
||||
i += 1
|
||||
return out
|
||||
|
||||
|
||||
def object_functions(obj_path):
|
||||
"""[(offset, name)] of the function symbols in an object's .text, sorted, one per offset."""
|
||||
res = subprocess.run([NM, "-n", "--defined-only", str(obj_path)], capture_output=True, text=True)
|
||||
if res.returncode != 0:
|
||||
sys.exit(f"main_seed_ends: {NM} failed on {obj_path}: {res.stderr.strip()}")
|
||||
seen, funcs = set(), []
|
||||
for ln in res.stdout.splitlines():
|
||||
parts = ln.split()
|
||||
if len(parts) != 3 or parts[1] not in ("T", "t"):
|
||||
continue
|
||||
off, name = int(parts[0], 16), parts[2]
|
||||
if name in NOT_FUNCS or name.startswith((".L", "$L")):
|
||||
continue
|
||||
if off in seen: # an alias for the same entry — one function
|
||||
continue
|
||||
seen.add(off)
|
||||
funcs.append((off, name))
|
||||
funcs.sort()
|
||||
return funcs
|
||||
|
||||
|
||||
def derive(map_path, repo):
|
||||
import progress
|
||||
linked = progress._main_linked_segs_from_makefile()
|
||||
rows, n_linked, n_psyq, n_code, foreign = [], 0, 0, 0, []
|
||||
for vram, size, obj in text_sections(map_path):
|
||||
if size == 0:
|
||||
continue
|
||||
stem = pathlib.Path(obj).stem
|
||||
if obj.startswith("build/psyq/"):
|
||||
n_psyq += 1
|
||||
continue
|
||||
if stem in linked:
|
||||
n_linked += 1
|
||||
continue
|
||||
if size % 4:
|
||||
sys.exit(f"main_seed_ends: {obj} .text size {size:#x} is not 4-aligned")
|
||||
p = repo / obj
|
||||
if not p.exists():
|
||||
sys.exit(f"main_seed_ends: {obj} listed in the map but absent on disk — rebuild main")
|
||||
funcs = object_functions(p)
|
||||
if not funcs or funcs[0][0] != 0:
|
||||
sys.exit(f"main_seed_ends: {obj} .text does not start with a function symbol "
|
||||
f"(first symbol at {funcs[0][0] if funcs else 'none'}) — bytes owned by no function")
|
||||
if not obj.startswith("build/src/"):
|
||||
foreign.append(obj)
|
||||
n_code += 1
|
||||
for i, (off, name) in enumerate(funcs):
|
||||
end = funcs[i + 1][0] if i + 1 < len(funcs) else size
|
||||
if end <= off or (end - off) % 4:
|
||||
sys.exit(f"main_seed_ends: {obj}:{name} bad extent {off:#x}..{end:#x}")
|
||||
rows.append((vram + off, (end - off) // 4, name))
|
||||
rows.sort()
|
||||
addrs = [a for a, _, _ in rows]
|
||||
if len(set(addrs)) != len(addrs):
|
||||
sys.exit("main_seed_ends: duplicate vram across objects — the map and the objects disagree")
|
||||
return rows, n_code, n_linked, n_psyq, foreign
|
||||
|
||||
|
||||
def main():
|
||||
ap = argparse.ArgumentParser(description=__doc__.split("\n")[0])
|
||||
ap.add_argument("--map", default="build/us/SLUS_007.26.map", help="the main link map")
|
||||
ap.add_argument("--out", default=None, help="write `0xVRAM NINS` lines here (default: stdout)")
|
||||
a = ap.parse_args()
|
||||
map_path = pathlib.Path(a.map)
|
||||
if not map_path.is_absolute():
|
||||
map_path = ROOT / map_path
|
||||
if not map_path.exists():
|
||||
sys.exit(f"main_seed_ends: no link map at {map_path} — run `make check BINARY=main` first")
|
||||
rows, n_code, n_linked, n_psyq, foreign = derive(map_path, ROOT)
|
||||
text = "".join(f"0x{a:08X} {n}\n" for a, n, _ in rows)
|
||||
if a.out:
|
||||
pathlib.Path(a.out).write_text(text)
|
||||
else:
|
||||
sys.stdout.write(text)
|
||||
tot = sum(n for _, n, _ in rows)
|
||||
print(f"main_seed_ends: {len(rows)} functions / {tot} ins from {n_code} game-code objects "
|
||||
f"(skipped {n_linked} LINKED subseg objects + {n_psyq} build/psyq objects)"
|
||||
+ (f"; NOTE code counted from outside build/src/: {', '.join(foreign)}" if foreign else ""),
|
||||
file=sys.stderr)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
+48
-24
@@ -938,29 +938,40 @@ def weighted_metrics():
|
||||
ut = sum(cls_nins.values())
|
||||
um = sum(n for hx, n in cls_nins.items() if hx in matched_cls)
|
||||
|
||||
# main — separate, game-code-only, from its (stale, LINKED-excluding) Ghidra sig. See docstring.
|
||||
# main — game-code only. P33 A2: the sig is the BUILD-DERIVED one (`make sig-main` →
|
||||
# .run/sig.main.jsonl: every game-code object's functions at build-true lengths, from the link map
|
||||
# + the objects' own symbols; Ghidra-free, splat-free, regenerable on a public clone). The
|
||||
# 2026-08-05 Ghidra sig (.run/sig.SLUS_007.26.jsonl) is the legacy fallback. NO sig at all is an
|
||||
# ERROR (R32): this block used to set mt=0 and carry on, which made the digest read "217 binaries"
|
||||
# and MAIN 0/0 on any machine without the Ghidra file — a public clone would have published a
|
||||
# headline that quietly omitted the EXE.
|
||||
mm = mt = 0
|
||||
main_date = None
|
||||
mp = ROOT / ".run/sig.SLUS_007.26.jsonl"
|
||||
if mp.exists():
|
||||
import datetime
|
||||
main_date = datetime.date.fromtimestamp(mp.stat().st_mtime).isoformat()
|
||||
mst = stub_addrs("main")
|
||||
# P31 S78: exclude LINKED subsegs LIVE (R33 — derive from the Makefile stub lists + the yaml
|
||||
# ranges), not by trusting the sig's generation-time exclusion. When 13 "game code" subsegs
|
||||
# became libgte23..30/libgs7/snd10/snd11 the 2026-08-05 sig still carried their 2,907 ins,
|
||||
# which then read as unmatched game code (59.8% -> 56.1% with no game-code change).
|
||||
lr = _main_linked_ranges()
|
||||
for line in open(mp):
|
||||
r = json.loads(line)
|
||||
a, n = int(r["addr"], 16), r["nins"]
|
||||
if n == 0:
|
||||
continue # GTE thunks / no-body
|
||||
if any(lo <= a < hi for lo, hi in lr):
|
||||
continue # LINKED PsyQ object — not game code
|
||||
mt += n
|
||||
if a not in mst:
|
||||
mm += n
|
||||
mp = ROOT / ".run/sig.main.jsonl"
|
||||
main_prov = "build-derived sig (make sig-main)"
|
||||
if not mp.exists():
|
||||
mp = ROOT / ".run/sig.SLUS_007.26.jsonl"
|
||||
main_prov = "LEGACY Ghidra sig"
|
||||
if not mp.exists():
|
||||
raise SystemExit("progress: no main sig — run `make check BINARY=main && make sig-main` "
|
||||
"(.run/sig.main.jsonl); the fleet digest is not written without the EXE (R32)")
|
||||
import datetime
|
||||
main_date = datetime.date.fromtimestamp(mp.stat().st_mtime).isoformat()
|
||||
mst = stub_addrs("main")
|
||||
# P31 S78: exclude LINKED subsegs LIVE (R33 — derive from the Makefile stub lists + the yaml
|
||||
# ranges), not by trusting the sig's generation-time exclusion. When 13 "game code" subsegs
|
||||
# became libgte23..30/libgs7/snd10/snd11 the 2026-08-05 sig still carried their 2,907 ins,
|
||||
# which then read as unmatched game code (59.8% -> 56.1% with no game-code change).
|
||||
lr = _main_linked_ranges()
|
||||
for line in open(mp):
|
||||
r = json.loads(line)
|
||||
a, n = int(r["addr"], 16), r["nins"]
|
||||
if n == 0:
|
||||
continue # GTE thunks / no-body
|
||||
if any(lo <= a < hi for lo, hi in lr):
|
||||
continue # LINKED PsyQ object — not game code
|
||||
mt += n
|
||||
if a not in mst:
|
||||
mm += n
|
||||
|
||||
# MAIN IS NOW IN THE WEIGHTED DENOMINATORS (roadmap §1 metrics contract, 2026-07-22).
|
||||
# The contract requires all three headline metrics to include the main EXE; it had been reported
|
||||
@@ -991,7 +1002,20 @@ def weighted_metrics():
|
||||
dedup_fns=len(matched_cls), dedup_total_fns=len(cls_nins),
|
||||
fleet_m_exmain=fm, fleet_t_exmain=ft,
|
||||
fleet_pct_exmain=(100 * fm / ft if ft else 0.0),
|
||||
main_m=mm, main_t=mt, main_pct=(100 * mm / mt if mt else 0.0), main_sig_date=main_date)
|
||||
main_m=mm, main_t=mt, main_pct=(100 * mm / mt if mt else 0.0), main_sig_date=main_date,
|
||||
main_sig_prov=main_prov)
|
||||
|
||||
|
||||
def main_oracle_line():
|
||||
"""main's independent-oracle verdict, DERIVED at render time (P33 A2). The fleet digest used to
|
||||
carry the literal "0 phantom, 0 truncated, 1 explained pad-tail", which went stale the moment the
|
||||
last pad-tail function was banked (S85) — a published number nobody was computing (R51)."""
|
||||
sys.path.insert(0, str(ROOT / "tools"))
|
||||
import corpus
|
||||
if not corpus.sig_is_independent("main"):
|
||||
return "oracle sig absent — run `make sig-main-oracle`"
|
||||
r = corpus.audit("main")
|
||||
return f"{len(r['phantom'])} phantom, {len(r['truncated'])} truncated, {len(r['pad_tail'])} pad-tail"
|
||||
|
||||
|
||||
def fleet():
|
||||
@@ -1029,7 +1053,7 @@ def fleet():
|
||||
f"FLEET distinct-code(uniq): {wm['dedup_m']:7d} / {wm['dedup_t']} = {wm['dedup_pct']:.1f}% ({wm['dedup_fns']}/{wm['dedup_total_fns']} unique fns; the DISTINCT-RE number)"]
|
||||
if wm.get('main_t'):
|
||||
head += [
|
||||
f"MAIN game-code weighted : {wm['main_m']:7d} / {wm['main_t']} = {wm['main_pct']:.1f}% (INCLUDED in the fleet numbers above since 2026-07-22 — roadmap §1 metrics contract; LINKED-excluding Ghidra sig dated {wm['main_sig_date']}; boundaries INDEPENDENTLY VERIFIED since P31 S77 — `make sig-main-oracle` + `make audit-corpus`: 0 phantom, 0 truncated, 1 explained pad-tail)",
|
||||
f"MAIN game-code weighted : {wm['main_m']:7d} / {wm['main_t']} = {wm['main_pct']:.1f}% (INCLUDED in the fleet numbers above since 2026-07-22 — roadmap §1 metrics contract; {wm['main_sig_prov']} dated {wm['main_sig_date']}; boundaries INDEPENDENTLY VERIFIED since P31 S77 — `make sig-main-oracle` + `make audit-corpus`: {main_oracle_line()})",
|
||||
f" (fleet EXCLUDING main, for continuity with pre-2026-07-22 readings: {wm['fleet_m_exmain']} / {wm['fleet_t_exmain']} = {wm['fleet_pct_exmain']:.1f}%)"]
|
||||
else:
|
||||
head += ["# (instr-weighted + distinct-code metrics need .run/sig.*.jsonl — run `make sig-overlays`)"]
|
||||
|
||||
Reference in New Issue
Block a user