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
+829 -830
View File
File diff suppressed because it is too large Load Diff
+1
View File
@@ -56,6 +56,7 @@
0x80017A80 0x80017AD4 src/func_80017A80.c
0x80017AD4 0x80017AE8 src/func_80017AD4.c
0x80017AE8 0x80017AF8 src/func_80017AE8.c
0x80017AF8 0x80017B50 src/func_80017AF8.c
0x80017B50 0x80017B98 src/func_80017B50.c
0x80017C50 0x80017C60 src/func_80017C50.c
0x80017C60 0x80017C6C src/func_80017C60.c
1 # Code-region registry: one C region per matched function.
56 0x80017A80
57 0x80017AD4
58 0x80017AE8
59 0x80017AF8
60 0x80017B50
61 0x80017C50
62 0x80017C60
+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;
}