feat(phase-30 S48-T6): propagate func_8017F398 to its zero-crack siblings

This commit is contained in:
Drew T
2026-08-12 18:25:43 -06:00
parent 96fe3198b9
commit fc58acbf3b
3 changed files with 280 additions and 8 deletions
+92 -2
View File
@@ -1787,7 +1787,6 @@ extern s32 func_8016A73C(s32 arg0);
extern s32 func_8016A8FC(s32 a0);
extern void func_8016A890(s32 arg0);
extern u16 D_80126B5E;
extern u16 D_80126B66;
extern void func_8016AA50(s32 param_1, s32 param_2);
extern void (*D_801840A0[])(void);
extern void func_8016AB30(void *a0);
@@ -3512,7 +3511,98 @@ extern void func_8012AD44(s32 *a0, s16 a1);
}
INCLUDE_ASM("asm/ov_SC03_095/nonmatchings/ov_SC03_095_jr_8017BEBC", func_8017D960);
extern void func_8017DD98(s32 a0);
extern void func_8017DB10(s32);
extern void func_8017DD30(void *a0);
void func_8017D960(void *a0) {
extern s32 D_80126B58;
extern u16 D_80126B62;
extern u16 D_80126B66;
extern s16 D_80191B6C[];
extern s16 D_80191B6E[];
extern s16 D_80191B70;
extern s16 D_80191B72;
extern s32 D_8019BD18;
s16 *p = (s16 *)&D_80126B58;
s32 flag;
register s32 cond __asm__("$2");
__asm__ __volatile__("" : "=r"(p) : "0"(p));
flag = 0;
if (*(s16 *)((char *)a0 + 0x70) == 2) {
goto CASE2;
}
if (*(s16 *)((char *)a0 + 0x70) < 3) {
goto CASE01;
}
if (*(s16 *)((char *)a0 + 0x70) == 3) {
goto CASE3;
}
goto TAIL;
CASE01:
if (*(s16 *)((char *)a0 + 0x70) < 0) {
goto TAIL;
}
if (*(s16 *)&D_80126B66 < *(s16 *)((char *)a0 + 0xE)) {
cond = *(s16 *)((char *)a0 + 0xE) + D_80191B6C[*(s16 *)((char *)a0 + 0x70)] < *(s16 *)&D_80126B66;
goto CHECK;
}
goto TAIL;
CASE2:
if (*(s16 *)&D_80126B66 > *(s16 *)((char *)a0 + 0xE)) {
cond = *(s16 *)&D_80126B66 < *(s16 *)((char *)a0 + 0xE) + D_80191B70;
goto CHECK;
}
goto TAIL;
CASE3:
if (*(s16 *)&D_80126B62 > *(s16 *)((char *)a0 + 0xA)) {
if (*(s16 *)&D_80126B62 < *(s16 *)((char *)a0 + 0xA) + D_80191B72) {
goto SUCCESS;
}
}
{
s16 base = p[3];
s16 posx = *(s16 *)((char *)a0 + 0x6);
if (base < posx) {
__asm__ __volatile__("" ::: "memory");
cond = posx + D_80191B6E[*(s16 *)((char *)a0 + 0x70)] < base;
goto CHECK;
}
}
goto TAIL;
CHECK:
if (!cond) {
goto TAIL;
}
SUCCESS:
flag = 1;
TAIL:
if (flag != 0 && D_8019BD18 == 0) {
func_8017DD98(0x12F);
((void (*)(void *))func_8017DB10)(a0);
} else {
if (*(s16 *)((char *)a0 + 0xFE) != 0) {
s16 t = *(s16 *)((char *)a0 + 0xFE) - 0x10;
*(s16 *)((char *)a0 + 0xFE) = t;
if (t < 0) {
*(s16 *)((char *)a0 + 0xFE) = 0;
}
}
}
func_8017DD30(a0);
}
extern void func_8012AD44(s32 *a0, s16 a1);
void func_8017DB10(s32 a0) {
+92 -3
View File
@@ -52,7 +52,6 @@ extern s32 func_80165A50(s32);
extern void func_80029514(s32);
extern u8 D_800AF630[];
extern u8 D_80078EC0;
extern s32 D_80126B58;
extern s32 func_80028FBC(void);
extern s32 func_80029000(void);
extern s32 func_80028D9C(void);
@@ -1788,7 +1787,6 @@ extern s32 func_8016A73C(s32 arg0);
extern s32 func_8016A8FC(s32 a0);
extern void func_8016A890(s32 arg0);
extern u16 D_80126B5E;
extern u16 D_80126B66;
extern void func_8016AA50(s32 param_1, s32 param_2);
extern void (*D_80183C20[])(void);
extern void func_8016AB30(void *a0);
@@ -4337,7 +4335,98 @@ extern void func_8012AD44(s32 *a0, s16 a1);
}
INCLUDE_ASM("asm/ov_SC03_096/nonmatchings/ov_SC03_096_jr_8017BEBC", func_8017EE6C);
extern void func_8017F2A4(s32 a0);
extern void func_8017F01C(s32);
extern void func_8017F23C(void *a0);
void func_8017EE6C(void *a0) {
extern s32 D_80126B58;
extern u16 D_80126B62;
extern u16 D_80126B66;
extern s16 D_80192A40[];
extern s16 D_80192A42[];
extern s16 D_80192A44;
extern s16 D_80192A46;
extern s32 D_8019A7D0;
s16 *p = (s16 *)&D_80126B58;
s32 flag;
register s32 cond __asm__("$2");
__asm__ __volatile__("" : "=r"(p) : "0"(p));
flag = 0;
if (*(s16 *)((char *)a0 + 0x70) == 2) {
goto CASE2;
}
if (*(s16 *)((char *)a0 + 0x70) < 3) {
goto CASE01;
}
if (*(s16 *)((char *)a0 + 0x70) == 3) {
goto CASE3;
}
goto TAIL;
CASE01:
if (*(s16 *)((char *)a0 + 0x70) < 0) {
goto TAIL;
}
if (*(s16 *)&D_80126B66 < *(s16 *)((char *)a0 + 0xE)) {
cond = *(s16 *)((char *)a0 + 0xE) + D_80192A40[*(s16 *)((char *)a0 + 0x70)] < *(s16 *)&D_80126B66;
goto CHECK;
}
goto TAIL;
CASE2:
if (*(s16 *)&D_80126B66 > *(s16 *)((char *)a0 + 0xE)) {
cond = *(s16 *)&D_80126B66 < *(s16 *)((char *)a0 + 0xE) + D_80192A44;
goto CHECK;
}
goto TAIL;
CASE3:
if (*(s16 *)&D_80126B62 > *(s16 *)((char *)a0 + 0xA)) {
if (*(s16 *)&D_80126B62 < *(s16 *)((char *)a0 + 0xA) + D_80192A46) {
goto SUCCESS;
}
}
{
s16 base = p[3];
s16 posx = *(s16 *)((char *)a0 + 0x6);
if (base < posx) {
__asm__ __volatile__("" ::: "memory");
cond = posx + D_80192A42[*(s16 *)((char *)a0 + 0x70)] < base;
goto CHECK;
}
}
goto TAIL;
CHECK:
if (!cond) {
goto TAIL;
}
SUCCESS:
flag = 1;
TAIL:
if (flag != 0 && D_8019A7D0 == 0) {
func_8017F2A4(0x12F);
((void (*)(void *))func_8017F01C)(a0);
} else {
if (*(s16 *)((char *)a0 + 0xFE) != 0) {
s16 t = *(s16 *)((char *)a0 + 0xFE) - 0x10;
*(s16 *)((char *)a0 + 0xFE) = t;
if (t < 0) {
*(s16 *)((char *)a0 + 0xFE) = 0;
}
}
}
func_8017F23C(a0);
}
extern void func_8012AD44(s32 *a0, s16 a1);
void func_8017F01C(s32 a0) {
+96 -3
View File
@@ -52,7 +52,6 @@ extern s32 func_80165A50(s32);
extern void func_80029514(s32);
extern u8 D_800AF630[];
extern u8 D_80078EC0;
extern s32 D_80126B58;
extern s32 func_80028FBC(void);
extern s32 func_80029000(void);
extern s32 func_80028D9C(void);
@@ -1788,7 +1787,6 @@ extern s32 func_8016A73C(s32 arg0);
extern s32 func_8016A8FC(s32 a0);
extern void func_8016A890(s32 arg0);
extern u16 D_80126B5E;
extern u16 D_80126B66;
extern void func_8016AA50(s32 param_1, s32 param_2);
extern void (*D_80189000[])(void);
extern void func_8016AB30(void *a0);
@@ -3612,6 +3610,10 @@ extern u16 func_80148800(s32 *a0);
extern void func_8017F53C(s32 param_1, s16 *param_2);
void func_8017F48C(s32 a0) {
/* [T51] scoped in from file scope: a file-scope decl of these symbols constrains every
LATER function in this TU, which blocks a byte-true decl of a different type.
Declaration-only move (cookbook §103); the whole-binary byte-gate is the arbiter. */
extern s32 D_80126B58;
extern s16 D_80189BC8[];
extern Blk8_80126940_8017D6D0_8017F48C D_80126940;
@@ -3712,7 +3714,98 @@ extern void func_8012AD44(s32 *a0, s16 a1);
}
INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017D898", func_8017F7E4);
extern void func_8017FC1C(s32 a0);
extern void func_8017F994(void *a0);
extern void func_8017FBB4(void *a0);
void func_8017F7E4(void *a0) {
extern s32 D_80126B58;
extern u16 D_80126B62;
extern u16 D_80126B66;
extern s16 D_8019AE44[];
extern s16 D_8019AE46[];
extern s16 D_8019AE48;
extern s16 D_8019AE4A;
extern s32 D_801AAAD8;
s16 *p = (s16 *)&D_80126B58;
s32 flag;
register s32 cond __asm__("$2");
__asm__ __volatile__("" : "=r"(p) : "0"(p));
flag = 0;
if (*(s16 *)((char *)a0 + 0x70) == 2) {
goto CASE2;
}
if (*(s16 *)((char *)a0 + 0x70) < 3) {
goto CASE01;
}
if (*(s16 *)((char *)a0 + 0x70) == 3) {
goto CASE3;
}
goto TAIL;
CASE01:
if (*(s16 *)((char *)a0 + 0x70) < 0) {
goto TAIL;
}
if (*(s16 *)&D_80126B66 < *(s16 *)((char *)a0 + 0xE)) {
cond = *(s16 *)((char *)a0 + 0xE) + D_8019AE44[*(s16 *)((char *)a0 + 0x70)] < *(s16 *)&D_80126B66;
goto CHECK;
}
goto TAIL;
CASE2:
if (*(s16 *)&D_80126B66 > *(s16 *)((char *)a0 + 0xE)) {
cond = *(s16 *)&D_80126B66 < *(s16 *)((char *)a0 + 0xE) + D_8019AE48;
goto CHECK;
}
goto TAIL;
CASE3:
if (*(s16 *)&D_80126B62 > *(s16 *)((char *)a0 + 0xA)) {
if (*(s16 *)&D_80126B62 < *(s16 *)((char *)a0 + 0xA) + D_8019AE4A) {
goto SUCCESS;
}
}
{
s16 base = p[3];
s16 posx = *(s16 *)((char *)a0 + 0x6);
if (base < posx) {
__asm__ __volatile__("" ::: "memory");
cond = posx + D_8019AE46[*(s16 *)((char *)a0 + 0x70)] < base;
goto CHECK;
}
}
goto TAIL;
CHECK:
if (!cond) {
goto TAIL;
}
SUCCESS:
flag = 1;
TAIL:
if (flag != 0 && D_801AAAD8 == 0) {
func_8017FC1C(0x12F);
func_8017F994(a0);
} else {
if (*(s16 *)((char *)a0 + 0xFE) != 0) {
s16 t = *(s16 *)((char *)a0 + 0xFE) - 0x10;
*(s16 *)((char *)a0 + 0xFE) = t;
if (t < 0) {
*(s16 *)((char *)a0 + 0xFE) = 0;
}
}
}
func_8017FBB4(a0);
}
extern void func_8012AD44(s32 *a0, s16 a1);
void func_8017F994(void *arg0) {