T4: head-fold log, summary, ops note

This commit is contained in:
Drew T
2026-09-29 23:24:25 -06:00
parent a21682ae7a
commit 28defe31cf
7 changed files with 271 additions and 172 deletions
+1
View File
@@ -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
@@ -0,0 +1,9 @@
# §P38 T4 — 2026-09-29: restruct rung L head-fold mode
- `restruct.py --rung L --only <canonical type names>` = 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 <Canon> <Local>;` in place; `struct <Tag>` 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 <types>` 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).
+172 -172
View File
@@ -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_<addr>`: the lowest global instance's address, else the lowest member function's); fields are placeholders (`unk<HEX>`) 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_<addr>`: the lowest global instance's address, else the lowest member function's); fields are placeholders (`unk<HEX>`) 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`.*
+18
View File
@@ -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 `"<file>: 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.
+36
View File
@@ -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.
+1
View File
@@ -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 | -
+34
View File
@@ -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 <canonical names>`), 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 <Canon> <Local>;` 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 <canon names>` 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