feat(decomp): family-remap gate — +23 fns x0 propagated (fleet 98.8%)

This commit is contained in:
Drew T
2026-08-29 17:20:11 -06:00
parent b588f67a1d
commit fb58ad76c5
4 changed files with 697 additions and 37 deletions
+548 -20
View File
@@ -4621,7 +4621,35 @@ void func_8017E1F4(void *a0) {
}
INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017E230);
extern void func_8017E26C(void*, u8*);
extern void func_8017E3AC(s32 a0);
void func_8017E230(s32 *a0)
{
s32 *new_var;
volatile long pad;
new_var = a0;
((void (*)(s32 *, s32))func_8017E26C)(new_var, ((s32) new_var) + 0xA0);
func_8017E3AC((s32) new_var);
}
DEFINE_func_8017E264() /* dedup: shared engine-core @0x8017E264 (src/shared) */
@@ -4909,7 +4937,30 @@ void func_8017E9C0(void *arg0) {
}
INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017EA0C);
extern s32 func_80184BAC(s32 arg0, s32 arg1);
extern s32 func_80184BD0(u8 a0, u8 a1, u8 a2, u8 a3);
extern void func_80184CB8(s32*, s32);
extern void func_8017E5CC(void *arg0);
void func_8017EA0C(void *arg0) {
extern short D_80191074;
s32 v1;
v1 = *(s32 *)((char *)arg0 + 0xCC);
*(s32 *)((char *)v1 + 0xB0) = 2;
if (func_80184BAC(8, 0x14) == 0) {
*(short *)((char *)arg0 + 0x2) = 1;
func_80184CB8((s32 *)arg0, (s32)&D_80191074);
}
if (func_80184BD0(10, 0, 10, 30) == 0 && func_80184BD0(15, 0, 15, 30) == 0) {
return;
}
*(u8 *)((char *)arg0 + 0x105) = *(u16 *)((char *)arg0 + 0x2);
func_8017E5CC(arg0);
}
extern int func_80178970(void);
extern void func_80178D18(void);
@@ -5009,7 +5060,42 @@ void func_8017EC10(void *a0) {
}
INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017ECF4);
extern void func_8012C1B8(void);
extern void func_8012CAE4(void *a0);
extern void func_8001C214(s32 a0, s32 a1);
extern void func_8012E8E0(s32 a0, s32 a1);
extern void func_8012B2CC(s32 a0);
extern void func_8012E88C(s32 a0);
extern void func_8012A828(s32 *a0, s32 a1);
extern void func_8012B200(s32);
extern void func_8012B178(s32 a0, s32 a1);
void func_8017ECF4(void *arg0) {
extern short D_801C7A90;
extern short D_80191074;
extern short D_801B9AA8;
s32 v;
v = ((s32 (*)())func_8012C1B8)();
*(s32 *)((s32)arg0 + 0x20) = v;
if (v == 0) {
func_8012CAE4(arg0);
}
func_8001C214(*(s32 *)((s32)arg0 + 0x20), (s32)&D_801C7A90);
*(short *)((s32)arg0 + 2) = 1;
*(short *)((s32)arg0 + 0x34) = 0;
*(short *)(*(s32 *)((s32)arg0 + 0x68) + 0xC) = 0x7FFF;
func_8012E8E0((s32)arg0, (s32)&D_80191074);
func_8012B2CC((s32)arg0);
func_8012E88C((s32)arg0);
func_8012A828((s32 *)arg0, (s32)&D_801B9AA8);
((void (*)(u8 *))func_8012B200)((u8 *)arg0);
func_8012B178((s32)arg0, (s32)0xFFFC0000);
*(int *)(arg0 + 0x1c) = 0x20;
}
extern s32 func_8012BD14(s32 a0);
extern s32 func_80178BF8();
@@ -5182,7 +5268,30 @@ void func_8017F1A8(void) {
INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017F1C8);
INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017F224);
extern s32 func_80029504(void);
extern s32 func_80184BAC(s32 arg0, s32 arg1);
extern void func_80184CB8(s32*, s32);
void func_8017F224(void *a0)
{
extern short D_801912D8;
s32 v1;
s32 flag;
flag = func_80029504() >= 0x2A8;
if (flag != 0) {
goto skip;
}
v1 = *(s32 *)((char *)a0 + 0xCC);
*(s32 *)((char *)v1 + 0xB0) = 2;
skip:
if (func_80184BAC(8, 0x14) == 0) {
*(short *)((char *)a0 + 0x2) = 1;
func_80184CB8((s32 *)a0, (s32)&D_801912D8);
}
}
extern int func_80178970(void);
@@ -5308,7 +5417,19 @@ void *arg0;
}
INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017F564);
void func_8017F564(void *a0) {
extern short D_80191578;
extern short D_801B9950;
s32 s0 = (s32)a0;
*(u16 *)((s32)a0 + 2) = 8;
func_8012E8E0((s32)a0, (s32)&D_80191578);
func_8012E88C((s32)a0);
func_80184C90((s32)a0);
func_8012A828((s32 *)a0, (s32)&D_801B9950);
}
extern void (*D_801916E4[])(void);
@@ -5564,7 +5685,7 @@ DEFINE_func_8017FAAC() /* dedup: shared engine-core @0x8017FAAC (src/shared) */
extern s32 func_80185BE0(s32 arg0);
extern s32 func_80184FA4(s32 a0);
extern void func_80184ED4(s32, s32, s32, s32);
extern void func_8017F564(s32 a0);
extern void func_8017F564();
extern u8 D_801E3978[];
void func_8017FB0C(void *a0)
@@ -5691,7 +5812,48 @@ DEFINE_func_8017FD88() /* dedup: shared engine-core @0x8017FD88 (src/shared) */
INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017FDE4);
INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_8017FE54);
extern s32 func_801847BC(void *a0, void *a1);
extern s32 func_80184BD0(u8 a0, u8 a1, u8 a2, u8 a3);
extern void func_8012E8E0(s32 a0, s32 a1);
extern void func_8012E88C(s32 a0);
extern void func_80184C90(s32 a0);
extern void func_8012A828(s32 *a0, s32 a1);
extern void func_80184CB8(s32 *a0, s32 a1);
extern s32 func_801788B8(s32 a0, s32 a1);
extern s32 func_8017F418();
void func_8017FE54(void *a0) {
extern s16 D_80191580;
extern short D_80191578;
extern s16 D_80191570;
extern short D_801B9950;
s32 s0 = (s32)a0;
s32 v0;
s32 v1;
if (func_801847BC(a0, &D_80191580) == 0) {
return;
}
if (func_80184BD0(0xB, 0, 0xE, 0xF) != 0) {
*(s16 *)(s0 + 2) = 8;
func_8012E8E0(s0, (s32)&D_80191578);
func_8012E88C(s0);
func_80184C90(s0);
func_8012A828((s32 *)s0, (s32)&D_801B9950);
} else {
v0 = func_80184BD0(0xE, 0xF, 0x17, 0);
*(s16 *)(s0 + 2) = (v0 == 0) ? 1 : 2;
func_80184CB8((s32 *)s0, (s32)&D_80191570);
}
v1 = *(s32 *)(s0 + 0x68);
*(s16 *)(v1 + 0xC) = 0x7FFF;
*(s32 *)(s0 + 0xD4) = func_801788B8(s0, (s32)&func_8017F418);
}
extern void (*D_80191814[])(void);
@@ -5946,9 +6108,41 @@ void func_80180580(void *arg0) {
}
INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801805C0);
INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80180618);
void func_801805C0(s32 arg0) {
extern void func_80185F54(void*, s32, s32);
extern s32 func_80185BE0(s32);
extern s32 func_80184FA4(s32);
extern void func_801803BC(void*);
((void (*)(s32, s32, s32))func_80185F54)(arg0, 0xC, 1);
if (func_80185BE0(0xC) != 0) {
if (((s32 (*)(s32))func_80184FA4)(arg0) != 0) {
((void (*)(s32))func_801803BC)(arg0);
}
}
}
void func_80180618(void *arg0) {
extern short D_801B65C8;
extern s32 func_80184FA4(s32);
extern s32 func_80184BAC(s32 arg0, s32 arg1);
extern void func_8018042C(s32 a0);
extern void func_80184ED4(s32, s32, s32, s32);
if (((s32 (*)(void))func_80184FA4)() != 0) {
if (func_80184BAC(9, 0x11) == 0) {
func_8018042C(arg0);
} else {
func_80184ED4((s32)arg0, (s32)&D_801B65C8, 0, 0x40);
}
}
}
extern int func_80178970(void);
extern s32 D_801B9DF8;
@@ -5968,7 +6162,29 @@ void * arg0;
}
INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801806CC);
extern void func_80185F54(void *, s32, s32);
extern s32 func_80185BE0(s32);
extern s32 func_80184FA4(s32);
extern void func_80184CB8(s32 *, s32);
extern void func_80185FB8(s32, s32, s32);
void func_801806CC(void *arg0) {
extern short D_801918F4;
func_80185F54(arg0, 0xC, 1);
if (func_80185BE0(0xC) == 0) {
return;
}
if (((s32 (*)(s32))func_80184FA4)((s32)arg0) == 0) {
return;
}
*(u16 *)((char *)arg0 + 2) = 1;
func_80184CB8((s32 *)arg0, (s32)&D_801918F4);
func_80185FB8((s32)arg0, 0xC, 1);
}
extern s32 func_801847BC(void *a0, void *a1);
extern s32 func_80184BAC(s32 a0, s32 a1);
@@ -6366,7 +6582,51 @@ void func_80180EE8(void *a0)
}
INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80180F7C);
extern s32 func_80029504(void);
extern s32 func_80184BAC(s32 arg0, s32 arg1);
extern s32 func_80184DD0(s32 a0);
extern void func_80180954(void *arg0);
void func_80180F7C(void *arg0)
{
s32 dd;
s32 sel;
s32 code;
s32 a0val;
dd = func_80184DD0((s32)arg0);
sel = func_80029504();
if (dd == 2 && sel < 0x276) {
a0val = 0xA;
} else {
if (func_80184BAC(0xA, 0x10) != 0) {
code = 0;
goto ladder_done;
}
a0val = 0x10;
}
if (func_80184BAC(a0val, 0x16) != 0) {
code = 1;
} else {
code = 2;
}
ladder_done:
switch (code) {
case 0:
break;
case 1:
func_80180954(arg0);
break;
case 2:
func_80180954(arg0);
break;
}
}
extern int func_80178970(void);
extern void func_80178D18(void);
@@ -6516,7 +6776,26 @@ void func_80181364(s32 a0) {
}
INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801813A4);
extern s32 func_8012E544(s32 a0);
void func_801813A4(void *a0)
{
s32 temp;
s32 ok;
temp = func_8012E544(0x2A0);
if (temp == 0) {
ok = 0;
} else {
ok = *(u16 *)(temp + 2) == 3;
}
if (ok != 0) {
func_801812D0(a0);
}
}
extern s32 func_8012E544(s32 a0);
extern void func_80184CB8(s32 *a0, s32 a1);
@@ -6555,7 +6834,38 @@ void func_80181474(void * arg0) {
}
INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801814C4);
extern s32 func_801847BC(void *a0, void *a1);
extern s32 func_8012E544(s32 a0);
extern void func_80184CB8(s32 *a0, s32 a1);
extern s32 func_801788B8(s32 arg0, s32 arg1);
extern short D_80191AB8;
extern short D_80191AB0;
extern s32 func_80181564(void *a0);
void func_801814C4(void *a0)
{
void *s0 = a0;
void *v1;
s32 res;
s32 flag;
if (func_801847BC(a0, &D_80191AB8) != 0) {
res = func_8012E544(0x2A0);
if (res == 0) {
flag = 0;
} else {
flag = (*(u16 *)((char *)res + 2) == 3);
}
*(short *)((char *)s0 + 0x2) = (flag != 0) ? 2 : 1;
func_80184CB8((s32 *)s0, (s32)&D_80191AB0);
v1 = *(void **)((char *)s0 + 0x68);
*(s16 *)((char *)v1 + 0xC) = 0x7FFF;
*(s32 *)((char *)s0 + 0xD4) = func_801788B8((s32)s0, (s32)&func_80181564);
}
}
extern void func_80172710(void);
@@ -6622,7 +6932,22 @@ extern void func_80184CB8(s32*, s32);
}
INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80181738);
void func_80181738(void *arg0) {
extern short D_801B99A8;
extern void func_8012E88C(s32);
extern void func_8012A828(s32 *a0, s32 a1);
extern void func_80184C90(s32);
*(short *)((char *)arg0 + 0x2) = 8;
func_8012E88C((s32)arg0);
func_8012A828((s32 *)arg0, (s32)&D_801B99A8);
func_80184C90((s32)arg0);
func_801819B0();
*(short *)((char *)arg0 + 0x34) = 0;
}
DEFINE_func_8018178C() /* dedup: shared engine-core @0x8018178C (src/shared) */
@@ -6655,7 +6980,18 @@ void func_80181924(void *a0) {
}
INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80181960);
extern s32 D_801D2200;
extern s32 D_801D7598;
extern s32 D_801E7018;
extern void func_8001C97C(s32 *arg);
void func_80181960() {
func_8001C97C(&D_801D7598);
D_801E7018 = D_801D2200;
}
DEFINE_func_80181998() /* dedup: shared engine-core @0x80181998 (src/shared) */
@@ -7016,7 +7352,88 @@ extern void func_80184CB8(s32 *a0, s32 a1);
}
INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801821D4);
extern s32 func_801847BC(void *a0, void *a1);
extern s32 func_80184DD0(s32 a0);
extern s32 func_80029504(void);
extern s32 func_80184BAC(s32 a0, s32 a1);
extern void func_8012E8E0(s32 a0, s32 a1);
extern void func_8012E88C(s32 a0);
extern void func_8012A828(s32 *a0, s32 a1);
extern void func_80184C90(s32 a0);
extern void func_80184CB8(s32 *a0, s32 a1);
extern s32 func_801788B8(s32 a0, s32 a1);
extern s32 func_80182544(void *a0);
extern s32 func_801825BC(void *a0);
extern s16 D_80191C18;
extern s16 D_80191C10;
extern s16 D_80191C08;
extern s16 D_801B9B50;
void func_801821D4(void *a0)
{
s32 state;
s32 hp;
s32 v0;
s32 v1;
register s32 arg0 __asm__("$4");
void *ptr;
if (func_801847BC(a0, (void *)&D_80191C18) != 0) {
/* func_80184DD0 takes no argument at this call site; the TU's file-scope
* prototype declares one, so call through a no-parameter pointer type
* (the TU's own idiom, cf. ((void (*)(s32, s32))func_80184CB8)(...)). */
state = ((s32 (*)(void))func_80184DD0)();
hp = func_80029504();
arg0 = 0xA;
if (state == 2 && hp < 0x276) {
goto call15;
}
v0 = func_80184BAC(arg0, 0x10);
if (v0 != 0) {
v1 = 0;
goto dispatch;
}
arg0 = 0x10;
call15:
v0 = func_80184BAC(arg0, 0x15);
if (v0 != 0) {
v1 = 1;
} else {
v1 = 2;
}
dispatch:
switch (v1) {
case 0:
*(s16 *)((char *)a0 + 2) = 3;
func_8012E8E0((s32)a0, (s32)&D_80191C10);
func_8012E88C((s32)a0);
func_8012A828((s32 *)a0, (s32)&D_801B9B50);
func_80184C90((s32)a0);
break;
case 1:
v0 = 5;
goto store;
case 2:
v0 = 1;
store:
*(s16 *)((char *)a0 + 2) = v0;
func_80184CB8((s32 *)a0, (s32)&D_80191C08);
break;
}
ptr = *(void **)((char *)a0 + 0x68);
*(s16 *)((char *)ptr + 0xC) = 0x7FFF;
*(s32 *)((char *)a0 + 0xD4) = func_801788B8((s32)a0, (s32)&func_80182544);
func_8012E8E0(*(s32 *)((char *)a0 + 0xD4), (s32)&D_80191C08);
*(s32 *)((char *)a0 + 0xD8) = func_801788B8((s32)a0, (s32)&func_801825BC);
}
}
DEFINE_func_8018233C() /* dedup: shared engine-core @0x8018233C (src/shared) */
@@ -7469,7 +7886,18 @@ void func_80182C98(void *a0) {
}
INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80182CD4);
extern s32 D_801D7E84;
extern s32 D_801D6C98;
extern s32 D_801E7028;
extern void func_8001C97C(s32 *arg);
void func_80182CD4(void) {
func_8001C97C(&D_801D7E84);
D_801E7028 = D_801D6C98;
}
DEFINE_func_80182D0C() /* dedup: shared engine-core @0x80182D0C (src/shared) */
@@ -7628,7 +8056,48 @@ void func_80182F88(s32 a0) {
}
INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80183024);
extern s32 func_801847BC(void *a0, void *a1);
extern void func_80182CD4(void);
extern void func_80182D0C(void);
extern s32 func_80184BAC(s32 arg0, s32 arg1);
extern void func_8012E8E0(s32, s32);
extern void func_8012E88C(s32);
extern void func_8012A828(s32 *a0, s32 a1);
extern void func_80184C90(s32);
extern void func_80184CB8(s32*, s32);
extern s32 func_801788B8(s32 arg0, s32 arg1);
extern s32 func_801830F4(void *a0);
void func_80183024(void *a0) {
extern u8 D_80191F24[];
extern short D_80191F1C;
extern short D_801C0D40;
extern short D_80191F14;
s32 v0;
void *v1;
if (func_801847BC(a0, &D_80191F24[0]) != 0) {
func_80182CD4();
func_80182D0C();
v0 = func_80184BAC(7, 0xE);
if (v0 != 0) {
*(s16 *)((char *)a0 + 0x2) = 3;
func_8012E8E0((s32)a0, (s32)&D_80191F1C);
func_8012E88C((s32)a0);
func_8012A828((s32 *)a0, (s32)&D_801C0D40);
func_80184C90((s32)a0);
} else {
*(s16 *)((char *)a0 + 0x2) = 1;
func_80184CB8((s32 *)a0, (s32)&D_80191F14);
}
v1 = *(void **)((char *)a0 + 0x68);
*(s16 *)((char *)v1 + 0xC) = 0x7FFF;
*(s32 *)((char *)a0 + 0xD4) = func_801788B8((s32)a0, (s32)&func_801830F4);
}
}
extern s32 func_8012BD14(s32 a0);
extern s32 func_8012E544(s32 a0);
@@ -7722,7 +8191,28 @@ void func_80183248(s32 a0) {
}
INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801832A8);
extern short D_801B9AA8;
extern u8 D_801B6730[];
extern void func_8012A828(s32*, s32);
extern void func_8012E88C(s32);
extern void func_80184C90(s32);
extern void func_80184ED4(s32, s32, s32, s32);
void func_801832A8(arg0)
void *arg0;
{
extern short D_801B9AA8;
extern u8 D_801B6730[];
*(short *)((char *)arg0 + 0x2) = 7;
func_8012E88C((s32)arg0);
func_8012A828((s32 *)arg0, (s32)&D_801B9AA8);
func_80184C90((s32)arg0);
*(short *)((char *)arg0 + 0x34) = 0;
func_80184ED4((s32)arg0, (s32)&D_801B6730, 1, 0x40);
}
extern void func_80184CB8(s32 *a0, s32 a1);
extern short D_80192030;
@@ -8056,7 +8546,45 @@ void func_80183C78(s32 a0)
}
INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80183CBC);
extern s32 func_801847BC(void *a0, void *a1);
extern s32 func_80184BAC(s32 arg0, s32 arg1);
extern void func_8012E88C(s32 a0);
extern void func_8012A828(s32 *a0, s32 a1);
extern void func_80184C90(s32 a0);
extern void func_80184ED4(s32 a0, s32 a1, s32 a2, s32 a3);
extern void func_80184CB8(s32 *a0, s32 a1);
extern s32 func_80183D80(void *a0);
extern s32 func_801788B8(s32 arg0, s32 arg1);
void func_80183CBC(void *arg0) {
extern s32 D_80192160;
extern s32 D_801B9C50;
extern s32 D_801B67DC;
extern s32 D_80192150;
void *s0 = arg0;
void *v1;
if (func_801847BC(arg0, &D_80192160) != 0) {
if (func_80184BAC(9, 0x11) != 0) {
*(short *)((char *)s0 + 0x2) = 3;
func_8012E88C((s32)s0);
func_8012A828((s32 *)s0, (s32)&D_801B9C50);
func_80184C90((s32)s0);
func_80184ED4((s32)s0, (s32)&D_801B67DC, 0, 0x40);
} else {
*(short *)((char *)s0 + 0x2) = 1;
func_80184CB8((s32 *)s0, (s32)&(*(s16 *)&D_80192150));
}
v1 = *(void **)((char *)s0 + 0x68);
*(short *)((char *)v1 + 0xC) = 0x7FFF;
*(s32 *)((char *)s0 + 0xD4) = func_801788B8((s32)s0, (s32)&func_80183D80);
}
}
extern s32 func_8012BD14(s32 a0);
+1 -1
View File
@@ -2821,7 +2821,7 @@ extern void func_8017FAAC(void *a0);
extern s32 func_80185BE0(s32 arg0);
extern s32 func_80184FA4(s32 a0);
extern void func_80184ED4(s32, s32, s32, s32);
extern void func_8017F564(s32 a0);
extern void func_8017F564();
extern u8 D_801E3978[];
extern void func_8017FB0C(void *a0);
extern s32 func_80185BE0(s32 a0);
+147 -15
View File
@@ -4079,7 +4079,49 @@ void func_8018A0B4(void) {
}
INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_80188E1C", func_8018A168);
extern s32 D_801E7984;
void func_8018A168(a0, a1)
s32 a0;
s32 a1;
{
extern s32 D_801E7984;
register s32 rv __asm__("$2");
s32 x = ((s32 *)&D_801E7984)[0];
s32 y = a1;
s32 d;
if (y < a0) {
if (x < y) {
x = x + 0x5A0;
}
y = y + 0x5A0;
}
if (a0 >= x) {
rv = -1;
goto done;
}
if (x >= y) {
rv = -1;
goto done;
}
d = x - a0;
if (d < 16) {
rv = d * 2;
goto done;
}
d = y - x;
if (d < 16) {
rv = d * 2;
goto done;
}
rv = 31;
done:
__asm__("" :: "r"(rv));
}
extern s32 (*D_801E0498[])();
extern s32 D_801E7980;
@@ -4503,7 +4545,7 @@ void func_8018AB78(void)
extern s32 D_801E01F0;
extern s32 D_801E7980;
extern void func_8018A168(s32 arg0, s32 arg1);
extern void func_8018A168();
void func_8018ACD4(void) {
D_801E7980 = &D_801E01F0;
@@ -4511,7 +4553,7 @@ void func_8018ACD4(void) {
}
extern void func_8018A168(s32 arg0, s32 arg1);
extern void func_8018A168();
extern s32 D_801E0228;
extern s32 D_801E7980;
void func_8018AD08(void) {
@@ -4527,7 +4569,7 @@ DEFINE_func_8018AD3C() /* dedup: shared engine-core @0x8018AD3C (src/shared) */
extern s32 D_801E0288;
extern s32 D_801E7980;
extern void func_8018A168(s32 arg0, s32 arg1);
extern void func_8018A168();
void func_8018AD70(void) {
D_801E7980 = &D_801E0288;
@@ -4538,7 +4580,7 @@ void func_8018AD70(void) {
extern s32 D_801E02C0;
extern s32 D_801E7980;
extern void func_8018A168(s32 arg0, s32 arg1);
extern void func_8018A168();
void func_8018ADA4(void) {
D_801E7980 = &D_801E02C0;
@@ -4549,7 +4591,7 @@ void func_8018ADA4(void) {
s32 func_8018ADD8(void) {
extern s32 D_801E02F8;
extern s32 D_801E7980;
extern void func_8018A168(s32 arg0, s32 arg1);
extern void func_8018A168();
s32 s0;
D_801E7980 = (s32)&D_801E02F8;
@@ -4567,7 +4609,7 @@ s32 func_8018ADD8(void) {
extern s32 D_801E0338;
extern s32 D_801E7980;
extern void func_8018A168(s32 arg0, s32 arg1);
extern void func_8018A168();
void func_8018AE4C(void) {
D_801E7980 = &D_801E0338;
@@ -4576,7 +4618,7 @@ void func_8018AE4C(void) {
extern s32 func_80029504(void);
extern void func_8018A168(s32 arg0, s32 arg1);
extern void func_8018A168();
extern s32 D_801E0370;
extern s32 D_801E7980;
@@ -4594,7 +4636,7 @@ s32 func_8018AE80(void) {
extern s32 D_801E0390;
extern s32 D_801E7980;
extern void func_8018A168(s32 arg0, s32 arg1);
extern void func_8018A168();
void func_8018AECC(void) {
D_801E7980 = &D_801E0390;
@@ -4608,7 +4650,7 @@ DEFINE_func_8018AF00() /* dedup: shared engine-core @0x8018AF00 (src/shared) */
extern s32 D_801E0440;
extern s32 D_801E7980;
extern void func_8018A168(s32 arg0, s32 arg1);
extern void func_8018A168();
void func_8018AF34(void) {
D_801E7980 = &D_801E0440;
@@ -4619,7 +4661,7 @@ void func_8018AF34(void) {
extern s32 func_80029504(void);
extern void func_8018A168(s32 arg0, s32 arg1);
extern void func_8018A168();
s32 func_8018AF68(void) {
@@ -4637,7 +4679,7 @@ s32 func_8018AF68(void) {
extern s32 D_801E0488;
extern s32 D_801E7980;
extern void func_8018A168(s32 arg0, s32 arg1);
extern void func_8018A168();
void func_8018AFB4(void) {
D_801E7980 = &D_801E0488;
@@ -4985,7 +5027,17 @@ s32 func_8018B8B0(void) {
}
INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_80188E1C", func_8018B904);
extern s32 func_8018B8B0();
void func_8018B904(void *a0) {
*(s32 *)(*(s32 *)((char *)a0 + 0xCC) + 0xB0) = 1;
if (func_8018B8B0() == 0) {
func_8018B868(a0);
}
}
extern s32 func_8018B8B0(void);
@@ -5229,7 +5281,26 @@ void func_8018BF64(void *arg0) {
}
INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_80188E1C", func_8018BFCC);
extern s32 func_80184BAC(s32 arg0, s32 arg1);
void func_8018BFCC(void *arg0) {
register s32 *s0 asm("$16") = arg0;
s32 v0, v1;
*(s32 *)((u8 *)(*(s32 **)((u8 *)s0 + 0xCC)) + 0xB0) = 1;
v0 = func_80184BAC(6, 0x12);
if (v0 != 0) {
v1 = 1;
} else {
v0 = func_80184BAC(0x12, 0x15);
v1 = (v0 != 0) ? 2 : 0;
}
if (v1 != 1) {
func_8018BE0C(s0);
}
}
#include "common.h"
@@ -5311,7 +5382,68 @@ extern void func_80184CB8(s32*, s32);
}
INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_80188E1C", func_8018C278);
extern s32 func_80029504(void);
extern void func_8012C1B8(void);
extern void func_8012CAE4(void *a0);
extern void func_8001C214(s32, s32);
extern s32 func_80184D00(void);
extern s32 func_80184BAC(s32 arg0, s32 arg1);
extern void func_80184CB8(s32*, s32);
extern s32 func_801788B8(s32 arg0, s32 arg1);
extern s32 func_8018C3F0(void*);
void func_8018C278(void *a0) {
extern short D_801E06A8;
void *s0 = a0;
s32 v0;
s32 v1;
void *v1p;
v0 = ((s32 (*)(void))func_8012C1B8)();
*(s32 *)((u8 *)s0 + 0x20) = v0;
if (v0 == 0) {
func_8012CAE4(s0);
}
func_8001C214(*(s32 *)((u8 *)s0 + 0x20), 0);
v1 = func_80029504();
if (v1 < 0xC8) {
v0 = func_80184D00();
if (v0 == 3) {
v0 = 2;
} else {
v0 = func_80184BAC(0xA, 0x10);
if (v0 != 0) {
v0 = 1;
} else {
v0 = 2;
}
}
} else if (v1 < 0x258) {
func_8012CAE4(s0);
return;
} else if (v1 < 0x384) {
if (v1 < 0x276) {
func_8012CAE4(s0);
return;
}
v0 = 1;
} else {
v0 = 1;
}
*(s16 *)((u8 *)s0 + 0x2) = (s16)v0;
__asm__ __volatile__("");
func_80184CB8((s32 *)s0, (s32)&D_801E06A8);
v1p = *(void **)((u8 *)s0 + 0x68);
*(s16 *)((u8 *)v1p + 0xC) = 0x7FFF;
*(s32 *)((u8 *)s0 + 0xD4) = func_801788B8((s32)s0, (s32)&func_8018C3F0);
}
extern void (*D_801E077C[])(void);
+1 -1
View File
@@ -3138,7 +3138,7 @@ extern void (*D_801E0554[])(void);
extern void func_8018AB3C(void *a0);
extern s32 D_801E01F0;
extern s32 D_801E7980;
extern void func_8018A168(s32 arg0, s32 arg1);
extern void func_8018A168();
extern void func_8018ACD4(void);
extern void func_8018AD08(void);
extern s32 D_801E0260;