phase12: match three more bodies (724 bodies / 733 regions)
This commit is contained in:
@@ -959,7 +959,7 @@
|
||||
952 0x801007E0 0x80100808 40 fallthrough 3 frame 1 - 1
|
||||
#
|
||||
# listed=952
|
||||
# excluded_already_registered=728
|
||||
# excluded_already_registered=731
|
||||
# excluded_bad_extent_start=8
|
||||
# excluded_degenerate_body=252
|
||||
# excluded_delay_slot_start=5
|
||||
@@ -968,6 +968,6 @@
|
||||
# excluded_low_confidence_grade=90
|
||||
# excluded_named_exclusion=9
|
||||
# excluded_no_extent=0
|
||||
# excluded_recorded_negative=100
|
||||
# excluded_recorded_negative=97
|
||||
# excluded_restores_unsaved=11
|
||||
# excluded_trapping_arith=48
|
||||
|
||||
|
@@ -378,10 +378,12 @@
|
||||
0x80073250 0x80073284 src/func_80073250.c
|
||||
0x80073364 0x800733C4 src/func_80073364.c
|
||||
0x800734A4 0x800734DC src/func_800734A4.c
|
||||
0x8007374C 0x80073798 src/func_8007374C.c
|
||||
0x80073F78 0x8007405C src/func_80073F78.c
|
||||
0x80074C00 0x80074C74 src/func_80074C00.c
|
||||
0x8007759C 0x800775E4 src/func_8007759C.c
|
||||
0x80077D04 0x80077D7C src/func_80077D04.c
|
||||
0x8007A114 0x8007A16C src/func_8007A114.c
|
||||
0x8007A2AC 0x8007A324 src/func_8007A2AC.c
|
||||
0x8007A404 0x8007A428 src/func_8007A404.c
|
||||
0x8007A428 0x8007A4FC src/func_8007A428.c
|
||||
@@ -604,6 +606,7 @@
|
||||
0x800F6E50 0x800F6ED0 src/func_800F6E50.c maspsx=epilogue
|
||||
0x800F6F20 0x800F6F5C src/func_800F6F20.c
|
||||
0x800F75D0 0x800F760C src/func_800F75D0.c
|
||||
0x800F7610 0x800F765C src/func_800F7610.c maspsx=epilogue
|
||||
0x800F7990 0x800F79C0 src/func_800F7990.c
|
||||
0x800F79C0 0x800F79F0 src/func_800F79C0.c
|
||||
0x800F79F0 0x800F7A20 src/func_800F79F0.c
|
||||
|
||||
|
@@ -6,11 +6,11 @@
|
||||
|
||||
## STATE — SOLO CONTINUATION, 2026-09-24 (current)
|
||||
|
||||
**721 bodies / 730 regions**, from 685 / 694 at the last session stop — **+36 bodies / +36 regions**.
|
||||
The Phase 12 milestone remains 750 bodies, so **+29 remains**. The promoted whole-binary gate is green:
|
||||
`c_regions=730`, `differing_bytes=0`, SHA-1
|
||||
**724 bodies / 733 regions**, from 685 / 694 at the last session stop — **+39 bodies / +39 regions**.
|
||||
The Phase 12 milestone remains 750 bodies, so **+26 remains**. The promoted whole-binary gate is green:
|
||||
`c_regions=733`, `differing_bytes=0`, SHA-1
|
||||
`e173426c157384ebf1b6caf8c6fea18a85a14af9`; 348 synthetic tests pass and extents report
|
||||
`regions=730 disagreements=0 result=AGREE`.
|
||||
`regions=733 disagreements=0 result=AGREE`.
|
||||
|
||||
The requested second batch of 20 is complete. Twenty additional bodies are now matched:
|
||||
`0x800BC9C4`, `0x800BC8C4`, `0x8006BB0C`, `0x8002D17C`, `0x801029A0`, `0x80055958`,
|
||||
@@ -24,7 +24,7 @@ Final clean verification (2026-09-25): `make clean && make all`, `make worklist`
|
||||
`make extents-verify`, and `make check` all exited 0. Both clean assembly and code rebuilds
|
||||
matched the USA executable byte-for-byte; each is 1,886,208 bytes with SHA-1
|
||||
`e173426c157384ebf1b6caf8c6fea18a85a14af9`. The final worklist is 952 rows and the extents
|
||||
check reports `regions=730 disagreements=0 result=AGREE`.
|
||||
check reports `regions=733 disagreements=0 result=AGREE`.
|
||||
## STATE — SESSION STOP, 2026-09-24 23:35 (historical; superseded by the state above, kept for provenance)
|
||||
|
||||
**685 bodies / 694 regions**, from 602 / 611 at the Phase 11 close — **+83 bodies**. **Milestone 750 was NOT
|
||||
|
||||
@@ -2470,3 +2470,22 @@ SHA-1, exit 0. `make check` passed with 348 tests and extents `regions=730 disag
|
||||
|
||||
**Count after the peer batch: 721 bodies / 730 regions (+119 bodies from the Phase 12 open baseline;
|
||||
+29 remain to milestone 750).**
|
||||
|
||||
### Peer batch 2 — `0x8007374C` and `0x800F7610` MATCH
|
||||
|
||||
* `0x8007374C..0x80073798`, 76/76, plain C with hard-bound object/counter registers.
|
||||
* `0x800F7610..0x800F765C`, 76/76, three callback loads with `maspsx=epilogue`.
|
||||
* Both peer sources were copied to tracked paths, freshly re-verified, and merged as a two-region
|
||||
candidate. The candidate whole-binary gate passed at `c_regions=732`, zero differing bytes,
|
||||
expected SHA-1, exit 0.
|
||||
|
||||
### Worker D claim — `0x8007A114` MATCH
|
||||
|
||||
* `0x8007A114..0x8007A16C`, 88/88, default toolchain. The scaled index is written before the literal
|
||||
base in the address addition to preserve the original commutative operand order.
|
||||
* Fresh range and candidate whole-binary gate both passed with zero differing bytes; the candidate
|
||||
gate reported `c_regions=733`, expected SHA-1, exit 0. `make check` passed with 348 tests and
|
||||
extents `regions=733 disagreements=0`; worklist regeneration reports 952 rows.
|
||||
|
||||
**Count after task 27: 724 bodies / 733 regions (+122 bodies from the Phase 12 open baseline;
|
||||
+26 remain to milestone 750).**
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
* func_8007374C — 76 bytes at 0x8007374C..0x80073798
|
||||
*
|
||||
* Allocate/look up an object, clear its state word, and initialize its tag
|
||||
* from the caller's shifted index plus the low nibble of g_80122354.
|
||||
*
|
||||
* The object layout and helper meaning are address-based hypotheses; the
|
||||
* instruction match is the evidence for this region.
|
||||
*/
|
||||
|
||||
typedef struct Obj { char pad[30]; short tag; char pad2[8]; short state; } Obj;
|
||||
extern Obj *func_80073798(int);
|
||||
extern int g_80122354;
|
||||
|
||||
void func_8007374C(int a0)
|
||||
{
|
||||
register int s0 __asm__("$16") = a0;
|
||||
register Obj *p __asm__("$4") = func_80073798(s0);
|
||||
register int shifted __asm__("$3");
|
||||
|
||||
if (p) {
|
||||
p->state = 0;
|
||||
shifted = s0 << 4;
|
||||
p->tag = (short)(shifted + (g_80122354 & 15));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
* func_8007A114 — 88 bytes at 0x8007A114..0x8007A16C
|
||||
*
|
||||
* Resolve a record from a short index and a literal base pointer, select one
|
||||
* of two values according to the record tag, and return its low bit.
|
||||
*
|
||||
* The scaled index is written before the base in the address addition to
|
||||
* preserve the original commutative operand order. The base address is literal
|
||||
* because this site uses an absolute load despite the registry's gp marker.
|
||||
*
|
||||
* The structure meanings are address-based hypotheses; the byte match is the
|
||||
* evidence for this region.
|
||||
*/
|
||||
|
||||
int func_8007A114(char *a0)
|
||||
{
|
||||
char *p = (char *)(*(short *)(a0 + 2) * 76 + *(int *)0x80121BFC);
|
||||
unsigned int v;
|
||||
|
||||
if (*(unsigned char *)(p + 42) == 24)
|
||||
v = *(unsigned int *)(p + 40) >> 8;
|
||||
else
|
||||
v = *(unsigned short *)(*(int *)(a0 + 28) + 6);
|
||||
|
||||
return v & 1;
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
/*
|
||||
* func_800F7610 — 76 bytes at 0x800F7610..0x800F765C
|
||||
*
|
||||
* Dispatch three fields from an object to three helpers. The original keeps
|
||||
* the object pointer in s0 and uses the documented epilogue delay-slot shape.
|
||||
*
|
||||
* REGION TOKEN: `maspsx=epilogue`.
|
||||
*
|
||||
* The field names and helper purposes are address-based hypotheses; the byte
|
||||
* match is the evidence for this region.
|
||||
*/
|
||||
|
||||
typedef struct Obj { short h0; int w4; unsigned char b8, b9, b10; } Obj;
|
||||
extern void func_80103B54(short);
|
||||
extern void func_80103B60(int);
|
||||
extern void func_80103B6C(unsigned char, unsigned char, unsigned char);
|
||||
|
||||
void func_800F7610(Obj *a0)
|
||||
{
|
||||
register Obj *s0 __asm__("$16") = a0;
|
||||
|
||||
func_80103B54(s0->h0);
|
||||
func_80103B60(s0->w4);
|
||||
func_80103B6C(s0->b8, s0->b9, s0->b10);
|
||||
}
|
||||
Reference in New Issue
Block a user