From 7f3e35256ae44aa467a7e8c5131bd9d55797fb06 Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Fri, 14 Aug 2026 07:01:56 -0600 Subject: [PATCH] =?UTF-8?q?feat(decomp):=20worker=20gate=20=E2=80=94=20+3?= =?UTF-8?q?=20fns=20x0=20propagated=20(fleet=2095.3%)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ov_SC04_015/ov_SC04_015_jr_8017AE2C.c | 123 +++++++++++++++++++++- 1 file changed, 120 insertions(+), 3 deletions(-) diff --git a/src/ov_SC04_015/ov_SC04_015_jr_8017AE2C.c b/src/ov_SC04_015/ov_SC04_015_jr_8017AE2C.c index c2d15ba3b..90ed1545a 100644 --- a/src/ov_SC04_015/ov_SC04_015_jr_8017AE2C.c +++ b/src/ov_SC04_015/ov_SC04_015_jr_8017AE2C.c @@ -4674,7 +4674,46 @@ INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017F9B INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017FA78); -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017FB40); +extern s32 func_80029178(s32 arg); +extern s32 func_8012BD14(void); +extern s32 func_80178BF8(); +extern void func_80172710(void); + +s32 func_8017FB40(void *s0) { + s32 v0; + s32 v1; + s32 a0; + + v0 = func_80029178(0x13A); + v0 &= 0xFF; + if (v0 != 0) { + return 0; + } + + a0 = *(s32 *)((u8 *)s0 + 0x64); + v1 = *(u16 *)(a0 + 0x2); + v0 = 0x1; + if (v1 != v0) { + return 0; + } + + v0 = *(u16 *)(a0 + 0x34); + if (v0 != 0) { + return 0; + } + + v0 = func_8012BD14(); + if (v0 >= 0x4001) { + return 0; + } + + v0 = 0x1; + v1 = *(s32 *)((u8 *)s0 + 0x64); + *(u16 *)(v1 + 0x34) = v0; + ((void (*)(void))func_80178BF8)(); + return (s32)&(*(char *)&func_80172710); +} + extern void (*D_80188A78[])(void); @@ -4696,7 +4735,46 @@ INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017FC7 INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017FD40); -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017FE08); +extern s32 func_80029178(s32 arg); +extern s32 func_8012BD14(void); +extern s32 func_80178BF8(); +extern void func_80172710(void); + +s32 func_8017FE08(void *s0) { + s32 v0; + s32 v1; + s32 a0; + + v0 = func_80029178(0x139); + v0 &= 0xFF; + if (v0 != 0) { + return 0; + } + + a0 = *(s32 *)((u8 *)s0 + 0x64); + v1 = *(u16 *)(a0 + 0x2); + v0 = 0x1; + if (v1 != v0) { + return 0; + } + + v0 = *(u16 *)(a0 + 0x34); + if (v0 != 0) { + return 0; + } + + v0 = func_8012BD14(); + if (v0 >= 0x4001) { + return 0; + } + + v0 = 0x1; + v1 = *(s32 *)((u8 *)s0 + 0x64); + *(u16 *)(v1 + 0x34) = v0; + ((void (*)(void))func_80178BF8)(); + return (s32)&(*(char *)&func_80172710); +} + extern void (*D_80188B10[])(void); @@ -4720,7 +4798,46 @@ INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_8017FF5 INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_80180014); -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_801800DC); +extern s32 func_80029178(s32 arg); +extern s32 func_8012BD14(void); +extern s32 func_80178BF8(); +extern void func_80172710(void); + +s32 func_801800DC(void *s0) { + s32 v0; + s32 v1; + s32 a0; + + v0 = func_80029178(0x13B); + v0 &= 0xFF; + if (v0 != 0) { + return 0; + } + + a0 = *(s32 *)((u8 *)s0 + 0x64); + v1 = *(u16 *)(a0 + 0x2); + v0 = 0x1; + if (v1 != v0) { + return 0; + } + + v0 = *(u16 *)(a0 + 0x34); + if (v0 != 0) { + return 0; + } + + v0 = func_8012BD14(); + if (v0 >= 0x4001) { + return 0; + } + + v0 = 0x1; + v1 = *(s32 *)((u8 *)s0 + 0x64); + *(u16 *)(v1 + 0x34) = v0; + ((void (*)(void))func_80178BF8)(); + return (s32)&(*(char *)&func_80172710); +} + extern void (*D_80188B74[])(void);