From 28defe31cf129e63906cf301baa4e8b5318da736 Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Tue, 29 Sep 2026 23:24:25 -0600 Subject: [PATCH] T4: head-fold log, summary, ops note --- docs/ops/INDEX.md | 1 + ...8-t4-2026-09-29-restruct-head-fold-mode.md | 9 + docs/struct-map.md | 344 +++++++++--------- phase-ends/current/logs/T4.c3.md | 18 + phase-ends/current/logs/T4.md | 36 ++ phase-ends/current/tasks/INDEX.md | 1 + phase-ends/current/tasks/T4.md | 34 ++ 7 files changed, 271 insertions(+), 172 deletions(-) create mode 100644 docs/ops/p38-t4-2026-09-29-restruct-head-fold-mode.md create mode 100644 phase-ends/current/logs/T4.c3.md create mode 100644 phase-ends/current/logs/T4.md create mode 100644 phase-ends/current/tasks/T4.md diff --git a/docs/ops/INDEX.md b/docs/ops/INDEX.md index 872a79ee38..bfb5304c69 100644 --- a/docs/ops/INDEX.md +++ b/docs/ops/INDEX.md @@ -51,3 +51,4 @@ gate-main-only-with-gate-main.md | gate-main-only-with-gate-main | 71 mcp-renames-dont-persist-use-applysymbols.md | mcp-renames-dont-persist-use-applysymbols | 21 ops-setup-decomp.md | extract the medium and verify against the committed manifest | 68 wsl-disk-capped-75gb.md | wsl-disk-capped-75gb | 34 +p38-t4-2026-09-29-restruct-head-fold-mode.md | §P38 T4 — 2026-09-29: restruct rung L head-fold mode | 9 diff --git a/docs/ops/p38-t4-2026-09-29-restruct-head-fold-mode.md b/docs/ops/p38-t4-2026-09-29-restruct-head-fold-mode.md new file mode 100644 index 0000000000..9439bb475c --- /dev/null +++ b/docs/ops/p38-t4-2026-09-29-restruct-head-fold-mode.md @@ -0,0 +1,9 @@ +# §P38 T4 — 2026-09-29: restruct rung L head-fold mode + +- `restruct.py --rung L --only ` = head-fold: draws every struct def (file or block scope; `.c`; with `--headers` also `src/**/*.h` incl. `engine_types.h`, never `include/struct_types.h`) whose layout SIZE equals the named canonical's and whose hash differs; `HF_EXCLUDE` globs (`Blk152*`, `Fr_*`) carry a cause. +- Unit: def -> `typedef ;` in place; `struct ` uses -> the typedef; member accesses renamed by offset, type-aware (vars/params/casts of the local type, macro bodies whose expansions all agree); header units also rename in includers and sibling `.h` in their include closure. +- Ledger: `FOLDED` (canon, renames) / `FOLD-REFUSED` (cause) / `COMBINATION-FAILED`; settled units skipped unless `--redraw VERDICT:cause`; a same-label file-level `TOOL-ERROR` unsettles. +- `--status --rung L --only ` buckets head-fold rows verdict -> cause. +- Inflight record: atomic write under flock; `apply.lock` refuses a second concurrent `--apply`; a TOOL-ERROR worker restores its file. +- `restruct_cycle.sh`: commit message uses `$TASK`; commits the ledger with `git add -f`; no CURRENT_PHASE.md append when absent; on `final X/Y` X≠Y it stops and leaves the tree as restruct left it (operator reverts). +- Gotcha: a detached cycle's log stays 0 bytes until the first batch line; check `ps` for `restruct_cycl[e]` before relaunching (T4 ran one batch twice concurrently). diff --git a/docs/struct-map.md b/docs/struct-map.md index 587484ad9d..62067f5092 100644 --- a/docs/struct-map.md +++ b/docs/struct-map.md @@ -1,187 +1,187 @@ # The struct map — the types the fleet's cast sites need (Phase 37 T1) -> **Generated by `tools/type_census.py` at `42a9cd7f5` (2026-09-30T02:49:11Z); never typed (R75).** Every raw pointer-cast dereference in `src/` was assigned to a base (a parameter, a local, a global by value or by address, an absolute address) and the bases were clustered by EVIDENCE only — the same global symbol, an argument passed to a callee's parameter, an assignment or return, a pointer field read, a shared body's fleet-wide identity — never by a similar offset signature. Each cluster is one type the tree needs. Names are placeholders (`Unkstruct_`: the lowest global instance's address, else the lowest member function's); fields are placeholders (`unk`) until Phase 38 cites evidence. +> **Generated by `tools/type_census.py` at `a21682ae7` (2026-09-30T05:21:20Z); never typed (R75).** Every raw pointer-cast dereference in `src/` was assigned to a base (a parameter, a local, a global by value or by address, an absolute address) and the bases were clustered by EVIDENCE only — the same global symbol, an argument passed to a callee's parameter, an assignment or return, a pointer field read, a shared body's fleet-wide identity — never by a similar offset signature. Each cluster is one type the tree needs. Names are placeholders (`Unkstruct_`: the lowest global instance's address, else the lowest member function's); fields are placeholders (`unk`) until Phase 38 cites evidence. -**18739 types explain 498866 of 502985 dereference sites (99.2 %); 4119 sites have a base the census could not classify; 727 types carry a width conflict.** Merges by evidence: param 36454, assign 14664, arg 10168, field 9613, ret-of 3373, return 1524, assign& 1050, arg& 270. +**18208 types explain 498866 of 502985 dereference sites (99.2 %); 4119 sites have a base the census could not classify; 725 types carry a width conflict.** Merges by evidence: param 36460, assign 14671, arg 10231, field 9963, ret-of 3443, return 1519, assign& 1055, arg& 281. | # | type | sites | bodies | fields | size ≥ | width conflicts (+sign mixes) | instance globals | pointer globals | |---:|---|---:|---:|---:|---:|---:|---|---| -| 1 | `Unkstruct_800B5CB8` | 107580 | 11184 | 134 | 0x10c | 50 (+55 sign) | D_800B5CB8, D_800D3888, D_80181448, D_80181538… | D_8006386C, D_80074778, D_80074780, D_80074784… | -| 2 | `Unkstruct_80126B58` | 65397 | 17047 | 175 | 0x24c | 50 (+60 sign) | D_80126B58 | D_80126B58 | +| 1 | `Unkstruct_800B5CB8` | 113069 | 10168 | 133 | 0x10c | 50 (+61 sign) | D_800B5CB8, D_800D3888, D_80181448, D_80181538… | D_8006386C, D_80074778, D_80074780, D_80074784… | +| 2 | `Unkstruct_80126B58` | 65451 | 17062 | 175 | 0x24c | 50 (+60 sign) | D_80126B58 | D_80126B58 | | 3 | `Unkstruct_8018E71C` | 6745 | 396 | 7 | 0x10 | 0 (+0 sign) | D_8018E71C | | | 4 | `Unkstruct_dac960ce` | 4464 | 124 | 13 | 0x24c | 0 (+2 sign) | | | | 5 | `Unkstruct_0caecd54` | 4340 | 124 | 23 | 0xfe | 0 (+1 sign) | | | -| 6 | `Unkstruct_f8ed2b9f` | 4061 | 4061 | 1 | 0x217 | 0 (+0 sign) | | | -| 7 | `Unkstruct_a32b99a1` | 3936 | 123 | 8 | 0x4b | 0 (+1 sign) | | | -| 8 | `Unkstruct_8e3dbe51` | 3930 | 131 | 5 | 0x4c | 0 (+1 sign) | | | -| 9 | `Unkstruct_8014A1B0` | 3778 | 542 | 13 | 0xfe | 0 (+1 sign) | | | -| 10 | `Unkstruct_80128EA8` | 3311 | 632 | 18 | 0x38 | 0 (+13 sign) | | | +| 6 | `Unkstruct_8014964C` | 4249 | 1798 | 23 | 0x84 | 3 (+9 sign) | | | +| 7 | `Unkstruct_f8ed2b9f` | 4061 | 4061 | 1 | 0x217 | 0 (+0 sign) | | | +| 8 | `Unkstruct_a32b99a1` | 3936 | 123 | 8 | 0x4b | 0 (+1 sign) | | | +| 9 | `Unkstruct_8e3dbe51` | 3930 | 131 | 5 | 0x4c | 0 (+1 sign) | | | +| 10 | `Unkstruct_8014A1B0` | 3778 | 542 | 13 | 0xfe | 0 (+1 sign) | | | | 11 | `Unkstruct_ade2e8a0` | 3271 | 196 | 26 | 0xa4 | 3 (+9 sign) | | | -| 12 | `Unkstruct_1fa9e810` | 3144 | 131 | 3 | 0x49 | 0 (+0 sign) | | | -| 13 | `Unkstruct_30b21035` | 3100 | 124 | 13 | 0x54 | 0 (+0 sign) | | | -| 14 | `Unkstruct_80126948` | 2986 | 832 | 34 | 0xa4 | 0 (+10 sign) | D_80126948, D_80126E60 | D_80114EE8, D_801151D4, D_80126948, D_80126E60… | +| 12 | `Unkstruct_80126948` | 3237 | 1083 | 34 | 0xa4 | 0 (+10 sign) | D_80126948, D_80126E60 | D_80114EE8, D_801151D4, D_80126948, D_80126E60… | +| 13 | `Unkstruct_1fa9e810` | 3144 | 131 | 3 | 0x49 | 0 (+0 sign) | | | +| 14 | `Unkstruct_30b21035` | 3100 | 124 | 13 | 0x54 | 0 (+0 sign) | | | | 15 | `Unkstruct_adc0bee4` | 2646 | 126 | 8 | 0x34 | 0 (+3 sign) | | | | 16 | `Unkstruct_198fc7cc` | 2580 | 129 | 16 | 0x38 | 3 (+1 sign) | | | -| 17 | `Unkstruct_801439FC` | 2489 | 981 | 57 | 0x10c | 9 (+22 sign) | | | -| 18 | `Unkstruct_80130D48` | 2382 | 587 | 25 | 0x64 | 6 (+3 sign) | | D_80072C84, D_80078E78 | -| 19 | `Unkstruct_ed8f1335` | 2356 | 124 | 18 | 0x24 | 0 (+0 sign) | | | -| 20 | `Unkstruct_8016B4F8` | 2140 | 535 | 5 | 0x30 | 0 (+0 sign) | | | -| 21 | `Unkstruct_80139C7C` | 2111 | 265 | 14 | 0x44 | 0 (+3 sign) | | | -| 22 | `Unkstruct_b047cdf2` | 2108 | 124 | 6 | 0x20 | 0 (+0 sign) | | | -| 23 | `Unkstruct_2729e670` | 2091 | 123 | 6 | 0x4b | 0 (+0 sign) | | | -| 24 | `Unkstruct_dd542e54` | 2016 | 126 | 7 | 0x18 | 0 (+0 sign) | | | -| 25 | `Unkstruct_f49880fd` | 2000 | 125 | 6 | 0x54 | 0 (+1 sign) | | | -| 26 | `Unkstruct_a8d34bce` | 1948 | 1948 | 1 | 0x215 | 0 (+0 sign) | | | -| 27 | `Unkstruct_568f7bda` | 1875 | 125 | 9 | 0x38 | 0 (+0 sign) | | | -| 28 | `Unkstruct_8016DF5C` | 1791 | 131 | 9 | 0x38 | 0 (+3 sign) | | | -| 29 | `Unkstruct_cd1bacd2` | 1764 | 126 | 10 | 0x38 | 0 (+0 sign) | | | -| 30 | `Unkstruct_8011F7A8` | 1746 | 271 | 7 | 0x11e | 0 (+0 sign) | D_8011F7A8 | | -| 31 | `Unkstruct_84612d18` | 1722 | 123 | 8 | 0x4b | 0 (+0 sign) | | | -| 32 | `Unkstruct_57db4d07` | 1664 | 128 | 13 | 0x0 | 13 (+0 sign) | | | -| 33 | `Unkstruct_4692fc17` | 1612 | 124 | 4 | 0x1e | 0 (+3 sign) | | | -| 34 | `Unkstruct_eda88e53` | 1596 | 133 | 6 | 0x54 | 6 (+0 sign) | | | -| 35 | `Unkstruct_8012D3B4` | 1588 | 183 | 23 | 0x24 | 16 (+9 sign) | | D_80074808, D_800A5E60 | -| 36 | `Unkstruct_4e09b6d9` | 1572 | 131 | 9 | 0x32 | 0 (+1 sign) | | | -| 37 | `Unkstruct_23e45db5` | 1512 | 126 | 11 | 0x16 | 0 (+0 sign) | | | -| 38 | `Unkstruct_47470ce3` | 1488 | 124 | 6 | 0x1e | 0 (+0 sign) | | | -| 39 | `Unkstruct_b5c0372a` | 1441 | 131 | 9 | 0x58 | 0 (+0 sign) | | | -| 40 | `Unkstruct_0980b9f0` | 1441 | 131 | 4 | 0x49 | 0 (+0 sign) | | | -| 41 | `Unkstruct_ba6e2e9f` | 1439 | 1439 | 1 | 0x4 | 0 (+0 sign) | | | -| 42 | `Unkstruct_a68f6d03` | 1364 | 124 | 9 | 0x14 | 0 (+0 sign) | | | -| 43 | `Unkstruct_8fdd92d1` | 1300 | 130 | 4 | 0x24 | 2 (+0 sign) | | | -| 44 | `Unkstruct_110cf29e` | 1250 | 125 | 7 | 0x2c | 0 (+0 sign) | | | -| 45 | `Unkstruct_4db8cec8` | 1240 | 124 | 8 | 0x36 | 0 (+0 sign) | | | -| 46 | `Unkstruct_f0bc3b7a` | 1240 | 124 | 7 | 0x100 | 0 (+0 sign) | | | -| 47 | `Unkstruct_297e7547` | 1240 | 124 | 10 | 0x58 | 0 (+0 sign) | | | -| 48 | `Unkstruct_dd59c999` | 1240 | 124 | 6 | 0x38 | 0 (+2 sign) | | | -| 49 | `Unkstruct_919ca3ea` | 1230 | 123 | 6 | 0x10 | 0 (+0 sign) | | | -| 50 | `Unkstruct_a459e3e5` | 1220 | 122 | 6 | 0x34 | 0 (+0 sign) | | | -| 51 | `Unkstruct_8014CA00` | 1219 | 407 | 4 | 0x2e | 0 (+3 sign) | | | -| 52 | `Unkstruct_74787850` | 1206 | 1073 | 1 | 0x2 | 0 (+1 sign) | | D_801152A8 | -| 53 | `Unkstruct_f9a7989e` | 1179 | 131 | 3 | 0x36 | 0 (+1 sign) | | | -| 54 | `Unkstruct_0b30043d` | 1128 | 376 | 3 | 0x5e | 0 (+0 sign) | | | -| 55 | `Unkstruct_301381d4` | 1116 | 124 | 3 | 0x36 | 0 (+1 sign) | | | -| 56 | `Unkstruct_0ced46e2` | 1116 | 124 | 5 | 0xfe | 0 (+0 sign) | | | -| 57 | `Unkstruct_4857195e` | 1107 | 123 | 5 | 0x34 | 0 (+0 sign) | | | -| 58 | `Unkstruct_50a3f6b4` | 1040 | 130 | 3 | 0x36 | 0 (+0 sign) | | | -| 59 | `Unkstruct_800B9A02` | 993 | 435 | 1 | 0x2 | 0 (+0 sign) | D_800B9A02 | | -| 60 | `Unkstruct_f74e3af7` | 992 | 124 | 5 | 0xfe | 0 (+0 sign) | | | -| 61 | `Unkstruct_b6c7c603` | 931 | 133 | 7 | 0x20 | 1 (+0 sign) | | | -| 62 | `Unkstruct_b774eeeb` | 917 | 131 | 4 | 0x41 | 0 (+0 sign) | | | -| 63 | `Unkstruct_859b4fab` | 910 | 130 | 4 | 0xb0 | 0 (+0 sign) | | | -| 64 | `Unkstruct_801463A0` | 907 | 210 | 13 | 0x54 | 0 (+1 sign) | | D_80126B78 | -| 65 | `Unkstruct_6d3f3f5d` | 889 | 127 | 6 | 0x38 | 0 (+0 sign) | | | -| 66 | `Unkstruct_6d856e9d` | 889 | 127 | 5 | 0x1e | 3 (+1 sign) | | | -| 67 | `Unkstruct_d0c6cce6` | 889 | 127 | 4 | 0x38 | 0 (+0 sign) | | | -| 68 | `Unkstruct_1e86c313` | 882 | 126 | 4 | 0x8 | 0 (+0 sign) | | | -| 69 | `Unkstruct_a41ec127` | 882 | 126 | 6 | 0x38 | 0 (+0 sign) | | | -| 70 | `Unkstruct_17738e2c` | 876 | 33 | 32 | 0xa4 | 12 (+5 sign) | | | -| 71 | `Unkstruct_3f697924` | 875 | 125 | 5 | 0x38 | 0 (+0 sign) | | | -| 72 | `Unkstruct_e505dcd3` | 868 | 124 | 4 | 0x8 | 0 (+0 sign) | | | -| 73 | `Unkstruct_fe02110c` | 868 | 124 | 3 | 0x10 | 0 (+2 sign) | | | -| 74 | `Unkstruct_92677d11` | 861 | 123 | 5 | 0x240 | 0 (+0 sign) | | | -| 75 | `Unkstruct_86465c2c` | 861 | 123 | 7 | 0x20 | 0 (+0 sign) | | | -| 76 | `Unkstruct_ffd2397c` | 854 | 122 | 5 | 0x34 | 0 (+0 sign) | | | -| 77 | `Unkstruct_801270C0` | 821 | 820 | 1 | 0x2 | 0 (+0 sign) | D_801270C0 | | -| 78 | `Unkstruct_2932a0a7` | 798 | 133 | 6 | 0x12 | 5 (+0 sign) | | | -| 79 | `Unkstruct_0a8f505b` | 790 | 83 | 14 | 0x10c | 0 (+5 sign) | | | -| 80 | `Unkstruct_12f4cee2` | 786 | 131 | 5 | 0x28 | 0 (+0 sign) | | | -| 81 | `Unkstruct_d2490774` | 786 | 131 | 3 | 0xb0 | 0 (+0 sign) | | | -| 82 | `Unkstruct_80135260` | 780 | 130 | 3 | 0x54 | 0 (+0 sign) | | | -| 83 | `Unkstruct_b196f9c0` | 768 | 128 | 5 | 0x14 | 1 (+0 sign) | | | -| 84 | `Unkstruct_36c327cf` | 762 | 127 | 2 | 0x18 | 0 (+0 sign) | | | -| 85 | `Unkstruct_6cd0e445` | 756 | 126 | 2 | 0x10 | 0 (+0 sign) | | | -| 86 | `Unkstruct_c0b9c5d5` | 750 | 125 | 6 | 0x10 | 0 (+0 sign) | | | -| 87 | `Unkstruct_64375b18` | 744 | 124 | 5 | 0xa0 | 0 (+0 sign) | | | -| 88 | `Unkstruct_438adcd1` | 744 | 124 | 5 | 0x14 | 0 (+0 sign) | | | -| 89 | `Unkstruct_97b6f459` | 744 | 124 | 5 | 0x28 | 0 (+0 sign) | | | -| 90 | `Unkstruct_38975874` | 744 | 124 | 4 | 0x84 | 0 (+0 sign) | | | -| 91 | `Unkstruct_76b1caf3` | 744 | 124 | 2 | 0x3 | 0 (+0 sign) | | | -| 92 | `Unkstruct_8016BBE0` | 690 | 139 | 9 | 0x38 | 0 (+0 sign) | | | -| 93 | `Unkstruct_80146A6C` | 680 | 137 | 7 | 0x2c | 0 (+0 sign) | | | -| 94 | `Unkstruct_800AF630` | 671 | 537 | 3 | 0xa3dc | 0 (+0 sign) | D_800AF630 | | -| 95 | `Unkstruct_8012C284` | 668 | 533 | 1 | 0x2 | 0 (+1 sign) | | D_80126720 | -| 96 | `Unkstruct_80115128` | 667 | 534 | 1 | 0x2 | 0 (+0 sign) | D_80115128 | | -| 97 | `Unkstruct_896c95f7` | 665 | 133 | 3 | 0x5e | 0 (+0 sign) | | | -| 98 | `Unkstruct_61789347` | 665 | 133 | 0 | 0x0 | 0 (+0 sign) | | | -| 99 | `Unkstruct_b89d503f` | 665 | 133 | 0 | 0x0 | 0 (+0 sign) | | | +| 17 | `Unkstruct_80130D48` | 2382 | 587 | 25 | 0x64 | 6 (+3 sign) | | D_80072C84, D_80078E78 | +| 18 | `Unkstruct_ed8f1335` | 2356 | 124 | 18 | 0x24 | 0 (+0 sign) | | | +| 19 | `Unkstruct_8016B4F8` | 2140 | 535 | 5 | 0x30 | 0 (+0 sign) | | | +| 20 | `Unkstruct_80139C7C` | 2111 | 265 | 14 | 0x44 | 0 (+3 sign) | | | +| 21 | `Unkstruct_b047cdf2` | 2108 | 124 | 6 | 0x20 | 0 (+0 sign) | | | +| 22 | `Unkstruct_2729e670` | 2091 | 123 | 6 | 0x4b | 0 (+0 sign) | | | +| 23 | `Unkstruct_dd542e54` | 2016 | 126 | 7 | 0x18 | 0 (+0 sign) | | | +| 24 | `Unkstruct_f49880fd` | 2000 | 125 | 6 | 0x54 | 0 (+1 sign) | | | +| 25 | `Unkstruct_a8d34bce` | 1948 | 1948 | 1 | 0x215 | 0 (+0 sign) | | | +| 26 | `Unkstruct_568f7bda` | 1875 | 125 | 9 | 0x38 | 0 (+0 sign) | | | +| 27 | `Unkstruct_8016DF5C` | 1791 | 131 | 9 | 0x38 | 0 (+3 sign) | | | +| 28 | `Unkstruct_cd1bacd2` | 1764 | 126 | 10 | 0x38 | 0 (+0 sign) | | | +| 29 | `Unkstruct_8011F7A8` | 1746 | 271 | 7 | 0x11e | 0 (+0 sign) | D_8011F7A8 | | +| 30 | `Unkstruct_84612d18` | 1722 | 123 | 8 | 0x4b | 0 (+0 sign) | | | +| 31 | `Unkstruct_57db4d07` | 1664 | 128 | 13 | 0x0 | 13 (+0 sign) | | | +| 32 | `Unkstruct_4692fc17` | 1612 | 124 | 4 | 0x1e | 0 (+3 sign) | | | +| 33 | `Unkstruct_eda88e53` | 1596 | 133 | 6 | 0x54 | 6 (+0 sign) | | | +| 34 | `Unkstruct_4e09b6d9` | 1572 | 131 | 9 | 0x32 | 0 (+1 sign) | | | +| 35 | `Unkstruct_23e45db5` | 1512 | 126 | 11 | 0x16 | 0 (+0 sign) | | | +| 36 | `Unkstruct_8012D3B4` | 1496 | 165 | 23 | 0x24 | 12 (+7 sign) | | | +| 37 | `Unkstruct_47470ce3` | 1488 | 124 | 6 | 0x1e | 0 (+0 sign) | | | +| 38 | `Unkstruct_b5c0372a` | 1441 | 131 | 9 | 0x58 | 0 (+0 sign) | | | +| 39 | `Unkstruct_0980b9f0` | 1441 | 131 | 4 | 0x49 | 0 (+0 sign) | | | +| 40 | `Unkstruct_ba6e2e9f` | 1439 | 1439 | 1 | 0x4 | 0 (+0 sign) | | | +| 41 | `Unkstruct_a68f6d03` | 1364 | 124 | 9 | 0x14 | 0 (+0 sign) | | | +| 42 | `Unkstruct_8fdd92d1` | 1300 | 130 | 4 | 0x24 | 2 (+0 sign) | | | +| 43 | `Unkstruct_110cf29e` | 1250 | 125 | 7 | 0x2c | 0 (+0 sign) | | | +| 44 | `Unkstruct_4db8cec8` | 1240 | 124 | 8 | 0x36 | 0 (+0 sign) | | | +| 45 | `Unkstruct_f0bc3b7a` | 1240 | 124 | 7 | 0x100 | 0 (+0 sign) | | | +| 46 | `Unkstruct_297e7547` | 1240 | 124 | 10 | 0x58 | 0 (+0 sign) | | | +| 47 | `Unkstruct_dd59c999` | 1240 | 124 | 6 | 0x38 | 0 (+2 sign) | | | +| 48 | `Unkstruct_919ca3ea` | 1230 | 123 | 6 | 0x10 | 0 (+0 sign) | | | +| 49 | `Unkstruct_a459e3e5` | 1220 | 122 | 6 | 0x34 | 0 (+0 sign) | | | +| 50 | `Unkstruct_8014CA00` | 1219 | 407 | 4 | 0x2e | 0 (+3 sign) | | | +| 51 | `Unkstruct_74787850` | 1206 | 1073 | 1 | 0x2 | 0 (+1 sign) | | D_801152A8 | +| 52 | `Unkstruct_f9a7989e` | 1179 | 131 | 3 | 0x36 | 0 (+1 sign) | | | +| 53 | `Unkstruct_0b30043d` | 1128 | 376 | 3 | 0x5e | 0 (+0 sign) | | | +| 54 | `Unkstruct_301381d4` | 1116 | 124 | 3 | 0x36 | 0 (+1 sign) | | | +| 55 | `Unkstruct_0ced46e2` | 1116 | 124 | 5 | 0xfe | 0 (+0 sign) | | | +| 56 | `Unkstruct_4857195e` | 1107 | 123 | 5 | 0x34 | 0 (+0 sign) | | | +| 57 | `Unkstruct_50a3f6b4` | 1040 | 130 | 3 | 0x36 | 0 (+0 sign) | | | +| 58 | `Unkstruct_800B9A02` | 993 | 435 | 1 | 0x2 | 0 (+0 sign) | D_800B9A02 | | +| 59 | `Unkstruct_f74e3af7` | 992 | 124 | 5 | 0xfe | 0 (+0 sign) | | | +| 60 | `Unkstruct_b6c7c603` | 931 | 133 | 7 | 0x20 | 1 (+0 sign) | | | +| 61 | `Unkstruct_b774eeeb` | 917 | 131 | 4 | 0x41 | 0 (+0 sign) | | | +| 62 | `Unkstruct_859b4fab` | 910 | 130 | 4 | 0xb0 | 0 (+0 sign) | | | +| 63 | `Unkstruct_801463A0` | 907 | 210 | 13 | 0x54 | 0 (+1 sign) | | D_80126B78 | +| 64 | `Unkstruct_6d3f3f5d` | 889 | 127 | 6 | 0x38 | 0 (+0 sign) | | | +| 65 | `Unkstruct_6d856e9d` | 889 | 127 | 5 | 0x1e | 3 (+1 sign) | | | +| 66 | `Unkstruct_d0c6cce6` | 889 | 127 | 4 | 0x38 | 0 (+0 sign) | | | +| 67 | `Unkstruct_1e86c313` | 882 | 126 | 4 | 0x8 | 0 (+0 sign) | | | +| 68 | `Unkstruct_a41ec127` | 882 | 126 | 6 | 0x38 | 0 (+0 sign) | | | +| 69 | `Unkstruct_17738e2c` | 876 | 33 | 32 | 0xa4 | 12 (+5 sign) | | | +| 70 | `Unkstruct_3f697924` | 875 | 125 | 5 | 0x38 | 0 (+0 sign) | | | +| 71 | `Unkstruct_e505dcd3` | 868 | 124 | 4 | 0x8 | 0 (+0 sign) | | | +| 72 | `Unkstruct_fe02110c` | 868 | 124 | 3 | 0x10 | 0 (+2 sign) | | | +| 73 | `Unkstruct_92677d11` | 861 | 123 | 5 | 0x240 | 0 (+0 sign) | | | +| 74 | `Unkstruct_86465c2c` | 861 | 123 | 7 | 0x20 | 0 (+0 sign) | | | +| 75 | `Unkstruct_ffd2397c` | 854 | 122 | 5 | 0x34 | 0 (+0 sign) | | | +| 76 | `Unkstruct_801270C0` | 821 | 820 | 1 | 0x2 | 0 (+0 sign) | D_801270C0 | | +| 77 | `Unkstruct_2932a0a7` | 798 | 133 | 6 | 0x12 | 5 (+0 sign) | | | +| 78 | `Unkstruct_0a8f505b` | 790 | 83 | 14 | 0x10c | 0 (+5 sign) | | | +| 79 | `Unkstruct_12f4cee2` | 786 | 131 | 5 | 0x28 | 0 (+0 sign) | | | +| 80 | `Unkstruct_d2490774` | 786 | 131 | 3 | 0xb0 | 0 (+0 sign) | | | +| 81 | `Unkstruct_80135260` | 780 | 130 | 3 | 0x54 | 0 (+0 sign) | | | +| 82 | `Unkstruct_b196f9c0` | 768 | 128 | 5 | 0x14 | 1 (+0 sign) | | | +| 83 | `Unkstruct_36c327cf` | 762 | 127 | 2 | 0x18 | 0 (+0 sign) | | | +| 84 | `Unkstruct_6cd0e445` | 756 | 126 | 2 | 0x10 | 0 (+0 sign) | | | +| 85 | `Unkstruct_c0b9c5d5` | 750 | 125 | 6 | 0x10 | 0 (+0 sign) | | | +| 86 | `Unkstruct_64375b18` | 744 | 124 | 5 | 0xa0 | 0 (+0 sign) | | | +| 87 | `Unkstruct_438adcd1` | 744 | 124 | 5 | 0x14 | 0 (+0 sign) | | | +| 88 | `Unkstruct_97b6f459` | 744 | 124 | 5 | 0x28 | 0 (+0 sign) | | | +| 89 | `Unkstruct_38975874` | 744 | 124 | 4 | 0x84 | 0 (+0 sign) | | | +| 90 | `Unkstruct_76b1caf3` | 744 | 124 | 2 | 0x3 | 0 (+0 sign) | | | +| 91 | `Unkstruct_8016BBE0` | 690 | 139 | 9 | 0x38 | 0 (+0 sign) | | | +| 92 | `Unkstruct_80146A6C` | 680 | 137 | 7 | 0x2c | 0 (+0 sign) | | | +| 93 | `Unkstruct_800AF630` | 671 | 537 | 3 | 0xa3dc | 0 (+0 sign) | D_800AF630 | | +| 94 | `Unkstruct_8012C284` | 668 | 533 | 1 | 0x2 | 0 (+1 sign) | | D_80126720 | +| 95 | `Unkstruct_80115128` | 667 | 534 | 1 | 0x2 | 0 (+0 sign) | D_80115128 | | +| 96 | `Unkstruct_896c95f7` | 665 | 133 | 3 | 0x5e | 0 (+0 sign) | | | +| 97 | `Unkstruct_61789347` | 665 | 133 | 0 | 0x0 | 0 (+0 sign) | | | +| 98 | `Unkstruct_b89d503f` | 665 | 133 | 0 | 0x0 | 0 (+0 sign) | | | +| 99 | `Unkstruct_801345F8` | 665 | 133 | 0 | 0x0 | 0 (+0 sign) | | | | 100 | `Unkstruct_801345F8` | 665 | 133 | 0 | 0x0 | 0 (+0 sign) | | | -| 101 | `Unkstruct_801345F8` | 665 | 133 | 0 | 0x0 | 0 (+0 sign) | | | -| 102 | `Unkstruct_801152A0` | 665 | 399 | 1 | 0x2 | 0 (+0 sign) | D_801152A0 | | -| 103 | `Unkstruct_fdd04bae` | 650 | 130 | 3 | 0x38 | 0 (+0 sign) | | | -| 104 | `Unkstruct_eb8b6fbf` | 645 | 129 | 5 | 0xfe | 0 (+0 sign) | | | -| 105 | `Unkstruct_90d0825c` | 645 | 129 | 5 | 0x1c | 1 (+0 sign) | | | -| 106 | `Unkstruct_27c177f1` | 645 | 129 | 4 | 0x34 | 0 (+0 sign) | | | -| 107 | `Unkstruct_4f9f60b8` | 630 | 126 | 4 | 0x78 | 0 (+0 sign) | | | -| 108 | `Unkstruct_7a31a22f` | 630 | 126 | 2 | 0x19c | 0 (+0 sign) | | | -| 109 | `Unkstruct_187abeff` | 630 | 126 | 5 | 0x68 | 0 (+0 sign) | | | -| 110 | `Unkstruct_f9fa1fb7` | 630 | 126 | 4 | 0x20 | 0 (+0 sign) | | | -| 111 | `Unkstruct_20d4328b` | 630 | 126 | 4 | 0x38 | 0 (+0 sign) | | | -| 112 | `Unkstruct_d94ab931` | 625 | 125 | 4 | 0x6 | 2 (+1 sign) | | | -| 113 | `Unkstruct_7ef9c9ef` | 625 | 125 | 4 | 0x6 | 2 (+1 sign) | | | -| 114 | `Unkstruct_ad0948d5` | 625 | 125 | 5 | 0x1c | 0 (+0 sign) | | | -| 115 | `Unkstruct_fccefc1f` | 625 | 125 | 2 | 0x1a | 0 (+0 sign) | | | -| 116 | `Unkstruct_57ae03d1` | 620 | 124 | 2 | 0x2c | 0 (+0 sign) | | | -| 117 | `Unkstruct_af1e9d57` | 620 | 248 | 4 | 0x64 | 0 (+0 sign) | | | -| 118 | `Unkstruct_172cbd29` | 620 | 124 | 2 | 0x1fc | 0 (+0 sign) | | | -| 119 | `Unkstruct_2c2c1d2e` | 620 | 124 | 4 | 0x24 | 0 (+0 sign) | | | -| 120 | `Unkstruct_aaf4c4dd` | 615 | 615 | 1 | 0x16 | 0 (+0 sign) | | | -| 121 | `Unkstruct_293d71dc` | 600 | 75 | 0 | 0x0 | 0 (+0 sign) | | | -| 122 | `Unkstruct_78eaa73c` | 553 | 7 | 15 | 0x10a | 0 (+7 sign) | | | -| 123 | `Unkstruct_8011512E` | 532 | 133 | 1 | 0x2 | 0 (+0 sign) | D_8011512E | | -| 124 | `Unkstruct_8016BFA8` | 532 | 133 | 4 | 0x24 | 0 (+0 sign) | | | -| 125 | `Unkstruct_30befa8c` | 520 | 130 | 3 | 0xfe | 0 (+0 sign) | | | -| 126 | `Unkstruct_b7ae0eae` | 520 | 130 | 1 | 0x2 | 1 (+0 sign) | | | -| 127 | `Unkstruct_01082f7a` | 520 | 520 | 1 | 0x4 | 0 (+0 sign) | | | -| 128 | `Unkstruct_db0ee441` | 516 | 129 | 4 | 0x38 | 0 (+0 sign) | | | -| 129 | `Unkstruct_7476116e` | 516 | 129 | 1 | 0x4 | 0 (+0 sign) | | | -| 130 | `Unkstruct_290ce261` | 504 | 126 | 3 | 0xfe | 0 (+0 sign) | | | -| 131 | `Unkstruct_d6100faa` | 504 | 126 | 3 | 0x20 | 0 (+0 sign) | | | -| 132 | `Unkstruct_5ebcbddc` | 504 | 126 | 3 | 0xe | 0 (+0 sign) | | | -| 133 | `Unkstruct_7cb40b10` | 500 | 500 | 1 | 0x4 | 0 (+0 sign) | | | -| 134 | `Unkstruct_4e078af8` | 496 | 124 | 2 | 0x4 | 0 (+2 sign) | | | -| 135 | `Unkstruct_494cef68` | 496 | 124 | 2 | 0x188 | 0 (+0 sign) | | | -| 136 | `Unkstruct_93df0322` | 496 | 124 | 4 | 0x38 | 0 (+0 sign) | | | -| 137 | `Unkstruct_3b2b6e45` | 496 | 124 | 4 | 0x38 | 0 (+0 sign) | | | -| 138 | `Unkstruct_9e228c39` | 492 | 123 | 3 | 0x6 | 0 (+0 sign) | | | -| 139 | `Unkstruct_a05973fa` | 492 | 123 | 3 | 0x2c | 0 (+0 sign) | | | -| 140 | `Unkstruct_48c11385` | 441 | 21 | 5 | 0x68 | 0 (+0 sign) | | | -| 141 | `Unkstruct_a55a221e` | 428 | 428 | 1 | 0x215 | 0 (+0 sign) | | | -| 142 | `Unkstruct_02864986` | 420 | 420 | 1 | 0x2 | 0 (+1 sign) | | D_80115158 | -| 143 | `Unkstruct_80131B14` | 404 | 383 | 5 | 0x32 | 0 (+0 sign) | | | -| 144 | `Unkstruct_8011511A` | 404 | 146 | 1 | 0x2 | 0 (+1 sign) | D_8011511A | | -| 145 | `Unkstruct_8016B5C0` | 399 | 133 | 2 | 0x1c | 0 (+0 sign) | | | -| 146 | `Unkstruct_8016BFA8` | 399 | 133 | 3 | 0x6 | 0 (+0 sign) | | | -| 147 | `Unkstruct_8011F7F0` | 399 | 133 | 3 | 0x42 | 0 (+0 sign) | D_8011F7F0 | | -| 148 | `Unkstruct_1649b9a7` | 392 | 28 | 8 | 0x38 | 0 (+2 sign) | | | -| 149 | `Unkstruct_ea5ed765` | 390 | 130 | 1 | 0xdb | 0 (+0 sign) | | | -| 150 | `Unkstruct_80135260` | 390 | 130 | 3 | 0x6 | 0 (+0 sign) | | | -| 151 | `Unkstruct_a472a6ba` | 387 | 129 | 3 | 0x1c | 0 (+0 sign) | | | -| 152 | `Unkstruct_630777a3` | 387 | 258 | 2 | 0x5 | 0 (+0 sign) | | | -| 153 | `Unkstruct_f2440762` | 384 | 128 | 1 | 0x4 | 0 (+0 sign) | | | -| 154 | `Unkstruct_80164BDC` | 384 | 128 | 5 | 0x64 | 0 (+1 sign) | | | -| 155 | `Unkstruct_8c2ab96e` | 384 | 128 | 3 | 0x8 | 0 (+0 sign) | | | -| 156 | `Unkstruct_d448adea` | 384 | 48 | 0 | 0x0 | 0 (+0 sign) | | | -| 157 | `Unkstruct_2552224c` | 381 | 127 | 3 | 0x10 | 0 (+0 sign) | | | -| 158 | `Unkstruct_e79a0730` | 378 | 126 | 2 | 0x24 | 0 (+0 sign) | | | -| 159 | `Unkstruct_1a8e907f` | 378 | 126 | 1 | 0x4 | 0 (+0 sign) | | | -| 160 | `Unkstruct_e1c73ac0` | 378 | 126 | 3 | 0x6 | 0 (+0 sign) | | | -| 161 | `Unkstruct_8ba4da0a` | 378 | 126 | 3 | 0x1c | 0 (+0 sign) | | | -| 162 | `Unkstruct_93e44aed` | 378 | 126 | 2 | 0x1c | 0 (+0 sign) | | | -| 163 | `Unkstruct_24687968` | 378 | 126 | 3 | 0xe | 0 (+0 sign) | | | -| 164 | `Unkstruct_89684c99` | 375 | 125 | 3 | 0x6 | 0 (+0 sign) | | | -| 165 | `Unkstruct_d0754cca` | 375 | 125 | 2 | 0x24 | 0 (+0 sign) | | | -| 166 | `Unkstruct_89f82b52` | 372 | 124 | 3 | 0x1ca | 0 (+0 sign) | | | -| 167 | `Unkstruct_924d03d6` | 372 | 124 | 3 | 0x6 | 0 (+0 sign) | | | -| 168 | `Unkstruct_7fd6458b` | 372 | 124 | 1 | 0x40 | 0 (+0 sign) | | | -| 169 | `Unkstruct_92a372de` | 372 | 124 | 2 | 0x24 | 0 (+0 sign) | | | -| 170 | `Unkstruct_4a31f01c` | 372 | 124 | 3 | 0x1c | 0 (+0 sign) | | | -| 171 | `Unkstruct_39de3511` | 372 | 124 | 3 | 0x12 | 0 (+0 sign) | | | -| 172 | `Unkstruct_1b4331f0` | 369 | 123 | 3 | 0x5e | 0 (+0 sign) | | | -| 173 | `Unkstruct_75e9a6af` | 369 | 123 | 3 | 0x10 | 0 (+0 sign) | | | -| 174 | `Unkstruct_b39064df` | 366 | 14 | 24 | 0xa2 | 3 (+3 sign) | | | -| 175 | `Unkstruct_5c635b4b` | 364 | 14 | 13 | 0x34 | 0 (+0 sign) | | | -| 176 | `Unkstruct_800AE620` | 325 | 322 | 0 | 0x0 | 0 (+0 sign) | D_800AE620 | | +| 101 | `Unkstruct_801152A0` | 665 | 399 | 1 | 0x2 | 0 (+0 sign) | D_801152A0 | | +| 102 | `Unkstruct_fdd04bae` | 650 | 130 | 3 | 0x38 | 0 (+0 sign) | | | +| 103 | `Unkstruct_eb8b6fbf` | 645 | 129 | 5 | 0xfe | 0 (+0 sign) | | | +| 104 | `Unkstruct_90d0825c` | 645 | 129 | 5 | 0x1c | 1 (+0 sign) | | | +| 105 | `Unkstruct_27c177f1` | 645 | 129 | 4 | 0x34 | 0 (+0 sign) | | | +| 106 | `Unkstruct_4f9f60b8` | 630 | 126 | 4 | 0x78 | 0 (+0 sign) | | | +| 107 | `Unkstruct_7a31a22f` | 630 | 126 | 2 | 0x19c | 0 (+0 sign) | | | +| 108 | `Unkstruct_187abeff` | 630 | 126 | 5 | 0x68 | 0 (+0 sign) | | | +| 109 | `Unkstruct_f9fa1fb7` | 630 | 126 | 4 | 0x20 | 0 (+0 sign) | | | +| 110 | `Unkstruct_20d4328b` | 630 | 126 | 4 | 0x38 | 0 (+0 sign) | | | +| 111 | `Unkstruct_d94ab931` | 625 | 125 | 4 | 0x6 | 2 (+1 sign) | | | +| 112 | `Unkstruct_7ef9c9ef` | 625 | 125 | 4 | 0x6 | 2 (+1 sign) | | | +| 113 | `Unkstruct_ad0948d5` | 625 | 125 | 5 | 0x1c | 0 (+0 sign) | | | +| 114 | `Unkstruct_fccefc1f` | 625 | 125 | 2 | 0x1a | 0 (+0 sign) | | | +| 115 | `Unkstruct_57ae03d1` | 620 | 124 | 2 | 0x2c | 0 (+0 sign) | | | +| 116 | `Unkstruct_af1e9d57` | 620 | 248 | 4 | 0x64 | 0 (+0 sign) | | | +| 117 | `Unkstruct_172cbd29` | 620 | 124 | 2 | 0x1fc | 0 (+0 sign) | | | +| 118 | `Unkstruct_2c2c1d2e` | 620 | 124 | 4 | 0x24 | 0 (+0 sign) | | | +| 119 | `Unkstruct_aaf4c4dd` | 615 | 615 | 1 | 0x16 | 0 (+0 sign) | | | +| 120 | `Unkstruct_293d71dc` | 600 | 75 | 0 | 0x0 | 0 (+0 sign) | | | +| 121 | `Unkstruct_78eaa73c` | 553 | 7 | 15 | 0x10a | 0 (+7 sign) | | | +| 122 | `Unkstruct_8011512E` | 532 | 133 | 1 | 0x2 | 0 (+0 sign) | D_8011512E | | +| 123 | `Unkstruct_8016BFA8` | 532 | 133 | 4 | 0x24 | 0 (+0 sign) | | | +| 124 | `Unkstruct_30befa8c` | 520 | 130 | 3 | 0xfe | 0 (+0 sign) | | | +| 125 | `Unkstruct_b7ae0eae` | 520 | 130 | 1 | 0x2 | 1 (+0 sign) | | | +| 126 | `Unkstruct_01082f7a` | 520 | 520 | 1 | 0x4 | 0 (+0 sign) | | | +| 127 | `Unkstruct_db0ee441` | 516 | 129 | 4 | 0x38 | 0 (+0 sign) | | | +| 128 | `Unkstruct_7476116e` | 516 | 129 | 1 | 0x4 | 0 (+0 sign) | | | +| 129 | `Unkstruct_290ce261` | 504 | 126 | 3 | 0xfe | 0 (+0 sign) | | | +| 130 | `Unkstruct_d6100faa` | 504 | 126 | 3 | 0x20 | 0 (+0 sign) | | | +| 131 | `Unkstruct_5ebcbddc` | 504 | 126 | 3 | 0xe | 0 (+0 sign) | | | +| 132 | `Unkstruct_7cb40b10` | 500 | 500 | 1 | 0x4 | 0 (+0 sign) | | | +| 133 | `Unkstruct_4e078af8` | 496 | 124 | 2 | 0x4 | 0 (+2 sign) | | | +| 134 | `Unkstruct_494cef68` | 496 | 124 | 2 | 0x188 | 0 (+0 sign) | | | +| 135 | `Unkstruct_93df0322` | 496 | 124 | 4 | 0x38 | 0 (+0 sign) | | | +| 136 | `Unkstruct_3b2b6e45` | 496 | 124 | 4 | 0x38 | 0 (+0 sign) | | | +| 137 | `Unkstruct_9e228c39` | 492 | 123 | 3 | 0x6 | 0 (+0 sign) | | | +| 138 | `Unkstruct_a05973fa` | 492 | 123 | 3 | 0x2c | 0 (+0 sign) | | | +| 139 | `Unkstruct_48c11385` | 441 | 21 | 5 | 0x68 | 0 (+0 sign) | | | +| 140 | `Unkstruct_a55a221e` | 428 | 428 | 1 | 0x215 | 0 (+0 sign) | | | +| 141 | `Unkstruct_02864986` | 420 | 420 | 1 | 0x2 | 0 (+1 sign) | | D_80115158 | +| 142 | `Unkstruct_80131B14` | 404 | 383 | 5 | 0x32 | 0 (+0 sign) | | | +| 143 | `Unkstruct_8011511A` | 404 | 146 | 1 | 0x2 | 0 (+1 sign) | D_8011511A | | +| 144 | `Unkstruct_8016B5C0` | 399 | 133 | 2 | 0x1c | 0 (+0 sign) | | | +| 145 | `Unkstruct_8016BFA8` | 399 | 133 | 3 | 0x6 | 0 (+0 sign) | | | +| 146 | `Unkstruct_8011F7F0` | 399 | 133 | 3 | 0x42 | 0 (+0 sign) | D_8011F7F0 | | +| 147 | `Unkstruct_1649b9a7` | 392 | 28 | 8 | 0x38 | 0 (+2 sign) | | | +| 148 | `Unkstruct_ea5ed765` | 390 | 130 | 1 | 0xdb | 0 (+0 sign) | | | +| 149 | `Unkstruct_80135260` | 390 | 130 | 3 | 0x6 | 0 (+0 sign) | | | +| 150 | `Unkstruct_a472a6ba` | 387 | 129 | 3 | 0x1c | 0 (+0 sign) | | | +| 151 | `Unkstruct_630777a3` | 387 | 258 | 2 | 0x5 | 0 (+0 sign) | | | +| 152 | `Unkstruct_f2440762` | 384 | 128 | 1 | 0x4 | 0 (+0 sign) | | | +| 153 | `Unkstruct_80164BDC` | 384 | 128 | 5 | 0x64 | 0 (+1 sign) | | | +| 154 | `Unkstruct_8c2ab96e` | 384 | 128 | 3 | 0x8 | 0 (+0 sign) | | | +| 155 | `Unkstruct_d448adea` | 384 | 48 | 0 | 0x0 | 0 (+0 sign) | | | +| 156 | `Unkstruct_2552224c` | 381 | 127 | 3 | 0x10 | 0 (+0 sign) | | | +| 157 | `Unkstruct_e79a0730` | 378 | 126 | 2 | 0x24 | 0 (+0 sign) | | | +| 158 | `Unkstruct_1a8e907f` | 378 | 126 | 1 | 0x4 | 0 (+0 sign) | | | +| 159 | `Unkstruct_e1c73ac0` | 378 | 126 | 3 | 0x6 | 0 (+0 sign) | | | +| 160 | `Unkstruct_8ba4da0a` | 378 | 126 | 3 | 0x1c | 0 (+0 sign) | | | +| 161 | `Unkstruct_93e44aed` | 378 | 126 | 2 | 0x1c | 0 (+0 sign) | | | +| 162 | `Unkstruct_24687968` | 378 | 126 | 3 | 0xe | 0 (+0 sign) | | | +| 163 | `Unkstruct_89684c99` | 375 | 125 | 3 | 0x6 | 0 (+0 sign) | | | +| 164 | `Unkstruct_d0754cca` | 375 | 125 | 2 | 0x24 | 0 (+0 sign) | | | +| 165 | `Unkstruct_89f82b52` | 372 | 124 | 3 | 0x1ca | 0 (+0 sign) | | | +| 166 | `Unkstruct_924d03d6` | 372 | 124 | 3 | 0x6 | 0 (+0 sign) | | | +| 167 | `Unkstruct_7fd6458b` | 372 | 124 | 1 | 0x40 | 0 (+0 sign) | | | +| 168 | `Unkstruct_92a372de` | 372 | 124 | 2 | 0x24 | 0 (+0 sign) | | | +| 169 | `Unkstruct_4a31f01c` | 372 | 124 | 3 | 0x1c | 0 (+0 sign) | | | +| 170 | `Unkstruct_39de3511` | 372 | 124 | 3 | 0x12 | 0 (+0 sign) | | | +| 171 | `Unkstruct_1b4331f0` | 369 | 123 | 3 | 0x5e | 0 (+0 sign) | | | +| 172 | `Unkstruct_75e9a6af` | 369 | 123 | 3 | 0x10 | 0 (+0 sign) | | | +| 173 | `Unkstruct_b39064df` | 366 | 14 | 24 | 0xa2 | 3 (+3 sign) | | | +| 174 | `Unkstruct_5c635b4b` | 364 | 14 | 13 | 0x34 | 0 (+0 sign) | | | +| 175 | `Unkstruct_800AE620` | 325 | 322 | 0 | 0x0 | 0 (+0 sign) | D_800AE620 | | +| 176 | `Unkstruct_80137D08` | 301 | 38 | 18 | 0x20 | 13 (+4 sign) | | D_80074808, D_800A5E60 | | 177 | `Unkstruct_814e4d87` | 300 | 75 | 0 | 0x0 | 0 (+0 sign) | | | | 178 | `Unkstruct_09b02bee` | 300 | 75 | 2 | 0x4 | 0 (+0 sign) | | | | 179 | `Unkstruct_1ef3b11b` | 280 | 10 | 7 | 0x10c | 0 (+1 sign) | | | @@ -207,4 +207,4 @@ | 199 | `Unkstruct_80126B62` | 265 | 252 | 2 | 0xe | 0 (+1 sign) | D_80126B62 | | | 200 | `Unkstruct_76f4299b` | 262 | 131 | 1 | 0x4a | 0 (+0 sign) | | | -*18739 types in all; the table shows the 200 largest by site count. The full map with every type's layout (offset, width, sign, site count per field) and conflicts is `.run/P37/census/struct_map.json`.* +*18208 types in all; the table shows the 200 largest by site count. The full map with every type's layout (offset, width, sign, site count per field) and conflicts is `.run/P37/census/struct_map.json`.* diff --git a/phase-ends/current/logs/T4.c3.md b/phase-ends/current/logs/T4.c3.md new file mode 100644 index 0000000000..a660f13ded --- /dev/null +++ b/phase-ends/current/logs/T4.c3.md @@ -0,0 +1,18 @@ +# T4.c3 — head-fold: sibling headers + #define bodies (commit 61c49eda0) + +## Change (tools/restruct.py) +- `hf_unit` header branch: includer map = `HF_INCLUDERS_OVERRIDE` or `recipes()[2]` (delever.includers, -Iinclude order). New: `sibs` = every non-`include/` `.h` whose includer set meets the unit header's `.c` includers (= the includers' include closure); each whose text names the local type joins `views` (same type-aware `_hf_file_edits`). Edits land in `u["edits"][sib]`, so `judge_files` compiles them (recs dedup by obj) and `_inflight_add` covers them. +- `_hf_file_edits` now returns `(acc, tag_edits, refusals)`. New pass over file-scope `#define` bodies (`HF_DEFINE`): an access whose base is typed by the file's globals, or by EVERY expanding function's locals/params, is renamed; typed in only some expansions -> unit refused `": macro `M` access `b->f` is the local type in only some of its expansions"`; a base naming a macro parameter is left to the judge. +- Obj1CDC cause: `ov_SC05_010_jr_80181CDC.c:2791` `#define AIM(...)` reads `obj->x/y/z` at file scope (outside every fn span, so never scanned); `obj` is the `Obj1CDC *` param of the expanding functions. Now renamed x->unk6, y->unkA, z->unkE. +- Selftest: `HF_FIX_SIB` (hf_sib.h: `hp->h8` + a `#define HS` body `hp->hC`) in the override map; check "a sibling header in the includers' closure is renamed too". + +## Verified +- `.venv/bin/python tools/restruct.py --selftest` -> `restruct --selftest: 76/76 OK`, struct_layout 9/9 OK. +- `--plan --rung L --headers --only Unkstruct_800B5CB8 Unkstruct_80078E78 Unkstruct_80126B58 --redraw "FOLD-REFUSED:COMPILE-ERROR"` -> `1 of 1 files · 5 of 5 definitions`, src/shared/engine_types.h. +- Dry proof `.run/T4c3_proof/proof.py` (scratch mirror `.run/T4c3_proof/tree`: src/shared + src/ov_MAIN_012 copied, rest symlinked; the unit's composed edits written there only): Entry8014A238 unit = 2 renames over [engine_types.h, shared/ov/func_8014A238.h] (`p->f_0` -> `p->unk0`, `f_AA` -> `unkAA`); recipe of ov_MAIN_012_jr_801458E0.c compiled in the mirror -> rc 0, object written. Negative control (sibling header restored to original in mirror) -> rc 33, `func_8014A238.h:11: structure has no member named `f_0'`. +- Obj1CDC unit (real tree, no write): not refused, 24 renames, macro-body edits x/y/z present. + +## Notes for expert +- Proof compiled only; bytes are judged by the cycle (`--apply`), not here. +- Sibling set scans every includer-closure header's text once per header unit (engine_types.h: many); plan ran fine, cost not measured separately. +- No src/ / include/ written; `.run/T4c3_proof/` is scratch. diff --git a/phase-ends/current/logs/T4.md b/phase-ends/current/logs/T4.md new file mode 100644 index 0000000000..42f069815c --- /dev/null +++ b/phase-ends/current/logs/T4.md @@ -0,0 +1,36 @@ +# T4 log — fold the head types fleet-wide (rung L) + +expert: expert-opus55 · 2026-09-29 + +## Timeline +- Start: HEAD f75e99c83. Baseline `--check-structs` (.run/logs/t4_census0.log): dup_classes=206 outside_canon=6075 dead=143 variants=40 pad_names=26 parse_error_decls=1106 controls 4/4; head names in no dup class / camp (layouts unique by construction). +- `restruct --plan --rung L --only Unkstruct_*` → "0 of 0 files" (.run/logs/t4_planL.log). Retriever-code (no report): rung L folds only EXACT layout-hash twins of canonical defs (tier 1/2), file scope only, `.c` only; `--only` matches file paths only; uses keep local name via `typedef Canon Local;`; renames were textual. +- Scratch scan .run/P38/t4/defs.py → headsized.json: 0x10C 194 local defs / 17 layouts (131 block-scope `Ent` in func_8014D820 copies, 29 in engine_types.h, 2 shared/ov/func_8014D820__*.h), 0x98 21 (md_MAIN_011 six = player block; Blk152* = struct-copy blob 800_b.c:311; Fr_* = stack frame), 0x24C 0 local. None hash-equal to the canonical → rung L as-is yields 0. +- Decision: head-fold mode keyed by canonical name + size, exclusions with cause, judge decides width/sign mismatches. +- c1 (d87c35435): head-fold mode, 70/70 selftest, probe t38_4probe 4 FOLDED, R22 green. +- Cycle t38_4L1: launched twice by mistake (setsid launch with 0-byte log looked dead; relaunched via run.sh --bg) → two concurrent `--apply t38_4L1`; 5 TOOL-ERROR JSONDecodeError on inflight.json; 3 files edited-unjudged → reverted by hand (git checkout); R22 on the rest green (.run/logs/t4r22_L1.log) → committed 418a0a294; stale inflight.json moved to .run/P38/t4/inflight_L1.json. +- Player block pad44[3] → u8 unk44..46 (md_MAIN_011 locals' widths), include/struct_types.h, R22 green (.run/logs/t4r22_pad44.log) → 1bf438607. +- c2 (5ae5fe94c): atomic+flocked inflight, apply.lock, TOOL-ERROR restores, hf_settled unsettles on same-label file TOOL-ERROR; cycle commits ledger with add -f; 75/75. +- Cycle t38_4L2/L3 (REDRAW FOLD-REFUSED:no canonical field): ea4ab8089 (6 folded, R22 green), 4cae59454 (0 written). +- Header cycle t38_4HL1 (HEADERS=1, 29 defs, 1679 s): 3 folded / 26 refused, R22 green → 7fd9f2cd8. 5 COMPILE-ERROR from sibling per-function headers / a macro body. +- c3 (61c49eda0): renames reach sibling .h in the includers' include closure and #define bodies; 76/76. +- Redraw t38_4RL1 (.c COMPILE-ERROR, 0 folded) 0e8b2a60b; t38_4HRL1 (headers, 5 defs): 3 folded / 2 refused, R22 green → a21682ae7. +- Final status (.run/P38/t4/status_final.txt): 200 units, FOLDED 162 onto Unkstruct_800B5CB8, FOLD-REFUSED 38. +- Verify (.run/logs/t4verify.log): check-structs FAIL overall (dup_classes=205 outside_canon=5917 dead=142 variants=40 pad_names=25 parse_error_decls=1106) with 0 head names in dup classes/twins/variants; check-ledger 0 violations; extract-all 217/0; check-all 218/0; rc 0. + +## Kept units (FOLD-REFUSED, cause) +- DIFFERS (29): md_MAIN_011 six player-block copies (Gs_80078E78, Gs_80078E78_init, S, S1254, S2BC4, St78); ov_SC03_094 Ent_8017D898; ov_SC03_102_after Ent@func_8014D820; engine_types.h Ent_801202A0 and the Ent_8017FD58 family (20). +- indexed array spans canonical fields (4): Cnt_8018E8A0 ×3 (`f[0x10C]`), engine_types.h Actor_80178D40 `unkDC[7]`. +- canonical pad at 0x3C (3): Ent_8018D654 ×2, Ent_8018D3A4 (generated max-site-split block; not hand-editable). +- COMPILE-ERROR (2): ov_SC06_029_jr_8017C954 Obj8017EBC4 (:4027 invalid ->), engine_types.h Obj1CDC (ov_SC05_010_jr_80181CDC.c:2873 invalid ->). +- Excluded by cause: Blk152* (13 defs), Fr_* (2 defs). + +## Hypotheses rejected +- "rung L already folds heads": refuted, exact-hash only (plan 0 files). +- "all 0x98 defs are the player block": refuted, Blk152 copy blob, Fr_ stack frame. + +## Coder briefs +- T4.c1 head-fold mode; T4.c2 inflight race/tool-error restore/cycle ledger; T4.c3 sibling-header + macro renames. Logs logs/T4.c{1,2,3}.md. + +## Retriever questions +- retriever-code: rung L mechanics, --only, cycle env, census def enumeration → inline answer, no report id. diff --git a/phase-ends/current/tasks/INDEX.md b/phase-ends/current/tasks/INDEX.md index 86e72f8e00..f994e03921 100644 --- a/phase-ends/current/tasks/INDEX.md +++ b/phase-ends/current/tasks/INDEX.md @@ -3,3 +3,4 @@ T1 | done | phase-start health and baselines | - | tasks/T1.md | logs/T1.md | - T2 | done | --check-structs instrument and actor-struct fix | - | tasks/T2.md | logs/T2.md | - T3 | done | head-type layouts and canonical files | - | tasks/T3.md | logs/T3.md | - +T4 | done | fold the head types fleet-wide (rung L) | - | tasks/T4.md | logs/T4.md | - diff --git a/phase-ends/current/tasks/T4.md b/phase-ends/current/tasks/T4.md new file mode 100644 index 0000000000..0870678ae4 --- /dev/null +++ b/phase-ends/current/tasks/T4.md @@ -0,0 +1,34 @@ +# T4 — fold the head types fleet-wide (rung L) + +Status: done | expert: expert-opus55 | ctx-at-completion: n/a | commit: see COMMIT | coder runs: c1 opus55 done (d87c35435), c2 opus55 done (5ae5fe94c), c3 opus55 done (61c49eda0) +Done: 162 of 200 local head-type definitions folded onto `Unkstruct_800B5CB8` through judged rung-L head-fold batches (accesses renamed by offset), each batch committed after its R22; 38 kept with cause; the three canonical names sit in no dup class, layout twin or variant camp. +Files: +- tools/restruct.py — rung L head-fold mode (`--only `), type-aware offset renames incl. includers, sibling headers, macro bodies; `--status --rung L --only` buckets; atomic flocked inflight, apply.lock, TOOL-ERROR restore; +selftests (76) +- tools/restruct_cycle.sh — `$TASK` in commit msg, ledger committed with add -f, no CURRENT_PHASE.md append +- include/struct_types.h — player block `pad44[3]` → `u8 unk44..46` (md_MAIN_011 widths) +- src/** (≈145 TUs), src/shared/engine_types.h, src/shared/ov/*.h — folds (batches t38_4probe, L1, L2, HL1, HRL1) +- docs/ops/p38-t4-2026-09-29-restruct-head-fold-mode.md + docs/ops/INDEX.md — the mode, ledger, cycle gotcha +- docs/struct-map.md — regenerated stamp +Decisions: +- binding: a head fold is keyed by the canonical NAME and layout SIZE, not by layout hash; non-head objects of the same size are excluded by name glob with a cause (`HF_EXCLUDE`: Blk152* copy blob, Fr_* stack frame); width/sign mismatches are left to the byte judge, never refused up front. +- Local definitions become `typedef ;` aliases (uses keep the local name); renaming uses to the canonical name is left for a later readability pass. +Deviations: +- 0x24C (`Unkstruct_80126B58`) has no local definition anywhere (scan .run/P38/t4/headsized.json); nothing to fold. +- Player block: 0 of 6 md_MAIN_011 copies folded (all DIFFERS) even after the pad44 split. +- Overall `--check-structs` still FAILs (fleet-wide gates for later tasks); the done-when's clause (the three in no dup class/camp) holds. +- Batch t38_4L1 ran twice concurrently (my relaunch); 3 edited-unjudged files reverted by hand; the tree committed only after a green R22. +Findings: +- Kept by cause: DIFFERS 29 (Ent_8017FD58 family 20 + Ent_801202A0 in engine_types.h; md_MAIN_011 player copies 6; ov_SC03_094 Ent_8017D898; ov_SC03_102 Ent), indexed array spanning fields 4 (Cnt_8018E8A0 ×3, Actor_80178D40 unkDC[7]), canonical pad at 0x3C 3 (Ent_8018D654 ×2, Ent_8018D3A4), COMPILE-ERROR 2 (Obj8017EBC4 ov_SC06_029_jr_8017C954.c:4027, Obj1CDC ov_SC05_010_jr_80181CDC.c:2873). Full list logs/T4.md. +- Remaining head-sized dup classes are all kept/excluded locals: Ent_8017FD58×20, Cnt_8018E8A0×3, Ent_8018D3A4/654, Ent/EntD820, Blk152×6, Fr_×2. +- The 20 Ent_8017FD58 DIFFERS + pad3C refusals are the max-site split's losers: evidence for T5's `Unkstruct_800B5CB8` split/union call. +- Counts after: dup_classes=205 outside_canon=5917 dead=142 variants=40 pad_names=25 parse_error_decls=1106. +Gotchas: +- workflow: a detached `restruct_cycle.sh` log stays 0 bytes until its first batch line; `ps` for `restruct_cycl[e]` before any relaunch (a double launch raced inflight.json). +- harness: `restruct_cycle.sh` stops on final X≠Y and leaves edited files as restruct left them; revert unjudged files before R22. +- harness: `.run/P37/restruct/ledger.jsonl` is tracked under an ignored dir; `commit_task.sh` cannot stage it (the cycle uses add -f). +- generalizable: an opaque-tier struct fold must rename accesses in every file the definition reaches (includers, their sibling headers, macro bodies), type-aware by base, or the judge sees compile errors, not layout verdicts. +- harness: a header head-fold judges every includer (~55 s/unit, 29 units = 28 min); budget header batches. +Research: none (one retriever-code answer inline, no report) +Next task needs: T5 decides the 800B5CB8 split/unions using the kept DIFFERS/pad3C units above; md_MAIN_011 player copies need width reconciliation; `--rung L --only ` is the fold tool for any new canonical type. +Verified: .venv/bin/python tools/type_census.py --out-dir .run/P38/census --check-structs; .venv/bin/python tools/restruct.py --check-ledger && make clean && make extract-all JOBS=16 && make check-all JOBS=16 → census FAIL (fleet counts above; head names in 0 dup classes/twins/variants), check-ledger 0 violations, extract-all 217 extracted 0 failed, check-all 218 passed 0 failed, rc 0 (.run/logs/t4verify.log) +Full log: phase-ends/current/logs/T4.md