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