feat(decomp): parallel gate — 12 fns across 12 binaries (10 workers)

ov_SC01_084    func_801822A4
  ov_SC01_080    func_801800F4
  ov_SC02_005    func_80180CA0
  ov_SC03_002    func_80180E90
  ov_SC03_013    func_8017EEA4
  ov_SC03_124    func_8017FC58
  ov_SC04_015    func_801803D4
  ov_SC04_011    func_80186300
  ov_SC07_001    func_80180C2C
  ov_SC06_025    func_80180284
  ov_SC07_010    func_80181C54
  ov_SC06_000    func_801835B0
This commit is contained in:
Drew T
2026-08-30 10:37:22 -06:00
parent c06914b80d
commit fb45696a81
12 changed files with 281 additions and 12 deletions
+17 -1
View File
@@ -5590,7 +5590,23 @@ void func_8017FFB4(s32 arg0)
INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_801800F4);
extern s32 func_8012B864(s32 a0);
extern void func_80180188(s32 param_1);
void func_801800F4(s32 param_1)
{
s32 v0;
*(s32 *)(param_1 + 0x4) = *(s32 *)(*(s32 *)(param_1 + 0x64) + 0x4);
*(s16 *)(param_1 + 0xA) = *(u16 *)(*(s32 *)(param_1 + 0x64) + 0xA) - *(s32 *)(*(s32 *)(param_1 + 0x64) + 0xF0);
*(s32 *)(param_1 + 0xC) = *(s32 *)(*(s32 *)(param_1 + 0x64) + 0xC);
v0 = func_8012B864(param_1);
*(s16 *)(*(s32 *)(param_1 + 0x20) + 0x12) = v0;
if (*(s32 *)(param_1 + 0xF4) != 0) {
func_80180188(param_1);
}
}
extern s32 D_801C7EC0;
+22 -1
View File
@@ -4004,7 +4004,28 @@ void func_80181F3C(s32 a0) {
INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017F690", func_80181F80);
INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017F690", func_801822A4);
extern void func_8012A828(s32 a0, void *a1);
void func_801822A4(void *a0) {
extern u8 D_801A1C10[];
extern u8 D_801A2848[];
if (*(s16 *)((s32)a0 + 0x70) == 0) {
*(s16 *)((s32)a0 + 2) = 4;
*(u16 *)((s32)a0 + 0x34) = 0;
func_8012A828((s32)a0, D_801A1C10);
*(s32 *)((s32)a0 + 0x1C) = 0x18;
*(u16 *)((s32)a0 + 0x100) |= 4;
} else {
*(s16 *)((s32)a0 + 2) = 4;
*(u16 *)((s32)a0 + 0x34) = 3;
func_8012A828((s32)a0, D_801A2848);
*(s32 *)((s32)a0 + 0x1C) = 0x1E;
*(u16 *)((s32)a0 + 0x100) |= 4;
}
}
INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017F690", func_80182328);
+18 -1
View File
@@ -4999,7 +4999,24 @@ void func_80180C64(void *a0) {
}
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017CF90", func_80180CA0);
extern void func_8017E6FC(void);
extern s16 D_800B9AAC[];
extern s16 D_801E4C50;
extern Blk8 D_80194554;
void func_80180CA0(s32 a0) {
register Blk8 *s __asm__("$5");
register Blk8 *d __asm__("$4");
s = &D_80194554;
d = &D_801E4C50;
*(Blk8 *)d = *(Blk8 *)s;
D_800B9AAC[0] = 0xFFE;
func_8017E6FC();
*(u8 *)(a0 + 0x214) += 1;
}
void func_80180D18(s32 a0) {
s32 s0 = a0;
+26 -1
View File
@@ -4957,7 +4957,32 @@ void func_80180DF4(void *arg0) {
}
INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017D604", func_80180E90);
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_80183480(s32 a0, s32 a1, s32 a2, s32 a3);
extern s32 D_801BD8B0;
extern s32 D_80189884;
extern s32 D_801BDC00;
void func_80180E90(void *arg0) {
extern s16 D_80189850;
s32 v0;
*(short *)((char *)arg0 + 0x2) = 6;
func_8012E8E0((s32)arg0, (s32)&D_80189850);
func_8012E88C((s32)arg0);
func_8012A828((s32)arg0, (s32)&D_801BD8B0);
v0 = (s32)&D_80189884 | 0x40000000;
*(s32 *)((char *)arg0 + 0x58) = v0;
*(short *)((char *)arg0 + 0x5C) = 0x800;
*(short *)((char *)arg0 + 0x34) = 0;
*(s32 *)((char *)arg0 + 0x1C) = 0;
func_80183480((s32)arg0, (s32)&D_801BDC00, 0, 0x60);
}
extern s32 func_80029178(s32 a0);
extern s32 func_80029504(void);
+23 -1
View File
@@ -4018,7 +4018,29 @@ s32 func_8017EE28(s32 a0, s32 a1, s32 a2) {
}
INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8017C730", func_8017EEA4);
extern s32 func_80135888(s32, s32, s32, s32);
extern void func_8012F568(s32, s32, s32, s32, s32, s32);
extern s32 D_80126B58;
extern u8 D_801152A8[];
s32 func_8017EEA4(s32 a0, s32 a1, s32 a2)
{
register s32 t __asm__("$16");
s32 *base;
t = a2;
base = &D_80126B58;
if (a0 != 0 && *(s16 *)(a0 + 0xAA) != 0)
return 0;
if (func_80135888(base[8], base[14] | 0x10000000, a1, t) != 0)
{
func_8012F568(1, 1, 0, 10, t, (s32)&D_801152A8);
return 1;
}
return 0;
}
extern void func_8017E6F4(s32 a0);
extern void func_8002D59C(s32 a0, u16 a1, s32 a2);
+24 -1
View File
@@ -5826,7 +5826,30 @@ void func_8017FB74(void *arg0) {
}
INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C", func_8017FC58);
extern s32 D_801E1A18;
extern u8 D_8018F4B8[];
extern s32 func_8017B368();
extern s32 func_80178970(void);
extern void func_80178D18(void);
extern s16 D_8018F498;
extern s32 D_8018F478;
extern void func_8012E8E0(s32 a0, s32 a1);
extern void func_8012E88C(s32 a0);
extern void func_8012A828(s32 a0, s32 a1);
void func_8017FC58(void *arg0) {
if (D_801E1A18 == 1) {
((void (*)(s32, s32))func_8017B368)((s32)arg0, (s32)D_8018F4B8);
}
if (((s32 (*)(void *))func_80178970)(arg0) != 0) {
((void (*)(s32))func_80178D18)((s32)arg0);
*(s16 *)((s32)arg0 + 2) = 2;
func_8012E8E0((s32)arg0, (s32)&D_8018F498);
func_8012E88C((s32)arg0);
func_8012A828((s32)arg0, (s32)&D_8018F478);
}
}
extern void func_801851D8(s32 arg);
void func_8017FCE4(void) {
+17 -1
View File
@@ -8466,7 +8466,23 @@ void func_801862A4(s32 _arg0)
}
INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017D494", func_80186300);
#include "common.h"
extern u16 D_801EFD40;
extern void func_80186470(void *a0);
extern void func_8018637C(s32 arg0, s32 arg1);
void func_80186300(s32 a0, void *a1, s32 a2) {
register s32 s1 __asm__("$17") = a2;
D_801EFD40 = D_801EFD40 & 0xFFFB;
func_80186470((void *)a0);
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x10) = 0;
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) = (u16)s1;
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x14) = 0;
func_8018637C(a0, (s32)a1);
}
extern void func_8012A828();
extern u16 D_801EFD40;
+22 -1
View File
@@ -6054,7 +6054,28 @@ void func_80180398(void *a0) {
}
INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8017AE2C", func_801803D4);
extern void func_8012C194(void);
extern void func_8001CEC0(s32 a0, s32 a1);
extern u8 D_80188BC4[];
extern void func_80180440(s32 param_1);
extern s32 func_8012AD50(void *arg0);
void func_801803D4(void *param_1)
{
s32 s0;
s0 = ((s32 (*)(void))func_8012C194)();
*(s32 *)((s32)param_1 + 0x20) = s0;
if (s0 != 0) {
func_8001CEC0(s0, (s32)D_80188BC4);
*(s16 *)(s0 + 0x2C) = 3;
*(s16 *)((s32)param_1 + 0xFC) = 0;
*(s16 *)((s32)param_1 + 0xFE) = 0;
func_80180440((s32)param_1);
func_8012AD50(param_1);
}
}
#include "common.h"
+22 -1
View File
@@ -8340,7 +8340,28 @@ void func_80183574(void *a0) {
}
INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_801835B0);
extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2);
extern s16 D_801AECB4;
void func_801835B0(void *a0, s32 a1)
{
s32 end;
s32 ret;
s16 v1;
end = a1 + 8;
do {
__asm__("");__asm__("");__asm__("");__asm__("");__asm__("");__asm__("");__asm__("");
*(u16 *)((s32)a0 + 0xFC) = *(u16 *)(a1 + 2);
ret = func_8012C658(0x268, *(s16 *)(a1 + 0), (s32)a0);
v1 = *(s16 *)((s32)a0 + 0x70);
if (v1 == 0 && a1 == end) {
*(s32 *)&D_801AECB4 = ret;
}
a1 += 4;
} while (*(s16 *)(a1 + 0) != -1);
}
extern void (*D_8018C7FC[])(void);
+33 -1
View File
@@ -3482,7 +3482,39 @@ void func_8017FF4C(s32 arg0, s16 *arg1, s32 arg2) {
INCLUDE_ASM("asm/ov_SC06_025/nonmatchings/ov_SC06_025_jr_8017EEC4", func_80180020);
INCLUDE_ASM("asm/ov_SC06_025/nonmatchings/ov_SC06_025_jr_8017EEC4", func_80180284);
/* Declarations are BLOCK-scope on purpose (this TU's house style, cf. the
* block-scope decl layers at func_80180300 and neighbours in this file).
* A file-scope prototype for func_8012A828 here would become visible to
* func_80181C74, which deliberately calls `func_8012A828()` with no
* arguments behind a no-prototype decl -- a file-scope prototype turns that
* call into a hard `too few arguments` error and fails the whole-binary gate
* even though this function itself is byte-identical. */
s32 func_80180284(void)
{
extern void func_8012E8E0(s32 a0, s32 a1);
extern void func_8012A828(s32 a0, void *a1);
extern void func_80029124(s32 a0, s32 a1);
extern s32 D_801270CC;
extern s16 D_801B1710;
extern s16 D_801B1714;
extern u8 D_801889F8[];
extern u8 D_801A01A4[];
register void *arg0 __asm__("$4");
void *s0;
s0 = arg0;
*(u16 *)((s32)s0 + 0x2) = 2;
*(u16 *)((s32)s0 + 0x34) = 0;
func_8012E8E0((s32)s0, (s32)&D_801889F8);
func_8012A828((s32)s0, &D_801A01A4);
*(s32 *)((s32)s0 + 0x1C) = 5;
D_801270CC = 1;
D_801B1710 = 0;
D_801B1714 = 0;
func_80029124(0x11E, 0);
}
#include "common.h"
+26 -1
View File
@@ -5398,7 +5398,32 @@ void func_80180B90(void *a0) {
}
INCLUDE_ASM("asm/ov_SC07_001/nonmatchings/ov_SC07_001_jr_8017BEBC", func_80180C2C);
extern s16 D_801AAD8C;
extern u16 D_80126B5E;
extern u16 D_80126B62;
extern u16 D_80126B66;
extern u16 D_80126BE2;
extern u16 D_80126BE4;
extern u8 D_80126BE0[];
extern void func_8012E014(s32 a0);
void func_80180C2C(void *a0)
{
u16 t;
if (*(u16 *)&D_801AAD8C == 3) {
t = *(u16 *)&D_801AAD8C + 1;
*(u16 *)((s32)a0 + 0x34) = 0;
*(s16 *)&D_801AAD8C = t;
}
if (*(u8 *)((s32)a0 + 0x74) != 0) {
func_8012E014((s32)a0);
*(u16 *)&D_80126BE0[0] = D_80126B5E;
D_80126BE2 = D_80126B62;
D_80126BE4 = D_80126B66;
}
}
extern s32 func_8012C1B8(void);
extern void func_8012CAE4(void *a0);
+31 -1
View File
@@ -6838,7 +6838,37 @@ void func_80181B98(s32 param_1)
}
INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_80181C54);
void func_80181C54(void *a0)
{
extern s32 D_80186088;
extern void func_800134FC(s32, void *, void *);
extern void func_8001382C(s32, void *, void *);
s32 *s = (s32 *)a0;
s32 *tbl = &D_80186088;
s16 sp10[8];
register s32 v0 __asm__("$2");
register s32 vT3 __asm__("$4");
u16 v1;
*tbl = -(*(s32 *)(s + 0xB) << 18);
func_800134FC(*(s16 *)((s8 *)a0 + 0x30), tbl - 2, sp10);
func_8001382C(*(s16 *)((s8 *)a0 + 0x32), sp10, sp10);
v0 = *(s32 *)&sp10[0];
v1 = *(u16 *)((s8 *)a0 + 2);
*(s32 *)(s + 4) = v0;
v0 = *(s32 *)&sp10[2];
v1 = v1 + 1;
*(s32 *)(s + 5) = v0;
__asm__ __volatile__("" ::: "memory");
vT3 = *(s32 *)&sp10[4];
v0 = 8;
*(s32 *)(s + 7) = v0;
__asm__ __volatile__("" ::: "memory");
*(u16 *)((s8 *)a0 + 2) = v1;
*(s32 *)(s + 6) = vT3;
}
void func_80181CDC(void *a0) {
extern void func_8012931C(void *a0);