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
+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;
}