diff --git a/config/regions.tsv b/config/regions.tsv index 662e63f..463ed23 100644 --- a/config/regions.tsv +++ b/config/regions.tsv @@ -552,6 +552,7 @@ 0x800AE268 0x800AE358 src/func_800AE268.c 0x800AE4DC 0x800AE548 src/func_800AE4DC.c 0x800AE548 0x800AE574 src/func_800AE548.c +0x800AE66C 0x800AE6C0 src/func_800AE66C.c 0x800AE6C0 0x800AE7A0 src/func_800AE6C0.c 0x800AF1FC 0x800AF20C src/func_800AF1FC.c 0x800AF20C 0x800AF260 src/func_800AF20C.c diff --git a/src/func_800AE66C.c b/src/func_800AE66C.c new file mode 100644 index 0000000..d963025 --- /dev/null +++ b/src/func_800AE66C.c @@ -0,0 +1,17 @@ +/* + * func_800AE66C (0x800AE66C..0x800AE6C0, exact extent). + * Hypothesis: conditionally dispatch a fixed callback for an indexed entry. + * Data meaning and the callback label's role remain unverified. The address- + * named label and $6 entry binding reproduce the original's load/call shape. + * Verified by exact range comparison and the 758-region whole-binary gate. + */ +extern unsigned char **D_80121C00; +extern void func_8002D0A8(void *, int); +extern char D_800AE574[]; + +void func_800AE66C(int unused, int index) +{ + register unsigned char *entry __asm__("$6") = D_80121C00[index]; + if ((entry[0] & 0x20) == 0) + func_8002D0A8(D_800AE574, 16); +}