mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-26 21:36:06 -04:00
28d10601ae
func_8017D960 (3,338 ins): 3,334 ins drafted, 98.8% register-masked-identical, 88.3% byte-aligned, byte-exact prologue AND epilogue, exact 0x320 frame, same 10 saved regs, identical ~110 stack slots, SYMS-OK. NOT a match (G3) -- but an order of magnitude closer than behemoth #1. - THE LEVER: it is the LIT VARIANT of func_8017CA80, the 952-ins renderer immediately above it in the same file (already matched). Diffing the sibling gave ~90% of the C free and a 3334/3338 draft on the FIRST compile. GENERALISED: before mapping any giant, grep for an already-matched adjacent function that is the same routine. One grep can replace days of analysis. - §69 PARTLY REFUTED: its law 1 (write whole body coarsely -> correct frame/saved-reg set) CONFIRMED and decisive; law 2 (measure region-aligned) confirmed but its TOOL did not transfer (per-switch- case); its HEADLINE ("the deliverable is the map, not a match") is refuted for non-dispatchers -- §69 was derived from a 359-call dispatcher with no sibling. - TOOL SUPERSESSION: .run/giants/b2_mask.py + b2_full.py = shape-agnostic masked sequence aligner (structural AND byte numbers). Replaces s18_regions_comparator.py for all giants. - FAMILY: func_8017CD9C + func_8017E778 are the same 3,338-ins fn with only 3 light-descriptor symbols changed -> one crack templates x3. - MY OWN PROFILING ERROR, recorded (R14/R35): I briefed "no switch" from a sltiu jump-table grep; the switch is a COMPARISON TREE (23 slti). A jtbl grep is not a switch detector.