From 6d5fe3dfde1eac157789a1a010756502ea9eac9c Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Mon, 29 Jun 2026 12:51:40 -0600 Subject: [PATCH] feat(phase-22): bank 4 fns from cheap-tier A/B experiment (byte-verified, fleet 63.66->63.67) Whole-binary SHA gate (gate_stage) banked 4 of 15 match_one-proxy matches: func_80138BE0 func_8012F828 func_8012E9C0 (ov_SC01_077_a) + func_80141100 (main). The other 11 are self-match-but-gate-rejected (TU declaration plumbing); logged to the backlog as recovery fuel. ov_SC01_077 stays byte-identical (d19c9580). --- src/ov_SC01_077/ov_SC01_077.c | 44 ++++++++++++++++++++- src/ov_SC01_077/ov_SC01_077_a.c | 68 +++++++++++++++++++++++++++++++-- 2 files changed, 108 insertions(+), 4 deletions(-) diff --git a/src/ov_SC01_077/ov_SC01_077.c b/src/ov_SC01_077/ov_SC01_077.c index a38f77ba65..84ea33d94e 100644 --- a/src/ov_SC01_077/ov_SC01_077.c +++ b/src/ov_SC01_077/ov_SC01_077.c @@ -714,7 +714,49 @@ INCLUDE_ASM("asm/ov_SC01_077/nonmatchings/ov_SC01_077", func_80140E6C); INCLUDE_ASM("asm/ov_SC01_077/nonmatchings/ov_SC01_077", func_80140F00); -INCLUDE_ASM("asm/ov_SC01_077/nonmatchings/ov_SC01_077", func_80141100); +// @class: other +// @stuck: none — MATCH + +extern short D_80115128; +extern unsigned short D_80115172; +extern unsigned short D_8018797A; +extern unsigned short D_8018797E; +extern unsigned short D_80187982; +extern unsigned short D_80187986; + +extern s32 func_8002A1B4(void); +extern short func_8002A28C(void); +extern short func_8002A27C(void); +extern s32 func_8002A400(void); +extern short func_8002A4D8(void); +extern short func_8002A4C8(void); +extern s32 func_8002A8E0(void); +extern short func_8002A9B8(void); +extern short func_8002A9A8(void); +extern s32 func_8002A670(void); +extern short func_8002A748(void); +extern short func_8002A738(void); +extern int func_801412A8(int, int, int, int, int, int); + +int func_80141100(int param_1) +{ + short sVar1; + int iVar7; + + if (D_80115128 == 0) { + iVar7 = D_80115172 + 0x31; + sVar1 = D_8018797A; + param_1 = func_801412A8(param_1, ((short (*)(void))func_8002A1B4)(), func_8002A28C(), func_8002A27C(), (short)iVar7, (int)sVar1); + sVar1 = D_8018797E; + param_1 = func_801412A8(param_1, ((short (*)(void))func_8002A400)(), func_8002A4D8(), func_8002A4C8(), (short)iVar7, (int)sVar1); + sVar1 = D_80187982; + param_1 = func_801412A8(param_1, ((short (*)(void))func_8002A8E0)(), func_8002A9B8(), func_8002A9A8(), (short)iVar7, (int)sVar1); + sVar1 = D_80187986; + param_1 = func_801412A8(param_1, ((short (*)(void))func_8002A670)(), func_8002A748(), func_8002A738(), (short)iVar7, (int)sVar1); + } + return param_1; +} + INCLUDE_ASM("asm/ov_SC01_077/nonmatchings/ov_SC01_077", func_801412A8); diff --git a/src/ov_SC01_077/ov_SC01_077_a.c b/src/ov_SC01_077/ov_SC01_077_a.c index 77d5a43354..18cfff56c7 100644 --- a/src/ov_SC01_077/ov_SC01_077_a.c +++ b/src/ov_SC01_077/ov_SC01_077_a.c @@ -1075,7 +1075,43 @@ DEFINE_func_8012E8C4() /* dedup: shared engine-core @0x8012E8C4 (src/shared) */ DEFINE_func_8012E8E0() /* dedup: shared engine-core @0x8012E8E0 (src/shared) */ -INCLUDE_ASM("asm/ov_SC01_077/nonmatchings/ov_SC01_077_a", func_8012E9C0); +// @class: other +// @stuck: none — MATCH (branch-polarity invert: `0x78 != 0` puts compute block as fall-through) + +extern void func_8016AA50(int, int); +extern void func_8016B428(int); +extern void func_80019064(void *); +extern int D_80186E70; + +void func_8012E9C0(int param_1) +{ + int iVar1; + + if (*(short *)(param_1 + 0x60) != 0) { + if (*(unsigned char *)(param_1 + 0x5e) == 0x1d) { + *(short *)(param_1 + 0x82) = 0; + *(short *)(param_1 + 0x7c) = *(unsigned short *)(param_1 + 6); + *(short *)(param_1 + 0x7e) = *(unsigned short *)(param_1 + 0xa); + *(short *)(param_1 + 0x80) = *(unsigned short *)(param_1 + 0xe); + } + if (*(int *)(param_1 + 0x78) != 0) { + iVar1 = *(short *)(param_1 + 0x60) * + *(short *)(*(int *)(param_1 + 0x78) + 0x30) >> 0xc; + if (iVar1 < 1) { + iVar1 = 1; + } + } else { + iVar1 = *(short *)(param_1 + 0x60); + } + func_8016AA50(param_1, iVar1); + if ((*(unsigned short *)(param_1 + 0x82) & 1) != 0) { + func_8016B428(param_1); + func_80019064(&D_80186E70); + } + } + return; +} + // @class: regalloc-order // @stuck: none — MATCH (93 ins) @@ -1216,7 +1252,21 @@ void func_8012F75C(s32 a0) { DEFINE_func_8012F7B4() /* dedup: shared engine-core @0x8012F7B4 (src/shared) */ -INCLUDE_ASM("asm/ov_SC01_077/nonmatchings/ov_SC01_077_a", func_8012F828); +// @class: plumbing +// @stuck: none — MATCH (pending gate) +extern void func_80131170(); +extern void func_80131CA8(); +extern unsigned char D_80186E8C[]; + +void func_8012F828(int param_1) +{ + *(unsigned char *)(param_1 + 0xC1) = 4; + if (*(unsigned int *)(param_1 + 0xB4) & 8) { + func_80131170(param_1, D_80186E8C, 0xB); + } + func_80131CA8(param_1, 9); +} + DEFINE_func_8012F87C() /* dedup: shared engine-core @0x8012F87C (src/shared) */ @@ -1653,7 +1703,19 @@ DEFINE_func_80138AB4() /* dedup: shared engine-core @0x80138AB4 (src/shared) */ DEFINE_func_80138B88() /* dedup: shared engine-core @0x80138B88 (src/shared) */ -INCLUDE_ASM("asm/ov_SC01_077/nonmatchings/ov_SC01_077_a", func_80138BE0); +// @class: struct +// @stuck: none — MATCH (match_one: MATCH 20 ins) + +extern void (*D_80187120[])(void); + +void func_80138BE0(int p) +{ + if (*(unsigned short *)(p + 0xe) != 0) { + *(unsigned short *)(p + 0xe) -= 1; + } + D_80187120[*(short *)(p + 4)](); +} + DEFINE_func_80138C30() /* dedup: shared engine-core @0x80138C30 (src/shared) */