phase12: match func_80046198 (713 bodies / 722 regions)
This commit is contained in:
@@ -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;
|
||||
}
|
||||
Reference in New Issue
Block a user