phase12: match func_80046198 (713 bodies / 722 regions)

This commit is contained in:
Christopher Williams
2026-09-25 07:39:12 -04:00
parent 69b0ced912
commit 88eccb89f2
3 changed files with 864 additions and 832 deletions
+831 -832
View File
File diff suppressed because it is too large Load Diff
+1
View File
@@ -239,6 +239,7 @@
0x80045540 0x80045578 src/func_80045540.c
0x80045F1C 0x80045FD8 src/func_80045F1C.c
0x800460AC 0x800460D4 src/func_800460AC.c
0x80046198 0x800461E8 src/func_80046198.c
0x80047468 0x800474B0 src/func_80047468.c gp=-D_80121BFC
0x800474B0 0x80047508 src/func_800474B0.c
0x800475CC 0x80047640 src/func_800475CC.c
1 # Code-region registry: one C region per matched function.
239 0x80045540
240 0x80045F1C
241 0x800460AC
242 0x80046198
243 0x80047468
244 0x800474B0
245 0x800475CC
+32
View File
@@ -0,0 +1,32 @@
/*
* func_80046198 — 80 bytes at 0x80046198..0x800461E8
*
* Reads the byte at object+1. If its low seven bits are nonzero, calls
* func_8008FCD8 and then writes back only the high bit; otherwise it returns
* without the call or writeback.
*
* The separate v0/a1 temporaries are byte-required: the target loads the byte
* into v0, masks it into a1, and branches on a1. The explicit early return is
* also required so the zero path branches directly to the epilogue instead of
* falling through the writeback block.
*
* LIMITS: the object byte and callee behavior are not inferred. The +1 offset,
* masks 0x7f/0x80, call ordering, early-return path, s0 save, and epilogue are
* byte evidence.
*/
extern void func_8008FCD8(void);
void func_80046198(void *unused, unsigned char *p)
{
register unsigned char *s0 __asm__("$16") = p;
register unsigned int v0 __asm__("$2");
register unsigned int a1 __asm__("$5");
v0 = s0[1];
a1 = v0 & 0x7f;
if (a1 == 0)
return;
func_8008FCD8();
s0[1] &= 0x80;
}