phase12: match func_80017AF8 (714 bodies / 723 regions)

This commit is contained in:
Christopher Williams
2026-09-25 07:49:05 -04:00
parent 88eccb89f2
commit 4b46fcb2ea
3 changed files with 865 additions and 830 deletions
+35
View File
@@ -0,0 +1,35 @@
/*
* func_80017AF8 — 88 bytes at 0x80017AF8..0x80017B50
*
* Returns zero if object+0 is nonzero or object+8 is zero. When both fields are
* zero, calls func_80026460 with the gp-relative address at 0x80121964 and the
* object pointer, stores the result at object+0, and returns one.
*
* The nonzero second-field arm is nested so the target's `beqz` skips directly
* to the zero-return block while the call remains the fallthrough path. The
* address-named gp symbol supplies the target's `addiu gp,44` argument setup.
*
* LIMITS: the object and helper meanings are not inferred. The field offsets 0/8,
* gp argument address, call target, result store, and return values are byte
* evidence.
*/
typedef struct Node {
int f0;
int f4;
int f8;
} Node;
extern char D_80121964;
extern int func_80026460(void *, Node *);
int func_80017AF8(register Node *s0)
{
if (s0->f0 != 0)
return 0;
if (s0->f8 != 0) {
s0->f0 = func_80026460(&D_80121964, s0);
return 1;
}
return 0;
}