diff --git a/.run/P35/baseline/twin_ov_SC04_019_check.log b/.run/P35/baseline/twin_ov_SC04_019_check.log new file mode 100644 index 000000000..8df48130d --- /dev/null +++ b/.run/P35/baseline/twin_ov_SC04_019_check.log @@ -0,0 +1,1828 @@ + CC build/src/ov_SC04_019/ov_SC04_019_jr_80178D40.o (twin of ov_SC04_018: src/ov_SC04_018/ov_SC04_018_jr_80178D40.c) + CC build/src/ov_SC04_019/ov_SC04_019_jr_8018CC40.o (twin of ov_SC04_018: src/ov_SC04_018/ov_SC04_018_jr_8018CC40.c) + CC build/src/ov_SC04_019/ov_SC04_019_jr_80135888.o (twin of ov_SC04_018: src/ov_SC04_018/ov_SC04_018_jr_80135888.c) + CC build/src/ov_SC04_019/ov_SC04_019_jr_8013FFD8.o (twin of ov_SC04_018: src/ov_SC04_018/ov_SC04_018_jr_8013FFD8.c) + CC build/src/ov_SC04_019/ov_SC04_019_jr_80154C24.o (twin of ov_SC04_018: src/ov_SC04_018/ov_SC04_018_jr_80154C24.c) + CC build/src/ov_SC04_019/ov_SC04_019_jr_801588CC.o (twin of ov_SC04_018: src/ov_SC04_018/ov_SC04_018_jr_801588CC.c) + CC build/src/ov_SC04_019/ov_SC04_019_jr_8017AE2C.o (twin of ov_SC04_018: src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c) + CC build/src/ov_SC04_019/ov_SC04_019_jr_8015A3C8.o (twin of ov_SC04_018: src/ov_SC04_018/ov_SC04_018_jr_8015A3C8.c) + CC build/src/ov_SC04_019/ov_SC04_019_jr_801734BC.o (twin of ov_SC04_018: src/ov_SC04_018/ov_SC04_018_jr_801734BC.c) + CC build/src/ov_SC04_019/ov_SC04_019_jr_8015AE2C.o (twin of ov_SC04_018: src/ov_SC04_018/ov_SC04_018_jr_8015AE2C.c) + CC build/src/ov_SC04_019/ov_SC04_019_jr_80140608.o (twin of ov_SC04_018: src/ov_SC04_018/ov_SC04_018_jr_80140608.c) + CC build/src/ov_SC04_019/ov_SC04_019_jr_80183E6C.o (twin of ov_SC04_018: src/ov_SC04_018/ov_SC04_018_jr_80183E6C.c) + CC build/src/ov_SC04_019/ov_SC04_019_jr_8015444C.o (twin of ov_SC04_018: src/ov_SC04_018/ov_SC04_018_jr_8015444C.c) + CC build/src/ov_SC04_019/ov_SC04_019_jr_80135D20.o (twin of ov_SC04_018: src/ov_SC04_018/ov_SC04_018_jr_80135D20.c) + CC build/src/ov_SC04_019/ov_SC04_019_o0b.o (twin of ov_SC04_018: src/ov_SC04_018/ov_SC04_018_o0b.c) + CC build/src/ov_SC04_019/ov_SC04_019_jr_8017A4AC.o (twin of ov_SC04_018: src/ov_SC04_018/ov_SC04_018_jr_8017A4AC.c) + CC build/src/ov_SC04_019/ov_SC04_019_jr_80171B4C.o (twin of ov_SC04_018: src/ov_SC04_018/ov_SC04_018_jr_80171B4C.c) +In file included from src/ov_SC04_018/ov_SC04_018_jr_8018CC40.c:2: +src/ov_SC04_018/../shared/engine_core.h:161199: warning: "DEFINE_func_8013FFD8" redefined +161199 | #define DEFINE_func_8013FFD8() \ + | +src/ov_SC04_018/../shared/engine_core.h:32633: note: this is the location of the previous definition +32633 | #define DEFINE_func_8013FFD8() \ + | +In file included from src/ov_SC04_018/ov_SC04_018_jr_8017A4AC.c:2: +src/ov_SC04_018/../shared/engine_core.h:161199: warning: "DEFINE_func_8013FFD8" redefined +161199 | #define DEFINE_func_8013FFD8() \ + | +src/ov_SC04_018/../shared/engine_core.h:32633: note: this is the location of the previous definition +32633 | #define DEFINE_func_8013FFD8() \ + | +In file included from src/ov_SC04_018/ov_SC04_018_jr_80135D20.c:2: +src/ov_SC04_018/../shared/engine_core.h:161199: warning: "DEFINE_func_8013FFD8" redefined +161199 | #define DEFINE_func_8013FFD8() \ + | +src/ov_SC04_018/../shared/engine_core.h:32633: note: this is the location of the previous definition +32633 | #define DEFINE_func_8013FFD8() \ + | +In file included from src/ov_SC04_018/ov_SC04_018_jr_801588CC.c:2: +src/ov_SC04_018/../shared/engine_core.h:161199: warning: "DEFINE_func_8013FFD8" redefined +161199 | #define DEFINE_func_8013FFD8() \ + | +In file included from src/ov_SC04_018/ov_SC04_018_jr_80178D40.c:2: +src/ov_SC04_018/../shared/engine_core.h:161199: warning: "DEFINE_func_8013FFD8" redefined +161199 | #define DEFINE_func_8013FFD8() \ + | +src/ov_SC04_018/../shared/engine_core.h:32633: note: this is the location of the previous definition +32633 | #define DEFINE_func_8013FFD8() \ + | +src/ov_SC04_018/../shared/engine_core.h:32633: note: this is the location of the previous definition +32633 | #define DEFINE_func_8013FFD8() \ + | +In file included from src/ov_SC04_018/ov_SC04_018_jr_80135888.c:2: +src/ov_SC04_018/../shared/engine_core.h:161199: warning: "DEFINE_func_8013FFD8" redefined +161199 | #define DEFINE_func_8013FFD8() \ + | +src/ov_SC04_018/../shared/engine_core.h:32633: note: this is the location of the previous definition +32633 | #define DEFINE_func_8013FFD8() \ + | +In file included from src/ov_SC04_018/ov_SC04_018_jr_8015A3C8.c:2: +src/ov_SC04_018/../shared/engine_core.h:161199: warning: "DEFINE_func_8013FFD8" redefined +161199 | #define DEFINE_func_8013FFD8() \ + | +src/ov_SC04_018/../shared/engine_core.h:32633: note: this is the location of the previous definition +32633 | #define DEFINE_func_8013FFD8() \ + | +In file included from src/ov_SC04_018/ov_SC04_018_jr_8013FFD8.c:2: +src/ov_SC04_018/../shared/engine_core.h:161199: warning: "DEFINE_func_8013FFD8" redefined +161199 | #define DEFINE_func_8013FFD8() \ + | +src/ov_SC04_018/../shared/engine_core.h:32633: note: this is the location of the previous definition +32633 | #define DEFINE_func_8013FFD8() \ + | +In file included from src/ov_SC04_018/ov_SC04_018_jr_80140608.c:2: +src/ov_SC04_018/../shared/engine_core.h:161199: warning: "DEFINE_func_8013FFD8" redefined +161199 | #define DEFINE_func_8013FFD8() \ + | +src/ov_SC04_018/../shared/engine_core.h:32633: note: this is the location of the previous definition +32633 | #define DEFINE_func_8013FFD8() \ + | +In file included from src/ov_SC04_018/ov_SC04_018_jr_801734BC.c:2: +src/ov_SC04_018/../shared/engine_core.h:161199: warning: "DEFINE_func_8013FFD8" redefined +161199 | #define DEFINE_func_8013FFD8() \ + | +src/ov_SC04_018/../shared/engine_core.h:32633: note: this is the location of the previous definition +32633 | #define DEFINE_func_8013FFD8() \ + | +In file included from src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:2: +src/ov_SC04_018/../shared/engine_core.h:161199: warning: "DEFINE_func_8013FFD8" redefined +161199 | #define DEFINE_func_8013FFD8() \ + | +src/ov_SC04_018/../shared/engine_core.h:32633: note: this is the location of the previous definition +32633 | #define DEFINE_func_8013FFD8() \ + | +In file included from src/ov_SC04_018/ov_SC04_018_jr_8015AE2C.c:2: +src/ov_SC04_018/../shared/engine_core.h:161199: warning: "DEFINE_func_8013FFD8" redefined +161199 | #define DEFINE_func_8013FFD8() \ + | +src/ov_SC04_018/../shared/engine_core.h:32633: note: this is the location of the previous definition +32633 | #define DEFINE_func_8013FFD8() \ + | +In file included from src/ov_SC04_018/ov_SC04_018_jr_80154C24.c:2: +src/ov_SC04_018/../shared/engine_core.h:161199: warning: "DEFINE_func_8013FFD8" redefined +161199 | #define DEFINE_func_8013FFD8() \ + | +src/ov_SC04_018/../shared/engine_core.h:32633: note: this is the location of the previous definition +32633 | #define DEFINE_func_8013FFD8() \ + | +src/ov_SC04_018/../shared/engine_core.h:169456: warning: "DEFINE_func_8013F350" redefined +169456 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:40890: note: this is the location of the previous definition +40890 | #define DEFINE_func_8013F350() \ + | +In file included from src/ov_SC04_018/ov_SC04_018_jr_8015444C.c:2: +src/ov_SC04_018/../shared/engine_core.h:161199: warning: "DEFINE_func_8013FFD8" redefined +161199 | #define DEFINE_func_8013FFD8() \ + | +src/ov_SC04_018/../shared/engine_core.h:32633: note: this is the location of the previous definition +32633 | #define DEFINE_func_8013FFD8() \ + | +In file included from src/ov_SC04_018/ov_SC04_018_jr_80183E6C.c:2: +src/ov_SC04_018/../shared/engine_core.h:161199: warning: "DEFINE_func_8013FFD8" redefined +161199 | #define DEFINE_func_8013FFD8() \ + | +src/ov_SC04_018/../shared/engine_core.h:32633: note: this is the location of the previous definition +32633 | #define DEFINE_func_8013FFD8() \ + | +src/ov_SC04_018/../shared/engine_core.h:169456: warning: "DEFINE_func_8013F350" redefined +169456 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:40890: note: this is the location of the previous definition +40890 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:169456: warning: "DEFINE_func_8013F350" redefined +169456 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:40890: note: this is the location of the previous definition +40890 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:169456: warning: "DEFINE_func_8013F350" redefined +169456 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:40890: note: this is the location of the previous definition +40890 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:169456: warning: "DEFINE_func_8013F350" redefined +169456 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:40890: note: this is the location of the previous definition +40890 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:169456: warning: "DEFINE_func_8013F350" redefined +169456 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:40890: note: this is the location of the previous definition +40890 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:169456: warning: "DEFINE_func_8013F350" redefined +169456 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:40890: note: this is the location of the previous definition +40890 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:169456: warning: "DEFINE_func_8013F350" redefined +169456 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:40890: note: this is the location of the previous definition +40890 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:169456: warning: "DEFINE_func_8013F350" redefined +169456 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:169456: warning: "DEFINE_func_8013F350" redefined +169456 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:40890: note: this is the location of the previous definition +40890 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:40890: note: this is the location of the previous definition +40890 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:169456: warning: "DEFINE_func_8013F350" redefined +169456 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:40890: note: this is the location of the previous definition +40890 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:169456: warning: "DEFINE_func_8013F350" redefined +169456 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:40890: note: this is the location of the previous definition +40890 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:169456: warning: "DEFINE_func_8013F350" redefined +169456 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:40890: note: this is the location of the previous definition +40890 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:169456: warning: "DEFINE_func_8013F350" redefined +169456 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:40890: note: this is the location of the previous definition +40890 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:169456: warning: "DEFINE_func_8013F350" redefined +169456 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:40890: note: this is the location of the previous definition +40890 | #define DEFINE_func_8013F350() \ + | +In file included from src/ov_SC04_018/ov_SC04_018_jr_80171B4C.c:2: +src/ov_SC04_018/../shared/engine_core.h:161199: warning: "DEFINE_func_8013FFD8" redefined +161199 | #define DEFINE_func_8013FFD8() \ + | +src/ov_SC04_018/../shared/engine_core.h:32633: note: this is the location of the previous definition +32633 | #define DEFINE_func_8013FFD8() \ + | +src/ov_SC04_018/../shared/engine_core.h:169456: warning: "DEFINE_func_8013F350" redefined +169456 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:40890: note: this is the location of the previous definition +40890 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:185848: warning: "DEFINE_func_80181538" redefined +185848 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:57282: note: this is the location of the previous definition +57282 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:185848: warning: "DEFINE_func_80181538" redefined +185848 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:57282: note: this is the location of the previous definition +57282 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:185848: warning: "DEFINE_func_80181538" redefined +185848 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:57282: note: this is the location of the previous definition +57282 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:185848: warning: "DEFINE_func_80181538" redefined +185848 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:57282: note: this is the location of the previous definition +57282 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:185848: warning: "DEFINE_func_80181538" redefined +185848 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:57282: note: this is the location of the previous definition +57282 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:185848: warning: "DEFINE_func_80181538" redefined +185848 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:57282: note: this is the location of the previous definition +57282 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:185848: warning: "DEFINE_func_80181538" redefined +185848 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:57282: note: this is the location of the previous definition +57282 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:190943: warning: "DEFINE_func_801808C4" redefined +190943 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:62377: note: this is the location of the previous definition +62377 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:190943: warning: "DEFINE_func_801808C4" redefined +190943 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:62377: note: this is the location of the previous definition +62377 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:185848: warning: "DEFINE_func_80181538" redefined +185848 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:57282: note: this is the location of the previous definition +57282 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:185848: warning: "DEFINE_func_80181538" redefined +185848 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:57282: note: this is the location of the previous definition +57282 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:185848: warning: "DEFINE_func_80181538" redefined +185848 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:57282: note: this is the location of the previous definition +57282 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:185848: warning: "DEFINE_func_80181538" redefined +185848 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:57282: note: this is the location of the previous definition +57282 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:190943: warning: "DEFINE_func_801808C4" redefined +190943 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:62377: note: this is the location of the previous definition +62377 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:185848: warning: "DEFINE_func_80181538" redefined +185848 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:57282: note: this is the location of the previous definition +57282 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:190943: warning: "DEFINE_func_801808C4" redefined +190943 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:62377: note: this is the location of the previous definition +62377 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:190943: warning: "DEFINE_func_801808C4" redefined +190943 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:62377: note: this is the location of the previous definition +62377 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:190943: warning: "DEFINE_func_801808C4" redefined +190943 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:62377: note: this is the location of the previous definition +62377 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:190943: warning: "DEFINE_func_801808C4" redefined +190943 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:62377: note: this is the location of the previous definition +62377 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:190943: warning: "DEFINE_func_801808C4" redefined +190943 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:62377: note: this is the location of the previous definition +62377 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:190943: warning: "DEFINE_func_801808C4" redefined +190943 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:62377: note: this is the location of the previous definition +62377 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:190943: warning: "DEFINE_func_801808C4" redefined +190943 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:185848: warning: "DEFINE_func_80181538" redefined +185848 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:62377: note: this is the location of the previous definition +62377 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:57282: note: this is the location of the previous definition +57282 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:185848: warning: "DEFINE_func_80181538" redefined +185848 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:57282: note: this is the location of the previous definition +57282 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:190943: warning: "DEFINE_func_801808C4" redefined +190943 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:62377: note: this is the location of the previous definition +62377 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:190943: warning: "DEFINE_func_801808C4" redefined +190943 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:62377: note: this is the location of the previous definition +62377 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:185848: warning: "DEFINE_func_80181538" redefined +185848 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:57282: note: this is the location of the previous definition +57282 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:190943: warning: "DEFINE_func_801808C4" redefined +190943 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:190943: warning: "DEFINE_func_801808C4" redefined +190943 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:62377: note: this is the location of the previous definition +62377 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:62377: note: this is the location of the previous definition +62377 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:190943: warning: "DEFINE_func_801808C4" redefined +190943 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:62377: note: this is the location of the previous definition +62377 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:185848: warning: "DEFINE_func_80181538" redefined +185848 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:57282: note: this is the location of the previous definition +57282 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:190943: warning: "DEFINE_func_801808C4" redefined +190943 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:62377: note: this is the location of the previous definition +62377 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/ov_SC04_018_jr_8017A4AC.c:1530: warning: conflicting types for built-in function `memcpy' +src/ov_SC04_018/ov_SC04_018_jr_8018CC40.c:1522: warning: conflicting types for built-in function `memcpy' +src/ov_SC04_018/ov_SC04_018_jr_80135888.c:578: warning: conflicting types for built-in function `memcpy' +src/ov_SC04_018/ov_SC04_018_jr_80135888.c: In function `func_80135888': +src/ov_SC04_018/ov_SC04_018_jr_80135888.c:680: warning: passing arg 1 of `func_80135EB0' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_80135888.c:687: warning: passing arg 1 of `func_80135EB0' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_80135D20.c:578: warning: conflicting types for built-in function `memcpy' +src/ov_SC04_018/ov_SC04_018_jr_80178D40.c:1530: warning: conflicting types for built-in function `memcpy' +src/ov_SC04_018/ov_SC04_018_jr_80178D40.c: In function `func_80178D40': +src/ov_SC04_018/ov_SC04_018_jr_80178D40.c:2732: warning: passing arg 1 makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8018CC40.c: In function `func_8018CC40': +src/ov_SC04_018/ov_SC04_018_jr_8018CC40.c:3272: warning: passing arg 2 of `func_80178CBC' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8018CC40.c:3275: warning: passing arg 2 of `func_80178CBC' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8018CC40.c:3280: warning: passing arg 1 makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8018CC40.c:3281: warning: passing arg 1 makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8018CC40.c:3287: warning: passing arg 1 makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8018CC40.c:3291: warning: passing arg 1 makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8018CC40.c:3301: warning: passing arg 1 makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8018CC40.c:3302: warning: passing arg 1 makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_80140608.c: In function `func_80140D68': +src/ov_SC04_018/ov_SC04_018_jr_80140608.c:1253: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_80140608.c:1114: warning: previous external decl of `D_800AE7BC' +src/ov_SC04_018/ov_SC04_018_jr_80178D40.c:3139: warning: passing arg 1 makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_801588CC.c: In function `func_80158AE4': +src/ov_SC04_018/ov_SC04_018_jr_801588CC.c:1159: warning: passing arg 1 makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_801588CC.c:1159: warning: passing arg 1 makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_801588CC.c:1159: warning: passing arg 1 of `func_80165A20' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_801588CC.c:1159: warning: passing arg 1 of `func_80165A78' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_801588CC.c:1159: warning: passing arg 1 of `func_8014B160' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_80140608.c: In function `aF801412A8': +src/ov_SC04_018/ov_SC04_018_jr_80140608.c:1434: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_80140608.c:1114: warning: previous external decl of `D_800AE7BC' +src/ov_SC04_018/ov_SC04_018_jr_801588CC.c: In function `func_80158BB0': +src/ov_SC04_018/ov_SC04_018_jr_801588CC.c:1178: warning: passing arg 2 of `func_80154274' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_801588CC.c:1179: warning: passing arg 1 of `func_80154A74' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_801734BC.c:1533: warning: conflicting types for built-in function `memcpy' +src/ov_SC04_018/ov_SC04_018_jr_80135D20.c: In function `func_80136A94': +src/ov_SC04_018/ov_SC04_018_jr_80135D20.c:1208: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_80135D20.c:774: warning: previous external decl of `D_80126722' +src/ov_SC04_018/ov_SC04_018_jr_8013FFD8.c:1054: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8013FFD8.c:918: warning: previous external decl of `D_8018E2C8' +src/ov_SC04_018/ov_SC04_018_jr_8013FFD8.c: In function `func_8014032C': +src/ov_SC04_018/ov_SC04_018_jr_8013FFD8.c:1073: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8013FFD8.c:919: warning: previous external decl of `D_8018E2D4' +src/ov_SC04_018/ov_SC04_018_jr_8013FFD8.c:1078: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8013FFD8.c:932: warning: previous external decl of `D_801E5B5C' +src/ov_SC04_018/ov_SC04_018_jr_8013FFD8.c:1160: warning: return makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_801734BC.c:2344: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_801734BC.c:2321: warning: previous external decl of `func_80173544' +src/ov_SC04_018/ov_SC04_018_jr_80178D40.c: At top level: +src/ov_SC04_018/ov_SC04_018_jr_80178D40.c:3371: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_80178D40.c:2642: warning: previous external decl of `func_80179D30' +src/ov_SC04_018/ov_SC04_018_jr_80178D40.c:3373: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_80178D40.c:2643: warning: previous external decl of `func_80179D78' +src/ov_SC04_018/ov_SC04_018_jr_80178D40.c:3375: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_80178D40.c:2645: warning: previous external decl of `func_80179DCC' +src/ov_SC04_018/ov_SC04_018_jr_80178D40.c:3379: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_80178D40.c:2647: warning: previous external decl of `func_80179E1C' +src/ov_SC04_018/ov_SC04_018_jr_80178D40.c:3381: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_80178D40.c:2648: warning: previous external decl of `func_80179E48' +src/ov_SC04_018/ov_SC04_018_jr_80178D40.c:3383: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_80178D40.c:2649: warning: previous external decl of `func_80179E74' +src/ov_SC04_018/ov_SC04_018_jr_80178D40.c:3385: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_80178D40.c:2644: warning: previous external decl of `func_80179EA0' +src/ov_SC04_018/ov_SC04_018_jr_80178D40.c:3387: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_80178D40.c:2650: warning: previous external decl of `func_80179EE8' +src/ov_SC04_018/ov_SC04_018_jr_80135D20.c: At top level: +src/ov_SC04_018/ov_SC04_018_jr_80135D20.c:1288: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_80135D20.c:1206: warning: previous external decl of `ApplyMatrixSV' +src/ov_SC04_018/ov_SC04_018_jr_80178D40.c:3389: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_80178D40.c:2651: warning: previous external decl of `func_80179F14' +src/ov_SC04_018/ov_SC04_018_jr_80178D40.c:3393: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_80178D40.c:2653: warning: previous external decl of `func_80179F6C' +src/ov_SC04_018/ov_SC04_018_jr_80178D40.c:3395: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_80178D40.c:2654: warning: previous external decl of `func_80179F98' +src/ov_SC04_018/ov_SC04_018_jr_80178D40.c:3397: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_80178D40.c:2655: warning: previous external decl of `func_80179FEC' +src/ov_SC04_018/ov_SC04_018_jr_80178D40.c:3399: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_80178D40.c:2656: warning: previous external decl of `func_8017A040' +src/ov_SC04_018/ov_SC04_018_jr_801734BC.c: In function `func_80173A60': +src/ov_SC04_018/ov_SC04_018_jr_801734BC.c:2415: warning: passing arg 2 of `__builtin_memcpy' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_801734BC.c: In function `func_80173BC0': +src/ov_SC04_018/ov_SC04_018_jr_801734BC.c:2428: warning: passing arg 1 of `func_80171A34' from incompatible pointer type +src/ov_SC04_018/ov_SC04_018_jr_801588CC.c: In function `func_80159B08': +src/ov_SC04_018/ov_SC04_018_jr_801588CC.c:1584: warning: passing arg 1 of `func_80159BE4' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_80178D40.c:3474: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_80178D40.c:2676: warning: previous external decl of `func_8017A3B0' +src/ov_SC04_018/ov_SC04_018_jr_80178D40.c:3498: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_80178D40.c:2677: warning: previous external decl of `func_8017A3D8' +src/ov_SC04_018/ov_SC04_018_jr_8015A3C8.c: In function `func_8015ADB0': +src/ov_SC04_018/ov_SC04_018_jr_8015A3C8.c:1470: warning: passing arg 1 of `func_80161124' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:1528: warning: conflicting types for built-in function `memcpy' + CC build/src/ov_SC04_019/ov_SC04_019_jr_80185D70.o (twin of ov_SC04_018: src/ov_SC04_018/ov_SC04_018_jr_80185D70.c) +src/ov_SC04_018/ov_SC04_018_jr_801734BC.c: In function `func_801743F0': +src/ov_SC04_018/ov_SC04_018_jr_801734BC.c:2478: warning: passing arg 1 of `func_80172658' from incompatible pointer type + CC build/src/ov_SC04_019/ov_SC04_019_jr_801380E0.o (twin of ov_SC04_018: src/ov_SC04_018/ov_SC04_018_jr_801380E0.c) +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c: In function `func_8017B368': +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:2815: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:2766: warning: previous external decl of `D_80190B54' +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c: In function `func_8017B490': +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:2851: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:2766: warning: previous external decl of `D_80190B54' +src/ov_SC04_018/ov_SC04_018_jr_80140608.c: In function `func_80142838': +src/ov_SC04_018/ov_SC04_018_jr_80140608.c:1768: warning: passing arg 1 of `func_8012C0EC' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_80154C24.c:1259: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_80154C24.c:1205: warning: previous external decl of `func_801565C0' +src/ov_SC04_018/ov_SC04_018_jr_80154C24.c: In function `func_80156600': +src/ov_SC04_018/ov_SC04_018_jr_80154C24.c:1295: warning: return makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_80154C24.c:1295: warning: return makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_80154C24.c: At top level: +src/ov_SC04_018/ov_SC04_018_jr_80154C24.c:1300: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_80154C24.c:1201: warning: previous external decl of `func_80156670' +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c: At top level: +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:3131: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:2811: warning: previous external decl of `D_801E6CCC' +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:3132: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:2812: warning: previous external decl of `D_801E6CD4' +src/ov_SC04_018/ov_SC04_018_jr_80154C24.c:1305: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_80154C24.c:1203: warning: previous external decl of `func_80156848' +src/ov_SC04_018/ov_SC04_018_jr_80183E6C.c:1522: warning: conflicting types for built-in function `memcpy' +src/ov_SC04_018/ov_SC04_018_jr_80140608.c: In function `func_80142F68': +src/ov_SC04_018/ov_SC04_018_jr_80140608.c:1981: warning: passing arg 1 of `func_8012C0EC' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:3315: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:2765: warning: previous external decl of `func_8017BE60' +src/ov_SC04_018/ov_SC04_018_jr_80140608.c: In function `func_801430F4': +src/ov_SC04_018/ov_SC04_018_jr_80140608.c:2024: warning: passing arg 1 of `func_8012C0EC' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c: In function `func_8017C1AC': +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:3481: warning: passing arg 2 of `RotMatrixYXZ' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_801734BC.c: In function `func_80175218': +src/ov_SC04_018/ov_SC04_018_jr_801734BC.c:2679: warning: passing arg 1 makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_801734BC.c:2680: warning: passing arg 1 makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_80154C24.c:1329: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_80154C24.c:1327: warning: previous external decl of `func_80156ECC' +src/ov_SC04_018/ov_SC04_018_jr_80154C24.c: In function `func_80156ECC': +src/ov_SC04_018/ov_SC04_018_jr_80154C24.c:1329: warning: passing arg 1 of `func_80156FA8' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_80154C24.c:1329: warning: passing arg 2 of `func_80156FA8' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_80154C24.c:1329: warning: passing arg 3 of `func_80156FA8' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_80140608.c: In function `func_801432FC': +src/ov_SC04_018/ov_SC04_018_jr_80140608.c:2079: warning: passing arg 1 of `func_8012C044' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_80140608.c: src/ov_SC04_018/ov_SC04_018_jr_80183E6C.c: In function `func_801433F0': +In function `func_80184298': +src/ov_SC04_018/ov_SC04_018_jr_80140608.c:2083: src/ov_SC04_018/ov_SC04_018_jr_80183E6C.c:3214: warning: warning: passing arg 1 of `func_80128ED8' makes integer from pointer without a castpassing arg 2 makes integer from pointer without a cast + +src/ov_SC04_018/ov_SC04_018_jr_80140608.c:2083: warning: passing arg 2 of `func_80128ED8' from incompatible pointer type +src/ov_SC04_018/ov_SC04_018_jr_80183E6C.c: At top level: +src/ov_SC04_018/ov_SC04_018_jr_80183E6C.c:3240: warning: prototype for `func_80183FA8' follows +src/ov_SC04_018/ov_SC04_018_jr_80183E6C.c:3076: warning: non-prototype definition here +src/ov_SC04_018/ov_SC04_018_jr_80140608.c: In function `func_8014350C': +src/ov_SC04_018/ov_SC04_018_jr_80140608.c:2122: warning: passing arg 1 of `func_80128ED8' makes integer from pointer without a cast + CC build/src/ov_SC04_019/ov_SC04_019_jr_8012ACE0.o (twin of ov_SC04_018: src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c) +src/ov_SC04_018/ov_SC04_018_jr_80154C24.c: At top level: +src/ov_SC04_018/ov_SC04_018_jr_80154C24.c:1337: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_80154C24.c:1334: warning: previous external decl of `func_801571C4' +src/ov_SC04_018/ov_SC04_018_jr_80154C24.c:1337: warning: type mismatch with previous implicit declaration +src/ov_SC04_018/ov_SC04_018_jr_80154C24.c:1334: warning: previous implicit declaration of `func_801571C4' +src/ov_SC04_018/ov_SC04_018_jr_80154C24.c:1337: warning: `func_801571C4' was previously implicitly declared to return `int' +src/ov_SC04_018/ov_SC04_018_jr_80154C24.c: In function `func_801571C4': +src/ov_SC04_018/ov_SC04_018_jr_80154C24.c:1337: warning: passing arg 3 of `func_80135260' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_80154C24.c:1337: warning: passing arg 4 of `func_80135260' makes pointer from integer without a cast + CC build/src/ov_SC04_019/ov_SC04_019_jr_80186570.o (twin of ov_SC04_018: src/ov_SC04_018/ov_SC04_018_jr_80186570.c) +src/ov_SC04_018/ov_SC04_018_jr_80183E6C.c:3344: warning: parameter names (without types) in function declaration +src/ov_SC04_018/ov_SC04_018_jr_801734BC.c: In function `func_801758FC': +src/ov_SC04_018/ov_SC04_018_jr_801734BC.c:2792: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_801734BC.c:2789: warning: previous external decl of `D_800AE7BC' +src/ov_SC04_018/ov_SC04_018_jr_801734BC.c:2792: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_801734BC.c:2789: warning: previous external decl of `D_800AF634' +src/ov_SC04_018/ov_SC04_018_jr_801734BC.c: In function `func_801759D8': +src/ov_SC04_018/ov_SC04_018_jr_801734BC.c:2799: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_801734BC.c:2789: warning: previous external decl of `D_800AE7BC' +src/ov_SC04_018/ov_SC04_018_jr_801734BC.c:2799: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_801734BC.c:2789: warning: previous external decl of `D_800AF634' +src/ov_SC04_018/ov_SC04_018_jr_801734BC.c: In function `func_80175AB8': +src/ov_SC04_018/ov_SC04_018_jr_801734BC.c:2807: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_801734BC.c:2789: warning: previous external decl of `D_800AF634' +src/ov_SC04_018/ov_SC04_018_jr_80171B4C.c:1532: warning: conflicting types for built-in function `memcpy' +src/ov_SC04_018/ov_SC04_018_jr_8015AE2C.c: In function `func_8015BF48': +src/ov_SC04_018/ov_SC04_018_jr_8015AE2C.c:1794: warning: passing arg 1 of `func_8015C0C4' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_80154C24.c: In function `func_8015773C': +src/ov_SC04_018/ov_SC04_018_jr_80154C24.c:1359: warning: passing arg 1 of `func_801553A8' from incompatible pointer type +src/ov_SC04_018/ov_SC04_018_jr_8015AE2C.c: In function `func_8015C128': +src/ov_SC04_018/ov_SC04_018_jr_8015AE2C.c:1831: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8015AE2C.c:1246: warning: previous external decl of `D_8018F8B0' +src/ov_SC04_018/ov_SC04_018_jr_80154C24.c: In function `func_801577C8': +src/ov_SC04_018/ov_SC04_018_jr_80154C24.c:1382: warning: passing arg 1 of `func_80147078' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_80154C24.c: At top level: +src/ov_SC04_018/ov_SC04_018_jr_80154C24.c:1397: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_80154C24.c:1383: warning: previous external decl of `func_80157808' +src/ov_SC04_018/ov_SC04_018_jr_80154C24.c:1397: warning: type mismatch with previous implicit declaration +src/ov_SC04_018/ov_SC04_018_jr_80154C24.c:1383: warning: previous implicit declaration of `func_80157808' +src/ov_SC04_018/ov_SC04_018_jr_80154C24.c:1397: warning: `func_80157808' was previously implicitly declared to return `int' + CC build/src/ov_SC04_019/ov_SC04_019.o (twin of ov_SC04_018: src/ov_SC04_018/ov_SC04_018.c) +src/ov_SC04_018/ov_SC04_018_jr_801734BC.c: In function `func_80175DA8': +src/ov_SC04_018/ov_SC04_018_jr_801734BC.c:2905: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_801734BC.c:2789: warning: previous external decl of `D_800AF634' +src/ov_SC04_018/ov_SC04_018_jr_80140608.c: In function `func_801442F8': +src/ov_SC04_018/ov_SC04_018_jr_80140608.c:2369: warning: passing arg 1 of `func_8012C218' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_80171B4C.c: In function `func_80171CC4': +src/ov_SC04_018/ov_SC04_018_jr_80171B4C.c:2267: warning: passing arg 1 of `func_80171D78' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_80171B4C.c:2267: warning: passing arg 2 of `func_80171D78' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_80140608.c: In function `func_80144458': +src/ov_SC04_018/ov_SC04_018_jr_80140608.c:2434: warning: passing arg 1 of `func_8012AD80' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_80140608.c:2440: warning: passing arg 1 of `func_80128ED8' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_801734BC.c: In function `func_80176218': +src/ov_SC04_018/ov_SC04_018_jr_801734BC.c:3253: warning: passing arg 1 of `func_80177DA8' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_80154C24.c: In function `func_80158038': +src/ov_SC04_018/ov_SC04_018_jr_80154C24.c:1610: warning: passing arg 1 of `func_80154A74' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_80154C24.c:1613: warning: passing arg 2 of `func_80146994' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_80140608.c: In function `func_8014462C': +src/ov_SC04_018/ov_SC04_018_jr_80140608.c:2449: warning: passing arg 1 of `func_80128ED8' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_80140608.c:2449: warning: passing arg 2 of `func_80128ED8' from incompatible pointer type + CC build/src/ov_SC04_019/ov_SC04_019_jr_801789AC.o (twin of ov_SC04_018: src/ov_SC04_018/ov_SC04_018_jr_801789AC.c) + CC build/src/ov_SC04_019/ov_SC04_019_after.o (twin of ov_SC04_018: src/ov_SC04_018/ov_SC04_018_after.c) +src/ov_SC04_018/ov_SC04_018_jr_80171B4C.c: In function `func_8017248C': +src/ov_SC04_018/ov_SC04_018_jr_80171B4C.c:2297: warning: passing arg 1 makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_80171B4C.c:2297: warning: passing arg 2 makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_80171B4C.c: In function `func_8017250C': +src/ov_SC04_018/ov_SC04_018_jr_80171B4C.c:2301: warning: passing arg 1 of `func_80172560' from incompatible pointer type +src/ov_SC04_018/ov_SC04_018_jr_80171B4C.c:2301: warning: passing arg 2 of `func_80172560' from incompatible pointer type +src/ov_SC04_018/ov_SC04_018_jr_80171B4C.c: In function `func_801726D0': +src/ov_SC04_018/ov_SC04_018_jr_80171B4C.c:2347: warning: assignment from incompatible pointer type + CC build/src/ov_SC04_019/ov_SC04_019_jr_8016AB6C.o (twin of ov_SC04_018: src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c) + CC build/src/ov_SC04_019/ov_SC04_019_jr_80188E1C.o (twin of ov_SC04_018: src/ov_SC04_018/ov_SC04_018_jr_80188E1C.c) +src/ov_SC04_018/ov_SC04_018_jr_80171B4C.c: In function `func_80172D14': +src/ov_SC04_018/ov_SC04_018_jr_80171B4C.c:2438: warning: passing arg 1 of `func_80171AB0' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_80171B4C.c:2438: warning: passing arg 1 of `func_80174650' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_80171B4C.c: In function `func_80172E20': +src/ov_SC04_018/ov_SC04_018_jr_80171B4C.c:2455: warning: passing arg 1 of `func_80171AB0' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_80171B4C.c:2455: warning: passing arg 1 of `func_80174650' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_80171B4C.c: In function `func_8017303C': +src/ov_SC04_018/ov_SC04_018_jr_80171B4C.c:2473: warning: assignment makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_80171B4C.c: In function `func_801730FC': +src/ov_SC04_018/ov_SC04_018_jr_80171B4C.c:2486: warning: passing arg 1 of `func_80147060' from incompatible pointer type +src/ov_SC04_018/ov_SC04_018_jr_80171B4C.c:2486: warning: passing arg 1 of `func_80154150' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_80171B4C.c: In function `func_80173220': +src/ov_SC04_018/ov_SC04_018_jr_80171B4C.c:2518: warning: passing arg 1 of `func_80174650' makes integer from pointer without a cast + CC build/src/ov_SC04_019/ov_SC04_019_o0c.o (twin of ov_SC04_018: src/ov_SC04_018/ov_SC04_018_o0c.c) +src/ov_SC04_018/ov_SC04_018_jr_801734BC.c: In function `func_80178004': +src/ov_SC04_018/ov_SC04_018_jr_801734BC.c:3846: warning: return makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c: In function `func_8017EC10': +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:5072: warning: passing arg 1 of `func_8012BEE8' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:5075: warning: passing arg 1 of `func_8012B2CC' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:5076: warning: passing arg 1 of `func_8012B200' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:5077: warning: passing arg 1 of `func_8012B178' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:5082: warning: passing arg 1 of `func_8012AD80' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:5083: warning: passing arg 1 of `func_8012BEE8' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:5085: warning: passing arg 1 of `func_8012E8A8' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c: At top level: +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:5784: warning: prototype for `func_8017F500' follows +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:5515: warning: non-prototype definition here +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c: In function `func_8017FB0C': +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:5830: warning: passing arg 1 of `func_8017F564' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c: At top level: +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:6221: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:6209: warning: previous external decl of `D_801B9DF8' +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c: In function `func_80180618': +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:6308: warning: passing arg 1 of `func_8018042C' makes integer from pointer without a cast + CC build/src/ov_SC04_019/ov_SC04_019_jr_801878E8.o (twin of ov_SC04_018: src/ov_SC04_018/ov_SC04_018_jr_801878E8.c) + CC build/src/ov_SC04_019/ov_SC04_019_jr_80159C84.o (twin of ov_SC04_018: src/ov_SC04_018/ov_SC04_018_jr_80159C84.c) +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c: In function `func_80180954': +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:6471: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:4868: warning: previous external decl of `D_801B9AA8' +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c: In function `func_80180A08': +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:6548: warning: passing arg 1 of `func_8012A828' makes pointer from integer without a cast + CC build/src/ov_SC04_019/ov_SC04_019_jr_8013C98C.o (twin of ov_SC04_018: src/ov_SC04_018/ov_SC04_018_jr_8013C98C.c) + CC build/src/ov_SC04_019/ov_SC04_019_jr_8013F350.o (twin of ov_SC04_018: src/ov_SC04_018/ov_SC04_018_jr_8013F350.c) +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c: At top level: +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:7219: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:7116: warning: previous external decl of `func_801819B0' +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:7219: warning: type mismatch with previous implicit declaration +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:7116: warning: previous implicit declaration of `func_801819B0' +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:7219: warning: `func_801819B0' was previously implicitly declared to return `int' +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c: In function `func_80182120': +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:7612: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:4868: warning: previous external decl of `D_801B9AA8' +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c: In function `func_80182920': +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:8071: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:7533: warning: previous external decl of `D_801B66CC' + CC build/src/ov_SC04_019/ov_SC04_019_jr_80135A4C.o (twin of ov_SC04_018: src/ov_SC04_018/ov_SC04_018_jr_80135A4C.c) +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c: In function `func_80182ACC': +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:8141: warning: passing arg 2 of `func_80178CBC' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c: In function `func_80182D24': +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:8231: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:8184: warning: previous external decl of `D_80191F1C' +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c: At top level: +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:8289: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:8194: warning: previous external decl of `D_801B670C' +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c: In function `func_80182E40': +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:8303: warning: passing arg 1 of `func_80182BCC' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c: In function `func_801831D8': +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:8482: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:4868: warning: previous external decl of `D_801B9AA8' +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c: At top level: +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:8513: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:8483: warning: previous external decl of `D_801B6730' +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:8835: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:8823: warning: previous external decl of `D_801B9C50' +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c: In function `func_80183BC4': +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:8934: warning: passing arg 1 of `func_80183A08' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c: At top level: +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:8964: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:8822: warning: previous external decl of `D_80192150' +In file included from src/ov_SC04_018/ov_SC04_018_jr_80185D70.c:2: +src/ov_SC04_018/../shared/engine_core.h:161199: warning: "DEFINE_func_8013FFD8" redefined +161199 | #define DEFINE_func_8013FFD8() \ + | +src/ov_SC04_018/../shared/engine_core.h:32633: note: this is the location of the previous definition +32633 | #define DEFINE_func_8013FFD8() \ + | +In file included from src/ov_SC04_018/ov_SC04_018_jr_801380E0.c:2: +src/ov_SC04_018/../shared/engine_core.h:161199: warning: "DEFINE_func_8013FFD8" redefined +161199 | #define DEFINE_func_8013FFD8() \ + | +src/ov_SC04_018/../shared/engine_core.h:32633: note: this is the location of the previous definition +32633 | #define DEFINE_func_8013FFD8() \ + | +src/ov_SC04_018/../shared/engine_core.h:169456: warning: "DEFINE_func_8013F350" redefined +169456 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:40890: note: this is the location of the previous definition +40890 | #define DEFINE_func_8013F350() \ + | +In file included from src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2: +src/ov_SC04_018/../shared/engine_core.h:161199: warning: "DEFINE_func_8013FFD8" redefined +161199 | #define DEFINE_func_8013FFD8() \ + | +src/ov_SC04_018/../shared/engine_core.h:32633: note: this is the location of the previous definition +32633 | #define DEFINE_func_8013FFD8() \ + | +src/ov_SC04_018/../shared/engine_core.h:169456: warning: "DEFINE_func_8013F350" redefined +169456 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:40890: note: this is the location of the previous definition +40890 | #define DEFINE_func_8013F350() \ + | +In file included from src/ov_SC04_018/ov_SC04_018_jr_80186570.c:2: +src/ov_SC04_018/../shared/engine_core.h:161199: warning: "DEFINE_func_8013FFD8" redefined +161199 | #define DEFINE_func_8013FFD8() \ + | +In file included from src/ov_SC04_018/ov_SC04_018.c:2: +src/ov_SC04_018/../shared/engine_core.h:161199: warning: "DEFINE_func_8013FFD8" redefined +161199 | #define DEFINE_func_8013FFD8() \ + | +src/ov_SC04_018/../shared/engine_core.h:32633: note: this is the location of the previous definition +32633 | #define DEFINE_func_8013FFD8() \ + | +src/ov_SC04_018/../shared/engine_core.h:32633: note: this is the location of the previous definition +32633 | #define DEFINE_func_8013FFD8() \ + | +In file included from src/ov_SC04_018/ov_SC04_018_after.c:2: +src/ov_SC04_018/../shared/engine_core.h:161199: warning: "DEFINE_func_8013FFD8" redefined +161199 | #define DEFINE_func_8013FFD8() \ + | +src/ov_SC04_018/../shared/engine_core.h:32633: note: this is the location of the previous definition +32633 | #define DEFINE_func_8013FFD8() \ + | +In file included from src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:2: +src/ov_SC04_018/../shared/engine_core.h:161199: warning: "DEFINE_func_8013FFD8" redefined +161199 | #define DEFINE_func_8013FFD8() \ + | +In file included from src/ov_SC04_018/ov_SC04_018_jr_801789AC.c:2: +src/ov_SC04_018/../shared/engine_core.h:161199: warning: "DEFINE_func_8013FFD8" redefined +161199 | #define DEFINE_func_8013FFD8() \ + | +src/ov_SC04_018/../shared/engine_core.h:32633: note: this is the location of the previous definition +32633 | #define DEFINE_func_8013FFD8() \ + | +src/ov_SC04_018/../shared/engine_core.h:32633: note: this is the location of the previous definition +32633 | #define DEFINE_func_8013FFD8() \ + | +src/ov_SC04_018/../shared/engine_core.h:169456: warning: "DEFINE_func_8013F350" redefined +169456 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:40890: note: this is the location of the previous definition +40890 | #define DEFINE_func_8013F350() \ + | +In file included from src/ov_SC04_018/ov_SC04_018_jr_80188E1C.c:2: +src/ov_SC04_018/../shared/engine_core.h:161199: warning: "DEFINE_func_8013FFD8" redefined +161199 | #define DEFINE_func_8013FFD8() \ + | +src/ov_SC04_018/../shared/engine_core.h:32633: note: this is the location of the previous definition +32633 | #define DEFINE_func_8013FFD8() \ + | +src/ov_SC04_018/../shared/engine_core.h:169456: warning: "DEFINE_func_8013F350" redefined +169456 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:40890: note: this is the location of the previous definition +40890 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:169456: warning: "DEFINE_func_8013F350" redefined +169456 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:40890: note: this is the location of the previous definition +40890 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:169456: warning: "DEFINE_func_8013F350" redefined +169456 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:40890: note: this is the location of the previous definition +40890 | #define DEFINE_func_8013F350() \ + | +In file included from src/ov_SC04_018/ov_SC04_018_o0c.c:2: +src/ov_SC04_018/../shared/engine_core.h:161199: warning: "DEFINE_func_8013FFD8" redefined +161199 | #define DEFINE_func_8013FFD8() \ + | +src/ov_SC04_018/../shared/engine_core.h:32633: note: this is the location of the previous definition +32633 | #define DEFINE_func_8013FFD8() \ + | + CC build/src/ov_SC04_019/ov_SC04_019_jr_8015C32C.o (twin of ov_SC04_018: src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c) +src/ov_SC04_018/../shared/engine_core.h:169456: warning: "DEFINE_func_8013F350" redefined +169456 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:40890: note: this is the location of the previous definition +40890 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:169456: warning: "DEFINE_func_8013F350" redefined +169456 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:40890: note: this is the location of the previous definition +40890 | #define DEFINE_func_8013F350() \ + | +In file included from src/ov_SC04_018/ov_SC04_018_jr_8013C98C.c:2: +src/ov_SC04_018/../shared/engine_core.h:161199: warning: "DEFINE_func_8013FFD8" redefined +161199 | #define DEFINE_func_8013FFD8() \ + | +src/ov_SC04_018/../shared/engine_core.h:32633: note: this is the location of the previous definition +32633 | #define DEFINE_func_8013FFD8() \ + | +In file included from src/ov_SC04_018/ov_SC04_018_jr_801878E8.c:2: +src/ov_SC04_018/../shared/engine_core.h:161199: warning: "DEFINE_func_8013FFD8" redefined +161199 | #define DEFINE_func_8013FFD8() \ + | +src/ov_SC04_018/../shared/engine_core.h:32633: note: this is the location of the previous definition +32633 | #define DEFINE_func_8013FFD8() \ + | +src/ov_SC04_018/../shared/engine_core.h:169456: warning: "DEFINE_func_8013F350" redefined +169456 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:40890: note: this is the location of the previous definition +40890 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:169456: warning: "DEFINE_func_8013F350" redefined +169456 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:40890: note: this is the location of the previous definition +40890 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:185848: warning: "DEFINE_func_80181538" redefined +185848 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:57282: note: this is the location of the previous definition +57282 | #define DEFINE_func_80181538() \ + | +In file included from src/ov_SC04_018/ov_SC04_018_jr_80159C84.c:2: +src/ov_SC04_018/../shared/engine_core.h:161199: warning: "DEFINE_func_8013FFD8" redefined +161199 | #define DEFINE_func_8013FFD8() \ + | +src/ov_SC04_018/../shared/engine_core.h:32633: note: this is the location of the previous definition +32633 | #define DEFINE_func_8013FFD8() \ + | +In file included from src/ov_SC04_018/ov_SC04_018_jr_80135A4C.c:2: +src/ov_SC04_018/../shared/engine_core.h:161199: warning: "DEFINE_func_8013FFD8" redefined +161199 | #define DEFINE_func_8013FFD8() \ + | +src/ov_SC04_018/../shared/engine_core.h:32633: note: this is the location of the previous definition +32633 | #define DEFINE_func_8013FFD8() \ + | +src/ov_SC04_018/../shared/engine_core.h:190943: warning: "DEFINE_func_801808C4" redefined +190943 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:62377: note: this is the location of the previous definition +62377 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:169456: warning: "DEFINE_func_8013F350" redefined +169456 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:40890: note: this is the location of the previous definition +40890 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:185848: warning: "DEFINE_func_80181538" redefined +185848 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:57282: note: this is the location of the previous definition +57282 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:169456: warning: "DEFINE_func_8013F350" redefined +169456 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:40890: note: this is the location of the previous definition +40890 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:169456: warning: "DEFINE_func_8013F350" redefined +169456 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:40890: note: this is the location of the previous definition +40890 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:190943: warning: "DEFINE_func_801808C4" redefined +190943 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:62377: note: this is the location of the previous definition +62377 | #define DEFINE_func_801808C4() \ + | +In file included from src/ov_SC04_018/ov_SC04_018_jr_8013F350.c:2: +src/ov_SC04_018/../shared/engine_core.h:161199: warning: "DEFINE_func_8013FFD8" redefined +161199 | #define DEFINE_func_8013FFD8() \ + | +src/ov_SC04_018/../shared/engine_core.h:32633: note: this is the location of the previous definition +32633 | #define DEFINE_func_8013FFD8() \ + | +src/ov_SC04_018/../shared/engine_core.h:185848: warning: "DEFINE_func_80181538" redefined +185848 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:57282: note: this is the location of the previous definition +57282 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:169456: warning: "DEFINE_func_8013F350" redefined +169456 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:40890: note: this is the location of the previous definition +40890 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:185848: warning: "DEFINE_func_80181538" redefined +185848 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:57282: note: this is the location of the previous definition +57282 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:185848: warning: "DEFINE_func_80181538" redefined +185848 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:57282: note: this is the location of the previous definition +57282 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:190943: warning: "DEFINE_func_801808C4" redefined +190943 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:62377: note: this is the location of the previous definition +62377 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:185848: warning: "DEFINE_func_80181538" redefined +185848 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:57282: note: this is the location of the previous definition +57282 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:185848: warning: "DEFINE_func_80181538" redefined +185848 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:57282: note: this is the location of the previous definition +57282 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:190943: warning: "DEFINE_func_801808C4" redefined +190943 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:62377: note: this is the location of the previous definition +62377 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:190943: warning: "DEFINE_func_801808C4" redefined +190943 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:62377: note: this is the location of the previous definition +62377 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:185848: warning: "DEFINE_func_80181538" redefined +185848 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:57282: note: this is the location of the previous definition +57282 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:190943: warning: "DEFINE_func_801808C4" redefined +190943 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:62377: note: this is the location of the previous definition +62377 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:169456: warning: "DEFINE_func_8013F350" redefined +169456 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:40890: note: this is the location of the previous definition +40890 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:190943: warning: "DEFINE_func_801808C4" redefined +190943 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:62377: note: this is the location of the previous definition +62377 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:185848: warning: "DEFINE_func_80181538" redefined +185848 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:57282: note: this is the location of the previous definition +57282 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:190943: warning: "DEFINE_func_801808C4" redefined +190943 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:62377: note: this is the location of the previous definition +62377 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:185848: warning: "DEFINE_func_80181538" redefined +185848 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:57282: note: this is the location of the previous definition +57282 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:185848: warning: "DEFINE_func_80181538" redefined +185848 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:57282: note: this is the location of the previous definition +57282 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:190943: warning: "DEFINE_func_801808C4" redefined +190943 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:62377: note: this is the location of the previous definition +62377 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:190943: warning: "DEFINE_func_801808C4" redefined +190943 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:62377: note: this is the location of the previous definition +62377 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:190943: warning: "DEFINE_func_801808C4" redefined +190943 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:62377: note: this is the location of the previous definition +62377 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:185848: warning: "DEFINE_func_80181538" redefined +185848 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:57282: note: this is the location of the previous definition +57282 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:185848: warning: "DEFINE_func_80181538" redefined +185848 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:57282: note: this is the location of the previous definition +57282 | #define DEFINE_func_80181538() \ + | +In file included from src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:2: +src/ov_SC04_018/../shared/engine_core.h:161199: warning: "DEFINE_func_8013FFD8" redefined +161199 | #define DEFINE_func_8013FFD8() \ + | +src/ov_SC04_018/../shared/engine_core.h:32633: note: this is the location of the previous definition +32633 | #define DEFINE_func_8013FFD8() \ + | +src/ov_SC04_018/../shared/engine_core.h:185848: warning: "DEFINE_func_80181538" redefined +185848 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:57282: note: this is the location of the previous definition +57282 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:190943: warning: "DEFINE_func_801808C4" redefined +190943 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:62377: note: this is the location of the previous definition +62377 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:190943: warning: "DEFINE_func_801808C4" redefined +190943 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:62377: note: this is the location of the previous definition +62377 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:190943: warning: "DEFINE_func_801808C4" redefined +190943 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:62377: note: this is the location of the previous definition +62377 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/ov_SC04_018_jr_801380E0.c: In function `func_801387B8': +src/ov_SC04_018/ov_SC04_018_jr_801380E0.c:1020: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_801380E0.c:719: warning: previous external decl of `func_80139220' +src/ov_SC04_018/ov_SC04_018_jr_80185D70.c:1522: warning: conflicting types for built-in function `memcpy' +src/ov_SC04_018/ov_SC04_018_jr_801380E0.c:1020: warning: passing arg 1 of `func_80138DE0' makes pointer from integer without a cast +src/ov_SC04_018/../shared/engine_core.h:169456: warning: "DEFINE_func_8013F350" redefined +169456 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/../shared/engine_core.h:40890: note: this is the location of the previous definition +40890 | #define DEFINE_func_8013F350() \ + | +src/ov_SC04_018/ov_SC04_018_jr_801380E0.c: At top level: +src/ov_SC04_018/ov_SC04_018_jr_801380E0.c:1026: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_801380E0.c:714: warning: previous external decl of `func_80138AB4' +src/ov_SC04_018/ov_SC04_018_jr_801380E0.c: In function `func_80138AB4': +src/ov_SC04_018/ov_SC04_018_jr_801380E0.c:1026: warning: passing arg 1 of `func_80138DE0' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_801380E0.c: At top level: +src/ov_SC04_018/ov_SC04_018_jr_801380E0.c:1050: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_801380E0.c:715: warning: previous external decl of `func_80138C60' +src/ov_SC04_018/ov_SC04_018_jr_801380E0.c:1090: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_801380E0.c:716: warning: previous external decl of `func_80138D58' +src/ov_SC04_018/ov_SC04_018_jr_801380E0.c:1100: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_801380E0.c:719: warning: previous external decl of `func_80139220' +src/ov_SC04_018/ov_SC04_018_jr_801380E0.c:1102: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_801380E0.c:718: warning: previous external decl of `func_801391F0' +src/ov_SC04_018/ov_SC04_018_jr_801380E0.c: In function `func_80139680': +src/ov_SC04_018/ov_SC04_018_jr_801380E0.c:1114: warning: passing arg 2 of `func_80052460' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_801380E0.c: At top level: +src/ov_SC04_018/ov_SC04_018_jr_801380E0.c:1116: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_801380E0.c:709: warning: previous external decl of `func_8001931C' +src/ov_SC04_018/ov_SC04_018_jr_801380E0.c:1116: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_801380E0.c:720: warning: previous external decl of `func_80139788' +src/ov_SC04_018/../shared/engine_core.h:185848: warning: "DEFINE_func_80181538" redefined +185848 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:57282: note: this is the location of the previous definition +57282 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/ov_SC04_018_jr_801380E0.c: In function `func_80139914': +src/ov_SC04_018/ov_SC04_018_jr_801380E0.c:1187: warning: passing arg 1 of `func_8013A8B0' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c: In function `func_80145B24': +src/ov_SC04_018/ov_SC04_018_after.c:111: warning: assignment from incompatible pointer type +src/ov_SC04_018/ov_SC04_018_jr_801380E0.c: At top level: +src/ov_SC04_018/ov_SC04_018_jr_801380E0.c:1255: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_801380E0.c:1085: warning: previous external decl of `func_80139C7C' +src/ov_SC04_018/ov_SC04_018_jr_801380E0.c:1255: warning: type mismatch with previous implicit declaration +src/ov_SC04_018/ov_SC04_018_jr_801380E0.c:1085: warning: previous implicit declaration of `func_80139C7C' +src/ov_SC04_018/ov_SC04_018_jr_801380E0.c:1255: warning: `func_80139C7C' was previously implicitly declared to return `int' +src/ov_SC04_018/ov_SC04_018_after.c: At top level: +src/ov_SC04_018/ov_SC04_018_after.c:235: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_after.c:136: warning: previous external decl of `func_80145EE8' +src/ov_SC04_018/ov_SC04_018_jr_801380E0.c:1271: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_801380E0.c:711: warning: previous external decl of `func_8001B22C' +src/ov_SC04_018/ov_SC04_018_after.c:322: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_after.c:146: warning: previous external decl of `D_80126B78' +src/ov_SC04_018/ov_SC04_018_after.c:322: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_after.c:127: warning: previous external decl of `func_80147098' +src/ov_SC04_018/ov_SC04_018_jr_80186570.c:1522: warning: conflicting types for built-in function `memcpy' +src/ov_SC04_018/../shared/engine_core.h:190943: warning: "DEFINE_func_801808C4" redefined +190943 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:62377: note: this is the location of the previous definition +62377 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:1525: warning: conflicting types for built-in function `memcpy' +src/ov_SC04_018/ov_SC04_018_after.c:373: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_after.c:135: warning: previous external decl of `func_801468C8' +src/ov_SC04_018/ov_SC04_018_after.c:480: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_after.c:123: warning: previous external decl of `func_80016714' +src/ov_SC04_018/ov_SC04_018_after.c: In function `func_80146D90': +src/ov_SC04_018/ov_SC04_018_after.c:494: warning: passing arg 1 of `func_80146DE8' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_80186570.c: In function `func_80186E24': +src/ov_SC04_018/ov_SC04_018_jr_80186570.c:3772: warning: assignment makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_80186570.c:3801: warning: assignment makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c: In function `func_8016B448': +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:2143: warning: passing arg 1 of `func_8014C050' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:2143: warning: passing arg 1 of `func_8016B984' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:2143: warning: passing arg 2 of `func_80146A6C' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c: In function `func_80147060': +src/ov_SC04_018/ov_SC04_018_after.c:516: warning: `return' with a value, in function returning void +src/ov_SC04_018/ov_SC04_018_after.c: At top level: +src/ov_SC04_018/ov_SC04_018_after.c:522: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_after.c:126: warning: previous external decl of `func_80147084' +src/ov_SC04_018/ov_SC04_018_after.c:530: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_after.c:128: warning: previous external decl of `func_801470AC' +src/ov_SC04_018/ov_SC04_018_jr_801380E0.c: In function `func_8013B204': +src/ov_SC04_018/ov_SC04_018_jr_801380E0.c:1374: warning: assignment makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_80186570.c: In function `func_801877B0': +src/ov_SC04_018/ov_SC04_018_jr_80186570.c:3862: warning: passing arg 2 of `func_801376E8' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c: In function `func_8016BA68': +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:2395: warning: passing arg 1 of `func_8014C050' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:2395: warning: passing arg 1 makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:2395: warning: passing arg 2 of `func_80146A6C' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c: In function `func_8016BCC0': +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:2466: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:2416: warning: previous external decl of `func_8016BF50' +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:2473: warning: passing arg 1 of `func_8016BFA8' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:2473: warning: passing arg 2 of `func_8016BFA8' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:2473: warning: passing arg 3 of `func_8016BFA8' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:2473: warning: passing arg 4 of `func_8016BFA8' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c: In function `func_8016BD78': +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:2491: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:2416: warning: previous external decl of `func_8016BF50' +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:2491: warning: type mismatch with previous implicit declaration +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:2466: warning: previous implicit declaration of `func_8016BF50' +src/ov_SC04_018/ov_SC04_018_after.c:546: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_after.c:163: warning: previous external decl of `D_8012707C' +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c: In function `func_8016BEA0': +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:2532: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:2416: warning: previous external decl of `func_8016BF50' +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:2532: warning: type mismatch with previous implicit declaration +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:2466: warning: previous implicit declaration of `func_8016BF50' +src/ov_SC04_018/ov_SC04_018_after.c: In function `func_80147324': +src/ov_SC04_018/ov_SC04_018_after.c:552: warning: comparison between pointer and integer +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c: At top level: +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:2557: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:2416: warning: previous external decl of `func_8016BF50' +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:2706: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:2652: warning: previous external decl of `D_801E615C' +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:2707: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:2655: warning: previous external decl of `D_801E6164' +src/ov_SC04_018/ov_SC04_018_jr_80188E1C.c:1522: warning: conflicting types for built-in function `memcpy' +src/ov_SC04_018/ov_SC04_018_o0c.c: In function `func_8013B6A0': +src/ov_SC04_018/ov_SC04_018_o0c.c:801: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_o0c.c:787: warning: previous external decl of `D_801E79E8' +src/ov_SC04_018/ov_SC04_018_o0c.c: In function `func_8013B7AC': +src/ov_SC04_018/ov_SC04_018_o0c.c:813: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_o0c.c:787: warning: previous external decl of `D_801E79E8' +src/ov_SC04_018/ov_SC04_018_o0c.c: At top level: +src/ov_SC04_018/ov_SC04_018_o0c.c:829: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_801789AC.c:1531: src/ov_SC04_018/ov_SC04_018_o0c.c:822: warning: warning: previous external decl of `func_8013B83Cconflicting types for built-in function `'memcpy +'src/ov_SC04_018/ov_SC04_018_o0c.c:829: +warning: type mismatch with previous implicit declaration +src/ov_SC04_018/ov_SC04_018_o0c.c:822: warning: previous implicit declaration of `func_8013B83C' +src/ov_SC04_018/ov_SC04_018_o0c.c:829: warning: `func_8013B83C' was previously implicitly declared to return `int' +src/ov_SC04_018/ov_SC04_018_o0c.c:961: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_o0c.c:862: warning: previous external decl of `func_8013BD74' +src/ov_SC04_018/ov_SC04_018_o0c.c:961: warning: type mismatch with previous implicit declaration +src/ov_SC04_018/ov_SC04_018_o0c.c:951: warning: previous implicit declaration of `func_8013BD74' +src/ov_SC04_018/ov_SC04_018_o0c.c:961: warning: `func_8013BD74' was previously implicitly declared to return `int' +src/ov_SC04_018/ov_SC04_018_o0c.c:1020: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_o0c.c:840: warning: previous external decl of `func_8013C08C' +src/ov_SC04_018/ov_SC04_018_jr_801789AC.c: In function `func_80178B70': +src/ov_SC04_018/ov_SC04_018_jr_801789AC.c:2685: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_801789AC.c:2666: warning: previous external decl of `D_80190B50' +src/ov_SC04_018/ov_SC04_018_jr_801789AC.c:2690: warning: passing arg 2 of `func_80178CBC' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_801789AC.c: In function `func_80178BB8': +src/ov_SC04_018/ov_SC04_018_jr_801789AC.c:2695: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_801789AC.c:2664: warning: previous external decl of `func_80178BF8' +src/ov_SC04_018/ov_SC04_018_jr_801789AC.c: At top level: +src/ov_SC04_018/ov_SC04_018_jr_801789AC.c:2703: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_801789AC.c:2664: warning: previous external decl of `func_80178BF8' +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:2830: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:2749: warning: previous external decl of `func_8016CF04' +src/ov_SC04_018/ov_SC04_018_after.c: In function `func_80147AD4': +src/ov_SC04_018/ov_SC04_018_after.c:604: warning: passing arg 2 of `func_80147B5C' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c: In function `func_8016C998': +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:2845: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:2751: warning: previous external decl of `D_801E6230' +src/ov_SC04_018/ov_SC04_018_after.c: In function `func_80147D38': +src/ov_SC04_018/ov_SC04_018_after.c:614: warning: passing arg 2 of `func_80147DC0' makes integer from pointer without a cast +src/ov_SC04_018/../shared/engine_core.h:185848: warning: "DEFINE_func_80181538" redefined +185848 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/../shared/engine_core.h:57282: note: this is the location of the previous definition +57282 | #define DEFINE_func_80181538() \ + | +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c: In function `func_8016CBC0': +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:2903: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:2751: warning: previous external decl of `D_801E6230' +src/ov_SC04_018/ov_SC04_018_jr_80188E1C.c: In function `func_80189540': +src/ov_SC04_018/ov_SC04_018_jr_80188E1C.c:3839: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_80188E1C.c:3162: warning: previous external decl of `D_801E7774' +src/ov_SC04_018/ov_SC04_018_jr_8013C98C.c: In function `func_8013C9C4': +src/ov_SC04_018/ov_SC04_018_jr_8013C98C.c:804: warning: assignment makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c: In function `func_8012D098': +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:551: warning: passing arg 1 of `func_8012F214' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:551: warning: passing arg 2 of `func_8012F214' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:551: warning: passing arg 3 of `func_8012F214' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:551: warning: passing arg 1 of `func_8012F214' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:551: warning: passing arg 2 of `func_8012F214' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:551: warning: passing arg 3 of `func_8012F214' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:551: warning: passing arg 1 of `func_8012F214' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:551: warning: passing arg 2 of `func_8012F214' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:551: warning: passing arg 3 of `func_8012F214' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:551: warning: passing arg 1 of `func_8012F214' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:551: warning: passing arg 2 of `func_8012F214' makes integer from pointer without a castsrc/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c: +In function `func_8016CF04': +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:551: src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:3049: warning: warning: passing arg 3 of `func_8012F214' makes integer from pointer without a casttype mismatch with previous external decl + +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:2751: warning: previous external decl of `D_801E6230' +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:551: warning: passing arg 1 of `func_8012F214' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:551: warning: passing arg 2 of `func_8012F214' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:551: warning: passing arg 3 of `func_8012F214' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:551: warning: passing arg 1 of `func_8012F214' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:551: warning: passing arg 2 of `func_8012F214' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:551: warning: passing arg 3 of `func_8012F214' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:551: warning: passing arg 1 of `func_8012F214' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:551: warning: passing arg 2 of `func_8012F214' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:551: warning: passing arg 3 of `func_8012F214' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:551: warning: passing arg 1 of `func_8012F214' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:551: warning: passing arg 2 of `func_8012F214' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:551: warning: passing arg 3 of `func_8012F214' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:551: warning: passing arg 1 of `func_8012D3B4' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:551: warning: passing arg 2 of `func_8012D3B4' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:551: warning: passing arg 1 of `func_8012D3B4' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:551: warning: passing arg 2 of `func_8012D3B4' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:551: warning: passing arg 1 of `func_8012D3B4' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:551: warning: passing arg 2 of `func_8012D3B4' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:551: warning: passing arg 1 of `func_8012D3B4' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:551: warning: passing arg 2 of `func_8012D3B4' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:551: warning: passing arg 1 of `func_8012D3B4' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:551: warning: passing arg 2 of `func_8012D3B4' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:551: warning: passing arg 1 of `func_8012D3B4' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:551: warning: passing arg 2 of `func_8012D3B4' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:551: warning: passing arg 1 of `func_8012D3B4' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:551: warning: passing arg 2 of `func_8012D3B4' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:551: warning: passing arg 1 of `func_8012D3B4' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:551: warning: passing arg 2 of `func_8012D3B4' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:551: warning: passing arg 1 of `func_8012D3B4' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:551: warning: passing arg 2 of `func_8012D3B4' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:551: warning: passing arg 1 of `func_8012D3B4' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:551: warning: passing arg 2 of `func_8012D3B4' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:551: warning: passing arg 1 of `func_8012D3B4' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:551: warning: passing arg 2 of `func_8012D3B4' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:551: warning: passing arg 1 of `func_8012D3B4' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:551: warning: passing arg 2 of `func_8012D3B4' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018.c: In function `func_8012A418': +src/ov_SC04_018/ov_SC04_018.c:754: warning: assignment from incompatible pointer type +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c: In function `func_8012D38C': +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:553: warning: passing arg 1 of `func_8012D098' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c: At top level: +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:557: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:549: warning: previous external decl of `RotTransPers' +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c: In function `func_8012D3B4': +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:557: warning: passing arg 2 of `RotTransPers' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:557: warning: passing arg 2 of `RotTransPers' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018.c: In function `func_8012A6D0': +src/ov_SC04_018/ov_SC04_018.c:775: warning: initialization makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018.c:775: warning: initialization makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c: In function `func_8012D4B4': +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:559: warning: passing arg 2 of `RotTransPers' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:559: warning: passing arg 2 of `RotTransPers' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_801878E8.c:1522: warning: conflicting types for built-in function `memcpy' +src/ov_SC04_018/ov_SC04_018.c: In function `func_8012A828': +src/ov_SC04_018/ov_SC04_018.c:783: warning: assignment makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_80188E1C.c: In function `func_80189E14': +src/ov_SC04_018/ov_SC04_018_jr_80188E1C.c:3925: warning: `return' with a value, in function returning void +src/ov_SC04_018/../shared/engine_core.h:190943: warning: "DEFINE_func_801808C4" redefined +190943 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/../shared/engine_core.h:62377: note: this is the location of the previous definition +62377 | #define DEFINE_func_801808C4() \ + | +src/ov_SC04_018/ov_SC04_018_jr_80188E1C.c: In function `func_8018A1D0': +src/ov_SC04_018/ov_SC04_018_jr_80188E1C.c:4135: warning: `return' with a value, in function returning void +src/ov_SC04_018/ov_SC04_018_jr_80188E1C.c:4137: warning: `return' with a value, in function returning void +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c: At top level: +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:598: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:573: warning: previous external decl of `func_8012F568' +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c: In function `func_8012DB84': +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:606: warning: passing arg 5 of `func_8012F568' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:606: warning: passing arg 6 of `func_8012F568' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c: In function `func_8016D848': +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:3260: warning: passing arg 1 of `func_800D20C0' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:3260: warning: passing arg 2 of `func_800D20C0' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c: In function `func_8012DDA4': +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:630: warning: return makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c: In function `func_8016DC20': +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:3397: warning: passing arg 1 of `func_80128ED8' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c: In function `func_8012DE2C': +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:645: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:620: warning: previous external decl of `D_801E5A34' +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:646: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:621: warning: previous external decl of `D_801E5A30' +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:661: warning: return makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c: In function `func_8016DEE0': +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:3414: warning: passing arg 1 of `func_80128ED8' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c: In function `func_8012E138': +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:683: warning: passing arg 2 of `func_8012F038' from incompatible pointer type +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:683: warning: passing arg 3 of `func_8012F038' from incompatible pointer type +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:683: warning: passing arg 2 of `func_8012F14C' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:683: warning: passing arg 3 of `func_8012F14C' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:683: warning: passing arg 3 of `func_80135888' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:683: warning: passing arg 4 of `func_80135888' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_80135A4C.c:578: warning: conflicting types for built-in function `memcpy' +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c: At top level: +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:3515: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:3439: warning: previous external decl of `func_8016E3CC' +src/ov_SC04_018/ov_SC04_018_jr_80159C84.c: In function `func_8015A1FC': +src/ov_SC04_018/ov_SC04_018_jr_80159C84.c:1378: warning: passing arg 1 of `func_8015A2D8' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8013C98C.c: In function `func_8013E4B4': +src/ov_SC04_018/ov_SC04_018_jr_8013C98C.c:1789: warning: passing arg 1 of `func_8012C750' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_80188E1C.c: In function `func_8018ACD4': +src/ov_SC04_018/ov_SC04_018_jr_80188E1C.c:4587: warning: assignment makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_80188E1C.c: In function `func_8018AD08': +src/ov_SC04_018/ov_SC04_018_jr_80188E1C.c:4596: warning: assignment makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_80188E1C.c: In function `func_8018AD3C': +src/ov_SC04_018/ov_SC04_018_jr_80188E1C.c:4602: warning: assignment makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_80188E1C.c: In function `func_8018AD70': +src/ov_SC04_018/ov_SC04_018_jr_80188E1C.c:4611: warning: assignment makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_80188E1C.c: In function `func_8018ADA4': +src/ov_SC04_018/ov_SC04_018_jr_80188E1C.c:4622: warning: assignment makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_80188E1C.c: In function `func_8018AE4C': +src/ov_SC04_018/ov_SC04_018_jr_80188E1C.c:4651: warning: assignment makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_80188E1C.c: In function `func_8018AECC': +src/ov_SC04_018/ov_SC04_018_jr_80188E1C.c:4678: warning: assignment makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_80188E1C.c: In function `func_8018AF00': +src/ov_SC04_018/ov_SC04_018_jr_80188E1C.c:4683: warning: assignment makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_80188E1C.c: In function `func_8018AF34': +src/ov_SC04_018/ov_SC04_018_jr_80188E1C.c:4692: warning: assignment makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_80188E1C.c: In function `func_8018AFB4': +src/ov_SC04_018/ov_SC04_018_jr_80188E1C.c:4721: warning: assignment makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8013C98C.c: At top level: +src/ov_SC04_018/ov_SC04_018_jr_8013C98C.c:1987: warning: prototype for `func_8013E958' follows +src/ov_SC04_018/ov_SC04_018_jr_8013C98C.c:1951: warning: non-prototype definition here +src/ov_SC04_018/ov_SC04_018_jr_8013C98C.c:1987: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8013C98C.c:1893: warning: previous external decl of `D_80115130' +src/ov_SC04_018/ov_SC04_018_after.c: At top level: +src/ov_SC04_018/ov_SC04_018_after.c:882: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_after.c:129: warning: previous external decl of `func_80149210' +src/ov_SC04_018/ov_SC04_018_jr_8013C98C.c:2011: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8013C98C.c:1891: warning: previous external decl of `D_80115128' +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:3663: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:1901: warning: previous external decl of `func_80024054' +src/ov_SC04_018/ov_SC04_018_jr_801878E8.c: In function `func_80188B84': +src/ov_SC04_018/ov_SC04_018_jr_801878E8.c:3940: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_801878E8.c:3728: warning: previous external decl of `D_80115158' +src/ov_SC04_018/ov_SC04_018_jr_8013C98C.c:2152: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8013C98C.c:1953: warning: previous external decl of `func_800D0488' +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c: In function `func_8016EDEC': +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:3827: warning: assignment from incompatible pointer type +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:3827: warning: passing arg 1 from incompatible pointer type +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:3827: warning: passing arg 1 from incompatible pointer type +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c: In function `func_8016EE40': +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:3829: warning: passing arg 1 from incompatible pointer type +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:3829: warning: passing arg 1 from incompatible pointer type +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c: In function `func_8012F568': +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:1106: warning: passing arg 2 of `memcpy' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:1106: warning: passing arg 2 of `memcpy' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c: In function `func_8016F4FC': +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:3955: warning: passing arg 1 of `func_800D1724' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c: In function `func_8016F71C': +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:3981: warning: passing arg 1 of `func_8016F764' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c: In function `func_80149F2C': +src/ov_SC04_018/ov_SC04_018_after.c:975: warning: initialization makes pointer from integer without a cast +{standard input}: Assembler messages: +{standard input}:546: Warning: used $at without ".set noat" +{standard input}:547: Warning: used $at without ".set noat" +{standard input}:653: Warning: used $at without ".set noat" +{standard input}:654: Warning: used $at without ".set noat" +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c: In function `func_8016FE2C': +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:4085: warning: passing arg 1 of `func_80172658' from incompatible pointer type +src/ov_SC04_018/ov_SC04_018_jr_8013F350.c: In function `func_8013FAF8': +src/ov_SC04_018/ov_SC04_018_jr_8013F350.c:1303: warning: passing arg 1 of `func_80024054' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8013F350.c:1319: warning: passing arg 1 of `func_80024054' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8013F350.c:1344: warning: passing arg 1 of `func_80137D08' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8013F350.c:1344: warning: passing arg 2 of `func_80137D08' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8013F350.c:1344: warning: assignment makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8013F350.c:1347: warning: passing arg 1 of `func_8013AB54' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8013F350.c:1347: warning: passing arg 2 of `func_8013AB54' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8013F350.c:1347: warning: assignment makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c: In function `func_80170374': +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:4153: warning: passing arg 1 of `func_8014C168' from incompatible pointer type +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c: In function `func_8017044C': +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:4165: warning: passing arg 1 of `func_80171AB0' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c: In function `func_801705C0': +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:4189: warning: passing arg 1 makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_after.c: At top level: +src/ov_SC04_018/ov_SC04_018_after.c:1115: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_after.c:1111: warning: previous external decl of `D_80078E90' +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c: In function `func_80170B48': +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:4263: warning: passing arg 1 of `func_8014706C' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c: At top level: +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:4265: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:4263: warning: previous external decl of `func_80170B90' +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:4265: warning: type mismatch with previous implicit declaration +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:4263: warning: previous implicit declaration of `func_80170B90' +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:4265: warning: `func_80170B90' was previously implicitly declared to return `int' +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c: In function `func_80170CF0': +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:4290: warning: passing arg 1 makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c: In function `func_80170DE0': +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:4303: warning: passing arg 1 makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c: In function `func_80170EAC': +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:4315: warning: passing arg 1 makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c: In function `func_80130D48': +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:1439: warning: assignment makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c: In function `func_801710DC': +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:4351: warning: passing arg 1 makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c:4351: warning: passing arg 1 makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c: In function `func_80131340': +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:1626: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:1509: warning: previous external decl of `D_8018D6CC' +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:1672: warning: passing arg 1 of `func_80131E00' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:1726: warning: passing arg 1 of `func_80131E00' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:1770: warning: passing arg 1 of `func_80131E00' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:1801: warning: passing arg 1 of `func_80131E00' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:1806: warning: passing arg 1 of `func_80131E00' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:1823: warning: passing arg 1 of `func_80131E00' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:1833: warning: passing arg 1 of `func_80131E00' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c:1193: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_after.c:130: warning: previous external decl of `func_8014BE9C' +src/ov_SC04_018/ov_SC04_018_after.c: In function `func_8014C168': +src/ov_SC04_018/ov_SC04_018_after.c:1223: warning: return makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_after.c:1223: warning: return makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_after.c: In function `func_8014C3D0': +src/ov_SC04_018/ov_SC04_018_after.c:1245: warning: passing arg 2 of `func_8014C59C' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c: In function `func_8014C43C': +src/ov_SC04_018/ov_SC04_018_after.c:1247: warning: passing arg 4 of `func_8014C4AC' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c: At top level: +src/ov_SC04_018/ov_SC04_018_after.c:1279: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_after.c:138: warning: previous external decl of `func_8014C6D0' +src/ov_SC04_018/ov_SC04_018_after.c:1321: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_after.c:137: warning: previous external decl of `func_8014C968' +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c: In function `func_801325B8': +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2195: warning: passing arg 1 of `memcpy' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2195: warning: passing arg 2 of `memcpy' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2195: warning: passing arg 1 of `memcpy' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2195: warning: passing arg 2 of `memcpy' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c: In function `func_8014CD0C': +src/ov_SC04_018/ov_SC04_018_after.c:1395: warning: passing arg 2 of `func_8014CF04' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c: In function `func_80132EF4': +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2207: warning: initialization makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c: In function `func_80132F40': +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2288: warning: passing arg 2 of `func_8012F038' from incompatible pointer type +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2288: warning: passing arg 3 of `func_8012F038' from incompatible pointer type +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2288: warning: passing arg 2 of `func_8012F14C' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2288: warning: passing arg 3 of `func_8012F14C' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_after.c: In function `func_8014D438': +src/ov_SC04_018/ov_SC04_018_after.c:1472: warning: passing arg 2 of `func_8014D610' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:1546: warning: "NULL" redefined + 1546 | #define NULL 0 + | +In file included from src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:1: +include/common.h:41: note: this is the location of the previous definition + 41 | #define NULL ((void *)0) /* m2c emits NULL for null pointers; byte-neutral (== 0) */ + | +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c: In function `func_8015C6AC': +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:1332: warning: passing arg 1 of `func_8015C788' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c: In function `func_80133AB0': +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2539: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2428: warning: previous external decl of `D_8018D7A8' +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2540: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2427: warning: previous external decl of `D_8018D7A4' +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c: In function `func_80133CD4': +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2623: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2428: warning: previous external decl of `D_8018D7A8' +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2624: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2427: warning: previous external decl of `D_8018D7A4' +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2625: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2541: warning: previous external decl of `D_8018D7B0' +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:3301: warning: "SHB" redefined + 3301 | #define SHB(x) __asm__("" : "=r"(x) : "0"(x)) + | +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:3300: note: this is the location of the previous definition + 3300 | #define SHB(x) __asm__ __volatile__("" : "=r"(x) : "0"(x)) + | +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c: In function `func_8015CD20': +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:1553: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:1245: warning: previous external decl of `D_8018F8B0' +src/ov_SC04_018/ov_SC04_018_after.c: In function `func_8014E48C': +src/ov_SC04_018/ov_SC04_018_after.c:1900: warning: passing arg 1 of `func_8014E514' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c:1900: warning: passing arg 2 of `func_8014E514' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_after.c:1900: warning: passing arg 3 of `func_8014E514' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c: In function `func_8015D1B8': +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:1778: warning: passing arg 1 of `func_801725F4' from incompatible pointer type +src/ov_SC04_018/ov_SC04_018_after.c: In function `func_8014E790': +src/ov_SC04_018/ov_SC04_018_after.c:1978: warning: passing arg 3 of `func_80135888' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_after.c:1978: warning: passing arg 4 of `func_80135888' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_after.c: In function `func_8014E83C': +src/ov_SC04_018/ov_SC04_018_after.c:1980: warning: passing arg 3 of `func_80135888' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_after.c:1980: warning: passing arg 4 of `func_80135888' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c: In function `func_801343C4': +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2799: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2427: warning: previous external decl of `D_8018D7A4' +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2800: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2428: warning: previous external decl of `D_8018D7A8' +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2802: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2429: warning: previous external decl of `D_801E5A8C' +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c: In function `func_8015D480': +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:1833: warning: passing arg 1 of `func_8015D57C' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c: In function `func_8015D57C': +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:1850: warning: passing arg 1 of `func_801553A8' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:1850: warning: passing arg 1 of `func_80155440' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:1850: warning: passing arg 1 of `func_80146CA0' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c: In function `func_80134510': +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2855: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2427: warning: previous external decl of `D_8018D7A4' +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2856: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2428: warning: previous external decl of `D_8018D7A8' +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2857: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2626: warning: previous external decl of `D_8018D7AC' +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c: In function `func_801345F8': +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2904: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2427: warning: previous external decl of `D_8018D7A4' +src/ov_SC04_018/ov_SC04_018_after.c: In function `func_8014EE14': +src/ov_SC04_018/ov_SC04_018_after.c:2056: warning: assignment makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c: At top level: +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2963: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2903: warning: previous external decl of `func_801347A0' +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c: In function `func_801347A0': +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2965: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2428: warning: previous external decl of `D_8018D7A8' +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2966: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2427: warning: previous external decl of `D_8018D7A4' +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2967: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2626: warning: previous external decl of `D_8018D7AC' +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c: In function `func_8015DA90': +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:2008: warning: passing arg 1 of `func_8015DB6C' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c: In function `func_8015DDF0': +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:2086: warning: passing arg 1 of `func_8015DECC' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c: In function `func_80134C20': +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:3087: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2427: warning: previous external decl of `D_8018D7A4' +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:3088: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2428: warning: previous external decl of `D_8018D7A8' +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:3089: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2626: warning: previous external decl of `D_8018D7AC' +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:3090: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2541: warning: previous external decl of `D_8018D7B0' +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c: In function `func_8015E150': +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:2164: warning: passing arg 1 of `func_8015E22C' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c: In function `func_80135004': +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:3182: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2428: warning: previous external decl of `D_8018D7A8' +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:3183: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2427: warning: previous external decl of `D_8018D7A4' +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c: In function `func_80135168': +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:3251: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2427: warning: previous external decl of `D_8018D7A4' +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:3252: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2428: warning: previous external decl of `D_8018D7A8' +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c: In function `func_80135260': +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:3326: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2427: warning: previous external decl of `D_8018D7A4' +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:3327: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2428: warning: previous external decl of `D_8018D7A8' +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:3328: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2541: warning: previous external decl of `D_8018D7B0' +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c: In function `func_80135480': +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:3446: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2427: warning: previous external decl of `D_8018D7A4' +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:3447: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c:2428: warning: previous external decl of `D_8018D7A8' +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c: In function `func_8015E84C': +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:2288: warning: passing arg 1 of `func_8015E95C' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c: In function `func_8015E95C': +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:2305: warning: passing arg 1 of `func_8015E9B8' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c: In function `func_8015EA3C': +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:2414: warning: passing arg 1 makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c: In function `func_8015EDA0': +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:2422: warning: passing arg 1 of `func_8015EE7C' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c: In function `func_8015EFA4': +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:2494: warning: passing arg 1 of `func_8015F080' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_after.c: At top level: +src/ov_SC04_018/ov_SC04_018_after.c:2381: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_after.c:2344: warning: previous external decl of `func_80150820' +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c: In function `func_8015F89C': +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:2713: warning: passing arg 2 of `func_801466F0' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_after.c: In function `func_80151204': +src/ov_SC04_018/ov_SC04_018_after.c:2603: warning: passing arg 1 of `func_8014ACE8' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c: In function `func_8015126C': +src/ov_SC04_018/ov_SC04_018_after.c:2607: warning: passing arg 1 of `func_8015173C' from incompatible pointer type +src/ov_SC04_018/ov_SC04_018_after.c: In function `func_80151AE4': +src/ov_SC04_018/ov_SC04_018_after.c:2680: warning: passing arg 1 of `func_80149020' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c:2680: warning: passing arg 1 of `func_80159B3C' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c:2680: warning: passing arg 1 of `func_8015BDD0' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c: In function `func_80160B70': +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:3192: warning: passing arg 1 of `func_80160BB4' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c: In function `func_801520DC': +src/ov_SC04_018/ov_SC04_018_after.c:2735: warning: passing arg 1 of `func_80149020' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c:2736: warning: passing arg 1 of `func_801472C8' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c:2738: warning: passing arg 1 of `func_80146DB8' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c:2739: warning: passing arg 1 of `func_801477E8' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c:2740: warning: passing arg 1 of `func_8014CBF8' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c:2741: warning: passing arg 1 of `func_801474EC' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c:2742: warning: passing arg 2 of `func_80146A6C' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c:2744: warning: passing arg 1 of `func_80146CA0' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c: In function `func_80152254': +src/ov_SC04_018/ov_SC04_018_after.c:2752: warning: passing arg 1 of `func_80159B3C' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c: In function `func_80160F70': +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:3253: warning: passing arg 1 of `func_8013767C' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c: In function `aF80161208': +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:3288: warning: passing arg 1 makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c: In function `func_80161278': +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:3294: warning: passing arg 1 of `func_80161374' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c: In function `func_801612B8': +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:3296: warning: assignment makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_after.c: In function `func_801528B0': +src/ov_SC04_018/ov_SC04_018_after.c:2866: warning: passing arg 1 of `func_80149020' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c:2867: warning: passing arg 1 of `func_80154274' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c:2867: warning: passing arg 2 of `func_80154274' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_after.c:2870: warning: passing arg 1 of `func_80146DB8' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c:2871: warning: passing arg 1 of `func_801477E8' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c:2872: warning: passing arg 1 of `func_8014CBF8' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c:2873: warning: passing arg 1 of `func_801474EC' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c:2874: warning: passing arg 1 of `func_80146CA0' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c: In function `func_8015294C': +src/ov_SC04_018/ov_SC04_018_after.c:2878: warning: passing arg 1 of `func_801472C8' from incompatible pointer type +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c: In function `func_80161418': +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:3359: warning: passing arg 1 of `func_8016163C' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c: In function `func_80161450': +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:3361: warning: passing arg 1 of `func_80161774' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c: In function `func_80161488': +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:3363: warning: passing arg 1 of `func_80161774' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_after.c: In function `func_80152A50': +src/ov_SC04_018/ov_SC04_018_after.c:2882: warning: passing arg 1 of `func_80159B3C' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c: In function `func_801614E4': +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:3365: warning: passing arg 1 of `func_80161888' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c: In function `func_80161554': +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:3369: warning: passing arg 1 of `func_8016163C' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c: In function `func_8016158C': +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:3371: warning: passing arg 1 of `func_80161774' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c: In function `func_801615C4': +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:3373: warning: passing arg 1 of `func_80146D90' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:3373: warning: passing arg 1 makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:3373: warning: passing arg 1 makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_after.c: In function `func_80152BF0': +src/ov_SC04_018/ov_SC04_018_after.c:2896: warning: passing arg 1 of `func_80146CA0' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c: In function `func_80152C80': +src/ov_SC04_018/ov_SC04_018_after.c:2900: warning: initialization makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_after.c: In function `func_80152DA8': +src/ov_SC04_018/ov_SC04_018_after.c:2931: warning: passing arg 1 of `func_80149020' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c:2932: warning: passing arg 1 of `func_80154274' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c:2932: warning: passing arg 2 of `func_80154274' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_after.c:2936: warning: passing arg 1 of `func_80146DB8' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c:2937: warning: passing arg 1 of `func_801477E8' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c:2938: warning: passing arg 1 of `func_8014CBF8' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c:2939: warning: passing arg 1 of `func_801474EC' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c:2940: warning: passing arg 1 of `func_80146CA0' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c: In function `func_80152E4C': +src/ov_SC04_018/ov_SC04_018_after.c:2944: warning: passing arg 1 of `func_801472C8' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c: In function `func_80152F44': +src/ov_SC04_018/ov_SC04_018_after.c:2948: warning: passing arg 1 of `func_80159B3C' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c: In function `func_801530E4': +src/ov_SC04_018/ov_SC04_018_after.c:2962: warning: passing arg 1 of `func_80149020' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c:2962: warning: passing arg 1 of `func_801472C8' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c:2962: warning: passing arg 1 of `func_8014CBF8' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c:2962: warning: passing arg 1 of `func_801474EC' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c:2962: warning: passing arg 1 of `func_80155440' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c:2962: warning: passing arg 1 of `func_80146CA0' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c: In function `func_80153204': +src/ov_SC04_018/ov_SC04_018_after.c:2968: warning: passing arg 1 of `func_80159B3C' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c: In function `func_801533A4': +src/ov_SC04_018/ov_SC04_018_after.c:2982: warning: passing arg 1 of `func_80149020' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c:2982: warning: passing arg 1 of `func_8014CBF8' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c:2982: warning: passing arg 1 of `func_801474EC' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c:2982: warning: passing arg 1 of `func_80155440' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c:2982: warning: passing arg 1 of `func_80146CA0' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_after.c: In function `func_801534D8': +src/ov_SC04_018/ov_SC04_018_after.c:2988: warning: passing arg 1 of `func_80159B3C' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c: At top level: +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:3785: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:3715: warning: previous external decl of `D_801E5C00' +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:3807: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:3700: warning: previous external decl of `D_80078EB0' +src/ov_SC04_018/ov_SC04_018_after.c: In function `func_801539F8': +src/ov_SC04_018/ov_SC04_018_after.c:3004: warning: passing arg 3 of `func_80133784' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_after.c:3004: warning: passing arg 3 of `func_80133784' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_after.c:3004: warning: passing arg 3 of `func_80133784' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c: In function `func_801622C4': +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:3876: warning: assignment from incompatible pointer type +src/ov_SC04_018/ov_SC04_018_after.c: At top level: +src/ov_SC04_018/ov_SC04_018_after.c:3020: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_after.c:140: warning: previous external decl of `func_80153C8C' +src/ov_SC04_018/ov_SC04_018_after.c: In function `func_80154150': +src/ov_SC04_018/ov_SC04_018_after.c:3078: warning: passing arg 1 of `func_80154190' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c: At top level: +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:4173: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:4163: warning: previous external decl of `func_8016345C' +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c: In function `func_8016345C': +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:4173: warning: passing arg 6 of `func_80163534' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c: At top level: +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:4179: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:4164: warning: previous external decl of `D_801E5054' +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:4647: warning: type mismatch with previous external decl +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:4625: warning: previous external decl of `D_801E5CF8' +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c: In function `func_801651B8': +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:4655: warning: assignment makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c: In function `func_80165CA0': +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:4903: warning: assignment from incompatible pointer type +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c: In function `func_80165FA4': +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:4916: warning: passing arg 2 of `ApplyMatrixSV' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:4916: warning: passing arg 3 of `ApplyMatrixSV' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:4916: warning: passing arg 2 of `ApplyMatrixSV' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:4916: warning: passing arg 3 of `ApplyMatrixSV' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c: In function `func_801665B4': +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:4950: warning: passing arg 1 of `func_80128ED8' makes integer from pointer without a cast +{standard input}: Assembler messages: +{standard input}:673: Warning: used $at without ".set noat" +{standard input}:674: Warning: used $at without ".set noat" +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c: At top level: +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:5734: warning: prototype for `func_80166994' follows +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:5108: warning: non-prototype definition here +{standard input}:12330: Warning: used $at without ".set noat" +{standard input}:12331: Warning: used $at without ".set noat" +{standard input}:12655: Warning: used $at without ".set noat" +{standard input}:12656: Warning: used $at without ".set noat" +{standard input}:12973: Warning: used $at without ".set noat" +{standard input}:12974: Warning: used $at without ".set noat" +{standard input}:13274: Warning: used $at without ".set noat" +{standard input}:13275: Warning: used $at without ".set noat" +{standard input}:13974: Warning: used $at without ".set noat" +{standard input}:13975: Warning: used $at without ".set noat" +{standard input}:14413: Warning: used $at without ".set noat" +{standard input}:14414: Warning: used $at without ".set noat" +{standard input}:14645: Warning: used $at without ".set noat" +{standard input}:14646: Warning: used $at without ".set noat" +{standard input}:14887: Warning: used $at without ".set noat" +{standard input}:14888: Warning: used $at without ".set noat" +{standard input}:15234: Warning: used $at without ".set noat" +{standard input}:15235: Warning: used $at without ".set noat" +{standard input}:15637: Warning: used $at without ".set noat" +{standard input}:15638: Warning: used $at without ".set noat" +{standard input}:15869: Warning: used $at without ".set noat" +{standard input}:15870: Warning: used $at without ".set noat" +{standard input}:16085: Warning: used $at without ".set noat" +{standard input}:16086: Warning: used $at without ".set noat" +{standard input}:16352: Warning: used $at without ".set noat" +{standard input}:16353: Warning: used $at without ".set noat" +{standard input}:16502: Warning: used $at without ".set noat" +{standard input}:16503: Warning: used $at without ".set noat" +{standard input}:16617: Warning: used $at without ".set noat" +{standard input}:16618: Warning: used $at without ".set noat" +{standard input}:17318: Warning: used $at without ".set noat" +{standard input}:17319: Warning: used $at without ".set noat" +{standard input}:17958: Warning: used $at without ".set noat" +{standard input}:17959: Warning: used $at without ".set noat" +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c: In function `func_80168A14': +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:5874: warning: passing arg 2 of `func_80146A6C' makes pointer from integer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c: In function `func_80169E44': +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:6052: warning: passing arg 1 of `func_80128ED8' makes integer from pointer without a cast +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c: In function `func_80169FE0': +src/ov_SC04_018/ov_SC04_018_jr_8015C32C.c:6096: warning: passing arg 1 of `func_80128ED8' makes integer from pointer without a cast + LD build/ov_SC04_019/ov_SC04_019.elf + OBJCOPY build/ov_SC04_019/ov_SC04_019 + TRIM build/ov_SC04_019/ov_SC04_019 (-1 B linker end-align pad) +[ OK ] build/ov_SC04_019/ov_SC04_019 + sha1 fe9b413fc48ba615ccf81cde49d7a1efad481bc9 == config/check.ov_SC04_019.sha (BYTE-IDENTICAL) diff --git a/.run/P35/baseline/twin_ov_SC04_019_extract.log b/.run/P35/baseline/twin_ov_SC04_019_extract.log new file mode 100644 index 000000000..b94dcffc3 --- /dev/null +++ b/.run/P35/baseline/twin_ov_SC04_019_extract.log @@ -0,0 +1,124 @@ +splat 0.41.0 (powered by spimdisasm 1.41.0) + 0%| | 0/1096 [00:00 func_801287B8(); } - * Manipulating $sp is not expressible in C; full inline asm (manages its own frame). - * - * NOTE (maspsx --aspsx-version=2.56): the inline ".set noreorder" is written with a - * SPACE, so maspsx's own is_reorder tracker stays True and it auto-fills EVERY - * jal/j/branch delay slot with a nop (GNU as honors noreorder and adds none). So do - * NOT write explicit delay-slot nops after jal/j/bne — that yields a double nop. - * bnez is written as `bne $v0,$zero` so maspsx recognizes it (bnez isn't in its - * branch set). The load-delay nop after `lw $v0,%lo(...)($v0)` is auto-inserted too. - * %hi/%lo escaped as %%hi/%%lo (bare % is an operand placeholder). - */ -void func_80128714(void) { - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "sw $sp, 0($t0)\n" - "addiu $t0, $t0, -4\n" - "addu $sp, $t0, $zero\n" - "jal func_800D19F0\n" - "lui $at, %%hi(D_801E9504)\n" - "sw $v0, %%lo(D_801E9504)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E9504)\n" - "lw $v0, %%lo(D_801E9504)($v0)\n" - "bne $v0, $zero, 1f\n" - "jal func_8014607C\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "addu $t0, $v1, $zero\n" - "sw $sp, 0($t0)\n" - "addiu $t0, $t0, -4\n" - "addu $sp, $t0, $zero\n" - "jal func_801287B8\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "j 2f\n" - "1:\n" - "jal func_8001903C\n" - "jal func_80018FC8\n" - "2:\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - - - -// @class: remat -// @stuck: none — MATCH (62 ins). D_801EAFD0 read needed the address REMATERIALIZED -// (lui;addiu;lw 0(reg), not the folded lui;lw %lo) AND pinned to $a0. volatile forces the -// remat; register __asm__("$4") forces the a0 allocation (gcc otherwise picks v0). Both levers -// required — pin-alone folds, volatile-alone lands in v0. - -extern s32 D_80126B58; -extern s32 D_801EAFD0; -extern u16 D_800B99DA; -extern u8 D_800B9A64; - -extern void func_80129CF8(void); -extern void func_8017849C(void); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_801505FC(s32 a0); -extern void func_801508B4(void *a0); -extern void func_80165E90(void); -extern void func_801627E8(void); -extern void func_80162B1C(void); -extern void func_80165CA0(void); -extern void func_80129010(void); -extern void func_8013CA14(void); -extern void func_800190AC(void); -extern void func_8012956C(void); -extern void func_8016E95C(void); -extern void func_801754A8(void); -extern void func_8013BC7C(void); -extern void func_8013BCDC(void); -extern void func_801379FC(void); -extern void func_8001212C(void); - -void func_801287B8(void) { - func_80129CF8(); - func_8017849C(); - ((void (*)(void *))func_8014FDF4)(&D_80126B58); - ((void (*)(void *))func_801505FC)(&D_80126B58); - func_801508B4(&D_80126B58); - func_80165E90(); - func_801627E8(); - func_80162B1C(); - func_80165CA0(); - func_80129010(); - func_8013CA14(); - func_800190AC(); - func_8012956C(); - func_8016E95C(); - func_801754A8(); - { - /* D_801EAFD0 read: the target materializes &sym into $a0 then lw 0($a0) (not the folded - * lui;lw %lo). volatile forces the rematerialize; the $4 pin forces the a0 allocation. */ - register volatile s32 *p __asm__("$4") = &D_801EAFD0; - if (*p == 0) { - func_8013BC7C(); - } - } - func_8013BCDC(); - func_801379FC(); - D_800B99DA++; - if (D_800B9A64 != 0) { - func_8001212C(); - } -} - - - -DEFINE_func_801288B0() /* dedup: shared engine-core @0x801288B0 (src/shared) */ - - - -// @class: remat -// @stuck: none — MATCH. &D_800C7C60 CSE'd once via pointer local `p` so the same reg feeds the *p=0x60 store AND arg5; writing D_800C7C60=0x60 directly would emit a 2nd address materialization (+1 ins). Mirrors matched sibling func_80128998. - -extern int D_800C7C60; -extern int *D_800C7C64; -extern int D_800A2E20; -extern int D_800AF558; -extern int D_801E819C; - -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); - -int func_801288E8(int arg0) -{ - int *p = &D_800C7C60; - *p = 0x60; - D_800C7C64 = &D_800A2E20; - ((void (*)(int, int, int *, int, int *))func_8001ABBC)(0, 0, &D_800AF558, D_801E819C, p); -} - - - - -// @class: remat -// @stuck: none — MATCH (pointer-var forces single materialization of &D_800C7C60, reused as store base + arg5) - -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); -extern int D_800C7C60; -extern int *D_800C7C64; -extern int D_800A2E20; -extern u8 D_800AF560; -extern s32 D_801E819C; - -s32 func_80128940(s32 _arg0) -{ - s32 *p = &D_800C7C60; - *p = 0x5E; - D_800C7C64 = &D_800A2E20; - ((void (*)(s32, s32, void *, s32, void *))func_8001ABBC)(0, 0, &D_800AF560, D_801E819C, p); -} - - - - -// @class: remat -// @stuck: none — MATCH. &D_800C7C60 must be CSE'd once (pointer local `p`) so the same reg feeds the *p=13 store AND arg5; writing D_800C7C60=13 directly emits a 2nd address materialization (+1 ins). - -extern int D_800C7C60; -extern int *D_800C7C64; -extern int D_800A2E20; -extern int D_800AECB0; -extern s32 D_801E819C; - -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); - -s32 func_80128998(void) -{ - int *p = &D_800C7C60; - *p = 13; - D_800C7C64 = &D_800A2E20; - ((void (*)(int, int, int *, int, int *))func_8001ABBC)(0, 0, &D_800AECB0, D_801E819C, p); -} - - - -DEFINE_func_801289F0() /* dedup: shared engine-core @0x801289F0 (src/shared) */ - - -extern void func_80011B7C(int); -extern void func_80011C10(void); -extern u16 D_800B99F6; -extern s16 D_800B9A00; -extern M2C_UNK (*D_8018B540)(); -extern s16 (*D_8018B544)(); - -void func_80128A28(void) { - s16 temp_v0; - - switch (D_800B99F6) { /* irregular */ - case 1: - D_8018B540(); - /* fallthrough */ - case 0: - func_80011C10(); - return; - case 2: - temp_v0 = D_8018B544(); - if (temp_v0 != 0) { - if (temp_v0 < 0) { - func_80011B7C(0); - D_800B9A00 = 1; - return; - } - func_80010DE0(); - } else { - return; - } - break; - } -} - - -extern u16 D_800B99F6; -extern M2C_UNK (*D_8018B54C)(); -extern s32 (*D_8018B550)(); -extern s32 D_801E9500; - -void func_80128AF4(void) { - switch (D_800B99F6) { /* irregular */ - case 0: - D_801E9500 = func_8002AF08(); - func_80011C10(); - return; - case 1: - D_8018B54C(); - func_80011C10(); - return; - case 2: - if ((D_8018B550() << 0x10) != 0) { - if (D_801E9500 == 1) { - if (func_800CFBE8() != 0) { - func_800CFBBC(); - func_80011B7C(0x13); - } else { - func_80011B7C(4); - } - } else { - func_80010DE0(); - } - func_8002AEF8(); - } - return; - } -} - - -DEFINE_func_80128C14() /* dedup: shared engine-core @0x80128C14 (src/shared) */ - - - -extern CdFileLoc_80128C98 cdFileLocTable[]; -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4); - -s32 func_80128C98(s32 arg0) { - - extern s16 D_8018B81C[]; - s16 idx = D_8018B81C[arg0]; - - if (idx >= 0) { - func_8001ABBC(0, 0, (u8 *)&cdFileLocTable[idx], D_801E819C, 0); - } else { - return 1; - } -} - - - - -extern CdFileLoc cdFileLocTable[]; -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4); - -s32 func_80128CFC(s32 arg0) { - - extern s16 D_8018B82C[]; - s16 idx = D_8018B82C[arg0]; - - if (idx >= 0) { - func_8001ABBC(0, 0, (u8 *)&cdFileLocTable[idx], D_801E819C, 0); - } else { - return 1; - } -} - - -DEFINE_func_80128D60() /* dedup: shared engine-core @0x80128D60 (src/shared) */ - -DEFINE_func_80128DB4() /* dedup: shared engine-core @0x80128DB4 (src/shared) */ - -DEFINE_func_80128EA8() /* dedup: shared engine-core @0x80128EA8 (src/shared) */ - -DEFINE_func_80128ED8() /* dedup: shared engine-core @0x80128ED8 (src/shared) */ - -extern M2C_UNK D_801E81A0; - -void func_80128FAC(u16 *arg0) { - func_8001534C(4, &D_801E81A0, 0x80, 0x90, 0, 0); - func_800153CC(5, *arg0, 0xA8, 0x90, 0x40, 0); -} - - -DEFINE_func_80129010() /* dedup: shared engine-core @0x80129010 (src/shared) */ - -DEFINE_func_801290DC() /* dedup: shared engine-core @0x801290DC (src/shared) */ - -DEFINE_func_8012913C() /* dedup: shared engine-core @0x8012913C (src/shared) */ - -DEFINE_func_801291C0() /* dedup: shared engine-core @0x801291C0 (src/shared) */ - -DEFINE_func_80129220() /* dedup: shared engine-core @0x80129220 (src/shared) */ - -DEFINE_func_80129248() /* dedup: shared engine-core @0x80129248 (src/shared) */ - -DEFINE_func_80129258() /* dedup: shared engine-core @0x80129258 (src/shared) */ - -DEFINE_func_8012927C() /* dedup: shared engine-core @0x8012927C (src/shared) */ - -DEFINE_func_801292C8() /* dedup: shared engine-core @0x801292C8 (src/shared) */ - -DEFINE_func_8012931C() /* dedup: shared engine-core @0x8012931C (src/shared) */ - -DEFINE_func_80129350() /* dedup: shared engine-core @0x80129350 (src/shared) */ - -DEFINE_func_80129374() /* dedup: shared engine-core @0x80129374 (src/shared) */ - -DEFINE_func_80129398() /* dedup: shared engine-core @0x80129398 (src/shared) */ - -DEFINE_func_80129428() /* dedup: shared engine-core @0x80129428 (src/shared) */ - -DEFINE_func_8012943C() /* dedup: shared engine-core @0x8012943C (src/shared) */ - -DEFINE_func_8012944C() /* dedup: shared engine-core @0x8012944C (src/shared) */ - - - - -DEFINE_func_8012956C() /* dedup: shared engine-core @0x8012956C (src/shared) */ - - -DEFINE_func_801298F4() /* dedup: shared engine-core @0x801298F4 (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (158 ins, match_one relocation-masked) -// -// Levers that landed it (2 iterations, 56 mismatched -> MATCH): -// 1. §43 K&R s16-param definition: `void f(a0,a1,a2) s16 a0; s16 a1; u8 *a2;` reproduces the -// in-place `sll $a0,$a0,16` zero-test on the arg reg + the raw-$a1 copy (`addu $a3,$a1,$zero`) -// stashed in the jtbl branch delay slot and RE-extended per use in the case body. -// 2. §18 array-of-struct %lo-fold: three sibling extern arrays D_801E9508/1/2[] (a 4-row x 3-comp -// RGB gradient table, stride 4) give `lui $at,%hi(sym); addu $at,$at,idx4; sb $v0,%lo(sym)($at)` -// for the indexed case and plain `lui/sb %lo(sym+k)` for the constant-index case. -// 3. Switch CASE-ORDER = source order: the jump table dispatches case 1 to the FIRST emitted block, -// so `case 1:` must be written before `case 0/2:` and `case 3/4:`. -// 4. THE residual (56 -> 0): the case-1 body must be written ROW-MAJOR (BE0[0],BE1[0],BE2[0], -// BE0[4],BE1[4],BE2[4],...), i.e. the natural table fill. gcc-2.7.2's sched pass then REORDERS -// the stores itself (BE0,BE1,BE5,BE8,BE4,BEC,BE9,BED,BE2,BE6,BEA,BEE) because the three arrays -// are distinct declarations => provably non-aliasing. Writing the source in the target's STORE -// order is the trap: it pins the b*255 / r*143 CSEs at their late store sites instead of letting -// them hoist into $a0/$v1 at rows 0/1, and mis-schedules the D_801EAED0 load. -// 5. Shift signedness: `u32` component locals give `srl` for r*5>>3 and g*25>>1; an explicit -// `(s32)(x * 255) >> 4` gives `sra` for the *255 / *143 / *45 terms (mixed within one block). - -DEFINE_func_801299C8() /* dedup: shared engine-core @0x801299C8 (src/shared) */ - -DEFINE_func_80129C40() /* dedup: shared engine-core @0x80129C40 (src/shared) */ - -DEFINE_func_80129CF8() /* dedup: shared engine-core @0x80129CF8 (src/shared) */ - -DEFINE_func_80129FF4() /* dedup: shared engine-core @0x80129FF4 (src/shared) */ - -DEFINE_func_8012A018() /* dedup: shared engine-core @0x8012A018 (src/shared) */ - - -DEFINE_func_8012A048() /* dedup: shared engine-core @0x8012A048 (src/shared) */ - -DEFINE_func_8012A094() /* dedup: shared engine-core @0x8012A094 (src/shared) */ - -DEFINE_func_8012A0E0() /* dedup: shared engine-core @0x8012A0E0 (src/shared) */ - -DEFINE_func_8012A100() /* dedup: shared engine-core @0x8012A100 (src/shared) */ - -DEFINE_func_8012A110() /* dedup: shared engine-core @0x8012A110 (src/shared) */ - - - -// @class: regalloc-order -// @stuck: none — MATCH (78 ins, relocation-masked). Register pins ($2-$5 reused for -// the D_x200-x20C words then the D_x220-x226 halfwords; $6-$10 held across for the -// D_x228/x22A/x294/x298/x29A tail) force the frameless 9-deep allocation the default -// -O2 pre-reload scheduler otherwise blows to a 3-reg spill (all 720 stmt orders spill -// without the pins). A single zero-byte scheduling/memory barrier after the 4 word -// stores stops gcc hoisting the first 8-byte block copy above them. - - - - -DEFINE_func_8012A1BC() /* dedup: shared engine-core @0x8012A1BC (src/shared) */ - - -DEFINE_func_8012A2F4() /* dedup: shared engine-core @0x8012A2F4 (src/shared) */ - -DEFINE_func_8012A304() /* dedup: shared engine-core @0x8012A304 (src/shared) */ - - - - - - - - - -DEFINE_func_8012A328() /* dedup: shared engine-core @0x8012A328 (src/shared) */ - - -DEFINE_func_8012A418() /* dedup: shared engine-core @0x8012A418 (src/shared) */ - - - - - -DEFINE_func_8012A464() /* dedup: shared engine-core @0x8012A464 (src/shared) */ - - -DEFINE_func_8012A4BC() /* dedup: shared engine-core @0x8012A4BC (src/shared) */ - -extern void func_8012A598(void *a0); -void func_8012A568(void (*a0)(void)) { - func_8012A598(a0); - a0(); -} - - -DEFINE_func_8012A598() /* dedup: shared engine-core @0x8012A598 (src/shared) */ - -DEFINE_func_8012A5F8() /* dedup: shared engine-core @0x8012A5F8 (src/shared) */ - -DEFINE_func_8012A62C() /* dedup: shared engine-core @0x8012A62C (src/shared) */ - -DEFINE_func_8012A68C() /* dedup: shared engine-core @0x8012A68C (src/shared) */ - -DEFINE_func_8012A6D0() /* dedup: shared engine-core @0x8012A6D0 (src/shared) */ - -DEFINE_func_8012A758() /* dedup: shared engine-core @0x8012A758 (src/shared) */ - -DEFINE_func_8012A79C() /* dedup: shared engine-core @0x8012A79C (src/shared) */ - -DEFINE_func_8012A7D4() /* dedup: shared engine-core @0x8012A7D4 (src/shared) */ - -DEFINE_func_8012A828() /* dedup: shared engine-core @0x8012A828 (src/shared) */ - -DEFINE_func_8012A860() /* dedup: shared engine-core @0x8012A860 (src/shared) */ - -DEFINE_func_8012A8B0() /* dedup: shared engine-core @0x8012A8B0 (src/shared) */ - -DEFINE_func_8012A8E8() /* dedup: shared engine-core @0x8012A8E8 (src/shared) */ - -DEFINE_func_8012A908() /* dedup: shared engine-core @0x8012A908 (src/shared) */ - -DEFINE_func_8012A988() /* dedup: shared engine-core @0x8012A988 (src/shared) */ - - -DEFINE_func_8012AAAC() /* dedup: shared engine-core @0x8012AAAC (src/shared) */ - - -DEFINE_func_8012ACA0() /* dedup: shared engine-core @0x8012ACA0 (src/shared) */ diff --git a/src/ov_SC03_015/ov_SC03_015_after.c b/src/ov_SC03_015/ov_SC03_015_after.c deleted file mode 100644 index 20d8bb212..000000000 --- a/src/ov_SC03_015/ov_SC03_015_after.c +++ /dev/null @@ -1,3046 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* func_801457A4 (@0x801457A4) is an -O0 function; its definition lives in ov_SC03_015_o0b.c (the -O0 - * whale object, whose .text ends exactly at this address). Mirrors ov_SC01_077. §116 */ -DEFINE_func_801458E0() /* dedup: shared engine-core @0x801458E0 (src/shared) */ - -DEFINE_func_801458E8() /* dedup: shared engine-core @0x801458E8 (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (else-if >= ladder + §5a cross-jump barrier in the first D_8018DAA4 block defeats the tail-merge of the two identical D_8018DAA4 loads; barrier emits zero bytes, load-bearing) - -extern s32 func_80029504(void); -extern void func_800D185C(u8 *a0); -extern void func_80145B24(void); - -extern u8 D_8018DAA4; -extern u8 D_8018DA14; -extern u8 D_8018D9F0; -extern u8 D_8018D9CC; -extern u8 D_8018DA80; -extern u8 D_8018DA5C; -extern u8 D_8018DA38; -extern u8 D_8018D9A8; - -void func_80145934(void) { - s32 v; - void *p; - - v = func_80029504(); - if (v >= 0x6A4) { - p = &D_8018DAA4; - /* §5a cross-jump barrier — LOAD-BEARING: keeps this D_8018DAA4 load from being - * tail-merged with the v>=0x384 D_8018DAA4 load below (emits zero machine code). */ - __asm__ __volatile__("" ::: "memory"); - } else if (v >= 0x5DC) { - p = &D_8018DA14; - } else if (v >= 0x578) { - p = &D_8018D9F0; - } else if (v >= 0x514) { - p = &D_8018D9CC; - } else if (v >= 0x384) { - p = &D_8018DAA4; - } else if (v >= 0x258) { - p = &D_8018DA80; - } else if (v >= 0xC8) { - p = &D_8018DA5C; - } else if (v >= 0xA) { - p = &D_8018DA38; - } else { - p = &D_8018D9A8; - } - ((void (*)(void *))func_800D185C)(p); - func_80145B24(); -} - - - - -// @class: other -// @stuck: none — MATCH (62 ins). Sibling func_80145934 (byte-matched, same shape) is the template. Tail is default-then-conditional-override (matches asm .L80145AEC), and a §5a cross-jump barrier prevents the two identical D_8018DB34 loads (>=0x6A4 and >=0x384) from being tail-merged. - -extern s32 func_80029504(void); -extern void func_800D185C(u8 *a0); -extern void func_80145B24(void); - -extern u8 D_8018DB34; -extern u8 D_8018DA14; -extern u8 D_8018D9F0; -extern u8 D_8018D9CC; -extern u8 D_8018DB10; -extern u8 D_8018DAEC; -extern u8 D_8018D9A8; -extern u8 D_8018DAC8; - -void func_80145A2C(void) { - s32 v; - void *p; - - v = func_80029504(); - if (v >= 0x6A4) { - p = &D_8018DB34; - /* §5a cross-jump barrier — LOAD-BEARING: keeps this D_8018DB34 load from being - * tail-merged with the v>=0x384 D_8018DB34 load below (emits zero machine code). */ - __asm__ __volatile__("" ::: "memory"); - } else if (v >= 0x5DC) { - p = &D_8018DA14; - } else if (v >= 0x578) { - p = &D_8018D9F0; - } else if (v >= 0x514) { - p = &D_8018D9CC; - } else if (v >= 0x384) { - p = &D_8018DB34; - } else if (v >= 0x258) { - p = &D_8018DB10; - } else if (v >= 0xC8) { - p = &D_8018DAEC; - } else { - p = &D_8018D9A8; - if (v >= 0xA) { - p = &D_8018DAC8; - } - } - ((void (*)(void *))func_800D185C)(p); - func_80145B24(); -} - - -DEFINE_func_80145B24() /* dedup: shared engine-core @0x80145B24 (src/shared) */ - -DEFINE_func_80145BF8() /* dedup: shared engine-core @0x80145BF8 (src/shared) */ - -DEFINE_func_80145C54() /* dedup: shared engine-core @0x80145C54 (src/shared) */ - -// @class: struct -// @stuck: 2 residuals — (1) target RELOADS global ptr D_80126B78 before each of its 5 field accesses (f28/f18/f1a/f1c/f2c); gcc-2.7.2 CSEs the single pointer load in every clean-C form I tried (int-cast, (s8*)/(s32) M2C_FIELD, struct*), keeping ONE load. volatile forces reloads but hoists them + leaves delay-slot nops the target fills (target is NOT volatile). (2) frame 0x20 not 0x18: target reserves an unused 8-byte stack local @0x10 (address-taken local — reproduced, but every code-free escape optimizes away and a visible escape corrupts the func_80145EE8(0) arg). Structure/order/values/callees all match; only the alias-driven reload chain + the phantom frame local remain. Family exemplar (~130 overlays). - - - -s32 func_80145CEC() { - extern int func_80016714(); - extern int func_8001C320(); - extern int func_801552F4(); - extern int func_80147084(); - extern int func_80147098(); - extern int func_801470AC(); - extern int func_80149210(); - extern int func_8014BE9C(); - extern int func_8016533C(); - extern int func_801627C0(); - extern int func_80162AF4(); - extern int func_80165C78(); - extern int func_801468C8(); - extern int func_80145EE8(); - extern int func_8014C968(); - extern int func_8014C6D0(); - extern int func_80165938(); - extern int func_80153C8C(); - extern int func_800290BC(); - extern s32 D_800AFAE8; - extern s32 D_800DE2A4; - extern s32 D_801152C8; - extern s32 D_8018CF1C; - extern s32 * D_80126B78[1]; - extern s32 * D_800AF7C8; - extern s32 * D_80126B90; - extern s16 D_80126BB8; - extern s16 D_80126BBA; - extern s16 D_80126BBC; - extern s16 D_80126BC0; - extern s16 D_80126BC2; - extern s16 D_80126BC4; - extern s16 D_80126BC8; - extern s16 D_80126BCA; - extern s16 D_80126BCC; - extern s16 D_80126D10; - extern s16 D_80126D12; - extern s16 D_80126C4E; - extern s16 currentLocationId; - extern s32 D_8011F9C4; - extern s32 D_8012707C; - extern s32 D_8011DB10; - - unsigned int uVar1; - s32 pad[2]; - (void)&pad; - - func_80016714(&D_80126B58, 0x254); - D_80126B78[0] = (s32 *)&D_800AFAE8; - D_800AF7C8 = (s32 *)&D_801152C8; - func_8001C320(&D_800AFAE8, &D_800DE2A4); - *(s32 *)((s32)D_80126B78[0] + 0x28) = 0x7fff7fff; - D_80126B90 = (s32 *)&D_8018CF1C; - *(u16 *)((s32)D_80126B78[0] + 0x18) = 0x1000; - D_80126BC8 = 0x1000; - D_80126BC0 = 0x1000; - D_80126BB8 = 0x1000; - *(u16 *)((s32)D_80126B78[0] + 0x1a) = 0x1000; - D_80126BCA = 0x1000; - D_80126BC2 = 0x1000; - D_80126BBA = 0x1000; - *(u16 *)((s32)D_80126B78[0] + 0x1c) = 0x1000; - D_80126BCC = 0x1000; - D_80126BC4 = 0x1000; - D_80126BBC = 0x1000; - D_80126D12 = 0x1000; - D_80126D10 = 0x1000; - D_80126C4E = 0x1000; - func_801552F4(&D_80126B58); - func_80147084(&D_80126B58); - func_80147098(&D_80126B58); - func_801470AC(&D_80126B58); - *(u16 *)((s32)D_80126B78[0] + 0x2c) = *(u16 *)((s32)D_80126B78[0] + 0x2c) | 0x50; - func_80149210(&D_80126B58, 8); - func_8014BE9C(); - func_8016533C(); - func_801627C0(); - func_80162AF4(); - func_80165C78(); - func_801468C8(&D_80126B58, 1); - if (currentLocationId != 0x30a2 && currentLocationId != 0x30a5) { - func_80145EE8(0); - } - func_8014C968(); - func_8014C6D0(); - D_8011F9C4 = 0; - func_80165938(); - func_80153C8C(); - D_8012707C = 0; - D_8011DB10 = 0; - uVar1 = ((int(*)())func_80029504)(); - if (uVar1 >= 10) { - func_800290BC(); - } -} - - - - -// @class: schedule -// @stuck: branch layout — 3-way dispatch on param_1; trying switch form - -extern s32 func_80029178(s32 arg); -extern void func_80146014(s32 a0); - -extern unsigned char D_8018CF2C[]; -extern unsigned char D_8018CF5C[]; -extern unsigned char D_8018CFAC[]; -extern unsigned char D_8018CFDC[]; -extern unsigned char D_8018D00C[]; - -void func_80145EE8(s32 param_1) -{ - switch (param_1) { - case 0: - if (((unsigned char (*)(int))func_80029178)(0x1F) != 0) { - ((void (*)(void *))func_80146014)(D_8018CF2C); - } - if (((unsigned char (*)(int))func_80029178)(0x21) != 0) { - ((void (*)(void *))func_80146014)(D_8018CF5C); - } - if (((unsigned char (*)(int))func_80029178)(0x1E) != 0) { - ((void (*)(void *))func_80146014)(D_8018CFAC); - } - if (((unsigned char (*)(int))func_80029178)(0x1D) != 0) { - ((void (*)(void *))func_80146014)(D_8018CFDC); - } - if (((unsigned char (*)(int))func_80029178)(0x20) == 0) { - return; - } - ((void (*)(void *))func_80146014)(D_8018D00C); - break; - case 1: - ((void (*)(void *))func_80146014)(D_8018CF2C); - ((void (*)(void *))func_80146014)(D_8018CF5C); - ((void (*)(void *))func_80146014)(D_8018CFAC); - ((void (*)(void *))func_80146014)(D_8018CFDC); - ((void (*)(void *))func_80146014)(D_8018D00C); - break; - } -} - - -DEFINE_func_80146014() /* dedup: shared engine-core @0x80146014 (src/shared) */ - -DEFINE_func_80146074() /* dedup: shared engine-core @0x80146074 (src/shared) */ - - -extern s32 func_80146128(void); -extern void func_80146360(void); -extern void func_801463A0(); - -void func_8014607C(void) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "sw $sp, 0($t0)\n" - "addiu $t0, $t0, -4\n" - "addu $sp, $t0, $zero\n" - "jal func_80146128\n" - "lui $at, %%hi(D_801E9690)\n" - "sw $v0, %%lo(D_801E9690)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E9690)\n" - "lw $v0, %%lo(D_801E9690)($v0)\n" - "nop\n" - "beqz $v0, .L80146114\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "addu $t0, $v1, $zero\n" - "sw $sp, 0($t0)\n" - "addiu $t0, $t0, -4\n" - "addu $sp, $t0, $zero\n" - "jal func_80146360\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "addu $t0, $v1, $zero\n" - "sw $sp, 0($t0)\n" - "addiu $t0, $t0, -4\n" - "addu $sp, $t0, $zero\n" - "jal func_801463A0\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - ".L80146114:\n" - "nop\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_80146128() /* dedup: shared engine-core @0x80146128 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (fnptr-table idiom: D_8018D05C[u8 idx](&arg)) -extern void (*D_8018D05C[])(void *); -extern u8 D_80126BA4; - -void func_80146360(void) -{ - /* [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; - D_8018D05C[D_80126BA4](&D_80126B58); -} - - - - - - /* size 8, align 1 -> unaligned block move */ - -DEFINE_func_801463A0() /* dedup: shared engine-core @0x801463A0 (src/shared) */ - - -DEFINE_func_80146534() /* dedup: shared engine-core @0x80146534 (src/shared) */ - -DEFINE_func_80146554() /* dedup: shared engine-core @0x80146554 (src/shared) */ - -DEFINE_func_80146578() /* dedup: shared engine-core @0x80146578 (src/shared) */ - -DEFINE_func_8014659C() /* dedup: shared engine-core @0x8014659C (src/shared) */ - -DEFINE_func_801465C0() /* dedup: shared engine-core @0x801465C0 (src/shared) */ - -DEFINE_func_801465E4() /* dedup: shared engine-core @0x801465E4 (src/shared) */ - -DEFINE_func_80146608() /* dedup: shared engine-core @0x80146608 (src/shared) */ - -DEFINE_func_801466B4() /* dedup: shared engine-core @0x801466B4 (src/shared) */ - -DEFINE_func_801466F0() /* dedup: shared engine-core @0x801466F0 (src/shared) */ - - - -DEFINE_func_80146750() /* dedup: shared engine-core @0x80146750 (src/shared) */ - - -DEFINE_func_8014680C() /* dedup: shared engine-core @0x8014680C (src/shared) */ - -DEFINE_func_801468C8() /* dedup: shared engine-core @0x801468C8 (src/shared) */ - -DEFINE_func_80146924() /* dedup: shared engine-core @0x80146924 (src/shared) */ - -DEFINE_func_80146994() /* dedup: shared engine-core @0x80146994 (src/shared) */ - -DEFINE_func_801469C8() /* dedup: shared engine-core @0x801469C8 (src/shared) */ - -extern void func_80146AFC(void*); -void aF80146A6C(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6) __asm__("func_80146A6C"); -void aF80146A6C(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6) -{ - u8 sp[0x18]; - *(s16 *)(sp + 0x0) = a0; - *(s32 *)(sp + 0x8) = a1; - *(s16 *)(sp + 0x2) = a2; - *(s16 *)(sp + 0x4) = a3; - *(s16 *)(sp + 0x6) = a4; - *(s32 *)(sp + 0xC) = a5; - *(s32 *)(sp + 0x10) = a6; - ((s32 (*)(void *))func_80146AFC)(sp); -} - - -DEFINE_func_80146AB4() /* dedup: shared engine-core @0x80146AB4 (src/shared) */ - -extern s32 func_80146B9C(void * arg0); - -/* func_80146AFC — ASCENDING twin of the byte-proven DEFINE_func_80146B9C() - * in src/shared/engine_core.h (cookbook §71: find the already-matched sibling first). - * Same 0x58-stride slot table (base D_8011D030), same 7-store copy body in the same - * order, same $a2/$a1 giv pair. 80146B9C walks DOWN; this one walks UP, so the guard - * is `p < end`, end = p + 0xA50 (30 slots x 0x58). - * - * DECAY ROOT CAUSE (this redraft): the stored backlog draft had been rewritten to - * `void func_80146AFC(...)`, which drops BOTH `return 0` paths' `addu $v0,$zero,$zero` - * and the hit path's `j .L80146B94` => LENGTH-DRIFT -2 (38 vs 40) plus $v0/$v1 regalloc - * drift on the final lw/sw pair. Restoring the s32 return type (the fleet spelling the - * banked sibling func_80146B9C already uses) restores MATCH at 40/40. - * - * RECONCILE (2026-08-01) — the whole-binary gate failed with - * ov_SC01_077_after.c:592: conflicting types for `D_8011D030' (previous decl :564) - * TWO file-scope collisions were present; both are fixed HERE, with NO edit to - * src/shared/engine_core.h and NO change to the generated code (re-verified MATCH - * after each step): - * - * 1. D_8011D030 (the reported one). DEFINE_func_801469C8() emits - * `extern s32 D_8011D030;` at FILE scope (engine_core.h:10811, above the - * `s32 func_801469C8(...) {` line), and this TU expands that macro at :564 — - - extern s32 D_8011D030; - * i.e. before the splice point :570. The draft's `extern u16` therefore - * redeclared it incompatibly at :592. Conformed to the TU's `extern s32`. - * Codegen-neutral: the sole use is `(u8 *)&D_8011D030`, an address-of, so the - * declared object type never reaches a load/store width (cookbook §20). - * - * 2. func_80146AFC ITSELF (latent, would have surfaced next). DEFINE_func_8014C010() - * (:13510) and DEFINE_func_8014AD30() (:13524) each emit a file-scope - * `extern void func_80146AFC(void *a0);`, and this TU expands them at :1386 and - * :1541 — after the splice — so an `s32 func_80146AFC` definition collides on the - * RETURN axis. Fixed with the §37/§124 ASM-LABEL ALIAS: the C identifier is - * aF80146AFC, the emitted label is func_80146AFC, so the canonical void decl and - * this s32 definition never share a namespace. Callers discard the result, so the - * void-typed call sites stay codegen-identical. - * - * Both were reproduced and then cleared against the real cpp+cc1-2.7.2 pair using a - * synthetic copy of this TU's declaration environment (.run/uc2/_recon_probe_80146AFC.c): - * the pre-reconcile spelling emits exactly the gate's error pair; the spelling below - * compiles clean. - * - * ORACLE: tools/match_one.py func_80146AFC --c .run/uc2/func_80146AFC.c - * --asm-subdir asm/ov_SC01_077/nonmatchings/ov_SC01_077_after -> MATCH (40 ins) - */ - - -s32 aF80146AFC(void *arg0) __asm__("func_80146AFC"); - -s32 aF80146AFC(void *arg0) -{ - register u8 *p __asm__("$6"); - register u8 *q __asm__("$5"); - u8 *end; - p = (u8 *)&D_8011D030; - end = p + 0xA50; - if ((u32)p < (u32)end) { - q = p + 0x30; - do { - if (*(u16 *)p == 0) { - *(s32 *)(q + 0x4) = *(s32 *)((u8 *)arg0 + 0x8); - *(s16 *)p = *(u16 *)((u8 *)arg0 + 0x0); - *(s16 *)(q - 0x2A) = *(u16 *)((u8 *)arg0 + 0x2); - *(s16 *)(q - 0x26) = *(u16 *)((u8 *)arg0 + 0x4); - *(s16 *)(q - 0x22) = *(u16 *)((u8 *)arg0 + 0x6); - *(s32 *)(q - 0x4) = *(s32 *)((u8 *)arg0 + 0xC); - *(s32 *)(q + 0x0) = *(s32 *)((u8 *)arg0 + 0x10); - return (s32)p; - } - p += 0x58; - q += 0x58; - } while ((u32)p < (u32)end); - } - return 0; -} - - -DEFINE_func_80146B9C() /* dedup: shared engine-core @0x80146B9C (src/shared) */ - -DEFINE_func_80146C3C() /* dedup: shared engine-core @0x80146C3C (src/shared) */ - -DEFINE_func_80146C98() /* dedup: shared engine-core @0x80146C98 (src/shared) */ - -DEFINE_func_80146CA0() /* dedup: shared engine-core @0x80146CA0 (src/shared) */ - -DEFINE_func_80146CB4() /* dedup: shared engine-core @0x80146CB4 (src/shared) */ - -DEFINE_func_80146CC8() /* dedup: shared engine-core @0x80146CC8 (src/shared) */ - -DEFINE_func_80146D30() /* dedup: shared engine-core @0x80146D30 (src/shared) */ - -DEFINE_func_80146D80() /* dedup: shared engine-core @0x80146D80 (src/shared) */ - -DEFINE_func_80146D90() /* dedup: shared engine-core @0x80146D90 (src/shared) */ - -DEFINE_func_80146DB8() /* dedup: shared engine-core @0x80146DB8 (src/shared) */ - -DEFINE_func_80146DE8() /* dedup: shared engine-core @0x80146DE8 (src/shared) */ - -DEFINE_func_80146DF8() /* dedup: shared engine-core @0x80146DF8 (src/shared) */ - -DEFINE_func_80146E90() /* dedup: shared engine-core @0x80146E90 (src/shared) */ - -DEFINE_func_80146E98() /* dedup: shared engine-core @0x80146E98 (src/shared) */ - -DEFINE_func_80146EC0() /* dedup: shared engine-core @0x80146EC0 (src/shared) */ - -DEFINE_func_80146F58() /* dedup: shared engine-core @0x80146F58 (src/shared) */ - -DEFINE_func_80146FC4() /* dedup: shared engine-core @0x80146FC4 (src/shared) */ - -DEFINE_func_8014704C() /* dedup: shared engine-core @0x8014704C (src/shared) */ - -DEFINE_func_80147054() /* dedup: shared engine-core @0x80147054 (src/shared) */ - -DEFINE_func_80147060() /* dedup: shared engine-core @0x80147060 (src/shared) */ - -DEFINE_func_8014706C() /* dedup: shared engine-core @0x8014706C (src/shared) */ - -DEFINE_func_80147078() /* dedup: shared engine-core @0x80147078 (src/shared) */ - -DEFINE_func_80147084() /* dedup: shared engine-core @0x80147084 (src/shared) */ - -DEFINE_func_8014708C() /* dedup: shared engine-core @0x8014708C (src/shared) */ - -DEFINE_func_80147098() /* dedup: shared engine-core @0x80147098 (src/shared) */ - -DEFINE_func_801470A0() /* dedup: shared engine-core @0x801470A0 (src/shared) */ - -DEFINE_func_801470AC() /* dedup: shared engine-core @0x801470AC (src/shared) */ - -DEFINE_func_801470B4() /* dedup: shared engine-core @0x801470B4 (src/shared) */ - -DEFINE_func_801470C0() /* dedup: shared engine-core @0x801470C0 (src/shared) */ - -DEFINE_func_80147118() /* dedup: shared engine-core @0x80147118 (src/shared) */ - -DEFINE_func_80147264() /* dedup: shared engine-core @0x80147264 (src/shared) */ - -DEFINE_func_80147290() /* dedup: shared engine-core @0x80147290 (src/shared) */ - -DEFINE_func_801472B4() /* dedup: shared engine-core @0x801472B4 (src/shared) */ - -DEFINE_func_801472C8() /* dedup: shared engine-core @0x801472C8 (src/shared) */ - -DEFINE_func_801472DC() /* dedup: shared engine-core @0x801472DC (src/shared) */ - -DEFINE_func_801472F0() /* dedup: shared engine-core @0x801472F0 (src/shared) */ - -DEFINE_func_80147300() /* dedup: shared engine-core @0x80147300 (src/shared) */ - -DEFINE_func_80147324() /* dedup: shared engine-core @0x80147324 (src/shared) */ - -DEFINE_func_80147364() /* dedup: shared engine-core @0x80147364 (src/shared) */ - -DEFINE_func_801473DC() /* dedup: shared engine-core @0x801473DC (src/shared) */ - -DEFINE_func_801473EC() /* dedup: shared engine-core @0x801473EC (src/shared) */ - -DEFINE_func_80147460() /* dedup: shared engine-core @0x80147460 (src/shared) */ - -DEFINE_func_80147478() /* dedup: shared engine-core @0x80147478 (src/shared) */ - -DEFINE_func_801474D8() /* dedup: shared engine-core @0x801474D8 (src/shared) */ - -DEFINE_func_801474EC() /* dedup: shared engine-core @0x801474EC (src/shared) */ - -DEFINE_func_80147514() /* dedup: shared engine-core @0x80147514 (src/shared) */ - -DEFINE_func_80147628() /* dedup: shared engine-core @0x80147628 (src/shared) */ - -DEFINE_func_80147718() /* dedup: shared engine-core @0x80147718 (src/shared) */ - -DEFINE_func_80147788() /* dedup: shared engine-core @0x80147788 (src/shared) */ - -DEFINE_func_801477A8() /* dedup: shared engine-core @0x801477A8 (src/shared) */ - -DEFINE_func_801477C8() /* dedup: shared engine-core @0x801477C8 (src/shared) */ - -DEFINE_func_801477E8() /* dedup: shared engine-core @0x801477E8 (src/shared) */ - -DEFINE_func_80147814() /* dedup: shared engine-core @0x80147814 (src/shared) */ - -DEFINE_func_80147860() /* dedup: shared engine-core @0x80147860 (src/shared) */ - -DEFINE_func_801478B8() /* dedup: shared engine-core @0x801478B8 (src/shared) */ - -DEFINE_func_80147928() /* dedup: shared engine-core @0x80147928 (src/shared) */ - -DEFINE_func_80147948() /* dedup: shared engine-core @0x80147948 (src/shared) */ - -DEFINE_func_8014799C() /* dedup: shared engine-core @0x8014799C (src/shared) */ - -DEFINE_func_801479BC() /* dedup: shared engine-core @0x801479BC (src/shared) */ - -DEFINE_func_80147A10() /* dedup: shared engine-core @0x80147A10 (src/shared) */ - -DEFINE_func_80147A30() /* dedup: shared engine-core @0x80147A30 (src/shared) */ - -DEFINE_func_80147A84() /* dedup: shared engine-core @0x80147A84 (src/shared) */ - -DEFINE_func_80147AAC() /* dedup: shared engine-core @0x80147AAC (src/shared) */ - -DEFINE_func_80147AD4() /* dedup: shared engine-core @0x80147AD4 (src/shared) */ - -DEFINE_func_80147B18() /* dedup: shared engine-core @0x80147B18 (src/shared) */ - -DEFINE_func_80147B5C() /* dedup: shared engine-core @0x80147B5C (src/shared) */ - -DEFINE_func_80147C30() /* dedup: shared engine-core @0x80147C30 (src/shared) */ - -DEFINE_func_80147CC8() /* dedup: shared engine-core @0x80147CC8 (src/shared) */ - -DEFINE_func_80147D38() /* dedup: shared engine-core @0x80147D38 (src/shared) */ - -DEFINE_func_80147DC0() /* dedup: shared engine-core @0x80147DC0 (src/shared) */ - -DEFINE_func_80147E44() /* dedup: shared engine-core @0x80147E44 (src/shared) */ - -DEFINE_func_80147F50() /* dedup: shared engine-core @0x80147F50 (src/shared) */ - -DEFINE_func_80147F78() /* dedup: shared engine-core @0x80147F78 (src/shared) */ - -DEFINE_func_80148038() /* dedup: shared engine-core @0x80148038 (src/shared) */ - -DEFINE_func_80148094() /* dedup: shared engine-core @0x80148094 (src/shared) */ - -DEFINE_func_801483E8() /* dedup: shared engine-core @0x801483E8 (src/shared) */ - -DEFINE_func_801484B0() /* dedup: shared engine-core @0x801484B0 (src/shared) */ - -DEFINE_func_801484E8() /* dedup: shared engine-core @0x801484E8 (src/shared) */ - -DEFINE_func_80148534() /* dedup: shared engine-core @0x80148534 (src/shared) */ - -DEFINE_func_8014856C() /* dedup: shared engine-core @0x8014856C (src/shared) */ - -DEFINE_func_801485B8() /* dedup: shared engine-core @0x801485B8 (src/shared) */ - -DEFINE_func_80148634() /* dedup: shared engine-core @0x80148634 (src/shared) */ - -DEFINE_func_80148648() /* dedup: shared engine-core @0x80148648 (src/shared) */ - -DEFINE_func_801487F4() /* dedup: shared engine-core @0x801487F4 (src/shared) */ - -DEFINE_func_80148800() /* dedup: shared engine-core @0x80148800 (src/shared) */ - -DEFINE_func_8014880C() /* dedup: shared engine-core @0x8014880C (src/shared) */ - -DEFINE_func_80148818() /* dedup: shared engine-core @0x80148818 (src/shared) */ - -DEFINE_func_80148824() /* dedup: shared engine-core @0x80148824 (src/shared) */ - -DEFINE_func_801488A8() /* dedup: shared engine-core @0x801488A8 (src/shared) */ - -DEFINE_func_8014891C() /* dedup: shared engine-core @0x8014891C (src/shared) */ - -DEFINE_func_80148980() /* dedup: shared engine-core @0x80148980 (src/shared) */ - -DEFINE_func_801489E8() /* dedup: shared engine-core @0x801489E8 (src/shared) */ - -DEFINE_func_80148A48() /* dedup: shared engine-core @0x80148A48 (src/shared) */ - -DEFINE_func_80148AAC() /* dedup: shared engine-core @0x80148AAC (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (71 ins). switch binary-tree; s1 angle = pin-source-of-copy ($5 temp + retie); 2nd-block double-load + 0x80-clobber via $v1/$v0/$a0 pins + lazy hi-pin reusing dead c80 reg - -extern s32 ratan2(s32 a0, s32 a1); - -int func_80148AFC(void *a0) { - - extern s32 D_801151D4; - extern ActorFn D_8018D064[]; - s32 p = (s32)a0; - s32 iVar5 = *(s32 *)(p + 0x20); - register s32 tmp __asm__("$5") = (ratan2(*(s32 *)(D_801151D4 + 0x44) - *(s32 *)(D_801151D4 + 0x50), - *(s32 *)(D_801151D4 + 0x48) - *(s32 *)(D_801151D4 + 0x3C)) - 0x400) & 0xFFF; - s32 sVar3; - u8 bVar1; - __asm__("" : "=r"(tmp) : "0"(tmp)); - sVar3 = tmp; - bVar1 = *(u8 *)(p + 0xA9); - - switch (bVar1) { - case 0x41: - return D_8018D064[*(u16 *)(p + 0xAA) >> 12](a0) & 0xFF; - case 0x53: - case 0x73: - { - register u32 bb __asm__("$3"); - register s32 c80 __asm__("$2") = 0x80; - register s32 lo __asm__("$4"); - register s32 hi __asm__("$2"); - bb = *(u16 *)(p + 0xAE); - lo = bb & 0xFF; - if (lo != c80 || (hi = bb >> 8) != 0x80) { - s32 sVar4; - __asm__ __volatile__("" : : : "memory"); - sVar4 = ratan2((*(u16 *)(p + 0xAE) & 0xFF) - 0x80, 0x80 - (*(u16 *)(p + 0xAE) >> 8)); - *(u16 *)(iVar5 + 0x12) = (sVar3 + sVar4) & 0xFFF; - return 1; - } - return 0; - } - } -} - - -DEFINE_func_80148C18() /* dedup: shared engine-core @0x80148C18 (src/shared) */ - -DEFINE_func_80148C20() /* dedup: shared engine-core @0x80148C20 (src/shared) */ - -DEFINE_func_80148C34() /* dedup: shared engine-core @0x80148C34 (src/shared) */ - -DEFINE_func_80148C4C() /* dedup: shared engine-core @0x80148C4C (src/shared) */ - -DEFINE_func_80148C64() /* dedup: shared engine-core @0x80148C64 (src/shared) */ - -DEFINE_func_80148C7C() /* dedup: shared engine-core @0x80148C7C (src/shared) */ - -DEFINE_func_80148C84() /* dedup: shared engine-core @0x80148C84 (src/shared) */ - -DEFINE_func_80148C9C() /* dedup: shared engine-core @0x80148C9C (src/shared) */ - -DEFINE_func_80148CB4() /* dedup: shared engine-core @0x80148CB4 (src/shared) */ - -DEFINE_func_80148CCC() /* dedup: shared engine-core @0x80148CCC (src/shared) */ - -DEFINE_func_80148CE4() /* dedup: shared engine-core @0x80148CE4 (src/shared) */ - -DEFINE_func_80148CEC() /* dedup: shared engine-core @0x80148CEC (src/shared) */ - -DEFINE_func_80148CF4() /* dedup: shared engine-core @0x80148CF4 (src/shared) */ - -DEFINE_func_80148D0C() /* dedup: shared engine-core @0x80148D0C (src/shared) */ - -DEFINE_func_80148D24() /* dedup: shared engine-core @0x80148D24 (src/shared) */ - -DEFINE_func_80148D3C() /* dedup: shared engine-core @0x80148D3C (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (68 ins) -extern s32 ratan2(s32 a0, s32 a1); - -s32 func_80148D44(void) { - - extern s32 D_801151D4; - extern u8 D_80126C01; - extern u16 D_80126C02; - extern u16 D_80126C06; - extern s32 D_8018D0A4[]; - register s32 ang __asm__("$16"); - register s32 a __asm__("$4"); - s32 p; - s32 res; - s32 d; - - p = D_801151D4; - a = (ratan2(*(s32 *)(p + 0x44) - *(s32 *)(p + 0x50), - *(s32 *)(p + 0x48) - *(s32 *)(p + 0x3c)) - 0x400) & 0xFFF; - d = (s32)D_80126C01; - __asm__ __volatile__("" : : "r"(a)); - ang = a; - if (d == 0x53) { - goto final; - } - if (d < 0x54) { - if (d == 0x41) { - goto call; - } - return 0x41; - } - if (d != 0x73) { - return 0x73; - } - goto final; -call: - return (s32)(s16)((s16 (*)())(D_8018D0A4[D_80126C02 >> 0xc]))(); -final: - { - u32 e = D_80126C06; - if (((e & 0xff) == 0x80) && ((e >> 8) == (e & 0xff))) { - return -1; - } - __asm__ __volatile__("" : : : "memory"); - res = (ang + ratan2((D_80126C06 & 0xff) - 0x80, 0x80 - (D_80126C06 >> 8))) & 0xFFF; - } - return res; -} - - - -extern s32 ratan2(s32, s32); -/* derived from asm: lui/addu/lw %lo(D_8018D0E4) indexed by (u16>>12)*4, then jalr with no args; - * the result is sign-extended from 16 bits => the table's functions return s16. */ - -s32 func_80148E54(s32 arg0) { - - extern s32 D_801151D4; - extern s16 (*D_8018D0E4[])(); - register s32 tmp __asm__("$4") = (ratan2(*(s32 *)(D_801151D4 + 0x44) - *(s32 *)(D_801151D4 + 0x50), - *(s32 *)(D_801151D4 + 0x48) - *(s32 *)(D_801151D4 + 0x3C)) - 0x400) & 0xFFF; - s32 ang; - __asm__("" : "=r"(tmp) : "0"(tmp)); - ang = tmp; - - switch (*(u8 *)(arg0 + 0xA9)) { - case 0x41: - return D_8018D0E4[*(u16 *)(arg0 + 0xAA) >> 12](); - case 0x53: - case 0x73: - if ((*(u16 *)(arg0 + 0xAE) & 0xFF) == 0x80 && (*(u16 *)(arg0 + 0xAE) >> 8) == 0x80) { - return -1; - } - return (ang + ratan2((*(u16 *)(arg0 + 0xAE) & 0xFF) - 0x80, - 0x80 - (*(u16 *)(arg0 + 0xAE) >> 8))) & 0xFFF; - } -} - - -DEFINE_func_80148F60() /* dedup: shared engine-core @0x80148F60 (src/shared) */ - -DEFINE_func_80148F68() /* dedup: shared engine-core @0x80148F68 (src/shared) */ - -DEFINE_func_80148F74() /* dedup: shared engine-core @0x80148F74 (src/shared) */ - -DEFINE_func_80148F80() /* dedup: shared engine-core @0x80148F80 (src/shared) */ - -DEFINE_func_80148F8C() /* dedup: shared engine-core @0x80148F8C (src/shared) */ - -DEFINE_func_80148F98() /* dedup: shared engine-core @0x80148F98 (src/shared) */ - -DEFINE_func_80148FA0() /* dedup: shared engine-core @0x80148FA0 (src/shared) */ - -DEFINE_func_80148FAC() /* dedup: shared engine-core @0x80148FAC (src/shared) */ - -DEFINE_func_80148FB8() /* dedup: shared engine-core @0x80148FB8 (src/shared) */ - -DEFINE_func_80148FC4() /* dedup: shared engine-core @0x80148FC4 (src/shared) */ - -DEFINE_func_80148FD0() /* dedup: shared engine-core @0x80148FD0 (src/shared) */ - -DEFINE_func_80148FD8() /* dedup: shared engine-core @0x80148FD8 (src/shared) */ - -DEFINE_func_80148FE0() /* dedup: shared engine-core @0x80148FE0 (src/shared) */ - -DEFINE_func_80148FEC() /* dedup: shared engine-core @0x80148FEC (src/shared) */ - -DEFINE_func_80148FF8() /* dedup: shared engine-core @0x80148FF8 (src/shared) */ - -DEFINE_func_80149004() /* dedup: shared engine-core @0x80149004 (src/shared) */ - -DEFINE_func_8014900C() /* dedup: shared engine-core @0x8014900C (src/shared) */ - -DEFINE_func_80149020() /* dedup: shared engine-core @0x80149020 (src/shared) */ - -DEFINE_func_80149034() /* dedup: shared engine-core @0x80149034 (src/shared) */ - -DEFINE_func_80149048() /* dedup: shared engine-core @0x80149048 (src/shared) */ - -DEFINE_func_8014905C() /* dedup: shared engine-core @0x8014905C (src/shared) */ - -DEFINE_func_80149078() /* dedup: shared engine-core @0x80149078 (src/shared) */ - -DEFINE_func_801490E0() /* dedup: shared engine-core @0x801490E0 (src/shared) */ - -DEFINE_func_801490E8() /* dedup: shared engine-core @0x801490E8 (src/shared) */ - -DEFINE_func_801490F0() /* dedup: shared engine-core @0x801490F0 (src/shared) */ - -DEFINE_func_801490F8() /* dedup: shared engine-core @0x801490F8 (src/shared) */ - -DEFINE_func_80149184() /* dedup: shared engine-core @0x80149184 (src/shared) */ - -DEFINE_func_801491C4() /* dedup: shared engine-core @0x801491C4 (src/shared) */ - -DEFINE_func_80149204() /* dedup: shared engine-core @0x80149204 (src/shared) */ - -DEFINE_func_80149210() /* dedup: shared engine-core @0x80149210 (src/shared) */ - -DEFINE_func_80149228() /* dedup: shared engine-core @0x80149228 (src/shared) */ - -DEFINE_func_80149284() /* dedup: shared engine-core @0x80149284 (src/shared) */ - -DEFINE_func_80149290() /* dedup: shared engine-core @0x80149290 (src/shared) */ - -DEFINE_func_80149350() /* dedup: shared engine-core @0x80149350 (src/shared) */ - -DEFINE_func_80149374() /* dedup: shared engine-core @0x80149374 (src/shared) */ - -DEFINE_func_801493D0() /* dedup: shared engine-core @0x801493D0 (src/shared) */ - -DEFINE_func_8014942C() /* dedup: shared engine-core @0x8014942C (src/shared) */ - -DEFINE_func_80149450() /* dedup: shared engine-core @0x80149450 (src/shared) */ - -DEFINE_func_801494CC() /* dedup: shared engine-core @0x801494CC (src/shared) */ - -DEFINE_func_80149544() /* dedup: shared engine-core @0x80149544 (src/shared) */ - -DEFINE_func_80149584() /* dedup: shared engine-core @0x80149584 (src/shared) */ - -DEFINE_func_801495C4() /* dedup: shared engine-core @0x801495C4 (src/shared) */ - - - -// @class: regalloc-order -// @stuck: none — MATCH (34 ins). param_2 pinned to $s0; the two stack out-bufs (in@0x10, -// mid@0x20,out@0x18) would be HOISTED into $s1 across call1 (frame 0x38, +s1 save) — break -// that with a per-use CSE-break barrier (`__asm__("":"=r"(p):"0"(p))`) on &in, mid(call1), -// mid(call2) so each rematerializes `addiu reg,$sp,off` (frame 0x30, only $s0 saved). The -// two independent arg setups (`lw $a0,0x20($a0)` vs `addiu $a2,$sp,0x20`) tie in sched2 — -// force target order with VOLATILE barriers in textual order pin(&in)->mtx-load->mid. - -DEFINE_func_8014964C() /* dedup: shared engine-core @0x8014964C (src/shared) */ - - -DEFINE_func_801496D4() /* dedup: shared engine-core @0x801496D4 (src/shared) */ - -DEFINE_func_80149704() /* dedup: shared engine-core @0x80149704 (src/shared) */ - -DEFINE_func_80149724() /* dedup: shared engine-core @0x80149724 (src/shared) */ - -DEFINE_func_80149744() /* dedup: shared engine-core @0x80149744 (src/shared) */ - -DEFINE_func_80149788() /* dedup: shared engine-core @0x80149788 (src/shared) */ - - -DEFINE_func_801497A8() /* dedup: shared engine-core @0x801497A8 (src/shared) */ - - -DEFINE_func_80149864() /* dedup: shared engine-core @0x80149864 (src/shared) */ - -DEFINE_func_80149884() /* dedup: shared engine-core @0x80149884 (src/shared) */ - -DEFINE_func_801498C0() /* dedup: shared engine-core @0x801498C0 (src/shared) */ - -DEFINE_func_801498E0() /* dedup: shared engine-core @0x801498E0 (src/shared) */ - -DEFINE_func_80149954() /* dedup: shared engine-core @0x80149954 (src/shared) */ - -DEFINE_func_80149A64() /* dedup: shared engine-core @0x80149A64 (src/shared) */ - -DEFINE_func_80149AA8() /* dedup: shared engine-core @0x80149AA8 (src/shared) */ - -DEFINE_func_80149AD4() /* dedup: shared engine-core @0x80149AD4 (src/shared) */ - -DEFINE_func_80149B14() /* dedup: shared engine-core @0x80149B14 (src/shared) */ - -DEFINE_func_80149B54() /* dedup: shared engine-core @0x80149B54 (src/shared) */ - -DEFINE_func_80149BAC() /* dedup: shared engine-core @0x80149BAC (src/shared) */ - -DEFINE_func_80149BEC() /* dedup: shared engine-core @0x80149BEC (src/shared) */ - -DEFINE_func_80149C08() /* dedup: shared engine-core @0x80149C08 (src/shared) */ - -DEFINE_func_80149C94() /* dedup: shared engine-core @0x80149C94 (src/shared) */ - -DEFINE_func_80149CB4() /* dedup: shared engine-core @0x80149CB4 (src/shared) */ - -DEFINE_func_80149CD4() /* dedup: shared engine-core @0x80149CD4 (src/shared) */ - -DEFINE_func_80149D10() /* dedup: shared engine-core @0x80149D10 (src/shared) */ - -DEFINE_func_80149D9C() /* dedup: shared engine-core @0x80149D9C (src/shared) */ - -DEFINE_func_80149DD8() /* dedup: shared engine-core @0x80149DD8 (src/shared) */ - -DEFINE_func_80149E94() /* dedup: shared engine-core @0x80149E94 (src/shared) */ - -DEFINE_func_80149F2C() /* dedup: shared engine-core @0x80149F2C (src/shared) */ - -DEFINE_func_80149FA8() /* dedup: shared engine-core @0x80149FA8 (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (38 ins) -extern s32 D_8018D124[]; -extern u8 D_80078E78[]; -extern s16 currentLocationId; - -s32 func_80149FB0(s32 a0) { - s32 *p = &D_8018D124[0]; - register s32 v __asm__("$3") = *p; - u8 *q = &D_80078E78[0]; - s32 loc; - - if (v != 0) { - loc = currentLocationId; - p = p + 1; - do { - if (loc == v) { - goto ret0; - } - v = *p; - p = p + 1; - } while (v != 0); - } - - if ((*(u32 *)(a0 + 0x44) & 0x400) != 0) { - return 0; - } - if (*(s16 *)(a0 + 0x1C8) != 0) { - return 0; - } - if ((*(u16 *)(a0 + 0xAC) & 0x100) == 0) { - ret0: - return 0; - } - v = q[0x48]; - q[0x48] = v ^ 0x80; - return 1; -} - - - -// @class: struct -// @stuck: none — MATCH (90 ins). Keys: (1) single Loc struct pins the 0x10..0x25 stack -// region (frame 0x40) for the func_8012F14C/func_80135260 out-params; (2) loop is a -// while(1) with the 6 checks &&-chained in the loop CONDITION + the "found" block AFTER -// the loop (fall-through) so the success path is a forward j .L8014A190 — matches the -// target CFG (Ghidra-C while-form); (3) the base &D_801202A0 must be RECOMPUTED inside -// the loop, not hoisted: `s0 = (s32)D_801202A0 + s2;` + the in-place re-tie barrier -// `__asm__ __volatile__("":"=r"(s0):"0"(s0));` (cookbook §21) forces the lui/addiu/addu -// per iteration instead of caching the symbol addr in $s4 (kills 1 ins + $s4); (4) u32 -// counter -> sltiu; (5) bef8-fail uses `goto ret0;` to a ret0 label placed AFTER the -// success block -> gives the bef8 v0=0 its own .L8014A18C block (delay slot = a1 setup); -// (6) setup-store SOURCE order a30,a2e,a2c,a1e,a20,a1c makes the scheduler hold a2c(0xE) -// in $v1 (loaded early, stored last at 0x14) while a2e(0xA) stores immediately at 0x12. - -DEFINE_func_8014A048() /* dedup: shared engine-core @0x8014A048 (src/shared) */ - - -DEFINE_func_8014A1B0() /* dedup: shared engine-core @0x8014A1B0 (src/shared) */ - -DEFINE_func_8014A218() /* dedup: shared engine-core @0x8014A218 (src/shared) */ - -DEFINE_func_8014A238() /* dedup: shared engine-core @0x8014A238 (src/shared) */ - -DEFINE_func_8014A2E4() /* dedup: shared engine-core @0x8014A2E4 (src/shared) */ - -DEFINE_func_8014A380() /* dedup: shared engine-core @0x8014A380 (src/shared) */ - -DEFINE_func_8014A3E0() /* dedup: shared engine-core @0x8014A3E0 (src/shared) */ - -DEFINE_func_8014A454() /* dedup: shared engine-core @0x8014A454 (src/shared) */ - -DEFINE_func_8014A4B4() /* dedup: shared engine-core @0x8014A4B4 (src/shared) */ - -DEFINE_func_8014A4FC() /* dedup: shared engine-core @0x8014A4FC (src/shared) */ - -DEFINE_func_8014A51C() /* dedup: shared engine-core @0x8014A51C (src/shared) */ - -DEFINE_func_8014A59C() /* dedup: shared engine-core @0x8014A59C (src/shared) */ - -DEFINE_func_8014A638() /* dedup: shared engine-core @0x8014A638 (src/shared) */ - -DEFINE_func_8014A674() /* dedup: shared engine-core @0x8014A674 (src/shared) */ - -DEFINE_func_8014A680() /* dedup: shared engine-core @0x8014A680 (src/shared) */ - -DEFINE_func_8014A69C() /* dedup: shared engine-core @0x8014A69C (src/shared) */ - -DEFINE_func_8014A6A8() /* dedup: shared engine-core @0x8014A6A8 (src/shared) */ - -DEFINE_func_8014A6C4() /* dedup: shared engine-core @0x8014A6C4 (src/shared) */ - -DEFINE_func_8014A71C() /* dedup: shared engine-core @0x8014A71C (src/shared) */ - - - - - - - - - -DEFINE_func_8014A738() /* dedup: shared engine-core @0x8014A738 (src/shared) */ - - -DEFINE_func_8014A830() /* dedup: shared engine-core @0x8014A830 (src/shared) */ - -DEFINE_func_8014A850() /* dedup: shared engine-core @0x8014A850 (src/shared) */ - -DEFINE_func_8014AA04() /* dedup: shared engine-core @0x8014AA04 (src/shared) */ - -DEFINE_func_8014AA28() /* dedup: shared engine-core @0x8014AA28 (src/shared) */ - -DEFINE_func_8014AB5C() /* dedup: shared engine-core @0x8014AB5C (src/shared) */ - -DEFINE_func_8014AB7C() /* dedup: shared engine-core @0x8014AB7C (src/shared) */ - -DEFINE_func_8014ABF0() /* dedup: shared engine-core @0x8014ABF0 (src/shared) */ - -DEFINE_func_8014AC10() /* dedup: shared engine-core @0x8014AC10 (src/shared) */ - -DEFINE_func_8014ACC0() /* dedup: shared engine-core @0x8014ACC0 (src/shared) */ - -DEFINE_func_8014ACE8() /* dedup: shared engine-core @0x8014ACE8 (src/shared) */ - -DEFINE_func_8014AD30() /* dedup: shared engine-core @0x8014AD30 (src/shared) */ - -DEFINE_func_8014AD7C() /* dedup: shared engine-core @0x8014AD7C (src/shared) */ - -DEFINE_func_8014ADA8() /* dedup: shared engine-core @0x8014ADA8 (src/shared) */ - -DEFINE_func_8014ADE0() /* dedup: shared engine-core @0x8014ADE0 (src/shared) */ - -DEFINE_func_8014B00C() /* dedup: shared engine-core @0x8014B00C (src/shared) */ - -DEFINE_func_8014B034() /* dedup: shared engine-core @0x8014B034 (src/shared) */ - -DEFINE_func_8014B084() /* dedup: shared engine-core @0x8014B084 (src/shared) */ - -DEFINE_func_8014B12C() /* dedup: shared engine-core @0x8014B12C (src/shared) */ - -DEFINE_func_8014B154() /* dedup: shared engine-core @0x8014B154 (src/shared) */ - -DEFINE_func_8014B160() /* dedup: shared engine-core @0x8014B160 (src/shared) */ - -DEFINE_func_8014B190() /* dedup: shared engine-core @0x8014B190 (src/shared) */ - -DEFINE_func_8014B2A8() /* dedup: shared engine-core @0x8014B2A8 (src/shared) */ - -DEFINE_func_8014B2D0() /* dedup: shared engine-core @0x8014B2D0 (src/shared) */ - -DEFINE_func_8014B2F8() /* dedup: shared engine-core @0x8014B2F8 (src/shared) */ - -DEFINE_func_8014B310() /* dedup: shared engine-core @0x8014B310 (src/shared) */ - -DEFINE_func_8014B33C() /* dedup: shared engine-core @0x8014B33C (src/shared) */ - -DEFINE_func_8014B350() /* dedup: shared engine-core @0x8014B350 (src/shared) */ - -DEFINE_func_8014B4C4() /* dedup: shared engine-core @0x8014B4C4 (src/shared) */ - -DEFINE_func_8014B4D4() /* dedup: shared engine-core @0x8014B4D4 (src/shared) */ - -DEFINE_func_8014B504() /* dedup: shared engine-core @0x8014B504 (src/shared) */ - -DEFINE_func_8014B598() /* dedup: shared engine-core @0x8014B598 (src/shared) */ - -DEFINE_func_8014B5B0() /* dedup: shared engine-core @0x8014B5B0 (src/shared) */ - -DEFINE_func_8014B5B8() /* dedup: shared engine-core @0x8014B5B8 (src/shared) */ - -DEFINE_func_8014B5C4() /* dedup: shared engine-core @0x8014B5C4 (src/shared) */ - -DEFINE_func_8014B5D0() /* dedup: shared engine-core @0x8014B5D0 (src/shared) */ - -DEFINE_func_8014B5D8() /* dedup: shared engine-core @0x8014B5D8 (src/shared) */ - -DEFINE_func_8014B6F0() /* dedup: shared engine-core @0x8014B6F0 (src/shared) */ - -DEFINE_func_8014B768() /* dedup: shared engine-core @0x8014B768 (src/shared) */ - -DEFINE_func_8014B7A4() /* dedup: shared engine-core @0x8014B7A4 (src/shared) */ - -DEFINE_func_8014B944() /* dedup: shared engine-core @0x8014B944 (src/shared) */ - -DEFINE_func_8014BB0C() /* dedup: shared engine-core @0x8014BB0C (src/shared) */ - -DEFINE_func_8014BB24() /* dedup: shared engine-core @0x8014BB24 (src/shared) */ - -DEFINE_func_8014BC0C() /* dedup: shared engine-core @0x8014BC0C (src/shared) */ - -DEFINE_func_8014BC44() /* dedup: shared engine-core @0x8014BC44 (src/shared) */ - -DEFINE_func_8014BC80() /* dedup: shared engine-core @0x8014BC80 (src/shared) */ - -DEFINE_func_8014BCC0() /* dedup: shared engine-core @0x8014BCC0 (src/shared) */ - -DEFINE_func_8014BCEC() /* dedup: shared engine-core @0x8014BCEC (src/shared) */ - -DEFINE_func_8014BD24() /* dedup: shared engine-core @0x8014BD24 (src/shared) */ - -DEFINE_func_8014BD60() /* dedup: shared engine-core @0x8014BD60 (src/shared) */ - -DEFINE_func_8014BD98() /* dedup: shared engine-core @0x8014BD98 (src/shared) */ - -DEFINE_func_8014BDC8() /* dedup: shared engine-core @0x8014BDC8 (src/shared) */ - -DEFINE_func_8014BDE0() /* dedup: shared engine-core @0x8014BDE0 (src/shared) */ - -DEFINE_func_8014BDE8() /* dedup: shared engine-core @0x8014BDE8 (src/shared) */ - -DEFINE_func_8014BE78() /* dedup: shared engine-core @0x8014BE78 (src/shared) */ - -DEFINE_func_8014BE9C() /* dedup: shared engine-core @0x8014BE9C (src/shared) */ - -DEFINE_func_8014BEC0() /* dedup: shared engine-core @0x8014BEC0 (src/shared) */ - -DEFINE_func_8014BEF8() /* dedup: shared engine-core @0x8014BEF8 (src/shared) */ - -DEFINE_func_8014BF18() /* dedup: shared engine-core @0x8014BF18 (src/shared) */ - -DEFINE_func_8014BF48() /* dedup: shared engine-core @0x8014BF48 (src/shared) */ - -DEFINE_func_8014BF6C() /* dedup: shared engine-core @0x8014BF6C (src/shared) */ - -DEFINE_func_8014BF8C() /* dedup: shared engine-core @0x8014BF8C (src/shared) */ - -DEFINE_func_8014BFB0() /* dedup: shared engine-core @0x8014BFB0 (src/shared) */ - -DEFINE_func_8014BFD4() /* dedup: shared engine-core @0x8014BFD4 (src/shared) */ - -DEFINE_func_8014BFF4() /* dedup: shared engine-core @0x8014BFF4 (src/shared) */ - -DEFINE_func_8014C010() /* dedup: shared engine-core @0x8014C010 (src/shared) */ - -DEFINE_func_8014C050() /* dedup: shared engine-core @0x8014C050 (src/shared) */ - -DEFINE_func_8014C088() /* dedup: shared engine-core @0x8014C088 (src/shared) */ - -DEFINE_func_8014C0C8() /* dedup: shared engine-core @0x8014C0C8 (src/shared) */ - -DEFINE_func_8014C118() /* dedup: shared engine-core @0x8014C118 (src/shared) */ - -DEFINE_func_8014C168() /* dedup: shared engine-core @0x8014C168 (src/shared) */ - - - -DEFINE_func_8014C1A0() /* dedup: shared engine-core @0x8014C1A0 (src/shared) */ - - -DEFINE_func_8014C1C8() /* dedup: shared engine-core @0x8014C1C8 (src/shared) */ - -DEFINE_func_8014C278() /* dedup: shared engine-core @0x8014C278 (src/shared) */ - -DEFINE_func_8014C2B0() /* dedup: shared engine-core @0x8014C2B0 (src/shared) */ - -DEFINE_func_8014C308() /* dedup: shared engine-core @0x8014C308 (src/shared) */ - -DEFINE_func_8014C3A4() /* dedup: shared engine-core @0x8014C3A4 (src/shared) */ - -DEFINE_func_8014C3D0() /* dedup: shared engine-core @0x8014C3D0 (src/shared) */ - -DEFINE_func_8014C43C() /* dedup: shared engine-core @0x8014C43C (src/shared) */ - - -/* §37/§73/§124 asm-label alias: the fleet canon declares this `extern void` (engine_core.h, inside 8 - * DEFINE_func_* macros); the byte-true body must return s32. Aliasing the C name sidesteps the - * RETURN-axis conflict with no header edit. This line MUST travel with the body. */ -s32 aF8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4) __asm__("func_8014C4AC"); - -DEFINE_func_8014C4AC() /* dedup: shared engine-core @0x8014C4AC (src/shared) */ - - - -DEFINE_func_8014C568() /* dedup: shared engine-core @0x8014C568 (src/shared) */ - - -DEFINE_func_8014C59C() /* dedup: shared engine-core @0x8014C59C (src/shared) */ - - -DEFINE_func_8014C5D0() /* dedup: shared engine-core @0x8014C5D0 (src/shared) */ - - -DEFINE_func_8014C5FC() /* dedup: shared engine-core @0x8014C5FC (src/shared) */ - -DEFINE_func_8014C6AC() /* dedup: shared engine-core @0x8014C6AC (src/shared) */ - -DEFINE_func_8014C6C0() /* dedup: shared engine-core @0x8014C6C0 (src/shared) */ - -DEFINE_func_8014C6D0() /* dedup: shared engine-core @0x8014C6D0 (src/shared) */ - -DEFINE_func_8014C6E0() /* dedup: shared engine-core @0x8014C6E0 (src/shared) */ - - - -// @class: schedule -// @stuck: none — MATCH (match_one 91/91) -// -// Levers used (all byte-gated on ov_SC07_006): -// 1. §struct 8-byte alignment-1 struct copy `*(M8_8014C6F4*)(a+0x164) = *(M8_8014C6F4*)(p+0x10)` -// -> the lwl/lwr,lwl/lwr,swl/swr,swl/swr block (engine_types.h M8_xxx convention). -// 2. §17 base-pointer cache: `u8 *p = D_80078E78;` (NOT a direct D_80078E78[0x49]) so gcc pins -// the base into callee-saved $s1 and hoists the la into the prologue (live across the jal). -// 3. §17 register pins: the search result `e` MUST be $v0 and the limit `lim` $v1, else -// local-alloc swaps the loop IV/limit pair ($v1<->$a0) and coalesces `e` into the IV. -// 4. DELAY-SLOT lever (new): writing the compare constant as its own pre-loop statement -// (`want = 0x22;`) instead of the literal `0x22` inside the loop test. With the literal, -// loop.c hoists the `li $a1,0x22` into the loop PREHEADER (after the duplicated entry test), -// so reorg.c's guard branch has nothing local to take and instead COPIES the branch-target -// insn (`addu $v0,$zero,$zero`) into its delay slot and redirects past it — a +1 shift that -// also lets the loop-back branch steal the same insn (nop -> move). Materialising the -// constant in the block BEFORE the entry test makes fill_simple_delay_slots take it from -// the preceding insns, reproducing `beqz $v0,.L8014C7F4 / addiu $a1,$zero,0x22` and leaving -// the loop-back delay slot a nop. `want` needs no pin — gcc lands it in $a1 on its own. - - -DEFINE_func_8014C6F4() /* dedup: shared engine-core @0x8014C6F4 (src/shared) */ - - -DEFINE_func_8014C860() /* dedup: shared engine-core @0x8014C860 (src/shared) */ - -DEFINE_func_8014C88C() /* dedup: shared engine-core @0x8014C88C (src/shared) */ - - -DEFINE_func_8014C8C8() /* dedup: shared engine-core @0x8014C8C8 (src/shared) */ - - -DEFINE_func_8014C8F0() /* dedup: shared engine-core @0x8014C8F0 (src/shared) */ - -DEFINE_func_8014C918() /* dedup: shared engine-core @0x8014C918 (src/shared) */ - -DEFINE_func_8014C968() /* dedup: shared engine-core @0x8014C968 (src/shared) */ - -DEFINE_func_8014C978() /* dedup: shared engine-core @0x8014C978 (src/shared) */ - -DEFINE_func_8014C98C() /* dedup: shared engine-core @0x8014C98C (src/shared) */ - -DEFINE_func_8014C99C() /* dedup: shared engine-core @0x8014C99C (src/shared) */ - -DEFINE_func_8014CA00() /* dedup: shared engine-core @0x8014CA00 (src/shared) */ - -DEFINE_func_8014CA14() /* dedup: shared engine-core @0x8014CA14 (src/shared) */ - -DEFINE_func_8014CA70() /* dedup: shared engine-core @0x8014CA70 (src/shared) */ - -DEFINE_func_8014CA88() /* dedup: shared engine-core @0x8014CA88 (src/shared) */ - -DEFINE_func_8014CAE4() /* dedup: shared engine-core @0x8014CAE4 (src/shared) */ - -DEFINE_func_8014CAFC() /* dedup: shared engine-core @0x8014CAFC (src/shared) */ - -DEFINE_func_8014CB0C() /* dedup: shared engine-core @0x8014CB0C (src/shared) */ - -DEFINE_func_8014CB1C() /* dedup: shared engine-core @0x8014CB1C (src/shared) */ - -DEFINE_func_8014CB2C() /* dedup: shared engine-core @0x8014CB2C (src/shared) */ - -DEFINE_func_8014CB58() /* dedup: shared engine-core @0x8014CB58 (src/shared) */ - -DEFINE_func_8014CB68() /* dedup: shared engine-core @0x8014CB68 (src/shared) */ - -DEFINE_func_8014CB7C() /* dedup: shared engine-core @0x8014CB7C (src/shared) */ - -DEFINE_func_8014CB8C() /* dedup: shared engine-core @0x8014CB8C (src/shared) */ - -DEFINE_func_8014CB9C() /* dedup: shared engine-core @0x8014CB9C (src/shared) */ - -DEFINE_func_8014CBD8() /* dedup: shared engine-core @0x8014CBD8 (src/shared) */ - -DEFINE_func_8014CBE8() /* dedup: shared engine-core @0x8014CBE8 (src/shared) */ - -DEFINE_func_8014CBF8() /* dedup: shared engine-core @0x8014CBF8 (src/shared) */ - -DEFINE_func_8014CC28() /* dedup: shared engine-core @0x8014CC28 (src/shared) */ - - -extern void func_8014CD0C(u8 *a0); - -void func_8014CCB4(void) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014CD0C\n" - "lui $at, %%hi(D_801E9698)\n" - "sw $v0, %%lo(D_801E9698)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E9698)\n" - "lw $v0, %%lo(D_801E9698)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014CD0C() /* dedup: shared engine-core @0x8014CD0C (src/shared) */ - -DEFINE_func_8014CD80() /* dedup: shared engine-core @0x8014CD80 (src/shared) */ - -DEFINE_func_8014CF04() /* dedup: shared engine-core @0x8014CF04 (src/shared) */ - - - -extern void func_8014D0A4(s32 a0); - -void func_8014D04C(void) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014D0A4\n" - "lui $at, %%hi(D_801E9698)\n" - "sw $v0, %%lo(D_801E9698)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E9698)\n" - "lw $v0, %%lo(D_801E9698)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014D0A4() /* dedup: shared engine-core @0x8014D0A4 (src/shared) */ - - -DEFINE_func_8014D12C() /* dedup: shared engine-core @0x8014D12C (src/shared) */ - - - -DEFINE_func_8014D2A0() /* dedup: shared engine-core @0x8014D2A0 (src/shared) */ - - - -extern void func_8014D438(s32 a0); - -void func_8014D3E0(s32 _arg0) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014D438\n" - "lui $at, %%hi(D_801E9698)\n" - "sw $v0, %%lo(D_801E9698)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E9698)\n" - "lw $v0, %%lo(D_801E9698)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014D438() /* dedup: shared engine-core @0x8014D438 (src/shared) */ - -DEFINE_func_8014D4C0() /* dedup: shared engine-core @0x8014D4C0 (src/shared) */ - - -DEFINE_func_8014D610() /* dedup: shared engine-core @0x8014D610 (src/shared) */ - - - -extern void func_8014D790(s32 a0); - -void func_8014D738(void) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014D790\n" - "lui $at, %%hi(D_801E9698)\n" - "sw $v0, %%lo(D_801E9698)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E9698)\n" - "lw $v0, %%lo(D_801E9698)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014D790() /* dedup: shared engine-core @0x8014D790 (src/shared) */ - -extern void func_8012AAAC(void *arg0); - -// @class: schedule -// @stuck: none — MATCH (304/304), symcheck SYMS-OK 12/12, and the whole-TU cc1 stage now compiles CLEAN -// -// ══════════════════════════════════════════════════════════════════════════════ -// SESSION-22 RE-DERIVATION + THE ROOT-CAUSE FIX FOR THE "ASSEMBLER-STAGE" FAILURE -// ══════════════════════════════════════════════════════════════════════════════ -// The SESSION-21 draft did reach match_one MATCH (re-verified this session, 304/304) -// and symcheck SYMS-OK — but the whole-binary build died with an opaque `Error 33` -// that was logged as "an ASSEMBLER-stage failure I did not finish diagnosing". -// -// IT IS NOT AN ASSEMBLER FAILURE. Stage-by-stage isolation of the real pipeline -// (cpp | cc1 | maspsx | as) over a scratch copy of src/ov_SC01_077/ov_SC01_077_after.c -// with this function spliced in place of its INCLUDE_ASM gives: -// cpp rc=0 -// cc1 rc=33 <-- ".../tu.c:1901: conflicting types for `Ent'" -// "src/shared/engine_types.h:434: previous declaration of `Ent'" -// maspsx rc=0 -// as rc=0 (only benign "used $at without .set noat" warnings) -// `33` is CC1's exit code, surfaced by the recipe's `set -o pipefail` (Makefile:560). -// Because `as` is the LAST stage in that pipe, make attributes the failure to the -// assembler — the same misread that made func_8012AAAC's "opaque Error 33" look -// assembler-shaped until it was isolated stage by stage. -// -// ROOT CAUSE: the draft declared `typedef struct Ent { ... } Ent;` at FILE scope. -// `Ent` is already a shared engine type (src/shared/engine_types.h:434, -// typedef struct { u16 guard; u16 pad; u16 field; u8 rest[14]; } Ent; -// a 20-byte struct), pulled into every overlay TU through -// src/ov_SC01_077/../shared/engine_core.h. gcc-2.7.2 rejects the redefinition -// outright (an ERROR, not the "type mismatch with previous external decl" -// WARNING that the rest of this TU is full of), so cc1 aborts. -// -// THE FIX, and why this shape: all three helper types are now declared at BLOCK -// scope inside func_8014D820 itself. That is strictly better than renaming to -// `Ent_8014D820` at file scope, because this function is an h_seq family EXEMPLAR -// with 138 members: a file-scope type name has to stay unique against 138 distinct -// overlay TUs *and* against whatever engine_types.h grows next, while a block-scope -// typedef can never collide with anything, in any TU, ever. It also matches the -// fleet convention — src/shared/engine_core.h contains ZERO `typedef struct` -// (all 0 of them); every DEFINE_ macro body uses engine_types.h types or local ones. -// Typedefs emit no code and create no allocno, so the move is byte-neutral: -// re-verified MATCH (304 ins) after the change, and the local DECLARATION ORDER -// below is untouched (§76 — declaration order is the dominant regalloc lever here). -// -// ══════════════════════════════════════════════════════════════════════════════ -// THE BODY (SESSION-21 derivation, each lever re-verified this session) -// ══════════════════════════════════════════════════════════════════════════════ -// func_8014D820 (304 ins, ov_SC01_077, h_seq family exemplar, 138 members). -// The whole residual off the SESSION-18 close=9 seed was a sched1 PERMUTATION -// inside ONE basic block (idx 79..101, the pos/desc set-up between the `slti 0x400` -// guard and the `currentLocationId` test): identical multiset of insns, identical -// register assignment, wrong positions. §66d-5 exactly — classed WIDTH [structural] -// at every waypoint and not structural at all. -// -// The lever (reusable): that block is 12 statements over a small dependency poset -// (load x0/y0/z0 -> add -> store pos.* / desc.*), so source ORDER is the only -// control and the space of linear extensions is enumerable. A dependency-respecting -// sweep found MATCH at -// x0; pos.x; y0; pos.y; z0; tx; pos.z; tz; desc.x; desc.z; ty; desc.y -// i.e. all three loads and both pos stores first, then the two adds, then the desc -// stores, with the y accumulator (`ty`) computed LAST. No pin, no barrier, no -// permuter run. Eleven hand attempts on this window (SESSION-18) were inert or -// worse — hand-reading a 12-statement schedule permutation is the wrong tool; -// brute-forcing the linear extensions is the right one. -// -// Load-bearing levers (each re-verified by removal this session): -// * the `a0v` launder (`__asm__("" : "=r"(a0v) : "0"(a0))`) — drop => 9 mismatched -// * the `a2` $7 pin — drop => 5 -// * the `a2x -> a2` launder (vs a plain copy) — drop => 1 -// * `new_var3` (the s16 stash of dx feeding ratan2) — drop => 2 -// * `new_var2` (the desc.y + 0x10 accumulator) — drop => 2 -// The `a2` pin's live range ENDS before the first `jal` (last use is -// `desc.z = a2[2] - a1[2]`), so it is §42e-CORRECTION / §74-safe to propagate. -// -// SYMBOLS (§58 rule 1/2): all five data externs use the canonical splat spelling and -// the engine_core.h type — `u8 D_801202A0[]`, `u8 D_801152A8[]`, `s16 D_801152AC`, -// `u8 D_8018D1BC[]`, `s16 currentLocationId`. symcheck: SYMS-OK, 12 symbols agree. -// -// The one deliberate divergence (§27 step 2 / rule 3): func_80135A4C's canonical -// extern is 4-arg but this call site sets only $a0-$a2, so the canonical decl is -// kept verbatim (it is also the TU's own spelling at ov_SC01_077_after.c:1651/1709) -// and the ARITY is cast at the call site. -// -// BANKING NOTE for the orchestrator (carried forward from SESSION-18, still true): -// 1 `self_decl_hdr` axis remains — DEFINE_func_8014D790's body declares -// func_8014D820, so that macro in engine_core.h needs the §85 return-axis widen -// (already applied). With the `Ent` collision gone the TU's cc1 stage is clean. - - - - - - - - - - -extern s16 currentLocationId; -extern s32 ratan2(s32 a0, s32 a1); -extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); -extern s32 func_80012A60(s32 a0, s32 a1); -extern void func_800139C8(s32 a0, void *a1, void *a2); -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014DCE0(s32 a0, s32 a1, s32 a2); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -s32 func_8014D820(s32 a0, u16 *a1, u16 *a2x) -{ - - extern u8 D_801202A0[]; - extern u8 D_8018D1BC[]; - extern u8 D_801152A8[]; - extern s16 D_801152AC; - /* BLOCK-SCOPE types — see the header note. `Ent` at file scope collides with - src/shared/engine_types.h:434 and kills the TU's cc1 stage (exit 33). */ - typedef struct - { - u16 x; - u16 y; - u16 z; - u16 w; - } V4; - typedef struct EntD820 - { - u16 f0; - u16 f2; - u16 f4; - u16 x; - u16 f8; - u16 y; - u16 fC; - u16 z; - u8 p10[0x10]; - s32 f20; - u8 p24[0x34]; - s32 f58; - u16 f5C; - u16 f5E; - u8 p60[0x10C - 0x60]; - } Ent; - int new_var2; - s16 new_var3; -register u16 *a2 __asm__("$7"); - V4 out[3]; - V4 pos; - Desc desc; - Ent *ent; - Ent *p; - s32 dx; - s32 dz; - s32 ex; - s32 ez; - s32 r1; - s32 r2; - s32 r3; - s32 ang; - s32 x0; - s32 y0; - s32 z0; - s32 tx; - s32 tz; - s32 ty; - s32 r; - s32 t; - s32 u; - s32 a0v; -__asm__ __volatile__("" : "=r"(a2) : "0"(a2x)); - t = a2[0]; - u = a1[0]; - dx = t - u; -__asm__ __volatile__("" : "=r"(a0v) : "0"(a0)); - new_var3 = (s16) dx; - t = a2[2]; - u = a1[2]; - dz = t - u; - if (((s16) (dx | dz)) == 0) - { - goto fail; - } - desc.x = dx; - desc.y = a2[1] - a1[1]; - desc.z = a2[2] - a1[2]; - ent = *((Ent **) (a0v + 0x170)); - if (ent->f0 == 0) - { - goto fail; - } - if ((ent->f5C & 0x1000) == 0) - { - goto fail; - } - if (ent->f58 == 0) - { - goto fail; - } - if (((s32 (*)(s32, s32, s32)) func_80135A4C)(ent->f20, ent->f58, (s32) a1) == 0) - { - goto fail; - } - ex = ent->x - (*((u16 *) (a0v + 6))); - ez = ent->z - (*((u16 *) (a0v + 0xE))); - r1 = (s16) ratan2((s16) dz, new_var3); - r2 = (s16) ratan2((s16) ez, (s16) ex); - r3 = (s16) func_80012A60(r1, r2); - if (0x400 <= r3) - { - goto fail; - } - desc.f20 = 0; - desc.f1C = 0; - desc.f18 = 0; - x0 = ent->x; - pos.x = x0; - y0 = ent->y; - pos.y = y0; - z0 = ent->z; - tx = x0 + desc.x; - pos.z = z0; - tz = z0 + desc.z; - desc.x = tx; - desc.z = tz; - ty = (y0 + desc.y) + 8; - desc.y = ty; - if (currentLocationId != 0x3008) - { - for (p = (Ent *) D_801202A0; p < (Ent *) (D_801202A0 + 0x6480); p++) - { - if (p == ent) - { - continue; - } - if (p->f0 == 0) - { - continue; - } - if (p->f5C == 0) - { - continue; - } - if (p->f58 == 0) - { - continue; - } - func_80135888(p->f20, p->f58, (s32) (&pos), (s32) (&desc)); - } - - } - else - { - ang = ratan2(((s16) x0) - ((s16) tx), ((s16) z0) - ((s16) tz)) & 0xFFF; - func_800139C8(ang, D_8018D1BC, &out[0]); - func_800139C8((s16) (ang - 0x155), D_8018D1BC, &out[1]); - func_800139C8((s16) (ang + 0x155), D_8018D1BC, &out[2]); - out[0].x += pos.x; - out[0].y = pos.y; - out[0].z += pos.z; - out[1].x += pos.x; - out[1].y = pos.y; - out[1].z += pos.z; - out[2].x += pos.x; - out[2].y = pos.y; - out[2].z += pos.z; - for (p = (Ent *) D_801202A0; p < (Ent *) (D_801202A0 + 0x6480); p++) - { - if (p == ent) - { - continue; - } - if (p->f0 == 0) - { - continue; - } - if (p->f5C == 0) - { - continue; - } - if (p->f58 == 0) - { - continue; - } - if (func_8014DCE0((s32) p, (s32) (&pos), (s32) (&out[0])) != 0) - { - __builtin_memcpy((void *) ((s32) (&desc)), (void *) ((s32) (&pos)), 8); - } - } - - } - r = func_80133784(0, &pos, (s32) (&desc)); - if ((r == 0) || ((r == 0x2000) && (((*(u16 *) D_801152A8) | ((u16) D_801152AC)) == 0))) - { - ent->x = desc.x - desc.f18; - ent->y = desc.y; - ent->z = desc.z - desc.f20; - desc.x -= pos.x; - desc.y -= pos.y; - desc.z -= pos.z; - *((u16 *) (a0v + 6)) = a1[0] + desc.x; - new_var2 = desc.y; - new_var2 = new_var2 + 0x10; - *((u16 *) (a0v + 0xA)) = a1[1] + new_var2; - *((u16 *) (a0v + 0xE)) = a1[2] + desc.z; - } - else - { - *((u16 *) (a0v + 6)) = a1[0]; - *((u16 *) (a0v + 0xA)) = a1[1] + 0x10; - *((u16 *) (a0v + 0xE)) = a1[2]; - } - return 1; - fail: - *((s32 *) (a0v + 0x170)) = 0; - - return 0; -} - - -DEFINE_func_8014DCE0() /* dedup: shared engine-core @0x8014DCE0 (src/shared) */ - - -DEFINE_func_8014DD8C() /* dedup: shared engine-core @0x8014DD8C (src/shared) */ - - - -extern void func_8014DF94(s32 arg0); - -void func_8014DF3C(void) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014DF94\n" - "lui $at, %%hi(D_801E9698)\n" - "sw $v0, %%lo(D_801E9698)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E9698)\n" - "lw $v0, %%lo(D_801E9698)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014DF94() /* dedup: shared engine-core @0x8014DF94 (src/shared) */ - -DEFINE_func_8014E048() /* dedup: shared engine-core @0x8014E048 (src/shared) */ - -DEFINE_func_8014E284() /* dedup: shared engine-core @0x8014E284 (src/shared) */ - - -extern void func_8014E48C(s32 a0); - -void func_8014E434(void) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014E48C\n" - "lui $at, %%hi(D_801E9698)\n" - "sw $v0, %%lo(D_801E9698)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E9698)\n" - "lw $v0, %%lo(D_801E9698)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014E48C() /* dedup: shared engine-core @0x8014E48C (src/shared) */ - -DEFINE_func_8014E514() /* dedup: shared engine-core @0x8014E514 (src/shared) */ - -// — the guard makes $v1, CSE turns the in-body `e = p + 0x6480` into a copy of it, and -// regalloc does not coalesce (gcc-2.7.2 has no coalescing, regalloc.md K8). The back edge -// then uses the register ($s5), NOT a rematerialised %hi/%lo(D_80126720) as in -// func_8014CF04 — so do NOT reuse that sibling's absolute-bound half here. -// -// (2) TWO INDUCTION VARIABLES, secondary base +0xE. `q = p + 0xE` carries every access except -// the two that use the entry pointer itself (`*(u16 *)p` and `*(u8 **)(a0+0x17C) = p`): -// offsets -0x8 / 0x0 / 0x12 / 0x4A / 0x4E off q == 0x6 / 0xE / 0x20 / 0x58 / 0x5C off p. -// A single-pointer spelling is NOT equivalent: gcc emits ONE base and the function comes -// out 56 ins (verified). The negative displacement is the tell that the second pointer is -// in the source, not a compiler-made giv. -// -// (3) REGISTER PINS ($16/$17) — the one non-obvious lever, and it is a genuine density -// knife-edge (regalloc.md K2 / §RC-15). Unpinned, the .lreg reads -// p: 9 refs / 24 insns -> floor_log2(9)*9/24 = 1.125 -// q: 8 refs / 22 insns -> floor_log2(8)*8/22 = 1.091 -// so p wins $s0 by ~3% and the whole function comes out with p/q SWAPPED (17 mismatches, -// every one of them a bare $s0<->$s1 rename). The target wants q in $s0. Decl-order swap -// does nothing (ties are not what decides it — p genuinely out-scores q). Rather than -// hunt a +1-ref anchor (§RC-11 `#APP` would sit next to three delay slots that maspsx -// fills: the `beqz $a1` slot, the `jal` slot and the `bnez` slot), pin both: -// register u8 *p __asm__("$17"); register u8 *q __asm__("$16"); -// Both are callee-saved, so the live-across-`jal` range is §42e/§74-safe by construction -// (the ov_SC03_099 func_8014D820 caveat only applies to caller-saved pins). Everything -// else falls out naturally: a0->$s2, a1->$s3, a2->$s4, e->$s5. -// -// (4) `t = *(s32 *)(q + 0x4A)` is loaded ONCE and reused as arg1 of func_80135888 — that is -// why `lw $a1, 0x4A($s0)` sits at the zero-test rather than at the call. -// -// The func_80135888 decl below is byte-compatible with the one this TU already carries at -// ov_SC01_077_after.c:2303, so it is not a second conflict axis. - -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); - -/* §37/§124 asm-label alias: the fleet canon declares this `extern void` (engine_core.h:13392, - * inside DEFINE_func_8014E48C()); the byte-true body must return s32. Aliasing the C name - * sidesteps the RETURN-axis conflict with no header edit. This line MUST travel with the body. */ -s32 aF8014E5B4(s32 a0, void *a1, void *a2) __asm__("func_8014E5B4"); - -DEFINE_func_8014E5B4() /* dedup: shared engine-core @0x8014E5B4 (src/shared) */ - - - -extern void func_8014E6F8(struct SubE6F8 *a0); - -void func_8014E6A0(void) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014E6F8\n" - "lui $at, %%hi(D_801E9698)\n" - "sw $v0, %%lo(D_801E9698)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E9698)\n" - "lw $v0, %%lo(D_801E9698)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014E6F8() /* dedup: shared engine-core @0x8014E6F8 (src/shared) */ - -DEFINE_func_8014E790() /* dedup: shared engine-core @0x8014E790 (src/shared) */ - -DEFINE_func_8014E83C() /* dedup: shared engine-core @0x8014E83C (src/shared) */ - - -void func_8014E934(s32 _arg0) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014E98C\n" - "lui $at, %%hi(D_801E9698)\n" - "sw $v0, %%lo(D_801E9698)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E9698)\n" - "lw $v0, %%lo(D_801E9698)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014E98C() /* dedup: shared engine-core @0x8014E98C (src/shared) */ - -DEFINE_func_8014EA4C() /* dedup: shared engine-core @0x8014EA4C (src/shared) */ - - - -// @class: other -// @stuck: none — MATCH (handwritten full inline-asm scratchpad-stack-switch wrapper; no trailing .set reorder — that adds a stray epilogue nop) -/* - * HANDWRITTEN scratchpad-stack-switch wrapper: temporarily repoints $sp into the - * D-cache scratchpad stack held at *(0x1F8003FC), calls func_8014ED80, stashes the - * return value through D_801E9698, restores $sp and returns it. - * Manipulating $sp is not expressible in C; full inline asm (manages its own frame). - */ -extern s32 func_8014ED80(struct SubED80 *a0); -extern int D_801E9698; - -void func_8014ED28(s32 _arg0) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014ED80\n" - "lui $at, %%hi(D_801E9698)\n" - "sw $v0, %%lo(D_801E9698)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E9698)\n" - "lw $v0, %%lo(D_801E9698)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014ED80() /* dedup: shared engine-core @0x8014ED80 (src/shared) */ - -DEFINE_func_8014EE14() /* dedup: shared engine-core @0x8014EE14 (src/shared) */ - - -extern s32 func_8014F24C(struct SubF24C *a0); - -void func_8014F1F4(void) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014F24C\n" - "lui $at, %%hi(D_801E9698)\n" - "sw $v0, %%lo(D_801E9698)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E9698)\n" - "lw $v0, %%lo(D_801E9698)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014F24C() /* dedup: shared engine-core @0x8014F24C (src/shared) */ - -DEFINE_func_8014F2E0() /* dedup: shared engine-core @0x8014F2E0 (src/shared) */ - -DEFINE_func_8014F3E8() /* dedup: shared engine-core @0x8014f3e8 (src/shared) */ - - - -extern s32 func_8014F4C0(); - -s32 func_8014F468(void) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014F4C0\n" - "lui $at, %%hi(D_801E969C)\n" - "sw $v0, %%lo(D_801E969C)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E969C)\n" - "lw $v0, %%lo(D_801E969C)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014F4C0() /* dedup: shared engine-core @0x8014F4C0 (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH (22 ins, relocation-masked). Handwritten scratchpad-stack-switch -// wrapper, full inline asm like DEFINE_func_80155FF8. NOTE: do NOT write an explicit -// "nop" after "jal func_8014F74C" — maspsx --aspsx-version=2.56 auto-fills the jal -// delay slot with a nop; an explicit one yields a double-nop (+1 ins). %hi/%lo must be -// escaped as %%hi/%%lo inside __asm__ (bare % is read as an operand placeholder). - -/* HANDWRITTEN scratchpad-stack-switch wrapper (same idiom as func_80155FF8 / - * func_80128564): temporarily repoints $sp into the D-cache scratchpad stack held - * at *(0x1F8003FC), calls func_8014F74C, stores its $v0 result to D_801E969C, then - * restores $sp and returns the stored value. Manipulating $sp is not expressible in - * C; full inline asm (manages its own frame). */ - -extern int func_8014F74C(); - -int func_8014F6F4(void) { - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014F74C\n" - "lui $at, %%hi(D_801E969C)\n" - "sw $v0, %%lo(D_801E969C)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E969C)\n" - "lw $v0, %%lo(D_801E969C)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014F74C() /* dedup: shared engine-core @0x8014F74C (src/shared) */ - - - -// @class: other -// @stuck: none — MATCH (full inline-asm $sp-switch trampoline w/ 0x40000 guard, jal func_8014FA70, stash D_801E969C; maspsx auto-fills jal delay slot) - -extern s32 func_8014FA70(s32 a0); -extern s32 D_801E969C; - -void func_8014FA04(s32 a0) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "sw $ra, 16($sp)\n" - "lw $v0, 68($a0)\n" - "lui $v1, 0x4\n" - "and $v0, $v0, $v1\n" - "bnez $v0, 1f\n" - "addu $v0, $zero, $zero\n" - "lui $a1, 0x1f80\n" - "ori $a1, $a1, 0x03fc\n" - "addu $t0, $a1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014FA70\n" - "lui $at, %%hi(D_801E969C)\n" - "sw $v0, %%lo(D_801E969C)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E969C)\n" - "lw $v0, %%lo(D_801E969C)($v0)\n" - "1:\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014FA70() /* dedup: shared engine-core @0x8014FA70 (src/shared) */ - -// @class: other -// @stuck: none — MATCH (22 ins, relocation-masked). Handwritten scratchpad-stack-switch -// trampoline: byte-identical to the matched in-TU sibling func_8014F6F4 (line ~2005), -// differing ONLY in the callee (func_8014FC18 vs func_8014F74C). Full inline asm manages -// its own frame; both the callee and the D_801E969C global live inside the asm, so NO C -// externs are declared — this sidesteps the canonical-sig-layer reconcile that CC1_FAILed -// the register-asm draft (func_8014FC18/D_801E969C are declared elsewhere in the TU). -// maspsx --aspsx-version=2.56 auto-fills the jal delay slot with a nop, so do NOT write an -// explicit nop after `jal` (double-nop = +1 ins); %hi/%lo escaped as %% inside __asm__. -// gcc emits only the `jr $ra; nop` epilogue (leaf, no locals it can see) → exactly 22 ins. -s32 func_8014FBC0() { - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014FC18\n" - "lui $at, %%hi(D_801E969C)\n" - "sw $v0, %%lo(D_801E969C)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E969C)\n" - "lw $v0, %%lo(D_801E969C)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - - -DEFINE_func_8014FC18() /* dedup: shared engine-core @0x8014FC18 (src/shared) */ - - -extern int func_8014FD54(int param_1); - -void func_8014FCFC(void) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014FD54\n" - "lui $at, %%hi(D_801E9698)\n" - "sw $v0, %%lo(D_801E9698)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E9698)\n" - "lw $v0, %%lo(D_801E9698)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014FD54() /* dedup: shared engine-core @0x8014FD54 (src/shared) */ - -DEFINE_func_8014FDF4() /* dedup: shared engine-core @0x8014FDF4 (src/shared) */ - -DEFINE_func_8014FE60() /* dedup: shared engine-core @0x8014FE60 (src/shared) */ - - - - -DEFINE_func_8014FFDC() /* dedup: shared engine-core @0x8014FFDC (src/shared) */ - - -DEFINE_func_80150150() /* dedup: shared engine-core @0x80150150 (src/shared) */ - -DEFINE_func_80150170() /* dedup: shared engine-core @0x80150170 (src/shared) */ - - -DEFINE_func_801502EC() /* dedup: shared engine-core @0x801502EC (src/shared) */ - - -DEFINE_func_80150460() /* dedup: shared engine-core @0x80150460 (src/shared) */ - - -extern void func_801504D8(u16 *a0); - -s32 func_80150480(s32 _arg0) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_801504D8\n" - "lui $at, %%hi(D_801E9698)\n" - "sw $v0, %%lo(D_801E9698)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E9698)\n" - "lw $v0, %%lo(D_801E9698)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_801504D8() /* dedup: shared engine-core @0x801504D8 (src/shared) */ - -DEFINE_func_80150528() /* dedup: shared engine-core @0x80150528 (src/shared) */ - -DEFINE_func_801505FC() /* dedup: shared engine-core @0x801505FC (src/shared) */ - - - -s32 func_801506A4(s32 arg0, s32 arg1) { - extern void func_80150820(int, unsigned short); - extern void func_8015086C(int); - extern unsigned short D_8018D1CC[]; - extern unsigned short D_8018D1D4[]; - extern unsigned short D_8018D1DC[]; - - int mode; - - mode = ((struct Ent_801506A4 *)arg1)->unk0; - ((struct Ent_801506A4 *)arg1)->unk5C |= 1; - switch (mode) { - case 0x31: - ((void(*)(int))func_80147324)(0x452); - ((void(*)(int, unsigned))func_8014ADA8)(((int)arg0), D_8018D1CC[((struct Ent_801506A4 *)arg1)->unk70]); - ((void(*)(int, int, unsigned))func_8014ACE8)(((int)arg0), 3, D_8018D1CC[((struct Ent_801506A4 *)arg1)->unk70]); - break; - case 0x32: - if ((*(unsigned short*)&D_80078EB4) != 0) { - ((void(*)(int))func_80147324)(0x452); - ((void(*)(int, unsigned, int))func_8014BB24)(((int)arg0), D_8018D1D4[((struct Ent_801506A4 *)arg1)->unk70], 1); - ((void(*)(int, int, unsigned))func_8014ACE8)(((int)arg0), 2, D_8018D1D4[((struct Ent_801506A4 *)arg1)->unk70]); - } - break; - case 0x33: - ((void(*)(int))func_80147324)(0x452); - func_80150820(((int)arg0), D_8018D1DC[((struct Ent_801506A4 *)arg1)->unk70]); - break; - case 0xC5: - case 0x27B: - ((void(*)(int))func_80147324)(0x452); - func_8015086C(((int)arg0)); - break; - } -} - - - -DEFINE_func_80150820() /* dedup: shared engine-core @0x80150820 (src/shared) */ - -DEFINE_func_8015086C() /* dedup: shared engine-core @0x8015086C (src/shared) */ - -DEFINE_func_801508B4() /* dedup: shared engine-core @0x801508B4 (src/shared) */ - -DEFINE_func_801508F8() /* dedup: shared engine-core @0x801508F8 (src/shared) */ - - -extern S16 D_801E8B30; -extern s32 D_8018D1E4; -extern s32 D_80126990; -extern s32 D_80126994; -extern u8 D_80126948[]; -extern s32 func_80021174(s32 a0, s32 a1); - -s32 func_8015094C(s32 param_1) { - struct { s32 x, mid, y; s32 _pad[9]; } arg; /* 0x30 @ 0x10 */ - S16 local; /* 0x10 @ 0x40 */ - s32 pad1[4]; /* 0x10 @ 0x50 */ - register u8 *cam __asm__("$17") = D_80126948; - s32 ret; - - local = D_801E8B30; - arg.x = *(short *)(param_1 + 6); - arg.mid = D_80126994; - arg.y = *(short *)(param_1 + 0xe); - ret = func_80021174(D_8018D1E4, (s32)&arg); - if (ret == 0) { - { - short cur = *(short *)(param_1 + 6); - s32 diff = D_80126990 - cur; - s32 av = (diff < 0) ? -diff : diff; - if (av >= 5) { - *(short *)(param_1 + 6) = (diff >= 0) ? cur + 4 : cur - 4; - } - } - { - short cur = *(short *)(param_1 + 0xe); - s32 diff = *(s32 *)(cam + 0x50) - cur; - s32 av = (diff < 0) ? -diff : diff; - if (av >= 5) { - *(short *)(param_1 + 0xe) = (diff >= 0) ? cur + 4 : cur - 4; - } - } - (void)&pad1; - return 1; - } - return 0; -} - - - -extern s32 func_8014FA70(s32 a0); -extern void func_80015978(s32 a0, s32 *a1); -extern s32 D_801E969C; - -void func_80150A70(s32 a0) -{ - __asm__ __volatile__( - ".set\tnoreorder\n" - "addiu $sp, $sp, -24\n" - "sw $s0, 16($sp)\n" - "addu $s0, $a0, $zero\n" - "sw $ra, 20($sp)\n" - "lh $v1, 6($s0)\n" - "lh $v0, 136($s0)\n" - "nop\n" - "bne $v1, $v0, 1f\n" - "nop\n" - "lh $v1, 10($s0)\n" - "lh $v0, 138($s0)\n" - "nop\n" - "bne $v1, $v0, 1f\n" - "nop\n" - "lh $v1, 14($s0)\n" - "lh $v0, 140($s0)\n" - "nop\n" - "beq $v1, $v0, 3f\n" - "nop\n" - "1:\n" - "lw $v0, 68($s0)\n" - "lui $v1, 0x4\n" - "and $v0, $v0, $v1\n" - "bnez $v0, 2f\n" - "addiu $a0, $s0, 4\n" - "lui $a2, 0x1f80\n" - "ori $a2, $a2, 0x03fc\n" - "addu $t0, $a2, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014FA70\n" - "addu $a0, $s0, $zero\n" - "lui $at, %%hi(D_801E969C)\n" - "sw $v0, %%lo(D_801E969C)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "addiu $a0, $s0, 4\n" - "2:\n" - "jal func_80015978\n" - "addiu $a1, $s0, 136\n" - "3:\n" - "lw $ra, 20($sp)\n" - "lw $s0, 16($sp)\n" - "addiu $sp, $sp, 24\n" - ".set\treorder\n" - : : : "memory"); -} - - - -// @class: regalloc-order -// @stuck: none — MATCH (fn-ptr table; split idx-1 into a $v0-pinned temp to stop (idx-1)*4 strength-reducing into a -4 load offset AND land the subtract in $v0) - - -void func_80150B28(int param_1) { - - extern s32 D_800AE6B0; - extern void (*D_8018D1E8[])(void); - u32 idx; - register u32 sub __asm__("$2"); - - if ((D_800AE6B0 & 0x80FFFFFF) == 0) { - idx = *(u16 *)(param_1 + 0x16C); - if (idx != 0 && idx < 0x26) { - sub = idx - 1; - D_8018D1E8[sub](); - } - } - *(u16 *)(param_1 + 0x16C) = 0; -} - - -DEFINE_func_80150B9C() /* dedup: shared engine-core @0x80150B9C (src/shared) */ - -DEFINE_func_80150BA4() /* dedup: shared engine-core @0x80150BA4 (src/shared) */ - -DEFINE_func_80150BC8() /* dedup: shared engine-core @0x80150BC8 (src/shared) */ - -DEFINE_func_80150C48() /* dedup: shared engine-core @0x80150C48 (src/shared) */ - -DEFINE_func_80150CA0() /* dedup: shared engine-core @0x80150CA0 (src/shared) */ - -DEFINE_func_80150CC4() /* dedup: shared engine-core @0x80150CC4 (src/shared) */ - -DEFINE_func_80150CE4() /* dedup: shared engine-core @0x80150CE4 (src/shared) */ - -DEFINE_func_80150D04() /* dedup: shared engine-core @0x80150D04 (src/shared) */ - -DEFINE_func_80150D24() /* dedup: shared engine-core @0x80150D24 (src/shared) */ - -DEFINE_func_80150D44() /* dedup: shared engine-core @0x80150D44 (src/shared) */ - -DEFINE_func_80150D64() /* dedup: shared engine-core @0x80150D64 (src/shared) */ - -DEFINE_func_80150D84() /* dedup: shared engine-core @0x80150D84 (src/shared) */ - -DEFINE_func_80150DA4() /* dedup: shared engine-core @0x80150DA4 (src/shared) */ - -DEFINE_func_80150DC4() /* dedup: shared engine-core @0x80150DC4 (src/shared) */ - -DEFINE_func_80150DE4() /* dedup: shared engine-core @0x80150DE4 (src/shared) */ - -DEFINE_func_80150E04() /* dedup: shared engine-core @0x80150E04 (src/shared) */ - -DEFINE_func_80150E24() /* dedup: shared engine-core @0x80150E24 (src/shared) */ - -DEFINE_func_80150E44() /* dedup: shared engine-core @0x80150E44 (src/shared) */ - -DEFINE_func_80150E64() /* dedup: shared engine-core @0x80150E64 (src/shared) */ - -DEFINE_func_80150E84() /* dedup: shared engine-core @0x80150E84 (src/shared) */ - -DEFINE_func_80150EA4() /* dedup: shared engine-core @0x80150EA4 (src/shared) */ - -DEFINE_func_80150EC4() /* dedup: shared engine-core @0x80150EC4 (src/shared) */ - -DEFINE_func_80150F78() /* dedup: shared engine-core @0x80150F78 (src/shared) */ - -DEFINE_func_80150F80() /* dedup: shared engine-core @0x80150F80 (src/shared) */ - -DEFINE_func_80150FB4() /* dedup: shared engine-core @0x80150FB4 (src/shared) */ - -DEFINE_func_80150FD8() /* dedup: shared engine-core @0x80150FD8 (src/shared) */ - -DEFINE_func_80151014() /* dedup: shared engine-core @0x80151014 (src/shared) */ - -DEFINE_func_80151038() /* dedup: shared engine-core @0x80151038 (src/shared) */ - -DEFINE_func_80151070() /* dedup: shared engine-core @0x80151070 (src/shared) */ - -DEFINE_func_80151094() /* dedup: shared engine-core @0x80151094 (src/shared) */ - -DEFINE_func_801510B8() /* dedup: shared engine-core @0x801510B8 (src/shared) */ - -DEFINE_func_801510C0() /* dedup: shared engine-core @0x801510C0 (src/shared) */ - -DEFINE_func_801510C8() /* dedup: shared engine-core @0x801510C8 (src/shared) */ - -DEFINE_func_801510EC() /* dedup: shared engine-core @0x801510EC (src/shared) */ - -DEFINE_func_80151110() /* dedup: shared engine-core @0x80151110 (src/shared) */ - -DEFINE_func_80151130() /* dedup: shared engine-core @0x80151130 (src/shared) */ - -DEFINE_func_80151138() /* dedup: shared engine-core @0x80151138 (src/shared) */ - -DEFINE_func_8015115C() /* dedup: shared engine-core @0x8015115C (src/shared) */ - -DEFINE_func_80151164() /* dedup: shared engine-core @0x80151164 (src/shared) */ - -DEFINE_func_80151184() /* dedup: shared engine-core @0x80151184 (src/shared) */ - -DEFINE_func_801511A8() /* dedup: shared engine-core @0x801511A8 (src/shared) */ - -DEFINE_func_801511C4() /* dedup: shared engine-core @0x801511C4 (src/shared) */ - -DEFINE_func_801511E0() /* dedup: shared engine-core @0x801511E0 (src/shared) */ - -DEFINE_func_80151204() /* dedup: shared engine-core @0x80151204 (src/shared) */ - -DEFINE_func_80151238() /* dedup: shared engine-core @0x80151238 (src/shared) */ - -DEFINE_func_8015126C() /* dedup: shared engine-core @0x8015126C (src/shared) */ - - -/* func_80151664 — INTEGRATE lane. - * Fleet canon (src/shared/engine_core.h:2924, inside DEFINE_func_8015410C()) declares - * extern void func_80151664(void); - * so a `void func_80151664(s32 a0)` definition is `conflicting types` in every TU that - * expands that macro (ov_SC01_077_after.c:3910 does). Cookbook §73 PARAMS axis / §42: - * keep the canonical (void) signature and read the incoming argument through a $a0 pin. - * The decl below is reproduced verbatim so this file compiles the real conflict. */ -extern void func_80151664(void); - -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801470AC(s32 *a0); -extern void func_801472B4(void *a0); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80153C18(); /* fleet canon: K&R empty prototype (engine_core.h:75, :1682 defines it (void)); - * a prototyped (s32) decl is `conflicting types` in this TU. Arg still - * passes in $a0 under default promotions -> codegen unchanged. */ - -void func_80151664(void) { - register s32 a0v __asm__("$4"); - s32 s0; - s32 v1; - - s0 = a0v; - func_80154A74(s0, 0x11); - func_801553C0(s0); - func_801470AC((s32 *)s0); - func_801472B4((void *)s0); - v1 = *(s32 *)(s0 + 0x20); - *(s16 *)(s0 + 0x3E) = 0; - *(s16 *)(s0 + 0x40) = 0; - *(s16 *)(s0 + 0x42) = 0; - *(s8 *)(s0 + 0xDD) = 0; - *(s16 *)(s0 + 0x3C) = *(u16 *)(s0 + 0x3C) & 0xFFFE; - *(s16 *)(v1 + 0x10) = 0; - *(s16 *)(s0 + 0x60) = 0x1000; - *(s16 *)(s0 + 0x62) = 0x1000; - *(s16 *)(s0 + 0x64) = 0x1000; - func_801477E8((s32 *)s0, 0); - func_80153C18(s0); -} - - -DEFINE_func_801516F0() /* dedup: shared engine-core @0x801516F0 (src/shared) */ - -DEFINE_func_8015173C() /* dedup: shared engine-core @0x8015173C (src/shared) */ - -DEFINE_func_80151780() /* dedup: shared engine-core @0x80151780 (src/shared) */ - -DEFINE_func_80151878() /* dedup: shared engine-core @0x80151878 (src/shared) */ - -DEFINE_func_80151880() /* dedup: shared engine-core @0x80151880 (src/shared) */ - -DEFINE_func_801518D8() /* dedup: shared engine-core @0x801518D8 (src/shared) */ - -DEFINE_func_80151924() /* dedup: shared engine-core @0x80151924 (src/shared) */ - - - -DEFINE_func_80151944() /* dedup: shared engine-core @0x80151944 (src/shared) */ - - -DEFINE_func_80151980() /* dedup: shared engine-core @0x80151980 (src/shared) */ - -DEFINE_func_801519C8() /* dedup: shared engine-core @0x801519C8 (src/shared) */ - -DEFINE_func_80151AE4() /* dedup: shared engine-core @0x80151AE4 (src/shared) */ - -DEFINE_func_80151B98() /* dedup: shared engine-core @0x80151B98 (src/shared) */ - -DEFINE_func_80151C54() /* dedup: shared engine-core @0x80151C54 (src/shared) */ - - -DEFINE_func_80151D24() /* dedup: shared engine-core @0x80151D24 (src/shared) */ - - -DEFINE_func_80151D60() /* dedup: shared engine-core @0x80151D60 (src/shared) */ - -DEFINE_func_80151DB0() /* dedup: shared engine-core @0x80151DB0 (src/shared) */ - -DEFINE_func_80151E78() /* dedup: shared engine-core @0x80151E78 (src/shared) */ - -DEFINE_func_80151ECC() /* dedup: shared engine-core @0x80151ECC (src/shared) */ - -DEFINE_func_80151F38() /* dedup: shared engine-core @0x80151F38 (src/shared) */ - -DEFINE_func_80151FB4() /* dedup: shared engine-core @0x80151FB4 (src/shared) */ - - -DEFINE_func_80152058() /* dedup: shared engine-core @0x80152058 (src/shared) */ - - -DEFINE_func_80152094() /* dedup: shared engine-core @0x80152094 (src/shared) */ - - -extern void func_80019064(void *a0); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_80146CA0(void *a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474EC(s32 *a0); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80149020(s32 *a0); -extern void func_8014CBF8(void *a0); -extern int func_80151204(int arg, int a1); -extern u8 D_80062C04[]; -extern M2C_UNK D_8018D2A0; - -void func_801520DC(s32 arg0) -{ - func_80019064(&D_80062C04); - func_80151204(arg0, M2C_FIELD(arg0, s16 *, 0xF2)); - func_80149020(arg0); - func_801472C8(arg0); - M2C_FIELD(arg0, s8 *, 0xDE) = 0x10; - func_80146DB8(arg0, &D_8018D2A0); - func_801477E8(arg0, 0x40000); - func_8014CBF8(arg0); - func_801474EC(arg0); - func_80146A6C(0x10, arg0, M2C_FIELD(arg0, s16 *, 6), M2C_FIELD(arg0, s16 *, 0xA), (s32) M2C_FIELD(arg0, s16 *, 0xE), 0, 0); - func_80147324(0x441); - func_80146CA0(arg0); -} - - -DEFINE_func_80152194() /* dedup: shared engine-core @0x80152194 (src/shared) */ - -DEFINE_func_8015220C() /* dedup: shared engine-core @0x8015220C (src/shared) */ - -DEFINE_func_80152254() /* dedup: shared engine-core @0x80152254 (src/shared) */ - -DEFINE_func_801522CC() /* dedup: shared engine-core @0x801522CC (src/shared) */ - - - -DEFINE_func_80152370() /* dedup: shared engine-core @0x80152370 (src/shared) */ - - -DEFINE_func_801523AC() /* dedup: shared engine-core @0x801523AC (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (67 ins) - - -extern void func_80146E90(s32 *a0, s32 a1); -extern void func_80019064(void *a0); -extern int func_80151204(int arg, int a1); -extern s32 func_80012A60(s32 a0, s32 a1); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_80149020(s32 *a0); -extern void func_8001382C(s32 a0, void *a1, void *a2); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80147324(s32 arg0); -extern void func_80146CA0(void *a0); - -extern u8 D_80062C04[]; -extern M2C_UNK D_800D5880; -extern s32 D_800D58AC; -extern u8 D_8018D2D0[]; - -void func_801523F4(s32 arg0) -{ - s32 pad[4]; - s32 buf[4]; - register s32 s0a __asm__("$16"); /* $s0 = buf */ - register s32 s2a __asm__("$18") = (s32)&D_8018D2D0; /* $s2 = &D_8018D2D0 */ - - ((void (*)(s32, s32))func_80146E90)(arg0, 0); - func_80019064(&D_80062C04); - ((void (*)(s32, s32))func_80151204)(arg0, *(s16 *)(arg0 + 0xF2)); - if ((s16)func_80012A60((s32)*(s16 *)(*(s32 *)(arg0 + 0x20) + 0x12), - (s32)*(s16 *)(arg0 + 0xF4)) >= 0x401) { - ((void (*)(s32, s32))func_80154274)(arg0, (s32)&D_800D5880); - } else { - ((void (*)(s32, s32))func_80154274)(arg0, (s32)&D_800D58AC); - } - func_80154A74(arg0, 0x16); - ((void (*)(s32))func_80149020)(arg0); - s0a = (s32)buf; - ((void (*)(s32, s32, s32))func_8001382C)((*(u16 *)(arg0 + 0xF4) - *(u16 *)(*(s32 *)(arg0 + 0x20) + 0x12)) & 0xFFF, - s2a, s0a); - ((void (*)(s32, s32))func_80146DB8)(arg0, s0a); - ((void (*)(s32, s32))func_801477E8)(arg0, *(s32 *)(s2a + 0xC)); - func_80147324(0x451); - ((void (*)(s32))func_80146CA0)(arg0); - (void)pad; -} - - -DEFINE_func_80152500() /* dedup: shared engine-core @0x80152500 (src/shared) */ - -DEFINE_func_801525F4() /* dedup: shared engine-core @0x801525F4 (src/shared) */ - - -DEFINE_func_80152698() /* dedup: shared engine-core @0x80152698 (src/shared) */ - - -DEFINE_func_801526D4() /* dedup: shared engine-core @0x801526D4 (src/shared) */ - -DEFINE_func_80152714() /* dedup: shared engine-core @0x80152714 (src/shared) */ - -DEFINE_func_80152790() /* dedup: shared engine-core @0x80152790 (src/shared) */ - - -DEFINE_func_8015282C() /* dedup: shared engine-core @0x8015282C (src/shared) */ - - -DEFINE_func_80152868() /* dedup: shared engine-core @0x80152868 (src/shared) */ - - -extern void func_80019064(void *a0); -extern void func_80146CA0(void *a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80147324(s32 a0); -extern void func_801474EC(s32 *a0); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80149020(s32 *a0); -extern void func_8014CBF8(void *a0); -extern int func_80151204(int arg, int a1); -extern void func_80154274(s32 *a0, s32 a1); -extern u8 D_80062C04[]; -extern M2C_UNK D_800D5880; -extern M2C_UNK D_8018D2E8; - -void func_801528B0(s32 arg0) -{ - func_80019064(&D_80062C04); - func_80151204(arg0, M2C_FIELD(arg0, s16 *, 0xF2)); - func_80149020(arg0); - func_80154274(arg0, &D_800D5880); - func_80147324(0x451); - M2C_FIELD(arg0, s8 *, 0xDE) = 0x10; - func_80146DB8(arg0, &D_8018D2E8); - func_801477E8(arg0, 0xFFF00000); - func_8014CBF8(arg0); - func_801474EC(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_8015294C() /* dedup: shared engine-core @0x8015294C (src/shared) */ - -DEFINE_func_80152A08() /* dedup: shared engine-core @0x80152A08 (src/shared) */ - -DEFINE_func_80152A50() /* dedup: shared engine-core @0x80152A50 (src/shared) */ - -DEFINE_func_80152AC8() /* dedup: shared engine-core @0x80152AC8 (src/shared) */ - - -DEFINE_func_80152B6C() /* dedup: shared engine-core @0x80152B6C (src/shared) */ - - -DEFINE_func_80152BA8() /* dedup: shared engine-core @0x80152BA8 (src/shared) */ - -DEFINE_func_80152BF0() /* dedup: shared engine-core @0x80152BF0 (src/shared) */ - -DEFINE_func_80152C40() /* dedup: shared engine-core @0x80152C40 (src/shared) */ - -DEFINE_func_80152C80() /* dedup: shared engine-core @0x80152C80 (src/shared) */ - - -DEFINE_func_80152D24() /* dedup: shared engine-core @0x80152D24 (src/shared) */ - - -DEFINE_func_80152D60() /* dedup: shared engine-core @0x80152D60 (src/shared) */ - - -extern void func_80019064(void *a0); -extern void func_80146CA0(void *a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80147324(s32 a0); -extern void func_801474EC(s32 *a0); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80149020(s32 *a0); -extern void func_8014CBF8(void *a0); -extern int func_80151204(int arg, int a1); -extern void func_80154274(s32 *a0, s32 a1); -extern s32 D_80062C14; -extern M2C_UNK D_800D5880; -extern M2C_UNK D_8018D318; - -void func_80152DA8(s32 arg0) -{ - func_80019064(&D_80062C14); - func_80151204(arg0, M2C_FIELD(arg0, s16 *, 0xF2)); - func_80149020(arg0); - func_80154274(arg0, &D_800D5880); - func_80147324(0x451); - M2C_FIELD(arg0, s8 *, 0xDE) = 0x10; - M2C_FIELD(arg0, s8 *, 0xDF) = 8; - func_80146DB8(arg0, &D_8018D318); - func_801477E8(arg0, 0xFFE40000); - func_8014CBF8(arg0); - func_801474EC(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80152E4C() /* dedup: shared engine-core @0x80152E4C (src/shared) */ - -DEFINE_func_80152EFC() /* dedup: shared engine-core @0x80152EFC (src/shared) */ - -DEFINE_func_80152F44() /* dedup: shared engine-core @0x80152F44 (src/shared) */ - -DEFINE_func_80152FBC() /* dedup: shared engine-core @0x80152FBC (src/shared) */ - - -DEFINE_func_80153060() /* dedup: shared engine-core @0x80153060 (src/shared) */ - - -DEFINE_func_8015309C() /* dedup: shared engine-core @0x8015309C (src/shared) */ - -DEFINE_func_801530E4() /* dedup: shared engine-core @0x801530E4 (src/shared) */ - -DEFINE_func_80153150() /* dedup: shared engine-core @0x80153150 (src/shared) */ - -DEFINE_func_801531BC() /* dedup: shared engine-core @0x801531BC (src/shared) */ - -DEFINE_func_80153204() /* dedup: shared engine-core @0x80153204 (src/shared) */ - -DEFINE_func_8015327C() /* dedup: shared engine-core @0x8015327C (src/shared) */ - - -DEFINE_func_80153320() /* dedup: shared engine-core @0x80153320 (src/shared) */ - - -DEFINE_func_8015335C() /* dedup: shared engine-core @0x8015335C (src/shared) */ - -DEFINE_func_801533A4() /* dedup: shared engine-core @0x801533A4 (src/shared) */ - -DEFINE_func_80153410() /* dedup: shared engine-core @0x80153410 (src/shared) */ - -DEFINE_func_80153490() /* dedup: shared engine-core @0x80153490 (src/shared) */ - -DEFINE_func_801534D8() /* dedup: shared engine-core @0x801534D8 (src/shared) */ - -DEFINE_func_80153550() /* dedup: shared engine-core @0x80153550 (src/shared) */ - - -DEFINE_func_801535F4() /* dedup: shared engine-core @0x801535F4 (src/shared) */ - - -DEFINE_func_8015369C() /* dedup: shared engine-core @0x8015369C (src/shared) */ - -DEFINE_func_801536DC() /* dedup: shared engine-core @0x801536DC (src/shared) */ - -DEFINE_func_80153800() /* dedup: shared engine-core @0x80153800 (src/shared) */ - -DEFINE_func_80153978() /* dedup: shared engine-core @0x80153978 (src/shared) */ - -DEFINE_func_801539F8() /* dedup: shared engine-core @0x801539F8 (src/shared) */ - -DEFINE_func_80153B58() /* dedup: shared engine-core @0x80153B58 (src/shared) */ - -DEFINE_func_80153BD8() /* dedup: shared engine-core @0x80153BD8 (src/shared) */ - -DEFINE_func_80153BF0() /* dedup: shared engine-core @0x80153BF0 (src/shared) */ - -DEFINE_func_80153C18() /* dedup: shared engine-core @0x80153C18 (src/shared) */ - -DEFINE_func_80153C30() /* dedup: shared engine-core @0x80153C30 (src/shared) */ - -DEFINE_func_80153C44() /* dedup: shared engine-core @0x80153C44 (src/shared) */ - -DEFINE_func_80153C74() /* dedup: shared engine-core @0x80153C74 (src/shared) */ - -DEFINE_func_80153C8C() /* dedup: shared engine-core @0x80153C8C (src/shared) */ - -DEFINE_func_80153C9C() /* dedup: shared engine-core @0x80153C9C (src/shared) */ - -DEFINE_func_80153CBC() /* dedup: shared engine-core @0x80153CBC (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (expected); dispatch-table %lo-fold via extern fn-ptr array, s0 holds param across both calls -extern void func_80019064(void *a0); -extern s32 D_8018D364; -extern void (*D_8018D38C[])(void *a0); -extern s16 D_8011DB0C; -extern u16 D_8011F748; - -void func_80153CCC(S80153CCC *a0) { - ((s32 (*)(s32))func_80019064)((s32)&D_8018D364); - D_8018D38C[a0->idx](a0); - D_8011DB0C = 0; - D_8011F748 = 0; -} - - -DEFINE_func_80153D34() /* dedup: shared engine-core @0x80153D34 (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (33/33) - -extern void func_80147324(s32 arg0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80149020(s32 *a0); -extern void func_80146CA0(void *a0); -extern s16 currentLocationId; -extern u8 D_8018D36C; - -void func_80153D7C(s32 param_1) -{ - func_80147324(0x451); - func_80154274((s32 *)param_1, (s32)&D_8018D36C); - func_80149020((s32 *)param_1); - *(u16 *)(param_1 + 0x244) = *(u16 *)(param_1 + 6); - *(u16 *)(param_1 + 0x246) = *(u16 *)(param_1 + 10); - *(u16 *)(param_1 + 0x248) = *(u16 *)(param_1 + 0xe); - if (currentLocationId == 0x3075) *(u8 *)(param_1 + 0xde) = 0x14; - else *(u8 *)(param_1 + 0xde) = 10; - *(u8 *)(param_1 + 0xdf) = 0; - __asm__ __volatile__("" ::: "memory"); - func_80146CA0((void *)param_1); -} - - -DEFINE_func_80153E00() /* dedup: shared engine-core @0x80153E00 (src/shared) */ - -DEFINE_func_8015410C() /* dedup: shared engine-core @0x8015410C (src/shared) */ - -DEFINE_func_80154134() /* dedup: shared engine-core @0x80154134 (src/shared) */ - -DEFINE_func_80154150() /* dedup: shared engine-core @0x80154150 (src/shared) */ - -DEFINE_func_80154190() /* dedup: shared engine-core @0x80154190 (src/shared) */ - -DEFINE_func_801541D8() /* dedup: shared engine-core @0x801541D8 (src/shared) */ - -DEFINE_func_80154218() /* dedup: shared engine-core @0x80154218 (src/shared) */ - -DEFINE_func_80154274() /* dedup: shared engine-core @0x80154274 (src/shared) */ - -DEFINE_func_801542A4() /* dedup: shared engine-core @0x801542A4 (src/shared) */ - -DEFINE_func_801542DC() /* dedup: shared engine-core @0x801542DC (src/shared) */ - -DEFINE_func_8015430C() /* dedup: shared engine-core @0x8015430C (src/shared) */ - -DEFINE_func_80154358() /* dedup: shared engine-core @0x80154358 (src/shared) */ - -DEFINE_func_80154418() /* dedup: shared engine-core @0x80154418 (src/shared) */ diff --git a/src/ov_SC03_015/ov_SC03_015_jr_8012ACE0.c b/src/ov_SC03_015/ov_SC03_015_jr_8012ACE0.c deleted file mode 100644 index 4e538a493..000000000 --- a/src/ov_SC03_015/ov_SC03_015_jr_8012ACE0.c +++ /dev/null @@ -1,2869 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -extern void func_80128288(void); -extern void func_80128158(void); -extern void func_801285E4(void); -extern void func_80128178(void); -extern void func_80128678(void); -extern void func_80128198(void); -extern void func_80128714(void); -extern void func_801281B8(void); -extern void func_8013E67C(void); -extern void func_801281D8(void); -extern void func_8013E558(void); -extern void func_801281F8(void); -extern s32 D_801E819C; -extern s32 func_80128218(void); -extern void func_80128A28(void); -extern void func_80128228(void); -extern void func_80128AF4(void); -extern void func_80128248(void); -extern void func_801282EC(void); -extern void func_80128268(void); -extern u16 D_800B99F6; -extern void (*D_8018B804[])(void); -extern void func_80011B7C(int); -extern void func_801282CC(void); -extern void func_8001C0C8(void); -extern void func_80015310(void); -extern void func_80129258(void); -extern void func_801378F0(void); -extern void func_80010E14(void); -extern s16 currentLocationId; -extern s32 func_80029504(void); -extern s32 func_800CF854(s32); -extern s32 func_80128998(void); -extern s32 func_801289F0(void); -extern s32 func_801288E8(s32); -extern s32 func_80128940(s32); -extern s32 func_80029178(s32); -extern s32 func_801288B0(void); -extern void func_80011C10(void); -extern void func_8012832C(void); -extern void func_80129220(void); -extern void func_80011E24(void); -extern void func_80128C14(void); -extern void func_8002AEF8(void); -extern void func_800CFBBC(void); -extern void SsUtReverbOff(void); -extern void func_8013C98C(void); -extern void func_80129C40(s32 a0); -extern void func_800D0630(void); -extern void func_80145CEC(void); -extern void func_80144B9C(void); -extern u8 D_800B9A17; -extern u8 D_800B9A10; -extern void func_80128420(void); -extern s32 func_800D0588(void); -extern void func_801284B8(void); -extern void func_80175308(void); -extern void func_8016E8F0(void); -extern void func_80175494(void); -extern u8 D_800B9A64; -extern void func_801284F0(void); -extern void func_80146074(void); -extern void func_8012853C(void); -extern void func_80178608(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern s32 func_80011A3C(void); -extern short currentLocationId; -extern short D_800B99F2; -extern void func_80128564(void); -extern u8 D_800B9A11; -extern void func_801285D4(void); -extern s32 func_800D18DC(void); -extern void func_8014607C(void); -extern void func_801287B8(void); -extern s32 D_801E9504; -extern void func_80029444(void); -extern void func_800D1754(void); -extern s32 D_80126B58; -extern s32 D_801EAFD0; -extern u16 D_800B99DA; -extern void func_80129CF8(void); -extern void func_8017849C(void); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_801505FC(s32 a0); -extern void func_801508B4(void *a0); -extern void func_80165E90(void); -extern void func_801627E8(void); -extern void func_80162B1C(void); -extern void func_80165CA0(void); -extern void func_80129010(void); -extern void func_8013CA14(void); -extern void func_800190AC(void); -extern void func_8012956C(void); -extern void func_8016E95C(void); -extern void func_801754A8(void); -extern void func_8013BC7C(void); -extern void func_8013BCDC(void); -extern void func_801379FC(void); -extern void func_8001212C(void); -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); -extern u8 D_800AEFD0; -extern int D_800C7C60; -extern int *D_800C7C64; -extern int D_800A2E20; -extern int D_800AF558; -extern int D_801E819C; -extern int func_801288E8(int arg0); -extern u8 D_800AF560; -extern s32 func_80128940(s32 _arg0); -extern int D_800AECB0; -extern u8 D_800AECB8; -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4); -extern s16 D_800B9A00; -extern M2C_UNK (*D_8018B540)(); -extern s16 (*D_8018B544)(); -extern M2C_UNK (*D_8018B54C)(); -extern s32 (*D_8018B550)(); -extern s32 D_801E9500; -extern void func_80010AE0(s32 a0); -extern void func_80018450(s32 a0, s32 a1); -extern void func_800183E0(s32 a0); -extern void func_80128D60(s32 a0, s32 *a1, s32 *a2); -extern s32 func_80128DB4(s32 a0, s32 *a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern M2C_UNK D_801E81A0; -extern void func_80128FAC(u16 *arg0); -extern s16 D_8011DB2C; -extern s16 D_8011DB30; -extern s32 D_80126AEC; -extern u8 *func_8012913C(s32 a0); -extern u8 * func_801290DC(s32 a0, u8 *a1); -extern void func_8001D074(s32 a, s32 b); -extern u8 *func_801291C0(void); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 * func_8012913C(s32 arg0); -extern void func_80016714(void *a0, s32 a1); -extern u8 * func_801291C0(void); -extern void func_80129248(s16 a0); -extern void func_801292C8(u8 *a0); -extern void func_8012927C(void); -extern void func_8012931C(struct vec *a0); -extern void func_80129350(s32 a0, s32 a1); -extern void func_80129374(s32 a0, s32 a1); -extern s16 D_800B9AAC[]; -extern s16 D_800B9AAE[]; -extern s16 D_800B9AB0[]; -extern s16 D_800B9AB2[]; -extern s16 D_800B9AB4[]; -extern s16 D_800B9AB6[]; -extern s16 D_800B9AB8[]; -extern s16 D_800B9ABA[]; -extern void func_80129398(void); -extern s16 D_80114EE0; -extern void func_80129428(void); -extern void func_8012943C(void); -extern s32 D_8005128C; -extern u8 D_800B9A78; -extern void func_801298F4(void *arg0); -extern void func_801299C8(s32 a, s32 b, s32 c); -extern void func_8012944C(void); -extern unsigned short D_800B99F0; -extern void func_8012A328(void); -extern void func_80053308(s32); -extern s32 func_80012F74(s32, s32, s32, s32); /* canonical s32 (engine_core); (s16)-cast the return for the sll/sra */ -extern void GsSetRefView2L(void *); -extern s8 D_801150D6; /* canonical (engine_core macro): s8 — access via *(u8*)& for lbu */ -extern u8 D_80127504; -extern s32 D_80126E60[]; -extern s32 D_80126F04[]; -extern u8 D_80126948[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_80126FA8[]; -extern struct BigCopy D_80126DB8;/* canonical (engine_core macro): struct BigCopy — (s32*)& at use */ -extern u8 D_800AF630[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_800AE688[]; -extern s32 D_801151D4; /* canonical (10 siblings): scalar s32 — store (s32)ptr */ -extern void func_8012A018(s32 a, s32 b); -extern void func_80129FF4(void); -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_80126940; -extern s16 D_80126942; -extern s16 D_80126944; -extern void func_8012A048(void *a0, s32 a1, u8 a2); -extern void *memcpy(void *, const void *, unsigned int); -extern void func_8012A094(s32 a0); -extern void func_8012A100(s8 a0); -extern void func_8012A0E0(void); -extern s8 D_801150D6; -extern s32 D_80120204; -extern s32 D_80120200; -extern s32 D_8012020C; -extern s32 D_80120208; -extern s16 D_80120218; -extern s16 D_80120210; -extern s16 D_8012021A; -extern s16 D_80120212; -extern s16 D_8012021C; -extern s16 D_80120214; -extern s16 D_80120226; -extern s16 D_80120220; -extern s16 D_80120228; -extern s16 D_80120222; -extern s16 D_8012022A; -extern s16 D_80120224; -extern s32 D_80120294; -extern s16 D_80120298; -extern s16 D_8012029A; -extern void func_8012A110(void); -extern s8 D_801152C0; -extern void func_8012A2F4(void); -extern s16 D_80127080; -extern s16 D_801152C2; -extern void func_8012A304(s32 a0, s32 a1); -extern s32 D_801151D4; -extern struct BigCopy D_80126DB8; -extern struct BigCopy D_80114EE8; -extern void func_8012A4BC(void); -extern void func_8012A62C(s32); -extern void func_8012A5F8(void (*a0)(void), s32 a1); -extern void func_8012A62C(s32 a0); -extern void func_8012A7D4(void *a0, void *a1); -extern s32 func_8012A6D0(void *a0, void *a1); -extern s16 func_8012A68C(void); -extern s16 func_8012A79C(s16 *a0, s16 *a1); -extern s16 func_8012A758(void); -extern s32 ratan2(s32 a0, s32 a1); -extern void func_8012A7D4(void *arg0, void *arg1); -extern void func_8012AAAC(); -extern void func_8012A828(s32 a0, void * a1); -extern int func_8012ACE0(void *a0); -extern void func_8012A860(void *a0, int a1); -extern void func_8012A8B0(u8 *a0, s32 a1); -extern void func_8012A8E8(void); -extern u8 D_801202A0[]; -extern u16 D_801270C0; -extern void func_8012A988(u8 *a0); -extern void func_8012A908(void); -extern s32 func_8012ACE0(void *a0); -extern M2C_UNK D_8018B898; -extern void func_8012ACA0(void *arg0); -/* ==== end §8b carried decl layer ==== */ - - - - -// @class: iv-combine -// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). - /* 8-byte element, cmd @ +4 */ - /* list ptr @ +0x90 */ - -s32 func_8012ACE0(void *o) { - int i; - for (i = 0; ; i++) { - switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { - case -2: - case -1: - case 0: - return i; - case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ - default: - break; - } - } -} - -DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ - -DEFINE_func_8012AD50() /* dedup: shared engine-core @0x8012AD50 (src/shared) */ - - - -void func_8012AD64(s32 *a0, s16 a1) { - *(s16*)((s32)a0 + 0x34) = a1; -} - - -DEFINE_func_8012AD6C() /* dedup: shared engine-core @0x8012AD6C (src/shared) */ - -DEFINE_func_8012AD80() /* dedup: shared engine-core @0x8012AD80 (src/shared) */ - -DEFINE_func_8012ADE4() /* dedup: shared engine-core @0x8012ADE4 (src/shared) */ - -DEFINE_func_8012AE00() /* dedup: shared engine-core @0x8012AE00 (src/shared) */ - -DEFINE_func_8012AF0C() /* dedup: shared engine-core @0x8012AF0C (src/shared) */ - -DEFINE_func_8012B030() /* dedup: shared engine-core @0x8012B030 (src/shared) */ - -DEFINE_func_8012B0B4() /* dedup: shared engine-core @0x8012B0B4 (src/shared) */ - -DEFINE_func_8012B14C() /* dedup: shared engine-core @0x8012B14C (src/shared) */ - -DEFINE_func_8012B178() /* dedup: shared engine-core @0x8012B178 (src/shared) */ - -DEFINE_func_8012B1B4() /* dedup: shared engine-core @0x8012B1B4 (src/shared) */ - -DEFINE_func_8012B200() /* dedup: shared engine-core @0x8012B200 (src/shared) */ - -DEFINE_func_8012B21C() /* dedup: shared engine-core @0x8012B21C (src/shared) */ - -DEFINE_func_8012B23C() /* dedup: shared engine-core @0x8012B23C (src/shared) */ - -DEFINE_func_8012B260() /* dedup: shared engine-core @0x8012B260 (src/shared) */ - -DEFINE_func_8012B2CC() /* dedup: shared engine-core @0x8012B2CC (src/shared) */ - -DEFINE_func_8012B370() /* dedup: shared engine-core @0x8012B370 (src/shared) */ - -DEFINE_func_8012B414() /* dedup: shared engine-core @0x8012B414 (src/shared) */ - -DEFINE_func_8012B4B8() /* dedup: shared engine-core @0x8012B4B8 (src/shared) */ - -DEFINE_func_8012B608() /* dedup: shared engine-core @0x8012B608 (src/shared) */ - -DEFINE_func_8012B6D4() /* dedup: shared engine-core @0x8012B6D4 (src/shared) */ - -DEFINE_func_8012B70C() /* dedup: shared engine-core @0x8012B70C (src/shared) */ - -DEFINE_func_8012B744() /* dedup: shared engine-core @0x8012B744 (src/shared) */ - - -DEFINE_func_8012B77C() /* dedup: shared engine-core @0x8012B77C (src/shared) */ - - -DEFINE_func_8012B864() /* dedup: shared engine-core @0x8012B864 (src/shared) */ - -DEFINE_func_8012B8A4() /* dedup: shared engine-core @0x8012B8A4 (src/shared) */ - -DEFINE_func_8012B8E4() /* dedup: shared engine-core @0x8012B8E4 (src/shared) */ - -DEFINE_func_8012BA10() /* dedup: shared engine-core @0x8012BA10 (src/shared) */ - -DEFINE_func_8012BB3C() /* dedup: shared engine-core @0x8012BB3C (src/shared) */ - -DEFINE_func_8012BC60() /* dedup: shared engine-core @0x8012BC60 (src/shared) */ - -DEFINE_func_8012BCCC() /* dedup: shared engine-core @0x8012BCCC (src/shared) */ - -DEFINE_func_8012BD14() /* dedup: shared engine-core @0x8012BD14 (src/shared) */ - -DEFINE_func_8012BD3C() /* dedup: shared engine-core @0x8012BD3C (src/shared) */ - -DEFINE_func_8012BDBC() /* dedup: shared engine-core @0x8012BDBC (src/shared) */ - -DEFINE_func_8012BE54() /* dedup: shared engine-core @0x8012BE54 (src/shared) */ - -DEFINE_func_8012BE98() /* dedup: shared engine-core @0x8012BE98 (src/shared) */ - -DEFINE_func_8012BEE8() /* dedup: shared engine-core @0x8012BEE8 (src/shared) */ - -DEFINE_func_8012BF10() /* dedup: shared engine-core @0x8012BF10 (src/shared) */ - - -void func_8012BF4C(s32 *a0, s32 a1) { - *(s32*)((s32)a0 + 0x1C) = a1; -} - - -DEFINE_func_8012BF54() /* dedup: shared engine-core @0x8012BF54 (src/shared) */ - -DEFINE_func_8012BF68() /* dedup: shared engine-core @0x8012BF68 (src/shared) */ - -DEFINE_func_8012BF7C() /* dedup: shared engine-core @0x8012BF7C (src/shared) */ - -DEFINE_func_8012BFA8() /* dedup: shared engine-core @0x8012BFA8 (src/shared) */ - -DEFINE_func_8012C044() /* dedup: shared engine-core @0x8012C044 (src/shared) */ - -DEFINE_func_8012C098() /* dedup: shared engine-core @0x8012C098 (src/shared) */ - -DEFINE_func_8012C0EC() /* dedup: shared engine-core @0x8012C0EC (src/shared) */ - -DEFINE_func_8012C194() /* dedup: shared engine-core @0x8012C194 (src/shared) */ - -DEFINE_func_8012C1B8() /* dedup: shared engine-core @0x8012C1B8 (src/shared) */ - -DEFINE_func_8012C1DC() /* dedup: shared engine-core @0x8012C1DC (src/shared) */ - -DEFINE_func_8012C218() /* dedup: shared engine-core @0x8012C218 (src/shared) */ - -DEFINE_func_8012C284() /* dedup: shared engine-core @0x8012C284 (src/shared) */ - -DEFINE_func_8012C2D0() /* dedup: shared engine-core @0x8012C2D0 (src/shared) */ - -DEFINE_func_8012C31C() /* dedup: shared engine-core @0x8012C31C (src/shared) */ - -DEFINE_func_8012C354() /* dedup: shared engine-core @0x8012C354 (src/shared) */ - -DEFINE_func_8012C438() /* dedup: shared engine-core @0x8012C438 (src/shared) */ - -DEFINE_func_8012C51C() /* dedup: shared engine-core @0x8012C51C (src/shared) */ - -DEFINE_func_8012C588() /* dedup: shared engine-core @0x8012C588 (src/shared) */ - -DEFINE_func_8012C658() /* dedup: shared engine-core @0x8012C658 (src/shared) */ - -DEFINE_func_8012C724() /* dedup: shared engine-core @0x8012C724 (src/shared) */ - -DEFINE_func_8012C750() /* dedup: shared engine-core @0x8012C750 (src/shared) */ - -DEFINE_func_8012C820() /* dedup: shared engine-core @0x8012C820 (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (149 ins). Counter (*(u16 *)&D_801270C4): gcc CSE's the two reads (store to -// dst+0x36 assumed non-aliasing the global) AND folds %lo per-access — target instead RELOADS -// and keeps &(*(u16 *)&D_801270C4) in one reg. Fix = pin a `u16*` to $v1 (register asm "$3"), read via -// `*(volatile u16*)pc` (defeats CSE -> 2 loads) but STORE via plain `*pc` (non-volatile store -// schedules store-before-sll, no extra `move`). count is s16 so `count==0` -> `sll 16;bnez`. -// else-block obj must be a BLOCK-LOCAL (gcc then picks $a1, not the shared if-branch $a0). - -DEFINE_func_8012C890() /* dedup: shared engine-core @0x8012C890 (src/shared) */ - - -DEFINE_func_8012CAE4() /* dedup: shared engine-core @0x8012CAE4 (src/shared) */ - -DEFINE_func_8012CB64() /* dedup: shared engine-core @0x8012CB64 (src/shared) */ - -DEFINE_func_8012CBA4() /* dedup: shared engine-core @0x8012CBA4 (src/shared) */ - -DEFINE_func_8012CBCC() /* dedup: shared engine-core @0x8012CBCC (src/shared) */ - -DEFINE_func_8012CBF4() /* dedup: shared engine-core @0x8012CBF4 (src/shared) */ - -DEFINE_func_8012CC1C() /* dedup: shared engine-core @0x8012CC1C (src/shared) */ - -DEFINE_func_8012CC40() /* dedup: shared engine-core @0x8012CC40 (src/shared) */ - -DEFINE_func_8012CC64() /* dedup: shared engine-core @0x8012CC64 (src/shared) */ - - -DEFINE_func_8012CC88() /* dedup: shared engine-core @0x8012CC88 (src/shared) */ - - -DEFINE_func_8012CE2C() /* dedup: shared engine-core @0x8012CE2C (src/shared) */ - -DEFINE_func_8012CEB0() /* dedup: shared engine-core @0x8012CEB0 (src/shared) */ - -DEFINE_func_8012CFA8() /* dedup: shared engine-core @0x8012CFA8 (src/shared) */ - -DEFINE_func_8012D098() /* dedup: shared engine-core @0x8012D098 (src/shared) */ - -DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */ - -DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */ - -DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */ - -DEFINE_func_8012D4B4() /* dedup: shared engine-core @0x8012D4B4 (src/shared) */ - -DEFINE_func_8012D5DC() /* dedup: shared engine-core @0x8012D5DC (src/shared) */ - -DEFINE_func_8012D5E4() /* dedup: shared engine-core @0x8012D5E4 (src/shared) */ - -DEFINE_func_8012D624() /* dedup: shared engine-core @0x8012D624 (src/shared) */ - -// @class: schedule -// @stuck: none — MATCH - - - -int func_8012D664(int arg0, int arg1, int arg2) { - extern int func_8012F568(); - extern int D_8018B8A8; - - struct S8012D664_8012D664 s; - int ret; - int t; - - s.a = (*(unsigned short*)&D_80126B5E); - s.b = (*(unsigned short*)&D_80126B62) - 0x40; - s.c = (*(unsigned short*)&D_80126B66); - ret = ((int(*)())func_800132BC)(arg0, &s); - t = arg1 + 0x20; - if (ret < t * t) { - func_8012F568(1, 1, 0, arg2, arg0, &D_8018B8A8); - return 1; - } - return 0; -} - - - -DEFINE_func_8012D714() /* dedup: shared engine-core @0x8012D714 (src/shared) */ - - - -extern void func_8012F568(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void func_8014C978(void); -extern M2C_UNK D_8018B8B0; -extern M2C_UNK D_8018B8B8; - -s32 func_8012DB84(void) -{ - func_8014C978(); - func_8012F568(1, 0xC001, 0, 0x3E8, &D_8018B8B0, &D_8018B8B8); -} - - -DEFINE_func_8012DBD0() /* dedup: shared engine-core @0x8012DBD0 (src/shared) */ - -// @class: regalloc-order -// @stuck: none — MATCH - - - - -s32 func_8012DDA4() -{ - extern Entry_8012DDA4 * D_801E9524; - extern Entry_8012DDA4 * D_801E9520; - - Entry_8012DDA4 *p; - Entry_8012DDA4 *end = ((Entry_8012DDA4 *)D_80126720); - - while (D_801E9524 != end) { - p = D_801E9524; - if (p->active != 0 && p != D_801E9520) { - D_801E9524 = p + 1; - return p; - } - D_801E9524++; - } - D_801E9524 = 0; - return 0; -} - - - -// @class: plumbing -// @stuck: none — MATCH (35/35 ins, relocation-masked) - - -s32 func_8012DE2C(s32 a0) { - extern u8 * D_801E9524; - extern u8 * D_801E9520; - - u8 *base; - u8 *end; - u8 *p; - - base = D_801202A0; - end = base + 0x6480; - D_801E9524 = base; - D_801E9520 = ((u8 *)a0); - - while (D_801E9524 != end) { - p = D_801E9524; - if (*(u16 *)p != 0 && p != ((u8 *)a0)) { - D_801E9524 = p + 0x10C; - return p; - } - D_801E9524 += 0x10C; - } - D_801E9524 = 0; - return 0; -} - - - -DEFINE_func_8012DEB8() /* dedup: shared engine-core @0x8012DEB8 (src/shared) */ - -DEFINE_func_8012DF34() /* dedup: shared engine-core @0x8012DF34 (src/shared) */ - -DEFINE_func_8012DFBC() /* dedup: shared engine-core @0x8012DFBC (src/shared) */ - -DEFINE_func_8012DFCC() /* dedup: shared engine-core @0x8012DFCC (src/shared) */ - -DEFINE_func_8012DFD4() /* dedup: shared engine-core @0x8012DFD4 (src/shared) */ - -DEFINE_func_8012E014() /* dedup: shared engine-core @0x8012E014 (src/shared) */ - -DEFINE_func_8012E138() /* dedup: shared engine-core @0x8012E138 (src/shared) */ - - -s32 func_8012E27C(void) { - return 1; -} - - -DEFINE_func_8012E284() /* dedup: shared engine-core @0x8012E284 (src/shared) */ - -DEFINE_func_8012E28C() /* dedup: shared engine-core @0x8012E28C (src/shared) */ - -DEFINE_func_8012E32C() /* dedup: shared engine-core @0x8012E32C (src/shared) */ - - -/* func_8012E364 (ov_SC01_077_jr_8012ACE0) — MATCH, 67/67 ins, 0 mismatched (reloc-masked). - * - * Verified: - * python3 tools/match_one.py func_8012E364 --c .run/near6/wave23/func_8012E364.c \ - * --asm-subdir asm/ov_SC01_077/nonmatchings/ov_SC01_077_jr_8012ACE0 - * -> MATCH (67 ins) func_8012E364 - * - * Symbols: sig_hints listed no callees and no data decls for this fn, so the three externs below - * are derived from the asm's %hi/%lo pairs: - * D_80126CE0 -> `lh` (0x8012E370) => s16 - * D_801E9518 -> `lw`/`sw` => s32 - * D_801E951C -> `lw`/`sw` => s32 - * D_80126CE0 is already declared `extern s16 D_80126CE0;` inside ov_SC03_099_jr_8016AB6C.c etc., - * so the s16 typing is consistent with the rest of the tree. - * - * --------------------------------------------------------------------------------------------- - * HOW THE LAST 7 SLOTS CAME OFF (wave22 plateaued here at closeness 7; that header's - * "genuine regalloc hard tail / not C-expressible" verdict was WRONG on both clusters). - * - * CLUSTER B - idx 59-62 (`nop`/`negu $v1,$v1` vs `addu $v0,$v1,$zero`/`negu $v0,$v0`): 7 -> 3. - * NOT a delay-slot (dbr) residual at all. `mips.md:1526 abssi2` is a 3-instruction `multi` - * template that emits its OWN branch AND fills its OWN slot: - * REGNO(op0) == REGNO(op1): "bgez %1,1f%#\n\tsubu %0,%z2,%0\n1:" (slot -> maspsx nop) - * REGNO(op0) != REGNO(op1): "%(bgez %1,1f\n\tmove %0,%1\n\tsubu %0,%z2,%0\n1:%)" - * The target IS the second form (`.set noreorder` + `move` in the slot). So the whole residual - * was one question: does the abs DEST get a different hard reg from its SOURCE? - * Two edits, both required: - * (a) spell the abs as `__builtin_abs(v)` so a real `(abs:SI ...)` insn exists. A hand-rolled - * `d = v; if (d<0) d = -d;` is equivalent (cse folds it to the same abs insn - the wave22 - * draft was ALREADY going through abssi2, it just hit the dest==src arm), but a - * `(v<0) ? -v : v` ternary does NOT fold here: 68 ins, 19 off. - * (b) PIN the abs result to $2. Unpinned, local-alloc's combine_regs (K8) ties the abs dest - * into its dying input `v` -> REGNO(op0)==REGNO(op1) -> the nop form. Measured: the same - * file with `s32 d;` instead of the pin is 5 off; with the pin, 3 off. - * (Rejected on measurement: `d = v; asm("" :: "r"(v))` dead-read to break the tie = 68 ins/13; - * RC-12 `$0`-add opaque copy = 9; pinning d to $3 = 5.) - * - * CLUSTER A - idx 43-45 (the D_801E951C load vs the 0x20($a2) load, swapped): 3 -> MATCH. - * Pure sched1 rank, and it IS steerable (sched.md S2, the birthing boost). The `.i.sched` dump - * of the wave22 draft says it outright: - * ;; insn[ 104]: priority = 1 (prev = D_801E951C) - * ;; insn[ 107]: priority = 1 (a = *(arg0+0x20)) - * ;; ready list at T-17: 107 (1) 104 (7f000001), now 104 107 - * Equal base priority, but 104 carries the `adjust_priority`/`birthing_insn_p` boost - * (sched.c:2506/2469 - `reg_n_sets[dest] == 1`) and 107 does NOT, because wave22 reused ONE - * variable `a` for four roles (hint value, division result, both tail entity loads) -> 4 sets. - * Backward scheduling means picked-first = placed-LAST, so the boosted 104 got pushed BELOW 107. - * Fix: give each tail entity load its own single-set local (`e1`, `e2`). Now both loads are - * boosted, the rank falls through to `rank_for_schedule`'s LUID tie-break (sched.c:2427, - * "highest LUID first" = ascending source order forward) and the two loads come out in - * statement order = the target order. - * NB the wave22 header's claim "splitting `a` regresses 2 slots" only applies to splitting the - * FIRST two roles (hint value / division result) - those must stay one multi-set cross-block - * variable. Splitting only the TAIL roles is what pays. - * - * LOAD-BEARING constructs (do not "simplify"): - * 1. `spd` - a local holding 0x1000 SET BEFORE the if/else chain, so the constant lives in a - * pseudo across the branch: `addiu $a3,$zero,0x1000` in the `blez` slot at 0x8012E3DC and the - * `sw $a3` / `addu $v1,$v1,$a3` forms at L8012E410. - * 2. `a` reused for the D_80126CE0 value AND the division result (multi-set, cross-block) - that - * is what puts the quotient in $a0 (`subu $a0,$v0,$v1`) instead of coalescing into $v0. - * 3. `flags` pinned to $2 (dropping it = 13 off) and `prev` pinned to $5 (dropping it = 6 off). - * 4. `d` pinned to $2 - see CLUSTER B(b). - * 5. `e1`/`e2` must be SEPARATE single-set locals - see CLUSTER A. - * The `arg0` $6 pin is NOT load-bearing any more (verified: still MATCH without it); it is kept - * because it costs nothing and documents the target's `addu $a2,$a0,$zero`. - */ - -void func_8012E364(s32 arg0_) -{ - - extern s16 D_80126CE0; - extern s32 D_801E9518; - extern s32 D_801E951C; - register s32 arg0 __asm__("$6"); - register s32 prev __asm__("$5"); - register u16 flags __asm__("$2"); - s32 a; - s32 diff; - s32 v; - register s32 d __asm__("$2"); - s32 spd; - s32 e1; - s32 e2; - - arg0 = arg0_; - *(s16 *)(arg0 + 0x5C) = 0; - a = D_80126CE0; - if (a == 0) { - D_801E9518 = 0x1000; - D_801E951C = 0x1000; - } - a = ((0x90 - a) << 12) / 0x90; - *(s32 *)(arg0 + 0x1C) += 1; - spd = 0x1000; - - diff = D_801E9518 - a; - if (diff > 0) { - D_801E9518 -= diff >> 2; - } else if (diff < 0) { - D_801E9518 += (-diff) / 4; - } - - prev = D_801E951C; - e1 = *(s32 *)(arg0 + 0x20); - v = D_801E9518 - prev + spd; - D_801E951C = spd; - flags = *(u16 *)(e1 + 0x2C); - D_801E9518 = v; - *(u16 *)(e1 + 0x2C) = flags | 0x10; - - e2 = *(s32 *)(arg0 + 0x20); - d = __builtin_abs(v); - *(s16 *)(e2 + 0x1C) = d; - *(s16 *)(e2 + 0x18) = d; - *(s16 *)(*(s32 *)(arg0 + 0x20) + 0x1A) = 0x1000; -} - - -DEFINE_func_8012E470() /* dedup: shared engine-core @0x8012E470 (src/shared) */ - -DEFINE_func_8012E4C8() /* dedup: shared engine-core @0x8012E4C8 (src/shared) */ - -DEFINE_func_8012E504() /* dedup: shared engine-core @0x8012E504 (src/shared) */ - -DEFINE_func_8012E544() /* dedup: shared engine-core @0x8012E544 (src/shared) */ - -DEFINE_func_8012E57C() /* dedup: shared engine-core @0x8012E57C (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH -DEFINE_func_8012E5CC() /* dedup: shared engine-core @0x8012E5CC (src/shared) */ - - -DEFINE_func_8012E688() /* dedup: shared engine-core @0x8012E688 (src/shared) */ - -#define gte_SetRotMatrix(r0) __asm__ volatile ( \ - "lw $12, 0( %0 );" \ - "lw $13, 4( %0 );" \ - "ctc2 $12, $0;" \ - "ctc2 $13, $1;" \ - "lw $12, 8( %0 );" \ - "lw $13, 12( %0 );" \ - "lw $14, 16( %0 );" \ - "ctc2 $12, $2;" \ - "ctc2 $13, $3;" \ - "ctc2 $14, $4" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_SetTransMatrix(r0) __asm__ volatile ( \ - "lw $12, 20( %0 );" \ - "lw $13, 24( %0 );" \ - "ctc2 $12, $5;" \ - "lw $14, 28( %0 );" \ - "ctc2 $13, $6;" \ - "ctc2 $14, $7" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_ldlv0(r0) __asm__ volatile ( \ - "lhu $13, 4( %0 );" \ - "lhu $12, 0( %0 );" \ - "sll $13, $13, 16;" \ - "or $12, $12, $13;" \ - "mtc2 $12, $0;" \ - "lwc2 $1, 8( %0 )" \ - : \ - : "r"( r0 ) \ - : "$12", "$13" ) -#define gte_rtps() __asm__ volatile ("nop;nop;rtps") -#define gte_stsxy(r0) __asm__ volatile ( \ - "swc2 $14, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "memory" ) - - - -DEFINE_func_8012E778() /* dedup: shared engine-core @0x8012E778 (src/shared) */ - - -DEFINE_func_8012E88C() /* dedup: shared engine-core @0x8012E88C (src/shared) */ - -DEFINE_func_8012E8A8() /* dedup: shared engine-core @0x8012E8A8 (src/shared) */ - -DEFINE_func_8012E8C4() /* dedup: shared engine-core @0x8012E8C4 (src/shared) */ - -DEFINE_func_8012E8E0() /* dedup: shared engine-core @0x8012E8E0 (src/shared) */ - - - -// @class: other -// @stuck: none — MATCH (branch-polarity invert: `0x78 != 0` puts compute block as fall-through) - -extern void func_8016AA50(int, int); -extern void func_8016B428(int); -extern void func_80019064(void *); -extern int D_8018B8C0; - -void func_8012E9C0(int param_1) -{ - int iVar1; - - if (*(short *)(param_1 + 0x60) != 0) { - if (*(unsigned char *)(param_1 + 0x5e) == 0x1d) { - *(short *)(param_1 + 0x82) = 0; - *(short *)(param_1 + 0x7c) = *(unsigned short *)(param_1 + 6); - *(short *)(param_1 + 0x7e) = *(unsigned short *)(param_1 + 0xa); - *(short *)(param_1 + 0x80) = *(unsigned short *)(param_1 + 0xe); - } - if (*(int *)(param_1 + 0x78) != 0) { - iVar1 = *(short *)(param_1 + 0x60) * - *(short *)(*(int *)(param_1 + 0x78) + 0x30) >> 0xc; - if (iVar1 < 1) { - iVar1 = 1; - } - } else { - iVar1 = *(short *)(param_1 + 0x60); - } - func_8016AA50(param_1, iVar1); - if ((*(unsigned short *)(param_1 + 0x82) & 1) != 0) { - func_8016B428(param_1); - func_80019064(&D_8018B8C0); - } - } - return; -} - - - - -// @class: regalloc-order -// @stuck: none — MATCH (93 ins) - - -extern void func_80049CAC(s32 a0, s32 a1); - -/* Blk16 lifted to src/shared/engine_types.h (Phase 22). */ - -DEFINE_func_8012EA90() /* dedup: shared engine-core @0x8012EA90 (src/shared) */ - - -DEFINE_func_8012EC04() /* dedup: shared engine-core @0x8012EC04 (src/shared) */ - -DEFINE_func_8012EECC() /* dedup: shared engine-core @0x8012EECC (src/shared) */ - -DEFINE_func_8012EF34() /* dedup: shared engine-core @0x8012EF34 (src/shared) */ - -DEFINE_func_8012EF70() /* dedup: shared engine-core @0x8012EF70 (src/shared) */ - -#define gte_SetRotMatrix(r0) __asm__ volatile ( \ - "lw $12, 0( %0 );" \ - "lw $13, 4( %0 );" \ - "ctc2 $12, $0;" \ - "ctc2 $13, $1;" \ - "lw $12, 8( %0 );" \ - "lw $13, 12( %0 );" \ - "lw $14, 16( %0 );" \ - "ctc2 $12, $2;" \ - "ctc2 $13, $3;" \ - "ctc2 $14, $4" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_SetTransMatrix(r0) __asm__ volatile ( \ - "lw $12, 20( %0 );" \ - "lw $13, 24( %0 );" \ - "ctc2 $12, $5;" \ - "lw $14, 28( %0 );" \ - "ctc2 $13, $6;" \ - "ctc2 $14, $7" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_rtps() __asm__ volatile ("nop;nop;rtps") -#define gte_stsxy(r0) __asm__ volatile ( \ - "swc2 $14, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "memory" ) -#define gte_SetRotMatrix(r0) __asm__ volatile ( \ - "lw $12, 0( %0 );" \ - "lw $13, 4( %0 );" \ - "ctc2 $12, $0;" \ - "ctc2 $13, $1;" \ - "lw $12, 8( %0 );" \ - "lw $13, 12( %0 );" \ - "lw $14, 16( %0 );" \ - "ctc2 $12, $2;" \ - "ctc2 $13, $3;" \ - "ctc2 $14, $4" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_SetTransMatrix(r0) __asm__ volatile ( \ - "lw $12, 20( %0 );" \ - "lw $13, 24( %0 );" \ - "ctc2 $12, $5;" \ - "lw $14, 28( %0 );" \ - "ctc2 $13, $6;" \ - "ctc2 $14, $7" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_ldv0(r0) __asm__ volatile ( \ - "lwc2 $0, 0( %0 );" \ - "lwc2 $1, 4( %0 )" \ - : \ - : "r"( r0 ) ) -#define gte_rtps() __asm__ volatile ("nop;nop;rtps") -#define gte_stsxy(r0) __asm__ volatile ( \ - "swc2 $14, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "memory" ) -#define gte_stflg(r0) __asm__ volatile ( \ - "cfc2 $12, $31;" \ - "nop;" \ - "sw $12, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "$12", "memory" ) -#define gte_SetRotMatrix(r0) __asm__ volatile ( \ - "lw $12, 0( %0 );" \ - "lw $13, 4( %0 );" \ - "ctc2 $12, $0;" \ - "ctc2 $13, $1;" \ - "lw $12, 8( %0 );" \ - "lw $13, 12( %0 );" \ - "lw $14, 16( %0 );" \ - "ctc2 $12, $2;" \ - "ctc2 $13, $3;" \ - "ctc2 $14, $4" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_SetTransMatrix(r0) __asm__ volatile ( \ - "lw $12, 20( %0 );" \ - "lw $13, 24( %0 );" \ - "ctc2 $12, $5;" \ - "lw $14, 28( %0 );" \ - "ctc2 $13, $6;" \ - "ctc2 $14, $7" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_ldv0(r0) __asm__ volatile ( \ - "lwc2 $0, 0( %0 );" \ - "lwc2 $1, 4( %0 )" \ - : \ - : "r"( r0 ) ) -#define gte_stflg(r0) __asm__ volatile ( \ - "cfc2 $12, $31;" \ - "nop;" \ - "sw $12, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "$12", "memory" ) - -/* §37/§124 asm-label alias: the fleet canon declares this `extern void - * func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in - * src/shared/engine_core.h (the one at src/ov_SC01_077/ov_SC01_077_jr_8012ACE0.c:1169 - * comes from DEFINE_func_8012EF70()). The byte-true body returns s32 and takes - * TWO pointers, so it conflicts on BOTH the return axis and the arity axis. - * Aliasing the C name sidesteps both with no header edit and no codegen change. - * This declaration MUST travel with the body. */ -s32 aF8012EFB8(void *param_1, void *param_2) __asm__("func_8012EFB8"); - -DEFINE_func_8012EFB8() /* dedup: shared engine-core @0x8012EFB8 (src/shared) */ - - - -// @class: other -// @stuck: none — MATCH (33 ins, match_one verified) - -DEFINE_func_8012F038() /* dedup: shared engine-core @0x8012F038 (src/shared) */ - - -DEFINE_func_8012F0BC() /* dedup: shared engine-core @0x8012F0BC (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH (clone of confirmed func_8012F214 template; passthrough a0) -DEFINE_func_8012F14C() /* dedup: shared engine-core @0x8012F14C (src/shared) */ - - -DEFINE_func_8012F1A4() /* dedup: shared engine-core @0x8012F1A4 (src/shared) */ - -DEFINE_func_8012F214() /* dedup: shared engine-core @0x8012F214 (src/shared) */ - -DEFINE_func_8012F274() /* dedup: shared engine-core @0x8012F274 (src/shared) */ - -DEFINE_func_8012F2E8() /* dedup: shared engine-core @0x8012F2E8 (src/shared) */ - -DEFINE_func_8012F374() /* dedup: shared engine-core @0x8012F374 (src/shared) */ - - - -// @class: remat -// @stuck: none — MATCH - -DEFINE_func_8012F40C() /* dedup: shared engine-core @0x8012F40C (src/shared) */ - - -DEFINE_func_8012F49C() /* dedup: shared engine-core @0x8012F49C (src/shared) */ - -DEFINE_func_8012F568() /* dedup: shared engine-core @0x8012F568 (src/shared) */ - -DEFINE_func_8012F5F4() /* dedup: shared engine-core @0x8012F5F4 (src/shared) */ - -DEFINE_func_8012F68C() /* dedup: shared engine-core @0x8012F68C (src/shared) */ - -DEFINE_func_8012F75C() /* dedup: shared engine-core @0x8012F75C (src/shared) */ - -DEFINE_func_8012F7B4() /* dedup: shared engine-core @0x8012F7B4 (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH (pending gate) -extern void func_80131170(); -extern void func_80131CA8(); -extern unsigned char D_8018B8DC[]; - -void func_8012F828(int param_1) -{ - *(unsigned char *)(param_1 + 0xC1) = 4; - if (*(unsigned int *)(param_1 + 0xB4) & 8) { - func_80131170(param_1, D_8018B8DC, 0xB); - } - func_80131CA8(param_1, 9); -} - - -DEFINE_func_8012F87C() /* dedup: shared engine-core @0x8012F87C (src/shared) */ - - -extern void func_80131170(s32 a0, s32 a1, s32 a2); -extern void func_80131CA8(int a0, int a1); -extern u8 D_8018B8E8[]; - -void func_8012F8C8(u8* arg0) { - *(u8*)(arg0 + 0xC1) = 7; - if (*(u32*)(arg0 + 0xB4) & 0x80) { - ((void (*)(void*, void*, s32))func_80131170)(arg0, D_8018B8E8, 0xB); - } - ((void (*)(void*, s32))func_80131CA8)(arg0, 0x16); -} - - -DEFINE_func_8012F91C() /* dedup: shared engine-core @0x8012F91C (src/shared) */ - -DEFINE_func_8012F968() /* dedup: shared engine-core @0x8012F968 (src/shared) */ - -DEFINE_func_8012FB54() /* dedup: shared engine-core @0x8012FB54 (src/shared) */ - -DEFINE_func_8012FC30() /* dedup: shared engine-core @0x8012FC30 (src/shared) */ - -DEFINE_func_8012FCA4() /* dedup: shared engine-core @0x8012FCA4 (src/shared) */ - -// @class: schedule -// @stuck: none — MATCH (57 ins), byte-exact via rtu_match on the real TU. -// ROOT CAUSE of the prior 3-off "irreducible schedule-steal": the wave-2 draft had the WRONG ARITY for -// func_80131B14. It cast the call to (int,int) and passed (param_1, 0x1C), which forced `li a1,0x1C` to be -// func_80131B14's OWN arg. That premise made the beqz-delay `li a1,0x1C` / jal-delay `move a0,s0` look like an -// un-reorderable {li,move} schedule-steal (calls.c emits a0 first; sched2 keeps LUID; reorg swaps them). -// THE FIX: func_80131B14 takes ONE arg — ((void(*)(int))func_80131B14)(param_1). Then: -// - func_80131B14's own delay slot = `move a0,s0` (its a0 arg), and a1 is NOT live across it. -// - the `li a1,0x1C` in the beqz(0x100) delay slot is the TERMINAL func_80131CA8(param_1,0x1C)'s arg, which -// reorg fill_slots_from_thread shares into the delay slot for the beqz-taken (else) edge FOR FREE, because -// a1 is dead on the fall-through (1-arg func_80131B14 never reads a1) so there is no resource conflict. -// No barrier, no register pin, no schedule mutation — the correct arity makes the target schedule fall out -// of stock gcc-2.7.2 reorg. (Lesson for the cookbook: before conceding a delay-slot "steal" as irreducible, -// re-derive the CALLEE ARITY from the asm — a spurious extra register arg that is live across the call is what -// blocks reorg from sharing a downstream constant into a branch delay slot.) - - -s32 func_8012FCC4(s32 param_1) { - extern int D_8018B8F4; - - int v1 = *(int *)(((int)param_1) + 0xC4); - *(char *)(((int)param_1) + 0xC1) = 8; - if (v1 & 2) { - *(char *)(((int)param_1) + 0xC1) = 1; - func_80131CA8(((int)param_1), 3); - return; - } - if (v1 & 1) { - ((void (*)(int, int))func_80131E00)(((int)param_1), 1); - return; - } - if (*(int *)(((int)param_1) + 0xB4) & 0x100) { - ((void (*)(int))func_80131B14)(((int)param_1)); - if (*(short *)(((int)param_1) + 0x76) <= 0) { - ((void (*)(int, int))func_80131E00)(((int)param_1), 0xC); - return; - } - if (((s32(*)(s32, s32))func_80131A34)(((int)param_1), 4) != 0) { - *(char *)(((int)param_1) + 0xC2) = 0; - } else { - *(short *)(((int)param_1) + 0x98) = 0; - *(char *)(((int)param_1) + 0xC2) = 1; - } - ((void (*)(int, void *))func_8012B14C)(((int)param_1), &D_8018B8F4); - *(int *)(((int)param_1) + 0x1C) = 0; - func_80131CA8(((int)param_1), 0x1C); - return; - } - func_80131CA8(((int)param_1), 0x1C); -} - - - -DEFINE_func_8012FDA8() /* dedup: shared engine-core @0x8012FDA8 (src/shared) */ - -DEFINE_func_8012FE70() /* dedup: shared engine-core @0x8012FE70 (src/shared) */ - -DEFINE_func_8012FF00() /* dedup: shared engine-core @0x8012FF00 (src/shared) */ - -DEFINE_func_8012FF4C() /* dedup: shared engine-core @0x8012FF4C (src/shared) */ - -DEFINE_func_8012FF98() /* dedup: shared engine-core @0x8012FF98 (src/shared) */ - -DEFINE_func_8013001C() /* dedup: shared engine-core @0x8013001C (src/shared) */ - -DEFINE_func_80130088() /* dedup: shared engine-core @0x80130088 (src/shared) */ - -DEFINE_func_801300F4() /* dedup: shared engine-core @0x801300F4 (src/shared) */ - -DEFINE_func_801301E8() /* dedup: shared engine-core @0x801301E8 (src/shared) */ - -DEFINE_func_80130278() /* dedup: shared engine-core @0x80130278 (src/shared) */ - -DEFINE_func_80130314() /* dedup: shared engine-core @0x80130314 (src/shared) */ - -DEFINE_func_80130360() /* dedup: shared engine-core @0x80130360 (src/shared) */ - -DEFINE_func_801303A0() /* dedup: shared engine-core @0x801303A0 (src/shared) */ - -DEFINE_func_801303EC() /* dedup: shared engine-core @0x801303EC (src/shared) */ - -DEFINE_func_80130438() /* dedup: shared engine-core @0x80130438 (src/shared) */ - -DEFINE_func_80130514() /* dedup: shared engine-core @0x80130514 (src/shared) */ - -DEFINE_func_801305CC() /* dedup: shared engine-core @0x801305CC (src/shared) */ - -DEFINE_func_80130650() /* dedup: shared engine-core @0x80130650 (src/shared) */ - -DEFINE_func_80130740() /* dedup: shared engine-core @0x80130740 (src/shared) */ - -DEFINE_func_801307B0() /* dedup: shared engine-core @0x801307B0 (src/shared) */ - -DEFINE_func_80130858() /* dedup: shared engine-core @0x80130858 (src/shared) */ - -DEFINE_func_80130898() /* dedup: shared engine-core @0x80130898 (src/shared) */ - -DEFINE_func_801308DC() /* dedup: shared engine-core @0x801308DC (src/shared) */ - -DEFINE_func_80130974() /* dedup: shared engine-core @0x80130974 (src/shared) */ - -DEFINE_func_80130A18() /* dedup: shared engine-core @0x80130A18 (src/shared) */ - -DEFINE_func_80130AC4() /* dedup: shared engine-core @0x80130AC4 (src/shared) */ - -DEFINE_func_80130AF0() /* dedup: shared engine-core @0x80130AF0 (src/shared) */ - -DEFINE_func_80130C08() /* dedup: shared engine-core @0x80130C08 (src/shared) */ - - -DEFINE_func_80130D0C() /* dedup: shared engine-core @0x80130D0C (src/shared) */ - - - -// @class: regalloc-order -// @stuck: none — MATCH (266/266). Levers: pin pa=$s2 p=$s3, tbl=$s0 (NOT s1v — leave natural so switch-mask lands in $v1); tight-block pins for the table-addr temps `register s32 v1 __asm__("$3"); register s8 *bp __asm__("$2")` force offset=$v1/base=$v0 (else compute-into-dest $s0); inline offset `TABLE + s1v*2` (late) keeps the 2-sll delay-slot dup; 0x60000 reuses `tbl` (not a fresh `e`) so it stays $s0 and materializes after rand(). -DEFINE_func_80130D48() /* dedup: shared engine-core @0x80130D48 (src/shared) */ - - -// @class: loop-guard -// @stuck: none — MATCH (88 ins). Keys: duplicate the c!=0/c==0 bodies verbatim (gcc cross-jumps -// the shared "|=4;goto tail" into L240 on its own); tail dispatch as `if (((s32(*)(s32))func_8012BCCC)(p) <= 0x8FFF)` -// (the <= polarity makes the >0x8FFF/0x33-first block the bnez'd else=L298, fall-through = 0x32-first); -// both AC8 tails cross-jump-merge into the shared L2AC final call. Externs aligned to the file's -// existing decls for gate-safety: func_80131B14(void) [file line 1486], func_8012B14C/func_8012BCCC -// canonical (s32) [DEFINE macros], ((s32(*)())func_80131AC8)() no-proto (compatible w/ later 1-arg DEFINE, 2-arg call). - - -void func_80131170(s32 p, s32 b, s32 c) { - extern u8 D_8018B8D0[]; - - func_80131B14(); - *(u8 *)(((u8 *)p) + 0xC2) = 0; - *(u8 *)(((u8 *)p) + 0xC3) = 0; - *(s16 *)(((u8 *)p) + 0x98) = 0; - if (((u8 *)b) == 0) { - ((u8 *)b) = D_8018B8D0; - } - func_8012B14C((s32)((u8 *)p), (s32)((u8 *)b)); - *(s32 *)(((u8 *)p) + 0x1C) = 0; - if (c != 0) { - if (((s32(*)(s32, s32))func_80131A34)((s32)((u8 *)p), c) != 0) goto tail; - if (((s32(*)(s32, s32))func_80131A34)((s32)((u8 *)p), 0x24) != 0) goto tail; - *(s32 *)(((u8 *)p) + 0xC4) &= ~4; - if (((s32(*)(s32, s32))func_80131A34)((s32)((u8 *)p), 0x20) != 0) { - *(s32 *)(((u8 *)p) + 0xC4) |= 4; - } else { - *(s16 *)(((u8 *)p) + 0x98) = 0; - } - } else { - if (((s32(*)(s32, s32))func_80131A34)((s32)((u8 *)p), 0x24) != 0) goto tail; - *(s32 *)(((u8 *)p) + 0xC4) &= ~4; - if (((s32(*)(s32, s32))func_80131A34)((s32)((u8 *)p), 0x20) != 0) { - *(s32 *)(((u8 *)p) + 0xC4) |= 4; - } else { - *(s16 *)(((u8 *)p) + 0x98) = 0; - } - } -tail: - if (*(s16 *)(((u8 *)p) + 0x76) > 0) { - return; - } - if (((s32(*)(s32))func_8012BCCC)((s32)((u8 *)p)) <= 0x8FFF) { - if (((s32(*)())func_80131AC8)(((u8 *)p), 0x32) != 0) return; - ((s32(*)())func_80131AC8)(((u8 *)p), 0x33); - } else { - if (((s32(*)())func_80131AC8)(((u8 *)p), 0x33) != 0) return; - ((s32(*)())func_80131AC8)(((u8 *)p), 0x32); - } -} - - - -// @class: struct -// @stuck: none — MATCH (8-byte alignment-1 struct copy → lwl/lwr/swl/swr) - - /* size 8, alignment 1 -> unaligned copy */ - - -s32 func_801312D0(s32 param_1, void *param_2) -{ - extern int func_80131CF4(int, int); - extern M8_801312D0 D_8018BA24; - - int iVar5; - - iVar5 = func_80131CF4(*(int *)(((int)param_1) + 0xBC), 0x2E); - if (iVar5 != 0) { - ((short *)param_2)[2] = 0; - ((short *)param_2)[0] = 0; - ((short *)param_2)[1] = (short)iVar5; - } else { - *(M8_801312D0 *)((short *)param_2) = D_8018BA24; - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (424/424). Verified TWICE: match_one 424/424 standalone AND 424/424 -// relocation-masked through the REAL src/ov_SC01_077/ov_SC01_077_jr_8012ACE0.c at the -// func_80131340 slot (L1635) with every DEFINE_ macro expanded (cpp -> cc1 -> maspsx -// --expand-div -> as, exit 0, zero `conflicting types`). -// -// --------------------------------------------------------------------------------------- -// THE TWO LEVERS THAT CRACKED IT (both byte-proven; do not "clean up"): -// -// (1) `case 0: case 1:` SHARE one block. jtbl_801D8144 (read from the sibling overlay data, -// asm/ov_SC03_099/data/tail2.data.s @801BCE68) is -// [0]=0x80131440 [1]=0x80131440 [2]=0x80131634 [3]=0x8013174C [4]=0x801318F4 -// — two entries point at the SAME block. That is the ONLY reason the shared block -// re-tests `*(u8*)(a0+0xC2) == 0` to gate its vector-init half (gcc-2.7.2 has no VRP, -// so the switch value is not propagated into the case body). -// -// (2) CROSS-JUMP POLARITY (§5a, the 4-instruction shortfall). The `lh 0x76` / E00-vs-C78 -// if-else appears TWICE (case 3's tail @801318DC and case 4 @80131944). Both arms must -// be written `if (x <= 0) E00(a0,6); else C78(a0);` — the SAME polarity in BOTH sites. -// Writing case 3 as the "natural" `if (x > 0) C78 else E00` compiles 4 ins SHORT: gcc -// merges case 3's ENTIRE tail into case 4's (`j` straight to the shared `lh`). -// Why (ground-truthed against tools/reference/gcc-2.7.2/jump.c): -// - jump.c:1969 `find_cross_jump(insn, target, 2, ...)` pairs each `j Lend` with every -// OTHER jump to Lend (the jump_chain) and merges BACKWARD while -// `rtx_renumbered_equal_p` holds. The forward walk hits the LOWER address first, so -// case 3 is always e1 (deleted/redirected) and case 4 is e2 (kept) — hence the -// surviving .L80131954/.L80131964 bodies physically live in case 4. -// - With the matching polarity, case 3's FIRST `j` is the E00 body -> it merges into -// .L80131954, leaving `bgtz -> Lelse; j .L80131954; Lelse:`. Lelse now sits directly -// after the `j`, so jump.c's conditional-jump-around-an-unconditional-jump transform -// fires and INVERTS it to `blez -> .L80131954`; the C78 body then merges into -// .L80131964, giving exactly `blez .L80131954 / j .L80131964`. The two sites are now -// textually different (blez+j vs bgtz+fallthru), so find_cross_jump stops at the -// branch and both `lh` blocks survive. That asymmetric-looking output is EMITTED BY -// symmetric source — the inversion is what creates the asymmetry. -// - With the opposite polarity in case 3, the C78 body merges FIRST, the inversion -// fires the other way, and case 3 becomes byte-identical to case 4 -> fully merged. -// NOTE: the §5a volatile-asm barrier is the WRONG tool here — it would also un-merge the -// .L80131954/.L80131964 call bodies (+8 ins). The fix is polarity, not a barrier. -// -// OTHER BYTE-PROVEN KEYS: -// - Two SEPARATE locals for the two func_80131CF4 results. Reusing one `temp` lets gcc -// coalesce it into $a1 for the second call and emits an extra `move a1,v0` up at the -// FIRST call site (+1 ins, whole-function cascade). -// - The /3 store block: `*(s32*)(a0+0x14) = (-D_801E952C)/3;` must come FIRST (before the -// 0x1C/0xC2 stores). Written after them, gcc will not hoist the D_801E952C load above -// `sw zero,0x1C($s0)` and the mult-latency slots fill differently (9 ins reordered). -// - sp10/18/20/28 are four 8-byte, 2-byte-aligned vectors. `sp28 = sp20` is a DEAD -// aggregate copy that gcc-2.7.2 KEEPS (no aggregate DSE) — it is load-bearing, not dead -// code. align(2) < 4 is what makes the copies lwl/lwr + swl/swr (cf. the TU's own `M8` -// align-1 idiom at L1614, used by func_801312D0 directly above this slot). -// - Every vector field read is `lhu` -> the fields are u16. Contrast `lh 0xA($s0)`, -// `lh 0x76($s0)`, `lh 0x12($v0)`, which are genuinely signed (s16 casts). -// - `func_801319E0(a0)` gets a NOP delay slot, not `addu $a0,$s0,$zero`: cse-2.7.2 deletes -// the redundant arg copy because $a0 still holds the param at the first call. Declaring -// it 0-arg to "explain" the nop would be wrong (canonical is 1-arg) — just call it. -// - `*(s32*)(a0+0x10) = *(s32*)(a0+0x10) * 15 / 16;` -> (x<<4)-x then the bgez/+0xF/sra-4 -// signed-div-by-16 fixup. `>>4` would drop the fixup. -// - func_80131D68 is 2-arg here — (a0, D_801E9528); a1 is reloaded from the global before -// all 5 of its call sites (the value is NOT cached in a callee reg: gcc-2.7.2's cse is -// extended-basic-block-local, so each join point reloads). -// -// DECL RECONCILE (§17a-1) — the TU declares these at FILE scope BEFORE this slot (L1635), -// so they are HARD `conflicting types` if redeclared differently. Sigs below are byte-copies -// of the canonical set; where the canonical return is `void` but the asm USES $v0, the read -// is done with a call-site cast (the codebase's own idiom, engine_core.h L17026) — which is -// codegen-neutral: -// - func_8012CBF4 / func_8012CBA4 / func_8012CC64: canonical `void`, $v0 used -> cast. -// - func_80131E00: canonical takes `struct S80131E00 *` -> declared K&R no-proto here -// (compatible with the prototyped decl at L1250; params are promotion-safe: ptr + s32), -// matching the TU's own precedent `extern void func_80131CA8();` at L1189. -// - func_8012B23C / func_8012CC64 / func_8012CEB0 / func_8012DBD0 / func_8012CBF4 are -// DEFINE_-instantiated ABOVE this slot — the decls here are exact-identical -// redeclarations (legal C), not new sigs. -// - func_80131CF4 is declared 2-arg `(int,int)`, mirroring func_801312D0's already-matched -// block-scope decl at L1619 (the engine_core canonical 1-arg form is the stale one). - -extern void func_801319E0(s32 a0); -extern s32 func_8012DBD0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); -extern void func_8012CC64(s32 a0, s32 a1); -extern int func_80131D68(int, int); -extern s32 func_80143B6C(s32 a0, s32 a1); -extern void func_8012B23C(s32 a0); -extern void func_8012CBA4(s32 a0); -extern void func_8012CBF4(s32 a0); -extern void func_80131E00(); -extern void func_80131C78(s32 a0); -extern void func_80131CA8(int a0, int a1); - -extern s32 D_801E9528; -extern s32 D_801E952C; - -void func_80131340(s32 a0) -{ - /* 8-byte, align-2 vector: align < 4 is what makes the assignments unaligned - * (lwl/lwr + swl/swr) block moves. Block-scope so the body stays self-contained - * for the dedup_propagate lift (§28-#1) and cannot collide with the TU's `M8`. */ - struct V8 { - u16 vx, vy, vz, pad; - }; - extern struct V8 D_8018BA24; - /* BLOCK-scope, mirroring the already-matched func_801312D0's decl at TU L1619: the - * later DEFINE_func_80131AC8() (TU L1964, AFTER this slot) redeclares func_80131CF4 - * with the stale 1-arg engine_core canonical. A file-scope `extern int - * func_80131CF4(int,int);` here is a HARD `conflicting types` against it (cc1 rc=33, - * measured); block-scope goes out of scope before that macro and compiles clean. */ - extern int func_80131CF4(int, int); - - struct V8 sp10; - struct V8 sp18; - struct V8 sp20; - struct V8 sp28; - s32 temp; - s32 var_a1; - - if (*(s16 *)(a0 + 0xA) >= 0x10) { - func_801319E0(a0); - return; - } - - temp = func_80131CF4(*(s32 *)(a0 + 0xBC), 0x2E); - if (temp != 0) { - sp10.vz = 0; - sp10.vx = 0; - sp10.vy = temp; - } else { - sp10 = D_8018BA24; - } - - if (*(s32 *)(a0 + 0x10) != 0 || *(s32 *)(a0 + 0x18) != 0) { - var_a1 = func_80131CF4(*(s32 *)(a0 + 0xBC), 0x19); - if (var_a1 == 0) { - var_a1 = 0x50; - } - func_8012DBD0(a0, var_a1, - *(s16 *)(*(s32 *)(a0 + 0x20) + 0x12) + 0x800, 0x1D); - } - - switch (*(u8 *)(a0 + 0xC2)) { - case 0: - case 1: - if (*(s32 *)(a0 + 0xC4) & 4) { - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x10) -= 0x100; - } - *(s32 *)(a0 + 0x1C) += 1; - if (*(s32 *)(a0 + 0x1C) >= 0x3D) { - func_80131E00(a0, 0xD); - return; - } - if (*(u8 *)(a0 + 0xC2) == 0) { - *(u8 *)(a0 + 0xC2) = 1; - sp18.vx = *(u16 *)(a0 + 0x3A); - sp18.vy = *(u16 *)(a0 + 0x3E); - sp18.vz = *(u16 *)(a0 + 0x42); - sp20 = sp18; - sp20.vx += sp10.vx; - sp20.vy += sp10.vy; - sp20.vz += sp10.vz; - sp28 = sp20; /* load-bearing dead aggregate copy — gcc-2.7.2 has no aggregate DSE */ - func_8012CEB0((s32)&sp18, (s32)&sp20, 1); - sp20.vx -= sp10.vx; - sp20.vy -= sp10.vy; - sp20.vz -= sp10.vz; - *(u16 *)(a0 + 0x3A) = sp20.vx; - *(u16 *)(a0 + 0x3E) = sp20.vy; - *(u16 *)(a0 + 0x42) = sp20.vz; - *(u16 *)(a0 + 0x6) = sp20.vx; - *(u16 *)(a0 + 0xA) = sp20.vy; - *(u16 *)(a0 + 0xE) = sp20.vz; - } - D_801E9528 = ((s32 (*)(s32, s32))func_8012CC64)(a0, (s32)&sp10); - if (D_801E9528 & 0x8000) { - *(s32 *)(a0 + 0x18) = 0; - *(s32 *)(a0 + 0x10) = 0; - } - if (D_801E9528 & 0x4000) { - func_8012B23C(a0); - *(u8 *)(a0 + 0xC2) = 4; - } else if (D_801E9528 & 0x2000) { - if (func_80131D68(a0, D_801E9528) == 1) { - return; - } - *(u8 *)(a0 + 0xC2) = 2; - func_80143B6C(a0, 1); - *(s32 *)(a0 + 0x14) = 0xFFF30000; - *(s32 *)(a0 + 0x1C) = 0; - } else if (D_801E9528 & 0x8000) { - *(u8 *)(a0 + 0xC2) = 2; - *(s32 *)(a0 + 0x1C) = 0; - *(s32 *)(a0 + 0x18) = 0; - *(s32 *)(a0 + 0x10) = 0; - } - break; - - case 2: - if (*(s32 *)(a0 + 0xC4) & 4) { - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x10) -= 0x100; - } - *(s32 *)(a0 + 0x1C) += 1; - if (*(s32 *)(a0 + 0x1C) >= 0x3D) { - func_80131E00(a0, 0xD); - return; - } - D_801E952C = *(s32 *)(a0 + 0x14); - D_801E9528 = ((s32 (*)(s32, s32))func_8012CC64)(a0, (s32)&sp10); - if (D_801E9528 & 0x8000) { - *(s32 *)(a0 + 0x18) = 0; - *(s32 *)(a0 + 0x10) = 0; - } - if (D_801E9528 & 0x4000) { - func_8012B23C(a0); - *(u8 *)(a0 + 0xC2) = 4; - } else if (D_801E9528 & 0x2000) { - if (func_80131D68(a0, D_801E9528) == 1) { - return; - } - func_80143B6C(a0, 1); - /* MUST precede the 0x1C/0xC2 stores — see the header note on the /3 block. */ - *(s32 *)(a0 + 0x14) = (-D_801E952C) / 3; - *(s32 *)(a0 + 0x1C) = 0; - *(u8 *)(a0 + 0xC2) = 3; - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x10) = 0; - } else if (D_801E9528 & 0x8000) { - *(u8 *)(a0 + 0xC2) = 3; - *(s32 *)(a0 + 0x1C) = 0; - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x10) = 0; - *(s32 *)(a0 + 0x18) = 0; - *(s32 *)(a0 + 0x10) = 0; - } - break; - - case 3: - *(s32 *)(a0 + 0x10) = *(s32 *)(a0 + 0x10) * 15 / 16; - *(s32 *)(a0 + 0x18) = *(s32 *)(a0 + 0x18) * 15 / 16; - if (*(u8 *)(a0 + 0xC3) & 1) { - D_801E9528 = ((s32 (*)(s32))func_8012CBA4)(a0); - if (D_801E9528 & 0x8000) { - *(s32 *)(a0 + 0x18) = 0; - *(s32 *)(a0 + 0x10) = 0; - } - if (func_80131D68(a0, D_801E9528) == 1) { - return; - } - if (!(D_801E9528 & 0x6000)) { - func_80131E00(a0, 0xD); - return; - } - } else { - D_801E9528 = ((s32 (*)(s32))func_8012CBF4)(a0); - if (D_801E9528 & 0x8000) { - *(s32 *)(a0 + 0x18) = 0; - *(s32 *)(a0 + 0x10) = 0; - } - if (D_801E9528 & 0x4000) { - func_8012B23C(a0); - *(u8 *)(a0 + 0xC2) = 4; - break; - } else if (D_801E9528 & 0x2000) { - if (func_80131D68(a0, D_801E9528) == 1) { - return; - } - *(u8 *)(a0 + 0xC3) |= 1; - } else if (D_801E9528 & 0x8000) { - *(s32 *)(a0 + 0x18) = 0; - *(s32 *)(a0 + 0x10) = 0; - } - } - if ((*(s32 *)(a0 + 0x1C) & 3) == 3) { - func_80143B6C(a0, 1); - } - *(s32 *)(a0 + 0x1C) += 1; - if (*(s32 *)(a0 + 0x1C) < 0x11) { - break; - } - if (!(D_801E9528 & 0x6000)) { - func_80131E00(a0, 0xD); - return; - } - /* polarity MUST match case 4's — see the cross-jump note in the header. */ - if (*(s16 *)(a0 + 0x76) <= 0) { - func_80131E00(a0, 6); - } else { - func_80131C78(a0); - } - break; - - case 4: - D_801E9528 = ((s32 (*)(s32))func_8012CBA4)(a0); - if (D_801E9528 & 0x8000) { - *(s32 *)(a0 + 0x18) = 0; - *(s32 *)(a0 + 0x10) = 0; - } - if (D_801E9528 & 0x2000) { - if (func_80131D68(a0, D_801E9528) == 1) { - return; - } - if (*(s16 *)(a0 + 0x76) <= 0) { - func_80131E00(a0, 6); - } else { - func_80131C78(a0); - } - } else { - if ((*(s32 *)(a0 + 0x1C) & 3) == 3) { - func_80143B6C(a0, 1); - } - *(s32 *)(a0 + 0x1C) += 1; - if (*(s32 *)(a0 + 0x1C) >= 0x3D) { - func_80131E00(a0, 0xD); - return; - } - } - break; - } - - func_80131CA8(a0, 0x2F); -} - - -DEFINE_func_801319E0() /* dedup: shared engine-core @0x801319E0 (src/shared) */ - - - -/* func_80131A34 — MATCH (37/37). - * Keys: - * - func_80131CF4 is the TU's 2-arg canonical `(int,int)` and the SECOND arg is the - * incoming `a1` (kind). $a1 already holds it, so the call costs no arg-setup insn -- - * but the extra arg ref is what breaks the sched2 prologue save-order tie so - * `sw $s0` schedules before `sw $ra` (cookbook §52a RC-3 / sched.md S7). Without it - * the pair comes out ra-then-s0 (2 mismatches); the `const`-load form of RC-3 fixes - * the tie but OVER-frees (the `lw $a0` hoists above both saves, 3 mismatches). - * - Declaration is BLOCK-SCOPE on purpose, mirroring func_801312D0 (TU L1619) and - * func_80131340 (TU L1822): the later DEFINE_func_80131AC8() re-declares - * func_80131CF4 with the stale 1-arg engine_core canonical, so a file-scope 2-arg - * decl here is a hard `conflicting types` (cc1 rc=33). - * - func_8012A828 is the TU's file-scope canonical (L280) `(s32, void *)`; `p` rides in - * $a1 from the return of func_80131CF4, so no move is emitted. - */ -DEFINE_func_80131A34() /* dedup: shared engine-core @0x80131A34 (src/shared) */ - - -DEFINE_func_80131AC8() /* dedup: shared engine-core @0x80131AC8 (src/shared) */ - -// @class: regalloc-order -// @stuck: none — MATCH (89 ins). Reconcile: TU canonical decl is `void func_80131B14(void)` -// (ov_SC01_077_a.c L1676/L1756; callers cast to (void(*)(int)) when passing p), so the def MUST be -// (void) or cc1 hard-errors `conflicting types` (exit 33). §42c lever #6: capture incoming $a0 into a -// NORMAL pseudo (`register u8 *a0v __asm__("$4"); u8 *p = a0v;`) so p gets a callee-saved home ($s0). -// func_8012B2CC/func_8012B23C are file-scope DEFINE'd here (split L740/L744) as void(s32) — do NOT redeclare; -// the (void(*)(void*)) cast on the bare name is byte-neutral. Body keys: e(0x5E) as s32 not u8 (kills the -// compare-time andi 0xff); f76 dual-width via per-access casts (lhu in the decrement, lh in the <=0 compare); -// the p->f20 reload split into TWO separate temps so the 2nd load takes $v0 not $v1. - -void func_80131B14() { - extern void func_8002A520(void *); - extern void func_8002A790(void *); - extern u8 D_8018BA2C; - - register u8 *a0v __asm__("$4"); - u8 *p = a0v; - - - s32 e = *(u8 *)(p + 0x5E); - - if (*(s16 *)(p + 0x60) != 0) { - if (e == 0x1D) { - *(s16 *)(p + 0x82) = 0; - *(s16 *)(p + 0x7C) = *(u16 *)(p + 0x06); - *(s16 *)(p + 0x7E) = *(u16 *)(p + 0x0A); - *(s16 *)(p + 0x80) = *(u16 *)(p + 0x0E); - } - { - s32 dec; - s32 q = *(s32 *)(p + 0x78); - if (q != 0) { - dec = ((s32)*(s16 *)(p + 0x60) * (s32)*(s16 *)(q + 0x30)) >> 12; - if (dec <= 0) dec = 1; - } - *(u16 *)(p + 0x76) = *(u16 *)(p + 0x76) - dec; - } - ((void (*)(void *))func_8016AA50)(p); - if (*(u16 *)(p + 0x82) & 1) { - ((void (*)(void *))func_8016B428)(p); - ((void(*)(void *))func_80019064)(&D_8018BA2C); - } - } - - *(u16 *)(p + 0x5C) = *(u16 *)(p + 0x5C) & 0xFFFE; - - if (e != 0x1D) { - if (*(u8 *)(p + 0xC8)) func_8002A520(p); - if (*(u8 *)(p + 0xC9)) func_8002A790(p); - } - - if (*(s16 *)(p + 0x76) <= 0) *(s16 *)(p + 0x5C) = 0; - - { - s32 r = *(s32 *)(p + 0x20); - *(s16 *)(r + 0x12) = (*(u16 *)(p + 0x62) + 0x800) & 0xFFF; - { - s32 r2 = *(s32 *)(p + 0x20); - *(s16 *)(r2 + 0x14) = 0; - *(s16 *)(r2 + 0x10) = 0; - } - } - - ((void (*)(void *))func_8012B2CC)(p); - ((void (*)(void *))func_8012B23C)(p); -} - - - -DEFINE_func_80131C78() /* dedup: shared engine-core @0x80131C78 (src/shared) */ - - -/* func_80131CA8 — RECONCILE (§37/§124 asm-label alias) - * - * Declaration-environment conflict, NOT a body problem: - * The TU's DEFINE_func_80131C78() expansion (jr_8012ACE0.c L2232) and the later - * DEFINE_func_80131D68() expansion (L2250) each emit the canonical - * extern void func_80131CA8(int a0, int a1); - * (src/shared/engine_core.h, e.g. L1961/L4131). The byte-correct body is - * `s32 f(int)` — it disagrees on BOTH the return axis (s32 vs void) and the - * arity axis (1 vs 2), so it collides with the macro-emitted declaration on - * either side of the slot. Escape 1 (conform + cast at use) cannot apply: the - * conflict is on the DEFINED symbol itself. - * - * Fix: define under the C name aF80131CA8 with __asm__("func_80131CA8") so the - * C-level name never meets the canonical declaration, while the emitted symbol - * is unchanged. Codegen-neutral — match_one still prints MATCH (19/19). - * This declaration MUST travel with the body. - * - * func_80131CF4 is declared here 1-arg s32, matching the engine_core canonical - * at engine_core.h L6563; it does not collide anywhere in this TU (verified by - * a full preprocess+cc1 of the spliced TU: diagnostic-free apart from - * pre-existing warnings). - */ -extern s32 func_80131CF4(s32 a0); - -s32 aF80131CA8(int a0) __asm__("func_80131CA8"); - -DEFINE_func_80131CA8() /* dedup: shared engine-core @0x80131CA8 (src/shared) */ - - - - -/* func_80131CF4 — table lookup: walk (key, value) pairs; key 0xD chains to the - * next table via value; key == wanted returns value; key 0 terminates. - * - * The __asm__ inside the body is a matching pin, not logic. It does two things - * gcc-2.7.2 -O2 needs in order to reproduce the target's preheader exactly: - * 1. "0"(0xD) forces the 0xD compare constant to be materialised HERE - * (`addiu $v1,$zero,0xD`) instead of being loop-hoisted, which places it - * AFTER the preheader load and drops the load-delay nop at the loop head. - * 2. the "memory" clobber stops CSE folding the preheader re-read of a0[0] - * into the guard's read (that CSE costs the second `lw $v0,0x0($a0)`). - * The asm body is empty, so it emits no instruction of its own. - * - * RECONCILE (§37/§124 asm-label alias) — the gate error was - * jr_8012ACE0.c:2248 conflicting types for func_80131CF4 || :2164 previous declaration - * :2164 is `DEFINE_func_80131AC8()`, whose expansion (src/shared/engine_core.h:6563) - * carries the STALE 1-arg engine-core canonical `extern s32 func_80131CF4(s32 a0);`. - * That prototype is wrong for this function (the TU's own call sites at L1780/L1903/ - * L2147 all declare and call the real 2-arg form `int func_80131CF4(int, int)`), but - * it is file-visible before the splice point, so a file-scope definition with the true - * signature is a hard `conflicting types` (arity AND param type). Conforming the - * definition to the 1-arg prototype is impossible without changing codegen, and the - * §42 `register s32 a1 __asm__("$5")` route would still leave the param-type mismatch - * on a0 (s32 vs s32*). So the definition is given a different C identifier and pinned - * to the real symbol with an asm label: no declaration ever collides, the emitted - * label is still `func_80131CF4`, and the callers' `jal func_80131CF4` binds to it. - * Zero header edits; body byte-identical (match_one: MATCH, 29 ins). - */ -DEFINE_func_80131CF4() /* dedup: shared engine-core @0x80131CF4 (src/shared) */ - - -DEFINE_func_80131D68() /* dedup: shared engine-core @0x80131D68 (src/shared) */ - - -DEFINE_func_80131E00() /* dedup: shared engine-core @0x80131E00 (src/shared) */ - - -DEFINE_func_80131E38() /* dedup: shared engine-core @0x80131E38 (src/shared) */ - -DEFINE_func_80131E7C() /* dedup: shared engine-core @0x80131E7C (src/shared) */ - -DEFINE_func_80131EE4() /* dedup: shared engine-core @0x80131EE4 (src/shared) */ - - -DEFINE_func_80131EEC() /* dedup: shared engine-core @0x80131EEC (src/shared) */ - - - -DEFINE_func_80131F28() /* dedup: shared engine-core @0x80131F28 (src/shared) */ - - - -DEFINE_func_80131F64() /* dedup: shared engine-core @0x80131F64 (src/shared) */ - - - -DEFINE_func_80131FA0() /* dedup: shared engine-core @0x80131FA0 (src/shared) */ - - - -DEFINE_func_80131FDC() /* dedup: shared engine-core @0x80131FDC (src/shared) */ - - - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(int, int); - -/* §37 asm-label aliases: D_8018BA94 is declared in this TU as `void (*[])(void)` - * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view - * below is this function's own. D_8018BA98 == D_8018BA94 + 4 is a SEPARATE - * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ - -void func_80132018(int param_1) -{ - - extern int tbl_D_80187044[][5] __asm__("D_8018BA94"); - extern int tbl_D_80187048[][5] __asm__("D_8018BA98"); - int v0; - - v0 = ((int (*)(void))func_8012C1B8)(); - *(int *)(param_1 + 0x20) = v0; - if (v0 == 0) { - ((void (*)(int))func_8012CAE4)(param_1); - } else { - func_8001C214(v0, 0); - *(short *)(param_1 + 0x5c) = 0x80; - *(unsigned short *)(param_1 + 2) += 1; - *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; - *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; - *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; - } -} - - -DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH expected; simple if/else, param saved in $s0 across call - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(int, int); -extern int D_8018BA9C; - -void func_801320D8(int param_1) -{ - int v0; - - v0 = ((int (*)(void))func_8012C1B8)(); - *(int *)(param_1 + 0x20) = v0; - if (v0 == 0) { - ((void (*)(int))func_8012CAE4)(param_1); - } else { - func_8001C214(v0, 0); - *(int *)(param_1 + 0x58) = (int)&D_8018BA9C; - *(short *)(param_1 + 0x5c) = 0x80; - *(unsigned short *)(param_1 + 2) += 1; - } -} - - - -s32 func_80132144(s32 param_1) -{ - extern int D_8018BAAC; - - int v0; - - v0 = ((int (*)(void))func_8012C1B8)(); - *(int *)(((int)param_1) + 0x20) = v0; - if (v0 == 0) { - ((void (*)(int))func_8012CAE4)(((int)param_1)); - } else { - ((void(*)(int, int))func_8001C214)(v0, 0); - *(int *)(((int)param_1) + 0x58) = (int)&D_8018BAAC; - *(short *)(((int)param_1) + 0x5c) = 0x80; - *(unsigned short *)(((int)param_1) + 2) += 1; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected; simple if/else, param saved in $s0 across call - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(int, int); -extern int D_8018BABC; - -void func_801321B0(int param_1) -{ - int v0; - - v0 = ((int (*)(void))func_8012C1B8)(); - *(int *)(param_1 + 0x20) = v0; - if (v0 == 0) { - ((void (*)(int))func_8012CAE4)(param_1); - } else { - func_8001C214(v0, 0); - *(int *)(param_1 + 0x58) = (int)&D_8018BABC; - *(short *)(param_1 + 0x5c) = 0x80; - *(unsigned short *)(param_1 + 2) += 1; - } -} - - - -// @class: plumbing -// @stuck: none — MATCH expected; simple if/else, param saved in $s0 across call - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(int, int); -extern int D_8018BACC; - -void func_8013221C(int param_1) -{ - int v0; - - v0 = ((int (*)(void))func_8012C1B8)(); - *(int *)(param_1 + 0x20) = v0; - if (v0 == 0) { - ((void (*)(int))func_8012CAE4)(param_1); - } else { - func_8001C214(v0, 0); - *(int *)(param_1 + 0x58) = (int)&D_8018BACC; - *(short *)(param_1 + 0x5c) = 0x80; - *(unsigned short *)(param_1 + 2) += 1; - } -} - - -DEFINE_func_80132288() /* dedup: shared engine-core @0x80132288 (src/shared) */ - -DEFINE_func_8013240C() /* dedup: shared engine-core @0x8013240C (src/shared) */ - -DEFINE_func_801325B8() /* dedup: shared engine-core @0x801325B8 (src/shared) */ - -DEFINE_func_8013277C() /* dedup: shared engine-core @0x8013277C (src/shared) */ - -DEFINE_func_80132784() /* dedup: shared engine-core @0x80132784 (src/shared) */ - -DEFINE_func_80132DC4() /* dedup: shared engine-core @0x80132DC4 (src/shared) */ - -DEFINE_func_80132E6C() /* dedup: shared engine-core @0x80132E6C (src/shared) */ - -DEFINE_func_80132EC4() /* dedup: shared engine-core @0x80132EC4 (src/shared) */ - -DEFINE_func_80132EF4() /* dedup: shared engine-core @0x80132EF4 (src/shared) */ - - -/* func_80132F40 — ov_SC01_077 (jr_8012ACE0 region), 72 ins, -O2. *** MATCH *** - * - * Verified: - * python3 tools/match_one.py func_80132F40 --c .run/near6/wave23/func_80132F40.c \ - * --asm-subdir asm/ov_SC01_077/nonmatchings/ov_SC01_077_jr_8012ACE0 - * -> MATCH (72 ins) - * - * --------------------------------------------------------------------------- - * WHAT THE WAVE-22 SEED GOT WRONG (the 6-mismatch plateau, and why s32 "cost 3") - * --------------------------------------------------------------------------- - * The seed's note blamed the `addiu $s3,$sp,0x10` hoist on a *whole-function CSE - * fork keyed on s16-vs-s32 w/h*, and concluded the s32 world was unreachable. - * Both halves of that are wrong, and the real mechanism is a reusable idiom. - * - * The hoisted register is the block-move source-address pseudo (reg 83 = - * `(plus fp 16)`, created by expand for `v[1] = v[0]`). Whether it survives is - * decided by ONE thing: does CSE's *extended basic block* still contain it when - * CSE reaches the two `&v[0]` call arguments? - * - * cse.c:cse_end_of_basic_block scans `while (p && GET_CODE (p) != CODE_LABEL)`. - * It can walk PAST a conditional jump only via - * - follow_jumps : target label preceded by a BARRIER, LABEL_NUSES == 1, or - * - skip_blocks : "branch around a block", no labels inside (-O2 sets both) - * and it BREAKS EARLY on - * `if (! after_loop && NOTE_LINE_NUMBER (p) == NOTE_INSN_LOOP_END) break;` - * - * With s16 w the min block stayed a *diamond* (jump.c's `if(..) x=a; else x=b;` - * -> `x=b; if(..) x=a;` at jump.c:699 is blocked when the moved insn carries a - * REG_EQUAL note — the sign_extend note from the sll/sra pair). The diamond's - * BARRIER + join label ended CSE's block before the calls, so `&v[0]` was - * recomputed at each site. With s32 w the diamond was flattened in jump1, and - * skip_blocks then walked CSE straight through to both call sites -> reg 83 was - * substituted, went live across a call, and took a 5th callee-saved register. - * So the fork was never about the *type* — it was about the CFG shape at CSE. - * - * --------------------------------------------------------------------------- - * THE NEW LEVER (cookbook candidate: "zero-instruction CSE path cut") - * --------------------------------------------------------------------------- - * `do { } while (0);` emits NOTE_INSN_LOOP_BEG/CONT/END and ZERO instructions. - * A NOTE_INSN_LOOP_END is exactly what cse1 (after_loop == 0) breaks its - * extended basic block on. Dropping one between the struct copy and the call - * sites cuts the path, kills the hoist, and costs nothing: 73 ins -> 70 ins. - * (Measured: without it this same file is 75 ins / 58 mismatched.) - * It is *not* an ordering/pressure hack — 1..8 empty `__asm__ __volatile__("")` - * barriers, which lengthen live ranges but emit no LOOP notes, changed the hoist - * by exactly nothing, which refutes the global.c allocno-priority explanation. - * - * --------------------------------------------------------------------------- - * THE MIN BLOCK (idx 37..44) - * --------------------------------------------------------------------------- - * lh $v1,8($v0) w (both loads are SImode sign_extend -> `lh`) - * lh $v0,0xA($v0) h (reuses the dying pointer's $v0) - * nop (load-delay; nothing schedulable) - * addu $a0,$v0,$zero hh = h (a REAL source-level carrier) - * slt $v0,$v0,$v1 c = h 75 ins / 58 drop `p` pin -> 71 ins / 40 - * drop `h` pin -> 71 ins / 33 drop `c` pin -> 70 ins / 36 - * drop `hh` pin -> 71 ins / 32 drop `q` pin -> 72 ins / 12 - * adding a `w`->$3 pin or an `m`->$18 pin -> still MATCH (so both are omitted) - * - * Canonical decls (wave22_targets.json sig_hints) verbatim; D_80126BE0 is - * declared exactly as the 20+ sibling TUs already declare it. - */ -DEFINE_func_80132F40() /* dedup: shared engine-core @0x80132F40 (src/shared) */ - - -DEFINE_func_80133060() /* dedup: shared engine-core @0x80133060 (src/shared) */ - -#define gte_SetRotMatrix(r0) __asm__ volatile ( \ - "lw $12, 0( %0 );" \ - "lw $13, 4( %0 );" \ - "ctc2 $12, $0;" \ - "ctc2 $13, $1;" \ - "lw $12, 8( %0 );" \ - "lw $13, 12( %0 );" \ - "lw $14, 16( %0 );" \ - "ctc2 $12, $2;" \ - "ctc2 $13, $3;" \ - "ctc2 $14, $4" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_SetTransMatrix(r0) __asm__ volatile ( \ - "lw $12, 20( %0 );" \ - "lw $13, 24( %0 );" \ - "ctc2 $12, $5;" \ - "lw $14, 28( %0 );" \ - "ctc2 $13, $6;" \ - "ctc2 $14, $7" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_SetRotMatrix(r0) __asm__ volatile ( \ - "lw $12, 0( %0 );" \ - "lw $13, 4( %0 );" \ - "ctc2 $12, $0;" \ - "ctc2 $13, $1;" \ - "lw $12, 8( %0 );" \ - "lw $13, 12( %0 );" \ - "lw $14, 16( %0 );" \ - "ctc2 $12, $2;" \ - "ctc2 $13, $3;" \ - "ctc2 $14, $4" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_SetTransMatrix(r0) __asm__ volatile ( \ - "lw $12, 20( %0 );" \ - "lw $13, 24( %0 );" \ - "ctc2 $12, $5;" \ - "lw $14, 28( %0 );" \ - "ctc2 $13, $6;" \ - "ctc2 $14, $7" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_ldv0(r0) __asm__ volatile ( \ - "lwc2 $0, 0( %0 );" \ - "lwc2 $1, 4( %0 )" \ - : \ - : "r"( r0 ) ) -#define gte_rtv0tr() __asm__ volatile ( \ - "nop;" \ - "nop;" \ - "mvmva 1, 0, 0, 0, 0" \ - : \ - : \ - : "memory" ) -#define gte_stlvnl(r0) __asm__ volatile ( \ - "swc2 $25, 0( %0 );" \ - "swc2 $26, 4( %0 );" \ - "swc2 $27, 8( %0 )" \ - : \ - : "r"( r0 ) \ - : "memory" ) -#define gte_stflg(r0) __asm__ volatile ( \ - "cfc2 $12, $31;" \ - "nop;" \ - "sw $12, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "$12", "memory" ) - -DEFINE_func_801330E0() /* dedup: shared engine-core @0x801330E0 (src/shared) */ - - - -/* 32-byte opaque block: drives gcc's movstrsi block-move (4x lw / 4x sw, cookbook - * struct-fold) instead of 8 serial lw/sw pairs. Locally named (engine_types.h's - * identical `Blk32` is an anonymous-tag typedef -> a same-name redefinition here - * is a C89 error in the real TU). */ - - -DEFINE_func_80133298() /* dedup: shared engine-core @0x80133298 (src/shared) */ - - -DEFINE_func_8013339C() /* dedup: shared engine-core @0x8013339C (src/shared) */ - -DEFINE_func_8013361C() /* dedup: shared engine-core @0x8013361C (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH - -extern s32 D_801E9570; -extern s32 D_801E9574[]; -extern int D_801E9578; -extern void func_80136BC4(s32 a0); - -void func_801336E8(void *a0, int a1, int a2) { - if (a0 != 0) { - (*(void * *)&D_801E9570) = a0; - ((void (*)(void))func_80136BC4)(); - } - (*(int *)&D_801E9574) = a1; - D_801E9578 = a2; -} - - - - -extern s32 D_801E9574[]; -extern s32 D_801E9570; -extern void func_80136BC4(s32); - -void func_8013373C(s16 arg0) { - s32 temp = D_801E9574[arg0]; - if (temp != 0) { - D_801E9570 = temp; - func_80136BC4(temp); - } -} - - -// @class: regalloc-order -#include "common.h" - - - -s32 func_80133784(s32 arg0, void *arg1, s32 arg2) { - extern s32 func_80047D3C(s32); - extern s32 func_80133AB0(s16, s16, s16, s32); - extern Box_80133784 * D_8018BAFC; - extern Box_80133784 * D_8018BB00; - extern s16 D_801E957C; - extern u16 D_801E9580; - - register s32 s1 __asm__("$17"); - s32 s2; - register s16 s3 __asm__("$19"); - register s32 s4 __asm__("$20"); - register s16 a0v __asm__("$4"); - register s16 arg0s __asm__("$21"); - s32 dx, dy, dz; - s32 r, ret; - - a0v = ((s16)arg0); - s1 = 0; - s3 = 0; - s4 = 0; - s2 = 0; - arg0s = a0v; - D_8018BAFC->f6 = -0x7FFF; - D_8018BB00->f6 = 0x7FFF; - D_8018BAFC->f0 = ((Box_80133784 *)arg1)->f0; - D_8018BAFC->f4 = ((Box_80133784 *)arg1)->f4; - D_8018BB00->f0 = ((Box_80133784 *)arg2)->f0; - D_8018BB00->f4 = ((Box_80133784 *)arg2)->f4; - D_801E9580 = 0; - D_801E957C = 0; - - if ((s16)a0v == 0) { - s16 sx = ((Box_80133784 *)arg2)->f0 - ((Box_80133784 *)arg1)->f0; - s16 sy = ((Box_80133784 *)arg2)->f2 - ((Box_80133784 *)arg1)->f2; - s16 sz = ((Box_80133784 *)arg2)->f4 - ((Box_80133784 *)arg1)->f4; - if (sx == 0 && sy == 0) { - s32 zt = (sz == 0); - __asm__("addu %0,%1,$zero" : "=r"(s2) : "r"(zt)); - } - D_8018BAFC->f2 = ((Box_80133784 *)arg1)->f2 - 4; - r = func_80047D3C(sx * sx + sz * sz); - if (r < 3) { - r = 4; - } else if (r < 5) { - r += 1; - } - D_8018BB00->f2 = ((Box_80133784 *)arg2)->f2 + r + 1; - } else { - D_8018BAFC->f2 = ((Box_80133784 *)arg1)->f2; - if ((s16)a0v == 2) { - D_8018BB00->f0 = D_8018BAFC->f0; - D_8018BB00->f2 = D_8018BAFC->f2 + 6; - s2 = 1; - D_8018BB00->f4 = D_8018BAFC->f4; - } else { - D_8018BB00->f2 = ((Box_80133784 *)arg2)->f2; - } - } - - while (1) { - s32 ret0; - register s32 retc __asm__("$3"); - __asm__ __volatile__(""); - ret0 = func_80133AB0(arg0s, (s16)D_8018BAFC->f0, (s16)D_8018BAFC->f4, (*(s32*)&D_801E9570)); - __asm__("addu %0,%1,$zero" : "=r"(retc) : "r"(ret0)); - ret = retc; - if (ret == 0) goto after; - s4 |= ret; - if (s2 != 0) goto after; - { - s16 oldc = s3; - s3 = s3 + 1; - if (oldc >= 5) break; - } - } - - D_8018BB00->f0 = D_8018BAFC->f0; - D_8018BB00->f2 = D_8018BAFC->f2; - s1 = 0x2000; - D_8018BB00->f4 = D_8018BAFC->f4; - goto store_out; - -after: - if ((s16)s4 != 0 || D_801E957C != 0) { - s16 t; - __asm__ __volatile__("" :: "r"(s4)); - t = D_8018BAFC->f6; - if (t >= -0xBCB) { - if (t < -0x578) { - s1 |= 0x4000; - } else { - s1 |= 0x8000; - } - } - if ((s16)D_8018BB00->f6 < -0xBCB) { - s1 |= 0x2000; - } - store_out: - ((Box_80133784 *)arg2)->f0 = D_8018BB00->f0; - ((Box_80133784 *)arg2)->f2 = D_8018BB00->f2; - ((Box_80133784 *)arg2)->f4 = D_8018BB00->f4; - ((Box_80133784 *)arg2)->f6 = D_801E9580; - return s1 & 0xFFFF; - } - ((Box_80133784 *)arg2)->f6 = D_801E9580; - return 0; -} - - - - - -DEFINE_func_80133AB0() /* dedup: shared engine-core @0x80133AB0 (src/shared) */ - - - -s32 func_80133CD4(arg0, cmd, base, arr) - s16 arg0; - s16 *cmd; - s16 *base; - s32 *arr; -{ - - extern u16 *D_8018BB00; - extern u16 *D_8018BAFC; - extern s16 *D_8018BB08; - extern s16 *D_8018BB04; - extern s32 *D_8018BB10; - extern s32 *D_8018BB14; - extern u16 D_801E9580; - extern u8 D_801152A8[]; - extern s16 D_801152AA; - extern s16 D_801152AC; - extern u16 D_801152AE; - extern u8 D_801152B0; - extern s32 func_80134310(); - extern s32 func_8013435C(); - - s16 *s3 = ((ElemK *)base)[cmd[1]].e; - s32 s6 = arr[cmd[2]]; - s32 s0var, s1var; - s32 s2a; - s16 y; - - if (func_80134310(s3, D_8018BB00, s6) >= 0) - return 0; - - s1var = func_80134310(s3, D_8018BAFC, s6); - if (s1var < 0) - return 0; - - s0var = func_80134310(s3, D_8018BB08, 0); - { - u16 *pac = D_8018BAFC; - s16 *pb8 = D_8018BB08; - s16 *pb4 = D_8018BB04; - s32 neg = -s1var; - pb4[0] = pac[0] + neg * pb8[0] / s0var; - pb4[1] = pac[1] + neg * pb8[1] / s0var; - pb4[2] = pac[2] + neg * pb8[2] / s0var; - if (func_8013435C(((ElemK *)base)[cmd[3]].e, pb4, arr[cmd[4]], s3)) - return 0; - } - if (func_8013435C(((ElemK *)base)[cmd[5]].e, D_8018BB04, arr[cmd[6]], s3)) - return 0; - if (func_8013435C(((ElemK *)base)[cmd[7]].e, D_8018BB04, arr[cmd[8]], s3)) - return 0; - if (arg0 < 0) { - if (func_8013435C(((ElemK *)base)[cmd[9]].e, D_8018BB04, arr[cmd[10]], s3)) - return 0; - } - if (arg0 & 0x10) { - if (*(u16 *)cmd & 0x100) - return 0; - } - if (*(u16 *)cmd & 0x200) { - D_801E9580 = *(u16 *)cmd; - return 0; - } - - { - s32 ret = func_80134310(s3, D_8018BB00, s6); - s32 *pc0; - s32 *pc4; - u16 *pb0; - s32 t, o2; - s32 q3v; - - { - s32 *pw = D_8018BB10; - ((struct { s32 w; } *)pw)->w = s3[0]; - pw[1] = s3[1]; - pw[2] = s3[2]; - } - s1var = -ret; - - __asm__ __volatile__( - "lwc2 $9, 0(%0)\n" - "lwc2 $10, 4(%0)\n" - "lwc2 $11, 8(%0)\n" - "nop\n" - "nop\n" - "sqr 0\n" - : : "r"(D_8018BB10) : "$9", "$10", "$11", "memory"); - __asm__ __volatile__( - "swc2 $25, 0(%0)\n" - "swc2 $26, 4(%0)\n" - "swc2 $27, 8(%0)\n" - : : "r"(D_8018BB14) : "memory"); - - pc0 = D_8018BB10; - pc4 = D_8018BB14; - s0var = pc4[0] + pc4[1] + pc4[2]; - pb0 = D_8018BB00; - pb0[0] += s1var * pc0[0] / s0var; - pb0[1] += s1var * pc0[1] / s0var; - q3v = s1var * pc0[2] / s0var; - - { - s32 h; - h = ((s16 *)pb0)[0]; - s1var = h << 16; - __asm__("lh %0, 2(%2)" : "=r"(h) : "0"(h), "r"(pb0) : "memory"); - s0var = h << 16; - } - pb0[2] += q3v; - s2a = (s16)pb0[2] << 16; - - t = pc0[0] << 4; - pc0[0] = t; - if (t < 0) s1var |= 0xFFFF; - t = pc0[1] << 4; - pc0[1] = t; - if (t < 0) s0var |= 0xFFFF; - o2 = pc0[2]; - t = o2 << 4; - pc0[2] = t; - if (t < 0) s2a |= 0xFFFF; - s2a += o2 << 5; - s1var += pc0[0] << 1; - s0var += pc0[1] << 1; - - do { - s32 *pl = D_8018BB10; - u16 *pb; - s1var += pl[0]; - s0var += pl[1]; - s2a += pl[2]; - pb = D_8018BB00; - pb[0] = s1var >> 16; - pb[1] = s0var >> 16; - pb[2] = s2a >> 16; - ret = func_80134310(s3, pb, s6); - } while (ret < ((s3[1] < -0xE00) ? 0x1800 : 0x2F00)); - } - - y = s3[1]; - if (y >= -0xBCB) { - D_8018BAFC[3] = y; - { - typedef struct { s8 c[8]; } Blk8; - *(Blk8 *)&D_801152B0 = *(Blk8 *)s3; - } - if (*(u8 *)cmd != 0) - goto ret1; - return -1; - } - { - u16 *s3u = (u16 *)s3; - u16 *bp = D_8018BB00; - u16 w; - ((H16 *)D_801152A8)->h = s3u[0]; - w = s3u[1]; - bp[3] = w; - ((H16 *)&D_801152AA)->h = w; - ((H16 *)&D_801152AC)->h = s3u[2]; - ((H16 *)&D_801152AE)->h = s3u[3]; - } -ret1: - return 1; -} - - - - - -DEFINE_func_80134310() /* dedup: shared engine-core @0x80134310 (src/shared) */ - - -DEFINE_func_8013435C() /* dedup: shared engine-core @0x8013435C (src/shared) */ - -// @class: schedule -// @stuck: none — MATCH (83 ins, relocation-masked) - - - -s32 func_801343C4(s32 angle, s32 p1, s32 p2) -{ - extern s32 func_80133AB0(s16 flag, s16 x, s16 y, s32 arg3); - extern s16 * D_8018BAFC; - extern s16 * D_8018BB00; - extern u16 D_801E9580; - extern u16 D_801E957C; - - s16 *pac; - s16 *pb0; - s16 *pacs, *pb0s; - u16 *pb0u; - int a1v, a2v, d94, b0; - int sangle = ((s16)angle); - - pac = D_8018BAFC; - d94 = D_801E9570; - pb0 = D_8018BB00; - pac[0] = ((u16 *)p1)[0]; - pac[1] = ((u16 *)p1)[1]; - pac[2] = ((u16 *)p1)[2]; - pb0[0] = ((u16 *)p2)[0]; - pb0[1] = ((u16 *)p2)[1]; - pb0[2] = ((u16 *)p2)[2]; - - a1v = pac[0]; a2v = pac[2]; - __asm__ __volatile__("" ::: "memory"); - D_801E9580 = 0; - D_801E957C = 0; - if (((int (*)(int, s16, s16, int))func_80133AB0)(sangle, a1v, a2v, d94)) { - setdst: - pb0u = (u16 *)D_8018BB00; - ((u16 *)p2)[0] = pb0u[0]; - ((u16 *)p2)[1] = pb0u[1]; - ((u16 *)p2)[2] = pb0u[2]; - ((u16 *)p2)[3] = D_801E9580; - return 1; - } - - pacs = D_8018BAFC; - pb0s = D_8018BB00; - b0 = pb0s[0]; - if ((pacs[0] & 0xFF80) == (b0 & 0xFF80) && - (pacs[2] & 0xFF80) == (pb0s[2] & 0xFF80)) { - return 0; - } - if (((int (*)(int, s16, s16, int))func_80133AB0)(sangle, b0, pb0s[2], D_801E9570)) { - goto setdst; - } - return 0; -} - - - -// @class: schedule - - -s32 func_80134510(s32 param) { - extern s32 func_801345F8(s32); - extern Foo_80134510_80134510 * D_8018BAFC; - extern Foo_80134510_80134510 * D_8018BB00; - extern Foo_80134510_80134510 * D_8018BB04; - extern u16 D_801E9580; - - - s32 ret = 0; - Foo_80134510_80134510 *b0 = D_8018BB00; - Foo_80134510_80134510 *ac = D_8018BAFC; - u16 t0 = ((Foo_80134510_80134510 *)param)->f0; - u16 t2, t4; - - ((Foo_80134510_80134510 *)param)->f6 = 0; - ac->f0 = t0; - b0->f0 = t0; - t2 = ((Foo_80134510_80134510 *)param)->f2; - ac->f2 = t2 - 4; - b0->f2 = t2 + 0x2FC; - t4 = ((Foo_80134510_80134510 *)param)->f4; - ac->f4 = t4; - b0->f4 = t4; - - if (func_801345F8((*(s32*)&D_801E9570)) != 0) { - s16 x; - ((Foo_80134510_80134510 *)param)->f2 = D_8018BB04->f2 - 2; - x = D_8018BAFC->f6; - if (x >= -3019) { - if (x < -1400) { - ret = 0x4000; - } else { - ret = 0x8000; - } - } else { - ret = 0x2000; - } - D_8018BAFC->f6 = D_801E9580; - } - return ret; -} - - - -// @class: regalloc-order -// @stuck: 26-mismatch near-miss (structure fully matches: while-loop test-first via j-to-bottom-test, s0=puVar7/s1=cnt/s2=scan/s3=iVar8/s4=iVar9/s5=uVar3/s6=uVar10, a1=param/a0=cc/a3=0x8000 pinned, both range-persist copies present, mult+GPU-index+call all byte-correct). Residual = 4 instances of ONE gcc-2.7.2 regalloc/copy-prop tie-break: target computes a preserved-then-masked value in $v0 and reads $v0 for the mask (`subu $v0; addu $persist,$v0; andi $v0,$v0`), gcc here reads the persist reg (`andi $v0,$t0`). (1) range-check-1 andi reads $t0 not $v0; (2) range-check-2 andi reads $a0 not $v0; (3) `hi=uVar1&0x8000` folds into $a0 — target computes in $v0 + copies to $a0 in the branch-delay (same-block copy, gcc coalesces mine); (4) loop-test `cnt&0xffff` folds to direct `andi $v0,$s1` — target copies `addu $v0,$s1` first. Splitting the value into compare-temp + persist-var produces the copy but gcc forward-propagates the copy DEST into the mask; persist-after-compare kills the copy; explicit `register __asm__` pins fold the whole expr chain into the pinned reg; `=r/0` barriers force bad materialization. Also minor: while-loop header-copy adds a `beqz s1` entry guard vs target `j`, and a2/a3 call-arg setup order. Permuter can't run (register __asm__ pins rejected by pycparser). Genuinely compiler-internal — hand-finish or accept as ceiling. - - -DEFINE_func_801345F8() /* dedup: shared engine-core @0x801345F8 (src/shared) */ - - - -// @class: regalloc-order -// @stuck: none — MATCH (162 ins). iv pinned to $4 (a0) forces move+delay-slot negu; divisor-temp forces divisor-first schedule (load-delay nop). Globals declared pointer-typed (SVec_801347A0*/s16*) so %lo folds per-use instead of &sym address-CSE into callee regs. -#include "common.h" - - - - - - -s32 func_801347A0(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { - extern s32 func_80134A28(s32 a0, s32 a1, s32 a2); - extern s16 * D_8018BB00; - extern SVec_801347A0 * D_8018BAFC; - extern SVec_801347A0 * D_8018BB04; - - Elem_801347A0 *pElem; - s32 val; - register s32 iv __asm__("$4"); - s32 q; - s32 dvsr; - - pElem = &((Elem_801347A0 *)arg2)[((S0_801347A0 *)arg1)->f2]; - val = ((s32 *)arg3)[((S0_801347A0 *)arg1)->f4]; - if (func_80134A28((s32)pElem, (s32)D_8018BB00, val) >= 0) { - return 0; - } - iv = func_80134A28((s32)pElem, (s32)D_8018BAFC, val); - if (iv < 0) { - return 0; - } - iv = -iv; - dvsr = pElem->f2 * 48; - q = (iv * 48) / dvsr; - D_8018BB04->f0 = D_8018BAFC->f0; - D_8018BB04->f2 = D_8018BAFC->f2 + q; - D_8018BB04->f4 = D_8018BAFC->f4; - if (func_80134A28((s32)&((Elem_801347A0 *)arg2)[((S0_801347A0 *)arg1)->f6], (s32)D_8018BB04, ((s32 *)arg3)[((S0_801347A0 *)arg1)->f8]) < -0x2F00) { - return 0; - } - if (func_80134A28((s32)&((Elem_801347A0 *)arg2)[((S0_801347A0 *)arg1)->fa], (s32)D_8018BB04, ((s32 *)arg3)[((S0_801347A0 *)arg1)->fc]) < -0x2F00) { - return 0; - } - if (func_80134A28((s32)&((Elem_801347A0 *)arg2)[((S0_801347A0 *)arg1)->fe], (s32)D_8018BB04, ((s32 *)arg3)[((S0_801347A0 *)arg1)->f10]) < -0x2F00) { - return 0; - } - if ((s16)arg0) { - if (func_80134A28((s32)&((Elem_801347A0 *)arg2)[((S0_801347A0 *)arg1)->f12], (s32)D_8018BB04, ((s32 *)arg3)[((S0_801347A0 *)arg1)->f14]) < -0x2F00) { - return 0; - } - } - if ((((S0_801347A0 *)arg1)->f0 & 0x300) != 0) { - return 0; - } - D_8018BB04->f0 = D_8018BAFC->f0; - D_8018BB04->f4 = D_8018BAFC->f4; - (*(Elem_801347A0*)D_801152A8) = *pElem; - D_8018BAFC->f6 = pElem->f2; - return 1; -} - - - -DEFINE_func_80134A28() /* dedup: shared engine-core @0x80134A28 (src/shared) */ - - -DEFINE_func_80134A74() /* dedup: shared engine-core @0x80134A74 (src/shared) */ - - -// @class: regalloc-order -// @try: variant B — direct pins m=$s5($21), c=$s6($22) - - -s32 func_80134C20(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { - extern s32 func_80134FB8(s32 a0, s32 a1, s32 a2); - extern void * D_8018BAFC; - extern void * D_8018BB00; - extern void * D_8018BB04; - extern void * D_8018BB08; - extern u16 D_801E9580; - - s32 temp_a3; - s32 temp_s1; - s32 temp_v0; - s32 temp_v0_2; - s32 var_v0; - u16 temp_a1; - s32 temp_s4; - s32 c = arg0; - __asm__ __volatile__("" : "=r"(c) : "0"(c)); - __asm__ __volatile__("" : : "r"(arg0)); - - temp_s4 = arg2 + (M2C_FIELD(((void *)arg1), s16 *, 2) * 8); - temp_s1 = *(s32 *)(arg3 + (M2C_FIELD(((void *)arg1), s16 *, 4) * 4)); - var_v0 = 0; - if (func_80134FB8(temp_s4, (s32) D_8018BB00, temp_s1) >= 0) { - return var_v0; - } - temp_v0 = func_80134FB8(temp_s4, (s32) D_8018BAFC, temp_s1); - if (temp_v0 < 0) { - goto block_13; - } - temp_v0_2 = func_80134FB8(temp_s4, (s32) D_8018BB08, 0); - temp_a3 = -temp_v0; - { - u16 *pB4 = (u16 *)D_8018BB04; - u16 *pAC = (u16 *)D_8018BAFC; - s16 *pB8 = (s16 *)D_8018BB08; - pB4[0] = pAC[0] + (temp_a3 * pB8[0]) / temp_v0_2; - pB4[1] = pAC[1] + (temp_a3 * pB8[1]) / temp_v0_2; - pB4[2] = pAC[2] + (temp_a3 * pB8[2]) / temp_v0_2; - var_v0 = 0; - if (func_80134FB8(arg2 + (M2C_FIELD(((void *)arg1), s16 *, 6) * 8), (s32) pB4, *(s32 *)(arg3 + (M2C_FIELD(((void *)arg1), s16 *, 8) * 4))) < -0x2F00) { - return var_v0; - } - } - var_v0 = 0; - if (func_80134FB8(arg2 + (M2C_FIELD(((void *)arg1), s16 *, 0xA) * 8), (s32) D_8018BB04, *(s32 *)(arg3 + (M2C_FIELD(((void *)arg1), s16 *, 0xC) * 4))) < -0x2F00) { - return var_v0; - } - var_v0 = 0; - if (func_80134FB8(arg2 + (M2C_FIELD(((void *)arg1), s16 *, 0xE) * 8), (s32) D_8018BB04, *(s32 *)(arg3 + (M2C_FIELD(((void *)arg1), s16 *, 0x10) * 4))) < -0x2F00) { - return var_v0; - } - if ((arg0 << 16) < 0) { - var_v0 = 0; - if (func_80134FB8(arg2 + (M2C_FIELD(((void *)arg1), s16 *, 0x12) * 8), (s32) D_8018BB04, *(s32 *)(arg3 + (M2C_FIELD(((void *)arg1), s16 *, 0x14) * 4))) < -0x2F00) { - return var_v0; - } - } - if (c & 1) { - if (!(M2C_FIELD(((void *)arg1), u16 *, 0) & 0x300)) { - goto block_14; - } - return 0; - } - temp_a1 = M2C_FIELD(((void *)arg1), u16 *, 0); - if (!(temp_a1 & 0x200)) { - goto block_14; - } - D_801E9580 = temp_a1; -block_13: - return 0; -block_14: - __builtin_memcpy(D_801152A8, (void *)temp_s4, 8); - VectorNormalSS(D_8018BB08, D_8018BB08); - { - u16 *pB8 = (u16 *)D_8018BB08; - u16 *pB4b = (u16 *)D_8018BB04; - pB4b[0] = pB4b[0] - ((pB8[0] << 0x10) >> 0x1B); - var_v0 = 1; - pB4b[1] = pB4b[1] - ((pB8[1] << 0x10) >> 0x1B); - pB4b[2] = pB4b[2] - ((pB8[2] << 0x10) >> 0x1B); - } - return var_v0; -} - - - -DEFINE_func_80134FB8() /* dedup: shared engine-core @0x80134FB8 (src/shared) */ - -// @class: plumbing -// @stuck: MATCH (89 ins). To BANK: retype D_8018BB00 + D_8018BAFC (u8 -> s16*) in sibling func_80135168's externs (src/ov_SC01_077/ov_SC01_077_a.c ~L1879); they hold pointers double-referenced across a call, so only a 4-byte/pointer decl folds %lo (u8 &-cast CSE's the address into a saved reg). Retype is byte-NEUTRAL for the sibling (verified: identical objdump bytes u8 vs s16*). - - - - -s32 func_80135004(s32 arg0, s32 p1, s32 p2) -{ - extern int func_80134A74(int, s16, s16, int); - extern s16 * D_8018BB00; - extern s16 * D_8018BAFC; - extern u8 D_8018BB08; - extern s16 *D_8018BB04; - extern u16 D_801E9580; - - register s16 *pb0 __asm__("$9"); /* D_8018BB00 -> $t1 */ - register s16 *pac __asm__("$6"); /* D_8018BAFC -> $a2 */ - register s16 *pb8 __asm__("$8"); /* D_8018BB08 -> $t0 */ - u16 *pb4; - u16 a, b; - int id; - int a1v, a2v, d94; - - pb0 = D_8018BB00; - __asm__ __volatile__("" : : "r"(pb0)); - - a = ((u16 *)p2)[0]; pac = D_8018BAFC; pb0[0] = a; b = ((u16 *)p1)[0]; pb8 = (*(s16 * *)&D_8018BB08); pac[0] = b; pb8[0] = a - b; - a = ((u16 *)p2)[1]; pb0[1] = a; b = ((u16 *)p1)[1]; pac[1] = b; pb8[1] = a - b; - a = ((u16 *)p2)[2]; pb0[2] = a; b = ((u16 *)p1)[2]; pac[2] = b; pb8[2] = a - b; - - id = ((int)arg0) & 0xFFFF; - a1v = pac[0]; a2v = pac[2]; d94 = D_801E9570; - __asm__ __volatile__("" ::: "memory"); - D_801E9580 = 0; - - if (func_80134A74(id, a1v, a2v, d94)) { - found: - pb4 = (*(u16 * *)&D_8018BB04); - ((u16 *)p2)[0] = pb4[0]; - ((u16 *)p2)[1] = pb4[1]; - ((u16 *)p2)[2] = pb4[2]; - ((u16 *)p2)[3] = D_801E9580; - return 1; - } - { - register u16 *qb __asm__("$4"); /* D_8018BAFC -> $a0 (reloaded) */ - register int qa0 __asm__("$5"); /* D_8018BB00[0], kept in $a1 for the 2nd-call arg */ - register u16 *qa __asm__("$6"); /* D_8018BB00 -> $a2 (reloaded) */ - qb = (u16 *)D_8018BAFC; - qa = (u16 *)D_8018BB00; - qa0 = qa[0]; - if (((qb[0] & 0xFF80) == (qa0 & 0xFF80)) && - ((qb[2] & 0xFF80) == (qa[2] & 0xFF80))) - return 0; - if (func_80134A74(id, (s16)qa0, (s16)qa[2], D_801E9570)) - goto found; - return 0; - } -} - - - - -// @class: schedule -// @stuck: none — MATCH (62 ins, relocation-masked) - - -extern s16 *D_8018BB04; -extern int D_801E9570; -extern u16 D_801E9580; - -extern int func_80134A74(int, s16, s16, int); - -int func_80135168(u16 arg0, u16 *p1, u16 *p2) -{ - /* [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 §100); the whole-binary byte-gate is the arbiter. */ - extern u8 D_8018BAFC; - extern u8 D_8018BB00; - extern u8 D_8018BB08; - register s16 *pb0 __asm__("$8"); - register s16 *pac __asm__("$6"); - register s16 *pb8 __asm__("$7"); - u16 *pb4; - u16 a, b; - int a1v, a2v, d94; - - pb0 = (*(s16 * *)&D_8018BB00); - __asm__ __volatile__("" : : "r"(pb0)); - - a = p2[0]; pac = (*(s16 * *)&D_8018BAFC); pb0[0] = a; b = p1[0]; pb8 = (*(s16 * *)&D_8018BB08); pac[0] = b; pb8[0] = a - b; - a = p2[1]; pb0[1] = a; b = p1[1]; pac[1] = b; pb8[1] = a - b; - a = p2[2]; pb0[2] = a; b = p1[2]; pac[2] = b; pb8[2] = a - b; - - a1v = pac[0]; a2v = pac[2]; d94 = D_801E9570; - __asm__ __volatile__("" ::: "memory"); - D_801E9580 = 0; - if (func_80134A74(arg0, a1v, a2v, d94)) { - pb4 = (*(u16 * *)&D_8018BB04); - p2[0] = pb4[0]; - p2[1] = pb4[1]; - p2[2] = pb4[2]; - p2[3] = D_801E9580; - return 1; - } - return 0; -} - - - - -/* func_80135260 — "is reachable/hittable" gate (136 ins, ov_SC01_077 jr_8012ACE0). - * - * Sibling of the already-banked func_80135D20 (src/ov_SC03_099/ov_SC03_099_jr_80135D20.c L659+): - * same func_80135480 switch (jtbl_801D8158, cases 0..4, default falls through with p/flag/q - * UNINITIALISED — reproduced by leaving the switch without a default), same peeled-probe + - * rotated list loop, different `elsepath`. - * - * Load-bearing details (all byte-proven by ablation against match_one): - * - func_80135480 is DEFINED later in this same TU (L3261) returning s16. Calling it through an - * `s32 (*)(...)` cast is REQUIRED: the target does NOT re-extend the callee result before the - * switch (`addu $v1,$v0,$zero` only); a plain s16-returning call costs an extra `sll/sra 16`. - * The cast is call-site-local, so func_80135480's own definition is untouched (no //@EDIT). - * - D_8018BAFC / D_8018BB00 / D_8018BB08 MUST be declared as 4-byte POINTERS - * (`extern u16 *D_801870Bx;`), not the canonical `extern u8` + `(*(u16**)&sym)` cast. With the - * u8 form gcc CSEs `&sym` into two callee-saved regs ($s1/$s5), which costs a 7th saved - * register ($s6 for arg3) and 3 extra instructions. This is exactly the retype already - * documented in this TU's @stuck note at L3127. The decls are BLOCK-SCOPE-compatible with the - * TU's other `extern u8 D_8018BAFC;` bodies (the TU already mixes both forms: L2461 vs L2587). - * - `u8 dead[56];` is a DEAD local that only sets the frame: without it the frame is 0x30, the - * target's is 0x68 (gcc-2.7.2 assign_stack_local runs at expand time, so an unreferenced - * aggregate still owns its slot). Body bytes are already exact at 136/136 without it — the 16 - * residual diffs are purely the sp/save-slot immediates. - * - explicit goto layout (loop / hit / body / elsepath) reproduces the target's block ORDER: the - * `hit` block sits physically between the loop test and the loop body, and its leading - * `move a0,flag` gets copied into all four branch delay slots. - * - the two D_801870xx compare fields are read `lhu` -> u16; the func_80134A74 args are `(s16)` - * casts of those u16 lvalues (combine folds the fresh ones into `lh`, and sll/sra the one that - * is still live in $a1 from the 0xFF80 compare). - * - func_80135D20's §5a cross-jump barrier is NOT needed here (ablated: MATCH either way). - */ -DEFINE_func_80135260() /* dedup: shared engine-core @0x80135260 (src/shared) */ - - -/* func_80135480 — cull + coordinate-transform emitter (258 ins, ov_SC01_077 split _a, ×134 family). - * - * NOT a §43 s16-param giant. Params are (void*, s32, s16*, s16*); the sole `sll/sra 16` is the s16 - * RETURN narrowing on $s3 (result), not an in-place arg-reg narrow. So §43's K&R-s16-param map does - * not apply here — no //@EDIT, no ec_edit. func_80135480 has NO ambient prototype/caller anywhere in - * src/include, so the s16 return type is free (no void->s32 flip, no engine_core.h edit). - * - * THE CRACK (residual class = §31 regalloc/schedule, RC-4/RC-2 in gcc-2.7.2-map/regalloc.md): - * the two output buffers D_8018BAFC / D_8018BB00 are written through a pointer in each of the two - * return tails (mode!=0 and mode==0). A single function-scope `s16 *tmp` reused across both tails is a - * GLOBAL allocno (used in 2 blocks, dies 4x) -> forced onto one hard reg ($a1), which is WRONG and also - * perturbs the switch's first-`beq` delay-slot fill (extra nop). The target instead allocates each - * store-group's pointer as a LOCAL-ALLOC pseudo (set once, used 3x, dies once, single block) that picks - * the lowest-free scratch over its OWN window: - * mode!=0 tail: p_AC -> $v1, p_B0 -> $v1 (reused, $v0 = the load temp) - * mode==0 tail: p_AC -> $v1, p_B0 -> $a0 (the sub-scratch occupies $v1, so $v1 is unavailable) - * Reproduced by giving each of the four store-groups its OWN block-scoped pointer. With the tail - * allocation correct, the whole schedule (incl. the beq delay slot) re-derives to byte-identical. - * No register pins (§17 caveat: don't pin $v1 — the target reuses it for the cull; a pin cascades - * per RC-5). NOTE: the block-scope `s16 *p` intentionally shadows the function-scope `s32 p` (the - * case-0x20000000 pointer base); scopes never overlap — legal and byte-verified. - * - * Zero file-scope footprint (block-scoped typedefs + externs; D_8018BAFC/B0 read via the ambient - * `extern u8` + `*(s16**)&` §30 anon-cast, matching neighbor func_80135168) -> ×134-clean for - * family_sweep --edit-remap with no cc1 crash. - * - * VERIFIED: tools/rtu_match.py func_80135480 --split ov_SC01_077_a -> MATCH (258 ins), 3x stable. - */ -DEFINE_func_80135480() /* dedup: shared engine-core @0x80135480 (src/shared) */ diff --git a/src/ov_SC03_015/ov_SC03_015_jr_80135888.c b/src/ov_SC03_015/ov_SC03_015_jr_80135888.c deleted file mode 100644 index 1783b1dcc..000000000 --- a/src/ov_SC03_015/ov_SC03_015_jr_80135888.c +++ /dev/null @@ -1,13 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ - /* 8-byte element, cmd @ +4 */ - /* list ptr @ +0x90 */ - /* size 8, alignment 1 -> unaligned copy */ -DEFINE_func_80135888() /* dedup: shared engine-core @0x80135888 (src/shared) */ - diff --git a/src/ov_SC03_015/ov_SC03_015_jr_80135A4C.c b/src/ov_SC03_015/ov_SC03_015_jr_80135A4C.c deleted file mode 100644 index 6a203c942..000000000 --- a/src/ov_SC03_015/ov_SC03_015_jr_80135A4C.c +++ /dev/null @@ -1,730 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ - /* 8-byte element, cmd @ +4 */ - /* list ptr @ +0x90 */ - /* size 8, alignment 1 -> unaligned copy */ -extern void func_80128288(void); -extern void func_80128158(void); -extern void func_801285E4(void); -extern void func_80128178(void); -extern void func_80128678(void); -extern void func_80128198(void); -extern void func_80128714(void); -extern void func_801281B8(void); -extern void func_8013E67C(void); -extern void func_801281D8(void); -extern void func_8013E558(void); -extern void func_801281F8(void); -extern s32 D_801E819C; -extern s32 func_80128218(void); -extern void func_80128A28(void); -extern void func_80128228(void); -extern void func_80128AF4(void); -extern void func_80128248(void); -extern void func_801282EC(void); -extern void func_80128268(void); -extern u16 D_800B99F6; -extern void (*D_8018B804[])(void); -extern void func_80011B7C(int); -extern void func_801282CC(void); -extern void func_8001C0C8(void); -extern void func_80015310(void); -extern void func_80129258(void); -extern void func_801378F0(void); -extern void func_80010E14(void); -extern s16 currentLocationId; -extern s32 func_80029504(void); -extern s32 func_800CF854(s32); -extern s32 func_80128998(void); -extern s32 func_801289F0(void); -extern s32 func_801288E8(s32); -extern s32 func_80128940(s32); -extern s32 func_80029178(s32); -extern s32 func_801288B0(void); -extern void func_80011C10(void); -extern void func_8012832C(void); -extern void func_80129220(void); -extern void func_80011E24(void); -extern void func_80128C14(void); -extern void func_8002AEF8(void); -extern void func_800CFBBC(void); -extern void SsUtReverbOff(void); -extern void func_8013C98C(void); -extern void func_80129C40(s32 a0); -extern void func_800D0630(void); -extern void func_80145CEC(void); -extern void func_80144B9C(void); -extern u8 D_800B9A17; -extern u8 D_800B9A10; -extern void func_80128420(void); -extern s32 func_800D0588(void); -extern void func_801284B8(void); -extern void func_80175308(void); -extern void func_8016E8F0(void); -extern void func_80175494(void); -extern u8 D_800B9A64; -extern void func_801284F0(void); -extern void func_80146074(void); -extern void func_8012853C(void); -extern void func_80178608(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern s32 func_80011A3C(void); -extern short currentLocationId; -extern short D_800B99F2; -extern void func_80128564(void); -extern u8 D_800B9A11; -extern void func_801285D4(void); -extern s32 func_800D18DC(void); -extern void func_8014607C(void); -extern void func_801287B8(void); -extern s32 D_801E9504; -extern void func_80029444(void); -extern void func_800D1754(void); -extern s32 D_80126B58; -extern s32 D_801EAFD0; -extern u16 D_800B99DA; -extern void func_80129CF8(void); -extern void func_8017849C(void); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_801505FC(s32 a0); -extern void func_801508B4(void *a0); -extern void func_80165E90(void); -extern void func_801627E8(void); -extern void func_80162B1C(void); -extern void func_80165CA0(void); -extern void func_80129010(void); -extern void func_8013CA14(void); -extern void func_800190AC(void); -extern void func_8012956C(void); -extern void func_8016E95C(void); -extern void func_801754A8(void); -extern void func_8013BC7C(void); -extern void func_8013BCDC(void); -extern void func_801379FC(void); -extern void func_8001212C(void); -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); -extern u8 D_800AEFD0; -extern int D_800C7C60; -extern int *D_800C7C64; -extern int D_800A2E20; -extern int D_800AF558; -extern int D_801E819C; -extern int func_801288E8(int arg0); -extern u8 D_800AF560; -extern s32 func_80128940(s32 _arg0); -extern int D_800AECB0; -extern u8 D_800AECB8; -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4); -extern s16 D_800B9A00; -extern M2C_UNK (*D_8018B540)(); -extern s16 (*D_8018B544)(); -extern M2C_UNK (*D_8018B54C)(); -extern s32 (*D_8018B550)(); -extern s32 D_801E9500; -extern void func_80010AE0(s32 a0); -extern void func_80018450(s32 a0, s32 a1); -extern void func_800183E0(s32 a0); -extern void func_80128D60(s32 a0, s32 *a1, s32 *a2); -extern s32 func_80128DB4(s32 a0, s32 *a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern M2C_UNK D_801E81A0; -extern void func_80128FAC(u16 *arg0); -extern s16 D_8011DB2C; -extern s16 D_8011DB30; -extern s32 D_80126AEC; -extern u8 *func_8012913C(s32 a0); -extern u8 * func_801290DC(s32 a0, u8 *a1); -extern void func_8001D074(s32 a, s32 b); -extern u8 *func_801291C0(void); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 * func_8012913C(s32 arg0); -extern void func_80016714(void *a0, s32 a1); -extern u8 * func_801291C0(void); -extern void func_80129248(s16 a0); -extern void func_801292C8(u8 *a0); -extern void func_8012927C(void); -extern void func_8012931C(struct vec *a0); -extern void func_80129350(s32 a0, s32 a1); -extern void func_80129374(s32 a0, s32 a1); -extern s16 D_800B9AAC[]; -extern s16 D_800B9AAE[]; -extern s16 D_800B9AB0[]; -extern s16 D_800B9AB2[]; -extern s16 D_800B9AB4[]; -extern s16 D_800B9AB6[]; -extern s16 D_800B9AB8[]; -extern s16 D_800B9ABA[]; -extern void func_80129398(void); -extern s16 D_80114EE0; -extern void func_80129428(void); -extern void func_8012943C(void); -extern s32 D_8005128C; -extern u8 D_800B9A78; -extern void func_801298F4(void *arg0); -extern void func_801299C8(s32 a, s32 b, s32 c); -extern void func_8012944C(void); -extern unsigned short D_800B99F0; -extern void func_8012A328(void); -extern void func_80053308(s32); -extern s32 func_80012F74(s32, s32, s32, s32); /* canonical s32 (engine_core); (s16)-cast the return for the sll/sra */ -extern void GsSetRefView2L(void *); -extern s8 D_801150D6; /* canonical (engine_core macro): s8 — access via *(u8*)& for lbu */ -extern u8 D_80127504; -extern s32 D_80126E60[]; -extern s32 D_80126F04[]; -extern u8 D_80126948[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_80126FA8[]; -extern struct BigCopy D_80126DB8;/* canonical (engine_core macro): struct BigCopy — (s32*)& at use */ -extern u8 D_800AF630[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_800AE688[]; -extern s32 D_801151D4; /* canonical (10 siblings): scalar s32 — store (s32)ptr */ -extern void func_8012A018(s32 a, s32 b); -extern void func_80129FF4(void); -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_80126940; -extern s16 D_80126942; -extern s16 D_80126944; -extern void func_8012A048(void *a0, s32 a1, u8 a2); -extern void *memcpy(void *, const void *, unsigned int); -extern void func_8012A094(s32 a0); -extern void func_8012A100(s8 a0); -extern void func_8012A0E0(void); -extern s8 D_801150D6; -extern s32 D_80120204; -extern s32 D_80120200; -extern s32 D_8012020C; -extern s32 D_80120208; -extern s16 D_80120218; -extern s16 D_80120210; -extern s16 D_8012021A; -extern s16 D_80120212; -extern s16 D_8012021C; -extern s16 D_80120214; -extern s16 D_80120226; -extern s16 D_80120220; -extern s16 D_80120228; -extern s16 D_80120222; -extern s16 D_8012022A; -extern s16 D_80120224; -extern s32 D_80120294; -extern s16 D_80120298; -extern s16 D_8012029A; -extern void func_8012A110(void); -extern s8 D_801152C0; -extern void func_8012A2F4(void); -extern s16 D_80127080; -extern s16 D_801152C2; -extern void func_8012A304(s32 a0, s32 a1); -extern s32 D_801151D4; -extern struct BigCopy D_80126DB8; -extern struct BigCopy D_80114EE8; -extern void func_8012A4BC(void); -extern void func_8012A62C(s32); -extern void func_8012A5F8(void (*a0)(void), s32 a1); -extern void func_8012A62C(s32 a0); -extern void func_8012A7D4(void *a0, void *a1); -extern s32 func_8012A6D0(void *a0, void *a1); -extern s16 func_8012A68C(void); -extern s16 func_8012A79C(s16 *a0, s16 *a1); -extern s16 func_8012A758(void); -extern s32 ratan2(s32 a0, s32 a1); -extern void func_8012A7D4(void *arg0, void *arg1); -extern void func_8012AAAC(); -extern void func_8012A828(s32 a0, void * a1); -extern int func_8012ACE0(void *a0); -extern void func_8012A860(void *a0, int a1); -extern void func_8012A8B0(u8 *a0, s32 a1); -extern void func_8012A8E8(void); -extern u8 D_801202A0[]; -extern u16 D_801270C0; -extern void func_8012A988(u8 *a0); -extern void func_8012A908(void); -extern s32 func_8012ACE0(void *a0); -extern M2C_UNK D_8018B898; -extern void func_8012ACA0(void *arg0); -extern s32 func_8012ACE0(void *o); -extern void func_8012AD44(s32 *a0, s16 a1); -extern s32 func_8012AD50(void * arg0); -extern void func_8012AD64(s32 *a0, s16 a1); -extern void func_8012AD6C(void *a0); -extern void func_8012AD80(s32 a0); -extern void func_8012ADE4(u8 *a0); -extern s32 *D_80126B78; -extern s32 *D_80126B90; -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80013478(s32 a0, s32 a1); -extern s32 func_8012AE00(s32 a0); -extern s32 func_8012AF0C(s32 a0, s32 a1); -extern s32 func_80134510(s32 arg); -extern s32 func_8012B030(u8 *a0); -extern int func_80047948(int a0); -extern int func_8004787C(int a0); -extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_8012B14C(s32 a0, s32 a1); -extern void func_8012B178(s32 a0, s32 a1); -extern void func_8012B1B4(s32 a0, s32 a1); -extern void func_8012B200(u8 *a0); -extern void func_8012B21C(void *a0); -extern void func_8012B23C(s32 a0); -extern void func_8012B260(u8 *a0); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern void RotMatrixYXZ(void *m, void *p); -extern void func_8012B370(int a0); -extern void func_8004978C(s16 *a0, void *a1); -extern void func_8012B414(int a0); -extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); -extern s32 func_8012B6D4(s16 *a0, s16 *a1); -extern s32 func_8012B70C(s16 *a0, s16 *a1); -extern s32 ratan2(s32 x, s32 y); -extern s32 func_8012B744(void *a0, void *a1); -extern s16 D_80126CB8; -extern s16 D_80126CB4; -extern s32 func_8012B864(s32 a0); -extern s32 func_8012B8A4(s16 *a0); -extern s32 func_8012B8E4(s32 arg0, s32 arg1); -extern s32 func_8012BA10(s32 arg0, s32 arg1); -extern s32 func_8012BB3C(s32 arg0, s32 arg1, u32 arg2, s32 arg3); -extern void Square0(s32 *a0, s32 *a1); -extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1); -extern s16 D_80126CBA; -extern s32 func_8012BCCC(s32 a0); -extern void func_80013350(s32 a0, void *a1); -extern u8 D_80126B5C; -extern void func_8012BD14(s32 a0); -extern s32 func_8012BDBC(s32 a0, s32 a1); -extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2); -extern void func_8012BE98(s32 a0, u16 *a1); -extern void func_8012BE54(s32 a0); -extern s32 func_800132BC(s32 a0, s32 a1); -extern void func_8012BE98(s32 arg0, u16 * arg1); -extern s32 func_8012BEE8(s32 a0); -extern s32 func_8012BF10(s32 a0, s32 a1); -extern void func_8012BF4C(s32 *a0, s32 a1); -extern void func_8012BF54(void *a0); -extern void func_8012BF68(void *a0); -extern s16 D_80126CB0; -extern s32 func_8012BF7C(s16 *a0); -extern s16 D_80126CAC; -extern short D_80126CAE; -extern int func_8012BFA8(short *a0); -extern s32 D_801274D4; -extern s32 D_801274E0; -extern s32 func_8012C044(s32 a0); -extern void func_8012C218(void *a0); -extern void func_8012C098(void *param_1); -extern s32 func_8012C0EC(s32 a0); -extern void func_8012C194(void); -extern void func_8001CFDC(s32 a, s32 b); -extern void func_8012C1B8(void); -extern u8 D_800B3DF0[]; -extern s32 func_8012C1DC(s32 a0); -extern u8 D_80126720[]; -extern u16 * func_8012C284(u16 *a0); -extern u8 D_80120194[]; -extern s32 func_8012C2D0(void); -extern s32 func_8012C31C(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32 a0, s32 a1); -extern u8 D_80078EAE; -extern s32 func_8012C354(s32 a0, s32 a1); -extern void func_8001C810(s32 a0, s32 a1); -extern s32 func_8012C438(s32 a0, s32 a1); -extern s32 func_8012C890(s32 a0, s32 a1, s32 a2); -extern s32 func_8012C51C(void *a0, s32 a1); -extern s32 func_8012C588(s32 a0, s32 a1); -extern void func_8012C724(s32 a0, s32 a1); -extern s32 func_8012C750(s32 a0); -extern s32 func_8012C820(u8 *a0); -extern s32 D_8018ED7C; -extern s16 D_801270C4; -extern u16 D_801274E4[]; -extern s32 D_8011DB08; -extern s32 func_8012CB64(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); -extern s32 func_8012CC88(s32 a, s32 b, s32 c); -extern u8 D_800D3918[]; -extern void func_8012CBA4(s32 a0); -extern void func_8012CBCC(s32 a0); -extern void func_8012CBF4(s32 a0); -extern void func_8012CC1C(s32 arg0, s32 arg1); -extern void func_8012CC40(s32 arg0, s32 arg1); -extern s32 func_8012CC88(s32 a0, s32 a1, s32 a2); -extern void func_8012CC64(s32 a0, s32 a1); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern s32 func_8012CE2C(s32 a0); -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); -extern void func_8012CFA8(s32 arg0); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_8012D3B4(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012D098(u16 *param_1, u32 param_2); -extern void func_8012D098(); -extern void func_8012D38C(int a0); -extern void func_8012D3AC(void); -extern s32 AddPrim(s32, void *); -extern s32 RotTransPers(s32, s32, s32 *, s32 *); -extern void SetLineF2(void *); -extern void *func_80010A08(s32); -extern void func_8004914C(void *); -extern void func_800491AC(void *); -extern s32 D_800A651C; -extern u8 D_800AF648; -extern s16 D_800B9A02; -extern void func_8012D4B4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_8012D5DC(void); -extern s16 D_80126B98; -extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2); -extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern int func_8012D664(); -extern void func_8012D624(s32 a0); -extern int func_8012D664(int arg0, int arg1, int arg2); -extern s32 func_8012D714(s32 param_1, u32 param_2); -extern void func_8012F568(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void func_8014C978(void); -extern M2C_UNK D_8018B8B0; -extern M2C_UNK D_8018B8B8; -extern s32 func_8012DB84(void); -extern s32 func_8012DE2C(s32 a0); -extern s32 func_8012DDA4(void); -extern s32 func_8012DBD0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8012DDA4(); -extern s32 func_8012DF34(s32 a0, s32 a1, s32 a2); -extern s16 D_80126B9A; -extern u8 D_801152A8[]; -extern void func_8012DFBC(void); -extern void func_8012DFCC(void); -extern void func_8012E014(s32 arg0); -extern void func_8012E138(void); -extern void func_8012DFD4(u8 *a0); -extern s32 func_8012E27C(void); -extern void func_8012E284(void); -extern s32 GetTPage(s32, s32, s32, s32); -extern s32 func_8005A600(s32, s32, s32, s32, s32); -extern void func_8012E28C(s32 arg0, s32 arg1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void func_8012E32C(void); -extern s32 func_8012E470(s32 a0); -extern void func_8012E4C8(s32 a0); -extern s32 func_8012E504(s32 a0, s32 a1); -extern s32 func_8012E544(s32 a0); -extern s32 func_8012E57C(s32 a0, s32 a1); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E688(s32 param_1, u16 param_2, u16 param_3); -extern s32 func_8012E778(int param_1, int param_2); -extern void func_8012E88C(u8 *a0); -extern void func_8012E8A8(u8 *a0); -extern void func_8012E8C4(u8 *a0); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8016AA50(int, int); -extern void func_8016B428(int); -extern void func_80019064(void *); -extern int D_8018B8C0; -extern void func_8012E9C0(int param_1); -extern void func_8012EA90(s32 param_1, s32 param_2, s32 *param_3); -extern void func_8012EC04(s32 param_1, s32 param_2, s32 *param_3); -extern s32 func_8002A4FC(s32 a0); -extern s32 func_8012EECC(s32 a0); -extern void func_8012EFB8(s32 a0); -extern void func_8012EF34(s32 a0, s32 a1); -extern void func_8012EF70(s32 a0, s32 a1); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8012F0BC(s32 *a0, s32 *a1, s32 *a2); -extern void RotTransSV(s32 a0, s32 a1, void *a2); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_8012F1A4(s32 *a0, s32 a1, s32 *a2); -extern void func_8012F2E8(s32 a0, s32 a1, s32 a2); -extern s16 D_80126CB6; -extern void func_8012F374(s32 a0, s32 a1); -extern void *memcpy(void *, const void *, u32); -extern u8 D_80126C38; -extern u8 D_80126C40; -extern u16 D_80126B94; -extern u16 D_80126B96; -extern void func_8012F568(s32 param_1, s32 param_2, s32 param_3, s32 param_4, s32 param_5, s32 param_6); -extern void func_80131B14(); -extern void func_80131E00(struct S80131E00 *a0, s32 a1); -extern s32 func_80131A34(s32, s32); -extern void func_80131CA8(int a0, int a1); -extern void func_8012F5F4(s32 arg0); -extern void func_80131C78(s32 a0); -extern void func_8012F68C(s32 arg0); -extern void func_8012F75C(s32 a0); -extern s32 func_8012BEE8(s32); -extern void func_8012F7B4(s32 a0); -extern void func_80131170(); -extern void func_80131CA8(); -extern unsigned char D_8018B8DC[]; -extern void func_8012F828(int param_1); -extern void func_80131340(s32 a0); -extern void func_8012F87C(s32 a0); -extern void func_80131170(s32 a0, s32 a1, s32 a2); -extern u8 D_8018B8E8[]; -extern void func_8012F8C8(u8* arg0); -extern void func_8012F91C(s32 a0); -extern s32 func_80131A34(s32 a0, s32 a1); -extern void func_80131CA8(s32 a0, s32 a1); -extern void func_8012F968(s32 param_1); -extern void func_801319E0(s32 a0); -extern s32 func_80143B6C(s32 a0, s32 a1); -extern void func_8012FB54(s32 a0); -extern void func_8012FC30(s32 a0); -extern void func_8012FCA4(int a0); -extern s32 func_8012FCC4(s32 param_1); -extern void func_8012FDA8(int param_1); -extern void func_8012FE70(s32 a0); -extern void func_8012FF00(s32 a0); -extern void func_8012FF4C(s32 a0); -extern void func_80130D48(s32 a0); -extern void func_8012FF98(u8 *a0); -extern s32 func_80131AC8(void *a0); -extern void func_8013001C(void *a0); -extern void func_80130088(void *a0); -extern s32 func_8012BCCC(s32); -extern void func_801300F4(s32 a0); -extern void func_801301E8(u8 *a0); -extern void func_80130278(s32 arg0); -extern void func_80130314(s32 a0); -extern void func_80130360(s32 a0); -extern void func_8012E364(void); -extern void func_801303A0(s32 a0); -extern void func_801303EC(void *a0); -extern void func_80143CD4(s32 a0); -extern void func_800CB0E8(s32 a0); -extern void func_80130438(s32 a0); -extern void func_801319E0(int); -extern int func_80131D68(int, int); -extern int func_8012BEE8(int); -extern void func_80131CA8(int, int); -extern void func_80130514(int param_1); -extern void func_801305CC(u8 *a0); -extern void func_8012CBF4(s32); -extern s32 func_80131D68(s32 a0, s32 a1); -extern void func_80130650(s32 a0); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_80130740(void *a0, u16 *a1); -extern s32 func_801312D0(s32 a0, void *a1); -extern void func_801307B0(s32 a0); -extern void func_80130858(s32 a0); -extern void func_80130898(u8 *a0); -extern void func_801308DC(s32 a0); -extern void func_80166244(); -extern void func_80130974(int param_1); -extern void func_80130A18(u8 *a0); -extern void func_80130AC4(s32 a0); -extern int func_80131A34(int a0, int a1); -extern void func_80130AF0(int param_1); -extern void (*D_8018B8FC[])(void); -extern void func_80130D0C(void *a0); -extern s32 rand(void); -extern u8 D_80078E78[]; -extern u16 D_80078EB2; -extern u16 D_80078EB4; -extern s16 D_8018B94C[]; -extern s16 D_8018B97C[]; -extern s16 D_8018B9DC[]; -extern s16 D_8018B9E4[]; -extern s16 D_8018BA04[]; -extern void func_80130D48(s32 arg0); -extern void func_80131170(s32 p, s32 b, s32 c); -extern s32 func_801312D0(s32 param_1, void *param_2); -extern void func_80131E00(); -extern s32 D_801E9528; -extern s32 D_801E952C; -extern void func_8002A04C(s32 a0); -extern void func_801319E0(s32 arg0); -extern s32 func_80131CF4(s32 a0); -extern int func_80131D68(int a0, int a1); -extern void (*D_8018BA3C[])(struct S80131E00 *a0); -extern void func_80131E38(u8 *a0); -extern void func_80131E7C(s32 a0); -extern void func_80131EE4(void); -extern void (*D_8018BA94[])(void); -extern void func_80131EEC(void *a0); -extern void (*D_8018BADC[])(void); -extern void func_80131F28(void *a0); -extern void (*D_8018BAE4[])(void); -extern void func_80131F64(void *a0); -extern void (*D_8018BAEC[])(void); -extern void func_80131FA0(void *a0); -extern void (*D_8018BAF4[])(void); -extern void func_80131FDC(void *a0); -extern void func_801320D0(void); -extern void func_8001C214(int, int); -extern int D_8018BA9C; -extern void func_801320D8(int param_1); -extern s32 func_80132144(s32 param_1); -extern int D_8018BABC; -extern void func_801321B0(int param_1); -extern int D_8018BACC; -extern void func_8013221C(int param_1); -extern void func_8005C324(int dst, int src, int n) __asm__("memcpy"); /* Phase-24: 0x8005C324 is named memcpy for overlays (whale needs it); keep the non-builtin C name here (else built-in codegen), emit via asm-label */ -extern void func_801325B8(int a0, int a1, int a2, int a3, int a4); -extern void func_80132288(int *param_1, int *param_2, int param_3); -extern void func_801325B8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_8013240C(s32 a0); -extern void memcpy(); -extern void gteMIMefunc(); -extern void func_801325B8(int dst, int src, int m0, int mm, int arg5); -extern void func_8013277C(void); -extern void func_80020F34(s32 a0, s32 a1); -extern void func_80054514(s32 a0, s32 a1); -extern void func_80132784(s32 a0, s32 a1, u32 a2); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_80132DC4(s32 a0, s32 a1, s32 a2); -extern s32 func_80132E6C(s16 *a0); -extern void func_80132EC4(void *a0, s16 a1); -extern s32 func_80132EF4(s32 a0, s32 a1); -extern void func_801330E0(void * param_1, s16 * param_2, s32 param_3); -extern void func_80133060(u8 *a0, s32 *a1, s32 a2); -extern void func_8013339C(short *param_1, short *param_2); -extern s32 func_8013361C(s16 *a0, s16 *a1, s16 *a2, s16 *a3); -extern s32 D_801E9570; -extern s32 D_801E9574[]; -extern int D_801E9578; -extern void func_80136BC4(s32 a0); -extern void func_801336E8(void *a0, int a1, int a2); -extern void func_80136BC4(s32); -extern void func_8013373C(s16 arg0); -extern s32 func_80133784(s32 arg0, void *arg1, s32 arg2); -extern s32 func_80133CD4(); -extern s32 func_80134310(Vec3s *a0, Vec3s *a1, s32 a2); -extern s32 func_8013435C(s16 *a0, s16 *a1, s32 a2, s16 *a3); -extern s32 func_801343C4(s32 angle, s32 p1, s32 p2); -extern s32 func_80134510(s32 param); -extern s32 func_801345F8(s32 arg); -extern s32 func_801347A0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134A28(s32 a0, s32 a1, s32 a2); -extern int func_80134A74(int param_1, s16 param_2, s16 param_3, int param_4); -extern s32 func_80134C20(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134FB8(s32 a0, s32 a1, s32 a2); -extern s32 func_80135004(s32 arg0, s32 p1, s32 p2); -extern u8 D_8018BB00; -extern u8 D_8018BAFC; -extern s16 *D_8018BB04; -extern u8 D_8018BB08; -extern int D_801E9570; -extern u16 D_801E9580; -extern int func_80134A74(int, s16, s16, int); -extern int func_80135168(u16 arg0, u16 *p1, u16 *p2); -extern s16 func_80135480(void *param_1, s32 param_2, s16 *param_3, s16 *param_4); -/* ==== end §8b carried decl layer ==== */ - - -s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3) { - typedef struct { s8 c[8]; } Blk8; - extern s16 func_80135480(void *param_1, s32 param_2, s16 *param_3, s16 *param_4); - extern s32 func_80135EB0(void *arg0, s32 arg1_); - extern s32 func_80136A94(s32 a0, s32 a1, s32 a2, s32 a3); - extern s32 func_80133AB0(s16, s16, s16, s32); - extern u8 D_8018BAFC; - extern u8 D_8018BB00; - extern s16 *D_8018BB04; - extern s16 D_801E957C; - extern u16 D_801E9580; - extern s32 D_801E9584; - extern s32 D_801E95A4; - extern u8 D_801152A8[]; - extern u8 D_801152B0; - - s32 *p; - register s32 s7 __asm__("$23"); - s32 flag; - s32 acc; - s16 i; - s32 eq; - s32 ret; - s32 frame_pad[8]; - (void)&frame_pad; - - switch (((s32 (*)(void))func_80135480)()) { - case 0: - return 0; - case 1: - s7 = a0 + 0x34; - p = (s32 *)((a1 & 0xFFFFFFF) | 0x80000000); - flag = 0; - break; - case 2: - s7 = a0 + 0x34; - p = (s32 *)((a1 & 0xFFFFFFF) | 0x80000000); - flag = 1; - break; - case 3: - s7 = a0 + 0x34; - p = (s32 *)&D_801E95A4; - flag = 0; - break; - case 4: - s7 = (s32)&D_801E9584; - p = (s32 *)&D_801E95A4; - flag = 1; - break; - } - - acc = 0; - if (a1 < 0) { - if (func_80135EB0(p, -0x8000) == 0) { - p = (s32 *)*p; - if (p == 0) return 0; - loop: - if (func_80135EB0(p, -0x8000) == 0) goto next; - } - docall: - func_80136A94(flag, a0, a3, s7); - return 1; - next: - p = (s32 *)*p; - __asm__ __volatile__(""); - if (p != 0) goto loop; - return 0; - } - - i = 0; - *(s16 *)((*(u8 **)&D_8018BAFC) + 6) = -0x7FFF; - *(s16 *)((*(u8 **)&D_8018BB00) + 6) = 0x7FFF; - D_801E9580 = 0; - D_801E957C = 0; - { - s32 t = 0; - if (((V3 *)a2)->x == ((V3 *)a3)->x && ((V3 *)a2)->y == ((V3 *)a3)->y) { - s32 zt = (((V3 *)a2)->z == ((V3 *)a3)->z); - __asm__("addu %0,%1,$zero" : "=r"(t) : "r"(zt)); - } - eq = t; - } - - while (1) { - ret = func_80133AB0(0, (s16)(*(Box **)&D_8018BAFC)->f0, (s16)(*(Box **)&D_8018BAFC)->f4, (s32)p); - if (ret == 0) goto out; - acc |= ret; - if (eq != 0) goto out; - { - s16 old = i; - i = i + 1; - if (old >= 5) return 0; - } - } - -out: - if ((s16)acc != 0 || D_801E957C != 0) { - if ((*(Box **)&D_8018BAFC)->f6 >= -0xBCB) { - *(Blk8 *)D_801152A8 = *(Blk8 *)&D_801152B0; - } - (*(Box **)&D_8018BB04)->f0 = (*(Box **)&D_8018BB00)->f0; - (*(Box **)&D_8018BB04)->f2 = (*(Box **)&D_8018BB00)->f2; - (*(Box **)&D_8018BB04)->f4 = (*(Box **)&D_8018BB00)->f4; - goto docall; - } - return 0; -} diff --git a/src/ov_SC03_015/ov_SC03_015_jr_80135D20.c b/src/ov_SC03_015/ov_SC03_015_jr_80135D20.c deleted file mode 100644 index 7ebe3ff30..000000000 --- a/src/ov_SC03_015/ov_SC03_015_jr_80135D20.c +++ /dev/null @@ -1,520 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ - /* 8-byte element, cmd @ +4 */ - /* list ptr @ +0x90 */ - /* size 8, alignment 1 -> unaligned copy */ -DEFINE_func_80135D20() /* dedup: shared engine-core @0x80135D20 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (289 ins). symcheck: only the cosmetic jtbl_801D81B8 floor (§8 carve). -// -// func_80135EB0 — h_seq family exemplar (x138 across the overlay fleet). Levers that made it: -// 1. m2 (the y-axis mask) MUST be the if/else form, NOT `m2=0x10; if (a8<=t3) m2=...`. -// Both emit the same compact `bnez; li $s2,0x10` pair, but the pre-init form lets CSE carry -// the D_8018BAFC pointer load into the (m1|m2)==0 block; the if/else form ends the CSE -// extended-BB so the block reloads `lui/lw D_8018BAFC` (target does). Worth 2 ins + the whole -// big-block register assignment. -// 2. Zero-byte `__asm__ __volatile__("")` fences in case 1 and case 2 (DIFFERENT templates, "" vs " ") -// block gcc-2.7.2 cross_jump from folding those two bodies into case 6's second-call tail -// (they are byte-identical to it; the target keeps all three copies). Worth 10 ins. -// 3. Zero-byte fences between the three big-block coordinate groups stop sched2 hoisting the next -// group's `lhu` into the previous group's load-delay nop (restores 2 nops). -// 4. `D_801152AA = 0;` AFTER the h0 statement: it shortens the [6]-field temp's local-alloc live -// range so c0 wins $v1 and the field temps take $v0/$a0 (target), not $v1/$v0. -// 5. case 4 reaches case 8's tail through a shared `L288` label using `w = x << 16` / `w >> 16` -// so the shared block is exactly `sra $a1,$a1,16` — that is target's .L80136288. `w` pinned to -// $a1 ($5); it never spans a jal so §74 does not apply. -// 6. arg1 copied into a $s3-pinned local — without it global-alloc gives arg1 $s2 and m2 $s3 -// (arg1 has more refs; target's priority order is arg0, sext-temp, m2, arg1). -// 7. `ret0:` sits between case 8 and case 10 and `done:`/`case 0:` after case 10 — that is the -// target's basic-block order; reorg then produces the inline `move $v0,$zero` delay slots. - -DEFINE_func_80135EB0() /* dedup: shared engine-core @0x80135EB0 (src/shared) */ - - -s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { - extern u8 D_801152A8[]; - extern s16 D_801152AA; - extern s16 D_801152AC; - extern s16 D_80126722; - extern s16 D_80126724; - register s32 a1v __asm__("$11"); - register s32 a2v __asm__("$12"); - register s32 n __asm__("$5"); - register s16 *b4 __asm__("$7"); - s32 d; - s32 dx; - s32 denom; - s32 result; - s32 frame_pad[2]; - (void)&frame_pad; - __asm__("" : "=r"(a1v) : "0"(arg1)); - a2v = arg2; - - if (!(arg1 & 1)) { - dx = (s16) arg2 - (*(s16 **)&D_8018BAFC)[2]; - d = dx; - denom = -(*(s16 **)&D_8018BB08)[2]; - } else { - denom = (*(s16 **)&D_8018BB08)[2]; - d = (*(s16 **)&D_8018BAFC)[2] - (s16) arg2; - dx = -d; - } - n = -d; - { - register s16 *b8 __asm__("$6") = *(s16 **)&D_8018BB08; - u16 *ac = *(u16 **)&D_8018BAFC; - b4 = D_8018BB04; - b4[0] = ac[0] + n * b8[0] / denom; - b4[1] = ac[1] + n * b8[1] / denom; - b4[2] = ac[2] + dx; - } - - if (b4[0] < M2C_FIELD(arg0, s16 *, 4)) return 0; - if (M2C_FIELD(arg0, s16 *, 6) < b4[0]) return 0; - if (b4[1] < M2C_FIELD(arg0, s16 *, 8)) return 0; - if (M2C_FIELD(arg0, s16 *, 0xA) < b4[1]) return 0; - if (a1v & 0x8000) { - u16 *b0 = *(u16 **)&D_8018BB00; - b4[0] = b0[0]; - b4[1] = b0[1]; - } - D_801152AA = 0; - (*(s16 *)D_801152A8) = 0; - if (a1v & 1) { - D_8018BB04[2] = a2v + 2; - __asm__ __volatile__(""); - D_801152AC = 0xFFF; - } else { - D_801152AC = -0xFFF; - D_8018BB04[2] = a2v - 2; - } - __asm__ __volatile__("" :: "r"(a1v), "r"(a2v)); - (*(s16 *)D_80126720) = (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1; - D_80126722 = (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1; - result = 1; - D_80126724 = (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1; - return result; -} - - - - -// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). -// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). - -// D_8018BAFC/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). -// D_8018BB04 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` -// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs -// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). -DEFINE_func_801365B8() /* dedup: shared engine-core @0x801365B8 (src/shared) */ - - - -// @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) -// D_8018BAFC/B0/B8 are file-scope `extern u8`, D_8018BB04 is `extern s32 []`; each HOLDS a -// pointer value that the target loads via lw then derefs. Read as pointer via *(T**)&sym. -// D_8018BB04 must be a SCALAR pointer (not s32[]) — as an array it decays and gcc CSEs the -// base address into a held reg (lui;addiu;lw 0(reg)) across the 3 reloads; as a scalar -// pointer it folds %lo (lui;lw %lo). Retype all 3 file-TU occurrences (byte-neutral: the -// siblings read it once via *(u16**)&sym == direct lw either way). - -s32 func_80136824(s32 arg0, s32 arg1, s32 arg2) { - extern u8 D_801152A8[]; - extern s16 D_801152AA; - extern s16 D_801152AC; - extern s16 D_80126722; - extern s16 D_80126724; - - register u16 *ac __asm__("$4"); - register s16 *b8 __asm__("$6"); - register s16 *b4 __asm__("$9"); - register s32 r __asm__("$3"); - register s32 pos __asm__("$12"); - register s32 a1v __asm__("$5"); - s16 temp_v0; - s16 temp_v1; - s32 var_a3; - s16 var_v0_3; - s32 temp_a1; - s32 var_t0; - s32 var_v1; - s16 *b4b; - u16 *p; - - __asm__ ("" : "=r"(a1v) : "0"(arg1)); - pos = arg2; - if (!(a1v & 1)) { - var_t0 = (s16) arg2 - (*(s16 **)&D_8018BAFC)[1]; - var_v1 = var_t0; - var_a3 = -(*(s16 **)&D_8018BB08)[1]; - } else { - var_a3 = (*(s16 **)&D_8018BB08)[1]; - var_v1 = (*(s16 **)&D_8018BAFC)[1] - (s16) arg2; - var_t0 = -var_v1; - } - b8 = (*(s16 **)&D_8018BB08); - ac = (*(u16 **)&D_8018BAFC); - b4 = D_8018BB04; - temp_a1 = -var_v1; - r = (temp_a1 * b8[0]) / var_a3; - b4[0] = ac[0] + r; - b4[1] = ac[1] + var_t0; - r = (temp_a1 * b8[2]) / var_a3; - temp_v0 = ac[2] + r; - b4[2] = temp_v0; - temp_v1 = b4[0]; - if (temp_v1 < M2C_FIELD(((void *)arg0), s16 *, 4)) { - return 0; - } - if (M2C_FIELD(((void *)arg0), s16 *, 6) < temp_v1) { - return 0; - } - if (temp_v0 < M2C_FIELD(((void *)arg0), s16 *, 0xC)) { - return 0; - } - if (M2C_FIELD(((void *)arg0), s16 *, 0xE) < temp_v0) { - return 0; - } - if (arg1 & 0x8000) { - p = (*(u16 **)&D_8018BB00); - b4[0] = (s16) p[0]; - b4[2] = (s16) p[2]; - } - D_801152AC = 0; - (*(s16 *)D_801152A8) = 0; - if (arg1 & 1) { - b4b = D_8018BB04; - D_801152AA = 0xFFF; - __asm__ __volatile__(""); - var_v0_3 = pos + 2; - } else { - b4b = D_8018BB04; - D_801152AA = -0xFFF; - __asm__ __volatile__(""); - var_v0_3 = pos - 2; - } - b4b[1] = var_v0_3; - __asm__ __volatile__("" :: "r"(pos)); - (*(s16 *)D_80126720) = (s16) ((s32) (M2C_FIELD(((void *)arg0), s16 *, 4) + M2C_FIELD(((void *)arg0), s16 *, 6)) >> 1); - D_80126722 = (s16) ((s32) (M2C_FIELD(((void *)arg0), s16 *, 8) + M2C_FIELD(((void *)arg0), s16 *, 0xA)) >> 1); - D_80126724 = (s16) ((s32) (M2C_FIELD(((void *)arg0), s16 *, 0xC) + M2C_FIELD(((void *)arg0), s16 *, 0xE)) >> 1); - return 1; -} - - -// @class: schedule -// @stuck: none — MATCH (76 ins, relocation-masked). Key lever: the D_80126720/22/24 tail is a -// global-short RMW `+=`. Writing it via a cast `*(u16*)&SYM = *(u16*)&SYM + x` makes gcc CSE -// the address into a base reg (base-reuse) for ALL three — but the target only base-reuses -// D_80126720 (a SCHEDULER artifact: its addr-lui fills the load-delay slot after the pb4[4] -// load, and since $v0 is live it lands in $a0, reused for load+store). D_80126722/24 use the -// plain inline 2-lui form. Fix = DIRECT scalar RMW `SYM = SYM + x` (no &/cast) → inline %hi/%lo; -// the scheduler alone forces base-reuse on #1. Also: `s16 D_80126724 = D_80126724 + int` emits -// LHU (gcc-2.7.2 drops the sign-extend because the sum is truncated to 16b on the sh) — so the -// canonical s16 decl is byte-safe here (no u16 retype needed, keeps the sign-sensitive callers). - - -extern s16 *D_8018BB04; /* holds a pointer value (*(u16**)&D_8018BB04) */ - -s32 func_80136A94(s32 a0, s32 a1, s32 a2, s32 a3) { - extern void ApplyMatrixSV(void *m, void *v0, void *v1); - extern void ApplyRotMatrix(void *v0, void *v1); - extern u16 D_80126722; - extern s16 D_80126724; - extern s16 D_801152AA; - extern s16 D_801152AC; - - s32 out[4]; - u16 *pb4; - - if (a0) { - ApplyMatrixSV((void *)a3, *(void **)&D_8018BB04, *(void **)&D_8018BB04); - ApplyMatrixSV((void *)a3, (void *)D_80126720, (void *)D_80126720); - ApplyRotMatrix((void *)D_801152A8, (void *)out); - *(s16 *)D_801152A8 = out[0]; - D_801152AA = out[1]; - D_801152AC = out[2]; - } - - pb4 = *(u16 **)&D_8018BB04; - *(s16 *)(a2) = pb4[0] + *(s32 *)(a1 + 0x48); - *(s16 *)(a2 + 2) = pb4[1] + *(s32 *)(a1 + 0x4C); - *(s16 *)(a2 + 4) = pb4[2] + *(s32 *)(a1 + 0x50); - - *(u16 *)D_80126720 = *(u16 *)D_80126720 + *(s32 *)(a1 + 0x48); - D_80126722 = D_80126722 + *(s32 *)(a1 + 0x4C); - D_80126724 = D_80126724 + *(s32 *)(a1 + 0x50); -} - - - -DEFINE_func_80136BC4() /* dedup: shared engine-core @0x80136BC4 (src/shared) */ - -DEFINE_func_80136C1C() /* dedup: shared engine-core @0x80136C1C (src/shared) */ - -DEFINE_func_80136C3C() /* dedup: shared engine-core @0x80136C3C (src/shared) */ - -DEFINE_func_80136C44() /* dedup: shared engine-core @0x80136C44 (src/shared) */ - -DEFINE_func_80136C4C() /* dedup: shared engine-core @0x80136C4C (src/shared) */ - - -DEFINE_func_80136C54() /* dedup: shared engine-core @0x80136C54 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (28 ins). 10-byte 1-aligned struct copy (S10_80136C90{char s[10]}) from global D_801E83F0 into a stack buffer, then func_8001534C(0,&buf,0x78,0x10,0,0). gcc emits the block move as 2 unaligned words (lwl/lwr+swl/swr) + 2 bytes (lb/sb). - - -s32 func_80136C90() -{ - extern void func_8001534C(int, void *, int, int, int, int); - extern S10_80136C90 D_801E83F0; - - S10_80136C90 buf = D_801E83F0; - func_8001534C(0, &buf, 0x78, 0x10, 0, 0); -} - - - -DEFINE_func_80136D00() /* dedup: shared engine-core @0x80136D00 (src/shared) */ - -DEFINE_func_80136D08() /* dedup: shared engine-core @0x80136D08 (src/shared) */ - -DEFINE_func_80136DFC() /* dedup: shared engine-core @0x80136DFC (src/shared) */ - -DEFINE_func_80136EC4() /* dedup: shared engine-core @0x80136EC4 (src/shared) */ - -DEFINE_func_80136ECC() /* dedup: shared engine-core @0x80136ECC (src/shared) */ - -DEFINE_func_80136F3C() /* dedup: shared engine-core @0x80136F3C (src/shared) */ - -DEFINE_func_80137030() /* dedup: shared engine-core @0x80137030 (src/shared) */ - -DEFINE_func_80137178() /* dedup: shared engine-core @0x80137178 (src/shared) */ - -DEFINE_func_801372B0() /* dedup: shared engine-core @0x801372B0 (src/shared) */ - -DEFINE_func_801375EC() /* dedup: shared engine-core @0x801375EC (src/shared) */ - -extern void func_801375EC(s32 a0, s16 a1); - -// @class: schedule (arg-copy placement) — PIN-FREE -// match_one: MATCH (26 ins). rtu: MATCH (26 ins) with NO //@EDIT and NO header edit. -// -// ---- RECONCILE 2026-08-01 (uc2 -> uc3) --------------------------------------------------- -// GATE ERROR was: -// jr_80135D20.c:1412 conflicting types for func_80137614 || :1362 previous declaration -// :1362 is `DEFINE_func_801375EC()`, whose expansion (src/shared/engine_core.h:2819) carries -// extern void func_80137614(s32 a0, s32 a1, s32 a2); -// and it is instantiated two lines ABOVE this function's INCLUDE_ASM splice point (:1364). -// :1412 is this draft's own definition. So the conflicting symbol is func_80137614 ITSELF -// and the axis is the §73 RETURN type: the shared header says `void`, the target ends -// `addu $v0, $s0, $zero` and callers in other overlays consume the result -// (ov_SC03_099_jr_80178D40.c already declares it `extern s32 func_80137614(s32,s32,s32)`), -// so the definition MUST stay s32. Re-voiding the definition is the decay loop: gcc-2.7.2 -// silently drops the $v0 set and you get 25/26 ins, class LENGTH-DRIFT/-1. -// -// ESCAPE USED: §37/§124 ASM-LABEL ALIAS (escape #2). The definition is given a distinct C -// identifier `aF80137614` with __asm__("func_80137614"), so it never collides with the -// header's `extern void func_80137614` while still emitting the canonical symbol. Zero -// header edits, zero TU edits, blast radius 0 — this replaces uc2's //@EDIT §65b de-macroize -// of DEFINE_func_801375EC, which would have had to be repeated at all 138 sweep sites. -// The TU already uses this exact idiom 60-odd lines below -// (`void *aF801376E8(int a0, int a1) __asm__("func_801376E8");`), so it travels to siblings. -// The in-TU call from func_801375EC still binds to the header's extern declaration and -// resolves to the same symbol at link time; func_801375EC's own 10 instructions are unchanged. -// -// ---- CODEGEN (unchanged from uc2 — do not touch) ----------------------------------------- -// Residual before the lever: 4 mismatched, the (sw $sN / addu $sN,$aX) prologue PAIRS mirrored — -// target births $s2<-a2 then $s3<-a1; the naive draft births $s3<-a1 then $s2<-a2 (parm order), -// and drags `sw $s3` above `sw $s2` with it. Register ASSIGNMENT was already right in both, so -// this is NOT a regalloc problem. Measured INERT: body statement order, extra plain locals, -// K&R parm-declaration order (incl. declaring a2 before a1 in the K&R decl block). -// -// LEVER — cookbook §67 (arg-copy PLACEMENT). One zero-instruction launder of the a1 parameter -// pins WHERE its entry copy materialises; a2's copy then takes the earlier slot and the register -// saves fall back into ascending order. DIRECTION MATTERS and is the opposite of the intuition: -// laundering a2 (the copy that must move EARLIER) is inert — launder the copy that must land -// LATER. §67 rule 1 respected: the laundered local is NOT pinned. A pinned variant -// (register s32 __asm__("$18") / __asm__("$19") on a2/a1) also MATCHes, but pins are strictly -// worse for the ×138 family sweep (§42e/§86 pin guard), so the pin-free single launder is banked. -// -// Shape copied from the matched next-door sibling DEFINE_func_8013767C() (engine_core.h), -// which is this function minus the 0xD8 mask and the +0x1C halfword store. - -extern s32 func_801399A8(void); -extern void func_801377B4(s32 a0, s32 a1, s32 a2); - -s32 aF80137614(s32 a0, s32 a1, s32 a2) __asm__("func_80137614"); - -DEFINE_func_80137614() /* dedup: shared engine-core @0x80137614 (src/shared) */ - - -DEFINE_func_8013767C() /* dedup: shared engine-core @0x8013767C (src/shared) */ - -DEFINE_func_801376C8() /* dedup: shared engine-core @0x801376C8 (src/shared) */ - - -/* @class: plumbing (globals-around-two-calls) - * @stuck: none — MATCH (51 ins). - * - * RECONCILE (§37/§124 ASM-LABEL ALIAS) — no TU / header edit required. - * Gate error: ov_SC01_077_jr_80135D20.c:1415: conflicting types for `func_801376E8' - * || previous declaration at :1368 - * :1368 is DEFINE_func_801376C8(), the shared engine-core macro that carries - * `extern void func_801376E8(int a0, int a1);` — a VOID return. The target's last - * pre-epilogue instruction is `addu $v0, $s1, $zero`, i.e. it RETURNS &D_801269F0, - * so the definition MUST be non-void; a `void` definition makes gcc-2.7.2 merely warn - * and DROP the returned value, killing that instruction (LENGTH-DRIFT/-1, 50 ins). - * The conflict is on func_801376E8 ITSELF and is a pure RETURN-type disagreement - * (params already agree: int,int), so the §37/§124 alias applies verbatim: - * define under the C name aF801376E8 with __asm__("func_801376E8") so the C-level - * declaration never collides, while the emitted symbol is still func_801376E8. - * Codegen is untouched — an asm label renames the symbol, nothing else. - * (The earlier draft's `//@EDIT` widening of the shared extern to `void *` is a - * T2 fleet-shared edit; the alias is T0 draft-only. Cookbook §124: fix the reader, - * not the source.) - * - * Byte levers (unchanged from the passing draft): - * - `obj` local holding (s32)&D_801269F0: the address is CSEd ONCE into $s1 and reused - * for both jal args and the return (same idiom as the neighbouring func_80137B80). - * - D_80126A24 is s16 (`lh`) but D_80126A26 is u16 (`lhu`) with an explicit (s16) cast - * at the use site: gcc combines the cast's `sll 16; sra 16` with the `>>1` into - * `sll 16; sra 17`, which is exactly what the target emits. A plain s16 D_80126A26 - * would give `lh; sra 1` instead. - * - D_80126A14 as u16[2] (`lhu` loads, `%lo(D_80126A14 + 0x2)` for element 1). - */ - - -extern void func_801377B4(s32 a0, s32 a1, s32 a2); -extern void func_80139BE0(s32 a0); - -void *aF801376E8(int a0, int a1) __asm__("func_801376E8"); - -DEFINE_func_801376E8() /* dedup: shared engine-core @0x801376E8 (src/shared) */ - - -DEFINE_func_801377B4() /* dedup: shared engine-core @0x801377B4 (src/shared) */ - -DEFINE_func_80137840() /* dedup: shared engine-core @0x80137840 (src/shared) */ - - -extern void func_80016714(void *a0, s32 a1); -extern void func_8013A860(void); - -void func_801378F0(void) { - - extern u8 D_80127520[]; - extern u8 aD801269F0[] __asm__("D_801269F0"); /* §37 alias: TU canon is `extern int D_801269F0` */ - extern u8 D_80126A28[]; - extern u8 D_8018BB20[]; - s32 i; - s32 si; - s32 di; - u8 *p; - - func_80016714(D_80127520, 0xBFC); - i = 0; - si = 0; - p = aD801269F0; - di = 0; - do { - func_80016714(p, 0x4C); - *(u16 *)&D_80126A28[di] = *(u16 *)&D_8018BB20[si]; - *(u16 *)&D_80126A28[di + 2] = *(u16 *)&D_8018BB20[si + 2]; - *(u16 *)&D_80126A28[di + 4] = *(u16 *)&D_8018BB20[si + 4]; - *(u16 *)&D_80126A28[di + 6] = *(u16 *)&D_8018BB20[si + 6]; - p += 0x4C; - i += 1; - si += 8; - di += 0x4C; - } while (i < 3); - func_8013A860(); -} - - -DEFINE_func_801379D8() /* dedup: shared engine-core @0x801379D8 (src/shared) */ - -DEFINE_func_801379EC() /* dedup: shared engine-core @0x801379EC (src/shared) */ - - -// @class: regalloc-order (walker-family, §52/§52a) — PIN-FREE -// Role-swap ($s0<->$s2 between loop1 and loops2/3) is driven by DENSITY (K2), not pins: -// - loop1 pointer has an extra ref (p != D_80127524 compare) -> wins $s0; index -> $s2 -// - loop2/3 index has >= pointer refs -> wins $s0; pointer -> $s2 -// Separate per-loop pointer/index vars => separate pseudos => can take different regs. - - -DEFINE_func_801379FC() /* dedup: shared engine-core @0x801379FC (src/shared) */ - - - -// @class: remat -// @stuck: target CSEs &D_801269F0 once for load+call arg; force via local pointer -extern s32 D_80127548[]; -extern int D_8018BB6C; -extern int D_801269F0; -extern void func_80138BE0(int p); - -void func_80137B80(void) { - int *p = &D_801269F0; - (*(int *)&D_80127548) = 0x24; - if (*p != 0) { - ((void (*)(int *))func_80138BE0)(p); - } - D_8018BB6C += 1; -} - - -DEFINE_func_80137BD8() /* dedup: shared engine-core @0x80137BD8 (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Three globals stored/loaded around 3 calls; &D_801269F0 held in $s1, arg1 in $s0 across calls; return reloads global D_800A5E60. - -extern unsigned char D_80126A0E; -extern short D_80126A0A; -extern s16 D_801269F4; -extern int D_800A5E60; -extern int D_8018BB6C; -extern int D_801269F0; - -extern void func_801392FC(); -extern void func_80137DD4(s32 a0, u8 *a1, u8 *a2); -extern void func_80139680(s32 a0, u8 *a1); - -int func_80137D08(int arg0, int arg1, short arg2) -{ - unsigned char buf[3]; - - D_800A5E60 = arg0; - D_80126A0A = arg2; - ((void (*)(void *, int, int))func_801392FC)(&D_801269F0, D_80126A0E, arg1); - if ((*(short *)&D_801269F4) == 7) { - buf[0] = 0x39; - buf[1] = 0xFF; - buf[2] = 0x71; - ((void (*)(void *, void *, int))func_80137DD4)(&D_801269F0, buf, arg1); - } else if ((*(short *)&D_801269F4) == 3) { - if (D_8018BB6C & 4) { - ((void (*)(void *, int))func_80139680)(&D_801269F0, arg1); - } - } - return D_800A5E60; -} - - -DEFINE_func_80137DD4() /* dedup: shared engine-core @0x80137DD4 (src/shared) */ - -DEFINE_func_80137FD8() /* dedup: shared engine-core @0x80137FD8 (src/shared) */ - - diff --git a/src/ov_SC03_015/ov_SC03_015_jr_801380E0.c b/src/ov_SC03_015/ov_SC03_015_jr_801380E0.c deleted file mode 100644 index d720d746d..000000000 --- a/src/ov_SC03_015/ov_SC03_015_jr_801380E0.c +++ /dev/null @@ -1,409 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ - /* 8-byte element, cmd @ +4 */ - /* list ptr @ +0x90 */ - /* size 8, alignment 1 -> unaligned copy */ -DEFINE_func_801380E0() /* dedup: shared engine-core @0x801380E0 (src/shared) */ - - -DEFINE_func_801387B8() /* dedup: shared engine-core @0x801387B8 (src/shared) */ - -DEFINE_func_80138948() /* dedup: shared engine-core @0x80138948 (src/shared) */ - -DEFINE_func_8013895C() /* dedup: shared engine-core @0x8013895C (src/shared) */ - -DEFINE_func_80138AB4() /* dedup: shared engine-core @0x80138AB4 (src/shared) */ - -DEFINE_func_80138B88() /* dedup: shared engine-core @0x80138B88 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (match_one: MATCH 20 ins) - -extern void (*D_8018BB70[])(void); - -void func_80138BE0(int p) -{ - if (*(unsigned short *)(p + 0xe) != 0) { - *(unsigned short *)(p + 0xe) -= 1; - } - D_8018BB70[*(short *)(p + 4)](); -} - - -void func_80138C30(void *a0) { - if (*(s16 *)((s32)a0 + 4) == 4) { - *(s16 *)((s32)a0 + 4) = 2; - } else { - *(u32 *)((s32)a0 + 8) |= 0x800; - } -} - - -extern s32 func_80139BE0(s32); - -s32 func_80138C60(s32 arg0) -{ - extern Q_80138C60 D_8018BB3C[]; - u16 t; - u8 b; - s32 f; - s32 idx; - - if (*(s32 *)(arg0 + 8) & 0x2000) { - return 1; - } - - t = *(u8 *)(arg0 + 0x22) & 7; - *(s16 *)(arg0 + 0x18) = t; - if (t < 2) { - *(u8 *)(arg0 + 0x20) = 0; - } - - f = *(s32 *)(arg0 + 8); - if (f & 0x40) { - *(u8 *)(arg0 + 0x22) = (*(u8 *)(arg0 + 0x22) & 0x67) | (f & ~0x67); - } - - b = *(u8 *)(arg0 + 0x22); - if (b & 0x80) { - idx = (b & 0x18) >> 3; - } else { - idx = (b & 0x78) >> 3; - if (b & 0x60) { - *(s16 *)(arg0 + 0x1C) = 0; - } - } - - *(Q_80138C60 *)(arg0 + 0x24) = D_8018BB3C[idx]; - - func_80139BE0(arg0); - func_80139C7C((u8 *)arg0); - return func_8013A8FC(arg0); -} - - -DEFINE_func_80138D58() /* dedup: shared engine-core @0x80138D58 (src/shared) */ - -DEFINE_func_80138DB8() /* dedup: shared engine-core @0x80138DB8 (src/shared) */ - - -DEFINE_func_80138DE0() /* dedup: shared engine-core @0x80138DE0 (src/shared) */ - - -DEFINE_func_80138ED0() /* dedup: shared engine-core @0x80138ED0 (src/shared) */ - -DEFINE_func_8013914C() /* dedup: shared engine-core @0x8013914C (src/shared) */ - -DEFINE_func_801391F0() /* dedup: shared engine-core @0x801391F0 (src/shared) */ - -DEFINE_func_80139220() /* dedup: shared engine-core @0x80139220 (src/shared) */ - -DEFINE_func_801392C8() /* dedup: shared engine-core @0x801392C8 (src/shared) */ - -DEFINE_func_801392FC() /* dedup: shared engine-core @0x801392FC (src/shared) */ - -DEFINE_func_801395D4() /* dedup: shared engine-core @0x801395D4 (src/shared) */ - -DEFINE_func_80139634() /* dedup: shared engine-core @0x80139634 (src/shared) */ - -DEFINE_func_80139680() /* dedup: shared engine-core @0x80139680 (src/shared) */ - -DEFINE_func_80139788() /* dedup: shared engine-core @0x80139788 (src/shared) */ - - -DEFINE_func_801397B0() /* dedup: shared engine-core @0x801397B0 (src/shared) */ - - -DEFINE_func_80139914() /* dedup: shared engine-core @0x80139914 (src/shared) */ - -DEFINE_func_80139954() /* dedup: shared engine-core @0x80139954 (src/shared) */ - -DEFINE_func_801399A8() /* dedup: shared engine-core @0x801399A8 (src/shared) */ - -DEFINE_func_801399F0() /* dedup: shared engine-core @0x801399F0 (src/shared) */ - -DEFINE_func_80139A34() /* dedup: shared engine-core @0x80139A34 (src/shared) */ - -DEFINE_func_80139A44() /* dedup: shared engine-core @0x80139A44 (src/shared) */ - -DEFINE_func_80139A68() /* dedup: shared engine-core @0x80139A68 (src/shared) */ - -DEFINE_func_80139A8C() /* dedup: shared engine-core @0x80139A8C (src/shared) */ - -DEFINE_func_80139B18() /* dedup: shared engine-core @0x80139B18 (src/shared) */ - - -/* func_80139BE0 — ov_SC01_077 / ov_SC01_077_jr_801380E0, 39 ins, MATCH. - * - * REDRAFT of the decayed backlog draft: the stored draft was -1 instruction - * (LENGTH-DRIFT) because the target keeps a QI->SI zero-extend of the masked - * byte (`andi $a1,$v0,0xFF` after `andi $v0,$v0,0x60`) that gcc-2.7.2 folds - * away: combine proves nonzero_bits(x & 0x60) <= 0xff and simplifies the - * extend to nothing. No pure-C spelling survives that fold when the def and - * the extend sit in the SAME basic block (verified: u8 local, (u8) cast at - * the use, `& 0xff` at the use, u8-via-int, u16 hold, hard-register pins) — - * a cross-BB def keeps it but lands the andi in the wrong block. - * The opacity idiom (already used in src/ov_SC03_099) makes the value's range - * unprovable in place, so the extend survives at its original position. - * cookbook §1/I2 ("masked andi survives only if the value's range is - * unprovable"), §17 (pins/barriers). - */ - -s32 func_80139BE0(int param_1) -{ - - extern unsigned char D_8018BB38[]; - int v; - - if ((*(unsigned int *)(param_1 + 8) & 0x2000) == 0) { - int t = *(unsigned char *)(param_1 + 0x22) & 0x60; - int h = *(unsigned short *)(param_1 + 0x18); - unsigned int idx; - - __asm__("" : "=r"(t) : "0"(t)); - idx = (unsigned char)t; - if (h < 7) { - if (h >= 2) { - v = D_8018BB38[idx >> 5]; - } else { - v = D_8018BB38[0]; - } - } else { - v = D_8018BB38[0]; - } - *(short *)(param_1 + 0x2e) = 3; - *(short *)(param_1 + 0x2c) = v; - } - *(short *)(param_1 + 0x34) = *(short *)(param_1 + 0x2c) * 6; - { - int x = *(short *)(param_1 + 0x2e); - *(short *)(param_1 + 0x36) = x * 12 + (x - 1) * 2; - } -} - - -DEFINE_func_80139C7C() /* dedup: shared engine-core @0x80139C7C (src/shared) */ - -DEFINE_func_80139D04() /* dedup: shared engine-core @0x80139D04 (src/shared) */ - -DEFINE_func_80139DC8() /* dedup: shared engine-core @0x80139DC8 (src/shared) */ - -DEFINE_func_80139DEC() /* dedup: shared engine-core @0x80139DEC (src/shared) */ - -DEFINE_func_80139DF4() /* dedup: shared engine-core @0x80139DF4 (src/shared) */ - -DEFINE_func_80139E84() /* dedup: shared engine-core @0x80139E84 (src/shared) */ - -DEFINE_func_80139F0C() /* dedup: shared engine-core @0x80139F0C (src/shared) */ - -DEFINE_func_80139FBC() /* dedup: shared engine-core @0x80139FBC (src/shared) */ - -DEFINE_func_80139FE8() /* dedup: shared engine-core @0x80139FE8 (src/shared) */ - -DEFINE_func_8013A0A4() /* dedup: shared engine-core @0x8013A0A4 (src/shared) */ - -DEFINE_func_8013A164() /* dedup: shared engine-core @0x8013A164 (src/shared) */ - -DEFINE_func_8013A1E8() /* dedup: shared engine-core @0x8013A1E8 (src/shared) */ - -DEFINE_func_8013A250() /* dedup: shared engine-core @0x8013A250 (src/shared) */ - -DEFINE_func_8013A2BC() /* dedup: shared engine-core @0x8013A2BC (src/shared) */ - -DEFINE_func_8013A378() /* dedup: shared engine-core @0x8013A378 (src/shared) */ - -DEFINE_func_8013A380() /* dedup: shared engine-core @0x8013A380 (src/shared) */ - -DEFINE_func_8013A448() /* dedup: shared engine-core @0x8013A448 (src/shared) */ - -DEFINE_func_8013A4C4() /* dedup: shared engine-core @0x8013A4C4 (src/shared) */ - -DEFINE_func_8013A530() /* dedup: shared engine-core @0x8013A530 (src/shared) */ - -DEFINE_func_8013A860() /* dedup: shared engine-core @0x8013A860 (src/shared) */ - -DEFINE_func_8013A8B0() /* dedup: shared engine-core @0x8013A8B0 (src/shared) */ - -DEFINE_func_8013A8BC() /* dedup: shared engine-core @0x8013A8BC (src/shared) */ - -DEFINE_func_8013A8FC() /* dedup: shared engine-core @0x8013A8FC (src/shared) */ - -DEFINE_func_8013A9B4() /* dedup: shared engine-core @0x8013A9B4 (src/shared) */ - -DEFINE_func_8013A9F8() /* dedup: shared engine-core @0x8013A9F8 (src/shared) */ - -DEFINE_func_8013AA24() /* dedup: shared engine-core @0x8013AA24 (src/shared) */ - -DEFINE_func_8013AB54() /* dedup: shared engine-core @0x8013AB54 (src/shared) */ - -// @class: schedule -// @stuck: none — MATCH (122 ins). GTE lerp+mvmva loop. Two levers: (1) flat `extern s16` -// source arrays indexed [2*i]/[2*i+1] force 4 separate walking IVs (t2/t3/t4/t5) instead of -// one shared offset-IV + symbol(reg) addressing; (2) INVERTED-arm if/else -// `if (flag<0) out3=-tbl; else out3=tbl;` gives the target's bgez polarity + reload-per-arm -// sign-flip block (a plain ?: hoists the common lbu; the inverted if/else does not, and gcc -// still merges the sb). out2[i]=out2[0] tail-copy of the align-2 Pair_8013AD38 emits lwl/lwr/swl/swr. -#include "common.h" - - -extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */ -extern u8 D_8018BC3C[]; /* sign table, alt (when a1 < 0xC00) */ - -#define gte_ldv0(r0) __asm__ __volatile__( \ - "lwc2 $0, 0(%0)\n" \ - "lwc2 $1, 4(%0)\n" \ - : : "r"(r0) : "memory") - -#define gte_mvmva0() __asm__ __volatile__( \ - "nop\n" \ - "nop\n" \ - "mvmva 1, 0, 0, 0, 0\n" \ - : : : "memory") - -#define gte_stlvnl(r0) __asm__ __volatile__( \ - "swc2 $25, 0(%0)\n" \ - "swc2 $26, 4(%0)\n" \ - "swc2 $27, 8(%0)\n" \ - : : "r"(r0) : "memory") - -void func_8013AD38(void *flag, s32 a1, void *out2, void *out3) -{ - extern s16 D_800D466C[]; - extern u8 D_8018BC78[]; - - u8 *tbl; - s16 vec[4]; - s32 res[3]; - s32 i; - - tbl = D_8018BC78; - if (((s16)a1) < 0xC00) { - tbl = D_8018BC3C; - } - - for (i = 0; i < 30; i++) { - vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12); - vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12); - gte_ldv0(vec); - gte_mvmva0(); - gte_stlvnl(res); - ((Pair_8013AD38 *)out2)[i].x = res[0]; - ((Pair_8013AD38 *)out2)[i].y = res[1]; - if (((s16 *)flag)[0] < 0) ((s8 *)out3)[2 * i] = -tbl[2 * i]; else ((s8 *)out3)[2 * i] = tbl[2 * i]; - if (((s16 *)flag)[1] < 0) ((s8 *)out3)[2 * i + 1] = -tbl[2 * i + 1]; else ((s8 *)out3)[2 * i + 1] = tbl[2 * i + 1]; - } - ((Pair_8013AD38 *)out2)[i] = ((Pair_8013AD38 *)out2)[0]; - if (((s16 *)flag)[0] < 0) ((s8 *)out3)[2 * i] = -tbl[0]; else ((s8 *)out3)[2 * i] = tbl[0]; - if (((s16 *)flag)[1] < 0) ((s8 *)out3)[2 * i + 1] = -tbl[1]; else ((s8 *)out3)[2 * i + 1] = tbl[1]; -} - - - -DEFINE_func_8013AF20() /* dedup: shared engine-core @0x8013AF20 (src/shared) */ - -DEFINE_func_8013B204() /* dedup: shared engine-core @0x8013B204 (src/shared) */ - - - -extern void *func_80010A08(s32); -extern s16 D_8018BCB4, D_8018BCB6, D_8018BCB8, D_8018BCBA, D_8018BCBC, D_8018BCBE; -extern u16 D_800D45F6; - -void func_8013B274(s32 a0, s32 a1, void *a2) -{ - u8 *p; - s32 L[10]; - s16 sa; - s32 quot; - s16 ang; - - p = (u8 *)func_80010A08(0x28); - p[3] = 9; - p[7] = 0x2C; - p[4] = 0x80; - p[5] = 0x80; - p[6] = 0x80; - *(s16 *)(p + 0x16) = 0x37; - *(s16 *)(p + 0xE) = 0x6FD6; - p[0xC] = 0xE0; - p[0xD] = 0; - p[0x14] = 0xEF; - p[0x15] = 0; - p[0x1C] = 0xE0; - p[0x1D] = 0xF; - p[0x24] = 0xEF; - p[0x25] = 0xF; - - sa = (s16)a1; - if (sa == 0) { - *(s16 *)L = 0; - } else { - quot = ((s32)sa << 12) / ((s16*)a2)[0]; - ang = (s16)quot; - if (!(D_8018BCB6 < ang)) goto outer_else; - if (!(ang < D_8018BCBC)) goto inner_else; - if (ang < D_8018BCB8) { *(s16 *)L = D_8018BCB8; goto done; } - if (D_8018BCBA < ang) { *(s16 *)L = D_8018BCBA; goto done; } - *(s16 *)L = quot; - goto done; - outer_else: - if (ang < D_8018BCB4) { *(s16 *)L = D_8018BCB4; goto done; } - *(s16 *)L = quot; - goto done; - inner_else: - if (D_8018BCBE < ang) { *(s16 *)L = D_8018BCBE; goto done; } - *(s16 *)L = quot; - done: ; - } - *(s16 *)((u8 *)L + 2) = D_800D45F6; - - __asm__ __volatile__( - "lwc2 $0, 0(%0)\n" - "lwc2 $1, 4(%0)\n" - "nop\n" "nop\n" - "mvmva 1, 0, 0, 0, 0\n" - : : "r"(L) : "memory"); - __asm__ __volatile__( - "swc2 $25, 0(%0)\n" - "swc2 $26, 4(%0)\n" - "swc2 $27, 8(%0)\n" - : : "r"((u8 *)L + 8) : "memory"); - - if (((s16*)a2)[1] > 0) - *(s32 *)((u8 *)L + 0xC) -= 1; - else - *(s32 *)((u8 *)L + 0xC) += 2; - - *(s16 *)L = 9; - *(s16 *)((u8 *)L + 2) = 9; - __asm__ __volatile__( - "lwc2 $0, 0(%0)\n" - "lwc2 $1, 4(%0)\n" - "nop\n" "nop\n" - "mvmva 1, 0, 0, 3, 0\n" - : : "r"(L) : "memory"); - __asm__ __volatile__( - "swc2 $25, 0(%0)\n" - "swc2 $26, 4(%0)\n" - "swc2 $27, 8(%0)\n" - : : "r"((u8 *)L + 0x18) : "memory"); - - *(s16 *)(p + 8) = *(volatile s32 *)((u8 *)L + 8); - *(s16 *)(p + 0xA) = *(volatile s32 *)((u8 *)L + 0xC); - *(s16 *)(p + 0x10) = *(volatile s32 *)((u8 *)L + 8) + *(volatile s32 *)((u8 *)L + 0x18); - *(s16 *)(p + 0x12) = *(volatile s32 *)((u8 *)L + 0xC); - *(s16 *)(p + 0x18) = *(volatile s32 *)((u8 *)L + 8); - *(s16 *)(p + 0x1A) = *(volatile s32 *)((u8 *)L + 0xC) + *(volatile s32 *)((u8 *)L + 0x1C); - *(s16 *)(p + 0x20) = *(volatile s32 *)((u8 *)L + 8) + *(volatile s32 *)((u8 *)L + 0x18); - *(s16 *)(p + 0x22) = *(volatile s32 *)((u8 *)L + 0xC) + *(volatile s32 *)((u8 *)L + 0x1C); - - ((P_TAG *)p)->addr = ((P_TAG *)a0)->addr; - ((P_TAG *)a0)->addr = (u32)p; -} diff --git a/src/ov_SC03_015/ov_SC03_015_jr_8013C98C.c b/src/ov_SC03_015/ov_SC03_015_jr_8013C98C.c deleted file mode 100644 index 2593063e1..000000000 --- a/src/ov_SC03_015/ov_SC03_015_jr_8013C98C.c +++ /dev/null @@ -1,752 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -DEFINE_func_8013C98C() /* dedup: shared engine-core @0x8013C98C (src/shared) */ - - -extern M2C_UNK D_80062BC0; -extern s32 D_801E95E8; -extern s8 D_801E95EC; -extern s8 D_801E95ED; - -void func_8013C9C4(void * arg0) -{ - D_801E95E8 = arg0; - D_801E95EC = 0; - D_801E95ED = 0; - if (func_80019198() == 0) { - func_80019064(&D_80062BC0); - } -} - - - - -extern s32 D_801E95E8; -extern s8 D_801E95EC; -extern s8 D_801E95ED; -extern s32 D_801269C8; -extern s32 D_801269D4; -void func_8013CA14(void) -{ - int *base = &D_801E95E8; - signed char *p; - unsigned char c; - int t; - if ((*base) != 0) - { - c = D_801E95ED; - if (c == 0) - { - p = (signed char *) ((((unsigned int) ((unsigned char) D_801E95EC)) * 2) + D_801E95E8); - t = (int) (*p); - D_801269D4 = t; - D_801269C8 = t; - D_801E95ED = (unsigned char) p[1]; - D_801E95EC = D_801E95EC + 1; - if (D_801E95ED == 0) - { - D_801269D4 = 0; - D_801269C8 = 0; - D_801E95EC = 0; - *base = 0; - } - } - else - { - D_801E95ED = c - 1; - } - } - return; -} - - - -DEFINE_func_8013CABC() /* dedup: shared engine-core @0x8013CABC (src/shared) */ - - - -DEFINE_func_8013CAE8() /* dedup: shared engine-core @0x8013CAE8 (src/shared) */ - - - -DEFINE_func_8013CB20() /* dedup: shared engine-core @0x8013CB20 (src/shared) */ - - - -DEFINE_func_8013CB5C() /* dedup: shared engine-core @0x8013CB5C (src/shared) */ - - - - -DEFINE_func_8013CB84() /* dedup: shared engine-core @0x8013CB84 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (63 ins) -// -// Sets up 3 consecutive 16-byte records (at D_800A5E88[0..2]: {s32 a,b,c; u8 d,e,f,g}) -// and registers each via func_80028620(i, &rec[i]). -// -// Keys to the byte match: -// (1) The base pointer is anchored at D_800A5E94 (= &rec0.d, i.e. rec0+0xC) and materialized -// via a NON-volatile inline-asm `la` so gcc treats it as OPAQUE (not a const symbol). -// Opacity is what makes the base-relative stores FOLD into `off($s0)` instead of -// const-folding to a direct `lui $at; sw %lo(sym)`. A `__asm__ __volatile__` re-tie -// barrier (cookbook §21) also launders base, but the barrier pins the schedule and -// pushes the first call's `a0=0` down; the non-volatile `la` avoids the barrier so the -// scheduler still hoists `addu $a0,$zero,$zero` to the top (matches target idx1). -// (2) rec0's inner fields (E8C/E90 ints, E95/E96 bytes) are written as DIRECT globals, not -// base-relative — in the entry block gcc emits them as `lui $at; sw/sb %lo(sym)`. Only -// the address-taken E88 (= call arg base-0xC) and the offset-0 E94 fold via $s0. rec1/rec2 -// fold entirely (base opaque, all offsets small). -// (3) The three source bytes per record are loaded into temps t0/t1/t2 BEFORE the stores so -// gcc keeps them live in three registers ($v1/$a2/$a3) as a group (not one-at-a-time in $v0). -// (4) Statement order matches the target scheduler: rec1 stores b(=7) before the loads; -// rec2 stores b(=-0x12) AFTER the loads (the differing constants drive the scheduler). -#include "common.h" - - -void func_8013CF68() -{ - extern void func_80028620(); - extern u8 D_800A5E94[]; - extern s32 D_800A5E8C; - extern s32 D_800A5E90; - extern u8 D_800A5E95; - extern u8 D_800A5E96; - extern u8 D_801EAEE8; - extern u8 D_801EAEE9; - extern u8 D_801EAEEA; - extern u8 D_801EAEEB; - extern u8 D_801EAEEC; - extern u8 D_801EAEED; - extern u8 D_801EAEEE; - extern u8 D_801EAEEF; - extern u8 D_801EAEF0; - - u8 t0, t1, t2; - u8 *base; - __asm__("la %0, D_800A5E94" : "=r"(base)); - - *(s32 *)(base - 0xC) = 0; - t0 = D_801EAEE8; t1 = D_801EAEE9; t2 = D_801EAEEA; - D_800A5E8C = 0x1E; - D_800A5E90 = 0; - base[0] = t0; D_800A5E95 = t1; D_800A5E96 = t2; - func_80028620(0, base - 0xC); - - *(s32 *)(base + 4) = 0; *(s32 *)(base + 8) = 7; - t0 = D_801EAEEB; t1 = D_801EAEEC; t2 = D_801EAEED; - *(s32 *)(base + 0xC) = 0x14; - base[0x10] = t0; base[0x11] = t1; base[0x12] = t2; - func_80028620(1, base + 4); - - *(s32 *)(base + 0x14) = 0; - t0 = D_801EAEEE; t1 = D_801EAEEF; t2 = D_801EAEF0; - *(s32 *)(base + 0x18) = -0x12; - *(s32 *)(base + 0x1C) = 0; - base[0x20] = t0; base[0x21] = t1; base[0x22] = t2; - func_80028620(2, base + 0x14); -} - - - - -// @class: schedule -// @stuck: testing if/else-if with ==2 placed as the else (tail) block - -extern s32 D_801E9618; -extern s32 D_801E9600; -extern s32 D_801E961C; -extern s32 D_801E960C; -extern void func_8013D9B0(); - -void func_8013D064(void) -{ - if (D_801E9618 != 0) { - if (D_801E9618 != 2) { - if (((D_801E9618 < 3) && (D_801E9618 == 1)) && - (D_801E961C = D_801E961C + 1, 0x23a < D_801E961C)) { - D_801E9600 = D_801E9618; - D_801E9618 = 2; - } - } else { - D_801E9600 = D_801E9600 + -1; - if (D_801E9600 == 0) { - D_801E9600 = D_801E9618; - ((void (*)(s32))func_8013D9B0)(2); - if (D_801E960C == 0) { - D_801E9618 = D_801E9618 + 1; - } - } - } - } - return; -} - - - - -DEFINE_func_8013D13C() /* dedup: shared engine-core @0x8013D13C (src/shared) */ - - - -DEFINE_func_8013D164() /* dedup: shared engine-core @0x8013D164 (src/shared) */ - - - -DEFINE_func_8013D178() /* dedup: shared engine-core @0x8013D178 (src/shared) */ - - - -// @class: other -// @stuck: none — MATCH (three step-toward-target byte clamps + word store) - -extern u8 D_801EAFCA; -extern u8 D_801EB03E; -extern u8 D_801EAEF2; -extern u8 D_801EAFAC; -extern u8 D_801EAED0; -extern u8 D_801EAEF1; -extern s32 D_801EAFB0; - -void func_8013D330(void) { - if ((D_801EAFCA & 0xff) != D_801EB03E) { - D_801EAFCA = ((D_801EAFCA & 0xff) < D_801EB03E) ? (D_801EAFCA + 1) : (D_801EAFCA - 1); - } - if ((D_801EAEF2 & 0xff) != D_801EAFAC) { - D_801EAEF2 = ((D_801EAEF2 & 0xff) < D_801EAFAC) ? (D_801EAEF2 + 1) : (D_801EAEF2 - 1); - } - if ((D_801EAED0 & 0xff) != D_801EAEF1) { - D_801EAED0 = ((D_801EAED0 & 0xff) < D_801EAEF1) ? (D_801EAED0 + 1) : (D_801EAED0 - 1); - } - D_801EAFB0 = 1; -} - - - - -// @class: regalloc-order -// @stuck: none — MATCH (match_one 90/90); base &D_80078E78 cached in a pointer local so gcc pins it into callee-saved $s1 and hoists the addr to the prologue (live across all 4 calls); direct array access D_80078E78[0x37] instead folds %lo per use (no $s1, frame 0x18 not 0x20) - -DEFINE_func_8013D3D4() /* dedup: shared engine-core @0x8013D3D4 (src/shared) */ - - - - /* 9-byte, align-1 -> unaligned block copy */ - - -DEFINE_func_8013D53C() /* dedup: shared engine-core @0x8013D53C (src/shared) */ - - - - - - - - -extern void func_800599B8(u16*); - -void func_8013D8FC(void) -{ - - extern s16 *D_801E95FC; - register s16 *psVar3 __asm__("$17"); - register s16 *psVar2 __asm__("$16"); - register s32 c9 __asm__("$19"); - register s32 cff __asm__("$18"); - u16 sVar1; - s16 buf[4]; - - psVar3 = D_801E95FC; - if (psVar3 != (s16 *)0x0 && (sVar1 = (u16)*psVar3, sVar1 != 0xff)) { - c9 = 9; - cff = 0xff; - psVar2 = psVar3 + 5; - do { - if (sVar1 == c9) { - s32 arg2 = *(s32 *)(psVar2 + 1) + psVar2[-1] * 2; - buf[0] = psVar2[-3]; - buf[1] = psVar2[-2]; - buf[2] = psVar2[-1]; - buf[3] = *psVar2; - ((void (*)(s32, s32))func_800599B8)((s32)buf, arg2); - } - psVar3 = psVar3 + 8; - sVar1 = (u16)*psVar3; - psVar2 = psVar2 + 8; - } while (sVar1 != cff); - } -} - - -extern void *D_801E95F4; -extern s32 D_801E960C; -extern void func_800599B8(u16*); -#define gte_ldIR0z() __asm__ __volatile__("mtc2 $0, $8") -#define gte_ldrgb(p) __asm__ __volatile__("lwc2 $6, 0(%0)" :: "r"(p) : "memory") -#define gte_ldIRGB(p) __asm__ __volatile__("lwc2 $28, 0(%0)" :: "r"(p) : "memory") -#define gte_dpcl() __asm__ __volatile__("nop\n\tnop\n\tdpcl") -#define gte_stORGB(p) __asm__ __volatile__("swc2 $29, 0(%0)" :: "r"(p) : "memory") - -void func_8013D9B0(int param_1) -{ - - extern s16 *D_801E95FC; - extern s32 D_801E9614; - u8 buf[0x20]; - register s32 uVar13 __asm__("$16"); - register u16 *psVar14 __asm__("$17"); - register u16 *psVar15 __asm__("$18"); - register s32 uVar16 __asm__("$19"); - register void *r0 __asm__("$20"); - register u16 *puVar10 __asm__("$11"); - register u16 *puVar9 __asm__("$10"); - register s32 iVar11 __asm__("$13"); - register s32 iVar12 __asm__("$14"); - u16 sVar4; - register u32 uVar5 __asm__("$3"); - register u32 uVar7 __asm__("$6"); - register u32 uVar1 __asm__("$7"); - register u32 uVar6 __asm__("$4"); - register u32 uVar8 __asm__("$8"); - register u32 uVar3 __asm__("$9"); - - psVar15 = (*(u16 * *)&D_801E95FC); - if (psVar15 != 0) { - sVar4 = *psVar15; - *(u32 *)(buf + 8) = (*(u32 * *)&D_801E95F4)[param_1]; - D_801E9614 = -1; - uVar16 = 0; - if (sVar4 != 0xff) { - r0 = buf + 8; - psVar14 = psVar15 + 6; - do { - iVar11 = 0; - if (sVar4 == 9) { - *(s16 *)(buf + 0) = psVar14[-4]; - __asm__ __volatile__("" ::: "memory"); - *(s16 *)(buf + 2) = psVar14[-3]; - __asm__ __volatile__("" ::: "memory"); - *(s16 *)(buf + 4) = psVar14[-2]; - __asm__ __volatile__("" ::: "memory"); - *(s16 *)(buf + 6) = psVar14[-1]; - __asm__ __volatile__("" ::: "memory"); - { - register s32 mw __asm__("$3") = (s32)((s16 *)psVar14)[-2]; - register s32 mh __asm__("$2") = (s32)((s16 *)psVar14)[-1]; - iVar12 = mw * mh; - } - uVar13 = 0; - puVar10 = *(u16 **)psVar14; - { - register s32 boff __asm__("$2") = iVar12 * 2; - register u16 *pi __asm__("$5"); - pi = (u16 *)((s32)puVar10 + boff); - __asm__ __volatile__("" : "=r"(pi) : "0"(pi)); - puVar9 = pi; - } - if (0 < iVar12) { - do { - register u32 pix __asm__("$2"); - register u32 out __asm__("$2"); - u32 result; - *(u32 *)(buf + 0xc) = (u32)*puVar10; - pix = (u32)*puVar9; - uVar5 = pix & 0x1f; - uVar7 = pix & 0x3e0; - uVar1 = pix & 0x7c00; - { - void *p1; - register void *pa __asm__("$2"); - register void *pb __asm__("$12"); - __asm__ __volatile__(""); - p1 = buf + 0xc; - __asm__ __volatile__("" : "=r"(p1) : "0"(p1)); - gte_ldIR0z(); - gte_ldrgb(r0); - gte_ldIRGB(p1); - gte_dpcl(); - pa = buf + 0x10; - __asm__ __volatile__("" : "=r"(pa) : "0"(pa)); - pb = pa; - gte_stORGB(pb); - } - out = *(u32 *)(buf + 0x10); - uVar6 = out & 0x1f; - uVar8 = out & 0x3e0; - uVar3 = out & 0x7c00; - if (uVar5 != uVar6) { - register s32 c __asm__("$2"); - uVar13 = 1; - if ((s32)uVar5 < (s32)uVar6) uVar5 = uVar5 + 1; - c = (s32)uVar6 < (s32)uVar5; - if (c) uVar5 = uVar5 - 1; - } - if (uVar7 != uVar8) { - register s32 c __asm__("$2"); - uVar13 = 1; - if ((s32)uVar7 < (s32)uVar8) uVar7 = uVar7 + 0x20; - c = (s32)uVar8 < (s32)uVar7; - if (c) uVar7 = uVar7 - 0x20; - } - if (uVar1 != uVar3) { - register s32 c __asm__("$2"); - uVar13 = 1; - if ((s32)uVar1 < (s32)uVar3) uVar1 = uVar1 + 0x400; - c = (s32)uVar3 < (s32)uVar1; - if (c) uVar1 = uVar1 - 0x400; - } - result = uVar5 | uVar7 | uVar1 | (*(u32 *)(buf + 0xc) & 0x8000); - if (result == 0 && *(u32 *)(buf + 0xc) != 0) { - result = 0x8000; - } - *puVar9 = (u16)result; - puVar9 = puVar9 + 1; - iVar11 = iVar11 + 1; - puVar10 = puVar10 + 1; - } while (iVar11 < iVar12); - } - if (uVar13 != 0) { - ((void (*)(void *))func_800599B8)(buf); - } - uVar16 = uVar16 | uVar13; - } - psVar15 = psVar15 + 8; - sVar4 = *psVar15; - psVar14 = psVar14 + 8; - } while (sVar4 != 0xff); - } - D_801E960C = uVar16; - } - return; -} - - - -// @class: struct -// @stuck: none — MATCH (match_one 97/97). Two levers: (1) offset-first pointer arith -// `(int*)(param_1*12 + (int)D_801E95F8)` makes the addu `offset+base` (dest=v0) so x/y/z -// load into a0/a1/a2 and each global loads LATE into v1 (base-first gave addu dest=v1 → -// global hoisted into a0, shifting x/y/z to a1/a2/a3). (2) the clamp must be NESTED -// if/else (slti dup'd inside each <,>= branch), NOT a merged `if(diff<5)` after the -// branch — gcc cross-jumps the identical `G=x` and `G=t` store tails into the two shared -// sites; the merged form emits one slti + unconditional store and diverges. - -DEFINE_func_8013DBE4() /* dedup: shared engine-core @0x8013DBE4 (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (187 ins). Levers: struct-assign DRAWENV copy (align via type); pbase local for $s2-relative D_800B9A02; two-biv SPRT loop (q anchored one-above -> gcc re-anchors, no bare-deref); P_TAG_8013DD68 addPrim; single p var coalesces puVar7->puVar15; pins uVar2=$v1,iVar14=$a3,c5=$t3; biv-increment order sets q-init-before-puVar10-init; Buf_8013DD68 0x68 -> frame 0xA0. - - /* 0x5C copy unit, align 4 */ - /* -> frame 0xA0 (gcc adds 0x10 for the struct-copy) */ - - -#define IDVAL (*(u16 *)(pbase + 0xA3D2)) -#define OTE ((P_TAG_8013DD68 *)(D_800BA0E4 + IDVAL * 0x10)) - -void func_8013DD68() { - extern void SetDrawEnv(void *p, void *env); - extern u16 D_800AF7B8; - extern u8 D_800BA0E4[]; - extern u8 D_8018BF10[]; - - u32 *p; - u16 uVar1; - u16 *puVar16; - u16 *q; - u16 *puVar10; - register u16 uVar2 __asm__("$3"); - int uVar5; - register int iVar14 __asm__("$7"); - Buf_8013DD68 buf; - u8 *pbase; - u8 *base; - - pbase = D_800AF630; - puVar16 = (*(u16 * *)&D_801E95FC); - p = (*(u32 * *)&D_800A5E60); - uVar1 = *puVar16; - puVar16 = puVar16 + 1; - base = pbase + (u32)D_800AF7B8 * 0x5C; - buf.env = *(DrawEnv_8013DD68 *)(base + 0x38); - *((u8 *)&buf + 0x18) = 0; - SetDrawEnv(p, &buf); - ((P_TAG_8013DD68 *)p)->addr = OTE->addr; - OTE->addr = (u32)p; - p = p + 0x10; - iVar14 = 0; - if (uVar1 != 0) { - register int c5 __asm__("$11") = 5; - puVar10 = (u16 *)((int)p + 0x18); - q = puVar16 + 8; - do { - *(u8 *)((int)puVar10 + -0x15) = c5; - uVar2 = q[-6]; - *(u8 *)((int)puVar10 + -0xd) = 100; - *(u8 *)((int)puVar10 + -0x10) = (u8)(*(int*)&D_801E962C); - *(u8 *)((int)puVar10 + -0xf) = (u8)(*(int*)&D_801E9630); - uVar5 = (*(int*)&D_801E9634); - *(u32 *)((int)puVar10 + -0x14) = uVar2 & 0x9ff | 0xe1000400; - *(u8 *)((int)puVar10 + -0xe) = (u8)uVar5; - *(u16 *)((int)puVar10 + -0xc) = q[-4]; - iVar14 = iVar14 + 1; - *(u16 *)((int)puVar10 + -0xa) = q[-3]; - *(u8 *)((int)puVar10 + -8) = (u8)*puVar16; - uVar2 = q[-7]; - *(u16 *)((int)puVar10 + -6) = 0x7800; - *(u8 *)((int)puVar10 + -7) = (u8)uVar2; - puVar16 = puVar16 + 8; - *(u16 *)((int)puVar10 + -4) = q[-2]; - *(u16 *)((int)puVar10 + -2) = q[-1]; - ((P_TAG_8013DD68 *)p)->addr = OTE->addr; - puVar10 = puVar10 + 0xc; - OTE->addr = (u32)p; - p = p + 6; - q = q + 8; - } while (iVar14 < (int)(u32)uVar1); - } - SetDrawEnv(p, D_8018BF10); - ((P_TAG_8013DD68 *)p)->addr = OTE->addr; - OTE->addr = (u32)p; - p = p + 0x10; - (*(u32 * *)&D_800A5E60) = p; - return; -} - - - - -DEFINE_func_8013E054() /* dedup: shared engine-core @0x8013E054 (src/shared) */ - - -DEFINE_func_8013E064() /* dedup: shared engine-core @0x8013E064 (src/shared) */ - -DEFINE_func_8013E0FC() /* dedup: shared engine-core @0x8013E0FC (src/shared) */ - -DEFINE_func_8013E194() /* dedup: shared engine-core @0x8013E194 (src/shared) */ - -DEFINE_func_8013E22C() /* dedup: shared engine-core @0x8013E22C (src/shared) */ - -DEFINE_func_8013E298() /* dedup: shared engine-core @0x8013E298 (src/shared) */ - -DEFINE_func_8013E2C4() /* dedup: shared engine-core @0x8013E2C4 (src/shared) */ - -DEFINE_func_8013E370() /* dedup: shared engine-core @0x8013E370 (src/shared) */ - -DEFINE_func_8013E410() /* dedup: shared engine-core @0x8013E410 (src/shared) */ - -DEFINE_func_8013E448() /* dedup: shared engine-core @0x8013E448 (src/shared) */ - -DEFINE_func_8013E4B4() /* dedup: shared engine-core @0x8013E4B4 (src/shared) */ - -DEFINE_func_8013E558() /* dedup: shared engine-core @0x8013E558 (src/shared) */ - -DEFINE_func_8013E588() /* dedup: shared engine-core @0x8013E588 (src/shared) */ - - -extern void func_80029444(void); -extern void func_801754A8(void); -extern s32 func_80014ED4(s32); -extern s32 func_80015018(s32); -extern void func_800190AC(void); -extern void func_80141C04(void); - - -void func_8013E5E8(void) -{ - - extern u16 D_8011511E; - extern u16 D_8011511C; - extern unsigned short D_80115112; - extern u16 D_80115116; - extern void (*D_8018C920[])(void); - register void (*fp)(void) __asm__("$2"); /* pin fn-ptr to $v0 -> store retires early */ - func_80029444(); - func_801754A8(); - D_8011511E = func_80014ED4(0); - D_8011511C = func_80015018(0); - fp = D_8018C920[D_80115112]; - fp(); - func_800190AC(); - func_80141C04(); - D_80115116 += 1; -} - - -DEFINE_func_8013E67C() /* dedup: shared engine-core @0x8013E67C (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (90 ins, relocation-masked) - -DEFINE_func_8013E6AC() /* dedup: shared engine-core @0x8013E6AC (src/shared) */ - - -DEFINE_func_8013E814() /* dedup: shared engine-core @0x8013E814 (src/shared) */ - -// @class: plumbing -// @stuck: none — MATCH (direct u16 global reads fold to lui/lhu; scheduler hoists the D_8011511A read above the prologue, reproduced by -O2) - -void func_8013E83C() { - extern void func_80141C0C(int); - extern unsigned short D_80115118; - extern unsigned short D_80115128; - extern unsigned short D_8011512E; - extern unsigned int D_80115130; - extern unsigned short D_80115158; - extern unsigned short D_8011515A; - extern unsigned short D_8011515C; - extern unsigned short D_8011515E; - extern unsigned short D_80115162; - extern unsigned short D_80115166; - extern void * D_801E9648; - extern void * D_801E964C; - extern unsigned char D_8018C584; - extern unsigned char D_8018C59C; - extern unsigned char D_8018C610; - extern unsigned char D_8018C618; - - - D_80115118 = 0; - D_80115130 = 0; - if (D_8011511A >= 4) { - D_8011511A = D_8011511A - 3; - } - D_80115158 = 0x106; - - if ((((int(*)(int))func_80029178)(0x1c) & 0xFF) == 0) { - D_801E9648 = &D_8018C584; - D_801E964C = &D_8018C610; - } else { - D_801E9648 = &D_8018C59C; - D_801E964C = &D_8018C618; - } - - D_8011515A = 0x104; - D_8011515C = 0x104; - D_8011515E = 0x129; - D_80115162 = 0x103; - D_80115166 = 0x105; - D_80115128 = 0; - D_8011512E = 0; - - if (D_80115110 == 3) { - ((void(*)(int, int))func_8002D4C8)(0x46e, 0); - } else { - func_80141C0C(0); - } -} - - - -// @class: schedule -// @stuck: none — MATCH (63 ins). The idx-32+ residual was a THIRD held base pointer for the -// D_80115188 store: the draft's `((Cell*)&D_80115188)[i].v = v` allocates a pointer, so gcc kept -// three bases (D_80115110/D_8018C90C/D_80115188) and buried the branch-delay `sll` (i<<16 carry) -// under the extra store. Switching to the sibling func_8013E6AC's relocation-masked form -// `*(s32*)((char*)&D_80115188 + (i<<2))` recomputes that address via per-iteration %hi/%lo, leaving -// only TWO held pointers (fp=&D_80115110 -> $t0, ep=&D_8018C90C -> $a3) and freeing the delay slot -// to carry `i<<16` in $a0 exactly as the target does. Head (idx 0-31) already matched; i naturally -// lands in $a2 from the goto-loop delay slots, driving the fp/ep/fa=$8/$7/$5 alloc with no pins. - -void func_8013E958() -{ - extern void func_8014AA28(void); - extern s32 func_800D0488(s32); - extern void func_80141C0C(s32); - - - s16 *p = &(*(s16*)&D_80115124); - s16 i; - s32 v; - s16 m; - - D_800B9A15 = 0; - func_80139954(); - if (D_80078EC0 != *p) { - func_8014AA28(); - if ((D_80078EC0 & 0x7F) != 0) { - m = D_80078EC0 & 0x7F; - *p = m; - if (m == 0 || func_800D0488(m) == 0) - goto loop; - } - } - *p = 0; -loop: - for (i = 0; i < 5; i++) { - s32 *q = &((s32 *)&D_80115110)[i]; - v = ((s32 *)&D_8018C90C)[i] >> 6; - q[0x16] = v; - *(s32 *)((char *)&D_80115188 + (i << 2)) = v; - } - func_80141C0C(7); - (*(u16*)&D_80115112) = 4; -} - - - -DEFINE_func_8013EA54() /* dedup: shared engine-core @0x8013EA54 (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (sVar2 pinned to $v0 forces in-place sll/sra sign-ext scratch) - - -DEFINE_func_8013EB7C() /* dedup: shared engine-core @0x8013EB7C (src/shared) */ - - -DEFINE_func_8013ED6C() /* dedup: shared engine-core @0x8013ED6C (src/shared) */ - -DEFINE_func_8013EE10() /* dedup: shared engine-core @0x8013EE10 (src/shared) */ - - - - - - - - - - - -DEFINE_func_8013EF88() /* dedup: shared engine-core @0x8013EF88 (src/shared) */ - - - -// @class: struct -// @stuck: none — MATCH expected (u16* base materialization for read+write, %lo-folded single-access globals) - - -extern unsigned short D_80115118; -extern unsigned short D_80115112; -extern u16 D_80115110; -extern unsigned char D_8018C8E8; - -extern unsigned char *func_80141CA4(void); -extern void func_801376E8(int a0, int a1); - -void func_8013F138(void) { - u16 *p = &D_80115118; - *p += 0x10; - if ((u16)*p >= 0x40) { - if (D_80115110 == 0) { - ((void (*)(int, unsigned char *))func_801376E8)((int)func_80141CA4(), &D_8018C8E8); - } - D_80115112 += 1; - } -} - - -DEFINE_func_8013F1BC() /* dedup: shared engine-core @0x8013F1BC (src/shared) */ - -DEFINE_func_8013F244() /* dedup: shared engine-core @0x8013F244 (src/shared) */ - diff --git a/src/ov_SC03_015/ov_SC03_015_jr_8013F350.c b/src/ov_SC03_015/ov_SC03_015_jr_8013F350.c deleted file mode 100644 index 716e06d5c..000000000 --- a/src/ov_SC03_015/ov_SC03_015_jr_8013F350.c +++ /dev/null @@ -1,33 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ - /* 8-byte element, cmd @ +4 */ - /* list ptr @ +0x90 */ - /* size 8, alignment 1 -> unaligned copy */ - /* 0x5C copy unit, align 4 */ - /* -> frame 0xA0 (gcc adds 0x10 for the struct-copy) */ -DEFINE_func_8013F350() /* dedup: shared engine-core @0x8013F350 (src/shared) */ - - - -// @class: regalloc-order -// @stuck: none — MATCH (312/312, relocation-masked) - - - - - - - - - - -DEFINE_func_8013FAF8() /* dedup: shared engine-core @0x8013FAF8 (src/shared) */ - - - diff --git a/src/ov_SC03_015/ov_SC03_015_jr_8013FFD8.c b/src/ov_SC03_015/ov_SC03_015_jr_8013FFD8.c deleted file mode 100644 index 6a1ec7c0f..000000000 --- a/src/ov_SC03_015/ov_SC03_015_jr_8013FFD8.c +++ /dev/null @@ -1,17 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ - /* 8-byte element, cmd @ +4 */ - /* list ptr @ +0x90 */ - /* size 8, alignment 1 -> unaligned copy */ - /* 0x5C copy unit, align 4 */ - /* -> frame 0xA0 (gcc adds 0x10 for the struct-copy) */ -DEFINE_func_8013FFD8() /* dedup: shared engine-core @0x8013FFD8 (src/shared) */ - - -DEFINE_func_8014032C() /* dedup: shared engine-core @0x8014032C (src/shared) */ diff --git a/src/ov_SC03_015/ov_SC03_015_jr_80140608.c b/src/ov_SC03_015/ov_SC03_015_jr_80140608.c deleted file mode 100644 index 9faeb71f8..000000000 --- a/src/ov_SC03_015/ov_SC03_015_jr_80140608.c +++ /dev/null @@ -1,2130 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ - /* 8-byte element, cmd @ +4 */ - /* list ptr @ +0x90 */ - /* size 8, alignment 1 -> unaligned copy */ - /* 0x5C copy unit, align 4 */ - /* -> frame 0xA0 (gcc adds 0x10 for the struct-copy) */ -extern void func_80128288(void); -extern void func_80128158(void); -extern void func_801285E4(void); -extern void func_80128178(void); -extern void func_80128678(void); -extern void func_80128198(void); -extern void func_80128714(void); -extern void func_801281B8(void); -extern void func_8013E67C(void); -extern void func_801281D8(void); -extern void func_8013E558(void); -extern void func_801281F8(void); -extern s32 D_801E819C; -extern s32 func_80128218(void); -extern void func_80128A28(void); -extern void func_80128228(void); -extern void func_80128AF4(void); -extern void func_80128248(void); -extern void func_801282EC(void); -extern void func_80128268(void); -extern u16 D_800B99F6; -extern void (*D_8018B804[])(void); -extern void func_80011B7C(int); -extern void func_801282CC(void); -extern void func_8001C0C8(void); -extern void func_80015310(void); -extern void func_80129258(void); -extern void func_801378F0(void); -extern void func_80010E14(void); -extern s16 currentLocationId; -extern s32 func_80029504(void); -extern s32 func_800CF854(s32); -extern s32 func_80128998(void); -extern s32 func_801289F0(void); -extern s32 func_801288E8(s32); -extern s32 func_80128940(s32); -extern s32 func_80029178(s32); -extern s32 func_801288B0(void); -extern void func_80011C10(void); -extern void func_8012832C(void); -extern void func_80129220(void); -extern void func_80011E24(void); -extern void func_80128C14(void); -extern void func_8002AEF8(void); -extern void func_800CFBBC(void); -extern void SsUtReverbOff(void); -extern void func_8013C98C(void); -extern void func_80129C40(s32 a0); -extern void func_800D0630(void); -extern void func_80145CEC(void); -extern void func_80144B9C(void); -extern u8 D_800B9A17; -extern u8 D_800B9A10; -extern void func_80128420(void); -extern s32 func_800D0588(void); -extern void func_801284B8(void); -extern void func_80175308(void); -extern void func_8016E8F0(void); -extern void func_80175494(void); -extern u8 D_800B9A64; -extern void func_801284F0(void); -extern void func_80146074(void); -extern void func_8012853C(void); -extern void func_80178608(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern s32 func_80011A3C(void); -extern short currentLocationId; -extern short D_800B99F2; -extern void func_80128564(void); -extern u8 D_800B9A11; -extern void func_801285D4(void); -extern s32 func_800D18DC(void); -extern void func_8014607C(void); -extern void func_801287B8(void); -extern s32 D_801E9504; -extern void func_80029444(void); -extern void func_800D1754(void); -extern s32 D_80126B58; -extern s32 D_801EAFD0; -extern u16 D_800B99DA; -extern void func_80129CF8(void); -extern void func_8017849C(void); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_801505FC(s32 a0); -extern void func_801508B4(void *a0); -extern void func_80165E90(void); -extern void func_801627E8(void); -extern void func_80162B1C(void); -extern void func_80165CA0(void); -extern void func_80129010(void); -extern void func_8013CA14(void); -extern void func_800190AC(void); -extern void func_8012956C(void); -extern void func_8016E95C(void); -extern void func_801754A8(void); -extern void func_8013BC7C(void); -extern void func_8013BCDC(void); -extern void func_801379FC(void); -extern void func_8001212C(void); -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); -extern u8 D_800AEFD0; -extern int D_800C7C60; -extern int *D_800C7C64; -extern int D_800A2E20; -extern int D_800AF558; -extern int D_801E819C; -extern int func_801288E8(int arg0); -extern u8 D_800AF560; -extern s32 func_80128940(s32 _arg0); -extern int D_800AECB0; -extern u8 D_800AECB8; -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4); -extern s16 D_800B9A00; -extern M2C_UNK (*D_8018B540)(); -extern s16 (*D_8018B544)(); -extern M2C_UNK (*D_8018B54C)(); -extern s32 (*D_8018B550)(); -extern s32 D_801E9500; -extern void func_80010AE0(s32 a0); -extern void func_80018450(s32 a0, s32 a1); -extern void func_800183E0(s32 a0); -extern void func_80128D60(s32 a0, s32 *a1, s32 *a2); -extern s32 func_80128DB4(s32 a0, s32 *a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern M2C_UNK D_801E81A0; -extern void func_80128FAC(u16 *arg0); -extern s16 D_8011DB2C; -extern s16 D_8011DB30; -extern s32 D_80126AEC; -extern u8 *func_8012913C(s32 a0); -extern u8 * func_801290DC(s32 a0, u8 *a1); -extern void func_8001D074(s32 a, s32 b); -extern u8 *func_801291C0(void); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 * func_8012913C(s32 arg0); -extern void func_80016714(void *a0, s32 a1); -extern u8 * func_801291C0(void); -extern void func_80129248(s16 a0); -extern void func_801292C8(u8 *a0); -extern void func_8012927C(void); -extern void func_8012931C(struct vec *a0); -extern void func_80129350(s32 a0, s32 a1); -extern void func_80129374(s32 a0, s32 a1); -extern s16 D_800B9AAC[]; -extern s16 D_800B9AAE[]; -extern s16 D_800B9AB0[]; -extern s16 D_800B9AB2[]; -extern s16 D_800B9AB4[]; -extern s16 D_800B9AB6[]; -extern s16 D_800B9AB8[]; -extern s16 D_800B9ABA[]; -extern void func_80129398(void); -extern s16 D_80114EE0; -extern void func_80129428(void); -extern void func_8012943C(void); -extern s32 D_8005128C; -extern u8 D_800B9A78; -extern void func_801298F4(void *arg0); -extern void func_801299C8(s32 a, s32 b, s32 c); -extern void func_8012944C(void); -extern unsigned short D_800B99F0; -extern void func_8012A328(void); -extern void func_80053308(s32); -extern s32 func_80012F74(s32, s32, s32, s32); /* canonical s32 (engine_core); (s16)-cast the return for the sll/sra */ -extern void GsSetRefView2L(void *); -extern s8 D_801150D6; /* canonical (engine_core macro): s8 — access via *(u8*)& for lbu */ -extern u8 D_80127504; -extern s32 D_80126E60[]; -extern s32 D_80126F04[]; -extern u8 D_80126948[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_80126FA8[]; -extern struct BigCopy D_80126DB8;/* canonical (engine_core macro): struct BigCopy — (s32*)& at use */ -extern u8 D_800AF630[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_800AE688[]; -extern s32 D_801151D4; /* canonical (10 siblings): scalar s32 — store (s32)ptr */ -extern void func_8012A018(s32 a, s32 b); -extern void func_80129FF4(void); -extern s16 D_80126940; -extern s16 D_80126942; -extern s16 D_80126944; -extern void func_8012A048(void *a0, s32 a1, u8 a2); -extern void *memcpy(void *, const void *, unsigned int); -extern void func_8012A094(s32 a0); -extern void func_8012A100(s8 a0); -extern void func_8012A0E0(void); -extern s8 D_801150D6; -extern s32 D_80120204; -extern s32 D_80120200; -extern s32 D_8012020C; -extern s32 D_80120208; -extern s16 D_80120218; -extern s16 D_80120210; -extern s16 D_8012021A; -extern s16 D_80120212; -extern s16 D_8012021C; -extern s16 D_80120214; -extern s16 D_80120226; -extern s16 D_80120220; -extern s16 D_80120228; -extern s16 D_80120222; -extern s16 D_8012022A; -extern s16 D_80120224; -extern s32 D_80120294; -extern s16 D_80120298; -extern s16 D_8012029A; -extern void func_8012A110(void); -extern s8 D_801152C0; -extern void func_8012A2F4(void); -extern s16 D_80127080; -extern s16 D_801152C2; -extern void func_8012A304(s32 a0, s32 a1); -extern s32 D_801151D4; -extern struct BigCopy D_80126DB8; -extern struct BigCopy D_80114EE8; -extern void func_8012A4BC(void); -extern void func_8012A62C(s32); -extern void func_8012A5F8(void (*a0)(void), s32 a1); -extern void func_8012A62C(s32 a0); -extern void func_8012A7D4(void *a0, void *a1); -extern s32 func_8012A6D0(void *a0, void *a1); -extern s16 func_8012A68C(void); -extern s16 func_8012A79C(s16 *a0, s16 *a1); -extern s16 func_8012A758(void); -extern s32 ratan2(s32 a0, s32 a1); -extern void func_8012A7D4(void *arg0, void *arg1); -extern void func_8012AAAC(); -extern void func_8012A828(s32 a0, void * a1); -extern int func_8012ACE0(void *a0); -extern void func_8012A860(void *a0, int a1); -extern void func_8012A8B0(u8 *a0, s32 a1); -extern void func_8012A8E8(void); -extern u8 D_801202A0[]; -extern u16 D_801270C0; -extern void func_8012A988(u8 *a0); -extern void func_8012A908(void); -extern s32 func_8012ACE0(void *a0); -extern M2C_UNK D_8018B898; -extern void func_8012ACA0(void *arg0); -extern s32 func_8012ACE0(void *o); -extern void func_8012AD44(s32 *a0, s16 a1); -extern s32 func_8012AD50(void * arg0); -extern void func_8012AD64(s32 *a0, s16 a1); -extern void func_8012AD6C(void *a0); -extern void func_8012AD80(s32 a0); -extern void func_8012ADE4(u8 *a0); -extern s32 *D_80126B78; -extern s32 *D_80126B90; -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80013478(s32 a0, s32 a1); -extern s32 func_8012AE00(s32 a0); -extern s32 func_8012AF0C(s32 a0, s32 a1); -extern s32 func_80134510(s32 arg); -extern s32 func_8012B030(u8 *a0); -extern int func_80047948(int a0); -extern int func_8004787C(int a0); -extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_8012B14C(s32 a0, s32 a1); -extern void func_8012B178(s32 a0, s32 a1); -extern void func_8012B1B4(s32 a0, s32 a1); -extern void func_8012B200(u8 *a0); -extern void func_8012B21C(void *a0); -extern void func_8012B23C(s32 a0); -extern void func_8012B260(u8 *a0); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern void RotMatrixYXZ(void *m, void *p); -extern void func_8012B370(int a0); -extern void func_8004978C(s16 *a0, void *a1); -extern void func_8012B414(int a0); -extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); -extern s32 func_8012B6D4(s16 *a0, s16 *a1); -extern s32 func_8012B70C(s16 *a0, s16 *a1); -extern s32 ratan2(s32 x, s32 y); -extern s32 func_8012B744(void *a0, void *a1); -extern s16 D_80126CB8; -extern s16 D_80126CB4; -extern s32 func_8012B864(s32 a0); -extern s32 func_8012B8A4(s16 *a0); -extern s32 func_8012B8E4(s32 arg0, s32 arg1); -extern s32 func_8012BA10(s32 arg0, s32 arg1); -extern s32 func_8012BB3C(s32 arg0, s32 arg1, u32 arg2, s32 arg3); -extern void Square0(s32 *a0, s32 *a1); -extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1); -extern s16 D_80126CBA; -extern s32 func_8012BCCC(s32 a0); -extern void func_80013350(s32 a0, void *a1); -extern u8 D_80126B5C; -extern void func_8012BD14(s32 a0); -extern s32 func_8012BDBC(s32 a0, s32 a1); -extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2); -extern void func_8012BE98(s32 a0, u16 *a1); -extern void func_8012BE54(s32 a0); -extern s32 func_800132BC(s32 a0, s32 a1); -extern void func_8012BE98(s32 arg0, u16 * arg1); -extern s32 func_8012BEE8(s32 a0); -extern s32 func_8012BF10(s32 a0, s32 a1); -extern void func_8012BF4C(s32 *a0, s32 a1); -extern void func_8012BF54(void *a0); -extern void func_8012BF68(void *a0); -extern s16 D_80126CB0; -extern s32 func_8012BF7C(s16 *a0); -extern s16 D_80126CAC; -extern short D_80126CAE; -extern int func_8012BFA8(short *a0); -extern s32 D_801274D4; -extern s32 D_801274E0; -extern s32 func_8012C044(s32 a0); -extern void func_8012C194(void); -extern void func_8001CFDC(s32 a, s32 b); -extern void func_8012C1B8(void); -extern u8 D_800B3DF0[]; -extern s32 func_8012C1DC(s32 a0); -extern void func_8012C218(void *a0); -extern u8 D_80126720[]; -extern u16 * func_8012C284(u16 *a0); -extern u8 D_80120194[]; -extern s32 func_8012C2D0(void); -extern s32 func_8012C31C(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32 a0, s32 a1); -extern u8 D_80078EAE; -extern s32 func_8012C354(s32 a0, s32 a1); -extern void func_8001C810(s32 a0, s32 a1); -extern s32 func_8012C438(s32 a0, s32 a1); -extern s32 func_8012C890(s32 a0, s32 a1, s32 a2); -extern s32 func_8012C51C(void *a0, s32 a1); -extern s32 func_8012C588(s32 a0, s32 a1); -extern void func_8012C724(s32 a0, s32 a1); -extern s32 func_8012C820(u8 *a0); -extern s32 D_8018ED7C; -extern s16 D_801270C4; -extern u16 D_801274E4[]; -extern s32 D_8011DB08; -extern s32 func_8012CB64(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); -extern s32 func_8012CC88(s32 a, s32 b, s32 c); -extern u8 D_800D3918[]; -extern void func_8012CBA4(s32 a0); -extern void func_8012CBCC(s32 a0); -extern void func_8012CBF4(s32 a0); -extern void func_8012CC1C(s32 arg0, s32 arg1); -extern void func_8012CC40(s32 arg0, s32 arg1); -extern s32 func_8012CC88(s32 a0, s32 a1, s32 a2); -extern void func_8012CC64(s32 a0, s32 a1); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern s32 func_8012CE2C(s32 a0); -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); -extern void func_8012CFA8(s32 arg0); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_8012D3B4(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012D098(u16 *param_1, u32 param_2); -extern void func_8012D098(); -extern void func_8012D38C(int a0); -extern void func_8012D3AC(void); -extern s32 AddPrim(s32, void *); -extern s32 RotTransPers(s32, s32, s32 *, s32 *); -extern void SetLineF2(void *); -extern void *func_80010A08(s32); -extern void func_8004914C(void *); -extern void func_800491AC(void *); -extern s16 D_800B9A02; -extern void func_8012D4B4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_8012D5DC(void); -extern s16 D_80126B98; -extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2); -extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern int func_8012D664(); -extern void func_8012D624(s32 a0); -extern int func_8012D664(int arg0, int arg1, int arg2); -extern s32 func_8012D714(s32 param_1, u32 param_2); -extern void func_8012F568(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void func_8014C978(void); -extern M2C_UNK D_8018B8B0; -extern M2C_UNK D_8018B8B8; -extern s32 func_8012DB84(void); -extern s32 func_8012DE2C(s32 a0); -extern s32 func_8012DDA4(void); -extern s32 func_8012DBD0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8012DDA4(); -extern s32 func_8012DF34(s32 a0, s32 a1, s32 a2); -extern s16 D_80126B9A; -extern u8 D_801152A8[]; -extern void func_8012DFBC(void); -extern void func_8012DFCC(void); -extern void func_8012E014(s32 arg0); -extern void func_8012E138(void); -extern void func_8012DFD4(u8 *a0); -extern s32 func_8012E27C(void); -extern void func_8012E284(void); -extern s32 GetTPage(s32, s32, s32, s32); -extern s32 func_8005A600(s32, s32, s32, s32, s32); -extern void func_8012E28C(s32 arg0, s32 arg1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void func_8012E32C(void); -extern s32 func_8012E470(s32 a0); -extern void func_8012E4C8(s32 a0); -extern s32 func_8012E504(s32 a0, s32 a1); -extern s32 func_8012E544(s32 a0); -extern s32 func_8012E57C(s32 a0, s32 a1); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E688(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E88C(u8 *a0); -extern void func_8012E8A8(u8 *a0); -extern void func_8012E8C4(u8 *a0); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8016AA50(int, int); -extern void func_8016B428(int); -extern void func_80019064(void *); -extern int D_8018B8C0; -extern void func_8012E9C0(int param_1); -extern void func_8012EC04(s32 param_1, s32 param_2, s32 *param_3); -extern s32 func_8002A4FC(s32 a0); -extern s32 func_8012EECC(s32 a0); -extern void func_8012EFB8(s32 a0); -extern void func_8012EF34(s32 a0, s32 a1); -extern void func_8012EF70(s32 a0, s32 a1); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8012F0BC(s32 *a0, s32 *a1, s32 *a2); -extern void RotTransSV(s32 a0, s32 a1, void *a2); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_8012F1A4(s32 *a0, s32 a1, s32 *a2); -extern void func_8012F2E8(s32 a0, s32 a1, s32 a2); -extern s16 D_80126CB6; -extern void func_8012F374(s32 a0, s32 a1); -extern void *memcpy(void *, const void *, u32); -extern u8 D_80126C38; -extern u8 D_80126C40; -extern u16 D_80126B94; -extern u16 D_80126B96; -extern void func_8012F568(s32 param_1, s32 param_2, s32 param_3, s32 param_4, s32 param_5, s32 param_6); -extern void func_80131B14(); -extern void func_80131E00(struct S80131E00 *a0, s32 a1); -extern s32 func_80131A34(s32, s32); -extern void func_80131CA8(int a0, int a1); -extern void func_8012F5F4(s32 arg0); -extern void func_80131C78(s32 a0); -extern void func_8012F68C(s32 arg0); -extern void func_8012F75C(s32 a0); -extern s32 func_8012BEE8(s32); -extern void func_8012F7B4(s32 a0); -extern void func_80131170(); -extern void func_80131CA8(); -extern unsigned char D_8018B8DC[]; -extern void func_8012F828(int param_1); -extern void func_80131340(s32 a0); -extern void func_8012F87C(s32 a0); -extern void func_80131170(s32 a0, s32 a1, s32 a2); -extern u8 D_8018B8E8[]; -extern void func_8012F8C8(u8* arg0); -extern void func_8012F91C(s32 a0); -extern s32 func_80131A34(s32 a0, s32 a1); -extern void func_80131CA8(s32 a0, s32 a1); -extern void func_8012F968(s32 param_1); -extern void func_801319E0(s32 a0); -extern s32 func_80143B6C(s32 a0, s32 a1); -extern void func_8012FB54(s32 a0); -extern void func_8012FC30(s32 a0); -extern void func_8012FCA4(int a0); -extern s32 func_8012FCC4(s32 param_1); -extern void func_8012FDA8(int param_1); -extern void func_8012FE70(s32 a0); -extern void func_8012FF00(s32 a0); -extern void func_8012FF4C(s32 a0); -extern void func_80130D48(s32 a0); -extern void func_8012FF98(u8 *a0); -extern s32 func_80131AC8(void *a0); -extern void func_8013001C(void *a0); -extern void func_80130088(void *a0); -extern s32 func_8012BCCC(s32); -extern void func_801300F4(s32 a0); -extern void func_801301E8(u8 *a0); -extern void func_80130278(s32 arg0); -extern void func_80130314(s32 a0); -extern void func_80130360(s32 a0); -extern void func_8012E364(void); -extern void func_801303A0(s32 a0); -extern void func_801303EC(void *a0); -extern void func_80143CD4(s32 a0); -extern void func_800CB0E8(s32 a0); -extern void func_80130438(s32 a0); -extern void func_801319E0(int); -extern int func_80131D68(int, int); -extern int func_8012BEE8(int); -extern void func_80131CA8(int, int); -extern void func_80130514(int param_1); -extern void func_801305CC(u8 *a0); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_80130740(void *a0, u16 *a1); -extern s32 func_801312D0(s32 a0, void *a1); -extern void func_801307B0(s32 a0); -extern void func_80130858(s32 a0); -extern void func_80130898(u8 *a0); -extern void func_801308DC(s32 a0); -extern void func_80166244(); -extern void func_80130974(int param_1); -extern void func_80130AC4(s32 a0); -extern int func_80131A34(int a0, int a1); -extern void func_80130AF0(int param_1); -extern void (*D_8018B8FC[])(void); -extern void func_80130D0C(void *a0); -extern s32 rand(void); -extern u8 D_80078E78[]; -extern u16 D_80078EB2; -extern u16 D_80078EB4; -extern s16 D_8018B94C[]; -extern s16 D_8018B97C[]; -extern s16 D_8018B9DC[]; -extern s16 D_8018B9E4[]; -extern s16 D_8018BA04[]; -extern void func_80130D48(s32 arg0); -extern void func_80131170(s32 p, s32 b, s32 c); -extern s32 func_801312D0(s32 param_1, void *param_2); -extern void func_8002A04C(s32 a0); -extern void func_801319E0(s32 arg0); -extern s32 func_80131CF4(s32 a0); -extern void (*D_8018BA3C[])(struct S80131E00 *a0); -extern void func_80131E38(u8 *a0); -extern void func_80131E7C(s32 a0); -extern void func_80131EE4(void); -extern void (*D_8018BA94[])(void); -extern void func_80131EEC(void *a0); -extern void (*D_8018BADC[])(void); -extern void func_80131F28(void *a0); -extern void (*D_8018BAE4[])(void); -extern void func_80131F64(void *a0); -extern void (*D_8018BAEC[])(void); -extern void func_80131FA0(void *a0); -extern void (*D_8018BAF4[])(void); -extern void func_80131FDC(void *a0); -extern void func_801320D0(void); -extern void func_8001C214(int, int); -extern int D_8018BA9C; -extern void func_801320D8(int param_1); -extern s32 func_80132144(s32 param_1); -extern int D_8018BABC; -extern void func_801321B0(int param_1); -extern int D_8018BACC; -extern void func_8013221C(int param_1); -extern void func_8005C324(int dst, int src, int n) __asm__("memcpy"); /* Phase-24: 0x8005C324 is named memcpy for overlays (whale needs it); keep the non-builtin C name here (else built-in codegen), emit via asm-label */ -extern void func_801325B8(int a0, int a1, int a2, int a3, int a4); -extern void func_80132288(int *param_1, int *param_2, int param_3); -extern void func_801325B8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_8013240C(s32 a0); -extern void func_8013277C(void); -extern void func_80020F34(s32 a0, s32 a1); -extern void func_80054514(s32 a0, s32 a1); -extern void func_80132784(s32 a0, s32 a1, u32 a2); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_80132DC4(s32 a0, s32 a1, s32 a2); -extern s32 func_80132E6C(s16 *a0); -extern void func_80132EC4(void *a0, s16 a1); -extern s32 func_80132EF4(s32 a0, s32 a1); -extern void func_801330E0(void * param_1, s16 * param_2, s32 param_3); -extern void func_80133060(u8 *a0, s32 *a1, s32 a2); -extern void func_8013339C(short *param_1, short *param_2); -extern s32 func_8013361C(s16 *a0, s16 *a1, s16 *a2, s16 *a3); -extern s32 D_801E9570; -extern s32 D_801E9574[]; -extern int D_801E9578; -extern void func_80136BC4(s32 a0); -extern void func_801336E8(void *a0, int a1, int a2); -extern void func_80136BC4(s32); -extern void func_8013373C(s16 arg0); -extern s32 func_80133784(s32 arg0, void *arg1, s32 arg2); -extern s32 func_80133CD4(); -extern s32 func_8013435C(s16 *a0, s16 *a1, s32 a2, s16 *a3); -extern s32 func_801343C4(s32 angle, s32 p1, s32 p2); -extern s32 func_80134510(s32 param); -extern s32 func_801345F8(s32 arg); -extern s32 func_801347A0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134A28(s32 a0, s32 a1, s32 a2); -extern s32 func_80134C20(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134FB8(s32 a0, s32 a1, s32 a2); -extern s32 func_80135004(s32 arg0, s32 p1, s32 p2); -extern u8 D_8018BB00; -extern u8 D_8018BAFC; -extern s16 *D_8018BB04; -extern u8 D_8018BB08; -extern int D_801E9570; -extern u16 D_801E9580; -extern int func_80134A74(int, s16, s16, int); -extern int func_80135168(u16 arg0, u16 *p1, u16 *p2); -extern s16 func_80135480(void *param_1, s32 param_2, s16 *param_3, s16 *param_4); -extern s32 func_80136334(void *arg0, s32 arg1, s32 arg2); -extern s32 func_80136824(s32 arg0, s32 arg1, s32 arg2); -extern s16 *D_8018BB04; /* holds a pointer value (*(u16**)&D_8018BB04) */ -extern s32 func_80136A94(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80136C3C(void); -extern void func_80136C1C(void); -extern void func_80136C44(void); -extern void func_80136C4C(void); -extern void (*D_8018BB18[])(void); -extern void func_80136C54(void); -extern s32 func_80136C90(); -extern void func_80136D00(void); -extern void SetLineG2(void *); -extern void func_80136D08(s32 arg0, s32 arg1); -extern void func_80136EC4(void); -extern short D_800B9A02; -extern u8 D_800A6518[]; -extern void GsSortLine(void *a0, void *a1, s32 a2); -extern void func_80136ECC(s16 a0, s16 a1, s16 a2, s16 a3, u8 r, u8 g, u8 b); -extern void func_80137030(s16 a0, s16 a1); -extern void ApplyMatrixSV(void *m, Svec_801372B0 *in, Svec_801372B0 *out); -extern void aGsSortLine(Gline_801372B0 *p, void *ot, s32 z) __asm__("GsSortLine"); -extern void aF80137030(s32 x, s32 y) __asm__("func_80137030"); -extern void func_80137178(s32 x, s32 y); -extern u8 D_800AF630[]; -extern u16 aD800B9A02 __asm__("D_800B9A02"); -extern void func_801372B0(void); -extern void func_80137614(s32 a0, s32 a1, s32 a2); -extern void func_801375EC(s32 a0, s16 a1); -extern s32 func_801399A8(void); -extern void func_801377B4(s32 a0, s32 a1, s32 a2); -extern s32 func_8013767C(s32 a0); -extern void func_801376E8(int a0, int a1); -extern void func_801376C8(int a0); -extern s32 D_80127524; -extern s32 D_80127528; -extern void func_80137840(s32 a0); -extern void func_80139634(void *); -extern void func_80139DC8(void); -extern s16 D_8012752E; -extern void func_801379D8(void); -extern void func_801379EC(void); -extern s32 D_80127548[]; -extern int D_8018BB6C; -extern int D_801269F0; -extern void func_80138BE0(int p); -extern void func_80137B80(void); -extern void func_801392FC(); -extern void func_801397B0(s32 a0); -extern void func_80137DD4(s32 a0, u8 *a1, u8 *a2); -extern void func_80139680(s32 a0, u8 *a1); -extern u16 D_800B99D8; -extern void func_80137BD8(s32 a0); -extern unsigned char D_80126A0E; -extern short D_80126A0A; -extern s16 D_801269F4; -extern int D_800A5E60; -extern int func_80137D08(int arg0, int arg1, short arg2); -extern void func_80137FD8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80138948(void *a0); -extern s16 func_80138DB8(s32 a0, u8 a1, s32 a2); -extern void func_80138B88(s32 a0); -extern void func_8013895C(s32 a0); -extern s16 D_80127540[4]; -extern s32 func_80139D04(s32 a0, s32 a1); -extern s32 func_80138DE0(s32 a0, s32 a1, s32 a2); -extern void func_80139B18(s32 a0); -extern void func_80138AB4(s32 a0); -extern void (*D_8018BB70[])(void); -extern void func_8013A9F8(s32 a0, s32 a1); -extern void func_80138D58(s32 a0, u16 a1); -extern s32 func_80014E80(s32 a0, s32 a1); -extern s32 func_8013914C(s32 a0, s32 a1); -extern void func_800599B8(u16 *); -extern u16 D_80127C0C[]; -extern s32 func_80138ED0(u8 *param_1, u32 param_2, u8 *param_3); -extern s32 func_80139220(s32 a0); -extern void func_801391F0(void *a0); -extern void func_801392C8(void *a0); -extern void func_801395D4(void *); -extern s32 GetTPage(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80052460(s32 a0, s32 a1, s32 a2); -extern void func_801392FC(s32 arg0, s32 arg1, u8 *arg2); -extern void func_80059888(void *a0, s32 a1, s32 a2, s32 a3); -extern void func_80139634(void *a0); -extern void func_80139680(s32 arg0, u8 * arg1); -extern void func_8001931C(void); -extern s16 D_8012752C; -extern void func_80139788(void); -extern u8 D_8018BBB4; -extern u8 D_8018BBF8; -extern void GsSortSprite(void *a0, u8 *a1, s32 a2); -extern void func_801397B0(s32 arg0); -extern void func_8013A8B0(s32 *a0); -extern void func_80139914(s32 arg0); -extern u16 D_80126A08; -extern s32 D_801269F0; -extern s32 *D_80126A30; -extern void func_80139954(void); -extern s32 D_80126A3C; -extern s32 func_801399F0(s32 a0); -extern s32 D_80127520; -extern void func_80139A34(s32 a0); -extern s32 D_80127530[4]; -extern void func_80139A44(s32 a0, u16 a1); -extern void func_80139A68(s32 a0, u16 a1); -extern void func_80139A8C(s32 a0); -extern void func_80139C7C(u8 *a0); -extern s16 D_8012811A; -extern void func_80139DEC(void); -extern void func_80139DF4(s32 a0); -extern void func_80139E84(s32 a0); -extern void func_80139F0C(s32 a0); -extern void func_80139FBC(struct obj *a0); -extern s32 func_8001B22C(void *a0); -extern void func_80139FE8(void *a0); -extern void func_8013A0A4(struct S8013A0A4 *a0); -extern void func_8013A164(struct S8013A164 *a0); -extern void func_8013A1E8(s32 a0); -extern void func_8013A250(struct S8013A250 *a0); -extern void func_80138C30(void *a0); -extern void func_8013A2BC(s32 a0); -extern void func_8013A378(void); -extern u8 D_8011DA80[]; -extern void func_8013A530(); -extern void func_8013A448(void *a0); -extern void func_8013A4C4(struct S8013A4C4 *a0); -extern void func_8013A380(void); -extern void func_80015D4C(); -extern void func_80015F04(); -extern void func_8013AA24(s32 a0, s32 a1); -extern void func_8013A530(int param_1); -extern void func_8013A860(void); -extern s32 func_8013A8BC(void); -extern void func_8013A9B4(s32 a0, s32 a1); -extern s32 func_8013A8FC(s32 arg0); -extern void func_8013AD38(void *a0, s32 a1, void *a2, void *a3); -extern void func_8013B204(s32 a0, s32 a1); -extern void func_8013AF20(); -extern void func_8013B274(s32 a0, s32 a1, void *a2); -extern s32 D_800A5E60; -extern s32 func_8013AB54(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */ -extern u8 D_8018BC3C[]; /* sign table, alt (when a1 < 0xC00) */ -extern void func_8013AD38(void *flag, s32 a1, void *out2, void *out3); -extern void func_8013AF20(u32 *param_1, u16 *param_2, u16 *param_3, u8 *param_4); -extern s16 D_8018BCB4, D_8018BCB6, D_8018BCB8, D_8018BCBA, D_8018BCBC, D_8018BCBE; -extern u16 D_800D45F6; -extern s32 func_8016EC0C(s32 a0, s32 a1); /* match-first, arity 2 */ -extern s32 func_8012B4B8(s32 a0); /* match-first, arity 1 */ -extern s32 func_801670E4(s32 a0, s32 a1, s32 a2, s32 a3); /* derive-decl, arity 4 */ -extern s32 func_80169A4C(s32 a0, s32 a1); /* match-first, arity 2 */ -extern s32 func_8016A8FC(s32 a0); /* match-first, arity 1 */ -extern s32 func_8012B8E4(s32 a0, s32 a1); /* match-first, arity 2 */ -extern s32 func_8015E1B8(s32 a0); /* match-first, arity 1 */ -extern s32 func_8015EE08(s32 a0); /* match-first, arity 1 */ -extern s32 func_8015F7D4(s32 a0); /* match-first, arity 1 */ -extern s32 func_80160B34(s32 a0); /* match-first, arity 1 */ -extern s32 func_80165140(s32 a0); /* match-first, arity 1 */ -extern s32 func_80161CD0(s32 a0, s32 a1); /* match-first, arity 2 */ -extern s32 func_80175268(s32 a0); /* match-first, arity 1 */ -extern s32 func_8017EC7C(s32 a0); /* match-first, arity 1 */ -extern s32 func_801809BC(s32 a0, s32 a1); /* match-first, arity 2 */ -extern s32 func_8012DE2C(s32 a0); /* derive-decl, arity 1 */ -extern s32 func_8012DDA4(void); /* derive-decl, arity 0 */ -extern s32 func_801759D8(void); /* derive-decl, arity 0 */ -extern s32 func_80175820(void); /* derive-decl, arity 0 */ -extern s32 func_801758FC(void); /* derive-decl, arity 0 */ -extern s32 D_801E95E8; -extern s32 D_801269D4; -extern s32 D_801269C8; -extern M2C_UNK D_80062BC0; -extern s8 D_801E95EC; -extern s8 D_801E95ED; -extern void func_8013C9C4(void * arg0); -extern s32 D_801E960C; -extern s32 D_801E9600; -extern s32 D_801E9604; -extern s32 D_801E9610; -extern void func_8013CABC(void); -extern s32 D_801E9608; -extern void func_8013CAE8(void); -extern s32 D_801E9638; -extern s32 D_801E963C; -extern void func_8013CB20(void); -extern void func_8013CB5C(void); -extern void func_8013CF68(); -extern s32 D_801E9618; -extern s32 D_801E961C; -extern void func_8013D9B0(void); -extern void func_8013D064(void); -extern s32 func_8013D13C(void); -extern void func_8013D164(void); -extern u8 D_801EAFCA; -extern u8 D_801EB03E; -extern u8 D_801EAEF2; -extern u8 D_801EAFAC; -extern u8 D_801EAED0; -extern u8 D_801EAEF1; -extern s32 D_801EAFB0; -extern void func_8013D330(void); -extern void *D_801E95F0; -extern void *D_801E95F4; -extern void *D_801E95F8; -extern s32 D_801E9620; -extern s32 D_801E9624; -extern s32 D_801E9628; -extern s32 D_801EAF24[]; -extern u8 D_8018BDAC[]; -extern u8 D_8018BE54[]; -extern u8 D_8018BD04[]; -extern u8 D_8018BE00[]; -extern u8 D_8018BE80[]; -extern u8 D_8018BD58[]; -extern void func_8013D53C(); -extern void func_8013DD68(void); -extern void func_8013D8FC(void); -extern void func_8013CF68(void); -extern void func_8013D3D4(int param_1, int param_2); -extern s16 *D_801E95FC; -extern s32 D_801E962C; -extern s32 D_801E9630; -extern s32 D_801E9634; -extern void func_8013DBE4(int param_1); -extern void func_8013DD68(); -extern s32 D_801E9614; -extern s32 func_8013E054(void); -extern int SquareRoot12(int a0); -extern int func_8013E064(s16 *a0, s16 *a1); -extern int func_8013E0FC(s16 *a0, s16 *a1); -extern int func_8013E194(s16 *a0, s16 *a1); -extern void Square12(s32 *a0, s32 *a1); -extern s32 func_8013E22C(struct VecA *a0, struct VecB *a1); -extern s32 func_8013E298(s16 *a0); -extern int func_8013E2C4(short *a0); -extern void *D_801274CC; -extern s32 func_8013E410(void); -extern s32 func_8013E448(s32 a0); -extern void func_8013E370(void); -extern s32 (*D_801274D0)(s32); -extern s32 D_801274D8; -extern s32 D_801274DC; -extern s32 func_8013E448(s32 param_1); -extern s32 func_8012C750(s32 a0); -extern u8 *D_801274C8; -extern void func_8013E4B4(void); -extern void func_800D24A0(s32 a0); -extern void func_80141788(void); -extern void *D_8011DB24; -extern s32 func_800D0EC4(void); -extern void func_80141874(void); -extern u8 D_800B9A15; -extern unsigned char D_800B9A13; -extern u16 D_80115110; -extern unsigned short D_80115112; -extern void func_8013E588(void * _arg0); -extern void func_8013E5E8(void); -extern u8 D_80078EC0; -extern u16 D_8011511A; -extern u16 D_80115124; -extern u8 D_80115148[]; -extern u8 D_80115140[]; -extern s32 D_8018C90C; -extern s32 D_80115188; -extern s16 D_8018C8E4; -extern s16 D_8018C8E6; -extern void func_8013E83C(void); -extern void func_8013E6AC(void); -extern void func_800D24A0(s32 arg); -extern void func_8013E814(void); -extern void func_8013E83C(); -extern void func_8013E958(); -extern s32 func_80141C50(void); -extern void func_8013F244(void); -extern void func_8013FAF8(s16 a0, s16 a1); -extern void func_8013E958(void); -extern u8 D_801151C8[]; -extern s32 D_801151D0; -extern u16 D_8011511E; -extern s32 D_80115130; -extern s16 D_8011514C; -extern void func_8013EA54(void); -extern s32 func_8013F350(void); /* §30#2 widened: def returns live $v0; callers discard */ -extern s16 func_8014168C(s16 a0); -extern s32 func_8014032C(s32 a0, s32 a1); -extern unsigned char *func_80141CA4(void); -extern short D_80115128; -extern s16 D_8011512A; -extern unsigned char D_8018C8E8; -extern void func_8013EB7C(void); -extern u16 D_80115112; -extern void func_8013ED6C(void); -extern s32 func_8013EE10(); -extern unsigned short D_80115118; -extern void func_8013F138(void); -extern void func_800D2624(void); -extern unsigned short D_80115114; -extern void func_8013F1BC(void); -extern void func_80141C0C(s32); -extern s32 func_80029178(s32 arg); -extern s32 func_800291B4(s32 arg); -extern s32 func_8013FFD8(s16 arg0, s32 arg1, s32 *arg2); -/* ==== end §8b carried decl layer ==== */ - -#include "common.h" - -DEFINE_func_80140608() /* dedup: shared engine-core @0x80140608 (src/shared) */ - - - -// @class: iv-combine -// @stuck: none — MATCH (89 ins). Sequential struct fields fed from a running source -// pointer compile to fixed offsets when written base[0..n]; the target advances -// the pointer, so use post-increment `*p++` for EVERY field (gcc drops the dead -// final increment, yielding the "increment N-2 then offset 0/2" tail). - -DEFINE_func_801407F4() /* dedup: shared engine-core @0x801407F4 (src/shared) */ - - - - - - - - - - - - - - - - - - - - - -extern s16 func_8014168C(s16); -extern s32 *func_80140D68(s32 *, Prim4 *, s32, s32, s32); -/* func_80140958 -- MATCH (260 ins), verified by - * python3 tools/match_one.py func_80140958 --c .run/near6/wave23/func_80140958.c \ - * --asm-subdir asm/ov_SC01_077/nonmatchings/ov_SC01_077 - * - * Three levers took the seed from 6 -> 0 (see the numbered notes in the inner block): - * [L1] `m == i` (not `m == 3`) -- keeps b[0] a RUNTIME value; `m == 3` let gcc - * const-fold it and materialise `li a3,3` / `li t3,12` instead of - * `addu a3,v1,zero` / `sll t3,v1,2`. - * [L2] one dead `__asm__ volatile("" :: "r"(j))` -- +1 weighted REG_N_REFS on j so - * global.c:594 allocno_compare ranks j above k (j -> $a2, k -> $a3). - * [L3] `t3v = m * 4` as an EXPLICIT preheader statement (instead of letting loop.c - * hoist D_8011516A[m]'s index) -- gives it a LUID *below* the three constant - * assignments, which is what puts `move a3,v1 / sll t3,v1,2` ahead of them in - * sched1's backward LUID tie-break. - */ -s32 *func_80140958(ot, i, n) -s32 *ot; -s16 i; -s16 n; -{ - - extern s16 D_8011514E; - extern u8 D_80115158[]; - extern Hw4 D_8011516A[]; - extern Prim4 D_8018C3DC[]; - extern Prim4 *D_8018C4D0[]; - extern u8 D_80115143; - extern Prim4 D_8018C38C[]; - extern s16 D_8018C8EC[]; - extern s16 D_8018C8FC[]; - extern u16 D_8018C40C; - extern u16 D_8018C40E; - extern Env_80140958 D_800AE7BC[]; - Prim4 *p; - s16 t; - s32 c3; -register u16 *a __asm__("$20"); -register u16 *b __asm__("$21"); -register u16 *c __asm__("$23"); -register u16 *e __asm__("$22"); -register u16 *pb __asm__("$10"); -register u32 m24 __asm__("$8"); -register u32 mhi __asm__("$9"); -register s32 eight __asm__("$2"); - if (i < n) - { - c3 = 3; - a = &D_80115110; - b = a + 5; - c = a + 3; - e = &D_8018C40E; - do - { - if (((a[0] == 0) && (a[1] != c3)) && (a[1] < 6)) - { - if (i == a[5]) - { - ot = func_80140D68(ot, &D_8018C38C[i], i, D_8018C8EC[a[3] & 7], 0); - } - } - else - { - p = D_8018C4D0[i]; - if (((p != 0) && (i == b[0])) && (i != 6)) - { - if ((i == 2) && ((*((s16 *) (b + 7))) != 0)) - { - p = D_8018C3DC; - } - if (i != c3) - { - t = ((s32 (*)(s16)) func_8014168C)(i) * 2; - } - else - { - t = ((*((u8 *) (&D_8011514E))) - D_80115143) * 2; - } - ot = func_80140D68(ot, p, i, D_8018C8FC[c[0] & 7], t); - if (((i == 2) && ((*((s16 *) (c + 9))) == 1)) && ((*((s16 *) (c + 12))) != 0)) - { - ot = func_80140D68(ot, p, 2, 8, ((*((s16 *) (c + 12))) & 0xF) * 2); - } - } - } - if (i == c3) - { - s32 m = b[0]; - /* [L1] compare against `i`, NOT against the literal 3. */ - if ((m == i) && ((b[-2] & 8) != 0)) - { - s16 j; - s32 k; - s32 t3v; - u8 *q = ((u8 *) ot) + 0x14; - s16 y; - j = 0; - k = m; - t3v = m * 4; /* [L3] explicit, must sit before the 3 constants */ - pb = (u16 *) (&D_800B9A02); - m24 = 0xFFFFFF; - mhi = 0xFF000000; - for (; j < 2; j++) - { - if (j == 0) - { - if (D_80115140[k] == 0) - { - continue; - } - q[-7] = 0x30; - y = (*e) - 4; - } - else - { - s32 k2 = k * 2; - if ((((s8 *) D_80115158)[k2] - ((s8 *) D_80115140)[k]) < 2) - { - continue; - } - q[-7] = 0x38; - y = (*e) + 3; - } - *((s16 *) (q - 10)) = y; -__asm__("" ::: "memory"); - *((u32 *) ot) = 0x4000000; - q[-8] = 0x78; - *((u32 *) (q - 0x10)) = 0x64808080; - *((s16 *) (q - 6)) = 0x4056; - *((s16 *) (q - 0xC)) = (D_8018C40C + ((u16) *((u16 *) (((u8 *) D_8011516A) + t3v)))) + 0x4A; - eight = 8; - *((s16 *) (q - 2)) = eight; - *((s16 *) (q - 4)) = eight; - *((u32 *) ot) = ((*((u32 *) ot)) & mhi) | (D_800AE7BC[*pb].ot[2] & m24); - { -register u32 *op __asm__("$4"); - op = D_800AE7BC[*pb].ot; - op[2] = (op[2] & mhi) | (((u32) ot) & m24); - } - q += 0x14; - ot += 5; - __asm__ volatile("" :: "r"(j)); /* [L2] zero code, +1 ref on j */ - } - - } - } - i = i + 1; - } - while (i < n); - } - return ot; -} - - - - - -s32 *func_80140D68(out, src, idx, dx, ofs) - s32 *out; - Prim4 *src; /* conformed to the fleet prototype; used only as (s32)src */ - s16 idx; - s32 dx; - s16 ofs; -{ - - extern Hw4 D_8011516A[]; - /* §94 TYPE-CARRY: this typedef and its extern MUST be BLOCK-scope. extract_unit carries - file-scope externs and #defines into each remapped sibling (Phase-27 _carry_macros) but - NOT file-scope typedefs — so a file-scope Env_800D29F8 is silently dropped from every - sibling and the family sweeps 0/137. Body-local typedefs DO survive (PTag_80140D68 below - is the proof), so it lives here. */ - /* 0x14 stride */ - extern Env_800D29F8 D_800AE7BC[]; - - - register u32 mhi __asm__("$8"); - s16 *q; - s32 a; - - out[0] = 0x04000000; - *((u8 *)out + 0xC) = 0x70; - *((u8 *)out + 0xD) = 0x10; - mhi = 0x64808080; - out[1] = mhi; - *(u16 *)((u8 *)out + 0xE) = 0x4056; - - dx -= 0xD; - q = (s16 *)(ofs * 2 + (s32)src); - a = (u16)q[0] + (u16)D_8011516A[idx].x; - a += dx; - *(s16 *)((u8 *)out + 0x8) = a; - *(s16 *)((u8 *)out + 0xA) = q[1] - 4; - *(s16 *)((u8 *)out + 0x12) = 0x10; - *(s16 *)((u8 *)out + 0x10) = 0x10; - - ((PTag_80140D68 *)out)->addr = ((PTag_80140D68 *)((D_800AE7BC[*(volatile u16 *)&D_800B9A02].ot) + 2))->addr; - ((PTag_80140D68 *)((D_800AE7BC[*(volatile u16 *)&D_800B9A02].ot) + 2))->addr = (u32)out; - - return out + 5; -} - - - -// @class: struct -// @stuck: none — MATCH - -extern unsigned char D_80078E7F; -extern unsigned char D_80078E7E; -extern unsigned char D_80078E7D; -extern M2C_UNK D_8018C500; - -extern int func_800D2CA8(int, int); -extern void func_800D2D10(int, int, void *, int); - -void func_80140E6C(void) { - void *puVar1; - unsigned int uVar2; - unsigned int uVar3; - unsigned int uVar4; - - puVar1 = (*(void * *)&D_8018C500); - uVar2 = func_800D2CA8(D_80078E7F, 0x18); - uVar3 = func_800D2CA8(D_80078E7E, 0xc); - uVar4 = func_800D2CA8(D_80078E7D, 0); - func_800D2D10(uVar2 | 0xb00000 | uVar3 | 0xb00 | uVar4, 8, puVar1, 0); -} - - - - -// @class: plumbing -// @stuck: none — MATCH (128/128 ins, match_one confirmed) - -DEFINE_func_80140F00() /* dedup: shared engine-core @0x80140F00 (src/shared) */ - - - -// @class: other -// @stuck: none — MATCH - -DEFINE_func_80141100() /* dedup: shared engine-core @0x80141100 (src/shared) */ - - -#define addPrim_1412A8(ot, p) (setaddr_1412A8(p, getaddr_1412A8(ot)), setaddr_1412A8(ot, p)) -/* §37/§124 def-side asm-label alias (the S40 class lever). The TU declares - * extern int func_801412A8(int, int, int, int, int, int); (ov_SC01_077.c:2720) - * and its callers USE the return value (`param_1 = func_801412A8(...)`, :2730-:2736), while the - * byte-true definition is `Prim_1412A8 *(Prim_1412A8 *, int, int, int, u16, u16)`. The u16 params - * cannot agree with an `int` prototype (C default argument promotion) and the `()` no-prototype - * escape is illegal precisely when a param promotes -- so NEITHER side can move. Giving the - * DEFINITION a private C identifier bound to the emitted symbol by a GNU asm label decouples - * them: the TU's declaration continues to govern the CALL SITES (their codegen is untouched -- - * which is what match_one could not see, since it only compiles this function), and the - * definition keeps its byte-true signature. Zero blast radius. */ -DEFINE_func_801412A8() /* dedup: shared engine-core @0x801412A8 (src/shared) */ - - -DEFINE_func_801415C0() /* dedup: shared engine-core @0x801415C0 (src/shared) */ - -DEFINE_func_8014168C() /* dedup: shared engine-core @0x8014168C (src/shared) */ - -DEFINE_func_801416D4() /* dedup: shared engine-core @0x801416D4 (src/shared) */ - - -DEFINE_func_80141788() /* dedup: shared engine-core @0x80141788 (src/shared) */ - - -DEFINE_func_801417C4() /* dedup: shared engine-core @0x801417C4 (src/shared) */ - -DEFINE_func_801417F8() /* dedup: shared engine-core @0x801417F8 (src/shared) */ - - -extern void func_801754A8(void); -extern s32 func_80014ED4(s32); -extern s32 func_80015018(s32); -extern void func_80141C04(void); - -extern u16 D_8011511E; -extern unsigned short D_80115112; - -void func_80141874(void) { - - extern u16 D_8011511C; - extern u16 D_80115116; - extern void (*D_8018C96C[])(void); - register void (*fp)(void) __asm__("$2"); /* pin fn-ptr to $v0 → store retires early */ - func_801754A8(); - D_8011511E = func_80014ED4(0); - D_8011511C = func_80015018(0); - fp = D_8018C96C[D_80115112]; - fp(); - func_80141C04(); - D_80115116 += 1; -} - - - - - - - - - -DEFINE_func_801418F8() /* dedup: shared engine-core @0x801418F8 (src/shared) */ - - -/* func_80141A60 @ 0x80141A60 (0x130, 76 ins) -- ov_SC01_000 shared engine fn. - * - * ((s32 *)D_801151C8)[]: word (s32) table indexed by (u16)(*(u16 *)&D_800B9A02) -> D_801151D0. - * D_8011511A: u16, unsigned compare vs 4 (sltiu). - * (*(u8 *)&D_8011514C)/4D/5C: u8 fields; a1 = (s16)((*(u8 *)&D_8011514C) + D_8011514D*D_8011515C). - * D_80115130: cached s32 handle. D_8018C8E8: address-taken arg to func_801376E8. - * D_80115116: s16 <- 0xfff8 (ori, positive const). D_80115112: u16 counter. - */ - -extern s16 D_800B9A02; -extern u8 D_801151C8[]; -extern s32 D_801151D0; -/* D_8011511A: this TU declares it volatile at file scope -> a direct read reloads on every - * use; the cast-at-use *(u16 *)&D_8011511A strips volatile so gcc CSEs the three reads into - * one load (matches the single-load target). */ -extern s16 D_8011514C; -extern s32 D_80115130; -extern u8 D_8018C8E8; -extern u16 D_80115112; - -extern s32 func_8013F350(void); -extern void func_8013FAF8(s16 a0, s16 a1); -extern s32 func_8014032C(s32 a0, s32 a1); -extern void func_80139954(void); -extern void func_801376E8(int a0, int a1); -extern void func_80137B80(void); -extern s32 func_800D0EC4(void); - -void func_80141A60(void) -{ - - extern u8 D_8011514D; - extern u8 D_8011515C; - extern u16 D_80115116; - s32 iVar1; - s32 pad[2]; - (void)&pad; /* §36#3 frame-pad induction: force frame 0x20 (vs 0x18) */ - - D_801151D0 = ((s32 *)D_801151C8)[(*(u16 *)&D_800B9A02)]; - func_8013F350(); - if ((*(u16 *)&D_8011511A) >= 4) { - func_8013FAF8((*(u16 *)&D_8011511A), (*(u16 *)&D_8011511A) + 1); - } - func_8013FAF8(2, 3); - iVar1 = func_8014032C(2, (s16)((*(u8 *)&D_8011514C) + D_8011514D * D_8011515C)); - if (iVar1 != 0 && iVar1 != D_80115130) { - D_80115130 = iVar1; - func_80139954(); - func_801376E8(iVar1, (int)&D_8018C8E8); - } - func_80137B80(); - iVar1 = func_800D0EC4(); - if (iVar1 != 0) { - D_80115116 = 0xfff8; - D_80115112 = D_80115112 + 1; - } -} - - -DEFINE_func_80141B90() /* dedup: shared engine-core @0x80141B90 (src/shared) */ - -DEFINE_func_80141C04() /* dedup: shared engine-core @0x80141C04 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH expected (indexed u16 global: (s16)param_1*2 + D_80115110, *2 array stride) - -extern u16 D_80115110; -extern u8 D_8018C8C0; -extern void func_8002D4C8(s32 a0, s32 a1); - -void func_80141C0C(s32 param_1) -{ - func_8002D4C8(*(u16 *)(&D_8018C8C0 + (((param_1 << 16) >> 15) + (u32)D_80115110) * 2), 0); -} - - -DEFINE_func_80141C50() /* dedup: shared engine-core @0x80141C50 (src/shared) */ - -DEFINE_func_80141CA4() /* dedup: shared engine-core @0x80141CA4 (src/shared) */ - -DEFINE_func_80142414() /* dedup: shared engine-core @0x80142414 (src/shared) */ - -DEFINE_func_80142454() /* dedup: shared engine-core @0x80142454 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (58 ins). STRUCT branch reconstruction + 3 levers: (1) §3-T4 branch-polarity -// invert in the ==0 arm so the func_8012C218 cold path sinks to the tail; (2) *(volatile int*) on -// the two extra param_1[0x32] reloads to defeat gcc CSE (gcc reloads via register reuse, not a store); -// (3) param_1[0x7e] pinned to $v1 (register __asm__("$3")) + an input-only scheduling barrier -// __asm__ __volatile__("" : : "r"(a)) on the 0xA read so the pinned load is anchored AFTER it in the -// ==0 arm (matches the load2-reused-as-$v1 ordering). - -extern void func_8012C218(void *a0); - -void func_801424E4(short *param_1) { - - extern void (*D_8018C990[])(void); - short sVar1; - int iVar2; - register unsigned short t __asm__("$3"); - - (*D_8018C990[(unsigned short)param_1[1]])(); - if (*(unsigned short *)param_1 != 0) { - if (param_1[0x38] != 0) { - iVar2 = *(int *)(param_1 + 0x32); - if (iVar2 == 0) { - return; - } - *(int *)(param_1 + 2) = *(int *)(iVar2 + 4); - t = (unsigned short)param_1[0x7e]; - sVar1 = *(unsigned short *)(iVar2 + 10) + t; - param_1[5] = sVar1; - *(int *)(param_1 + 6) = *(int *)(iVar2 + 0xc); - } else { - unsigned short a; - iVar2 = *(int *)(param_1 + 0x32); - if ((iVar2 != 0) && (*(short *)(iVar2 + 0x36) == param_1[0x7f])) { - *(int *)(param_1 + 2) = *(int *)(iVar2 + 4); - a = *(unsigned short *)(*(volatile int *)(param_1 + 0x32) + 10); - __asm__ __volatile__("" : : "r"(a)); - t = (unsigned short)param_1[0x7e]; - sVar1 = a + t; - iVar2 = *(volatile int *)(param_1 + 0x32); - param_1[5] = sVar1; - *(int *)(param_1 + 6) = *(int *)(iVar2 + 0xc); - return; - } - ((void (*)(short *))func_8012C218)(param_1); - } - } - return; -} - - - -DEFINE_func_801425CC() /* dedup: shared engine-core @0x801425CC (src/shared) */ - - - -// @class: schedule -// @stuck: none — MATCH expected; CAE4 block fallthrough, AD50 block goto-tail - -extern void func_8012C1B8(void); -extern s32 func_8012C1DC(s32 a0); -extern void func_8001CA1C(s32 a0, s32 a1); -extern void func_8012CAE4(void *a0); -extern s32 func_8012AD50(void *a0); -extern s32 D_8018C984; - -void func_80142608(s32 param_1) -{ - register s32 iVar1 __asm__("$16"); - - if (*(short *)(param_1 + 0x70) != 0) { - iVar1 = ((s32 (*)(void))func_8012C1B8)(); - } else { - iVar1 = func_8012C1DC(*(s32 *)(param_1 + 100)); - } - *(s32 *)(param_1 + 0x20) = iVar1; - if (iVar1 != 0) { - func_8001CA1C(iVar1, (s32)&D_8018C984); - *(short *)(iVar1 + 0x1a) = 0x200; - *(short *)(iVar1 + 0x18) = 0x200; - *(short *)(param_1 + 0xfc) = 0x40; - if (*(short *)(param_1 + 0x70) != 0) { - goto ad50; - } - if (*(s32 *)(param_1 + 100) != 0) { - *(short *)(param_1 + 0xfe) = *(short *)(*(s32 *)(param_1 + 100) + 0x36); - goto ad50; - } - } - ((void (*)(s32))func_8012CAE4)(param_1); - return; -ad50: - *(short *)(param_1 + 0x98) = 0; - *(s32 *)(param_1 + 0x90) = 0; - ((void (*)(s32))func_8012AD50)(param_1); -} - - -DEFINE_func_801426D4() /* dedup: shared engine-core @0x801426D4 (src/shared) */ - -DEFINE_func_80142740() /* dedup: shared engine-core @0x80142740 (src/shared) */ - -DEFINE_func_80142778() /* dedup: shared engine-core @0x80142778 (src/shared) */ - -DEFINE_func_801427DC() /* dedup: shared engine-core @0x801427DC (src/shared) */ - -DEFINE_func_801427E4() /* dedup: shared engine-core @0x801427E4 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (array-of-fnptr %lo-fold + signed-halfword guard) - -extern u16 D_801270C0; -extern void (*D_8018C9B4[])(); - -void func_801427EC(int param_1) -{ - if (*(s16 *)&D_801270C0 != 3) { - D_8018C9B4[*(u16 *)(param_1 + 2)](); - } -} - - -DEFINE_func_80142838() /* dedup: shared engine-core @0x80142838 (src/shared) */ - -DEFINE_func_801428CC() /* dedup: shared engine-core @0x801428CC (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (array-of-fnptr %lo-fold + signed-halfword guard) - -extern u16 D_801270C0; -extern void (*D_8018C9D0[])(); - -void func_8014292C(int param_1) -{ - if (*(s16 *)&D_801270C0 != 3) { - D_8018C9D0[*(u16 *)(param_1 + 2)](); - } -} - - - -// @class: struct -// @stuck: none — MATCH (array-of-fnptr %lo-fold + signed-halfword guard) - -extern u16 D_801270C0; -extern void (*D_8018CBA0[])(); - -void func_80142978(int param_1) -{ - if (*(s16 *)&D_801270C0 != 3) { - D_8018CBA0[*(u16 *)(param_1 + 2)](); - } -} - - - -// @class: struct -// @stuck: none — MATCH (array-of-fnptr %lo-fold + signed-halfword guard) - -extern u16 D_801270C0; -extern void (*D_8018CC58[])(); - -void func_801429C4(int param_1) -{ - if (*(s16 *)&D_801270C0 != 3) { - D_8018CC58[*(u16 *)(param_1 + 2)](); - } -} - - - -// @class: struct -// @stuck: none — MATCH (array-of-fnptr %lo-fold + signed-halfword guard) -// @reconcile: func_80142A80 is DEFINED later in this TU as `void func_80142A80(void)`. -// The uc2 draft declared it `extern void func_80142A80(int)` -> conflicting types. -// Escape §17a-1/§20: conform the declaration to the TU's, cast at the use site -// (codegen-neutral: the argument still lands in $a0). - -extern void func_80142A80(void); - -void func_80142A10(int param_1) -{ - - extern void (*D_8018CC68[])(); - if (*(s16 *)&D_801270C0 != 3) { - D_8018CC68[*(u16 *)(param_1 + 2)](); - if (*(s16 *)(param_1 + 0xFC) != 0) { - ((void (*)(int))func_80142A80)(param_1); - } - } -} - - - -// @class: struct -// @stuck: none — MATCH (packed-word struct -> lwl/lwr unaligned copy; union byte[] -> $sp-direct lbu; branch-polarity invert -> beqz) - -extern u16 D_800B99D8; -extern struct packed_word D_801E8B2C; -extern u8 D_801E9650; -extern u8 D_801E9651; -extern u8 D_801E9652; - -void func_80142A80(void) -{ - u16 flags; - union word_bytes local; - s32 mul; - - flags = D_800B99D8; - local.pw = D_801E8B2C; - - if (flags & 0x10) { - mul = (s8)((flags & 0xf) >> 1) + 9; - } else { - mul = 0x10 - (s8)((flags & 0xf) >> 1); - } - - D_801E9650 = mul * (local.b[0] >> 4); - D_801E9651 = mul * (local.b[1] >> 4); - D_801E9652 = mul * (local.b[2] >> 4); -} - - -DEFINE_func_80142B2C() /* dedup: shared engine-core @0x80142B2C (src/shared) */ - - -DEFINE_func_80142BB4() /* dedup: shared engine-core @0x80142BB4 (src/shared) */ - -DEFINE_func_80142C7C() /* dedup: shared engine-core @0x80142C7C (src/shared) */ - -DEFINE_func_80142C84() /* dedup: shared engine-core @0x80142C84 (src/shared) */ - -DEFINE_func_80142C9C() /* dedup: shared engine-core @0x80142C9C (src/shared) */ - -DEFINE_func_80142D38() /* dedup: shared engine-core @0x80142D38 (src/shared) */ - -DEFINE_func_80142DB8() /* dedup: shared engine-core @0x80142DB8 (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (combined store-assign `*(p)=v0=call()` keeps test/store on $v0, copy to $s0 for the else) - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001CA1C(s32 a0, s32 a1); -extern void func_80142B2C(void *arg0); - -extern int D_8018C9A8; - -void func_80142DC4(int param_1) -{ - int v0; - - *(int *)(param_1 + 0x20) = v0 = ((int (*)(void))func_8012C1B8)(); - if (v0 == 0) { - ((void (*)(int))func_8012CAE4)(param_1); - } else { - ((void (*)(s32, s32))func_8001CA1C)(v0, (s32)&D_8018C9A8); - *(short *)(v0 + 0x1a) = 0x1800; - *(short *)(v0 + 0x18) = 0x1800; - *(short *)(param_1 + 0xfc) = 0; - ((void (*)(int))func_80142B2C)(param_1); - } -} - - - - -// @class: regalloc-order -// @stuck: none — MATCH - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001CA1C(s32 a0, s32 a1); -extern void func_80142B2C(void *arg0); - -extern unsigned char D_8018C9C4[]; - -void func_80142E38(int param_1) -{ - short sVar1; - int iVar2; - - *(int *)(param_1 + 0x20) = iVar2 = ((int (*)(void))func_8012C1B8)(); - if (iVar2 == 0) { - ((void (*)(int))func_8012CAE4)(param_1); - } else { - ((void (*)(int, void *))func_8001CA1C)(iVar2, &D_8018C9C4); - sVar1 = (*(unsigned short *)(param_1 + 0x70) & 0xf) * 0x600 + 0x1200; - *(short *)(iVar2 + 0x1a) = sVar1; - *(short *)(iVar2 + 0x18) = sVar1; - *(short *)(param_1 + 0xfc) = 0; - ((void (*)(int))func_80142B2C)(param_1); - } -} - - - -// @class: regalloc-order -// @stuck: none — MATCH - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001CA1C(s32 a0, s32 a1); -extern void func_8012A828(s32 a0, void *a1); -extern void func_80142B2C(void *arg0); - - -void func_80142EC0(s32 param_1) { - - extern s32 D_8018CB90[]; - register s32 d __asm__("$16") = param_1; /* $s0 */ - register s32 obj __asm__("$17"); /* $s1 */ - s32 ret; - s16 sVar2; - - ret = ((s32 (*)(void))func_8012C1B8)(); - *(s32 *)(d + 0x20) = ret; - obj = ret; - if (ret == 0) { - ((void (*)(s32))func_8012CAE4)(d); - } else { - func_8001CA1C(obj, 0); - sVar2 = (s16)((*(u16 *)(d + 0x70) & 0xf) * 0x600 + 0xc00); - *(s16 *)(obj + 0x1a) = sVar2; - *(s16 *)(obj + 0x18) = sVar2; - *(s16 *)(d + 0xfc) = 0; - ((void (*)(s32, s32))func_8012A828)(d, D_8018CB90[*(u16 *)(d + 0x70) & 0xf]); - ((void (*)(s32))func_80142B2C)(d); - } -} - - -DEFINE_func_80142F68() /* dedup: shared engine-core @0x80142F68 (src/shared) */ - -DEFINE_func_80142FFC() /* dedup: shared engine-core @0x80142FFC (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (38 ins). $16=param pin; explicit $17 copy of the call result -// survives across func_8001CA1C while $v0 serves the pre-call store/test; -// store BEFORE the s1 copy so the store keeps $v0 (not the saved copy). - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001CA1C(s32 a0, s32 a1); -extern void func_8012A828(s32 a0, void *a1); -extern void func_80142B2C(void *arg0); - -extern unsigned char D_8018CBB0[]; -extern unsigned char D_8018CC10[]; - -void func_8014305C(int param_1) -{ - register int s0_param __asm__("$16") = param_1; - register int s1_copy __asm__("$17"); - int iVar2; - short sVar1; - - iVar2 = ((int (*)(void))func_8012C1B8)(); - *(int *)(s0_param + 0x20) = iVar2; - s1_copy = iVar2; - if (iVar2 == 0) { - ((void (*)(int))func_8012CAE4)(s0_param); - } else { - ((void (*)(int, void *))func_8001CA1C)(s1_copy, D_8018CBB0); - sVar1 = (*(unsigned short *)(s0_param + 0x70) & 0xf) * 0x600 + 0xc00; - *(short *)(s1_copy + 0x1a) = sVar1; - *(short *)(s1_copy + 0x18) = sVar1; - *(short *)(s0_param + 0xfc) = 0; - func_8012A828(s0_param, D_8018CC10); - ((void (*)(int))func_80142B2C)(s0_param); - } -} - - -DEFINE_func_801430F4() /* dedup: shared engine-core @0x801430F4 (src/shared) */ - -DEFINE_func_80143188() /* dedup: shared engine-core @0x80143188 (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (memcpy unaligned copy; $s0 survivor pinned, store-before-copy keeps $v0 for early store/branch) - - -extern void *memcpy(void *, const void *, u32); - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern int func_8001CA88(int, void *); -extern s32 func_8012E504(s32 a0, s32 a1); -extern void func_800233CC(void *, unsigned short); -extern void func_80142B2C(void *arg0); - -extern u8 D_801E8B28; -extern u8 D_801E9650; -extern u8 D_801E9654; - -void func_801431E8(s32 param_1) { - u8 buf[8]; - s32 iVar5; - u16 uVar2; - s16 sVar4; - - register s32 d __asm__("$16"); - memcpy(buf, &D_801E8B28, 4); - iVar5 = ((s32 (*)(void))func_8012C1B8)(); - *(s32 *)(param_1 + 0x20) = iVar5; - d = iVar5; - if (iVar5 == 0) { - ((void (*)(s32))func_8012CAE4)(param_1); - } else { - ((void (*)(s32, void *))func_8001CA88)(d, &D_801E9650); - uVar2 = *(u16 *)(param_1 + 0x70); - *(s16 *)(d + 0x76) = -0x10; - sVar4 = (uVar2 & 0xf) * 0x600 + 0xc00; - *(s16 *)(d + 0x1a) = sVar4; - *(s16 *)(d + 0x18) = sVar4; - *(u32 *)(d + 4) = *(u32 *)(d + 4) | 0x50000000; - if (func_8012E504(param_1, 0x33) == 0) { - *(s16 *)(param_1 + 0xfc) = 1; - func_800233CC(&D_801E9650, 0x10); - memcpy(&D_801E9654, buf, 4); - } else { - *(s16 *)(param_1 + 0xfc) = 0; - } - ((void (*)(s32))func_80142B2C)(param_1); - } -} - - -DEFINE_func_801432FC() /* dedup: shared engine-core @0x801432FC (src/shared) */ - -DEFINE_func_80143390() /* dedup: shared engine-core @0x80143390 (src/shared) */ - -DEFINE_func_801433F0() /* dedup: shared engine-core @0x801433F0 (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH (pending gate) - -extern u8 D_800D387C[]; -extern u32 D_8018CD68[]; - -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); - -void func_80143458(s32 param_1) -{ - s32 p; - u16 v; - - *(u32 *)(*(s32 *)(param_1 + 0x20) + 0x20) = (u32)&D_800D387C; - - p = *(s32 *)(param_1 + 0x20); - if (*(s32 *)(p + 4) == 0) { - *(s32 *)(p + 4) = 0x50000000; - } - - *(u8 *)(*(s32 *)(param_1 + 0x20) + 0x27) = 0x9c; - - v = *(u16 *)(param_1 + 0x34) & 0x7fff; - if (v != 0) { - p = *(s32 *)(param_1 + 0x20); - *(u16 *)(p + 0x1a) = v; - *(u16 *)(p + 0x18) = v; - } - - func_80128EA8(*(u32 *)(param_1 + 0x20), param_1 + 0x24, - D_8018CD68[*(u16 *)(param_1 + 0x34) & 3]); - - *(u16 *)(param_1 + 2) = *(u16 *)(param_1 + 2) + 1; -} - - -DEFINE_func_8014350C() /* dedup: shared engine-core @0x8014350C (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH (pending gate) - - -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); - -void func_8014358C(s32 param_1) -{ - - extern u8 D_8018CD78[]; - extern u32 D_8018CE74[]; - s32 p; - u16 v; - - *(u32 *)(*(s32 *)(param_1 + 0x20) + 0x20) = (u32)&D_8018CD78; - - p = *(s32 *)(param_1 + 0x20); - if (*(s32 *)(p + 4) == 0) { - *(s32 *)(p + 4) = 0x50000000; - } - - *(u8 *)(*(s32 *)(param_1 + 0x20) + 0x27) = 0x90; - - v = *(u16 *)(param_1 + 0x34) & 0x7fff; - if (v != 0) { - p = *(s32 *)(param_1 + 0x20); - *(u16 *)(p + 0x1a) = v; - *(u16 *)(p + 0x18) = v; - } - - func_80128EA8(*(u32 *)(param_1 + 0x20), param_1 + 0x24, - D_8018CE74[*(u16 *)(param_1 + 0x34) & 3]); - - *(u16 *)(param_1 + 2) = *(u16 *)(param_1 + 2) + 1; -} - - -DEFINE_func_80143640() /* dedup: shared engine-core @0x80143640 (src/shared) */ - -DEFINE_func_801437D8() /* dedup: shared engine-core @0x801437D8 (src/shared) */ - -DEFINE_func_80143970() /* dedup: shared engine-core @0x80143970 (src/shared) */ - -DEFINE_func_80143994() /* dedup: shared engine-core @0x80143994 (src/shared) */ - -DEFINE_func_801439C0() /* dedup: shared engine-core @0x801439C0 (src/shared) */ - -DEFINE_func_801439FC() /* dedup: shared engine-core @0x801439FC (src/shared) */ - - -DEFINE_func_80143B30() /* dedup: shared engine-core @0x80143B30 (src/shared) */ - - -DEFINE_func_80143B6C() /* dedup: shared engine-core @0x80143B6C (src/shared) */ - -DEFINE_func_80143BDC() /* dedup: shared engine-core @0x80143BDC (src/shared) */ - - -DEFINE_func_80143C38() /* dedup: shared engine-core @0x80143C38 (src/shared) */ - - -DEFINE_func_80143C74() /* dedup: shared engine-core @0x80143C74 (src/shared) */ - - -DEFINE_func_80143C98() /* dedup: shared engine-core @0x80143C98 (src/shared) */ - - -DEFINE_func_80143CD4() /* dedup: shared engine-core @0x80143CD4 (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (80 ins, relocation-masked). iVar2/iVar3 pinned $s1/$s2; sVar4 is an -// int set BEFORE the call so it naturally takes callee-saved $s3; chained assignment -// a=b=c=sVar4 materializes the value once (the addu $v0,$s3,$zero move) + delay-slot store. - - /* size 0x0c */ - -DEFINE_func_80143D28() /* dedup: shared engine-core @0x80143D28 (src/shared) */ - - - -DEFINE_func_80143E68() /* dedup: shared engine-core @0x80143E68 (src/shared) */ - - -DEFINE_func_80143EA4() /* dedup: shared engine-core @0x80143EA4 (src/shared) */ - -DEFINE_func_80143EAC() /* dedup: shared engine-core @0x80143EAC (src/shared) */ - -DEFINE_func_80143EB4() /* dedup: shared engine-core @0x80143EB4 (src/shared) */ - -DEFINE_func_80143EBC() /* dedup: shared engine-core @0x80143EBC (src/shared) */ - - -DEFINE_func_80144054() /* dedup: shared engine-core @0x80144054 (src/shared) */ - - - -// @class: regalloc-order -// @stuck: 154/154 ins structural match (callees/consts/ctrl-flow/stack/GPU-packet all byte-correct); residual 25 = caller-saved temp-reg coalescing in the final ring-vertex block (target reuses dead $s0=iVar3 for iVar3-(iVar4>>6) subu where gcc reuses iVar4>>6's reg; iVar4 mflo -> $a3 vs target $v0) + 2-ins schedule swap of giv-increment vs iVar2*4 -> permuter grinder territory (§27 step-5) - - /* 0x14 stride */ - -DEFINE_func_80144090() /* dedup: shared engine-core @0x80144090 (src/shared) */ - - -extern void func_8012C218(void *a0); - -// @class: struct -// @stuck: none — MATCH (relocation-masked match_one); fn-ptr dispatch table + 0x1c counter, sibling idiom (func_801427EC/func_80143B30) - -extern void (*D_8018CF08[])(); - -void func_801442F8(int param_1) -{ - int iVar1; - - D_8018CF08[*(u16 *)(param_1 + 2)](); - iVar1 = *(int *)(param_1 + 0x1c) + 1; - *(int *)(param_1 + 0x1c) = iVar1; - if (0x1d < iVar1) { - func_8012C218(param_1); - } -} - - - -extern void func_8012C194(void); -extern void func_8012CAE4(void *a0); -extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); -extern u8 D_8018CE84; - -void func_80144364(int param_1) { - int iVar3; - u16 uVar2; - s16 sVar1; - - iVar3 = ((s32 (*)(void))func_8012C194)(); - if (iVar3 == 0) { - ((void (*)(int))func_8012CAE4)(param_1); - } else { - uVar2 = *(u16 *)(*(int *)(param_1 + 0x64) + 0x36); - *(int *)(param_1 + 0xCC) = iVar3; - *(u16 *)(param_1 + 0xFC) = uVar2; - func_8001CB6C((u8 *)iVar3, (s32)&D_8018CE84, 0x250, 0x1A0); - *(s32 *)(iVar3 + 4) = 0x60000000; - *(u8 *)(iVar3 + 0x27) = 0x14; - *(u16 *)(iVar3 + 0x10) = 0x400; - *(u16 *)(iVar3 + 8) = *(u16 *)(*(int *)(param_1 + 0x64) + 6); - *(u16 *)(iVar3 + 0xA) = *(u16 *)(*(int *)(param_1 + 0x64) + 0xA); - *(u16 *)(iVar3 + 0xC) = *(u16 *)(*(int *)(param_1 + 0x64) + 0xE); - sVar1 = *(s16 *)(param_1 + 0x70); - if (sVar1 != 0) { - *(s16 *)(iVar3 + 0x1A) = sVar1; - *(s16 *)(iVar3 + 0x18) = sVar1; - } else { - *(u16 *)(iVar3 + 0x1A) = 0x2000; - *(u16 *)(iVar3 + 0x18) = 0x2000; - } - *(u16 *)(param_1 + 2) = 1; - } -} - - - - -extern void func_80016714(void *a0, s32 a1); -extern s32 func_8004787C(s32 a0); -extern s32 func_80047948(s32 a0); -extern s32 func_80128ED8(s32 param_1, s32 *param_2); -extern void func_8012AD80(s32 a0); -extern void func_8012C218(void *a0); -extern s32 D_8018CE98; - -void func_80144458(void *arg0) { - s32 temp_s0; - void *temp_s2; - void *temp_v0; - - temp_s2 = M2C_FIELD(arg0, void **, 0xCC); - if (M2C_FIELD(arg0, s16 *, 0x70) == 0) { - temp_v0 = M2C_FIELD(M2C_FIELD(arg0, void **, 0x64), void **, 0x20); - if (temp_v0 != NULL) { - temp_s0 = (M2C_FIELD(temp_v0, s16 *, 0x12) - 0x400) & 0xFFF; - M2C_FIELD(arg0, s32 *, 0x10) = (s32) (func_80047948(temp_s0) * D_8018CE98 * 0x10); - M2C_FIELD(arg0, s32 *, 0x18) = (s32) (func_8004787C(temp_s0) * -D_8018CE98 * 0x10); - func_8012AD80(arg0); - } - } - M2C_FIELD(temp_s2, u16 *, 8) = (u16) M2C_FIELD(arg0, u16 *, 6); - M2C_FIELD(temp_s2, u16 *, 0xA) = (u16) M2C_FIELD(arg0, u16 *, 0xA); - M2C_FIELD(temp_s2, u16 *, 0xC) = (u16) M2C_FIELD(arg0, u16 *, 0xE); - if (func_80128ED8(temp_s2, arg0 + 0xD0) != 0) { - func_80016714(temp_s2, 0x38); - func_8012C218(arg0); - } -} - - -DEFINE_func_80144558() /* dedup: shared engine-core @0x80144558 (src/shared) */ - -DEFINE_func_8014462C() /* dedup: shared engine-core @0x8014462C (src/shared) */ - -DEFINE_func_801446A4() /* dedup: shared engine-core @0x801446A4 (src/shared) */ - - - -// @class: struct -// @stuck: none — MATCH (65 ins, match_one). Levers: uVar2/$2 + addr/$3 pins; split (uVar2&0xFFFFFFF) into addr then (addr|0x80000000)+8 deref; %hi/%lo of 0x80000008 via plain 0x80000000+8 (match_one masks the target's D_80000008 reloc, real bytes identical); v1/3 magic-divide; gv+fv reassoc (field-0x30 in own temp) loads field first -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001CA1C(s32 a0, s32 a1); -extern void func_8012A828(s32 a0, void *a1); -extern u8 D_8018CEAC; -extern u8 D_8018CEB8; - -void func_8014477C(void *param_1) { - s32 v0; - s32 v1; - register s32 uVar2 __asm__("$2"); - register s32 addr __asm__("$3"); - s32 gv; - s32 fv; - - v0 = ((s32 (*)(void))func_8012C1B8)(); - *(s32 *)((s32)param_1 + 0x20) = v0; - if (v0 == 0) { - func_8012CAE4(param_1); - return; - } - ((void (*)(s32, void *))func_8001CA1C)(v0, &D_8018CEAC); - if (*(u16 *)(*(s32 *)((s32)param_1 + 0x64)) != 0) { - *(s16 *)((s32)param_1 + 0xFC) = *(u16 *)(*(s32 *)((s32)param_1 + 0x64) + 0x36); - uVar2 = *(s32 *)(*(s32 *)((s32)param_1 + 0x64) + 0x58); - if (uVar2 != 0) { - addr = uVar2 & 0xFFFFFFF; - gv = *(u16 *)((addr | 0x80000000) + 8); - fv = *(u16 *)((s32)param_1 + 0xA) - 0x30; - *(u16 *)((s32)param_1 + 0xA) = gv + fv; - } else { - *(u16 *)((s32)param_1 + 0xA) = *(u16 *)((s32)param_1 + 0xA) - 0x60; - } - } - ((void (*)(void *, void *))func_8012A828)(param_1, &D_8018CEB8); - v1 = (s32)*(s16 *)((s32)param_1 + 0x70) << 0xC; - *(s16 *)((s32)param_1 + 0x2) = 1; - *(s16 *)(*(s32 *)((s32)param_1 + 0x20) + 0x12) = v1 / 3; - *(s32 *)((s32)param_1 + 0x1C) = 0x78; -} - - - -extern void func_8012C194(void); -extern void func_8012CAE4(void *a0); -extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); - -extern u8 D_8018CE84; -extern u8 D_8018CEF4; - -void func_80144880(s32 param_1) -{ - register s32 obj __asm__("$16"); /* $s0 */ - register s32 self __asm__("$17") = param_1; /* $s1 */ - register s32 b __asm__("$2"); /* $v0 */ - s32 e; - - obj = ((s32 (*)(void))func_8012C194)(); - if (obj == 0) { - ((void (*)(s32))func_8012CAE4)(self); - } else { - *(u16 *)(self + 0xFC) = *(u16 *)(*(s32 *)(self + 0x64) + 0x36); - *(s32 *)(self + 0xCC) = obj; - if (*(s16 *)(self + 0x70) == 1) { - func_8001CB6C((u8 *)obj, (s32)&D_8018CE84, 0x250, 0x1A0); - b = 0x14; - } else { - func_8001CB6C((u8 *)obj, (s32)&D_8018CEF4, 0x300, 0x1D0); - b = 0x6A; - } - *(u8 *)(obj + 0x27) = (u8)b; - *(s32 *)(obj + 4) = 0x60000000; - *(u16 *)(obj + 0x10) = 0x400; - *(u16 *)(obj + 8) = *(u16 *)(*(s32 *)(self + 0x64) + 6); - *(u16 *)(obj + 0xA) = *(u16 *)(*(s32 *)(self + 0x64) + 0xA); - e = *(u16 *)(*(s32 *)(self + 0x64) + 0xE); - *(u16 *)(obj + 0x1A) = 0x4000; - *(u16 *)(obj + 0x18) = 0x4000; - *(u16 *)(obj + 0xC) = (u16)e; - *(s16 *)(self + 2) = *(s16 *)(self + 2) + 1; - } -} - - -DEFINE_func_80144988() /* dedup: shared engine-core @0x80144988 (src/shared) */ - - -DEFINE_func_801449C8() /* dedup: shared engine-core @0x801449C8 (src/shared) */ - - -DEFINE_func_80144A04() /* dedup: shared engine-core @0x80144A04 (src/shared) */ - - -DEFINE_func_80144A2C() /* dedup: shared engine-core @0x80144A2C (src/shared) */ - - -DEFINE_func_80144A68() /* dedup: shared engine-core @0x80144A68 (src/shared) */ - -DEFINE_func_80144A90() /* dedup: shared engine-core @0x80144A90 (src/shared) */ - -DEFINE_func_80144A98() /* dedup: shared engine-core @0x80144A98 (src/shared) */ - -DEFINE_func_80144AEC() /* dedup: shared engine-core @0x80144AEC (src/shared) */ - - - -// @class: struct -// @stuck: none — MATCH - -DEFINE_func_80144B14() /* dedup: shared engine-core @0x80144B14 (src/shared) */ - - - diff --git a/src/ov_SC03_015/ov_SC03_015_jr_8015444C.c b/src/ov_SC03_015/ov_SC03_015_jr_8015444C.c deleted file mode 100644 index 5297546f4..000000000 --- a/src/ov_SC03_015/ov_SC03_015_jr_8015444C.c +++ /dev/null @@ -1,102 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -DEFINE_func_8015444C() /* dedup: shared engine-core @0x8015444C (src/shared) */ - - - - -/* - * func_801549F8 — scan param->b4[] (s32[], length = the u8 at param->bc), - * stepping the index by 1 or 2 per entry via the 27-entry jump table - * jtbl_801D89A4; count the default/out-of-range entries. Returns (u8) count. - * - * REDRAFT NOTE (the decay fix, 2 levers — both required, both source-level): - * - * 1. `u8 n` (NOT `s32 n`) — THE fix for the stored draft's 3-off residual. - * The stored draft's whole residual was the position of the loop-bound - * keep-alive copy `addu $a3,$v0,$zero` among the three preheader insns: - * draft emitted [lw base][copy][lui/addiu jtbl], target wants - * [lw base][lui/addiu jtbl][copy]. The loop-invariant jtbl address is - * moved by loop.c and lands AFTER every preheader source statement, so as - * long as the copy is an ordinary preheader statement it can never follow - * the hoist. Making `n` a u8 changes the RTL for `n = *(u8*)(p+0xBC)`: - * cse1 no longer converts it into a plain reg-reg copy in place, and the - * copy that ultimately feeds the exit test is emitted at loop_start AFTER - * move_movables (post-loop pass), i.e. after the hoisted lui/addiu — the - * target order. Nothing else in the function changes. - * - * 2. The `j = i` / `i = j + k` index form BLOCKS strength reduction, which - * is what the stored draft's `register s32 i __asm__("$3")` pin was for. - * Unblocked, -O2 turns base[i] into a walking pointer (2nd biv, 33 ins); - * the target keeps the INDEX form (sll $v0,$v1,2; addu $v0,$v0,$a0; lw). - * `j` is a mult=1/add=0 giv of the biv `i`, so SR declines and i/j get - * coalesced into $v1 — no extra insn. This replaces the hard-register - * pin, so the match is pin-free and safe to travel to sibling overlays. - * (The pinned form — keep `register s32 i __asm__("$3")` + `i += 1/2` and - * just change `n` to u8 — also MATCHes, 31 ins, if a pin is ever wanted.) - * - * OPT LEVEL: plain -O2. The unfilled load-delay nops are this psx gcc's - * default, not an -O1 tell. - * - * VERIFIED: python3 tools/match_one.py func_801549F8 --c .run/uc/func_801549F8.c - * --asm-subdir asm/ov_SC01_077/nonmatchings/ov_SC01_077_jr_8015444C - * -> MATCH (31 ins) - */ -s32 func_801549F8(s32 param_1, s32 _arg1, s32 _arg2) -{ - s32 i, j; - u8 n; - u8 count; - s32 *base; - - count = 0; - i = 0; - if (*(u8 *)(param_1 + 0xBC) != 0) { - base = *(s32 **)(param_1 + 0xB4); - n = *(u8 *)(param_1 + 0xBC); - do { - j = i; - switch (base[j]) { - case 0: case 2: case 7: case 8: case 9: case 10: - case 0xd: case 0x10: case 0x11: case 0x12: case 0x13: - case 0x14: case 0x19: case 0x1a: - i = j + 1; - break; - case 3: case 4: case 5: case 6: case 0xb: case 0xc: - case 0xe: case 0xf: case 0x15: case 0x16: - i = j + 2; - break; - default: - i = j + 1; - count += 1; - break; - } - } while (i != n); - } - return count; -} - -DEFINE_func_80154A74() /* dedup: shared engine-core @0x80154A74 (src/shared) */ - -DEFINE_func_80154AB4() /* dedup: shared engine-core @0x80154AB4 (src/shared) */ - -DEFINE_func_80154AE0() /* dedup: shared engine-core @0x80154AE0 (src/shared) */ - -DEFINE_func_80154B20() /* dedup: shared engine-core @0x80154B20 (src/shared) */ - -DEFINE_func_80154B4C() /* dedup: shared engine-core @0x80154B4C (src/shared) */ - -DEFINE_func_80154B7C() /* dedup: shared engine-core @0x80154B7C (src/shared) */ - -DEFINE_func_80154B98() /* dedup: shared engine-core @0x80154B98 (src/shared) */ - -DEFINE_func_80154BC8() /* dedup: shared engine-core @0x80154BC8 (src/shared) */ - -DEFINE_func_80154BE4() /* dedup: shared engine-core @0x80154BE4 (src/shared) */ diff --git a/src/ov_SC03_015/ov_SC03_015_jr_80154C24.c b/src/ov_SC03_015/ov_SC03_015_jr_80154C24.c deleted file mode 100644 index 0d1efd2b1..000000000 --- a/src/ov_SC03_015/ov_SC03_015_jr_80154C24.c +++ /dev/null @@ -1,796 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -DEFINE_func_80154C24() /* dedup: shared engine-core @0x80154C24 (src/shared) */ - - -DEFINE_func_80154ED8() /* dedup: shared engine-core @0x80154ED8 (src/shared) */ - -DEFINE_func_80154F9C() /* dedup: shared engine-core @0x80154F9C (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (array-of-struct stride-8 base materialize + addu, %lo folded into addiu) - -extern void MoveImage(void *a0, s32 a1, s32 a2); -extern void func_800183E0(s32 a0); - -extern ImgRect8 D_8018D398[]; - -void func_801550FC(s32 arg0) -{ - if (arg0 & 0x40000000) { - MoveImage(&D_8018D398[arg0 & 0xFF], 0x200, 0x100); - } else { - ((void (*)(void))func_800183E0)(); - } -} - - -DEFINE_func_80155150() /* dedup: shared engine-core @0x80155150 (src/shared) */ - -DEFINE_func_801552F4() /* dedup: shared engine-core @0x801552F4 (src/shared) */ - -DEFINE_func_80155344() /* dedup: shared engine-core @0x80155344 (src/shared) */ - -DEFINE_func_80155394() /* dedup: shared engine-core @0x80155394 (src/shared) */ - -DEFINE_func_801553A8() /* dedup: shared engine-core @0x801553A8 (src/shared) */ - -DEFINE_func_801553C0() /* dedup: shared engine-core @0x801553C0 (src/shared) */ - -DEFINE_func_80155440() /* dedup: shared engine-core @0x80155440 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH expected; decrement persists as separate addiu in delay slot - -extern int (*D_8018D3D8[])(void); - -s32 func_80155458(s32 param_1) -{ - int idx; - - idx = *(unsigned char *)(param_1 + 0x4e); - if (idx != 0) { - idx = idx - 1; - if ((*D_8018D3D8[idx])() == 0) { - *(unsigned char *)(param_1 + 0x4e) = 0; - } - } - return *(unsigned char *)(param_1 + 0x4e); -} - - -DEFINE_func_801554B8() /* dedup: shared engine-core @0x801554B8 (src/shared) */ - -DEFINE_func_80155518() /* dedup: shared engine-core @0x80155518 (src/shared) */ - -DEFINE_func_8015554C() /* dedup: shared engine-core @0x8015554C (src/shared) */ - - -DEFINE_func_80155580() /* dedup: shared engine-core @0x80155580 (src/shared) */ - - -DEFINE_func_801555BC() /* dedup: shared engine-core @0x801555BC (src/shared) */ - - - -void func_801555F4(void *param_1) -{ - extern void func_80156648(int *a0); - extern int D_800D4C94; - extern int D_800D4CE4; - extern int D_800D4D38; - extern int D_800D4D88; - extern int D_800D4E10; - extern int D_800D4E6C; - - - int uVar1; - unsigned char bVar3; - int s1; - unsigned short uVar4; - - ((void(*)(int, int))func_80154A74)(((int)param_1), 0x15); - if ((*(unsigned int *)(((int)param_1) + 0x44) & 0x200) == 0) { - if (*(int *)(((int)param_1) + 0x2c) == -0xb0000) { - uVar1 = ((int(*)(int))func_80029178)(0x82); - if ((uVar1 & 0xff) != 0) { - uVar1 = 7; - goto L_648; - } - } - } else { - uVar1 = 5; -L_648: - *(unsigned char *)(((int)param_1) + 0x1aa) = uVar1; - } - switch (*(unsigned char *)(((int)param_1) + 0x1aa)) { - case 0: - case 1: - bVar3 = *(unsigned char *)(((int)param_1) + 0x1ab) ^ 1; - *(unsigned char *)(((int)param_1) + 0x1ab) = bVar3; - if (bVar3 != 0) - *(unsigned char *)(((int)param_1) + 0x1aa) = 0; - else - *(unsigned char *)(((int)param_1) + 0x1aa) = 1; - ((void(*)(int *, int))func_80154274)((int *)((int)param_1), (int)&D_800D4C94); - ((void(*)(int))func_80147324)(0x400); - ((void(*)(unsigned short))func_80147300)(0x5f3); - s1 = 0; - D_8011F730 |= 3; - func_80146CA0((void *)((int)param_1)); - goto L_7b8; - case 2: - ((void(*)(int *, int))func_80154274)((int *)((int)param_1), (int)&D_800D4CE4); - ((void(*)(int))func_80147324)(0x446); - ((void(*)(unsigned short))func_80147300)(0x5f3); - s1 = 1; - goto L_575c; - case 3: - ((void(*)(int *, int))func_80154274)((int *)((int)param_1), (int)&D_800D4D38); - ((void(*)(int))func_80147324)(0x400); - ((void(*)(unsigned short))func_80147300)(0x5f3); - s1 = 2; - goto L_575c; - case 4: - ((void(*)(int *, int))func_80154274)((int *)((int)param_1), (int)&D_800D4D88); - ((void(*)(unsigned short))func_80147300)(0x5f6); - s1 = 3; - func_80146CA0((void *)((int)param_1)); -L_575c: - func_80146CA0((void *)((int)param_1)); - goto L_7b8; - case 5: - ((void(*)(int *, int))func_80154274)((int *)((int)param_1), (int)&D_800D4E10); - s1 = 4; - uVar4 = 7; - goto L_7b0; - case 7: - ((void(*)(int))func_80147324)(0x7f); - ((void(*)(unsigned short))func_80147300)(0x5f4); - ((void(*)(int *, int))func_80154274)((int *)((int)param_1), (int)&D_800D4E6C); - s1 = 6; - uVar4 = 8; -L_7b0: - *(unsigned short *)(((int)param_1) + 2) = uVar4; - goto L_7b8; - default: - ; - } -L_7b8: - ((void(*)(int *, int))func_80146E90)((int *)((int)param_1), 0); - func_80156648((int *)((int)param_1)); - if (s1 >= 0) { - ((int(*)(int, int, int, int))func_80146994)(4, ((int)param_1), s1, 0); - } - ((void(*)(int *))func_801553A8)((int *)((int)param_1)); -} - - -#include "common.h" - - - - -DEFINE_func_80155800() /* dedup: shared engine-core @0x80155800 (src/shared) */ - - - -DEFINE_func_80155A44() /* dedup: shared engine-core @0x80155A44 (src/shared) */ - -DEFINE_func_80155B20() /* dedup: shared engine-core @0x80155B20 (src/shared) */ - -DEFINE_func_80155B9C() /* dedup: shared engine-core @0x80155B9C (src/shared) */ - -DEFINE_func_80155C0C() /* dedup: shared engine-core @0x80155C0C (src/shared) */ - -DEFINE_func_80155C64() /* dedup: shared engine-core @0x80155C64 (src/shared) */ - -DEFINE_func_80155D70() /* dedup: shared engine-core @0x80155D70 (src/shared) */ - -DEFINE_func_80155E30() /* dedup: shared engine-core @0x80155E30 (src/shared) */ - -DEFINE_func_80155EA4() /* dedup: shared engine-core @0x80155EA4 (src/shared) */ - -DEFINE_func_80155F58() /* dedup: shared engine-core @0x80155F58 (src/shared) */ - -DEFINE_func_80155F60() /* dedup: shared engine-core @0x80155F60 (src/shared) */ - -DEFINE_func_80155F80() /* dedup: shared engine-core @0x80155F80 (src/shared) */ - -DEFINE_func_80155FB0() /* dedup: shared engine-core @0x80155FB0 (src/shared) */ - -DEFINE_func_80155FD4() /* dedup: shared engine-core @0x80155FD4 (src/shared) */ - -DEFINE_func_80155FF8() /* dedup: shared engine-core @0x80155FF8 (src/shared) */ - - -void func_80156044(int param_1, int param_2) { - extern u32 func_8015616C(s32 a0, u16 a1); - extern void func_80156670(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); - extern void func_801567BC(s32 a0); - extern void func_80156848(s32 a0, s32 a1, s32 a2); - extern void func_80156A88(s32 a0, s32 a1); - extern s32 func_801565C0(s32 a0); - extern u8 D_8018D594; - extern u8 D_8018D5A8; - extern u8 D_8018D42C; - - register s32 puVar2 __asm__("$2"); - register s32 iVar3 __asm__("$3"); - u8 *puVar4; - s32 uVar1; - - if (((u32)param_2) & 0x10000) { - iVar3 = (((u32)param_2) & 0xffff) * 0x14; - puVar2 = (s32)&D_8018D594; - } else if (((u32)param_2) & 0x20000) { - iVar3 = (((u32)param_2) & 0xffff) * 0x14; - puVar2 = (s32)&D_8018D5A8; - } else { - iVar3 = (((u32)param_2) & 0xffff) * 0x14; - puVar2 = (s32)&D_8018D42C; - } - puVar4 = (u8 *)(iVar3 + puVar2); - uVar1 = func_8015616C(((s32)param_1), *(u16 *)puVar4) & 0xffff; - if (*(u8 *)(((s32)param_1) + 0x1a8) != 0) { - func_80156670(((s32)param_1), *(s32 *)puVar4, uVar1, *(s32 *)(puVar4 + 4), - *(u8 *)(puVar4 + 0xA), *(u16 *)(puVar4 + 0x12)); - if (*(u8 *)(puVar4 + 0x10) != 0) { - func_801567BC(((s32)param_1)); - } - func_80156848(((s32)param_1), (s32)puVar4, uVar1); - func_80156A88(((s32)param_1), (s32)puVar4); - if (func_801565C0(((s32)param_1)) != 0) { - *(u8 *)(((s32)param_1) + 0x1c0) = 1; - } - } -} - - -DEFINE_func_8015616C() /* dedup: shared engine-core @0x8015616C (src/shared) */ - -DEFINE_func_80156370() /* dedup: shared engine-core @0x80156370 (src/shared) */ - - - -DEFINE_func_801563EC() /* dedup: shared engine-core @0x801563EC (src/shared) */ - - -DEFINE_func_8015640C() /* dedup: shared engine-core @0x8015640C (src/shared) */ - -DEFINE_func_801564B0() /* dedup: shared engine-core @0x801564B0 (src/shared) */ - -DEFINE_func_801565C0() /* dedup: shared engine-core @0x801565C0 (src/shared) */ - - -// @class: MATCH (18 ins) — match_one, asm-subdir asm/ov_SC01_077/nonmatchings/ov_SC01_077_jr_80154C24 -// -// RECONCILE (uc2 -> uc3). The body is UNCHANGED and still MATCHes; only the declaration -// environment moved. -// -// Gate error: `conflicting types for func_80156600 || previous declaration`. The conflicting -// symbol is func_80156600 ITSELF. ov_SC01_077_jr_80154C24.c:1747 instantiates -// DEFINE_func_80157EA4(), whose macro body (src/shared/engine_core.h:11395) carries -// extern s32 func_80156600(void *a0); -// and calls it at engine_core.h:11409 as `v1 = (s32 *)func_80156600(a0);`. -// The byte-true body is NULLARY — the target zeroes $a0 at entry and uses it as the loop -// counter — so `s32 (void)` vs the header's `s32 (void *)` is a PARAM/ARITY disagreement on -// our own definition. Neither declaration can be changed: the header decl is fleet-shared -// (137 siblings instantiate the same macro), and adding a phantom `void *` parameter to the -// definition perturbs the $a0 allocation. -// -// Escape: §37/§124 ASM-LABEL ALIAS. The definition is given the private C name aF80156600 -// and the assembler label "func_80156600", so it never collides with the canonical -// declaration while still emitting the required symbol for the macro's call site. Zero -// header edits, zero codegen change (verified: cc1 on the real spliced TU is diagnostic-free, -// and match_one still prints MATCH). This declaration MUST travel with the body. -// -// Everything else is as in uc2: externs at BLOCK scope (rule D — keeps the bank travellable to -// the 137 siblings; the sibling func_80156670 declares the same two symbols at function scope -// in the same TU at :1427/:1432), and D_80126AF0 typed as plain u8[] because the body only -// ever does pointer arithmetic on it (+8/entry) — the file-scope `extern S8 D_80126AF0[];` -// form needs engine_types.h, which common.h does not pull in. -// -// Codegen shape: a counter in $a0, a byte cursor $a1 walking D_80126AF0 by 8, a word cursor -// $v1 walking D_801151E0 by 4; the `addu $v0,$a1,$zero` return value sits in the bnez delay -// slot, and the loop fallthrough re-zeroes $v0 for the not-found return. -s32 aF80156600(void) __asm__("func_80156600"); - -DEFINE_func_80156600() /* dedup: shared engine-core @0x80156600 (src/shared) */ - - -DEFINE_func_80156648() /* dedup: shared engine-core @0x80156648 (src/shared) */ - -DEFINE_func_80156670() /* dedup: shared engine-core @0x80156670 (src/shared) */ - - -DEFINE_func_801567BC() /* dedup: shared engine-core @0x801567BC (src/shared) */ - -DEFINE_func_80156848() /* dedup: shared engine-core @0x80156848 (src/shared) */ - -DEFINE_func_80156A14() /* dedup: shared engine-core @0x80156A14 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH expected; D_8011520C indexed by param_2 (byte) folds %lo; D_8018D840 indexed halfword folds %lo -extern unsigned char D_8011520C[]; -extern unsigned short D_8018D840[]; -extern void func_80147324(s32 arg0); - -void func_80156A1C(s32 param_1, s32 param_2) -{ - if (*(unsigned char *)(param_1 + 0xDA) == 0) { - func_80147324(D_8018D840[D_8011520C[param_2]]); - *(unsigned char *)(param_1 + 0xDA) = *(unsigned char *)(param_1 + 0xDA) + 1; - } -} - - -DEFINE_func_80156A88() /* dedup: shared engine-core @0x80156A88 (src/shared) */ - -DEFINE_func_80156B74() /* dedup: shared engine-core @0x80156B74 (src/shared) */ - -DEFINE_func_80156ECC() /* dedup: shared engine-core @0x80156ECC (src/shared) */ - -DEFINE_func_80156FA8() /* dedup: shared engine-core @0x80156FA8 (src/shared) */ - - -DEFINE_func_80157158() /* dedup: shared engine-core @0x80157158 (src/shared) */ - - -DEFINE_func_801571C4() /* dedup: shared engine-core @0x801571C4 (src/shared) */ - -DEFINE_func_801574DC() /* dedup: shared engine-core @0x801574DC (src/shared) */ - -DEFINE_func_80157510() /* dedup: shared engine-core @0x80157510 (src/shared) */ - - -DEFINE_func_80157544() /* dedup: shared engine-core @0x80157544 (src/shared) */ - - -DEFINE_func_80157580() /* dedup: shared engine-core @0x80157580 (src/shared) */ - -DEFINE_func_801575E4() /* dedup: shared engine-core @0x801575E4 (src/shared) */ - -DEFINE_func_801576A8() /* dedup: shared engine-core @0x801576A8 (src/shared) */ - -DEFINE_func_8015771C() /* dedup: shared engine-core @0x8015771C (src/shared) */ - -DEFINE_func_8015773C() /* dedup: shared engine-core @0x8015773C (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH expected (scalar global store + two sequential calls, param_1 saved across) - -extern int D_801E96D0; -extern void func_80147078(s32 *a0, s16 a1); -extern void func_801578C0(s32 a0); - -void func_80157788(int param_1) -{ - D_801E96D0 = 300; - ((void (*)(int, int))func_80147078)(param_1, 7); - func_801578C0(param_1); -} - - - - - -void func_801577C8(s32 arg0) { - D_801E96D0 = 0x12C; - func_80147078(arg0, 7); - func_80157808(arg0); -} - - - -// @class: struct -// @stuck: none — MATCH expected (fnptr-table %lo-fold via extern array + global counter decrement + two saved-param calls) - -extern void (*D_8018D878[])(void); -extern int D_801E96D0; -extern void func_801599A4(void *a0); -extern void func_80159B3C(void *a0); - -void func_80157808(void *param_1) -{ - D_8018D878[*(unsigned short *)((char *)param_1 + 2)](); - D_801E96D0 = D_801E96D0 - 1; - if (D_801E96D0 == -1) { - func_801599A4(param_1); - func_80159B3C(param_1); - } -} - - -DEFINE_func_80157880() /* dedup: shared engine-core @0x80157880 (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH (expected); STUB: param_1 held in $s0 across calls, u8 store of 9 before func_80154274 - -extern void func_80156648(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_80147324(s32 arg0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80146CA0(void *a0); -extern s32 func_801725A4(u8 *a0); -extern u8 D_800D5128; -extern u8 D_8018D858; - -void func_801578C0(s32 param_1) -{ - ((void (*)(void))func_80156648)(); - *(u8 *)(param_1 + 0x1AA) = 9; - func_80154274((s32 *)param_1, (s32)&D_800D5128); - ((void (*)(s32 *, s32))func_80154A74)((s32 *)param_1, 0x15); - func_80147324(0xC20); - ((void (*)(s32 *, s32))func_80146DB8)((s32 *)param_1, (s32)&D_8018D858); - ((void (*)(s32, s32 *, s32, s32))func_80146994)(4, (s32 *)param_1, 7, 0); - ((void (*)(s32, s32 *, s32, s32))func_80146994)(5, (s32 *)param_1, 9, 0); - ((void (*)(s32 *))func_80146CA0)((s32 *)param_1); - ((void (*)(s32 *))func_801725A4)((s32 *)param_1); -} - - - - -// @class: other -// @stuck: none — MATCH (76 ins). Body is byte-identical with a plain transcription; the only -// delta was frame size: target frame is 0x30 (saves at 0x20/0x24/0x28), not 0x20. Target reserves -// a 16-byte UNREFERENCED stack local (no sp refs anywhere in the body) — gcc-2.7.2 does NOT -// dead-strip an aggregate local even at -O2, so a dead `int frame_pad[4]` reproduces vars=16 -// (.frame $sp,48: vars=16, regs=3, args=16) with zero body footprint. match_one => MATCH. - -extern void func_80147A10(int a0, int a1); -extern void func_80147A84(int); -extern void func_801473EC(s32 *a0); -extern void func_80148038(int, int); -extern void func_80147460(int); -extern void func_8014ED28(s32 _arg0); -extern void func_80146D90(int); -extern void func_80161450(void *a0); -extern void func_80157A8C(int); -extern void func_80146E90(s32 *a0, s32 a1); -extern void func_80146CA0(void *a0); -extern int func_80155FF8(int arg, int a1); -extern void func_80154A74(int, int); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern s32 func_801725A4(u8 *a0); - -extern unsigned char D_800D5178; -extern unsigned char D_8018D868; - -void func_8015795C(int param_1) -{ - int frame_pad[4]; /* dead 16-byte local: forces target's 0x30 frame (vars=16); never referenced */ - int iVar1; - unsigned int uVar2; - - *(unsigned int *)(param_1 + 0x44) = *(unsigned int *)(param_1 + 0x44) | 2; - ((int (*)(int, int))func_80147A10)(param_1, 0x400); - if (*(int *)(param_1 + 0x2c) >= 0) { - *(int *)(param_1 + 0x2c) = 0; - } - func_80147A84(param_1); - ((void (*)(int))func_801473EC)(param_1); - func_80148038(param_1, 0x1a000); - func_80147460(param_1); - iVar1 = ((int (*)(int))func_8014ED28)(param_1); - if (iVar1 != 0) { - func_80146D90(param_1); - } - uVar2 = ((int (*)(int))func_80161450)(param_1); - if ((uVar2 & 5) != 0) { - func_80157A8C(param_1); - ((void (*)(int, int))func_80146E90)(param_1, 8); - ((void (*)(int))func_80146CA0)(param_1); - } - if (uVar2 == 0) { - ((void (*)(int, int))func_80155FF8)(param_1, *(unsigned char *)(param_1 + 0x1aa)); - if (*(unsigned char *)(param_1 + 0x1c0) != 0) { - func_80154A74(param_1, 0x17); - ((void (*)(int, void *))func_80154274)(param_1, &D_800D5178); - ((void (*)(int, void *))func_80146DB8)(param_1, &D_8018D868); - ((void (*)(int, int))func_801477E8)(param_1, 0xfff40000); - *(short *)(param_1 + 2) = 4; - } - ((void (*)(int))func_801725A4)(param_1); - } - return; -} - - -DEFINE_func_80157A8C() /* dedup: shared engine-core @0x80157A8C (src/shared) */ - -DEFINE_func_80157AC8() /* dedup: shared engine-core @0x80157AC8 (src/shared) */ - -DEFINE_func_80157B74() /* dedup: shared engine-core @0x80157B74 (src/shared) */ - -DEFINE_func_80157BC8() /* dedup: shared engine-core @0x80157BC8 (src/shared) */ - -DEFINE_func_80157CCC() /* dedup: shared engine-core @0x80157CCC (src/shared) */ - - -/* func_80157D20 — 21-ins plumbing shim (×138 overlays). - * - * §71 sibling-first: the immediate neighbour func_801578C0 in this very TU - * (src/ov_SC01_077/ov_SC01_077_jr_80154C24.c L1592) already matches with - * `((void (*)(void))func_80156648)();` — the zero-argument call form. The - * target likewise sets up NO argument registers before `jal func_80156648` - * ($a0/$a1 still carry this function's own incoming args), so the call is - * argument-less here too. - * - * The `lhu %lo(D_8018D8A8)($at)` with `sll $s0,$s0,1` => a plain u16 array - * indexed by the second parameter, NOT hoisted into a pointer (§20: a pointer - * var would keep one address register live across the call; the target rebuilds - * the %hi/%lo pair inline after the call returns). - * - * §73 PARAMS axis / §42 lever 6 — the fleet canon for this symbol is - * `extern void func_80157D20(void);` (this TU's carried decl layer, L399, and - * every sibling overlay's). A 2-param definition hard-errors with - * `conflicting types` in the real TU (rtu_match, byte-verified), and the canon - * cannot be widened from a draft (that is an R22 fleet edit). So keep the - * `(void)` signature and capture $a0/$a1 with register pins copied into NORMAL - * pseudos — the copies are live across `jal func_80156648`, so they get the - * callee-saved homes the target uses ($s1 = a0, $s0 = a1). A direct - * `register` use would leave the values in call-clobbered $a0/$a1. - */ - -extern void func_80156648(s32 *a0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80157D74(u16 *a0); - -void func_80157D20(void) -{ - - extern u16 D_8018D8A8[]; - register void *a0v __asm__("$4"); - register s32 a1v __asm__("$5"); - void *param_1 = a0v; - s32 param_2 = a1v; - - ((void (*)(void))func_80156648)(); - ((void (*)(void *, s32))func_80147078)(param_1, D_8018D8A8[param_2]); - ((void (*)(void *))func_80157D74)(param_1); -} - - -DEFINE_func_80157D74() /* dedup: shared engine-core @0x80157D74 (src/shared) */ - - -DEFINE_func_80157DC4() /* dedup: shared engine-core @0x80157DC4 (src/shared) */ - - -DEFINE_func_80157E00() /* dedup: shared engine-core @0x80157E00 (src/shared) */ - -DEFINE_func_80157E38() /* dedup: shared engine-core @0x80157E38 (src/shared) */ - -DEFINE_func_80157EA4() /* dedup: shared engine-core @0x80157EA4 (src/shared) */ - -DEFINE_func_80157F64() /* dedup: shared engine-core @0x80157F64 (src/shared) */ - - -DEFINE_func_80157FC4() /* dedup: shared engine-core @0x80157FC4 (src/shared) */ - - -DEFINE_func_80158000() /* dedup: shared engine-core @0x80158000 (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH (expected); straight-line call sequence with two stores scheduled into jal delay slots - -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147324(s32 arg0); -extern void func_80146CA0(void *a0); - -extern s32 D_800D51E0; -extern s32 D_8018D88C; - -void func_80158038(void * param) -{ - *(u8 *)(param + 0x1aa) = 0xe; - func_80154274((s32 *)param, (s32)&D_800D51E0); - func_80154A74(param, 0x15); - func_80146DB8((s32 *)param, &D_8018D88C); - *(s32 *)(param + 0x234) = 0; - func_80146994(5, param, 0xc, 0); - func_80147324(0x455); - func_80146CA0((void *)param); -} - - -DEFINE_func_801580B4() /* dedup: shared engine-core @0x801580B4 (src/shared) */ - -DEFINE_func_801581AC() /* dedup: shared engine-core @0x801581AC (src/shared) */ - - -DEFINE_func_8015824C() /* dedup: shared engine-core @0x8015824C (src/shared) */ - - -DEFINE_func_80158288() /* dedup: shared engine-core @0x80158288 (src/shared) */ - -DEFINE_func_801582C0() /* dedup: shared engine-core @0x801582C0 (src/shared) */ - -DEFINE_func_80158344() /* dedup: shared engine-core @0x80158344 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (branch-polarity invert on both dispatch ifs + goto block-order to put the v1!=0/L508 paths as fallthrough; phantom 0x10 frame via address-taken frame_pad[4] + (void)& — zero code) - -extern void func_8014CBF8(void *a0); -extern void func_801474EC(s32 *a0); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80148038(s32 a0, s32 a1); -extern void func_80147460(s32 a0); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801473EC(s32 *a0); -extern s32 func_801615C4(void *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80146CA0(void *a0); -extern int func_80155FF8(int arg, int a1); - -extern u8 D_8018D89C; -extern u8 D_800D533C; - -void func_80158434(s32 param_1) -{ - u32 uVar1; - u32 uVar2; - s32 frame_pad[4]; - (void)&frame_pad; - - *(u32 *)(param_1 + 0x44) = *(u32 *)(param_1 + 0x44) | 2; - if ((*(u16 *)(param_1 + 0xB8) & 0x4000) != 0) { - *(s32 *)(param_1 + 0x234) = *(s32 *)(param_1 + 0x234) + 1; - ((s32 (*)(void))func_8014CBF8)(); - ((void (*)(s32))func_801474EC)(param_1); - ((void (*)(s32, s32))func_801477E8)(param_1, 0xFFFA0000); - ((void (*)(s32, s32))func_80146DB8)(param_1, (s32)&D_8018D89C); - } - if (*(s32 *)(param_1 + 0x234) != 0) { - func_80148038(param_1, 0x10000); - func_80147460(param_1); - func_80147AD4(param_1, 0, 0, 0); - ((void (*)(s32))func_801473EC)(param_1); - } - uVar1 = ((s32 (*)(s32, s32))func_801615C4)(param_1, 0); - if (uVar1 != 0) { - if (uVar1 == 1) goto LAB_80158508; - uVar2 = uVar1 & 0x2000; - } else { - uVar2 = func_80146E98(param_1); - } - if (uVar2 == 0) goto LAB_80158528; -LAB_80158508: - ((void (*)(s32, s32))func_80154274)(param_1, (s32)&D_800D533C); - ((void (*)(s32))func_80146CA0)(param_1); - return; -LAB_80158528: - ((void (*)(s32, s32))func_80155FF8)(param_1, *(u8 *)(param_1 + 0x1AA)); -} - - -DEFINE_func_80158548() /* dedup: shared engine-core @0x80158548 (src/shared) */ - -DEFINE_func_801585A4() /* dedup: shared engine-core @0x801585A4 (src/shared) */ - -DEFINE_func_801585AC() /* dedup: shared engine-core @0x801585AC (src/shared) */ - -DEFINE_func_801585EC() /* dedup: shared engine-core @0x801585EC (src/shared) */ - - -// @class: loose-typing -// @stuck: none — MATCH (87 ins, match_one) + symcheck SYMS-OK (17 symbols agree); same file also -// MATCHes verbatim against ov_SC03_099 and ov_SC06_008 (sibling asm bodies are identical) - -/* func_80158638 @ 0x80158638 — ov_SC01_077 / ov_SC01_077_jr_80154C24 (87 ins). - * - * TWO decl-ROBUSTNESS choices in the BODY, deliberate — these are the only two things the gate's - * decl ladder (cast_call_sites/reconcile_tu/sig_unify) CANNOT repair, because they change codegen, - * not plumbing. Both are load-bearing for templating this exemplar onto its 138 h_seq siblings, - * where each overlay TU carries its own spelling of these decls: - * - * 1) `*(u16 *)&D_80078EB4` — the target loads it with `lhu`. The ov_SC01_077 TU already carries - * `extern s16 D_80078EB4;` (line 504), and a plain `D_80078EB4 != 0` read through an s16 decl - * compiles to `lh` => WIDTH/lh!=lhu, closeness 1. A `(u16)` cast does NOT fix it (gcc-2.7.2 - * folds the zero_extend away for a !=0 test and keeps `lh`); the pointer pun does, and it is - * correct under EITHER declared signedness. - * 2) `(s16)func_80159464(...)` with the fleet-canonical `extern s32 func_80159464();` decl. - * The target truncates the return to 16 bits at BOTH call sites (`sll 16` + `blez`, then - * `sll 16`/`sra 16`/`slti 6`). Declaring the callee `s16` also matches, but the fleet's carried - * decl layer spells it `extern s32 func_80159464(void);` in 1600 places — if reconcile_tu wins - * that conflict the truncation vanishes and the match dies. The explicit cast makes the body - * independent of which decl survives. - * - * Symbols verified present in build/ov_SC01_077/undefined_syms_auto.txt: - * D_80078EB4=0x80078EB4 D_800B9A17=0x800B9A17 D_800B9A64=0x800B9A64 D_80110EC0=0x80110EC0 - */ - -DEFINE_func_80158638() /* dedup: shared engine-core @0x80158638 (src/shared) */ - - -DEFINE_func_80158794() /* dedup: shared engine-core @0x80158794 (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH expected (3 scalar global stores + byte store + 6 calls, source order) -extern s32 D_801E96D8; -extern s32 D_801E96E4; -extern s32 D_801E96E8; - -extern void func_80147084(s32 *a0); -extern void func_80147098(s32 *a0); -extern void func_801470AC(s32 *a0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80158880(s32 *param); - -void func_8015879C(s32 param_1) { - D_801E96D8 = 0; - D_801E96E4 = 1; - D_801E96E8 = 0; - *(u8 *)(param_1 + 0xa8) = 0; - ((void (*)(void))func_80147084)(); - ((void (*)(s32))func_80147098)(param_1); - ((void (*)(s32))func_801470AC)(param_1); - ((void (*)(s32, s32))func_80147078)(param_1, 0x1a); - ((void (*)(s32, s32))func_80146C98)(param_1, 1); - ((void (*)(s32))func_80158880)(param_1); -} - - - - -// @class: plumbing -// @stuck: none — MATCH (STUB: 3 global stores + byte store + 5 calls in source order) -extern s32 D_801E96D8; -extern s32 D_801E96E4; -extern s32 D_801E96E8; - -extern void func_80147084(s32 *a0); -extern void func_80147098(s32 *a0); -extern void func_801470AC(s32 *a0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80158880(s32 *param); - -void func_80158814(void *arg0) { - D_801E96D8 = 0; - D_801E96E4 = 1; - D_801E96E8 = 0; - *(s8 *)((s32)arg0 + 0xA8) = 0; - ((void (*)(void))func_80147084)(); - ((void (*)(void *))func_80147098)(arg0); - ((void (*)(void *))func_801470AC)(arg0); - ((void (*)(void *, s32))func_80147078)(arg0, 0x1A); - ((void (*)(void *))func_80158880)(arg0); -} - - - -extern void func_80149020(s32 *a0); -extern void (*D_8018D908[])(s32 *); - -void func_80158880(s32 *param) { - func_80149020(param); - D_8018D908[*(u8 *)((s32)param + 0x4F)](param); -} diff --git a/src/ov_SC03_015/ov_SC03_015_jr_801588CC.c b/src/ov_SC03_015/ov_SC03_015_jr_801588CC.c deleted file mode 100644 index 3de772102..000000000 --- a/src/ov_SC03_015/ov_SC03_015_jr_801588CC.c +++ /dev/null @@ -1,337 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -DEFINE_func_801588CC() /* dedup: shared engine-core @0x801588CC (src/shared) */ - - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801E96D8; - -void func_80158BB0(void *arg0) { - if (D_801E96D8 == 0) { - D_801E96D8 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801E96E4; -extern s32 D_8018D8DC[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801E96E4; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018D8DC[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801E96E8; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801E96E8 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801E96D8; -extern s32 D_801E96E0; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801E96D8 == 4) { - D_801E96D8 = 5; - } - if (D_801E96E0 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_8018D944[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_8018D944; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -DEFINE_func_801594E8() /* dedup: shared engine-core @0x801594E8 (src/shared) */ - - - -DEFINE_func_80159698() /* dedup: shared engine-core @0x80159698 (src/shared) */ - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8 byte-neutral. See cookbook §8c. */ -DEFINE_func_80159C84() /* dedup: shared engine-core @0x80159C84 (src/shared) */ - - -DEFINE_func_8015A1C8() /* dedup: shared engine-core @0x8015A1C8 (src/shared) */ - -DEFINE_func_8015A1FC() /* dedup: shared engine-core @0x8015A1FC (src/shared) */ - -DEFINE_func_8015A230() /* dedup: shared engine-core @0x8015A230 (src/shared) */ - - -DEFINE_func_8015A264() /* dedup: shared engine-core @0x8015A264 (src/shared) */ - - -DEFINE_func_8015A2A0() /* dedup: shared engine-core @0x8015A2A0 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (60 ins). switch() gives signed slti pivot; per-case duplicated call gives per-case a0 setup + nop jal delay - -extern int D_8018DB7C; - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_8014C010(s32 a0, s32 a1); -extern void func_801553A8(s32 *a0); -extern s32 func_80172608(u8 *a0); -extern void func_80146CA0(void *a0); - -void func_8015A2D8(s32 param_1) -{ - unsigned char bVar1; - - ((void (*)(int, int *))func_80146DB8)(param_1, &D_8018DB7C); - if ((*(unsigned int *)(param_1 + 0x44) & 0x200) != 0) { - func_80154150(param_1, 10); - func_80154A74(param_1, 0x1c); - *(int *)(param_1 + 0x2c) = 0xfffc0000; - goto LAB_8015a38c; - } - bVar1 = *(unsigned char *)(param_1 + 0xa9); - switch (bVar1) { - case 0x41: - func_80154150(param_1, 7); - break; - case 0x53: - case 0x73: - func_80154150(param_1, 6); - break; - default: - *(int *)(param_1 + 0x23c) = 0; - goto LAB_8015a390; - } - func_80154A74(param_1, 0x21); -LAB_8015a38c: - *(int *)(param_1 + 0x23c) = 0; -LAB_8015a390: - func_8014C010(param_1, 2); - ((void (*)(int))func_801553A8)(param_1); - ((void (*)(int))func_80172608)(param_1); - ((void (*)(int))func_80146CA0)(param_1); - return; -} - diff --git a/src/ov_SC03_015/ov_SC03_015_jr_8015A3C8.c b/src/ov_SC03_015/ov_SC03_015_jr_8015A3C8.c deleted file mode 100644 index d8a8aca52..000000000 --- a/src/ov_SC03_015/ov_SC03_015_jr_8015A3C8.c +++ /dev/null @@ -1,46 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -DEFINE_func_8015A3C8() /* dedup: shared engine-core @0x8015A3C8 (src/shared) */ - - -DEFINE_func_8015AB7C() /* dedup: shared engine-core @0x8015AB7C (src/shared) */ - -DEFINE_func_8015ABD4() /* dedup: shared engine-core @0x8015ABD4 (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH (param held in $s0 across 3 calls; lhu 0x16E; &D_8018DB9C arg) -extern void func_80154150(s32 a0, s32 a1); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern s32 func_80161CD0(s32 a0, s32 a1); -extern M2C_UNK D_8018DB9C; - -void func_8015AC48(s32 arg0) -{ - func_80154150(arg0, 9); - func_80146DB8((s32 *)arg0, &D_8018DB9C); - func_80161CD0(arg0, M2C_FIELD(arg0, u16 *, 0x16E)); -} - - -DEFINE_func_8015AC90() /* dedup: shared engine-core @0x8015AC90 (src/shared) */ - -DEFINE_func_8015ACC4() /* dedup: shared engine-core @0x8015ACC4 (src/shared) */ - -DEFINE_func_8015AD08() /* dedup: shared engine-core @0x8015AD08 (src/shared) */ - - -DEFINE_func_8015AD3C() /* dedup: shared engine-core @0x8015AD3C (src/shared) */ - - -DEFINE_func_8015AD78() /* dedup: shared engine-core @0x8015AD78 (src/shared) */ - -DEFINE_func_8015ADB0() /* dedup: shared engine-core @0x8015ADB0 (src/shared) */ - diff --git a/src/ov_SC03_015/ov_SC03_015_jr_8015AE2C.c b/src/ov_SC03_015/ov_SC03_015_jr_8015AE2C.c deleted file mode 100644 index e1bc81ad1..000000000 --- a/src/ov_SC03_015/ov_SC03_015_jr_8015AE2C.c +++ /dev/null @@ -1,124 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -DEFINE_func_8015AE2C() /* dedup: shared engine-core @0x8015AE2C (src/shared) */ - -DEFINE_func_8015B6F4() /* dedup: shared engine-core @0x8015B6F4 (src/shared) */ - -DEFINE_func_8015B7B4() /* dedup: shared engine-core @0x8015B7B4 (src/shared) */ - -DEFINE_func_8015B858() /* dedup: shared engine-core @0x8015B858 (src/shared) */ - -DEFINE_func_8015B8F8() /* dedup: shared engine-core @0x8015B8F8 (src/shared) */ - -DEFINE_func_8015B950() /* dedup: shared engine-core @0x8015B950 (src/shared) */ - -DEFINE_func_8015BD8C() /* dedup: shared engine-core @0x8015BD8C (src/shared) */ - -DEFINE_func_8015BDD0() /* dedup: shared engine-core @0x8015BDD0 (src/shared) */ - -DEFINE_func_8015BE04() /* dedup: shared engine-core @0x8015BE04 (src/shared) */ - - - -DEFINE_func_8015BE38() /* dedup: shared engine-core @0x8015BE38 (src/shared) */ - - -DEFINE_func_8015BE74() /* dedup: shared engine-core @0x8015BE74 (src/shared) */ - -DEFINE_func_8015BE94() /* dedup: shared engine-core @0x8015BE94 (src/shared) */ - -DEFINE_func_8015BEC4() /* dedup: shared engine-core @0x8015BEC4 (src/shared) */ - -DEFINE_func_8015BEE4() /* dedup: shared engine-core @0x8015BEE4 (src/shared) */ - -DEFINE_func_8015BF04() /* dedup: shared engine-core @0x8015BF04 (src/shared) */ - -DEFINE_func_8015BF48() /* dedup: shared engine-core @0x8015BF48 (src/shared) */ - -DEFINE_func_8015BF7C() /* dedup: shared engine-core @0x8015BF7C (src/shared) */ - -DEFINE_func_8015BFB0() /* dedup: shared engine-core @0x8015BFB0 (src/shared) */ - - -DEFINE_func_8015BFF4() /* dedup: shared engine-core @0x8015BFF4 (src/shared) */ - - - -/* §71 sibling-first: this is DEFINE_func_8015C0C4 (src/shared/engine_core.h L8919) - * with the two globals replaced by the second parameter and <<6 -> <<7. - * The explicit temporary `t` keeps the first lh ahead of the 0x238 store. - * - * Signature is the fleet canon `(s32 *a0, s32 a1)` declared by - * DEFINE_func_8015BFB0 (engine_core.h L16218) — a private `(s32, s16 *)` - * definition also match_one-MATCHes but breaks the real TU with - * `conflicting types`. The s16 reads are cast at the use site. */ - -DEFINE_func_8015C030() /* dedup: shared engine-core @0x8015C030 (src/shared) */ - - -DEFINE_func_8015C08C() /* dedup: shared engine-core @0x8015C08C (src/shared) */ - -DEFINE_func_8015C0C4() /* dedup: shared engine-core @0x8015C0C4 (src/shared) */ - -#include "common.h" - - - -s32 func_8015C128(s32 param_1) { - extern void func_8015C6E0(int); - extern void (*D_8018DC08[])(int); - - int sp10[3]; - int sp20[3]; - int temp_s0; - int temp_v0; - - ((void(*)())func_80149FB0)(); - if (((int(*)(int))func_80148AFC)(((int)param_1)) & 0xFF) { - sp10[0] = 0; - sp10[1] = 0; - sp10[2] = -0x4000; - ((void(*)(int, int *, int *))func_8001382C)(*(short *)(*(int *)(((int)param_1) + 0x20) + 0x12), sp10, sp20); - *(int *)(((int)param_1) + 0x234) += sp20[0]; - *(int *)(((int)param_1) + 0x238) += sp20[1]; - *(int *)(((int)param_1) + 0x23C) += sp20[2]; - } - ((void(*)(int, int *, int *))func_8001382C)((short)(-*(unsigned short *)(*(int *)(((int)param_1) + 0x20) + 0x12)), - (int *)(((int)param_1) + 0x234), sp20); - ((void(*)(int, int *))func_80146DB8)(((int)param_1), sp20); - func_80147A84(((int)param_1)); - ((void(*)(int))func_801473EC)(((int)param_1)); - if (!(D_800B99DA & 3)) { - ((void(*)(int, int))func_8014C010)(((int)param_1), 1); - ((void(*)(int))func_80147324)(0x65F); - } - if (((int(*)(int))func_8014D738)(((int)param_1)) != 0) { - D_8018DC08[*(u16 *)((int)param_1)](((int)param_1)); - func_8015C6E0(((int)param_1)); - return; - } - temp_s0 = ((int(*)(int))func_8014CC28)(((int)param_1)); - temp_v0 = ((int(*)(int))func_8014F3E8)(((int)param_1)); - if (temp_v0 != 0) { - if ((temp_v0 & 0xFF00) != 0x4000) { - ((void(*)(int, int))func_80146E90)(((int)param_1), 6); - ((void(*)(int))func_80146CA0)(((int)param_1)); - return; - } - if ((temp_v0 & 0x4000) && ((int(*)(int))func_80146E98)(((int)param_1)) != 0) { - ((void(*)(int, int))func_80147078)(((int)param_1), 4); - ((void(*)(int))func_8015C0C4)(((int)param_1)); - } - } else if (temp_s0 == 0) { - D_8018DC08[*(u16 *)((int)param_1)](((int)param_1)); - ((void(*)(int, int))func_80147078)(((int)param_1), 3); - ((void(*)(int))func_8015BE94)(((int)param_1)); - } -} diff --git a/src/ov_SC03_015/ov_SC03_015_jr_8015C32C.c b/src/ov_SC03_015/ov_SC03_015_jr_8015C32C.c deleted file mode 100644 index 5ce84a1da..000000000 --- a/src/ov_SC03_015/ov_SC03_015_jr_8015C32C.c +++ /dev/null @@ -1,3681 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -DEFINE_func_8015C32C() /* dedup: shared engine-core @0x8015C32C (src/shared) */ - - -DEFINE_func_8015C6A4() /* dedup: shared engine-core @0x8015C6A4 (src/shared) */ - -DEFINE_func_8015C6AC() /* dedup: shared engine-core @0x8015C6AC (src/shared) */ - -DEFINE_func_8015C6E0() /* dedup: shared engine-core @0x8015C6E0 (src/shared) */ - - -DEFINE_func_8015C714() /* dedup: shared engine-core @0x8015C714 (src/shared) */ - - -DEFINE_func_8015C750() /* dedup: shared engine-core @0x8015C750 (src/shared) */ - -DEFINE_func_8015C788() /* dedup: shared engine-core @0x8015C788 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (match_one 88/88); fn-ptr-array dispatch, top-level if/else needed branch-polarity invert (small block falls through, big block at L854) - -DEFINE_func_8015C7E4() /* dedup: shared engine-core @0x8015C7E4 (src/shared) */ - - - - -// @class: struct -// @stuck: none — dispatch + control flow on a single callee-saved param; expect MATCH - -extern s32 func_80149FB0(s32 a0); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801473EC(s32 *a0); -extern void func_8014D738(void); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern void func_80161240(void *a0); -extern s32 func_80146E98(s32 a0); -extern void func_80146CA0(void *a0); -extern void func_80161C24(s32, s32); - - -void func_8015C944(int param_1) { - - extern void (*D_8018DC08[])(); - func_80149FB0(param_1); - func_80147AD4(param_1, 0, 0, 0); - ((void (*)(int))func_801473EC)(param_1); - ((void (*)(int))func_8014D738)(param_1); - if (*(int *)(param_1 + 0x170) == 0) { - (*D_8018DC08[*(unsigned short *)param_1])(param_1); - ((void (*)(int, int))func_80147078)(param_1, 0); - ((void (*)(int))func_80159B70)(param_1); - } else { - if (((int (*)(int))func_80161240)(param_1) == 0) { - if (func_80146E98(param_1) != 0) { - ((void (*)(int))func_80146CA0)(param_1); - } - if ((*(unsigned short *)(param_1 + 0xb8) & 0x2000) != 0) { - func_80161C24(param_1, *(unsigned short *)(param_1 + 0x16e)); - } - } - } -} - - - -// @class: schedule -// @stuck: none — MATCH (goto forces the func_80161240 block to the function tail; bnez-to-end layout vs early-return fall-through) - - -DEFINE_func_8015CA28() /* dedup: shared engine-core @0x8015CA28 (src/shared) */ - - -DEFINE_func_8015CB94() /* dedup: shared engine-core @0x8015CB94 (src/shared) */ - -DEFINE_func_8015CBCC() /* dedup: shared engine-core @0x8015CBCC (src/shared) */ - -DEFINE_func_8015CBD4() /* dedup: shared engine-core @0x8015CBD4 (src/shared) */ - -DEFINE_func_8015CBDC() /* dedup: shared engine-core @0x8015CBDC (src/shared) */ - -DEFINE_func_8015CBE4() /* dedup: shared engine-core @0x8015CBE4 (src/shared) */ - -DEFINE_func_8015CBEC() /* dedup: shared engine-core @0x8015CBEC (src/shared) */ - -DEFINE_func_8015CBF4() /* dedup: shared engine-core @0x8015CBF4 (src/shared) */ - -DEFINE_func_8015CBFC() /* dedup: shared engine-core @0x8015CBFC (src/shared) */ - -DEFINE_func_8015CC04() /* dedup: shared engine-core @0x8015CC04 (src/shared) */ - -DEFINE_func_8015CC0C() /* dedup: shared engine-core @0x8015CC0C (src/shared) */ - -DEFINE_func_8015CC40() /* dedup: shared engine-core @0x8015CC40 (src/shared) */ - - - -DEFINE_func_8015CC74() /* dedup: shared engine-core @0x8015CC74 (src/shared) */ - - -DEFINE_func_8015CCB0() /* dedup: shared engine-core @0x8015CCB0 (src/shared) */ - -DEFINE_func_8015CCD0() /* dedup: shared engine-core @0x8015CCD0 (src/shared) */ - -#define NULL 0 - - - - - -s32 func_8015CD20(s32 arg0) { - extern void (*D_8018DC08[])(struct Ent_8015CD20 *); - extern u8 D_8018DBBC; - extern u8 D_8018DDAC; - extern u8 D_8018DDBC; - - s32 temp_v0; - s32 var_v0; - struct Sub_8015CD20 *sp; - - ((void(*)())func_80149FB0)(); - if (((s32(*)(struct Ent_8015CD20 *))func_801496D4)(((struct Ent_8015CD20 *)arg0)) != 0) { - D_8018DC08[((struct Ent_8015CD20 *)arg0)->unk0](((struct Ent_8015CD20 *)arg0)); - ((struct Ent_8015CD20 *)arg0)->unk1BC = 0xA; - ((s32(*)(struct Ent_8015CD20 *))func_80149724)(((struct Ent_8015CD20 *)arg0)); - if (((s32(*)(struct Ent_8015CD20 *))func_80148AFC)(((struct Ent_8015CD20 *)arg0)) & 0xFF) { - ((void(*)(struct Ent_8015CD20 *, u8 *))func_80146DB8)(((struct Ent_8015CD20 *)arg0), &D_8018DBBC); - } else { - ((void(*)(struct Ent_8015CD20 *))func_80146D90)(((struct Ent_8015CD20 *)arg0)); - } - return; - } - temp_v0 = ((struct Ent_8015CD20 *)arg0)->unk234; - if (temp_v0 == 0) { - if (((s32(*)(struct Ent_8015CD20 *))func_80148980)(((struct Ent_8015CD20 *)arg0)) != 0) { - ((void(*)(struct Ent_8015CD20 *, u8 *))func_80146DB8)(((struct Ent_8015CD20 *)arg0), &D_8018DDAC); - ((void(*)(struct Ent_8015CD20 *))func_80147A84)(((struct Ent_8015CD20 *)arg0)); - ((void(*)(struct Ent_8015CD20 *))func_801473EC)(((struct Ent_8015CD20 *)arg0)); - ((void(*)(struct Ent_8015CD20 *, s32))func_80154150)(((struct Ent_8015CD20 *)arg0), 0x15); - sp = ((struct Ent_8015CD20 *)arg0)->unk20; - var_v0 = sp->unk12 - 0xAA; - goto block_13; - } - if (((s32(*)(struct Ent_8015CD20 *))func_8014891C)(((struct Ent_8015CD20 *)arg0)) != 0) { - ((void(*)(struct Ent_8015CD20 *, u8 *))func_80146DB8)(((struct Ent_8015CD20 *)arg0), &D_8018DDBC); - ((void(*)(struct Ent_8015CD20 *))func_80147A84)(((struct Ent_8015CD20 *)arg0)); - ((void(*)(struct Ent_8015CD20 *))func_801473EC)(((struct Ent_8015CD20 *)arg0)); - ((void(*)(struct Ent_8015CD20 *, s32))func_80154150)(((struct Ent_8015CD20 *)arg0), 0x14); - ((struct Ent_8015CD20 *)arg0)->unkB8 = 1; - } - if (((s32(*)(struct Ent_8015CD20 *))func_801489E8)(((struct Ent_8015CD20 *)arg0)) != 0) { - sp = ((struct Ent_8015CD20 *)arg0)->unk20; - var_v0 = sp->unk12 + 0x71; - goto block_13; - } - if (((s32(*)(struct Ent_8015CD20 *))func_80148A48)(((struct Ent_8015CD20 *)arg0)) != 0) { - sp = ((struct Ent_8015CD20 *)arg0)->unk20; - var_v0 = sp->unk12 - 0x71; -block_13: - sp->unk12 = var_v0 & 0xFFF; - } - } else { - ((struct Ent_8015CD20 *)arg0)->unk234 = temp_v0 - 1; - } - ((void(*)(struct Ent_8015CD20 *))func_8014FA04)(((struct Ent_8015CD20 *)arg0)); - if (((s32(*)(struct Ent_8015CD20 *))func_8014E434)(((struct Ent_8015CD20 *)arg0)) == 0) { - D_8018DC08[((struct Ent_8015CD20 *)arg0)->unk0](((struct Ent_8015CD20 *)arg0)); - ((void(*)(struct Ent_8015CD20 *, s32))func_80147078)(((struct Ent_8015CD20 *)arg0), 0); - ((void(*)(struct Ent_8015CD20 *))func_80159B70)(((struct Ent_8015CD20 *)arg0)); - } else { - ((void(*)(struct Ent_8015CD20 *))func_801725E0)(((struct Ent_8015CD20 *)arg0)); - } -} - - - -DEFINE_func_8015CF24() /* dedup: shared engine-core @0x8015CF24 (src/shared) */ - -DEFINE_func_8015CF58() /* dedup: shared engine-core @0x8015CF58 (src/shared) */ - -DEFINE_func_8015CF8C() /* dedup: shared engine-core @0x8015CF8C (src/shared) */ - - - -DEFINE_func_8015CFC0() /* dedup: shared engine-core @0x8015CFC0 (src/shared) */ - - -DEFINE_func_8015CFFC() /* dedup: shared engine-core @0x8015CFFC (src/shared) */ - -// @class: regalloc-order -// @stuck: none — MATCH (uVar1 pinned $s3, uVar5 pinned $s1; param_1->s2, iVar4->s0 fall out) - - -void func_8015D01C(int param_1) { - extern s32 func_801725F4(u8 *a0); - extern int D_800D550C; - extern int D_8018DDCC; - - int iVar4; - register unsigned short uVar1 __asm__("$19"); - register unsigned short uVar5 __asm__("$17"); - short sVar2; - short sVar3; - - ((void (*)(int, void *))func_80154274)(param_1, &D_800D550C); - *(short *)(*(int *)(param_1 + 0x20) + 0x10) = 0; - iVar4 = *(short *)(*(int *)(param_1 + 0x20) + 0x12); - uVar1 = *(unsigned short *)(*(int *)(*(int *)(param_1 + 0x180) + 0x20) + 0x12); - uVar5 = (uVar1 + 0x800) & 0xfff; - sVar2 = func_80012A60(iVar4, (short)uVar1); - sVar3 = func_80012A60(iVar4, uVar5); - if (sVar2 < sVar3) { - *(short *)(*(int *)(param_1 + 0x20) + 0x12) = uVar1; - } else { - *(unsigned short *)(*(int *)(param_1 + 0x20) + 0x12) = uVar5; - } - *(int *)(param_1 + 0x38) = (int)&D_8018DDCC | 0x40000000; - ((void (*)(int))func_801725F4)(param_1); - ((void (*)(int))func_80146CA0)(param_1); -} - - - - - -// @class: struct -// @stuck: none — MATCH (pending gate) - -extern s32 func_80149FB0(s32 a0); -extern void func_8014FA04(s32 a0); -extern void func_8014E6A0(void); -extern void (*D_8018DC08[])(void *); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern s32 func_801725F4(u8 *a0); -extern void func_80146CA0(void *a0); - -void func_8015D104(void *arg0) { - ((void (*)(void))func_80149FB0)(); - ((void (*)(void *))func_8014FA04)(arg0); - if (((s32 (*)(void *))func_8014E6A0)(arg0) == 0) { - D_8018DC08[*(u16 *)arg0](arg0); - ((void (*)(void *, s16))func_80147078)(arg0, 0); - func_80159B70(arg0); - } else { - ((void (*)(void *))func_801725F4)(arg0); - *(s32 *)((u8 *)arg0 + 0x234) = 0xFF1D0000; - *(u16 *)(*(s32 *)((u8 *)arg0 + 0x20) + 0x10) = 0x600; - *(u16 *)((u8 *)arg0 + 0x244) = *(u16 *)(*(s32 *)((u8 *)arg0 + 0x20) + 0x10); - func_80146CA0(arg0); - } -} - - - -DEFINE_func_8015D1B8() /* dedup: shared engine-core @0x8015D1B8 (src/shared) */ - - - -// @class: regalloc-order -// @stuck: pinning a0->$s1 and buffer-ptr->$s0; body copy already matches -extern void func_80013F3C(s32 a0); -extern void func_80012558(s32 a0, s32 a1); -extern void func_800126C4(s32 a0, s32 a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern void *memcpy(void *dst, const void *src, u32 n); - -extern s32 D_8018DE38; - -void func_8015D380(s32 a0) { - s16 out[4]; - s32 buf[8]; - register s32 s1 __asm__("$17") = a0; - register s32 *s0 __asm__("$16") = buf; - ((void (*)(void *))func_80013F3C)((void *)s0); - ((void (*)(void *, s32))func_80012558)((void *)s0, *(s16 *)(*(s32 *)(s1 + 0x20) + 0x12)); - ((void (*)(void *, s32))func_800126C4)((void *)s0, *(s16 *)(*(s32 *)(s1 + 0x20) + 0x10)); - ApplyMatrixSV((void *)s0, (void *)&D_8018DE38, (void *)out); - memcpy((void *)(s1 + 0x138), (void *)out, 8); -} - - - - -// @class: plumbing -// @stuck: none — MATCH - -extern unsigned char D_8018CF1C[]; - -extern void func_801553C0(s32 a0); -extern void func_80154A74(s32 a0, s32 a1); - -void func_8015D414(int param_1) -{ - *(unsigned char *)(param_1 + 0x1bd) = 8; - *(unsigned char **)(param_1 + 0x38) = D_8018CF1C; - *(short *)(param_1 + 0x138) = 0; - *(short *)(param_1 + 0x13a) = 0; - *(short *)(param_1 + 0x13c) = 0; - *(short *)(param_1 + 0x13e) = 0; - *(short *)(param_1 + 0xA) = *(short *)(param_1 + 0xA) + 0x48; - *(short *)(*(int *)(param_1 + 0x20) + 0x10) = 0; - ((void (*)(void))func_801553C0)(); - func_80154A74(param_1, 0x11); -} - - -DEFINE_func_8015D480() /* dedup: shared engine-core @0x8015D480 (src/shared) */ - -DEFINE_func_8015D4B4() /* dedup: shared engine-core @0x8015D4B4 (src/shared) */ - - - -DEFINE_func_8015D4E8() /* dedup: shared engine-core @0x8015D4E8 (src/shared) */ - - -DEFINE_func_8015D524() /* dedup: shared engine-core @0x8015D524 (src/shared) */ - -DEFINE_func_8015D544() /* dedup: shared engine-core @0x8015D544 (src/shared) */ - -DEFINE_func_8015D57C() /* dedup: shared engine-core @0x8015D57C (src/shared) */ - - -// @class: loose-typing -// @stuck: none — MATCH (field 0xb8 compared as u16 == 0x8000, not s16 == -0x8000) - -DEFINE_func_8015D5E8() /* dedup: shared engine-core @0x8015D5E8 (src/shared) */ - - - -DEFINE_func_8015D738() /* dedup: shared engine-core @0x8015D738 (src/shared) */ - - -DEFINE_func_8015DA5C() /* dedup: shared engine-core @0x8015DA5C (src/shared) */ - -DEFINE_func_8015DA90() /* dedup: shared engine-core @0x8015DA90 (src/shared) */ - -DEFINE_func_8015DAC4() /* dedup: shared engine-core @0x8015DAC4 (src/shared) */ - - - -DEFINE_func_8015DAF8() /* dedup: shared engine-core @0x8015DAF8 (src/shared) */ - - -DEFINE_func_8015DB34() /* dedup: shared engine-core @0x8015DB34 (src/shared) */ - -DEFINE_func_8015DB6C() /* dedup: shared engine-core @0x8015DB6C (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (mirrors byte-matched func_8015F89C/func_8015F9A4 in same overlay) - -extern void (*D_8018DC08[])(void *); -extern int func_8015DD74(int); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern s32 func_80161208(); -extern void func_8015DCB8(s32 a0); - -void func_8015DBD4(void *arg0) { - if (*(u16 *)((u8 *)arg0 + 0xB8) & 0x4000) { - ((void (*)(void))func_8015DD74)(); - } - if (*(u16 *)((u8 *)arg0 + 0xB8) == 0x8000) { - D_8018DC08[*(u16 *)arg0](arg0); - ((void (*)(void *, s16))func_80147078)(arg0, 0); - func_80159B70(arg0); - } else { - if (*(s32 *)((u8 *)arg0 + 0x178) != 0) { - ((void (*)(void *))func_8015DCB8)(arg0); - } - ((s32 (*)(void *))func_80161208)(arg0); - } -} - - -DEFINE_func_8015DC84() /* dedup: shared engine-core @0x8015DC84 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (proxy gate) - -extern s8 D_8018DE88[]; -extern void func_80149374(s32 a0, s32 a1); - -void func_8015DCB8(s32 param_1) { - s32 iVar1; - s32 iVar2; - - iVar2 = *(s32 *)(param_1 + 0x178); - - iVar1 = *(s32 *)(param_1 + 0x234); - *(s32 *)(param_1 + 0x234) = iVar1 + 1; - *(s16 *)(iVar2 + 6) = (s16)D_8018DE88[iVar1] + *(s16 *)(*(s32 *)(iVar2 + 0x78) + 0xc); - - iVar1 = *(s32 *)(param_1 + 0x234); - *(s32 *)(param_1 + 0x234) = iVar1 + 1; - *(s16 *)(iVar2 + 10) = (s16)D_8018DE88[iVar1] + *(s16 *)(*(s32 *)(iVar2 + 0x78) + 0xe); - - iVar1 = *(s32 *)(param_1 + 0x234); - *(s32 *)(param_1 + 0x234) = iVar1 + 1; - *(s16 *)(iVar2 + 0xe) = (s16)D_8018DE88[iVar1] + *(s16 *)(*(s32 *)(iVar2 + 0x78) + 0x10); - - func_80149374(param_1, iVar2 + 4); -} - - -DEFINE_func_8015DD74() /* dedup: shared engine-core @0x8015DD74 (src/shared) */ - -DEFINE_func_8015DDF0() /* dedup: shared engine-core @0x8015DDF0 (src/shared) */ - -DEFINE_func_8015DE24() /* dedup: shared engine-core @0x8015DE24 (src/shared) */ - - - -DEFINE_func_8015DE58() /* dedup: shared engine-core @0x8015DE58 (src/shared) */ - - -DEFINE_func_8015DE94() /* dedup: shared engine-core @0x8015DE94 (src/shared) */ - -DEFINE_func_8015DECC() /* dedup: shared engine-core @0x8015DECC (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (mirrors byte-matched func_8015F89C/func_8015F9A4 in same overlay) - -extern void (*D_8018DC08[])(void *); -extern int func_8015E0D4(int); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern s32 func_80161208(); -extern void func_8015E018(s32 a0); - -void func_8015DF34(void *arg0) { - if (*(u16 *)((u8 *)arg0 + 0xB8) & 0x4000) { - ((void (*)(void))func_8015E0D4)(); - } - if (*(u16 *)((u8 *)arg0 + 0xB8) == 0x8000) { - D_8018DC08[*(u16 *)arg0](arg0); - ((void (*)(void *, s16))func_80147078)(arg0, 0); - func_80159B70(arg0); - } else { - if (*(s32 *)((u8 *)arg0 + 0x178) != 0) { - ((void (*)(void *))func_8015E018)(arg0); - } - ((s32 (*)(void *))func_80161208)(arg0); - } -} - - -DEFINE_func_8015DFE4() /* dedup: shared engine-core @0x8015DFE4 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (proxy gate) - -extern s8 D_8018DE88[]; -extern void func_80149374(s32 a0, s32 a1); - -void func_8015E018(s32 param_1) { - s32 iVar1; - s32 iVar2; - - iVar2 = *(s32 *)(param_1 + 0x178); - - iVar1 = *(s32 *)(param_1 + 0x234); - *(s32 *)(param_1 + 0x234) = iVar1 + 1; - *(s16 *)(iVar2 + 6) = (s16)D_8018DE88[iVar1] + *(s16 *)(*(s32 *)(iVar2 + 0x78) + 0xc); - - iVar1 = *(s32 *)(param_1 + 0x234); - *(s32 *)(param_1 + 0x234) = iVar1 + 1; - *(s16 *)(iVar2 + 10) = (s16)D_8018DE88[iVar1] + *(s16 *)(*(s32 *)(iVar2 + 0x78) + 0xe); - - iVar1 = *(s32 *)(param_1 + 0x234); - *(s32 *)(param_1 + 0x234) = iVar1 + 1; - *(s16 *)(iVar2 + 0xe) = (s16)D_8018DE88[iVar1] + *(s16 *)(*(s32 *)(iVar2 + 0x78) + 0x10); - - func_80149374(param_1, iVar2 + 4); -} - - -DEFINE_func_8015E0D4() /* dedup: shared engine-core @0x8015E0D4 (src/shared) */ - -DEFINE_func_8015E150() /* dedup: shared engine-core @0x8015E150 (src/shared) */ - -DEFINE_func_8015E184() /* dedup: shared engine-core @0x8015E184 (src/shared) */ - - - -DEFINE_func_8015E1B8() /* dedup: shared engine-core @0x8015E1B8 (src/shared) */ - - -DEFINE_func_8015E1F4() /* dedup: shared engine-core @0x8015E1F4 (src/shared) */ - -DEFINE_func_8015E22C() /* dedup: shared engine-core @0x8015E22C (src/shared) */ - -DEFINE_func_8015E288() /* dedup: shared engine-core @0x8015E288 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (pending whole-binary gate); fn-ptr table folds %lo via extern array, 0x234 single word store - - -extern void func_8015E40C(s32 a0); -extern s32 func_80161B18(void *a0); -extern s32 func_80161B84(void *a0); -extern s32 func_80161208(); -extern void func_8015E5B0(u8*); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159BE4(s32 arg0); - -extern void (*D_8018DC08[])(void*); - -void func_8015E344(u16 *param_1) -{ - ((s32 (*)(void))func_8015E40C)(); - if (((s32 (*)(u16 *))func_80161B18)(param_1) == 0 && - ((s32 (*)(u16 *))func_80161B84)(param_1) == 0 && - ((s32 (*)(u16 *))func_80161208)(param_1) == 0) { - if ((param_1[0x5c] & 0x4000) != 0) { - ((void (*)(u16 *))func_8015E5B0)(param_1); - *(s32 *)((char *)param_1 + 0x234) = 1; - } - if ((param_1[0x5c] & 0x8000) != 0) { - ((void (**)(u16*))D_8018DC08)[param_1[0]](param_1); - ((s32 (*)(u16 *, s32))func_80147078)(param_1, 0); - ((s32 (*)(u16 *))func_80159BE4)(param_1); - } - } -} - - -DEFINE_func_8015E40C() /* dedup: shared engine-core @0x8015E40C (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (pending whole-binary gate); s16 v[3] array forces all 3 locals addressable (reload-from-stack), u16* psVar1 → lhu null/flag check - - -extern u16 D_8018DED0; -extern u16 D_8018DED2; -extern u16 D_8018DED4; -extern s32 D_8018DED8; - -extern void func_80149350(s32 arg0); -extern void func_80013E94(void *a0, void *a1); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); - -void func_8015E4B0(s32 param_1) -{ - u16 *psVar1; - s16 v[3]; - s32 local_10; - - psVar1 = *(u16 **)(param_1 + 0x18c); - if ((psVar1 != (u16 *)0) && (*psVar1 != 0)) { - v[0] = D_8018DED0 + *(u16 *)(*(s32 *)(psVar1 + 0x3c) + 0xc); - v[1] = D_8018DED2 + *(s16 *)(*(s32 *)(psVar1 + 0x3c) + 0xe) * 2; - v[2] = D_8018DED4 + *(u16 *)(*(s32 *)(psVar1 + 0x3c) + 0x10); - ((s32 (*)(s32, s16 *, s16 *))func_80149350)(param_1, &v[0], &v[0]); - ((s32 (*)(s32 *, s32 *))func_80013E94)(&D_8018DED8, &local_10); - ((s32 (*)(s32, s32, s32, s32, s32, s32, s32))func_80146A6C)(0x1f, param_1, v[0], v[1], v[2], local_10, 0); - } - return; -} - - - - -DEFINE_func_8015E588() /* dedup: shared engine-core @0x8015E588 (src/shared) */ - - -DEFINE_func_8015E5B0() /* dedup: shared engine-core @0x8015E5B0 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (clean -O2 reconstruction; table-of-fnptr indexed by param_1[0]) - - -extern s32 func_80161208(); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159BE4(s32 arg0); - -/* function-pointer dispatch table */ -extern void (*D_8018DC08[])(void*); - -void func_8015E698(u16 *param_1) -{ - if (func_80161208() == 0 && (param_1[0x5c] & 0x8000) != 0) { - ((void (**)(u16*))D_8018DC08)[param_1[0]](param_1); - ((void (*)(u16 *, s32))func_80147078)(param_1, 0); - ((void (*)(u16 *))func_80159BE4)(param_1); - } -} - - -DEFINE_func_8015E714() /* dedup: shared engine-core @0x8015E714 (src/shared) */ - -DEFINE_func_8015E84C() /* dedup: shared engine-core @0x8015E84C (src/shared) */ - -DEFINE_func_8015E880() /* dedup: shared engine-core @0x8015E880 (src/shared) */ - -DEFINE_func_8015E8B4() /* dedup: shared engine-core @0x8015E8B4 (src/shared) */ - - - -DEFINE_func_8015E8E8() /* dedup: shared engine-core @0x8015E8E8 (src/shared) */ - - -DEFINE_func_8015E924() /* dedup: shared engine-core @0x8015E924 (src/shared) */ - -DEFINE_func_8015E95C() /* dedup: shared engine-core @0x8015E95C (src/shared) */ - -DEFINE_func_8015E9B8() /* dedup: shared engine-core @0x8015E9B8 (src/shared) */ - - -DEFINE_func_8015EA3C() /* dedup: shared engine-core @0x8015EA3C (src/shared) */ - - -DEFINE_func_8015ED6C() /* dedup: shared engine-core @0x8015ED6C (src/shared) */ - -DEFINE_func_8015EDA0() /* dedup: shared engine-core @0x8015EDA0 (src/shared) */ - -DEFINE_func_8015EDD4() /* dedup: shared engine-core @0x8015EDD4 (src/shared) */ - - - -DEFINE_func_8015EE08() /* dedup: shared engine-core @0x8015EE08 (src/shared) */ - - -DEFINE_func_8015EE44() /* dedup: shared engine-core @0x8015EE44 (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH (straight STUB call sequence; param saved to $s0 across calls) - -extern void func_8014CBF8(void *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80146CA0(void *a0); - -extern int D_800D4C48; -extern int D_8018DBEC; - -void func_8015EE7C(s32 param_1) -{ - ((int (*)(void))func_8014CBF8)(); - ((int (*)(int))func_801474EC)(param_1); - ((int (*)(int, void *))func_80154274)(param_1, &D_800D4C48); - ((int (*)(int, void *))func_80146DB8)(param_1, &D_8018DBEC); - ((int (*)(int, int))func_801477E8)(param_1, 0xFFF40000); - ((int (*)(int))func_80146CA0)(param_1); -} - - - -extern void (*D_8018DC08[])(void *); - -extern void func_80148038(s32 a0, s32 a1); -extern void func_80147460(s32 a0); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801473EC(s32 *a0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern void func_80161418(void *a0); -extern s32 func_801725A4(u8 *a0); - -void func_8015EEE0(void *arg0) -{ - ((void (*)(void *, s32))func_80148038)(arg0, 0x10000); - ((void (*)(void *))func_80147460)(arg0); - ((void (*)(void *, s32, s32, s32))func_80147AD4)(arg0, 0, 0, 0x1000); - ((void (*)(void *))func_801473EC)(arg0); - if (*(u16 *)((u8 *)arg0 + 0xB8) & 0x8000) { - D_8018DC08[*(u16 *)arg0](arg0); - ((void (*)(void *, s32))func_80147078)(arg0, 0); - func_80159B70(arg0); - } else { - if (((s32 (*)(void *))func_80161418)(arg0) == 0) { - ((void (*)(void *))func_801725A4)(arg0); - } - } -} - - -DEFINE_func_8015EF9C() /* dedup: shared engine-core @0x8015EF9C (src/shared) */ - -DEFINE_func_8015EFA4() /* dedup: shared engine-core @0x8015EFA4 (src/shared) */ - -DEFINE_func_8015EFD8() /* dedup: shared engine-core @0x8015EFD8 (src/shared) */ - - - -DEFINE_func_8015F00C() /* dedup: shared engine-core @0x8015F00C (src/shared) */ - - -DEFINE_func_8015F048() /* dedup: shared engine-core @0x8015F048 (src/shared) */ - -DEFINE_func_8015F080() /* dedup: shared engine-core @0x8015F080 (src/shared) */ - -DEFINE_func_8015F118() /* dedup: shared engine-core @0x8015F118 (src/shared) */ - - -DEFINE_func_8015F260() /* dedup: shared engine-core @0x8015F260 (src/shared) */ - -DEFINE_func_8015F2BC() /* dedup: shared engine-core @0x8015F2BC (src/shared) */ - -DEFINE_func_8015F2F0() /* dedup: shared engine-core @0x8015F2F0 (src/shared) */ - - - -DEFINE_func_8015F324() /* dedup: shared engine-core @0x8015F324 (src/shared) */ - - -DEFINE_func_8015F360() /* dedup: shared engine-core @0x8015F360 (src/shared) */ - -DEFINE_func_8015F380() /* dedup: shared engine-core @0x8015F380 (src/shared) */ - - -DEFINE_func_8015F448() /* dedup: shared engine-core @0x8015F448 (src/shared) */ - - -DEFINE_func_8015F738() /* dedup: shared engine-core @0x8015F738 (src/shared) */ - -DEFINE_func_8015F76C() /* dedup: shared engine-core @0x8015F76C (src/shared) */ - -DEFINE_func_8015F7A0() /* dedup: shared engine-core @0x8015F7A0 (src/shared) */ - - - -DEFINE_func_8015F7D4() /* dedup: shared engine-core @0x8015F7D4 (src/shared) */ - - -DEFINE_func_8015F810() /* dedup: shared engine-core @0x8015F810 (src/shared) */ - -DEFINE_func_8015F848() /* dedup: shared engine-core @0x8015F848 (src/shared) */ - - -extern void (*D_8018DC08[])(void *); -extern void func_801466F0(s32, s32, s32, s32, s32, s32, s32, s32); -extern void func_80147078(s32 *, s16); -extern void func_80159B70(void *); -extern s32 func_80161208(void); - -void func_8015F89C(void *arg0) { - u16 flags = *(u16 *)((u8 *)arg0 + 0xB8); - if (!(flags & 0x4000)) { - if (flags & 0x8000) { - D_8018DC08[*(u16 *)arg0](arg0); - func_80147078(arg0, 0); - func_80159B70(arg0); - return; - } - } else { - func_801466F0(1, arg0, 0, -0x1E, 0, 0, 0, 0); - } - ((s32 (*)(void *))func_80161208)(arg0); -} - - -DEFINE_func_8015F948() /* dedup: shared engine-core @0x8015F948 (src/shared) */ - - -extern void (*D_8018DC08[])(void *); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern s32 func_80161208(void); - -void func_8015F9A4(void *arg0) { - if (*(u16 *)((u8 *)arg0 + 0xB8) & 0x8000) { - D_8018DC08[*(u16 *)arg0](arg0); - func_80147078(arg0, 0); - func_80159B70(arg0); - } else { - ((s32 (*)(void *))func_80161208)(arg0); - } -} - - -DEFINE_func_8015FA24() /* dedup: shared engine-core @0x8015FA24 (src/shared) */ - -DEFINE_func_8015FA44() /* dedup: shared engine-core @0x8015FA44 (src/shared) */ - -DEFINE_func_8015FA78() /* dedup: shared engine-core @0x8015FA78 (src/shared) */ - - - -DEFINE_func_8015FAAC() /* dedup: shared engine-core @0x8015FAAC (src/shared) */ - - - -extern s32 func_801612B8(void *a0, s32 a1); -extern void func_8016007C(s32 a0); -extern void (*D_8018DC08[])(void *); -extern void func_80147078(s32 *a0, s16 a1); -extern s32 func_8015BE94(); -extern void func_8015C0C4(s32 a0); -extern void func_8015FBE0(s32 *a0); - -void func_8015FAE8(void *arg0) { - s32 v; - - v = func_801612B8(arg0, 0); - if (v == 0 || v == 0x8000) { - ((void (*)(void *))func_8016007C)(arg0); - *(u32 *)((u8 *)arg0 + 0x184) |= 0x80000000; - D_8018DC08[*(u16 *)arg0](arg0); - ((void (*)(void *, s16))func_80147078)(arg0, 3); - ((void (*)(void *))func_8015BE94)(arg0); - } else if ((v & 0x4000) != 0) { - ((void (*)(void *))func_8016007C)(arg0); - *(u32 *)((u8 *)arg0 + 0x184) |= 0x80000000; - D_8018DC08[*(u16 *)arg0](arg0); - ((void (*)(void *, s16))func_80147078)(arg0, 4); - ((void (*)(void *))func_8015C0C4)(arg0); - } else { - ((void (*)(void *))func_8015FBE0)(arg0); - } -} - - - -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern s32 func_80146A6C(s32, void*, s32, s32, s32, s32, s32); -extern void func_80147324(s32 a0); -extern void func_801553A8(s32 *a0); -extern void func_801553C0(s32 a0); -extern void func_80146CA0(void *a0); - - -void func_8015FBE0(s32 *param_1) -{ - - extern u8 D_800B9A17; - if (param_1[0x61] < 0) { - ((void (**)())D_8018DC08)[*(u16 *)param_1](); - ((void (*)(s32 *, s16))func_80147078)(param_1, 0); - ((void (*)(s32 *))func_80159B70)(param_1); - } else { - __asm__ __volatile__(""); - D_80078EC1 = 0; - ((void (*)(s32 *, s32))func_80154150)(param_1, 0x20); - ((void (*)(s32 *, s32))func_80154A74)(param_1, 0x18); - ((void (*)(s32, s32 *, s32, s32, s32, s32, s32))func_80146A6C)(0x16, param_1, 0, 0, 0, 0, 0); - func_80147324(0x44F); - ((void (*)(s32 *))func_801553A8)(param_1); - ((void (*)(s32 *))func_801553C0)(param_1); - D_801270C0 = 2; - D_800B9A17 = 0; - ((void (*)(s32 *))func_80146CA0)(param_1); - } -} - - -extern void func_801599A4(void *a0); - -// @class: struct -// @stuck: none — MATCH (indexed fn-ptr table call + byte-offset struct stores; mirrors sibling func_801599A4 idiom) - -extern s32 D_800AE6B0; -extern void (*D_8018DC08[])(void *); - -extern void func_8016007C(s32 a0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern void func_8014BFF4(s32 a0, s32 a1); -extern void func_80146CA0(void *a0); - -void func_8015FCC8(void *param_1) { - if ((D_800AE6B0 & 0x80FFFFFF) != 0) { - ((void (*)(void))func_8016007C)(); - D_8018DC08[*(u16 *)param_1](param_1); - ((void (*)(void *, s32))func_80147078)(param_1, 0); - func_80159B70(param_1); - } else { - *(u8 *)((s32)param_1 + 0x197) = 0; - *(u8 *)((s32)param_1 + 0xBE) = 0; - *(u8 *)((s32)param_1 + 0xBF) = 0; - *(u8 *)((s32)param_1 + 0x1A0) = (u8)*(s32 *)((s32)param_1 + 0x184); - ((s32 (*)(void *, s32))func_8014BFF4)(param_1, 1); - func_80146CA0(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH expected; simple 3-call sequence with global table index - -extern unsigned int D_8018DF64[]; - -extern void func_80147324(s32 arg0); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_8015FD74(int param_1) -{ - ((int (*)(int))func_80147324)(0x18); - *(int *)(param_1 + 0x198) = func_8013767C(D_8018DF64[*(unsigned char *)(param_1 + 0x1a0)]); - ((int (*)(int))func_80146CA0)(param_1); -} - - -DEFINE_func_8015FDCC() /* dedup: shared engine-core @0x8015FDCC (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH expected (fn-ptr-table dispatch + ushort struct fields) - - -extern void (*D_8018DC08[])(void*); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern void func_80154A74(s32 a0, s32 a1); -extern s32 func_80161208(); - -void func_8015FE70(u16 *param_1) -{ - if ((param_1[0x5c] & 0x8000) != 0) { - if (param_1[0x5d] == 0) { - ((void (**)())D_8018DC08)[param_1[0]](); - ((void (*)(u16 *, s16))func_80147078)(param_1, 0); - ((void (*)(u16 *))func_80159B70)(param_1); - return; - } - param_1[0x5c] = param_1[0x5d]; - } - if ((param_1[0x5c] & 0x4000) != 0) { - ((void (*)(u16 *, s16))func_80154A74)(param_1, 0x11); - } - ((void (*)(u16 *))func_80161208)(param_1); -} - - - -extern s32 D_800AE6B0; -extern void (*D_8018DC08[])(void *); -extern u8 D_80078EC1; -extern u8 D_80078EC2; -extern u16 D_801270C0; - -extern void func_8016007C(s32 a0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern u8 func_801656E8(s32 a0, s32 a1); -extern void func_80150820(s32 a0, s32 a1); -extern void func_8014BFF4(s32 a0, s32 a1); -extern void func_80165670(s32 a0, s32 a1); -extern void func_80165840(void); -extern void func_801658DC(void); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_8016004C(s32 a0); - -void func_8015FF20(void *param_1) { - s32 v2; - u8 cur; - - if ((D_800AE6B0 & 0x80FFFFFF) != 0) { - ((void (*)(void))func_8016007C)(); - D_8018DC08[*(u16 *)param_1](param_1); - ((void (*)(void *, s16))func_80147078)(param_1, 0); - func_80159B70(param_1); - return; - } - - v2 = *(s32 *)((s32)param_1 + 0x184); - if (v2 < 0) { - func_80150820((s32)param_1, func_801656E8((s32)param_1, v2 & 0xFF) & 0xFF); - } else { - if (*(u8 *)((s32)param_1 + 0x1A0) != *(u8 *)((s32)param_1 + 0x196)) { - *(u8 *)((s32)param_1 + 0x1A0) = (u8)v2; - *(u8 *)((s32)param_1 + 0x197) = 0; - *(u8 *)((s32)param_1 + 0xBE) = 0; - *(u8 *)((s32)param_1 + 0xBF) = 0; - func_8014BFF4((s32)param_1, 1); - } - - cur = *(u8 *)((s32)param_1 + 0x1A0); - D_80078EC1 = cur; - D_80078EC2 = cur; - func_80165670((s32)param_1, cur); - ((void (*)(void *))func_80165840)(param_1); - ((void (*)(void *))func_801658DC)(param_1); - func_80154A74((s32)param_1, 0x11); - D_801270C0 = 1; - } - - ((void (*)(void *))func_8016004C)(param_1); -} - - -DEFINE_func_8016004C() /* dedup: shared engine-core @0x8016004C (src/shared) */ - -DEFINE_func_8016007C() /* dedup: shared engine-core @0x8016007C (src/shared) */ - -DEFINE_func_801600D0() /* dedup: shared engine-core @0x801600D0 (src/shared) */ - -DEFINE_func_80160104() /* dedup: shared engine-core @0x80160104 (src/shared) */ - - - -DEFINE_func_80160138() /* dedup: shared engine-core @0x80160138 (src/shared) */ - - -DEFINE_func_80160174() /* dedup: shared engine-core @0x80160174 (src/shared) */ - -DEFINE_func_801601AC() /* dedup: shared engine-core @0x801601AC (src/shared) */ - -DEFINE_func_801601E4() /* dedup: shared engine-core @0x801601E4 (src/shared) */ - -DEFINE_func_80160244() /* dedup: shared engine-core @0x80160244 (src/shared) */ - - -extern void (*D_8018DC08[])(void*); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern s32 func_80161208(); - -void func_801602A4(s32 *a0) { - if (*(u16 *)((u8 *)a0 + 0xB8) == 0x8000) { - ((void (**)())D_8018DC08)[*(u16 *)a0](); - func_80154A74((s32)a0, 0x11); - ((void (*)(s32, s32))func_80147078)((s32)a0, 0); - func_80159B70(a0); - } else { - ((s32 (*)(s32 *))func_80161208)(a0); - } -} - - -DEFINE_func_8016032C() /* dedup: shared engine-core @0x8016032C (src/shared) */ - -DEFINE_func_80160334() /* dedup: shared engine-core @0x80160334 (src/shared) */ - -DEFINE_func_80160368() /* dedup: shared engine-core @0x80160368 (src/shared) */ - - - -DEFINE_func_8016039C() /* dedup: shared engine-core @0x8016039C (src/shared) */ - - -DEFINE_func_801603D8() /* dedup: shared engine-core @0x801603D8 (src/shared) */ - -DEFINE_func_80160410() /* dedup: shared engine-core @0x80160410 (src/shared) */ - - - - - - - -/* data */ -DEFINE_func_80160534() /* dedup: shared engine-core @0x80160534 (src/shared) */ - - -DEFINE_func_801607B8() /* dedup: shared engine-core @0x801607B8 (src/shared) */ - -DEFINE_func_801607E4() /* dedup: shared engine-core @0x801607E4 (src/shared) */ - -DEFINE_func_80160818() /* dedup: shared engine-core @0x80160818 (src/shared) */ - - - -DEFINE_func_8016084C() /* dedup: shared engine-core @0x8016084C (src/shared) */ - - -DEFINE_func_80160888() /* dedup: shared engine-core @0x80160888 (src/shared) */ - -DEFINE_func_801608C0() /* dedup: shared engine-core @0x801608C0 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (function-pointer table folds %lo via extern array indexed by halfword) - - -extern void (*D_8018DC08[])(void*); - -extern u16 func_801487F4(s32 *a0); -extern s32 func_80161208(); -extern void func_80160A74(s32 *a0); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80146CA0(void *a0); - -void func_80160920(unsigned short *param_1) -{ - if ((((int (*)(void))func_801487F4)() & 8) == 0) { - ((code *)D_8018DC08)[*param_1](param_1); - ((void (*)(unsigned short *))func_80160A74)(param_1); - } else { - if (((int (*)(unsigned short *))func_80161208)(param_1) == 0 && param_1[0x5c] == 0x8000) { - ((void (*)(unsigned short *, int))func_80154150)(param_1, 0x25); - ((void (*)(unsigned short *))func_80146CA0)(param_1); - } - } - return; -} - - - - -// @class: struct -// @stuck: none — MATCH (pending byte-gate); function-pointer table %lo-fold via extern array - - -extern u16 func_801487F4(s32 *a0); -extern void func_80160A74(s32 *a0); -extern s32 func_80161208(); - -/* function-pointer dispatch table; indexed by *param_1 (×4 = ptr size) */ -extern void (*D_8018DC08[])(void*); - -void func_801609B8(u16 *param_1) { - if ((((u32 (*)(void))func_801487F4)() & 8) == 0) { - ((void (**)(u16*))D_8018DC08)[*param_1](param_1); - ((void (*)(u16 *))func_80160A74)(param_1); - } else { - ((void (*)(u16 *))func_80161208)(param_1); - } -} - - -DEFINE_func_80160A28() /* dedup: shared engine-core @0x80160A28 (src/shared) */ - -DEFINE_func_80160A74() /* dedup: shared engine-core @0x80160A74 (src/shared) */ - -DEFINE_func_80160ACC() /* dedup: shared engine-core @0x80160ACC (src/shared) */ - -DEFINE_func_80160B00() /* dedup: shared engine-core @0x80160B00 (src/shared) */ - - - -DEFINE_func_80160B34() /* dedup: shared engine-core @0x80160B34 (src/shared) */ - - -DEFINE_func_80160B70() /* dedup: shared engine-core @0x80160B70 (src/shared) */ - -DEFINE_func_80160BB4() /* dedup: shared engine-core @0x80160BB4 (src/shared) */ - -DEFINE_func_80160C28() /* dedup: shared engine-core @0x80160C28 (src/shared) */ - -DEFINE_func_80160CB4() /* dedup: shared engine-core @0x80160CB4 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (mirrors byte-matched func_8015DBD4 in same overlay; dispatch via D_8018DC08 + func_80147078/func_80159B70 tail, func_80161208 else) - -extern void (*D_8018DC08[])(void *); -extern u16 func_80148800(s32 *a0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern s32 func_80161208(); - -void func_80160D10(void *arg0) { - if (*(u32 *)((u8 *)arg0 + 0x44) & 0x10) { - D_8018DC08[*(u16 *)arg0](arg0); - } else { - if (*(s32 *)((u8 *)arg0 + 0x1AC) == 0) { - if ((((s32 (*)(void *))func_80148800)(arg0) & 0xF0) == 0) { - goto dd0; - } - } else { - s32 t = *(s32 *)((u8 *)arg0 + 0x1AC) - 0xAAA8; - *(s32 *)((u8 *)arg0 + 0x1AC) = t; - if (t >= 0) { - goto dd0; - } - } - D_8018DC08[*(u16 *)arg0](arg0); - } - ((void (*)(void *, s16))func_80147078)(arg0, 0); - func_80159B70(arg0); - return; -dd0: - ((s32 (*)(void *))func_80161208)(arg0); -} - - -DEFINE_func_80160DEC() /* dedup: shared engine-core @0x80160DEC (src/shared) */ - -DEFINE_func_80160E3C() /* dedup: shared engine-core @0x80160E3C (src/shared) */ - -DEFINE_func_80160E70() /* dedup: shared engine-core @0x80160E70 (src/shared) */ - - -DEFINE_func_80160EA4() /* dedup: shared engine-core @0x80160EA4 (src/shared) */ - - -DEFINE_func_80160EE0() /* dedup: shared engine-core @0x80160EE0 (src/shared) */ - -DEFINE_func_80160F00() /* dedup: shared engine-core @0x80160F00 (src/shared) */ - -DEFINE_func_80160F70() /* dedup: shared engine-core @0x80160F70 (src/shared) */ - -DEFINE_func_80160FE0() /* dedup: shared engine-core @0x80160FE0 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH - -extern void func_80149020(s32 *a0); -extern void (*D_8018DC08[])(void *); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); - -void func_80161034(void *a0) -{ - func_80149020(a0); - D_8018DC08[*(u16 *)a0](a0); - func_80147078(a0, 0); - func_80159B70(a0); -} - - -DEFINE_func_80161094() /* dedup: shared engine-core @0x80161094 (src/shared) */ - -DEFINE_func_801610FC() /* dedup: shared engine-core @0x801610FC (src/shared) */ - -DEFINE_func_80161104() /* dedup: shared engine-core @0x80161104 (src/shared) */ - -DEFINE_func_80161124() /* dedup: shared engine-core @0x80161124 (src/shared) */ - -extern s32 func_801612B8(void *a0, s32 a1); -extern void func_8016130C(void*, s32); -void aF80161208(void *a0) __asm__("func_80161208"); -void aF80161208(void *a0) -{ - ((s32 (*)(s32, u32))func_8016130C)(a0, func_801612B8(a0, 0)); -} - - -DEFINE_func_80161240() /* dedup: shared engine-core @0x80161240 (src/shared) */ - -DEFINE_func_80161278() /* dedup: shared engine-core @0x80161278 (src/shared) */ - -DEFINE_func_801612B8() /* dedup: shared engine-core @0x801612B8 (src/shared) */ - -extern void func_80161240(void *a0); -extern s32 func_801612B8(void * a0, s32 a1); -#define SHB(x) __asm__ __volatile__("" : "=r"(x) : "0"(x)) -#define SHB(x) __asm__("" : "=r"(x) : "0"(x)) - -extern void func_801599A4(void*); -extern void func_8015BDD0(s32*); -extern void func_8015BF48(s32*); - -/* REDRAFT (decay axis: RETURN TYPE). The stored draft had been flipped to - * `void` to fit the fleet header decl in src/shared/engine_core.h, while the - * body still `return 1; / return 0;`. gcc-2.7.2 silently drops the $v0 sets in - * that situation, costing the three `addiu $v0, $zero, 1` / `addu $v0,$zero,$zero` - * instructions the ASM plainly has. Restored to s32 (§109/§85 — the single call - * site `func_8016130C(a0, func_801612B8(a0, 1));` discards the result, so the - * void->s32 widen is caller-neutral and must be fixed on the HEADER side). */ - -/* RECONCILE (§37/§124 asm-label alias — zero header touch). - * Gate error: jr_8015C32C.c:3501 conflicting types for `func_8016130C' - * :3479 previous declaration. - * TU line 3479 is `DEFINE_func_80161240()`, whose expansion (engine_core.h:3781) - * declares `extern void func_8016130C(void *a0, s32 a1);` — a RETURN-TYPE - * disagreement with this draft's required `s32`. The third line the gate quoted - * (:5228 "location of previous definition") is unrelated noise: it is the - * pre-existing `#define SHB(x)` redefinition *warning* between TU lines 5227 and - * 5538, present with or without this draft. - * Fix: the C identifier becomes aF8016130C, so it never collides with the - * canonical `void func_8016130C` declaration, while the GNU asm label makes the - * EMITTED symbol `func_8016130C`. The macro's caller func_80161240 keeps calling - * the `extern void` spelling and is byte-unaffected (it discards the return). - * Codegen for this function is untouched — match_one still MATCH. - * (Alternative, house style, NOT taken here per the no-header-edit rule: widen - * src/shared/engine_core.h:3781 to `extern s32 func_8016130C(void *a0, s32 a1);` - * and rename back to the plain name — byte-identical either way.) */ - -s32 aF8016130C(void *a0, s32 a1) __asm__("func_8016130C"); - -s32 aF8016130C(void *a0, s32 a1) -{ - if ((a1 == 0) || (a1 == 0x8000)) { - func_801599A4(a0); - ((void (*)(void *))func_8015BDD0)(a0); - return 1; - } - if ((a1 & 0x4000) != 0) { - func_801599A4(a0); - ((void (*)(void *))func_8015BF48)(a0); - return 1; - } - return 0; -} - - - -// @class: schedule -// @stuck: none — MATCH - - -DEFINE_func_80161374() /* dedup: shared engine-core @0x80161374 (src/shared) */ - - -DEFINE_func_80161418() /* dedup: shared engine-core @0x80161418 (src/shared) */ - -DEFINE_func_80161450() /* dedup: shared engine-core @0x80161450 (src/shared) */ - -DEFINE_func_80161488() /* dedup: shared engine-core @0x80161488 (src/shared) */ - -DEFINE_func_801614E4() /* dedup: shared engine-core @0x801614E4 (src/shared) */ - -DEFINE_func_8016151C() /* dedup: shared engine-core @0x8016151C (src/shared) */ - -DEFINE_func_80161554() /* dedup: shared engine-core @0x80161554 (src/shared) */ - -DEFINE_func_8016158C() /* dedup: shared engine-core @0x8016158C (src/shared) */ - -DEFINE_func_801615C4() /* dedup: shared engine-core @0x801615C4 (src/shared) */ - - - -// @class: other -// @stuck: first draft — plain if-chain over the flag bits -extern void func_801599A4(void *a0); -extern void func_80159B3C(void *a0); -extern void func_8015BF48(s32 *a0); -extern void func_8015F2F0(s32 *a0); -extern void func_8014C010(s32 a0, s32 a1); -extern void func_80161D20(int param_1, u32 param_2); -extern s32 func_8014A6C4(s32 a0); -extern s32 ratan2(s32 a0, s32 a1); - -s32 func_8016163C(s32 arg0, u32 arg1) { - - extern s16 D_801152B0; - extern s16 D_801152B4; - if (arg1 & 1) { - func_801599A4((void *)arg0); - func_80159B3C((void *)arg0); - func_8014C010(arg0, 1); - ((void (*)(s32, s32))func_80161D20)(arg0, *(u16 *)(arg0 + 0x16E)); - return 1; - } - if (arg1 & 0x4000) { - func_801599A4((void *)arg0); - func_8015BF48((s32 *)arg0); - func_8014C010(arg0, 1); - ((void (*)(s32, s32))func_80161D20)(arg0, *(u16 *)(arg0 + 0x16E)); - return 2; - } - if (arg1 & 0x2000) { - func_801599A4((void *)arg0); - func_80159B3C((void *)arg0); - func_8014C010(arg0, 1); - ((void (*)(s32, s32))func_80161D20)(arg0, *(u16 *)(arg0 + 0x16E)); - return 4; - } - if (arg1 & 0x8000) { - if (*(u16 *)(arg0 + 0x16C) != 0x15) { - return 0; - } - if (func_8014A6C4(arg0) != 0) { - func_801599A4((void *)arg0); - func_8015F2F0((s32 *)arg0); - *(s16 *)(*(s32 *)(arg0 + 0x20) + 0x12) = ratan2(D_801152B0, D_801152B4); - return 8; - } - } - return 0; -} - - - -extern void func_8014C010(s32 a0, s32 a1); -extern void func_80161D20(int param_1, u32 param_2); -extern void func_801599A4(void *a0); -extern void func_8015BF48(s32 *a0); -extern s32 func_8014A6C4(s32 a0); -extern void func_8015F2F0(s32*); -extern s32 ratan2(s32 x, s32 y); - -s32 func_80161774(int param_1, u32 param_2) { - - extern s16 D_801152B0; - extern s16 D_801152B4; - - if ((param_2 & 1) != 0) { - func_8014C010(param_1, 1); - ((void (*)(s32, s32))func_80161D20)(param_1, *(unsigned short *)(param_1 + 0x16e)); - return 1; - } - if ((param_2 & 0x4000) != 0) { - ((void (*)(int))func_801599A4)(param_1); - ((void (*)(int))func_8015BF48)(param_1); - func_8014C010(param_1, 1); - ((void (*)(s32, s32))func_80161D20)(param_1, *(unsigned short *)(param_1 + 0x16e)); - return 2; - } - if ((param_2 & 0x2000) != 0) { - func_8014C010(param_1, 1); - ((void (*)(s32, s32))func_80161D20)(param_1, *(unsigned short *)(param_1 + 0x16e)); - return 4; - } - if ((param_2 & 0x8000) != 0) { - if (*(unsigned short *)(param_1 + 0x16c) != 0x15) { - return 0; - } - if (func_8014A6C4(param_1) != 0) { - ((void (*)(int))func_801599A4)(param_1); - ((void (*)(int))func_8015F2F0)(param_1); - *(short *)(*(int *)(param_1 + 0x20) + 0x12) = ratan2(D_801152B0, D_801152B4); - return 8; - } - } - return 0; -} - - - -// @class: schedule -// @stuck: none — MATCH - -DEFINE_func_80161888() /* dedup: shared engine-core @0x80161888 (src/shared) */ - - -DEFINE_func_8016191C() /* dedup: shared engine-core @0x8016191C (src/shared) */ - - -DEFINE_func_8016197C() /* dedup: shared engine-core @0x8016197C (src/shared) */ - -DEFINE_func_801619A4() /* dedup: shared engine-core @0x801619A4 (src/shared) */ - -DEFINE_func_801619D0() /* dedup: shared engine-core @0x801619D0 (src/shared) */ - -DEFINE_func_80161A00() /* dedup: shared engine-core @0x80161A00 (src/shared) */ - -DEFINE_func_80161A30() /* dedup: shared engine-core @0x80161A30 (src/shared) */ - -DEFINE_func_80161A60() /* dedup: shared engine-core @0x80161A60 (src/shared) */ - - -DEFINE_func_80161A90() /* dedup: shared engine-core @0x80161A90 (src/shared) */ - - -DEFINE_func_80161B18() /* dedup: shared engine-core @0x80161B18 (src/shared) */ - -DEFINE_func_80161B84() /* dedup: shared engine-core @0x80161B84 (src/shared) */ - -DEFINE_func_80161BE0() /* dedup: shared engine-core @0x80161BE0 (src/shared) */ - - -extern void func_80147324(); - -/* RECONCILE (§17a-1/§20): the TU already declares - * extern void func_80161C24(s32, s32); (jr_8015C32C.c:1474 / :1417) - * so the definition must use (int, int); the unsigned semantics of param_2 - * are restored by a cast at each use (codegen-neutral: sltiu + index math). */ -void func_80161C24(int param_1, int param_2) -{ - - extern unsigned short D_8018E024[]; - extern unsigned short D_8018E026[]; - - if ((unsigned int)param_2 < 8) { - if (*(u8 *)(param_1 + 0xDA) != 0) { - func_80147324(D_8018E024[(unsigned int)param_2 * 2]); - *(u8 *)(param_1 + 0xDA) = 0; - } else { - func_80147324(D_8018E026[(unsigned int)param_2 * 2]); - *(u8 *)(param_1 + 0xDA) = 1; - } - } -} - - - -// @class: struct -// @stuck: none — MATCH (indexed-global %lo-fold via extern u16 array, §18) - -DEFINE_func_80161C98() /* dedup: shared engine-core @0x80161C98 (src/shared) */ - - - -// @class: plumbing -// @stuck: none — MATCH (20 ins) -// DECAY AXIS: return type. The stored draft declared `s32 func_80161CD0(...)` with no -// return statement. That kept $v0 live-out at the epilogue, so gcc-2.7.2's delayed-branch -// pass refused to speculatively fill the second `beqz $v0` delay slot from the fall-through -// with `sll $v0, $s0, 1` — costing one extra nop (21 vs 20 ins) and shifting both branch -// displacements. Declaring the function `void` makes $v0 dead at the return and the fill -// happens. Same return-type axis as the wave, opposite direction (s32 -> void). -// param_2 must be UNSIGNED: the guard assembles as `sltiu $v0, $s0, 0x8`. -// -// RECONCILE (§37/§124 asm-label alias) — the ONLY change vs the uc2 draft; the body is -// byte-identical and untouched. -// The real TU src/ov_SC01_077/ov_SC01_077_jr_8015C32C.c already carries the m2c canonical -// declaration -// :23 extern s32 func_80161CD0(s32 a0, s32 a1); /* match-first, arity 2 */ -// :1207 extern s32 func_80161CD0(s32 a0, s32 a1); -// so a plain `void func_80161CD0(int, unsigned int)` definition dies with -// conflicting types for `func_80161CD0' / previous declaration ... (rtu_match CC1 FAIL). -// This is the RETURN axis (s32 vs void) plus the param-2 signedness axis, and BOTH spellings -// are load-bearing for the 20-instruction codegen — conforming the definition to the -// declaration (escape #1) would perturb bytes, so it is not available here. -// The alias fixes it at T0: the C identifier is aF80161CD0 (no declaration to collide with) -// while the EMITTED SYMBOL is func_80161CD0. In-TU callers keep using the `extern s32` -// spelling and are byte-unaffected (they discard the return). Zero tracked files touched; -// no header edit is even possible/needed — grep shows func_80161CD0 has NO declaration in -// include/ or src/shared/, the conflict is purely TU-local m2c boilerplate. -// Exactly the pattern already banked at src/ov_SC03_099/ov_SC03_099_jr_8015C32C.c:3503 -// for the sibling func_8016191C. -// -// NOTE on the third gate diagnostic (`:5223 note: location of previous definition`): that is -// a RED HERRING, unrelated to this function. It is the pre-existing CPP note paired with -// `:5533 warning: "SHB" redefined` — the TU defines the SHB scheduling-barrier macro twice -// (post-splice :5222 with __volatile__, :5533 without). It is a warning, present with or -// without this draft, and it does not fail cc1. - -extern int func_800CF8B4(); -extern void func_80147324(int arg0); - -void aF80161CD0(int param_1, unsigned int param_2) __asm__("func_80161CD0"); - -void aF80161CD0(int param_1, unsigned int param_2) -{ - - extern unsigned short D_8018E054; - if (param_2 < 8) { - if (func_800CF8B4() != 0) { - func_80147324((&D_8018E054)[param_2]); - } - } -} - - - -// @class: struct -// @stuck: none — MATCH (indexed-global %lo-fold via extern u16 array, §18) - -DEFINE_func_80161D20() /* dedup: shared engine-core @0x80161D20 (src/shared) */ - - -DEFINE_func_80161D58() /* dedup: shared engine-core @0x80161D58 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (short-circuit && chain; reused 0x80FFFFFF mask const, andi-0xFF on callee ret) - -extern s32 D_800AE6B0; -extern s32 D_800AE6A8; -extern s32 func_80029178(s32 arg); -extern void func_80029124(s32, s32); -extern void func_800D1734(void *); -extern s32 D_8018E0A8; - -void func_80161D88(void) { - if ((D_800AE6B0 & 0x80FFFFFF) == 0 && (D_800AE6A8 & 0x80FFFFFF) == 0 && - (func_80029178(0x141) & 0xFF) != 0) { - func_80029124(0x141, 0); - func_80029124(0x95, 1); - func_800D1734(&D_8018E0A8); - } -} - - -// @class: regalloc-order -// @stuck: none — MATCH (175 ins, relocation-masked). Giant, 3 similar guarded blocks. base=&D_800AF630 -// hoisted to $s2 (referenced only to build the 3 stored pointers base+0x65A8/0x65E0/0x6618 -> $s1); -// guard reads (D_800B5BD8/C10/C48) + the "=1" + coord stores use direct symbols. Coord idiom: -// -(s32)(u16)D_800AF7BC/2 + K (negu;srl31;addu;sra1). a2=func_800291DC(8) survives in $s3 for the -// final (a2&0x7FFF)==(s16)D_80078EB0 test. KEY RESIDUAL (cracked): target computes each pointer into -// scratch $v0 then `addu $s1,$v0` (dead-intermediate copy) and stores $s1 — natural C ALWAYS coalesces -// that copy into a direct `addiu $s1,$s2,off` (172 ins, 3 short). Forcing the un-coalesced copy needs -// an explicit `move` inline-asm (an empty "=r"/"0" re-tie is only a barrier, won't emit the copy). -#include "common.h" - - - - - - - -void func_80161E08(s32 param_1) { - extern void func_80024054(void *a0, void *a1); - extern void func_8001CE28(void *a0, void *a1); - extern void func_800242D0(s32 a0, void *a1, s32 a2); - extern void func_8001CE68(void *a0, void *a1); - extern int func_801620C4(void); - extern void func_801622C4(void); - extern u16 D_800AF7BC; - extern u16 D_800AF7BE; - extern s16 D_80078EB0; - extern u16 D_800B5BD8; - extern s16 D_800B5C04; - extern u8 D_800B5BFF; - extern s16 D_800B5BE0; - extern s16 D_800B5BE2; - extern u16 D_800B5C10; - extern s16 D_800B5C3C; - extern u8 D_800B5C37; - extern s16 D_800B5C18; - extern s16 D_800B5C1A; - extern u16 D_800B5C48; - extern s16 D_800B5C74; - extern s16 D_800B5C50; - extern s16 D_800B5C52; - extern u8 * D_801E96F0[]; - extern u8 D_8018E074[]; - extern u8 D_8018E094[]; - extern u8 D_801E96FC[]; - extern u8 D_801E9724[]; - extern u8 D_801E973C[]; - - u8 *base = &(*(u8 *)&D_800AF630); - u8 *p; - s32 a2; - - if (*((u16 *)param_1) != 0x1A && - currentLocationId != 0x3012 && - currentLocationId != 0x3054 && - currentLocationId != 0x3079 && - currentLocationId != 0x3096 && - ((a2 = func_800291DC(8)) & 0x8000) != 0) { - - if (D_800B5BD8 == 0) { - __asm__("move %0,%1" : "=r"(p) : "r"(base + 0x65A8)); - D_801E96F0[0] = p; - func_80024054(&D_8018E074, &D_801E96FC); - func_8001CE28(p, &D_801E96FC); - D_800B5C04 = 1; - D_800B5BFF = 1; - D_800B5BE0 = -(s32)(u16)D_800AF7BC / 2 + 0xD0; - D_800B5BE2 = -(s32)(u16)D_800AF7BE / 2 + 0x28; - } - - if (D_800B5C10 == 0) { - __asm__("move %0,%1" : "=r"(p) : "r"(base + 0x65E0)); - D_801E96F0[1] = p; - func_80024054(&D_8018E094, &D_801E9724); - func_8001CE28(p, &D_801E9724); - D_800B5C3C = 1; - D_800B5C37 = 1; - D_800B5C18 = -(s32)(u16)D_800AF7BC / 2 + 0xD0; - D_800B5C1A = -(s32)(u16)D_800AF7BE / 2 + 0x30; - } - - if (D_800B5C48 == 0) { - __asm__("move %0,%1" : "=r"(p) : "r"(base + 0x6618)); - D_801E96F0[2] = p; - func_800242D0((s16)func_801620C4(), &D_801E973C, 0x84); - func_8001CE68(p, &D_801E973C); - D_800B5C74 = 1; - D_800B5C50 = -(s32)(u16)D_800AF7BC / 2 + 0xD0; - D_800B5C52 = -(s32)(u16)D_800AF7BE / 2 + 0x10; - } - - func_800242D0((s16)func_801620C4(), &D_801E973C, 0x84); - if ((a2 & 0x7FFF) == (s32)D_80078EB0) { - func_801622C4(); - } - } -} - - - -DEFINE_func_801620C4() /* dedup: shared engine-core @0x801620C4 (src/shared) */ - -DEFINE_func_80162120() /* dedup: shared engine-core @0x80162120 (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (do-while scan over 3-entry global; increments placed AFTER the call so p++ schedules between load and jal, i++ into the delay slot) - -extern void func_800291C8(s32, s32); -extern void func_80016714(void *a0, s32 a1); - -extern int D_801E96F0[]; - -void func_8016216C(void) -{ - int *p; - int i; - - func_800291C8(8, 0); - i = 0; - p = D_801E96F0; - do { - int v = *p; - ((void (*)(int, int))func_80016714)(v, 0x38); - p = p + 1; - i = i + 1; - } while (i < 3); -} - - - -extern s32 func_800291DC(s32); -extern u8 D_80078E78[]; -extern u8 D_80078EB0; -extern u8 D_80078EB1; -extern s32 D_8018E0A8; - -s32 func_801621CC(s32 arg0) { - register s32 s0 __asm__("$16") = arg0; /* $s0: arg0, crosses the call */ - register u8 *s1 __asm__("$17") = D_80078E78; /* $s1: base, hoisted for the loop */ - register s32 i __asm__("$5"); /* $a1: counter (pin fixes the i/d swap) */ - u32 a2; - s32 d; /* $a0: natural alloc; load via $v0 temp */ - s32 v, last, hi, lo; - char pad[8]; /* phantom 8B local -> frame 0x28 (vars=8) */ - - a2 = func_800291DC(8); - if ((a2 & 0x8000) == 0) { - return 0; - } - a2 &= 0x7FFF; - if (((a2 >> 8) == D_80078EB1) && ((a2 & 0xFF) <= (u32)D_80078EB0)) { - return (s32)&D_8018E0A8; - } - d = s1[0x39] - 1; - i = 0; - if (s0 <= 0) { - return 0; - } - hi = (a2 >> 8) & 0xFF; - last = s0 - 1; - lo = a2 & 0xFF; - do { - if ((s8)d < 0) { - d = 0x17; - } - v = (s8)d; - if (hi == v) { - if (i != last) { - return (s32)&D_8018E0A8; - } - i++; - if ((u32)s1[0x38] < (u32)lo) { - return (s32)&D_8018E0A8; - } - goto bot; - } - i++; - bot: - d--; - } while (i < s0); - return 0; -} - - - - -// @class: schedule -// @stuck: none — MATCH -extern void func_80029124(s32, s32); -extern void func_800291C8(s32, s32); -extern void func_80016714(void *a0, s32 a1); -extern int D_801E96F0[]; - -void func_801622C4(void) -{ - int *p; - int i; - - ((int (*)(int, int))func_80029124)(0x141, 1); - ((int (*)(int, int))func_800291C8)(8, 0); - i = 0; - p = &D_801E96F0; - do { - ((int (*)(int, int))func_80016714)(*p, 0x38); - p = p + 1; - i = i + 1; - } while (i < 3); -} - - - -DEFINE_func_80162330() /* dedup: shared engine-core @0x80162330 (src/shared) */ - - -DEFINE_func_8016236C() /* dedup: shared engine-core @0x8016236C (src/shared) */ - -DEFINE_func_801623B8() /* dedup: shared engine-core @0x801623B8 (src/shared) */ - -DEFINE_func_80162414() /* dedup: shared engine-core @0x80162414 (src/shared) */ - -// @class: regalloc-order -// @stuck: none — MATCH (160 ins, relocation-masked). Keys: (1) base=&D_800AF630 hoisted, pinned $s2; -// uVar2 UNPINNED (a $s3 pin forced the final `uVar2 & 0x7FFF` in-place+early, breaking the lh delay -// slot). (2) item pinned $s1, dest INLINED (D_801D96Dx in both call args) so it lands $s0 AFTER a0. -// (3) base assigned BEFORE the func_800291DC call so the return-copy `addu $s3,$v0` schedules after -// the base lui/addiu. (4) THE MOVE: each block's `addu $s1,$v0,$zero` = compute `base+off` into a -// $v0-PINNED temp `t`, then `item = t`. Two distinct hard regs ($v0 vs $s1) can't coalesce, forcing -// the exact `addiu $v0,$s2,off ; addu $s1,$v0` pair the target emits (plain `item=base+off` coalesces -// into one `addiu $s1` — 3 ins short). (5) store D_801E9748[i] via `extern int D_801E9748[]` (folds -// %lo, consistent with func_80162760). Coord = (s16)(-D_800AF7Bx / 2 + K) (negu; srl 31; addu; sra 1). - -#include "common.h" - - - - - - - - -s32 func_80162438(s32 _unused0) { - extern void func_80024054(void *, void *); - extern void func_8001CE28(void *, void *); - extern void func_8001CE68(void *, void *); - extern void func_800242D0(s32, void *, s32); - extern s32 func_801626B8(void); - extern void func_80162760(void); - extern u8 D_8018E0D8[]; - extern s32 D_8018E0F0; - extern u8 D_801E9754[]; - extern u8 D_801E977C[]; - extern u8 D_801E9798[]; - extern int D_801E9748[]; - extern u16 D_800B5BD8; - extern u16 D_800B5C10; - extern u16 D_800B5C48; - extern u16 D_800AF7BC; - extern u16 D_800AF7BE; - extern s16 D_800B5BE0; - extern s16 D_800B5BE2; - extern s16 D_800B5C04; - extern u8 D_800B5BFF; - extern s16 D_800B5C18; - extern s16 D_800B5C1A; - extern s16 D_800B5C3C; - extern u8 D_800B5C37; - extern s16 D_800B5C50; - extern s16 D_800B5C52; - extern s16 D_800B5C74; - - u32 uVar2; - register u8 *base __asm__("$18"); - register u8 *item __asm__("$17"); - - base = &(*(u8 *)&D_800AF630); - uVar2 = func_800291DC(0x12); - if ((uVar2 & 0x8000) != 0) { - if (D_800B5BD8 == 0) { - register u8 *t __asm__("$2") = base + 0x65A8; - item = t; - D_801E9748[0] = (s32)item; - func_80024054(D_8018E0D8, D_801E9754); - func_8001CE28(item, D_801E9754); - D_800B5C04 = 1; - D_800B5BFF = 1; - D_800B5BE0 = -D_800AF7BC / 2 + 0xD0; - D_800B5BE2 = -D_800AF7BE / 2 + 0x28; - } - if (D_800B5C10 == 0) { - register u8 *t __asm__("$2") = base + 0x65E0; - item = t; - D_801E9748[1] = (s32)item; - func_80024054(((u8 *)&D_8018E0F0), D_801E977C); - func_8001CE28(item, D_801E977C); - D_800B5C3C = 1; - D_800B5C37 = 1; - D_800B5C18 = -D_800AF7BC / 2 + 0xD0; - D_800B5C1A = -D_800AF7BE / 2 + 0x30; - } - if (D_800B5C48 == 0) { - register u8 *t __asm__("$2") = base + 0x6618; - item = t; - D_801E9748[2] = (s32)item; - func_800242D0((s16)func_801626B8(), D_801E9798, 0x84); - func_8001CE68(item, D_801E9798); - D_800B5C74 = 1; - D_800B5C50 = -D_800AF7BC / 2 + 0xD0; - D_800B5C52 = -D_800AF7BE / 2 + 0x10; - } - func_800242D0((s16)func_801626B8(), D_801E9798, 0x84); - if ((uVar2 & 0x7FFF) == (s32)(*(s16 *)&D_80078EB0)) { - func_80162760(); - } - } -} - - - -DEFINE_func_801626B8() /* dedup: shared engine-core @0x801626B8 (src/shared) */ - -DEFINE_func_80162714() /* dedup: shared engine-core @0x80162714 (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (24 ins). do-while; load+call first, then p++ and i++ AFTER the call so gcc schedules p++/arg ahead of jal and i++ into the delay slot. - -extern void func_800291C8(s32, s32); -extern void func_80016714(void *a0, s32 a1); - -extern int D_801E9748[]; - -void func_80162760(void) -{ - int *p; - int i; - - func_800291C8(0x12, 0); - i = 0; - p = D_801E9748; - do { - int v = *p; - ((void (*)(int, int))func_80016714)(v, 0x38); - p = p + 1; - i = i + 1; - } while (i < 3); -} - - -DEFINE_func_801627C0() /* dedup: shared engine-core @0x801627C0 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (19 ins, relocation-masked) -// -// Tiny dispatcher: byte count at D_8011F750 (offset 0 of a 0x58-byte ctl struct; -// cf. func_801627C0 which calls func_80016714(&D_8011F750, 0x58)). If nonzero, -// call D_8018E110[count - 1]() through a word-stride fn-pointer table. -// -// Two idioms combined to match gcc-2.7.2 -O2: -// 1. The target MATERIALIZES &D_8011F750 (lui;addiu %lo) into $a0 before the lbu -// instead of folding %lo into the load. A direct global byte read always -// %lo-folds (lui;lbu %lo), so force the full-address materialization with the -// §21 re-tie barrier __asm__ __volatile__("":"=r"(p):"0"(p)) and pin the -// pointer to $a0 with register __asm__("$4") to get the exact register. -// 2. Writing `idx = idx - 1;` as its OWN statement (not inline D_8018E110[count-1]) -// keeps the array index/decrement separate so %lo(D_8018E110) folds into the -// dispatch load (lw %lo(...)($at)) — the inline form instead constant-folds the -// -1*4 into a -4 load offset and drops the %lo fold (1 ins short, schedule off). - - -void func_801627E8(void) -{ - - extern s32 D_8011F750; /* canonical: engine_core.h `extern s32 D_8011F750;` (read here as a byte) */ - extern void (*D_8018E110[])(void); /* word-stride table of dispatch fn pointers */ - register u8 *p __asm__("$4") = (u8 *)&D_8011F750; - s32 idx; - - __asm__ __volatile__("" : "=r"(p) : "0"(p)); /* materialize &D_8011F750 into $a0 (defeat %lo-fold of the lbu) */ - idx = *p; - if (idx != 0) { - idx = idx - 1; - D_8018E110[idx](); - } -} - - - -DEFINE_func_80162834() /* dedup: shared engine-core @0x80162834 (src/shared) */ - - - -// @class: plumbing -// @stuck: none — MATCH (stub: alloc + global init + two calls; $s0 holds param_1 across calls) - -extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80162968(s32 a0); -extern s32 func_80162ACC(u8 *a0); - -extern u8 D_800B5CB8; -extern s32 D_8018E104; -extern s32 D_800B5CBC; -extern u8 D_800B5CDF; -extern s32 D_800B5CEC; - -void func_80162870(s32 param_1) { - *(s32 *)(param_1 + 8) = (s32)&D_800B5CB8; - func_8001CB6C(&D_800B5CB8, (s32)&D_8018E104, 0x250, 0x1A0); - D_800B5CEC = param_1 + 0xC; - D_800B5CDF = 0x14; - D_800B5CBC |= 0x60000000; - func_80162968(param_1); - func_80162ACC((u8 *)param_1); -} - - -DEFINE_func_801628F4() /* dedup: shared engine-core @0x801628F4 (src/shared) */ - -DEFINE_func_80162968() /* dedup: shared engine-core @0x80162968 (src/shared) */ - -DEFINE_func_80162AC0() /* dedup: shared engine-core @0x80162AC0 (src/shared) */ - -DEFINE_func_80162ACC() /* dedup: shared engine-core @0x80162ACC (src/shared) */ - -DEFINE_func_80162AE0() /* dedup: shared engine-core @0x80162AE0 (src/shared) */ - -DEFINE_func_80162AF4() /* dedup: shared engine-core @0x80162AF4 (src/shared) */ - -DEFINE_func_80162B1C() /* dedup: shared engine-core @0x80162B1C (src/shared) */ - -DEFINE_func_80162CC4() /* dedup: shared engine-core @0x80162CC4 (src/shared) */ - -extern void func_80016714(void *a0, s32 a1); -void aF80162CCC(u8 *a0) __asm__("func_80162CCC"); -DEFINE_func_80162CCC() /* dedup: shared engine-core @0x80162CCC (src/shared) */ - - -DEFINE_func_80162D28() /* dedup: shared engine-core @0x80162D28 (src/shared) */ - -DEFINE_func_80162D88() /* dedup: shared engine-core @0x80162D88 (src/shared) */ - -DEFINE_func_80162DE8() /* dedup: shared engine-core @0x80162DE8 (src/shared) */ - -DEFINE_func_80162E48() /* dedup: shared engine-core @0x80162E48 (src/shared) */ - -DEFINE_func_80162EA8() /* dedup: shared engine-core @0x80162EA8 (src/shared) */ - -DEFINE_func_80162F08() /* dedup: shared engine-core @0x80162F08 (src/shared) */ - -DEFINE_func_80162F60() /* dedup: shared engine-core @0x80162F60 (src/shared) */ - -DEFINE_func_80162F80() /* dedup: shared engine-core @0x80162F80 (src/shared) */ - -DEFINE_func_80162FA0() /* dedup: shared engine-core @0x80162FA0 (src/shared) */ - -DEFINE_func_80162FC0() /* dedup: shared engine-core @0x80162FC0 (src/shared) */ - -DEFINE_func_80162FF4() /* dedup: shared engine-core @0x80162FF4 (src/shared) */ - -DEFINE_func_801630C4() /* dedup: shared engine-core @0x801630C4 (src/shared) */ - -DEFINE_func_80163194() /* dedup: shared engine-core @0x80163194 (src/shared) */ - -DEFINE_func_80163234() /* dedup: shared engine-core @0x80163234 (src/shared) */ - -DEFINE_func_8016325C() /* dedup: shared engine-core @0x8016325C (src/shared) */ - -DEFINE_func_801632E0() /* dedup: shared engine-core @0x801632E0 (src/shared) */ - -DEFINE_func_801632F0() /* dedup: shared engine-core @0x801632F0 (src/shared) */ - -DEFINE_func_80163328() /* dedup: shared engine-core @0x80163328 (src/shared) */ - -DEFINE_func_801633A8() /* dedup: shared engine-core @0x801633A8 (src/shared) */ - -// @class: struct -// @stuck: none — MATCH (21 ins, relocation-masked) - - -s32 func_80163408(s32 param_1, s32 param_2, s32 param_3, s32 param_4) { - extern int func_8016345C(int, unsigned short, int, unsigned short, void *); - extern unsigned char D_801E8DBC[8]; - - unsigned char sp18[8]; - memcpy(sp18, D_801E8DBC, 8); - return func_8016345C(((int)param_1), ((int)param_2), ((int)param_3), ((int)param_4), sp18); -} - - - -DEFINE_func_8016345C() /* dedup: shared engine-core @0x8016345C (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (unaligned 8-byte memcpy from global into stack buffer, then forward to callee) - -extern char D_801E8DBC[8]; - -extern void *memcpy(void *dst, const void *src, unsigned int n); -extern void func_80163534(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, u16 * a5); - -void func_801634D8(s32 param_1, u16 param_2, u16 param_3, s32 param_4, u16 param_5) -{ - char buf[8]; - - memcpy(buf, D_801E8DBC, 8); - ((void (*)(s32, u16, u16, s32, u16, s32))func_80163534)(param_1, param_2, param_3, param_4, param_5, (s32)buf); -} - - -DEFINE_func_80163534() /* dedup: shared engine-core @0x80163534 (src/shared) */ - - -DEFINE_func_80163664() /* dedup: shared engine-core @0x80163664 (src/shared) */ - -DEFINE_func_801636D0() /* dedup: shared engine-core @0x801636D0 (src/shared) */ - - -DEFINE_func_80163764() /* dedup: shared engine-core @0x80163764 (src/shared) */ - - -DEFINE_func_8016380C() /* dedup: shared engine-core @0x8016380C (src/shared) */ - -DEFINE_func_801638A0() /* dedup: shared engine-core @0x801638A0 (src/shared) */ - -DEFINE_func_80163950() /* dedup: shared engine-core @0x80163950 (src/shared) */ - - -DEFINE_func_80163A58() /* dedup: shared engine-core @0x80163A58 (src/shared) */ - - -DEFINE_func_80163A94() /* dedup: shared engine-core @0x80163A94 (src/shared) */ - -DEFINE_func_80163C2C() /* dedup: shared engine-core @0x80163C2C (src/shared) */ - - -void func_80163EC8(s32 param_1) { - extern Blk8 D_801E8DC4; - extern u16 D_800B99DA; - extern u8 func_801656D0(s32 a0, s32 a1); - extern s32 func_80012F74(s32 a0, s32 a1, s32 a2, s32 a3); - extern void func_80015978(s32 a0, s32 *a1); - extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); - - Blk8 in; - u16 out[4]; - s16 buf[4]; - s32 psVar6; - s32 iVar8; - s32 iVar7; - register s32 uVar5 __asm__("$2"); /* PIN (flagged): uVar5 -> $v0 */ - u16 uVar4; - u8 uVar3; - - in = D_801E8DC4; - psVar6 = *(s32 *)(param_1 + 0x4c); - iVar8 = *(s32 *)(param_1 + 0x20); - func_80162D88((s32 *)param_1); - - if (*(s32 *)(psVar6 + 0x184) == 0) { - uVar5 = *(s32 *)(psVar6 + 0x44); - *(s16 *)(psVar6 + 0x18a) = 0; - *(s16 *)(psVar6 + 0x188) = 0; - *(s32 *)(psVar6 + 0x44) = uVar5 & ~0x20; - func_80146CA0((void *)param_1); - func_80146CA0((void *)param_1); - return; - } - if (*(s16 *)(*(s32 *)(psVar6 + 0x184) + 0x36) == *(u16 *)(psVar6 + 0x194)) { - goto LAB_matched; - } - *(s32 *)(psVar6 + 0x184) = 0; - uVar5 = *(s32 *)(psVar6 + 0x44); - *(s16 *)(psVar6 + 0x18a) = 0; - *(s16 *)(psVar6 + 0x188) = 0; - *(s32 *)(psVar6 + 0x44) = uVar5 & ~0x20; - func_80146CA0((void *)param_1); - func_80146CA0((void *)param_1); - return; - -LAB_matched: - *(s16 *)(psVar6 + 0x18a) = *(u16 *)(psVar6 + 0x18a) + 1; - if ((D_800B99DA & 3) == 0) { - if (*(s16 *)(psVar6 + 0x188) >= *(u8 *)(param_1 + 0x67)) { - *(s16 *)(psVar6 + 0x188) = *(s16 *)(psVar6 + 0x188) - *(u8 *)(param_1 + 0x67); - } else { - *(s16 *)(psVar6 + 0x188) = 0; - } - if (*(s16 *)(psVar6 + 0x188) < 0) { - *(s16 *)(psVar6 + 0x188) = 0; - } - } - - *(s16 *)(param_1 + 0x66) = *(u16 *)(param_1 + 0x66) + 0x40; - uVar5 = func_80148800((s32 *)psVar6); - if ((uVar5 & 0x80) != 0) { - *(s16 *)(param_1 + 0x66) = 0; - uVar3 = func_801656D0(psVar6, func_8014CA00(*(s32 *)(psVar6 + 0x184)) & 0xff); - *(s16 *)(psVar6 + 0x188) = *(u16 *)(psVar6 + 0x188) + uVar3; - *(s16 *)(iVar8 + 0x1a) = 0x4000; - *(s16 *)(iVar8 + 0x18) = 0x4000; - *(s32 *)(iVar8 + 0x48) = *(s16 *)(param_1 + 0x58); - *(s32 *)(iVar8 + 0x4c) = *(s16 *)(param_1 + 0x5a); - *(s32 *)(iVar8 + 0x50) = *(s16 *)(param_1 + 0x5c); - ((void (*)(s32, s32, s32))func_80149350)(param_1, (s32)&in, (s32)out); - *(s16 *)(param_1 + 0x6) = out[0]; - *(s16 *)(param_1 + 0xa) = out[1]; - *(s16 *)(param_1 + 0xe) = out[2]; - } - - if (0x80 < *(s16 *)(psVar6 + 0x188)) { - *(s16 *)(psVar6 + 0x188) = 0x80; - } - if (*(s16 *)(psVar6 + 0x188) >= 0x80) { - iVar7 = *(s32 *)(psVar6 + 0x184); - if (iVar7 != 0) { - func_80015978(iVar7 + 4, (s32 *)buf); - buf[3] = 0; - uVar4 = func_80156370(0xe); - func_8014C4AC(iVar7, 0xe, uVar4, buf, *(s16 *)(iVar8 + 0x12)); - func_80146994(0x33, param_1, 0, iVar7); - } - } else { - if (*(s16 *)(psVar6 + 0x18a) < 0x80 && *(u16 *)psVar6 != 0x19) { - goto LAB_end; - } - iVar7 = *(s32 *)(psVar6 + 0x184); - if (iVar7 != 0) { - func_80015978(iVar7 + 4, (s32 *)buf); - buf[3] = 0; - uVar4 = func_80156370(0x21); - func_8014C4AC(iVar7, 0x21, uVar4, buf, *(s16 *)(iVar8 + 0x12)); - if ((*(s32 *)(iVar7 + 0xb4) & 0x40000) != 0) { - func_8014AD30(param_1, (u16 *)buf, 0, *(s16 *)(iVar7 + 0x60)); - } - } - } - - uVar5 = func_8014CA00(iVar7); - *(s32 *)(psVar6 + 0x184) = uVar5; - if (0x1e < (u32)uVar5) { - *(s32 *)(psVar6 + 0x184) = 0; - } - func_80146E90((s32 *)param_1, 0x20); - *(s32 *)(psVar6 + 0x44) = *(s32 *)(psVar6 + 0x44) & ~0x20; - func_80147324(0x449); - func_80146CA0((void *)param_1); - func_80146CA0((void *)param_1); - -LAB_end: - uVar4 = func_80012F74(*(s16 *)(iVar8 + 0x1a), 0x1800, 3, 1); - *(s16 *)(iVar8 + 0x1a) = uVar4; - *(s16 *)(iVar8 + 0x18) = uVar4; - uVar4 = func_80012F74(*(s16 *)(param_1 + 0x6), *(s16 *)(param_1 + 0x58), 8, 1); - *(s16 *)(param_1 + 0x6) = uVar4; - uVar4 = func_80012F74(*(s16 *)(param_1 + 0xa), *(s16 *)(param_1 + 0x5a), 8, 1); - *(s16 *)(param_1 + 0xa) = uVar4; - uVar4 = func_80012F74(*(s16 *)(param_1 + 0xe), *(s16 *)(param_1 + 0x5c), 8, 1); - *(s16 *)(param_1 + 0xe) = uVar4; -} - - -DEFINE_func_80164270() /* dedup: shared engine-core @0x80164270 (src/shared) */ - -DEFINE_func_801642AC() /* dedup: shared engine-core @0x801642AC (src/shared) */ - -DEFINE_func_8016432C() /* dedup: shared engine-core @0x8016432C (src/shared) */ - -DEFINE_func_80164410() /* dedup: shared engine-core @0x80164410 (src/shared) */ - -DEFINE_func_80164418() /* dedup: shared engine-core @0x80164418 (src/shared) */ - -DEFINE_func_80164530() /* dedup: shared engine-core @0x80164530 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH expected (fn-ptr table dispatch via u16 idx, $s0 holds *(s32*)(p+0x20) across the call) - -extern void (*D_8018E170[])(void); -extern void func_80162D28(s32 *a0); - -void func_80164744(s32 param_1) -{ - s32 iVar1; - - iVar1 = *(s32 *)(param_1 + 0x20); - D_8018E170[*(u16 *)(param_1 + 2)](); - if (iVar1 != 0) { - ((void (*)(s32))func_80162D28)(param_1); - } -} - - - - -// @class: other -// @stuck: none — MATCH (relocation-masked); key was `if (iVar1 != 0) { big } else { func_80164930 }` (non-zero case first → beqz, not bnez) - - -extern void func_8014659C(void); -extern void func_8001C810(s32 a0, s32 a1); -extern void func_80164A74(s32 *a0); -extern void func_80146CA0(void *a0); -extern void func_80164930(s32 a); - -extern u16 D_800DF2E0; -extern s32 D_8018E138; -extern s16 D_8018E16C; -extern s16 D_8018E16A; -extern s16 D_8018E168; - -void func_801647A4(int param_1) { - s32 iVar1; - - iVar1 = ((s32 (*)(void))func_8014659C)(); - *(s32 *)(param_1 + 0x20) = iVar1; - if (iVar1 != 0) { - ((void (*)(s32, void *))func_8001C810)(iVar1, &D_800DF2E0); - *(s32 **)(iVar1 + 0x80) = &D_8018E138; - *(u32 *)(iVar1 + 4) = *(u32 *)(iVar1 + 4) | 0x50000000; - *(u16 *)(iVar1 + 0x2c) = *(u16 *)(iVar1 + 0x2c) | 0xb0; - D_8018E16C = 0x80; - D_8018E16A = 0x80; - D_8018E168 = 0x80; - *(u16 *)(iVar1 + 0x1a) = 0; - *(u16 *)(param_1 + 0x60) = 0; - *(u16 *)(param_1 + 0x62) = 0x200; - ((s32 (*)(s32))func_80164A74)(param_1); - ((void (*)(s32))func_80146CA0)(param_1); - } else { - func_80164930(param_1); - } -} - - -DEFINE_func_80164864() /* dedup: shared engine-core @0x80164864 (src/shared) */ - -// @class: regalloc-order — wave-3 real-TU crack (§42a); cracked at Max. -// Fix: D_8018E16C read needs direct-addressed `lhu` (u16). Cannot use `*(u16*)&D_8018E16C` -// (forces &sym into a held reg -> drift) NOR a block-scoped `extern u16` (conflicting-types -// ERROR vs the ambient s16, cc1 exit 33). Solution: flip the file-scope decl (5802) to u16 — -// byte-neutral to the only other user (func_801647A4 store-only) — and reference directly. - - -void func_80164930(s32 param_1) { - int iVar3 = *(int *)(((int)param_1) + 0x20); - if (*(int *)(((int)param_1) + 0x50) == 0) { - short sVar1 = *(u16 *)(iVar3 + 0x1c) + 0x100; - short nv; - *(short *)(iVar3 + 0x1c) = sVar1; - *(short *)(iVar3 + 0x18) = sVar1; - *(short *)(iVar3 + 0x12) = *(u16 *)(iVar3 + 0x12) + 0x71; - nv = D_8018E16C - 8; - D_8018E16C = nv; - D_8018E16A = nv; - D_8018E168 = nv; - if (nv < -0x80) { - int i, lim; - Ent_80164930_80164930 *p; - for (i = 0, lim = 0x19, p = ((Ent_80164930_80164930 *)&D_8011F9D0); i < 0x14; i++) { - if (p->f0 == lim && p->f50 != 0) { - ((void(*)(Ent_80164930_80164930 *))func_80162CCC)(p); - } - p++; - } - ((void(*)(Ent_80164930_80164930 *))func_80162CCC)((Ent_80164930_80164930 *)((int)param_1)); - } else { - ((void(*)(int))func_80164ACC)(((int)param_1)); - } - } else { - short sVar1 = *(u16 *)(iVar3 + 0x1c) + 0x40; - u16 uVar2; - *(short *)(iVar3 + 0x1c) = sVar1; - *(short *)(iVar3 + 0x18) = sVar1; - uVar2 = *(u16 *)(iVar3 + 0x1a) - 0x200; - *(u16 *)(iVar3 + 0x1a) = uVar2; - if ((int)((unsigned)uVar2 << 0x10) < 0) { - *(short *)(iVar3 + 0x1a) = 0; - } - *(short *)(iVar3 + 0x12) = *(u16 *)(iVar3 + 0x12) - 0x71; - } -} - - - -DEFINE_func_80164A74() /* dedup: shared engine-core @0x80164A74 (src/shared) */ - -DEFINE_func_80164ACC() /* dedup: shared engine-core @0x80164ACC (src/shared) */ - - -DEFINE_func_80164BA0() /* dedup: shared engine-core @0x80164BA0 (src/shared) */ - - - -extern void func_80146578(void); -extern void func_8001CD50(s32 a0, s32 a1); -extern void func_800233CC(void *, unsigned short); -extern void func_80164DD0(s32 a0); -extern void func_80146CA0(void *a0); -extern void func_80164DB0(void); - -extern u8 D_801E97A8; -extern u8 D_801E97A9; -extern u8 D_801E97AA; -extern u8 D_801E97AB; -extern u8 D_801E97AC; -extern u8 D_801E97AD; -extern u8 D_801E97AE; -extern u8 D_801E97AF; - -void func_80164BDC(s32 param_1) -{ - register s32 p1 __asm__("$17"); /* $s1 */ - register s32 iVar1 __asm__("$16"); /* $s0 */ - register s32 base __asm__("$18"); /* $s2 */ - - p1 = param_1; - iVar1 = ((s32 (*)(void))func_80146578)(); - base = (s32)&D_801E97A8; - *(s32 *)(p1 + 0x20) = iVar1; - if (iVar1 != 0) { - func_8001CD50(iVar1, base); - ((void (*)(s32, s32))func_800233CC)(base, 0x60); - *(u32 *)(iVar1 + 4) = *(u32 *)(iVar1 + 4) | 0x50000000; - D_801E97A9 = 0xf0; - *(u8 *)base = 0xf0; - D_801E97AA = 0xc0; - D_801E97AE = 0; - D_801E97AD = 0; - D_801E97AC = 0; - D_801E97AF = 0; - D_801E97AB = 0; - *(s16 *)(iVar1 + 0x1e) = 0xccc; - *(s16 *)(iVar1 + 0x10) = 0x400; - *(s16 *)(p1 + 0x60) = 0x700; - *(s16 *)(p1 + 0x62) = -0x60; - func_80164DD0(p1); - ((void (*)(s32))func_80146CA0)(p1); - } else { - ((void (*)(s32))func_80164DB0)(p1); - } -} - - -DEFINE_func_80164CD4() /* dedup: shared engine-core @0x80164CD4 (src/shared) */ - -DEFINE_func_80164D4C() /* dedup: shared engine-core @0x80164D4C (src/shared) */ - -DEFINE_func_80164DB0() /* dedup: shared engine-core @0x80164DB0 (src/shared) */ - -DEFINE_func_80164DD0() /* dedup: shared engine-core @0x80164DD0 (src/shared) */ - - - - - -extern u8 D_801E97A8; -extern u8 D_801E97A9; -extern u8 D_801E97AA; - -s32 func_80164E40(void) { - u8 *p = &D_801E97A8; - if (*p != 0) { - *p -= 0x10; - } - if (D_801E97A9 != 0) { - D_801E97A9 -= 0x10; - } - if (D_801E97AA != 0) { - D_801E97AA -= 0x10; - } - return *(s32 *)p == 0; -} - - - -DEFINE_func_80164EA4() /* dedup: shared engine-core @0x80164EA4 (src/shared) */ - - - -// @class: struct -// @stuck: none — MATCH - - /* stride 0x10 */ -extern DStruct D_801E97F4[]; - -extern void func_80165124(void *a0); -extern void func_80146CA0(void *a0); - -void func_80164EE0(int param_1) -{ - int i; - - for (i = 7; i >= 0; i--) { - D_801E97F4[i].f0 = 0; - } - *(short *)(param_1 + 0x2e) = 0x4000; - *(short *)(param_1 + 0x2c) = 0x4000; - *(short *)(param_1 + 0x60) = 0; - *(short *)(param_1 + 0x62) = 0; - ((void (*)(int))func_80165124)(param_1); - *(short *)(param_1 + 0x66) = 0; - ((void (*)(int))func_80146CA0)(param_1); -} - - -DEFINE_func_80164F44() /* dedup: shared engine-core @0x80164F44 (src/shared) */ - -DEFINE_func_80165024() /* dedup: shared engine-core @0x80165024 (src/shared) */ - -DEFINE_func_80165064() /* dedup: shared engine-core @0x80165064 (src/shared) */ - -DEFINE_func_801650C4() /* dedup: shared engine-core @0x801650C4 (src/shared) */ - -DEFINE_func_80165124() /* dedup: shared engine-core @0x80165124 (src/shared) */ - -// @class: struct -// @stuck: none — MATCH (30 ins) -// -// Unaligned slot-fill: loop over 8 slots (0x10 stride) of a global table, -// fill the first free one (field @0xC == 0). Two unaligned block copies from -// param_1 (packed struct assigns -> lwl/lwr/swl/swr). Key: recompute -// p = &D_801E97E8[i] each iteration (NOT p++) so gcc reduces base+i*0x10 into -// a SINGLE pointer IV with immediate offsets 0/8/0xC. Hand-incrementing p makes -// combine_givs split the field offsets into a second pointer IV (+2 ins). - - - - -s32 func_80165140(s32 param_1) { - extern Slot_80165140 D_801E97E8[8]; - - int i; - Slot_80165140 *p; - for (i = 0; i < 8; i++) { - p = &D_801E97E8[i]; - if (p->used == 0) { - p->used = 8; - p->a = *(B8_80165140 *)(((u8 *)param_1) + 0x2c); - p->b = *(B4_80165140 *)(((u8 *)param_1) + 0x50); - return; - } - } -} - - - - -// @class: schedule -// @stuck: none — MATCH (pins $s2/$s1/$s0 + zero-code barrier hoists $a0 copy into beqz delay slot) - -extern void func_80165240(void *param_1, void *param_2, void *param_3); -extern s32 D_801E97E8; - -void func_801651B8(void * param_1) -{ - register s32 *puVar1 __asm__("$16"); /* $s0 */ - register s32 iVar2 __asm__("$17"); /* $s1 */ - register s32 p __asm__("$18"); /* $s2 */ - - p = param_1; - ((s32 (*)(s32, s32, s32))func_80165240)(p, p + 0x2c, p + 0x50); - iVar2 = 0; - puVar1 = &D_801E97E8; - do { - if (puVar1[3] != 0) { - s32 a0v = p; - __asm__ __volatile__("" : "=r"(a0v) : "0"(a0v)); - ((s32 (*)(s32, s32, s32))func_80165240)(a0v, (s32)puVar1, (s32)(puVar1 + 2)); - puVar1[3] = puVar1[3] + -1; - } - iVar2 = iVar2 + 1; - puVar1 = puVar1 + 4; - } while (iVar2 < 8); -} - - -extern void func_80016ED4(void *a0); -extern s32 func_80017DC4(void *a0, void *a1); - -void func_80165240(void *param_1, void *param_2, void *param_3) -{ - - extern u8 D_8018E1A0[]; - extern u32 D_8018E1C0, D_8018E1C4, D_8018E1C8, D_8018E1CC; - extern u32 D_8018E1C0, D_8018E1C4, D_8018E1C8, D_8018E1CC; - extern u32 D_8018E1C0, D_8018E1C4, D_8018E1C8, D_8018E1CC; - extern u32 D_8018E1C0, D_8018E1C4, D_8018E1C8, D_8018E1CC; - u8 prim[0x40]; /* $sp+0x10 .. 0x50 */ - u8 mat[0x20]; /* $sp+0x50 .. 0x70 */ - u8 *p = prim; - - func_80017DC4(param_2, mat); - ApplyMatrixSV(mat, &D_8018E1A0[0x00], p); - ApplyMatrixSV(mat, &D_8018E1A0[0x08], prim + 0x08); - ApplyMatrixSV(mat, &D_8018E1A0[0x10], prim + 0x10); - ApplyMatrixSV(mat, &D_8018E1A0[0x18], prim + 0x18); - - *(s16 *)(prim + 0x04) = 3; - prim[0x38] = 0x2c; - *(u32 *)(prim + 0x20) = D_8018E1C8; - *(u32 *)(prim + 0x24) = D_8018E1C0; - *(u32 *)(prim + 0x28) = D_8018E1CC; - *(u32 *)(prim + 0x2c) = D_8018E1C4; - *(struct W4 *)(prim + 0x30) = *(struct W4 *)param_3; - *(u32 *)(prim + 0x34) = 0x50000000; - - func_80016ED4(p); -} - - -DEFINE_func_8016533C() /* dedup: shared engine-core @0x8016533C (src/shared) */ - -DEFINE_func_80165374() /* dedup: shared engine-core @0x80165374 (src/shared) */ - -DEFINE_func_801653B8() /* dedup: shared engine-core @0x801653B8 (src/shared) */ - -DEFINE_func_801653F4() /* dedup: shared engine-core @0x801653F4 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (54 ins) - -extern u8 D_80078E78[]; -extern u8 D_80078EC1; -extern void (*D_8018E1D0[])(void); -extern u8 func_80165658(s32 a0, s32 a1); -extern void func_800CAE0C(s32 a0); - -void func_801654A8(s32 arg0) -{ - u8 *s1 = D_80078E78; - - if (*(u16 *)arg0 == 0x16) { - return; - } - if (*(u16 *)arg0 != 0x1A) { - if ((*(s32 *)(arg0 + 0x1F8) & 0x80FFFFFF) == 0) { - if (func_80165658(arg0, D_80078EC1) & 0x80) { - ((void (*)(s32))D_8018E1D0[D_80078EC1 & 0x7F])(arg0); - } - } - } - if (*(u16 *)arg0 == 0x16) { - return; - } - if (*(u16 *)arg0 == 0x1A) { - return; - } - if (s1[0x49] == 0x19) { - func_800CAE0C(arg0); - } -} - - - -// @class: struct -// @stuck: none — MATCH (function-pointer-array dispatch; & 0x80 branch + & 0x7f index fold) - -extern u8 D_80078EC5; -extern u8 D_80078EC1; -extern void (*D_8018E1D0[])(void); -extern void func_80165B28(void *a0); - -void func_80165580(s32 _arg0) -{ - if (D_80078EC5 & 0x80) { - ((void (*)(void))func_80165B28)(); - } else { - D_8018E1D0[D_80078EC1 & 0x7F](); - } -} - - -DEFINE_func_801655E4() /* dedup: shared engine-core @0x801655E4 (src/shared) */ - -DEFINE_func_80165624() /* dedup: shared engine-core @0x80165624 (src/shared) */ - - -DEFINE_func_80165658() /* dedup: shared engine-core @0x80165658 (src/shared) */ - - - -DEFINE_func_80165670() /* dedup: shared engine-core @0x80165670 (src/shared) */ - - -DEFINE_func_80165694() /* dedup: shared engine-core @0x80165694 (src/shared) */ - - -DEFINE_func_801656D0() /* dedup: shared engine-core @0x801656D0 (src/shared) */ - - - -DEFINE_func_801656E8() /* dedup: shared engine-core @0x801656E8 (src/shared) */ - - - -DEFINE_func_80165700() /* dedup: shared engine-core @0x80165700 (src/shared) */ - - -DEFINE_func_80165718() /* dedup: shared engine-core @0x80165718 (src/shared) */ - -DEFINE_func_80165770() /* dedup: shared engine-core @0x80165770 (src/shared) */ - -DEFINE_func_801657A0() /* dedup: shared engine-core @0x801657A0 (src/shared) */ - -DEFINE_func_801657D8() /* dedup: shared engine-core @0x801657D8 (src/shared) */ - -DEFINE_func_80165840() /* dedup: shared engine-core @0x80165840 (src/shared) */ - -DEFINE_func_80165874() /* dedup: shared engine-core @0x80165874 (src/shared) */ - -DEFINE_func_801658DC() /* dedup: shared engine-core @0x801658DC (src/shared) */ - -DEFINE_func_801658EC() /* dedup: shared engine-core @0x801658EC (src/shared) */ - -DEFINE_func_80165900() /* dedup: shared engine-core @0x80165900 (src/shared) */ - -DEFINE_func_80165910() /* dedup: shared engine-core @0x80165910 (src/shared) */ - -DEFINE_func_80165938() /* dedup: shared engine-core @0x80165938 (src/shared) */ - -DEFINE_func_80165958() /* dedup: shared engine-core @0x80165958 (src/shared) */ - -DEFINE_func_80165978() /* dedup: shared engine-core @0x80165978 (src/shared) */ - -DEFINE_func_80165988() /* dedup: shared engine-core @0x80165988 (src/shared) */ - -DEFINE_func_801659A8() /* dedup: shared engine-core @0x801659A8 (src/shared) */ - -DEFINE_func_801659B8() /* dedup: shared engine-core @0x801659B8 (src/shared) */ - -DEFINE_func_801659CC() /* dedup: shared engine-core @0x801659CC (src/shared) */ - - - -DEFINE_func_801659DC() /* dedup: shared engine-core @0x801659DC (src/shared) */ - - -DEFINE_func_80165A18() /* dedup: shared engine-core @0x80165A18 (src/shared) */ - -DEFINE_func_80165A20() /* dedup: shared engine-core @0x80165A20 (src/shared) */ - -DEFINE_func_80165A50() /* dedup: shared engine-core @0x80165A50 (src/shared) */ - -DEFINE_func_80165A78() /* dedup: shared engine-core @0x80165A78 (src/shared) */ - - -extern u8 D_80078EC1; -extern void (*D_8018E3C4[])(void); - -void func_80165AC8(void) { - D_8018E3C4[D_80078EC1 & 0x7F](); -} - - -DEFINE_func_80165B08() /* dedup: shared engine-core @0x80165B08 (src/shared) */ - -DEFINE_func_80165B10() /* dedup: shared engine-core @0x80165B10 (src/shared) */ - -DEFINE_func_80165B18() /* dedup: shared engine-core @0x80165B18 (src/shared) */ - -DEFINE_func_80165B20() /* dedup: shared engine-core @0x80165B20 (src/shared) */ - - -extern void (*D_8018E440[])(void); - -void func_80165B28(void *a0) { - *(u32 *)((s32)a0 + 0x44) |= 8; - D_8018E440[*(u8 *)((s32)a0 + 0x197)](); -} - - -DEFINE_func_80165B6C() /* dedup: shared engine-core @0x80165B6C (src/shared) */ - -DEFINE_func_80165BB4() /* dedup: shared engine-core @0x80165BB4 (src/shared) */ - -DEFINE_func_80165BFC() /* dedup: shared engine-core @0x80165BFC (src/shared) */ - -DEFINE_func_80165C58() /* dedup: shared engine-core @0x80165C58 (src/shared) */ - -DEFINE_func_80165C78() /* dedup: shared engine-core @0x80165C78 (src/shared) */ - -DEFINE_func_80165CA0() /* dedup: shared engine-core @0x80165ca0 (src/shared) */ - - -extern M2C_UNK D_801E8DCC; - -void func_80165E2C(u16 *arg0) { - func_8001534C(0, &D_801E8DCC, 0x80, 0x80, 0, 0); - func_800153CC(1, *arg0, 0xA8, 0x80, 0x40, 0); -} - - -DEFINE_func_80165E90() /* dedup: shared engine-core @0x80165E90 (src/shared) */ - -DEFINE_func_80165FA4() /* dedup: shared engine-core @0x80165FA4 (src/shared) */ - - -DEFINE_func_80166018() /* dedup: shared engine-core @0x80166018 (src/shared) */ - - -DEFINE_func_80166054() /* dedup: shared engine-core @0x80166054 (src/shared) */ - -DEFINE_func_801661CC() /* dedup: shared engine-core @0x801661CC (src/shared) */ - -DEFINE_func_80166244() /* dedup: shared engine-core @0x80166244 (src/shared) */ - -DEFINE_func_8016629C() /* dedup: shared engine-core @0x8016629C (src/shared) */ - -DEFINE_func_801662F4() /* dedup: shared engine-core @0x801662F4 (src/shared) */ - -DEFINE_func_8016634C() /* dedup: shared engine-core @0x8016634C (src/shared) */ - -DEFINE_func_801663A4() /* dedup: shared engine-core @0x801663A4 (src/shared) */ - - -DEFINE_func_801663FC() /* dedup: shared engine-core @0x801663FC (src/shared) */ - - -DEFINE_func_80166438() /* dedup: shared engine-core @0x80166438 (src/shared) */ - -DEFINE_func_801665B4() /* dedup: shared engine-core @0x801665B4 (src/shared) */ - - -DEFINE_func_80166618() /* dedup: shared engine-core @0x80166618 (src/shared) */ - - - -DEFINE_func_80166654() /* dedup: shared engine-core @0x80166654 (src/shared) */ - - -#include "common.h" - - /* 12-byte sub-table record (stride 0xC) */ - - - -DEFINE_func_80166690() /* dedup: shared engine-core @0x80166690 (src/shared) */ - - - - -/* func_80166994 — trail/afterimage ring recorder (0xC4-stride Trail records at D_801E9868). - * param_2: 0=init, 1=advance(record), 2=fadeout; param_3: trail index (s16); param_4: divisor (s16). - * - * K&R definition: true s16 params => callee-side lazy per-use narrow/extend with raw pseudos - * (s3/t0/s4 hold raw a1/a2/a3; first-use extension allocates IN PLACE into the arg reg), while - * the promoted K&R type (int x4) stays compatible with the canon-sig s32 prototype in the TU. - * Returns s32 (v0=1 when the fadeout completes, else 0) => the //@EDIT above flips the split's - * canon-sig prototype return type, AND engine_core.h needs the once-global ec_edit (all 5 sites, - * byte-neutral: every caller discards the result): - * ec_edit old: "extern void func_80166994(s32 a0, s32 a1, s32 a2, s32 a3); \" - * ec_edit new: "extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3); \" - * Without the ec_edit, cc1 hard-errors (conflicting types vs the void decls in DEFINE_ macros). - * - * Fully block-scoped (typedefs + externs inside the body) so the crack propagates ×134 via - * family_remap with zero file-scope footprint. No register pins. - */ -s32 func_80166994(param_1, param_2, param_3, param_4) - s32 param_1; - s16 param_2; - s16 param_3; - s16 param_4; -{ - extern u8 D_801E9868[]; - extern void RotTransSV(void *a0, void *a1, void *a2); - extern s32 VectorNormalSS(void *a0, void *a1); - - Trail *p = &((Trail *)D_801E9868)[param_3]; - s32 uVar6 = *(s32 *)(param_1 + 0x34); - s16 v10[4]; - s16 v18[4]; - s16 v20[4]; - s16 v28[4]; - s16 out[4]; - s32 c; - - switch (param_2) { - case 0: - p->flag = 1; - p->count = 0; - p->idx = 0; - p->timer = 0xf4; - break; - case 1: - v20[0] = p->e[p->idx].f0; - v20[1] = p->e[p->idx].f1; - v20[2] = p->e[p->idx].f2; - v28[0] = p->e[p->idx].f3; - v28[1] = p->e[p->idx].f4; - v28[2] = p->e[p->idx].f5; - c = p->idx; - p->idx = c + 1; - if ((u8)(c + 1) > 0xf) { - p->idx = 0; - } - if (p->count < 0xf) { - p->count = p->count + 1; - } - break; - case 2: { - u8 bVar3 = p->timer - 0x10; - p->timer = bVar3; - if (bVar3 < 0x10) { - p->flag = 0; - return 1; - } - { - u8 bVar1 = p->count; - if (bVar1 >= 2 && (bVar3 >> 4) < bVar1) { - p->count = bVar1 - 1; - } - } - return 0; - } - } - - if (param_3 < 2) { - func_801484B0((s32)v10, (s32)v18); - } else { - func_80148534((s32)v10, (s32)v18); - } - func_80165FA4(uVar6, (s32)v10, (s32)v18); - ((void (*)(s32, s32, s32))func_80149350)(uVar6, (s32)v10, (s32)v10); - RotTransSV(v18, v18, out); - - if (param_2 != 0) { - v20[0] = (v10[0] + v20[0]) >> 1; - v20[1] = (v10[1] + v20[1]) >> 1; - v20[2] = (v10[2] + v20[2]) >> 1; - v28[0] = (v18[0] + v28[0]) >> 1; - v28[1] = (v18[1] + v28[1]) >> 1; - v28[2] = (v18[2] + v28[2]) >> 1; - v20[0] = v20[0] - v28[0]; - v20[1] = v20[1] - v28[1]; - v20[2] = v20[2] - v28[2]; - VectorNormalSS(v20, v20); - v20[0] = v28[0] + v20[0] / param_4; - v20[1] = v28[1] + v20[1] / param_4; - v20[2] = v28[2] + v20[2] / param_4; - p->e[p->idx].f0 = v20[0]; - p->e[p->idx].f1 = v20[1]; - p->e[p->idx].f2 = v20[2]; - p->e[p->idx].f3 = v28[0]; - p->e[p->idx].f4 = v28[1]; - p->e[p->idx].f5 = v28[2]; - c = p->idx; - p->idx = c + 1; - if ((u8)(c + 1) > 0xf) { - p->idx = 0; - } - if (p->count < 0xf) { - p->count = p->count + 1; - } - } - - p->e[p->idx].f0 = v10[0]; - p->e[p->idx].f1 = v10[1]; - p->e[p->idx].f2 = v10[2]; - p->e[p->idx].f3 = v18[0]; - p->e[p->idx].f4 = v18[1]; - p->e[p->idx].f5 = v18[2]; - return 0; -} - - -// @class: regalloc-order -// @stuck: none — MATCH (69 ins). Pins $s4/$s1 for param_2/param_3 + a1/a2-pinned temps -// with non-volatile SHB barriers force the sign-ext move-form; short iVar2 (unpinned) -// gives the temp-form counter increment that fills the skip-branch delay slots; -// loop-invariant eq=(p2==p3) hoisted; SHB(p2) after the move serializes param_2 before -// param_3's sign-ext (last ordering swap); param_1/param_4 left natural (arg-order saves). - - -#define SHB(x) __asm__("" : "=r"(x) : "0"(x)) - -s32 func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4) -{ - /* [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_8011D030; - extern unsigned char D_801E9868[]; - - register int p2 __asm__("$20"); /* $s4 */ - register int p3 __asm__("$17"); /* $s1 */ - register int t2 __asm__("$5"); /* a1 */ - register int t3 __asm__("$6"); /* a2 */ - unsigned short *puVar1; - short iVar2; - int eq; - - iVar2 = 0; - puVar1 = ((unsigned short *)&D_8011D030); - t2 = ((short)param_2); SHB(t2); p2 = t2; SHB(p2); - t3 = ((short)param_3); SHB(t3); p3 = t3; - eq = (p2 == p3); - do { - if ((puVar1 != ((unsigned short *)param_1)) && - ((unsigned int)*puVar1 == p2 || (unsigned int)*puVar1 == p3) && - (!eq || - *(int *)(puVar1 + 0x16) == *(int *)(((unsigned short *)param_1) + 0x16))) { - ((void(*)(unsigned short *))func_80146C3C)(puVar1); - } - iVar2 = iVar2 + 1; - puVar1 = puVar1 + 0x2c; - } while (iVar2 < 0x1e); - ((void(*)(void *, int))func_80016714)(&D_801E9868[((short)param_4) * 0xc4], 0xc4); -} - - - - - -DEFINE_func_8016706C() /* dedup: shared engine-core @0x8016706C (src/shared) */ - - - -// @class: schedule -// @stuck: 16/279 masked. 3 runs, ONE residual class: gcc's list-scheduler puts `la $s2` (p=DATA) + `addu $s4,$zero,$zero` (i=0) BEFORE the callee-arg address setup (addiu $a1,$sp,0x10 / addu $a2,$a1,$zero); the target emits them AFTER. Inert to ~40 statement-order permutations + pin/barrier combos (sched priority dominates the LUID tie-break, sched.c rank_for_schedule). Runs: 19-24 (blk1), 111-114 (region-B cx-load rotation), 177-182 (blk3). Permuter fuel. - - - - -DEFINE_func_801670E4() /* dedup: shared engine-core @0x801670E4 (src/shared) */ - - - - /* 0x20 bytes */ - - - - - - -s32 func_80167540(s32 arg0) { - - struct Node_80167540 *node; - struct Entity_80167540 *ent; - s32 v; - - node = ((struct Entity_80167540 *)arg0)->unk34; - if (node->unk0 == 1) { - if (((struct Entity_80167540 *)arg0)->unk12 > ((struct Entity_80167540 *)arg0)->unk10) { - if (((struct Entity_80167540 *)arg0)->unk1C > 0) { - ((struct Entity_80167540 *)arg0)->unk10 = (s16) (rand() & 0x30); - v = -0x30; - goto shared; - } - } else if (((struct Entity_80167540 *)arg0)->unk1C < 0) { - ((struct Entity_80167540 *)arg0)->unk10 = (s16) ((rand() & 0x30) + 0x40); - v = 0x30; -shared: - ((struct Entity_80167540 *)arg0)->unk1C = v; - } - ((struct Entity_80167540 *)arg0)->unk12 = (s16) (((struct Entity_80167540 *)arg0)->unk12 + ((struct Entity_80167540 *)arg0)->unk1C); - ((struct Entity_80167540 *)arg0)->mat = node->unk20->mat; - ((void (*)(struct Entity_80167540 *, s32, s32, s32))func_801670E4)(((struct Entity_80167540 *)arg0), 0, 0, 0); - ent = ((struct Entity_80167540 *(*)(s32, struct Entity_80167540 *, s16, s16, s32, s32, s32))func_80146A6C)(0xE, ((struct Entity_80167540 *)arg0), node->unk6, node->unkA, node->unkE, 0, 0); - if (ent != 0) { - ent->mat = node->unk20->mat; - } - if (((struct Entity_80167540 *)arg0)->unk34->unk4C->unk44 & 0x20) { - ((struct Entity_80167540 *)arg0)->unk30 = 0x600; - ((struct Entity_80167540 *)arg0)->unk2 = (u16) (((struct Entity_80167540 *)arg0)->unk2 + 1); - } - } else { - ((void(*)(struct Entity_80167540 *))func_80146C3C)(((struct Entity_80167540 *)arg0)); - } -} - - - -DEFINE_func_80167714() /* dedup: shared engine-core @0x80167714 (src/shared) */ - - -DEFINE_func_801678B4() /* dedup: shared engine-core @0x801678B4 (src/shared) */ - - - -DEFINE_func_801678F0() /* dedup: shared engine-core @0x801678F0 (src/shared) */ - - - -DEFINE_func_80167A9C() /* dedup: shared engine-core @0x80167A9C (src/shared) */ - - -DEFINE_func_80167AD8() /* dedup: shared engine-core @0x80167AD8 (src/shared) */ - -// @class: regalloc-order -// @stuck: none — MATCH expected; mirrors already-matched sibling func_8016A290 (same 3-loop tail), swapping the inline matrix-setup for a func_80168070 call + constant color block. - -#include "common.h" - - - - - -s32 func_80167AE0(s32 param_1, s32 param_2, s32 param_3) { - extern void func_80168070(s32 param_1, s16 *param_2, s16 *param_3, void *param_4); - extern s32 func_80017758(void *a0, void *a1); - extern u8 D_8018E654; - extern u8 D_8018E668[]; - - struct Fr_80167AE0 fr; - u8 *p; - s32 i; - register s32 t __asm__("$2"); - register s32 zr __asm__("$0"); - s32 flags; - - func_80168070(param_1, ((s16 *)param_2), ((s16 *)param_3), fr.matrix); - - fr.v[3].z = 0; - fr.v[2].z = 0; - fr.v[0].z = 0; - fr.v[1].z = 0; - fr.v[1].y = 0; - fr.v[1].x = 0; - flags = D_800B99DA; - if (flags & 1) { - fr.col[1].r = 0xa0; - } else if (flags & 2) { - fr.col[1].r = 0xc0; - } else { - fr.col[1].r = 0x80; - } - - p = ((u8 *)&D_8018E654); - fr.col[0].b = 0; - fr.col[0].g = 0; - fr.col[0].r = 0; - fr.col[2].b = 0; - fr.col[2].g = 0; - fr.col[2].r = 0; - fr.col[3].b = 0; - fr.col[3].g = 0; - fr.col[3].r = 0; - fr.code = 0x50000000; - fr.col[1].b = fr.col[1].r >> 2; - fr.col[1].g = fr.col[1].r >> 2; - i = 0; -L1: - fr.v[0].x = (s8)*p++; - fr.v[0].y = (s8)*p++; - fr.v[2].x = (s8)*p++; - fr.v[2].y = (s8)*p++; - fr.v[3].x = (s8)*p++; - fr.v[3].y = (s8)*p--; - func_80017758(fr.v, fr.matrix); - t = i + 1; - i = t + zr; - if ((s16)t < 4) goto L1; - - fr.v[3].y = 0; - fr.v[2].y = 0; - fr.v[0].y = 0; - fr.v[1].y = 0; - fr.v[1].x = 0; - fr.v[1].z = -0x20; - p = D_8018E668; - i = 0; -L2: - fr.v[0].x = (s8)*p++; - fr.v[0].z = (s8)*p++; - fr.v[2].x = (s8)*p++; - fr.v[2].z = (s8)*p++; - fr.v[3].x = (s8)*p++; - fr.v[3].z = (s8)*p--; - func_80017758(fr.v, fr.matrix); - if ((s16)i == 1) { - fr.v[1].z = 0x20; - p += 2; - } - t = i + 1; - i = t + zr; - if ((s16)t < 4) goto L2; - - p += 2; - fr.v[0].x = 0; - fr.v[0].z = -0x20; - fr.col[0].r = fr.col[1].r; - fr.col[0].b = fr.col[1].g; - fr.col[0].g = fr.col[1].g; - i = 0; -L3: - fr.v[2].x = (s8)*p++; - fr.v[2].z = (s8)*p++; - fr.v[3].x = (s8)*p++; - fr.v[3].z = (s8)*p++; - func_80017758(fr.v, fr.matrix); - t = i + 1; - i = t + zr; - if ((s16)t < 2) goto L3; -} - - - - -// @class: schedule -// @stuck: none — MATCH. The between-loops f1/f2 store-swap (0x55/0x56) is fixed by writing f2's assign first, then the chained `buf[0x44] = buf[0x45] = buf[0x45] << 1;` — the chain keeps f1's read first (read order fixed by -0x12 in $v0) while emitting f2's store (0x56) ahead of the f1/f0 pair (0x55,0x54). 173/173. - -extern void func_80168070(s32 a0, s16 *a1, s16 *a2, void *a3); -extern u16 D_800B99DA; -extern u8 D_8018E4A8[]; -extern u8 D_8018E4BC[]; - -s32 func_80167DBC(s32 arg0, s32 arg1, s32 arg2) { - u8 buf[0x54]; - u8 *p; - s16 i; - - func_80168070(arg0, ((s16 *)arg1), ((s16 *)arg2), buf); - - *(s16 *)(buf + 0x3C) = 0; - *(s16 *)(buf + 0x34) = 0; - *(s16 *)(buf + 0x24) = 0; - *(s16 *)(buf + 0x2C) = 0; - *(s16 *)(buf + 0x2A) = 0; - *(s16 *)(buf + 0x28) = 0; - if (D_800B99DA & 1) { - buf[0x46] = 0x58; - } else { - buf[0x46] = 0x48; - } - buf[0x45] = buf[0x46] >> 2; - buf[0x44] = buf[0x45]; - if (((u8 (*)(s32))func_80029178)(0x81) != 0) { - buf[0x45] = buf[0x45] << 2; - buf[0x46] = buf[0x46] >> 1; - } - - p = D_8018E4A8; - buf[0x42] = 0; - buf[0x41] = 0; - buf[0x40] = 0; - buf[0x4A] = 0; - buf[0x49] = 0; - buf[0x48] = 0; - buf[0x4E] = 0; - buf[0x4D] = 0; - buf[0x4C] = 0; - *(s32 *)(buf + 0x50) = 0x50000000; - - for (i = 0; i < 4; i++) { - *(s16 *)(buf + 0x20) = (s8)*p++; - *(s16 *)(buf + 0x22) = (s8)*p++; - *(s16 *)(buf + 0x30) = (s8)*p++; - *(s16 *)(buf + 0x32) = (s8)*p++; - *(s16 *)(buf + 0x38) = (s8)*p++; - *(s16 *)(buf + 0x3A) = (s8)*p--; - func_80017758(buf + 0x20, buf); - } - - p = D_8018E4BC; - *(s16 *)(buf + 0x2C) = -0x12; - *(s16 *)(buf + 0x3A) = 0; - *(s16 *)(buf + 0x32) = 0; - *(s16 *)(buf + 0x22) = 0; - *(s16 *)(buf + 0x2A) = 0; - *(s16 *)(buf + 0x28) = 0; - buf[0x46] = buf[0x46] << 1; - buf[0x44] = buf[0x45] = buf[0x45] << 1; - - for (i = 0; i < 4; i++) { - *(s16 *)(buf + 0x20) = (s8)*p++; - *(s16 *)(buf + 0x24) = (s8)*p++; - *(s16 *)(buf + 0x30) = (s8)*p++; - *(s16 *)(buf + 0x34) = (s8)*p++; - *(s16 *)(buf + 0x38) = (s8)*p++; - *(s16 *)(buf + 0x3C) = (s8)*p--; - if (i == 2) { - buf[0x4E] = buf[0x46]; - buf[0x4D] = buf[0x44]; - buf[0x4C] = buf[0x4D]; - } else if (i == 3) { - buf[0x4E] = 0; - buf[0x4D] = 0; - buf[0x4C] = buf[0x4D]; - buf[0x42] = buf[0x46]; - buf[0x41] = buf[0x44]; - buf[0x40] = buf[0x44]; - } - func_80017758(buf + 0x20, buf); - } -} - - -DEFINE_func_80168070() /* dedup: shared engine-core @0x80168070 (src/shared) */ - - -extern s32 func_80029178(s32 arg); -extern s32 func_80166F58(s32, s32, s32, s32); - -void func_801681FC(s32 param_1) { - - extern u8 D_8018E500[]; - extern u8 D_8018E4D0[]; - extern u8 D_8018E4D1[]; - s32 iVar3; - s32 a3; - - *(s16 *)(param_1 + 0x28) = func_80029178(0x81) & 0xFF; - *(s32 *)(param_1 + 0x30) = D_8018E500[*(s32 *)(param_1 + 0x2C)]; - iVar3 = (*(s32 *)(param_1 + 0x2C) << 0x11) >> 0x10; - *(s16 *)(param_1 + 0x2A) = D_8018E4D0[iVar3]; - *(s32 *)(param_1 + 0x1C) = D_8018E4D1[iVar3]; - a3 = *(s32 *)(param_1 + 0x2C) & 1; - *(s32 *)(param_1 + 0x2C) = a3; - ((void (*)(s32, s32, s32, s32))func_80166F58)(param_1, 4, 4, a3); - *(s16 *)(param_1 + 2) = *(s16 *)(param_1 + 2) + 1; -} - - -DEFINE_func_8016829C() /* dedup: shared engine-core @0x8016829C (src/shared) */ - -DEFINE_func_80168328() /* dedup: shared engine-core @0x80168328 (src/shared) */ - -DEFINE_func_801683D8() /* dedup: shared engine-core @0x801683D8 (src/shared) */ - - -extern s32 func_80166F58(s32, s32, s32, s32); - -void func_80168430(s32 param_1) { - - extern u8 D_8018E50C[]; - extern u8 D_8018E4E4[]; - extern u8 D_8018E4E5[]; - s32 iVar1; - - *(s32 *)(param_1 + 0x30) = D_8018E50C[*(s32 *)(param_1 + 0x2C)]; - iVar1 = (*(s32 *)(param_1 + 0x2C) << 0x11) >> 0x10; - *(s16 *)(param_1 + 0x2A) = D_8018E4E4[iVar1]; - *(s32 *)(param_1 + 0x1C) = D_8018E4E5[iVar1]; - ((void (*)(s32, s32, s32, s32))func_80166F58)(param_1, 5, 0x3B, 2); - *(s16 *)(param_1 + 2) = *(s16 *)(param_1 + 2) + 1; -} - - -DEFINE_func_801684B4() /* dedup: shared engine-core @0x801684B4 (src/shared) */ - -DEFINE_func_80168540() /* dedup: shared engine-core @0x80168540 (src/shared) */ - -DEFINE_func_801685EC() /* dedup: shared engine-core @0x801685EC (src/shared) */ - -DEFINE_func_80168640() /* dedup: shared engine-core @0x80168640 (src/shared) */ - -DEFINE_func_80168664() /* dedup: shared engine-core @0x80168664 (src/shared) */ - - -DEFINE_func_80168744() /* dedup: shared engine-core @0x80168744 (src/shared) */ - - -DEFINE_func_80168780() /* dedup: shared engine-core @0x80168780 (src/shared) */ - -DEFINE_func_801687CC() /* dedup: shared engine-core @0x801687CC (src/shared) */ - -// @class: decl-conflict (reconcile) — MATCH (108 ins), real-TU verified via rtu_match -// @crack: The wave-2 "8-residual SCHEDULE" note was a STALE-OBJECT / isolation phantom (§42b): -// in the real TU the draft NOCOMPILEs — DEFINE_func_801687CC() (split line ~6757) expands -// `extern void func_80168828(void);` right before the def, so `void func_80168828(s32 param_1)` -// is a HARD `conflicting types` error (cc1 exit 33). RECONCILE-FIRST fix (sweep-safe, lives -// entirely in the def — no //@EDIT, no macro edit): declare the fn `(void)` and capture a0 via -// register s32 a0v __asm__("$4"); s32 param_1 = a0v; -// The register-var binds incoming $a0; copying it into a NORMAL pseudo (live across the calls) -// makes gcc allocate param_1 to a callee-saved reg, emitting the target's `addu $s1,$a0,$zero` -// at idx2. NOTE: a DIRECT `register s32 param_1 __asm__("$4")` FAILS (param_1 stays in the -// call-clobbered $a0 → 100-off). With this reconcile, gcc's natural schedule places the CSE'd -// `li $v1,0x40` at idx15 with ZERO extra levers — the §42a lever-4 consumer-block reorder was -// never needed. The $v1 pin (register c40 __asm__("$3")) is still load-bearing (else 0x40 folds -// to a $v0 immediate). 134-overlay family exemplar: only D_8018E550 differs -> banks x134. -#include "common.h" - - - -DEFINE_func_80168828() /* dedup: shared engine-core @0x80168828 (src/shared) */ - - - - -DEFINE_func_801689D8() /* dedup: shared engine-core @0x801689D8 (src/shared) */ - - -DEFINE_func_80168A14() /* dedup: shared engine-core @0x80168A14 (src/shared) */ - -DEFINE_func_80168A88() /* dedup: shared engine-core @0x80168A88 (src/shared) */ - - -DEFINE_func_80168AA8() /* dedup: shared engine-core @0x80168AA8 (src/shared) */ - - -DEFINE_func_80168AE4() /* dedup: shared engine-core @0x80168AE4 (src/shared) */ - - -extern void func_80168BDC(s32 a0, s32 a1, s32 a2, s32 a3); -/* Conform to the TU's canonical decl (jr_8015C32C.c:5546 `extern void func_80146C3C(void);`) - * and cast at the use site — same escape the TU already uses at :6388. Codegen-neutral. */ -extern void func_80146C3C(void); - -void func_80168B70(s32 a0) { - s32 *p = (s32 *)a0; - if (--p[0x1C / 4] != -1) { - func_80168BDC(a0, 9, 3, 1); - } else { - func_80168BDC(a0, 9, 2, 1); - ((void (*)(s32))func_80146C3C)(a0); - } -} - - -DEFINE_func_80168BDC() /* dedup: shared engine-core @0x80168BDC (src/shared) */ - - -DEFINE_func_80168D58() /* dedup: shared engine-core @0x80168D58 (src/shared) */ - - -DEFINE_func_80168D94() /* dedup: shared engine-core @0x80168D94 (src/shared) */ - -DEFINE_func_80168EC4() /* dedup: shared engine-core @0x80168EC4 (src/shared) */ - -DEFINE_func_80168F40() /* dedup: shared engine-core @0x80168F40 (src/shared) */ - - -DEFINE_func_8016901C() /* dedup: shared engine-core @0x8016901C (src/shared) */ - - -DEFINE_func_80169058() /* dedup: shared engine-core @0x80169058 (src/shared) */ - -DEFINE_func_801691B8() /* dedup: shared engine-core @0x801691B8 (src/shared) */ - -DEFINE_func_80169228() /* dedup: shared engine-core @0x80169228 (src/shared) */ - - -DEFINE_func_801693CC() /* dedup: shared engine-core @0x801693CC (src/shared) */ - - -DEFINE_func_80169408() /* dedup: shared engine-core @0x80169408 (src/shared) */ - -DEFINE_func_8016951C() /* dedup: shared engine-core @0x8016951C (src/shared) */ - -DEFINE_func_80169584() /* dedup: shared engine-core @0x80169584 (src/shared) */ - -DEFINE_func_801696D8() /* dedup: shared engine-core @0x801696D8 (src/shared) */ - - -DEFINE_func_80169830() /* dedup: shared engine-core @0x80169830 (src/shared) */ - - -DEFINE_func_8016986C() /* dedup: shared engine-core @0x8016986C (src/shared) */ - -DEFINE_func_801699D0() /* dedup: shared engine-core @0x801699D0 (src/shared) */ - -DEFINE_func_80169A4C() /* dedup: shared engine-core @0x80169A4C (src/shared) */ - - -DEFINE_func_80169B80() /* dedup: shared engine-core @0x80169B80 (src/shared) */ - - - - -DEFINE_func_80169BBC() /* dedup: shared engine-core @0x80169BBC (src/shared) */ - - -DEFINE_func_80169E44() /* dedup: shared engine-core @0x80169E44 (src/shared) */ - - -DEFINE_func_80169F00() /* dedup: shared engine-core @0x80169F00 (src/shared) */ - - - -// @class: plumbing -// @stuck: none — MATCH (expected; simple straight-line + single branch, one call-crossing local in $s0) - -extern void func_800D1FC8(s32 a0, s32 a1); -extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern void func_80146C3C(void); - -extern char D_8018E5FC[]; -extern char D_8018E5BC[]; - -void func_80169F3C(int param_1) -{ - int iVar1; - - ((int (*)(int, int))func_800D1FC8)(param_1, 6); - iVar1 = func_800D21C4(param_1, D_8018E5FC, 0x16); - if (iVar1 != 0) { - *(int *)(param_1 + 0x20) = iVar1; - *(short *)(iVar1 + 0x1a) = 0x2000; - *(short *)(iVar1 + 0x18) = 0x2000; - *(char *)(iVar1 + 0x26) = 0x60; - *(char *)(iVar1 + 0x25) = 0x60; - *(char *)(iVar1 + 0x24) = 0x60; - *(unsigned int *)(iVar1 + 4) = *(unsigned int *)(iVar1 + 4) | 0x50000000; - ((void (*)(int, int, void *))func_80128EA8)(iVar1, param_1 + 0x24, D_8018E5BC); - *(short *)(param_1 + 2) = *(short *)(param_1 + 2) + 1; - } else { - ((void (*)(int))func_80146C3C)(param_1); - } -} - - -DEFINE_func_80169FE0() /* dedup: shared engine-core @0x80169FE0 (src/shared) */ - - -DEFINE_func_8016A020() /* dedup: shared engine-core @0x8016A020 (src/shared) */ - - -DEFINE_func_8016A05C() /* dedup: shared engine-core @0x8016A05C (src/shared) */ - -DEFINE_func_8016A08C() /* dedup: shared engine-core @0x8016A08C (src/shared) */ - -DEFINE_func_8016A1CC() /* dedup: shared engine-core @0x8016A1CC (src/shared) */ - -// @class: regalloc-order -// @stuck: none — MATCH (284 ins). Loop-counter biv update: pinned $v0 temp + $0-add opaque copy (i = t + zr) forces the target's 2-insn `addiu v0,s1,1; addu s1,v0,zero` and keeps CSE from rewriting the (s16)t test to read s1. - -#include "common.h" - - - - - -void func_8016A290(s32 param_1, void *param_2, void *param_3) { - extern u8 D_8018E654; - extern u8 D_8018E668[]; - - struct Fr_8016A290 fr; - u8 *p; - s32 i; - register s32 t __asm__("$2"); - register s32 zr __asm__("$0"); - s32 flags; - s32 iVar3; - - iVar3 = *(s32 *)(param_1 + 0x34); - - fr.center.x = (*((s16 *)param_2) + *((s16 *)param_3)) >> 1; - fr.center.y = (((s16 *)param_2)[1] + ((s16 *)param_3)[1]) >> 1; - fr.center.z = (((s16 *)param_2)[2] + ((s16 *)param_3)[2]) >> 1; - ((void(*)(s32, void *, void *))func_80149350)(iVar3, &fr.center, &fr.center); - - *(u16 *)(param_1 + 0x6) = *(u16 *)&fr.center.x; - *(u16 *)(param_1 + 0xA) = *(u16 *)&fr.center.y; - *(u16 *)(param_1 + 0xE) = *(u16 *)&fr.center.z; - func_800D20C0(&fr.center, &fr.diff, 8); - func_80017E68(&fr.center, fr.mtx); - - fr.diff.x = *(u16 *)((s16 *)param_3) - *(u16 *)((s16 *)param_2); - fr.diff.y = *(u16 *)(((s16 *)param_3) + 1) - *(u16 *)(((s16 *)param_2) + 1); - fr.diff.z = *(u16 *)(((s16 *)param_3) + 2) - *(u16 *)(((s16 *)param_2) + 2); - ((void(*)(s32, void *, void *))ApplyMatrixSV)(*(s32 *)(iVar3 + 0x20) + 0x34, &fr.diff, &fr.diff); - func_800D23D0(&fr.diff); - RotMatrixYXZ(&fr.diff, fr.mtx); - - fr.pos[0] = D_801269A4 - fr.center.x; - fr.pos[1] = D_801269A8 - fr.center.y; - fr.pos[2] = D_801269AC - fr.center.z; - ApplyTransposeMatrixLV(fr.mtx, fr.pos, fr.pos); - fr.diff.z = -ratan2(fr.pos[0], fr.pos[1]); - RotMatrixYXZ(&fr.diff, fr.mtx); - - fr.v[3].z = 0; - fr.v[2].z = 0; - fr.v[0].z = 0; - fr.v[1].z = 0; - fr.v[1].y = 0; - fr.v[1].x = 0; - flags = D_800B99DA; - if (flags & 1) { - fr.col[1].r = *(s32 *)(param_1 + 0x30) + 0x20; - } else if (flags & 2) { - fr.col[1].r = *(s32 *)(param_1 + 0x30) + 0x40; - } else { - fr.col[1].r = *(s32 *)(param_1 + 0x30); - } - - p = ((u8 *)&D_8018E654); - fr.col[0].b = 0; - fr.col[0].g = 0; - fr.col[0].r = 0; - fr.col[2].b = 0; - fr.col[2].g = 0; - fr.col[2].r = 0; - fr.col[3].b = 0; - fr.col[3].g = 0; - fr.col[3].r = 0; - fr.code = 0x50000000; - fr.col[1].b = fr.col[1].r >> 3; - fr.col[1].g = fr.col[1].r >> 3; - i = 0; -L1: - fr.v[0].x = (s8)*p++; - fr.v[0].y = (s8)*p++; - fr.v[2].x = (s8)*p++; - fr.v[2].y = (s8)*p++; - fr.v[3].x = (s8)*p++; - fr.v[3].y = (s8)*p--; - func_80017758(fr.v, fr.mtx); - t = i + 1; - i = t + zr; - if ((s16)t < 4) goto L1; - - fr.v[3].y = 0; - fr.v[2].y = 0; - fr.v[0].y = 0; - fr.v[1].y = 0; - fr.v[1].x = 0; - fr.v[1].z = -0x20; - p = D_8018E668; - i = 0; -L2: - fr.v[0].x = (s8)*p++; - fr.v[0].z = (s8)*p++; - fr.v[2].x = (s8)*p++; - fr.v[2].z = (s8)*p++; - fr.v[3].x = (s8)*p++; - fr.v[3].z = (s8)*p--; - func_80017758(fr.v, fr.mtx); - if ((s16)i == 1) { - fr.v[1].z = 0x20; - p += 2; - } - t = i + 1; - i = t + zr; - if ((s16)t < 4) goto L2; - - p += 2; - fr.v[0].x = 0; - fr.v[0].z = -0x20; - fr.col[0].r = fr.col[1].r; - fr.col[0].b = fr.col[1].g; - fr.col[0].g = fr.col[1].g; - i = 0; -L3: - fr.v[2].x = (s8)*p++; - fr.v[2].z = (s8)*p++; - fr.v[3].x = (s8)*p++; - fr.v[3].z = (s8)*p++; - func_80017758(fr.v, fr.mtx); - t = i + 1; - i = t + zr; - if ((s16)t < 2) goto L3; -} - - - - -DEFINE_func_8016A700() /* dedup: shared engine-core @0x8016A700 (src/shared) */ - - -// Seed for func_8016A73C (ov_SC01_077 exemplar). Overlay-local struct guessed. - - - - - -s32 func_8016A73C(s32 arg0) { - int sp10[8]; - short v[3]; /* sp30, sp32, sp34 */ - int r; - short tmp; - - r = ((int(*)())rand)(); - v[1] = ((r & 0x7F) << 4) + 0x400; - v[0] = ((unsigned)(r & 0x7F00) >> 5) - 0x300; - v[2] = 0; - ((void(*)(short *, void *))RotMatrixYXZ)(v, sp10); - ((void(*)(int, void *))func_80048EAC)(((Obj_8016A73C *)arg0)->unk34->unk34->unk20 + 0x34, sp10); - v[0] = 0; - v[1] = 0; - v[2] = -0x50; - ((int(*)(void *, short *, short *))ApplyMatrixSV)(sp10, v, v); - - ((Obj_8016A73C *)arg0)->mat = (*(Mat_8016A73C*)&D_800AE620); - - tmp = ((Obj_8016A73C *)arg0)->unk6 + v[0]; - ((Obj_8016A73C *)arg0)->unk6 = tmp; - ((Obj_8016A73C *)arg0)->mat.w[5] = tmp; - tmp = ((Obj_8016A73C *)arg0)->unkA + v[1]; - ((Obj_8016A73C *)arg0)->unkA = tmp; - ((Obj_8016A73C *)arg0)->mat.w[6] = tmp; - tmp = ((Obj_8016A73C *)arg0)->unkE + v[2]; - ((Obj_8016A73C *)arg0)->unkE = tmp; - ((Obj_8016A73C *)arg0)->unk2 = ((Obj_8016A73C *)arg0)->unk2 + 1; - ((Obj_8016A73C *)arg0)->mat.w[7] = tmp; -} - - - -DEFINE_func_8016A890() /* dedup: shared engine-core @0x8016A890 (src/shared) */ - - -// @class: struct -// @stuck: none — expect MATCH (single-call leaf, stack-struct prim build + averaging writeback) - -DEFINE_func_8016A8FC() /* dedup: shared engine-core @0x8016A8FC (src/shared) */ - - -DEFINE_func_8016AA50() /* dedup: shared engine-core @0x8016AA50 (src/shared) */ - - -DEFINE_func_8016AB30() /* dedup: shared engine-core @0x8016AB30 (src/shared) */ - diff --git a/src/ov_SC03_015/ov_SC03_015_jr_8016AB6C.c b/src/ov_SC03_015/ov_SC03_015_jr_8016AB6C.c deleted file mode 100644 index 0f3610bf9..000000000 --- a/src/ov_SC03_015/ov_SC03_015_jr_8016AB6C.c +++ /dev/null @@ -1,1654 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ - /* 12-byte sub-table record (stride 0xC) */ - /* 0x20 bytes */ -DEFINE_func_8016AB6C() /* dedup: shared engine-core @0x8016AB6C (src/shared) */ - - - -DEFINE_func_8016AE5C() /* dedup: shared engine-core @0x8016AE5C (src/shared) */ - -DEFINE_func_8016AFB0() /* dedup: shared engine-core @0x8016AFB0 (src/shared) */ - -DEFINE_func_8016B114() /* dedup: shared engine-core @0x8016B114 (src/shared) */ - - - -DEFINE_func_8016B234() /* dedup: shared engine-core @0x8016B234 (src/shared) */ - - -DEFINE_func_8016B3F4() /* dedup: shared engine-core @0x8016B3F4 (src/shared) */ - -DEFINE_func_8016B428() /* dedup: shared engine-core @0x8016B428 (src/shared) */ - -DEFINE_func_8016B448() /* dedup: shared engine-core @0x8016B448 (src/shared) */ - - -DEFINE_func_8016B4BC() /* dedup: shared engine-core @0x8016B4BC (src/shared) */ - - - -// @class: struct -// @stuck: none — MATCH - -extern void func_80015978(s32 a0, s32 *a1); -extern int func_8016B9F8(int); -extern int func_8016B834(int, int); -extern void func_8016B984(void *a0); -extern void func_8016B91C(int); -extern int D_801E9B08; - -void func_8016B4F8(int param_1) -{ - int iVar1; - int uVar2; - volatile int buf[2]; - - ((void (*)(int, void *))func_80015978)(param_1 + 4, &D_801E9B08); - if (func_8016B9F8(param_1) == 0) { - *(int *)(param_1 + 0x18) = 0; - *(int *)(param_1 + 0x14) = 0; - *(int *)(param_1 + 0x10) = 0; - iVar1 = func_8016B834(param_1, 0); - *(int *)(param_1 + 0x10) = iVar1; - if (iVar1 != 0) { - iVar1 = func_8016B834(param_1, 1); - *(int *)(param_1 + 0x14) = iVar1; - if (iVar1 != 0) { - iVar1 = func_8016B834(param_1, 2); - *(int *)(param_1 + 0x18) = iVar1; - if (iVar1 != 0) goto success; - } - } - } - ((void (*)(int))func_8016B984)(param_1); - return; -success: - func_8016B91C(param_1); - uVar2 = *(int *)(param_1 + 0x2c); - if (uVar2 == 0) { - uVar2 = 0xf0; - } else { - uVar2 = 0x2d0; - } - *(int *)(param_1 + 0x1c) = uVar2; - uVar2 = *(unsigned short *)(param_1 + 2); - uVar2 = uVar2 + 1; - *(unsigned short *)(param_1 + 2) = uVar2; -} - - - -// @class: schedule -// @stuck: none — MATCH - - -extern s32 func_8016B9F8(s32 param_1); -extern void func_8016B984(void *a0); -extern void func_8016B6BC(s32, s32, s32, s32); -extern void func_8016B91C(s32); - -extern s16 D_8018E748[]; - -void func_8016B5C0(s32 param_1) { - s32 iVar4; - s32 iVar2; - s32 iVar5; - s16 sVar1; - s16 *psVar5; - s32 i; - - iVar4 = *(s32 *)(param_1 + 0x18); - if (((s32 (*)(void))func_8016B9F8)() != 0) { - goto L984; - } - sVar1 = *(s16 *)(iVar4 + 0x1a) + 0x200; - *(s16 *)(iVar4 + 0x1a) = sVar1; - *(s16 *)(iVar4 + 0x18) = sVar1; - if (*(s32 *)(param_1 + 0x2c) == 0) { - iVar2 = *(s32 *)(param_1 + 0x1c); - } else { - iVar2 = *(s32 *)(param_1 + 0x1c) / 3; - } - iVar5 = *(s32 *)(param_1 + 0x1c) + -0x20; - *(s32 *)(param_1 + 0x1c) = iVar5; - if (iVar5 >= 0) { - goto LOOP; - } -L984: - ((void (*)(s32))func_8016B984)(param_1); - return; -LOOP: - i = 0; - psVar5 = D_8018E748; - do { - func_8016B6BC(param_1, iVar2, (s32)*psVar5, (s32)(s16)i); - psVar5 = psVar5 + 1; - i = i + 1; - } while (i < 6); - func_8016B91C(param_1); - return; -} - - - -// @class: schedule -// @stuck: none — MATCH (94/94 ins, match_one relocation-masked) -// -// Exemplar of the 138-member h_seq family. The whole crack was ONE statement-order -// lever in the tail: the target's post-func_80015978 fix-up runs -// v[2].x += off.x; v[2].y += off.y; v[0].c = 3; -// (the `c = 3` store LAST). Writing `c = 3` between the two v[2] RMWs — the order the -// Ghidra-C literally prints, and what every prior draft copied — costs 12 mismatches: -// gcc hoists the `li 3` into the load-delay window, which pushes v[2].x into $v1 and -// the off.x temp into $a0, and then the `addu $a0,$s1,$zero` arg copy can no longer be -// scheduled early enough to become the base register of the v[2]/v[0].c stores. -// With `c = 3` last, the arg copy births at the v[2].x/v[2].y boundary (idx 76) exactly -// as the target does, and the mixed $s1-load / $a0-store addressing falls out for free. -// (§67-adjacent: the copy PLACEMENT was the root cause — but here plain statement order -// reaches it, no `__asm__` launder and no register pin needed. Prior notes calling this a -// regalloc tie-break and pinning $a0 were chasing the consequence, not the cause.) -// -// Everything else follows the Ghidra-C: `Prim *p = &prim` (one alias only — a second -// pointer name splits the pseudo and breaks the $s1 base), the `q++` post-increment -// running pointer over the 8-byte table rows, and the ((param_4 << 16) >> 14) byte-offset -// index into D_8018E730 (sll 16 / sra 14). - - - /* 0x28 */ - - - /* the 8-byte D_8018E730[] row */ - -DEFINE_func_8016B6BC() /* dedup: shared engine-core @0x8016B6BC (src/shared) */ - - - -// @class: schedule -// @stuck: none — MATCH (statement order: compute puVar2 base before puVar3 table lookup so param*0x40+base schedule into prologue, leaving the 0x2c load-delay nop) -extern void func_801465C0(void); -extern void func_8001CD9C(int, void *); -extern void func_800233CC(void *, unsigned short); - -extern int *D_8018E78C[]; -extern unsigned short D_8018E794[]; -extern unsigned short D_8018E79C[]; -extern unsigned char D_801E9B10[]; - -int func_8016B834(int param_1, int param_2) { - int *puVar3; - int *puVar2; - int iVar1; - - puVar2 = (int *)(D_801E9B10 + param_2 * 0x40); - puVar3 = D_8018E78C[*(int *)(param_1 + 0x2c)]; - iVar1 = ((int (*)(void))func_801465C0)(); - if (iVar1 != 0) { - func_8001CD9C(iVar1, puVar2); - func_800233CC(puVar2, D_8018E794[param_2]); - puVar2[0] = *(int *)((int)puVar3 + param_2 * 8); - puVar2[1] = *(int *)((int)puVar3 + param_2 * 8 + 4); - *(unsigned int *)(iVar1 + 4) = *(unsigned int *)(iVar1 + 4) | 0x50040000; - *(short *)(iVar1 + 0x1e) = D_8018E79C[param_2]; - } - return iVar1; -} - - -DEFINE_func_8016B91C() /* dedup: shared engine-core @0x8016B91C (src/shared) */ - -DEFINE_func_8016B964() /* dedup: shared engine-core @0x8016B964 (src/shared) */ - -DEFINE_func_8016B984() /* dedup: shared engine-core @0x8016B984 (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (result is func_8012EFB8's return saved in $s0 across the func_80015954 call; the save-move fills the 2nd call's delay slot. func_80015954's return is discarded.) - - -extern s32 D_801E9B08; -extern void func_8012EFB8(s32 a0); -extern void func_80015954(s32 a0, s32 a1); - -s32 func_8016B9F8(s32 param_1) -{ - s32 buf[2]; - u32 v; - - v = ((u32 (*)(s32 *, s32 *))func_8012EFB8)(&D_801E9B08, buf); - ((void (*)(s32 *, s32 *))func_80015954)(buf, (s32 *)(param_1 + 4)); - return (v & 0xffffefff) != 0; -} - - -DEFINE_func_8016BA48() /* dedup: shared engine-core @0x8016BA48 (src/shared) */ - -DEFINE_func_8016BA68() /* dedup: shared engine-core @0x8016ba68 (src/shared) */ - - -DEFINE_func_8016BADC() /* dedup: shared engine-core @0x8016BADC (src/shared) */ - - -DEFINE_func_8016BBA4() /* dedup: shared engine-core @0x8016BBA4 (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH (56 ins, match_one relocation-masked) - - - - -s32 func_8016BBE0(s32 param_1) { - extern void func_8016BF34(void *a0); - extern void func_8016BF50(s32); - extern void func_8001CF00(s32); - extern M2C_UNK D_801E9C44; - extern u8 D_801E9C45; - extern u8 D_801E9C46; - extern M2C_UNK D_801E9C48; - extern u8 D_801E9C49; - extern u8 D_801E9C4A; - - int iVar1; - int temp; - - iVar1 = ((s32 (*)(void))func_801465C0)(); - *(int *)(((int)param_1) + 0x20) = iVar1; - if (iVar1 != 0) { - ((void (*)(s32))func_8016BF34)(((int)param_1)); - func_8016BF50(((int)param_1)); - func_8001CF00(iVar1); - *(s16 *)(iVar1 + 0x10) = 0; - temp = *(int *)(((int)param_1) + 0x2c); - *(s16 *)(iVar1 + 0x14) = 0; - *(s16 *)(iVar1 + 0x1a) = 0; - *(s16 *)(iVar1 + 0x18) = 0; - *(s16 *)(iVar1 + 0x12) = temp * 0x555; - *(s16 *)(((int)param_1) + 0x10) = 0; - *(s16 *)(((int)param_1) + 0x14) = 0; - (*(u8 *)&D_801E9C44) = 0x20; - D_801E9C45 = 0x20; - D_801E9C46 = 0; - (*(u8 *)&D_801E9C48) = 0xc0; - D_801E9C49 = 0xc0; - D_801E9C4A = 0; - *(u16 *)(((int)param_1) + 2) += 1; - } else { - ((void (*)(s32))func_80146C3C)(((int)param_1)); - } -} - - - -extern void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3); -extern M2C_UNK D_801E9C44; -extern M2C_UNK D_801E9C48; - -void func_8016BCC0(void *arg0) { - u16 temp_a2; - u16 temp_v0; - void *temp_s0; - - temp_s0 = M2C_FIELD(arg0, void **, 0x20); - func_8016BF50(); - temp_a2 = M2C_FIELD(arg0, u16 *, 0x10) + 0x60; - M2C_FIELD(arg0, u16 *, 0x10) = temp_a2; - temp_v0 = M2C_FIELD(temp_s0, u16 *, 0x1A) + temp_a2; - M2C_FIELD(temp_s0, u16 *, 0x1A) = temp_v0; - M2C_FIELD(temp_s0, u16 *, 0x18) = temp_v0; - M2C_FIELD(temp_s0, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_s0, u16 *, 0x12) + 0x71) & 0xFFF); - func_8016BFA8(arg0, &D_801E9C44, &D_801E9C48, temp_s0 + 0x18); - if ((s16) M2C_FIELD(temp_s0, u16 *, 0x1A) >= 0x1001) { - M2C_FIELD(temp_s0, u16 *, 0x18) = 0x1000U; - M2C_FIELD(temp_s0, u16 *, 0x1A) = 0x1000U; - func_80146E90(arg0, M2C_FIELD(arg0, s32 *, 0x30)); - M2C_FIELD(arg0, u16 *, 2) = (u16) (M2C_FIELD(arg0, u16 *, 2) + 1); - } -} - - -// @class: struct -// @stuck: none — MATCH (74 ins, relocation-masked) - - - - -s32 func_8016BD78(s32 param_1) -{ - extern void func_8016BF50(void); - extern u8 D_801E9C45; - extern u8 D_801E9C46; - extern u8 D_801E9C49; - extern u8 D_801E9C4A; - - s32 iVar2; - u16 uVar1; - u8 *p1; - u8 *p2; - - iVar2 = *(s32 *)(param_1 + 0x20); - func_8016BF50(); - - p1 = &(*(u8 *)&D_801E9C44); - if (*p1 != 0) *p1 -= 4; - if (D_801E9C45 != 0) D_801E9C45 -= 4; - if (D_801E9C46 != 0) D_801E9C46 -= 4; - p2 = &(*(u8 *)&D_801E9C48); - if (*p2 != 0) *p2 -= 4; - if (D_801E9C49 != 0) D_801E9C49 -= 4; - if (D_801E9C4A != 0) D_801E9C4A -= 4; - - uVar1 = *(u16 *)(iVar2 + 0x18) - 0x80; - *(u16 *)(iVar2 + 0x18) = uVar1; - if ((s32)((unsigned int)uVar1 << 0x10) < 0) { - *(u16 *)(iVar2 + 0x18) = 0; - *(s16 *)(param_1 + 2) = *(s16 *)(param_1 + 2) + 1; - } - *(u16 *)(iVar2 + 0x12) = (*(u16 *)(iVar2 + 0x12) + 0x22) & 0xfff; - - ((void (*)(s32, u8 *, u8 *, s32))func_8016BFA8)(param_1, p1, p2, iVar2 + 0x18); -} - - - -// @class: plumbing -// @stuck: none — MATCH - -s32 func_8016BEA0(s32 param_1) -{ - extern void func_8016BF50(void); - - int iVar2; - unsigned short uVar1; - - iVar2 = *(int *)(((int)param_1) + 0x20); - func_8016BF50(); - uVar1 = *(unsigned short *)(((int)param_1) + 0x10) - 0x18; - *(unsigned short *)(((int)param_1) + 0x10) = uVar1; - *(unsigned short *)(iVar2 + 0x1a) = *(unsigned short *)(iVar2 + 0x1a) + uVar1; - *(unsigned short *)(iVar2 + 0x12) = (*(unsigned short *)(iVar2 + 0x12) + 0x22) & 0xfff; - ((void (*)(int, void *, void *, int))func_8016BFA8)(((int)param_1), &(*(int *)&D_801E9C44), &(*(int *)&D_801E9C48), iVar2 + 0x18); - if (*(short *)(iVar2 + 0x1a) < 0) { - ((void (*)(int))func_80146C3C)(((int)param_1)); - } -} - - - -DEFINE_func_8016BF34() /* dedup: shared engine-core @0x8016BF34 (src/shared) */ - - -/* §71 sibling-first: this is the head of the already-matched func_8016C2C4 - * (src/ov_SC03_099/ov_SC03_099_jr_8016AB6C.c L2707) lifted into its own leaf. */ - -DEFINE_func_8016BF50() /* dedup: shared engine-core @0x8016BF50 (src/shared) */ - - - -DEFINE_func_8016BFA8() /* dedup: shared engine-core @0x8016BFA8 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (95 ins). Keys: (1) 4-byte unaligned copies via `struct{char b[4];}` -// assignment -> lwl/lwr/swl/swr with reload; (2) 0x40-byte stack buffer `buf` (Mtx_8016BFD0 padded to -// 0x40, not 0x20) sets the frame to 0x70 and lands v1/v2 at sp+0x50/0x58; (3) func_80017714(a4) -// takes param_5 as an arg -> gcc materializes `addu $a0,$s0,$zero` and stores the 4 zeros via $a0. - - - - -void func_8016BFD0(s32 a0, s32 a1, s32 a2, s32 a3, void *a4) { - extern void func_80017714(); - extern s32 D_8018E7B4; - extern s32 D_8018E7BC; - extern s32 D_8018E7C4; - extern s32 D_8018E7CC; - - Mtx_8016BFD0 buf; - Vec3_8016BFD0 v1; - Vec3_8016BFD0 v2; - s32 iVar5 = *(s32 *)(a0 + 0x20); - - *(u32 *)((s32)a4 + 0x30) = 0x50000000; - *(W_8016BFD0 *)((s32)a4 + 0x20) = *(W_8016BFD0 *)a1; - *(W_8016BFD0 *)((s32)a4 + 0x24) = *(W_8016BFD0 *)a1; - *(W_8016BFD0 *)((s32)a4 + 0x28) = *(W_8016BFD0 *)a2; - *(W_8016BFD0 *)((s32)a4 + 0x2c) = *(W_8016BFD0 *)a2; - - v1.x = *(u16 *)(a0 + 6); - v1.y = *(u16 *)(a0 + 0xa); - v1.z = *(u16 *)(a0 + 0xe); - ((void(*)())func_8012EFB8)(&v1, &v1); - ((void(*)())func_80013F3C)(&buf); - ((void(*)())func_800123F0)(&buf, (s32)*(s16 *)(iVar5 + 0x12)); - - v2.x = *(u16 *)(a3 + 0); - v2.y = *(u16 *)(a3 + 2); - v2.z = *(u16 *)(a3 + 4); - ((void(*)())func_80020F34)(&buf, &v2); - - buf.t[0] = v1.x; - buf.t[1] = v1.y; - buf.t[2] = v1.z; - ((void(*)())func_8012F14C)(&buf, &D_8018E7B4, (s32)a4); - ((void(*)())func_8012F14C)(&buf, &D_8018E7BC, (s32)a4 + 8); - ((void(*)())func_8012F14C)(&buf, &D_8018E7C4, (s32)a4 + 0x10); - ((void(*)())func_8012F14C)(&buf, &D_8018E7CC, (s32)a4 + 0x18); - - *(s16 *)((s32)a4 + 4) = 0; - *(s16 *)((s32)a4 + 0xc) = 0; - *(s16 *)((s32)a4 + 0x14) = 0; - *(s16 *)((s32)a4 + 0x1c) = 0; - func_80017714(a4); -} - - - - -DEFINE_func_8016C14C() /* dedup: shared engine-core @0x8016C14C (src/shared) */ - - -extern void func_801465C0(void); -extern void func_80149350(s32 arg0); - -void func_8016C188(s32 param) -{ - register s32 s1 __asm__("$17"); - register s32 s2 __asm__("$18"); - register u8 *s0 __asm__("$16"); - u16 buf[3]; - s16 *pBCC; - s16 *pBD4; - s32 t34; - - extern void func_80015954(s32, s32); - extern s32 func_8016C374(s32, s32, s32, s32); - extern void func_80146C3C(void); - extern void func_8001CD9C(s32, void *); - extern void func_800233CC(void *, unsigned short); - extern u8 D_801E9C04[]; - extern s16 D_801E9C4C; - extern s16 D_801E9C4E; - extern s16 D_801E9C50; - extern s16 D_801E9C54; - extern s16 D_801E9C56; - extern s16 D_801E9C58; - - s1 = param; - s2 = ((s32 (*)(void))func_801465C0)(); - *(s32 *)(s1 + 0x20) = s2; - if (s2 != 0) { - *(u16 *)(s1 + 0x12) = *(u16 *)(s1 + 0x6); - *(u16 *)(s1 + 0x16) = *(u16 *)(s1 + 0xA); - *(u16 *)(s1 + 0x1A) = *(u16 *)(s1 + 0xE); - t34 = *(s32 *)(s1 + 0x34); - buf[0] = *(u16 *)(s1 + 0x12); - buf[1] = *(u16 *)(s1 + 0x16); - buf[2] = *(u16 *)(s1 + 0x1A); - ((void (*)(s32, void *, void *))func_80149350)(t34, buf, buf); - ((void (*)(void *, s32))func_80015954)(buf, s1 + 4); - s0 = D_801E9C04; - ((void (*)(s32, void *))func_8001CD9C)(s2, s0); - *(s16 *)(s2 + 0x1E) = 0xCCC; - *(s32 *)(s2 + 4) = *(s32 *)(s2 + 4) | 0x50000000; - ((void (*)(void *, s32))func_800233CC)(s0, 0x80); - *(s16 *)(s2 + 0x1A) = 0; - *(s16 *)(s2 + 0x18) = 0; - *(s16 *)(s1 + 0x10) = 0; - pBCC = &D_801E9C4C; - pBD4 = &D_801E9C54; - *pBCC = 0x20; - D_801E9C4E = 0x20; - D_801E9C50 = 0; - *pBD4 = 0xC0; - D_801E9C56 = 0xC0; - D_801E9C58 = 0; - ((s32 (*)(s32, void *, void *, void *))func_8016C374)(s1, pBCC, pBD4, s0); - *(u16 *)(s1 + 2) = *(u16 *)(s1 + 2) + 1; - } else { - ((void (*)(s32))func_80146C3C)(s1); - } -} - - - -// @class: schedule -// @stuck: none — MATCH (44 ins; pins $s0/$s1 + hoist call-arg into a temp so its load fills the buf-store delay slot) - - -extern void func_80149350(s32 arg0); -extern void func_80015954(s32 a0, s32 a1); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80146C3C(void); - -extern u8 D_801E9C4C[]; -extern u8 D_801E9C54[]; -extern u8 D_801E9C04[]; - -void func_8016C2C4(s32 param) -{ - register s32 s1 __asm__("$17"); - register s32 s0 __asm__("$16"); - u16 buf[3]; - s16 v; - s32 r; - s32 arg; - - s1 = param; - s0 = *(s32 *)(s1 + 0x20); - arg = *(s32 *)(s1 + 0x34); - buf[0] = *(u16 *)(s1 + 0x12); - buf[1] = *(u16 *)(s1 + 0x16); - buf[2] = *(u16 *)(s1 + 0x1a); - ((void (*)(s32, void *, void *))func_80149350)(arg, buf, buf); - ((void (*)(void *, s32))func_80015954)(buf, s1 + 4); - v = *(s16 *)(s1 + 0x10) + 0x10; - *(s16 *)(s1 + 0x10) = v; - v = *(s16 *)(s0 + 0x1a) + v; - *(s16 *)(s0 + 0x1a) = v; - *(s16 *)(s0 + 0x18) = v; - r = ((s32 (*)(s32, void *, void *, void *))func_8016C374)(s1, D_801E9C4C, D_801E9C54, D_801E9C04); - if (r == 0) { - ((void (*)(s32))func_80146C3C)(s1); - } -} - - -DEFINE_func_8016C374() /* dedup: shared engine-core @0x8016C374 (src/shared) */ - -// @class: regalloc-order -// @stuck: none — MATCH (172/172, relocation-masked) - - - -s32 func_8016C49C(s32 param_1_arg) { - extern s32 VectorNormalSS(void *, void *); - extern void func_8001CD9C(s32, void *); - extern void func_8016CF04(s32, s32); - extern u8 D_801E9C60[]; - extern u8 D_801E9D20; - - register u16 *param_1 __asm__("$17") = ((u16 *)param_1_arg); - int iVar5; - int iVar6; - u16 sv[4]; - s32 mat[8]; - short sVar1; - - iVar5 = *(int *)(param_1 + 0x18); - iVar6 = *(int *)(param_1 + 0x1a); - param_1[0x14] = *(u16 *)(iVar5 + 0x36); - if ((*(u32 *)(param_1 + 0x16) & 0x8000) == 0) { - short iVar4 = 0; - u16 *psVar3 = (u16 *)&D_8011D030; - do { - if (psVar3 != param_1 && *psVar3 == 0x30) { - ((void(*)(void *))func_80146C3C)(psVar3); - } - iVar4 = iVar4 + 1; - psVar3 = psVar3 + 0x2c; - } while (iVar4 < 0x1e); - D_801E9C60[1] = 0xff; - D_801E9C60[2] = 0x10; - D_801E9C60[0] = 0x10; - D_801E9C60[6] = 0; - D_801E9C60[5] = 0; - D_801E9C60[4] = 0; - ((void(*)(void *, s32))func_800233CC)(D_801E9C60, 10); - sv[0] = *(u16 *)(iVar5 + 6) - *(u16 *)(iVar6 + 6); - { - int t = *(u16 *)(iVar6 + 0xa) + 0x28; - sv[1] = *(u16 *)(iVar5 + 0xa) - t; - } - sv[2] = *(u16 *)(iVar5 + 0xe) - *(u16 *)(iVar6 + 0xe); - VectorNormalSS(sv, sv); - param_1[3] = *(u16 *)(iVar5 + 6) + ((s16)sv[0] >> 9); - param_1[5] = *(u16 *)(iVar5 + 0xa) + (((s16)sv[1] >> 9) - 0x28); - param_1[7] = *(u16 *)(iVar5 + 0xe) + ((s16)sv[2] >> 9); - ((void(*)(void *))func_800D23D0)(sv); - sv[0] = 0; - ((void(*)(void *, void *))RotMatrixYXZ)(sv, param_1 + 0x1c); - ((void(*)(void *, s32))func_80016714)(&D_801E9D20, 0x620); - ((s32(*)(s32, void *, s32, s32, s32, s32, s32))func_80146A6C)(0x32, param_1, 0, 0, 0, 0, *(int *)(param_1 + 0x18)); - sVar1 = 5; - } else { - int iVar5b = ((s32(*)())func_801465C0)(); - u32 uVar2; - if (iVar5b == 0) { - return; - } - func_8001CD9C(iVar5b, D_801E9C60); - *(u32 *)(iVar5b + 4) |= 0x50000000; - uVar2 = ((int(*)())rand)(); - sv[0] = (uVar2 & 0x7f) * 8 - 0x80; - sv[1] = ((uVar2 & 0x7f00) >> 4) - 0x400; - sv[2] = 0; - ((void(*)(void *, void *))RotMatrixYXZ)(sv, mat); - ((void(*)(void *, void *))func_80048EAC)(param_1 + 0x1c, mat); - sv[1] = 0; - sv[0] = 0; - sv[2] = 0xb; - ((void(*)(void *, void *, void *))ApplyMatrixSV)(mat, sv, sv); - param_1[9] = sv[0]; - param_1[0xb] = sv[1]; - param_1[0xd] = sv[2]; - *(int *)(param_1 + 0x10) = iVar5b; - *(int *)(param_1 + 0xe) = 8; - func_8016CF04((s32)param_1, 0); - *(int *)(param_1 + 0x16) = 0; - sVar1 = param_1[1] + 1; - } - param_1[1] = sVar1; -} - - - -DEFINE_func_8016C74C() /* dedup: shared engine-core @0x8016C74C (src/shared) */ - -DEFINE_func_8016C83C() /* dedup: shared engine-core @0x8016C83C (src/shared) */ - - -DEFINE_func_8016C998() /* dedup: shared engine-core @0x8016C998 (src/shared) */ - - - -DEFINE_func_8016CB84() /* dedup: shared engine-core @0x8016CB84 (src/shared) */ - - - -DEFINE_func_8016CBC0() /* dedup: shared engine-core @0x8016CBC0 (src/shared) */ - - -/* func_8016CF04 returns short (case 2: 1 if the decremented f2 hit 0, else 0; all other - * paths return 0 via the addu $v0,$zero,$zero at 0x8016D154). The TU/engine_core.h declare - * it `void` in 4 DEFINE_ macros + one block-scope decl in func_8016C49C; the real apply is the - * byte-neutral engine_core.h void->short flip (every caller discards or ptr-casts the return, - * cf. func_8016D5EC's `(s16)(...)` cast). The //@EDIT lines above are the rtu_match proxy for - * that flip. Body verified 166/166 in isolation AND in a whole-TU compile w/ the reconciled hdr. */ - /* 4 + 16*12 = 0xC4 stride */ - -DEFINE_func_8016CF04() /* dedup: shared engine-core @0x8016CF04 (src/shared) */ - - - - -DEFINE_func_8016D19C() /* dedup: shared engine-core @0x8016D19C (src/shared) */ - - - - - - - - /* 8 bytes */ - /* 32 bytes */ - - -DEFINE_func_8016D1D8() /* dedup: shared engine-core @0x8016D1D8 (src/shared) */ - - - -DEFINE_func_8016D428() /* dedup: shared engine-core @0x8016D428 (src/shared) */ - - -DEFINE_func_8016D464() /* dedup: shared engine-core @0x8016D464 (src/shared) */ - -DEFINE_func_8016D4DC() /* dedup: shared engine-core @0x8016D4DC (src/shared) */ - -DEFINE_func_8016D5EC() /* dedup: shared engine-core @0x8016D5EC (src/shared) */ - -DEFINE_func_8016D64C() /* dedup: shared engine-core @0x8016D64C (src/shared) */ - - -extern void func_801465C0(void); -extern void func_800233CC(void*, unsigned short); -extern void func_8001CD9C(int, void *); - -void func_8016D688(int param_1) -{ - - extern unsigned char D_801E9CA0[]; - int iVar2; - int iVar3; - - D_801E9CA0[1] = 0xe0; - D_801E9CA0[2] = 0xe0; - D_801E9CA0[0] = 0xe0; - D_801E9CA0[6] = 0; - D_801E9CA0[5] = 0; - D_801E9CA0[4] = 0; - iVar2 = ((int (*)(void))func_801465C0)(); - if (iVar2 != 0) { - *(int *)(param_1 + 0x20) = iVar2; - ((void (*)(void *, int))func_800233CC)(D_801E9CA0, 0x28); - func_8001CD9C(iVar2, D_801E9CA0); - *(unsigned short *)(iVar2 + 0x1a) = 0x1400; - *(unsigned int *)(iVar2 + 4) = *(unsigned int *)(iVar2 + 4) | 0x50000000; - iVar3 = *(int *)(param_1 + 0x30); - *(unsigned short *)(param_1 + 0x28) = *(unsigned short *)(iVar3 + 0x36); - *(unsigned short *)(param_1 + 0x12) = *(unsigned short *)(iVar3 + 6); - *(short *)(param_1 + 0x16) = *(unsigned short *)(iVar3 + 0xa) - 0x28; - *(unsigned short *)(param_1 + 0x1a) = *(unsigned short *)(iVar3 + 0xe); - *(short *)(param_1 + 2) = *(short *)(param_1 + 2) + 1; - } - return; -} - - -DEFINE_func_8016D778() /* dedup: shared engine-core @0x8016D778 (src/shared) */ - -DEFINE_func_8016D848() /* dedup: shared engine-core @0x8016D848 (src/shared) */ - -DEFINE_func_8016D984() /* dedup: shared engine-core @0x8016D984 (src/shared) */ - -DEFINE_func_8016DA04() /* dedup: shared engine-core @0x8016DA04 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH expected; param_1 survives jal in $s0, table fp-call with %lo-fold -extern void func_8016DBD8(u8 *a0); -extern void (*D_8018E868[])(int); - -void func_8016DA30(int param_1) -{ - ((void (*)(void))func_8016DBD8)(); - D_8018E868[*(unsigned short *)(param_1 + 2)](param_1); -} - - - - -// @class: plumbing -// @stuck: none — MATCH (clean if/else, one call-crossing local; bnez polarity = if(iVar1==0) fall-through) - -extern void func_801465C0(void); -extern void func_80146C3C(void); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); - -extern u8 D_8018E80C; -extern u8 D_8018E818; - -void func_8016DA7C(s32 param_1) -{ - s32 iVar1; - - iVar1 = ((s32 (*)(void))func_801465C0)(); - if (iVar1 == 0) { - ((void (*)(s32))func_80146C3C)(param_1); - } else { - *(s32 *)(param_1 + 0x20) = iVar1; - ((void (*)(s32, s32, s32, s32))func_8001CC3C)(iVar1, (s32)&D_8018E80C, 0x250, 0x100); - *(u8 *)(iVar1 + 0x27) = 0x90; - *(u16 *)(iVar1 + 0x18) = 0x3000; - *(u16 *)(iVar1 + 0x1a) = 0x4000; - *(u32 *)(iVar1 + 4) = *(u32 *)(iVar1 + 4) | 0x50000000; - func_80128EA8(iVar1, param_1 + 0x24, (s32)&D_8018E818); - *(s32 *)(param_1 + 0x10) = 0; - *(s32 *)(param_1 + 0x14) = 0xfff40000; - *(s16 *)(param_1 + 2) = *(s16 *)(param_1 + 2) + 1; - } -} - - -DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ - -DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ - - -DEFINE_func_8016DC20() /* dedup: shared engine-core @0x8016DC20 (src/shared) */ - - - -DEFINE_func_8016DEA4() /* dedup: shared engine-core @0x8016DEA4 (src/shared) */ - - -DEFINE_func_8016DEE0() /* dedup: shared engine-core @0x8016DEE0 (src/shared) */ - - -DEFINE_func_8016DF20() /* dedup: shared engine-core @0x8016DF20 (src/shared) */ - - -extern Blk20 D_800AE620; -extern s32 D_8011D030; -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern void func_8001CD50(s32 a0, s32 a1); -extern void func_800233CC(void *, unsigned short); -extern void func_801465C0(void); -extern void func_80146C3C(void); - - - - -void func_8016DF5C(s32 param_1) -{ - extern void func_8016E3CC(void *a0); - extern void RotMatrixY(s32 a0, void *a1); - extern u8 D_801EA348; - extern u8 D_801EA349; - extern u8 D_801EA34A; - extern u8 D_801EA34C; - extern u8 D_801EA34D; - extern u8 D_801EA34E; - - s32 iVar8; - short sVar1; - - iVar8 = *(s32 *)((u8 *)((void *)param_1) + 0x34); - if ((*(u32 *)((u8 *)((void *)param_1) + 0x2c) & 0x8000) == 0) { - unsigned short uVar7 = 0; - u16 *psVar6 = (u16 *)&D_8011D030; - register s32 iNew __asm__("$17"); - s32 base; - do { - if (psVar6 != (u16 *)((void *)param_1) && (*psVar6 == 0x41 || *psVar6 == 0x48)) { - ((void (*)(void *))func_80146C3C)(psVar6); - } - uVar7++; - psVar6 += 0x2c; - } while (uVar7 < 0x1e); - iNew = ((s32(*)())func_801465C0)(); - if (iNew == 0) { - return; - } - base = (s32)&D_801EA348; - D_801EA34A = 0xc0; - *(u8 *)base = 0xc0; - D_801EA349 = 0; - D_801EA34E = 0; - D_801EA34D = 0; - D_801EA34C = 0; - ((void(*)(void *, unsigned short))func_800233CC)((void *)base, 0x40); - func_8001CD50(iNew, base); - *(s32 *)(iNew + 0x34) = (s32)((u8 *)((void *)param_1) + 0x38); - *(s16 *)(iNew + 0x1a) = 0; - *(s16 *)(iNew + 0x18) = 0; - *(u32 *)(iNew + 4) = *(u32 *)(iNew + 4) | 0x50000000; - func_8016E3CC(((void *)param_1)); - { - register s32 t10 __asm__("$3"); - t10 = 0x10; - *(s32 *)((u8 *)((void *)param_1) + 0x20) = iNew; - *(s32 *)((u8 *)((void *)param_1) + 0x1c) = t10; - } - sVar1 = *(u16 *)((u8 *)((void *)param_1) + 2) + 1; - } else { - short asStack_60[20]; - Blk20_8016DF5C localMatrix; - s32 uVar2; - - asStack_60[0] = 0; - asStack_60[1] = 0; - asStack_60[2] = 0x20; - localMatrix = (*(Blk20_8016DF5C*)&D_800AE620); - uVar2 = ((s32(*)())rand)(); - RotMatrixY((uVar2 & 0x7f00) >> 3, &localMatrix); - ApplyMatrixSV(&localMatrix, asStack_60, asStack_60); - *(s16 *)((u8 *)((void *)param_1) + 6) = D_80126B5E + asStack_60[0]; - *(s16 *)((u8 *)((void *)param_1) + 0xa) = D_80126B62 - ((u16)uVar2 & 0x3f); - *(s16 *)((u8 *)((void *)param_1) + 0xe) = D_80126B66 + asStack_60[2]; - *(Blk20_8016DF5C *)((u8 *)((void *)param_1) + 0x38) = *(Blk20_8016DF5C *)((u8 *)iVar8 + 0x38); - *(s32 *)((u8 *)((void *)param_1) + 0x2c) = 0x1000; - *(s32 *)((u8 *)((void *)param_1) + 0x30) = 0xff; - *(s32 *)((u8 *)((void *)param_1) + 0x1c) = 0x10; - __asm__ __volatile__("" ::: "memory"); - sVar1 = 4; - } - *(s16 *)((u8 *)((void *)param_1) + 2) = sVar1; -} - - -DEFINE_func_8016E1CC() /* dedup: shared engine-core @0x8016E1CC (src/shared) */ - -DEFINE_func_8016E26C() /* dedup: shared engine-core @0x8016E26C (src/shared) */ - -DEFINE_func_8016E2E8() /* dedup: shared engine-core @0x8016E2E8 (src/shared) */ - -DEFINE_func_8016E358() /* dedup: shared engine-core @0x8016E358 (src/shared) */ - -DEFINE_func_8016E3CC() /* dedup: shared engine-core @0x8016E3CC (src/shared) */ - -DEFINE_func_8016E460() /* dedup: shared engine-core @0x8016E460 (src/shared) */ - - -DEFINE_func_8016E5B8() /* dedup: shared engine-core @0x8016E5B8 (src/shared) */ - - -DEFINE_func_8016E5F4() /* dedup: shared engine-core @0x8016E5F4 (src/shared) */ - -DEFINE_func_8016E688() /* dedup: shared engine-core @0x8016E688 (src/shared) */ - -DEFINE_func_8016E6E4() /* dedup: shared engine-core @0x8016E6E4 (src/shared) */ - -DEFINE_func_8016E728() /* dedup: shared engine-core @0x8016E728 (src/shared) */ - -DEFINE_func_8016E778() /* dedup: shared engine-core @0x8016E778 (src/shared) */ - -// @class: regalloc-order -// @stuck: none — MATCH (74 ins); register pin $s2 forces &prim into a saved reg (§17) - - /* 0x08 */ - /* 0x20 */ - -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8; - - -void func_8016E7C8(int param_1, short *param_2, unsigned int *param_3) -{ - extern void func_8004914C(void *a0); - extern void func_800491AC(void *a0); - extern void RotTransSV(void *a0, void *a1, void *a2); - extern void func_80016ED4(void *a0); - extern SVECTOR_8016E7C8 D_8018E8B8[4]; - extern s32 D_8018E8D8; - extern s32 D_8018E8E0; - extern s32 D_8018E8E8; - extern s32 D_8018E8F0; - - Prim_8016E7C8 prim; - MATRIX_8016E7C8 m; - SVECTOR_8016E7C8 tmp; - register Prim_8016E7C8 *pp __asm__("$18"); /* $s2 — force &prim into a saved reg */ - - ((void (*)(void *, void *))func_80017DC4)(param_2, &m); - m.t[0] = *(short *)(param_1 + 6); - m.t[1] = *(short *)(param_1 + 10); - m.t[2] = *(short *)(param_1 + 14); - func_8004914C(&m); - func_800491AC(&m); - pp = &prim; - RotTransSV(&D_8018E8B8[0], pp, &tmp); - RotTransSV(&D_8018E8B8[1], &prim.v[1], &tmp); - RotTransSV(&D_8018E8B8[2], &prim.v[2], &tmp); - RotTransSV(&D_8018E8B8[3], &prim.v[3], &tmp); - prim.v[0].vz = 3; - prim.f5 = 0x50000000; - prim.f0 = D_8018E8D8; - prim.f1 = D_8018E8E0; - prim.f2 = D_8018E8E8; - prim.f3 = D_8018E8F0; - prim.f4 = *param_3; - prim.f6 = 0x27; - func_80016ED4(pp); -} - - - -DEFINE_func_8016E8F0() /* dedup: shared engine-core @0x8016E8F0 (src/shared) */ - -DEFINE_func_8016E918() /* dedup: shared engine-core @0x8016E918 (src/shared) */ - -// @class: struct -// @stuck: none — MATCH (36/36 ins, match_one relocation-masked) - - - -typedef void (*Handler)(struct Entry_8016E95C *); - - -s32 func_8016E95C() { - extern Handler D_8018E938[]; - - struct Entry_8016E95C *p; - for (p = ((struct Entry_8016E95C *)&D_80115218); p < &((struct Entry_8016E95C *)&D_80115218)[4]; p++) { - if (p->f0 != 0) { - D_8018E938[p->f1](p); - } - } -} - - - - -/* @class: regalloc (non-coalescing delay-slot copy) + sched (load-temp hoist) - * @stuck: none — MATCH (53/53 ins, match_one AND rtu_match in the real TU). - * - * Two levers, both from the cookbook: - * - * 1. §52a "non-coalescing delay-slot copy" + §17 zero-reg-copy (the load-bearing one). - * The target holds `p[0]-1` in TWO callee-saved regs: $s0 (the array index, later - * destroyed in place by `sll $s0,$s0,1`) and $s4 (the value stored to p[3]), created - * by `addu $s4,$s0,$zero` sitting in the DELAY SLOT of `jal func_800D2CA8`. A plain - * C `c = i;` is destroyed by cse.c canon_reg head-promotion (measured: 50 ins, -3), - * and every #APP-asm spelling of the copy is INELIGIBLE for a delay slot (measured: - * 51 ins, -2 — tried `__asm__("":"=r"(c):"0"(i))`, a real-opcode - * `__asm__("addu %0,%1,$0")`, and the §52b RC-7 post-copy second-set barrier - * `c=i; __asm__("":"=r"(c):"0"(c))`; all three collapse or lose the slot). - * Only the `$0`-add — `register u32 zr __asm__("$0"); c = i + zr;` — emits a bare - * `addu` with no asm insn, so reorg can sink it into the call's delay slot. - * NOTE for ×138 propagation: this is a ZERO-REGISTER pin, not an allocation pin — - * it constrains no real value. family_sweep's §42e "skip pinned exemplar" guard is - * documented over-conservative (§86; the SIGABRT was our own extract_unit macro-drop, - * fixed in Phase 27), so this exemplar should still sweep. - * - * 2. Free-floating load temp for a scheduler hoist (§52a-adjacent, idiom 7). - * With the p+6 store written as one statement the sched2 list scheduler hoists - * `lbu $v0,1($a0)` ahead of `sb $s4,3($a0)` and sinks the D_8018E924 lui/addu/lhu - * chain (8 mismatched, same 53-ins multiset). Splitting the load into its own - * statement `h = D_8018E924[i];` placed BEFORE `p[2] = 0` (exactly what the Ghidra - * seed showed) puts the lhu chain right after `sh $v0,4($a0)` → 0. - * - * Data typing: D_8018E908 is a WORD array (`sll $v0,$s0,2`; its element is dereferenced - * as a buffer by func_80024054) => u8 *[]. D_8018E920 is byte-indexed (`lbu`, no shift) - * => u8[]. D_8018E924 is halfword-indexed (`sll $s0,$s0,1` + `lhu`) => u16[]. - * `*(s16 *)(p + 4) = -0xD7` emits `addiu $v0,$zero,-0xD7`; 0xFF29 as a u16 would not. - */ - - -extern s32 func_800D2CA8(s32 a0, s32 a1); -extern void func_800D2D10(s32 a0, s32 a1, void *a2, s32 a3); -extern s32 func_80024054(void *a0, void *a1); -extern void func_8016EC0C(s32 a0, s32 a1); - -void func_8016E9EC(u8 *p) -{ - - extern u8 *D_8018E908[]; - extern u8 D_8018E920[]; - extern u16 D_8018E924[]; - register u32 zr __asm__("$0"); - int i; - int c; - u8 *buf; - u8 off; - u16 h; - s32 r; - - i = p[0] - 1; - off = D_8018E920[i]; - buf = D_8018E908[i]; - c = i + zr; - r = func_800D2CA8(p[3], 0x1C); - func_800D2D10(r, 1, buf + off, 0); - func_80024054(buf, p + 8); - p[3] = c; - *(s16 *)(p + 4) = -0xD7; - h = D_8018E924[i]; - p[2] = 0; - *(u16 *)(p + 6) = h; - p[1] = p[1] + 1; - ((void (*)(u8 *, s32))func_8016EC0C)(p, 0x80); -} - - - -// @class: struct -// @stuck: none — MATCH (31/31 ins, match_one verified) - -extern u16 D_8018E92C[]; -extern void func_8016EC0C(s32 a0, s32 a1); - -void func_8016EAC0(Wave *param_1) -{ - unsigned char bVar1; - - param_1->f4 = param_1->f4 + D_8018E92C[param_1->f2]; - ((void (*)(void *, int))func_8016EC0C)(param_1, 0x80); - bVar1 = param_1->f2 + 1; - param_1->f2 = bVar1; - if (5 < bVar1) { - param_1->f2 = 0x20; - param_1->f1 = param_1->f1 + 1; - } -} - - - -// @class: loose-typing -// @stuck: none — MATCH (u8 v + 0xFF emits addiu 0xFF; v-1 would emit -1/0xffff) - -extern u8 D_8018E91C[]; -extern void func_8016EC0C(s32 a0, s32 a1); - -void func_8016EB3C(s32 p) { - u8 v; - - ((void (*)(s32, s32))func_8016EC0C)(p, D_8018E91C[*(u8 *)(p + 2) & 3]); - - v = *(u8 *)(p + 2); - *(u8 *)(p + 2) = v + 0xFF; - if (v == 0) { - *(u8 *)(p + 2) = 5; - *(u8 *)(p + 1) = *(u8 *)(p + 1) + 1; - } -} - - - -// @class: struct -// @stuck: none — MATCH (25 ins). %lo-fold via extern u16 D_8018E92C[]; predecrement emitted as +0xFF (u8 promote→sb low byte), not -1. - -extern u16 D_8018E92C[]; - -extern void func_8016EC0C(s32 a0, s32 a1); - -void func_8016EBA8(u8 *param_1) -{ - u8 c; - - *(u16 *)(param_1 + 4) = - *(u16 *)(param_1 + 4) - D_8018E92C[param_1[2]]; - ((void (*)(u8 *, int))func_8016EC0C)(param_1, 0x80); - c = param_1[2]; - param_1[2] = c + 0xFF; - if (c == 0) { - param_1[0] = 0; - } -} - - - -DEFINE_func_8016EC0C() /* dedup: shared engine-core @0x8016EC0C (src/shared) */ - - -DEFINE_func_8016ED6C() /* dedup: shared engine-core @0x8016ED6C (src/shared) */ - -DEFINE_func_8016ED8C() /* dedup: shared engine-core @0x8016ED8C (src/shared) */ - -DEFINE_func_8016EDBC() /* dedup: shared engine-core @0x8016EDBC (src/shared) */ - -DEFINE_func_8016EDEC() /* dedup: shared engine-core @0x8016EDEC (src/shared) */ - -DEFINE_func_8016EE40() /* dedup: shared engine-core @0x8016EE40 (src/shared) */ - -DEFINE_func_8016EE94() /* dedup: shared engine-core @0x8016EE94 (src/shared) */ - -DEFINE_func_8016EF78() /* dedup: shared engine-core @0x8016EF78 (src/shared) */ - -DEFINE_func_8016EFA8() /* dedup: shared engine-core @0x8016EFA8 (src/shared) */ - -DEFINE_func_8016EFC8() /* dedup: shared engine-core @0x8016EFC8 (src/shared) */ - -DEFINE_func_8016F094() /* dedup: shared engine-core @0x8016F094 (src/shared) */ - -// @class: plumbing -// @stuck: none — MATCH - -DEFINE_func_8016F0AC() /* dedup: shared engine-core @0x8016F0AC (src/shared) */ - - - - -/* RECONCILE NOTE (uc3) — the body is byte-unchanged from uc2; only the declaration - * environment moved. The gate error was - * jr_8016AB6C.c:4183 conflicting types for func_8016F0E4 || :4089 previous declaration - * :4089 was THIS definition; :4183 is the `extern void func_8016F0E4(void);` carried inside - * DEFINE_func_8016F4C4() (src/shared/engine_core.h:22579), which the host TU instantiates at - * ov_SC01_077_jr_8016AB6C.c:4136 — i.e. AFTER the definition, so it is a hard error, not the - * mere warning produced by the earlier block-scope decl in func_8016F0AC (TU:4047). - * Byte-true signature is `void (u8 *)`; the fleet canon is `void (void)` — a PARAM/ARITY - * disagreement on func_8016F0E4 ITSELF. - * - * ESCAPE TAKEN: §37/§124 ASM-LABEL ALIAS (escape 2, T0 draft-only, zero tracked-file edits). - * The C identifier is aF8016F0E4 so this TU declares func_8016F0E4 exactly once (the macro's - * own `extern void`), while the emitted SYMBOL is func_8016F0E4. Both existing callers already - * launder through a cast or take no args, so neither is perturbed: - * - func_8016F0AC (TU:4047-4049) casts: ((void (*)(void *))func_8016F0E4)(&D_80126B58); - * - DEFINE_func_8016F4C4 calls func_8016F0E4() with 0 args against its own (void) prototype. - * cc1-proven: preprocess+compile of the real TU with this body spliced in is free of any - * func_8016F0E4 diagnostic (the pre-existing unrelated warnings in the TU are unchanged). - * - * This SUPERSEDES uc2's //@EDIT de-macroize plan (§65b) and its T2 engine_core.h alternative - * (§75c) — neither is needed; nothing outside this unit changes, so the bank travels to the - * 137 siblings as a plain unit (carry the alias DECLARATION line with it — §124 trap 2). - */ - -DEFINE_func_8016F0E4() /* dedup: shared engine-core @0x8016F0E4 (src/shared) */ - - -DEFINE_func_8016F14C() /* dedup: shared engine-core @0x8016F14C (src/shared) */ - -DEFINE_func_8016F1AC() /* dedup: shared engine-core @0x8016F1AC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH - -extern s32 D_8018E948; -extern s32 D_80126B58; -extern s16 currentLocationId; - -s32 func_8016F1C4(void) { - s32 *p; - s32 cur; - s32 loc; - s32 v; - s32 *base = &D_80126B58; - - p = &D_8018E948; - cur = *p; - if (cur != 0) { - loc = currentLocationId; - p = p + 1; - for (;;) { - if (loc == cur) { - return 1; - } - cur = *p; - p = p + 1; - if (cur == 0) { - break; - } - } - } - v = base[0x7E]; - if (((v & 0x80FFFFFF) != 0) && ((v & 0x10000000) != 0)) { - return 0; - } - return base[0x7E] & 0x80FFFFFF; -} - - -DEFINE_func_8016F250() /* dedup: shared engine-core @0x8016F250 (src/shared) */ - -DEFINE_func_8016F264() /* dedup: shared engine-core @0x8016F264 (src/shared) */ - -DEFINE_func_8016F288() /* dedup: shared engine-core @0x8016F288 (src/shared) */ - -DEFINE_func_8016F2A8() /* dedup: shared engine-core @0x8016F2A8 (src/shared) */ - -DEFINE_func_8016F2C8() /* dedup: shared engine-core @0x8016F2C8 (src/shared) */ - -DEFINE_func_8016F2EC() /* dedup: shared engine-core @0x8016F2EC (src/shared) */ - -DEFINE_func_8016F30C() /* dedup: shared engine-core @0x8016F30C (src/shared) */ - -DEFINE_func_8016F330() /* dedup: shared engine-core @0x8016F330 (src/shared) */ - -DEFINE_func_8016F350() /* dedup: shared engine-core @0x8016F350 (src/shared) */ - -DEFINE_func_8016F374() /* dedup: shared engine-core @0x8016F374 (src/shared) */ - -DEFINE_func_8016F388() /* dedup: shared engine-core @0x8016F388 (src/shared) */ - -DEFINE_func_8016F398() /* dedup: shared engine-core @0x8016F398 (src/shared) */ - -DEFINE_func_8016F410() /* dedup: shared engine-core @0x8016F410 (src/shared) */ - -DEFINE_func_8016F44C() /* dedup: shared engine-core @0x8016F44C (src/shared) */ - -DEFINE_func_8016F470() /* dedup: shared engine-core @0x8016F470 (src/shared) */ - -DEFINE_func_8016F494() /* dedup: shared engine-core @0x8016F494 (src/shared) */ - -DEFINE_func_8016F4C4() /* dedup: shared engine-core @0x8016F4C4 (src/shared) */ - -DEFINE_func_8016F4F4() /* dedup: shared engine-core @0x8016F4F4 (src/shared) */ - -DEFINE_func_8016F4FC() /* dedup: shared engine-core @0x8016F4FC (src/shared) */ - -DEFINE_func_8016F540() /* dedup: shared engine-core @0x8016F540 (src/shared) */ - -DEFINE_func_8016F578() /* dedup: shared engine-core @0x8016F578 (src/shared) */ - -DEFINE_func_8016F5B0() /* dedup: shared engine-core @0x8016F5B0 (src/shared) */ - -DEFINE_func_8016F5E0() /* dedup: shared engine-core @0x8016F5E0 (src/shared) */ - -DEFINE_func_8016F610() /* dedup: shared engine-core @0x8016F610 (src/shared) */ - -DEFINE_func_8016F648() /* dedup: shared engine-core @0x8016F648 (src/shared) */ - -DEFINE_func_8016F680() /* dedup: shared engine-core @0x8016F680 (src/shared) */ - -DEFINE_func_8016F6B0() /* dedup: shared engine-core @0x8016F6B0 (src/shared) */ - - -DEFINE_func_8016F6E0() /* dedup: shared engine-core @0x8016F6E0 (src/shared) */ - - -DEFINE_func_8016F71C() /* dedup: shared engine-core @0x8016F71C (src/shared) */ - -DEFINE_func_8016F764() /* dedup: shared engine-core @0x8016F764 (src/shared) */ - - -DEFINE_func_8016F798() /* dedup: shared engine-core @0x8016F798 (src/shared) */ - - -DEFINE_func_8016F7D4() /* dedup: shared engine-core @0x8016F7D4 (src/shared) */ - -DEFINE_func_8016F804() /* dedup: shared engine-core @0x8016F804 (src/shared) */ - - -DEFINE_func_8016F834() /* dedup: shared engine-core @0x8016F834 (src/shared) */ - - -DEFINE_func_8016F870() /* dedup: shared engine-core @0x8016F870 (src/shared) */ - -DEFINE_func_8016F8AC() /* dedup: shared engine-core @0x8016F8AC (src/shared) */ - - -DEFINE_func_8016F8E4() /* dedup: shared engine-core @0x8016F8E4 (src/shared) */ - - -DEFINE_func_8016F920() /* dedup: shared engine-core @0x8016F920 (src/shared) */ - -DEFINE_func_8016F95C() /* dedup: shared engine-core @0x8016F95C (src/shared) */ - - -DEFINE_func_8016F9C4() /* dedup: shared engine-core @0x8016F9C4 (src/shared) */ - - -DEFINE_func_8016FA00() /* dedup: shared engine-core @0x8016FA00 (src/shared) */ - -DEFINE_func_8016FA44() /* dedup: shared engine-core @0x8016FA44 (src/shared) */ - - -DEFINE_func_8016FA84() /* dedup: shared engine-core @0x8016FA84 (src/shared) */ - - -DEFINE_func_8016FAC0() /* dedup: shared engine-core @0x8016FAC0 (src/shared) */ - -DEFINE_func_8016FB10() /* dedup: shared engine-core @0x8016FB10 (src/shared) */ - -DEFINE_func_8016FB50() /* dedup: shared engine-core @0x8016FB50 (src/shared) */ - - -DEFINE_func_8016FB7C() /* dedup: shared engine-core @0x8016FB7C (src/shared) */ - - -DEFINE_func_8016FBB8() /* dedup: shared engine-core @0x8016FBB8 (src/shared) */ - -DEFINE_func_8016FC24() /* dedup: shared engine-core @0x8016FC24 (src/shared) */ - -DEFINE_func_8016FC64() /* dedup: shared engine-core @0x8016FC64 (src/shared) */ - - -DEFINE_func_8016FC90() /* dedup: shared engine-core @0x8016FC90 (src/shared) */ - - -DEFINE_func_8016FCCC() /* dedup: shared engine-core @0x8016FCCC (src/shared) */ - -DEFINE_func_8016FD08() /* dedup: shared engine-core @0x8016FD08 (src/shared) */ - -DEFINE_func_8016FD7C() /* dedup: shared engine-core @0x8016FD7C (src/shared) */ - - -DEFINE_func_8016FDB4() /* dedup: shared engine-core @0x8016FDB4 (src/shared) */ - - -DEFINE_func_8016FDF0() /* dedup: shared engine-core @0x8016FDF0 (src/shared) */ - -DEFINE_func_8016FE2C() /* dedup: shared engine-core @0x8016FE2C (src/shared) */ - -DEFINE_func_8016FE78() /* dedup: shared engine-core @0x8016FE78 (src/shared) */ - -DEFINE_func_8016FED0() /* dedup: shared engine-core @0x8016FED0 (src/shared) */ - - -DEFINE_func_8016FF30() /* dedup: shared engine-core @0x8016FF30 (src/shared) */ - - -DEFINE_func_8016FF6C() /* dedup: shared engine-core @0x8016FF6C (src/shared) */ - -DEFINE_func_8016FFA8() /* dedup: shared engine-core @0x8016FFA8 (src/shared) */ - - -DEFINE_func_8016FFDC() /* dedup: shared engine-core @0x8016FFDC (src/shared) */ - - -DEFINE_func_80170018() /* dedup: shared engine-core @0x80170018 (src/shared) */ - -DEFINE_func_80170068() /* dedup: shared engine-core @0x80170068 (src/shared) */ - -DEFINE_func_801700B8() /* dedup: shared engine-core @0x801700B8 (src/shared) */ - -DEFINE_func_80170100() /* dedup: shared engine-core @0x80170100 (src/shared) */ - - -DEFINE_func_80170150() /* dedup: shared engine-core @0x80170150 (src/shared) */ - - -DEFINE_func_8017018C() /* dedup: shared engine-core @0x8017018C (src/shared) */ - -DEFINE_func_801701C8() /* dedup: shared engine-core @0x801701C8 (src/shared) */ - - -DEFINE_func_80170240() /* dedup: shared engine-core @0x80170240 (src/shared) */ - - -DEFINE_func_8017027C() /* dedup: shared engine-core @0x8017027C (src/shared) */ - -DEFINE_func_801702B8() /* dedup: shared engine-core @0x801702B8 (src/shared) */ - - -DEFINE_func_801702FC() /* dedup: shared engine-core @0x801702FC (src/shared) */ - - -DEFINE_func_80170338() /* dedup: shared engine-core @0x80170338 (src/shared) */ - -DEFINE_func_80170374() /* dedup: shared engine-core @0x80170374 (src/shared) */ - - -DEFINE_func_801703E0() /* dedup: shared engine-core @0x801703E0 (src/shared) */ - - -DEFINE_func_8017041C() /* dedup: shared engine-core @0x8017041C (src/shared) */ - -DEFINE_func_8017044C() /* dedup: shared engine-core @0x8017044C (src/shared) */ - - -DEFINE_func_801704B0() /* dedup: shared engine-core @0x801704B0 (src/shared) */ - - -DEFINE_func_801704EC() /* dedup: shared engine-core @0x801704EC (src/shared) */ - -DEFINE_func_8017051C() /* dedup: shared engine-core @0x8017051C (src/shared) */ - - -DEFINE_func_80170548() /* dedup: shared engine-core @0x80170548 (src/shared) */ - - -DEFINE_func_80170584() /* dedup: shared engine-core @0x80170584 (src/shared) */ - -DEFINE_func_801705C0() /* dedup: shared engine-core @0x801705C0 (src/shared) */ - - -DEFINE_func_801705F8() /* dedup: shared engine-core @0x801705F8 (src/shared) */ - - -DEFINE_func_80170634() /* dedup: shared engine-core @0x80170634 (src/shared) */ - -DEFINE_func_80170670() /* dedup: shared engine-core @0x80170670 (src/shared) */ - - -DEFINE_func_801706AC() /* dedup: shared engine-core @0x801706AC (src/shared) */ - - -DEFINE_func_801706E8() /* dedup: shared engine-core @0x801706E8 (src/shared) */ - -DEFINE_func_80170718() /* dedup: shared engine-core @0x80170718 (src/shared) */ - - -DEFINE_func_80170748() /* dedup: shared engine-core @0x80170748 (src/shared) */ - - -DEFINE_func_80170784() /* dedup: shared engine-core @0x80170784 (src/shared) */ - -DEFINE_func_801707D4() /* dedup: shared engine-core @0x801707D4 (src/shared) */ - - -DEFINE_func_80170810() /* dedup: shared engine-core @0x80170810 (src/shared) */ - - -DEFINE_func_8017084C() /* dedup: shared engine-core @0x8017084C (src/shared) */ - - -DEFINE_func_801708B0() /* dedup: shared engine-core @0x801708B0 (src/shared) */ - - -DEFINE_func_80170928() /* dedup: shared engine-core @0x80170928 (src/shared) */ - -DEFINE_func_80170970() /* dedup: shared engine-core @0x80170970 (src/shared) */ - -DEFINE_func_801709B8() /* dedup: shared engine-core @0x801709B8 (src/shared) */ - -DEFINE_func_80170A00() /* dedup: shared engine-core @0x80170A00 (src/shared) */ - -DEFINE_func_80170A48() /* dedup: shared engine-core @0x80170A48 (src/shared) */ - -DEFINE_func_80170A90() /* dedup: shared engine-core @0x80170A90 (src/shared) */ - - -DEFINE_func_80170AD8() /* dedup: shared engine-core @0x80170AD8 (src/shared) */ - - -DEFINE_func_80170B14() /* dedup: shared engine-core @0x80170B14 (src/shared) */ - -DEFINE_func_80170B48() /* dedup: shared engine-core @0x80170B48 (src/shared) */ - -DEFINE_func_80170B90() /* dedup: shared engine-core @0x80170B90 (src/shared) */ - - -DEFINE_func_80170BD8() /* dedup: shared engine-core @0x80170BD8 (src/shared) */ - - -DEFINE_func_80170C14() /* dedup: shared engine-core @0x80170C14 (src/shared) */ - -DEFINE_func_80170C44() /* dedup: shared engine-core @0x80170C44 (src/shared) */ - - -DEFINE_func_80170C74() /* dedup: shared engine-core @0x80170C74 (src/shared) */ - - -DEFINE_func_80170CB0() /* dedup: shared engine-core @0x80170CB0 (src/shared) */ - - -DEFINE_func_80170CF0() /* dedup: shared engine-core @0x80170CF0 (src/shared) */ - - - -DEFINE_func_80170D68() /* dedup: shared engine-core @0x80170D68 (src/shared) */ - - -DEFINE_func_80170DA4() /* dedup: shared engine-core @0x80170DA4 (src/shared) */ - -DEFINE_func_80170DE0() /* dedup: shared engine-core @0x80170DE0 (src/shared) */ - - -DEFINE_func_80170E34() /* dedup: shared engine-core @0x80170E34 (src/shared) */ - - -DEFINE_func_80170E70() /* dedup: shared engine-core @0x80170E70 (src/shared) */ - -DEFINE_func_80170EAC() /* dedup: shared engine-core @0x80170EAC (src/shared) */ - - -DEFINE_func_80170EFC() /* dedup: shared engine-core @0x80170EFC (src/shared) */ - - -DEFINE_func_80170F38() /* dedup: shared engine-core @0x80170F38 (src/shared) */ - -DEFINE_func_80170F74() /* dedup: shared engine-core @0x80170F74 (src/shared) */ - - -DEFINE_func_80170FB0() /* dedup: shared engine-core @0x80170FB0 (src/shared) */ - - -DEFINE_func_80170FEC() /* dedup: shared engine-core @0x80170FEC (src/shared) */ - -DEFINE_func_80171028() /* dedup: shared engine-core @0x80171028 (src/shared) */ - - -DEFINE_func_80171064() /* dedup: shared engine-core @0x80171064 (src/shared) */ - - -DEFINE_func_801710A0() /* dedup: shared engine-core @0x801710A0 (src/shared) */ - -DEFINE_func_801710DC() /* dedup: shared engine-core @0x801710DC (src/shared) */ - - -DEFINE_func_80171120() /* dedup: shared engine-core @0x80171120 (src/shared) */ - - -DEFINE_func_8017115C() /* dedup: shared engine-core @0x8017115C (src/shared) */ - -DEFINE_func_8017118C() /* dedup: shared engine-core @0x8017118C (src/shared) */ - - -DEFINE_func_801711C0() /* dedup: shared engine-core @0x801711C0 (src/shared) */ - - -DEFINE_func_801711FC() /* dedup: shared engine-core @0x801711FC (src/shared) */ - -DEFINE_func_80171238() /* dedup: shared engine-core @0x80171238 (src/shared) */ - - -DEFINE_func_80171260() /* dedup: shared engine-core @0x80171260 (src/shared) */ - - -DEFINE_func_8017129C() /* dedup: shared engine-core @0x8017129C (src/shared) */ - -DEFINE_func_80171384() /* dedup: shared engine-core @0x80171384 (src/shared) */ - - -DEFINE_func_801714E4() /* dedup: shared engine-core @0x801714E4 (src/shared) */ - - -DEFINE_func_80171520() /* dedup: shared engine-core @0x80171520 (src/shared) */ - -DEFINE_func_8017162C() /* dedup: shared engine-core @0x8017162C (src/shared) */ - -DEFINE_func_801716AC() /* dedup: shared engine-core @0x801716AC (src/shared) */ - -DEFINE_func_801717A0() /* dedup: shared engine-core @0x801717A0 (src/shared) */ - -DEFINE_func_801717F4() /* dedup: shared engine-core @0x801717F4 (src/shared) */ - -DEFINE_func_80171824() /* dedup: shared engine-core @0x80171824 (src/shared) */ - -DEFINE_func_80171854() /* dedup: shared engine-core @0x80171854 (src/shared) */ - -DEFINE_func_80171884() /* dedup: shared engine-core @0x80171884 (src/shared) */ - -DEFINE_func_801718AC() /* dedup: shared engine-core @0x801718AC (src/shared) */ - -DEFINE_func_80171904() /* dedup: shared engine-core @0x80171904 (src/shared) */ - -DEFINE_func_80171928() /* dedup: shared engine-core @0x80171928 (src/shared) */ - -DEFINE_func_8017196C() /* dedup: shared engine-core @0x8017196C (src/shared) */ - -DEFINE_func_8017197C() /* dedup: shared engine-core @0x8017197C (src/shared) */ - -DEFINE_func_80171990() /* dedup: shared engine-core @0x80171990 (src/shared) */ - -DEFINE_func_801719A4() /* dedup: shared engine-core @0x801719A4 (src/shared) */ - -DEFINE_func_80171A04() /* dedup: shared engine-core @0x80171A04 (src/shared) */ - -DEFINE_func_80171A10() /* dedup: shared engine-core @0x80171A10 (src/shared) */ - -DEFINE_func_80171A1C() /* dedup: shared engine-core @0x80171A1C (src/shared) */ - -DEFINE_func_80171A34() /* dedup: shared engine-core @0x80171A34 (src/shared) */ - -DEFINE_func_80171A44() /* dedup: shared engine-core @0x80171A44 (src/shared) */ - -DEFINE_func_80171A58() /* dedup: shared engine-core @0x80171A58 (src/shared) */ - -DEFINE_func_80171A6C() /* dedup: shared engine-core @0x80171A6C (src/shared) */ - -DEFINE_func_80171A80() /* dedup: shared engine-core @0x80171A80 (src/shared) */ - -DEFINE_func_80171A88() /* dedup: shared engine-core @0x80171A88 (src/shared) */ - -DEFINE_func_80171AB0() /* dedup: shared engine-core @0x80171AB0 (src/shared) */ - -DEFINE_func_80171B10() /* dedup: shared engine-core @0x80171B10 (src/shared) */ - -DEFINE_func_80171B44() /* dedup: shared engine-core @0x80171B44 (src/shared) */ diff --git a/src/ov_SC03_015/ov_SC03_015_jr_80171B4C.c b/src/ov_SC03_015/ov_SC03_015_jr_80171B4C.c deleted file mode 100644 index fd61bce8b..000000000 --- a/src/ov_SC03_015/ov_SC03_015_jr_80171B4C.c +++ /dev/null @@ -1,2548 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8; -typedef void (*Handler)(struct Entry_8016E95C *); -extern void func_801458E0(void); -extern s32 D_800AE6AC; -extern s32 D_800AE6B0; -extern s16 D_800B9A0A; -extern u8 D_80078E50; -extern void func_800D185C(u8 *a0); -extern void func_801458E8(void); -extern s32 func_80029504(void); -extern void func_80145B24(void); -extern u8 D_8018DAA4; -extern u8 D_8018DA14; -extern u8 D_8018D9F0; -extern u8 D_8018D9CC; -extern u8 D_8018DA80; -extern u8 D_8018DA5C; -extern u8 D_8018DA38; -extern u8 D_8018D9A8; -extern void func_80145934(void); -extern u8 D_8018DB34; -extern u8 D_8018DB10; -extern u8 D_8018DAEC; -extern u8 D_8018DAC8; -extern void func_80145A2C(void); -extern s32 func_800291DC(s32); -extern void func_800291C8(s32, s32); -extern void func_80162120(void); -extern void func_80029124(s32, s32); -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); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_80145BF8(void); -extern s32 func_800291B4(s32 arg); -extern void func_800291A0(s32, s32); -extern void func_80145C54(void); -extern s32 func_80145CEC(); -extern s32 func_80029178(s32 arg); -extern void func_80146014(s32 a0); -extern unsigned char D_8018CF2C[]; -extern unsigned char D_8018CF5C[]; -extern unsigned char D_8018CFAC[]; -extern unsigned char D_8018CFDC[]; -extern unsigned char D_8018D00C[]; -extern void func_80145EE8(s32 param_1); -extern void MoveImage(void *a0, s32 a1, s32 a2); -extern void func_80146074(void); -extern s32 func_80146128(void); -extern void func_80146360(void); -extern void func_801463A0(); -extern void func_8014607C(void); -extern s32 *D_80126B78; -extern u8 D_80078EC1; -extern s32 D_80078EC8; -extern s32 D_80126B9C; -extern s32 D_8011F730; -extern u16 D_801152B8; -extern u16 D_8012693A; -extern u8 D_80126BE0[]; -extern u8 D_801150F0[]; -extern void *memcpy(void *dst, const void *src, u32 n); -extern void func_80146FC4(s32 a0); -extern void func_80150A70(s32 a0); -extern void func_80147098(s32 *a0); -extern void func_8014A638(s32 arg0); -extern s32 func_80155458(s32 a0); -extern s32 func_80029104(void); -extern void func_80029344(void); -extern void func_8014ADE0(s32 a0); -extern void func_8014B350(s32 a0); -extern void func_8014B7A4(s16 *param_1); -extern s32 func_80161D58(s32 a0); -extern void func_80161A90(s32 a0); -extern void func_8014B504(u16 *a0); -extern void func_80149BEC(s32 a0); -extern void func_8014B5D0(s32 *a0); -extern void func_8014C99C(u8 *a0); -extern void func_8014B190(s32 s0); -extern void func_80148648(s32 a0, s32 a1); -extern s32 func_80149228(s32 a0); -extern void func_8014A59C(s32 a0); -extern void func_8016F14C(void *a0); -extern void func_80154418(void *a0); -extern void func_80154BE4(s32 a0); -extern void func_80165694(s32 arg0); -extern void func_801654A8(s32 a0); -extern void func_8014A680(s32 a0); -extern void func_8014A6A8(s32 a0); -extern void func_8014A71C(s32 a0); -extern void func_80172588(s32 *a0); -extern void func_801473DC(s32 *a0); -extern void func_80015978(s32 a0, s32 *a1); -extern void (*D_8018D05C[])(void *); -extern u8 D_80126BA4; -extern s32 D_80127098; -extern s32 D_80127094; -extern s32 D_80127090; -extern void func_80146534(void); -extern void func_8001D074(s32 a0, s32 a1); -extern void func_80146554(void); -extern void func_80146578(void); -extern void func_8001CFDC(s32, s32); -extern void func_8014659C(void); -extern void func_8001D074(s32, s32); -extern void func_801465C0(void); -extern void func_801465E4(void); -extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); -extern s32 D_8011F9D0; -extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); -extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 D_8011F750; -extern s32 D_8011F754; -extern u8 * func_801468C8(s32 arg0, u8 arg1); -extern s32 D_8011D030; -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); -extern s32 func_80146B9C(void *a0); -extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); -extern u16 D_8011DA28; -extern s32 func_80146B9C(void * arg0); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80146CA0(void *a0); -extern void func_80146CB4(void *a0); -extern void func_80146CC8(s32 a0); -extern void func_80146D30(s32 a0); -extern void func_80146D80(s32 *a0); -extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80146D90(s32 a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); -extern void func_80146E90(s32 *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80015954(s32 a0, s32 a1); -extern void func_80149374(s32 a0, s32 a1); -extern void func_80146F58(s32 a0, s32 a1); -extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 func_8012A68C(void); -extern s16 func_8012A758(void); -extern void func_8004978C(s16 *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern u8 D_80126DB0[]; -extern u16 D_80126DB6; -extern void func_8014704C(s32 *a0); -extern s32 func_80147054(void *a0); -extern void func_80147060(u8 * a0); -extern void func_8014706C(void *arg0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80147084(s32 *a0); -extern void func_8014708C(void *arg0); -extern s32 func_801470A0(void *a0); -extern void func_801470AC(s32 *a0); -extern void func_801470B4(s32 arg0); -extern void func_801470C0(s32 a0); -extern void func_80147118(s32 a0); -extern s16 D_80126BB8; -extern s16 D_80126BBA; -extern s16 D_80126BBC; -extern void func_80147264(s32 a0); -extern void func_80147290(void); -extern void func_801472B4(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void *D_8012707C; -extern void func_801472DC(void); -extern void func_801472F0(void *a0); -extern void func_80147364(u16, s32); -extern void func_80147300(u16 arg0); -extern void func_80147324(s32 arg0); -extern void func_801473EC(s32 *a0); -extern void func_80147460(s32 a0); -extern void func_80147514(); -extern void func_80147628(s32 a0); -extern void func_80147478(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); -extern s32 func_800129CC(s32 a0, s32 a1); -extern void func_80147514(s32 arg0); -extern void func_80013F3C(s32 a0); -extern void func_80012558(s32 a0, s32 a1); -extern void func_800126C4(s32 a0, s32 a1); -extern void func_800123F0(s32 a0, s32 a1); -extern void func_80147718(s32 a0); -extern void func_80147788(void *a0, s32 a1); -extern void func_801477A8(void *a0, s32 a1); -extern void func_801477C8(void *a0, s32 a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80147814(s32 a0, s32 a1); -extern void func_80147928(int a0, int a1); -extern void func_8014799C(int a0, int a1); -extern void func_80147A10(int a0, int a1); -extern void func_80147860(int a0, int a1, int a2, int a3); -extern void func_80147948(s32 a0, s32 a1, s32 a2); -extern void func_801479BC(s32 a0, s32 a1, s32 a2); -extern void func_80147A30(s32 a0, s32 a1, s32 a2); -extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147948(int a0, int a1, int a2); -extern void func_801479BC(int a0, int a1, int a2); -extern void func_80147A30(int a0, int a1, int a2); -extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147A84(s32 arg0); -extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147AAC(s32 arg0); -extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80147B5C(s32 a0, void *a1); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern void func_80147B18(s32 a0); -extern void func_80147B5C(s32 arg0, void *arg1); -extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147DC0(s32 a0, s32 a1); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147F50(s32 arg0); -extern void func_80148038(s32 a0, s32 a1); -extern s32 ratan2(s32 a0, s32 a1); -extern s32 csqrt(s32 a0); -extern s32 func_80012A60(s32 a0, s32 a1); -extern void func_80148094(int param_1, short *param_2, int *param_3); -extern void func_801485B8(s32 a0, s32 a1, s32 a2); -extern void func_801484B0(s32 a0, s32 a1); -extern s32 func_80154358(void *a0); -extern void func_801484E8(s32 a0, s32 a1); -extern void func_80148534(s32 a0, s32 a1); -extern void func_8014856C(s32 a0, s32 a1); -extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); -extern void func_80148634(void *a0); -extern u8 D_800B9A64; -extern s32 func_80014DC0(); -extern s32 func_80014D68(); -extern s32 func_80014D94(); -extern s32 func_80014CF8(); -extern void func_800120DC(); -extern s32 func_800CF8B4(); -extern u16 func_801487F4(s32 *a0); -extern u16 func_80148800(s32 *a0); -extern u8 func_8014880C(s32 *a0); -extern u16 func_80148818(s32 *a0); -extern s32 func_80047D3C(s32 a0); -extern s32 func_80148824(void *arg0); -extern s32 func_801488A8(u8 *a0); -extern s32 func_8014891C(s32 a0); -extern s32 func_80148980(u8 *a0); -extern s32 func_801489E8(s32 a0); -extern s32 func_80148A48(s32 a0); -extern int func_80148AFC(void *a0); -extern void func_80148AAC(u8 *a0); -extern s32 func_80148C18(void); -extern s32 func_80148C20(s32 a0, s16 a1); -extern s32 func_80148C34(s32 a0, s32 a1); -extern s32 func_80148C4C(s32 a0, s32 a1); -extern s32 func_80148C64(s32 a0, s32 a1); -extern s32 func_80148C7C(void); -extern s32 func_80148C84(s32 a0, s32 a1); -extern s32 func_80148C9C(s32 a0, s32 a1); -extern s32 func_80148CB4(s32 a0, s32 a1); -extern s32 func_80148CCC(s32 a0, s32 a1); -extern s32 func_80148CE4(void); -extern s32 func_80148CEC(void); -extern s32 func_80148CF4(s32 a0, s32 a1); -extern s32 func_80148D0C(s32 a0, s32 a1); -extern s32 func_80148D24(void *a0, int a1); -extern s32 func_80148D3C(void); -extern s32 func_80148F60(void); -extern s32 func_80148F68(s32 a0); -extern s32 func_80148F74(s32 a0); -extern s32 func_80148F80(s32 a0); -extern s32 func_80148F8C(s32 a0); -extern s32 func_80148F98(void); -extern s32 func_80148FA0(s32 a0); -extern s32 func_80148FAC(s32 a0); -extern s32 func_80148FB8(s32 a0); -extern s32 func_80148FC4(s32 a0); -extern s32 func_80148FD0(void); -extern s32 func_80148FD8(void); -extern s32 func_80148FE0(s32 a0); -extern s32 func_80148FEC(s32 a0); -extern s32 func_80148FF8(s32 a0); -extern s32 func_80149004(void); -extern void func_8014900C(s32 *a0); -extern void func_80149020(s32 *a0); -extern void func_80149034(s32 *a0); -extern void func_80149048(s32 *a0); -extern void func_8014905C(u8 *a0); -extern void func_801490E0(s32 *a0, s16 a1); -extern void func_801490E8(s32 *a0, s16 a1); -extern void func_801490F0(s32 *a0, s16 a1); -extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); -extern void func_801490F8(s32 a0, s32 a1); -extern s32 func_801491C4(s32 a0); -extern s32 func_80149184(s32 a0); -extern s32 D_801151D4; -extern void func_80149204(s32 *a0); -extern void func_80149210(s32 a0, s32 a1); -extern s32 func_80149284(s32 *a0, s32 a1); -extern void func_80149350(s32 arg0); -extern void func_80149290(s32 a0); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_80149374(s32 arg0, s32 arg1); -extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8014942C(s32 arg0); -extern void func_8012EF70(s32 a0, s32 a1); -extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012EFB8(s32 a0); -extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); -extern void func_8014964C(s32 param_1, s32 param_2); -extern s32 func_801496D4(void *a0); -extern void func_8015AD08(); -extern void func_80149704(void); -extern void func_8015ACC4(); -extern void func_80149724(void); -extern u8 D_80078EBF; -extern s32 func_80149744(struct S_80149744 *a0); -extern void func_8015F7A0(); -extern void func_80149788(void); -extern void func_801653B8(); -extern void func_80149864(void); -extern s16 currentLocationId; -extern s32 func_8016F1AC(void); -extern s32 func_80149884(void); -extern void func_80160B00(); -extern void func_801498C0(void); -extern s32 func_80149AA8(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern void func_80146750(void *a0); -extern s32 func_801498E0(s32 *a0); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_80147364(u16 a0, s32 a1); -extern s32 func_800CCF28(s32 a0); -extern u8 D_80126B5C; -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_8015DAC4(s32 *a0); -extern void func_8015554C(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern void func_80149B14(s32 *a0); -extern u8 func_8014BEF8(void); -extern s32 func_80149B54(s32 * arg0); -extern void func_8015DE24(s32 *a0); -extern void func_80157510(s32 *a0); -extern void func_80149BAC(s32 *a0); -extern s32 func_80029178(s32 a0); -extern s32 func_80149C08(s32 arg0); -extern void func_801577C8(); -extern void func_80149C94(void); -extern void func_80157D20(void); -extern void func_80149CB4(void); -extern s32 func_80149CD4(s32 a0); -extern u8 func_8014B5B8(s32 *a0); -extern s32 func_80149D10(s32 a0); -extern s32 func_80149E94(s32 a0); -extern s32 func_80149DD8(s32 a0); -extern s32 func_80149D9C(s32 a0); -extern u8 D_801202A0[]; -extern s32 func_80149F2C(s32 a0, s32 a1); -extern s32 func_80149E94(s32 arg0); -extern void func_80149FA8(void); -extern s32 D_8018D124[]; -extern u8 D_80078E78[]; -extern s32 func_80149FB0(s32 a0); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern void func_8014A1B0(s32 a0, s32 a1); -extern s32 func_8014A048(s32 param_1); -extern u16 func_80156370(u16 a0); -extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); -extern void func_8015D4B4(); -extern void func_8014A218(void); -extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); -extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); -extern s32 func_8014A238(s32 arg0); -extern s32 func_8014A2E4(s32 a0); -extern void func_8014A380(s32 a0, s32 a1); -extern s16 D_801152B0; -extern s16 D_801152B4; -extern s32 func_8014A3E0(struct S_8014A3E0 *a0); -extern s32 func_8014A454(s32 a0); -extern s32 func_8014A4B4(void *a0); -extern void func_8015EDD4(); -extern void func_8014A4FC(void); -extern s32 func_8014A674(s32 *a0); -extern s32 func_8014A69C(s32 *a0); -extern s32 func_8014A6C4(s32 a0); -extern void func_8015E184(); -extern void func_8014A830(void); -extern s32 func_80029AF4(void); -extern s32 func_8014A850(s32 param_1); -extern void func_8014AA04(s32 a0); -extern void func_801599A4(void *a0); -extern void func_80159B3C(void *a0); -extern s32 func_80165A20(s32 a0); -extern void func_8014AB7C(); -extern void func_8014AC10(); -extern void func_8014AA28(void); -extern void func_8014AB5C(void); -extern void func_80162CCC(void); -extern void func_8014AB7C(s32 arg0); -extern void func_8014ABF0(void); -extern void func_80016714(void *a0, s32 a1); -extern void func_8014AC10(s32 arg0); -extern void func_8014ACC0(s32 a0, s32 a1); -extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); -extern void func_8014ACE8(void *a0, s32 a1, s32 a2); -extern void func_80146AFC(void *a0); -extern void func_8014ADA8(s32 a0, s32 a1); -extern void func_8014AD7C(s32 a0); -extern s32 D_80078E8C; -extern void func_8014B034(s32 arg0); -extern void func_8014B00C(s32 arg0); -extern void func_8014B084(void); -extern s16 D_80078E90; -extern void func_8014B034(s32 a0); -extern u16 D_80078EAC; -extern u8 D_80078EBA; -extern void func_800D10EC(void); -extern void func_8002AC98(void); -extern s32 func_8014B154(s32 *a0); -extern void func_8014B12C(void); -extern void func_8014B2F8(void); -extern void func_8014B4C4(void); -extern void func_8014B160(s32 a0); -extern s32 func_8016F1C4(void); -extern s16 D_80078E96; -extern s16 D_80078EB8; -extern u16 D_80078EA6; -extern void func_8014B2A8(void); -extern void func_8014B310(void); -extern void func_8014B2D0(void); -extern s32 D_80078E94; -extern s32 D_80078ECC; -extern void func_8014B33C(void); -extern u8 D_80062BF4[]; -extern void func_8014BC80(s32 a0, s32 a1); -extern void func_80019064(void *a0); -extern s32 D_80078E98; -extern void func_80166244(); -extern void func_8014B4D4(void *a0); -extern s16 D_80078E9A; -extern u8 D_80126D1C; -extern s32 D_80126D74; -extern void func_8014B598(s32 a0, s32 a1); -extern void func_8014B5B0(s32 *a0); -extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); -extern void func_8014B5D8(s32 s1); -extern s32 D_80078E9C; -extern s32 D_80078ED0; -extern void func_8014B6F0(s32 a0, s32 a1); -extern void func_8014B768(s32 a0, s32 a1); -extern void func_8014B944(s32 a0, s32 a1, s32 a2); -extern s32 D_80078EA4; -extern u16 D_80078EB2; -extern s16 D_80078EB4; -extern void func_8014BB0C(void); -extern void func_8014BB24(s32 a0, s32 a1, s32 a2); -extern void func_8014BC0C(s32 a0, s32 a1); -extern void func_8014BC44(s32 a0, s32 a1); -extern u8 D_800B9A17; -extern void func_8014BCC0(s32 a0, s32 a1); -extern u16 D_80078EB6; -extern s32 func_8014BCEC(s32 a0, s32 a1); -extern void func_8014BD24(s32 a0, s32 a1); -extern void func_8014BD60(s32 param_1, s32 param_2); -extern void func_8014BD98(s32 a0, u16 a1); -extern void func_8014BDC8(void); -extern void func_8014BDE0(void); -extern s32 func_8017267C(s32 *a0); -extern s32 func_80013294(void *a0, void *a1); -extern void func_80029ED4(s32 a0); -extern void func_8014BDE8(s32 a0); -extern void func_8014BE78(void); -extern void func_8014BE9C(void); -extern void func_80029124(s32 a0, s32 a1); -extern void func_8014BEC0(void); -extern void func_8014BF18(s32 a0); -extern void func_8014BF48(void); -extern u8 func_8014BF6C(void); -extern void func_8014BF8C(u8 arg0); -extern void func_8014BFB0(void); -extern u8 func_8014BFD4(void); -extern void func_8014BFF4(s32 a0, s32 a1); -extern void func_8014C010(s32 a0, s32 a1); -extern s32 func_8014C050(s32 a0, s32 a1); -extern s32 func_8014C088(s32 a0, s32 a1); -extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); -extern s32 func_8014C118(void * a0, s32 a1, s32 a2); -extern s32 func_8014C168(s32 * param_1, s32 param_2); -extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); -extern u8 D_8018D1AC[]; -extern void func_8014C1A0(s32 arg0, s32 arg1); -extern s32 func_80013328(s32 a0, s32 a1); -extern s32 func_8014C59C(void *a0, void *a1); -extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); -extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); -extern s32 ratan2(s32 dx, s32 dy); -extern u8 D_8018D1B4; -extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); -extern s16 func_8014C5D0(s32 a0, s32 a1); -extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); -extern u8 D_80126D17; -extern void func_8014C6AC(void); -extern void func_8014C6C0(void); -extern u8 D_80126D1E; -extern void func_8014C6D0(void); -extern void func_8014C6E0(void); -extern s32 func_8014C860(s32 a0, s32 a1); -extern void func_8014C8C8(s32 a0, s32 *a1); -extern void func_8014C88C(s32 a0); -extern void func_8014C8C8(s32 dst, s32 * src); -extern void func_8014C8F0(s32 arg0); -extern u8 D_801151F0[]; -extern s32 func_8014C918(s32 a0, s32 a1); -extern s32 D_80126B50; -extern void func_8014C968(void); -extern void func_8014C978(void); -extern s32 func_8014C98C(void); -extern void func_80139914(s32 a0); -extern s32 func_8014CA00(s32 a0); -extern u16 func_8014CA70(s32 a0, s32 a1); -extern s32 func_8014CA14(s32 a0, s32 a1); -extern u16 func_8014CAE4(s32 *a0, s32 a1); -extern s32 func_8014CA88(s32 *a0, s32 a1); -extern s32 func_8014CAFC(void); -extern s32 func_8014CB0C(void); -extern s32 func_8014CB1C(void); -extern u8 D_80126D1F; -extern s32 func_8014CB2C(void); -extern s32 func_8014CB58(void); -extern u8 D_80126D1D; -extern void func_8014CB68(void); -extern s32 func_8014CB7C(void); -extern s32 func_8014CB8C(void); -extern short D_80126C9E; -extern void func_8014CB9C(struct Packed8 *a0); -extern s32 D_80126CDC; -extern void func_8014CBD8(void); -extern s16 D_80126CC4; -extern void func_8014CBE8(void); -extern void func_8014CBF8(void *a0); -extern void func_8014D3E0(s32 a0); -extern void func_8014D04C(void); -extern void func_8014CCB4(void); -extern void func_8014CC28(s32 a0); -extern void func_8014CD0C(u8 *a0); -extern s32 func_8014CF04(s32 a0, s32 a1, void *a2); -extern void func_8014CD80(s32 a0, void *a1, void *a2); -extern void func_8014D0A4(s32 a0); -extern s32 func_8014D2A0(s32 a0, void *a1, void *a2); -extern s32 func_8014D12C(s32 a0, void *a1, void *a2); -extern void func_8014D438(s32 a0); -extern void func_8014D3E0(s32 _arg0); -extern void func_8014D610(s32 a0, void *a1, void *a2); -extern s32 func_8014D4C0(s32 a0, void *a1, void *a2); -extern void func_8014D790(s32 a0); -extern void func_8014D738(void); -extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); -extern s32 func_8014D820(s32 a0, u16 *a1, u16 *a2); -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); -extern void func_8014DF94(s32 arg0); -extern void func_8014DF3C(void); -extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ -extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ -extern s16 D_801152AC; -extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); -extern void func_8014E48C(s32 a0); -extern void func_8014E434(void); -extern void func_8014E5B4(s32 a0, void *a1, void *a2); -extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); -extern void func_8014E6F8(struct SubE6F8 *a0); -extern void func_8014E6A0(void); -extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); -extern void func_8014E934(s32 _arg0); -extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); -extern s32 func_8014E98C(void *a0); -extern u16 D_800B99DA; -extern s32 D_801150D8; -extern s16 D_801152AA; -extern u8 D_80126720[]; -extern s16 D_80126724; -extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); -extern s32 func_8014ED80(struct SubED80 *a0); -extern int D_801E9698; -extern void func_8014ED28(s32 _arg0); -extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F24C(struct SubF24C *a0); -extern void func_8014F1F4(void); -extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F4C0(); -extern s32 func_8014F468(void); -extern int func_8014F74C(); -extern int func_8014F6F4(void); -extern u8 D_800D3918[]; -extern u8 D_801152A8[]; -extern s32 D_801152BC; -extern int func_8014F74C(s32 arg0); -extern s32 func_8014FA70(s32 a0); -extern s32 D_801E969C; -extern void func_8014FA04(s32 a0); -extern s32 func_8014FBC0(); -extern s32 func_8014FC18(u8 *self); -extern int func_8014FD54(int param_1); -extern void func_8014FCFC(void); -extern void func_80150170(void *a0); -extern s32 func_8014FE60(void *a0); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_8014FE60(void *e); -extern s32 func_80134510(s32 arg); -extern s32 func_80150150(s32 a, s32 b); -extern s32 func_80150460(s32 a, s32 b); -extern void func_801504D8(u16 *a0); -extern s32 func_80150480(s32 _arg0); -extern s32 func_80150528(void *a0, void *a1, void *a2); -extern s32 func_80150528(void *arg0, void *arg1, void *arg2); -extern s32 func_801506A4(s32 a0, s32 a1); -extern s32 func_801505FC(s32 a0); -extern s32 func_801506A4(s32 arg0, s32 arg1); -extern void func_80150820(s32 a0, s32 a1); -extern void func_8015086C(int param_1); -extern s32 func_801508B4(s32 a0); -extern s32 func_8015094C(s32 a0); -extern short func_801508F8(s32 a0); -extern s32 D_8018D1E4; -extern s32 D_80126990; -extern s32 D_80126994; -extern u8 D_80126948[]; -extern s32 func_80021174(s32 a0, s32 a1); -extern s32 func_8015094C(s32 param_1); -extern void func_80150B9C(void); -extern s32 func_80151184(s32 a0, s32 a1, s32 a2); -extern s32 func_80150BA4(s32 a0); -extern s32 func_801619D0(void *a0); -extern void func_80150BC8(s32 *a0); -extern s32 func_80150480(s32 a0); -extern u16 D_800AE6DC; -extern void func_80150C48(s32 a0); -extern int func_80151184(int arg, int a1, int a2); -extern int func_80150CA0(int arg); -extern void func_80150EC4(s32 a, s32 b); -extern void func_80150CC4(s32 a); -extern void func_80150CE4(s32 a); -extern void func_80150D04(s32 a); -extern void func_80150D24(s32 a); -extern void func_80150D44(s32 a); -extern void func_80150D64(s32 a); -extern void func_80150D84(s32 a); -extern void func_80150DA4(s32 a); -extern void func_80150DC4(s32 a); -extern void func_80150DE4(s32 a); -extern void func_80150E04(s32 a); -extern void func_80150E24(s32 a); -extern void func_80150E44(s32 a); -extern void func_80150EC4(s32 a0, s32 a1); -extern void func_80150E64(s32 a0); -extern void func_80150E84(s32 a0); -extern void func_80150EA4(s32 a0); -extern u8 D_800AE6C0; -extern s16 D_800AE6C8; -extern s16 D_800AE6CA; -extern s16 D_800AE6CC; -extern s32 D_800AE6C4; -extern s16 D_800AE6CE; -extern u8 D_800AE6BE; -extern u8 D_801201F8[]; -extern void func_80150F78(void); -extern void func_80150F80(s32 a0); -extern int func_80150FB4(int arg); -extern void func_80150FD8(s32 a0); -extern int func_80151014(int arg); -extern void func_80151038(s32 a0); -extern int func_80151070(int arg); -extern int func_80151094(int arg); -extern void func_801510B8(void); -extern void func_801510C0(void); -extern int func_801510C8(int arg); -extern int func_801510EC(int arg); -extern s32 func_8012DB84(void); -extern s32 func_80151110(void); -extern void func_80151130(void); -extern int func_80151138(int arg); -extern void func_8015115C(s32 *a0, s16 a1); -extern s32 func_80151164(s32 a0, s32 a1); -extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); -extern void func_801511A8(u8 *a0); -extern void func_801511C4(u8 *a0); -extern int func_80151204(int arg, int a1); -extern int func_801511E0(int arg); -extern int func_80151204(int a0, int a1); -extern void func_80151238(void *a0); -extern void func_8015126C(u16 *p); -extern void func_80151780(s32 a0); -extern void func_801516F0(s32 *a0); -extern void func_8015173C(s32 *a0); -extern s16 D_8011DB1A; -extern s32 D_80127518; -extern s32 D_801151FC; -extern s32 func_801725CC(u8 *a0); -extern s32 func_80029D3C(void); -extern void func_80151878(void); -extern void func_80153B58(s32 *a0); -extern s32 func_80151880(s32 a0); -extern s32 func_801518D8(s32 a0); -extern s32 func_80151944(void); -extern s32 func_80151924(void); -extern void func_8014E934(s32 a0); -extern s32 func_8014F3E8(s32 a0); -extern void func_801519C8(s32 a0); -extern void func_80151980(s32 a0); -extern M2C_UNK D_800D5880; -extern s32 D_800D58AC; -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801519C8(s32 arg0); -extern void func_80151C54(s32 a0); -extern void func_801542DC(s32 *a0, s32 a1); -extern void func_8015BDD0(s32 *a0); -extern void func_80165718(s32 a0); -extern u8 D_800D46E4[]; -extern void func_80151AE4(s32 arg0); -extern void (*D_8018D28C[])(void); -extern void func_80151D24(void *a0); -extern void func_80151DB0(s32 a0); -extern void func_80151D60(void *a0); -extern s32 func_80172630(u8 *a0); -extern s32 D_80062C14; -extern void func_80151DB0(s32 param_1); -extern void func_80151E78(s32 *a0); -extern void func_80151ECC(struct S80151ECC *a0); -extern void func_80151FB4(s32 a0); -extern void func_80151F38(s32 *a0); -extern void func_801553C0(s32 a0); -extern void func_80153C18(); -extern void (*D_8018D2B0[])(void); -extern void func_80152058(void *a0); -extern void func_801520DC(s32 a0); -extern void func_80152094(s32 a0); -extern void func_80147324(s32 a0); -extern u8 D_80062C04[]; -extern M2C_UNK D_8018D2A0; -extern void func_801520DC(s32 arg0); -extern void func_801470B4(s32 a0); -extern void func_8015369C(s32 a0); -extern void func_80152194(s32 *a0); -extern s32 func_801536DC(s32 a0); -extern void func_8015220C(s32 a0); -extern s32 func_80153800(s32 a0); -extern void func_801522CC(s32 a0); -extern void func_80152254(s32 *a0); -extern void (*D_8018D2C4[])(void); -extern void func_80152370(void *a0); -extern void func_801523F4(s32 a0); -extern void func_801523AC(s32 a0); -extern void func_8001382C(s32 a0, void *a1, void *a2); -extern u8 D_8018D2D0[]; -extern void func_801523F4(s32 arg0); -extern void func_801525F4(int); -extern s32 func_801535F4(void *arg0); -extern void func_8015BF48(s32 *a0); -extern void func_80152500(int param_1); -extern void func_801525F4(s32 a0); -extern void (*D_8018D2E0[])(void); -extern void func_80152698(void *a0); -extern void func_80152714(s32 a0); -extern void func_801526D4(s32 a0); -extern void func_80152790(s32 a0); -extern void (*D_8018D2F8[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018D2E8; -extern void func_801528B0(s32 arg0); -extern void func_8015294C(s32 a0); -extern void func_80152A08(s32 a0); -extern void func_80152AC8(s32 a0); -extern void func_80152A50(s32 *a0); -extern void (*D_8018D30C[])(void); -extern void func_80152B6C(void *a0); -extern void func_80152BF0(s32 a0); -extern void func_80152BA8(s32 a0); -extern void func_80152C80(s32 *a0); -extern void func_80152C40(s32 *a0); -extern void (*D_8018D328[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018D318; -extern void func_80152DA8(s32 arg0); -extern void func_80152E4C(s32 a0); -extern void func_80152EFC(s32 a0); -extern void func_80152FBC(s32 a0); -extern void func_80152F44(s32 *a0); -extern void (*D_8018D33C[])(void); -extern void func_80153060(void *a0); -extern void func_801530E4(s32 a0); -extern void func_8015309C(s32 a0); -extern void func_80155440(s32 *a0); -extern void func_801530E4(s32 arg0); -extern void func_80153150(struct S80153150 *a0); -extern void func_801531BC(s32 a0); -extern void func_8015327C(s32 a0); -extern void func_80153204(s32 *a0); -extern void (*D_8018D350[])(void); -extern void func_80153320(void *a0); -extern void func_801533A4(s32 a0); -extern void func_8015335C(s32 a0); -extern void func_80153410(s32 *a0); -extern void func_80153490(s32 a0); -extern void func_80153550(s32 a0); -extern void func_801534D8(s32 *a0); -extern void (*D_8011DB28)(s32 a0); -extern s32 func_801536DC(s32 param_1); -extern void func_800139C8(s32 a0, void *a1, void *a2); -extern s32 func_80153978(s32 a0, u16 *src); -extern s32 func_80133784(s32 a0, void *src, s32 dst); -extern s32 func_801539F8(s32 a0, void *a1); -extern s32 func_801539F8(s32 a0, void * a1); -extern s32 func_8016DA04(s32 a0); -extern s32 func_80153BD8(s32 a0); -extern s32 func_80153BF0(s32 a0); -extern void func_80153C18(void); -extern u16 D_8011F748; -extern void func_80153C30(void); -extern void func_80153C74(s16 a0, s16 a1); -extern s16 D_8011DB18; -extern void func_80153C44(int a0, int a1, s16 a2); -extern s16 D_8011DB0C; -extern s32 D_80115210; -extern void func_80153C8C(void); -extern void func_80153C9C(void); -extern s32 func_80153CBC(void); -extern s32 D_8018D364; -extern void (*D_8018D38C[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018D36C; -extern void func_80153D7C(s32 param_1); -extern void func_8015410C(void); -extern void func_80153E00(s32 param_1); -extern void func_80151664(void); -extern void func_80154134(u8 *a0); -extern void func_80154190(u8 *a0, s32 a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154218(u8 *a0, s32 a1, s32 a2); -extern void func_801541D8(u8 *a0, s32 a1, s32 a2); -extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); -extern void func_801542A4(); -extern void func_801542A4(s32 *a0, s32 a1); -extern void func_8015430C(); -extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); -extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); -extern s32 func_80154358(void * arg0); -extern void func_80154AB4(s32 a0, s32 a1); -extern void func_80154B20(s32 a0, s32 a1, s32 a2); -extern void func_80154AE0(s32 a0, s32 a1, s32 a2); -extern void func_80154B7C(u8 *a0, s32 a1); -extern void func_80154B4C(u8 *a0, s32 a1); -extern void func_80154BC8(void *a0, s32 a1, s32 a2); -extern void func_80154B98(void *a0, s32 a1, s32 a2); -extern u8 D_800D8D10[]; -extern s16 D_80078E9E; -extern void func_801550FC(s32 a0); -extern void func_80154ED8(s32 a0, s32 a1); -extern void func_80154F9C(s32 a0); -extern void func_800183E0(s32 a0); -extern void func_801550FC(s32 arg0); -extern void func_8001D150(s32, s32); -extern void func_8001D130(int, int); -extern void func_80155150(int param_1); -extern s32 D_800DE2A4[]; -extern void func_801552F4(s32 a0); -extern void func_80155344(s32 a0); -extern s32 func_80155394(s32 *a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80029178(s32); -extern int (*D_8018D3D8[])(void); -extern s32 func_80155458(s32 param_1); -extern s32 func_801659DC(u8 *a0); -extern s32 func_801554B8(void *arg0); -extern void func_801555F4(void *a0); -extern void func_80155518(s32 *a0); -extern void func_80155580(void *a0); -extern void (*D_8018D3DC[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern s32 func_80155800(s32 arg0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern s32 func_80029B4C(s32 a0, s32 a1); -extern s32 func_80029BC8(s32 a0, s32 a1); -extern s32 func_80029C44(s32 a0, s32 a1); -extern s32 func_8015640C(s32 a0, s32 a1); -extern s32 rand(void); -extern u32 func_8015616C(s32 param_1, u16 param_2); -extern u16 func_80156370(u16 param_1); -extern s32 func_801564B0(s32 a0); -extern s32 func_8002A1B4(void); -extern s32 func_8002A400(void); -extern s32 func_8002A670(void); -extern s32 func_8002A8E0(void); -extern s32 D_801151E0[]; -extern s32 func_801565C0(void); -extern void func_80156A14(s32 *a0); -extern void func_80156648(s32 *a0); -extern u8 D_8011DAD8[]; -extern s32 func_8014C568(s16 *a0, s16 *a1); -extern void func_801567BC(s32 a0); -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018D840[]; -extern void func_80156A1C(s32 param_1, s32 param_2); -extern s32 D_801150E0[]; -extern void func_80156A88(s32 a0, s32 a1); -extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); -extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); -extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); -extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern s32 func_80135004(s32 a0, void *a1, s32 a2); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801575E4(void *a0); -extern void func_801574DC(s32 *a0); -extern void func_80157544(void *a0); -extern void (*D_8018D850[])(void); -extern void func_8014CC28(s32 a0); /* defined */ -extern s32 func_8014F3E8(s32 a0); /* declared */ -extern void func_8015BDD0(s32 *a0); /* defined */ -extern void func_801575E4(void *a0); /* defined */ -extern void func_80157580(s32 arg0); -extern u8 D_800D4F14[]; -extern void func_801576A8(void *arg0); -extern s32 func_8015773C(u8 *a0); -extern s32 func_8015771C(u8 *a0); -extern s32 func_8015773C(u8 * arg0); -extern int D_801E96D0; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018D878[])(void); -extern void func_80157808(void *param_1); -extern void func_80157880(s32 a0); -extern s32 func_801725A4(u8 *a0); -extern u8 D_800D5128; -extern u8 D_8018D858; -extern void func_801578C0(s32 param_1); -extern void func_80147A84(int); -extern void func_80148038(int, int); -extern void func_80147460(int); -extern void func_80146D90(int); -extern void func_80161450(void *a0); -extern void func_80157A8C(int); -extern void func_80154A74(int, int); -extern unsigned char D_800D5178; -extern unsigned char D_8018D868; -extern void func_8015795C(int param_1); -extern void func_80161D20(s32 a0, s32 a1); -extern void func_80157A8C(s32 a0); -extern void func_8016706C(s32 a0); -extern u8 D_800D51AC[]; -extern void func_80157AC8(s32 param_1); -extern void func_80157B74(int param_1); -extern void func_8016158C(void *a0); -extern void func_8015BE04(s32 *a0); -extern void func_80157BC8(s32 a0); -extern void func_80157CCC(s32 a0); -extern void func_80157DC4(void *a0); -extern void func_80157FC4(void *a0); -extern void func_80157D74(u16 *a0); -extern void (*D_8018D8B8[])(void); -extern void func_80157E38(void *); -extern void func_80157E00(void *a0); -extern void func_80157E38(void * a0); -extern s32 func_80157F64(s32 *a0); -extern s32 func_80156600(void *a0); -extern void func_80157EA4(void *a0); -extern void (*D_8018D8C0[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018D88C; -extern void func_80158038(void * param); -extern u8 D_800D524C[]; -extern void func_80161418(void *a0); -extern void func_801580B4(s32 a0); -extern void func_801581AC(s32 a0); -extern void (*D_8018D8CC[])(void); -extern void func_8015824C(void *a0); -extern void func_801582C0(void *); -extern void func_80158288(void *a0); -extern u8 D_800D52A8[]; -extern void func_801585A4(s32 *a0); -extern void func_801582C0(void *a0); -extern s32 func_801585AC(s32 *a0); -extern u8 D_800D52E8[]; -extern void func_80158344(s32 *a0); -extern s32 func_801615C4(void *a0, s32 a1); -extern u8 D_8018D89C; -extern u8 D_800D533C; -extern void func_80158434(s32 param_1); -extern void func_80158548(s32 param_1); -extern void func_801585EC(u8 *a0); -extern void func_80158794(void); -extern s32 D_801E96D8; -extern s32 D_801E96E4; -extern s32 D_801E96E8; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018D908[])(s32 *); -extern void func_80158AE4(void *a0); -extern void func_80158AB4(void *a0); -extern void func_8016F264(void); -extern void func_80165840(void); -extern void func_801658DC(void); -extern void func_80165A78(s32); -extern void func_80158AE4(void * a0); -extern M2C_UNK D_800D58D8; -extern void func_80158BB0(void *arg0); -extern s32 func_80159404(s32 a0, s32 a1); -extern void func_80158C40(s32 *a0); -extern void func_80158CD8(s32 *a0); -extern s32 func_80159434(s32 a0, s32 a1); -extern void func_80158D60(s32 a0); -extern M2C_UNK D_800D5904; -extern void func_80158E24(s32 *a0); -extern s32 D_8018D8DC[]; -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80158F00(int param_1); -extern u8 D_80110C3C[]; -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80158FA4(s32 param_1); -extern s32 func_801399F0(s32 a0); -extern u8 D_80110C94[]; -extern u8 D_80110CD4[]; -extern void func_80159070(void *a0); -extern s32 func_80029A94(s32); -extern void func_80175454(void); -extern void func_800298BC(void *); -extern void func_8002992C(s32); -extern void func_800CF804(void); -extern void func_800CF818(void); -extern u8 D_80110D0C[]; -extern void func_80159120(s32 a0); -extern void func_801592CC(s32 *a0); -extern u8 D_800AE6BD; -extern s32 D_801E96E0; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018DB58[])(void); -extern void func_80159698(void *a0); -extern s32 func_801596D4(void *a0); -extern void func_80174B6C(void); -extern void func_80129248(s16 a0); -extern void func_8013C938(void); -extern void func_8013CB20(void); -extern void func_8013C98C(void); -extern void func_8002850C(s32, s32, s32); -extern void func_80028620(s32, void *); -extern s16 D_800B9AAC[]; -extern s16 D_800B9B00; -extern u16 D_801270C0; -extern u32 D_800AFAE8[]; -extern char D_8018D978[]; -extern s32 func_801596F0(s32 param_1); -extern s32 func_80159874(void); -extern void func_800167B8(s32 a0); -extern s32 func_8015987C(s32 a0); -extern int func_800167F0(int arg); -extern int func_801598BC(void); -extern void func_80159968(void *a0); -extern void func_801598E0(u8 *a0); -extern void (*D_8018DBFC[])(void); -extern void func_80159A20(void *a0); -extern void func_801599E0(void *a0); -extern void func_80159A18(void); -extern void func_80159BE4(s32); -extern void func_80159B08(s32 *a0); -extern void func_80159B70(void *a0); -extern void func_80159B3C(void * a0); -extern void (*D_8018DD50[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018DB6C; -extern void func_80159BE4(s32 arg0); -extern void func_8015A1C8(s32 a0); -extern void func_8015A2D8(s32); -extern void func_8015A1FC(s32 *a0); -extern void func_8015A264(void *a0); -extern void func_8015A230(s32 *a0); -extern void (*D_8018DD58[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018DB7C; -extern s32 func_80172608(u8 *a0); -extern void func_8015A2D8(s32 param_1); -extern u8 D_800D48DC; -extern s32 func_8015AB7C(s32 a0); -extern s32 D_8011F9C4; -extern s32 func_8015ABD4(s32 a0, s32 a1, s32 a2); -extern s32 func_80161CD0(s32 a0, s32 a1); -extern M2C_UNK D_8018DB9C; -extern void func_8015AC48(s32 arg0); -extern void func_8015AC90(s32 a0); -extern void func_8015ADB0(s32 a0); -extern void func_8015ACC4(s32 *arg0); -extern void func_8015AD3C(void *a0); -extern void func_8015AD08(void *arg0); -extern void (*D_8018DD60[])(void); -extern void func_8015ADB0(s32); -extern void func_8015AD78(s32 a0); -extern void func_8015ADB0(s32 arg0); -extern s32 func_80161A60(s32 a0); -extern s32 func_801619A4(s32 *a0); -extern s32 func_80149C08(s32 a0); -extern s32 func_8015B6F4(s32 a0); -extern s32 func_8015B7B4(s32 a0); -extern void func_8015B8F8(s32 *a0); -extern void func_800CCCC0(s32 a0); -extern s32 func_8015B858(u8 *a0); -extern s32 func_800CF8B4(void); -extern void func_80147A84(s32 a0); -extern s32 func_80172644(u8 *a0); -extern void func_800CCB78(s32 a0); -extern s32 func_80161488(void *a0); -extern void func_8015CC40(s32 *a0); -extern void func_8015CF8C(s32 *a0); -extern s32 func_8015AE2C(); -extern s32 D_800D4A9C; -extern int func_8015B6F4(int param_1); -extern u8 D_800D4F8C[]; -extern u8 D_800D4BE0[]; -extern s32 func_8014A51C(void); -extern s32 D_800D4B48; -extern void func_8015BD8C(s32 *a0); -extern s32 func_8015BE94(); -extern void func_8015BE38(struct Obj *a0); -extern s32 func_8015BE74(void); -extern void func_80161124(void *a0); -extern s32 func_8015BE94(s32 *a0); -extern s32 func_8015BEC4(void); -extern s32 func_8015B950(s32 arg0); -extern s32 func_8015BEE4(void); -extern void func_8015BF04(s32 *a0); -extern void func_8015C0C4(s32 a0); -extern void func_8015BFF4(void *a0); -extern void func_8015BF7C(s32 *a0); -extern void func_8015C030(s32 *a0, s32 a1); -extern void func_8015BFB0(s32 *a0, s32 a1); -extern void (*D_8018DD88[])(void); -extern void func_8015C0C4(s32); -extern void func_8015C08C(s32 a0); -extern s32 func_8015C128(s32 param_1); -extern void func_8015C6A4(void); -extern void func_8015C788(s32 a0); -extern void func_8015C6AC(s32 *a0); -extern void func_8015C714(void *a0); -extern void func_8015C6E0(s32 *a0); -extern void (*D_8018DD94[])(void); -extern void func_8015C788(s32); -extern void func_8015C750(s32 a0); -extern void func_8015CB94(s32 a0); -extern void func_8015CBCC(void); -extern void func_8015CBD4(void); -extern void func_8015CBDC(void); -extern void func_8015CBE4(void); -extern void func_8015CBEC(void); -extern void func_8015CBF4(void); -extern void func_8015CBFC(void); -extern void func_8015CC04(void); -extern void func_8015CC0C(s32 *param_1); -extern void func_8015CC74(s32 *a0); -extern s32 func_8015CCD0(); -extern s32 func_8015CCB0(void); -extern s32 func_801725E0(u8 *a0); -extern s32 func_8015CCD0(s32 param_1); -extern s32 func_8015CD20(s32 arg0); -extern void func_8015CF24(s32 a0); -extern void func_8015D01C(); -extern void func_8015CF58(s32 *param_1); -extern void func_8015CFC0(s32 *a0); -extern void func_8015CFFC(void); -extern void func_8015D01C(int param_1); -extern void (*D_8018DC08[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018DE38; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018CF1C[]; -extern void func_8015D414(int param_1); -extern void func_8015D57C(s32); -extern void func_8015D480(s32 *a0); -extern s32 func_8015D4E8(s16 *a0); -extern void func_8015D4B4(s16 *a0); -extern void func_8015D524(s32 arg0); -extern void func_8015D544(s32 a0); -extern void func_801746DC(void); -extern void func_8015D57C(s32 arg0); -extern s32 func_80161B18(void *a0); -extern s32 func_80161B84(void *a0); -extern void func_80154150(int, int); -extern void func_80149374(int, int); -extern unsigned char D_8018DE4C[]; -extern void func_8015D5E8(int param_1); -extern int func_8015E0D4(int); -extern void func_8015DA5C(s32 a0); -extern void func_8015DB6C(s32 a0); -extern void func_8015DA90(s32 *a0); -extern void func_8015DAF8(s32 *a0); -extern void func_8015DB6C(s32); -extern void func_8015DB34(s32 a0); -extern void func_8015DCB8(s32 a0); -extern void func_8014BD60(s32 a0, s32 a1); -extern int func_8015DD74(int); -extern void func_8015DBD4(void *arg0); -extern int func_8015DC84(int a0); -extern s8 D_8018DE88[]; -extern void func_8015DCB8(s32 param_1); -extern int func_8015DD74(int arg0); -extern void func_8015DECC(s32 a0); -extern void func_8015DDF0(s32 *a0); -extern void func_8015DE58(s32 *a0); -extern void func_8015DECC(s32); -extern void func_8015DE94(s32 a0); -extern void func_8015E018(s32 a0); -extern void func_8015DF34(void *arg0); -extern int func_8015DFE4(int a0); -extern void func_8015E018(s32 param_1); -extern int func_8015E0D4(int a0); -extern void func_8015E22C(s32 a0); -extern void func_8015E150(s32 *a0); -extern s32 func_8015E1B8(s32 a0); -extern void func_8015E184(s32 *arg0); -extern void func_8015E22C(s32); -extern void func_8015E1F4(s32 a0); -extern u8 D_800D4FF4[]; -extern u8 D_800D5098[]; -extern u8 D_800D5060[]; -extern s32 func_8014A850(s32 a0); -extern void func_8015E40C(s32 a0); -extern void func_8015E588(void); -extern void func_8015E4B0(s32 a0); -extern void func_8015E288(s32 a0); -extern u16 D_8018DED0; -extern u16 D_8018DED2; -extern u16 D_8018DED4; -extern s32 D_8018DED8; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -extern void func_8013C9C4(void *a0); -extern s32 D_8018DEE0; -extern void func_8015E5B0(u8 *self); -extern void func_8015E714(s32 *a0); -extern void func_8015E95C(s32); -extern void func_8015E84C(s32 *a0); -extern void func_8015E8E8(s32 *a0); -extern void func_8015E9B8(s32 *a0); -extern void func_8015E8B4(s32 *a0); -extern void func_8015E924(s32 a0); -extern void func_8015E95C(s32 a0); -extern s16 D_801152A0; -extern void func_80160818(s32 *a0); -extern void func_8015ED6C(s32 *a0); -extern void func_8015EE7C(s32); -extern void func_8015EDA0(s32 *a0); -extern s32 func_8015EE08(s32 a0); -extern void func_8015EDD4(s32 *arg0); -extern void func_8015EE44(s32 a0); -extern int D_800D4C48; -extern int D_8018DBEC; -extern void func_8015EE7C(s32 param_1); -extern void func_8015EEE0(void *arg0); -extern void func_8015EF9C(void); -extern void func_8015F080(s32); -extern void func_8015EFA4(s32 *a0); -extern void func_8015F00C(s32 *a0); -extern void func_8015EFD8(s32 *a0); -extern void func_8015F048(s32 a0); -extern void func_8015F080(s32 a0); -extern s32 D_80062BE8; -extern void func_801466F0(s32, s32, s32, s32, s32, s32, s32, s32); -extern s32 func_80161208(void); -extern void func_8015F118(void *a0); -extern void func_8015F260(s32 *a0); -extern void func_8015F380(); -extern void func_8015F2BC(s32 *a0); -extern void func_8015F324(s32 *a0); -extern void func_8015F2F0(s32 *a0); -extern void func_8015F360(void); -extern s32 func_801725B8(u8 *a0); -extern void func_8015F380(void* arg0); -extern void func_8015F738(s32 *a0); -extern void func_8015F848(s32 *a0); -extern void func_8015F76C(s32 *a0); -extern s32 func_8015F7D4(s32 a0); -extern void func_8015F7A0(s32 *arg0); -extern void func_8015F810(s32 *a0); -extern void func_80147078(s32 *, s16); -extern void func_80159B70(void *); -extern void func_8015F89C(void *arg0); -extern void func_8015F948(s32 *param_1); -extern void func_8015F9A4(void *arg0); -extern void func_8015FA24(s32 arg0); -extern void func_8015FBE0(s32 *a0); -extern void func_8015FA44(s32 *a0); -extern void func_8015FAAC(s32 *a0); -extern void func_8015FA78(s32 *a0); -extern s32 func_801612B8(void *a0, s32 a1); -extern void func_8016007C(s32 a0); -extern void func_8015FAE8(void *arg0); -extern void func_8015FCC8(void *param_1); -extern unsigned int D_8018DF64[]; -extern void func_8015FD74(int param_1); -extern s32 func_80028DE0(void); -extern u8 func_80165700(s32 a0, s32 a1); -extern void func_8015FDCC(s32 a0); -extern u8 D_80078EC2; -extern u8 func_801656E8(s32 a0, s32 a1); -extern void func_80165670(s32 a0, s32 a1); -extern void func_8016004C(s32 a0); -extern void func_8015FF20(void *param_1); -extern void func_801601AC(s32 *a0); -extern void func_801600D0(s32 *a0); -extern void func_80160138(s32 *a0); -extern void func_80160104(s32 *a0); -extern void func_80160174(s32 *a0); -extern void func_801601E4(s32 *a0); -extern void func_80160244(s32 *a0); -extern void func_8016032C(void); -extern void func_80160410(s32 *a0); -extern void func_80160334(s32 *a0); -extern void func_8016039C(s32 *a0); -extern void func_80160368(s32 *a0); -extern void func_801603D8(s32 *a0); -extern u8 D_80062BD0; -extern void func_80160410(s32 * a0); -extern void func_801607B8(s32 *a0); -extern void func_801608C0(s32 *a0); -extern void func_801607E4(s32 *a0); -extern void func_8016084C(s32 *a0); -extern void func_80160888(s32 *a0); -extern void func_80160A28(s32 a0); -extern void func_80160A74(s32 *a0); -extern void func_80160BB4(s32 *a0); -extern void func_80160ACC(s32 *a0); -extern s32 func_80160B34(s32 a0); -extern void func_80160B00(s32 *arg0); -extern void func_80160B70(s32 a0); -extern void func_80160C28(void *arg0); -extern void func_80160CB4(s32 *a0); -extern void func_80160D10(void *arg0); -extern void func_80160DEC(u8 *a0); -extern void func_80160F00(); -extern void func_80160E3C(s32 *a0); -extern void func_80160EA4(); -extern void func_80160E70(s32 *a0); -extern void (*D_8018E014[])(void); -extern void func_80160EA4(void *a0); -extern void func_80160EE0(void); -extern void func_80160F00(void* arg0); -extern void func_800D0F4C(s32 a0); -extern u8 D_80110EC0; -extern void func_80160F70(s32 a0); -extern void func_80160FE0(s32 *a0); -extern void func_80161034(void *a0); -extern void func_80161094(s32 a0); -extern void func_801610FC(void); -extern void func_801483E8(void); -extern void func_8016130C(void *a0, s32 a1); -extern void func_80161240(void *a0); -extern void func_80161374(void *a0, s32 a1); -extern void func_80161278(void *a0); -extern s32 func_801612B8(void * a0, s32 a1); -extern void func_8016163C(void *a0, s32 a1); -extern void func_80161774(void *a0, s32 a1); -extern s32 func_8016197C(s32 a0, s32 a1); -extern void func_80161888(void *a0, s32 a1); -extern void func_801614E4(void *a0); -extern void func_8016191C(void *a0, s32 a1); -extern void func_8016151C(void *a0); -extern void func_80161554(void *a0); -extern s32 func_801615C4(void * arg0, s32 arg1); -extern s32 func_80161A00(s32 a0); -extern s32 func_80161A30(s32 a0); -extern int func_801497A8(void); -extern int func_80161BE0(void *param_1); -extern u16 D_8018E044[]; -extern void func_80161C98(int param_1, u32 param_2); -extern void func_80161E08(s32); -extern s32 func_80162438(s32); -extern s32 D_800AE6A8; -extern void func_800D1734(void *); -extern s32 D_8018E0A8; -extern void func_80161D88(void); -extern void func_80161E08(s32 param_1); -extern int func_800291DC(int); -extern int func_800D0E30(void *a0); -extern int func_801620C4(void); -extern s32 func_800D0D7C(s32, s32); -extern int D_801E96F0[]; -extern void func_8016216C(void); -extern u8 D_80078EB0; -extern u8 D_80078EB1; -extern s32 func_801621CC(s32 arg0); -extern void func_801622C4(void); -extern void (*D_8018E0CC[])(void); -extern void func_80162330(void *a0); -extern void func_8014706C(void *a0); -extern s32 func_8016236C(u8 *a0); -extern void func_800D0C48(s32 a0); -extern s32 func_801623B8(s32 *a0); -extern s32 func_800167F0(s32 a0); -extern s32 func_80162414(void); -extern s32 func_80162438(s32 _unused0); -extern int func_801626B8(void); -extern void func_80162714(void); -extern int D_801E9748[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018E114[])(void); -extern void func_80162834(void *a0); -extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80162968(s32 a0); -extern s32 func_80162ACC(u8 *a0); -extern u8 D_800B5CB8; -extern s32 D_8018E104; -extern s32 D_800B5CBC; -extern u8 D_800B5CDF; -extern s32 D_800B5CEC; -extern void func_80162870(s32 param_1); -extern void func_801628F4(s32 *a0); -extern void func_80162968(s32 param_1); -extern void func_80162AC0(s32 *a0, s8 a1); -extern s32 func_80162AE0(u8 *a0); -extern void func_80162AF4(void); -extern void func_80162CC4(void); -extern s32 D_80126D40; -extern void func_80162B1C(void); -extern void func_80162D28(s32 *a0); -extern void func_80162D88(s32 *a0); -extern void func_80162DE8(s32 *a0); -extern void func_80162E48(s32 *a0); -extern void func_80162EA8(s32 *a0); -extern void func_80162F60(s32 arg0, s32 arg1); -extern void func_80162F80(s32 arg0, s32 arg1); -extern void func_80162FA0(s32 arg0, s32 arg1); -extern void func_80162F08(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80162FC0(s32 *a0); -extern void func_80162FF4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801630C4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163194(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg4); -extern void func_8016325C(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163234(s32 a0); -extern s32 D_80115100; -extern s32 func_801632E0(void); -extern s32 D_80115200; -extern s32 func_801632F0(void); -extern u16 D_80126B18[]; -extern void func_80163328(void); -extern s32 func_801633A8(void); -extern s32 func_80163408(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void func_80163534(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, u16 * a5); -extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); -extern char D_801E8DBC[8]; -extern void *memcpy(void *dst, const void *src, unsigned int n); -extern void func_801634D8(s32 param_1, u16 param_2, u16 param_3, s32 param_4, u16 param_5); -extern void func_80157158(); -extern void func_80163664(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801636D0(s32 a0, s32 a1); -extern s32 func_8016380C(struct S8016380C *a0, s32 a1); -extern void *memcpy(void *dst, void *src, s32 n); -extern s32 func_801638A0(u8 *a0, s32 a1); -extern s32 func_80163950(s32 a0); -extern void (*D_8018E11C[])(void); -extern void func_80163A58(void *a0); -extern void func_80163A94(s32 param_1); -extern void func_80163C2C(s32 param_1); -extern void func_80163EC8(s32 param_1); -extern void func_80164270(s32 *a0); -extern void func_80164418(void); -extern void func_80163764(s32 a0); -extern void func_801642AC(s32 a0); -extern void func_8016432C(s32 a0); -extern void func_80164410(void); -extern s32 func_80012DBC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164530(s32 arg0); -extern void (*D_8018E170[])(void); -extern void func_80164744(s32 param_1); -extern void func_8001C810(s32 a0, s32 a1); -extern void func_80164A74(s32 *a0); -extern void func_80164930(s32 a); -extern u16 D_800DF2E0; -extern s32 D_8018E138; -extern s16 D_8018E16C; -extern s16 D_8018E16A; -extern s16 D_8018E168; -extern void func_801647A4(int param_1); -extern void func_80164ACC(); -extern void func_80164864(void *a0); -extern void func_80164930(s32 param_1); -extern s32 func_8014C308(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164ACC(s32 a0); -extern void (*D_8018E17C[])(void); -extern void func_80164BA0(void *a0); -extern void func_8001CD50(s32 a0, s32 a1); -extern void func_800233CC(void *, unsigned short); -extern void func_80164DD0(s32 a0); -extern void func_80164DB0(void); -extern u8 D_801E97A8; -extern u8 D_801E97A9; -extern u8 D_801E97AA; -extern u8 D_801E97AB; -extern u8 D_801E97AC; -extern u8 D_801E97AD; -extern u8 D_801E97AE; -extern u8 D_801E97AF; -extern void func_80164BDC(s32 param_1); -extern void func_80164E40(void); -extern void func_80164CD4(u8 *a0); -extern void func_80164D4C(void *arg0); -extern void (*D_8018E18C[])(void); -extern void func_80164EA4(void *a0); -extern void func_80165124(void *a0); -extern void func_80164EE0(int param_1); -extern s32 func_80165140(s32 a0); -extern void func_801651B8(void *a0); -extern void func_80164F44(void *arg0); -extern void func_80165024(void *a0); -extern void func_80165064(s32 *a0); -extern void func_801650C4(s32 *a0); -extern s32 func_80165140(s32 param_1); -extern s32 func_80165240(s32 a0, s32 a1, s32 a2); -extern s32 D_801E97E8; -extern void func_801651B8(void * param_1); -extern u8 D_80126CF8; -extern void func_8016533C(void); -extern void func_801653F4(s32 a0); -extern void func_80165580(s32 a0); -extern void func_80165374(s32 a0); -extern void func_80165580(s32 _arg0); -extern void func_801653B8(s32 *a0); -extern s32 func_80165624(s32 a0); -extern u8 D_80078EC5; -extern void (*D_8018E1D0[])(void); -extern u8 func_80165658(s32 a0, s32 a1); -extern void func_800CAE0C(s32 a0); -extern void func_801654A8(s32 arg0); -extern void func_80165B28(void *a0); -extern void func_801655E4(s32 a0); -extern u8 D_8018E24C[]; -extern s32 D_8018E26C[]; -extern u8 D_8018E2E8[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018E308[]; -extern u8 D_8018E328[]; -extern void func_800CAF6C(void); -extern void func_80165770(void); -extern void func_801657D8(void); -extern u8 D_80078EC3; -extern void func_801657A0(void); -extern s32 D_80078EA0; -extern s32 D_80078EA8; -extern u8 D_80078EBB; -extern s32 D_80078ED4; -extern s32 D_80078ED8; -extern s32 D_80078EDC; -extern u8 D_80078EE0; -extern void func_80165874(void); -extern s8 D_80078EC4; -extern void func_801658EC(void); -extern s32 func_80165900(void); -extern s32 func_80165910(void); -extern s32 D_8012672C; -extern s32 D_8012811C; -extern s32 D_80126B08; -extern void func_80165938(void); -extern void func_80165958(void); -extern s32 func_80165978(void); -extern void func_80165988(void); -extern s32 func_801659A8(void); -extern void func_801659B8(void); -extern s32 func_801659CC(void); -extern void func_80165A18(void); -extern s32 func_80165A50(s32 _arg0); -extern void func_80165AC8(void); -extern void func_80165A78(s32 arg0); -extern void (*D_8018E3C4[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_8018E440[])(void); -extern void func_80165BB4(u8 *a0); -extern void func_80165B6C(u8 *a0); -extern void func_80165C58(s32 arg0); -extern void func_80165BFC(void *a0); -extern void func_80165C78(void); -extern M2C_UNK D_801E8DCC; -extern void func_80165E2C(u16 *arg0); -extern s32 func_80165FA4(s32 a0, s32 a1, s32 a2); -extern s32 func_80167DBC(s32 a0, s32 a1, s32 a2); -extern s32 func_80167AE0(s32 a0, s32 a1, s32 a2); -extern void func_80165E90(void); -extern void func_80020F34(s32 a0, s32 a1); -extern s32 func_80165FA4(s32 arg0, s32 arg1, s32 arg2); -extern void (*D_8018E44C[])(void); -extern void func_80166018(void *a0); -extern void func_80166054(s32 arg0); -extern void func_801661CC(s32 param_1); -extern void func_80166244(void* arg0); -extern void func_8016629C(void *a0); -extern void func_801662F4(void *a0); -extern void func_8016634C(void *a0); -extern void func_801663A4(void *a0); -extern void (*D_8018E454[])(void); -extern void func_801663FC(void *a0); -extern u8 D_800D387C[]; -extern u8 D_800D3888[]; -extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); -extern void func_800D1FC8(s32 a0, s32 a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern void func_801665B4(); -extern void func_80146C3C(); -extern void func_80166438(u8 *a0); -extern s32 func_80128ED8(s32 param_1, s32 *param_2); -extern void func_800D22E4(s32 a0); -extern void func_801665B4(s32 *a0); -extern void (*D_8018E51C[])(void); -extern void func_80166618(void *a0); -extern void (*D_8018E52C[])(void); -extern void func_80166654(void *a0); -extern s32 func_80166690(s32 param_1, s32 param_2); -extern s32 func_80166994(); -extern s32 func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern s32 func_80167540(s32 arg0); -extern void (*D_8018E53C[])(void); -extern void func_801678B4(void *a0); -extern void RotMatrixYXZ(void *a0, void *a1); -extern void func_80048EAC(void *a0, void *a1); -extern s32 func_801670E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80146C3C(void); -extern void func_801678F0(s32 a0); -extern void (*D_8018E548[])(void); -extern void func_80167A9C(void *a0); -extern void func_80167AD8(void); -extern s32 func_80167AE0(s32 param_1, s32 param_2, s32 param_3); -extern void func_80168070(s32 a0, s16 *a1, s16 *a2, void *a3); -extern u8 D_8018E4A8[]; -extern u8 D_8018E4BC[]; -extern s32 func_80167DBC(s32 arg0, s32 arg1, s32 arg2); -extern void func_800D20C0(void *a0, void *a1, s32 a2); -extern void func_80017E68(void *a0, void *a1); -extern void func_800D23D0(void *a0); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern s32 D_801269A4; -extern s32 D_801269A8; -extern s32 D_801269AC; -extern void func_80168070(s32 param_1, s16 *param_2, s16 *param_3, void *param_4); -extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_8016829C(s32 a0); -extern s32 func_80166690(s32 a0, s32 a1); -extern void func_80168328(s32 arg0); -extern void func_801683D8(s32 a0); -extern void func_801684B4(s32 a0); -extern void func_80168540(s32 a0); -extern void func_801685EC(s32 a0); -extern void func_80168640(s32 a0); -extern Blk20 D_800AE620; -extern s32 RotMatrixX(s32 a0, void *a1); -extern void func_80168664(void *arg0); -extern void (*D_8018E560[])(void); -extern void func_80168744(void *a0); -extern void func_80168BDC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801687CC(s32 a0); -extern void func_80168780(s32 a0); -extern void func_80168828(void); -extern void func_801687CC(s32 param_1); -extern void func_80168828(); -extern void (*D_8018E568[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_8018E570[])(void); -extern void func_80168AA8(void *a0); -extern void func_80168AE4(s32 a0); -extern void func_800D2318(void); -extern void func_80168BDC(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void (*D_8018E578[])(void); -extern void func_80168D58(void *a0); -extern void func_80168D94(int a0); -extern void func_80168F40(); -extern void func_80168EC4(s32 a0); -extern void func_80168F40(void *arg0); -extern void (*D_8018E580[])(void); -extern void func_8016901C(void *a0); -extern void func_80169058(s32 a0); -extern s32 func_80169228(void); -extern void func_801691B8(void *a0); -extern void (*D_8018E588[])(void); -extern void func_801693CC(void *a0); -extern void func_80169584(s32 param_1); -extern void func_80169408(s32 a0); -extern void func_8016951C(int param_1); -extern s32 func_80017758(void *a0, void *a1); -extern s32 func_80017DC4(void *a0, void *a1); -extern void func_801696D8(s32 a0, s32 a1); -extern void (*D_8018E590[])(void); -extern void func_80169830(void *a0); -extern void func_8016986C(s32 a0); -extern s32 func_80169A4C(s32 a0, s32 a1); -extern void func_801699D0(void *arg0); -extern void (*D_8018E644[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_8018E64C[])(void); -extern void func_80169F00(void *a0); -extern char D_8018E5FC[]; -extern char D_8018E5BC[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8018E684[])(void); -extern void func_8016A020(void *a0); -extern void func_8016A05C(void *a0); -extern void func_8016A290(s32 a, void *b, void *c); -extern void func_8016A08C(s32 param_1); -extern void func_8016A1CC(int param_1); -extern void func_8016A290(s32 param_1, void *param_2, void *param_3); -extern void (*D_8018E690[])(void); -extern void func_8016A700(void *a0); -extern s32 func_8016A73C(s32 arg0); -extern s32 func_8016A8FC(s32 a0); -extern void func_8016A890(s32 arg0); -extern s32 func_80016A5C(); -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern void func_8016AA50(s32 param_1, s32 param_2); -extern void (*D_8018E6D8[])(void); -extern void func_8016AB30(void *a0); -extern s32 func_8016AB6C(s32 arg0); -extern void func_8016B234(); -extern void func_8016AE5C(s32 param_1); -extern void func_8016AFB0(s32 a0); -extern void func_8016B114(void *arg0); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_80016ED4(void *a0); -extern void func_8016B234(s32 param_1); -extern s32 func_8016B448(s32, s32); -extern s32 func_8016BA48(s32 a0); -extern void func_8016B3F4(s32 a0); -extern s32 func_8016B428(s32 a0); -extern void func_8016B984(void *a0); -extern s32 func_8016B448(s32 arg0, s32 arg1); -extern void (*D_8018E754[])(void); -extern void func_8016B4BC(void *a0); -extern int func_8016B9F8(int); -extern int func_8016B834(int, int); -extern void func_8016B91C(int); -extern int D_801E9B08; -extern void func_8016B4F8(int param_1); -extern s32 func_8016B9F8(s32 param_1); -extern void func_8016B6BC(s32, s32, s32, s32); -extern void func_8016B91C(s32); -extern s16 D_8018E748[]; -extern void func_8016B5C0(s32 param_1); -extern void func_80013CFC(s32 a0, s32 a1, void *a2); -extern void func_8001739C(void *a0); -extern void func_8016B6BC(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void func_8001CD9C(int, void *); -extern int *D_8018E78C[]; -extern unsigned short D_8018E794[]; -extern unsigned short D_8018E79C[]; -extern unsigned char D_801E9B10[]; -extern int func_8016B834(int param_1, int param_2); -extern void func_8016B964(SrcB964 *a0, DstB964 *a1); -extern void func_8016B91C(s32 arg0); -extern s32 D_801E9B08; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8018E7A4[])(void); -extern void func_8016BBA4(void *a0); -extern s32 func_8016BBE0(s32 param_1); -extern void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3); -extern M2C_UNK D_801E9C44; -extern M2C_UNK D_801E9C48; -extern void func_8016BCC0(void *arg0); -extern s32 func_8016BD78(s32 param_1); -extern s32 func_8016BEA0(s32 param_1); -extern void func_8016BF34(void *a0); -extern void func_8016BFD0(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern s32 D_801E9BD0; -extern void (*D_8018E7D4[])(void); -extern void func_8016C14C(void *a0); -extern void func_8016C188(s32 param); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801E9C4C[]; -extern u8 D_801E9C54[]; -extern u8 D_801E9C04[]; -extern void func_8016C2C4(s32 param); -extern s32 func_8016C49C(s32 param_1_arg); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_8016C74C(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern short func_8016CF04(); -extern void func_8016C83C(s32 a0); -extern short func_8016CBC0(void); -extern void func_8016C998(s32 param_1); -extern void (*D_8018E7DC[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_8018E7F8[])(void); -extern void func_8016D19C(void *a0); -extern void func_800233CC(void*, unsigned short); -extern void func_8001CD9C(int, void*); -extern void func_80147324(int a); -extern void RotMatrixYXZ(void *a, void *b); -extern void ApplyMatrixSV(void *a, void *b, void *c); -extern void func_8016D1D8(int param_1); -extern void (*D_8018E800[])(void); -extern void func_8016D428(void *a0); -extern void func_8016D464(u8 *a0); -extern void func_8016D4DC(s32 a0); -extern void func_8016D5EC(s32 *a0); -extern void func_8016D64C(int param_1); -extern void func_8016D688(int param_1); -extern void func_8016D778(s32 a0); -extern void func_800D20C0(); -extern void func_8016D848(s32 *a0); -extern void func_8016D984(s32 *a0); -extern void func_8016DBD8(u8 *a0); -extern void (*D_8018E868[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_8018E80C; -extern u8 D_8018E818; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void func_8016DC20(s16 *param_1); -extern void (*D_8018E89C[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8018E8A4[])(void); -extern void func_8016DF20(void *a0); -extern void func_8016DF5C(s32 param_1); -extern void func_8016E3CC(s32 a0); -extern void func_8016E1CC(s32 a0); -extern void func_8016E26C(s32 *a0); -extern void func_8016E2E8(void *a0); -extern void func_8016E460(void *a0, void *a1); -extern void func_8016E358(void *a0); -extern void func_8016E460(void *arg0, void *arg1); -extern void (*D_8018E8F8[])(void); -extern void func_8016E5B8(void *a0); -extern void func_8016E5F4(s32 arg0); -extern void func_8016E778(); -extern void func_8016E688(void *a0); -extern void func_8016E6E4(s32 a0); -extern void func_8016E728(u8 *a0); -extern void func_8016E7C8(int param_1, short *p1, unsigned int *p2); -extern void func_8016E778(int param_1); -extern void func_8016E7C8(int param_1, short *param_2, unsigned int *param_3); -extern s32 D_80115218; -extern void func_8016E8F0(void); -extern void func_8016E918(short param_1, short param_2); -extern s32 func_8016E95C(); -extern u16 D_8018E92C[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_8018E91C[]; -extern void func_8016EB3C(s32 p); -extern void func_8016EBA8(u8 *param_1); -extern void func_8016ED6C(void); -extern s32 D_80126D70; -extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); -extern void func_8016ED8C(s32 a0, s32 a1, s32 a2); -extern void func_8016EE40(s32 a0, s32 a1, s32 a2); -extern void func_8016EDBC(s32 a0, s32 a1, s32 a2); -extern void func_8016EE94(); -extern void func_8016EDEC(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_8016EF78(s32 a0); -extern void func_8016EE40(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_801726D0(void *a0); -extern s32 D_80126D50; -extern s32 D_80126D54; -extern u8 D_80126D6C; -extern u8 D_80126D6D; -extern u8 D_80126D6E; -extern s32 D_80126D5C; -extern s32 D_80126D60; -extern s16 D_80126D64; -extern s16 D_80126D66; -extern s16 D_80126D68; -extern s16 D_80126D6A; -extern u8 D_80126D1A; -extern s32 D_80127058; -extern s32 D_8012705C; -extern s32 D_80127060; -extern s32 D_80127064; -extern s32 D_80127068; -extern s32 D_8012706C; -extern s32 D_80127070; -extern s32 D_80127074; -extern s16 D_80126D20; -extern void func_8016EE94(s32 a0, s32 a1); -extern s32 func_8016EFC8(); -extern s32 func_8016EFA8(s32 a0); -extern s32 func_8016EFC8(s32 a0, s32 a1); -extern void func_8016F094(s32 *a0); -extern s32 func_8016F0AC(); -extern s32 D_8018E948; -extern void func_8016F250(void); -extern void func_8016F288(void); -extern void func_8016F2A8(void); -extern void func_8016F2C8(void); -extern void func_8016F2EC(void); -extern void func_8016F30C(void); -extern void func_8016F330(void); -extern void func_8016F350(void); -extern void func_8016F374(void); -extern void func_8016F388(void); -extern void func_8016F398(void); -extern s32 func_8016F44C(s32 a0); -extern void func_8016F470(s32 a0); -extern s32 func_8016F410(s32 a0); -extern void func_80175414(s32 _arg0); -extern s32 func_8016F4C4(s32); -extern s32 func_8016F494(s32 a0); -extern void func_8016F0E4(void); -extern s32 func_8016F4C4(s32 param_1); -extern void func_8016F4F4(void); -extern void func_801719A4(int a0, int a1); -extern void func_800D1724(s32 a0); -extern void func_80171928(void *a0); -extern void *D_8011F738; -extern void func_8016F4FC(void *a0); -extern void func_8014708C(void *a0); -extern void func_8016F540(void *a0); -extern void func_8016F578(s32 *a0); -extern void func_8016F5B0(void *a0); -extern void func_80147060(u8 *a0); -extern void func_8016F5E0(u8 *a0); -extern void func_8016F610(void *a0); -extern void func_8016F648(void *a0); -extern void func_8016F680(void *a0); -extern void func_8016F6B0(void *a0); -extern void (*D_8018E9C0[])(void); -extern void func_8016F6E0(void *a0); -extern s32 func_80171990(u8 *a0); -extern void func_8016F764(void *a0); -extern void func_8016F71C(u8 *a0); -extern void (*D_8018E9C8[])(void); -extern void func_8016F798(void *a0); -extern void func_8016F804(void *a0); -extern void func_8016F7D4(u8 *a0); -extern void func_80171928(void *); -extern void (*D_8018E9D0[])(void); -extern void func_8016F834(void *a0); -extern void func_8016F8AC(u8 *a0); -extern void func_8016F870(u8 *a0); -extern void func_80172358(u8 *a0, u8 *a1); -extern void (*D_8018E9D8[])(void); -extern void func_8016F8E4(void *a0); -extern void func_8016F95C(void *a0); -extern void func_8016F920(u8 *a0); -extern s32 func_80171CC4(void *a0, void *a1); -extern s32 func_80171D1C(void *a0, void *a1, s32 a2); -extern u16 D_8011F73E; -extern void (*D_8018E9E0[])(void); -extern void func_8016F9C4(void *a0); -extern void func_80171B44(s32 *a0); -extern void func_8016FA44(s32 a0); -extern void func_8016FA00(s32 a0); -extern s32 func_80171C64(s32 a0, s32 a1); -extern void (*D_8018E9E8[])(void); -extern void func_8016FA84(void *a0); -extern void func_8016FB10(void *a0); -extern void func_8016FAC0(u8 *a0); -extern void func_8016FB50(void *a0); -extern void (*D_8018E9F4[])(void); -extern void func_8016FB7C(void *a0); -extern void func_8016FC24(); -extern void func_8016FBB8(s32 a0); -extern s32 func_80171B4C(s32 a0, s32 a1); -extern void func_8016FC24(s32 a0); -extern void func_8016FC64(void *a0); -extern void (*D_8018EA00[])(void); -extern void func_8016FC90(void *a0); -extern void func_8016FD08(u8 *a0); -extern void func_8016FCCC(u8 *a0); -extern s32 func_80172658(s32 *a0); -extern void func_8016FD08(u8 *s0); -extern void func_8016FD7C(s32 *a0); -extern void (*D_8018EA0C[])(void); -extern void func_8016FDB4(void *a0); -extern void func_8016FE2C(u8 *a0); -extern void func_8016FDF0(u8 *a0); -extern void func_8016FE2C(u8 * a0); -extern s32 func_8016FE78(s32 *a0); -extern s32 func_80172664(s32 *a0); -extern void func_8016FED0(s32 *a0); -extern void (*D_8018EA1C[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_8018EA2C[])(void); -extern void func_8016FFDC(void *a0); -extern void func_80170068(u8 *a0); -extern void func_80170018(u8 *a0); -extern void func_801700B8(u8 *a0); -extern void func_80170100(u8 *a0); -extern void (*D_8018EA34[])(void); -extern void func_80170150(void *a0); -extern void func_801701C8(u8 *a0); -extern void func_8017018C(u8 *a0); -extern void func_801701C8(u8 * a0); -extern void (*D_8018EA3C[])(void); -extern void func_80170240(void *a0); -extern void func_801702B8(s32 a0); -extern void func_8017027C(u8 *a0); -extern s16 func_80171AB0(s32 a0, void *a1); -extern void (*D_8018EA44[])(void); -extern void func_801702FC(void *a0); -extern void func_80170374(u8 *a0); -extern void func_80170338(u8 *a0); -extern s32 func_8014C168(s32 *a0, s32 a1); -extern void func_80170374(u8 * a0); -extern void (*D_8018EA4C[])(void); -extern void func_801703E0(void *a0); -extern void func_8017044C(u8 *a0); -extern void func_8017041C(u8 *a0); -extern void func_8017044C(u8 * a0); -extern void (*D_8018EA54[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_8018EA5C[])(void); -extern void func_80170548(void *a0); -extern void func_801705C0(u8 *a0); -extern void func_80170584(u8 *a0); -extern void func_801705C0(u8 * a0); -extern void (*D_8018EA64[])(void); -extern void func_801705F8(void *a0); -extern void func_80170670(void *a0); -extern void func_80170634(u8 *a0); -extern void func_8012A568(void (*a0)(void)); -extern void (*D_8018EA6C[])(void); -extern void func_801706AC(void *a0); -extern void func_80170718(void *a0); -extern void func_801706E8(u8 *a0); -extern void func_80129FF4(void); -extern void (*D_8018EA74[])(void); -extern void func_80170748(void *a0); -extern void func_801707D4(void *a0); -extern void func_80170784(u8 *a0); -extern s32 func_80174ED4(void); -extern void (*D_8018EA7C[])(void); -extern void func_80170810(void *a0); -extern void func_801708B0(void *a0); -extern u8 D_800D5DA8; -extern void func_8017084C(s32 a0); -extern u8 D_800D5A34[]; -extern void func_80170AD8(void *a0); -extern void func_80171904(s32 a0); -extern void func_80170B48(int a0); -extern void func_80170928(void); -extern u8 D_800D59EC[]; -extern void func_80170970(void); -extern u8 D_800D599C[]; -extern void func_801709B8(void); -extern u8 D_800D5934[]; -extern void func_80170A00(void); -extern void func_80170A48(void); -extern u8 D_800D5DC0[]; -extern void func_80170A90(void); -extern void (*D_8018EA84[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_8018EA8C[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8018EA94[])(void); -extern void func_80170C74(void *a0); -extern s32 func_8017197C(u8 *a0); -extern void func_80170CF0(void *a0); -extern void func_80170CB0(u8 *a0); -extern void (*D_8018EA9C[])(void); -extern void func_80170D68(void *a0); -extern void func_80170DE0(u8 *a0); -extern void func_80170DA4(u8 *a0); -extern s32 D_8011F73C; -extern s32 D_8011F740; -extern void func_801718AC(void *a0); -extern void func_80170DE0(u8 * _arg0); -extern void (*D_8018EAA4[])(void); -extern void func_80170E34(void *a0); -extern void func_80170EAC(u8 *a0); -extern void func_80170E70(u8 *a0); -extern int func_800D0F8C(int a0); -extern void func_80170EAC(u8 * _arg0); -extern void (*D_8018EAAC[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8018EAB4[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_8018EABC[])(void); -extern void func_80171064(void *a0); -extern void func_801710DC(u8 *a0); -extern void func_801710A0(u8 *a0); -extern u16 D_8011F73A; -extern void func_801710DC(u8 * arg0); -extern void (*D_8018EAC4[])(void); -extern void func_80171120(void *a0); -extern void func_8017118C(u8 *a0); -extern void func_8017115C(u8 *a0); -extern void func_80142454(s32 a0); -extern void func_8017118C(u8 * a0); -extern void (*D_8018EACC[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8018EAD4[])(void); -extern void func_80171260(void *a0); -extern struct B16 D_800A5E88; -extern struct B16 D_800A5E98; -extern struct B16 D_800A5EA8; -extern void func_801719A4(int, int); -extern s32 func_80171990(u8*); -extern void func_80171384(void*); -extern void func_8017129C(int param_1); -extern s32 func_80012F74(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80171384(void *a0); -extern void (*D_8018EADC[])(void); -extern void func_801714E4(void *a0); -extern void func_8017162C(void *a0); -extern void func_80171520(s32 a0); -extern s32 func_801716AC(s32 a0, void *a1, s32 *a2); -extern s32 func_80012FC8(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_800A5E94; -extern u8 D_800A5E95; -extern u8 D_800A5E96; -extern s32 func_801716AC(s32 a0, void * a1, s32 * a2); -extern int func_800D0FE0(int a0); -extern void func_801717A0(void *a0); -extern void func_8013E588(void *a0); -extern void func_801717F4(void *a0); -extern void func_80171824(void *a0); -extern void func_80171854(void *a0); -extern void func_80171884(void); -extern void func_80171A1C(u8 *a0); -extern void func_80171928(void * a0); -extern void func_8017196C(s32 *a0, s8 a1); -extern void func_80171A04(s32 *a0); -extern void func_80171A10(s32 *a0); -extern void func_80171A34(s32 *a0, s8 a1); -extern s32 func_80171A44(u8 *a0); -extern s32 func_80171A58(u8 *a0); -extern s32 func_80171A6C(u8 *a0); -extern void func_80171A80(s32 *a0, s32 a1); -extern s32 func_80171A88(s32 a0); -extern s16 func_80171AB0(s32 param_1, void * _arg1); -extern void func_80171B10(void *a0); -/* ==== end §8b carried decl layer ==== */ - - -extern void func_80146D90(s32); -extern s32 ratan2(s32, s32); -extern s32 D_801151D4; - -s32 func_80171B4C(arg0, arg1) -s32 arg0; -u8 arg1; -{ - s32 p, ang, idx; - u8 c; - p = D_801151D4; - *(u8 *)(arg0 + 0xA9) = 0x41; - ang = ratan2(*(s32 *)(p + 0x68) - *(s32 *)(p + 0x5C), - *(s32 *)(p + 0x70) - *(s32 *)(p + 0x64)); - idx = ((*(s16 *)(*(s32 *)(arg0 + 0x20) + 0x12) - ((ang + 0x800) & 0xFFF)) + 0x100) & 0xE00; - switch (idx / 0x200) { - case 0: *(u16 *)(arg0 + 0xAA) = 0x1000; break; - case 1: *(u16 *)(arg0 + 0xAA) = 0x3000; break; - case 2: *(u16 *)(arg0 + 0xAA) = 0x2000; break; - case 3: *(u16 *)(arg0 + 0xAA) = 0x6000; break; - case 4: *(u16 *)(arg0 + 0xAA) = 0x4000; break; - case 5: *(u16 *)(arg0 + 0xAA) = 0xC000; break; - case 6: *(u16 *)(arg0 + 0xAA) = 0x8000; break; - case 7: *(u16 *)(arg0 + 0xAA) = 0x9000; break; - } - c = *(u8 *)(arg0 + 0x20C); - *(u8 *)(arg0 + 0x20C) = c + 1; - if (c != arg1) { - return 0; - } - func_80146D90(arg0); - return 1; -} - -DEFINE_func_80171C64() /* dedup: shared engine-core @0x80171C64 (src/shared) */ - -DEFINE_func_80171CC4() /* dedup: shared engine-core @0x80171CC4 (src/shared) */ - -DEFINE_func_80171D1C() /* dedup: shared engine-core @0x80171D1C (src/shared) */ - -DEFINE_func_80171D78() /* dedup: shared engine-core @0x80171D78 (src/shared) */ - -DEFINE_func_80171E08() /* dedup: shared engine-core @0x80171E08 (src/shared) */ - -DEFINE_func_80171EC8() /* dedup: shared engine-core @0x80171EC8 (src/shared) */ - - -DEFINE_func_80171FFC() /* dedup: shared engine-core @0x80171FFC (src/shared) */ - - -DEFINE_func_8017209C() /* dedup: shared engine-core @0x8017209C (src/shared) */ - -DEFINE_func_80172170() /* dedup: shared engine-core @0x80172170 (src/shared) */ - -DEFINE_func_801722CC() /* dedup: shared engine-core @0x801722CC (src/shared) */ - -DEFINE_func_80172304() /* dedup: shared engine-core @0x80172304 (src/shared) */ - -DEFINE_func_80172310() /* dedup: shared engine-core @0x80172310 (src/shared) */ - -DEFINE_func_80172358() /* dedup: shared engine-core @0x80172358 (src/shared) */ - -DEFINE_func_801723C4() /* dedup: shared engine-core @0x801723C4 (src/shared) */ - -DEFINE_func_80172414() /* dedup: shared engine-core @0x80172414 (src/shared) */ - -DEFINE_func_8017248C() /* dedup: shared engine-core @0x8017248C (src/shared) */ - -DEFINE_func_801724EC() /* dedup: shared engine-core @0x801724EC (src/shared) */ - -DEFINE_func_8017250C() /* dedup: shared engine-core @0x8017250C (src/shared) */ - -DEFINE_func_80172560() /* dedup: shared engine-core @0x80172560 (src/shared) */ - -DEFINE_func_80172588() /* dedup: shared engine-core @0x80172588 (src/shared) */ - -DEFINE_func_80172590() /* dedup: shared engine-core @0x80172590 (src/shared) */ - -DEFINE_func_801725A4() /* dedup: shared engine-core @0x801725A4 (src/shared) */ - -DEFINE_func_801725B8() /* dedup: shared engine-core @0x801725B8 (src/shared) */ - -DEFINE_func_801725CC() /* dedup: shared engine-core @0x801725CC (src/shared) */ - -DEFINE_func_801725E0() /* dedup: shared engine-core @0x801725E0 (src/shared) */ - -DEFINE_func_801725F4() /* dedup: shared engine-core @0x801725F4 (src/shared) */ - -DEFINE_func_80172608() /* dedup: shared engine-core @0x80172608 (src/shared) */ - -DEFINE_func_8017261C() /* dedup: shared engine-core @0x8017261C (src/shared) */ - -DEFINE_func_80172630() /* dedup: shared engine-core @0x80172630 (src/shared) */ - -DEFINE_func_80172644() /* dedup: shared engine-core @0x80172644 (src/shared) */ - -DEFINE_func_80172658() /* dedup: shared engine-core @0x80172658 (src/shared) */ - -DEFINE_func_80172664() /* dedup: shared engine-core @0x80172664 (src/shared) */ - -DEFINE_func_80172670() /* dedup: shared engine-core @0x80172670 (src/shared) */ - -DEFINE_func_8017267C() /* dedup: shared engine-core @0x8017267C (src/shared) */ - -DEFINE_func_80172688() /* dedup: shared engine-core @0x80172688 (src/shared) */ - -DEFINE_func_80172694() /* dedup: shared engine-core @0x80172694 (src/shared) */ - -DEFINE_func_801726A0() /* dedup: shared engine-core @0x801726A0 (src/shared) */ - -DEFINE_func_801726AC() /* dedup: shared engine-core @0x801726AC (src/shared) */ - -DEFINE_func_801726B8() /* dedup: shared engine-core @0x801726B8 (src/shared) */ - -DEFINE_func_801726C4() /* dedup: shared engine-core @0x801726C4 (src/shared) */ - -DEFINE_func_801726D0() /* dedup: shared engine-core @0x801726D0 (src/shared) */ - -DEFINE_func_80172710() /* dedup: shared engine-core @0x80172710 (src/shared) */ - -DEFINE_func_80172738() /* dedup: shared engine-core @0x80172738 (src/shared) */ - -DEFINE_func_80172760() /* dedup: shared engine-core @0x80172760 (src/shared) */ - -DEFINE_func_80172780() /* dedup: shared engine-core @0x80172780 (src/shared) */ - - - -s32 func_801727D0(void *a0) { - - extern void (*D_8018EAEC[])(void); - D_8018EAEC[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_8017280C() /* dedup: shared engine-core @0x8017280C (src/shared) */ - -DEFINE_func_80172844() /* dedup: shared engine-core @0x80172844 (src/shared) */ - -DEFINE_func_8017288C() /* dedup: shared engine-core @0x8017288C (src/shared) */ - -DEFINE_func_80172894() /* dedup: shared engine-core @0x80172894 (src/shared) */ - - - -s32 func_801728E4(void *a0) { - - extern void (*D_8018EAF8[])(void); - D_8018EAF8[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_80172920() /* dedup: shared engine-core @0x80172920 (src/shared) */ - -DEFINE_func_80172958() /* dedup: shared engine-core @0x80172958 (src/shared) */ - -DEFINE_func_801729A8() /* dedup: shared engine-core @0x801729A8 (src/shared) */ - -DEFINE_func_801729B0() /* dedup: shared engine-core @0x801729B0 (src/shared) */ - - - -s32 func_801729F0(void *a0) { - - extern void (*D_8018EB04[])(void); - D_8018EB04[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_80172A2C() /* dedup: shared engine-core @0x80172A2C (src/shared) */ - -DEFINE_func_80172A8C() /* dedup: shared engine-core @0x80172A8C (src/shared) */ - -DEFINE_func_80172ACC() /* dedup: shared engine-core @0x80172ACC (src/shared) */ - -DEFINE_func_80172B0C() /* dedup: shared engine-core @0x80172B0C (src/shared) */ - -DEFINE_func_80172B14() /* dedup: shared engine-core @0x80172B14 (src/shared) */ - - - -s32 func_80172B44(void *a0) { - - extern void (*D_8018EB14[])(void); - D_8018EB14[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_80172B80() /* dedup: shared engine-core @0x80172B80 (src/shared) */ - -DEFINE_func_80172BC8() /* dedup: shared engine-core @0x80172BC8 (src/shared) */ - -DEFINE_func_80172C48() /* dedup: shared engine-core @0x80172C48 (src/shared) */ - -DEFINE_func_80172C50() /* dedup: shared engine-core @0x80172C50 (src/shared) */ - - - -extern void (*D_8018EB20[])(void); - -void func_80172CA0(void *a0) { - D_8018EB20[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_80172CDC() /* dedup: shared engine-core @0x80172CDC (src/shared) */ - -DEFINE_func_80172D14() /* dedup: shared engine-core @0x80172D14 (src/shared) */ - -DEFINE_func_80172D60() /* dedup: shared engine-core @0x80172D60 (src/shared) */ - -DEFINE_func_80172D68() /* dedup: shared engine-core @0x80172D68 (src/shared) */ - - - -s32 func_80172DAC(void *a0) { - - extern void (*D_8018EB2C[])(void); - D_8018EB2C[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_80172DE8() /* dedup: shared engine-core @0x80172DE8 (src/shared) */ - -DEFINE_func_80172E20() /* dedup: shared engine-core @0x80172E20 (src/shared) */ - -DEFINE_func_80172E8C() /* dedup: shared engine-core @0x80172E8C (src/shared) */ - -DEFINE_func_80172E94() /* dedup: shared engine-core @0x80172E94 (src/shared) */ - -DEFINE_func_80172ED4() /* dedup: shared engine-core @0x80172ED4 (src/shared) */ - -DEFINE_func_80172EFC() /* dedup: shared engine-core @0x80172EFC (src/shared) */ - -DEFINE_func_80172F24() /* dedup: shared engine-core @0x80172F24 (src/shared) */ - -DEFINE_func_80172F4C() /* dedup: shared engine-core @0x80172F4C (src/shared) */ - -DEFINE_func_80172F9C() /* dedup: shared engine-core @0x80172F9C (src/shared) */ - -DEFINE_func_80172FEC() /* dedup: shared engine-core @0x80172FEC (src/shared) */ - -DEFINE_func_8017303C() /* dedup: shared engine-core @0x8017303C (src/shared) */ - - - -s32 func_80173078(void *a0) { - - extern void (*D_8018EB38[])(void); - D_8018EB38[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_801730B4() /* dedup: shared engine-core @0x801730B4 (src/shared) */ - -DEFINE_func_801730FC() /* dedup: shared engine-core @0x801730FC (src/shared) */ - -DEFINE_func_8017316C() /* dedup: shared engine-core @0x8017316C (src/shared) */ - -DEFINE_func_80173174() /* dedup: shared engine-core @0x80173174 (src/shared) */ - - - -s32 func_8017319C(void *a0) { - - extern void (*D_8018EB44[])(void); - D_8018EB44[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_801731D8() /* dedup: shared engine-core @0x801731D8 (src/shared) */ - - -extern void func_80019064(void *a0); -extern void func_80147324(s32 a0); -extern void func_80171A1C(u8 *a0); -extern s32 func_80174650(s32); -extern M2C_UNK D_8018EAE4; - -void func_80173220(void * arg0) -{ - if (M2C_FIELD(arg0, u16 *, 0xB8) & 0x4000) { - func_80147324(0x516); - func_80019064(&D_8018EAE4); - } - if (M2C_FIELD(arg0, u16 *, 0xB8) & 0x8000) { - func_80171A1C(arg0); - func_80174650(arg0); - } -} - - -DEFINE_func_80173294() /* dedup: shared engine-core @0x80173294 (src/shared) */ - -DEFINE_func_8017329C() /* dedup: shared engine-core @0x8017329C (src/shared) */ - -DEFINE_func_801732C4() /* dedup: shared engine-core @0x801732C4 (src/shared) */ - -DEFINE_func_801732F4() /* dedup: shared engine-core @0x801732F4 (src/shared) */ - -DEFINE_func_8017331C() /* dedup: shared engine-core @0x8017331C (src/shared) */ - -DEFINE_func_8017334C() /* dedup: shared engine-core @0x8017334C (src/shared) */ - -DEFINE_func_80173374() /* dedup: shared engine-core @0x80173374 (src/shared) */ - -DEFINE_func_801733A4() /* dedup: shared engine-core @0x801733A4 (src/shared) */ - -DEFINE_func_801733CC() /* dedup: shared engine-core @0x801733CC (src/shared) */ - - -DEFINE_func_801733FC() /* dedup: shared engine-core @0x801733FC (src/shared) */ - - -DEFINE_func_80173460() /* dedup: shared engine-core @0x80173460 (src/shared) */ - - diff --git a/src/ov_SC03_015/ov_SC03_015_jr_801734BC.c b/src/ov_SC03_015/ov_SC03_015_jr_801734BC.c deleted file mode 100644 index 3d9dd984b..000000000 --- a/src/ov_SC03_015/ov_SC03_015_jr_801734BC.c +++ /dev/null @@ -1,3916 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ - /* 12-byte sub-table record (stride 0xC) */ - /* 0x20 bytes */ - /* 4 + 16*12 = 0xC4 stride */ - /* 0x08 */ - /* 0x20 */ -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8; -typedef void (*Handler)(struct Entry_8016E95C *); -extern void func_801458E0(void); -extern s32 D_800AE6AC; -extern s32 D_800AE6B0; -extern s16 D_800B9A0A; -extern u8 D_80078E50; -extern void func_800D185C(u8 *a0); -extern void func_801458E8(void); -extern s32 func_80029504(void); -extern void func_80145B24(void); -extern u8 D_8018DAA4; -extern u8 D_8018DA14; -extern u8 D_8018D9F0; -extern u8 D_8018D9CC; -extern u8 D_8018DA80; -extern u8 D_8018DA5C; -extern u8 D_8018DA38; -extern u8 D_8018D9A8; -extern void func_80145934(void); -extern u8 D_8018DB34; -extern u8 D_8018DB10; -extern u8 D_8018DAEC; -extern u8 D_8018DAC8; -extern void func_80145A2C(void); -extern s32 func_800291DC(s32); -extern void func_800291C8(s32, s32); -extern void func_80162120(void); -extern void func_80029124(s32, s32); -extern s32 func_80165A50(s32); -extern void func_80029514(s32); -extern u8 D_800AF630[]; -extern u8 D_80078EC0; -extern s32 func_80028FBC(void); -extern s32 func_80029000(void); -extern s32 func_80028D9C(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_80145BF8(void); -extern s32 func_800291B4(s32 arg); -extern void func_800291A0(s32, s32); -extern void func_80145C54(void); -extern s32 func_80145CEC(); -extern s32 func_80029178(s32 arg); -extern void func_80146014(s32 a0); -extern unsigned char D_8018CF2C[]; -extern unsigned char D_8018CF5C[]; -extern unsigned char D_8018CFAC[]; -extern unsigned char D_8018CFDC[]; -extern unsigned char D_8018D00C[]; -extern void func_80145EE8(s32 param_1); -extern void MoveImage(void *a0, s32 a1, s32 a2); -extern void func_80146074(void); -extern s32 func_80146128(void); -extern void func_80146360(void); -extern void func_801463A0(); -extern void func_8014607C(void); -extern s32 *D_80126B78; -extern u8 D_80078EC1; -extern s32 D_80078EC8; -extern s32 D_8011F730; -extern u16 D_801152B8; -extern u16 D_8012693A; -extern u8 D_80126BE0[]; -extern u8 D_801150F0[]; -extern void *memcpy(void *dst, const void *src, u32 n); -extern void func_80146FC4(s32 a0); -extern void func_80150A70(s32 a0); -extern void func_80147098(s32 *a0); -extern void func_8014A638(s32 arg0); -extern s32 func_80155458(s32 a0); -extern s32 func_80029104(void); -extern void func_80029344(void); -extern void func_8014ADE0(s32 a0); -extern void func_8014B350(s32 a0); -extern void func_8014B7A4(s16 *param_1); -extern s32 func_80161D58(s32 a0); -extern void func_80161A90(s32 a0); -extern void func_8014B504(u16 *a0); -extern void func_80149BEC(s32 a0); -extern void func_8014B5D0(s32 *a0); -extern void func_8014C99C(u8 *a0); -extern void func_8014B190(s32 s0); -extern void func_80148648(s32 a0, s32 a1); -extern s32 func_80149228(s32 a0); -extern void func_8014A59C(s32 a0); -extern void func_8016F14C(void *a0); -extern void func_80154418(void *a0); -extern void func_80154BE4(s32 a0); -extern void func_80165694(s32 arg0); -extern void func_801654A8(s32 a0); -extern void func_8014A680(s32 a0); -extern void func_8014A6A8(s32 a0); -extern void func_8014A71C(s32 a0); -extern void func_80172588(s32 *a0); -extern void func_801473DC(s32 *a0); -extern void func_80015978(s32 a0, s32 *a1); -extern void (*D_8018D05C[])(void *); -extern u8 D_80126BA4; -extern s32 D_80127098; -extern s32 D_80127094; -extern s32 D_80127090; -extern void func_80146534(void); -extern void func_8001D074(s32 a0, s32 a1); -extern void func_80146554(void); -extern void func_80146578(void); -extern void func_8001CFDC(s32, s32); -extern void func_8014659C(void); -extern void func_8001D074(s32, s32); -extern void func_801465C0(void); -extern void func_801465E4(void); -extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); -extern s32 D_8011F9D0; -extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); -extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 D_8011F750; -extern s32 D_8011F754; -extern u8 * func_801468C8(s32 arg0, u8 arg1); -extern s32 D_8011D030; -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); -extern s32 func_80146B9C(void *a0); -extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); -extern u16 D_8011DA28; -extern s32 func_80146B9C(void * arg0); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80146CA0(void *a0); -extern void func_80146CB4(void *a0); -extern void func_80146CC8(s32 a0); -extern void func_80146D30(s32 a0); -extern void func_80146D80(s32 *a0); -extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80146D90(s32 a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); -extern void func_80146E90(s32 *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80015954(s32 a0, s32 a1); -extern void func_80149374(s32 a0, s32 a1); -extern void func_80146F58(s32 a0, s32 a1); -extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 func_8012A68C(void); -extern s16 func_8012A758(void); -extern void func_8004978C(s16 *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern u8 D_80126DB0[]; -extern u16 D_80126DB6; -extern void func_8014704C(s32 *a0); -extern s32 func_80147054(void *a0); -extern void func_80147060(u8 * a0); -extern void func_8014706C(void *arg0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80147084(s32 *a0); -extern void func_8014708C(void *arg0); -extern s32 func_801470A0(void *a0); -extern void func_801470AC(s32 *a0); -extern void func_801470B4(s32 arg0); -extern void func_801470C0(s32 a0); -extern void func_80147118(s32 a0); -extern s16 D_80126BB8; -extern s16 D_80126BBA; -extern s16 D_80126BBC; -extern void func_80147264(s32 a0); -extern void func_80147290(void); -extern void func_801472B4(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void *D_8012707C; -extern void func_801472DC(void); -extern void func_801472F0(void *a0); -extern void func_80147364(u16, s32); -extern void func_80147300(u16 arg0); -extern void func_80147324(s32 arg0); -extern void func_801473EC(s32 *a0); -extern void func_80147460(s32 a0); -extern void func_80147514(); -extern void func_80147628(s32 a0); -extern void func_80147478(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); -extern s32 func_800129CC(s32 a0, s32 a1); -extern void func_80147514(s32 arg0); -extern void func_80013F3C(s32 a0); -extern void func_80012558(s32 a0, s32 a1); -extern void func_800126C4(s32 a0, s32 a1); -extern void func_800123F0(s32 a0, s32 a1); -extern void func_80147718(s32 a0); -extern void func_80147788(void *a0, s32 a1); -extern void func_801477A8(void *a0, s32 a1); -extern void func_801477C8(void *a0, s32 a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80147814(s32 a0, s32 a1); -extern void func_80147928(int a0, int a1); -extern void func_8014799C(int a0, int a1); -extern void func_80147A10(int a0, int a1); -extern void func_80147860(int a0, int a1, int a2, int a3); -extern void func_80147948(s32 a0, s32 a1, s32 a2); -extern void func_801479BC(s32 a0, s32 a1, s32 a2); -extern void func_80147A30(s32 a0, s32 a1, s32 a2); -extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147948(int a0, int a1, int a2); -extern void func_801479BC(int a0, int a1, int a2); -extern void func_80147A30(int a0, int a1, int a2); -extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147A84(s32 arg0); -extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147AAC(s32 arg0); -extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80147B5C(s32 a0, void *a1); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern void func_80147B18(s32 a0); -extern void func_80147B5C(s32 arg0, void *arg1); -extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147DC0(s32 a0, s32 a1); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147F50(s32 arg0); -extern void func_80148038(s32 a0, s32 a1); -extern s32 ratan2(s32 a0, s32 a1); -extern s32 csqrt(s32 a0); -extern s32 func_80012A60(s32 a0, s32 a1); -extern void func_80148094(int param_1, short *param_2, int *param_3); -extern void func_801485B8(s32 a0, s32 a1, s32 a2); -extern void func_801484B0(s32 a0, s32 a1); -extern s32 func_80154358(void *a0); -extern void func_801484E8(s32 a0, s32 a1); -extern void func_80148534(s32 a0, s32 a1); -extern void func_8014856C(s32 a0, s32 a1); -extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); -extern void func_80148634(void *a0); -extern u8 D_800B9A64; -extern s32 func_80014DC0(); -extern s32 func_80014D68(); -extern s32 func_80014D94(); -extern s32 func_80014CF8(); -extern void func_800120DC(); -extern s32 func_800CF8B4(); -extern u16 func_801487F4(s32 *a0); -extern u16 func_80148800(s32 *a0); -extern u8 func_8014880C(s32 *a0); -extern u16 func_80148818(s32 *a0); -extern s32 func_80047D3C(s32 a0); -extern s32 func_80148824(void *arg0); -extern s32 func_801488A8(u8 *a0); -extern s32 func_8014891C(s32 a0); -extern s32 func_80148980(u8 *a0); -extern s32 func_801489E8(s32 a0); -extern s32 func_80148A48(s32 a0); -extern int func_80148AFC(void *a0); -extern void func_80148AAC(u8 *a0); -extern s32 func_80148C18(void); -extern s32 func_80148C20(s32 a0, s16 a1); -extern s32 func_80148C34(s32 a0, s32 a1); -extern s32 func_80148C4C(s32 a0, s32 a1); -extern s32 func_80148C64(s32 a0, s32 a1); -extern s32 func_80148C7C(void); -extern s32 func_80148C84(s32 a0, s32 a1); -extern s32 func_80148C9C(s32 a0, s32 a1); -extern s32 func_80148CB4(s32 a0, s32 a1); -extern s32 func_80148CCC(s32 a0, s32 a1); -extern s32 func_80148CE4(void); -extern s32 func_80148CEC(void); -extern s32 func_80148CF4(s32 a0, s32 a1); -extern s32 func_80148D0C(s32 a0, s32 a1); -extern s32 func_80148D24(void *a0, int a1); -extern s32 func_80148D3C(void); -extern s32 func_80148F60(void); -extern s32 func_80148F68(s32 a0); -extern s32 func_80148F74(s32 a0); -extern s32 func_80148F80(s32 a0); -extern s32 func_80148F8C(s32 a0); -extern s32 func_80148F98(void); -extern s32 func_80148FA0(s32 a0); -extern s32 func_80148FAC(s32 a0); -extern s32 func_80148FB8(s32 a0); -extern s32 func_80148FC4(s32 a0); -extern s32 func_80148FD0(void); -extern s32 func_80148FD8(void); -extern s32 func_80148FE0(s32 a0); -extern s32 func_80148FEC(s32 a0); -extern s32 func_80148FF8(s32 a0); -extern s32 func_80149004(void); -extern void func_8014900C(s32 *a0); -extern void func_80149020(s32 *a0); -extern void func_80149034(s32 *a0); -extern void func_80149048(s32 *a0); -extern void func_8014905C(u8 *a0); -extern void func_801490E0(s32 *a0, s16 a1); -extern void func_801490E8(s32 *a0, s16 a1); -extern void func_801490F0(s32 *a0, s16 a1); -extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); -extern void func_801490F8(s32 a0, s32 a1); -extern s32 func_801491C4(s32 a0); -extern s32 func_80149184(s32 a0); -extern s32 D_801151D4; -extern void func_80149204(s32 *a0); -extern void func_80149210(s32 a0, s32 a1); -extern s32 func_80149284(s32 *a0, s32 a1); -extern void func_80149350(s32 arg0); -extern void func_80149290(s32 a0); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_80149374(s32 arg0, s32 arg1); -extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8014942C(s32 arg0); -extern void func_8012EF70(s32 a0, s32 a1); -extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012EFB8(s32 a0); -extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); -extern void func_8014964C(s32 param_1, s32 param_2); -extern s32 func_801496D4(void *a0); -extern void func_8015AD08(); -extern void func_80149704(void); -extern void func_8015ACC4(); -extern void func_80149724(void); -extern u8 D_80078EBF; -extern s32 func_80149744(struct S_80149744 *a0); -extern void func_8015F7A0(); -extern void func_80149788(void); -extern void func_801653B8(); -extern void func_80149864(void); -extern s16 currentLocationId; -extern s32 func_8016F1AC(void); -extern s32 func_80149884(void); -extern void func_80160B00(); -extern void func_801498C0(void); -extern s32 func_80149AA8(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern void func_80146750(void *a0); -extern s32 func_801498E0(s32 *a0); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_80147364(u16 a0, s32 a1); -extern s32 func_800CCF28(s32 a0); -extern u8 D_80126B5C; -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_8015DAC4(s32 *a0); -extern void func_8015554C(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern void func_80149B14(s32 *a0); -extern u8 func_8014BEF8(void); -extern s32 func_80149B54(s32 * arg0); -extern void func_8015DE24(s32 *a0); -extern void func_80157510(s32 *a0); -extern void func_80149BAC(s32 *a0); -extern s32 func_80029178(s32 a0); -extern s32 func_80149C08(s32 arg0); -extern void func_801577C8(); -extern void func_80149C94(void); -extern void func_80157D20(void); -extern void func_80149CB4(void); -extern s32 func_80149CD4(s32 a0); -extern u8 func_8014B5B8(s32 *a0); -extern s32 func_80149D10(s32 a0); -extern s32 func_80149E94(s32 a0); -extern s32 func_80149DD8(s32 a0); -extern s32 func_80149D9C(s32 a0); -extern u8 D_801202A0[]; -extern s32 func_80149F2C(s32 a0, s32 a1); -extern s32 func_80149E94(s32 arg0); -extern void func_80149FA8(void); -extern s32 D_8018D124[]; -extern s32 func_80149FB0(s32 a0); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern void func_8014A1B0(s32 a0, s32 a1); -extern s32 func_8014A048(s32 param_1); -extern u16 func_80156370(u16 a0); -extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); -extern void func_8015D4B4(); -extern void func_8014A218(void); -extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); -extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); -extern s32 func_8014A238(s32 arg0); -extern s32 func_8014A2E4(s32 a0); -extern void func_8014A380(s32 a0, s32 a1); -extern s16 D_801152B0; -extern s16 D_801152B4; -extern s32 func_8014A3E0(struct S_8014A3E0 *a0); -extern s32 func_8014A454(s32 a0); -extern s32 func_8014A4B4(void *a0); -extern void func_8015EDD4(); -extern void func_8014A4FC(void); -extern s32 func_8014A674(s32 *a0); -extern s32 func_8014A69C(s32 *a0); -extern s32 func_8014A6C4(s32 a0); -extern void func_8015E184(); -extern void func_8014A830(void); -extern s32 func_80029AF4(void); -extern s32 func_8014A850(s32 param_1); -extern void func_8014AA04(s32 a0); -extern void func_801599A4(void *a0); -extern void func_80159B3C(void *a0); -extern s32 func_80165A20(s32 a0); -extern void func_8014AB7C(); -extern void func_8014AC10(); -extern void func_8014AA28(void); -extern void func_8014AB5C(void); -extern void func_80162CCC(void); -extern void func_8014AB7C(s32 arg0); -extern void func_8014ABF0(void); -extern void func_80016714(void *a0, s32 a1); -extern void func_8014AC10(s32 arg0); -extern void func_8014ACC0(s32 a0, s32 a1); -extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); -extern void func_8014ACE8(void *a0, s32 a1, s32 a2); -extern void func_80146AFC(void *a0); -extern void func_8014ADA8(s32 a0, s32 a1); -extern void func_8014AD7C(s32 a0); -extern s32 D_80078E8C; -extern void func_8014B034(s32 arg0); -extern void func_8014B00C(s32 arg0); -extern void func_8014B084(void); -extern s16 D_80078E90; -extern void func_8014B034(s32 a0); -extern u16 D_80078EAC; -extern u8 D_80078EBA; -extern void func_800D10EC(void); -extern void func_8002AC98(void); -extern s32 func_8014B154(s32 *a0); -extern void func_8014B12C(void); -extern void func_8014B2F8(void); -extern void func_8014B4C4(void); -extern void func_8014B160(s32 a0); -extern s32 func_8016F1C4(void); -extern s16 D_80078E96; -extern s16 D_80078EB8; -extern u16 D_80078EA6; -extern void func_8014B2A8(void); -extern void func_8014B310(void); -extern void func_8014B2D0(void); -extern s32 D_80078E94; -extern s32 D_80078ECC; -extern void func_8014B33C(void); -extern u8 D_80062BF4[]; -extern void func_8014BC80(s32 a0, s32 a1); -extern void func_80019064(void *a0); -extern s32 D_80078E98; -extern void func_80166244(); -extern void func_8014B4D4(void *a0); -extern s16 D_80078E9A; -extern u8 D_80126D1C; -extern s32 D_80126D74; -extern void func_8014B598(s32 a0, s32 a1); -extern void func_8014B5B0(s32 *a0); -extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); -extern void func_8014B5D8(s32 s1); -extern s32 D_80078E9C; -extern s32 D_80078ED0; -extern void func_8014B6F0(s32 a0, s32 a1); -extern void func_8014B768(s32 a0, s32 a1); -extern void func_8014B944(s32 a0, s32 a1, s32 a2); -extern s32 D_80078EA4; -extern u16 D_80078EB2; -extern s16 D_80078EB4; -extern void func_8014BB0C(void); -extern void func_8014BB24(s32 a0, s32 a1, s32 a2); -extern void func_8014BC0C(s32 a0, s32 a1); -extern void func_8014BC44(s32 a0, s32 a1); -extern u8 D_800B9A17; -extern void func_8014BCC0(s32 a0, s32 a1); -extern u16 D_80078EB6; -extern s32 func_8014BCEC(s32 a0, s32 a1); -extern void func_8014BD24(s32 a0, s32 a1); -extern void func_8014BD60(s32 param_1, s32 param_2); -extern void func_8014BD98(s32 a0, u16 a1); -extern void func_8014BDC8(void); -extern void func_8014BDE0(void); -extern s32 func_8017267C(s32 *a0); -extern s32 func_80013294(void *a0, void *a1); -extern void func_80029ED4(s32 a0); -extern void func_8014BDE8(s32 a0); -extern void func_8014BE78(void); -extern void func_8014BE9C(void); -extern void func_80029124(s32 a0, s32 a1); -extern void func_8014BEC0(void); -extern void func_8014BF18(s32 a0); -extern void func_8014BF48(void); -extern u8 func_8014BF6C(void); -extern void func_8014BF8C(u8 arg0); -extern void func_8014BFB0(void); -extern u8 func_8014BFD4(void); -extern void func_8014BFF4(s32 a0, s32 a1); -extern void func_8014C010(s32 a0, s32 a1); -extern s32 func_8014C050(s32 a0, s32 a1); -extern s32 func_8014C088(s32 a0, s32 a1); -extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); -extern s32 func_8014C118(void * a0, s32 a1, s32 a2); -extern s32 func_8014C168(s32 * param_1, s32 param_2); -extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); -extern u8 D_8018D1AC[]; -extern void func_8014C1A0(s32 arg0, s32 arg1); -extern s32 func_80013328(s32 a0, s32 a1); -extern s32 func_8014C59C(void *a0, void *a1); -extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); -extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); -extern s32 ratan2(s32 dx, s32 dy); -extern u8 D_8018D1B4; -extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); -extern s16 func_8014C5D0(s32 a0, s32 a1); -extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); -extern u8 D_80126D17; -extern void func_8014C6AC(void); -extern void func_8014C6C0(void); -extern u8 D_80126D1E; -extern void func_8014C6D0(void); -extern void func_8014C6E0(void); -extern s32 func_8014C860(s32 a0, s32 a1); -extern void func_8014C8C8(s32 a0, s32 *a1); -extern void func_8014C88C(s32 a0); -extern void func_8014C8C8(s32 dst, s32 * src); -extern void func_8014C8F0(s32 arg0); -extern u8 D_801151F0[]; -extern s32 func_8014C918(s32 a0, s32 a1); -extern s32 D_80126B50; -extern void func_8014C968(void); -extern void func_8014C978(void); -extern s32 func_8014C98C(void); -extern void func_80139914(s32 a0); -extern s32 func_8014CA00(s32 a0); -extern u16 func_8014CA70(s32 a0, s32 a1); -extern s32 func_8014CA14(s32 a0, s32 a1); -extern u16 func_8014CAE4(s32 *a0, s32 a1); -extern s32 func_8014CA88(s32 *a0, s32 a1); -extern s32 func_8014CAFC(void); -extern s32 func_8014CB0C(void); -extern s32 func_8014CB1C(void); -extern u8 D_80126D1F; -extern s32 func_8014CB2C(void); -extern s32 func_8014CB58(void); -extern u8 D_80126D1D; -extern void func_8014CB68(void); -extern s32 func_8014CB7C(void); -extern s32 func_8014CB8C(void); -extern struct Packed8 D_80126C98; -extern short D_80126C9E; -extern void func_8014CB9C(struct Packed8 *a0); -extern s32 D_80126CDC; -extern void func_8014CBD8(void); -extern s16 D_80126CC4; -extern void func_8014CBE8(void); -extern void func_8014CBF8(void *a0); -extern void func_8014D3E0(s32 a0); -extern void func_8014D04C(void); -extern void func_8014CCB4(void); -extern void func_8014CC28(s32 a0); -extern void func_8014CD0C(u8 *a0); -extern s32 func_8014CF04(s32 a0, s32 a1, void *a2); -extern void func_8014CD80(s32 a0, void *a1, void *a2); -extern void func_8014D0A4(s32 a0); -extern s32 func_8014D2A0(s32 a0, void *a1, void *a2); -extern s32 func_8014D12C(s32 a0, void *a1, void *a2); -extern void func_8014D438(s32 a0); -extern void func_8014D3E0(s32 _arg0); -extern void func_8014D610(s32 a0, void *a1, void *a2); -extern s32 func_8014D4C0(s32 a0, void *a1, void *a2); -extern void func_8014D790(s32 a0); -extern void func_8014D738(void); -extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); -extern s32 func_8014D820(s32 a0, u16 *a1, u16 *a2); -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); -extern void func_8014DF94(s32 arg0); -extern void func_8014DF3C(void); -extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ -extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ -extern s16 D_801152AC; -extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); -extern void func_8014E48C(s32 a0); -extern void func_8014E434(void); -extern void func_8014E5B4(s32 a0, void *a1, void *a2); -extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); -extern void func_8014E6F8(struct SubE6F8 *a0); -extern void func_8014E6A0(void); -extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); -extern void func_8014E934(s32 _arg0); -extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); -extern s32 func_8014E98C(void *a0); -extern u16 D_800B99DA; -extern s32 D_801150D8; -extern s16 D_801152AA; -extern u8 D_80126720[]; -extern s16 D_80126724; -extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); -extern s32 func_8014ED80(struct SubED80 *a0); -extern int D_801E9698; -extern void func_8014ED28(s32 _arg0); -extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F24C(struct SubF24C *a0); -extern void func_8014F1F4(void); -extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F4C0(); -extern s32 func_8014F468(void); -extern int func_8014F74C(); -extern int func_8014F6F4(void); -extern u8 D_800D3918[]; -extern u8 D_801152A8[]; -extern s32 D_801152BC; -extern int func_8014F74C(s32 arg0); -extern s32 func_8014FA70(s32 a0); -extern s32 D_801E969C; -extern void func_8014FA04(s32 a0); -extern s32 func_8014FBC0(); -extern s32 func_8014FC18(u8 *self); -extern int func_8014FD54(int param_1); -extern void func_8014FCFC(void); -extern void func_80150170(void *a0); -extern s32 func_8014FE60(void *a0); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_8014FE60(void *e); -extern s32 func_80134510(s32 arg); -extern s32 func_80150150(s32 a, s32 b); -extern s32 func_80150460(s32 a, s32 b); -extern void func_801504D8(u16 *a0); -extern s32 func_80150480(s32 _arg0); -extern s32 func_80150528(void *a0, void *a1, void *a2); -extern s32 func_80150528(void *arg0, void *arg1, void *arg2); -extern s32 func_801506A4(s32 a0, s32 a1); -extern s32 func_801505FC(s32 a0); -extern s32 func_801506A4(s32 arg0, s32 arg1); -extern void func_80150820(s32 a0, s32 a1); -extern void func_8015086C(int param_1); -extern s32 func_801508B4(s32 a0); -extern s32 func_8015094C(s32 a0); -extern short func_801508F8(s32 a0); -extern s32 D_8018D1E4; -extern s32 D_80126990; -extern s32 D_80126994; -extern u8 D_80126948[]; -extern s32 func_80021174(s32 a0, s32 a1); -extern s32 func_8015094C(s32 param_1); -extern void func_80150B9C(void); -extern s32 func_80151184(s32 a0, s32 a1, s32 a2); -extern s32 func_80150BA4(s32 a0); -extern s32 func_801619D0(void *a0); -extern void func_80150BC8(s32 *a0); -extern s32 func_80150480(s32 a0); -extern u16 D_800AE6DC; -extern void func_80150C48(s32 a0); -extern int func_80151184(int arg, int a1, int a2); -extern int func_80150CA0(int arg); -extern void func_80150EC4(s32 a, s32 b); -extern void func_80150CC4(s32 a); -extern void func_80150CE4(s32 a); -extern void func_80150D04(s32 a); -extern void func_80150D24(s32 a); -extern void func_80150D44(s32 a); -extern void func_80150D64(s32 a); -extern void func_80150D84(s32 a); -extern void func_80150DA4(s32 a); -extern void func_80150DC4(s32 a); -extern void func_80150DE4(s32 a); -extern void func_80150E04(s32 a); -extern void func_80150E24(s32 a); -extern void func_80150E44(s32 a); -extern void func_80150EC4(s32 a0, s32 a1); -extern void func_80150E64(s32 a0); -extern void func_80150E84(s32 a0); -extern void func_80150EA4(s32 a0); -extern u8 D_800AE6C0; -extern s16 D_800AE6C8; -extern s16 D_800AE6CA; -extern s16 D_800AE6CC; -extern s32 D_800AE6C4; -extern s16 D_800AE6CE; -extern u8 D_800AE6BE; -extern u8 D_801201F8[]; -extern void func_80150F78(void); -extern void func_80150F80(s32 a0); -extern int func_80150FB4(int arg); -extern void func_80150FD8(s32 a0); -extern int func_80151014(int arg); -extern void func_80151038(s32 a0); -extern int func_80151070(int arg); -extern int func_80151094(int arg); -extern void func_801510B8(void); -extern void func_801510C0(void); -extern int func_801510C8(int arg); -extern int func_801510EC(int arg); -extern s32 func_8012DB84(void); -extern s32 func_80151110(void); -extern void func_80151130(void); -extern int func_80151138(int arg); -extern void func_8015115C(s32 *a0, s16 a1); -extern s32 func_80151164(s32 a0, s32 a1); -extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); -extern void func_801511A8(u8 *a0); -extern void func_801511C4(u8 *a0); -extern int func_80151204(int arg, int a1); -extern int func_801511E0(int arg); -extern int func_80151204(int a0, int a1); -extern void func_80151238(void *a0); -extern void func_8015126C(u16 *p); -extern void func_80151780(s32 a0); -extern void func_801516F0(s32 *a0); -extern void func_8015173C(s32 *a0); -extern s16 D_8011DB1A; -extern s32 D_80127518; -extern s32 D_801151FC; -extern s32 func_801725CC(u8 *a0); -extern s32 func_80029D3C(void); -extern void func_80151878(void); -extern void func_80153B58(s32 *a0); -extern s32 func_80151880(s32 a0); -extern s32 func_801518D8(s32 a0); -extern s32 func_80151944(void); -extern s32 func_80151924(void); -extern void func_8014E934(s32 a0); -extern s32 func_8014F3E8(s32 a0); -extern void func_801519C8(s32 a0); -extern void func_80151980(s32 a0); -extern M2C_UNK D_800D5880; -extern s32 D_800D58AC; -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801519C8(s32 arg0); -extern void func_80151C54(s32 a0); -extern void func_801542DC(s32 *a0, s32 a1); -extern void func_8015BDD0(s32 *a0); -extern void func_80165718(s32 a0); -extern u8 D_800D46E4[]; -extern void func_80151AE4(s32 arg0); -extern void (*D_8018D28C[])(void); -extern void func_80151D24(void *a0); -extern void func_80151DB0(s32 a0); -extern void func_80151D60(void *a0); -extern s32 func_80172630(u8 *a0); -extern s32 D_80062C14; -extern void func_80151DB0(s32 param_1); -extern void func_80151E78(s32 *a0); -extern void func_80151ECC(struct S80151ECC *a0); -extern void func_80151FB4(s32 a0); -extern void func_80151F38(s32 *a0); -extern void func_801553C0(s32 a0); -extern void func_80153C18(); -extern void (*D_8018D2B0[])(void); -extern void func_80152058(void *a0); -extern void func_801520DC(s32 a0); -extern void func_80152094(s32 a0); -extern void func_80147324(s32 a0); -extern u8 D_80062C04[]; -extern M2C_UNK D_8018D2A0; -extern void func_801520DC(s32 arg0); -extern void func_801470B4(s32 a0); -extern void func_8015369C(s32 a0); -extern void func_80152194(s32 *a0); -extern s32 func_801536DC(s32 a0); -extern void func_8015220C(s32 a0); -extern s32 func_80153800(s32 a0); -extern void func_801522CC(s32 a0); -extern void func_80152254(s32 *a0); -extern void (*D_8018D2C4[])(void); -extern void func_80152370(void *a0); -extern void func_801523F4(s32 a0); -extern void func_801523AC(s32 a0); -extern void func_8001382C(s32 a0, void *a1, void *a2); -extern u8 D_8018D2D0[]; -extern void func_801523F4(s32 arg0); -extern void func_801525F4(int); -extern s32 func_801535F4(void *arg0); -extern void func_8015BF48(s32 *a0); -extern void func_80152500(int param_1); -extern void func_801525F4(s32 a0); -extern void (*D_8018D2E0[])(void); -extern void func_80152698(void *a0); -extern void func_80152714(s32 a0); -extern void func_801526D4(s32 a0); -extern void func_80152790(s32 a0); -extern void (*D_8018D2F8[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018D2E8; -extern void func_801528B0(s32 arg0); -extern void func_8015294C(s32 a0); -extern void func_80152A08(s32 a0); -extern void func_80152AC8(s32 a0); -extern void func_80152A50(s32 *a0); -extern void (*D_8018D30C[])(void); -extern void func_80152B6C(void *a0); -extern void func_80152BF0(s32 a0); -extern void func_80152BA8(s32 a0); -extern void func_80152C80(s32 *a0); -extern void func_80152C40(s32 *a0); -extern void (*D_8018D328[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018D318; -extern void func_80152DA8(s32 arg0); -extern void func_80152E4C(s32 a0); -extern void func_80152EFC(s32 a0); -extern void func_80152FBC(s32 a0); -extern void func_80152F44(s32 *a0); -extern void (*D_8018D33C[])(void); -extern void func_80153060(void *a0); -extern void func_801530E4(s32 a0); -extern void func_8015309C(s32 a0); -extern void func_80155440(s32 *a0); -extern void func_801530E4(s32 arg0); -extern void func_80153150(struct S80153150 *a0); -extern void func_801531BC(s32 a0); -extern void func_8015327C(s32 a0); -extern void func_80153204(s32 *a0); -extern void (*D_8018D350[])(void); -extern void func_80153320(void *a0); -extern void func_801533A4(s32 a0); -extern void func_8015335C(s32 a0); -extern void func_80153410(s32 *a0); -extern void func_80153490(s32 a0); -extern void func_80153550(s32 a0); -extern void func_801534D8(s32 *a0); -extern void (*D_8011DB28)(s32 a0); -extern s32 func_801536DC(s32 param_1); -extern void func_800139C8(s32 a0, void *a1, void *a2); -extern s32 func_80153978(s32 a0, u16 *src); -extern s32 func_80133784(s32 a0, void *src, s32 dst); -extern s32 func_801539F8(s32 a0, void *a1); -extern s32 func_801539F8(s32 a0, void * a1); -extern s32 func_8016DA04(s32 a0); -extern s32 func_80153BD8(s32 a0); -extern s32 func_80153BF0(s32 a0); -extern void func_80153C18(void); -extern u16 D_8011F748; -extern void func_80153C30(void); -extern void func_80153C74(s16 a0, s16 a1); -extern s16 D_8011DB18; -extern void func_80153C44(int a0, int a1, s16 a2); -extern s16 D_8011DB0C; -extern s32 D_80115210; -extern void func_80153C8C(void); -extern void func_80153C9C(void); -extern s32 func_80153CBC(void); -extern s32 D_8018D364; -extern void (*D_8018D38C[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018D36C; -extern void func_80153D7C(s32 param_1); -extern void func_8015410C(void); -extern void func_80153E00(s32 param_1); -extern void func_80151664(void); -extern void func_80154134(u8 *a0); -extern void func_80154190(u8 *a0, s32 a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154218(u8 *a0, s32 a1, s32 a2); -extern void func_801541D8(u8 *a0, s32 a1, s32 a2); -extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); -extern void func_801542A4(); -extern void func_801542A4(s32 *a0, s32 a1); -extern void func_8015430C(); -extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); -extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); -extern s32 func_80154358(void * arg0); -extern void func_80154AB4(s32 a0, s32 a1); -extern void func_80154B20(s32 a0, s32 a1, s32 a2); -extern void func_80154AE0(s32 a0, s32 a1, s32 a2); -extern void func_80154B7C(u8 *a0, s32 a1); -extern void func_80154B4C(u8 *a0, s32 a1); -extern void func_80154BC8(void *a0, s32 a1, s32 a2); -extern void func_80154B98(void *a0, s32 a1, s32 a2); -extern u8 D_800D8D10[]; -extern s16 D_80078E9E; -extern void func_801550FC(s32 a0); -extern void func_80154ED8(s32 a0, s32 a1); -extern void func_80154F9C(s32 a0); -extern void func_800183E0(s32 a0); -extern void func_801550FC(s32 arg0); -extern void func_8001D150(s32, s32); -extern void func_8001D130(int, int); -extern void func_80155150(int param_1); -extern s32 D_800DE2A4[]; -extern void func_801552F4(s32 a0); -extern void func_80155344(s32 a0); -extern s32 func_80155394(s32 *a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80029178(s32); -extern int (*D_8018D3D8[])(void); -extern s32 func_80155458(s32 param_1); -extern s32 func_801659DC(u8 *a0); -extern s32 func_801554B8(void *arg0); -extern void func_801555F4(void *a0); -extern void func_80155518(s32 *a0); -extern void func_80155580(void *a0); -extern void (*D_8018D3DC[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern s32 func_80155800(s32 arg0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern S801563EC *func_801563EC(u16 idx); -extern s32 func_80029B4C(s32 a0, s32 a1); -extern s32 func_80029BC8(s32 a0, s32 a1); -extern s32 func_80029C44(s32 a0, s32 a1); -extern s32 func_8015640C(s32 a0, s32 a1); -extern s32 rand(void); -extern u32 func_8015616C(s32 param_1, u16 param_2); -extern u16 func_80156370(u16 param_1); -extern S801563EC * func_801563EC(u16 idx); -extern s32 func_801564B0(s32 a0); -extern s32 func_8002A1B4(void); -extern s32 func_8002A400(void); -extern s32 func_8002A670(void); -extern s32 func_8002A8E0(void); -extern s32 D_801151E0[]; -extern s32 func_801565C0(void); -extern void func_80156A14(s32 *a0); -extern void func_80156648(s32 *a0); -extern u8 D_8011DAD8[]; -extern s32 func_8014C568(s16 *a0, s16 *a1); -extern void func_801567BC(s32 a0); -extern B8 D_80128120[]; -extern B8 D_80128138[]; -extern S8 D_80126AF0[]; -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018D840[]; -extern void func_80156A1C(s32 param_1, s32 param_2); -extern s32 D_801150E0[]; -extern void func_80156A88(s32 a0, s32 a1); -extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); -extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); -extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); -extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern s32 func_80135004(s32 a0, void *a1, s32 a2); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801575E4(void *a0); -extern void func_801574DC(s32 *a0); -extern void func_80157544(void *a0); -extern void (*D_8018D850[])(void); -extern void func_8014CC28(s32 a0); /* defined */ -extern s32 func_8014F3E8(s32 a0); /* declared */ -extern void func_8015BDD0(s32 *a0); /* defined */ -extern void func_801575E4(void *a0); /* defined */ -extern void func_80157580(s32 arg0); -extern u8 D_800D4F14[]; -extern void func_801576A8(void *arg0); -extern s32 func_8015773C(u8 *a0); -extern s32 func_8015771C(u8 *a0); -extern s32 func_8015773C(u8 * arg0); -extern int D_801E96D0; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018D878[])(void); -extern void func_80157808(void *param_1); -extern void func_80157880(s32 a0); -extern s32 func_801725A4(u8 *a0); -extern u8 D_800D5128; -extern u8 D_8018D858; -extern void func_801578C0(s32 param_1); -extern void func_80147A84(int); -extern void func_80148038(int, int); -extern void func_80147460(int); -extern void func_80146D90(int); -extern void func_80161450(void *a0); -extern void func_80157A8C(int); -extern void func_80154A74(int, int); -extern unsigned char D_800D5178; -extern unsigned char D_8018D868; -extern void func_8015795C(int param_1); -extern void func_80161D20(s32 a0, s32 a1); -extern void func_80157A8C(s32 a0); -extern void func_8016706C(s32 a0); -extern u8 D_800D51AC[]; -extern void func_80157AC8(s32 param_1); -extern void func_80157B74(int param_1); -extern void func_8016158C(void *a0); -extern void func_8015BE04(s32 *a0); -extern void func_80157BC8(s32 a0); -extern void func_80157CCC(s32 a0); -extern void func_80157DC4(void *a0); -extern void func_80157FC4(void *a0); -extern void func_80157D74(u16 *a0); -extern void (*D_8018D8B8[])(void); -extern void func_80157E38(void *); -extern void func_80157E00(void *a0); -extern void func_80157E38(void * a0); -extern s32 func_80157F64(s32 *a0); -extern s32 func_80156600(void *a0); -extern void func_80157EA4(void *a0); -extern void (*D_8018D8C0[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018D88C; -extern void func_80158038(void * param); -extern u8 D_800D524C[]; -extern void func_80161418(void *a0); -extern void func_801580B4(s32 a0); -extern void func_801581AC(s32 a0); -extern void (*D_8018D8CC[])(void); -extern void func_8015824C(void *a0); -extern void func_801582C0(void *); -extern void func_80158288(void *a0); -extern u8 D_800D52A8[]; -extern void func_801585A4(s32 *a0); -extern void func_801582C0(void *a0); -extern s32 func_801585AC(s32 *a0); -extern u8 D_800D52E8[]; -extern void func_80158344(s32 *a0); -extern s32 func_801615C4(void *a0, s32 a1); -extern u8 D_8018D89C; -extern u8 D_800D533C; -extern void func_80158434(s32 param_1); -extern void func_80158548(s32 param_1); -extern void func_801585EC(u8 *a0); -extern void func_80158794(void); -extern s32 D_801E96D8; -extern s32 D_801E96E4; -extern s32 D_801E96E8; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018D908[])(s32 *); -extern void func_80158AE4(void *a0); -extern void func_80158AB4(void *a0); -extern void func_8016F264(void); -extern void func_80165840(void); -extern void func_801658DC(void); -extern void func_80165A78(s32); -extern void func_80158AE4(void * a0); -extern M2C_UNK D_800D58D8; -extern void func_80158BB0(void *arg0); -extern s32 func_80159404(s32 a0, s32 a1); -extern void func_80158C40(s32 *a0); -extern void func_80158CD8(s32 *a0); -extern s32 func_80159434(s32 a0, s32 a1); -extern void func_80158D60(s32 a0); -extern M2C_UNK D_800D5904; -extern void func_80158E24(s32 *a0); -extern s32 D_8018D8DC[]; -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80158F00(int param_1); -extern u8 D_80110C3C[]; -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80158FA4(s32 param_1); -extern s32 func_801399F0(s32 a0); -extern u8 D_80110C94[]; -extern u8 D_80110CD4[]; -extern void func_80159070(void *a0); -extern s32 func_80029A94(s32); -extern void func_80175454(void); -extern void func_800298BC(void *); -extern void func_8002992C(s32); -extern void func_800CF804(void); -extern void func_800CF818(void); -extern u8 D_80110D0C[]; -extern void func_80159120(s32 a0); -extern void func_801592CC(s32 *a0); -extern u8 D_800AE6BD; -extern s32 D_801E96E0; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018DB58[])(void); -extern void func_80159698(void *a0); -extern s32 func_801596D4(void *a0); -extern void func_80174B6C(void); -extern void func_80129248(s16 a0); -extern void func_8013C938(void); -extern void func_8013CB20(void); -extern void func_8013C98C(void); -extern void func_8002850C(s32, s32, s32); -extern void func_80028620(s32, void *); -extern s16 D_800B9AAC[]; -extern s16 D_800B9B00; -extern u16 D_801270C0; -extern u32 D_800AFAE8[]; -extern char D_8018D978[]; -extern s32 func_801596F0(s32 param_1); -extern s32 func_80159874(void); -extern void func_800167B8(s32 a0); -extern s32 func_8015987C(s32 a0); -extern int func_800167F0(int arg); -extern int func_801598BC(void); -extern void func_80159968(void *a0); -extern void func_801598E0(u8 *a0); -extern void (*D_8018DBFC[])(void); -extern void func_80159A20(void *a0); -extern void func_801599E0(void *a0); -extern void func_80159A18(void); -extern void func_80159BE4(s32); -extern void func_80159B08(s32 *a0); -extern void func_80159B70(void *a0); -extern void func_80159B3C(void * a0); -extern void (*D_8018DD50[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018DB6C; -extern void func_80159BE4(s32 arg0); -extern void func_8015A1C8(s32 a0); -extern void func_8015A2D8(s32); -extern void func_8015A1FC(s32 *a0); -extern void func_8015A264(void *a0); -extern void func_8015A230(s32 *a0); -extern void (*D_8018DD58[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018DB7C; -extern s32 func_80172608(u8 *a0); -extern void func_8015A2D8(s32 param_1); -extern u8 D_800D48DC; -extern s32 func_8015AB7C(s32 a0); -extern s32 D_8011F9C4; -extern s32 func_8015ABD4(s32 a0, s32 a1, s32 a2); -extern s32 func_80161CD0(s32 a0, s32 a1); -extern M2C_UNK D_8018DB9C; -extern void func_8015AC48(s32 arg0); -extern void func_8015AC90(s32 a0); -extern void func_8015ADB0(s32 a0); -extern void func_8015ACC4(s32 *arg0); -extern void func_8015AD3C(void *a0); -extern void func_8015AD08(void *arg0); -extern void (*D_8018DD60[])(void); -extern void func_8015ADB0(s32); -extern void func_8015AD78(s32 a0); -extern void func_8015ADB0(s32 arg0); -extern s32 D_800D4A9C; -extern int func_8015B6F4(int param_1); -extern u8 D_800D4F8C[]; -extern s32 func_8015B7B4(s32 a0); -extern u8 D_800D4BE0[]; -extern s32 func_8014A51C(void); -extern s32 func_8015B858(u8 *a0); -extern s32 D_800D4B48; -extern void func_8015B8F8(s32 *a0); -extern void func_8015BD8C(s32 *a0); -extern s32 func_8015BE94(); -extern void func_8015BE38(struct Obj *a0); -extern s32 func_8015BE74(void); -extern void func_80161124(void *a0); -extern s32 func_8015BE94(s32 *a0); -extern s32 func_8015AE2C(); -extern s32 func_8015BEC4(void); -extern s32 func_8015B950(s32 arg0); -extern s32 func_8015BEE4(void); -extern void func_8015BF04(s32 *a0); -extern void func_8015C0C4(s32 a0); -extern void func_8015BFF4(void *a0); -extern void func_8015BF7C(s32 *a0); -extern void func_8015C030(s32 *a0, s32 a1); -extern void func_8015BFB0(s32 *a0, s32 a1); -extern void (*D_8018DD88[])(void); -extern void func_8015C0C4(s32); -extern void func_8015C08C(s32 a0); -extern s32 func_8015C128(s32 param_1); -extern void func_8015C6A4(void); -extern void func_8015C788(s32 a0); -extern void func_8015C6AC(s32 *a0); -extern void func_8015C714(void *a0); -extern void func_8015C6E0(s32 *a0); -extern void (*D_8018DD94[])(void); -extern void func_8015C788(s32); -extern void func_8015C750(s32 a0); -extern void func_8015CB94(s32 a0); -extern void func_8015CBCC(void); -extern void func_8015CBD4(void); -extern void func_8015CBDC(void); -extern void func_8015CBE4(void); -extern void func_8015CBEC(void); -extern void func_8015CBF4(void); -extern void func_8015CBFC(void); -extern void func_8015CC04(void); -extern void func_8015CC0C(s32 *param_1); -extern void func_8015CC74(s32 *a0); -extern void func_8015CC40(s32 *a0); -extern s32 func_8015CCD0(); -extern s32 func_8015CCB0(void); -extern s32 func_801725E0(u8 *a0); -extern s32 func_8015CCD0(s32 param_1); -extern s32 func_8015CD20(s32 arg0); -extern void func_8015CF24(s32 a0); -extern void func_8015D01C(); -extern void func_8015CF58(s32 *param_1); -extern void func_8015CFC0(s32 *a0); -extern void func_8015CF8C(s32 *a0); -extern void func_8015CFFC(void); -extern void func_8015D01C(int param_1); -extern void (*D_8018DC08[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018DE38; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018CF1C[]; -extern void func_8015D414(int param_1); -extern void func_8015D57C(s32); -extern void func_8015D480(s32 *a0); -extern s32 func_8015D4E8(s16 *a0); -extern void func_8015D4B4(s16 *a0); -extern void func_8015D524(s32 arg0); -extern void func_8015D544(s32 a0); -extern void func_801746DC(void); -extern void func_8015D57C(s32 arg0); -extern s32 func_80161B18(void *a0); -extern s32 func_80161B84(void *a0); -extern void func_80154150(int, int); -extern void func_80149374(int, int); -extern unsigned char D_8018DE4C[]; -extern void func_8015D5E8(int param_1); -extern int func_8015E0D4(int); -extern void func_8015DA5C(s32 a0); -extern void func_8015DB6C(s32 a0); -extern void func_8015DA90(s32 *a0); -extern void func_8015DAF8(s32 *a0); -extern void func_8015DB6C(s32); -extern void func_8015DB34(s32 a0); -extern void func_8015DCB8(s32 a0); -extern void func_8014BD60(s32 a0, s32 a1); -extern int func_8015DD74(int); -extern void func_8015DBD4(void *arg0); -extern int func_8015DC84(int a0); -extern s8 D_8018DE88[]; -extern void func_8015DCB8(s32 param_1); -extern int func_8015DD74(int arg0); -extern void func_8015DECC(s32 a0); -extern void func_8015DDF0(s32 *a0); -extern void func_8015DE58(s32 *a0); -extern void func_8015DECC(s32); -extern void func_8015DE94(s32 a0); -extern void func_8015E018(s32 a0); -extern void func_8015DF34(void *arg0); -extern int func_8015DFE4(int a0); -extern void func_8015E018(s32 param_1); -extern int func_8015E0D4(int a0); -extern void func_8015E22C(s32 a0); -extern void func_8015E150(s32 *a0); -extern s32 func_8015E1B8(s32 a0); -extern void func_8015E184(s32 *arg0); -extern void func_8015E22C(s32); -extern void func_8015E1F4(s32 a0); -extern u8 D_800D4FF4[]; -extern u8 D_800D5098[]; -extern u8 D_800D5060[]; -extern s32 func_8014A850(s32 a0); -extern void func_8015E40C(s32 a0); -extern void func_8015E588(void); -extern void func_8015E4B0(s32 a0); -extern void func_8015E288(s32 a0); -extern u16 D_8018DED0; -extern u16 D_8018DED2; -extern u16 D_8018DED4; -extern s32 D_8018DED8; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -extern void func_8013C9C4(void *a0); -extern s32 D_8018DEE0; -extern void func_8015E5B0(u8 *self); -extern void func_8015E714(s32 *a0); -extern void func_8015E95C(s32); -extern void func_8015E84C(s32 *a0); -extern void func_8015E8E8(s32 *a0); -extern void func_8015E9B8(s32 *a0); -extern void func_8015E8B4(s32 *a0); -extern void func_8015E924(s32 a0); -extern void func_8015E95C(s32 a0); -extern s16 D_801152A0; -extern void func_80160818(s32 *a0); -extern void func_8015ED6C(s32 *a0); -extern void func_8015EE7C(s32); -extern void func_8015EDA0(s32 *a0); -extern s32 func_8015EE08(s32 a0); -extern void func_8015EDD4(s32 *arg0); -extern void func_8015EE44(s32 a0); -extern int D_800D4C48; -extern int D_8018DBEC; -extern void func_8015EE7C(s32 param_1); -extern void func_8015EEE0(void *arg0); -extern void func_8015EF9C(void); -extern void func_8015F080(s32); -extern void func_8015EFA4(s32 *a0); -extern void func_8015F00C(s32 *a0); -extern void func_8015EFD8(s32 *a0); -extern void func_8015F048(s32 a0); -extern void func_8015F080(s32 a0); -extern s32 D_80062BE8; -extern void func_801466F0(s32, s32, s32, s32, s32, s32, s32, s32); -extern s32 func_80161208(void); -extern void func_8015F118(void *a0); -extern void func_8015F260(s32 *a0); -extern void func_8015F380(); -extern void func_8015F2BC(s32 *a0); -extern void func_8015F324(s32 *a0); -extern void func_8015F2F0(s32 *a0); -extern void func_8015F360(void); -extern s32 func_801725B8(u8 *a0); -extern void func_8015F380(void* arg0); -extern void func_8015F738(s32 *a0); -extern void func_8015F848(s32 *a0); -extern void func_8015F76C(s32 *a0); -extern s32 func_8015F7D4(s32 a0); -extern void func_8015F7A0(s32 *arg0); -extern void func_8015F810(s32 *a0); -extern void func_80147078(s32 *, s16); -extern void func_80159B70(void *); -extern void func_8015F89C(void *arg0); -extern void func_8015F948(s32 *param_1); -extern void func_8015F9A4(void *arg0); -extern void func_8015FA24(s32 arg0); -extern void func_8015FBE0(s32 *a0); -extern void func_8015FA44(s32 *a0); -extern void func_8015FAAC(s32 *a0); -extern void func_8015FA78(s32 *a0); -extern s32 func_801612B8(void *a0, s32 a1); -extern void func_8016007C(s32 a0); -extern void func_8015FAE8(void *arg0); -extern void func_8015FCC8(void *param_1); -extern unsigned int D_8018DF64[]; -extern void func_8015FD74(int param_1); -extern s32 func_80028DE0(void); -extern u8 func_80165700(s32 a0, s32 a1); -extern void func_8015FDCC(s32 a0); -extern u8 D_80078EC2; -extern u8 func_801656E8(s32 a0, s32 a1); -extern void func_80165670(s32 a0, s32 a1); -extern void func_8016004C(s32 a0); -extern void func_8015FF20(void *param_1); -extern void func_801601AC(s32 *a0); -extern void func_801600D0(s32 *a0); -extern void func_80160138(s32 *a0); -extern void func_80160104(s32 *a0); -extern void func_80160174(s32 *a0); -extern void func_801601E4(s32 *a0); -extern void func_80160244(s32 *a0); -extern void func_8016032C(void); -extern void func_80160410(s32 *a0); -extern void func_80160334(s32 *a0); -extern void func_8016039C(s32 *a0); -extern void func_80160368(s32 *a0); -extern void func_801603D8(s32 *a0); -extern u8 D_80062BD0; -extern void func_80160410(s32 * a0); -extern void func_801607B8(s32 *a0); -extern void func_801608C0(s32 *a0); -extern void func_801607E4(s32 *a0); -extern void func_8016084C(s32 *a0); -extern void func_80160888(s32 *a0); -extern void func_80160A28(s32 a0); -extern void func_80160A74(s32 *a0); -extern void func_80160BB4(s32 *a0); -extern void func_80160ACC(s32 *a0); -extern s32 func_80160B34(s32 a0); -extern void func_80160B00(s32 *arg0); -extern void func_80160B70(s32 a0); -extern void func_80160C28(void *arg0); -extern void func_80160CB4(s32 *a0); -extern void func_80160D10(void *arg0); -extern void func_80160DEC(u8 *a0); -extern void func_80160F00(); -extern void func_80160E3C(s32 *a0); -extern void func_80160EA4(); -extern void func_80160E70(s32 *a0); -extern void (*D_8018E014[])(void); -extern void func_80160EA4(void *a0); -extern void func_80160EE0(void); -extern void func_80160F00(void* arg0); -extern void func_800D0F4C(s32 a0); -extern u8 D_80110EC0; -extern void func_80160F70(s32 a0); -extern void func_80160FE0(s32 *a0); -extern void func_80161034(void *a0); -extern void func_80161094(s32 a0); -extern void func_801610FC(void); -extern void func_801483E8(void); -extern s32 func_80161A60(s32 a0); -extern void func_8016130C(void *a0, s32 a1); -extern void func_80161240(void *a0); -extern void func_80161374(void *a0, s32 a1); -extern void func_80161278(void *a0); -extern s32 func_801612B8(void * a0, s32 a1); -extern void func_8016163C(void *a0, s32 a1); -extern void func_80161774(void *a0, s32 a1); -extern s32 func_8016197C(s32 a0, s32 a1); -extern s32 func_80161488(void *a0); -extern void func_80161888(void *a0, s32 a1); -extern void func_801614E4(void *a0); -extern void func_8016191C(void *a0, s32 a1); -extern void func_8016151C(void *a0); -extern void func_80161554(void *a0); -extern s32 func_801615C4(void * arg0, s32 arg1); -extern s32 func_801619A4(s32 *a0); -extern s32 func_80161A00(s32 a0); -extern s32 func_80161A30(s32 a0); -extern int func_801497A8(void); -extern int func_80161BE0(void *param_1); -extern u16 D_8018E044[]; -extern void func_80161C98(int param_1, u32 param_2); -extern void func_80161E08(s32); -extern s32 func_80162438(s32); -extern s32 D_800AE6A8; -extern void func_800D1734(void *); -extern s32 D_8018E0A8; -extern void func_80161D88(void); -extern void func_80161E08(s32 param_1); -extern int func_800291DC(int); -extern int func_800D0E30(void *a0); -extern int func_801620C4(void); -extern s32 func_800D0D7C(s32, s32); -extern int D_801E96F0[]; -extern void func_8016216C(void); -extern u8 D_80078EB0; -extern u8 D_80078EB1; -extern s32 func_801621CC(s32 arg0); -extern void func_801622C4(void); -extern void (*D_8018E0CC[])(void); -extern void func_80162330(void *a0); -extern void func_8014706C(void *a0); -extern s32 func_8016236C(u8 *a0); -extern void func_800D0C48(s32 a0); -extern s32 func_801623B8(s32 *a0); -extern s32 func_800167F0(s32 a0); -extern s32 func_80162414(void); -extern s32 func_80162438(s32 _unused0); -extern int func_801626B8(void); -extern void func_80162714(void); -extern int D_801E9748[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018E114[])(void); -extern void func_80162834(void *a0); -extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80162968(s32 a0); -extern s32 func_80162ACC(u8 *a0); -extern u8 D_800B5CB8; -extern s32 D_8018E104; -extern s32 D_800B5CBC; -extern u8 D_800B5CDF; -extern s32 D_800B5CEC; -extern void func_80162870(s32 param_1); -extern void func_801628F4(s32 *a0); -extern void func_80162968(s32 param_1); -extern void func_80162AC0(s32 *a0, s8 a1); -extern s32 func_80162AE0(u8 *a0); -extern void func_80162AF4(void); -extern void func_80162CC4(void); -extern s32 D_80126D40; -extern void func_80162B1C(void); -extern void func_80162D28(s32 *a0); -extern void func_80162D88(s32 *a0); -extern void func_80162DE8(s32 *a0); -extern void func_80162E48(s32 *a0); -extern void func_80162EA8(s32 *a0); -extern void func_80162F60(s32 arg0, s32 arg1); -extern void func_80162F80(s32 arg0, s32 arg1); -extern void func_80162FA0(s32 arg0, s32 arg1); -extern void func_80162F08(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80162FC0(s32 *a0); -extern void func_80162FF4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801630C4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163194(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg4); -extern void func_8016325C(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163234(s32 a0); -extern s32 D_80115100; -extern s32 func_801632E0(void); -extern s32 D_80115200; -extern s32 func_801632F0(void); -extern u16 D_80126B18[]; -extern void func_80163328(void); -extern s32 func_801633A8(void); -extern s32 func_80163408(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void func_80163534(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, u16 * a5); -extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); -extern char D_801E8DBC[8]; -extern void *memcpy(void *dst, const void *src, unsigned int n); -extern void func_801634D8(s32 param_1, u16 param_2, u16 param_3, s32 param_4, u16 param_5); -extern void func_80157158(); -extern void func_80163664(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801636D0(s32 a0, s32 a1); -extern s32 func_8016380C(struct S8016380C *a0, s32 a1); -extern void *memcpy(void *dst, void *src, s32 n); -extern s32 func_801638A0(u8 *a0, s32 a1); -extern s32 func_80163950(s32 a0); -extern void (*D_8018E11C[])(void); -extern void func_80163A58(void *a0); -extern void func_80163A94(s32 param_1); -extern void func_80163C2C(s32 param_1); -extern void func_80163EC8(s32 param_1); -extern void func_80164270(s32 *a0); -extern void func_80164418(void); -extern void func_80163764(s32 a0); -extern void func_801642AC(s32 a0); -extern void func_8016432C(s32 a0); -extern void func_80164410(void); -extern s32 func_80012DBC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164530(s32 arg0); -extern void (*D_8018E170[])(void); -extern void func_80164744(s32 param_1); -extern void func_8001C810(s32 a0, s32 a1); -extern void func_80164A74(s32 *a0); -extern void func_80164930(s32 a); -extern u16 D_800DF2E0; -extern s32 D_8018E138; -extern s16 D_8018E16C; -extern s16 D_8018E16A; -extern s16 D_8018E168; -extern void func_801647A4(int param_1); -extern void func_80164ACC(); -extern void func_80164864(void *a0); -extern void func_80164930(s32 param_1); -extern s32 func_8014C308(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164ACC(s32 a0); -extern void (*D_8018E17C[])(void); -extern void func_80164BA0(void *a0); -extern void func_8001CD50(s32 a0, s32 a1); -extern void func_800233CC(void *, unsigned short); -extern void func_80164DD0(s32 a0); -extern void func_80164DB0(void); -extern u8 D_801E97A8; -extern u8 D_801E97A9; -extern u8 D_801E97AA; -extern u8 D_801E97AB; -extern u8 D_801E97AC; -extern u8 D_801E97AD; -extern u8 D_801E97AE; -extern u8 D_801E97AF; -extern void func_80164BDC(s32 param_1); -extern void func_80164E40(void); -extern void func_80164CD4(u8 *a0); -extern void func_80164D4C(void *arg0); -extern void (*D_8018E18C[])(void); -extern void func_80164EA4(void *a0); -extern void func_80165124(void *a0); -extern void func_80164EE0(int param_1); -extern s32 func_80165140(s32 a0); -extern void func_801651B8(void *a0); -extern void func_80164F44(void *arg0); -extern void func_80165024(void *a0); -extern void func_80165064(s32 *a0); -extern void func_801650C4(s32 *a0); -extern s32 func_80165140(s32 param_1); -extern s32 func_80165240(s32 a0, s32 a1, s32 a2); -extern s32 D_801E97E8; -extern void func_801651B8(void * param_1); -extern u8 D_80126CF8; -extern void func_8016533C(void); -extern void func_801653F4(s32 a0); -extern void func_80165580(s32 a0); -extern void func_80165374(s32 a0); -extern void func_80165580(s32 _arg0); -extern void func_801653B8(s32 *a0); -extern s32 func_80165624(s32 a0); -extern u8 D_80078EC5; -extern void (*D_8018E1D0[])(void); -extern u8 func_80165658(s32 a0, s32 a1); -extern void func_800CAE0C(s32 a0); -extern void func_801654A8(s32 arg0); -extern void func_80165B28(void *a0); -extern void func_801655E4(s32 a0); -extern u8 D_8018E24C[]; -extern s32 D_8018E26C[]; -extern u8 D_8018E2E8[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018E308[]; -extern u8 D_8018E328[]; -extern void func_800CAF6C(void); -extern void func_80165770(void); -extern void func_801657D8(void); -extern u8 D_80078EC3; -extern void func_801657A0(void); -extern s32 D_80078EA0; -extern s32 D_80078EA8; -extern u8 D_80078EBB; -extern s32 D_80078ED4; -extern s32 D_80078ED8; -extern s32 D_80078EDC; -extern u8 D_80078EE0; -extern void func_80165874(void); -extern s8 D_80078EC4; -extern void func_801658EC(void); -extern s32 func_80165900(void); -extern s32 func_80165910(void); -extern s32 D_8012672C; -extern s32 D_8012811C; -extern s32 D_80126B08; -extern void func_80165938(void); -extern void func_80165958(void); -extern s32 func_80165978(void); -extern void func_80165988(void); -extern s32 func_801659A8(void); -extern void func_801659B8(void); -extern s32 func_801659CC(void); -extern void func_80165A18(void); -extern s32 func_80165A50(s32 _arg0); -extern void func_80165AC8(void); -extern void func_80165A78(s32 arg0); -extern void (*D_8018E3C4[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_8018E440[])(void); -extern void func_80165BB4(u8 *a0); -extern void func_80165B6C(u8 *a0); -extern void func_80165C58(s32 arg0); -extern void func_80165BFC(void *a0); -extern void func_80165C78(void); -extern M2C_UNK D_801E8DCC; -extern void func_80165E2C(u16 *arg0); -extern s32 func_80165FA4(s32 a0, s32 a1, s32 a2); -extern s32 func_80167DBC(s32 a0, s32 a1, s32 a2); -extern s32 func_80167AE0(s32 a0, s32 a1, s32 a2); -extern void func_80165E90(void); -extern void func_80020F34(s32 a0, s32 a1); -extern s32 func_80165FA4(s32 arg0, s32 arg1, s32 arg2); -extern void (*D_8018E44C[])(void); -extern void func_80166018(void *a0); -extern void func_80166054(s32 arg0); -extern void func_801661CC(s32 param_1); -extern void func_80166244(void* arg0); -extern void func_8016629C(void *a0); -extern void func_801662F4(void *a0); -extern void func_8016634C(void *a0); -extern void func_801663A4(void *a0); -extern void (*D_8018E454[])(void); -extern void func_801663FC(void *a0); -extern u8 D_800D387C[]; -extern u8 D_800D3888[]; -extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); -extern void func_800D1FC8(s32 a0, s32 a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern void func_801665B4(); -extern void func_80146C3C(); -extern void func_80166438(u8 *a0); -extern s32 func_80128ED8(s32 param_1, s32 *param_2); -extern void func_800D22E4(s32 a0); -extern void func_801665B4(s32 *a0); -extern void (*D_8018E51C[])(void); -extern void func_80166618(void *a0); -extern void (*D_8018E52C[])(void); -extern void func_80166654(void *a0); -extern s32 func_80166690(s32 param_1, s32 param_2); -extern s32 func_80166994(); -extern s32 func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern s32 func_80167540(s32 arg0); -extern void (*D_8018E53C[])(void); -extern void func_801678B4(void *a0); -extern void RotMatrixYXZ(void *a0, void *a1); -extern void func_80048EAC(void *a0, void *a1); -extern s32 func_801670E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80146C3C(void); -extern void func_801678F0(s32 a0); -extern void (*D_8018E548[])(void); -extern void func_80167A9C(void *a0); -extern void func_80167AD8(void); -extern s32 func_80167AE0(s32 param_1, s32 param_2, s32 param_3); -extern void func_80168070(s32 a0, s16 *a1, s16 *a2, void *a3); -extern u8 D_8018E4A8[]; -extern u8 D_8018E4BC[]; -extern s32 func_80167DBC(s32 arg0, s32 arg1, s32 arg2); -extern void func_800D20C0(void *a0, void *a1, s32 a2); -extern void func_80017E68(void *a0, void *a1); -extern void func_800D23D0(void *a0); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern s32 D_801269A4; -extern s32 D_801269A8; -extern s32 D_801269AC; -extern void func_80168070(s32 param_1, s16 *param_2, s16 *param_3, void *param_4); -extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_8016829C(s32 a0); -extern s32 func_80166690(s32 a0, s32 a1); -extern void func_80168328(s32 arg0); -extern void func_801683D8(s32 a0); -extern void func_801684B4(s32 a0); -extern void func_80168540(s32 a0); -extern void func_801685EC(s32 a0); -extern void func_80168640(s32 a0); -extern Blk20 D_800AE620; -extern s32 RotMatrixX(s32 a0, void *a1); -extern void func_80168664(void *arg0); -extern void (*D_8018E560[])(void); -extern void func_80168744(void *a0); -extern void func_80168BDC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801687CC(s32 a0); -extern void func_80168780(s32 a0); -extern void func_80168828(void); -extern void func_801687CC(s32 param_1); -extern void func_80168828(); -extern void (*D_8018E568[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_8018E570[])(void); -extern void func_80168AA8(void *a0); -extern void func_80168AE4(s32 a0); -extern void func_800D2318(void); -extern void func_80168BDC(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void (*D_8018E578[])(void); -extern void func_80168D58(void *a0); -extern void func_80168D94(int a0); -extern void func_80168F40(); -extern void func_80168EC4(s32 a0); -extern void func_80168F40(void *arg0); -extern void (*D_8018E580[])(void); -extern void func_8016901C(void *a0); -extern void func_80169058(s32 a0); -extern s32 func_80169228(void); -extern void func_801691B8(void *a0); -extern void (*D_8018E588[])(void); -extern void func_801693CC(void *a0); -extern void func_80169584(s32 param_1); -extern void func_80169408(s32 a0); -extern void func_8016951C(int param_1); -extern s32 func_80017758(void *a0, void *a1); -extern s32 func_80017DC4(void *a0, void *a1); -extern void func_801696D8(s32 a0, s32 a1); -extern void (*D_8018E590[])(void); -extern void func_80169830(void *a0); -extern void func_8016986C(s32 a0); -extern s32 func_80169A4C(s32 a0, s32 a1); -extern void func_801699D0(void *arg0); -extern void (*D_8018E644[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_8018E64C[])(void); -extern void func_80169F00(void *a0); -extern char D_8018E5FC[]; -extern char D_8018E5BC[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8018E684[])(void); -extern void func_8016A020(void *a0); -extern void func_8016A05C(void *a0); -extern void func_8016A290(s32 a, void *b, void *c); -extern void func_8016A08C(s32 param_1); -extern void func_8016A1CC(int param_1); -extern void func_8016A290(s32 param_1, void *param_2, void *param_3); -extern void (*D_8018E690[])(void); -extern void func_8016A700(void *a0); -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_80126B62; -extern u16 D_80126B66; -extern void func_8016AA50(s32 param_1, s32 param_2); -extern void (*D_8018E6D8[])(void); -extern void func_8016AB30(void *a0); -extern void func_8016B234(void); -extern void func_8016AFB0(s32 a0); -extern void func_8016B114(void *arg0); -extern s32 func_8016B448(s32, s32); -extern s32 func_8016BA48(s32 a0); -extern void func_8016B3F4(s32 a0); -extern s32 func_8016B428(s32 a0); -extern void func_8016B984(void *a0); -extern s32 func_8016B448(s32 arg0, s32 arg1); -extern void (*D_8018E754[])(void); -extern void func_8016B4BC(void *a0); -extern int func_8016B9F8(int); -extern int func_8016B834(int, int); -extern void func_8016B91C(int); -extern int D_801E9B08; -extern void func_8016B4F8(int param_1); -extern s32 func_8016B9F8(s32 param_1); -extern void func_8016B6BC(s32, s32, s32, s32); -extern void func_8016B91C(s32); -extern s16 D_8018E748[]; -extern void func_8016B5C0(s32 param_1); -extern void func_8001CD9C(int, void *); -extern int *D_8018E78C[]; -extern unsigned short D_8018E794[]; -extern unsigned short D_8018E79C[]; -extern unsigned char D_801E9B10[]; -extern int func_8016B834(int param_1, int param_2); -extern void func_8016B964(SrcB964 *a0, DstB964 *a1); -extern void func_8016B91C(s32 arg0); -extern s32 D_801E9B08; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8018E7A4[])(void); -extern void func_8016BBA4(void *a0); -extern s32 func_8016BBE0(s32 param_1); -extern void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3); -extern M2C_UNK D_801E9C44; -extern M2C_UNK D_801E9C48; -extern void func_8016BCC0(void *arg0); -extern s32 func_8016BD78(s32 param_1); -extern s32 func_8016BEA0(s32 param_1); -extern void func_8016BF34(void *a0); -extern void func_8016BFD0(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern s32 D_801E9BD0; -extern void (*D_8018E7D4[])(void); -extern void func_8016C14C(void *a0); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801E9C4C[]; -extern u8 D_801E9C54[]; -extern u8 D_801E9C04[]; -extern void func_8016C2C4(s32 param); -extern s32 func_8016C49C(s32 param_1_arg); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_8016C74C(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern short func_8016CF04(s32 a0, s32 a1); -extern void func_8016C83C(s32 a0); -extern void (*D_8018E7DC[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_8018E7F8[])(void); -extern void func_8016D19C(void *a0); -extern void (*D_8018E800[])(void); -extern void func_8016D428(void *a0); -extern void func_8016D464(u8 *a0); -extern void func_8016D4DC(s32 a0); -extern void func_8016D5EC(s32 *a0); -extern short func_8016CBC0(void); -extern void func_8016D64C(int param_1); -extern void func_8016D778(s32 a0); -extern void func_800D20C0(); -extern void func_8016D848(s32 *a0); -extern void func_8016D984(s32 *a0); -extern void func_8016DBD8(u8 *a0); -extern void (*D_8018E868[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_8018E80C; -extern u8 D_8018E818; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void (*D_8018E89C[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8018E8A4[])(void); -extern void func_8016DF20(void *a0); -extern void func_8016E3CC(s32 a0); -extern void func_8016E1CC(s32 a0); -extern void func_8016E26C(s32 *a0); -extern void func_8016E2E8(void *a0); -extern void func_8016E460(void *a0, void *a1); -extern void func_8016E358(void *a0); -extern void func_8016E460(void *arg0, void *arg1); -extern void (*D_8018E8F8[])(void); -extern void func_8016E5B8(void *a0); -extern void func_8016E5F4(s32 arg0); -extern void func_8016E778(); -extern void func_8016E688(void *a0); -extern void func_8016E6E4(s32 a0); -extern void func_8016E728(u8 *a0); -extern void func_8016E7C8(int param_1, short *p1, unsigned int *p2); -extern void func_8016E778(int param_1); -extern void func_8016E7C8(int param_1, short *param_2, unsigned int *param_3); -extern s32 D_80115218; -extern void func_8016E8F0(void); -extern void func_8016E918(short param_1, short param_2); -extern s32 func_8016E95C(); -extern u16 D_8018E92C[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_8018E91C[]; -extern void func_8016EB3C(s32 p); -extern void func_8016EBA8(u8 *param_1); -extern void func_8016ED6C(void); -extern s32 D_80126D70; -extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); -extern void func_8016ED8C(s32 a0, s32 a1, s32 a2); -extern void func_8016EE40(s32 a0, s32 a1, s32 a2); -extern void func_8016EDBC(s32 a0, s32 a1, s32 a2); -extern void func_8016EE94(); -extern void func_8016EDEC(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_8016EF78(s32 a0); -extern void func_8016EE40(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_801726D0(void *a0); -extern s32 D_80126D50; -extern s32 D_80126D54; -extern u8 D_80126D6C; -extern u8 D_80126D6D; -extern u8 D_80126D6E; -extern s32 D_80126D5C; -extern s32 D_80126D60; -extern s16 D_80126D64; -extern s16 D_80126D66; -extern s16 D_80126D68; -extern s16 D_80126D6A; -extern u8 D_80126D1A; -extern s32 D_80127058; -extern s32 D_8012705C; -extern s32 D_80127060; -extern s32 D_80127064; -extern s32 D_80127068; -extern s32 D_8012706C; -extern s32 D_80127070; -extern s32 D_80127074; -extern void func_8016EE94(s32 a0, s32 a1); -extern s32 func_8016EFC8(s32); -extern s32 func_8016EFA8(s32 a0); -extern void func_8016F094(s32 *a0); -extern s32 func_8016F0AC(); -extern s32 D_8018E948; -extern void func_8016F250(void); -extern void func_8016F288(void); -extern void func_8016F2A8(void); -extern void func_8016F2C8(void); -extern void func_8016F2EC(void); -extern void func_8016F30C(void); -extern void func_8016F330(void); -extern void func_8016F350(void); -extern void func_8016F374(void); -extern void func_8016F388(void); -extern void func_8016F398(void); -extern s32 func_8016F44C(s32 a0); -extern void func_8016F470(s32 a0); -extern s32 func_8016F410(s32 a0); -extern void func_80175414(s32 _arg0); -extern s32 func_8016F4C4(s32); -extern s32 func_8016F494(s32 a0); -extern void func_8016F0E4(void); -extern s32 func_8016F4C4(s32 param_1); -extern void func_8016F4F4(void); -extern void func_801719A4(int a0, int a1); -extern void func_800D1724(s32 a0); -extern void func_80171928(void *a0); -extern void *D_8011F738; -extern void func_8016F4FC(void *a0); -extern void func_8014708C(void *a0); -extern void func_8016F540(void *a0); -extern void func_8016F578(s32 *a0); -extern void func_8016F5B0(void *a0); -extern void func_80147060(u8 *a0); -extern void func_8016F5E0(u8 *a0); -extern void func_8016F610(void *a0); -extern void func_8016F648(void *a0); -extern void func_8016F680(void *a0); -extern void func_8016F6B0(void *a0); -extern void (*D_8018E9C0[])(void); -extern void func_8016F6E0(void *a0); -extern s32 func_80171990(u8 *a0); -extern void func_8016F764(void *a0); -extern void func_8016F71C(u8 *a0); -extern void (*D_8018E9C8[])(void); -extern void func_8016F798(void *a0); -extern void func_8016F804(void *a0); -extern void func_8016F7D4(u8 *a0); -extern void func_80171928(void *); -extern void (*D_8018E9D0[])(void); -extern void func_8016F834(void *a0); -extern void func_8016F8AC(u8 *a0); -extern void func_8016F870(u8 *a0); -extern void func_80172358(u8 *a0, u8 *a1); -extern void (*D_8018E9D8[])(void); -extern void func_8016F8E4(void *a0); -extern void func_8016F95C(void *a0); -extern void func_8016F920(u8 *a0); -extern s32 func_80171CC4(void *a0, void *a1); -extern s32 func_80171D1C(void *a0, void *a1, s32 a2); -extern u16 D_8011F73E; -extern void (*D_8018E9E0[])(void); -extern void func_8016F9C4(void *a0); -extern void func_80171B44(s32 *a0); -extern void func_8016FA44(s32 a0); -extern void func_8016FA00(s32 a0); -extern s32 func_80171C64(s32 a0, s32 a1); -extern void (*D_8018E9E8[])(void); -extern void func_8016FA84(void *a0); -extern void func_8016FB10(void *a0); -extern void func_8016FAC0(u8 *a0); -extern void func_8016FB50(void *a0); -extern void (*D_8018E9F4[])(void); -extern void func_8016FB7C(void *a0); -extern void func_8016FC24(); -extern void func_8016FBB8(s32 a0); -extern s32 func_80171B4C(s32 a0, s32 a1); -extern void func_8016FC24(s32 a0); -extern void func_8016FC64(void *a0); -extern void (*D_8018EA00[])(void); -extern void func_8016FC90(void *a0); -extern void func_8016FD08(u8 *a0); -extern void func_8016FCCC(u8 *a0); -extern s32 func_80172658(s32 *a0); -extern void func_8016FD08(u8 *s0); -extern void func_8016FD7C(s32 *a0); -extern void (*D_8018EA0C[])(void); -extern void func_8016FDB4(void *a0); -extern void func_8016FE2C(u8 *a0); -extern void func_8016FDF0(u8 *a0); -extern void func_8016FE2C(u8 * a0); -extern s32 func_8016FE78(s32 *a0); -extern s32 func_80172664(s32 *a0); -extern void func_8016FED0(s32 *a0); -extern void (*D_8018EA1C[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_8018EA2C[])(void); -extern void func_8016FFDC(void *a0); -extern void func_80170068(u8 *a0); -extern void func_80170018(u8 *a0); -extern void func_801700B8(u8 *a0); -extern void func_80170100(u8 *a0); -extern void (*D_8018EA34[])(void); -extern void func_80170150(void *a0); -extern void func_801701C8(u8 *a0); -extern void func_8017018C(u8 *a0); -extern void func_801701C8(u8 * a0); -extern void (*D_8018EA3C[])(void); -extern void func_80170240(void *a0); -extern void func_801702B8(s32 a0); -extern void func_8017027C(u8 *a0); -extern s16 func_80171AB0(s32 a0, void *a1); -extern void (*D_8018EA44[])(void); -extern void func_801702FC(void *a0); -extern void func_80170374(u8 *a0); -extern void func_80170338(u8 *a0); -extern s32 func_8014C168(s32 *a0, s32 a1); -extern void func_80170374(u8 * a0); -extern void (*D_8018EA4C[])(void); -extern void func_801703E0(void *a0); -extern void func_8017044C(u8 *a0); -extern void func_8017041C(u8 *a0); -extern void func_8017044C(u8 * a0); -extern void (*D_8018EA54[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_8018EA5C[])(void); -extern void func_80170548(void *a0); -extern void func_801705C0(u8 *a0); -extern void func_80170584(u8 *a0); -extern void func_801705C0(u8 * a0); -extern void (*D_8018EA64[])(void); -extern void func_801705F8(void *a0); -extern void func_80170670(void *a0); -extern void func_80170634(u8 *a0); -extern void func_8012A568(void (*a0)(void)); -extern void (*D_8018EA6C[])(void); -extern void func_801706AC(void *a0); -extern void func_80170718(void *a0); -extern void func_801706E8(u8 *a0); -extern void func_80129FF4(void); -extern void (*D_8018EA74[])(void); -extern void func_80170748(void *a0); -extern void func_801707D4(void *a0); -extern void func_80170784(u8 *a0); -extern s32 func_80174ED4(void); -extern void (*D_8018EA7C[])(void); -extern void func_80170810(void *a0); -extern void func_801708B0(void *a0); -extern u8 D_800D5DA8; -extern void func_8017084C(s32 a0); -extern u8 D_800D5A34[]; -extern void func_80170AD8(void *a0); -extern void func_80171904(s32 a0); -extern void func_80170B48(int a0); -extern void func_80170928(void); -extern u8 D_800D59EC[]; -extern void func_80170970(void); -extern u8 D_800D599C[]; -extern void func_801709B8(void); -extern u8 D_800D5934[]; -extern void func_80170A00(void); -extern void func_80170A48(void); -extern u8 D_800D5DC0[]; -extern void func_80170A90(void); -extern void (*D_8018EA84[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_8018EA8C[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8018EA94[])(void); -extern void func_80170C74(void *a0); -extern s32 func_8017197C(u8 *a0); -extern void func_80170CF0(void *a0); -extern void func_80170CB0(u8 *a0); -extern void (*D_8018EA9C[])(void); -extern void func_80170D68(void *a0); -extern void func_80170DE0(u8 *a0); -extern void func_80170DA4(u8 *a0); -extern s32 D_8011F73C; -extern s32 D_8011F740; -extern void func_801718AC(void *a0); -extern void func_80170DE0(u8 * _arg0); -extern void (*D_8018EAA4[])(void); -extern void func_80170E34(void *a0); -extern void func_80170EAC(u8 *a0); -extern void func_80170E70(u8 *a0); -extern int func_800D0F8C(int a0); -extern void func_80170EAC(u8 * _arg0); -extern void (*D_8018EAAC[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8018EAB4[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_8018EABC[])(void); -extern void func_80171064(void *a0); -extern void func_801710DC(u8 *a0); -extern void func_801710A0(u8 *a0); -extern u16 D_8011F73A; -extern void func_801710DC(u8 * arg0); -extern void (*D_8018EAC4[])(void); -extern void func_80171120(void *a0); -extern void func_8017118C(u8 *a0); -extern void func_8017115C(u8 *a0); -extern void func_80142454(s32 a0); -extern void func_8017118C(u8 * a0); -extern void (*D_8018EACC[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8018EAD4[])(void); -extern void func_80171260(void *a0); -extern s32 func_80012F74(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80171384(void *a0); -extern void (*D_8018EADC[])(void); -extern void func_801714E4(void *a0); -extern struct B16 D_800A5E88; -extern struct B16 D_800A5E98; -extern struct B16 D_800A5EA8; -extern void func_8017162C(void *a0); -extern void func_80171520(s32 a0); -extern s32 func_801716AC(s32 a0, void *a1, s32 *a2); -extern s32 func_80012FC8(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_800A5E94; -extern u8 D_800A5E95; -extern u8 D_800A5E96; -extern s32 func_801716AC(s32 a0, void * a1, s32 * a2); -extern int func_800D0FE0(int a0); -extern void func_801717A0(void *a0); -extern void func_8013E588(void *a0); -extern void func_801717F4(void *a0); -extern void func_80171824(void *a0); -extern void func_80171854(void *a0); -extern void func_80171884(void); -extern void func_80171A1C(u8 *a0); -extern void func_80171928(void * a0); -extern void func_8017196C(s32 *a0, s8 a1); -extern void func_80171A04(s32 *a0); -extern void func_80171A10(s32 *a0); -extern void func_80171A34(s32 *a0, s8 a1); -extern s32 func_80171A44(u8 *a0); -extern s32 func_80171A58(u8 *a0); -extern s32 func_80171A6C(u8 *a0); -extern void func_80171A80(s32 *a0, s32 a1); -extern s32 func_80171A88(s32 a0); -extern s16 func_80171AB0(s32 param_1, void * _arg1); -extern void func_80171B10(void *a0); -extern void func_80171EC8(s32 a0); -extern s32 func_80171C64(s32 param_1, s32 param_2); -extern s32 func_80171D78(s32 a0, s32 a1); -extern int func_8017250C(short *a0, short *a1); -extern s32 func_80171CC4(void * a0, void * a1); -extern s32 func_80171FFC(short *a0, short *a1, s32 a2); -extern s32 func_80171D1C(void * a0, void * a1, s32 a2); -extern s32 func_8017248C(s32 a0, s32 a1); -extern s32 func_80171E08(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_80047948(s32 a0); -extern s32 func_8004787C(s32 a0); -extern void func_80172170(s32 a0, s32 a1); -extern s32 func_8017209C(void *arg0, void *arg1, s32 arg2, s32 arg3); -extern void func_801722CC(s32 *a0); -extern void func_80172304(s32 *a0); -extern void func_80172310(u8 *a0); -extern void func_801723C4(s32 param_1, s32 param_2); -extern void func_80161C24(s32, s32); -extern void func_80172414(s32 a0); -extern s32 func_801724EC(s32 a0); -extern s32 func_8017248C(s32 arg0, s32 arg1); -extern s32 func_80013450(s32); -extern s32 func_80172560(u8 *a0, u8 *a1); -extern s32 func_8017261C(u8 *a0); -extern s32 func_80172644(u8 *a0); -extern s32 func_80172670(s32 *a0); -extern s32 func_80172688(s32 *a0); -extern s32 func_80172694(s32 *a0); -extern s32 func_801726A0(s32 *a0); -extern s32 func_801726AC(s32 *a0); -extern s32 func_801726B8(s32 *a0); -extern s32 func_801726C4(s32 *a0); -extern s32 func_80172760(s32 a0); -extern s32 func_80174650(s32); -extern void (*D_80127088)(void); -extern s32 D_801270BC; -extern s16 D_80126B0C; -extern void func_801726D0(void * _arg0); -extern void func_80172710(void); -extern void func_80174684(void *); -extern void func_80172738(void); -extern s32 func_801727D0(void *a0); -extern void func_80172780(void *a0); -extern void func_80172844(u8 *a0); -extern void func_8017280C(u8 *a0); -extern void func_8017288C(void); -extern s32 func_801728E4(void *a0); -extern void func_80172894(void *a0); -extern void func_80172958(u8 *a0); -extern void func_80172920(u8 *a0); -extern s16 D_80126B36; -extern void func_80172958(u8 * a0); -extern void func_801729A8(void); -extern s32 func_801729F0(void *a0); -extern s16 D_80126B34; -extern s16 D_80126B32; -extern void func_801729B0(s32 a0); -extern void func_80172A8C(void *a0); -extern void func_80172A2C(int param_1); -extern void func_80172ACC(u8 *a0); -extern void func_80172B0C(void); -extern s32 func_80172B44(void *a0); -extern void func_80172B14(s16 a0); -extern s32 D_801150F8; -extern void func_80172BC8(void *a0); -extern void func_80172B80(u8 *a0); -extern void func_80172C48(void); -extern void (*D_8018EB20[])(void); -extern void func_80172CA0(void *a0); -extern void func_80172D14(u8 *a0); -extern void func_80172CDC(u8 *a0); -extern void func_80172D14(u8 * a0); -extern void func_80172D60(void); -extern s32 func_80172DAC(void *a0); -extern void func_80172D68(s32 a0); -extern void func_80172E20(u8 *a0); -extern void func_80172DE8(u8 *a0); -extern void func_80172E20(u8 * a0); -extern void func_80172E8C(void); -extern void func_8017303C(void *); -extern void func_80172E94(void); -extern void func_80172ED4(void); -extern void func_80172EFC(void); -extern void func_80172F24(void); -extern u8 D_800D47F4[]; -extern void func_80172F4C(void); -extern void func_80172F9C(void); -extern u8 D_800D5C6C[]; -extern void func_80172FEC(void); -extern s32 func_80173078(void *a0); -extern void func_8017303C(void * a0); -extern void func_801730FC(struct S801730FC *a0); -extern void func_801730B4(s32 a0); -extern void func_8017316C(void); -extern s32 func_8017319C(void *a0); -extern void func_80173174(void); -extern u8 D_800D5AA0[]; -extern void func_80173220(void *a0); -extern void func_801731D8(s32 *a0); -extern M2C_UNK D_8018EAE4; -extern void func_80173220(void * arg0); -extern void func_80173294(void); -extern void func_801732C4(); -extern void func_8017329C(void); -extern void func_801732C4(s32 *a0); -extern void func_8017331C(); -extern void func_801732F4(void); -extern void func_8017331C(s32 *a0); -extern void func_80173374(); -extern void func_8017334C(void); -extern void func_80173374(s32 *a0); -extern void func_801733A4(void); -extern void func_801733CC(s32 a0); -extern void func_801734BC(s32 a0, s32 a1); -extern s16 D_80126B3E; -extern void func_80173460(s32 a0, s32 a1); -/* ==== end §8b carried decl layer ==== */ - - -void func_801734BC(s32 arg0, s32 _unused1) { - extern void func_80173544(void); - extern s16 D_80126B40; - - - s16 temp; - switch (((u32)arg0)) { - case 0: temp = -0x4; break; - case 1: temp = -0x8; break; - case 2: temp = -0x12; break; - case 3: temp = -0x18; break; - case 4: temp = -0x1C; break; - default: goto after; - } - D_80126B32 = temp; -after: - D_80126B3E = 0; - D_80126B40 = 0; - func_80174684(&func_80173544); -} - - -extern void (*D_8018EB50[])(void); - -void func_80173544(void *a0) { - D_8018EB50[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_80173580() /* dedup: shared engine-core @0x80173580 (src/shared) */ - -DEFINE_func_801735B8() /* dedup: shared engine-core @0x801735B8 (src/shared) */ - -DEFINE_func_801735EC() /* dedup: shared engine-core @0x801735EC (src/shared) */ - -DEFINE_func_80173648() /* dedup: shared engine-core @0x80173648 (src/shared) */ - -DEFINE_func_801736A8() /* dedup: shared engine-core @0x801736A8 (src/shared) */ - -DEFINE_func_801736B0() /* dedup: shared engine-core @0x801736B0 (src/shared) */ - - - -s32 func_801736FC(void *a0) { - - extern void (*D_8018EB64[])(void); - D_8018EB64[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_80173738() /* dedup: shared engine-core @0x80173738 (src/shared) */ - -DEFINE_func_80173770() /* dedup: shared engine-core @0x80173770 (src/shared) */ - -DEFINE_func_801737B0() /* dedup: shared engine-core @0x801737B0 (src/shared) */ - -DEFINE_func_801737B8() /* dedup: shared engine-core @0x801737B8 (src/shared) */ - - - -s32 func_801737E8(void *a0) { - - extern void (*D_8018EB70[])(void); - D_8018EB70[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_80173824() /* dedup: shared engine-core @0x80173824 (src/shared) */ - -DEFINE_func_8017385C() /* dedup: shared engine-core @0x8017385C (src/shared) */ - -DEFINE_func_801738D4() /* dedup: shared engine-core @0x801738D4 (src/shared) */ - -DEFINE_func_801738DC() /* dedup: shared engine-core @0x801738DC (src/shared) */ - - - -s32 func_8017390C(void *a0) { - - extern void (*D_8018EB7C[])(void); - D_8018EB7C[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_80173948() /* dedup: shared engine-core @0x80173948 (src/shared) */ - -DEFINE_func_80173980() /* dedup: shared engine-core @0x80173980 (src/shared) */ - -DEFINE_func_801739D8() /* dedup: shared engine-core @0x801739D8 (src/shared) */ - -DEFINE_func_80173A20() /* dedup: shared engine-core @0x80173A20 (src/shared) */ - -DEFINE_func_80173A28() /* dedup: shared engine-core @0x80173A28 (src/shared) */ - - -DEFINE_func_80173A60() /* dedup: shared engine-core @0x80173A60 (src/shared) */ - - - -extern void (*D_8018EB8C[])(void); - -void func_80173B4C(void *a0) { - D_8018EB8C[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_80173B88() /* dedup: shared engine-core @0x80173B88 (src/shared) */ - -DEFINE_func_80173BC0() /* dedup: shared engine-core @0x80173BC0 (src/shared) */ - -DEFINE_func_80173C64() /* dedup: shared engine-core @0x80173C64 (src/shared) */ - -DEFINE_func_80173CB4() /* dedup: shared engine-core @0x80173CB4 (src/shared) */ - -DEFINE_func_80173E1C() /* dedup: shared engine-core @0x80173E1C (src/shared) */ - -DEFINE_func_80173EF8() /* dedup: shared engine-core @0x80173EF8 (src/shared) */ - -DEFINE_func_80174158() /* dedup: shared engine-core @0x80174158 (src/shared) */ - -DEFINE_func_80174188() /* dedup: shared engine-core @0x80174188 (src/shared) */ - -DEFINE_func_801741A8() /* dedup: shared engine-core @0x801741A8 (src/shared) */ - -DEFINE_func_801741EC() /* dedup: shared engine-core @0x801741EC (src/shared) */ - -DEFINE_func_80174274() /* dedup: shared engine-core @0x80174274 (src/shared) */ - -DEFINE_func_8017427C() /* dedup: shared engine-core @0x8017427C (src/shared) */ - - - -s32 func_801742A4(void *a0) { - - extern void (*D_8018EBAC[])(void); - D_8018EBAC[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_801742E0() /* dedup: shared engine-core @0x801742E0 (src/shared) */ - -DEFINE_func_80174318() /* dedup: shared engine-core @0x80174318 (src/shared) */ - -DEFINE_func_80174354() /* dedup: shared engine-core @0x80174354 (src/shared) */ - -DEFINE_func_8017435C() /* dedup: shared engine-core @0x8017435C (src/shared) */ - - - -s32 func_80174384(void *a0) { - - extern void (*D_8018EBB8[])(void); - D_8018EBB8[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_801743C0() /* dedup: shared engine-core @0x801743C0 (src/shared) */ - -DEFINE_func_801743F0() /* dedup: shared engine-core @0x801743F0 (src/shared) */ - -DEFINE_func_80174430() /* dedup: shared engine-core @0x80174430 (src/shared) */ - -DEFINE_func_80174438() /* dedup: shared engine-core @0x80174438 (src/shared) */ - - - -s32 func_80174474(void *a0) { - - extern void (*D_8018EBC4[])(void); - D_8018EBC4[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_801744B0() /* dedup: shared engine-core @0x801744B0 (src/shared) */ - -DEFINE_func_801744E0() /* dedup: shared engine-core @0x801744E0 (src/shared) */ - -DEFINE_func_80174524() /* dedup: shared engine-core @0x80174524 (src/shared) */ - -DEFINE_func_8017452C() /* dedup: shared engine-core @0x8017452C (src/shared) */ - -DEFINE_func_80174554() /* dedup: shared engine-core @0x80174554 (src/shared) */ - -DEFINE_func_80174584() /* dedup: shared engine-core @0x80174584 (src/shared) */ - -DEFINE_func_801745AC() /* dedup: shared engine-core @0x801745AC (src/shared) */ - -DEFINE_func_801745DC() /* dedup: shared engine-core @0x801745DC (src/shared) */ - -DEFINE_func_80174604() /* dedup: shared engine-core @0x80174604 (src/shared) */ - -DEFINE_func_80174630() /* dedup: shared engine-core @0x80174630 (src/shared) */ - - -DEFINE_func_80174650() /* dedup: shared engine-core @0x80174650 (src/shared) */ - - -DEFINE_func_80174674() /* dedup: shared engine-core @0x80174674 (src/shared) */ - -DEFINE_func_80174684() /* dedup: shared engine-core @0x80174684 (src/shared) */ - -DEFINE_func_801746A4() /* dedup: shared engine-core @0x801746A4 (src/shared) */ - -DEFINE_func_801746DC() /* dedup: shared engine-core @0x801746DC (src/shared) */ - -DEFINE_func_80174714() /* dedup: shared engine-core @0x80174714 (src/shared) */ - -DEFINE_func_80174754() /* dedup: shared engine-core @0x80174754 (src/shared) */ - -DEFINE_func_80174764() /* dedup: shared engine-core @0x80174764 (src/shared) */ - -DEFINE_func_80174774() /* dedup: shared engine-core @0x80174774 (src/shared) */ - -DEFINE_func_80174784() /* dedup: shared engine-core @0x80174784 (src/shared) */ - -DEFINE_func_801747AC() /* dedup: shared engine-core @0x801747AC (src/shared) */ - - - -s32 func_801747CC(void *a0) { - - extern void (*D_8018EBD0[])(void); - D_8018EBD0[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_80174808() /* dedup: shared engine-core @0x80174808 (src/shared) */ - -DEFINE_func_8017481C() /* dedup: shared engine-core @0x8017481C (src/shared) */ - -DEFINE_func_80174824() /* dedup: shared engine-core @0x80174824 (src/shared) */ - -DEFINE_func_8017484C() /* dedup: shared engine-core @0x8017484C (src/shared) */ - - - -s32 func_80174888(void *a0) { - - extern void (*D_8018EBD8[])(void); - D_8018EBD8[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_801748C4() /* dedup: shared engine-core @0x801748C4 (src/shared) */ - -DEFINE_func_801748E4() /* dedup: shared engine-core @0x801748E4 (src/shared) */ - -DEFINE_func_801748EC() /* dedup: shared engine-core @0x801748EC (src/shared) */ - - - -s32 func_8017496C(void *a0) { - - extern void (*D_8018EBE0[])(void); - D_8018EBE0[*(u8 *)((s32)a0 + 0x4)](); -} - - -DEFINE_func_801749A8() /* dedup: shared engine-core @0x801749A8 (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (105 ins). Keys: (1) single-buffer struct for the func_80049CAC/func_8012F14C -// out-params (local_2c..local_14 are fields of ONE stack buffer, not separate scalars — else gcc -// DCEs the unread ones + overlaps the buffer -> wrong 0x40 frame); (2) $s2/$s1 pins for iVar5/iVar4 -// (call-crossing saved regs); (3) load D_80126B66 as RAW u16 (lhu) with (s16) sext at each USE — -// this defeats gcc's lhu+sext->lh combine fold so the target's lhu+sll+sra reappears; (4) inline -// `iVar5 = (s16)D_80126B5E` into the f48 expression so the f28 operand load schedules first. - -DEFINE_func_801749C8() /* dedup: shared engine-core @0x801749C8 (src/shared) */ - - -DEFINE_func_80174B6C() /* dedup: shared engine-core @0x80174B6C (src/shared) */ - -DEFINE_func_80174BBC() /* dedup: shared engine-core @0x80174BBC (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (27 ins) via func-ptr array fold extern void(*D_8018EBE4[])() - -extern void (*D_8018EBE4[])(); - -void func_80174BF4(void * arg0) -{ - M2C_FIELD(arg0, s32 *, 0xC) = 0x12C; - M2C_FIELD(arg0, s32 *, 0x14) = 0x12C; - M2C_FIELD(arg0, s16 *, 0x20) = 0x155; - M2C_FIELD(arg0, s16 *, 0x22) = 0x800; - M2C_FIELD(arg0, s16 *, 0x24) = 0; - M2C_FIELD(arg0, s16 *, 0x2E) = 0; - M2C_FIELD(arg0, s16 *, 0x30) = -0x28; - M2C_FIELD(arg0, s16 *, 0x32) = 0; - M2C_FIELD(arg0, s32 *, 0x54) = 0; - D_8018EBE4[M2C_FIELD(arg0, u8 *, 4)](); -} - - -DEFINE_func_80174C60() /* dedup: shared engine-core @0x80174C60 (src/shared) */ - -DEFINE_func_80174C80() /* dedup: shared engine-core @0x80174C80 (src/shared) */ - -DEFINE_func_80174CB0() /* dedup: shared engine-core @0x80174cb0 (src/shared) */ - - -DEFINE_func_80174E9C() /* dedup: shared engine-core @0x80174E9C (src/shared) */ - -DEFINE_func_80174ED4() /* dedup: shared engine-core @0x80174ED4 (src/shared) */ - -DEFINE_func_80174EF0() /* dedup: shared engine-core @0x80174EF0 (src/shared) */ - - - -s32 func_80174F28(void *a0) { - - extern void (*D_8018EBEC[])(void); - D_8018EBEC[*(u8 *)((s32)a0 + 0x4)](); -} - - -DEFINE_func_80174F64() /* dedup: shared engine-core @0x80174F64 (src/shared) */ - -DEFINE_func_80174FBC() /* dedup: shared engine-core @0x80174FBC (src/shared) */ - -DEFINE_func_80175014() /* dedup: shared engine-core @0x80175014 (src/shared) */ - -DEFINE_func_8017509C() /* dedup: shared engine-core @0x8017509C (src/shared) */ - -DEFINE_func_80175114() /* dedup: shared engine-core @0x80175114 (src/shared) */ - -DEFINE_func_80175150() /* dedup: shared engine-core @0x80175150 (src/shared) */ - - -extern void (*D_8018EBF4[])(void*); -extern s32 func_80175268(s32); - -void func_80175184(s32* arg0) { - u16 v1 = *(u16*)((u8*)arg0 + 2); - if (v1 < 2) { - D_8018EBF4[v1](arg0); - } else { - func_80175268((s32)arg0); - } -} - - -DEFINE_func_801751D8() /* dedup: shared engine-core @0x801751D8 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (fn-ptr table indexed by D_80078EC0-1; param preserved in $s0 across 1st call) - -extern u8 D_80078EC0; -extern void (*D_8018EBFC[])(s32); -extern void func_80146CA0(void *a0); - -s32 func_80175218(void * param_1) -{ - s32 i = D_80078EC0 - 1; - - D_8018EBFC[i](param_1); - ((void (*)(s32))func_80146CA0)(param_1); -} - - - -extern u8 D_80078EC0; - -s32 func_80175268(s32 param_1) -{ - - extern VoidFn D_8018EC14[]; - *(u32 *)(param_1 + 0x44) |= 2; - (*(VoidFn *)((s32)D_8018EC14 + ((D_80078EC0 - 1) << 2)))(); -} - - -DEFINE_func_801752BC() /* dedup: shared engine-core @0x801752BC (src/shared) */ - -DEFINE_func_80175308() /* dedup: shared engine-core @0x80175308 (src/shared) */ - -DEFINE_func_80175414() /* dedup: shared engine-core @0x80175414 (src/shared) */ - -DEFINE_func_80175454() /* dedup: shared engine-core @0x80175454 (src/shared) */ - -DEFINE_func_80175494() /* dedup: shared engine-core @0x80175494 (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (37 ins, relocation-masked proxy) - - - -extern s32 func_80029504(void); - -void func_801754A8(void) { - - extern u8 D_8011F7A8; - extern unsigned char D_800B9A13; - extern s32 D_80126B9C; - extern DispatchFn D_8018ED58[]; - u8 *p = &D_8011F7A8; - s32 r = func_80029504(); - s32 flag = 0; - - if (((D_800B9A13 == 0) && ((D_80126B9C & 0x80) == 0)) || - (0x4AF < (u32)(r - 10))) { - flag = 1; - } - p[9] = flag; - D_8018ED58[p[0]]((void *)p); -} - - - -extern void (*D_8018ED64[])(); -extern s32 func_801758FC(void); -extern s32 func_80175820(void); -extern s32 func_801759D8(void); - -void func_8017553C(s32 *param) { - D_8018ED64[*(u8 *)((s32)param + 1)](); - ((void (*)(void))func_801758FC)(); - ((void (*)(void))func_80175820)(); - ((void (*)(void))func_801759D8)(); -} - - -DEFINE_func_80175590() /* dedup: shared engine-core @0x80175590 (src/shared) */ - -DEFINE_func_80175624() /* dedup: shared engine-core @0x80175624 (src/shared) */ - -DEFINE_func_80175668() /* dedup: shared engine-core @0x80175668 (src/shared) */ - - -extern void (*D_8018ED70[])(); -extern s32 func_801758FC(void); -extern s32 func_80175820(void); -extern s32 func_801759D8(void); - -void func_80175690(s32 *param) { - D_8018ED70[*(u8 *)((s32)param + 1)](); - ((void (*)(void))func_801758FC)(); - ((void (*)(void))func_80175820)(); - ((void (*)(void))func_801759D8)(); -} - - -DEFINE_func_801756E4() /* dedup: shared engine-core @0x801756E4 (src/shared) */ - -DEFINE_func_80175798() /* dedup: shared engine-core @0x80175798 (src/shared) */ - -DEFINE_func_801757A0() /* dedup: shared engine-core @0x801757A0 (src/shared) */ - -DEFINE_func_801757E0() /* dedup: shared engine-core @0x801757E0 (src/shared) */ - - -/* func_80175820 — twin of the byte-matched func_801759D8 / func_801758FC in this same TU - * (ov_SC01_077_jr_801734BC). Same three-part body, different slot: - * part 1 tag word = ptr[2] (0x8 vs 0x4 / 0xC) - * part 2 head ptr = D_8011F7A8+0x18 (== D_8011F7C0) - * part 3 tail ptr = D_8011F7A8+0x20 (== D_8011F7C8) - * The two __asm__ memory fences are what keep the three parts from CSE-ing their - * base addresses together (parts 1/2 stay absolute lui/%lo + idx*4; part 3 keeps the - * shared `la $v1,D_8011F7A8` + 0x18/0x20 displacements). - */ - - /* size 0x14 */ - /* size 0x0C */ - -DEFINE_func_80175820() /* dedup: shared engine-core @0x80175820 (src/shared) */ - - -DEFINE_func_801758FC() /* dedup: shared engine-core @0x801758FC (src/shared) */ - - - - /* size 0x14 */ - /* size 0x0C */ - -DEFINE_func_801759D8() /* dedup: shared engine-core @0x801759D8 (src/shared) */ - - - -void func_80175AB8(param_1) - s16 param_1; -{ - /* size 0x0C */ - extern S_AF634 D_800AF634[]; - extern S_AF634 D_800AF638[]; - - extern u8 D_8011F7F0; - extern u16 D_8011F7B4; - extern u16 D_8011F7B6; - extern s16 D_8011F7BC; - extern s16 D_8011F7BE; - extern s32 D_8011F804; - extern u16 D_8011F80A; - extern u16 D_8011F824; - extern u8 D_8011F832; - extern u8 D_8011F83A; - extern u8 *D_8018EC8C[]; - - extern u32 *func_80176D94(void *param_1, u32 param_2, s16 param_3_); - extern u32 *func_801770E0(void *param_1, u32 param_2, s16 param_3_); - extern u32 func_801783D0(s32 a0, s32 a1); - extern u32 *func_80177EA4(u32 *param_1, s32 param_2, u32 param_3, s32 param_4); - extern u32 *func_80177B5C(u32 *a0, s32 a1, s32 a2, s32 a3, s32 a4); - extern void func_80177940(u32 *p, u32 a_, u32 b_, u32 c_); - extern u32 *func_80178298(u32 *param_1, u8 *param_2, short param_3, short param_4); - extern s32 func_80024054(u8*, u8*); - extern s32 func_8005A600(s32, s32, s32, s32, s32); - - u8 local[24]; - u8 *base; - u8 *arr; - u32 *slot; - u32 *p; - register u32 *a0v __asm__("$4"); - u32 uv; - s32 k; - s16 q; - s32 r1; - s32 a2v; - register s32 sum __asm__("$5"); - s32 r2; - s32 idx; - s16 sv; - - p = (u32 *)(D_800AF638[param_1].g0 + D_800AF634[param_1].g0 * 4); - __asm__("" : "=r"(base) : "0"(&D_8011F7F0)); /* L1 */ - arr = base - 0x48; - slot = (u32 *)(param_1 * 4 + (s32)arr); - *(volatile u32 *)&slot[6] = (u32)p; /* L2 */ - p = func_80176D94(p, (s16)(D_8011F7B4 - 0x71), (s16)(D_8011F7B6 + 0x51)); - p = func_801770E0(p, (s16)(D_8011F7B4 - 0x71), (s16)(D_8011F7B6 + 0x65)); - p = func_80177EA4(p, func_801783D0(D_8011F804, 0), - (s16)((*(u16 *)&D_8011F7BC) + 0x39), (s16)((*(u16 *)&D_8011F7BE) + 0x51)); - uv = D_8011F824; - k = 0x3E7; - if (uv < 1000) { - k = uv; - } - sv = (s16)func_801783D0(k, 4); - p = func_80177B5C(p, sv, D_8011F832, - (s16)(*(u16 *)(base - 0x34) + 0x39), - (s16)(*(u16 *)(base - 0x32) + 0x65)); - q = (s16)D_8011F80A / 15; - a2v = (q & 3) * 15; - r1 = func_801783D0((s32)(q << 16) >> 18, 8); - r2 = func_801783D0(a2v, 0); - a0v = p; /* L4 */ - sum = r1 + r2; /* L3 */ - p = ((u32 * (*)(u32 *, s32, s32, s32))func_80177940)( - a0v, (s16)sum, - (s16)(*(u16 *)(base - 0x34) + 0x76), - (s16)(*(u16 *)(base - 0x32) + 0x65)); - idx = D_8011F83A & 0x7F; - D_8011F83A = idx; - __asm__ __volatile__("" ::: "memory"); - ((void (*)(s32, u8 *))func_80024054)(((s32 *)D_8018EC8C)[idx], local); - p = func_80178298(p, local, - (s16)(*(u16 *)(base - 0x34) + 0x39), - (s16)(*(u16 *)(base - 0x32) + 0x5B)); - func_8005A600((s32)p, 0, 0, 0x15, 0); - *p = (((u32)p - 0x14) & 0xFFFFFF) | 0x2000000; - slot[8] = (u32)p; - p += 5; - D_800AF634[param_1].g0 += ((s32)p - (s32)slot[6]) >> 2; -} - - - - /* size 0x0C */ -extern u32 *func_8017742C(u32 *a0, s32 a1, s32 a2); -extern s32 func_8005A600(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_800183E0(s32 a0); - - /* 0x14 */ - -void func_80175DA8(param_1) - u16 param_1; -{ - - extern u8 D_8011F7F0; - extern u8 D_800B9A13; - extern S_AF634 D_800AF634[]; - extern S_AF634 D_800AF638[]; - extern u16 D_8018EC2C[]; - extern u16 D_8018EC7C[]; - extern u16 D_8018EC88; - extern u8 D_8018ED08[]; - extern u8 D_8018ED1C[]; - extern s32 D_8018ED34[]; - extern u8 D_800D43D4; - extern u8 D_800D4414; - extern u8 D_800D45D4; - - u8 *base = &D_8011F7F0; - u8 *s = base - 0x48; - u16 *src = D_8018EC2C; - Sp_80175DA8 *p; - s16 i; - s32 arg; - s32 t; - s32 fl; - u16 v; - - p = (Sp_80175DA8 *)(D_800AF638[(s16)param_1].g0 + D_800AF634[(s16)param_1].g0 * 4); - *(Sp_80175DA8 **)(s + (s16)param_1 * 4 + 0x28) = p; - i = 0; - do { - p->tag = ((u32)(p - 1) & 0xFFFFFF) | 0x4000000; - p->code = *(u32 *)src; - src += 2; - if (i < 2) { - p->x = *src++ + *(u16 *)(s + 0xC); - p->y = *src++ + *(u16 *)(s + 0xE); - } else if (i == 2) { - p->x = *src++ + *(u16 *)(s + 0x10); - p->y = *src++ + *(u16 *)(s + 0x12); - } else { - p->x = *src++ + *(u16 *)(s + 0x14); - p->y = *src++ + *(u16 *)(s + 0x16); - } - p->uv = *(u32 *)src; - src += 2; - p->wh = *(u32 *)src; - src += 2; - p++; - i++; - } while (i < 5); - - *(u8 *)(s + 7) = D_800B9A13; - p = (Sp_80175DA8 *)func_8017742C((u32 *)p, - (s16)(*(u16 *)(s + 0x10) - 0x98), - (s16)(*(u16 *)(s + 0x12) + 9)); - func_8005A600((s32)p, 0, 0, 0x16, 0); - p->tag = ((u32)(p - 1) & 0xFFFFFF) | 0x2000000; - *(Sp_80175DA8 **)(s + (s16)param_1 * 4 + 0x30) = p; - p++; - { - s32 acc = D_800AF634[(s16)param_1].g0; - D_800AF634[(s16)param_1].g0 = - acc + (((s32)p - *(s32 *)(s + (s16)param_1 * 4 + 0x28)) >> 2); - } - - p = *(Sp_80175DA8 **)(s + (s16)param_1 * 4 + 0x28); - if (base[0x48] != 0) { - *((u8 *)p + 0xD) = 0; - } else { - *((u8 *)p + 0xD) = 0xA0; - } - - { - u8 *q1 = *(u8 **)(s + (s16)param_1 * 4 + 0x28); - *(u16 *)(q1 + 0x22) = 0x6CD6; - if (base[0x48] & 0x80) { - *(u16 *)(q1 + 0x20) = D_8018EC88; - arg = (s32)&D_800D45D4; - } else { - u16 *tt = D_8018EC7C; - s32 k = base[0x48]; - if (k != 0) { - k--; - tt += k; - } - *(u16 *)(q1 + 0x20) = *tt; - arg = D_8018ED34[base[0x48]]; - } - } - func_800183E0(arg); - - { - u8 *q2 = *(u8 **)(s + (s16)param_1 * 4 + 0x28); - t = (s32)(*(u16 *)(base + 0x2E) << 16); - if (t != 0) { - q2[0x49] = D_8018ED1C[t >> 20]; - } else { - q2[0x49] = 0xA0; - } - } - - { - u8 *q3 = *(u8 **)(s + (s16)param_1 * 4 + 0x28); - v = *(u16 *)(base + 0x40); - if (v < 100) { - q3[0x5D] = D_8018ED08[v / 5]; - } else { - q3[0x5D] = 0; - } - } - - fl = *(s16 *)(base + 0x1E) & 0x8000; - /* §5a zero-byte sched fence: without it sched1 hoists the `la D_800D43D4` - into the lh's load-delay slot, dropping the target's nop (-1 ins). */ - __asm__(""); - arg = (s32)&D_800D43D4; - if (fl != 0) { - arg = (s32)&D_800D4414; - } - func_800183E0(arg); -} - - - -/* func_80176144 — RECONCILED variant of .run/uc/func_80176144.c - * - * GATE BLOCKER (whole-binary build, NOT match_one): - * src/ov_SC01_077/ov_SC01_077_jr_801734BC.c:3476: conflicting types for `D_800AF634' - * || previous declaration at :3296 - * - * ROOT CAUSE — a HOISTED file-scope typedef, not a bad signature: - * That TU hoists, at FILE scope, for func_80175DA8: - * :3295 typedef struct { s32 g0; s32 pad[2]; } S_AF634_80176144; - * :3296 extern S_AF634_80176144 D_800AF634[]; - * :3297 extern S_AF634_80176144 D_800AF638[]; - * The stored draft re-declares the SAME struct shape as a BLOCK-scope typedef - * (rule D — it must travel to the 137 sibling overlays, which have no such - * preamble). A block-scope `typedef struct {...} S_AF634_80176144;` is a DISTINCT type - * from the file-scope one (C has no structural typing), so the block-scope - * `extern S_AF634_80176144 D_800AF634[];` re-declares the symbol incompatibly with the - * in-scope file-scope decl -> hard error. - * Note the earlier block-scope copies in the same TU (:3080 func_80175820, - * :3123 func_801759D8) do NOT error: they precede :3296, so no file-scope decl - * of D_800AF634 is in scope there. Anything AFTER :3296 collides. Our - * definition lands at :3476. That is why only this one fired. - * - * FIX — §37/§124 ASM-LABEL ALIAS applied to the DATA symbols (cookbook §2516: - * "asm-label alias for sibling-decl signedness/proto conflicts ... beats - * reconcile's *(u16*)&D_x cast whose address-of PERTURBS regalloc"): - * the two objects are reached through PRIVATE C identifiers aAF634 / aAF638 - * carrying __asm__("D_800AF634") / __asm__("D_800AF638"). The emitted - * %hi/%lo relocations are against the same symbols, so codegen is unchanged, - * while the C names can never collide with ANY sibling TU's declaration — - * whether hoisted, block-scope, or absent. No header edit; no src/ edit. - * Strictly better than deleting the local decls (which would bind this - * exemplar to the one TU that happens to hoist them). - * - * The s32 parameter + explicit (s16) narrowing is retained from the stored draft - * (canonical decl in engine_core.h:18985/:4587 is `void func_80176144(s32)`; - * the K&R short param would itself be a conflicting-types error). The (s16) - * narrowing IS the entry `sll $s0,$a0,16 / sra $s0,$s0,16` pair. - * - * Verified: python3 tools/match_one.py func_80176144 --c .run/uc2/func_80176144.c - * --asm-subdir ov_SC01_077/nonmatchings/ov_SC01_077_jr_801734BC -> MATCH (53 ins) - */ - -DEFINE_func_80176144() /* dedup: shared engine-core @0x80176144 (src/shared) */ - - - -// @class: regalloc-order -// @stuck: none — MATCH (327/327 ins, match_one MATCH; symcheck SYMS-OK 18 symbols) -// -// STRUCTURE (byte-derived, all verified against the .s): -// $s3=st=&D_8011F7A8 (int base), $s1=st+0x48 (cach), $s2=st+0xE0 (flag), $s5=&(*(u8 *)D_80078E78) (src), $s4=param. -// 6 HUD fields synced src->cach with a chg-flag at [flag]: pairs 0x3A/0x3C and 0x3E/0x40, then 0x14(s32), -// 0x34(u16)+0x42(u8), 0x1A(s16), 0x4A(u8). Each: `if (cach==src) { if(!chg) goto skip; chg=0; } else {adjust}` + draw. -// KEY FINDINGS (reusable): -// * Base MUST be `s32`, and the index expr written OFFSET-FIRST (`((p<<16)>>14) + st + 0x18`) — a `u8*` base -// yields `addu rd,st,off`; the target is `addu rd,off,st`. Matches Ghidra's `(...>>0xe) + -0x7fee0840`. -// * buf is 24 bytes, NOT Ghidra's 32: MIPS STARTING_FRAME_OFFSET = outgoing_args_size(20), so get_frame_size() -// counts the 4-byte args-alignment gap. var=MIPS_STACK_ALIGN(4+24)=32 -> 32+24+28 -> 0x58. buf[32] gives 0x60. -// * Block 1 uses RAW GLOBALS (D_8011F82C...) -> absolute lui/%lo; the ne-block uses `st+0x82`/`st+0x11C` -// ($s3-relative) — both byte-confirmed; cse blocks end at labels so each region picks its own form. -// * `ne` pinned to $v0 (+6 aligned). -// -// THE TWO LEVERS THAT CLOSED IT (SESSION-21, both byte-proven here; 18 -> 7 -> 3 -> 1 -> 0): -// (L1) BLOCK-5 STORE DUPLICATED INTO BOTH ARMS (`if (f&1) *(e+0x32A)=0x200; else *(e+0x32A)=...+0x65;`) -// instead of computing a phi `sv` and storing once after the merge. Reason: sched1 is a BACKWARD list -// scheduler and a store is a memory-unit user, so `potential_hazard` floats it to the FRONT of the -// backward ready list => it is EMITTED ~8 insns late, which stretches the `sv`/`e` live ranges over -// $v0/$v1/$a0/$a1 and pushes them out to $a2/$a3. Writing the store in both arms lets cross_jump -// merge the common tail, so the store lands first at the merge label, `sv`->$v0 and `e`->$a0, and the -// `lui $a0` anti-dependence then PINS the schedule. (18 mismatches -> 7.) -// (L2) THE COMMUTATIVE-ADD OPERAND SWAP. Target is `addu $a1,$s0,$v0` = plus(ret1, ret2) into a FRESH -// non-call-crossing quantity that inherits the $a1 arg copy-suggestion. Plain `sum = i6 + i4` lets -// local_alloc TIE the dest to the dying `i6` (which crosses call2) => the whole chain is forced -// call-saved => `addu $s0,$s0,$v0` (3 mismatched). Accumulating (`i4 = i6 + i4`) frees $a1 but -// expand_binop SWAPS a commutative op when target==op1, printing `addu $a1,$v0,$s0` (1 mismatched). -// Fix: route the second call's value through a copy temp first — -// sum = i4; i4 = i6 + sum; -// target(i4) != op1(sum) at EXPAND time so no swap; cse then folds sum back and deletes the copy. -// => `addu $a1,$s0,$v0`. MATCH. -extern u16 D_80078EB2; -extern s16 D_80078EB4; -/* cur base ($s5) */ - -extern void func_80176FF4(s32); -extern void func_80177340(s32); -extern u32 func_801783D0(s32, s32); -extern void func_80177F84(s32, s32); -extern void func_80177DA8(u8 * p, u32 v, s32 idx); -extern void func_80177AD4(int, unsigned int); -extern s32 func_80024054(u8 *, u8 *); -extern u32 *func_80178298(u32*, u8*, short, short); -extern s32 func_8005A600(s32, s32, s32, s32, s32); - -void func_80176218(s32 param_1) -{ - /* [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 u8 D_80078E78[]; - - extern u16 D_8011F82A; - extern u16 D_8011F82C; - extern u16 D_8011F8C4; - extern u8 D_8011F7A8; /* st base ($s3) */ - extern u8 D_8018ED08[]; - extern u8 *D_8018EC8C[]; - s32 st = (s32)&D_8011F7A8; /* $s3 */ - s32 cach = st + 0x48; /* $s1 */ - s32 flag = st + 0xE0; /* $s2 */ - s32 cur = (s32)&(*(u8 *)D_80078E78); /* $s5 */ - u8 buf[24]; - s32 ne; - s32 t; - u16 sA; - - /* ---- block 1: raw-global pair 0x3A/0x3C ---- */ - sA = D_80078EB2; - t = (sA != D_8011F82A); - if (D_8011F82C == (*(u16 *)&D_80078EB4)) { - ne = t; - if (ne == 0 && D_8011F8C4 == 0) goto L340; - } else { - s32 d = (s16)(D_8011F82C - (*(u16 *)&D_80078EB4)); - u16 nv; - if (d < 0) { - if (d < -10) nv = D_8011F82C + 2; - else nv = D_8011F82C + 1; - } else { - if (d > 10) nv = D_8011F82C - 2; - else nv = D_8011F82C - 1; - } - D_8011F82C = nv; - *(u16 *)(flag + 0x3C) = 1; - *(u16 *)(cach + 0x3A) = *(u16 *)(cur + 0x3A); - goto L328; - } - if (ne) { - *(u16 *)(st + 0x82) = sA; - *(u16 *)(st + 0x11C) = 1; - } else { - *(u16 *)(st + 0x11C) = 0; - } -L328: - func_80176FF4(*(s32 *)(((param_1 << 16) >> 14) + st + 0x18)); -L340: - - /* ---- block 2: pair 0x3E/0x40 ---- */ - sA = *(u16 *)(cur + 0x3E); - t = (sA != *(u16 *)(cach + 0x3E)); - if (*(u16 *)(cach + 0x40) == *(u16 *)(cur + 0x40)) { - ne = t; - if (ne == 0 && *(u16 *)(flag + 0x40) == 0) goto L444; - } else { - s32 d = (s16)(*(u16 *)(cach + 0x40) - *(u16 *)(cur + 0x40)); - u16 nc; - if (d < 0) { - if (d < -10) nc = *(u16 *)(cach + 0x40) + 2; - else nc = *(u16 *)(cach + 0x40) + 1; - } else { - if (d > 10) nc = *(u16 *)(cach + 0x40) - 2; - else nc = *(u16 *)(cach + 0x40) - 1; - } - *(u16 *)(cach + 0x40) = nc; - *(u16 *)(flag + 0x40) = 1; - *(u16 *)(cach + 0x3E) = *(u16 *)(cur + 0x3E); - goto L3E8; - } - if (ne) { - *(u16 *)(cach + 0x3E) = sA; - *(u16 *)(flag + 0x40) = 1; - } else { - *(u16 *)(flag + 0x40) = 0; - } -L3E8: - { - s32 s0b = ((param_1 << 16) >> 14) + st; - u16 cc; - s32 pp; - func_80177340(*(s32 *)(s0b + 0x18) + 0x104); - cc = *(u16 *)(cach + 0x40); - pp = *(s32 *)(s0b + 0x28); - if (cc < 100) - *(u8 *)(pp + 0x5D) = D_8018ED08[cc / 5]; - else - *(u8 *)(pp + 0x5D) = 0; - } -L444: - - /* ---- block 3: field 0x14 (s32) ---- */ - if (*(s32 *)(cach + 0x14) == *(s32 *)(cur + 0x14)) { - if (*(s32 *)(flag + 0x14) == 0) goto L4D0; - *(s32 *)(flag + 0x14) = 0; - goto L4A8; - } else { - s32 d = *(s32 *)(cur + 0x14) - *(s32 *)(cach + 0x14); - s32 nd; - if (d > 0) { - if (d < 10) nd = *(s32 *)(cach + 0x14) + 1; - else nd = *(s32 *)(cach + 0x14) + 10; - } else { - if (d < -9) nd = *(s32 *)(cach + 0x14) - 10; - else nd = *(s32 *)(cach + 0x14) - 1; - } - *(s32 *)(cach + 0x14) = nd; - *(s32 *)(flag + 0x14) = 1; - } -L4A8: - { - u32 r = func_801783D0(*(s32 *)(cach + 0x14), 0); - func_80177F84(*(s32 *)(((param_1 << 16) >> 14) + st + 0x18) + 0x208, r); - } -L4D0: - - /* ---- block 4: field 0x34 (u16) + 0x42 (u8) ---- */ - if (*(u16 *)(cur + 0x34) != *(u16 *)(cach + 0x34)) { - *(u16 *)(cach + 0x34) = *(u16 *)(cur + 0x34); - *(u16 *)(flag + 0x34) = 1; - *(u8 *)(cach + 0x42) = *(u8 *)(cur + 0x42); - } else { - if (*(u16 *)(flag + 0x34) == 0) goto L558; - *(u16 *)(flag + 0x34) = 0; - } - { - u16 e = 999; - s16 r; - if (*(u16 *)(cach + 0x34) < 1000) e = *(u16 *)(cach + 0x34); - r = (s16)func_801783D0((s16)e, 4); - func_80177DA8(*(s32 *)(((param_1 << 16) >> 14) + st + 0x18) + 0x294, - (s32)r, *(u8 *)(cach + 0x42)); - } -L558: - - /* ---- block 5: field 0x1A (s16) ---- */ - if (*(s16 *)(cach + 0x1A) != *(s16 *)(cur + 0x1A)) { - *(s16 *)(cach + 0x1A) = *(s16 *)(cur + 0x1A); - *(s16 *)(flag + 0x1A) = 1; - } else { - if (*(s16 *)(flag + 0x1A) == 0) goto L63C; - *(s16 *)(flag + 0x1A) = 0; - } - { - u16 f = *(u16 *)(cach + 0x1A); - s32 e = *(s32 *)(((param_1 << 16) >> 14) + st + 0x18); - s32 i6, i4, sum; - /* L1: the store is written into BOTH arms so cross_jump merges the tail (see header). */ - if (f & 1) *(s16 *)(e + 0x32A) = 0x200; - else *(s16 *)(e + 0x32A) = *(u16 *)(st + 0x16) + 0x65; - { - s32 t = (((s16)f / 15) & 3) * 15; - i6 = func_801783D0(((s16)f / 15) * 0x10000 >> 0x12, 8); - i4 = func_801783D0((t * 0x10000) >> 16, 0); - } - /* L2: copy temp defeats expand_binop's commutative swap; cse folds it back (see header). */ - sum = i4; - i4 = i6 + sum; - ((void (*)(s32, s32))func_80177AD4)(*(s32 *)(((param_1 << 16) >> 14) + st + 0x18) + 800, - i4 * 0x10000 >> 0x10); - } -L63C: - - /* ---- block 6: field 0x4A (u8) ---- */ - if (*(u8 *)(cur + 0x4A) != *(u8 *)(cach + 0x4A)) { - *(u8 *)(cach + 0x4A) = *(u8 *)(cur + 0x4A) & 0x7F; - *(u8 *)(flag + 0x4A) = 1; - } else { - if (*(u8 *)(flag + 0x4A) == 0) return; - *(u8 *)(flag + 0x4A) = 0; - } - { - s32 s0b = ((param_1 << 16) >> 14) + st; - u8 *arg = D_8018EC8C[*(u8 *)(cach + 0x4A)]; - u32 *p = (u32 *)(*(s32 *)(s0b + 0x18) + 900); - func_80024054(arg, buf); - p = ((u32 * (*)(u32 *, u8 *, s32, s32))func_80178298)(p, buf, - (s16)(*(u16 *)(st + 0x14) + 0x39), - (s16)(*(u16 *)(st + 0x16) + 0x5B)); - func_8005A600((s32)p, 0, 0, 0x15, 0); - *p = ((u32)((u8 *)p - 0x14) & 0xffffff) | 0x2000000; - *(u32 **)(s0b + 0x20) = p; - } -} - - - -void func_80176734(s32 param_1) -{ - extern u8 D_8011F7A8; /* st base ($s3) */ - extern u8 D_80078E78[]; /* cur base ($s4) */ - extern s16 D_801152BA; - extern u8 D_8011F7B0; /* == *(u8 *)(st + 8), read absolutely (mixed addressing) */ - extern u8 D_80115214; - extern u8 D_8018ED28[]; - extern u16 D_8018EC7A[]; - extern u16 D_8018EC88; - extern u8 D_8018ED1C[]; - extern s32 D_8018ED34[]; - extern u8 D_800D43D4; - extern u8 D_800D4414; - extern u8 D_800D45D4; - extern u8 D_800B9A13; - extern s16 D_80126CE0; - extern s16 D_80126D20; - extern s32 D_80126B58; - extern void func_800183E0(s32 a0); - extern s32 func_801619D0(void *a0); - extern s32 func_80161A00(s32 a0); - extern s32 func_80161A30(s32 a0); - extern s32 func_80161A60(s32 a0); - extern void func_801775E0(s32 param_1, s32 param_2); - - s32 st, cach, flag, cur; - register s32 chg __asm__("$21"); /* L7 */ - register s32 chg2 __asm__("$16"); /* L7 */ - s32 amp; /* $s0, disjoint from chg2 */ - register u16 tgt __asm__("$5"); /* L7 */ - s32 pv; /* L6: the param copy that owns $s6 */ - s32 ix; /* L6: block A's index, hoisted out of the block */ - u8 dum[8]; /* L5: dead frame slot (target .frame vars=8) */ - - st = (s32)&D_8011F7A8; - ix = ((param_1 << 16) >> 14) + st; - pv = param_1; - cach = st + 0x48; - flag = st + 0xE0; - cur = (s32)&(*(u8 *)D_80078E78); - - /* ---- block A: pulse byte ---- */ - { - register s32 p __asm__("$5"); /* L7 */ - u8 *q; - p = *(s32 *)(ix + 0x28); - q = (u8 *)(p + 0x3C); /* L2: must live in the entry BB */ - if (D_801152BA != 0) { - u8 b = D_8011F7B0; /* L1 */ - u8 v; - if (b < 0x80) v = b - 0x80; - else v = ~b - 0x80; - q[4] = v; - *(u8 *)(p + 4) = v; - *(u8 *)(st + 8) = *(u8 *)(st + 8) + D_80115214; - } else { - *(u8 *)(p + 0x40) = 0x80; - *(u8 *)(p + 4) = 0x80; - } - } - - /* ---- block B: 0x48 animation already running ---- */ - if (*(u8 *)(flag + 0x48) != 0) { - register s32 pp __asm__("$5"); /* L7 */ - pp = *(s32 *)(((pv << 16) >> 14) + st + 0x28); - *(u8 *)(pp + 0xD) = D_8018ED28[*(u8 *)(flag + 0x48)]; - if (*(u8 *)(flag + 0x48) < 4) { - *(u8 *)(flag + 0x48) = *(u8 *)(flag + 0x48) + 1; - } else { - u8 c = *(u8 *)(cach + 0x48); - s32 q = *(s32 *)(((pv << 16) >> 14) + st + 0x28); - s32 arg; - if (c & 0x80) { - *(u16 *)(q + 0x20) = D_8018EC88; - arg = (s32)&D_800D45D4; - } else if (c != 0) { - *(u16 *)(q + 0x20) = D_8018EC7A[c]; - arg = D_8018ED34[*(u8 *)(cach + 0x48)]; - } else { - goto Lskip; - } - func_800183E0(arg); - Lskip: - if (*(u8 *)(flag + 0x48) == 5) { - if (*(u8 *)(cach + 0x48) == 0) *(u8 *)(flag + 0x48) = 0; - else *(u8 *)(flag + 0x48) = *(u8 *)(flag + 0x48) + 1; - } else if (*(u8 *)(flag + 0x48) == 10) { - *(u8 *)(flag + 0x48) = 0; - } else { - *(u8 *)(flag + 0x48) = *(u8 *)(flag + 0x48) + 1; - } - } - /* ---- block C: 0x48 changed -> start the animation ---- */ - } else if (*(u8 *)(cach + 0x48) != *(u8 *)(cur + 0x48)) { - register s32 pp __asm__("$5"); /* L7 */ - u8 k; /* L1: gives the `andi $v1,$v1,0xFF` index mask */ - if (*(u8 *)(cach + 0x48) == 0 && *(u8 *)(cur + 0x48) != 0) - *(u8 *)(flag + 0x48) = 5; - else - *(u8 *)(flag + 0x48) = 0; - *(u8 *)(cach + 0x48) = *(u8 *)(cur + 0x48); - pp = *(s32 *)(((pv << 16) >> 14) + st + 0x28); - k = *(u8 *)(flag + 0x48); - *(u8 *)(flag + 0x48) = k + 1; - *(u8 *)(pp + 0xD) = D_8018ED28[k]; - } - - /* ---- block D: field 0x2E (equality-first: the ne-arm must be out of line) ---- */ - if (*(s16 *)(cach + 0x2E) == *(s16 *)(cur + 0x2E)) { - if (*(s16 *)(flag + 0x2E) == 0) goto L9C0; - *(s16 *)(flag + 0x2E) = 0; - } else { - *(s16 *)(cach + 0x2E) = *(s16 *)(cur + 0x2E); - *(s16 *)(flag + 0x2E) = 1; - } - { - s32 pp = *(s32 *)(((pv << 16) >> 14) + st + 0x28); - s32 t = (s32)(*(u16 *)(cach + 0x2E) << 16); - if (t != 0) *(u8 *)(pp + 0x49) = D_8018ED1C[t >> 20]; - else *(u8 *)(pp + 0x49) = 0xA0; - } -L9C0: - - /* ---- block E: field 0x1E sign flip ---- */ - { - s32 fa = *(s16 *)(cach + 0x1E) & 0x8000; - s32 fb = *(s16 *)(cur + 0x1E) & 0x8000; - if (fa != fb) { - s32 arg; - if (fa != 0) { - *(s16 *)(cach + 0x1E) = 0; - arg = (s32)&D_800D43D4; - } else { - *(s16 *)(cach + 0x1E) = -0x8000; - arg = (s32)&D_800D4414; - } - func_800183E0(arg); - } - } - - /* ---- block F: mode byte -> chg ---- */ - { - u8 m = D_800B9A13; /* L1 */ - if (m != 3) { /* inverted: `chg = 0` belongs out of line */ - register s32 t __asm__("$2"); /* L3a: pin + 2 uses keeps `chg = t` alive */ - t = (*(u8 *)(st + 7) != m); - chg = t; - if (t != 0) *(u8 *)(st + 7) = m; - } else { - chg = 0; - } - } - - /* ---- block G: switch on cur[0x48] (cases 3/4/5 cross-jump onto one tail) ---- */ - amp = 0; - switch (*(u8 *)(cur + 0x48)) { - case 3: - if (func_801619D0(&D_80126B58) != 0) amp = 0xFF; - break; - case 4: - if (func_80161A00((s32)&D_80126B58) != 0) amp = 0xFF; - break; - case 5: - if (func_80161A30((s32)&D_80126B58) != 0) amp = 0xFF; - break; - case 6: - if (func_80161A60((s32)&D_80126B58) != 0) amp = 0xBA; - break; - } - - /* ---- block H: amp != 0 short-circuit ---- */ - { - s32 av; - av = amp; - __asm__("" : "=r"(av) : "0"(av)); /* L3b: keeps the `move $v0,$s0` at the merge */ - if (av != 0) { - *(u8 *)(flag + 0x47) = 1; - *(u8 *)(cach + 0x4B) = *(u8 *)(cur + 0x48) | 0xF0; - *(u8 *)(cach + 0x47) = ((s32)D_80126D20 << 7) / av; - goto Ltail; - } - } - - if (*(u8 *)(cach + 0x4B) >= 0xF0) *(u8 *)(cach + 0x4B) = 0; - - /* ---- block I: target level + change flag. The lhu is unconditional (target loads - both the signed and the unsigned view of D_80126CE0 up front). ---- */ - tgt = *(u16 *)&D_80126CE0; - if (D_80126CE0 != 0) { - u16 v; /* dies at the mask -> destructive `andi $v1,$v1` */ - register s32 t __asm__("$2"); - v = tgt; - *(u8 *)(cach + 0x4B) = v; - t = (*(u8 *)(cach + 0x47) != (v & 0xFF)); - __asm__("" : "=r"(t) : "0"(t)); /* L3b */ - chg2 = t; - } else { - u32 cv = *(u8 *)(cach + 0x47); /* L8: one load, two compares, no re-mask */ - tgt = *(u8 *)(cur + 0x47); - chg2 = 0; - if (cv != tgt || cv == 0x80) chg2 = 1; - if (*(u8 *)(cur + 0x47) != 0 && *(u8 *)(cach + 0x4B) != 0) { - *(u8 *)(cach + 0x4B) = 0; - *(u8 *)(cach + 0x47) = *(u8 *)(cur + 0x47); - } - } - - /* ---- block J: nothing-changed fast path. The target re-tests chg after the flag load; - the fence below is what stops cse from folding that second test away. ---- */ - { - register s32 c __asm__("$3"); - c = chg; - if (chg2 != 0) goto Lbig; - if (c != 0) goto Lbig; - if (*(u8 *)(flag + 0x47) == 0) goto Ltail; - __asm__("" : "=r"(c) : "0"(c)); /* L3b */ - if (c == 0) goto Lzero; - } -Lbig: - /* ---- block K: slew cach[0x47] toward tgt ---- */ - { - u32 c = *(u8 *)(cach + 0x47); - s32 sv = (s16)tgt; /* L8 */ - if ((s32)c < sv) { - *(u8 *)(cach + 0x47) = tgt; - } else { - if (sv != 0) *(u8 *)(cach + 0x47) = c - 3; /* L4: store in BOTH arms */ - else *(u8 *)(cach + 0x47) = c - 8; - c = *(u8 *)(cach + 0x47); /* stays a real lbu because of L4 */ - if (c == 0 || c > 0x80) { - *(u8 *)(cach + 0x47) = 0; - *(u8 *)(cach + 0x4B) = 0; - } else if ((s32)c < (s16)tgt) { /* fresh EBB -> the sll/sra is recomputed */ - *(u8 *)(cach + 0x47) = tgt; - } - } - *(u8 *)(flag + 0x47) = 1; - } - goto Ltail; -Lzero: - *(u8 *)(flag + 0x47) = 0; -Ltail: - - /* ---- block L: tail. m+5 / m+9 are separate temps: `lhu + (m+5)`, not `(lhu + m) + 5`. ---- */ - { - s32 b = ((pv << 16) >> 14) + st; - s32 m = (*(u8 *)(st + 7) != 0) << 8; - s32 m5 = m + 5; - s32 m9 = m + 9; - *(u16 *)(*(s32 *)(b + 0x28) + 0x32) = *(u16 *)(st + 0x12) + m5; - func_801775E0(*(s32 *)(b + 0x28) + 0x64, (s16)(*(u16 *)(st + 0x12) + m9)); - } -} - - -DEFINE_func_80176D00() /* dedup: shared engine-core @0x80176D00 (src/shared) */ - -DEFINE_func_80176D94() /* dedup: shared engine-core @0x80176D94 (src/shared) */ - -DEFINE_func_80176FF4() /* dedup: shared engine-core @0x80176FF4 (src/shared) */ - -DEFINE_func_801770E0() /* dedup: shared engine-core @0x801770E0 (src/shared) */ - -DEFINE_func_80177340() /* dedup: shared engine-core @0x80177340 (src/shared) */ - -DEFINE_func_8017742C() /* dedup: shared engine-core @0x8017742C (src/shared) */ - -DEFINE_func_801775E0() /* dedup: shared engine-core @0x801775E0 (src/shared) */ - - -DEFINE_func_801776EC() /* dedup: shared engine-core @0x801776EC (src/shared) */ - -DEFINE_func_80177784() /* dedup: shared engine-core @0x80177784 (src/shared) */ - -DEFINE_func_801777BC() /* dedup: shared engine-core @0x801777BC (src/shared) */ - - - -// @class: regalloc-order -// @stuck: none — MATCH -DEFINE_func_801778A8() /* dedup: shared engine-core @0x801778A8 (src/shared) */ - - -DEFINE_func_80177940() /* dedup: shared engine-core @0x80177940 (src/shared) */ - -DEFINE_func_80177AD4() /* dedup: shared engine-core @0x80177AD4 (src/shared) */ - - -/* func_80177B5C - MATCH (147/147 ins), wave23. - * - * Seed: .run/near6/func_80177B5C_ils.c (permuter-improved, closeness 7). - * Two residual clusters remained; both cracked, each by a sourced gcc-2.7.2 mechanism. - * - * CLUSTER C (idx 86-89) - the "cl | ((n*8+8) | 0x4000)" re-association. - * NOT a cse fold. It happens in the FRONT END: fold-const.c fold(), the `associate:` - * arm at :3685. For `A | (X | C)`, split_tree(arg1) (:3759, decomposer at :882) splits - * arg1 into var=X / con=C because TREE_CONSTANT(op1) holds, then rebuilds it as - * `(A | C) | X` at :3785. Verified in the FIRST RTL dump (t.i.rtl insn 215 already - * reads `(ior v1 16384)`), so no RTL-level lever (the cse if/else diamond, tie or - * volatile barriers, operand swap, shift-vs-multiply) can ever reach it. - * ANTIDOTE: hoist the inner IOR into its own statement. The outer arg1 is then a - * VAR_DECL, split_tree returns 0, and the associate arm is skipped. (This function - * already proved the shape at `tt = uv | 0x1000; p[3] = cl | tt;`, which matched.) - * - * That exposed a REGALLOC residual: the chain landed in $a3 (`sll a3,a3,3`) instead - * of $v0. Cause: `n` was pinned to a HARD reg, and local-alloc.c combine_regs():1798 - * unconditionally records a dying hard-reg SOURCE in qty_phys_sugg[] for the dest - * pseudo, so the shift dest inherited $a3. A *pseudo* source cannot do that - :1763 - * bails when reg_qty[ureg] < 0 (i.e. not block-local), and the target's `n` crosses - * the join, so it is exactly such a pseudo. - * ANTIDOTE: move the pin off `n` (which dies into the shift) onto `nn` (the tested - * value). `nn` pinned to $2 keeps the two distinct so the `addu $a3,$v0,$zero` copy - * survives (combine_regs :1841 refuses to tie when the DEST is non-block-local), - * while `n` stays a pseudo and the shift chain gets an ordinary local quantity -> - * $v0 - which also restores the target schedule, because the $v0 anti-dependence on - * `sw $v0,-0x4($a1)` is what stops sched2 hoisting the chain above the store. - * [7 -> 8 -> 3] - * - * CLUSTER B (idx 24-27) - `lui $t0,0x300` two slots early. - * Pure sched1 LUID tie-break, read straight off the -da trace (t.i.sched, T-36): - * ready = { 58 (7f000001), 72 (7f000001), ... } - insn 58 (lui $t0) IS birthing- - * boosted (sched.c birthing_insn_p:2469 works on hard regs too; reg_n_sets[$t0]==1), - * so 58/71/72 all tie at max_priority and rank_for_schedule:2427 falls through to - * DESCENDING LUID. Source order put `ca = 0x3000000;` before the mask, so - * LUID(58) < LUID(72) and the lui was placed first. - * (The companion mask 0xFFFFFF correctly stays at idx 6-7 because lui+ori is TWO - * sets of $t1 -> reg_n_sets==2 -> no boost -> it sinks to the block head. Same - * mechanism, opposite sign - the model predicts both.) - * ANTIDOTE: split the mask into its own statement (`gg`) and materialise the - * constant BETWEEN it and the OR, so expand emits addiu, and, lui, or in that order - * and LUID(58) > LUID(72). Sweeping the plain statement position of `ca = ...` was - * inert (all 11 slots scored 3) - only interposing the temp moves the LUID past the - * AND. [3 -> 0] - * - * Dead ends measured, not guessed: pin nv to $2 = 27; reuse tt = 24; reuse uv = 29; - * two-step |= = 15; unpin n = 84 (146 ins, the copy coalesces away); unpin ca = 139; - * ca as a bare literal = 139 (145 ins - cse merges it with the loop copy, so the hard - * pin is what keeps the pre-loop and in-loop constants separate); both literal = 143; - * `(ca = 0x3000000)` as an assignment-EXPRESSION = 114 (148 ins, extra move); reusing - * the existing `g` for the mask temp instead of a fresh one = 8 (g has a 2nd set later). - */ -u32 *func_80177B5C(p, bits, tbli, x, y) -u32 *p; -u32 bits; -s32 tbli; -s32 x; -s32 y; -{ - - extern u8 D_8018ED50[]; -register u32 bb __asm__("$14"); - u32 *q; -register u32 v __asm__("$25"); -register u32 cl __asm__("$3"); -register u32 cs __asm__("$5"); -register u32 ca __asm__("$8"); - s16 i; - u32 mk1; - u32 cc1; - u32 flag; -register u32 nn __asm__("$2"); - u32 n; -register u32 t __asm__("$13"); - u32 col; - u32 uv; - u32 tt; - u32 nv; - u32 x1; - u32 x2; - u32 w; - u32 g; - u32 gg; - u32 w3; -register u32 yr __asm__("$16"); -register u32 yt __asm__("$4"); -register u32 tr __asm__("$21"); -register u32 xr __asm__("$17"); -register u32 c3 __asm__("$18"); -register s32 ff __asm__("$19"); -register s32 two __asm__("$20"); - yt = y; - tr = tbli; -__asm__("" : "=r"(tr) : "0"(tr)); - xr = x; -__asm__("" : "=r"(xr) : "0"(xr)); - mk1 = 0xFFFFFF; - cc1 = 0x74808080; - bb = bits; - t = x + 0xE; - flag = 0x1000000; - i = 0; - two = 2; - ff = 255; - ; - v = D_8018ED50[(s16) tbli]; - gg = ((u32) (p - 5)) & mk1; - ca = 0x3000000; - p[0] = gg | ca; - x1 = (x - 3) & 0xFFFF; - x2 = (x + 5) & 0xFFFF; - p[1] = cc1; - yr = yt; -__asm__("" : "=r"(yr) : "0"(yr)); - yt = (s16) yt; - cs = (yt + 1) << 16; - w = cs | x1; -__asm__("" : "=r"(w) : "0"(w)); - cl = ((v << 6) | 0x4016) << 16; - p[2] = w; - p[3] = cl | 0x1800; - p += 5; - p[0] = (((u32) (p - 5)) & mk1) | ca; - p[1] = cc1; - p[2] = cs | x2; - p[3] = cl | 0x1808; - p += 5; - q = p; - yt = yt << 16; - { - for (; i < 3; i++) - { - nn = ((bb << 16) >> 18) >> 10; - n = nn; - if (((nn != 0) || (i == two)) || (i == ff)) - { - flag = 0; - } - q[0] = (((u32) (q - 5)) & 0xFFFFFF) | 0x3000000; - q[2] = (yt | (t & 0xFFFF)) | flag; - col = 0x74808080; - q[1] = col; - nv = ((n * 8) + 8) | 0x4000; - q[3] = cl | nv; - q += 5; - t += 8; - bb <<= 4; - } - - } - p = q; -__asm__("" : "=r"(v) : "0"(v)); - g = (((u32) (p - 5)) & 0xFFFFFF) | 0x3000000; -__asm__ __volatile__(""); - cs = yr << 16; - p[0] = g; - w3 = cs | ((xr + 0x2A) & 0xFFFF); -__asm__ __volatile__(""); - cl = ((v << 6) | 0x4016) << 16; - uv = ((s16) tr) << 4; - p[2] = w3; - tt = uv | 0x1000; - p[1] = col; - p[3] = cl | tt; - p += 5; - p[0] = (((u32) (p - 5)) & 0xFFFFFF) | 0x3000000; -__asm__ __volatile__(""); - cs = cs | ((xr + 0x32) & 0xFFFF); - uv = uv | 0x1008; - cl = cl | uv; - p[1] = col; - p[2] = cs; - p[3] = cl; - p += 5; -__asm__("" :: "r"(tr), "r"(xr)); - return p; -} - - - - -void func_80177DA8(p, v, idx) -u8 *p; -u32 v; -s16 idx; -{ - - extern u8 D_8018ED50[]; - u8 *r; - u16 c; - u16 flag; - u32 n; - u8 m; - s16 i; - u8 t; - u32 x; - u32 uv; - u32 w1; - u32 w2; - - flag = 0x100; - i = 0; - t = D_8018ED50[idx]; - c = (t << 6) | 0x4016; - *(u16 *)(p + 0xE) = c; - p += 0x14; - *(u16 *)(p + 0xE) = c; - p += 0x14; - r = p; - do { - n = (v << 16) >> 28; - m = n; - if (n != 0 || i == 2 || i == 0xFF) { - flag = 0; - } - v <<= 4; - i++; - *(s16 *)(r + 0xA) = flag | (*(s16 *)(r + 0xA) & ~0x100); - *(u8 *)(r + 0xC) = m * 8 + 8; - r += 0x14; - } while (i < 3); - *(u16 *)(p + 0xE) = c; - p += 0x14; - *(u16 *)(p + 0xE) = c; - p += 0x14; - *(u16 *)(p + 0xE) = c; - p += 0x14; - x = ((t << 6) | 0x4016) << 16; - uv = idx << 4; - w1 = uv | 0x1000; - *(u32 *)(p + 0xC) = x | w1; - w2 = uv | 0x1008; - *(u32 *)(p + 0x20) = x | w2; -} - - - -// @class: regalloc-order -// @stuck: none — MATCH - -DEFINE_func_80177EA4() /* dedup: shared engine-core @0x80177EA4 (src/shared) */ - - -DEFINE_func_80177F84() /* dedup: shared engine-core @0x80177F84 (src/shared) */ - - - -DEFINE_func_80178004() /* dedup: shared engine-core @0x80178004 (src/shared) */ - - -DEFINE_func_80178298() /* dedup: shared engine-core @0x80178298 (src/shared) */ - -DEFINE_func_801783D0() /* dedup: shared engine-core @0x801783D0 (src/shared) */ - -extern M2C_UNK D_801E9014; - -void func_80178438(u16 *arg0) { - func_8001534C(2, &D_801E9014, 0x80, 0x88, 0, 0); - func_800153CC(3, *arg0, 0xA8, 0x88, 0x40, 0); -} - - -DEFINE_func_8017849C() /* dedup: shared engine-core @0x8017849C (src/shared) */ - -DEFINE_func_80178608() /* dedup: shared engine-core @0x80178608 (src/shared) */ - -DEFINE_func_8017869C() /* dedup: shared engine-core @0x8017869C (src/shared) */ - -DEFINE_func_80178744() /* dedup: shared engine-core @0x80178744 (src/shared) */ - -DEFINE_func_801787D4() /* dedup: shared engine-core @0x801787D4 (src/shared) */ - - -// @class: regalloc-order -// @stuck: sll $v0,$s1,2 must be recomputed AFTER the call (target nops the delay slot) - -extern void func_80019064(void *a0); -extern void func_80131E00(struct S80131E00 *a0, s32 a1); - - -void func_80178840(int param_1) { - - extern int D_8018EDB0; - extern int D_8018EDBC[]; - register int p __asm__("$16"); - register int s1byte __asm__("$17"); - p = param_1; - if ((*(unsigned short *)(p + 0x5c) & 1) != 0) { - s1byte = *(unsigned char *)(p + 0x5e); - if (s1byte == 0xc) { - ((void (*)(int))func_80019064)((int)&D_8018EDB0); - } - ((void (*)(int, int))func_80131E00)(p, D_8018EDBC[s1byte]); - } -} - - -DEFINE_func_801788B8() /* dedup: shared engine-core @0x801788B8 (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (result pinned to $v0 forces call-result copy to $v1 + delay-slot zero) - -extern s32 func_801789AC(s32 arg0); -extern s16 D_801EAFC8; - -int func_80178970(void) -{ - register int r __asm__("$2"); - int v; - - v = ((s32 (*)(void))func_801789AC)(); - r = 0; - if (v != 0) - r = D_801EAFC8 == 0; - return r; -} diff --git a/src/ov_SC03_015/ov_SC03_015_jr_801789AC.c b/src/ov_SC03_015/ov_SC03_015_jr_801789AC.c deleted file mode 100644 index 12a7f0766..000000000 --- a/src/ov_SC03_015/ov_SC03_015_jr_801789AC.c +++ /dev/null @@ -1,2775 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8; -typedef void (*Handler)(struct Entry_8016E95C *); -extern void func_801458E0(void); -extern s32 D_800AE6AC; -extern s32 D_800AE6B0; -extern s16 D_800B9A0A; -extern u8 D_80078E50; -extern void func_800D185C(u8 *a0); -extern void func_801458E8(void); -extern s32 func_80029504(void); -extern void func_80145B24(void); -extern u8 D_8018DAA4; -extern u8 D_8018DA14; -extern u8 D_8018D9F0; -extern u8 D_8018D9CC; -extern u8 D_8018DA80; -extern u8 D_8018DA5C; -extern u8 D_8018DA38; -extern u8 D_8018D9A8; -extern void func_80145934(void); -extern u8 D_8018DB34; -extern u8 D_8018DB10; -extern u8 D_8018DAEC; -extern u8 D_8018DAC8; -extern void func_80145A2C(void); -extern s32 func_800291DC(s32); -extern void func_800291C8(s32, s32); -extern void func_80162120(void); -extern void func_80029124(s32, s32); -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); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_80145BF8(void); -extern s32 func_800291B4(s32 arg); -extern void func_800291A0(s32, s32); -extern void func_80145C54(void); -extern s32 func_80145CEC(); -extern s32 func_80029178(s32 arg); -extern void func_80146014(s32 a0); -extern unsigned char D_8018CF2C[]; -extern unsigned char D_8018CF5C[]; -extern unsigned char D_8018CFAC[]; -extern unsigned char D_8018CFDC[]; -extern unsigned char D_8018D00C[]; -extern void func_80145EE8(s32 param_1); -extern void MoveImage(void *a0, s32 a1, s32 a2); -extern void func_80146074(void); -extern s32 func_80146128(void); -extern void func_80146360(void); -extern void func_801463A0(); -extern void func_8014607C(void); -extern s32 *D_80126B78; -extern u8 D_80078EC1; -extern s32 D_80078EC8; -extern s32 D_80126B9C; -extern s32 D_8011F730; -extern u16 D_801152B8; -extern u16 D_8012693A; -extern u8 D_80126BE0[]; -extern u8 D_801150F0[]; -extern void *memcpy(void *dst, const void *src, u32 n); -extern void func_80146FC4(s32 a0); -extern void func_80150A70(s32 a0); -extern void func_80147098(s32 *a0); -extern void func_8014A638(s32 arg0); -extern s32 func_80155458(s32 a0); -extern s32 func_80029104(void); -extern void func_80029344(void); -extern void func_8014ADE0(s32 a0); -extern void func_8014B350(s32 a0); -extern void func_8014B7A4(s16 *param_1); -extern s32 func_80161D58(s32 a0); -extern void func_80161A90(s32 a0); -extern void func_8014B504(u16 *a0); -extern void func_80149BEC(s32 a0); -extern void func_8014B5D0(s32 *a0); -extern void func_8014C99C(u8 *a0); -extern void func_8014B190(s32 s0); -extern void func_80148648(s32 a0, s32 a1); -extern s32 func_80149228(s32 a0); -extern void func_8014A59C(s32 a0); -extern void func_8016F14C(void *a0); -extern void func_80154418(void *a0); -extern void func_80154BE4(s32 a0); -extern void func_80165694(s32 arg0); -extern void func_801654A8(s32 a0); -extern void func_8014A680(s32 a0); -extern void func_8014A6A8(s32 a0); -extern void func_8014A71C(s32 a0); -extern void func_80172588(s32 *a0); -extern void func_801473DC(s32 *a0); -extern void func_80015978(s32 a0, s32 *a1); -extern void (*D_8018D05C[])(void *); -extern u8 D_80126BA4; -extern s32 D_80127098; -extern s32 D_80127094; -extern s32 D_80127090; -extern void func_80146534(void); -extern void func_8001D074(s32 a0, s32 a1); -extern void func_80146554(void); -extern void func_80146578(void); -extern void func_8001CFDC(s32, s32); -extern void func_8014659C(void); -extern void func_8001D074(s32, s32); -extern void func_801465C0(void); -extern void func_801465E4(void); -extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); -extern s32 D_8011F9D0; -extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); -extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 D_8011F750; -extern s32 D_8011F754; -extern u8 * func_801468C8(s32 arg0, u8 arg1); -extern s32 D_8011D030; -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); -extern s32 func_80146B9C(void *a0); -extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); -extern u16 D_8011DA28; -extern s32 func_80146B9C(void * arg0); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80146CA0(void *a0); -extern void func_80146CB4(void *a0); -extern void func_80146CC8(s32 a0); -extern void func_80146D30(s32 a0); -extern void func_80146D80(s32 *a0); -extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80146D90(s32 a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); -extern void func_80146E90(s32 *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80015954(s32 a0, s32 a1); -extern void func_80149374(s32 a0, s32 a1); -extern void func_80146F58(s32 a0, s32 a1); -extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 func_8012A68C(void); -extern s16 func_8012A758(void); -extern void func_8004978C(s16 *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern u8 D_80126DB0[]; -extern u16 D_80126DB6; -extern void func_8014704C(s32 *a0); -extern s32 func_80147054(void *a0); -extern void func_80147060(u8 * a0); -extern void func_8014706C(void *arg0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80147084(s32 *a0); -extern void func_8014708C(void *arg0); -extern s32 func_801470A0(void *a0); -extern void func_801470AC(s32 *a0); -extern void func_801470B4(s32 arg0); -extern void func_801470C0(s32 a0); -extern void func_80147118(s32 a0); -extern s16 D_80126BB8; -extern s16 D_80126BBA; -extern s16 D_80126BBC; -extern void func_80147264(s32 a0); -extern void func_80147290(void); -extern void func_801472B4(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void *D_8012707C; -extern void func_801472DC(void); -extern void func_801472F0(void *a0); -extern void func_80147364(u16, s32); -extern void func_80147300(u16 arg0); -extern void func_80147324(s32 arg0); -extern void func_801473EC(s32 *a0); -extern void func_80147460(s32 a0); -extern void func_80147514(); -extern void func_80147628(s32 a0); -extern void func_80147478(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); -extern s32 func_800129CC(s32 a0, s32 a1); -extern void func_80147514(s32 arg0); -extern void func_80013F3C(s32 a0); -extern void func_80012558(s32 a0, s32 a1); -extern void func_800126C4(s32 a0, s32 a1); -extern void func_800123F0(s32 a0, s32 a1); -extern void func_80147718(s32 a0); -extern void func_80147788(void *a0, s32 a1); -extern void func_801477A8(void *a0, s32 a1); -extern void func_801477C8(void *a0, s32 a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80147814(s32 a0, s32 a1); -extern void func_80147928(int a0, int a1); -extern void func_8014799C(int a0, int a1); -extern void func_80147A10(int a0, int a1); -extern void func_80147860(int a0, int a1, int a2, int a3); -extern void func_80147948(s32 a0, s32 a1, s32 a2); -extern void func_801479BC(s32 a0, s32 a1, s32 a2); -extern void func_80147A30(s32 a0, s32 a1, s32 a2); -extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147948(int a0, int a1, int a2); -extern void func_801479BC(int a0, int a1, int a2); -extern void func_80147A30(int a0, int a1, int a2); -extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147A84(s32 arg0); -extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147AAC(s32 arg0); -extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80147B5C(s32 a0, void *a1); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern void func_80147B18(s32 a0); -extern void func_80147B5C(s32 arg0, void *arg1); -extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147DC0(s32 a0, s32 a1); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147F50(s32 arg0); -extern void func_80148038(s32 a0, s32 a1); -extern s32 ratan2(s32 a0, s32 a1); -extern s32 csqrt(s32 a0); -extern s32 func_80012A60(s32 a0, s32 a1); -extern void func_80148094(int param_1, short *param_2, int *param_3); -extern void func_801485B8(s32 a0, s32 a1, s32 a2); -extern void func_801484B0(s32 a0, s32 a1); -extern s32 func_80154358(void *a0); -extern void func_801484E8(s32 a0, s32 a1); -extern void func_80148534(s32 a0, s32 a1); -extern void func_8014856C(s32 a0, s32 a1); -extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); -extern void func_80148634(void *a0); -extern u8 D_800B9A64; -extern s32 func_80014DC0(); -extern s32 func_80014D68(); -extern s32 func_80014D94(); -extern s32 func_80014CF8(); -extern void func_800120DC(); -extern s32 func_800CF8B4(); -extern u16 func_801487F4(s32 *a0); -extern u16 func_80148800(s32 *a0); -extern u8 func_8014880C(s32 *a0); -extern u16 func_80148818(s32 *a0); -extern s32 func_80047D3C(s32 a0); -extern s32 func_80148824(void *arg0); -extern s32 func_801488A8(u8 *a0); -extern s32 func_8014891C(s32 a0); -extern s32 func_80148980(u8 *a0); -extern s32 func_801489E8(s32 a0); -extern s32 func_80148A48(s32 a0); -extern int func_80148AFC(void *a0); -extern void func_80148AAC(u8 *a0); -extern s32 func_80148C18(void); -extern s32 func_80148C20(s32 a0, s16 a1); -extern s32 func_80148C34(s32 a0, s32 a1); -extern s32 func_80148C4C(s32 a0, s32 a1); -extern s32 func_80148C64(s32 a0, s32 a1); -extern s32 func_80148C7C(void); -extern s32 func_80148C84(s32 a0, s32 a1); -extern s32 func_80148C9C(s32 a0, s32 a1); -extern s32 func_80148CB4(s32 a0, s32 a1); -extern s32 func_80148CCC(s32 a0, s32 a1); -extern s32 func_80148CE4(void); -extern s32 func_80148CEC(void); -extern s32 func_80148CF4(s32 a0, s32 a1); -extern s32 func_80148D0C(s32 a0, s32 a1); -extern s32 func_80148D24(void *a0, int a1); -extern s32 func_80148D3C(void); -extern s32 func_80148F60(void); -extern s32 func_80148F68(s32 a0); -extern s32 func_80148F74(s32 a0); -extern s32 func_80148F80(s32 a0); -extern s32 func_80148F8C(s32 a0); -extern s32 func_80148F98(void); -extern s32 func_80148FA0(s32 a0); -extern s32 func_80148FAC(s32 a0); -extern s32 func_80148FB8(s32 a0); -extern s32 func_80148FC4(s32 a0); -extern s32 func_80148FD0(void); -extern s32 func_80148FD8(void); -extern s32 func_80148FE0(s32 a0); -extern s32 func_80148FEC(s32 a0); -extern s32 func_80148FF8(s32 a0); -extern s32 func_80149004(void); -extern void func_8014900C(s32 *a0); -extern void func_80149020(s32 *a0); -extern void func_80149034(s32 *a0); -extern void func_80149048(s32 *a0); -extern void func_8014905C(u8 *a0); -extern void func_801490E0(s32 *a0, s16 a1); -extern void func_801490E8(s32 *a0, s16 a1); -extern void func_801490F0(s32 *a0, s16 a1); -extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); -extern void func_801490F8(s32 a0, s32 a1); -extern s32 func_801491C4(s32 a0); -extern s32 func_80149184(s32 a0); -extern s32 D_801151D4; -extern void func_80149204(s32 *a0); -extern void func_80149210(s32 a0, s32 a1); -extern s32 func_80149284(s32 *a0, s32 a1); -extern void func_80149350(s32 arg0); -extern void func_80149290(s32 a0); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_80149374(s32 arg0, s32 arg1); -extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8014942C(s32 arg0); -extern void func_8012EF70(s32 a0, s32 a1); -extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012EFB8(s32 a0); -extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); -extern void func_8014964C(s32 param_1, s32 param_2); -extern s32 func_801496D4(void *a0); -extern void func_8015AD08(); -extern void func_80149704(void); -extern void func_8015ACC4(); -extern void func_80149724(void); -extern u8 D_80078EBF; -extern s32 func_80149744(struct S_80149744 *a0); -extern void func_8015F7A0(); -extern void func_80149788(void); -extern void func_801653B8(); -extern void func_80149864(void); -extern s16 currentLocationId; -extern s32 func_8016F1AC(void); -extern s32 func_80149884(void); -extern void func_80160B00(); -extern void func_801498C0(void); -extern s32 func_80149AA8(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern void func_80146750(void *a0); -extern s32 func_801498E0(s32 *a0); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_80147364(u16 a0, s32 a1); -extern s32 func_800CCF28(s32 a0); -extern u8 D_80126B5C; -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_8015DAC4(s32 *a0); -extern void func_8015554C(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern void func_80149B14(s32 *a0); -extern u8 func_8014BEF8(void); -extern s32 func_80149B54(s32 * arg0); -extern void func_8015DE24(s32 *a0); -extern void func_80157510(s32 *a0); -extern void func_80149BAC(s32 *a0); -extern s32 func_80029178(s32 a0); -extern s32 func_80149C08(s32 arg0); -extern void func_801577C8(); -extern void func_80149C94(void); -extern void func_80157D20(void); -extern void func_80149CB4(void); -extern s32 func_80149CD4(s32 a0); -extern u8 func_8014B5B8(s32 *a0); -extern s32 func_80149D10(s32 a0); -extern s32 func_80149E94(s32 a0); -extern s32 func_80149DD8(s32 a0); -extern s32 func_80149D9C(s32 a0); -extern u8 D_801202A0[]; -extern s32 func_80149F2C(s32 a0, s32 a1); -extern s32 func_80149E94(s32 arg0); -extern void func_80149FA8(void); -extern s32 D_8018D124[]; -extern u8 D_80078E78[]; -extern s32 func_80149FB0(s32 a0); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern void func_8014A1B0(s32 a0, s32 a1); -extern s32 func_8014A048(s32 param_1); -extern u16 func_80156370(u16 a0); -extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); -extern void func_8015D4B4(); -extern void func_8014A218(void); -extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); -extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); -extern s32 func_8014A238(s32 arg0); -extern s32 func_8014A2E4(s32 a0); -extern void func_8014A380(s32 a0, s32 a1); -extern s16 D_801152B0; -extern s16 D_801152B4; -extern s32 func_8014A3E0(struct S_8014A3E0 *a0); -extern s32 func_8014A454(s32 a0); -extern s32 func_8014A4B4(void *a0); -extern void func_8015EDD4(); -extern void func_8014A4FC(void); -extern s32 func_8014A674(s32 *a0); -extern s32 func_8014A69C(s32 *a0); -extern s32 func_8014A6C4(s32 a0); -extern void func_8015E184(); -extern void func_8014A830(void); -extern s32 func_80029AF4(void); -extern s32 func_8014A850(s32 param_1); -extern void func_8014AA04(s32 a0); -extern void func_801599A4(void *a0); -extern void func_80159B3C(void *a0); -extern s32 func_80165A20(s32 a0); -extern void func_8014AB7C(); -extern void func_8014AC10(); -extern void func_8014AA28(void); -extern void func_8014AB5C(void); -extern void func_80162CCC(void); -extern void func_8014AB7C(s32 arg0); -extern void func_8014ABF0(void); -extern void func_80016714(void *a0, s32 a1); -extern void func_8014AC10(s32 arg0); -extern void func_8014ACC0(s32 a0, s32 a1); -extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); -extern void func_8014ACE8(void *a0, s32 a1, s32 a2); -extern void func_80146AFC(void *a0); -extern void func_8014ADA8(s32 a0, s32 a1); -extern void func_8014AD7C(s32 a0); -extern s32 D_80078E8C; -extern void func_8014B034(s32 arg0); -extern void func_8014B00C(s32 arg0); -extern void func_8014B084(void); -extern s16 D_80078E90; -extern void func_8014B034(s32 a0); -extern u16 D_80078EAC; -extern u8 D_80078EBA; -extern void func_800D10EC(void); -extern void func_8002AC98(void); -extern s32 func_8014B154(s32 *a0); -extern void func_8014B12C(void); -extern void func_8014B2F8(void); -extern void func_8014B4C4(void); -extern void func_8014B160(s32 a0); -extern s32 func_8016F1C4(void); -extern s16 D_80078E96; -extern s16 D_80078EB8; -extern u16 D_80078EA6; -extern void func_8014B2A8(void); -extern void func_8014B310(void); -extern void func_8014B2D0(void); -extern s32 D_80078E94; -extern s32 D_80078ECC; -extern void func_8014B33C(void); -extern u8 D_80062BF4[]; -extern void func_8014BC80(s32 a0, s32 a1); -extern void func_80019064(void *a0); -extern s32 D_80078E98; -extern void func_80166244(); -extern void func_8014B4D4(void *a0); -extern s16 D_80078E9A; -extern u8 D_80126D1C; -extern s32 D_80126D74; -extern void func_8014B598(s32 a0, s32 a1); -extern void func_8014B5B0(s32 *a0); -extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); -extern void func_8014B5D8(s32 s1); -extern s32 D_80078E9C; -extern s32 D_80078ED0; -extern void func_8014B6F0(s32 a0, s32 a1); -extern void func_8014B768(s32 a0, s32 a1); -extern void func_8014B944(s32 a0, s32 a1, s32 a2); -extern s32 D_80078EA4; -extern u16 D_80078EB2; -extern s16 D_80078EB4; -extern void func_8014BB0C(void); -extern void func_8014BB24(s32 a0, s32 a1, s32 a2); -extern void func_8014BC0C(s32 a0, s32 a1); -extern void func_8014BC44(s32 a0, s32 a1); -extern u8 D_800B9A17; -extern void func_8014BCC0(s32 a0, s32 a1); -extern u16 D_80078EB6; -extern s32 func_8014BCEC(s32 a0, s32 a1); -extern void func_8014BD24(s32 a0, s32 a1); -extern void func_8014BD60(s32 param_1, s32 param_2); -extern void func_8014BD98(s32 a0, u16 a1); -extern void func_8014BDC8(void); -extern void func_8014BDE0(void); -extern s32 func_8017267C(s32 *a0); -extern s32 func_80013294(void *a0, void *a1); -extern void func_80029ED4(s32 a0); -extern void func_8014BDE8(s32 a0); -extern void func_8014BE78(void); -extern void func_8014BE9C(void); -extern void func_80029124(s32 a0, s32 a1); -extern void func_8014BEC0(void); -extern void func_8014BF18(s32 a0); -extern void func_8014BF48(void); -extern u8 func_8014BF6C(void); -extern void func_8014BF8C(u8 arg0); -extern void func_8014BFB0(void); -extern u8 func_8014BFD4(void); -extern void func_8014BFF4(s32 a0, s32 a1); -extern void func_8014C010(s32 a0, s32 a1); -extern s32 func_8014C050(s32 a0, s32 a1); -extern s32 func_8014C088(s32 a0, s32 a1); -extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); -extern s32 func_8014C118(void * a0, s32 a1, s32 a2); -extern s32 func_8014C168(s32 * param_1, s32 param_2); -extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); -extern u8 D_8018D1AC[]; -extern void func_8014C1A0(s32 arg0, s32 arg1); -extern s32 func_80013328(s32 a0, s32 a1); -extern s32 func_8014C59C(void *a0, void *a1); -extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); -extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); -extern s32 ratan2(s32 dx, s32 dy); -extern u8 D_8018D1B4; -extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); -extern s16 func_8014C5D0(s32 a0, s32 a1); -extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); -extern u8 D_80126D17; -extern void func_8014C6AC(void); -extern void func_8014C6C0(void); -extern u8 D_80126D1E; -extern void func_8014C6D0(void); -extern void func_8014C6E0(void); -extern s32 func_8014C860(s32 a0, s32 a1); -extern void func_8014C8C8(s32 a0, s32 *a1); -extern void func_8014C88C(s32 a0); -extern void func_8014C8C8(s32 dst, s32 * src); -extern void func_8014C8F0(s32 arg0); -extern u8 D_801151F0[]; -extern s32 func_8014C918(s32 a0, s32 a1); -extern s32 D_80126B50; -extern void func_8014C968(void); -extern void func_8014C978(void); -extern s32 func_8014C98C(void); -extern void func_80139914(s32 a0); -extern s32 func_8014CA00(s32 a0); -extern u16 func_8014CA70(s32 a0, s32 a1); -extern s32 func_8014CA14(s32 a0, s32 a1); -extern u16 func_8014CAE4(s32 *a0, s32 a1); -extern s32 func_8014CA88(s32 *a0, s32 a1); -extern s32 func_8014CAFC(void); -extern s32 func_8014CB0C(void); -extern s32 func_8014CB1C(void); -extern u8 D_80126D1F; -extern s32 func_8014CB2C(void); -extern s32 func_8014CB58(void); -extern u8 D_80126D1D; -extern void func_8014CB68(void); -extern s32 func_8014CB7C(void); -extern s32 func_8014CB8C(void); -extern struct Packed8 D_80126C98; -extern short D_80126C9E; -extern void func_8014CB9C(struct Packed8 *a0); -extern s32 D_80126CDC; -extern void func_8014CBD8(void); -extern s16 D_80126CC4; -extern void func_8014CBE8(void); -extern void func_8014CBF8(void *a0); -extern void func_8014D3E0(s32 a0); -extern void func_8014D04C(void); -extern void func_8014CCB4(void); -extern void func_8014CC28(s32 a0); -extern void func_8014CD0C(u8 *a0); -extern s32 func_8014CF04(s32 a0, s32 a1, void *a2); -extern void func_8014CD80(s32 a0, void *a1, void *a2); -extern void func_8014D0A4(s32 a0); -extern s32 func_8014D2A0(s32 a0, void *a1, void *a2); -extern s32 func_8014D12C(s32 a0, void *a1, void *a2); -extern void func_8014D438(s32 a0); -extern void func_8014D3E0(s32 _arg0); -extern void func_8014D610(s32 a0, void *a1, void *a2); -extern s32 func_8014D4C0(s32 a0, void *a1, void *a2); -extern void func_8014D790(s32 a0); -extern void func_8014D738(void); -extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); -extern s32 func_8014D820(s32 a0, u16 *a1, u16 *a2); -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); -extern void func_8014DF94(s32 arg0); -extern void func_8014DF3C(void); -extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ -extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ -extern s16 D_801152AC; -extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); -extern void func_8014E48C(s32 a0); -extern void func_8014E434(void); -extern void func_8014E5B4(s32 a0, void *a1, void *a2); -extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); -extern void func_8014E6F8(struct SubE6F8 *a0); -extern void func_8014E6A0(void); -extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); -extern void func_8014E934(s32 _arg0); -extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); -extern s32 func_8014E98C(void *a0); -extern u16 D_800B99DA; -extern s32 D_801150D8; -extern s16 D_801152AA; -extern u8 D_80126720[]; -extern s16 D_80126724; -extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); -extern s32 func_8014ED80(struct SubED80 *a0); -extern int D_801E9698; -extern void func_8014ED28(s32 _arg0); -extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F24C(struct SubF24C *a0); -extern void func_8014F1F4(void); -extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F4C0(); -extern s32 func_8014F468(void); -extern int func_8014F74C(); -extern int func_8014F6F4(void); -extern u8 D_800D3918[]; -extern u8 D_801152A8[]; -extern s32 D_801152BC; -extern int func_8014F74C(s32 arg0); -extern s32 func_8014FA70(s32 a0); -extern s32 D_801E969C; -extern void func_8014FA04(s32 a0); -extern s32 func_8014FBC0(); -extern s32 func_8014FC18(u8 *self); -extern int func_8014FD54(int param_1); -extern void func_8014FCFC(void); -extern void func_80150170(void *a0); -extern s32 func_8014FE60(void *a0); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_8014FE60(void *e); -extern s32 func_80134510(s32 arg); -extern s32 func_80150150(s32 a, s32 b); -extern s32 func_80150460(s32 a, s32 b); -extern void func_801504D8(u16 *a0); -extern s32 func_80150480(s32 _arg0); -extern s32 func_80150528(void *a0, void *a1, void *a2); -extern s32 func_80150528(void *arg0, void *arg1, void *arg2); -extern s32 func_801506A4(s32 a0, s32 a1); -extern s32 func_801505FC(s32 a0); -extern s32 func_801506A4(s32 arg0, s32 arg1); -extern void func_80150820(s32 a0, s32 a1); -extern void func_8015086C(int param_1); -extern s32 func_801508B4(s32 a0); -extern s32 func_8015094C(s32 a0); -extern short func_801508F8(s32 a0); -extern s32 D_8018D1E4; -extern s32 D_80126990; -extern s32 D_80126994; -extern u8 D_80126948[]; -extern s32 func_80021174(s32 a0, s32 a1); -extern s32 func_8015094C(s32 param_1); -extern void func_80150B9C(void); -extern s32 func_80151184(s32 a0, s32 a1, s32 a2); -extern s32 func_80150BA4(s32 a0); -extern s32 func_801619D0(void *a0); -extern void func_80150BC8(s32 *a0); -extern s32 func_80150480(s32 a0); -extern u16 D_800AE6DC; -extern void func_80150C48(s32 a0); -extern int func_80151184(int arg, int a1, int a2); -extern int func_80150CA0(int arg); -extern void func_80150EC4(s32 a, s32 b); -extern void func_80150CC4(s32 a); -extern void func_80150CE4(s32 a); -extern void func_80150D04(s32 a); -extern void func_80150D24(s32 a); -extern void func_80150D44(s32 a); -extern void func_80150D64(s32 a); -extern void func_80150D84(s32 a); -extern void func_80150DA4(s32 a); -extern void func_80150DC4(s32 a); -extern void func_80150DE4(s32 a); -extern void func_80150E04(s32 a); -extern void func_80150E24(s32 a); -extern void func_80150E44(s32 a); -extern void func_80150EC4(s32 a0, s32 a1); -extern void func_80150E64(s32 a0); -extern void func_80150E84(s32 a0); -extern void func_80150EA4(s32 a0); -extern u8 D_800AE6C0; -extern s16 D_800AE6C8; -extern s16 D_800AE6CA; -extern s16 D_800AE6CC; -extern s32 D_800AE6C4; -extern s16 D_800AE6CE; -extern u8 D_800AE6BE; -extern u8 D_801201F8[]; -extern void func_80150F78(void); -extern void func_80150F80(s32 a0); -extern int func_80150FB4(int arg); -extern void func_80150FD8(s32 a0); -extern int func_80151014(int arg); -extern void func_80151038(s32 a0); -extern int func_80151070(int arg); -extern int func_80151094(int arg); -extern void func_801510B8(void); -extern void func_801510C0(void); -extern int func_801510C8(int arg); -extern int func_801510EC(int arg); -extern s32 func_8012DB84(void); -extern s32 func_80151110(void); -extern void func_80151130(void); -extern int func_80151138(int arg); -extern void func_8015115C(s32 *a0, s16 a1); -extern s32 func_80151164(s32 a0, s32 a1); -extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); -extern void func_801511A8(u8 *a0); -extern void func_801511C4(u8 *a0); -extern int func_80151204(int arg, int a1); -extern int func_801511E0(int arg); -extern int func_80151204(int a0, int a1); -extern void func_80151238(void *a0); -extern void func_8015126C(u16 *p); -extern void func_80151780(s32 a0); -extern void func_801516F0(s32 *a0); -extern void func_8015173C(s32 *a0); -extern s16 D_8011DB1A; -extern s32 D_80127518; -extern s32 D_801151FC; -extern s32 func_801725CC(u8 *a0); -extern s32 func_80029D3C(void); -extern void func_80151878(void); -extern void func_80153B58(s32 *a0); -extern s32 func_80151880(s32 a0); -extern s32 func_801518D8(s32 a0); -extern s32 func_80151944(void); -extern s32 func_80151924(void); -extern void func_8014E934(s32 a0); -extern s32 func_8014F3E8(s32 a0); -extern void func_801519C8(s32 a0); -extern void func_80151980(s32 a0); -extern M2C_UNK D_800D5880; -extern s32 D_800D58AC; -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801519C8(s32 arg0); -extern void func_80151C54(s32 a0); -extern void func_801542DC(s32 *a0, s32 a1); -extern void func_8015BDD0(s32 *a0); -extern void func_80165718(s32 a0); -extern u8 D_800D46E4[]; -extern void func_80151AE4(s32 arg0); -extern void (*D_8018D28C[])(void); -extern void func_80151D24(void *a0); -extern void func_80151DB0(s32 a0); -extern void func_80151D60(void *a0); -extern s32 func_80172630(u8 *a0); -extern s32 D_80062C14; -extern void func_80151DB0(s32 param_1); -extern void func_80151E78(s32 *a0); -extern void func_80151ECC(struct S80151ECC *a0); -extern void func_80151FB4(s32 a0); -extern void func_80151F38(s32 *a0); -extern void func_801553C0(s32 a0); -extern void func_80153C18(); -extern void (*D_8018D2B0[])(void); -extern void func_80152058(void *a0); -extern void func_801520DC(s32 a0); -extern void func_80152094(s32 a0); -extern void func_80147324(s32 a0); -extern u8 D_80062C04[]; -extern M2C_UNK D_8018D2A0; -extern void func_801520DC(s32 arg0); -extern void func_801470B4(s32 a0); -extern void func_8015369C(s32 a0); -extern void func_80152194(s32 *a0); -extern s32 func_801536DC(s32 a0); -extern void func_8015220C(s32 a0); -extern s32 func_80153800(s32 a0); -extern void func_801522CC(s32 a0); -extern void func_80152254(s32 *a0); -extern void (*D_8018D2C4[])(void); -extern void func_80152370(void *a0); -extern void func_801523F4(s32 a0); -extern void func_801523AC(s32 a0); -extern void func_8001382C(s32 a0, void *a1, void *a2); -extern u8 D_8018D2D0[]; -extern void func_801523F4(s32 arg0); -extern void func_801525F4(int); -extern s32 func_801535F4(void *arg0); -extern void func_8015BF48(s32 *a0); -extern void func_80152500(int param_1); -extern void func_801525F4(s32 a0); -extern void (*D_8018D2E0[])(void); -extern void func_80152698(void *a0); -extern void func_80152714(s32 a0); -extern void func_801526D4(s32 a0); -extern void func_80152790(s32 a0); -extern void (*D_8018D2F8[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018D2E8; -extern void func_801528B0(s32 arg0); -extern void func_8015294C(s32 a0); -extern void func_80152A08(s32 a0); -extern void func_80152AC8(s32 a0); -extern void func_80152A50(s32 *a0); -extern void (*D_8018D30C[])(void); -extern void func_80152B6C(void *a0); -extern void func_80152BF0(s32 a0); -extern void func_80152BA8(s32 a0); -extern void func_80152C80(s32 *a0); -extern void func_80152C40(s32 *a0); -extern void (*D_8018D328[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018D318; -extern void func_80152DA8(s32 arg0); -extern void func_80152E4C(s32 a0); -extern void func_80152EFC(s32 a0); -extern void func_80152FBC(s32 a0); -extern void func_80152F44(s32 *a0); -extern void (*D_8018D33C[])(void); -extern void func_80153060(void *a0); -extern void func_801530E4(s32 a0); -extern void func_8015309C(s32 a0); -extern void func_80155440(s32 *a0); -extern void func_801530E4(s32 arg0); -extern void func_80153150(struct S80153150 *a0); -extern void func_801531BC(s32 a0); -extern void func_8015327C(s32 a0); -extern void func_80153204(s32 *a0); -extern void (*D_8018D350[])(void); -extern void func_80153320(void *a0); -extern void func_801533A4(s32 a0); -extern void func_8015335C(s32 a0); -extern void func_80153410(s32 *a0); -extern void func_80153490(s32 a0); -extern void func_80153550(s32 a0); -extern void func_801534D8(s32 *a0); -extern void (*D_8011DB28)(s32 a0); -extern s32 func_801536DC(s32 param_1); -extern void func_800139C8(s32 a0, void *a1, void *a2); -extern s32 func_80153978(s32 a0, u16 *src); -extern s32 func_80133784(s32 a0, void *src, s32 dst); -extern s32 func_801539F8(s32 a0, void *a1); -extern s32 func_801539F8(s32 a0, void * a1); -extern s32 func_8016DA04(s32 a0); -extern s32 func_80153BD8(s32 a0); -extern s32 func_80153BF0(s32 a0); -extern void func_80153C18(void); -extern u16 D_8011F748; -extern void func_80153C30(void); -extern void func_80153C74(s16 a0, s16 a1); -extern s16 D_8011DB18; -extern void func_80153C44(int a0, int a1, s16 a2); -extern s16 D_8011DB0C; -extern s32 D_80115210; -extern void func_80153C8C(void); -extern void func_80153C9C(void); -extern s32 func_80153CBC(void); -extern s32 D_8018D364; -extern void (*D_8018D38C[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018D36C; -extern void func_80153D7C(s32 param_1); -extern void func_8015410C(void); -extern void func_80153E00(s32 param_1); -extern void func_80151664(void); -extern void func_80154134(u8 *a0); -extern void func_80154190(u8 *a0, s32 a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154218(u8 *a0, s32 a1, s32 a2); -extern void func_801541D8(u8 *a0, s32 a1, s32 a2); -extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); -extern void func_801542A4(); -extern void func_801542A4(s32 *a0, s32 a1); -extern void func_8015430C(); -extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); -extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); -extern s32 func_80154358(void * arg0); -extern void func_80154AB4(s32 a0, s32 a1); -extern void func_80154B20(s32 a0, s32 a1, s32 a2); -extern void func_80154AE0(s32 a0, s32 a1, s32 a2); -extern void func_80154B7C(u8 *a0, s32 a1); -extern void func_80154B4C(u8 *a0, s32 a1); -extern void func_80154BC8(void *a0, s32 a1, s32 a2); -extern void func_80154B98(void *a0, s32 a1, s32 a2); -extern u8 D_800D8D10[]; -extern s16 D_80078E9E; -extern void func_801550FC(s32 a0); -extern void func_80154ED8(s32 a0, s32 a1); -extern void func_80154F9C(s32 a0); -extern void func_800183E0(s32 a0); -extern void func_801550FC(s32 arg0); -extern void func_8001D150(s32, s32); -extern void func_8001D130(int, int); -extern void func_80155150(int param_1); -extern s32 D_800DE2A4[]; -extern void func_801552F4(s32 a0); -extern void func_80155344(s32 a0); -extern s32 func_80155394(s32 *a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80029178(s32); -extern int (*D_8018D3D8[])(void); -extern s32 func_80155458(s32 param_1); -extern s32 func_801659DC(u8 *a0); -extern s32 func_801554B8(void *arg0); -extern void func_801555F4(void *a0); -extern void func_80155518(s32 *a0); -extern void func_80155580(void *a0); -extern void (*D_8018D3DC[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern s32 func_80155800(s32 arg0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern S801563EC *func_801563EC(u16 idx); -extern s32 func_80029B4C(s32 a0, s32 a1); -extern s32 func_80029BC8(s32 a0, s32 a1); -extern s32 func_80029C44(s32 a0, s32 a1); -extern s32 func_8015640C(s32 a0, s32 a1); -extern s32 rand(void); -extern u32 func_8015616C(s32 param_1, u16 param_2); -extern u16 func_80156370(u16 param_1); -extern S801563EC * func_801563EC(u16 idx); -extern s32 func_801564B0(s32 a0); -extern s32 func_8002A1B4(void); -extern s32 func_8002A400(void); -extern s32 func_8002A670(void); -extern s32 func_8002A8E0(void); -extern s32 D_801151E0[]; -extern s32 func_801565C0(void); -extern void func_80156A14(s32 *a0); -extern void func_80156648(s32 *a0); -extern u8 D_8011DAD8[]; -extern s32 func_8014C568(s16 *a0, s16 *a1); -extern void func_801567BC(s32 a0); -extern B8 D_80128120[]; -extern B8 D_80128138[]; -extern S8 D_80126AF0[]; -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018D840[]; -extern void func_80156A1C(s32 param_1, s32 param_2); -extern s32 D_801150E0[]; -extern void func_80156A88(s32 a0, s32 a1); -extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); -extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); -extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); -extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern s32 func_80135004(s32 a0, void *a1, s32 a2); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801575E4(void *a0); -extern void func_801574DC(s32 *a0); -extern void func_80157544(void *a0); -extern void (*D_8018D850[])(void); -extern void func_8014CC28(s32 a0); /* defined */ -extern s32 func_8014F3E8(s32 a0); /* declared */ -extern void func_8015BDD0(s32 *a0); /* defined */ -extern void func_801575E4(void *a0); /* defined */ -extern void func_80157580(s32 arg0); -extern u8 D_800D4F14[]; -extern void func_801576A8(void *arg0); -extern s32 func_8015773C(u8 *a0); -extern s32 func_8015771C(u8 *a0); -extern s32 func_8015773C(u8 * arg0); -extern int D_801E96D0; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018D878[])(void); -extern void func_80157808(void *param_1); -extern void func_80157880(s32 a0); -extern s32 func_801725A4(u8 *a0); -extern u8 D_800D5128; -extern u8 D_8018D858; -extern void func_801578C0(s32 param_1); -extern void func_80147A84(int); -extern void func_80148038(int, int); -extern void func_80147460(int); -extern void func_80146D90(int); -extern void func_80161450(void *a0); -extern void func_80157A8C(int); -extern void func_80154A74(int, int); -extern unsigned char D_800D5178; -extern unsigned char D_8018D868; -extern void func_8015795C(int param_1); -extern void func_80161D20(s32 a0, s32 a1); -extern void func_80157A8C(s32 a0); -extern void func_8016706C(s32 a0); -extern u8 D_800D51AC[]; -extern void func_80157AC8(s32 param_1); -extern void func_80157B74(int param_1); -extern void func_8016158C(void *a0); -extern void func_8015BE04(s32 *a0); -extern void func_80157BC8(s32 a0); -extern void func_80157CCC(s32 a0); -extern void func_80157DC4(void *a0); -extern void func_80157FC4(void *a0); -extern void func_80157D74(u16 *a0); -extern void (*D_8018D8B8[])(void); -extern void func_80157E38(void *); -extern void func_80157E00(void *a0); -extern void func_80157E38(void * a0); -extern s32 func_80157F64(s32 *a0); -extern s32 func_80156600(void *a0); -extern void func_80157EA4(void *a0); -extern void (*D_8018D8C0[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018D88C; -extern void func_80158038(void * param); -extern u8 D_800D524C[]; -extern void func_80161418(void *a0); -extern void func_801580B4(s32 a0); -extern void func_801581AC(s32 a0); -extern void (*D_8018D8CC[])(void); -extern void func_8015824C(void *a0); -extern void func_801582C0(void *); -extern void func_80158288(void *a0); -extern u8 D_800D52A8[]; -extern void func_801585A4(s32 *a0); -extern void func_801582C0(void *a0); -extern s32 func_801585AC(s32 *a0); -extern u8 D_800D52E8[]; -extern void func_80158344(s32 *a0); -extern s32 func_801615C4(void *a0, s32 a1); -extern u8 D_8018D89C; -extern u8 D_800D533C; -extern void func_80158434(s32 param_1); -extern void func_80158548(s32 param_1); -extern void func_801585EC(u8 *a0); -extern void func_80158794(void); -extern s32 D_801E96D8; -extern s32 D_801E96E4; -extern s32 D_801E96E8; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018D908[])(s32 *); -extern void func_80158AE4(void *a0); -extern void func_80158AB4(void *a0); -extern void func_8016F264(void); -extern void func_80165840(void); -extern void func_801658DC(void); -extern void func_80165A78(s32); -extern void func_80158AE4(void * a0); -extern M2C_UNK D_800D58D8; -extern void func_80158BB0(void *arg0); -extern s32 func_80159404(s32 a0, s32 a1); -extern void func_80158C40(s32 *a0); -extern void func_80158CD8(s32 *a0); -extern s32 func_80159434(s32 a0, s32 a1); -extern void func_80158D60(s32 a0); -extern M2C_UNK D_800D5904; -extern void func_80158E24(s32 *a0); -extern s32 D_8018D8DC[]; -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80158F00(int param_1); -extern u8 D_80110C3C[]; -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80158FA4(s32 param_1); -extern s32 func_801399F0(s32 a0); -extern u8 D_80110C94[]; -extern u8 D_80110CD4[]; -extern void func_80159070(void *a0); -extern s32 func_80029A94(s32); -extern void func_80175454(void); -extern void func_800298BC(void *); -extern void func_8002992C(s32); -extern void func_800CF804(void); -extern void func_800CF818(void); -extern u8 D_80110D0C[]; -extern void func_80159120(s32 a0); -extern void func_801592CC(s32 *a0); -extern u8 D_800AE6BD; -extern s32 D_801E96E0; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018DB58[])(void); -extern void func_80159698(void *a0); -extern s32 func_801596D4(void *a0); -extern void func_80174B6C(void); -extern void func_80129248(s16 a0); -extern void func_8013C938(void); -extern void func_8013CB20(void); -extern void func_8013C98C(void); -extern void func_8002850C(s32, s32, s32); -extern void func_80028620(s32, void *); -extern s16 D_800B9AAC[]; -extern s16 D_800B9B00; -extern u16 D_801270C0; -extern u32 D_800AFAE8[]; -extern char D_8018D978[]; -extern s32 func_801596F0(s32 param_1); -extern s32 func_80159874(void); -extern void func_800167B8(s32 a0); -extern s32 func_8015987C(s32 a0); -extern int func_800167F0(int arg); -extern int func_801598BC(void); -extern void func_80159968(void *a0); -extern void func_801598E0(u8 *a0); -extern void (*D_8018DBFC[])(void); -extern void func_80159A20(void *a0); -extern void func_801599E0(void *a0); -extern void func_80159A18(void); -extern void func_80159BE4(s32); -extern void func_80159B08(s32 *a0); -extern void func_80159B70(void *a0); -extern void func_80159B3C(void * a0); -extern void (*D_8018DD50[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018DB6C; -extern void func_80159BE4(s32 arg0); -extern void func_8015A1C8(s32 a0); -extern void func_8015A2D8(s32); -extern void func_8015A1FC(s32 *a0); -extern void func_8015A264(void *a0); -extern void func_8015A230(s32 *a0); -extern void (*D_8018DD58[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018DB7C; -extern s32 func_80172608(u8 *a0); -extern void func_8015A2D8(s32 param_1); -extern u8 D_800D48DC; -extern s32 func_8015AB7C(s32 a0); -extern s32 D_8011F9C4; -extern s32 func_8015ABD4(s32 a0, s32 a1, s32 a2); -extern s32 func_80161CD0(s32 a0, s32 a1); -extern M2C_UNK D_8018DB9C; -extern void func_8015AC48(s32 arg0); -extern void func_8015AC90(s32 a0); -extern void func_8015ADB0(s32 a0); -extern void func_8015ACC4(s32 *arg0); -extern void func_8015AD3C(void *a0); -extern void func_8015AD08(void *arg0); -extern void (*D_8018DD60[])(void); -extern void func_8015ADB0(s32); -extern void func_8015AD78(s32 a0); -extern void func_8015ADB0(s32 arg0); -extern s32 D_800D4A9C; -extern int func_8015B6F4(int param_1); -extern u8 D_800D4F8C[]; -extern s32 func_8015B7B4(s32 a0); -extern u8 D_800D4BE0[]; -extern s32 func_8014A51C(void); -extern s32 func_8015B858(u8 *a0); -extern s32 D_800D4B48; -extern void func_8015B8F8(s32 *a0); -extern void func_8015BD8C(s32 *a0); -extern s32 func_8015BE94(); -extern void func_8015BE38(struct Obj *a0); -extern s32 func_8015BE74(void); -extern void func_80161124(void *a0); -extern s32 func_8015BE94(s32 *a0); -extern s32 func_8015AE2C(); -extern s32 func_8015BEC4(void); -extern s32 func_8015B950(s32 arg0); -extern s32 func_8015BEE4(void); -extern void func_8015BF04(s32 *a0); -extern void func_8015C0C4(s32 a0); -extern void func_8015BFF4(void *a0); -extern void func_8015BF7C(s32 *a0); -extern void func_8015C030(s32 *a0, s32 a1); -extern void func_8015BFB0(s32 *a0, s32 a1); -extern void (*D_8018DD88[])(void); -extern void func_8015C0C4(s32); -extern void func_8015C08C(s32 a0); -extern s32 func_8015C128(s32 param_1); -extern void func_8015C6A4(void); -extern void func_8015C788(s32 a0); -extern void func_8015C6AC(s32 *a0); -extern void func_8015C714(void *a0); -extern void func_8015C6E0(s32 *a0); -extern void (*D_8018DD94[])(void); -extern void func_8015C788(s32); -extern void func_8015C750(s32 a0); -extern void func_8015CB94(s32 a0); -extern void func_8015CBCC(void); -extern void func_8015CBD4(void); -extern void func_8015CBDC(void); -extern void func_8015CBE4(void); -extern void func_8015CBEC(void); -extern void func_8015CBF4(void); -extern void func_8015CBFC(void); -extern void func_8015CC04(void); -extern void func_8015CC0C(s32 *param_1); -extern void func_8015CC74(s32 *a0); -extern void func_8015CC40(s32 *a0); -extern s32 func_8015CCD0(); -extern s32 func_8015CCB0(void); -extern s32 func_801725E0(u8 *a0); -extern s32 func_8015CCD0(s32 param_1); -extern s32 func_8015CD20(s32 arg0); -extern void func_8015CF24(s32 a0); -extern void func_8015D01C(); -extern void func_8015CF58(s32 *param_1); -extern void func_8015CFC0(s32 *a0); -extern void func_8015CF8C(s32 *a0); -extern void func_8015CFFC(void); -extern void func_8015D01C(int param_1); -extern void (*D_8018DC08[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018DE38; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018CF1C[]; -extern void func_8015D414(int param_1); -extern void func_8015D57C(s32); -extern void func_8015D480(s32 *a0); -extern s32 func_8015D4E8(s16 *a0); -extern void func_8015D4B4(s16 *a0); -extern void func_8015D524(s32 arg0); -extern void func_8015D544(s32 a0); -extern void func_801746DC(void); -extern void func_8015D57C(s32 arg0); -extern s32 func_80161B18(void *a0); -extern s32 func_80161B84(void *a0); -extern void func_80154150(int, int); -extern void func_80149374(int, int); -extern unsigned char D_8018DE4C[]; -extern void func_8015D5E8(int param_1); -extern int func_8015E0D4(int); -extern void func_8015DA5C(s32 a0); -extern void func_8015DB6C(s32 a0); -extern void func_8015DA90(s32 *a0); -extern void func_8015DAF8(s32 *a0); -extern void func_8015DB6C(s32); -extern void func_8015DB34(s32 a0); -extern void func_8015DCB8(s32 a0); -extern void func_8014BD60(s32 a0, s32 a1); -extern int func_8015DD74(int); -extern void func_8015DBD4(void *arg0); -extern int func_8015DC84(int a0); -extern s8 D_8018DE88[]; -extern void func_8015DCB8(s32 param_1); -extern int func_8015DD74(int arg0); -extern void func_8015DECC(s32 a0); -extern void func_8015DDF0(s32 *a0); -extern void func_8015DE58(s32 *a0); -extern void func_8015DECC(s32); -extern void func_8015DE94(s32 a0); -extern void func_8015E018(s32 a0); -extern void func_8015DF34(void *arg0); -extern int func_8015DFE4(int a0); -extern void func_8015E018(s32 param_1); -extern int func_8015E0D4(int a0); -extern void func_8015E22C(s32 a0); -extern void func_8015E150(s32 *a0); -extern s32 func_8015E1B8(s32 a0); -extern void func_8015E184(s32 *arg0); -extern void func_8015E22C(s32); -extern void func_8015E1F4(s32 a0); -extern u8 D_800D4FF4[]; -extern u8 D_800D5098[]; -extern u8 D_800D5060[]; -extern s32 func_8014A850(s32 a0); -extern void func_8015E40C(s32 a0); -extern void func_8015E588(void); -extern void func_8015E4B0(s32 a0); -extern void func_8015E288(s32 a0); -extern u16 D_8018DED0; -extern u16 D_8018DED2; -extern u16 D_8018DED4; -extern s32 D_8018DED8; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -extern void func_8013C9C4(void *a0); -extern s32 D_8018DEE0; -extern void func_8015E5B0(u8 *self); -extern void func_8015E714(s32 *a0); -extern void func_8015E95C(s32); -extern void func_8015E84C(s32 *a0); -extern void func_8015E8E8(s32 *a0); -extern void func_8015E9B8(s32 *a0); -extern void func_8015E8B4(s32 *a0); -extern void func_8015E924(s32 a0); -extern void func_8015E95C(s32 a0); -extern s16 D_801152A0; -extern void func_80160818(s32 *a0); -extern void func_8015ED6C(s32 *a0); -extern void func_8015EE7C(s32); -extern void func_8015EDA0(s32 *a0); -extern s32 func_8015EE08(s32 a0); -extern void func_8015EDD4(s32 *arg0); -extern void func_8015EE44(s32 a0); -extern int D_800D4C48; -extern int D_8018DBEC; -extern void func_8015EE7C(s32 param_1); -extern void func_8015EEE0(void *arg0); -extern void func_8015EF9C(void); -extern void func_8015F080(s32); -extern void func_8015EFA4(s32 *a0); -extern void func_8015F00C(s32 *a0); -extern void func_8015EFD8(s32 *a0); -extern void func_8015F048(s32 a0); -extern void func_8015F080(s32 a0); -extern s32 D_80062BE8; -extern void func_801466F0(s32, s32, s32, s32, s32, s32, s32, s32); -extern s32 func_80161208(void); -extern void func_8015F118(void *a0); -extern void func_8015F260(s32 *a0); -extern void func_8015F380(); -extern void func_8015F2BC(s32 *a0); -extern void func_8015F324(s32 *a0); -extern void func_8015F2F0(s32 *a0); -extern void func_8015F360(void); -extern s32 func_801725B8(u8 *a0); -extern void func_8015F380(void* arg0); -extern void func_8015F738(s32 *a0); -extern void func_8015F848(s32 *a0); -extern void func_8015F76C(s32 *a0); -extern s32 func_8015F7D4(s32 a0); -extern void func_8015F7A0(s32 *arg0); -extern void func_8015F810(s32 *a0); -extern void func_80147078(s32 *, s16); -extern void func_80159B70(void *); -extern void func_8015F89C(void *arg0); -extern void func_8015F948(s32 *param_1); -extern void func_8015F9A4(void *arg0); -extern void func_8015FA24(s32 arg0); -extern void func_8015FBE0(s32 *a0); -extern void func_8015FA44(s32 *a0); -extern void func_8015FAAC(s32 *a0); -extern void func_8015FA78(s32 *a0); -extern s32 func_801612B8(void *a0, s32 a1); -extern void func_8016007C(s32 a0); -extern void func_8015FAE8(void *arg0); -extern void func_8015FCC8(void *param_1); -extern unsigned int D_8018DF64[]; -extern void func_8015FD74(int param_1); -extern s32 func_80028DE0(void); -extern u8 func_80165700(s32 a0, s32 a1); -extern void func_8015FDCC(s32 a0); -extern u8 D_80078EC2; -extern u8 func_801656E8(s32 a0, s32 a1); -extern void func_80165670(s32 a0, s32 a1); -extern void func_8016004C(s32 a0); -extern void func_8015FF20(void *param_1); -extern void func_801601AC(s32 *a0); -extern void func_801600D0(s32 *a0); -extern void func_80160138(s32 *a0); -extern void func_80160104(s32 *a0); -extern void func_80160174(s32 *a0); -extern void func_801601E4(s32 *a0); -extern void func_80160244(s32 *a0); -extern void func_8016032C(void); -extern void func_80160410(s32 *a0); -extern void func_80160334(s32 *a0); -extern void func_8016039C(s32 *a0); -extern void func_80160368(s32 *a0); -extern void func_801603D8(s32 *a0); -extern u8 D_80062BD0; -extern void func_80160410(s32 * a0); -extern void func_801607B8(s32 *a0); -extern void func_801608C0(s32 *a0); -extern void func_801607E4(s32 *a0); -extern void func_8016084C(s32 *a0); -extern void func_80160888(s32 *a0); -extern void func_80160A28(s32 a0); -extern void func_80160A74(s32 *a0); -extern void func_80160BB4(s32 *a0); -extern void func_80160ACC(s32 *a0); -extern s32 func_80160B34(s32 a0); -extern void func_80160B00(s32 *arg0); -extern void func_80160B70(s32 a0); -extern void func_80160C28(void *arg0); -extern void func_80160CB4(s32 *a0); -extern void func_80160D10(void *arg0); -extern void func_80160DEC(u8 *a0); -extern void func_80160F00(); -extern void func_80160E3C(s32 *a0); -extern void func_80160EA4(); -extern void func_80160E70(s32 *a0); -extern void (*D_8018E014[])(void); -extern void func_80160EA4(void *a0); -extern void func_80160EE0(void); -extern void func_80160F00(void* arg0); -extern void func_800D0F4C(s32 a0); -extern u8 D_80110EC0; -extern void func_80160F70(s32 a0); -extern void func_80160FE0(s32 *a0); -extern void func_80161034(void *a0); -extern void func_80161094(s32 a0); -extern void func_801610FC(void); -extern void func_801483E8(void); -extern s32 func_80161A60(s32 a0); -extern void func_8016130C(void *a0, s32 a1); -extern void func_80161240(void *a0); -extern void func_80161374(void *a0, s32 a1); -extern void func_80161278(void *a0); -extern s32 func_801612B8(void * a0, s32 a1); -extern void func_8016163C(void *a0, s32 a1); -extern void func_80161774(void *a0, s32 a1); -extern s32 func_8016197C(s32 a0, s32 a1); -extern s32 func_80161488(void *a0); -extern void func_80161888(void *a0, s32 a1); -extern void func_801614E4(void *a0); -extern void func_8016191C(void *a0, s32 a1); -extern void func_8016151C(void *a0); -extern void func_80161554(void *a0); -extern s32 func_801615C4(void * arg0, s32 arg1); -extern s32 func_801619A4(s32 *a0); -extern s32 func_80161A00(s32 a0); -extern s32 func_80161A30(s32 a0); -extern int func_801497A8(void); -extern int func_80161BE0(void *param_1); -extern u16 D_8018E044[]; -extern void func_80161C98(int param_1, u32 param_2); -extern void func_80161E08(s32); -extern s32 func_80162438(s32); -extern s32 D_800AE6A8; -extern void func_800D1734(void *); -extern s32 D_8018E0A8; -extern void func_80161D88(void); -extern void func_80161E08(s32 param_1); -extern int func_800291DC(int); -extern int func_800D0E30(void *a0); -extern int func_801620C4(void); -extern s32 func_800D0D7C(s32, s32); -extern int D_801E96F0[]; -extern void func_8016216C(void); -extern u8 D_80078EB0; -extern u8 D_80078EB1; -extern s32 func_801621CC(s32 arg0); -extern void func_801622C4(void); -extern void (*D_8018E0CC[])(void); -extern void func_80162330(void *a0); -extern void func_8014706C(void *a0); -extern s32 func_8016236C(u8 *a0); -extern void func_800D0C48(s32 a0); -extern s32 func_801623B8(s32 *a0); -extern s32 func_800167F0(s32 a0); -extern s32 func_80162414(void); -extern s32 func_80162438(s32 _unused0); -extern int func_801626B8(void); -extern void func_80162714(void); -extern int D_801E9748[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018E114[])(void); -extern void func_80162834(void *a0); -extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80162968(s32 a0); -extern s32 func_80162ACC(u8 *a0); -extern u8 D_800B5CB8; -extern s32 D_8018E104; -extern s32 D_800B5CBC; -extern u8 D_800B5CDF; -extern s32 D_800B5CEC; -extern void func_80162870(s32 param_1); -extern void func_801628F4(s32 *a0); -extern void func_80162968(s32 param_1); -extern void func_80162AC0(s32 *a0, s8 a1); -extern s32 func_80162AE0(u8 *a0); -extern void func_80162AF4(void); -extern void func_80162CC4(void); -extern s32 D_80126D40; -extern void func_80162B1C(void); -extern void func_80162D28(s32 *a0); -extern void func_80162D88(s32 *a0); -extern void func_80162DE8(s32 *a0); -extern void func_80162E48(s32 *a0); -extern void func_80162EA8(s32 *a0); -extern void func_80162F60(s32 arg0, s32 arg1); -extern void func_80162F80(s32 arg0, s32 arg1); -extern void func_80162FA0(s32 arg0, s32 arg1); -extern void func_80162F08(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80162FC0(s32 *a0); -extern void func_80162FF4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801630C4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163194(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg4); -extern void func_8016325C(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163234(s32 a0); -extern s32 D_80115100; -extern s32 func_801632E0(void); -extern s32 D_80115200; -extern s32 func_801632F0(void); -extern u16 D_80126B18[]; -extern void func_80163328(void); -extern s32 func_801633A8(void); -extern s32 func_80163408(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void func_80163534(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, u16 * a5); -extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); -extern char D_801E8DBC[8]; -extern void *memcpy(void *dst, const void *src, unsigned int n); -extern void func_801634D8(s32 param_1, u16 param_2, u16 param_3, s32 param_4, u16 param_5); -extern void func_80157158(); -extern void func_80163664(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801636D0(s32 a0, s32 a1); -extern s32 func_8016380C(struct S8016380C *a0, s32 a1); -extern void *memcpy(void *dst, void *src, s32 n); -extern s32 func_801638A0(u8 *a0, s32 a1); -extern s32 func_80163950(s32 a0); -extern void (*D_8018E11C[])(void); -extern void func_80163A58(void *a0); -extern void func_80163A94(s32 param_1); -extern void func_80163C2C(s32 param_1); -extern void func_80163EC8(s32 param_1); -extern void func_80164270(s32 *a0); -extern void func_80164418(void); -extern void func_80163764(s32 a0); -extern void func_801642AC(s32 a0); -extern void func_8016432C(s32 a0); -extern void func_80164410(void); -extern s32 func_80012DBC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164530(s32 arg0); -extern void (*D_8018E170[])(void); -extern void func_80164744(s32 param_1); -extern void func_8001C810(s32 a0, s32 a1); -extern void func_80164A74(s32 *a0); -extern void func_80164930(s32 a); -extern u16 D_800DF2E0; -extern s32 D_8018E138; -extern s16 D_8018E16C; -extern s16 D_8018E16A; -extern s16 D_8018E168; -extern void func_801647A4(int param_1); -extern void func_80164ACC(); -extern void func_80164864(void *a0); -extern void func_80164930(s32 param_1); -extern s32 func_8014C308(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164ACC(s32 a0); -extern void (*D_8018E17C[])(void); -extern void func_80164BA0(void *a0); -extern void func_8001CD50(s32 a0, s32 a1); -extern void func_800233CC(void *, unsigned short); -extern void func_80164DD0(s32 a0); -extern void func_80164DB0(void); -extern u8 D_801E97A8; -extern u8 D_801E97A9; -extern u8 D_801E97AA; -extern u8 D_801E97AB; -extern u8 D_801E97AC; -extern u8 D_801E97AD; -extern u8 D_801E97AE; -extern u8 D_801E97AF; -extern void func_80164BDC(s32 param_1); -extern void func_80164E40(void); -extern void func_80164CD4(u8 *a0); -extern void func_80164D4C(void *arg0); -extern void (*D_8018E18C[])(void); -extern void func_80164EA4(void *a0); -extern void func_80165124(void *a0); -extern void func_80164EE0(int param_1); -extern s32 func_80165140(s32 a0); -extern void func_801651B8(void *a0); -extern void func_80164F44(void *arg0); -extern void func_80165024(void *a0); -extern void func_80165064(s32 *a0); -extern void func_801650C4(s32 *a0); -extern s32 func_80165140(s32 param_1); -extern s32 func_80165240(s32 a0, s32 a1, s32 a2); -extern s32 D_801E97E8; -extern void func_801651B8(void * param_1); -extern u8 D_80126CF8; -extern void func_8016533C(void); -extern void func_801653F4(s32 a0); -extern void func_80165580(s32 a0); -extern void func_80165374(s32 a0); -extern void func_80165580(s32 _arg0); -extern void func_801653B8(s32 *a0); -extern s32 func_80165624(s32 a0); -extern u8 D_80078EC5; -extern void (*D_8018E1D0[])(void); -extern u8 func_80165658(s32 a0, s32 a1); -extern void func_800CAE0C(s32 a0); -extern void func_801654A8(s32 arg0); -extern void func_80165B28(void *a0); -extern void func_801655E4(s32 a0); -extern u8 D_8018E24C[]; -extern s32 D_8018E26C[]; -extern u8 D_8018E2E8[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018E308[]; -extern u8 D_8018E328[]; -extern void func_800CAF6C(void); -extern void func_80165770(void); -extern void func_801657D8(void); -extern u8 D_80078EC3; -extern void func_801657A0(void); -extern s32 D_80078EA0; -extern s32 D_80078EA8; -extern u8 D_80078EBB; -extern s32 D_80078ED4; -extern s32 D_80078ED8; -extern s32 D_80078EDC; -extern u8 D_80078EE0; -extern void func_80165874(void); -extern s8 D_80078EC4; -extern void func_801658EC(void); -extern s32 func_80165900(void); -extern s32 func_80165910(void); -extern s32 D_8012672C; -extern s32 D_8012811C; -extern s32 D_80126B08; -extern void func_80165938(void); -extern void func_80165958(void); -extern s32 func_80165978(void); -extern void func_80165988(void); -extern s32 func_801659A8(void); -extern void func_801659B8(void); -extern s32 func_801659CC(void); -extern void func_80165A18(void); -extern s32 func_80165A50(s32 _arg0); -extern void func_80165AC8(void); -extern void func_80165A78(s32 arg0); -extern void (*D_8018E3C4[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_8018E440[])(void); -extern void func_80165BB4(u8 *a0); -extern void func_80165B6C(u8 *a0); -extern void func_80165C58(s32 arg0); -extern void func_80165BFC(void *a0); -extern void func_80165C78(void); -extern M2C_UNK D_801E8DCC; -extern void func_80165E2C(u16 *arg0); -extern s32 func_80165FA4(s32 a0, s32 a1, s32 a2); -extern s32 func_80167DBC(s32 a0, s32 a1, s32 a2); -extern s32 func_80167AE0(s32 a0, s32 a1, s32 a2); -extern void func_80165E90(void); -extern void func_80020F34(s32 a0, s32 a1); -extern s32 func_80165FA4(s32 arg0, s32 arg1, s32 arg2); -extern void (*D_8018E44C[])(void); -extern void func_80166018(void *a0); -extern void func_80166054(s32 arg0); -extern void func_801661CC(s32 param_1); -extern void func_80166244(void* arg0); -extern void func_8016629C(void *a0); -extern void func_801662F4(void *a0); -extern void func_8016634C(void *a0); -extern void func_801663A4(void *a0); -extern void (*D_8018E454[])(void); -extern void func_801663FC(void *a0); -extern u8 D_800D387C[]; -extern u8 D_800D3888[]; -extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); -extern void func_800D1FC8(s32 a0, s32 a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern void func_801665B4(); -extern void func_80146C3C(); -extern void func_80166438(u8 *a0); -extern s32 func_80128ED8(s32 param_1, s32 *param_2); -extern void func_800D22E4(s32 a0); -extern void func_801665B4(s32 *a0); -extern void (*D_8018E51C[])(void); -extern void func_80166618(void *a0); -extern void (*D_8018E52C[])(void); -extern void func_80166654(void *a0); -extern s32 func_80166690(s32 param_1, s32 param_2); -extern s32 func_80166994(); -extern s32 func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern s32 func_80167540(s32 arg0); -extern void (*D_8018E53C[])(void); -extern void func_801678B4(void *a0); -extern void RotMatrixYXZ(void *a0, void *a1); -extern void func_80048EAC(void *a0, void *a1); -extern s32 func_801670E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80146C3C(void); -extern void func_801678F0(s32 a0); -extern void (*D_8018E548[])(void); -extern void func_80167A9C(void *a0); -extern void func_80167AD8(void); -extern s32 func_80167AE0(s32 param_1, s32 param_2, s32 param_3); -extern void func_80168070(s32 a0, s16 *a1, s16 *a2, void *a3); -extern u8 D_8018E4A8[]; -extern u8 D_8018E4BC[]; -extern s32 func_80167DBC(s32 arg0, s32 arg1, s32 arg2); -extern void func_800D20C0(void *a0, void *a1, s32 a2); -extern void func_80017E68(void *a0, void *a1); -extern void func_800D23D0(void *a0); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern s32 D_801269A4; -extern s32 D_801269A8; -extern s32 D_801269AC; -extern void func_80168070(s32 param_1, s16 *param_2, s16 *param_3, void *param_4); -extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_8016829C(s32 a0); -extern s32 func_80166690(s32 a0, s32 a1); -extern void func_80168328(s32 arg0); -extern void func_801683D8(s32 a0); -extern void func_801684B4(s32 a0); -extern void func_80168540(s32 a0); -extern void func_801685EC(s32 a0); -extern void func_80168640(s32 a0); -extern Blk20 D_800AE620; -extern s32 RotMatrixX(s32 a0, void *a1); -extern void func_80168664(void *arg0); -extern void (*D_8018E560[])(void); -extern void func_80168744(void *a0); -extern void func_80168BDC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801687CC(s32 a0); -extern void func_80168780(s32 a0); -extern void func_80168828(void); -extern void func_801687CC(s32 param_1); -extern void func_80168828(); -extern void (*D_8018E568[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_8018E570[])(void); -extern void func_80168AA8(void *a0); -extern void func_80168AE4(s32 a0); -extern void func_800D2318(void); -extern void func_80168BDC(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void (*D_8018E578[])(void); -extern void func_80168D58(void *a0); -extern void func_80168D94(int a0); -extern void func_80168F40(); -extern void func_80168EC4(s32 a0); -extern void func_80168F40(void *arg0); -extern void (*D_8018E580[])(void); -extern void func_8016901C(void *a0); -extern void func_80169058(s32 a0); -extern s32 func_80169228(void); -extern void func_801691B8(void *a0); -extern void (*D_8018E588[])(void); -extern void func_801693CC(void *a0); -extern void func_80169584(s32 param_1); -extern void func_80169408(s32 a0); -extern void func_8016951C(int param_1); -extern s32 func_80017758(void *a0, void *a1); -extern s32 func_80017DC4(void *a0, void *a1); -extern void func_801696D8(s32 a0, s32 a1); -extern void (*D_8018E590[])(void); -extern void func_80169830(void *a0); -extern void func_8016986C(s32 a0); -extern s32 func_80169A4C(s32 a0, s32 a1); -extern void func_801699D0(void *arg0); -extern void (*D_8018E644[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_8018E64C[])(void); -extern void func_80169F00(void *a0); -extern char D_8018E5FC[]; -extern char D_8018E5BC[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8018E684[])(void); -extern void func_8016A020(void *a0); -extern void func_8016A05C(void *a0); -extern void func_8016A290(s32 a, void *b, void *c); -extern void func_8016A08C(s32 param_1); -extern void func_8016A1CC(int param_1); -extern void func_8016A290(s32 param_1, void *param_2, void *param_3); -extern void (*D_8018E690[])(void); -extern void func_8016A700(void *a0); -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_80126B62; -extern u16 D_80126B66; -extern void func_8016AA50(s32 param_1, s32 param_2); -extern void (*D_8018E6D8[])(void); -extern void func_8016AB30(void *a0); -extern void func_8016B234(void); -extern void func_8016AFB0(s32 a0); -extern void func_8016B114(void *arg0); -extern s32 func_8016B448(s32, s32); -extern s32 func_8016BA48(s32 a0); -extern void func_8016B3F4(s32 a0); -extern s32 func_8016B428(s32 a0); -extern void func_8016B984(void *a0); -extern s32 func_8016B448(s32 arg0, s32 arg1); -extern void (*D_8018E754[])(void); -extern void func_8016B4BC(void *a0); -extern int func_8016B9F8(int); -extern int func_8016B834(int, int); -extern void func_8016B91C(int); -extern int D_801E9B08; -extern void func_8016B4F8(int param_1); -extern s32 func_8016B9F8(s32 param_1); -extern void func_8016B6BC(s32, s32, s32, s32); -extern void func_8016B91C(s32); -extern s16 D_8018E748[]; -extern void func_8016B5C0(s32 param_1); -extern void func_8001CD9C(int, void *); -extern int *D_8018E78C[]; -extern unsigned short D_8018E794[]; -extern unsigned short D_8018E79C[]; -extern unsigned char D_801E9B10[]; -extern int func_8016B834(int param_1, int param_2); -extern void func_8016B964(SrcB964 *a0, DstB964 *a1); -extern void func_8016B91C(s32 arg0); -extern s32 D_801E9B08; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8018E7A4[])(void); -extern void func_8016BBA4(void *a0); -extern s32 func_8016BBE0(s32 param_1); -extern void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3); -extern M2C_UNK D_801E9C44; -extern M2C_UNK D_801E9C48; -extern void func_8016BCC0(void *arg0); -extern s32 func_8016BD78(s32 param_1); -extern s32 func_8016BEA0(s32 param_1); -extern void func_8016BF34(void *a0); -extern void func_8016BFD0(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern s32 D_801E9BD0; -extern void (*D_8018E7D4[])(void); -extern void func_8016C14C(void *a0); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801E9C4C[]; -extern u8 D_801E9C54[]; -extern u8 D_801E9C04[]; -extern void func_8016C2C4(s32 param); -extern s32 func_8016C49C(s32 param_1_arg); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_8016C74C(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern short func_8016CF04(s32 a0, s32 a1); -extern void func_8016C83C(s32 a0); -extern void (*D_8018E7DC[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_8018E7F8[])(void); -extern void func_8016D19C(void *a0); -extern void (*D_8018E800[])(void); -extern void func_8016D428(void *a0); -extern void func_8016D464(u8 *a0); -extern void func_8016D4DC(s32 a0); -extern void func_8016D5EC(s32 *a0); -extern short func_8016CBC0(void); -extern void func_8016D64C(int param_1); -extern void func_8016D778(s32 a0); -extern void func_800D20C0(); -extern void func_8016D848(s32 *a0); -extern void func_8016D984(s32 *a0); -extern void func_8016DBD8(u8 *a0); -extern void (*D_8018E868[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_8018E80C; -extern u8 D_8018E818; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void (*D_8018E89C[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8018E8A4[])(void); -extern void func_8016DF20(void *a0); -extern void func_8016E3CC(s32 a0); -extern void func_8016E1CC(s32 a0); -extern void func_8016E26C(s32 *a0); -extern void func_8016E2E8(void *a0); -extern void func_8016E460(void *a0, void *a1); -extern void func_8016E358(void *a0); -extern void func_8016E460(void *arg0, void *arg1); -extern void (*D_8018E8F8[])(void); -extern void func_8016E5B8(void *a0); -extern void func_8016E5F4(s32 arg0); -extern void func_8016E778(); -extern void func_8016E688(void *a0); -extern void func_8016E6E4(s32 a0); -extern void func_8016E728(u8 *a0); -extern void func_8016E7C8(int param_1, short *p1, unsigned int *p2); -extern void func_8016E778(int param_1); -extern void func_8016E7C8(int param_1, short *param_2, unsigned int *param_3); -extern s32 D_80115218; -extern void func_8016E8F0(void); -extern void func_8016E918(short param_1, short param_2); -extern s32 func_8016E95C(); -extern u16 D_8018E92C[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_8018E91C[]; -extern void func_8016EB3C(s32 p); -extern void func_8016EBA8(u8 *param_1); -extern void func_8016ED6C(void); -extern s32 D_80126D70; -extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); -extern void func_8016ED8C(s32 a0, s32 a1, s32 a2); -extern void func_8016EE40(s32 a0, s32 a1, s32 a2); -extern void func_8016EDBC(s32 a0, s32 a1, s32 a2); -extern void func_8016EE94(); -extern void func_8016EDEC(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_8016EF78(s32 a0); -extern void func_8016EE40(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_801726D0(void *a0); -extern s32 D_80126D50; -extern s32 D_80126D54; -extern u8 D_80126D6C; -extern u8 D_80126D6D; -extern u8 D_80126D6E; -extern s32 D_80126D5C; -extern s32 D_80126D60; -extern s16 D_80126D64; -extern s16 D_80126D66; -extern s16 D_80126D68; -extern s16 D_80126D6A; -extern u8 D_80126D1A; -extern s32 D_80127058; -extern s32 D_8012705C; -extern s32 D_80127060; -extern s32 D_80127064; -extern s32 D_80127068; -extern s32 D_8012706C; -extern s32 D_80127070; -extern s32 D_80127074; -extern s16 D_80126D20; -extern void func_8016EE94(s32 a0, s32 a1); -extern s32 func_8016EFC8(s32); -extern s32 func_8016EFA8(s32 a0); -extern void func_8016F094(s32 *a0); -extern s32 func_8016F0AC(); -extern s32 D_8018E948; -extern void func_8016F250(void); -extern void func_8016F288(void); -extern void func_8016F2A8(void); -extern void func_8016F2C8(void); -extern void func_8016F2EC(void); -extern void func_8016F30C(void); -extern void func_8016F330(void); -extern void func_8016F350(void); -extern void func_8016F374(void); -extern void func_8016F388(void); -extern void func_8016F398(void); -extern s32 func_8016F44C(s32 a0); -extern void func_8016F470(s32 a0); -extern s32 func_8016F410(s32 a0); -extern void func_80175414(s32 _arg0); -extern s32 func_8016F4C4(s32); -extern s32 func_8016F494(s32 a0); -extern void func_8016F0E4(void); -extern s32 func_8016F4C4(s32 param_1); -extern void func_8016F4F4(void); -extern void func_801719A4(int a0, int a1); -extern void func_800D1724(s32 a0); -extern void func_80171928(void *a0); -extern void *D_8011F738; -extern void func_8016F4FC(void *a0); -extern void func_8014708C(void *a0); -extern void func_8016F540(void *a0); -extern void func_8016F578(s32 *a0); -extern void func_8016F5B0(void *a0); -extern void func_80147060(u8 *a0); -extern void func_8016F5E0(u8 *a0); -extern void func_8016F610(void *a0); -extern void func_8016F648(void *a0); -extern void func_8016F680(void *a0); -extern void func_8016F6B0(void *a0); -extern void (*D_8018E9C0[])(void); -extern void func_8016F6E0(void *a0); -extern s32 func_80171990(u8 *a0); -extern void func_8016F764(void *a0); -extern void func_8016F71C(u8 *a0); -extern void (*D_8018E9C8[])(void); -extern void func_8016F798(void *a0); -extern void func_8016F804(void *a0); -extern void func_8016F7D4(u8 *a0); -extern void func_80171928(void *); -extern void (*D_8018E9D0[])(void); -extern void func_8016F834(void *a0); -extern void func_8016F8AC(u8 *a0); -extern void func_8016F870(u8 *a0); -extern void func_80172358(u8 *a0, u8 *a1); -extern void (*D_8018E9D8[])(void); -extern void func_8016F8E4(void *a0); -extern void func_8016F95C(void *a0); -extern void func_8016F920(u8 *a0); -extern s32 func_80171CC4(void *a0, void *a1); -extern s32 func_80171D1C(void *a0, void *a1, s32 a2); -extern u16 D_8011F73E; -extern void (*D_8018E9E0[])(void); -extern void func_8016F9C4(void *a0); -extern void func_80171B44(s32 *a0); -extern void func_8016FA44(s32 a0); -extern void func_8016FA00(s32 a0); -extern s32 func_80171C64(s32 a0, s32 a1); -extern void (*D_8018E9E8[])(void); -extern void func_8016FA84(void *a0); -extern void func_8016FB10(void *a0); -extern void func_8016FAC0(u8 *a0); -extern void func_8016FB50(void *a0); -extern void (*D_8018E9F4[])(void); -extern void func_8016FB7C(void *a0); -extern void func_8016FC24(); -extern void func_8016FBB8(s32 a0); -extern s32 func_80171B4C(s32 a0, s32 a1); -extern void func_8016FC24(s32 a0); -extern void func_8016FC64(void *a0); -extern void (*D_8018EA00[])(void); -extern void func_8016FC90(void *a0); -extern void func_8016FD08(u8 *a0); -extern void func_8016FCCC(u8 *a0); -extern s32 func_80172658(s32 *a0); -extern void func_8016FD08(u8 *s0); -extern void func_8016FD7C(s32 *a0); -extern void (*D_8018EA0C[])(void); -extern void func_8016FDB4(void *a0); -extern void func_8016FE2C(u8 *a0); -extern void func_8016FDF0(u8 *a0); -extern void func_8016FE2C(u8 * a0); -extern s32 func_8016FE78(s32 *a0); -extern s32 func_80172664(s32 *a0); -extern void func_8016FED0(s32 *a0); -extern void (*D_8018EA1C[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_8018EA2C[])(void); -extern void func_8016FFDC(void *a0); -extern void func_80170068(u8 *a0); -extern void func_80170018(u8 *a0); -extern void func_801700B8(u8 *a0); -extern void func_80170100(u8 *a0); -extern void (*D_8018EA34[])(void); -extern void func_80170150(void *a0); -extern void func_801701C8(u8 *a0); -extern void func_8017018C(u8 *a0); -extern void func_801701C8(u8 * a0); -extern void (*D_8018EA3C[])(void); -extern void func_80170240(void *a0); -extern void func_801702B8(s32 a0); -extern void func_8017027C(u8 *a0); -extern s16 func_80171AB0(s32 a0, void *a1); -extern void (*D_8018EA44[])(void); -extern void func_801702FC(void *a0); -extern void func_80170374(u8 *a0); -extern void func_80170338(u8 *a0); -extern s32 func_8014C168(s32 *a0, s32 a1); -extern void func_80170374(u8 * a0); -extern void (*D_8018EA4C[])(void); -extern void func_801703E0(void *a0); -extern void func_8017044C(u8 *a0); -extern void func_8017041C(u8 *a0); -extern void func_8017044C(u8 * a0); -extern void (*D_8018EA54[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_8018EA5C[])(void); -extern void func_80170548(void *a0); -extern void func_801705C0(u8 *a0); -extern void func_80170584(u8 *a0); -extern void func_801705C0(u8 * a0); -extern void (*D_8018EA64[])(void); -extern void func_801705F8(void *a0); -extern void func_80170670(void *a0); -extern void func_80170634(u8 *a0); -extern void func_8012A568(void (*a0)(void)); -extern void (*D_8018EA6C[])(void); -extern void func_801706AC(void *a0); -extern void func_80170718(void *a0); -extern void func_801706E8(u8 *a0); -extern void func_80129FF4(void); -extern void (*D_8018EA74[])(void); -extern void func_80170748(void *a0); -extern void func_801707D4(void *a0); -extern void func_80170784(u8 *a0); -extern s32 func_80174ED4(void); -extern void (*D_8018EA7C[])(void); -extern void func_80170810(void *a0); -extern void func_801708B0(void *a0); -extern u8 D_800D5DA8; -extern void func_8017084C(s32 a0); -extern u8 D_800D5A34[]; -extern void func_80170AD8(void *a0); -extern void func_80171904(s32 a0); -extern void func_80170B48(int a0); -extern void func_80170928(void); -extern u8 D_800D59EC[]; -extern void func_80170970(void); -extern u8 D_800D599C[]; -extern void func_801709B8(void); -extern u8 D_800D5934[]; -extern void func_80170A00(void); -extern void func_80170A48(void); -extern u8 D_800D5DC0[]; -extern void func_80170A90(void); -extern void (*D_8018EA84[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_8018EA8C[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8018EA94[])(void); -extern void func_80170C74(void *a0); -extern s32 func_8017197C(u8 *a0); -extern void func_80170CF0(void *a0); -extern void func_80170CB0(u8 *a0); -extern void (*D_8018EA9C[])(void); -extern void func_80170D68(void *a0); -extern void func_80170DE0(u8 *a0); -extern void func_80170DA4(u8 *a0); -extern s32 D_8011F73C; -extern s32 D_8011F740; -extern void func_801718AC(void *a0); -extern void func_80170DE0(u8 * _arg0); -extern void (*D_8018EAA4[])(void); -extern void func_80170E34(void *a0); -extern void func_80170EAC(u8 *a0); -extern void func_80170E70(u8 *a0); -extern int func_800D0F8C(int a0); -extern void func_80170EAC(u8 * _arg0); -extern void (*D_8018EAAC[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8018EAB4[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_8018EABC[])(void); -extern void func_80171064(void *a0); -extern void func_801710DC(u8 *a0); -extern void func_801710A0(u8 *a0); -extern u16 D_8011F73A; -extern void func_801710DC(u8 * arg0); -extern void (*D_8018EAC4[])(void); -extern void func_80171120(void *a0); -extern void func_8017118C(u8 *a0); -extern void func_8017115C(u8 *a0); -extern void func_80142454(s32 a0); -extern void func_8017118C(u8 * a0); -extern void (*D_8018EACC[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8018EAD4[])(void); -extern void func_80171260(void *a0); -extern s32 func_80012F74(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80171384(void *a0); -extern void (*D_8018EADC[])(void); -extern void func_801714E4(void *a0); -extern struct B16 D_800A5E88; -extern struct B16 D_800A5E98; -extern struct B16 D_800A5EA8; -extern void func_8017162C(void *a0); -extern void func_80171520(s32 a0); -extern s32 func_801716AC(s32 a0, void *a1, s32 *a2); -extern s32 func_80012FC8(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_800A5E94; -extern u8 D_800A5E95; -extern u8 D_800A5E96; -extern s32 func_801716AC(s32 a0, void * a1, s32 * a2); -extern int func_800D0FE0(int a0); -extern void func_801717A0(void *a0); -extern void func_8013E588(void *a0); -extern void func_801717F4(void *a0); -extern void func_80171824(void *a0); -extern void func_80171854(void *a0); -extern void func_80171884(void); -extern void func_80171A1C(u8 *a0); -extern void func_80171928(void * a0); -extern void func_8017196C(s32 *a0, s8 a1); -extern void func_80171A04(s32 *a0); -extern void func_80171A10(s32 *a0); -extern void func_80171A34(s32 *a0, s8 a1); -extern s32 func_80171A44(u8 *a0); -extern s32 func_80171A58(u8 *a0); -extern s32 func_80171A6C(u8 *a0); -extern void func_80171A80(s32 *a0, s32 a1); -extern s32 func_80171A88(s32 a0); -extern s16 func_80171AB0(s32 param_1, void * _arg1); -extern void func_80171B10(void *a0); -extern void func_80171EC8(s32 a0); -extern s32 func_80171C64(s32 param_1, s32 param_2); -extern s32 func_80171D78(s32 a0, s32 a1); -extern int func_8017250C(short *a0, short *a1); -extern s32 func_80171CC4(void * a0, void * a1); -extern s32 func_80171FFC(short *a0, short *a1, s32 a2); -extern s32 func_80171D1C(void * a0, void * a1, s32 a2); -extern s32 func_8017248C(s32 a0, s32 a1); -extern s32 func_80171E08(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_80047948(s32 a0); -extern s32 func_8004787C(s32 a0); -extern void func_80172170(s32 a0, s32 a1); -extern s32 func_8017209C(void *arg0, void *arg1, s32 arg2, s32 arg3); -extern void func_801722CC(s32 *a0); -extern void func_80172304(s32 *a0); -extern void func_80172310(u8 *a0); -extern void func_801723C4(s32 param_1, s32 param_2); -extern void func_80161C24(s32, s32); -extern void func_80172414(s32 a0); -extern s32 func_801724EC(s32 a0); -extern s32 func_8017248C(s32 arg0, s32 arg1); -extern s32 func_80013450(s32); -extern s32 func_80172560(u8 *a0, u8 *a1); -extern s32 func_8017261C(u8 *a0); -extern s32 func_80172644(u8 *a0); -extern s32 func_80172670(s32 *a0); -extern s32 func_80172688(s32 *a0); -extern s32 func_80172694(s32 *a0); -extern s32 func_801726A0(s32 *a0); -extern s32 func_801726AC(s32 *a0); -extern s32 func_801726B8(s32 *a0); -extern s32 func_801726C4(s32 *a0); -extern s32 func_80172760(s32 a0); -extern s32 func_80174650(s32); -extern void (*D_80127088)(void); -extern s32 D_801270BC; -extern s16 D_80126B0C; -extern void func_801726D0(void * _arg0); -extern void func_80172710(void); -extern void func_80174684(void *); -extern void func_80172738(void); -extern s16 D_80126B30; -extern s32 func_801727D0(void *a0); -extern void func_80172780(void *a0); -extern void func_80172844(u8 *a0); -extern void func_8017280C(u8 *a0); -extern void func_8017288C(void); -extern s32 func_801728E4(void *a0); -extern void func_80172894(void *a0); -extern void func_80172958(u8 *a0); -extern void func_80172920(u8 *a0); -extern s16 D_80126B36; -extern void func_80172958(u8 * a0); -extern void func_801729A8(void); -extern s32 func_801729F0(void *a0); -extern s16 D_80126B34; -extern s16 D_80126B32; -extern void func_801729B0(s32 a0); -extern void func_80172A8C(void *a0); -extern void func_80172A2C(int param_1); -extern void func_80172ACC(u8 *a0); -extern void func_80172B0C(void); -extern s32 func_80172B44(void *a0); -extern void func_80172B14(s16 a0); -extern s32 D_801150F8; -extern void func_80172BC8(void *a0); -extern void func_80172B80(u8 *a0); -extern void func_80172C48(void); -extern void (*D_8018EB20[])(void); -extern void func_80172CA0(void *a0); -extern void func_80172D14(u8 *a0); -extern void func_80172CDC(u8 *a0); -extern void func_80172D14(u8 * a0); -extern void func_80172D60(void); -extern s32 D_80127508; -extern s32 func_80172DAC(void *a0); -extern void func_80172D68(s32 a0); -extern void func_80172E20(u8 *a0); -extern void func_80172DE8(u8 *a0); -extern void func_80172E20(u8 * a0); -extern void func_80172E8C(void); -extern void func_8017303C(void *); -extern void func_80172E94(void); -extern void func_80172ED4(void); -extern void func_80172EFC(void); -extern void func_80172F24(void); -extern u8 D_800D47F4[]; -extern void func_80172F4C(void); -extern void func_80172F9C(void); -extern u8 D_800D5C6C[]; -extern void func_80172FEC(void); -extern s32 func_80173078(void *a0); -extern void func_8017303C(void * a0); -extern void func_801730FC(struct S801730FC *a0); -extern void func_801730B4(s32 a0); -extern void func_8017316C(void); -extern s32 func_8017319C(void *a0); -extern void func_80173174(void); -extern u8 D_800D5AA0[]; -extern void func_80173220(void *a0); -extern void func_801731D8(s32 *a0); -extern M2C_UNK D_8018EAE4; -extern void func_80173220(void * arg0); -extern void func_80173294(void); -extern void func_801732C4(); -extern void func_8017329C(void); -extern void func_801732C4(s32 *a0); -extern void func_8017331C(); -extern void func_801732F4(void); -extern void func_8017331C(s32 *a0); -extern void func_80173374(); -extern void func_8017334C(void); -extern void func_80173374(s32 *a0); -extern void func_801733A4(void); -extern void func_801733CC(s32 a0); -extern void func_801734BC(s32 a0, s32 a1); -extern struct S80126B38 D_80126B38; -extern s16 D_80126B3E; -extern void func_80173460(s32 a0, s32 a1); -extern void func_801734BC(s32 arg0, s32 _unused1); -extern void (*D_8018EB50[])(void); -extern void func_80173544(void *a0); -extern void func_801735B8(u8 *a0); -extern void func_80173580(u8 *a0); -extern s16 D_80126B40; -extern void func_801735EC(void *a0); -extern void func_80173648(u8 *a0); -extern void func_801736A8(void); -extern s32 func_8014C118(void *a0, s32 a1, s32 a2); -extern s32 func_801736FC(void *a0); -extern void func_801736B0(s32 a0, s32 a1); -extern void func_80173770(u8 *a0); -extern void func_80173738(u8 *a0); -extern void func_801723C4(s32 a0, s32 a1); -extern void func_801737B0(void); -extern s32 func_801737E8(void *a0); -extern void func_801737B8(s16 a0); -extern void func_8017385C(u8 *a0); -extern void func_80173824(u8 *a0); -extern void func_801738D4(void); -extern s32 func_8017390C(void *a0); -extern void func_801738DC(s16 a0); -extern void func_80173980(u8 *a0); -extern void func_80173948(u8 *a0); -extern void func_801739D8(u8 *a0); -extern void func_80173A20(void); -extern s32 D_8012750C; -extern void func_80173A60(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80173A28(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void (*D_8018EB8C[])(void); -extern void func_80173B4C(void *a0); -extern void func_80173BC0(u8 *a0); -extern void func_80173B88(u8 *a0); -extern s16 D_80126B3A; -extern s16 D_8011F9C8; -extern s32 func_800D0EC4(void); -extern void func_8013E588(void*); -extern void func_80173BC0(u8* a0); -extern void func_80173C64(u8 *a0); -extern u8 D_800D5DB8; -extern void func_80173CB4(s32 a0); -extern void func_80173E1C(s32 a0); -extern s16 D_80126938; -extern void func_800D128C(s32, s32); -extern void func_80174158(s32 a0); -extern void func_8002A088(s32); -extern void func_8002A2D4(s32); -extern void func_8002A544(s32); -extern void func_8002A7B4(s32); -extern s32 func_80174188(s32 a0); -extern void func_801741A8(s32 a0); -extern void func_800D0F0C(s32, s32); -extern void func_80145EE8(s32); -extern void func_80173EF8(void *param_1); -extern s32 func_8014BCEC(s32, s32); -extern void func_801741A8(s32 _arg0); -extern s16 D_80126B3C; -extern void func_801741EC(u8 *a0); -extern void func_80174274(void); -extern s32 func_801742A4(void *a0); -extern void func_8017427C(void); -extern void func_80174318(u8 *a0); -extern void func_801742E0(u8 *a0); -extern void func_80174354(void); -extern s32 func_80174384(void *a0); -extern void func_8017435C(void); -extern void func_801743F0(u8 *a0); -extern void func_801743C0(u8 *a0); -extern void func_801743F0(u8 * a0); -extern void func_80174430(void); -extern s32 func_80174474(void *a0); -extern void func_80174438(s32 a0); -extern void func_801744E0(u8 *a0); -extern void func_801744B0(u8 *a0); -extern void func_80174524(void); -extern void func_80174554(); -extern void func_8017452C(void); -extern void func_80174554(s32 arg0); -extern void func_801745AC(); -extern void func_80174584(void); -extern void func_801745AC(s32 *a0); -extern void func_80174604(void); -extern void func_801745DC(void); -extern void func_80174630(void); -extern s32 func_80174650(s32 _arg0); -extern void func_80174674(void); -extern void func_80174684(void* a0); -extern void func_801746A4(void); -extern s32 func_800CF8CC(void); -extern void func_80174714(void); -extern s32 func_80174754(void); -extern s16 func_80174764(void); -extern s16 func_80174774(void); -extern s32 func_801747CC(void *a0); -extern void func_80174784(void); -extern s32 func_801747AC(s32 a0); -extern s32 func_80174808(u8 *a0); -extern void func_8017481C(void); -extern s32 func_80174888(void *a0); -extern void func_80174824(void); -extern void func_8017484C(s32 a0); -extern void func_801748C4(s32 a0); -extern void func_801748E4(void); -extern void func_8012A018(s32 a, s32 b); -extern s32 func_8017496C(void *a0); -extern s32 D_80126954; -extern s32 D_80126950; -extern s32 D_8012695C; -extern s16 D_80126968; -extern s16 D_8012696A; -extern s16 D_8012696C; -extern s16 D_80126976; -extern s16 D_80126978; -extern s16 D_8012697A; -extern void func_801748EC(void); -extern s32 func_801749C8(); -extern s32 func_801749A8(s32 a0); -extern s32 func_80012ABC(s32, s32, s32); -extern void func_80049CAC(s32 a0, s32 a1); -extern s32 func_801749C8(s32 param_1); -extern void func_80174BBC(void *a0); -extern void func_8012A0E0(void); -extern void func_80174BF4(void *a0); -extern void (*D_8018EBE4[])(); -extern void func_80174BF4(void * arg0); -extern s32 func_80174CB0(); -extern s32 func_80174C60(s32 a0); -extern void func_80174C80(s32 a0); -extern s16 D_80126940; -extern s16 D_80126942; -extern s16 D_80126944; -extern s32 func_80012ABC(s32 a0, s32 a1, s32 a2); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern s32 func_80174CB0(s32 param_1, s32 param_2); -extern s32 D_8012697C; -extern u16 D_80126980; -extern s32 func_80174F28(void *a0); -extern void func_80174E9C(s32 a0); -extern void func_80174EF0(s32 a0, s16 a1); -extern s32 func_80175014(u8 *a0, u8 *a1, s32 a2); -extern void func_80174F64(u8 *a0); -extern void func_80174FBC(u8 *a0); -extern s32 func_8017509C(u8 *a0, s32 a1, u8 *a2, u8 *a3); -extern void func_80175184(s32 *a0); -extern void func_80175114(s32 *a0); -extern void func_80175184(); -extern void func_80175150(s32 *a0); -extern void (*D_8018EBF4[])(void*); -extern s32 func_80175268(s32); -extern void func_80175184(s32* arg0); -extern s32 func_80175218(void *a0); -extern void func_801751D8(void *a0); -extern void (*D_8018EBFC[])(s32); -extern s32 func_80175218(void * param_1); -extern s32 func_80175268(s32 param_1); -extern void func_801752BC(s32 *a0); -extern u8 D_8011F7A8; -extern u8 D_8011F7A9; -extern u8 D_8011F7AE; -extern u16 D_8011F7B4; -extern u16 D_8011F7B6; -extern s16 D_8011F7B8; -extern s16 D_8011F7BA; -extern s16 D_8011F7BC; -extern s16 D_8011F7BE; -extern s16 D_800B9A02; -extern void func_80016714(void *, s32); -extern void func_801757A0(s32); -extern void func_800596F4(s32); -extern void func_80175308(void); -extern u8 D_8011F7AD; -extern void func_80175414(s32 _arg0); -extern void func_80175494(void); -extern void (*D_8018ED64[])(); -extern s32 func_801758FC(void); -extern s32 func_80175820(void); -extern s32 func_801759D8(void); -extern void func_8017553C(s32 *param); -extern void func_801757A0(s32 a0); -extern short D_800B9A02; -extern void func_80175590(void *arg0); -extern void func_80175624(void *a0); -extern void func_801757E0(int); -extern void func_80175668(void); -extern void (*D_8018ED70[])(); -extern void func_80175690(s32 *param); -extern void func_80175DA8(s32 a0); -extern void func_80175AB8(s32 a0); -extern void func_80176144(s32 a0); -extern void func_801756E4(s32 arg0); -extern void func_80175798(void); -extern void func_80176734(s32 a0); -extern void func_80176218(s32 a0); -extern void func_80176D00(s32 a0); -extern void func_801757E0(s32 a0); -extern u8 D_80078E78[]; /* cur base ($s5) */ -extern void func_80176FF4(s32); -extern void func_80177340(s32); -extern u32 func_801783D0(s32, s32); -extern void func_80177F84(s32, s32); -extern void func_80177DA8(u8 * p, u32 v, s32 idx); -extern void func_80177AD4(int, unsigned int); -extern s32 func_80024054(u8 *, u8 *); -extern u32 *func_80178298(u32*, u8*, short, short); -extern s32 func_8005A600(s32, s32, s32, s32, s32); -extern void func_80176218(s32 param_1); -extern s32 func_80178004(s32 a0, s32 a1, s32 a2); -extern u8 D_8011F7B1; -extern s16 D_8011F81E; -extern void *func_80177784(void *a0, s32 a1, s32 a2, s32 a3); -extern u32 func_801783D0(s32 a0, s32 a1); -extern void *func_801777BC(); -extern u16 D_8011F82C; -extern u16 D_8011F82A; -extern u32 * func_80176D94(void *param_1, u32 param_2, s16 param_3_); -extern void func_801778A8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80176FF4(s32 a0); -extern u16 D_8011F830; -extern u16 D_8011F82E; -extern u32 * func_801770E0(void *param_1, u32 param_2, s16 param_3_); -extern void func_80177340(s32 a0); -extern u8 D_8011F837; -extern u8 D_8011F7F0; -extern u8 D_8011F7AB; -extern u32 * func_8017742C(u32 *param_1, s32 param_2, s32 param_3); -extern u8 D_8011F83B; -extern void func_801776EC(u8 *a0); -extern void func_801775E0(s32 param_1, s32 param_2); -extern void * func_80177784(void *a0, s32 a1, s32 a2, s32 a3); -extern void * func_801777BC(void *a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_80177940(u32 *p, u32 a_, u32 b_, u32 c_); -extern void func_80177AD4(int param_1, unsigned int param_2); -extern uint * func_80177EA4(uint *param_1, int param_2, uint param_3, int param_4); -extern void func_80177F84(s32 param_1, s32 param_2); -extern u32 * func_80178298(u32 *param_1, u8 *param_2, short param_3, short param_4); -extern M2C_UNK D_801E9014; -extern void func_80178438(u16 *arg0); -extern void func_801787D4(void); -extern void func_8012A908(void); -extern void func_8017869C(s32 a0); -extern void func_80130D0C(s32 a0); -extern void func_8013E370(void); -extern s32 D_8011DB08; -extern void func_8017849C(void); -extern void func_8013E4B4(void); -extern s16 D_801270C4; -extern s32 D_801274D8; -extern s16 D_801270C2; -extern u8 D_801270C6; -extern u8 D_801270C7; -extern s32 D_801274DC; -extern s32 D_801274E0; -extern void func_80178608(void); -extern void func_80178744(s32 a0, s32 a1); -extern void func_80178840(); -extern void func_80131E00(struct S80131E00 *a0, s32 a1); -extern void func_80178840(int param_1); -extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern s32 func_801788B8(s32 arg0, s32 arg1); -extern s32 func_801789AC(s32 arg0); -extern s16 D_801EAFC8; -extern int func_80178970(void); -/* ==== end §8b carried decl layer ==== */ - - - -extern void func_8017BC38(int a0); -extern void func_8017A4AC(void); -extern void func_8017AE2C(s32 a0); -extern s32 func_801399F0(s32 a0); -extern void func_80178CBC(s32 a0, s32 a1); - -extern short D_801EB03C; -extern s32 D_801EA7A0; -extern s32 D_801EAEE4; -extern s32 D_801EA38C; -extern s32 D_801EA7CC; -extern s32 D_801EA388; - -s32 func_801789AC(s32 arg0) -{ - s32 ret; - - func_8017BC38(arg0); - func_8017A4AC(); - func_8017AE2C(arg0); - - switch ((s16)(D_801EB03C - 1)) { - case 0: - ret = func_801399F0(D_801EA7A0); - D_801EAEE4 = ret; - if (ret == 0) { - break; - } - func_80178CBC(arg0, D_801EA388); - break; - case 1: - ret = func_801399F0(D_801EA7A0); - D_801EAEE4 = ret; - if (ret == 0) { - break; - } - func_80178CBC(arg0, D_801EA388); - break; - case 2: - func_80178CBC(arg0, D_801EA388); - break; - case 3: - if (--D_801EA38C > 0) { - break; - } - func_80178CBC(arg0, D_801EA388); - break; - case 4: - ret = ((s32 (*)(s32))D_801EA7CC)(arg0); - if (ret == 0) { - break; - } - func_80178CBC(arg0, D_801EA388); - break; - case 5: - switch (D_801EAEE4) { - case -1: - case 1: - return 1; - case 2: - return 2; - case 3: - return 3; - } - break; - } - return 0; -} - -// @class: struct -// @stuck: none — MATCH (pointer var forces &(*(int *)&D_8018EEA8) into $s0, reused for store + arg-0xC) - - - -s32 func_80178B18(s32 param_1, s32 param_2) -{ - extern void func_80178BF8(void); - extern void func_80178CBC(s32 arg0, s32 arg1); - extern u16 D_8018EEA8; - - int *p = &(*(int *)&D_8018EEA8); - *p = ((int)param_2); - func_80178BF8(); - func_801746A4(); - func_8017435C(); - ((void (*)(int, void *))func_80178CBC)(((int)param_1), (char *)p - 0xC); -} - - - -// @class: regalloc-order -// @stuck: none — MATCH (pending verify) - -s32 func_80178B70(s32 param_1, s32 param_2) -{ - extern void func_80178BF8(); - extern void func_80178CBC(); - extern int D_8018EEA8; - - int *p = &D_8018EEA8; - *p = ((int)param_2); - func_80178BF8(); - func_80178CBC(((int)param_1), p - 3); -} - - - -DEFINE_func_80178BB8() /* dedup: shared engine-core @0x80178BB8 (src/shared) */ - -// @class: other -// @stuck: none — MATCH (49 ins). Key: init loop pointers via &D_SYMBOL (not (T*)0x801da788 raw int, which emits lui+ori instead of lui%hi+addiu%lo). - - - -s32 func_80178BF8() -{ - extern void func_8017B1D8(void); - extern short D_801EB03C; - extern int D_801EA7A0; - extern short D_801EA7B0; - extern short D_801EA7AC; - extern short D_801EA7A8; - extern short D_801EA7A4; - extern int D_801EAEE4; - extern int D_801EA7B8; - extern s16 D_801EA798; - extern short D_801EA790; - extern short D_801EA794; - extern int D_801EAF98; - extern unsigned int D_801EA808; - extern unsigned short D_801EA78E; - - unsigned short *puVar1; - int iVar2; - unsigned int *puVar3; - - iVar2 = 9; - puVar3 = &D_801EA808; - D_801EB03C = 0; - D_801EA7A0 = 0; - D_801EA7B0 = 0; - D_801EA7AC = 0; - D_801EA7A8 = 0; - D_801EA7A4 = 0; - D_801EAEE4 = 1; - D_801EA7B8 = 0; - (*(short *)&D_801EA798) = 0; - do { - *puVar3 = 0; - iVar2 = iVar2 + -1; - puVar3 = puVar3 + -1; - } while (-1 < iVar2); - iVar2 = 0x1ff; - puVar1 = &D_801EA78E; - do { - *puVar1 = 0; - iVar2 = iVar2 + -1; - puVar1 = puVar1 + -1; - } while (-1 < iVar2); - D_801EA790 = 0; - D_801EA794 = 0; - ((void (*)(int *, int))func_80016714)(&D_801EAF98, 0x14); - func_8017B1D8(); -} - - - -extern s32 D_801EA388; -extern short D_801EB03C; - -void func_80178CBC(s32 arg0, s32 arg1) { - D_801EA388 = arg1; - do { - func_80178D40(arg0, D_801EA388); - } while (D_801EB03C == 3); -} - - - -extern short D_801EB03C; -extern void func_80174714(void); - -void func_80178D18(void) { - D_801EB03C = 0; - func_80174714(); -} - diff --git a/src/ov_SC03_015/ov_SC03_015_jr_80178D40.c b/src/ov_SC03_015/ov_SC03_015_jr_80178D40.c deleted file mode 100644 index 70acc7310..000000000 --- a/src/ov_SC03_015/ov_SC03_015_jr_80178D40.c +++ /dev/null @@ -1,3525 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ - /* 12-byte sub-table record (stride 0xC) */ - /* 0x20 bytes */ - /* 4 + 16*12 = 0xC4 stride */ - /* 0x08 */ - /* 0x20 */ -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8; -typedef void (*Handler)(struct Entry_8016E95C *); -extern void func_801458E0(void); -extern s32 D_800AE6AC; -extern s32 D_800AE6B0; -extern s16 D_800B9A0A; -extern u8 D_80078E50; -extern void func_800D185C(u8 *a0); -extern void func_801458E8(void); -extern s32 func_80029504(void); -extern void func_80145B24(void); -extern u8 D_8018DAA4; -extern u8 D_8018DA14; -extern u8 D_8018D9F0; -extern u8 D_8018D9CC; -extern u8 D_8018DA80; -extern u8 D_8018DA5C; -extern u8 D_8018DA38; -extern u8 D_8018D9A8; -extern void func_80145934(void); -extern u8 D_8018DB34; -extern u8 D_8018DB10; -extern u8 D_8018DAEC; -extern u8 D_8018DAC8; -extern void func_80145A2C(void); -extern s32 func_800291DC(s32); -extern void func_800291C8(s32, s32); -extern void func_80162120(void); -extern void func_80029124(s32, s32); -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); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_80145BF8(void); -extern s32 func_800291B4(s32 arg); -extern void func_800291A0(s32, s32); -extern void func_80145C54(void); -extern s32 func_80145CEC(); -extern s32 func_80029178(s32 arg); -extern void func_80146014(s32 a0); -extern unsigned char D_8018CF2C[]; -extern unsigned char D_8018CF5C[]; -extern unsigned char D_8018CFAC[]; -extern unsigned char D_8018CFDC[]; -extern unsigned char D_8018D00C[]; -extern void func_80145EE8(s32 param_1); -extern void MoveImage(void *a0, s32 a1, s32 a2); -extern void func_80146074(void); -extern s32 func_80146128(void); -extern void func_80146360(void); -extern void func_801463A0(); -extern void func_8014607C(void); -extern s32 *D_80126B78; -extern u8 D_80078EC1; -extern s32 D_80078EC8; -extern s32 D_80126B9C; -extern s32 D_8011F730; -extern u16 D_801152B8; -extern u16 D_8012693A; -extern u8 D_80126BE0[]; -extern u8 D_801150F0[]; -extern void *memcpy(void *dst, const void *src, u32 n); -extern void func_80146FC4(s32 a0); -extern void func_80150A70(s32 a0); -extern void func_80147098(s32 *a0); -extern void func_8014A638(s32 arg0); -extern s32 func_80155458(s32 a0); -extern s32 func_80029104(void); -extern void func_80029344(void); -extern void func_8014ADE0(s32 a0); -extern void func_8014B350(s32 a0); -extern void func_8014B7A4(s16 *param_1); -extern s32 func_80161D58(s32 a0); -extern void func_80161A90(s32 a0); -extern void func_8014B504(u16 *a0); -extern void func_80149BEC(s32 a0); -extern void func_8014B5D0(s32 *a0); -extern void func_8014C99C(u8 *a0); -extern void func_8014B190(s32 s0); -extern void func_80148648(s32 a0, s32 a1); -extern s32 func_80149228(s32 a0); -extern void func_8014A59C(s32 a0); -extern void func_8016F14C(void *a0); -extern void func_80154418(void *a0); -extern void func_80154BE4(s32 a0); -extern void func_80165694(s32 arg0); -extern void func_801654A8(s32 a0); -extern void func_8014A680(s32 a0); -extern void func_8014A6A8(s32 a0); -extern void func_8014A71C(s32 a0); -extern void func_80172588(s32 *a0); -extern void func_801473DC(s32 *a0); -extern void func_80015978(s32 a0, s32 *a1); -extern void (*D_8018D05C[])(void *); -extern u8 D_80126BA4; -extern s32 D_80127098; -extern s32 D_80127094; -extern s32 D_80127090; -extern void func_80146534(void); -extern void func_8001D074(s32 a0, s32 a1); -extern void func_80146554(void); -extern void func_80146578(void); -extern void func_8001CFDC(s32, s32); -extern void func_8014659C(void); -extern void func_8001D074(s32, s32); -extern void func_801465C0(void); -extern void func_801465E4(void); -extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); -extern s32 D_8011F9D0; -extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); -extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 D_8011F750; -extern s32 D_8011F754; -extern u8 * func_801468C8(s32 arg0, u8 arg1); -extern s32 D_8011D030; -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); -extern s32 func_80146B9C(void *a0); -extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); -extern u16 D_8011DA28; -extern s32 func_80146B9C(void * arg0); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80146CA0(void *a0); -extern void func_80146CB4(void *a0); -extern void func_80146CC8(s32 a0); -extern void func_80146D30(s32 a0); -extern void func_80146D80(s32 *a0); -extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80146D90(s32 a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); -extern void func_80146E90(s32 *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80015954(s32 a0, s32 a1); -extern void func_80149374(s32 a0, s32 a1); -extern void func_80146F58(s32 a0, s32 a1); -extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 func_8012A68C(void); -extern s16 func_8012A758(void); -extern void func_8004978C(s16 *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern u8 D_80126DB0[]; -extern u16 D_80126DB6; -extern void func_8014704C(s32 *a0); -extern s32 func_80147054(void *a0); -extern void func_80147060(u8 * a0); -extern void func_8014706C(void *arg0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80147084(s32 *a0); -extern void func_8014708C(void *arg0); -extern s32 func_801470A0(void *a0); -extern void func_801470AC(s32 *a0); -extern void func_801470B4(s32 arg0); -extern void func_801470C0(s32 a0); -extern void func_80147118(s32 a0); -extern s16 D_80126BB8; -extern s16 D_80126BBA; -extern s16 D_80126BBC; -extern void func_80147264(s32 a0); -extern void func_80147290(void); -extern void func_801472B4(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void *D_8012707C; -extern void func_801472DC(void); -extern void func_801472F0(void *a0); -extern void func_80147364(u16, s32); -extern void func_80147300(u16 arg0); -extern void func_80147324(s32 arg0); -extern void func_801473EC(s32 *a0); -extern void func_80147460(s32 a0); -extern void func_80147514(); -extern void func_80147628(s32 a0); -extern void func_80147478(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); -extern s32 func_800129CC(s32 a0, s32 a1); -extern void func_80147514(s32 arg0); -extern void func_80013F3C(s32 a0); -extern void func_80012558(s32 a0, s32 a1); -extern void func_800126C4(s32 a0, s32 a1); -extern void func_800123F0(s32 a0, s32 a1); -extern void func_80147718(s32 a0); -extern void func_80147788(void *a0, s32 a1); -extern void func_801477A8(void *a0, s32 a1); -extern void func_801477C8(void *a0, s32 a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80147814(s32 a0, s32 a1); -extern void func_80147928(int a0, int a1); -extern void func_8014799C(int a0, int a1); -extern void func_80147A10(int a0, int a1); -extern void func_80147860(int a0, int a1, int a2, int a3); -extern void func_80147948(s32 a0, s32 a1, s32 a2); -extern void func_801479BC(s32 a0, s32 a1, s32 a2); -extern void func_80147A30(s32 a0, s32 a1, s32 a2); -extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147948(int a0, int a1, int a2); -extern void func_801479BC(int a0, int a1, int a2); -extern void func_80147A30(int a0, int a1, int a2); -extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147A84(s32 arg0); -extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147AAC(s32 arg0); -extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80147B5C(s32 a0, void *a1); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern void func_80147B18(s32 a0); -extern void func_80147B5C(s32 arg0, void *arg1); -extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147DC0(s32 a0, s32 a1); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147F50(s32 arg0); -extern void func_80148038(s32 a0, s32 a1); -extern s32 ratan2(s32 a0, s32 a1); -extern s32 csqrt(s32 a0); -extern s32 func_80012A60(s32 a0, s32 a1); -extern void func_80148094(int param_1, short *param_2, int *param_3); -extern void func_801485B8(s32 a0, s32 a1, s32 a2); -extern void func_801484B0(s32 a0, s32 a1); -extern s32 func_80154358(void *a0); -extern void func_801484E8(s32 a0, s32 a1); -extern void func_80148534(s32 a0, s32 a1); -extern void func_8014856C(s32 a0, s32 a1); -extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); -extern void func_80148634(void *a0); -extern u8 D_800B9A64; -extern s32 func_80014DC0(); -extern s32 func_80014D68(); -extern s32 func_80014D94(); -extern s32 func_80014CF8(); -extern void func_800120DC(); -extern s32 func_800CF8B4(); -extern u16 func_801487F4(s32 *a0); -extern u16 func_80148800(s32 *a0); -extern u8 func_8014880C(s32 *a0); -extern u16 func_80148818(s32 *a0); -extern s32 func_80047D3C(s32 a0); -extern s32 func_80148824(void *arg0); -extern s32 func_801488A8(u8 *a0); -extern s32 func_8014891C(s32 a0); -extern s32 func_80148980(u8 *a0); -extern s32 func_801489E8(s32 a0); -extern s32 func_80148A48(s32 a0); -extern int func_80148AFC(void *a0); -extern void func_80148AAC(u8 *a0); -extern s32 func_80148C18(void); -extern s32 func_80148C20(s32 a0, s16 a1); -extern s32 func_80148C34(s32 a0, s32 a1); -extern s32 func_80148C4C(s32 a0, s32 a1); -extern s32 func_80148C64(s32 a0, s32 a1); -extern s32 func_80148C7C(void); -extern s32 func_80148C84(s32 a0, s32 a1); -extern s32 func_80148C9C(s32 a0, s32 a1); -extern s32 func_80148CB4(s32 a0, s32 a1); -extern s32 func_80148CCC(s32 a0, s32 a1); -extern s32 func_80148CE4(void); -extern s32 func_80148CEC(void); -extern s32 func_80148CF4(s32 a0, s32 a1); -extern s32 func_80148D0C(s32 a0, s32 a1); -extern s32 func_80148D24(void *a0, int a1); -extern s32 func_80148D3C(void); -extern s32 func_80148F60(void); -extern s32 func_80148F68(s32 a0); -extern s32 func_80148F74(s32 a0); -extern s32 func_80148F80(s32 a0); -extern s32 func_80148F8C(s32 a0); -extern s32 func_80148F98(void); -extern s32 func_80148FA0(s32 a0); -extern s32 func_80148FAC(s32 a0); -extern s32 func_80148FB8(s32 a0); -extern s32 func_80148FC4(s32 a0); -extern s32 func_80148FD0(void); -extern s32 func_80148FD8(void); -extern s32 func_80148FE0(s32 a0); -extern s32 func_80148FEC(s32 a0); -extern s32 func_80148FF8(s32 a0); -extern s32 func_80149004(void); -extern void func_8014900C(s32 *a0); -extern void func_80149020(s32 *a0); -extern void func_80149034(s32 *a0); -extern void func_80149048(s32 *a0); -extern void func_8014905C(u8 *a0); -extern void func_801490E0(s32 *a0, s16 a1); -extern void func_801490E8(s32 *a0, s16 a1); -extern void func_801490F0(s32 *a0, s16 a1); -extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); -extern void func_801490F8(s32 a0, s32 a1); -extern s32 func_801491C4(s32 a0); -extern s32 func_80149184(s32 a0); -extern s32 D_801151D4; -extern void func_80149204(s32 *a0); -extern void func_80149210(s32 a0, s32 a1); -extern s32 func_80149284(s32 *a0, s32 a1); -extern void func_80149350(s32 arg0); -extern void func_80149290(s32 a0); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_80149374(s32 arg0, s32 arg1); -extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8014942C(s32 arg0); -extern void func_8012EF70(s32 a0, s32 a1); -extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012EFB8(s32 a0); -extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); -extern void func_8014964C(s32 param_1, s32 param_2); -extern s32 func_801496D4(void *a0); -extern void func_8015AD08(); -extern void func_80149704(void); -extern void func_8015ACC4(); -extern void func_80149724(void); -extern u8 D_80078EBF; -extern s32 func_80149744(struct S_80149744 *a0); -extern void func_8015F7A0(); -extern void func_80149788(void); -extern void func_801653B8(); -extern void func_80149864(void); -extern s16 currentLocationId; -extern s32 func_8016F1AC(void); -extern s32 func_80149884(void); -extern void func_80160B00(); -extern void func_801498C0(void); -extern s32 func_80149AA8(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern void func_80146750(void *a0); -extern s32 func_801498E0(s32 *a0); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_80147364(u16 a0, s32 a1); -extern s32 func_800CCF28(s32 a0); -extern u8 D_80126B5C; -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_8015DAC4(s32 *a0); -extern void func_8015554C(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern void func_80149B14(s32 *a0); -extern u8 func_8014BEF8(void); -extern s32 func_80149B54(s32 * arg0); -extern void func_8015DE24(s32 *a0); -extern void func_80157510(s32 *a0); -extern void func_80149BAC(s32 *a0); -extern s32 func_80029178(s32 a0); -extern s32 func_80149C08(s32 arg0); -extern void func_801577C8(); -extern void func_80149C94(void); -extern void func_80157D20(void); -extern void func_80149CB4(void); -extern s32 func_80149CD4(s32 a0); -extern u8 func_8014B5B8(s32 *a0); -extern s32 func_80149D10(s32 a0); -extern s32 func_80149E94(s32 a0); -extern s32 func_80149DD8(s32 a0); -extern s32 func_80149D9C(s32 a0); -extern u8 D_801202A0[]; -extern s32 func_80149F2C(s32 a0, s32 a1); -extern s32 func_80149E94(s32 arg0); -extern void func_80149FA8(void); -extern s32 D_8018D124[]; -extern u8 D_80078E78[]; -extern s32 func_80149FB0(s32 a0); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern void func_8014A1B0(s32 a0, s32 a1); -extern s32 func_8014A048(s32 param_1); -extern u16 func_80156370(u16 a0); -extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); -extern void func_8015D4B4(); -extern void func_8014A218(void); -extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); -extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); -extern s32 func_8014A238(s32 arg0); -extern s32 func_8014A2E4(s32 a0); -extern void func_8014A380(s32 a0, s32 a1); -extern s16 D_801152B0; -extern s16 D_801152B4; -extern s32 func_8014A3E0(struct S_8014A3E0 *a0); -extern s32 func_8014A454(s32 a0); -extern s32 func_8014A4B4(void *a0); -extern void func_8015EDD4(); -extern void func_8014A4FC(void); -extern s32 func_8014A674(s32 *a0); -extern s32 func_8014A69C(s32 *a0); -extern s32 func_8014A6C4(s32 a0); -extern void func_8015E184(); -extern void func_8014A830(void); -extern s32 func_80029AF4(void); -extern s32 func_8014A850(s32 param_1); -extern void func_8014AA04(s32 a0); -extern void func_801599A4(void *a0); -extern void func_80159B3C(void *a0); -extern s32 func_80165A20(s32 a0); -extern void func_8014AB7C(); -extern void func_8014AC10(); -extern void func_8014AA28(void); -extern void func_8014AB5C(void); -extern void func_80162CCC(void); -extern void func_8014AB7C(s32 arg0); -extern void func_8014ABF0(void); -extern void func_80016714(void *a0, s32 a1); -extern void func_8014AC10(s32 arg0); -extern void func_8014ACC0(s32 a0, s32 a1); -extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); -extern void func_8014ACE8(void *a0, s32 a1, s32 a2); -extern void func_80146AFC(void *a0); -extern void func_8014ADA8(s32 a0, s32 a1); -extern void func_8014AD7C(s32 a0); -extern s32 D_80078E8C; -extern void func_8014B034(s32 arg0); -extern void func_8014B00C(s32 arg0); -extern void func_8014B084(void); -extern s16 D_80078E90; -extern void func_8014B034(s32 a0); -extern u16 D_80078EAC; -extern u8 D_80078EBA; -extern void func_800D10EC(void); -extern void func_8002AC98(void); -extern s32 func_8014B154(s32 *a0); -extern void func_8014B12C(void); -extern void func_8014B2F8(void); -extern void func_8014B4C4(void); -extern void func_8014B160(s32 a0); -extern s32 func_8016F1C4(void); -extern s16 D_80078E96; -extern s16 D_80078EB8; -extern u16 D_80078EA6; -extern void func_8014B2A8(void); -extern void func_8014B310(void); -extern void func_8014B2D0(void); -extern s32 D_80078E94; -extern s32 D_80078ECC; -extern void func_8014B33C(void); -extern u8 D_80062BF4[]; -extern void func_8014BC80(s32 a0, s32 a1); -extern void func_80019064(void *a0); -extern s32 D_80078E98; -extern void func_80166244(); -extern void func_8014B4D4(void *a0); -extern s16 D_80078E9A; -extern u8 D_80126D1C; -extern s32 D_80126D74; -extern void func_8014B598(s32 a0, s32 a1); -extern void func_8014B5B0(s32 *a0); -extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); -extern void func_8014B5D8(s32 s1); -extern s32 D_80078E9C; -extern s32 D_80078ED0; -extern void func_8014B6F0(s32 a0, s32 a1); -extern void func_8014B768(s32 a0, s32 a1); -extern void func_8014B944(s32 a0, s32 a1, s32 a2); -extern s32 D_80078EA4; -extern u16 D_80078EB2; -extern s16 D_80078EB4; -extern void func_8014BB0C(void); -extern void func_8014BB24(s32 a0, s32 a1, s32 a2); -extern void func_8014BC0C(s32 a0, s32 a1); -extern void func_8014BC44(s32 a0, s32 a1); -extern u8 D_800B9A17; -extern void func_8014BCC0(s32 a0, s32 a1); -extern u16 D_80078EB6; -extern s32 func_8014BCEC(s32 a0, s32 a1); -extern void func_8014BD24(s32 a0, s32 a1); -extern void func_8014BD60(s32 param_1, s32 param_2); -extern void func_8014BD98(s32 a0, u16 a1); -extern void func_8014BDC8(void); -extern void func_8014BDE0(void); -extern s32 func_8017267C(s32 *a0); -extern s32 func_80013294(void *a0, void *a1); -extern void func_80029ED4(s32 a0); -extern void func_8014BDE8(s32 a0); -extern void func_8014BE78(void); -extern void func_8014BE9C(void); -extern void func_80029124(s32 a0, s32 a1); -extern void func_8014BEC0(void); -extern void func_8014BF18(s32 a0); -extern void func_8014BF48(void); -extern u8 func_8014BF6C(void); -extern void func_8014BF8C(u8 arg0); -extern void func_8014BFB0(void); -extern u8 func_8014BFD4(void); -extern void func_8014BFF4(s32 a0, s32 a1); -extern void func_8014C010(s32 a0, s32 a1); -extern s32 func_8014C050(s32 a0, s32 a1); -extern s32 func_8014C088(s32 a0, s32 a1); -extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); -extern s32 func_8014C118(void * a0, s32 a1, s32 a2); -extern s32 func_8014C168(s32 * param_1, s32 param_2); -extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); -extern u8 D_8018D1AC[]; -extern void func_8014C1A0(s32 arg0, s32 arg1); -extern s32 func_80013328(s32 a0, s32 a1); -extern s32 func_8014C59C(void *a0, void *a1); -extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); -extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); -extern s32 ratan2(s32 dx, s32 dy); -extern u8 D_8018D1B4; -extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); -extern s16 func_8014C5D0(s32 a0, s32 a1); -extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); -extern u8 D_80126D17; -extern void func_8014C6AC(void); -extern void func_8014C6C0(void); -extern u8 D_80126D1E; -extern void func_8014C6D0(void); -extern void func_8014C6E0(void); -extern s32 func_8014C860(s32 a0, s32 a1); -extern void func_8014C8C8(s32 a0, s32 *a1); -extern void func_8014C88C(s32 a0); -extern void func_8014C8C8(s32 dst, s32 * src); -extern void func_8014C8F0(s32 arg0); -extern u8 D_801151F0[]; -extern s32 func_8014C918(s32 a0, s32 a1); -extern s32 D_80126B50; -extern void func_8014C968(void); -extern void func_8014C978(void); -extern s32 func_8014C98C(void); -extern void func_80139914(s32 a0); -extern s32 func_8014CA00(s32 a0); -extern u16 func_8014CA70(s32 a0, s32 a1); -extern s32 func_8014CA14(s32 a0, s32 a1); -extern u16 func_8014CAE4(s32 *a0, s32 a1); -extern s32 func_8014CA88(s32 *a0, s32 a1); -extern s32 func_8014CAFC(void); -extern s32 func_8014CB0C(void); -extern s32 func_8014CB1C(void); -extern u8 D_80126D1F; -extern s32 func_8014CB2C(void); -extern s32 func_8014CB58(void); -extern u8 D_80126D1D; -extern void func_8014CB68(void); -extern s32 func_8014CB7C(void); -extern s32 func_8014CB8C(void); -extern short D_80126C9E; -extern void func_8014CB9C(struct Packed8 *a0); -extern s32 D_80126CDC; -extern void func_8014CBD8(void); -extern s16 D_80126CC4; -extern void func_8014CBE8(void); -extern void func_8014CBF8(void *a0); -extern void func_8014D3E0(s32 a0); -extern void func_8014D04C(void); -extern void func_8014CCB4(void); -extern void func_8014CC28(s32 a0); -extern void func_8014CD0C(u8 *a0); -extern s32 func_8014CF04(s32 a0, s32 a1, void *a2); -extern void func_8014CD80(s32 a0, void *a1, void *a2); -extern void func_8014D0A4(s32 a0); -extern s32 func_8014D2A0(s32 a0, void *a1, void *a2); -extern s32 func_8014D12C(s32 a0, void *a1, void *a2); -extern void func_8014D438(s32 a0); -extern void func_8014D3E0(s32 _arg0); -extern void func_8014D610(s32 a0, void *a1, void *a2); -extern s32 func_8014D4C0(s32 a0, void *a1, void *a2); -extern void func_8014D790(s32 a0); -extern void func_8014D738(void); -extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); -extern s32 func_8014D820(s32 a0, u16 *a1, u16 *a2); -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); -extern void func_8014DF94(s32 arg0); -extern void func_8014DF3C(void); -extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ -extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ -extern s16 D_801152AC; -extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); -extern void func_8014E48C(s32 a0); -extern void func_8014E434(void); -extern void func_8014E5B4(s32 a0, void *a1, void *a2); -extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); -extern void func_8014E6F8(struct SubE6F8 *a0); -extern void func_8014E6A0(void); -extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); -extern void func_8014E934(s32 _arg0); -extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); -extern s32 func_8014E98C(void *a0); -extern u16 D_800B99DA; -extern s32 D_801150D8; -extern s16 D_801152AA; -extern u8 D_80126720[]; -extern s16 D_80126724; -extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); -extern s32 func_8014ED80(struct SubED80 *a0); -extern int D_801E9698; -extern void func_8014ED28(s32 _arg0); -extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F24C(struct SubF24C *a0); -extern void func_8014F1F4(void); -extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F4C0(); -extern s32 func_8014F468(void); -extern int func_8014F74C(); -extern int func_8014F6F4(void); -extern u8 D_800D3918[]; -extern u8 D_801152A8[]; -extern s32 D_801152BC; -extern int func_8014F74C(s32 arg0); -extern s32 func_8014FA70(s32 a0); -extern s32 D_801E969C; -extern void func_8014FA04(s32 a0); -extern s32 func_8014FBC0(); -extern s32 func_8014FC18(u8 *self); -extern int func_8014FD54(int param_1); -extern void func_8014FCFC(void); -extern void func_80150170(void *a0); -extern s32 func_8014FE60(void *a0); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_8014FE60(void *e); -extern s32 func_80134510(s32 arg); -extern s32 func_80150150(s32 a, s32 b); -extern s32 func_80150460(s32 a, s32 b); -extern void func_801504D8(u16 *a0); -extern s32 func_80150480(s32 _arg0); -extern s32 func_80150528(void *a0, void *a1, void *a2); -extern s32 func_80150528(void *arg0, void *arg1, void *arg2); -extern s32 func_801506A4(s32 a0, s32 a1); -extern s32 func_801505FC(s32 a0); -extern s32 func_801506A4(s32 arg0, s32 arg1); -extern void func_80150820(s32 a0, s32 a1); -extern void func_8015086C(int param_1); -extern s32 func_801508B4(s32 a0); -extern s32 func_8015094C(s32 a0); -extern short func_801508F8(s32 a0); -extern s32 D_8018D1E4; -extern s32 D_80126990; -extern s32 D_80126994; -extern u8 D_80126948[]; -extern s32 func_80021174(s32 a0, s32 a1); -extern s32 func_8015094C(s32 param_1); -extern void func_80150B9C(void); -extern s32 func_80151184(s32 a0, s32 a1, s32 a2); -extern s32 func_80150BA4(s32 a0); -extern s32 func_801619D0(void *a0); -extern void func_80150BC8(s32 *a0); -extern s32 func_80150480(s32 a0); -extern u16 D_800AE6DC; -extern void func_80150C48(s32 a0); -extern int func_80151184(int arg, int a1, int a2); -extern int func_80150CA0(int arg); -extern void func_80150EC4(s32 a, s32 b); -extern void func_80150CC4(s32 a); -extern void func_80150CE4(s32 a); -extern void func_80150D04(s32 a); -extern void func_80150D24(s32 a); -extern void func_80150D44(s32 a); -extern void func_80150D64(s32 a); -extern void func_80150D84(s32 a); -extern void func_80150DA4(s32 a); -extern void func_80150DC4(s32 a); -extern void func_80150DE4(s32 a); -extern void func_80150E04(s32 a); -extern void func_80150E24(s32 a); -extern void func_80150E44(s32 a); -extern void func_80150EC4(s32 a0, s32 a1); -extern void func_80150E64(s32 a0); -extern void func_80150E84(s32 a0); -extern void func_80150EA4(s32 a0); -extern u8 D_800AE6C0; -extern s16 D_800AE6C8; -extern s16 D_800AE6CA; -extern s16 D_800AE6CC; -extern s32 D_800AE6C4; -extern s16 D_800AE6CE; -extern u8 D_800AE6BE; -extern u8 D_801201F8[]; -extern void func_80150F78(void); -extern void func_80150F80(s32 a0); -extern int func_80150FB4(int arg); -extern void func_80150FD8(s32 a0); -extern int func_80151014(int arg); -extern void func_80151038(s32 a0); -extern int func_80151070(int arg); -extern int func_80151094(int arg); -extern void func_801510B8(void); -extern void func_801510C0(void); -extern int func_801510C8(int arg); -extern int func_801510EC(int arg); -extern s32 func_8012DB84(void); -extern s32 func_80151110(void); -extern void func_80151130(void); -extern int func_80151138(int arg); -extern void func_8015115C(s32 *a0, s16 a1); -extern s32 func_80151164(s32 a0, s32 a1); -extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); -extern void func_801511A8(u8 *a0); -extern void func_801511C4(u8 *a0); -extern int func_80151204(int arg, int a1); -extern int func_801511E0(int arg); -extern int func_80151204(int a0, int a1); -extern void func_80151238(void *a0); -extern void func_8015126C(u16 *p); -extern void func_80151780(s32 a0); -extern void func_801516F0(s32 *a0); -extern void func_8015173C(s32 *a0); -extern s16 D_8011DB1A; -extern s32 D_80127518; -extern s32 D_801151FC; -extern s32 func_801725CC(u8 *a0); -extern s32 func_80029D3C(void); -extern void func_80151878(void); -extern void func_80153B58(s32 *a0); -extern s32 func_80151880(s32 a0); -extern s32 func_801518D8(s32 a0); -extern s32 func_80151944(void); -extern s32 func_80151924(void); -extern void func_8014E934(s32 a0); -extern s32 func_8014F3E8(s32 a0); -extern void func_801519C8(s32 a0); -extern void func_80151980(s32 a0); -extern M2C_UNK D_800D5880; -extern s32 D_800D58AC; -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801519C8(s32 arg0); -extern void func_80151C54(s32 a0); -extern void func_801542DC(s32 *a0, s32 a1); -extern void func_8015BDD0(s32 *a0); -extern void func_80165718(s32 a0); -extern u8 D_800D46E4[]; -extern void func_80151AE4(s32 arg0); -extern void (*D_8018D28C[])(void); -extern void func_80151D24(void *a0); -extern void func_80151DB0(s32 a0); -extern void func_80151D60(void *a0); -extern s32 func_80172630(u8 *a0); -extern s32 D_80062C14; -extern void func_80151DB0(s32 param_1); -extern void func_80151E78(s32 *a0); -extern void func_80151ECC(struct S80151ECC *a0); -extern void func_80151FB4(s32 a0); -extern void func_80151F38(s32 *a0); -extern void func_801553C0(s32 a0); -extern void func_80153C18(); -extern void (*D_8018D2B0[])(void); -extern void func_80152058(void *a0); -extern void func_801520DC(s32 a0); -extern void func_80152094(s32 a0); -extern void func_80147324(s32 a0); -extern u8 D_80062C04[]; -extern M2C_UNK D_8018D2A0; -extern void func_801520DC(s32 arg0); -extern void func_801470B4(s32 a0); -extern void func_8015369C(s32 a0); -extern void func_80152194(s32 *a0); -extern s32 func_801536DC(s32 a0); -extern void func_8015220C(s32 a0); -extern s32 func_80153800(s32 a0); -extern void func_801522CC(s32 a0); -extern void func_80152254(s32 *a0); -extern void (*D_8018D2C4[])(void); -extern void func_80152370(void *a0); -extern void func_801523F4(s32 a0); -extern void func_801523AC(s32 a0); -extern void func_8001382C(s32 a0, void *a1, void *a2); -extern u8 D_8018D2D0[]; -extern void func_801523F4(s32 arg0); -extern void func_801525F4(int); -extern s32 func_801535F4(void *arg0); -extern void func_8015BF48(s32 *a0); -extern void func_80152500(int param_1); -extern void func_801525F4(s32 a0); -extern void (*D_8018D2E0[])(void); -extern void func_80152698(void *a0); -extern void func_80152714(s32 a0); -extern void func_801526D4(s32 a0); -extern void func_80152790(s32 a0); -extern void (*D_8018D2F8[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018D2E8; -extern void func_801528B0(s32 arg0); -extern void func_8015294C(s32 a0); -extern void func_80152A08(s32 a0); -extern void func_80152AC8(s32 a0); -extern void func_80152A50(s32 *a0); -extern void (*D_8018D30C[])(void); -extern void func_80152B6C(void *a0); -extern void func_80152BF0(s32 a0); -extern void func_80152BA8(s32 a0); -extern void func_80152C80(s32 *a0); -extern void func_80152C40(s32 *a0); -extern void (*D_8018D328[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018D318; -extern void func_80152DA8(s32 arg0); -extern void func_80152E4C(s32 a0); -extern void func_80152EFC(s32 a0); -extern void func_80152FBC(s32 a0); -extern void func_80152F44(s32 *a0); -extern void (*D_8018D33C[])(void); -extern void func_80153060(void *a0); -extern void func_801530E4(s32 a0); -extern void func_8015309C(s32 a0); -extern void func_80155440(s32 *a0); -extern void func_801530E4(s32 arg0); -extern void func_80153150(struct S80153150 *a0); -extern void func_801531BC(s32 a0); -extern void func_8015327C(s32 a0); -extern void func_80153204(s32 *a0); -extern void (*D_8018D350[])(void); -extern void func_80153320(void *a0); -extern void func_801533A4(s32 a0); -extern void func_8015335C(s32 a0); -extern void func_80153410(s32 *a0); -extern void func_80153490(s32 a0); -extern void func_80153550(s32 a0); -extern void func_801534D8(s32 *a0); -extern void (*D_8011DB28)(s32 a0); -extern s32 func_801536DC(s32 param_1); -extern void func_800139C8(s32 a0, void *a1, void *a2); -extern s32 func_80153978(s32 a0, u16 *src); -extern s32 func_80133784(s32 a0, void *src, s32 dst); -extern s32 func_801539F8(s32 a0, void *a1); -extern s32 func_801539F8(s32 a0, void * a1); -extern s32 func_8016DA04(s32 a0); -extern s32 func_80153BD8(s32 a0); -extern s32 func_80153BF0(s32 a0); -extern void func_80153C18(void); -extern u16 D_8011F748; -extern void func_80153C30(void); -extern void func_80153C74(s16 a0, s16 a1); -extern s16 D_8011DB18; -extern void func_80153C44(int a0, int a1, s16 a2); -extern s16 D_8011DB0C; -extern s32 D_80115210; -extern void func_80153C8C(void); -extern void func_80153C9C(void); -extern s32 func_80153CBC(void); -extern s32 D_8018D364; -extern void (*D_8018D38C[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018D36C; -extern void func_80153D7C(s32 param_1); -extern void func_8015410C(void); -extern void func_80153E00(s32 param_1); -extern void func_80151664(void); -extern void func_80154134(u8 *a0); -extern void func_80154190(u8 *a0, s32 a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154218(u8 *a0, s32 a1, s32 a2); -extern void func_801541D8(u8 *a0, s32 a1, s32 a2); -extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); -extern void func_801542A4(); -extern void func_801542A4(s32 *a0, s32 a1); -extern void func_8015430C(); -extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); -extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); -extern s32 func_80154358(void * arg0); -extern void func_80154AB4(s32 a0, s32 a1); -extern void func_80154B20(s32 a0, s32 a1, s32 a2); -extern void func_80154AE0(s32 a0, s32 a1, s32 a2); -extern void func_80154B7C(u8 *a0, s32 a1); -extern void func_80154B4C(u8 *a0, s32 a1); -extern void func_80154BC8(void *a0, s32 a1, s32 a2); -extern void func_80154B98(void *a0, s32 a1, s32 a2); -extern u8 D_800D8D10[]; -extern s16 D_80078E9E; -extern void func_801550FC(s32 a0); -extern void func_80154ED8(s32 a0, s32 a1); -extern void func_80154F9C(s32 a0); -extern void func_800183E0(s32 a0); -extern void func_801550FC(s32 arg0); -extern void func_8001D150(s32, s32); -extern void func_8001D130(int, int); -extern void func_80155150(int param_1); -extern s32 D_800DE2A4[]; -extern void func_801552F4(s32 a0); -extern void func_80155344(s32 a0); -extern s32 func_80155394(s32 *a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80029178(s32); -extern int (*D_8018D3D8[])(void); -extern s32 func_80155458(s32 param_1); -extern s32 func_801659DC(u8 *a0); -extern s32 func_801554B8(void *arg0); -extern void func_801555F4(void *a0); -extern void func_80155518(s32 *a0); -extern void func_80155580(void *a0); -extern void (*D_8018D3DC[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern s32 func_80155800(s32 arg0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern s32 func_80029B4C(s32 a0, s32 a1); -extern s32 func_80029BC8(s32 a0, s32 a1); -extern s32 func_80029C44(s32 a0, s32 a1); -extern s32 func_8015640C(s32 a0, s32 a1); -extern s32 rand(void); -extern u32 func_8015616C(s32 param_1, u16 param_2); -extern u16 func_80156370(u16 param_1); -extern s32 func_801564B0(s32 a0); -extern s32 func_8002A1B4(void); -extern s32 func_8002A400(void); -extern s32 func_8002A670(void); -extern s32 func_8002A8E0(void); -extern s32 D_801151E0[]; -extern s32 func_801565C0(void); -extern void func_80156A14(s32 *a0); -extern void func_80156648(s32 *a0); -extern u8 D_8011DAD8[]; -extern s32 func_8014C568(s16 *a0, s16 *a1); -extern void func_801567BC(s32 a0); -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018D840[]; -extern void func_80156A1C(s32 param_1, s32 param_2); -extern s32 D_801150E0[]; -extern void func_80156A88(s32 a0, s32 a1); -extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); -extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); -extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); -extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern s32 func_80135004(s32 a0, void *a1, s32 a2); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801575E4(void *a0); -extern void func_801574DC(s32 *a0); -extern void func_80157544(void *a0); -extern void (*D_8018D850[])(void); -extern void func_8014CC28(s32 a0); /* defined */ -extern s32 func_8014F3E8(s32 a0); /* declared */ -extern void func_8015BDD0(s32 *a0); /* defined */ -extern void func_801575E4(void *a0); /* defined */ -extern void func_80157580(s32 arg0); -extern u8 D_800D4F14[]; -extern void func_801576A8(void *arg0); -extern s32 func_8015773C(u8 *a0); -extern s32 func_8015771C(u8 *a0); -extern s32 func_8015773C(u8 * arg0); -extern int D_801E96D0; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018D878[])(void); -extern void func_80157808(void *param_1); -extern void func_80157880(s32 a0); -extern s32 func_801725A4(u8 *a0); -extern u8 D_800D5128; -extern u8 D_8018D858; -extern void func_801578C0(s32 param_1); -extern void func_80147A84(int); -extern void func_80148038(int, int); -extern void func_80147460(int); -extern void func_80146D90(int); -extern void func_80161450(void *a0); -extern void func_80157A8C(int); -extern void func_80154A74(int, int); -extern unsigned char D_800D5178; -extern unsigned char D_8018D868; -extern void func_8015795C(int param_1); -extern void func_80161D20(s32 a0, s32 a1); -extern void func_80157A8C(s32 a0); -extern void func_8016706C(s32 a0); -extern u8 D_800D51AC[]; -extern void func_80157AC8(s32 param_1); -extern void func_80157B74(int param_1); -extern void func_8016158C(void *a0); -extern void func_8015BE04(s32 *a0); -extern void func_80157BC8(s32 a0); -extern void func_80157CCC(s32 a0); -extern void func_80157DC4(void *a0); -extern void func_80157FC4(void *a0); -extern void func_80157D74(u16 *a0); -extern void (*D_8018D8B8[])(void); -extern void func_80157E38(void *); -extern void func_80157E00(void *a0); -extern void func_80157E38(void * a0); -extern s32 func_80157F64(s32 *a0); -extern s32 func_80156600(void *a0); -extern void func_80157EA4(void *a0); -extern void (*D_8018D8C0[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018D88C; -extern void func_80158038(void * param); -extern u8 D_800D524C[]; -extern void func_80161418(void *a0); -extern void func_801580B4(s32 a0); -extern void func_801581AC(s32 a0); -extern void (*D_8018D8CC[])(void); -extern void func_8015824C(void *a0); -extern void func_801582C0(void *); -extern void func_80158288(void *a0); -extern u8 D_800D52A8[]; -extern void func_801585A4(s32 *a0); -extern void func_801582C0(void *a0); -extern s32 func_801585AC(s32 *a0); -extern u8 D_800D52E8[]; -extern void func_80158344(s32 *a0); -extern s32 func_801615C4(void *a0, s32 a1); -extern u8 D_8018D89C; -extern u8 D_800D533C; -extern void func_80158434(s32 param_1); -extern void func_80158548(s32 param_1); -extern void func_801585EC(u8 *a0); -extern void func_80158794(void); -extern s32 D_801E96D8; -extern s32 D_801E96E4; -extern s32 D_801E96E8; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018D908[])(s32 *); -extern void func_80158AE4(void *a0); -extern void func_80158AB4(void *a0); -extern void func_8016F264(void); -extern void func_80165840(void); -extern void func_801658DC(void); -extern void func_80165A78(s32); -extern void func_80158AE4(void * a0); -extern M2C_UNK D_800D58D8; -extern void func_80158BB0(void *arg0); -extern s32 func_80159404(s32 a0, s32 a1); -extern void func_80158C40(s32 *a0); -extern void func_80158CD8(s32 *a0); -extern s32 func_80159434(s32 a0, s32 a1); -extern void func_80158D60(s32 a0); -extern M2C_UNK D_800D5904; -extern void func_80158E24(s32 *a0); -extern s32 D_8018D8DC[]; -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80158F00(int param_1); -extern u8 D_80110C3C[]; -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80158FA4(s32 param_1); -extern s32 func_801399F0(s32 a0); -extern u8 D_80110C94[]; -extern u8 D_80110CD4[]; -extern void func_80159070(void *a0); -extern s32 func_80029A94(s32); -extern void func_80175454(void); -extern void func_800298BC(void *); -extern void func_8002992C(s32); -extern void func_800CF804(void); -extern void func_800CF818(void); -extern u8 D_80110D0C[]; -extern void func_80159120(s32 a0); -extern void func_801592CC(s32 *a0); -extern u8 D_800AE6BD; -extern s32 D_801E96E0; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018DB58[])(void); -extern void func_80159698(void *a0); -extern s32 func_801596D4(void *a0); -extern void func_80174B6C(void); -extern void func_80129248(s16 a0); -extern void func_8013C938(void); -extern void func_8013CB20(void); -extern void func_8013C98C(void); -extern void func_8002850C(s32, s32, s32); -extern void func_80028620(s32, void *); -extern s16 D_800B9AAC[]; -extern s16 D_800B9B00; -extern u16 D_801270C0; -extern u32 D_800AFAE8[]; -extern char D_8018D978[]; -extern s32 func_801596F0(s32 param_1); -extern s32 func_80159874(void); -extern void func_800167B8(s32 a0); -extern s32 func_8015987C(s32 a0); -extern int func_800167F0(int arg); -extern int func_801598BC(void); -extern void func_80159968(void *a0); -extern void func_801598E0(u8 *a0); -extern void (*D_8018DBFC[])(void); -extern void func_80159A20(void *a0); -extern void func_801599E0(void *a0); -extern void func_80159A18(void); -extern void func_80159BE4(s32); -extern void func_80159B08(s32 *a0); -extern void func_80159B70(void *a0); -extern void func_80159B3C(void * a0); -extern void (*D_8018DD50[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018DB6C; -extern void func_80159BE4(s32 arg0); -extern void func_8015A1C8(s32 a0); -extern void func_8015A2D8(s32); -extern void func_8015A1FC(s32 *a0); -extern void func_8015A264(void *a0); -extern void func_8015A230(s32 *a0); -extern void (*D_8018DD58[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018DB7C; -extern s32 func_80172608(u8 *a0); -extern void func_8015A2D8(s32 param_1); -extern u8 D_800D48DC; -extern s32 func_8015AB7C(s32 a0); -extern s32 D_8011F9C4; -extern s32 func_8015ABD4(s32 a0, s32 a1, s32 a2); -extern s32 func_80161CD0(s32 a0, s32 a1); -extern M2C_UNK D_8018DB9C; -extern void func_8015AC48(s32 arg0); -extern void func_8015AC90(s32 a0); -extern void func_8015ADB0(s32 a0); -extern void func_8015ACC4(s32 *arg0); -extern void func_8015AD3C(void *a0); -extern void func_8015AD08(void *arg0); -extern void (*D_8018DD60[])(void); -extern void func_8015ADB0(s32); -extern void func_8015AD78(s32 a0); -extern void func_8015ADB0(s32 arg0); -extern s32 D_800D4A9C; -extern int func_8015B6F4(int param_1); -extern u8 D_800D4F8C[]; -extern s32 func_8015B7B4(s32 a0); -extern u8 D_800D4BE0[]; -extern s32 func_8014A51C(void); -extern s32 func_8015B858(u8 *a0); -extern s32 D_800D4B48; -extern void func_8015B8F8(s32 *a0); -extern void func_8015BD8C(s32 *a0); -extern s32 func_8015BE94(); -extern void func_8015BE38(struct Obj *a0); -extern s32 func_8015BE74(void); -extern void func_80161124(void *a0); -extern s32 func_8015BE94(s32 *a0); -extern s32 func_8015AE2C(); -extern s32 func_8015BEC4(void); -extern s32 func_8015B950(s32 arg0); -extern s32 func_8015BEE4(void); -extern void func_8015BF04(s32 *a0); -extern void func_8015C0C4(s32 a0); -extern void func_8015BFF4(void *a0); -extern void func_8015BF7C(s32 *a0); -extern void func_8015C030(s32 *a0, s32 a1); -extern void func_8015BFB0(s32 *a0, s32 a1); -extern void (*D_8018DD88[])(void); -extern void func_8015C0C4(s32); -extern void func_8015C08C(s32 a0); -extern s32 func_8015C128(s32 param_1); -extern void func_8015C6A4(void); -extern void func_8015C788(s32 a0); -extern void func_8015C6AC(s32 *a0); -extern void func_8015C714(void *a0); -extern void func_8015C6E0(s32 *a0); -extern void (*D_8018DD94[])(void); -extern void func_8015C788(s32); -extern void func_8015C750(s32 a0); -extern void func_8015CB94(s32 a0); -extern void func_8015CBCC(void); -extern void func_8015CBD4(void); -extern void func_8015CBDC(void); -extern void func_8015CBE4(void); -extern void func_8015CBEC(void); -extern void func_8015CBF4(void); -extern void func_8015CBFC(void); -extern void func_8015CC04(void); -extern void func_8015CC0C(s32 *param_1); -extern void func_8015CC74(s32 *a0); -extern void func_8015CC40(s32 *a0); -extern s32 func_8015CCD0(); -extern s32 func_8015CCB0(void); -extern s32 func_801725E0(u8 *a0); -extern s32 func_8015CCD0(s32 param_1); -extern s32 func_8015CD20(s32 arg0); -extern void func_8015CF24(s32 a0); -extern void func_8015D01C(); -extern void func_8015CF58(s32 *param_1); -extern void func_8015CFC0(s32 *a0); -extern void func_8015CF8C(s32 *a0); -extern void func_8015CFFC(void); -extern void func_8015D01C(int param_1); -extern void (*D_8018DC08[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018DE38; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018CF1C[]; -extern void func_8015D414(int param_1); -extern void func_8015D57C(s32); -extern void func_8015D480(s32 *a0); -extern s32 func_8015D4E8(s16 *a0); -extern void func_8015D4B4(s16 *a0); -extern void func_8015D524(s32 arg0); -extern void func_8015D544(s32 a0); -extern void func_801746DC(void); -extern void func_8015D57C(s32 arg0); -extern s32 func_80161B18(void *a0); -extern s32 func_80161B84(void *a0); -extern void func_80154150(int, int); -extern void func_80149374(int, int); -extern unsigned char D_8018DE4C[]; -extern void func_8015D5E8(int param_1); -extern int func_8015E0D4(int); -extern void func_8015DA5C(s32 a0); -extern void func_8015DB6C(s32 a0); -extern void func_8015DA90(s32 *a0); -extern void func_8015DAF8(s32 *a0); -extern void func_8015DB6C(s32); -extern void func_8015DB34(s32 a0); -extern void func_8015DCB8(s32 a0); -extern void func_8014BD60(s32 a0, s32 a1); -extern int func_8015DD74(int); -extern void func_8015DBD4(void *arg0); -extern int func_8015DC84(int a0); -extern s8 D_8018DE88[]; -extern void func_8015DCB8(s32 param_1); -extern int func_8015DD74(int arg0); -extern void func_8015DECC(s32 a0); -extern void func_8015DDF0(s32 *a0); -extern void func_8015DE58(s32 *a0); -extern void func_8015DECC(s32); -extern void func_8015DE94(s32 a0); -extern void func_8015E018(s32 a0); -extern void func_8015DF34(void *arg0); -extern int func_8015DFE4(int a0); -extern void func_8015E018(s32 param_1); -extern int func_8015E0D4(int a0); -extern void func_8015E22C(s32 a0); -extern void func_8015E150(s32 *a0); -extern s32 func_8015E1B8(s32 a0); -extern void func_8015E184(s32 *arg0); -extern void func_8015E22C(s32); -extern void func_8015E1F4(s32 a0); -extern u8 D_800D4FF4[]; -extern u8 D_800D5098[]; -extern u8 D_800D5060[]; -extern s32 func_8014A850(s32 a0); -extern void func_8015E40C(s32 a0); -extern void func_8015E588(void); -extern void func_8015E4B0(s32 a0); -extern void func_8015E288(s32 a0); -extern u16 D_8018DED0; -extern u16 D_8018DED2; -extern u16 D_8018DED4; -extern s32 D_8018DED8; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -extern void func_8013C9C4(void *a0); -extern s32 D_8018DEE0; -extern void func_8015E5B0(u8 *self); -extern void func_8015E714(s32 *a0); -extern void func_8015E95C(s32); -extern void func_8015E84C(s32 *a0); -extern void func_8015E8E8(s32 *a0); -extern void func_8015E9B8(s32 *a0); -extern void func_8015E8B4(s32 *a0); -extern void func_8015E924(s32 a0); -extern void func_8015E95C(s32 a0); -extern s16 D_801152A0; -extern void func_80160818(s32 *a0); -extern void func_8015ED6C(s32 *a0); -extern void func_8015EE7C(s32); -extern void func_8015EDA0(s32 *a0); -extern s32 func_8015EE08(s32 a0); -extern void func_8015EDD4(s32 *arg0); -extern void func_8015EE44(s32 a0); -extern int D_800D4C48; -extern int D_8018DBEC; -extern void func_8015EE7C(s32 param_1); -extern void func_8015EEE0(void *arg0); -extern void func_8015EF9C(void); -extern void func_8015F080(s32); -extern void func_8015EFA4(s32 *a0); -extern void func_8015F00C(s32 *a0); -extern void func_8015EFD8(s32 *a0); -extern void func_8015F048(s32 a0); -extern void func_8015F080(s32 a0); -extern s32 D_80062BE8; -extern void func_801466F0(s32, s32, s32, s32, s32, s32, s32, s32); -extern s32 func_80161208(void); -extern void func_8015F118(void *a0); -extern void func_8015F260(s32 *a0); -extern void func_8015F380(); -extern void func_8015F2BC(s32 *a0); -extern void func_8015F324(s32 *a0); -extern void func_8015F2F0(s32 *a0); -extern void func_8015F360(void); -extern s32 func_801725B8(u8 *a0); -extern void func_8015F380(void* arg0); -extern void func_8015F738(s32 *a0); -extern void func_8015F848(s32 *a0); -extern void func_8015F76C(s32 *a0); -extern s32 func_8015F7D4(s32 a0); -extern void func_8015F7A0(s32 *arg0); -extern void func_8015F810(s32 *a0); -extern void func_80147078(s32 *, s16); -extern void func_80159B70(void *); -extern void func_8015F89C(void *arg0); -extern void func_8015F948(s32 *param_1); -extern void func_8015F9A4(void *arg0); -extern void func_8015FA24(s32 arg0); -extern void func_8015FBE0(s32 *a0); -extern void func_8015FA44(s32 *a0); -extern void func_8015FAAC(s32 *a0); -extern void func_8015FA78(s32 *a0); -extern s32 func_801612B8(void *a0, s32 a1); -extern void func_8016007C(s32 a0); -extern void func_8015FAE8(void *arg0); -extern void func_8015FCC8(void *param_1); -extern unsigned int D_8018DF64[]; -extern void func_8015FD74(int param_1); -extern s32 func_80028DE0(void); -extern u8 func_80165700(s32 a0, s32 a1); -extern void func_8015FDCC(s32 a0); -extern u8 D_80078EC2; -extern u8 func_801656E8(s32 a0, s32 a1); -extern void func_80165670(s32 a0, s32 a1); -extern void func_8016004C(s32 a0); -extern void func_8015FF20(void *param_1); -extern void func_801601AC(s32 *a0); -extern void func_801600D0(s32 *a0); -extern void func_80160138(s32 *a0); -extern void func_80160104(s32 *a0); -extern void func_80160174(s32 *a0); -extern void func_801601E4(s32 *a0); -extern void func_80160244(s32 *a0); -extern void func_8016032C(void); -extern void func_80160410(s32 *a0); -extern void func_80160334(s32 *a0); -extern void func_8016039C(s32 *a0); -extern void func_80160368(s32 *a0); -extern void func_801603D8(s32 *a0); -extern u8 D_80062BD0; -extern void func_80160410(s32 * a0); -extern void func_801607B8(s32 *a0); -extern void func_801608C0(s32 *a0); -extern void func_801607E4(s32 *a0); -extern void func_8016084C(s32 *a0); -extern void func_80160888(s32 *a0); -extern void func_80160A28(s32 a0); -extern void func_80160A74(s32 *a0); -extern void func_80160BB4(s32 *a0); -extern void func_80160ACC(s32 *a0); -extern s32 func_80160B34(s32 a0); -extern void func_80160B00(s32 *arg0); -extern void func_80160B70(s32 a0); -extern void func_80160C28(void *arg0); -extern void func_80160CB4(s32 *a0); -extern void func_80160D10(void *arg0); -extern void func_80160DEC(u8 *a0); -extern void func_80160F00(); -extern void func_80160E3C(s32 *a0); -extern void func_80160EA4(); -extern void func_80160E70(s32 *a0); -extern void (*D_8018E014[])(void); -extern void func_80160EA4(void *a0); -extern void func_80160EE0(void); -extern void func_80160F00(void* arg0); -extern void func_800D0F4C(s32 a0); -extern u8 D_80110EC0; -extern void func_80160F70(s32 a0); -extern void func_80160FE0(s32 *a0); -extern void func_80161034(void *a0); -extern void func_80161094(s32 a0); -extern void func_801610FC(void); -extern void func_801483E8(void); -extern s32 func_80161A60(s32 a0); -extern void func_8016130C(void *a0, s32 a1); -extern void func_80161240(void *a0); -extern void func_80161374(void *a0, s32 a1); -extern void func_80161278(void *a0); -extern s32 func_801612B8(void * a0, s32 a1); -extern void func_8016163C(void *a0, s32 a1); -extern void func_80161774(void *a0, s32 a1); -extern s32 func_8016197C(s32 a0, s32 a1); -extern s32 func_80161488(void *a0); -extern void func_80161888(void *a0, s32 a1); -extern void func_801614E4(void *a0); -extern void func_8016191C(void *a0, s32 a1); -extern void func_8016151C(void *a0); -extern void func_80161554(void *a0); -extern s32 func_801615C4(void * arg0, s32 arg1); -extern s32 func_801619A4(s32 *a0); -extern s32 func_80161A00(s32 a0); -extern s32 func_80161A30(s32 a0); -extern int func_801497A8(void); -extern int func_80161BE0(void *param_1); -extern u16 D_8018E044[]; -extern void func_80161C98(int param_1, u32 param_2); -extern void func_80161E08(s32); -extern s32 func_80162438(s32); -extern s32 D_800AE6A8; -extern void func_800D1734(void *); -extern s32 D_8018E0A8; -extern void func_80161D88(void); -extern void func_80161E08(s32 param_1); -extern int func_800291DC(int); -extern int func_800D0E30(void *a0); -extern int func_801620C4(void); -extern s32 func_800D0D7C(s32, s32); -extern int D_801E96F0[]; -extern void func_8016216C(void); -extern u8 D_80078EB0; -extern u8 D_80078EB1; -extern s32 func_801621CC(s32 arg0); -extern void func_801622C4(void); -extern void (*D_8018E0CC[])(void); -extern void func_80162330(void *a0); -extern void func_8014706C(void *a0); -extern s32 func_8016236C(u8 *a0); -extern void func_800D0C48(s32 a0); -extern s32 func_801623B8(s32 *a0); -extern s32 func_800167F0(s32 a0); -extern s32 func_80162414(void); -extern s32 func_80162438(s32 _unused0); -extern int func_801626B8(void); -extern void func_80162714(void); -extern int D_801E9748[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018E114[])(void); -extern void func_80162834(void *a0); -extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80162968(s32 a0); -extern s32 func_80162ACC(u8 *a0); -extern u8 D_800B5CB8; -extern s32 D_8018E104; -extern s32 D_800B5CBC; -extern u8 D_800B5CDF; -extern s32 D_800B5CEC; -extern void func_80162870(s32 param_1); -extern void func_801628F4(s32 *a0); -extern void func_80162968(s32 param_1); -extern void func_80162AC0(s32 *a0, s8 a1); -extern s32 func_80162AE0(u8 *a0); -extern void func_80162AF4(void); -extern void func_80162CC4(void); -extern s32 D_80126D40; -extern void func_80162B1C(void); -extern void func_80162D28(s32 *a0); -extern void func_80162D88(s32 *a0); -extern void func_80162DE8(s32 *a0); -extern void func_80162E48(s32 *a0); -extern void func_80162EA8(s32 *a0); -extern void func_80162F60(s32 arg0, s32 arg1); -extern void func_80162F80(s32 arg0, s32 arg1); -extern void func_80162FA0(s32 arg0, s32 arg1); -extern void func_80162F08(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80162FC0(s32 *a0); -extern void func_80162FF4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801630C4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163194(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg4); -extern void func_8016325C(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163234(s32 a0); -extern s32 D_80115100; -extern s32 func_801632E0(void); -extern s32 D_80115200; -extern s32 func_801632F0(void); -extern u16 D_80126B18[]; -extern void func_80163328(void); -extern s32 func_801633A8(void); -extern s32 func_80163408(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void func_80163534(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, u16 * a5); -extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); -extern char D_801E8DBC[8]; -extern void *memcpy(void *dst, const void *src, unsigned int n); -extern void func_801634D8(s32 param_1, u16 param_2, u16 param_3, s32 param_4, u16 param_5); -extern void func_80157158(); -extern void func_80163664(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801636D0(s32 a0, s32 a1); -extern s32 func_8016380C(struct S8016380C *a0, s32 a1); -extern void *memcpy(void *dst, void *src, s32 n); -extern s32 func_801638A0(u8 *a0, s32 a1); -extern s32 func_80163950(s32 a0); -extern void (*D_8018E11C[])(void); -extern void func_80163A58(void *a0); -extern void func_80163A94(s32 param_1); -extern void func_80163C2C(s32 param_1); -extern void func_80163EC8(s32 param_1); -extern void func_80164270(s32 *a0); -extern void func_80164418(void); -extern void func_80163764(s32 a0); -extern void func_801642AC(s32 a0); -extern void func_8016432C(s32 a0); -extern void func_80164410(void); -extern s32 func_80012DBC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164530(s32 arg0); -extern void (*D_8018E170[])(void); -extern void func_80164744(s32 param_1); -extern void func_8001C810(s32 a0, s32 a1); -extern void func_80164A74(s32 *a0); -extern void func_80164930(s32 a); -extern u16 D_800DF2E0; -extern s32 D_8018E138; -extern s16 D_8018E16C; -extern s16 D_8018E16A; -extern s16 D_8018E168; -extern void func_801647A4(int param_1); -extern void func_80164ACC(); -extern void func_80164864(void *a0); -extern void func_80164930(s32 param_1); -extern s32 func_8014C308(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164ACC(s32 a0); -extern void (*D_8018E17C[])(void); -extern void func_80164BA0(void *a0); -extern void func_8001CD50(s32 a0, s32 a1); -extern void func_800233CC(void *, unsigned short); -extern void func_80164DD0(s32 a0); -extern void func_80164DB0(void); -extern u8 D_801E97A8; -extern u8 D_801E97A9; -extern u8 D_801E97AA; -extern u8 D_801E97AB; -extern u8 D_801E97AC; -extern u8 D_801E97AD; -extern u8 D_801E97AE; -extern u8 D_801E97AF; -extern void func_80164BDC(s32 param_1); -extern void func_80164E40(void); -extern void func_80164CD4(u8 *a0); -extern void func_80164D4C(void *arg0); -extern void (*D_8018E18C[])(void); -extern void func_80164EA4(void *a0); -extern void func_80165124(void *a0); -extern void func_80164EE0(int param_1); -extern s32 func_80165140(s32 a0); -extern void func_801651B8(void *a0); -extern void func_80164F44(void *arg0); -extern void func_80165024(void *a0); -extern void func_80165064(s32 *a0); -extern void func_801650C4(s32 *a0); -extern s32 func_80165140(s32 param_1); -extern s32 func_80165240(s32 a0, s32 a1, s32 a2); -extern s32 D_801E97E8; -extern void func_801651B8(void * param_1); -extern u8 D_80126CF8; -extern void func_8016533C(void); -extern void func_801653F4(s32 a0); -extern void func_80165580(s32 a0); -extern void func_80165374(s32 a0); -extern void func_80165580(s32 _arg0); -extern void func_801653B8(s32 *a0); -extern s32 func_80165624(s32 a0); -extern u8 D_80078EC5; -extern void (*D_8018E1D0[])(void); -extern u8 func_80165658(s32 a0, s32 a1); -extern void func_800CAE0C(s32 a0); -extern void func_801654A8(s32 arg0); -extern void func_80165B28(void *a0); -extern void func_801655E4(s32 a0); -extern u8 D_8018E24C[]; -extern s32 D_8018E26C[]; -extern u8 D_8018E2E8[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018E308[]; -extern u8 D_8018E328[]; -extern void func_800CAF6C(void); -extern void func_80165770(void); -extern void func_801657D8(void); -extern u8 D_80078EC3; -extern void func_801657A0(void); -extern s32 D_80078EA0; -extern s32 D_80078EA8; -extern u8 D_80078EBB; -extern s32 D_80078ED4; -extern s32 D_80078ED8; -extern s32 D_80078EDC; -extern u8 D_80078EE0; -extern void func_80165874(void); -extern s8 D_80078EC4; -extern void func_801658EC(void); -extern s32 func_80165900(void); -extern s32 func_80165910(void); -extern s32 D_8012672C; -extern s32 D_8012811C; -extern s32 D_80126B08; -extern void func_80165938(void); -extern void func_80165958(void); -extern s32 func_80165978(void); -extern void func_80165988(void); -extern s32 func_801659A8(void); -extern void func_801659B8(void); -extern s32 func_801659CC(void); -extern void func_80165A18(void); -extern s32 func_80165A50(s32 _arg0); -extern void func_80165AC8(void); -extern void func_80165A78(s32 arg0); -extern void (*D_8018E3C4[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_8018E440[])(void); -extern void func_80165BB4(u8 *a0); -extern void func_80165B6C(u8 *a0); -extern void func_80165C58(s32 arg0); -extern void func_80165BFC(void *a0); -extern void func_80165C78(void); -extern M2C_UNK D_801E8DCC; -extern void func_80165E2C(u16 *arg0); -extern s32 func_80165FA4(s32 a0, s32 a1, s32 a2); -extern s32 func_80167DBC(s32 a0, s32 a1, s32 a2); -extern s32 func_80167AE0(s32 a0, s32 a1, s32 a2); -extern void func_80165E90(void); -extern void func_80020F34(s32 a0, s32 a1); -extern s32 func_80165FA4(s32 arg0, s32 arg1, s32 arg2); -extern void (*D_8018E44C[])(void); -extern void func_80166018(void *a0); -extern void func_80166054(s32 arg0); -extern void func_801661CC(s32 param_1); -extern void func_80166244(void* arg0); -extern void func_8016629C(void *a0); -extern void func_801662F4(void *a0); -extern void func_8016634C(void *a0); -extern void func_801663A4(void *a0); -extern void (*D_8018E454[])(void); -extern void func_801663FC(void *a0); -extern u8 D_800D387C[]; -extern u8 D_800D3888[]; -extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); -extern void func_800D1FC8(s32 a0, s32 a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern void func_801665B4(); -extern void func_80146C3C(); -extern void func_80166438(u8 *a0); -extern s32 func_80128ED8(s32 param_1, s32 *param_2); -extern void func_800D22E4(s32 a0); -extern void func_801665B4(s32 *a0); -extern void (*D_8018E51C[])(void); -extern void func_80166618(void *a0); -extern void (*D_8018E52C[])(void); -extern void func_80166654(void *a0); -extern s32 func_80166690(s32 param_1, s32 param_2); -extern s32 func_80166994(); -extern s32 func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern s32 func_80167540(s32 arg0); -extern void (*D_8018E53C[])(void); -extern void func_801678B4(void *a0); -extern void RotMatrixYXZ(void *a0, void *a1); -extern void func_80048EAC(void *a0, void *a1); -extern s32 func_801670E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80146C3C(void); -extern void func_801678F0(s32 a0); -extern void (*D_8018E548[])(void); -extern void func_80167A9C(void *a0); -extern void func_80167AD8(void); -extern s32 func_80167AE0(s32 param_1, s32 param_2, s32 param_3); -extern void func_80168070(s32 a0, s16 *a1, s16 *a2, void *a3); -extern u8 D_8018E4A8[]; -extern u8 D_8018E4BC[]; -extern s32 func_80167DBC(s32 arg0, s32 arg1, s32 arg2); -extern void func_800D20C0(void *a0, void *a1, s32 a2); -extern void func_80017E68(void *a0, void *a1); -extern void func_800D23D0(void *a0); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern s32 D_801269A4; -extern s32 D_801269A8; -extern s32 D_801269AC; -extern void func_80168070(s32 param_1, s16 *param_2, s16 *param_3, void *param_4); -extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_8016829C(s32 a0); -extern s32 func_80166690(s32 a0, s32 a1); -extern void func_80168328(s32 arg0); -extern void func_801683D8(s32 a0); -extern void func_801684B4(s32 a0); -extern void func_80168540(s32 a0); -extern void func_801685EC(s32 a0); -extern void func_80168640(s32 a0); -extern s32 RotMatrixX(s32 a0, void *a1); -extern void func_80168664(void *arg0); -extern void (*D_8018E560[])(void); -extern void func_80168744(void *a0); -extern void func_80168BDC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801687CC(s32 a0); -extern void func_80168780(s32 a0); -extern void func_80168828(void); -extern void func_801687CC(s32 param_1); -extern void func_80168828(); -extern void (*D_8018E568[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_8018E570[])(void); -extern void func_80168AA8(void *a0); -extern void func_80168AE4(s32 a0); -extern void func_800D2318(void); -extern void func_80168BDC(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void (*D_8018E578[])(void); -extern void func_80168D58(void *a0); -extern void func_80168D94(int a0); -extern void func_80168F40(); -extern void func_80168EC4(s32 a0); -extern void func_80168F40(void *arg0); -extern void (*D_8018E580[])(void); -extern void func_8016901C(void *a0); -extern void func_80169058(s32 a0); -extern s32 func_80169228(void); -extern void func_801691B8(void *a0); -extern void (*D_8018E588[])(void); -extern void func_801693CC(void *a0); -extern void func_80169584(s32 param_1); -extern void func_80169408(s32 a0); -extern void func_8016951C(int param_1); -extern s32 func_80017758(void *a0, void *a1); -extern s32 func_80017DC4(void *a0, void *a1); -extern void func_801696D8(s32 a0, s32 a1); -extern void (*D_8018E590[])(void); -extern void func_80169830(void *a0); -extern void func_8016986C(s32 a0); -extern s32 func_80169A4C(s32 a0, s32 a1); -extern void func_801699D0(void *arg0); -extern void (*D_8018E644[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_8018E64C[])(void); -extern void func_80169F00(void *a0); -extern char D_8018E5FC[]; -extern char D_8018E5BC[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8018E684[])(void); -extern void func_8016A020(void *a0); -extern void func_8016A05C(void *a0); -extern void func_8016A290(s32 a, void *b, void *c); -extern void func_8016A08C(s32 param_1); -extern void func_8016A1CC(int param_1); -extern void func_8016A290(s32 param_1, void *param_2, void *param_3); -extern void (*D_8018E690[])(void); -extern void func_8016A700(void *a0); -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_80126B62; -extern u16 D_80126B66; -extern void func_8016AA50(s32 param_1, s32 param_2); -extern void (*D_8018E6D8[])(void); -extern void func_8016AB30(void *a0); -extern void func_8016B234(void); -extern void func_8016AFB0(s32 a0); -extern void func_8016B114(void *arg0); -extern s32 func_8016B448(s32, s32); -extern s32 func_8016BA48(s32 a0); -extern void func_8016B3F4(s32 a0); -extern s32 func_8016B428(s32 a0); -extern void func_8016B984(void *a0); -extern s32 func_8016B448(s32 arg0, s32 arg1); -extern void (*D_8018E754[])(void); -extern void func_8016B4BC(void *a0); -extern int func_8016B9F8(int); -extern int func_8016B834(int, int); -extern void func_8016B91C(int); -extern int D_801E9B08; -extern void func_8016B4F8(int param_1); -extern s32 func_8016B9F8(s32 param_1); -extern void func_8016B6BC(s32, s32, s32, s32); -extern void func_8016B91C(s32); -extern s16 D_8018E748[]; -extern void func_8016B5C0(s32 param_1); -extern void func_8001CD9C(int, void *); -extern int *D_8018E78C[]; -extern unsigned short D_8018E794[]; -extern unsigned short D_8018E79C[]; -extern unsigned char D_801E9B10[]; -extern int func_8016B834(int param_1, int param_2); -extern void func_8016B964(SrcB964 *a0, DstB964 *a1); -extern void func_8016B91C(s32 arg0); -extern s32 D_801E9B08; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8018E7A4[])(void); -extern void func_8016BBA4(void *a0); -extern s32 func_8016BBE0(s32 param_1); -extern void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3); -extern M2C_UNK D_801E9C44; -extern M2C_UNK D_801E9C48; -extern void func_8016BCC0(void *arg0); -extern s32 func_8016BD78(s32 param_1); -extern s32 func_8016BEA0(s32 param_1); -extern void func_8016BF34(void *a0); -extern void func_8016BFD0(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern s32 D_801E9BD0; -extern void (*D_8018E7D4[])(void); -extern void func_8016C14C(void *a0); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801E9C4C[]; -extern u8 D_801E9C54[]; -extern u8 D_801E9C04[]; -extern void func_8016C2C4(s32 param); -extern s32 func_8016C49C(s32 param_1_arg); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_8016C74C(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern short func_8016CF04(s32 a0, s32 a1); -extern void func_8016C83C(s32 a0); -extern void (*D_8018E7DC[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_8018E7F8[])(void); -extern void func_8016D19C(void *a0); -extern void (*D_8018E800[])(void); -extern void func_8016D428(void *a0); -extern void func_8016D464(u8 *a0); -extern void func_8016D4DC(s32 a0); -extern void func_8016D5EC(s32 *a0); -extern short func_8016CBC0(void); -extern void func_8016D64C(int param_1); -extern void func_8016D778(s32 a0); -extern void func_800D20C0(); -extern void func_8016D848(s32 *a0); -extern void func_8016D984(s32 *a0); -extern void func_8016DBD8(u8 *a0); -extern void (*D_8018E868[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_8018E80C; -extern u8 D_8018E818; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void (*D_8018E89C[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8018E8A4[])(void); -extern void func_8016DF20(void *a0); -extern void func_8016E3CC(s32 a0); -extern void func_8016E1CC(s32 a0); -extern void func_8016E26C(s32 *a0); -extern void func_8016E2E8(void *a0); -extern void func_8016E460(void *a0, void *a1); -extern void func_8016E358(void *a0); -extern void func_8016E460(void *arg0, void *arg1); -extern void (*D_8018E8F8[])(void); -extern void func_8016E5B8(void *a0); -extern void func_8016E5F4(s32 arg0); -extern void func_8016E778(); -extern void func_8016E688(void *a0); -extern void func_8016E6E4(s32 a0); -extern void func_8016E728(u8 *a0); -extern void func_8016E7C8(int param_1, short *p1, unsigned int *p2); -extern void func_8016E778(int param_1); -extern void func_8016E7C8(int param_1, short *param_2, unsigned int *param_3); -extern s32 D_80115218; -extern void func_8016E8F0(void); -extern void func_8016E918(short param_1, short param_2); -extern s32 func_8016E95C(); -extern u16 D_8018E92C[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_8018E91C[]; -extern void func_8016EB3C(s32 p); -extern void func_8016EBA8(u8 *param_1); -extern void func_8016ED6C(void); -extern s32 D_80126D70; -extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); -extern void func_8016ED8C(s32 a0, s32 a1, s32 a2); -extern void func_8016EE40(s32 a0, s32 a1, s32 a2); -extern void func_8016EDBC(s32 a0, s32 a1, s32 a2); -extern void func_8016EE94(); -extern void func_8016EDEC(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_8016EF78(s32 a0); -extern void func_8016EE40(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_801726D0(void *a0); -extern s32 D_80126D50; -extern s32 D_80126D54; -extern u8 D_80126D6C; -extern u8 D_80126D6D; -extern u8 D_80126D6E; -extern s32 D_80126D5C; -extern s32 D_80126D60; -extern s16 D_80126D64; -extern s16 D_80126D66; -extern s16 D_80126D68; -extern s16 D_80126D6A; -extern u8 D_80126D1A; -extern s32 D_80127058; -extern s32 D_8012705C; -extern s32 D_80127060; -extern s32 D_80127064; -extern s32 D_80127068; -extern s32 D_8012706C; -extern s32 D_80127070; -extern s32 D_80127074; -extern s16 D_80126D20; -extern void func_8016EE94(s32 a0, s32 a1); -extern s32 func_8016EFC8(s32); -extern s32 func_8016EFA8(s32 a0); -extern void func_8016F094(s32 *a0); -extern s32 func_8016F0AC(); -extern s32 D_8018E948; -extern void func_8016F250(void); -extern void func_8016F288(void); -extern void func_8016F2A8(void); -extern void func_8016F2C8(void); -extern void func_8016F2EC(void); -extern void func_8016F30C(void); -extern void func_8016F330(void); -extern void func_8016F350(void); -extern void func_8016F374(void); -extern void func_8016F388(void); -extern void func_8016F398(void); -extern s32 func_8016F44C(s32 a0); -extern void func_8016F470(s32 a0); -extern s32 func_8016F410(s32 a0); -extern void func_80175414(s32 _arg0); -extern s32 func_8016F4C4(s32); -extern s32 func_8016F494(s32 a0); -extern void func_8016F0E4(void); -extern s32 func_8016F4C4(s32 param_1); -extern void func_8016F4F4(void); -extern void func_801719A4(int a0, int a1); -extern void func_800D1724(s32 a0); -extern void func_80171928(void *a0); -extern void *D_8011F738; -extern void func_8016F4FC(void *a0); -extern void func_8014708C(void *a0); -extern void func_8016F540(void *a0); -extern void func_8016F578(s32 *a0); -extern void func_8016F5B0(void *a0); -extern void func_80147060(u8 *a0); -extern void func_8016F5E0(u8 *a0); -extern void func_8016F610(void *a0); -extern void func_8016F648(void *a0); -extern void func_8016F680(void *a0); -extern void func_8016F6B0(void *a0); -extern void (*D_8018E9C0[])(void); -extern void func_8016F6E0(void *a0); -extern s32 func_80171990(u8 *a0); -extern void func_8016F764(void *a0); -extern void func_8016F71C(u8 *a0); -extern void (*D_8018E9C8[])(void); -extern void func_8016F798(void *a0); -extern void func_8016F804(void *a0); -extern void func_8016F7D4(u8 *a0); -extern void func_80171928(void *); -extern void (*D_8018E9D0[])(void); -extern void func_8016F834(void *a0); -extern void func_8016F8AC(u8 *a0); -extern void func_8016F870(u8 *a0); -extern void func_80172358(u8 *a0, u8 *a1); -extern void (*D_8018E9D8[])(void); -extern void func_8016F8E4(void *a0); -extern void func_8016F95C(void *a0); -extern void func_8016F920(u8 *a0); -extern s32 func_80171CC4(void *a0, void *a1); -extern s32 func_80171D1C(void *a0, void *a1, s32 a2); -extern u16 D_8011F73E; -extern void (*D_8018E9E0[])(void); -extern void func_8016F9C4(void *a0); -extern void func_80171B44(s32 *a0); -extern void func_8016FA44(s32 a0); -extern void func_8016FA00(s32 a0); -extern s32 func_80171C64(s32 a0, s32 a1); -extern void (*D_8018E9E8[])(void); -extern void func_8016FA84(void *a0); -extern void func_8016FB10(void *a0); -extern void func_8016FAC0(u8 *a0); -extern void func_8016FB50(void *a0); -extern void (*D_8018E9F4[])(void); -extern void func_8016FB7C(void *a0); -extern void func_8016FC24(); -extern void func_8016FBB8(s32 a0); -extern s32 func_80171B4C(s32 a0, s32 a1); -extern void func_8016FC24(s32 a0); -extern void func_8016FC64(void *a0); -extern void (*D_8018EA00[])(void); -extern void func_8016FC90(void *a0); -extern void func_8016FD08(u8 *a0); -extern void func_8016FCCC(u8 *a0); -extern s32 func_80172658(s32 *a0); -extern void func_8016FD08(u8 *s0); -extern void func_8016FD7C(s32 *a0); -extern void (*D_8018EA0C[])(void); -extern void func_8016FDB4(void *a0); -extern void func_8016FE2C(u8 *a0); -extern void func_8016FDF0(u8 *a0); -extern void func_8016FE2C(u8 * a0); -extern s32 func_8016FE78(s32 *a0); -extern s32 func_80172664(s32 *a0); -extern void func_8016FED0(s32 *a0); -extern void (*D_8018EA1C[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_8018EA2C[])(void); -extern void func_8016FFDC(void *a0); -extern void func_80170068(u8 *a0); -extern void func_80170018(u8 *a0); -extern void func_801700B8(u8 *a0); -extern void func_80170100(u8 *a0); -extern void (*D_8018EA34[])(void); -extern void func_80170150(void *a0); -extern void func_801701C8(u8 *a0); -extern void func_8017018C(u8 *a0); -extern void func_801701C8(u8 * a0); -extern void (*D_8018EA3C[])(void); -extern void func_80170240(void *a0); -extern void func_801702B8(s32 a0); -extern void func_8017027C(u8 *a0); -extern s16 func_80171AB0(s32 a0, void *a1); -extern void (*D_8018EA44[])(void); -extern void func_801702FC(void *a0); -extern void func_80170374(u8 *a0); -extern void func_80170338(u8 *a0); -extern s32 func_8014C168(s32 *a0, s32 a1); -extern void func_80170374(u8 * a0); -extern void (*D_8018EA4C[])(void); -extern void func_801703E0(void *a0); -extern void func_8017044C(u8 *a0); -extern void func_8017041C(u8 *a0); -extern void func_8017044C(u8 * a0); -extern void (*D_8018EA54[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_8018EA5C[])(void); -extern void func_80170548(void *a0); -extern void func_801705C0(u8 *a0); -extern void func_80170584(u8 *a0); -extern void func_801705C0(u8 * a0); -extern void (*D_8018EA64[])(void); -extern void func_801705F8(void *a0); -extern void func_80170670(void *a0); -extern void func_80170634(u8 *a0); -extern void func_8012A568(void (*a0)(void)); -extern void (*D_8018EA6C[])(void); -extern void func_801706AC(void *a0); -extern void func_80170718(void *a0); -extern void func_801706E8(u8 *a0); -extern void func_80129FF4(void); -extern void (*D_8018EA74[])(void); -extern void func_80170748(void *a0); -extern void func_801707D4(void *a0); -extern void func_80170784(u8 *a0); -extern s32 func_80174ED4(void); -extern void (*D_8018EA7C[])(void); -extern void func_80170810(void *a0); -extern void func_801708B0(void *a0); -extern u8 D_800D5DA8; -extern void func_8017084C(s32 a0); -extern u8 D_800D5A34[]; -extern void func_80170AD8(void *a0); -extern void func_80171904(s32 a0); -extern void func_80170B48(int a0); -extern void func_80170928(void); -extern u8 D_800D59EC[]; -extern void func_80170970(void); -extern u8 D_800D599C[]; -extern void func_801709B8(void); -extern u8 D_800D5934[]; -extern void func_80170A00(void); -extern void func_80170A48(void); -extern u8 D_800D5DC0[]; -extern void func_80170A90(void); -extern void (*D_8018EA84[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_8018EA8C[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8018EA94[])(void); -extern void func_80170C74(void *a0); -extern s32 func_8017197C(u8 *a0); -extern void func_80170CF0(void *a0); -extern void func_80170CB0(u8 *a0); -extern void (*D_8018EA9C[])(void); -extern void func_80170D68(void *a0); -extern void func_80170DE0(u8 *a0); -extern void func_80170DA4(u8 *a0); -extern s32 D_8011F73C; -extern s32 D_8011F740; -extern void func_801718AC(void *a0); -extern void func_80170DE0(u8 * _arg0); -extern void (*D_8018EAA4[])(void); -extern void func_80170E34(void *a0); -extern void func_80170EAC(u8 *a0); -extern void func_80170E70(u8 *a0); -extern int func_800D0F8C(int a0); -extern void func_80170EAC(u8 * _arg0); -extern void (*D_8018EAAC[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8018EAB4[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_8018EABC[])(void); -extern void func_80171064(void *a0); -extern void func_801710DC(u8 *a0); -extern void func_801710A0(u8 *a0); -extern u16 D_8011F73A; -extern void func_801710DC(u8 * arg0); -extern void (*D_8018EAC4[])(void); -extern void func_80171120(void *a0); -extern void func_8017118C(u8 *a0); -extern void func_8017115C(u8 *a0); -extern void func_80142454(s32 a0); -extern void func_8017118C(u8 * a0); -extern void (*D_8018EACC[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8018EAD4[])(void); -extern void func_80171260(void *a0); -extern s32 func_80012F74(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80171384(void *a0); -extern void (*D_8018EADC[])(void); -extern void func_801714E4(void *a0); -extern void func_8017162C(void *a0); -extern void func_80171520(s32 a0); -extern s32 func_801716AC(s32 a0, void *a1, s32 *a2); -extern s32 func_80012FC8(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_800A5E94; -extern u8 D_800A5E95; -extern u8 D_800A5E96; -extern s32 func_801716AC(s32 a0, void * a1, s32 * a2); -extern int func_800D0FE0(int a0); -extern void func_801717A0(void *a0); -extern void func_8013E588(void *a0); -extern void func_801717F4(void *a0); -extern void func_80171824(void *a0); -extern void func_80171854(void *a0); -extern void func_80171884(void); -extern void func_80171A1C(u8 *a0); -extern void func_80171928(void * a0); -extern void func_8017196C(s32 *a0, s8 a1); -extern void func_80171A04(s32 *a0); -extern void func_80171A10(s32 *a0); -extern void func_80171A34(s32 *a0, s8 a1); -extern s32 func_80171A44(u8 *a0); -extern s32 func_80171A58(u8 *a0); -extern s32 func_80171A6C(u8 *a0); -extern void func_80171A80(s32 *a0, s32 a1); -extern s32 func_80171A88(s32 a0); -extern s16 func_80171AB0(s32 param_1, void * _arg1); -extern void func_80171B10(void *a0); -extern void func_80171EC8(s32 a0); -extern s32 func_80171C64(s32 param_1, s32 param_2); -extern s32 func_80171D78(s32 a0, s32 a1); -extern int func_8017250C(short *a0, short *a1); -extern s32 func_80171CC4(void * a0, void * a1); -extern s32 func_80171FFC(short *a0, short *a1, s32 a2); -extern s32 func_80171D1C(void * a0, void * a1, s32 a2); -extern s32 func_8017248C(s32 a0, s32 a1); -extern s32 func_80171E08(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_80047948(s32 a0); -extern s32 func_8004787C(s32 a0); -extern void func_80172170(s32 a0, s32 a1); -extern s32 func_8017209C(void *arg0, void *arg1, s32 arg2, s32 arg3); -extern void func_801722CC(s32 *a0); -extern void func_80172304(s32 *a0); -extern void func_80172310(u8 *a0); -extern void func_801723C4(s32 param_1, s32 param_2); -extern void func_80161C24(s32, s32); -extern void func_80172414(s32 a0); -extern s32 func_801724EC(s32 a0); -extern s32 func_8017248C(s32 arg0, s32 arg1); -extern s32 func_80013450(s32); -extern s32 func_80172560(u8 *a0, u8 *a1); -extern s32 func_8017261C(u8 *a0); -extern s32 func_80172644(u8 *a0); -extern s32 func_80172670(s32 *a0); -extern s32 func_80172688(s32 *a0); -extern s32 func_80172694(s32 *a0); -extern s32 func_801726A0(s32 *a0); -extern s32 func_801726AC(s32 *a0); -extern s32 func_801726B8(s32 *a0); -extern s32 func_801726C4(s32 *a0); -extern s32 func_80172760(s32 a0); -extern s32 func_80174650(s32); -extern void (*D_80127088)(void); -extern s32 D_801270BC; -extern s16 D_80126B0C; -extern void func_801726D0(void * _arg0); -extern void func_80172710(void); -extern void func_80174684(void *); -extern void func_80172738(void); -extern s16 D_80126B30; -extern s32 func_801727D0(void *a0); -extern void func_80172780(void *a0); -extern void func_80172844(u8 *a0); -extern void func_8017280C(u8 *a0); -extern void func_8017288C(void); -extern s32 func_801728E4(void *a0); -extern void func_80172894(void *a0); -extern void func_80172958(u8 *a0); -extern void func_80172920(u8 *a0); -extern s16 D_80126B36; -extern void func_80172958(u8 * a0); -extern void func_801729A8(void); -extern s32 func_801729F0(void *a0); -extern s16 D_80126B34; -extern s16 D_80126B32; -extern void func_801729B0(s32 a0); -extern void func_80172A8C(void *a0); -extern void func_80172A2C(int param_1); -extern void func_80172ACC(u8 *a0); -extern void func_80172B0C(void); -extern s32 func_80172B44(void *a0); -extern void func_80172B14(s16 a0); -extern s32 D_801150F8; -extern void func_80172BC8(void *a0); -extern void func_80172B80(u8 *a0); -extern void func_80172C48(void); -extern void (*D_8018EB20[])(void); -extern void func_80172CA0(void *a0); -extern void func_80172D14(u8 *a0); -extern void func_80172CDC(u8 *a0); -extern void func_80172D14(u8 * a0); -extern void func_80172D60(void); -extern s32 D_80127508; -extern s32 func_80172DAC(void *a0); -extern void func_80172D68(s32 a0); -extern void func_80172E20(u8 *a0); -extern void func_80172DE8(u8 *a0); -extern void func_80172E20(u8 * a0); -extern void func_80172E8C(void); -extern void func_8017303C(void *); -extern void func_80172E94(void); -extern void func_80172ED4(void); -extern void func_80172EFC(void); -extern void func_80172F24(void); -extern u8 D_800D47F4[]; -extern void func_80172F4C(void); -extern void func_80172F9C(void); -extern u8 D_800D5C6C[]; -extern void func_80172FEC(void); -extern s32 func_80173078(void *a0); -extern void func_8017303C(void * a0); -extern void func_801730FC(struct S801730FC *a0); -extern void func_801730B4(s32 a0); -extern void func_8017316C(void); -extern s32 func_8017319C(void *a0); -extern void func_80173174(void); -extern u8 D_800D5AA0[]; -extern void func_80173220(void *a0); -extern void func_801731D8(s32 *a0); -extern M2C_UNK D_8018EAE4; -extern void func_80173220(void * arg0); -extern void func_80173294(void); -extern void func_801732C4(); -extern void func_8017329C(void); -extern void func_801732C4(s32 *a0); -extern void func_8017331C(); -extern void func_801732F4(void); -extern void func_8017331C(s32 *a0); -extern void func_80173374(); -extern void func_8017334C(void); -extern void func_80173374(s32 *a0); -extern void func_801733A4(void); -extern void func_801733CC(s32 a0); -extern void func_801734BC(s32 a0, s32 a1); -extern s16 D_80126B3E; -extern void func_80173460(s32 a0, s32 a1); -extern void func_801734BC(s32 arg0, s32 _unused1); -extern void (*D_8018EB50[])(void); -extern void func_80173544(void *a0); -extern void func_801735B8(u8 *a0); -extern void func_80173580(u8 *a0); -extern s16 D_80126B40; -extern void func_801735EC(void *a0); -extern void func_80173648(u8 *a0); -extern void func_801736A8(void); -extern s32 func_8014C118(void *a0, s32 a1, s32 a2); -extern s32 func_801736FC(void *a0); -extern void func_801736B0(s32 a0, s32 a1); -extern void func_80173770(u8 *a0); -extern void func_80173738(u8 *a0); -extern void func_801723C4(s32 a0, s32 a1); -extern void func_801737B0(void); -extern s32 func_801737E8(void *a0); -extern void func_801737B8(s16 a0); -extern void func_8017385C(u8 *a0); -extern void func_80173824(u8 *a0); -extern void func_801738D4(void); -extern s32 func_8017390C(void *a0); -extern void func_801738DC(s16 a0); -extern void func_80173980(u8 *a0); -extern void func_80173948(u8 *a0); -extern void func_801739D8(u8 *a0); -extern void func_80173A20(void); -extern s32 D_8012750C; -extern void func_80173A60(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80173A28(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void (*D_8018EB8C[])(void); -extern void func_80173B4C(void *a0); -extern void func_80173BC0(u8 *a0); -extern void func_80173B88(u8 *a0); -extern void func_80173C64(u8 *a0); -extern void func_80173E1C(s32 a0); -extern s16 D_80126938; -extern s16 D_80126B3A; -extern void func_800D128C(s32, s32); -extern void func_80174158(s32 a0); -extern void func_8002A088(s32); -extern void func_8002A2D4(s32); -extern void func_8002A544(s32); -extern void func_8002A7B4(s32); -extern s32 func_80174188(s32 a0); -extern void func_801741A8(s32 a0); -extern s32 func_800D0EC4(void); -extern void func_800D0F0C(s32, s32); -extern void func_80145EE8(s32); -extern void func_80173EF8(void *param_1); -extern s32 func_8014BCEC(s32, s32); -extern void func_801741A8(s32 _arg0); -extern s16 D_80126B3C; -extern s16 D_8011F9C8; -extern void func_801741EC(u8 *a0); -extern void func_80174274(void); -extern s32 func_801742A4(void *a0); -extern void func_8017427C(void); -extern void func_80174318(u8 *a0); -extern void func_801742E0(u8 *a0); -extern void func_80174354(void); -extern s32 func_80174384(void *a0); -extern void func_8017435C(void); -extern void func_801743F0(u8 *a0); -extern void func_801743C0(u8 *a0); -extern void func_801743F0(u8 * a0); -extern void func_80174430(void); -extern s32 func_80174474(void *a0); -extern void func_80174438(s32 a0); -extern void func_801744E0(u8 *a0); -extern void func_801744B0(u8 *a0); -extern void func_80174524(void); -extern void func_80174554(); -extern void func_8017452C(void); -extern void func_80174554(s32 arg0); -extern void func_801745AC(); -extern void func_80174584(void); -extern void func_801745AC(s32 *a0); -extern void func_80174604(void); -extern void func_801745DC(void); -extern void func_80174630(void); -extern s32 func_80174650(s32 _arg0); -extern void func_80174674(void); -extern void func_801746A4(void); -extern s32 func_800CF8CC(void); -extern void func_80174714(void); -extern s32 func_80174754(void); -extern s16 func_80174764(void); -extern s16 func_80174774(void); -extern s32 func_801747CC(void *a0); -extern void func_80174784(void); -extern s32 func_801747AC(s32 a0); -extern s32 func_80174808(u8 *a0); -extern void func_8017481C(void); -extern s32 func_80174888(void *a0); -extern void func_80174824(void); -extern void func_8017484C(s32 a0); -extern void func_801748C4(s32 a0); -extern void func_801748E4(void); -extern void func_8012A018(s32 a, s32 b); -extern s32 func_8017496C(void *a0); -extern s32 D_80126954; -extern s32 D_80126950; -extern s32 D_8012695C; -extern s16 D_80126968; -extern s16 D_8012696A; -extern s16 D_8012696C; -extern s16 D_80126976; -extern s16 D_80126978; -extern s16 D_8012697A; -extern void func_801748EC(void); -extern s32 func_801749C8(); -extern s32 func_801749A8(s32 a0); -extern void func_80174BBC(void *a0); -extern void func_8012A0E0(void); -extern void func_80174BF4(void *a0); -extern void (*D_8018EBE4[])(); -extern void func_80174BF4(void * arg0); -extern s32 func_80174CB0(s32, s32); -extern s32 func_80174C60(s32 a0); -extern void func_80174C80(s32 a0); -extern s32 D_8012697C; -extern u16 D_80126980; -extern s32 func_80174F28(void *a0); -extern void func_80174E9C(s32 a0); -extern void func_80174EF0(s32 a0, s16 a1); -extern s32 func_80175014(u8 *a0, u8 *a1, s32 a2); -extern void func_80174F64(u8 *a0); -extern void func_80174FBC(u8 *a0); -extern s32 func_8017509C(u8 *a0, s32 a1, u8 *a2, u8 *a3); -extern void func_80175184(s32 *a0); -extern void func_80175114(s32 *a0); -extern void func_80175184(); -extern void func_80175150(s32 *a0); -extern void (*D_8018EBF4[])(void*); -extern s32 func_80175268(s32); -extern void func_80175184(s32* arg0); -extern s32 func_80175218(void *a0); -extern void func_801751D8(void *a0); -extern void (*D_8018EBFC[])(s32); -extern s32 func_80175218(void * param_1); -extern void func_801752BC(s32 *a0); -extern u8 D_8011F7A8; -extern u8 D_8011F7A9; -extern u8 D_8011F7AD; -extern u8 D_8011F7AE; -extern void func_80175414(s32 _arg0); -extern void func_80175494(void); -extern void (*D_8018ED64[])(); -extern s32 func_801758FC(void); -extern s32 func_80175820(void); -extern s32 func_801759D8(void); -extern void func_8017553C(s32 *param); -extern void func_801757A0(s32 a0); -extern short D_800B9A02; -extern void func_80175590(void *arg0); -extern s16 D_800B9A02; -extern void func_801757A0(s32); -extern void func_80175624(void *a0); -extern void func_801757E0(int); -extern void func_80175668(void); -extern void (*D_8018ED70[])(); -extern void func_80175690(s32 *param); -extern void func_80175DA8(s32 a0); -extern void func_80175AB8(s32 a0); -extern void func_80176144(s32 a0); -extern void func_801756E4(s32 arg0); -extern void func_80175798(void); -extern void func_80176734(s32 a0); -extern void func_80176218(s32 a0); -extern void func_80176D00(s32 a0); -extern void func_801757E0(s32 a0); -extern s32 func_80178004(s32 a0, s32 a1, s32 a2); -extern u8 D_8011F7B1; -extern u16 D_8011F7B4; -extern u16 D_8011F7B6; -extern s16 D_8011F81E; -extern void *func_80177784(void *a0, s32 a1, s32 a2, s32 a3); -extern u32 func_801783D0(s32 a0, s32 a1); -extern void *func_801777BC(void *a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern u16 D_8011F82C; -extern u16 D_8011F82A; -extern u32 * func_80176D94(void *param_1, u32 param_2, s16 param_3_); -extern void func_801778A8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80176FF4(s32 a0); -extern u16 D_8011F830; -extern u16 D_8011F82E; -extern u32 * func_801770E0(void *param_1, u32 param_2, s16 param_3_); -extern void func_80177340(s32 a0); -extern u8 D_8011F837; -extern u8 D_8011F7F0; -extern u8 D_8011F7AB; -extern u32 * func_8017742C(u32 *param_1, s32 param_2, s32 param_3); -extern void func_801776EC(u8 *a0); -extern void * func_80177784(void *a0, s32 a1, s32 a2, s32 a3); -extern uint * func_80177EA4(uint *param_1, int param_2, uint param_3, int param_4); -extern void func_80177F84(s32 param_1, s32 param_2); -extern u32 * func_80178298(u32 *param_1, u8 *param_2, short param_3, short param_4); -extern M2C_UNK D_801E9014; -extern void func_80178438(u16 *arg0); -extern void func_801787D4(void); -extern void func_8012A908(void); -extern void func_8017869C(s32 a0); -extern void func_80130D0C(s32 a0); -extern void func_8013E370(void); -extern s32 D_8011DB08; -extern void func_8017849C(void); -extern void func_8013E4B4(void); -extern s16 D_801270C4; -extern s32 D_801274D8; -extern s16 D_801270C2; -extern u8 D_801270C6; -extern u8 D_801270C7; -extern s32 D_801274DC; -extern s32 D_801274E0; -extern void func_80178608(void); -extern void func_80178744(s32 a0, s32 a1); -extern void func_80178840(); -extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern s32 func_801788B8(s32 arg0, s32 arg1); -extern s32 func_801789AC(s32 arg0); -extern s16 D_801EAFC8; -extern int func_80178970(void); -extern s32 func_80178B18(s32 param_1, s32 param_2); -extern s32 func_80178B70(s32 param_1, s32 param_2); -extern void func_80178BB8(s32 a0, s32 a1); -extern s32 func_80178BF8(); -extern s32 D_801EA388; -extern short D_801EB03C; -extern void func_80178CBC(s32 arg0, s32 arg1); -extern void func_80178D18(void); -/* ==== end §8b carried decl layer ==== */ - - -/* func_80178D40 - 890 ins, 94-case jr switch (jtbl_801D8E24). - * STATUS: **MATCH** -- 890/890 ins, byte-exact (masked). PIN-FREE (this body is - * templated across 134 overlays; a pinned body would crash the sibling TUs). - * python3 tools/match_one.py func_80178D40 --c .run/phase26-cracks/func_80178D40.c \ - * --asm-subdir asm/ov_SC01_077/nonmatchings/ov_SC01_077_jr_801734BC - * => MATCH (890 ins) - * Jump table VERIFIED: 94 entries (= the sltiu 0x5E bound, no trailing zero pad), - * 93 unique blocks, cases 0xF/0x3F share one block; my case->block sequence is - * identical to jtbl_801D8E24's. - * - * Byte-derived structure (the levers that cracked it): - * 1. NO status variable. Every case stores `(*(s16*)&D_801EB03C) = K` DIRECTLY. The shared - * `sh $v0, (*(s16*)&D_801EB03C)` at .L80179AEC is a jump2 CROSS-JUMP merge of those stores: - * find_cross_jump's FIRST call (minimum=1, vs the code before the target label) - * matches that 1 insn, and because it succeeds the jump_chain loop (minimum=2) is - * SKIPPED -- which is what BLOCKS the deeper, wrong 3-insn merges of the identical - * func_80137614 tails (cases 0/0x45/0x32). reorg then steals the `li K` back into - * each `j` delay slot, so it looks un-merged. A `status` pseudo instead of direct - * stores loses that block and costs 6 insns. - * 2. after-switch = `D_801EA388 += 8;` (.L80179AF4) -> the out-of-range default lands - * there with NO explicit `default:` label. - * 3. arg0/arg1/pv are STRUCT pointers. gcc-2.7.2 sched alias (sched.c true_dependence) - * only lets a MEM_IN_STRUCT varying-address load hoist above a non-MEM_IN_STRUCT - * fixed-address store (the (*(s16*)&D_801EB03C) store). Raw `*(T *)(int + off)` casts get - * MEM_IN_STRUCT_P = 0 and block that hoist -> stray nops. - * 4. g = &D_801EAF98 stays a plain `s16 *` (NOT a struct ptr) so its varying, - * non-in-struct stores keep their order w.r.t. the loads. - * 5. Statement order inside the D_801EAF98 cases is load-bearing (sched LUID/priority): - * g[0],g[2],g[1] in 0x25/0x48/0x26; g[7],g[8],g[1],g[3] in 0x4F/0x28. - * 6. Cases 0x5B/0x5C: the loops "found" bodies are emitted BEFORE the case label -> - * source-level labels placed between cases + `goto`. - * 7. Per-case temporaries are BLOCK-LOCAL (local-alloc), not function-scope. - * 8. stack locals declared in slot order (0x10,0x18,0x20,0x28,0x30,0x38,0x40,0x48, - * 0x50,0x58,0x60) -> frame 0x78. - * - * Case 0x5C -- the last 39 residuals. Four levers, all generalizable: - * - * 9. NO-PEEL: a `break` out of a do-while whose target COINCIDES with the loop's own - * natural fall-through exit makes NOTE_INSN_LOOP_BEG be followed by an - * unconditional jump -> jump.c `duplicate_loop_exit_test` (jump.c:599/2131) rotates - * the loop and peels iteration 1 (here `i` was provably 0, so the peeled `i++` - * const-folded to `li $a2,1` and dragged an extra lui/addiu/lw address block with - * it). Writing `goto L5D;` instead of `break;` -- SAME destination, different - * construct -- keeps the loop a plain do-while and the peel disappears. - * RULE: never let a loop's `break` land on the loop's own fall-through label. - * - * 10. SURVIVING REG-REG COPY (residual #1, `addu $v1,$v0,$zero`). A source-level - * `fp = q;` copy ALWAYS dies: cse.c `canon_reg` rewrites every later use of `fp` - * to `q` (qty_first_reg keeps the older reg) and flow deletes the now-dead set. - * To make a copy SURVIVE, its def and its uses must sit in different extended basic - * blocks -- cse resets its hash table at a label with >1 predecessor (a loop top). - * So: TEST THE MEM DIRECTLY, then assign the variable inside the branch body: - * if (arg1->a.w != 0) { fp5c = arg1->a.w; ... do { ... fp5c ... } while (); } - * cse folds the redundant 2nd load into `fp5c = ` (a copy) in the guard - * block, but CANNOT propagate it into the loop body -> the copy is emitted. - * (Assigning `fp5c` BEFORE the test gives one pseudo and no copy -- what we had.) - * - * 11. CROSS-JUMP-MERGED `(*(s16*)&D_801EB03C) = 3` (residual #2). `if (i != 10) { (*(s16*)&D_801EB03C) = 3; - * break; }` lets jump2 tail-merge the `lui/sh` into the shared .L80179AEC tail and - * reorg steal the `li 3` into the `bne` delay slot. Storing it unconditionally - * BEFORE the `if` blocks the merge and costs 3 inline insns. - * - * 12. THE UN-COALESCED LOOP COPY (residual #3, `addu $v1,$a0,$zero` + `addiu $a0,$v1,4`). - * This is loop.c's NON-REPLACEABLE DEST_REG GIV, not a source-level copy (see #10: - * those always die). Recipe -- BOTH halves are needed: - * a) make the pointer an INDEX GIV: `p5c = &D_801EA7E4[i5c];` (a DEST_REG giv) - * b) make it NON-replaceable so loop.c emits `emit_insn_after(move dest,new_reg)` - * (loop.c:3945): record_giv (loop.c:4437) needs the giv used OUTSIDE the loop - * -- so the "found" body goes AFTER the loop and stores through `p5c`. - * c) put the BIV increment (`i5c++`) LAST in the body. loop.c inserts the reduced - * giv's `addiu` immediately BEFORE the biv's increment insn, so `i5c++` at the - * bottom puts `addiu $a0,$v1,4` in the loop-back delay slot. With `i5c++` at - * the TOP the giv-add lands at the top, nothing is left to fill the delay slot, - * and reorg STEALS the loop-top `move` into it (duplicating it: +1 insn). - * - * 13. Loop3 needs its OWN pointer pseudo (`r5c`, not `q5c`). `q5c` is loop1's pointer, - * and in loop1 $v1 is held by `fp5c` -> q5c is forced to $a0, and loop3 inherits it. - * Both "found" bodies then read $a0, become identical, and jump2 CROSS-JUMPS them - * into one block (-2 insns). A distinct pseudo frees loop3 into $v1, so found3 - * (`sw $zero,0($v1)`) differs from found2 (`sw $zero,0($a0)`) and they stay separate. - * RULE: two structurally identical loops must differ in REGISTER, or cross_jump - * merges their tails. - */ - - - - - - -s32 func_80178D40(s32 arg0, s32 arg1) -{ - extern void func_80179B28(s32); - extern s32 func_80137614(s32, s32, s32); - extern void func_8012F214(void *, void *, void *); - extern void func_8012F40C(void *, void *); - extern void func_80179D30(void *); - extern void func_80179D78(void *); - extern void func_80179EA0(void *); - extern void func_80179DCC(s32); - extern void func_80179DF8(void); - extern void func_80179E1C(s32); - extern void func_80179E48(s32); - extern void func_80179E74(s32); - extern void func_80179EE8(s32); - extern void func_80179F14(s32, s32); - extern void func_80179F44(void); - extern void func_80179F6C(s32); - extern void func_80179F98(s32); - extern void func_80179FEC(s32); - extern void func_8017A040(s32); - extern void func_8017A094(s32); - extern void func_8017A0C4(s32); - extern void func_8017A0F4(void); - extern void func_8017A11C(void); - extern void func_8017A144(s32); - extern void func_8017A180(void); - extern void func_8017A1A8(void); - extern void func_8017A1D0(void); - extern void func_8017A1F8(void); - extern void func_8017A220(void); - extern void func_8017A248(void); - extern void func_8017A270(void); - extern void func_8017A298(void); - extern void func_8017A2C0(void); - extern void func_8017A2E8(void); - extern void func_8017A310(void); - extern void func_8017A338(void); - extern void func_8017A360(void); - extern void func_8017A388(void); - extern void func_8017A3B0(void); - extern void func_8017A3D8(void); - extern void func_8017AD0C(s32); - extern void func_8017B238(void *, s32); - extern void func_8017B614(void *, s32); - extern void func_8017B7A8(void *); - extern void func_8017B824(void); - extern void func_8017B880(void); - extern void func_8017B940(void *); - extern void func_8017BA3C(void *, s32); - extern void func_8017BB34(void *, s32); - extern void func_8012A828(void *, s32); - extern s32 func_8012B8A4(void *); - extern void func_8012E88C(void *); - extern void func_8012E8A8(void *); - extern void func_8001AAD0(s32, s32); - extern s32 D_801EA38C; - extern s32 D_801EA7A0; - extern s16 D_801EA7A4; - extern s16 D_801EA7A8; - extern s16 D_801EA7AC; - extern s16 D_801EA7B0; - extern s32 D_801EA7B8; - extern s32 D_801EA7BC; - extern s32 D_801EA7CC; - extern s16 D_801EA7D0; - extern s16 D_801EA7D4; - extern s32 D_801EA7D8; - extern s32 D_801EA7E0; - extern s32 D_801EA7E4[10]; - extern s32 D_801EAEE0; - extern s16 D_801EAF98; - extern s32 D_801EAFC4; - - - SV3_80178D40 v10, v18, v20, v28, v30, v38, v40, v48; - s32 out50[2]; - SV3_80178D40 v58, v60; - Actor_80178D40 *pv = &(*(Actor_80178D40*)&D_80126B58); - s32 i5b, i5c, fp5b, fp5c; - s32 *q5b, *q5c, *p5c, *r5c; - s16 *g = &D_801EAF98; - - switch (((Cmd_80178D40 *)arg1)->op) { - case 1: - func_80179B28(D_801EA7A0); - D_801EA7A0 = func_80137614(((Cmd_80178D40 *)arg1)->a.w, D_801EA7AC, D_801EA7B0 ? 0x48 : 0x40); - (*(s16*)&D_801EB03C) = 2; - break; - case 0: - func_80179B28(D_801EA7A0); - D_801EA7A0 = func_80137614(((Cmd_80178D40 *)arg1)->a.w, D_801EA7A4, D_801EA7A8 ? 0x48 : 0x40); - (*(s16*)&D_801EB03C) = 1; - break; - case 0x45: - ((void (*)(s32))((Cmd_80178D40 *)arg1)->a.w)(((Actor_80178D40 *)arg0)); - if (D_801EAEE0 != 0) { - func_80179B28(D_801EA7A0); - D_801EA7A0 = func_80137614(((Actor_80178D40 *)arg0)->unkDC[1], D_801EA7A4, D_801EA7A8 ? 0x48 : 0x40); - (*(s16*)&D_801EB03C) = 1; - } else { - (*(s16*)&D_801EB03C) = 3; - } - break; - case 0x32: - func_80179B28(D_801EA7A0); - D_801EA7A0 = func_80137614(((Actor_80178D40 *)arg0)->unkDC[((Cmd_80178D40 *)arg1)->a.w], D_801EA7A4, - D_801EA7A8 ? 0x48 : 0x40); - (*(s16*)&D_801EB03C) = 1; - break; - case 2: - func_80179B28(D_801EA7A0); - if (D_801EA7B8 != 0) { - D_801EA388 = D_801EA7B8; - D_801EA7B8 = 0; - (*(s16*)&D_801EB03C) = 3; - return; - } - (*(s16*)&D_801EB03C) = 6; - break; - case 6: - func_80179DF8(); - (*(s16*)&D_801EB03C) = 3; - break; - case 3: - v10.vx = ((Cmd_80178D40 *)arg1)->a.uh[0]; - v10.vy = 0; - v10.vz = ((Cmd_80178D40 *)arg1)->a.uh[1]; - func_80179D30(&v10); - (*(s16*)&D_801EB03C) = 3; - break; - case 4: - v10.vx = ((Cmd_80178D40 *)arg1)->a.uh[0]; - v10.vy = 0; - v10.vz = ((Cmd_80178D40 *)arg1)->a.uh[1]; - func_8012F214(((Actor_80178D40 *)arg0), &v10, &v18); - func_80179D30(&v18); - (*(s16*)&D_801EB03C) = 3; - break; - case 0x4C: - func_80179D78((void *)((Cmd_80178D40 *)arg1)->a.w); - (*(s16*)&D_801EB03C) = 3; - break; - case 0x4D: - v10.vx = ((Blk_80178D40 *)((Cmd_80178D40 *)arg1)->a.p)->f0; - v10.vy = 0; - v10.vz = ((Blk_80178D40 *)((Cmd_80178D40 *)arg1)->a.p)->f4; - func_8012F214(((Actor_80178D40 *)arg0), &v10, &v18); - v18.pad = ((Blk_80178D40 *)((Cmd_80178D40 *)arg1)->a.p)->f6; - func_80179D78(&v18); - (*(s16*)&D_801EB03C) = 3; - break; - case 0x15: - v10.vx = ((Cmd_80178D40 *)arg1)->a.uh[0]; - v10.vy = 0; - v10.vz = ((Cmd_80178D40 *)arg1)->a.uh[1]; - func_8012F214(((Actor_80178D40 *)arg0)->unkD4, &v10, &v18); - func_80179D30(&v18); - (*(s16*)&D_801EB03C) = 3; - break; - case 5: - func_80179DCC(((Cmd_80178D40 *)arg1)->a.h[0]); - (*(s16*)&D_801EB03C) = 3; - break; - case 7: - func_80179E1C(((Cmd_80178D40 *)arg1)->a.h[0]); - (*(s16*)&D_801EB03C) = 3; - break; - case 8: - func_80179E74(((Cmd_80178D40 *)arg1)->a.h[0]); - (*(s16*)&D_801EB03C) = 3; - break; - case 9: - v10.vx = ((Cmd_80178D40 *)arg1)->a.uh[0]; - v10.vy = 0; - v10.vz = ((Cmd_80178D40 *)arg1)->a.uh[1]; - func_80179EA0(&v10); - (*(s16*)&D_801EB03C) = 3; - break; - case 0xA: - v10.vx = ((Actor_80178D40 *)arg0)->unk6; - v10.vy = ((Actor_80178D40 *)arg0)->unkA; - v10.vz = ((Actor_80178D40 *)arg0)->unkE; - func_80179EA0(&v10); - (*(s16*)&D_801EB03C) = 3; - break; - case 0x16: { - Actor_80178D40 *p = ((Actor_80178D40 *)arg0)->unkD4; - v10.vx = p->unk6; - v10.vy = p->unkA; - v10.vz = p->unkE; - func_80179EA0(&v10); - (*(s16*)&D_801EB03C) = 3; - break; - } - case 0xB: - func_8017A0F4(); - (*(s16*)&D_801EB03C) = 3; - break; - case 0xC: - func_8017A11C(); - (*(s16*)&D_801EB03C) = 3; - break; - case 0xD: - func_8017A180(); - (*(s16*)&D_801EB03C) = 3; - break; - case 0xE: - func_8017A1A8(); - (*(s16*)&D_801EB03C) = 3; - break; - case 0x10: - func_8017A1D0(); - (*(s16*)&D_801EB03C) = 3; - break; - case 0x46: - func_8017A1F8(); - (*(s16*)&D_801EB03C) = 3; - break; - case 0x59: - func_8017A220(); - (*(s16*)&D_801EB03C) = 3; - break; - case 0x5A: - func_8017A248(); - (*(s16*)&D_801EB03C) = 3; - break; - case 0x49: - func_8017A144(((Cmd_80178D40 *)arg1)->a.w); - (*(s16*)&D_801EB03C) = 3; - break; - case 0x47: - func_8017A270(); - (*(s16*)&D_801EB03C) = 3; - break; - case 0x17: - func_80179EE8(((Cmd_80178D40 *)arg1)->a.h[0]); - (*(s16*)&D_801EB03C) = 3; - break; - case 0x18: - func_80179F14(((Cmd_80178D40 *)arg1)->a.h[0], ((Cmd_80178D40 *)arg1)->a.h[1]); - (*(s16*)&D_801EB03C) = 3; - break; - case 0x19: - func_80179F6C(((Cmd_80178D40 *)arg1)->a.h[0]); - (*(s16*)&D_801EB03C) = 3; - break; - case 0x1A: - func_80179F98(((Cmd_80178D40 *)arg1)->a.w); - (*(s16*)&D_801EB03C) = 3; - break; - case 0x51: - func_8017A040(((Cmd_80178D40 *)arg1)->a.w); - (*(s16*)&D_801EB03C) = 3; - break; - case 0x1B: - D_801EA7D8 = ((Cmd_80178D40 *)arg1)->a.w; - func_80179F44(); - (*(s16*)&D_801EB03C) = 3; - break; - case 0x1C: - func_8017A338(); - (*(s16*)&D_801EB03C) = 3; - break; - case 0x52: - func_8017A360(); - (*(s16*)&D_801EB03C) = 3; - break; - case 0x1D: - func_8017A388(); - (*(s16*)&D_801EB03C) = 3; - break; - case 0x3B: - func_8017A094(((Cmd_80178D40 *)arg1)->a.w); - (*(s16*)&D_801EB03C) = 3; - break; - case 0x3C: - func_8017A0C4(((Cmd_80178D40 *)arg1)->a.w); - (*(s16*)&D_801EB03C) = 3; - break; - case 0xF: - case 0x3F: - (*(s16*)&D_801EB03C) = 4; - D_801EA38C = ((Cmd_80178D40 *)arg1)->a.w; - break; - case 0x3E: - (*(s16*)&D_801EB03C) = 5; - D_801EA7CC = ((Cmd_80178D40 *)arg1)->a.w; - break; - case 0x40: - D_801EA7CC = (s32)func_8017A3B0; - (*(s16*)&D_801EB03C) = 5; - break; - case 0x23: - func_8012A828(((Actor_80178D40 *)arg0), ((Cmd_80178D40 *)arg1)->a.w); - (*(s16*)&D_801EB03C) = 3; - break; - case 0x31: - func_8012A828(((Actor_80178D40 *)arg0), ((Actor_80178D40 *)arg0)->unkDC[((Cmd_80178D40 *)arg1)->a.w]); - (*(s16*)&D_801EB03C) = 3; - break; - case 0x24: - (*(s16*)&D_801EB03C) = 3; - ((Actor_80178D40 *)arg0)->unk20->unk12 = ((Cmd_80178D40 *)arg1)->a.w; - break; - case 0x25: - g[0] = 1; - g[2] = ((Actor_80178D40 *)arg0)->unk20->unk12 + ((Cmd_80178D40 *)arg1)->a.uh[0]; - g[1] = 0x1E; - (*(s16*)&D_801EB03C) = 3; - g[3] = ((Cmd_80178D40 *)arg1)->a.uh[1]; - break; - case 0x48: - g[0] = 1; - g[2] = ((Cmd_80178D40 *)arg1)->a.uh[0]; - g[1] = 0x1E; - (*(s16*)&D_801EB03C) = 3; - g[3] = ((Cmd_80178D40 *)arg1)->a.uh[1]; - break; - case 0x26: - g[0] = 1; - g[2] = func_8012B8A4(((Actor_80178D40 *)arg0)); - g[1] = 0x1E; - (*(s16*)&D_801EB03C) = 3; - g[3] = ((Cmd_80178D40 *)arg1)->a.w; - break; - case 0x3D: - ((void(*)(void *, s32))func_8012E8E0)(((Actor_80178D40 *)arg0), ((Cmd_80178D40 *)arg1)->a.w); - (*(s16*)&D_801EB03C) = 3; - break; - case 0x27: - g[0] = 2; - g[4] = ((Cmd_80178D40 *)arg1)->a.uh[0]; - (*(s16*)&D_801EB03C) = 3; - g[1] = ((Cmd_80178D40 *)arg1)->a.uh[1]; - break; - case 0x4F: - g[5] = 1; - g[0] = 3; - g[6] = ((Cmd_80178D40 *)arg1)->a.uh[0]; - (*(s16*)&D_801EB03C) = 3; - g[7] = ((Actor_80178D40 *)arg0)->unkA; - g[8] = ((Cmd_80178D40 *)arg1)->a.uh[1]; - g[1] = 0x10; - g[3] = 4; - /* fallthrough */ - case 0x28: - g[5] = 0; - g[0] = 3; - g[6] = ((Cmd_80178D40 *)arg1)->a.uh[0]; - (*(s16*)&D_801EB03C) = 3; - g[7] = ((Actor_80178D40 *)arg0)->unkA; - g[8] = ((Cmd_80178D40 *)arg1)->a.uh[1]; - g[1] = 0x10; - g[3] = 4; - break; - case 0x29: - v20.vx = ((Cmd_80178D40 *)arg1)->a.uh[0]; - v20.vy = ((Actor_80178D40 *)arg0)->unkA; - v20.vz = ((Cmd_80178D40 *)arg1)->a.uh[1]; - func_8012F214(((Actor_80178D40 *)arg0), &v20, &v28); - g[5] = 0; - g[0] = 3; - *(SV3_80178D40 *)(g + 6) = v28; - g[1] = 0x10; - g[3] = 4; - (*(s16*)&D_801EB03C) = 3; - break; - case 0x50: - v30.vx = ((Cmd_80178D40 *)arg1)->a.uh[0]; - v30.vy = ((Actor_80178D40 *)arg0)->unkA; - v30.vz = ((Cmd_80178D40 *)arg1)->a.uh[1]; - func_8012F214(((Actor_80178D40 *)arg0), &v30, &v38); - g[5] = 1; - g[0] = 3; - *(SV3_80178D40 *)(g + 6) = v38; - g[1] = 0x10; - g[3] = 4; - (*(s16*)&D_801EB03C) = 3; - break; - case 0x2A: - g[0] = 4; - (*(s16*)&D_801EB03C) = 3; - g[1] = ((Cmd_80178D40 *)arg1)->a.w; - break; - case 0x1E: - func_8017B238(((Actor_80178D40 *)arg0), ((Cmd_80178D40 *)arg1)->a.w); - (*(s16*)&D_801EB03C) = 3; - break; - case 0x21: - func_8017BA3C(((Actor_80178D40 *)arg0), ((Cmd_80178D40 *)arg1)->a.w); - func_8017B238(((Actor_80178D40 *)arg0), (s32)&D_801EA7BC); - (*(s16*)&D_801EB03C) = 3; - break; - case 0x54: - func_8017BB34(((Actor_80178D40 *)arg0), ((Cmd_80178D40 *)arg1)->a.w); - func_8017B238(((Actor_80178D40 *)arg0), (s32)&D_801EA7BC); - (*(s16*)&D_801EB03C) = 3; - break; - case 0x1F: - func_8017B614(((Actor_80178D40 *)arg0), ((Cmd_80178D40 *)arg1)->a.w); - (*(s16*)&D_801EB03C) = 3; - break; - case 0x22: - func_8017BA3C(((Actor_80178D40 *)arg0), ((Cmd_80178D40 *)arg1)->a.w); - func_8017B614(((Actor_80178D40 *)arg0), (s32)&D_801EA7BC); - (*(s16*)&D_801EB03C) = 3; - break; - case 0x55: - func_8017BB34(((Actor_80178D40 *)arg0), ((Cmd_80178D40 *)arg1)->a.w); - func_8017B614(((Actor_80178D40 *)arg0), (s32)&D_801EA7BC); - (*(s16*)&D_801EB03C) = 3; - break; - case 0x20: - func_8017B7A8(((Actor_80178D40 *)arg0)); - (*(s16*)&D_801EB03C) = 3; - break; - case 0x4E: - D_801EA7E0 = ((Cmd_80178D40 *)arg1)->a.w; - func_8017B940(((Actor_80178D40 *)arg0)); - (*(s16*)&D_801EB03C) = 3; - break; - case 0x57: - func_8017B824(); - (*(s16*)&D_801EB03C) = 3; - break; - case 0x58: - func_8017B880(); - (*(s16*)&D_801EB03C) = 3; - break; - case 0x2B: - (*(s16*)&D_801EB03C) = 3; - ((Actor_80178D40 *)arg0)->unk2 = ((Cmd_80178D40 *)arg1)->a.w; - break; - case 0x2C: - (*(s16*)&D_801EB03C) = 3; - ((Actor_80178D40 *)arg0)->unk34 = ((Cmd_80178D40 *)arg1)->a.w; - break; - case 0x2D: - (*(s16*)&D_801EB03C) = 3; - ((Actor_80178D40 *)arg0)->unkD8 = ((Cmd_80178D40 *)arg1)->a.w; - break; - case 0x2F: - (*(s16*)&D_801EB03C) = 3; - ((Actor_80178D40 *)arg0)->unk10A = ((Cmd_80178D40 *)arg1)->a.w; - break; - case 0x2E: - (*(s16*)&D_801EB03C) = 3; - ((Actor_80178D40 *)arg0)->unkF8 = ((Cmd_80178D40 *)arg1)->a.w; - break; - case 0x11: - func_8017A298(); - (*(s16*)&D_801EB03C) = 3; - break; - case 0x12: - func_8017A2C0(); - (*(s16*)&D_801EB03C) = 3; - break; - case 0x13: - func_8017A2E8(); - (*(s16*)&D_801EB03C) = 3; - break; - case 0x14: - func_8017A310(); - (*(s16*)&D_801EB03C) = 3; - break; - case 0x33: { - void (*f)(Actor_80178D40 *) = (void (*)(Actor_80178D40 *))((Cmd_80178D40 *)arg1)->a.w; - D_801EAFC4 = (s32)&((Cmd_80178D40 *)arg1)[1]; - f(((Actor_80178D40 *)arg0)); - (*(s16*)&D_801EB03C) = 3; - break; - } - case 0x30: - if (((Cmd_80178D40 *)arg1)->a.w == 0) { - func_8012E8A8(((Actor_80178D40 *)arg0)); - (*(s16*)&D_801EB03C) = 3; - } else { - func_8012E88C(((Actor_80178D40 *)arg0)); - (*(s16*)&D_801EB03C) = 3; - } - break; - case 0x4A: - ((void(*)())func_80175414)(); - (*(s16*)&D_801EB03C) = 3; - break; - case 0x4B: - func_80175454(); - (*(s16*)&D_801EB03C) = 3; - break; - case 0x34: - (*(s16*)&D_801EB03C) = 3; - D_801EA388 = ((Cmd_80178D40 *)arg1)->a.w; - return; - case 0x35: - D_801EA7B8 = (s32)&((Cmd_80178D40 *)arg1)[1]; - (*(s16*)&D_801EB03C) = 3; - D_801EA388 = ((Cmd_80178D40 *)arg1)->a.w; - return; - case 0x36: - (*(s16*)&D_801EB03C) = 3; - D_801EA388 += 8; - if (((s32 (*)(s32))((Cmd_80178D40 *)arg1)->a.w)(((Actor_80178D40 *)arg0)) == 0) { - break; - } - D_801EA388 = *(s32 *)(D_801EA388 + 4); - return; - case 0x37: - (*(s16*)&D_801EB03C) = 3; - D_801EA7A4 = ((Cmd_80178D40 *)arg1)->a.uh[0]; - D_801EA7A8 = ((Cmd_80178D40 *)arg1)->a.uh[1]; - break; - case 0x38: - (*(s16*)&D_801EB03C) = 3; - D_801EA7AC = ((Cmd_80178D40 *)arg1)->a.uh[0]; - D_801EA7B0 = ((Cmd_80178D40 *)arg1)->a.uh[1]; - break; - case 0x39: { - s32 w1, w2; - v40.vx = ((Actor_80178D40 *)arg0)->unk6; - v40.vy = ((Actor_80178D40 *)arg0)->unkA; - v40.vz = ((Actor_80178D40 *)arg0)->unkE; - v48.vx = pv->unk6; - v48.vy = pv->unkA; - v48.vz = pv->unkE; - func_8012F40C(out50, &v40); - w1 = out50[0]; - func_8012F40C(out50, &v48); - w2 = out50[0]; - (*(s16*)&D_801EB03C) = 3; - D_801EA7A4 = w1; - D_801EA7A8 = (s16)w1 >= (s16)w2; - break; - } - case 0x3A: { - s32 w1, w2; - v58.vx = ((Actor_80178D40 *)arg0)->unk6; - v58.vy = ((Actor_80178D40 *)arg0)->unkA; - v58.vz = ((Actor_80178D40 *)arg0)->unkE; - v60.vx = pv->unk6; - v60.vy = pv->unkA; - v60.vz = pv->unkE; - func_8012F40C(out50, &v58); - w1 = out50[0]; - func_8012F40C(out50, &v60); - w2 = out50[0]; - (*(s16*)&D_801EB03C) = 3; - D_801EA7AC = w2; - D_801EA7B0 = (s16)w1 < (s16)w2; - break; - } - case 0x41: - ((void(*)(s32, s32))func_8002D4C8)(((Cmd_80178D40 *)arg1)->a.uh[0], ((Cmd_80178D40 *)arg1)->a.uh[1]); - (*(s16*)&D_801EB03C) = 3; - break; - case 0x42: - func_8017AD0C(((Cmd_80178D40 *)arg1)->a.w); - (*(s16*)&D_801EB03C) = 3; - break; - case 0x43: - D_801EA7CC = (s32)func_8017A3D8; - D_801EA7D4 = 0; - (*(s16*)&D_801EB03C) = 5; - D_801EA7D0 = ((Cmd_80178D40 *)arg1)->a.w; - break; - case 0x44: - func_8001AAD0(((Cmd_80178D40 *)arg1)->a.h[0], ((Cmd_80178D40 *)arg1)->a.h[1]); - (*(s16*)&D_801EB03C) = 3; - break; - case 0x53: - func_80179E48(((Cmd_80178D40 *)arg1)->a.h[0]); - (*(s16*)&D_801EB03C) = 3; - break; - case 0x56: - func_80179FEC(((Cmd_80178D40 *)arg1)->a.w); - (*(s16*)&D_801EB03C) = 3; - break; - L5B_found: - fp5b = ((Cmd_80178D40 *)arg1)->a.w; - *q5b = fp5b; - ((void (*)(Actor_80178D40 *))fp5b)(((Actor_80178D40 *)arg0)); - (*(s16*)&D_801EB03C) = 3; - break; - case 0x5B: - i5b = 0; - q5b = D_801EA7E4; - do { - i5b++; - if (*q5b == 0) { - goto L5B_found; - } - q5b++; - } while (i5b < 10); - (*(s16*)&D_801EB03C) = 3; - break; - L5C_found1: - *q5c = 0; - goto L5C_join; - case 0x5C: - i5c = 0; - if (((Cmd_80178D40 *)arg1)->a.w != 0) { - fp5c = ((Cmd_80178D40 *)arg1)->a.w; - q5c = D_801EA7E4; - do { - if (*q5c == fp5c) { - goto L5C_found1; - } - i5c++; - q5c++; - } while (i5c < 10); - L5C_join: - if (i5c != 10) { - (*(s16*)&D_801EB03C) = 3; - break; - } - i5c = 0; - do { - p5c = &D_801EA7E4[i5c]; - if (*p5c != 0) { - goto L5C_found2; - } - i5c++; - } while (i5c < 10); - (*(s16*)&D_801EB03C) = 3; - break; - L5C_found2: - *p5c = 0; - goto L5D; - } - r5c = D_801EA7E4; - do { - i5c++; - if (*r5c != 0) { - *r5c = 0; - goto L5D; - } - r5c++; - } while (i5c < 10); - /* fallthrough */ - case 0x5D: - L5D: - (*(s16*)&D_801EB03C) = 3; - break; - default: - break; - } -Lend: - D_801EA388 += 8; -} - - -DEFINE_func_80179B28() /* dedup: shared engine-core @0x80179B28 (src/shared) */ - -extern short D_801DA710; -extern void func_8017A4AC(void); - -// @class: schedule -// @stuck: none — MATCH (111 ins). symcheck: data syms CLEAN (D_801EA390/D_801EA794, 0 INVENTED); its lone MISSING is jtbl_801D8F9C, the COMPILER-emitted table ($L17 -> .rdata) — banking needs the §8a/§8e rodata-island flip (35 entries, .align 3), not a source-side ref. -/* func_80179B74 (ov_SC01_077) — command-queue WRITER: copies the opcode + its - * operand halfwords from *p into the 0x200-entry ring D_801EA390 at write index - * D_801EA794. Mirror of the reader func_8017A4AC (same ring, read index D_801DA710). - * - * Three levers were needed on top of the obvious shape (each byte-proven here): - * 1. jtbl SPAN — the target's table is 35 entries (0..0x22) with NO `addiu a0,a0,-1` - * bias and `sltiu v0,a0,0x23`, so the source must contain an empty `case 0:` and - * an empty `case 0x22:`; without them gcc biases by -1 and emits sltiu 0x20. - * 2. SCHEDULE — the operand push must route through a NAMED block-scoped temp - * (`{ s16 t = *p++; ring[idx] = t; ... }`). Written as the anonymous - * `ring[idx] = *p++;` the sched1 pass puts the `lh D_801EA794` ahead of the - * `lhu 0(a1)` in exactly the two blocks that also carry a live `addiu a1,a1,2` - * (cases {1,5} and {0x17,0x1c,0x1d,0x20}) — 6 of the 8 residual mismatches. - * The temp gives the loaded value its own pseudo and flips those two blocks. - * 3. FRAME — the target reserves 0x80 with NO saves and NO spills; gcc's own - * (unused) area for this body is 0x58, so +0x28 of address-taken local is - * required: `s32 pad[10]; (void)&pad;` (cookbook §17 phantom-frame INDUCE - * lever). 10 words exactly; 8 -> 0x78 and 12 -> 0x88 both miss. - * - * Case-block ORDER in the source is the emitted block order: {1,5} then {0x13} - * then {2,3,4,6,0x12,0x14,0x1f} then {0x17,0x1c,0x1d,0x20}. The 3-/2-/1-push - * tails are then cross-jump merged (no calls, so §88 does not block it) into the - * shared .L80179CE4 / .L80179D08 tail that sits after the last case block. - * - * Symbols are the splat spellings and match the sibling TU ov_SC01_077_jr_8017A4AC.c - * (`extern u16 D_801EA390[0x200];` / `extern s16 D_801EA794;`) so the whole-binary - * link and any one-big-TU build see one consistent type. - */ - -extern u16 D_801EA390[0x200]; -extern s16 D_801EA794; - -void func_80179B74(u16 *p) { - s32 pad[10]; - s16 c; - - (void)&pad; - c = *p++; - D_801EA390[D_801EA794] = c; - D_801EA794 = (D_801EA794 + 1) & 0x1FF; - switch (c) { - case 0: - break; - case 1: - case 5: - { s16 t = *p++; D_801EA390[D_801EA794] = t; D_801EA794 = (D_801EA794 + 1) & 0x1FF; } - { s16 t = *p++; D_801EA390[D_801EA794] = t; D_801EA794 = (D_801EA794 + 1) & 0x1FF; } - { s16 t = *p++; D_801EA390[D_801EA794] = t; D_801EA794 = (D_801EA794 + 1) & 0x1FF; } - break; - case 0x13: - { s16 t = *p++; D_801EA390[D_801EA794] = t; D_801EA794 = (D_801EA794 + 1) & 0x1FF; } - { s16 t = *p++; D_801EA390[D_801EA794] = t; D_801EA794 = (D_801EA794 + 1) & 0x1FF; } - break; - case 2: - case 3: - case 4: - case 6: - case 0x12: - case 0x14: - case 0x1F: - { s16 t = *p++; D_801EA390[D_801EA794] = t; D_801EA794 = (D_801EA794 + 1) & 0x1FF; } - break; - case 0x17: - case 0x1C: - case 0x1D: - case 0x20: - { s16 t = *p++; D_801EA390[D_801EA794] = t; D_801EA794 = (D_801EA794 + 1) & 0x1FF; } - { s16 t = *p++; D_801EA390[D_801EA794] = t; D_801EA794 = (D_801EA794 + 1) & 0x1FF; } - { s16 t = *p++; D_801EA390[D_801EA794] = t; D_801EA794 = (D_801EA794 + 1) & 0x1FF; } - { s16 t = *p++; D_801EA390[D_801EA794] = t; D_801EA794 = (D_801EA794 + 1) & 0x1FF; } - break; - case 0x22: - break; - } -} - -DEFINE_func_80179D30() /* dedup: shared engine-core @0x80179D30 (src/shared) */ - -DEFINE_func_80179D78() /* dedup: shared engine-core @0x80179D78 (src/shared) */ - -DEFINE_func_80179DCC() /* dedup: shared engine-core @0x80179DCC (src/shared) */ - -DEFINE_func_80179DF8() /* dedup: shared engine-core @0x80179DF8 (src/shared) */ - -DEFINE_func_80179E1C() /* dedup: shared engine-core @0x80179E1C (src/shared) */ - -DEFINE_func_80179E48() /* dedup: shared engine-core @0x80179E48 (src/shared) */ - -DEFINE_func_80179E74() /* dedup: shared engine-core @0x80179E74 (src/shared) */ - -DEFINE_func_80179EA0() /* dedup: shared engine-core @0x80179EA0 (src/shared) */ - -DEFINE_func_80179EE8() /* dedup: shared engine-core @0x80179EE8 (src/shared) */ - -DEFINE_func_80179F14() /* dedup: shared engine-core @0x80179F14 (src/shared) */ - -DEFINE_func_80179F44() /* dedup: shared engine-core @0x80179F44 (src/shared) */ - -DEFINE_func_80179F6C() /* dedup: shared engine-core @0x80179F6C (src/shared) */ - -DEFINE_func_80179F98() /* dedup: shared engine-core @0x80179F98 (src/shared) */ - -DEFINE_func_80179FEC() /* dedup: shared engine-core @0x80179FEC (src/shared) */ - -DEFINE_func_8017A040() /* dedup: shared engine-core @0x8017A040 (src/shared) */ - - -extern void func_80179B74(u16 *p); -extern s32 D_801EA7B4; - -void func_8017A094(s32 arg0) { - s16 sp10; - - D_801EA7B4 = arg0; - sp10 = 0x15; - func_80179B74(&sp10); -} - - - -extern void func_80179B74(u16 *p); -extern s32 D_801EA7B4; - -void func_8017A0C4(s32 arg0) { - s16 sp10; - - D_801EA7B4 = arg0; - sp10 = 0x16; - func_80179B74(&sp10); -} - - -DEFINE_func_8017A0F4() /* dedup: shared engine-core @0x8017A0F4 (src/shared) */ - -DEFINE_func_8017A11C() /* dedup: shared engine-core @0x8017A11C (src/shared) */ - - -extern s32 D_801EA7DC; -extern void func_80179B74(u16 *p); - -void func_8017A144(s32 a0) { - s16 sp10; - sp10 = 0x1B; - func_80179B74(&sp10); - D_801EA7DC = a0; -} - - -DEFINE_func_8017A180() /* dedup: shared engine-core @0x8017A180 (src/shared) */ - -DEFINE_func_8017A1A8() /* dedup: shared engine-core @0x8017A1A8 (src/shared) */ - -DEFINE_func_8017A1D0() /* dedup: shared engine-core @0x8017A1D0 (src/shared) */ - -DEFINE_func_8017A1F8() /* dedup: shared engine-core @0x8017A1F8 (src/shared) */ - -DEFINE_func_8017A220() /* dedup: shared engine-core @0x8017A220 (src/shared) */ - -DEFINE_func_8017A248() /* dedup: shared engine-core @0x8017A248 (src/shared) */ - -DEFINE_func_8017A270() /* dedup: shared engine-core @0x8017A270 (src/shared) */ - -DEFINE_func_8017A298() /* dedup: shared engine-core @0x8017A298 (src/shared) */ - -DEFINE_func_8017A2C0() /* dedup: shared engine-core @0x8017A2C0 (src/shared) */ - -DEFINE_func_8017A2E8() /* dedup: shared engine-core @0x8017A2E8 (src/shared) */ - -DEFINE_func_8017A310() /* dedup: shared engine-core @0x8017A310 (src/shared) */ - -DEFINE_func_8017A338() /* dedup: shared engine-core @0x8017A338 (src/shared) */ - -DEFINE_func_8017A360() /* dedup: shared engine-core @0x8017A360 (src/shared) */ - -DEFINE_func_8017A388() /* dedup: shared engine-core @0x8017A388 (src/shared) */ - - -extern s16 D_801EA798; - -s32 func_8017A3B0(void) { - switch (D_801EA798) { - case 0: - return 1; - case 1: - return 0; - default: - return 1; - } -} - - - -// @class: regalloc-order -// @stuck: none — MATCH - - -extern int func_800D0CA0(int); -extern int func_8001AAA0(void); -extern int func_800D0CE0(void); - -int func_8017A3D8(void) -{ - - extern short D_801EA7D4; - extern short D_801EA7D0; - switch (D_801EA7D4) { - case 0: - func_800D0CA0(1); - D_801EA7D4 = D_801EA7D4 + 1; - return 0; - case 100: - { - register int a __asm__("$4"); - a = D_801EA7D0; - if (a != -1) { - return func_8001AAA0() != 0; - } - return func_800D0CE0() == 1; - } - default: - D_801EA7D4 = D_801EA7D4 + 1; - if (D_801EA7D4 < 0x1E) { - return 0; - } - D_801EA7D4 = 100; - return 0; - } -} - diff --git a/src/ov_SC03_015/ov_SC03_015_jr_8017A4AC.c b/src/ov_SC03_015/ov_SC03_015_jr_8017A4AC.c deleted file mode 100644 index 542fe7e3d..000000000 --- a/src/ov_SC03_015/ov_SC03_015_jr_8017A4AC.c +++ /dev/null @@ -1,2774 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ - /* 12-byte sub-table record (stride 0xC) */ - /* 0x20 bytes */ - /* 4 + 16*12 = 0xC4 stride */ - /* 0x08 */ - /* 0x20 */ -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8; -typedef void (*Handler)(struct Entry_8016E95C *); -extern void func_801458E0(void); -extern s32 D_800AE6AC; -extern s32 D_800AE6B0; -extern s16 D_800B9A0A; -extern u8 D_80078E50; -extern void func_800D185C(u8 *a0); -extern void func_801458E8(void); -extern s32 func_80029504(void); -extern void func_80145B24(void); -extern u8 D_8018DAA4; -extern u8 D_8018DA14; -extern u8 D_8018D9F0; -extern u8 D_8018D9CC; -extern u8 D_8018DA80; -extern u8 D_8018DA5C; -extern u8 D_8018DA38; -extern u8 D_8018D9A8; -extern void func_80145934(void); -extern u8 D_8018DB34; -extern u8 D_8018DB10; -extern u8 D_8018DAEC; -extern u8 D_8018DAC8; -extern void func_80145A2C(void); -extern s32 func_800291DC(s32); -extern void func_800291C8(s32, s32); -extern void func_80162120(void); -extern void func_80029124(s32, s32); -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); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_80145BF8(void); -extern s32 func_800291B4(s32 arg); -extern void func_800291A0(s32, s32); -extern void func_80145C54(void); -extern s32 func_80145CEC(); -extern s32 func_80029178(s32 arg); -extern void func_80146014(s32 a0); -extern unsigned char D_8018CF2C[]; -extern unsigned char D_8018CF5C[]; -extern unsigned char D_8018CFAC[]; -extern unsigned char D_8018CFDC[]; -extern unsigned char D_8018D00C[]; -extern void func_80145EE8(s32 param_1); -extern void MoveImage(void *a0, s32 a1, s32 a2); -extern void func_80146074(void); -extern s32 func_80146128(void); -extern void func_80146360(void); -extern void func_801463A0(); -extern void func_8014607C(void); -extern s32 *D_80126B78; -extern u8 D_80078EC1; -extern s32 D_80078EC8; -extern s32 D_80126B9C; -extern s32 D_8011F730; -extern u16 D_801152B8; -extern u16 D_8012693A; -extern u8 D_80126BE0[]; -extern u8 D_801150F0[]; -extern void *memcpy(void *dst, const void *src, u32 n); -extern void func_80146FC4(s32 a0); -extern void func_80150A70(s32 a0); -extern void func_80147098(s32 *a0); -extern void func_8014A638(s32 arg0); -extern s32 func_80155458(s32 a0); -extern s32 func_80029104(void); -extern void func_80029344(void); -extern void func_8014ADE0(s32 a0); -extern void func_8014B350(s32 a0); -extern void func_8014B7A4(s16 *param_1); -extern s32 func_80161D58(s32 a0); -extern void func_80161A90(s32 a0); -extern void func_8014B504(u16 *a0); -extern void func_80149BEC(s32 a0); -extern void func_8014B5D0(s32 *a0); -extern void func_8014C99C(u8 *a0); -extern void func_8014B190(s32 s0); -extern void func_80148648(s32 a0, s32 a1); -extern s32 func_80149228(s32 a0); -extern void func_8014A59C(s32 a0); -extern void func_8016F14C(void *a0); -extern void func_80154418(void *a0); -extern void func_80154BE4(s32 a0); -extern void func_80165694(s32 arg0); -extern void func_801654A8(s32 a0); -extern void func_8014A680(s32 a0); -extern void func_8014A6A8(s32 a0); -extern void func_8014A71C(s32 a0); -extern void func_80172588(s32 *a0); -extern void func_801473DC(s32 *a0); -extern void func_80015978(s32 a0, s32 *a1); -extern void (*D_8018D05C[])(void *); -extern u8 D_80126BA4; -extern s32 D_80127098; -extern s32 D_80127094; -extern s32 D_80127090; -extern void func_80146534(void); -extern void func_8001D074(s32 a0, s32 a1); -extern void func_80146554(void); -extern void func_80146578(void); -extern void func_8001CFDC(s32, s32); -extern void func_8014659C(void); -extern void func_8001D074(s32, s32); -extern void func_801465C0(void); -extern void func_801465E4(void); -extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); -extern s32 D_8011F9D0; -extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); -extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 D_8011F750; -extern s32 D_8011F754; -extern u8 * func_801468C8(s32 arg0, u8 arg1); -extern s32 D_8011D030; -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); -extern s32 func_80146B9C(void *a0); -extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); -extern u16 D_8011DA28; -extern s32 func_80146B9C(void * arg0); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80146CA0(void *a0); -extern void func_80146CB4(void *a0); -extern void func_80146CC8(s32 a0); -extern void func_80146D30(s32 a0); -extern void func_80146D80(s32 *a0); -extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80146D90(s32 a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); -extern void func_80146E90(s32 *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80015954(s32 a0, s32 a1); -extern void func_80149374(s32 a0, s32 a1); -extern void func_80146F58(s32 a0, s32 a1); -extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 func_8012A68C(void); -extern s16 func_8012A758(void); -extern void func_8004978C(s16 *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern u8 D_80126DB0[]; -extern u16 D_80126DB6; -extern void func_8014704C(s32 *a0); -extern s32 func_80147054(void *a0); -extern void func_80147060(u8 * a0); -extern void func_8014706C(void *arg0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80147084(s32 *a0); -extern void func_8014708C(void *arg0); -extern s32 func_801470A0(void *a0); -extern void func_801470AC(s32 *a0); -extern void func_801470B4(s32 arg0); -extern void func_801470C0(s32 a0); -extern void func_80147118(s32 a0); -extern s16 D_80126BB8; -extern s16 D_80126BBA; -extern s16 D_80126BBC; -extern void func_80147264(s32 a0); -extern void func_80147290(void); -extern void func_801472B4(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void *D_8012707C; -extern void func_801472DC(void); -extern void func_801472F0(void *a0); -extern void func_80147364(u16, s32); -extern void func_80147300(u16 arg0); -extern void func_80147324(s32 arg0); -extern void func_801473EC(s32 *a0); -extern void func_80147460(s32 a0); -extern void func_80147514(); -extern void func_80147628(s32 a0); -extern void func_80147478(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); -extern s32 func_800129CC(s32 a0, s32 a1); -extern void func_80147514(s32 arg0); -extern void func_80013F3C(s32 a0); -extern void func_80012558(s32 a0, s32 a1); -extern void func_800126C4(s32 a0, s32 a1); -extern void func_800123F0(s32 a0, s32 a1); -extern void func_80147718(s32 a0); -extern void func_80147788(void *a0, s32 a1); -extern void func_801477A8(void *a0, s32 a1); -extern void func_801477C8(void *a0, s32 a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80147814(s32 a0, s32 a1); -extern void func_80147928(int a0, int a1); -extern void func_8014799C(int a0, int a1); -extern void func_80147A10(int a0, int a1); -extern void func_80147860(int a0, int a1, int a2, int a3); -extern void func_80147948(s32 a0, s32 a1, s32 a2); -extern void func_801479BC(s32 a0, s32 a1, s32 a2); -extern void func_80147A30(s32 a0, s32 a1, s32 a2); -extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147948(int a0, int a1, int a2); -extern void func_801479BC(int a0, int a1, int a2); -extern void func_80147A30(int a0, int a1, int a2); -extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147A84(s32 arg0); -extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147AAC(s32 arg0); -extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80147B5C(s32 a0, void *a1); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern void func_80147B18(s32 a0); -extern void func_80147B5C(s32 arg0, void *arg1); -extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147DC0(s32 a0, s32 a1); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147F50(s32 arg0); -extern void func_80148038(s32 a0, s32 a1); -extern s32 ratan2(s32 a0, s32 a1); -extern s32 csqrt(s32 a0); -extern s32 func_80012A60(s32 a0, s32 a1); -extern void func_80148094(int param_1, short *param_2, int *param_3); -extern void func_801485B8(s32 a0, s32 a1, s32 a2); -extern void func_801484B0(s32 a0, s32 a1); -extern s32 func_80154358(void *a0); -extern void func_801484E8(s32 a0, s32 a1); -extern void func_80148534(s32 a0, s32 a1); -extern void func_8014856C(s32 a0, s32 a1); -extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); -extern void func_80148634(void *a0); -extern u8 D_800B9A64; -extern s32 func_80014DC0(); -extern s32 func_80014D68(); -extern s32 func_80014D94(); -extern s32 func_80014CF8(); -extern void func_800120DC(); -extern s32 func_800CF8B4(); -extern u16 func_801487F4(s32 *a0); -extern u16 func_80148800(s32 *a0); -extern u8 func_8014880C(s32 *a0); -extern u16 func_80148818(s32 *a0); -extern s32 func_80047D3C(s32 a0); -extern s32 func_80148824(void *arg0); -extern s32 func_801488A8(u8 *a0); -extern s32 func_8014891C(s32 a0); -extern s32 func_80148980(u8 *a0); -extern s32 func_801489E8(s32 a0); -extern s32 func_80148A48(s32 a0); -extern int func_80148AFC(void *a0); -extern void func_80148AAC(u8 *a0); -extern s32 func_80148C18(void); -extern s32 func_80148C20(s32 a0, s16 a1); -extern s32 func_80148C34(s32 a0, s32 a1); -extern s32 func_80148C4C(s32 a0, s32 a1); -extern s32 func_80148C64(s32 a0, s32 a1); -extern s32 func_80148C7C(void); -extern s32 func_80148C84(s32 a0, s32 a1); -extern s32 func_80148C9C(s32 a0, s32 a1); -extern s32 func_80148CB4(s32 a0, s32 a1); -extern s32 func_80148CCC(s32 a0, s32 a1); -extern s32 func_80148CE4(void); -extern s32 func_80148CEC(void); -extern s32 func_80148CF4(s32 a0, s32 a1); -extern s32 func_80148D0C(s32 a0, s32 a1); -extern s32 func_80148D24(void *a0, int a1); -extern s32 func_80148D3C(void); -extern s32 func_80148F60(void); -extern s32 func_80148F68(s32 a0); -extern s32 func_80148F74(s32 a0); -extern s32 func_80148F80(s32 a0); -extern s32 func_80148F8C(s32 a0); -extern s32 func_80148F98(void); -extern s32 func_80148FA0(s32 a0); -extern s32 func_80148FAC(s32 a0); -extern s32 func_80148FB8(s32 a0); -extern s32 func_80148FC4(s32 a0); -extern s32 func_80148FD0(void); -extern s32 func_80148FD8(void); -extern s32 func_80148FE0(s32 a0); -extern s32 func_80148FEC(s32 a0); -extern s32 func_80148FF8(s32 a0); -extern s32 func_80149004(void); -extern void func_8014900C(s32 *a0); -extern void func_80149020(s32 *a0); -extern void func_80149034(s32 *a0); -extern void func_80149048(s32 *a0); -extern void func_8014905C(u8 *a0); -extern void func_801490E0(s32 *a0, s16 a1); -extern void func_801490E8(s32 *a0, s16 a1); -extern void func_801490F0(s32 *a0, s16 a1); -extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); -extern void func_801490F8(s32 a0, s32 a1); -extern s32 func_801491C4(s32 a0); -extern s32 func_80149184(s32 a0); -extern s32 D_801151D4; -extern void func_80149204(s32 *a0); -extern void func_80149210(s32 a0, s32 a1); -extern s32 func_80149284(s32 *a0, s32 a1); -extern void func_80149350(s32 arg0); -extern void func_80149290(s32 a0); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_80149374(s32 arg0, s32 arg1); -extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8014942C(s32 arg0); -extern void func_8012EF70(s32 a0, s32 a1); -extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012EFB8(s32 a0); -extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); -extern void func_8014964C(s32 param_1, s32 param_2); -extern s32 func_801496D4(void *a0); -extern void func_8015AD08(); -extern void func_80149704(void); -extern void func_8015ACC4(); -extern void func_80149724(void); -extern u8 D_80078EBF; -extern s32 func_80149744(struct S_80149744 *a0); -extern void func_8015F7A0(); -extern void func_80149788(void); -extern void func_801653B8(); -extern void func_80149864(void); -extern s16 currentLocationId; -extern s32 func_8016F1AC(void); -extern s32 func_80149884(void); -extern void func_80160B00(); -extern void func_801498C0(void); -extern s32 func_80149AA8(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern void func_80146750(void *a0); -extern s32 func_801498E0(s32 *a0); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_80147364(u16 a0, s32 a1); -extern s32 func_800CCF28(s32 a0); -extern u8 D_80126B5C; -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_8015DAC4(s32 *a0); -extern void func_8015554C(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern void func_80149B14(s32 *a0); -extern u8 func_8014BEF8(void); -extern s32 func_80149B54(s32 * arg0); -extern void func_8015DE24(s32 *a0); -extern void func_80157510(s32 *a0); -extern void func_80149BAC(s32 *a0); -extern s32 func_80029178(s32 a0); -extern s32 func_80149C08(s32 arg0); -extern void func_801577C8(); -extern void func_80149C94(void); -extern void func_80157D20(void); -extern void func_80149CB4(void); -extern s32 func_80149CD4(s32 a0); -extern u8 func_8014B5B8(s32 *a0); -extern s32 func_80149D10(s32 a0); -extern s32 func_80149E94(s32 a0); -extern s32 func_80149DD8(s32 a0); -extern s32 func_80149D9C(s32 a0); -extern u8 D_801202A0[]; -extern s32 func_80149F2C(s32 a0, s32 a1); -extern s32 func_80149E94(s32 arg0); -extern void func_80149FA8(void); -extern s32 D_8018D124[]; -extern u8 D_80078E78[]; -extern s32 func_80149FB0(s32 a0); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern void func_8014A1B0(s32 a0, s32 a1); -extern s32 func_8014A048(s32 param_1); -extern u16 func_80156370(u16 a0); -extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); -extern void func_8015D4B4(); -extern void func_8014A218(void); -extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); -extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); -extern s32 func_8014A238(s32 arg0); -extern s32 func_8014A2E4(s32 a0); -extern void func_8014A380(s32 a0, s32 a1); -extern s16 D_801152B0; -extern s16 D_801152B4; -extern s32 func_8014A3E0(struct S_8014A3E0 *a0); -extern s32 func_8014A454(s32 a0); -extern s32 func_8014A4B4(void *a0); -extern void func_8015EDD4(); -extern void func_8014A4FC(void); -extern s32 func_8014A674(s32 *a0); -extern s32 func_8014A69C(s32 *a0); -extern s32 func_8014A6C4(s32 a0); -extern void func_8015E184(); -extern void func_8014A830(void); -extern s32 func_80029AF4(void); -extern s32 func_8014A850(s32 param_1); -extern void func_8014AA04(s32 a0); -extern void func_801599A4(void *a0); -extern void func_80159B3C(void *a0); -extern s32 func_80165A20(s32 a0); -extern void func_8014AB7C(); -extern void func_8014AC10(); -extern void func_8014AA28(void); -extern void func_8014AB5C(void); -extern void func_80162CCC(void); -extern void func_8014AB7C(s32 arg0); -extern void func_8014ABF0(void); -extern void func_80016714(void *a0, s32 a1); -extern void func_8014AC10(s32 arg0); -extern void func_8014ACC0(s32 a0, s32 a1); -extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); -extern void func_8014ACE8(void *a0, s32 a1, s32 a2); -extern void func_80146AFC(void *a0); -extern void func_8014ADA8(s32 a0, s32 a1); -extern void func_8014AD7C(s32 a0); -extern s32 D_80078E8C; -extern void func_8014B034(s32 arg0); -extern void func_8014B00C(s32 arg0); -extern void func_8014B084(void); -extern s16 D_80078E90; -extern void func_8014B034(s32 a0); -extern u16 D_80078EAC; -extern u8 D_80078EBA; -extern void func_800D10EC(void); -extern void func_8002AC98(void); -extern s32 func_8014B154(s32 *a0); -extern void func_8014B12C(void); -extern void func_8014B2F8(void); -extern void func_8014B4C4(void); -extern void func_8014B160(s32 a0); -extern s32 func_8016F1C4(void); -extern s16 D_80078E96; -extern s16 D_80078EB8; -extern u16 D_80078EA6; -extern void func_8014B2A8(void); -extern void func_8014B310(void); -extern void func_8014B2D0(void); -extern s32 D_80078E94; -extern s32 D_80078ECC; -extern void func_8014B33C(void); -extern u8 D_80062BF4[]; -extern void func_8014BC80(s32 a0, s32 a1); -extern void func_80019064(void *a0); -extern s32 D_80078E98; -extern void func_80166244(); -extern void func_8014B4D4(void *a0); -extern s16 D_80078E9A; -extern u8 D_80126D1C; -extern s32 D_80126D74; -extern void func_8014B598(s32 a0, s32 a1); -extern void func_8014B5B0(s32 *a0); -extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); -extern void func_8014B5D8(s32 s1); -extern s32 D_80078E9C; -extern s32 D_80078ED0; -extern void func_8014B6F0(s32 a0, s32 a1); -extern void func_8014B768(s32 a0, s32 a1); -extern void func_8014B944(s32 a0, s32 a1, s32 a2); -extern s32 D_80078EA4; -extern u16 D_80078EB2; -extern s16 D_80078EB4; -extern void func_8014BB0C(void); -extern void func_8014BB24(s32 a0, s32 a1, s32 a2); -extern void func_8014BC0C(s32 a0, s32 a1); -extern void func_8014BC44(s32 a0, s32 a1); -extern u8 D_800B9A17; -extern void func_8014BCC0(s32 a0, s32 a1); -extern u16 D_80078EB6; -extern s32 func_8014BCEC(s32 a0, s32 a1); -extern void func_8014BD24(s32 a0, s32 a1); -extern void func_8014BD60(s32 param_1, s32 param_2); -extern void func_8014BD98(s32 a0, u16 a1); -extern void func_8014BDC8(void); -extern void func_8014BDE0(void); -extern s32 func_8017267C(s32 *a0); -extern s32 func_80013294(void *a0, void *a1); -extern void func_80029ED4(s32 a0); -extern void func_8014BDE8(s32 a0); -extern void func_8014BE78(void); -extern void func_8014BE9C(void); -extern void func_80029124(s32 a0, s32 a1); -extern void func_8014BEC0(void); -extern void func_8014BF18(s32 a0); -extern void func_8014BF48(void); -extern u8 func_8014BF6C(void); -extern void func_8014BF8C(u8 arg0); -extern void func_8014BFB0(void); -extern u8 func_8014BFD4(void); -extern void func_8014BFF4(s32 a0, s32 a1); -extern void func_8014C010(s32 a0, s32 a1); -extern s32 func_8014C050(s32 a0, s32 a1); -extern s32 func_8014C088(s32 a0, s32 a1); -extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); -extern s32 func_8014C118(void * a0, s32 a1, s32 a2); -extern s32 func_8014C168(s32 * param_1, s32 param_2); -extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); -extern u8 D_8018D1AC[]; -extern void func_8014C1A0(s32 arg0, s32 arg1); -extern s32 func_80013328(s32 a0, s32 a1); -extern s32 func_8014C59C(void *a0, void *a1); -extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); -extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); -extern s32 ratan2(s32 dx, s32 dy); -extern u8 D_8018D1B4; -extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); -extern s16 func_8014C5D0(s32 a0, s32 a1); -extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); -extern u8 D_80126D17; -extern void func_8014C6AC(void); -extern void func_8014C6C0(void); -extern u8 D_80126D1E; -extern void func_8014C6D0(void); -extern void func_8014C6E0(void); -extern s32 func_8014C860(s32 a0, s32 a1); -extern void func_8014C8C8(s32 a0, s32 *a1); -extern void func_8014C88C(s32 a0); -extern void func_8014C8C8(s32 dst, s32 * src); -extern void func_8014C8F0(s32 arg0); -extern u8 D_801151F0[]; -extern s32 func_8014C918(s32 a0, s32 a1); -extern s32 D_80126B50; -extern void func_8014C968(void); -extern void func_8014C978(void); -extern s32 func_8014C98C(void); -extern void func_80139914(s32 a0); -extern s32 func_8014CA00(s32 a0); -extern u16 func_8014CA70(s32 a0, s32 a1); -extern s32 func_8014CA14(s32 a0, s32 a1); -extern u16 func_8014CAE4(s32 *a0, s32 a1); -extern s32 func_8014CA88(s32 *a0, s32 a1); -extern s32 func_8014CAFC(void); -extern s32 func_8014CB0C(void); -extern s32 func_8014CB1C(void); -extern u8 D_80126D1F; -extern s32 func_8014CB2C(void); -extern s32 func_8014CB58(void); -extern u8 D_80126D1D; -extern void func_8014CB68(void); -extern s32 func_8014CB7C(void); -extern s32 func_8014CB8C(void); -extern short D_80126C9E; -extern void func_8014CB9C(struct Packed8 *a0); -extern s32 D_80126CDC; -extern void func_8014CBD8(void); -extern s16 D_80126CC4; -extern void func_8014CBE8(void); -extern void func_8014CBF8(void *a0); -extern void func_8014D3E0(s32 a0); -extern void func_8014D04C(void); -extern void func_8014CCB4(void); -extern void func_8014CC28(s32 a0); -extern void func_8014CD0C(u8 *a0); -extern s32 func_8014CF04(s32 a0, s32 a1, void *a2); -extern void func_8014CD80(s32 a0, void *a1, void *a2); -extern void func_8014D0A4(s32 a0); -extern s32 func_8014D2A0(s32 a0, void *a1, void *a2); -extern s32 func_8014D12C(s32 a0, void *a1, void *a2); -extern void func_8014D438(s32 a0); -extern void func_8014D3E0(s32 _arg0); -extern void func_8014D610(s32 a0, void *a1, void *a2); -extern s32 func_8014D4C0(s32 a0, void *a1, void *a2); -extern void func_8014D790(s32 a0); -extern void func_8014D738(void); -extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); -extern s32 func_8014D820(s32 a0, u16 *a1, u16 *a2); -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); -extern void func_8014DF94(s32 arg0); -extern void func_8014DF3C(void); -extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ -extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ -extern s16 D_801152AC; -extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); -extern void func_8014E48C(s32 a0); -extern void func_8014E434(void); -extern void func_8014E5B4(s32 a0, void *a1, void *a2); -extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); -extern void func_8014E6F8(struct SubE6F8 *a0); -extern void func_8014E6A0(void); -extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); -extern void func_8014E934(s32 _arg0); -extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); -extern s32 func_8014E98C(void *a0); -extern u16 D_800B99DA; -extern s32 D_801150D8; -extern s16 D_801152AA; -extern u8 D_80126720[]; -extern s16 D_80126724; -extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); -extern s32 func_8014ED80(struct SubED80 *a0); -extern int D_801E9698; -extern void func_8014ED28(s32 _arg0); -extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F24C(struct SubF24C *a0); -extern void func_8014F1F4(void); -extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F4C0(); -extern s32 func_8014F468(void); -extern int func_8014F74C(); -extern int func_8014F6F4(void); -extern u8 D_800D3918[]; -extern u8 D_801152A8[]; -extern s32 D_801152BC; -extern int func_8014F74C(s32 arg0); -extern s32 func_8014FA70(s32 a0); -extern s32 D_801E969C; -extern void func_8014FA04(s32 a0); -extern s32 func_8014FBC0(); -extern s32 func_8014FC18(u8 *self); -extern int func_8014FD54(int param_1); -extern void func_8014FCFC(void); -extern void func_80150170(void *a0); -extern s32 func_8014FE60(void *a0); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_8014FE60(void *e); -extern s32 func_80134510(s32 arg); -extern s32 func_80150150(s32 a, s32 b); -extern s32 func_80150460(s32 a, s32 b); -extern void func_801504D8(u16 *a0); -extern s32 func_80150480(s32 _arg0); -extern s32 func_80150528(void *a0, void *a1, void *a2); -extern s32 func_80150528(void *arg0, void *arg1, void *arg2); -extern s32 func_801506A4(s32 a0, s32 a1); -extern s32 func_801505FC(s32 a0); -extern s32 func_801506A4(s32 arg0, s32 arg1); -extern void func_80150820(s32 a0, s32 a1); -extern void func_8015086C(int param_1); -extern s32 func_801508B4(s32 a0); -extern s32 func_8015094C(s32 a0); -extern short func_801508F8(s32 a0); -extern s32 D_8018D1E4; -extern s32 D_80126990; -extern s32 D_80126994; -extern u8 D_80126948[]; -extern s32 func_80021174(s32 a0, s32 a1); -extern s32 func_8015094C(s32 param_1); -extern void func_80150B9C(void); -extern s32 func_80151184(s32 a0, s32 a1, s32 a2); -extern s32 func_80150BA4(s32 a0); -extern s32 func_801619D0(void *a0); -extern void func_80150BC8(s32 *a0); -extern s32 func_80150480(s32 a0); -extern u16 D_800AE6DC; -extern void func_80150C48(s32 a0); -extern int func_80151184(int arg, int a1, int a2); -extern int func_80150CA0(int arg); -extern void func_80150EC4(s32 a, s32 b); -extern void func_80150CC4(s32 a); -extern void func_80150CE4(s32 a); -extern void func_80150D04(s32 a); -extern void func_80150D24(s32 a); -extern void func_80150D44(s32 a); -extern void func_80150D64(s32 a); -extern void func_80150D84(s32 a); -extern void func_80150DA4(s32 a); -extern void func_80150DC4(s32 a); -extern void func_80150DE4(s32 a); -extern void func_80150E04(s32 a); -extern void func_80150E24(s32 a); -extern void func_80150E44(s32 a); -extern void func_80150EC4(s32 a0, s32 a1); -extern void func_80150E64(s32 a0); -extern void func_80150E84(s32 a0); -extern void func_80150EA4(s32 a0); -extern u8 D_800AE6C0; -extern s16 D_800AE6C8; -extern s16 D_800AE6CA; -extern s16 D_800AE6CC; -extern s32 D_800AE6C4; -extern s16 D_800AE6CE; -extern u8 D_800AE6BE; -extern u8 D_801201F8[]; -extern void func_80150F78(void); -extern void func_80150F80(s32 a0); -extern int func_80150FB4(int arg); -extern void func_80150FD8(s32 a0); -extern int func_80151014(int arg); -extern void func_80151038(s32 a0); -extern int func_80151070(int arg); -extern int func_80151094(int arg); -extern void func_801510B8(void); -extern void func_801510C0(void); -extern int func_801510C8(int arg); -extern int func_801510EC(int arg); -extern s32 func_8012DB84(void); -extern s32 func_80151110(void); -extern void func_80151130(void); -extern int func_80151138(int arg); -extern void func_8015115C(s32 *a0, s16 a1); -extern s32 func_80151164(s32 a0, s32 a1); -extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); -extern void func_801511A8(u8 *a0); -extern void func_801511C4(u8 *a0); -extern int func_80151204(int arg, int a1); -extern int func_801511E0(int arg); -extern int func_80151204(int a0, int a1); -extern void func_80151238(void *a0); -extern void func_8015126C(u16 *p); -extern void func_80151780(s32 a0); -extern void func_801516F0(s32 *a0); -extern void func_8015173C(s32 *a0); -extern s16 D_8011DB1A; -extern s32 D_80127518; -extern s32 D_801151FC; -extern s32 func_801725CC(u8 *a0); -extern s32 func_80029D3C(void); -extern void func_80151878(void); -extern void func_80153B58(s32 *a0); -extern s32 func_80151880(s32 a0); -extern s32 func_801518D8(s32 a0); -extern s32 func_80151944(void); -extern s32 func_80151924(void); -extern void func_8014E934(s32 a0); -extern s32 func_8014F3E8(s32 a0); -extern void func_801519C8(s32 a0); -extern void func_80151980(s32 a0); -extern M2C_UNK D_800D5880; -extern s32 D_800D58AC; -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801519C8(s32 arg0); -extern void func_80151C54(s32 a0); -extern void func_801542DC(s32 *a0, s32 a1); -extern void func_8015BDD0(s32 *a0); -extern void func_80165718(s32 a0); -extern u8 D_800D46E4[]; -extern void func_80151AE4(s32 arg0); -extern void (*D_8018D28C[])(void); -extern void func_80151D24(void *a0); -extern void func_80151DB0(s32 a0); -extern void func_80151D60(void *a0); -extern s32 func_80172630(u8 *a0); -extern s32 D_80062C14; -extern void func_80151DB0(s32 param_1); -extern void func_80151E78(s32 *a0); -extern void func_80151ECC(struct S80151ECC *a0); -extern void func_80151FB4(s32 a0); -extern void func_80151F38(s32 *a0); -extern void func_801553C0(s32 a0); -extern void func_80153C18(); -extern void (*D_8018D2B0[])(void); -extern void func_80152058(void *a0); -extern void func_801520DC(s32 a0); -extern void func_80152094(s32 a0); -extern void func_80147324(s32 a0); -extern u8 D_80062C04[]; -extern M2C_UNK D_8018D2A0; -extern void func_801520DC(s32 arg0); -extern void func_801470B4(s32 a0); -extern void func_8015369C(s32 a0); -extern void func_80152194(s32 *a0); -extern s32 func_801536DC(s32 a0); -extern void func_8015220C(s32 a0); -extern s32 func_80153800(s32 a0); -extern void func_801522CC(s32 a0); -extern void func_80152254(s32 *a0); -extern void (*D_8018D2C4[])(void); -extern void func_80152370(void *a0); -extern void func_801523F4(s32 a0); -extern void func_801523AC(s32 a0); -extern void func_8001382C(s32 a0, void *a1, void *a2); -extern u8 D_8018D2D0[]; -extern void func_801523F4(s32 arg0); -extern void func_801525F4(int); -extern s32 func_801535F4(void *arg0); -extern void func_8015BF48(s32 *a0); -extern void func_80152500(int param_1); -extern void func_801525F4(s32 a0); -extern void (*D_8018D2E0[])(void); -extern void func_80152698(void *a0); -extern void func_80152714(s32 a0); -extern void func_801526D4(s32 a0); -extern void func_80152790(s32 a0); -extern void (*D_8018D2F8[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018D2E8; -extern void func_801528B0(s32 arg0); -extern void func_8015294C(s32 a0); -extern void func_80152A08(s32 a0); -extern void func_80152AC8(s32 a0); -extern void func_80152A50(s32 *a0); -extern void (*D_8018D30C[])(void); -extern void func_80152B6C(void *a0); -extern void func_80152BF0(s32 a0); -extern void func_80152BA8(s32 a0); -extern void func_80152C80(s32 *a0); -extern void func_80152C40(s32 *a0); -extern void (*D_8018D328[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018D318; -extern void func_80152DA8(s32 arg0); -extern void func_80152E4C(s32 a0); -extern void func_80152EFC(s32 a0); -extern void func_80152FBC(s32 a0); -extern void func_80152F44(s32 *a0); -extern void (*D_8018D33C[])(void); -extern void func_80153060(void *a0); -extern void func_801530E4(s32 a0); -extern void func_8015309C(s32 a0); -extern void func_80155440(s32 *a0); -extern void func_801530E4(s32 arg0); -extern void func_80153150(struct S80153150 *a0); -extern void func_801531BC(s32 a0); -extern void func_8015327C(s32 a0); -extern void func_80153204(s32 *a0); -extern void (*D_8018D350[])(void); -extern void func_80153320(void *a0); -extern void func_801533A4(s32 a0); -extern void func_8015335C(s32 a0); -extern void func_80153410(s32 *a0); -extern void func_80153490(s32 a0); -extern void func_80153550(s32 a0); -extern void func_801534D8(s32 *a0); -extern void (*D_8011DB28)(s32 a0); -extern s32 func_801536DC(s32 param_1); -extern void func_800139C8(s32 a0, void *a1, void *a2); -extern s32 func_80153978(s32 a0, u16 *src); -extern s32 func_80133784(s32 a0, void *src, s32 dst); -extern s32 func_801539F8(s32 a0, void *a1); -extern s32 func_801539F8(s32 a0, void * a1); -extern s32 func_8016DA04(s32 a0); -extern s32 func_80153BD8(s32 a0); -extern s32 func_80153BF0(s32 a0); -extern void func_80153C18(void); -extern u16 D_8011F748; -extern void func_80153C30(void); -extern void func_80153C74(s16 a0, s16 a1); -extern s16 D_8011DB18; -extern void func_80153C44(int a0, int a1, s16 a2); -extern s16 D_8011DB0C; -extern s32 D_80115210; -extern void func_80153C8C(void); -extern void func_80153C9C(void); -extern s32 func_80153CBC(void); -extern s32 D_8018D364; -extern void (*D_8018D38C[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018D36C; -extern void func_80153D7C(s32 param_1); -extern void func_8015410C(void); -extern void func_80153E00(s32 param_1); -extern void func_80151664(void); -extern void func_80154134(u8 *a0); -extern void func_80154190(u8 *a0, s32 a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154218(u8 *a0, s32 a1, s32 a2); -extern void func_801541D8(u8 *a0, s32 a1, s32 a2); -extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); -extern void func_801542A4(); -extern void func_801542A4(s32 *a0, s32 a1); -extern void func_8015430C(); -extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); -extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); -extern s32 func_80154358(void * arg0); -extern void func_80154AB4(s32 a0, s32 a1); -extern void func_80154B20(s32 a0, s32 a1, s32 a2); -extern void func_80154AE0(s32 a0, s32 a1, s32 a2); -extern void func_80154B7C(u8 *a0, s32 a1); -extern void func_80154B4C(u8 *a0, s32 a1); -extern void func_80154BC8(void *a0, s32 a1, s32 a2); -extern void func_80154B98(void *a0, s32 a1, s32 a2); -extern u8 D_800D8D10[]; -extern s16 D_80078E9E; -extern void func_801550FC(s32 a0); -extern void func_80154ED8(s32 a0, s32 a1); -extern void func_80154F9C(s32 a0); -extern void func_800183E0(s32 a0); -extern void func_801550FC(s32 arg0); -extern void func_8001D150(s32, s32); -extern void func_8001D130(int, int); -extern void func_80155150(int param_1); -extern s32 D_800DE2A4[]; -extern void func_801552F4(s32 a0); -extern void func_80155344(s32 a0); -extern s32 func_80155394(s32 *a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80029178(s32); -extern int (*D_8018D3D8[])(void); -extern s32 func_80155458(s32 param_1); -extern s32 func_801659DC(u8 *a0); -extern s32 func_801554B8(void *arg0); -extern void func_801555F4(void *a0); -extern void func_80155518(s32 *a0); -extern void func_80155580(void *a0); -extern void (*D_8018D3DC[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern s32 func_80155800(s32 arg0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern s32 func_80029B4C(s32 a0, s32 a1); -extern s32 func_80029BC8(s32 a0, s32 a1); -extern s32 func_80029C44(s32 a0, s32 a1); -extern s32 func_8015640C(s32 a0, s32 a1); -extern s32 rand(void); -extern u32 func_8015616C(s32 param_1, u16 param_2); -extern u16 func_80156370(u16 param_1); -extern s32 func_801564B0(s32 a0); -extern s32 func_8002A1B4(void); -extern s32 func_8002A400(void); -extern s32 func_8002A670(void); -extern s32 func_8002A8E0(void); -extern s32 D_801151E0[]; -extern s32 func_801565C0(void); -extern void func_80156A14(s32 *a0); -extern void func_80156648(s32 *a0); -extern u8 D_8011DAD8[]; -extern s32 func_8014C568(s16 *a0, s16 *a1); -extern void func_801567BC(s32 a0); -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018D840[]; -extern void func_80156A1C(s32 param_1, s32 param_2); -extern s32 D_801150E0[]; -extern void func_80156A88(s32 a0, s32 a1); -extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); -extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); -extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); -extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern s32 func_80135004(s32 a0, void *a1, s32 a2); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801575E4(void *a0); -extern void func_801574DC(s32 *a0); -extern void func_80157544(void *a0); -extern void (*D_8018D850[])(void); -extern void func_8014CC28(s32 a0); /* defined */ -extern s32 func_8014F3E8(s32 a0); /* declared */ -extern void func_8015BDD0(s32 *a0); /* defined */ -extern void func_801575E4(void *a0); /* defined */ -extern void func_80157580(s32 arg0); -extern u8 D_800D4F14[]; -extern void func_801576A8(void *arg0); -extern s32 func_8015773C(u8 *a0); -extern s32 func_8015771C(u8 *a0); -extern s32 func_8015773C(u8 * arg0); -extern int D_801E96D0; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018D878[])(void); -extern void func_80157808(void *param_1); -extern void func_80157880(s32 a0); -extern s32 func_801725A4(u8 *a0); -extern u8 D_800D5128; -extern u8 D_8018D858; -extern void func_801578C0(s32 param_1); -extern void func_80147A84(int); -extern void func_80148038(int, int); -extern void func_80147460(int); -extern void func_80146D90(int); -extern void func_80161450(void *a0); -extern void func_80157A8C(int); -extern void func_80154A74(int, int); -extern unsigned char D_800D5178; -extern unsigned char D_8018D868; -extern void func_8015795C(int param_1); -extern void func_80161D20(s32 a0, s32 a1); -extern void func_80157A8C(s32 a0); -extern void func_8016706C(s32 a0); -extern u8 D_800D51AC[]; -extern void func_80157AC8(s32 param_1); -extern void func_80157B74(int param_1); -extern void func_8016158C(void *a0); -extern void func_8015BE04(s32 *a0); -extern void func_80157BC8(s32 a0); -extern void func_80157CCC(s32 a0); -extern void func_80157DC4(void *a0); -extern void func_80157FC4(void *a0); -extern void func_80157D74(u16 *a0); -extern void (*D_8018D8B8[])(void); -extern void func_80157E38(void *); -extern void func_80157E00(void *a0); -extern void func_80157E38(void * a0); -extern s32 func_80157F64(s32 *a0); -extern s32 func_80156600(void *a0); -extern void func_80157EA4(void *a0); -extern void (*D_8018D8C0[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018D88C; -extern void func_80158038(void * param); -extern u8 D_800D524C[]; -extern void func_80161418(void *a0); -extern void func_801580B4(s32 a0); -extern void func_801581AC(s32 a0); -extern void (*D_8018D8CC[])(void); -extern void func_8015824C(void *a0); -extern void func_801582C0(void *); -extern void func_80158288(void *a0); -extern u8 D_800D52A8[]; -extern void func_801585A4(s32 *a0); -extern void func_801582C0(void *a0); -extern s32 func_801585AC(s32 *a0); -extern u8 D_800D52E8[]; -extern void func_80158344(s32 *a0); -extern s32 func_801615C4(void *a0, s32 a1); -extern u8 D_8018D89C; -extern u8 D_800D533C; -extern void func_80158434(s32 param_1); -extern void func_80158548(s32 param_1); -extern void func_801585EC(u8 *a0); -extern void func_80158794(void); -extern s32 D_801E96D8; -extern s32 D_801E96E4; -extern s32 D_801E96E8; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018D908[])(s32 *); -extern void func_80158AE4(void *a0); -extern void func_80158AB4(void *a0); -extern void func_8016F264(void); -extern void func_80165840(void); -extern void func_801658DC(void); -extern void func_80165A78(s32); -extern void func_80158AE4(void * a0); -extern M2C_UNK D_800D58D8; -extern void func_80158BB0(void *arg0); -extern s32 func_80159404(s32 a0, s32 a1); -extern void func_80158C40(s32 *a0); -extern void func_80158CD8(s32 *a0); -extern s32 func_80159434(s32 a0, s32 a1); -extern void func_80158D60(s32 a0); -extern M2C_UNK D_800D5904; -extern void func_80158E24(s32 *a0); -extern s32 D_8018D8DC[]; -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80158F00(int param_1); -extern u8 D_80110C3C[]; -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80158FA4(s32 param_1); -extern s32 func_801399F0(s32 a0); -extern u8 D_80110C94[]; -extern u8 D_80110CD4[]; -extern void func_80159070(void *a0); -extern s32 func_80029A94(s32); -extern void func_80175454(void); -extern void func_800298BC(void *); -extern void func_8002992C(s32); -extern void func_800CF804(void); -extern void func_800CF818(void); -extern u8 D_80110D0C[]; -extern void func_80159120(s32 a0); -extern void func_801592CC(s32 *a0); -extern u8 D_800AE6BD; -extern s32 D_801E96E0; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018DB58[])(void); -extern void func_80159698(void *a0); -extern s32 func_801596D4(void *a0); -extern void func_80174B6C(void); -extern void func_80129248(s16 a0); -extern void func_8013C938(void); -extern void func_8013CB20(void); -extern void func_8013C98C(void); -extern void func_8002850C(s32, s32, s32); -extern void func_80028620(s32, void *); -extern s16 D_800B9AAC[]; -extern s16 D_800B9B00; -extern u16 D_801270C0; -extern u32 D_800AFAE8[]; -extern char D_8018D978[]; -extern s32 func_801596F0(s32 param_1); -extern s32 func_80159874(void); -extern void func_800167B8(s32 a0); -extern s32 func_8015987C(s32 a0); -extern int func_800167F0(int arg); -extern int func_801598BC(void); -extern void func_80159968(void *a0); -extern void func_801598E0(u8 *a0); -extern void (*D_8018DBFC[])(void); -extern void func_80159A20(void *a0); -extern void func_801599E0(void *a0); -extern void func_80159A18(void); -extern void func_80159BE4(s32); -extern void func_80159B08(s32 *a0); -extern void func_80159B70(void *a0); -extern void func_80159B3C(void * a0); -extern void (*D_8018DD50[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018DB6C; -extern void func_80159BE4(s32 arg0); -extern void func_8015A1C8(s32 a0); -extern void func_8015A2D8(s32); -extern void func_8015A1FC(s32 *a0); -extern void func_8015A264(void *a0); -extern void func_8015A230(s32 *a0); -extern void (*D_8018DD58[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018DB7C; -extern s32 func_80172608(u8 *a0); -extern void func_8015A2D8(s32 param_1); -extern u8 D_800D48DC; -extern s32 func_8015AB7C(s32 a0); -extern s32 D_8011F9C4; -extern s32 func_8015ABD4(s32 a0, s32 a1, s32 a2); -extern s32 func_80161CD0(s32 a0, s32 a1); -extern M2C_UNK D_8018DB9C; -extern void func_8015AC48(s32 arg0); -extern void func_8015AC90(s32 a0); -extern void func_8015ADB0(s32 a0); -extern void func_8015ACC4(s32 *arg0); -extern void func_8015AD3C(void *a0); -extern void func_8015AD08(void *arg0); -extern void (*D_8018DD60[])(void); -extern void func_8015ADB0(s32); -extern void func_8015AD78(s32 a0); -extern void func_8015ADB0(s32 arg0); -extern s32 D_800D4A9C; -extern int func_8015B6F4(int param_1); -extern u8 D_800D4F8C[]; -extern s32 func_8015B7B4(s32 a0); -extern u8 D_800D4BE0[]; -extern s32 func_8014A51C(void); -extern s32 func_8015B858(u8 *a0); -extern s32 D_800D4B48; -extern void func_8015B8F8(s32 *a0); -extern void func_8015BD8C(s32 *a0); -extern s32 func_8015BE94(); -extern void func_8015BE38(struct Obj *a0); -extern s32 func_8015BE74(void); -extern void func_80161124(void *a0); -extern s32 func_8015BE94(s32 *a0); -extern s32 func_8015AE2C(); -extern s32 func_8015BEC4(void); -extern s32 func_8015B950(s32 arg0); -extern s32 func_8015BEE4(void); -extern void func_8015BF04(s32 *a0); -extern void func_8015C0C4(s32 a0); -extern void func_8015BFF4(void *a0); -extern void func_8015BF7C(s32 *a0); -extern void func_8015C030(s32 *a0, s32 a1); -extern void func_8015BFB0(s32 *a0, s32 a1); -extern void (*D_8018DD88[])(void); -extern void func_8015C0C4(s32); -extern void func_8015C08C(s32 a0); -extern s32 func_8015C128(s32 param_1); -extern void func_8015C6A4(void); -extern void func_8015C788(s32 a0); -extern void func_8015C6AC(s32 *a0); -extern void func_8015C714(void *a0); -extern void func_8015C6E0(s32 *a0); -extern void (*D_8018DD94[])(void); -extern void func_8015C788(s32); -extern void func_8015C750(s32 a0); -extern void func_8015CB94(s32 a0); -extern void func_8015CBCC(void); -extern void func_8015CBD4(void); -extern void func_8015CBDC(void); -extern void func_8015CBE4(void); -extern void func_8015CBEC(void); -extern void func_8015CBF4(void); -extern void func_8015CBFC(void); -extern void func_8015CC04(void); -extern void func_8015CC0C(s32 *param_1); -extern void func_8015CC74(s32 *a0); -extern void func_8015CC40(s32 *a0); -extern s32 func_8015CCD0(); -extern s32 func_8015CCB0(void); -extern s32 func_801725E0(u8 *a0); -extern s32 func_8015CCD0(s32 param_1); -extern s32 func_8015CD20(s32 arg0); -extern void func_8015CF24(s32 a0); -extern void func_8015D01C(); -extern void func_8015CF58(s32 *param_1); -extern void func_8015CFC0(s32 *a0); -extern void func_8015CF8C(s32 *a0); -extern void func_8015CFFC(void); -extern void func_8015D01C(int param_1); -extern void (*D_8018DC08[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018DE38; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018CF1C[]; -extern void func_8015D414(int param_1); -extern void func_8015D57C(s32); -extern void func_8015D480(s32 *a0); -extern s32 func_8015D4E8(s16 *a0); -extern void func_8015D4B4(s16 *a0); -extern void func_8015D524(s32 arg0); -extern void func_8015D544(s32 a0); -extern void func_801746DC(void); -extern void func_8015D57C(s32 arg0); -extern s32 func_80161B18(void *a0); -extern s32 func_80161B84(void *a0); -extern void func_80154150(int, int); -extern void func_80149374(int, int); -extern unsigned char D_8018DE4C[]; -extern void func_8015D5E8(int param_1); -extern int func_8015E0D4(int); -extern void func_8015DA5C(s32 a0); -extern void func_8015DB6C(s32 a0); -extern void func_8015DA90(s32 *a0); -extern void func_8015DAF8(s32 *a0); -extern void func_8015DB6C(s32); -extern void func_8015DB34(s32 a0); -extern void func_8015DCB8(s32 a0); -extern void func_8014BD60(s32 a0, s32 a1); -extern int func_8015DD74(int); -extern void func_8015DBD4(void *arg0); -extern int func_8015DC84(int a0); -extern s8 D_8018DE88[]; -extern void func_8015DCB8(s32 param_1); -extern int func_8015DD74(int arg0); -extern void func_8015DECC(s32 a0); -extern void func_8015DDF0(s32 *a0); -extern void func_8015DE58(s32 *a0); -extern void func_8015DECC(s32); -extern void func_8015DE94(s32 a0); -extern void func_8015E018(s32 a0); -extern void func_8015DF34(void *arg0); -extern int func_8015DFE4(int a0); -extern void func_8015E018(s32 param_1); -extern int func_8015E0D4(int a0); -extern void func_8015E22C(s32 a0); -extern void func_8015E150(s32 *a0); -extern s32 func_8015E1B8(s32 a0); -extern void func_8015E184(s32 *arg0); -extern void func_8015E22C(s32); -extern void func_8015E1F4(s32 a0); -extern u8 D_800D4FF4[]; -extern u8 D_800D5098[]; -extern u8 D_800D5060[]; -extern s32 func_8014A850(s32 a0); -extern void func_8015E40C(s32 a0); -extern void func_8015E588(void); -extern void func_8015E4B0(s32 a0); -extern void func_8015E288(s32 a0); -extern u16 D_8018DED0; -extern u16 D_8018DED2; -extern u16 D_8018DED4; -extern s32 D_8018DED8; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -extern void func_8013C9C4(void *a0); -extern s32 D_8018DEE0; -extern void func_8015E5B0(u8 *self); -extern void func_8015E714(s32 *a0); -extern void func_8015E95C(s32); -extern void func_8015E84C(s32 *a0); -extern void func_8015E8E8(s32 *a0); -extern void func_8015E9B8(s32 *a0); -extern void func_8015E8B4(s32 *a0); -extern void func_8015E924(s32 a0); -extern void func_8015E95C(s32 a0); -extern s16 D_801152A0; -extern void func_80160818(s32 *a0); -extern void func_8015ED6C(s32 *a0); -extern void func_8015EE7C(s32); -extern void func_8015EDA0(s32 *a0); -extern s32 func_8015EE08(s32 a0); -extern void func_8015EDD4(s32 *arg0); -extern void func_8015EE44(s32 a0); -extern int D_800D4C48; -extern int D_8018DBEC; -extern void func_8015EE7C(s32 param_1); -extern void func_8015EEE0(void *arg0); -extern void func_8015EF9C(void); -extern void func_8015F080(s32); -extern void func_8015EFA4(s32 *a0); -extern void func_8015F00C(s32 *a0); -extern void func_8015EFD8(s32 *a0); -extern void func_8015F048(s32 a0); -extern void func_8015F080(s32 a0); -extern s32 D_80062BE8; -extern void func_801466F0(s32, s32, s32, s32, s32, s32, s32, s32); -extern s32 func_80161208(void); -extern void func_8015F118(void *a0); -extern void func_8015F260(s32 *a0); -extern void func_8015F380(); -extern void func_8015F2BC(s32 *a0); -extern void func_8015F324(s32 *a0); -extern void func_8015F2F0(s32 *a0); -extern void func_8015F360(void); -extern s32 func_801725B8(u8 *a0); -extern void func_8015F380(void* arg0); -extern void func_8015F738(s32 *a0); -extern void func_8015F848(s32 *a0); -extern void func_8015F76C(s32 *a0); -extern s32 func_8015F7D4(s32 a0); -extern void func_8015F7A0(s32 *arg0); -extern void func_8015F810(s32 *a0); -extern void func_80147078(s32 *, s16); -extern void func_80159B70(void *); -extern void func_8015F89C(void *arg0); -extern void func_8015F948(s32 *param_1); -extern void func_8015F9A4(void *arg0); -extern void func_8015FA24(s32 arg0); -extern void func_8015FBE0(s32 *a0); -extern void func_8015FA44(s32 *a0); -extern void func_8015FAAC(s32 *a0); -extern void func_8015FA78(s32 *a0); -extern s32 func_801612B8(void *a0, s32 a1); -extern void func_8016007C(s32 a0); -extern void func_8015FAE8(void *arg0); -extern void func_8015FCC8(void *param_1); -extern unsigned int D_8018DF64[]; -extern void func_8015FD74(int param_1); -extern s32 func_80028DE0(void); -extern u8 func_80165700(s32 a0, s32 a1); -extern void func_8015FDCC(s32 a0); -extern u8 D_80078EC2; -extern u8 func_801656E8(s32 a0, s32 a1); -extern void func_80165670(s32 a0, s32 a1); -extern void func_8016004C(s32 a0); -extern void func_8015FF20(void *param_1); -extern void func_801601AC(s32 *a0); -extern void func_801600D0(s32 *a0); -extern void func_80160138(s32 *a0); -extern void func_80160104(s32 *a0); -extern void func_80160174(s32 *a0); -extern void func_801601E4(s32 *a0); -extern void func_80160244(s32 *a0); -extern void func_8016032C(void); -extern void func_80160410(s32 *a0); -extern void func_80160334(s32 *a0); -extern void func_8016039C(s32 *a0); -extern void func_80160368(s32 *a0); -extern void func_801603D8(s32 *a0); -extern u8 D_80062BD0; -extern void func_80160410(s32 * a0); -extern void func_801607B8(s32 *a0); -extern void func_801608C0(s32 *a0); -extern void func_801607E4(s32 *a0); -extern void func_8016084C(s32 *a0); -extern void func_80160888(s32 *a0); -extern void func_80160A28(s32 a0); -extern void func_80160A74(s32 *a0); -extern void func_80160BB4(s32 *a0); -extern void func_80160ACC(s32 *a0); -extern s32 func_80160B34(s32 a0); -extern void func_80160B00(s32 *arg0); -extern void func_80160B70(s32 a0); -extern void func_80160C28(void *arg0); -extern void func_80160CB4(s32 *a0); -extern void func_80160D10(void *arg0); -extern void func_80160DEC(u8 *a0); -extern void func_80160F00(); -extern void func_80160E3C(s32 *a0); -extern void func_80160EA4(); -extern void func_80160E70(s32 *a0); -extern void (*D_8018E014[])(void); -extern void func_80160EA4(void *a0); -extern void func_80160EE0(void); -extern void func_80160F00(void* arg0); -extern void func_800D0F4C(s32 a0); -extern u8 D_80110EC0; -extern void func_80160F70(s32 a0); -extern void func_80160FE0(s32 *a0); -extern void func_80161034(void *a0); -extern void func_80161094(s32 a0); -extern void func_801610FC(void); -extern void func_801483E8(void); -extern s32 func_80161A60(s32 a0); -extern void func_8016130C(void *a0, s32 a1); -extern void func_80161240(void *a0); -extern void func_80161374(void *a0, s32 a1); -extern void func_80161278(void *a0); -extern s32 func_801612B8(void * a0, s32 a1); -extern void func_8016163C(void *a0, s32 a1); -extern void func_80161774(void *a0, s32 a1); -extern s32 func_8016197C(s32 a0, s32 a1); -extern s32 func_80161488(void *a0); -extern void func_80161888(void *a0, s32 a1); -extern void func_801614E4(void *a0); -extern void func_8016191C(void *a0, s32 a1); -extern void func_8016151C(void *a0); -extern void func_80161554(void *a0); -extern s32 func_801615C4(void * arg0, s32 arg1); -extern s32 func_801619A4(s32 *a0); -extern s32 func_80161A00(s32 a0); -extern s32 func_80161A30(s32 a0); -extern int func_801497A8(void); -extern int func_80161BE0(void *param_1); -extern u16 D_8018E044[]; -extern void func_80161C98(int param_1, u32 param_2); -extern void func_80161E08(s32); -extern s32 func_80162438(s32); -extern s32 D_800AE6A8; -extern void func_800D1734(void *); -extern s32 D_8018E0A8; -extern void func_80161D88(void); -extern void func_80161E08(s32 param_1); -extern int func_800291DC(int); -extern int func_800D0E30(void *a0); -extern int func_801620C4(void); -extern s32 func_800D0D7C(s32, s32); -extern int D_801E96F0[]; -extern void func_8016216C(void); -extern u8 D_80078EB0; -extern u8 D_80078EB1; -extern s32 func_801621CC(s32 arg0); -extern void func_801622C4(void); -extern void (*D_8018E0CC[])(void); -extern void func_80162330(void *a0); -extern void func_8014706C(void *a0); -extern s32 func_8016236C(u8 *a0); -extern void func_800D0C48(s32 a0); -extern s32 func_801623B8(s32 *a0); -extern s32 func_800167F0(s32 a0); -extern s32 func_80162414(void); -extern s32 func_80162438(s32 _unused0); -extern int func_801626B8(void); -extern void func_80162714(void); -extern int D_801E9748[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018E114[])(void); -extern void func_80162834(void *a0); -extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80162968(s32 a0); -extern s32 func_80162ACC(u8 *a0); -extern u8 D_800B5CB8; -extern s32 D_8018E104; -extern s32 D_800B5CBC; -extern u8 D_800B5CDF; -extern s32 D_800B5CEC; -extern void func_80162870(s32 param_1); -extern void func_801628F4(s32 *a0); -extern void func_80162968(s32 param_1); -extern void func_80162AC0(s32 *a0, s8 a1); -extern s32 func_80162AE0(u8 *a0); -extern void func_80162AF4(void); -extern void func_80162CC4(void); -extern s32 D_80126D40; -extern void func_80162B1C(void); -extern void func_80162D28(s32 *a0); -extern void func_80162D88(s32 *a0); -extern void func_80162DE8(s32 *a0); -extern void func_80162E48(s32 *a0); -extern void func_80162EA8(s32 *a0); -extern void func_80162F60(s32 arg0, s32 arg1); -extern void func_80162F80(s32 arg0, s32 arg1); -extern void func_80162FA0(s32 arg0, s32 arg1); -extern void func_80162F08(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80162FC0(s32 *a0); -extern void func_80162FF4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801630C4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163194(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg4); -extern void func_8016325C(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163234(s32 a0); -extern s32 D_80115100; -extern s32 func_801632E0(void); -extern s32 D_80115200; -extern s32 func_801632F0(void); -extern u16 D_80126B18[]; -extern void func_80163328(void); -extern s32 func_801633A8(void); -extern s32 func_80163408(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void func_80163534(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, u16 * a5); -extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); -extern char D_801E8DBC[8]; -extern void *memcpy(void *dst, const void *src, unsigned int n); -extern void func_801634D8(s32 param_1, u16 param_2, u16 param_3, s32 param_4, u16 param_5); -extern void func_80157158(); -extern void func_80163664(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801636D0(s32 a0, s32 a1); -extern s32 func_8016380C(struct S8016380C *a0, s32 a1); -extern void *memcpy(void *dst, void *src, s32 n); -extern s32 func_801638A0(u8 *a0, s32 a1); -extern s32 func_80163950(s32 a0); -extern void (*D_8018E11C[])(void); -extern void func_80163A58(void *a0); -extern void func_80163A94(s32 param_1); -extern void func_80163C2C(s32 param_1); -extern void func_80163EC8(s32 param_1); -extern void func_80164270(s32 *a0); -extern void func_80164418(void); -extern void func_80163764(s32 a0); -extern void func_801642AC(s32 a0); -extern void func_8016432C(s32 a0); -extern void func_80164410(void); -extern s32 func_80012DBC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164530(s32 arg0); -extern void (*D_8018E170[])(void); -extern void func_80164744(s32 param_1); -extern void func_8001C810(s32 a0, s32 a1); -extern void func_80164A74(s32 *a0); -extern void func_80164930(s32 a); -extern u16 D_800DF2E0; -extern s32 D_8018E138; -extern s16 D_8018E16C; -extern s16 D_8018E16A; -extern s16 D_8018E168; -extern void func_801647A4(int param_1); -extern void func_80164ACC(); -extern void func_80164864(void *a0); -extern void func_80164930(s32 param_1); -extern s32 func_8014C308(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164ACC(s32 a0); -extern void (*D_8018E17C[])(void); -extern void func_80164BA0(void *a0); -extern void func_8001CD50(s32 a0, s32 a1); -extern void func_800233CC(void *, unsigned short); -extern void func_80164DD0(s32 a0); -extern void func_80164DB0(void); -extern u8 D_801E97A8; -extern u8 D_801E97A9; -extern u8 D_801E97AA; -extern u8 D_801E97AB; -extern u8 D_801E97AC; -extern u8 D_801E97AD; -extern u8 D_801E97AE; -extern u8 D_801E97AF; -extern void func_80164BDC(s32 param_1); -extern void func_80164E40(void); -extern void func_80164CD4(u8 *a0); -extern void func_80164D4C(void *arg0); -extern void (*D_8018E18C[])(void); -extern void func_80164EA4(void *a0); -extern void func_80165124(void *a0); -extern void func_80164EE0(int param_1); -extern s32 func_80165140(s32 a0); -extern void func_801651B8(void *a0); -extern void func_80164F44(void *arg0); -extern void func_80165024(void *a0); -extern void func_80165064(s32 *a0); -extern void func_801650C4(s32 *a0); -extern s32 func_80165140(s32 param_1); -extern s32 func_80165240(s32 a0, s32 a1, s32 a2); -extern s32 D_801E97E8; -extern void func_801651B8(void * param_1); -extern u8 D_80126CF8; -extern void func_8016533C(void); -extern void func_801653F4(s32 a0); -extern void func_80165580(s32 a0); -extern void func_80165374(s32 a0); -extern void func_80165580(s32 _arg0); -extern void func_801653B8(s32 *a0); -extern s32 func_80165624(s32 a0); -extern u8 D_80078EC5; -extern void (*D_8018E1D0[])(void); -extern u8 func_80165658(s32 a0, s32 a1); -extern void func_800CAE0C(s32 a0); -extern void func_801654A8(s32 arg0); -extern void func_80165B28(void *a0); -extern void func_801655E4(s32 a0); -extern u8 D_8018E24C[]; -extern s32 D_8018E26C[]; -extern u8 D_8018E2E8[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018E308[]; -extern u8 D_8018E328[]; -extern void func_800CAF6C(void); -extern void func_80165770(void); -extern void func_801657D8(void); -extern u8 D_80078EC3; -extern void func_801657A0(void); -extern s32 D_80078EA0; -extern s32 D_80078EA8; -extern u8 D_80078EBB; -extern s32 D_80078ED4; -extern s32 D_80078ED8; -extern s32 D_80078EDC; -extern u8 D_80078EE0; -extern void func_80165874(void); -extern s8 D_80078EC4; -extern void func_801658EC(void); -extern s32 func_80165900(void); -extern s32 func_80165910(void); -extern s32 D_8012672C; -extern s32 D_8012811C; -extern s32 D_80126B08; -extern void func_80165938(void); -extern void func_80165958(void); -extern s32 func_80165978(void); -extern void func_80165988(void); -extern s32 func_801659A8(void); -extern void func_801659B8(void); -extern s32 func_801659CC(void); -extern void func_80165A18(void); -extern s32 func_80165A50(s32 _arg0); -extern void func_80165AC8(void); -extern void func_80165A78(s32 arg0); -extern void (*D_8018E3C4[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_8018E440[])(void); -extern void func_80165BB4(u8 *a0); -extern void func_80165B6C(u8 *a0); -extern void func_80165C58(s32 arg0); -extern void func_80165BFC(void *a0); -extern void func_80165C78(void); -extern M2C_UNK D_801E8DCC; -extern void func_80165E2C(u16 *arg0); -extern s32 func_80165FA4(s32 a0, s32 a1, s32 a2); -extern s32 func_80167DBC(s32 a0, s32 a1, s32 a2); -extern s32 func_80167AE0(s32 a0, s32 a1, s32 a2); -extern void func_80165E90(void); -extern void func_80020F34(s32 a0, s32 a1); -extern s32 func_80165FA4(s32 arg0, s32 arg1, s32 arg2); -extern void (*D_8018E44C[])(void); -extern void func_80166018(void *a0); -extern void func_80166054(s32 arg0); -extern void func_801661CC(s32 param_1); -extern void func_80166244(void* arg0); -extern void func_8016629C(void *a0); -extern void func_801662F4(void *a0); -extern void func_8016634C(void *a0); -extern void func_801663A4(void *a0); -extern void (*D_8018E454[])(void); -extern void func_801663FC(void *a0); -extern u8 D_800D387C[]; -extern u8 D_800D3888[]; -extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); -extern void func_800D1FC8(s32 a0, s32 a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern void func_801665B4(); -extern void func_80146C3C(); -extern void func_80166438(u8 *a0); -extern s32 func_80128ED8(s32 param_1, s32 *param_2); -extern void func_800D22E4(s32 a0); -extern void func_801665B4(s32 *a0); -extern void (*D_8018E51C[])(void); -extern void func_80166618(void *a0); -extern void (*D_8018E52C[])(void); -extern void func_80166654(void *a0); -extern s32 func_80166690(s32 param_1, s32 param_2); -extern s32 func_80166994(); -extern s32 func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern s32 func_80167540(s32 arg0); -extern void (*D_8018E53C[])(void); -extern void func_801678B4(void *a0); -extern void RotMatrixYXZ(void *a0, void *a1); -extern void func_80048EAC(void *a0, void *a1); -extern s32 func_801670E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80146C3C(void); -extern void func_801678F0(s32 a0); -extern void (*D_8018E548[])(void); -extern void func_80167A9C(void *a0); -extern void func_80167AD8(void); -extern s32 func_80167AE0(s32 param_1, s32 param_2, s32 param_3); -extern void func_80168070(s32 a0, s16 *a1, s16 *a2, void *a3); -extern u8 D_8018E4A8[]; -extern u8 D_8018E4BC[]; -extern s32 func_80167DBC(s32 arg0, s32 arg1, s32 arg2); -extern void func_800D20C0(void *a0, void *a1, s32 a2); -extern void func_80017E68(void *a0, void *a1); -extern void func_800D23D0(void *a0); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern s32 D_801269A4; -extern s32 D_801269A8; -extern s32 D_801269AC; -extern void func_80168070(s32 param_1, s16 *param_2, s16 *param_3, void *param_4); -extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_8016829C(s32 a0); -extern s32 func_80166690(s32 a0, s32 a1); -extern void func_80168328(s32 arg0); -extern void func_801683D8(s32 a0); -extern void func_801684B4(s32 a0); -extern void func_80168540(s32 a0); -extern void func_801685EC(s32 a0); -extern void func_80168640(s32 a0); -extern s32 RotMatrixX(s32 a0, void *a1); -extern void func_80168664(void *arg0); -extern void (*D_8018E560[])(void); -extern void func_80168744(void *a0); -extern void func_80168BDC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801687CC(s32 a0); -extern void func_80168780(s32 a0); -extern void func_80168828(void); -extern void func_801687CC(s32 param_1); -extern void func_80168828(); -extern void (*D_8018E568[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_8018E570[])(void); -extern void func_80168AA8(void *a0); -extern void func_80168AE4(s32 a0); -extern void func_800D2318(void); -extern void func_80168BDC(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void (*D_8018E578[])(void); -extern void func_80168D58(void *a0); -extern void func_80168D94(int a0); -extern void func_80168F40(); -extern void func_80168EC4(s32 a0); -extern void func_80168F40(void *arg0); -extern void (*D_8018E580[])(void); -extern void func_8016901C(void *a0); -extern void func_80169058(s32 a0); -extern s32 func_80169228(void); -extern void func_801691B8(void *a0); -extern void (*D_8018E588[])(void); -extern void func_801693CC(void *a0); -extern void func_80169584(s32 param_1); -extern void func_80169408(s32 a0); -extern void func_8016951C(int param_1); -extern s32 func_80017758(void *a0, void *a1); -extern s32 func_80017DC4(void *a0, void *a1); -extern void func_801696D8(s32 a0, s32 a1); -extern void (*D_8018E590[])(void); -extern void func_80169830(void *a0); -extern void func_8016986C(s32 a0); -extern s32 func_80169A4C(s32 a0, s32 a1); -extern void func_801699D0(void *arg0); -extern void (*D_8018E644[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_8018E64C[])(void); -extern void func_80169F00(void *a0); -extern char D_8018E5FC[]; -extern char D_8018E5BC[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8018E684[])(void); -extern void func_8016A020(void *a0); -extern void func_8016A05C(void *a0); -extern void func_8016A290(s32 a, void *b, void *c); -extern void func_8016A08C(s32 param_1); -extern void func_8016A1CC(int param_1); -extern void func_8016A290(s32 param_1, void *param_2, void *param_3); -extern void (*D_8018E690[])(void); -extern void func_8016A700(void *a0); -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_80126B62; -extern u16 D_80126B66; -extern void func_8016AA50(s32 param_1, s32 param_2); -extern void (*D_8018E6D8[])(void); -extern void func_8016AB30(void *a0); -extern void func_8016B234(void); -extern void func_8016AFB0(s32 a0); -extern void func_8016B114(void *arg0); -extern s32 func_8016B448(s32, s32); -extern s32 func_8016BA48(s32 a0); -extern void func_8016B3F4(s32 a0); -extern s32 func_8016B428(s32 a0); -extern void func_8016B984(void *a0); -extern s32 func_8016B448(s32 arg0, s32 arg1); -extern void (*D_8018E754[])(void); -extern void func_8016B4BC(void *a0); -extern int func_8016B9F8(int); -extern int func_8016B834(int, int); -extern void func_8016B91C(int); -extern int D_801E9B08; -extern void func_8016B4F8(int param_1); -extern s32 func_8016B9F8(s32 param_1); -extern void func_8016B6BC(s32, s32, s32, s32); -extern void func_8016B91C(s32); -extern s16 D_8018E748[]; -extern void func_8016B5C0(s32 param_1); -extern void func_8001CD9C(int, void *); -extern int *D_8018E78C[]; -extern unsigned short D_8018E794[]; -extern unsigned short D_8018E79C[]; -extern unsigned char D_801E9B10[]; -extern int func_8016B834(int param_1, int param_2); -extern void func_8016B964(SrcB964 *a0, DstB964 *a1); -extern void func_8016B91C(s32 arg0); -extern s32 D_801E9B08; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8018E7A4[])(void); -extern void func_8016BBA4(void *a0); -extern s32 func_8016BBE0(s32 param_1); -extern void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3); -extern M2C_UNK D_801E9C44; -extern M2C_UNK D_801E9C48; -extern void func_8016BCC0(void *arg0); -extern s32 func_8016BD78(s32 param_1); -extern s32 func_8016BEA0(s32 param_1); -extern void func_8016BF34(void *a0); -extern void func_8016BFD0(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern s32 D_801E9BD0; -extern void (*D_8018E7D4[])(void); -extern void func_8016C14C(void *a0); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801E9C4C[]; -extern u8 D_801E9C54[]; -extern u8 D_801E9C04[]; -extern void func_8016C2C4(s32 param); -extern s32 func_8016C49C(s32 param_1_arg); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_8016C74C(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern short func_8016CF04(s32 a0, s32 a1); -extern void func_8016C83C(s32 a0); -extern void (*D_8018E7DC[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_8018E7F8[])(void); -extern void func_8016D19C(void *a0); -extern void (*D_8018E800[])(void); -extern void func_8016D428(void *a0); -extern void func_8016D464(u8 *a0); -extern void func_8016D4DC(s32 a0); -extern void func_8016D5EC(s32 *a0); -extern short func_8016CBC0(void); -extern void func_8016D64C(int param_1); -extern void func_8016D778(s32 a0); -extern void func_800D20C0(); -extern void func_8016D848(s32 *a0); -extern void func_8016D984(s32 *a0); -extern void func_8016DBD8(u8 *a0); -extern void (*D_8018E868[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_8018E80C; -extern u8 D_8018E818; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void (*D_8018E89C[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8018E8A4[])(void); -extern void func_8016DF20(void *a0); -extern void func_8016E3CC(s32 a0); -extern void func_8016E1CC(s32 a0); -extern void func_8016E26C(s32 *a0); -extern void func_8016E2E8(void *a0); -extern void func_8016E460(void *a0, void *a1); -extern void func_8016E358(void *a0); -extern void func_8016E460(void *arg0, void *arg1); -extern void (*D_8018E8F8[])(void); -extern void func_8016E5B8(void *a0); -extern void func_8016E5F4(s32 arg0); -extern void func_8016E778(); -extern void func_8016E688(void *a0); -extern void func_8016E6E4(s32 a0); -extern void func_8016E728(u8 *a0); -extern void func_8016E7C8(int param_1, short *p1, unsigned int *p2); -extern void func_8016E778(int param_1); -extern void func_8016E7C8(int param_1, short *param_2, unsigned int *param_3); -extern s32 D_80115218; -extern void func_8016E8F0(void); -extern void func_8016E918(short param_1, short param_2); -extern s32 func_8016E95C(); -extern u16 D_8018E92C[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_8018E91C[]; -extern void func_8016EB3C(s32 p); -extern void func_8016EBA8(u8 *param_1); -extern void func_8016ED6C(void); -extern s32 D_80126D70; -extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); -extern void func_8016ED8C(s32 a0, s32 a1, s32 a2); -extern void func_8016EE40(s32 a0, s32 a1, s32 a2); -extern void func_8016EDBC(s32 a0, s32 a1, s32 a2); -extern void func_8016EE94(); -extern void func_8016EDEC(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_8016EF78(s32 a0); -extern void func_8016EE40(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_801726D0(void *a0); -extern s32 D_80126D50; -extern s32 D_80126D54; -extern u8 D_80126D6C; -extern u8 D_80126D6D; -extern u8 D_80126D6E; -extern s32 D_80126D5C; -extern s32 D_80126D60; -extern s16 D_80126D64; -extern s16 D_80126D66; -extern s16 D_80126D68; -extern s16 D_80126D6A; -extern u8 D_80126D1A; -extern s32 D_80127058; -extern s32 D_8012705C; -extern s32 D_80127060; -extern s32 D_80127064; -extern s32 D_80127068; -extern s32 D_8012706C; -extern s32 D_80127070; -extern s32 D_80127074; -extern s16 D_80126D20; -extern void func_8016EE94(s32 a0, s32 a1); -extern s32 func_8016EFC8(s32); -extern s32 func_8016EFA8(s32 a0); -extern void func_8016F094(s32 *a0); -extern s32 func_8016F0AC(); -extern s32 D_8018E948; -extern void func_8016F250(void); -extern void func_8016F288(void); -extern void func_8016F2A8(void); -extern void func_8016F2C8(void); -extern void func_8016F2EC(void); -extern void func_8016F30C(void); -extern void func_8016F330(void); -extern void func_8016F350(void); -extern void func_8016F374(void); -extern void func_8016F388(void); -extern void func_8016F398(void); -extern s32 func_8016F44C(s32 a0); -extern void func_8016F470(s32 a0); -extern s32 func_8016F410(s32 a0); -extern void func_80175414(s32 _arg0); -extern s32 func_8016F4C4(s32); -extern s32 func_8016F494(s32 a0); -extern void func_8016F0E4(void); -extern s32 func_8016F4C4(s32 param_1); -extern void func_8016F4F4(void); -extern void func_801719A4(int a0, int a1); -extern void func_800D1724(s32 a0); -extern void func_80171928(void *a0); -extern void *D_8011F738; -extern void func_8016F4FC(void *a0); -extern void func_8014708C(void *a0); -extern void func_8016F540(void *a0); -extern void func_8016F578(s32 *a0); -extern void func_8016F5B0(void *a0); -extern void func_80147060(u8 *a0); -extern void func_8016F5E0(u8 *a0); -extern void func_8016F610(void *a0); -extern void func_8016F648(void *a0); -extern void func_8016F680(void *a0); -extern void func_8016F6B0(void *a0); -extern void (*D_8018E9C0[])(void); -extern void func_8016F6E0(void *a0); -extern s32 func_80171990(u8 *a0); -extern void func_8016F764(void *a0); -extern void func_8016F71C(u8 *a0); -extern void (*D_8018E9C8[])(void); -extern void func_8016F798(void *a0); -extern void func_8016F804(void *a0); -extern void func_8016F7D4(u8 *a0); -extern void func_80171928(void *); -extern void (*D_8018E9D0[])(void); -extern void func_8016F834(void *a0); -extern void func_8016F8AC(u8 *a0); -extern void func_8016F870(u8 *a0); -extern void func_80172358(u8 *a0, u8 *a1); -extern void (*D_8018E9D8[])(void); -extern void func_8016F8E4(void *a0); -extern void func_8016F95C(void *a0); -extern void func_8016F920(u8 *a0); -extern s32 func_80171CC4(void *a0, void *a1); -extern s32 func_80171D1C(void *a0, void *a1, s32 a2); -extern u16 D_8011F73E; -extern void (*D_8018E9E0[])(void); -extern void func_8016F9C4(void *a0); -extern void func_80171B44(s32 *a0); -extern void func_8016FA44(s32 a0); -extern void func_8016FA00(s32 a0); -extern s32 func_80171C64(s32 a0, s32 a1); -extern void (*D_8018E9E8[])(void); -extern void func_8016FA84(void *a0); -extern void func_8016FB10(void *a0); -extern void func_8016FAC0(u8 *a0); -extern void func_8016FB50(void *a0); -extern void (*D_8018E9F4[])(void); -extern void func_8016FB7C(void *a0); -extern void func_8016FC24(); -extern void func_8016FBB8(s32 a0); -extern s32 func_80171B4C(s32 a0, s32 a1); -extern void func_8016FC24(s32 a0); -extern void func_8016FC64(void *a0); -extern void (*D_8018EA00[])(void); -extern void func_8016FC90(void *a0); -extern void func_8016FD08(u8 *a0); -extern void func_8016FCCC(u8 *a0); -extern s32 func_80172658(s32 *a0); -extern void func_8016FD08(u8 *s0); -extern void func_8016FD7C(s32 *a0); -extern void (*D_8018EA0C[])(void); -extern void func_8016FDB4(void *a0); -extern void func_8016FE2C(u8 *a0); -extern void func_8016FDF0(u8 *a0); -extern void func_8016FE2C(u8 * a0); -extern s32 func_8016FE78(s32 *a0); -extern s32 func_80172664(s32 *a0); -extern void func_8016FED0(s32 *a0); -extern void (*D_8018EA1C[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_8018EA2C[])(void); -extern void func_8016FFDC(void *a0); -extern void func_80170068(u8 *a0); -extern void func_80170018(u8 *a0); -extern void func_801700B8(u8 *a0); -extern void func_80170100(u8 *a0); -extern void (*D_8018EA34[])(void); -extern void func_80170150(void *a0); -extern void func_801701C8(u8 *a0); -extern void func_8017018C(u8 *a0); -extern void func_801701C8(u8 * a0); -extern void (*D_8018EA3C[])(void); -extern void func_80170240(void *a0); -extern void func_801702B8(s32 a0); -extern void func_8017027C(u8 *a0); -extern s16 func_80171AB0(s32 a0, void *a1); -extern void (*D_8018EA44[])(void); -extern void func_801702FC(void *a0); -extern void func_80170374(u8 *a0); -extern void func_80170338(u8 *a0); -extern s32 func_8014C168(s32 *a0, s32 a1); -extern void func_80170374(u8 * a0); -extern void (*D_8018EA4C[])(void); -extern void func_801703E0(void *a0); -extern void func_8017044C(u8 *a0); -extern void func_8017041C(u8 *a0); -extern void func_8017044C(u8 * a0); -extern void (*D_8018EA54[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_8018EA5C[])(void); -extern void func_80170548(void *a0); -extern void func_801705C0(u8 *a0); -extern void func_80170584(u8 *a0); -extern void func_801705C0(u8 * a0); -extern void (*D_8018EA64[])(void); -extern void func_801705F8(void *a0); -extern void func_80170670(void *a0); -extern void func_80170634(u8 *a0); -extern void func_8012A568(void (*a0)(void)); -extern void (*D_8018EA6C[])(void); -extern void func_801706AC(void *a0); -extern void func_80170718(void *a0); -extern void func_801706E8(u8 *a0); -extern void func_80129FF4(void); -extern void (*D_8018EA74[])(void); -extern void func_80170748(void *a0); -extern void func_801707D4(void *a0); -extern void func_80170784(u8 *a0); -extern s32 func_80174ED4(void); -extern void (*D_8018EA7C[])(void); -extern void func_80170810(void *a0); -extern void func_801708B0(void *a0); -extern u8 D_800D5DA8; -extern void func_8017084C(s32 a0); -extern u8 D_800D5A34[]; -extern void func_80170AD8(void *a0); -extern void func_80171904(s32 a0); -extern void func_80170B48(int a0); -extern void func_80170928(void); -extern u8 D_800D59EC[]; -extern void func_80170970(void); -extern u8 D_800D599C[]; -extern void func_801709B8(void); -extern u8 D_800D5934[]; -extern void func_80170A00(void); -extern void func_80170A48(void); -extern u8 D_800D5DC0[]; -extern void func_80170A90(void); -extern void (*D_8018EA84[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_8018EA8C[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8018EA94[])(void); -extern void func_80170C74(void *a0); -extern s32 func_8017197C(u8 *a0); -extern void func_80170CF0(void *a0); -extern void func_80170CB0(u8 *a0); -extern void (*D_8018EA9C[])(void); -extern void func_80170D68(void *a0); -extern void func_80170DE0(u8 *a0); -extern void func_80170DA4(u8 *a0); -extern s32 D_8011F73C; -extern s32 D_8011F740; -extern void func_801718AC(void *a0); -extern void func_80170DE0(u8 * _arg0); -extern void (*D_8018EAA4[])(void); -extern void func_80170E34(void *a0); -extern void func_80170EAC(u8 *a0); -extern void func_80170E70(u8 *a0); -extern int func_800D0F8C(int a0); -extern void func_80170EAC(u8 * _arg0); -extern void (*D_8018EAAC[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8018EAB4[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_8018EABC[])(void); -extern void func_80171064(void *a0); -extern void func_801710DC(u8 *a0); -extern void func_801710A0(u8 *a0); -extern u16 D_8011F73A; -extern void func_801710DC(u8 * arg0); -extern void (*D_8018EAC4[])(void); -extern void func_80171120(void *a0); -extern void func_8017118C(u8 *a0); -extern void func_8017115C(u8 *a0); -extern void func_80142454(s32 a0); -extern void func_8017118C(u8 * a0); -extern void (*D_8018EACC[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8018EAD4[])(void); -extern void func_80171260(void *a0); -extern s32 func_80012F74(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80171384(void *a0); -extern void (*D_8018EADC[])(void); -extern void func_801714E4(void *a0); -extern void func_8017162C(void *a0); -extern void func_80171520(s32 a0); -extern s32 func_801716AC(s32 a0, void *a1, s32 *a2); -extern s32 func_80012FC8(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_800A5E94; -extern u8 D_800A5E95; -extern u8 D_800A5E96; -extern s32 func_801716AC(s32 a0, void * a1, s32 * a2); -extern int func_800D0FE0(int a0); -extern void func_801717A0(void *a0); -extern void func_8013E588(void *a0); -extern void func_801717F4(void *a0); -extern void func_80171824(void *a0); -extern void func_80171854(void *a0); -extern void func_80171884(void); -extern void func_80171A1C(u8 *a0); -extern void func_80171928(void * a0); -extern void func_8017196C(s32 *a0, s8 a1); -extern void func_80171A04(s32 *a0); -extern void func_80171A10(s32 *a0); -extern void func_80171A34(s32 *a0, s8 a1); -extern s32 func_80171A44(u8 *a0); -extern s32 func_80171A58(u8 *a0); -extern s32 func_80171A6C(u8 *a0); -extern void func_80171A80(s32 *a0, s32 a1); -extern s32 func_80171A88(s32 a0); -extern s16 func_80171AB0(s32 param_1, void * _arg1); -extern void func_80171B10(void *a0); -extern void func_80171EC8(s32 a0); -extern s32 func_80171C64(s32 param_1, s32 param_2); -extern s32 func_80171D78(s32 a0, s32 a1); -extern int func_8017250C(short *a0, short *a1); -extern s32 func_80171CC4(void * a0, void * a1); -extern s32 func_80171FFC(short *a0, short *a1, s32 a2); -extern s32 func_80171D1C(void * a0, void * a1, s32 a2); -extern s32 func_8017248C(s32 a0, s32 a1); -extern s32 func_80171E08(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_80047948(s32 a0); -extern s32 func_8004787C(s32 a0); -extern void func_80172170(s32 a0, s32 a1); -extern s32 func_8017209C(void *arg0, void *arg1, s32 arg2, s32 arg3); -extern void func_801722CC(s32 *a0); -extern void func_80172304(s32 *a0); -extern void func_80172310(u8 *a0); -extern void func_801723C4(s32 param_1, s32 param_2); -extern void func_80161C24(s32, s32); -extern void func_80172414(s32 a0); -extern s32 func_801724EC(s32 a0); -extern s32 func_8017248C(s32 arg0, s32 arg1); -extern s32 func_80013450(s32); -extern s32 func_80172560(u8 *a0, u8 *a1); -extern s32 func_8017261C(u8 *a0); -extern s32 func_80172644(u8 *a0); -extern s32 func_80172670(s32 *a0); -extern s32 func_80172688(s32 *a0); -extern s32 func_80172694(s32 *a0); -extern s32 func_801726A0(s32 *a0); -extern s32 func_801726AC(s32 *a0); -extern s32 func_801726B8(s32 *a0); -extern s32 func_801726C4(s32 *a0); -extern s32 func_80172760(s32 a0); -extern s32 func_80174650(s32); -extern void (*D_80127088)(void); -extern s32 D_801270BC; -extern s16 D_80126B0C; -extern void func_801726D0(void * _arg0); -extern void func_80172710(void); -extern void func_80174684(void *); -extern void func_80172738(void); -extern s16 D_80126B30; -extern s32 func_801727D0(void *a0); -extern void func_80172780(void *a0); -extern void func_80172844(u8 *a0); -extern void func_8017280C(u8 *a0); -extern void func_8017288C(void); -extern s32 func_801728E4(void *a0); -extern void func_80172894(void *a0); -extern void func_80172958(u8 *a0); -extern void func_80172920(u8 *a0); -extern s16 D_80126B36; -extern void func_80172958(u8 * a0); -extern void func_801729A8(void); -extern s32 func_801729F0(void *a0); -extern s16 D_80126B34; -extern s16 D_80126B32; -extern void func_801729B0(s32 a0); -extern void func_80172A8C(void *a0); -extern void func_80172A2C(int param_1); -extern void func_80172ACC(u8 *a0); -extern void func_80172B0C(void); -extern s32 func_80172B44(void *a0); -extern void func_80172B14(s16 a0); -extern s32 D_801150F8; -extern void func_80172BC8(void *a0); -extern void func_80172B80(u8 *a0); -extern void func_80172C48(void); -extern void (*D_8018EB20[])(void); -extern void func_80172CA0(void *a0); -extern void func_80172D14(u8 *a0); -extern void func_80172CDC(u8 *a0); -extern void func_80172D14(u8 * a0); -extern void func_80172D60(void); -extern s32 D_80127508; -extern s32 func_80172DAC(void *a0); -extern void func_80172D68(s32 a0); -extern void func_80172E20(u8 *a0); -extern void func_80172DE8(u8 *a0); -extern void func_80172E20(u8 * a0); -extern void func_80172E8C(void); -extern void func_8017303C(void *); -extern void func_80172E94(void); -extern void func_80172ED4(void); -extern void func_80172EFC(void); -extern void func_80172F24(void); -extern u8 D_800D47F4[]; -extern void func_80172F4C(void); -extern void func_80172F9C(void); -extern u8 D_800D5C6C[]; -extern void func_80172FEC(void); -extern s32 func_80173078(void *a0); -extern void func_8017303C(void * a0); -extern void func_801730FC(struct S801730FC *a0); -extern void func_801730B4(s32 a0); -extern void func_8017316C(void); -extern s32 func_8017319C(void *a0); -extern void func_80173174(void); -extern u8 D_800D5AA0[]; -extern void func_80173220(void *a0); -extern void func_801731D8(s32 *a0); -extern M2C_UNK D_8018EAE4; -extern void func_80173220(void * arg0); -extern void func_80173294(void); -extern void func_801732C4(); -extern void func_8017329C(void); -extern void func_801732C4(s32 *a0); -extern void func_8017331C(); -extern void func_801732F4(void); -extern void func_8017331C(s32 *a0); -extern void func_80173374(); -extern void func_8017334C(void); -extern void func_80173374(s32 *a0); -extern void func_801733A4(void); -extern void func_801733CC(s32 a0); -extern void func_801734BC(s32 a0, s32 a1); -extern s16 D_80126B3E; -extern void func_80173460(s32 a0, s32 a1); -extern void func_801734BC(s32 arg0, s32 _unused1); -extern void (*D_8018EB50[])(void); -extern void func_80173544(void *a0); -extern void func_801735B8(u8 *a0); -extern void func_80173580(u8 *a0); -extern s16 D_80126B40; -extern void func_801735EC(void *a0); -extern void func_80173648(u8 *a0); -extern void func_801736A8(void); -extern s32 func_8014C118(void *a0, s32 a1, s32 a2); -extern s32 func_801736FC(void *a0); -extern void func_801736B0(s32 a0, s32 a1); -extern void func_80173770(u8 *a0); -extern void func_80173738(u8 *a0); -extern void func_801723C4(s32 a0, s32 a1); -extern void func_801737B0(void); -extern s32 func_801737E8(void *a0); -extern void func_801737B8(s16 a0); -extern void func_8017385C(u8 *a0); -extern void func_80173824(u8 *a0); -extern void func_801738D4(void); -extern s32 func_8017390C(void *a0); -extern void func_801738DC(s16 a0); -extern void func_80173980(u8 *a0); -extern void func_80173948(u8 *a0); -extern void func_801739D8(u8 *a0); -extern void func_80173A20(void); -extern s32 D_8012750C; -extern void func_80173A60(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80173A28(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void (*D_8018EB8C[])(void); -extern void func_80173B4C(void *a0); -extern void func_80173BC0(u8 *a0); -extern void func_80173B88(u8 *a0); -extern void func_80173C64(u8 *a0); -extern void func_80173E1C(s32 a0); -extern s16 D_80126938; -extern s16 D_80126B3A; -extern void func_800D128C(s32, s32); -extern void func_80174158(s32 a0); -extern void func_8002A088(s32); -extern void func_8002A2D4(s32); -extern void func_8002A544(s32); -extern void func_8002A7B4(s32); -extern s32 func_80174188(s32 a0); -extern void func_801741A8(s32 a0); -extern s32 func_800D0EC4(void); -extern void func_800D0F0C(s32, s32); -extern void func_80145EE8(s32); -extern void func_80173EF8(void *param_1); -extern s32 func_8014BCEC(s32, s32); -extern void func_801741A8(s32 _arg0); -extern s16 D_80126B3C; -extern s16 D_8011F9C8; -extern void func_801741EC(u8 *a0); -extern void func_80174274(void); -extern s32 func_801742A4(void *a0); -extern void func_8017427C(void); -extern void func_80174318(u8 *a0); -extern void func_801742E0(u8 *a0); -extern void func_80174354(void); -extern s32 func_80174384(void *a0); -extern void func_8017435C(void); -extern void func_801743F0(u8 *a0); -extern void func_801743C0(u8 *a0); -extern void func_801743F0(u8 * a0); -extern void func_80174430(void); -extern s32 func_80174474(void *a0); -extern void func_80174438(s32 a0); -extern void func_801744E0(u8 *a0); -extern void func_801744B0(u8 *a0); -extern void func_80174524(void); -extern void func_80174554(); -extern void func_8017452C(void); -extern void func_80174554(s32 arg0); -extern void func_801745AC(); -extern void func_80174584(void); -extern void func_801745AC(s32 *a0); -extern void func_80174604(void); -extern void func_801745DC(void); -extern void func_80174630(void); -extern s32 func_80174650(s32 _arg0); -extern void func_80174674(void); -extern void func_801746A4(void); -extern s32 func_800CF8CC(void); -extern void func_80174714(void); -extern s32 func_80174754(void); -extern s16 func_80174764(void); -extern s16 func_80174774(void); -extern s32 func_801747CC(void *a0); -extern void func_80174784(void); -extern s32 func_801747AC(s32 a0); -extern s32 func_80174808(u8 *a0); -extern void func_8017481C(void); -extern s32 func_80174888(void *a0); -extern void func_80174824(void); -extern void func_8017484C(s32 a0); -extern void func_801748C4(s32 a0); -extern void func_801748E4(void); -extern void func_8012A018(s32 a, s32 b); -extern s32 func_8017496C(void *a0); -extern s32 D_80126954; -extern s32 D_80126950; -extern s32 D_8012695C; -extern s16 D_80126968; -extern s16 D_8012696A; -extern s16 D_8012696C; -extern s16 D_80126976; -extern s16 D_80126978; -extern s16 D_8012697A; -extern void func_801748EC(void); -extern s32 func_801749C8(); -extern s32 func_801749A8(s32 a0); -extern void func_80174BBC(void *a0); -extern void func_8012A0E0(void); -extern void func_80174BF4(void *a0); -extern void (*D_8018EBE4[])(); -extern void func_80174BF4(void * arg0); -extern s32 func_80174CB0(s32, s32); -extern s32 func_80174C60(s32 a0); -extern void func_80174C80(s32 a0); -extern s32 D_8012697C; -extern u16 D_80126980; -extern s32 func_80174F28(void *a0); -extern void func_80174E9C(s32 a0); -extern void func_80174EF0(s32 a0, s16 a1); -extern s32 func_80175014(u8 *a0, u8 *a1, s32 a2); -extern void func_80174F64(u8 *a0); -extern void func_80174FBC(u8 *a0); -extern s32 func_8017509C(u8 *a0, s32 a1, u8 *a2, u8 *a3); -extern void func_80175184(s32 *a0); -extern void func_80175114(s32 *a0); -extern void func_80175184(); -extern void func_80175150(s32 *a0); -extern void (*D_8018EBF4[])(void*); -extern s32 func_80175268(s32); -extern void func_80175184(s32* arg0); -extern s32 func_80175218(void *a0); -extern void func_801751D8(void *a0); -extern void (*D_8018EBFC[])(s32); -extern s32 func_80175218(void * param_1); -extern void func_801752BC(s32 *a0); -extern u8 D_8011F7A8; -extern u8 D_8011F7A9; -extern u8 D_8011F7AD; -extern u8 D_8011F7AE; -extern void func_80175414(s32 _arg0); -extern void func_80175494(void); -extern void (*D_8018ED64[])(); -extern s32 func_801758FC(void); -extern s32 func_80175820(void); -extern s32 func_801759D8(void); -extern void func_8017553C(s32 *param); -extern void func_801757A0(s32 a0); -extern short D_800B9A02; -extern void func_80175590(void *arg0); -extern s16 D_800B9A02; -extern void func_801757A0(s32); -extern void func_80175624(void *a0); -extern void func_801757E0(int); -extern void func_80175668(void); -extern void (*D_8018ED70[])(); -extern void func_80175690(s32 *param); -extern void func_80175DA8(s32 a0); -extern void func_80175AB8(s32 a0); -extern void func_80176144(s32 a0); -extern void func_801756E4(s32 arg0); -extern void func_80175798(void); -extern void func_80176734(s32 a0); -extern void func_80176218(s32 a0); -extern void func_80176D00(s32 a0); -extern void func_801757E0(s32 a0); -extern s32 func_80178004(s32 a0, s32 a1, s32 a2); -extern u8 D_8011F7B1; -extern u16 D_8011F7B4; -extern u16 D_8011F7B6; -extern s16 D_8011F81E; -extern void *func_80177784(void *a0, s32 a1, s32 a2, s32 a3); -extern u32 func_801783D0(s32 a0, s32 a1); -extern void *func_801777BC(void *a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern u16 D_8011F82C; -extern u16 D_8011F82A; -extern u32 * func_80176D94(void *param_1, u32 param_2, s16 param_3_); -extern void func_801778A8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80176FF4(s32 a0); -extern u16 D_8011F830; -extern u16 D_8011F82E; -extern u32 * func_801770E0(void *param_1, u32 param_2, s16 param_3_); -extern void func_80177340(s32 a0); -extern u8 D_8011F837; -extern u8 D_8011F7F0; -extern u8 D_8011F7AB; -extern u32 * func_8017742C(u32 *param_1, s32 param_2, s32 param_3); -extern void func_801776EC(u8 *a0); -extern void * func_80177784(void *a0, s32 a1, s32 a2, s32 a3); -extern uint * func_80177EA4(uint *param_1, int param_2, uint param_3, int param_4); -extern void func_80177F84(s32 param_1, s32 param_2); -extern u32 * func_80178298(u32 *param_1, u8 *param_2, short param_3, short param_4); -extern M2C_UNK D_801E9014; -extern void func_80178438(u16 *arg0); -extern void func_801787D4(void); -extern void func_8012A908(void); -extern void func_8017869C(s32 a0); -extern void func_80130D0C(s32 a0); -extern void func_8013E370(void); -extern s32 D_8011DB08; -extern void func_8017849C(void); -extern void func_8013E4B4(void); -extern s16 D_801270C4; -extern s32 D_801274D8; -extern s16 D_801270C2; -extern u8 D_801270C6; -extern u8 D_801270C7; -extern s32 D_801274DC; -extern s32 D_801274E0; -extern void func_80178608(void); -extern void func_80178744(s32 a0, s32 a1); -extern void func_80178840(); -extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern s32 func_801788B8(s32 arg0, s32 arg1); -extern s32 func_801789AC(s32 arg0); -extern s16 D_801EAFC8; -extern int func_80178970(void); -extern s32 func_80178B18(s32 param_1, s32 param_2); -extern s32 func_80178B70(s32 param_1, s32 param_2); -extern void func_80178BB8(s32 a0, s32 a1); -extern s32 func_80178BF8(); -extern s32 D_801EA388; -extern short D_801EB03C; -extern void func_80178CBC(s32 arg0, s32 arg1); -extern void func_80178D18(void); -extern s32 func_80178D40(s32 arg0, s32 arg1); -extern void func_80179B28(s32 a0); -extern void func_80179B74(u16 *p); -extern void func_80179D30(u16 *a0); -extern void func_80179D78(u16 *a0); -extern void func_80179B74(u16 *p); -extern void func_80179DCC(short a0); -extern void func_80179DF8(void); -extern void func_80179E1C(short a0); -extern void func_80179E48(s16 a0); -extern void func_80179E74(s16 a0); -extern void func_80179EA0(u16 *a0); -extern void func_80179B74(u16 *p); -extern void func_80179EE8(short a0); -extern void func_80179F14(s16 a0, s16 a1); -extern void func_80179F44(void); -extern void func_80179F6C(short a0); -extern void func_80179F98(u16 *a0); -extern void func_80179FEC(u16 *a0); -extern void func_8017A040(u16 *a0); -extern s32 D_801EA7B4; -extern void func_8017A094(s32 arg0); -extern void func_8017A0C4(s32 arg0); -extern void func_8017A0F4(void); -extern void func_8017A11C(void); -extern s32 D_801EA7DC; -extern void func_8017A144(s32 a0); -extern void func_8017A180(void); -extern void func_8017A1A8(void); -extern void func_8017A1D0(void); -extern void func_8017A1F8(void); -extern void func_8017A220(void); -extern void func_8017A248(void); -extern void func_8017A270(void); -extern void func_8017A298(void); -extern void func_8017A2C0(void); -extern void func_8017A2E8(void); -extern void func_8017A310(void); -extern void func_8017A338(void); -extern void func_8017A360(void); -extern void func_8017A388(void); -extern s16 D_801EA798; -extern s32 func_8017A3B0(void); -/* ==== end §8b carried decl layer ==== */ - -// func_8017A4AC (ov_SC01_077) — 536-ins command/bytecode interpreter, 35-case jtbl switch. - - - extern u16 D_801EA390[0x200]; - extern s16 D_801EA790; - extern s16 D_801EA794; - extern s32 D_801EA7D8; - -extern s32 D_80126B58; -extern s16 D_801EA798; -extern s32 D_801EA7B4; -extern s32 D_801EA7DC; - -extern void func_80172310(u8*); -extern void func_80172738(void); -extern void func_80172780(void*); -extern void func_80172894(void*); -extern void func_801729B0(s32); -extern void func_80172B14(s16); -extern void func_80172C50(u16 *); -extern void func_80172D68(s32); -extern void func_80172E94(void); -extern void func_80172ED4(void); -extern void func_80172EFC(void); -extern void func_80172F24(void); -extern void func_80172F4C(void); -extern void func_80172F9C(void); -extern void func_80172FEC(void); -extern void func_80173174(void); -extern void func_8017329C(void); -extern void func_8017334C(void); -extern void func_801733A4(void); -extern void func_801733FC(s16, u16 *); -extern void func_80173460(s32, s32); -extern void func_801734BC(s32, s32); -extern void func_801736B0(s32, s32); -extern void func_801737B8(s16); -extern void func_801738DC(s16); -extern void func_80173A28(s32, s32, s32, s32, s32, s32); -extern void func_8017427C(void); -extern void func_80174438(s32); -extern void func_8017452C(void); -extern void func_80174584(void); -extern void func_801745DC(void); -extern s32 func_80174754(void); - -void func_8017A4AC(void) { - u16 sp18[4]; - u16 sp20[4]; - u16 sp28[4]; - u16 sp30[4]; - struct S126B58 *w = &(*(struct S126B58 *)&D_80126B58); - s16 cmd; - - if (D_801EA790 == D_801EA794) { - if (func_80174754() != 0) { - D_801EA798 = 0; - } else { - D_801EA798 = 1; - } - return; - } - D_801EA798 = 1; - if (func_80174754() == 0) { - return; - } - cmd = D_801EA390[D_801EA790]; - D_801EA790 = (D_801EA790 + 1) & 0x1FF; - switch (cmd) { - case 0: - func_80172738(); - return; - case 1: - sp18[0] = D_801EA390[D_801EA790]; D_801EA790 = (D_801EA790 + 1) & 0x1FF; - sp18[1] = D_801EA390[D_801EA790]; D_801EA790 = (D_801EA790 + 1) & 0x1FF; - sp18[2] = D_801EA390[D_801EA790]; D_801EA790 = (D_801EA790 + 1) & 0x1FF; - ((void (*)(u16 *))func_80172780)(sp18); - return; - case 28: - sp18[0] = D_801EA390[D_801EA790]; D_801EA790 = (D_801EA790 + 1) & 0x1FF; - sp18[1] = D_801EA390[D_801EA790]; D_801EA790 = (D_801EA790 + 1) & 0x1FF; - sp18[2] = D_801EA390[D_801EA790]; D_801EA790 = (D_801EA790 + 1) & 0x1FF; - sp18[3] = D_801EA390[D_801EA790]; D_801EA790 = (D_801EA790 + 1) & 0x1FF; - ((void (*)(u16 *))func_80172894)(sp18); - return; - case 2: - { s16 arg = D_801EA390[D_801EA790]; D_801EA790 = (D_801EA790 + 1) & 0x1FF; - ((void (*)(s16))func_801729B0)(arg); - return; } - case 3: - { s16 arg = D_801EA390[D_801EA790]; D_801EA790 = (D_801EA790 + 1) & 0x1FF; - func_80172B14(arg); - return; } - case 4: - { s16 arg = D_801EA390[D_801EA790]; D_801EA790 = (D_801EA790 + 1) & 0x1FF; - { s32 t = w->unk20->unk12 + arg; - func_80172B14(t & 0xFFF); } - return; } - case 5: - sp18[0] = D_801EA390[D_801EA790]; D_801EA790 = (D_801EA790 + 1) & 0x1FF; - sp18[1] = D_801EA390[D_801EA790]; D_801EA790 = (D_801EA790 + 1) & 0x1FF; - sp18[2] = D_801EA390[D_801EA790]; D_801EA790 = (D_801EA790 + 1) & 0x1FF; - func_80172C50(sp18); - return; - case 6: - { s16 arg = D_801EA390[D_801EA790]; D_801EA790 = (D_801EA790 + 1) & 0x1FF; - ((void (*)(s16))func_80172D68)(arg); - return; } - case 7: func_80172E94(); return; - case 8: func_80172ED4(); return; - case 27: ((void (*)())D_801EA7DC)(); return; - case 9: func_80172EFC(); return; - case 10: func_80172F24(); return; - case 11: func_80173174(); return; - case 12: func_80172F4C(); return; - case 33: func_80172F9C(); return; - case 34: func_80172FEC(); return; - case 13: func_801745DC(); return; - case 14: - case 15: func_8017329C(); return; - case 16: func_8017334C(); return; - case 17: func_801733A4(); return; - case 18: - { s16 arg = D_801EA390[D_801EA790]; D_801EA790 = (D_801EA790 + 1) & 0x1FF; - func_801738DC(arg); - return; } - case 19: { - s16 a, b; - s32 ea, eb; - a = D_801EA390[D_801EA790]; D_801EA790 = (D_801EA790 + 1) & 0x1FF; ea = a; - b = D_801EA390[D_801EA790]; D_801EA790 = (D_801EA790 + 1) & 0x1FF; eb = b; - func_801736B0(ea, eb); - return; - } - case 20: - { s16 arg = D_801EA390[D_801EA790]; D_801EA790 = (D_801EA790 + 1) & 0x1FF; - ((void (*)(s16))func_801734BC)(arg); - return; } - case 23: - sp20[0] = D_801EA390[D_801EA790]; D_801EA790 = (D_801EA790 + 1) & 0x1FF; - sp20[1] = D_801EA390[D_801EA790]; D_801EA790 = (D_801EA790 + 1) & 0x1FF; - sp20[2] = D_801EA390[D_801EA790]; D_801EA790 = (D_801EA790 + 1) & 0x1FF; - { s16 arg = D_801EA390[D_801EA790]; D_801EA790 = (D_801EA790 + 1) & 0x1FF; - ((void (*)(s16, u16 *))func_80173460)(arg, sp20); - return; } - case 29: - sp28[0] = D_801EA390[D_801EA790]; D_801EA790 = (D_801EA790 + 1) & 0x1FF; - sp28[1] = D_801EA390[D_801EA790]; D_801EA790 = (D_801EA790 + 1) & 0x1FF; - sp28[2] = D_801EA390[D_801EA790]; D_801EA790 = (D_801EA790 + 1) & 0x1FF; - { s16 arg = D_801EA390[D_801EA790]; D_801EA790 = (D_801EA790 + 1) & 0x1FF; - func_801733FC(arg, sp28); - return; } - case 32: - sp30[0] = D_801EA390[D_801EA790]; D_801EA790 = (D_801EA790 + 1) & 0x1FF; - sp30[1] = D_801EA390[D_801EA790]; D_801EA790 = (D_801EA790 + 1) & 0x1FF; - sp30[2] = D_801EA390[D_801EA790]; D_801EA790 = (D_801EA790 + 1) & 0x1FF; - sp30[3] = D_801EA390[D_801EA790]; D_801EA790 = (D_801EA790 + 1) & 0x1FF; - ((void (*)(u16 *))func_80172310)(sp30); - return; - case 25: func_8017452C(); return; - case 30: func_80174584(); return; - case 26: func_8017427C(); return; - case 24: func_80174438(D_801EA7D8); return; - case 21: - ((void (*)(s32, s32, s32, s32, void *, s32))func_80173A28)((*(struct S734 * *)&D_801EA7B4)->unk0, (*(struct S734 * *)&D_801EA7B4)->unk4, (*(struct S734 * *)&D_801EA7B4)->unk8, - (*(struct S734 * *)&D_801EA7B4)->unkC, (*(struct S734 * *)&D_801EA7B4)->unk10, (*(struct S734 * *)&D_801EA7B4)->unk18); - return; - case 22: - (*(struct S734 * *)&D_801EA7B4)->unk1C((*(struct S734 * *)&D_801EA7B4)->unk4, (*(struct S734 * *)&D_801EA7B4)->unk10, (*(struct S734 * *)&D_801EA7B4)->unk18); - return; - case 31: - { s16 arg = D_801EA390[D_801EA790]; D_801EA790 = (D_801EA790 + 1) & 0x1FF; - func_801737B8(arg); - return; } - } -} - - -DEFINE_func_8017AD0C() /* dedup: shared engine-core @0x8017AD0C (src/shared) */ - -DEFINE_func_8017ADE8() /* dedup: shared engine-core @0x8017ADE8 (src/shared) */ - -DEFINE_func_8017AE08() /* dedup: shared engine-core @0x8017AE08 (src/shared) */ diff --git a/src/ov_SC03_015/ov_SC03_015_jr_8017AE2C.c b/src/ov_SC03_015/ov_SC03_015_jr_8017AE2C.c deleted file mode 100644 index dca55e49a..000000000 --- a/src/ov_SC03_015/ov_SC03_015_jr_8017AE2C.c +++ /dev/null @@ -1,4985 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ - /* 12-byte sub-table record (stride 0xC) */ - /* 0x20 bytes */ - /* 4 + 16*12 = 0xC4 stride */ - /* 0x08 */ - /* 0x20 */ -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8; -typedef void (*Handler)(struct Entry_8016E95C *); -extern void func_801458E0(void); -extern s32 D_800AE6AC; -extern s32 D_800AE6B0; -extern s16 D_800B9A0A; -extern u8 D_80078E50; -extern void func_800D185C(u8 *a0); -extern void func_801458E8(void); -extern s32 func_80029504(void); -extern void func_80145B24(void); -extern u8 D_8018DAA4; -extern u8 D_8018DA14; -extern u8 D_8018D9F0; -extern u8 D_8018D9CC; -extern u8 D_8018DA80; -extern u8 D_8018DA5C; -extern u8 D_8018DA38; -extern u8 D_8018D9A8; -extern void func_80145934(void); -extern u8 D_8018DB34; -extern u8 D_8018DB10; -extern u8 D_8018DAEC; -extern u8 D_8018DAC8; -extern void func_80145A2C(void); -extern s32 func_800291DC(s32); -extern void func_800291C8(s32, s32); -extern void func_80162120(void); -extern void func_80029124(s32, s32); -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); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_80145BF8(void); -extern s32 func_800291B4(s32 arg); -extern void func_800291A0(s32, s32); -extern void func_80145C54(void); -extern s32 func_80145CEC(); -extern s32 func_80029178(s32 arg); -extern void func_80146014(s32 a0); -extern unsigned char D_8018CF2C[]; -extern unsigned char D_8018CF5C[]; -extern unsigned char D_8018CFAC[]; -extern unsigned char D_8018CFDC[]; -extern unsigned char D_8018D00C[]; -extern void func_80145EE8(s32 param_1); -extern void MoveImage(void *a0, s32 a1, s32 a2); -extern void func_80146074(void); -extern s32 func_80146128(void); -extern void func_80146360(void); -extern void func_801463A0(); -extern void func_8014607C(void); -extern s32 *D_80126B78; -extern u8 D_80078EC1; -extern s32 D_80078EC8; -extern s32 D_80126B9C; -extern s32 D_8011F730; -extern u16 D_801152B8; -extern u16 D_8012693A; -extern u8 D_80126BE0[]; -extern u8 D_801150F0[]; -extern void *memcpy(void *dst, const void *src, u32 n); -extern void func_80146FC4(s32 a0); -extern void func_80150A70(s32 a0); -extern void func_80147098(s32 *a0); -extern void func_8014A638(s32 arg0); -extern s32 func_80155458(s32 a0); -extern s32 func_80029104(void); -extern void func_80029344(void); -extern void func_8014ADE0(s32 a0); -extern void func_8014B350(s32 a0); -extern void func_8014B7A4(s16 *param_1); -extern s32 func_80161D58(s32 a0); -extern void func_80161A90(s32 a0); -extern void func_8014B504(u16 *a0); -extern void func_80149BEC(s32 a0); -extern void func_8014B5D0(s32 *a0); -extern void func_8014C99C(u8 *a0); -extern void func_8014B190(s32 s0); -extern void func_80148648(s32 a0, s32 a1); -extern s32 func_80149228(s32 a0); -extern void func_8014A59C(s32 a0); -extern void func_8016F14C(void *a0); -extern void func_80154418(void *a0); -extern void func_80154BE4(s32 a0); -extern void func_80165694(s32 arg0); -extern void func_801654A8(s32 a0); -extern void func_8014A680(s32 a0); -extern void func_8014A6A8(s32 a0); -extern void func_8014A71C(s32 a0); -extern void func_80172588(s32 *a0); -extern void func_801473DC(s32 *a0); -extern void func_80015978(s32 a0, s32 *a1); -extern void (*D_8018D05C[])(void *); -extern u8 D_80126BA4; -extern s32 D_80127098; -extern s32 D_80127094; -extern s32 D_80127090; -extern void func_80146534(void); -extern void func_8001D074(s32 a0, s32 a1); -extern void func_80146554(void); -extern void func_80146578(void); -extern void func_8001CFDC(s32, s32); -extern void func_8014659C(void); -extern void func_8001D074(s32, s32); -extern void func_801465C0(void); -extern void func_801465E4(void); -extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); -extern s32 D_8011F9D0; -extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); -extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 D_8011F750; -extern s32 D_8011F754; -extern u8 * func_801468C8(s32 arg0, u8 arg1); -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); -extern s32 func_80146B9C(void *a0); -extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); -extern u16 D_8011DA28; -extern s32 func_80146B9C(void * arg0); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80146CA0(void *a0); -extern void func_80146CB4(void *a0); -extern void func_80146CC8(s32 a0); -extern void func_80146D30(s32 a0); -extern void func_80146D80(s32 *a0); -extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80146D90(s32 a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); -extern void func_80146E90(s32 *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80015954(s32 a0, s32 a1); -extern void func_80149374(s32 a0, s32 a1); -extern void func_80146F58(s32 a0, s32 a1); -extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 func_8012A68C(void); -extern s16 func_8012A758(void); -extern void func_8004978C(s16 *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern u8 D_80126DB0[]; -extern u16 D_80126DB6; -extern void func_8014704C(s32 *a0); -extern s32 func_80147054(void *a0); -extern void func_80147060(u8 * a0); -extern void func_8014706C(void *arg0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80147084(s32 *a0); -extern void func_8014708C(void *arg0); -extern s32 func_801470A0(void *a0); -extern void func_801470AC(s32 *a0); -extern void func_801470B4(s32 arg0); -extern void func_801470C0(s32 a0); -extern void func_80147118(s32 a0); -extern s16 D_80126BB8; -extern s16 D_80126BBA; -extern s16 D_80126BBC; -extern void func_80147264(s32 a0); -extern void func_80147290(void); -extern void func_801472B4(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void *D_8012707C; -extern void func_801472DC(void); -extern void func_801472F0(void *a0); -extern void func_80147364(u16, s32); -extern void func_80147300(u16 arg0); -extern void func_80147324(s32 arg0); -extern void func_801473EC(s32 *a0); -extern void func_80147460(s32 a0); -extern void func_80147514(); -extern void func_80147628(s32 a0); -extern void func_80147478(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); -extern s32 func_800129CC(s32 a0, s32 a1); -extern void func_80147514(s32 arg0); -extern void func_80013F3C(s32 a0); -extern void func_80012558(s32 a0, s32 a1); -extern void func_800126C4(s32 a0, s32 a1); -extern void func_800123F0(s32 a0, s32 a1); -extern void func_80147718(s32 a0); -extern void func_80147788(void *a0, s32 a1); -extern void func_801477A8(void *a0, s32 a1); -extern void func_801477C8(void *a0, s32 a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80147814(s32 a0, s32 a1); -extern void func_80147928(int a0, int a1); -extern void func_8014799C(int a0, int a1); -extern void func_80147A10(int a0, int a1); -extern void func_80147860(int a0, int a1, int a2, int a3); -extern void func_80147948(s32 a0, s32 a1, s32 a2); -extern void func_801479BC(s32 a0, s32 a1, s32 a2); -extern void func_80147A30(s32 a0, s32 a1, s32 a2); -extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147948(int a0, int a1, int a2); -extern void func_801479BC(int a0, int a1, int a2); -extern void func_80147A30(int a0, int a1, int a2); -extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147A84(s32 arg0); -extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147AAC(s32 arg0); -extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80147B5C(s32 a0, void *a1); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern void func_80147B18(s32 a0); -extern void func_80147B5C(s32 arg0, void *arg1); -extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147DC0(s32 a0, s32 a1); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147F50(s32 arg0); -extern void func_80148038(s32 a0, s32 a1); -extern s32 ratan2(s32 a0, s32 a1); -extern s32 csqrt(s32 a0); -extern s32 func_80012A60(s32 a0, s32 a1); -extern void func_80148094(int param_1, short *param_2, int *param_3); -extern void func_801485B8(s32 a0, s32 a1, s32 a2); -extern void func_801484B0(s32 a0, s32 a1); -extern s32 func_80154358(void *a0); -extern void func_801484E8(s32 a0, s32 a1); -extern void func_80148534(s32 a0, s32 a1); -extern void func_8014856C(s32 a0, s32 a1); -extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); -extern void func_80148634(void *a0); -extern u8 D_800B9A64; -extern s32 func_80014DC0(); -extern s32 func_80014D68(); -extern s32 func_80014D94(); -extern s32 func_80014CF8(); -extern void func_800120DC(); -extern s32 func_800CF8B4(); -extern u16 func_801487F4(s32 *a0); -extern u16 func_80148800(s32 *a0); -extern u8 func_8014880C(s32 *a0); -extern u16 func_80148818(s32 *a0); -extern s32 func_80047D3C(s32 a0); -extern s32 func_80148824(void *arg0); -extern s32 func_801488A8(u8 *a0); -extern s32 func_8014891C(s32 a0); -extern s32 func_80148980(u8 *a0); -extern s32 func_801489E8(s32 a0); -extern s32 func_80148A48(s32 a0); -extern int func_80148AFC(void *a0); -extern void func_80148AAC(u8 *a0); -extern s32 func_80148C18(void); -extern s32 func_80148C20(s32 a0, s16 a1); -extern s32 func_80148C34(s32 a0, s32 a1); -extern s32 func_80148C4C(s32 a0, s32 a1); -extern s32 func_80148C64(s32 a0, s32 a1); -extern s32 func_80148C7C(void); -extern s32 func_80148C84(s32 a0, s32 a1); -extern s32 func_80148C9C(s32 a0, s32 a1); -extern s32 func_80148CB4(s32 a0, s32 a1); -extern s32 func_80148CCC(s32 a0, s32 a1); -extern s32 func_80148CE4(void); -extern s32 func_80148CEC(void); -extern s32 func_80148CF4(s32 a0, s32 a1); -extern s32 func_80148D0C(s32 a0, s32 a1); -extern s32 func_80148D24(void *a0, int a1); -extern s32 func_80148D3C(void); -extern s32 func_80148F60(void); -extern s32 func_80148F68(s32 a0); -extern s32 func_80148F74(s32 a0); -extern s32 func_80148F80(s32 a0); -extern s32 func_80148F8C(s32 a0); -extern s32 func_80148F98(void); -extern s32 func_80148FA0(s32 a0); -extern s32 func_80148FAC(s32 a0); -extern s32 func_80148FB8(s32 a0); -extern s32 func_80148FC4(s32 a0); -extern s32 func_80148FD0(void); -extern s32 func_80148FD8(void); -extern s32 func_80148FE0(s32 a0); -extern s32 func_80148FEC(s32 a0); -extern s32 func_80148FF8(s32 a0); -extern s32 func_80149004(void); -extern void func_8014900C(s32 *a0); -extern void func_80149020(s32 *a0); -extern void func_80149034(s32 *a0); -extern void func_80149048(s32 *a0); -extern void func_8014905C(u8 *a0); -extern void func_801490E0(s32 *a0, s16 a1); -extern void func_801490E8(s32 *a0, s16 a1); -extern void func_801490F0(s32 *a0, s16 a1); -extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); -extern void func_801490F8(s32 a0, s32 a1); -extern s32 func_801491C4(s32 a0); -extern s32 func_80149184(s32 a0); -extern void func_80149204(s32 *a0); -extern void func_80149210(s32 a0, s32 a1); -extern s32 func_80149284(s32 *a0, s32 a1); -extern void func_80149350(s32 arg0); -extern void func_80149290(s32 a0); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_80149374(s32 arg0, s32 arg1); -extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8014942C(s32 arg0); -extern void func_8012EF70(s32 a0, s32 a1); -extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012EFB8(s32 a0); -extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); -extern void func_8014964C(s32 param_1, s32 param_2); -extern s32 func_801496D4(void *a0); -extern void func_8015AD08(); -extern void func_80149704(void); -extern void func_8015ACC4(); -extern void func_80149724(void); -extern u8 D_80078EBF; -extern s32 func_80149744(struct S_80149744 *a0); -extern void func_8015F7A0(); -extern void func_80149788(void); -extern void func_801653B8(); -extern void func_80149864(void); -extern s16 currentLocationId; -extern s32 func_8016F1AC(void); -extern s32 func_80149884(void); -extern void func_80160B00(); -extern void func_801498C0(void); -extern s32 func_80149AA8(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern void func_80146750(void *a0); -extern s32 func_801498E0(s32 *a0); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_80147364(u16 a0, s32 a1); -extern s32 func_800CCF28(s32 a0); -extern u8 D_80126B5C; -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_8015DAC4(s32 *a0); -extern void func_8015554C(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern void func_80149B14(s32 *a0); -extern u8 func_8014BEF8(void); -extern s32 func_80149B54(s32 * arg0); -extern void func_8015DE24(s32 *a0); -extern void func_80157510(s32 *a0); -extern void func_80149BAC(s32 *a0); -extern s32 func_80029178(s32 a0); -extern s32 func_80149C08(s32 arg0); -extern void func_801577C8(); -extern void func_80149C94(void); -extern void func_80157D20(void); -extern void func_80149CB4(void); -extern s32 func_80149CD4(s32 a0); -extern u8 func_8014B5B8(s32 *a0); -extern s32 func_80149D10(s32 a0); -extern s32 func_80149E94(s32 a0); -extern s32 func_80149DD8(s32 a0); -extern s32 func_80149D9C(s32 a0); -extern u8 D_801202A0[]; -extern s32 func_80149F2C(s32 a0, s32 a1); -extern s32 func_80149E94(s32 arg0); -extern void func_80149FA8(void); -extern s32 D_8018D124[]; -extern u8 D_80078E78[]; -extern s32 func_80149FB0(s32 a0); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern void func_8014A1B0(s32 a0, s32 a1); -extern s32 func_8014A048(s32 param_1); -extern u16 func_80156370(u16 a0); -extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); -extern void func_8015D4B4(); -extern void func_8014A218(void); -extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); -extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); -extern s32 func_8014A238(s32 arg0); -extern s32 func_8014A2E4(s32 a0); -extern void func_8014A380(s32 a0, s32 a1); -extern s16 D_801152B0; -extern s16 D_801152B4; -extern s32 func_8014A3E0(struct S_8014A3E0 *a0); -extern s32 func_8014A454(s32 a0); -extern s32 func_8014A4B4(void *a0); -extern void func_8015EDD4(); -extern void func_8014A4FC(void); -extern s32 func_8014A674(s32 *a0); -extern s32 func_8014A69C(s32 *a0); -extern s32 func_8014A6C4(s32 a0); -extern void func_8015E184(); -extern void func_8014A830(void); -extern s32 func_80029AF4(void); -extern s32 func_8014A850(s32 param_1); -extern void func_8014AA04(s32 a0); -extern void func_801599A4(void *a0); -extern void func_80159B3C(void *a0); -extern s32 func_80165A20(s32 a0); -extern void func_8014AB7C(); -extern void func_8014AC10(); -extern void func_8014AA28(void); -extern void func_8014AB5C(void); -extern void func_80162CCC(void); -extern void func_8014AB7C(s32 arg0); -extern void func_8014ABF0(void); -extern void func_80016714(void *a0, s32 a1); -extern void func_8014AC10(s32 arg0); -extern void func_8014ACC0(s32 a0, s32 a1); -extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); -extern void func_8014ACE8(void *a0, s32 a1, s32 a2); -extern void func_80146AFC(void *a0); -extern void func_8014ADA8(s32 a0, s32 a1); -extern void func_8014AD7C(s32 a0); -extern s32 D_80078E8C; -extern void func_8014B034(s32 arg0); -extern void func_8014B00C(s32 arg0); -extern void func_8014B084(void); -extern s16 D_80078E90; -extern void func_8014B034(s32 a0); -extern u16 D_80078EAC; -extern u8 D_80078EBA; -extern void func_800D10EC(void); -extern void func_8002AC98(void); -extern s32 func_8014B154(s32 *a0); -extern void func_8014B12C(void); -extern void func_8014B2F8(void); -extern void func_8014B4C4(void); -extern void func_8014B160(s32 a0); -extern s32 func_8016F1C4(void); -extern s16 D_80078E96; -extern s16 D_80078EB8; -extern u16 D_80078EA6; -extern void func_8014B2A8(void); -extern void func_8014B310(void); -extern void func_8014B2D0(void); -extern s32 D_80078E94; -extern s32 D_80078ECC; -extern void func_8014B33C(void); -extern u8 D_80062BF4[]; -extern void func_8014BC80(s32 a0, s32 a1); -extern void func_80019064(void *a0); -extern s32 D_80078E98; -extern void func_80166244(); -extern void func_8014B4D4(void *a0); -extern s16 D_80078E9A; -extern u8 D_80126D1C; -extern s32 D_80126D74; -extern void func_8014B598(s32 a0, s32 a1); -extern void func_8014B5B0(s32 *a0); -extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); -extern void func_8014B5D8(s32 s1); -extern s32 D_80078E9C; -extern s32 D_80078ED0; -extern void func_8014B6F0(s32 a0, s32 a1); -extern void func_8014B768(s32 a0, s32 a1); -extern void func_8014B944(s32 a0, s32 a1, s32 a2); -extern s32 D_80078EA4; -extern u16 D_80078EB2; -extern s16 D_80078EB4; -extern void func_8014BB0C(void); -extern void func_8014BB24(s32 a0, s32 a1, s32 a2); -extern void func_8014BC0C(s32 a0, s32 a1); -extern void func_8014BC44(s32 a0, s32 a1); -extern u8 D_800B9A17; -extern void func_8014BCC0(s32 a0, s32 a1); -extern u16 D_80078EB6; -extern s32 func_8014BCEC(s32 a0, s32 a1); -extern void func_8014BD24(s32 a0, s32 a1); -extern void func_8014BD60(s32 param_1, s32 param_2); -extern void func_8014BD98(s32 a0, u16 a1); -extern void func_8014BDC8(void); -extern void func_8014BDE0(void); -extern s32 func_8017267C(s32 *a0); -extern s32 func_80013294(void *a0, void *a1); -extern void func_80029ED4(s32 a0); -extern void func_8014BDE8(s32 a0); -extern void func_8014BE78(void); -extern void func_8014BE9C(void); -extern void func_80029124(s32 a0, s32 a1); -extern void func_8014BEC0(void); -extern void func_8014BF18(s32 a0); -extern void func_8014BF48(void); -extern u8 func_8014BF6C(void); -extern void func_8014BF8C(u8 arg0); -extern void func_8014BFB0(void); -extern u8 func_8014BFD4(void); -extern void func_8014BFF4(s32 a0, s32 a1); -extern void func_8014C010(s32 a0, s32 a1); -extern s32 func_8014C050(s32 a0, s32 a1); -extern s32 func_8014C088(s32 a0, s32 a1); -extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); -extern s32 func_8014C118(void * a0, s32 a1, s32 a2); -extern s32 func_8014C168(s32 * param_1, s32 param_2); -extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); -extern u8 D_8018D1AC[]; -extern void func_8014C1A0(s32 arg0, s32 arg1); -extern s32 func_80013328(s32 a0, s32 a1); -extern s32 func_8014C59C(void *a0, void *a1); -extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); -extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); -extern s32 ratan2(s32 dx, s32 dy); -extern u8 D_8018D1B4; -extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); -extern s16 func_8014C5D0(s32 a0, s32 a1); -extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); -extern u8 D_80126D17; -extern void func_8014C6AC(void); -extern void func_8014C6C0(void); -extern u8 D_80126D1E; -extern void func_8014C6D0(void); -extern void func_8014C6E0(void); -extern s32 func_8014C860(s32 a0, s32 a1); -extern void func_8014C8C8(s32 a0, s32 *a1); -extern void func_8014C88C(s32 a0); -extern void func_8014C8C8(s32 dst, s32 * src); -extern void func_8014C8F0(s32 arg0); -extern u8 D_801151F0[]; -extern s32 func_8014C918(s32 a0, s32 a1); -extern s32 D_80126B50; -extern void func_8014C968(void); -extern void func_8014C978(void); -extern s32 func_8014C98C(void); -extern void func_80139914(s32 a0); -extern s32 func_8014CA00(s32 a0); -extern u16 func_8014CA70(s32 a0, s32 a1); -extern s32 func_8014CA14(s32 a0, s32 a1); -extern u16 func_8014CAE4(s32 *a0, s32 a1); -extern s32 func_8014CA88(s32 *a0, s32 a1); -extern s32 func_8014CAFC(void); -extern s32 func_8014CB0C(void); -extern s32 func_8014CB1C(void); -extern u8 D_80126D1F; -extern s32 func_8014CB2C(void); -extern s32 func_8014CB58(void); -extern u8 D_80126D1D; -extern void func_8014CB68(void); -extern s32 func_8014CB7C(void); -extern s32 func_8014CB8C(void); -extern short D_80126C9E; -extern void func_8014CB9C(struct Packed8 *a0); -extern s32 D_80126CDC; -extern void func_8014CBD8(void); -extern s16 D_80126CC4; -extern void func_8014CBE8(void); -extern void func_8014CBF8(void *a0); -extern void func_8014D3E0(s32 a0); -extern void func_8014D04C(void); -extern void func_8014CCB4(void); -extern void func_8014CC28(s32 a0); -extern void func_8014CD0C(u8 *a0); -extern s32 func_8014CF04(s32 a0, s32 a1, void *a2); -extern void func_8014CD80(s32 a0, void *a1, void *a2); -extern void func_8014D0A4(s32 a0); -extern s32 func_8014D2A0(s32 a0, void *a1, void *a2); -extern s32 func_8014D12C(s32 a0, void *a1, void *a2); -extern void func_8014D438(s32 a0); -extern void func_8014D3E0(s32 _arg0); -extern void func_8014D610(s32 a0, void *a1, void *a2); -extern s32 func_8014D4C0(s32 a0, void *a1, void *a2); -extern void func_8014D790(s32 a0); -extern void func_8014D738(void); -extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); -extern s32 func_8014D820(s32 a0, u16 *a1, u16 *a2); -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); -extern void func_8014DF94(s32 arg0); -extern void func_8014DF3C(void); -extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ -extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ -extern s16 D_801152AC; -extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); -extern void func_8014E48C(s32 a0); -extern void func_8014E434(void); -extern void func_8014E5B4(s32 a0, void *a1, void *a2); -extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); -extern void func_8014E6F8(struct SubE6F8 *a0); -extern void func_8014E6A0(void); -extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); -extern void func_8014E934(s32 _arg0); -extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); -extern s32 func_8014E98C(void *a0); -extern u16 D_800B99DA; -extern s32 D_801150D8; -extern s16 D_801152AA; -extern u8 D_80126720[]; -extern s16 D_80126724; -extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); -extern s32 func_8014ED80(struct SubED80 *a0); -extern int D_801E9698; -extern void func_8014ED28(s32 _arg0); -extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F24C(struct SubF24C *a0); -extern void func_8014F1F4(void); -extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F4C0(); -extern s32 func_8014F468(void); -extern int func_8014F74C(); -extern int func_8014F6F4(void); -extern u8 D_800D3918[]; -extern u8 D_801152A8[]; -extern s32 D_801152BC; -extern int func_8014F74C(s32 arg0); -extern s32 func_8014FA70(s32 a0); -extern s32 D_801E969C; -extern void func_8014FA04(s32 a0); -extern s32 func_8014FBC0(); -extern s32 func_8014FC18(u8 *self); -extern int func_8014FD54(int param_1); -extern void func_8014FCFC(void); -extern void func_80150170(void *a0); -extern s32 func_8014FE60(void *a0); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_8014FE60(void *e); -extern s32 func_80134510(s32 arg); -extern s32 func_80150150(s32 a, s32 b); -extern s32 func_80150460(s32 a, s32 b); -extern void func_801504D8(u16 *a0); -extern s32 func_80150480(s32 _arg0); -extern s32 func_80150528(void *a0, void *a1, void *a2); -extern s32 func_80150528(void *arg0, void *arg1, void *arg2); -extern s32 func_801506A4(s32 a0, s32 a1); -extern s32 func_801505FC(s32 a0); -extern s32 func_801506A4(s32 arg0, s32 arg1); -extern void func_80150820(s32 a0, s32 a1); -extern void func_8015086C(int param_1); -extern s32 func_801508B4(s32 a0); -extern s32 func_8015094C(s32 a0); -extern short func_801508F8(s32 a0); -extern s32 D_8018D1E4; -extern s32 D_80126990; -extern s32 D_80126994; -extern u8 D_80126948[]; -extern s32 func_80021174(s32 a0, s32 a1); -extern s32 func_8015094C(s32 param_1); -extern void func_80150B9C(void); -extern s32 func_80151184(s32 a0, s32 a1, s32 a2); -extern s32 func_80150BA4(s32 a0); -extern s32 func_801619D0(void *a0); -extern void func_80150BC8(s32 *a0); -extern s32 func_80150480(s32 a0); -extern u16 D_800AE6DC; -extern void func_80150C48(s32 a0); -extern int func_80151184(int arg, int a1, int a2); -extern int func_80150CA0(int arg); -extern void func_80150EC4(s32 a, s32 b); -extern void func_80150CC4(s32 a); -extern void func_80150CE4(s32 a); -extern void func_80150D04(s32 a); -extern void func_80150D24(s32 a); -extern void func_80150D44(s32 a); -extern void func_80150D64(s32 a); -extern void func_80150D84(s32 a); -extern void func_80150DA4(s32 a); -extern void func_80150DC4(s32 a); -extern void func_80150DE4(s32 a); -extern void func_80150E04(s32 a); -extern void func_80150E24(s32 a); -extern void func_80150E44(s32 a); -extern void func_80150EC4(s32 a0, s32 a1); -extern void func_80150E64(s32 a0); -extern void func_80150E84(s32 a0); -extern void func_80150EA4(s32 a0); -extern u8 D_800AE6C0; -extern s16 D_800AE6C8; -extern s16 D_800AE6CA; -extern s16 D_800AE6CC; -extern s32 D_800AE6C4; -extern s16 D_800AE6CE; -extern u8 D_800AE6BE; -extern u8 D_801201F8[]; -extern void func_80150F78(void); -extern void func_80150F80(s32 a0); -extern int func_80150FB4(int arg); -extern void func_80150FD8(s32 a0); -extern int func_80151014(int arg); -extern void func_80151038(s32 a0); -extern int func_80151070(int arg); -extern int func_80151094(int arg); -extern void func_801510B8(void); -extern void func_801510C0(void); -extern int func_801510C8(int arg); -extern int func_801510EC(int arg); -extern s32 func_8012DB84(void); -extern s32 func_80151110(void); -extern void func_80151130(void); -extern int func_80151138(int arg); -extern void func_8015115C(s32 *a0, s16 a1); -extern s32 func_80151164(s32 a0, s32 a1); -extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); -extern void func_801511A8(u8 *a0); -extern void func_801511C4(u8 *a0); -extern int func_80151204(int arg, int a1); -extern int func_801511E0(int arg); -extern int func_80151204(int a0, int a1); -extern void func_80151238(void *a0); -extern void func_8015126C(u16 *p); -extern void func_80151780(s32 a0); -extern void func_801516F0(s32 *a0); -extern void func_8015173C(s32 *a0); -extern s16 D_8011DB1A; -extern s32 D_80127518; -extern s32 D_801151FC; -extern s32 func_801725CC(u8 *a0); -extern s32 func_80029D3C(void); -extern void func_80151878(void); -extern void func_80153B58(s32 *a0); -extern s32 func_80151880(s32 a0); -extern s32 func_801518D8(s32 a0); -extern s32 func_80151944(void); -extern s32 func_80151924(void); -extern void func_8014E934(s32 a0); -extern s32 func_8014F3E8(s32 a0); -extern void func_801519C8(s32 a0); -extern void func_80151980(s32 a0); -extern M2C_UNK D_800D5880; -extern s32 D_800D58AC; -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801519C8(s32 arg0); -extern void func_80151C54(s32 a0); -extern void func_801542DC(s32 *a0, s32 a1); -extern void func_8015BDD0(s32 *a0); -extern void func_80165718(s32 a0); -extern u8 D_800D46E4[]; -extern void func_80151AE4(s32 arg0); -extern void (*D_8018D28C[])(void); -extern void func_80151D24(void *a0); -extern void func_80151DB0(s32 a0); -extern void func_80151D60(void *a0); -extern s32 func_80172630(u8 *a0); -extern s32 D_80062C14; -extern void func_80151DB0(s32 param_1); -extern void func_80151E78(s32 *a0); -extern void func_80151ECC(struct S80151ECC *a0); -extern void func_80151FB4(s32 a0); -extern void func_80151F38(s32 *a0); -extern void func_801553C0(s32 a0); -extern void func_80153C18(); -extern void (*D_8018D2B0[])(void); -extern void func_80152058(void *a0); -extern void func_801520DC(s32 a0); -extern void func_80152094(s32 a0); -extern void func_80147324(s32 a0); -extern u8 D_80062C04[]; -extern M2C_UNK D_8018D2A0; -extern void func_801520DC(s32 arg0); -extern void func_801470B4(s32 a0); -extern void func_8015369C(s32 a0); -extern void func_80152194(s32 *a0); -extern s32 func_801536DC(s32 a0); -extern void func_8015220C(s32 a0); -extern s32 func_80153800(s32 a0); -extern void func_801522CC(s32 a0); -extern void func_80152254(s32 *a0); -extern void (*D_8018D2C4[])(void); -extern void func_80152370(void *a0); -extern void func_801523F4(s32 a0); -extern void func_801523AC(s32 a0); -extern void func_8001382C(s32 a0, void *a1, void *a2); -extern u8 D_8018D2D0[]; -extern void func_801523F4(s32 arg0); -extern void func_801525F4(int); -extern s32 func_801535F4(void *arg0); -extern void func_8015BF48(s32 *a0); -extern void func_80152500(int param_1); -extern void func_801525F4(s32 a0); -extern void (*D_8018D2E0[])(void); -extern void func_80152698(void *a0); -extern void func_80152714(s32 a0); -extern void func_801526D4(s32 a0); -extern void func_80152790(s32 a0); -extern void (*D_8018D2F8[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018D2E8; -extern void func_801528B0(s32 arg0); -extern void func_8015294C(s32 a0); -extern void func_80152A08(s32 a0); -extern void func_80152AC8(s32 a0); -extern void func_80152A50(s32 *a0); -extern void (*D_8018D30C[])(void); -extern void func_80152B6C(void *a0); -extern void func_80152BF0(s32 a0); -extern void func_80152BA8(s32 a0); -extern void func_80152C80(s32 *a0); -extern void func_80152C40(s32 *a0); -extern void (*D_8018D328[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018D318; -extern void func_80152DA8(s32 arg0); -extern void func_80152E4C(s32 a0); -extern void func_80152EFC(s32 a0); -extern void func_80152FBC(s32 a0); -extern void func_80152F44(s32 *a0); -extern void (*D_8018D33C[])(void); -extern void func_80153060(void *a0); -extern void func_801530E4(s32 a0); -extern void func_8015309C(s32 a0); -extern void func_80155440(s32 *a0); -extern void func_801530E4(s32 arg0); -extern void func_80153150(struct S80153150 *a0); -extern void func_801531BC(s32 a0); -extern void func_8015327C(s32 a0); -extern void func_80153204(s32 *a0); -extern void (*D_8018D350[])(void); -extern void func_80153320(void *a0); -extern void func_801533A4(s32 a0); -extern void func_8015335C(s32 a0); -extern void func_80153410(s32 *a0); -extern void func_80153490(s32 a0); -extern void func_80153550(s32 a0); -extern void func_801534D8(s32 *a0); -extern void (*D_8011DB28)(s32 a0); -extern s32 func_801536DC(s32 param_1); -extern void func_800139C8(s32 a0, void *a1, void *a2); -extern s32 func_80153978(s32 a0, u16 *src); -extern s32 func_80133784(s32 a0, void *src, s32 dst); -extern s32 func_801539F8(s32 a0, void *a1); -extern s32 func_801539F8(s32 a0, void * a1); -extern s32 func_8016DA04(s32 a0); -extern s32 func_80153BD8(s32 a0); -extern s32 func_80153BF0(s32 a0); -extern void func_80153C18(void); -extern u16 D_8011F748; -extern void func_80153C30(void); -extern void func_80153C74(s16 a0, s16 a1); -extern s16 D_8011DB18; -extern void func_80153C44(int a0, int a1, s16 a2); -extern s16 D_8011DB0C; -extern s32 D_80115210; -extern void func_80153C8C(void); -extern void func_80153C9C(void); -extern s32 func_80153CBC(void); -extern s32 D_8018D364; -extern void (*D_8018D38C[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018D36C; -extern void func_80153D7C(s32 param_1); -extern void func_8015410C(void); -extern void func_80153E00(s32 param_1); -extern void func_80151664(void); -extern void func_80154134(u8 *a0); -extern void func_80154190(u8 *a0, s32 a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154218(u8 *a0, s32 a1, s32 a2); -extern void func_801541D8(u8 *a0, s32 a1, s32 a2); -extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); -extern void func_801542A4(); -extern void func_801542A4(s32 *a0, s32 a1); -extern void func_8015430C(); -extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); -extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); -extern s32 func_80154358(void * arg0); -extern void func_80154AB4(s32 a0, s32 a1); -extern void func_80154B20(s32 a0, s32 a1, s32 a2); -extern void func_80154AE0(s32 a0, s32 a1, s32 a2); -extern void func_80154B7C(u8 *a0, s32 a1); -extern void func_80154B4C(u8 *a0, s32 a1); -extern void func_80154BC8(void *a0, s32 a1, s32 a2); -extern void func_80154B98(void *a0, s32 a1, s32 a2); -extern u8 D_800D8D10[]; -extern s16 D_80078E9E; -extern void func_801550FC(s32 a0); -extern void func_80154ED8(s32 a0, s32 a1); -extern void func_80154F9C(s32 a0); -extern void func_800183E0(s32 a0); -extern void func_801550FC(s32 arg0); -extern void func_8001D150(s32, s32); -extern void func_8001D130(int, int); -extern void func_80155150(int param_1); -extern s32 D_800DE2A4[]; -extern void func_801552F4(s32 a0); -extern void func_80155344(s32 a0); -extern s32 func_80155394(s32 *a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80029178(s32); -extern int (*D_8018D3D8[])(void); -extern s32 func_80155458(s32 param_1); -extern s32 func_801659DC(u8 *a0); -extern s32 func_801554B8(void *arg0); -extern void func_801555F4(void *a0); -extern void func_80155518(s32 *a0); -extern void func_80155580(void *a0); -extern void (*D_8018D3DC[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern s32 func_80155800(s32 arg0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern s32 func_80029B4C(s32 a0, s32 a1); -extern s32 func_80029BC8(s32 a0, s32 a1); -extern s32 func_80029C44(s32 a0, s32 a1); -extern s32 func_8015640C(s32 a0, s32 a1); -extern s32 rand(void); -extern u32 func_8015616C(s32 param_1, u16 param_2); -extern u16 func_80156370(u16 param_1); -extern s32 func_801564B0(s32 a0); -extern s32 func_8002A1B4(void); -extern s32 func_8002A400(void); -extern s32 func_8002A670(void); -extern s32 func_8002A8E0(void); -extern s32 D_801151E0[]; -extern s32 func_801565C0(void); -extern void func_80156A14(s32 *a0); -extern void func_80156648(s32 *a0); -extern u8 D_8011DAD8[]; -extern s32 func_8014C568(s16 *a0, s16 *a1); -extern void func_801567BC(s32 a0); -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018D840[]; -extern void func_80156A1C(s32 param_1, s32 param_2); -extern s32 D_801150E0[]; -extern void func_80156A88(s32 a0, s32 a1); -extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); -extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); -extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); -extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern s32 func_80135004(s32 a0, void *a1, s32 a2); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801575E4(void *a0); -extern void func_801574DC(s32 *a0); -extern void func_80157544(void *a0); -extern void (*D_8018D850[])(void); -extern void func_8014CC28(s32 a0); /* defined */ -extern s32 func_8014F3E8(s32 a0); /* declared */ -extern void func_8015BDD0(s32 *a0); /* defined */ -extern void func_801575E4(void *a0); /* defined */ -extern void func_80157580(s32 arg0); -extern u8 D_800D4F14[]; -extern void func_801576A8(void *arg0); -extern s32 func_8015773C(u8 *a0); -extern s32 func_8015771C(u8 *a0); -extern s32 func_8015773C(u8 * arg0); -extern int D_801E96D0; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018D878[])(void); -extern void func_80157808(void *param_1); -extern void func_80157880(s32 a0); -extern s32 func_801725A4(u8 *a0); -extern u8 D_800D5128; -extern u8 D_8018D858; -extern void func_801578C0(s32 param_1); -extern void func_80147A84(int); -extern void func_80148038(int, int); -extern void func_80147460(int); -extern void func_80146D90(int); -extern void func_80161450(void *a0); -extern void func_80157A8C(int); -extern void func_80154A74(int, int); -extern unsigned char D_800D5178; -extern unsigned char D_8018D868; -extern void func_8015795C(int param_1); -extern void func_80161D20(s32 a0, s32 a1); -extern void func_80157A8C(s32 a0); -extern void func_8016706C(s32 a0); -extern u8 D_800D51AC[]; -extern void func_80157AC8(s32 param_1); -extern void func_80157B74(int param_1); -extern void func_8016158C(void *a0); -extern void func_8015BE04(s32 *a0); -extern void func_80157BC8(s32 a0); -extern void func_80157CCC(s32 a0); -extern void func_80157DC4(void *a0); -extern void func_80157FC4(void *a0); -extern void func_80157D74(u16 *a0); -extern void (*D_8018D8B8[])(void); -extern void func_80157E38(void *); -extern void func_80157E00(void *a0); -extern void func_80157E38(void * a0); -extern s32 func_80157F64(s32 *a0); -extern s32 func_80156600(void *a0); -extern void func_80157EA4(void *a0); -extern void (*D_8018D8C0[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018D88C; -extern void func_80158038(void * param); -extern u8 D_800D524C[]; -extern void func_80161418(void *a0); -extern void func_801580B4(s32 a0); -extern void func_801581AC(s32 a0); -extern void (*D_8018D8CC[])(void); -extern void func_8015824C(void *a0); -extern void func_801582C0(void *); -extern void func_80158288(void *a0); -extern u8 D_800D52A8[]; -extern void func_801585A4(s32 *a0); -extern void func_801582C0(void *a0); -extern s32 func_801585AC(s32 *a0); -extern u8 D_800D52E8[]; -extern void func_80158344(s32 *a0); -extern s32 func_801615C4(void *a0, s32 a1); -extern u8 D_8018D89C; -extern u8 D_800D533C; -extern void func_80158434(s32 param_1); -extern void func_80158548(s32 param_1); -extern void func_801585EC(u8 *a0); -extern void func_80158794(void); -extern s32 D_801E96D8; -extern s32 D_801E96E4; -extern s32 D_801E96E8; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018D908[])(s32 *); -extern void func_80158AE4(void *a0); -extern void func_80158AB4(void *a0); -extern void func_8016F264(void); -extern void func_80165840(void); -extern void func_801658DC(void); -extern void func_80165A78(s32); -extern void func_80158AE4(void * a0); -extern M2C_UNK D_800D58D8; -extern void func_80158BB0(void *arg0); -extern s32 func_80159404(s32 a0, s32 a1); -extern void func_80158C40(s32 *a0); -extern void func_80158CD8(s32 *a0); -extern s32 func_80159434(s32 a0, s32 a1); -extern void func_80158D60(s32 a0); -extern M2C_UNK D_800D5904; -extern void func_80158E24(s32 *a0); -extern s32 D_8018D8DC[]; -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80158F00(int param_1); -extern u8 D_80110C3C[]; -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80158FA4(s32 param_1); -extern s32 func_801399F0(s32 a0); -extern u8 D_80110C94[]; -extern u8 D_80110CD4[]; -extern void func_80159070(void *a0); -extern s32 func_80029A94(s32); -extern void func_80175454(void); -extern void func_800298BC(void *); -extern void func_8002992C(s32); -extern void func_800CF804(void); -extern void func_800CF818(void); -extern u8 D_80110D0C[]; -extern void func_80159120(s32 a0); -extern void func_801592CC(s32 *a0); -extern u8 D_800AE6BD; -extern s32 D_801E96E0; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018DB58[])(void); -extern void func_80159698(void *a0); -extern s32 func_801596D4(void *a0); -extern void func_80174B6C(void); -extern void func_80129248(s16 a0); -extern void func_8013C938(void); -extern void func_8013CB20(void); -extern void func_8013C98C(void); -extern void func_8002850C(s32, s32, s32); -extern void func_80028620(s32, void *); -extern s16 D_800B9AAC[]; -extern s16 D_800B9B00; -extern u16 D_801270C0; -extern u32 D_800AFAE8[]; -extern char D_8018D978[]; -extern s32 func_801596F0(s32 param_1); -extern s32 func_80159874(void); -extern void func_800167B8(s32 a0); -extern s32 func_8015987C(s32 a0); -extern int func_800167F0(int arg); -extern int func_801598BC(void); -extern void func_80159968(void *a0); -extern void func_801598E0(u8 *a0); -extern void (*D_8018DBFC[])(void); -extern void func_80159A20(void *a0); -extern void func_801599E0(void *a0); -extern void func_80159A18(void); -extern void func_80159BE4(s32); -extern void func_80159B08(s32 *a0); -extern void func_80159B70(void *a0); -extern void func_80159B3C(void * a0); -extern void (*D_8018DD50[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018DB6C; -extern void func_80159BE4(s32 arg0); -extern void func_8015A1C8(s32 a0); -extern void func_8015A2D8(s32); -extern void func_8015A1FC(s32 *a0); -extern void func_8015A264(void *a0); -extern void func_8015A230(s32 *a0); -extern void (*D_8018DD58[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018DB7C; -extern s32 func_80172608(u8 *a0); -extern void func_8015A2D8(s32 param_1); -extern u8 D_800D48DC; -extern s32 func_8015AB7C(s32 a0); -extern s32 D_8011F9C4; -extern s32 func_8015ABD4(s32 a0, s32 a1, s32 a2); -extern s32 func_80161CD0(s32 a0, s32 a1); -extern M2C_UNK D_8018DB9C; -extern void func_8015AC48(s32 arg0); -extern void func_8015AC90(s32 a0); -extern void func_8015ADB0(s32 a0); -extern void func_8015ACC4(s32 *arg0); -extern void func_8015AD3C(void *a0); -extern void func_8015AD08(void *arg0); -extern void (*D_8018DD60[])(void); -extern void func_8015ADB0(s32); -extern void func_8015AD78(s32 a0); -extern void func_8015ADB0(s32 arg0); -extern s32 D_800D4A9C; -extern int func_8015B6F4(int param_1); -extern u8 D_800D4F8C[]; -extern s32 func_8015B7B4(s32 a0); -extern u8 D_800D4BE0[]; -extern s32 func_8014A51C(void); -extern s32 func_8015B858(u8 *a0); -extern s32 D_800D4B48; -extern void func_8015B8F8(s32 *a0); -extern void func_8015BD8C(s32 *a0); -extern s32 func_8015BE94(); -extern void func_8015BE38(struct Obj *a0); -extern s32 func_8015BE74(void); -extern void func_80161124(void *a0); -extern s32 func_8015BE94(s32 *a0); -extern s32 func_8015AE2C(); -extern s32 func_8015BEC4(void); -extern s32 func_8015B950(s32 arg0); -extern s32 func_8015BEE4(void); -extern void func_8015BF04(s32 *a0); -extern void func_8015C0C4(s32 a0); -extern void func_8015BFF4(void *a0); -extern void func_8015BF7C(s32 *a0); -extern void func_8015C030(s32 *a0, s32 a1); -extern void func_8015BFB0(s32 *a0, s32 a1); -extern void (*D_8018DD88[])(void); -extern void func_8015C0C4(s32); -extern void func_8015C08C(s32 a0); -extern s32 func_8015C128(s32 param_1); -extern void func_8015C6A4(void); -extern void func_8015C788(s32 a0); -extern void func_8015C6AC(s32 *a0); -extern void func_8015C714(void *a0); -extern void func_8015C6E0(s32 *a0); -extern void (*D_8018DD94[])(void); -extern void func_8015C788(s32); -extern void func_8015C750(s32 a0); -extern void func_8015CB94(s32 a0); -extern void func_8015CBCC(void); -extern void func_8015CBD4(void); -extern void func_8015CBDC(void); -extern void func_8015CBE4(void); -extern void func_8015CBEC(void); -extern void func_8015CBF4(void); -extern void func_8015CBFC(void); -extern void func_8015CC04(void); -extern void func_8015CC0C(s32 *param_1); -extern void func_8015CC74(s32 *a0); -extern void func_8015CC40(s32 *a0); -extern s32 func_8015CCD0(); -extern s32 func_8015CCB0(void); -extern s32 func_801725E0(u8 *a0); -extern s32 func_8015CCD0(s32 param_1); -extern s32 func_8015CD20(s32 arg0); -extern void func_8015CF24(s32 a0); -extern void func_8015D01C(); -extern void func_8015CF58(s32 *param_1); -extern void func_8015CFC0(s32 *a0); -extern void func_8015CF8C(s32 *a0); -extern void func_8015CFFC(void); -extern void func_8015D01C(int param_1); -extern void (*D_8018DC08[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018DE38; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018CF1C[]; -extern void func_8015D414(int param_1); -extern void func_8015D57C(s32); -extern void func_8015D480(s32 *a0); -extern s32 func_8015D4E8(s16 *a0); -extern void func_8015D4B4(s16 *a0); -extern void func_8015D524(s32 arg0); -extern void func_8015D544(s32 a0); -extern void func_801746DC(void); -extern void func_8015D57C(s32 arg0); -extern s32 func_80161B18(void *a0); -extern s32 func_80161B84(void *a0); -extern void func_80154150(int, int); -extern void func_80149374(int, int); -extern unsigned char D_8018DE4C[]; -extern void func_8015D5E8(int param_1); -extern int func_8015E0D4(int); -extern void func_8015DA5C(s32 a0); -extern void func_8015DB6C(s32 a0); -extern void func_8015DA90(s32 *a0); -extern void func_8015DAF8(s32 *a0); -extern void func_8015DB6C(s32); -extern void func_8015DB34(s32 a0); -extern void func_8015DCB8(s32 a0); -extern void func_8014BD60(s32 a0, s32 a1); -extern int func_8015DD74(int); -extern void func_8015DBD4(void *arg0); -extern int func_8015DC84(int a0); -extern s8 D_8018DE88[]; -extern void func_8015DCB8(s32 param_1); -extern int func_8015DD74(int arg0); -extern void func_8015DECC(s32 a0); -extern void func_8015DDF0(s32 *a0); -extern void func_8015DE58(s32 *a0); -extern void func_8015DECC(s32); -extern void func_8015DE94(s32 a0); -extern void func_8015E018(s32 a0); -extern void func_8015DF34(void *arg0); -extern int func_8015DFE4(int a0); -extern void func_8015E018(s32 param_1); -extern int func_8015E0D4(int a0); -extern void func_8015E22C(s32 a0); -extern void func_8015E150(s32 *a0); -extern s32 func_8015E1B8(s32 a0); -extern void func_8015E184(s32 *arg0); -extern void func_8015E22C(s32); -extern void func_8015E1F4(s32 a0); -extern u8 D_800D4FF4[]; -extern u8 D_800D5098[]; -extern u8 D_800D5060[]; -extern s32 func_8014A850(s32 a0); -extern void func_8015E40C(s32 a0); -extern void func_8015E588(void); -extern void func_8015E4B0(s32 a0); -extern void func_8015E288(s32 a0); -extern u16 D_8018DED0; -extern u16 D_8018DED2; -extern u16 D_8018DED4; -extern s32 D_8018DED8; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -extern void func_8013C9C4(void *a0); -extern s32 D_8018DEE0; -extern void func_8015E5B0(u8 *self); -extern void func_8015E714(s32 *a0); -extern void func_8015E95C(s32); -extern void func_8015E84C(s32 *a0); -extern void func_8015E8E8(s32 *a0); -extern void func_8015E9B8(s32 *a0); -extern void func_8015E8B4(s32 *a0); -extern void func_8015E924(s32 a0); -extern void func_8015E95C(s32 a0); -extern s16 D_801152A0; -extern void func_80160818(s32 *a0); -extern void func_8015ED6C(s32 *a0); -extern void func_8015EE7C(s32); -extern void func_8015EDA0(s32 *a0); -extern s32 func_8015EE08(s32 a0); -extern void func_8015EDD4(s32 *arg0); -extern void func_8015EE44(s32 a0); -extern int D_800D4C48; -extern int D_8018DBEC; -extern void func_8015EE7C(s32 param_1); -extern void func_8015EEE0(void *arg0); -extern void func_8015EF9C(void); -extern void func_8015F080(s32); -extern void func_8015EFA4(s32 *a0); -extern void func_8015F00C(s32 *a0); -extern void func_8015EFD8(s32 *a0); -extern void func_8015F048(s32 a0); -extern void func_8015F080(s32 a0); -extern s32 D_80062BE8; -extern void func_801466F0(s32, s32, s32, s32, s32, s32, s32, s32); -extern s32 func_80161208(void); -extern void func_8015F118(void *a0); -extern void func_8015F260(s32 *a0); -extern void func_8015F380(); -extern void func_8015F2BC(s32 *a0); -extern void func_8015F324(s32 *a0); -extern void func_8015F2F0(s32 *a0); -extern void func_8015F360(void); -extern s32 func_801725B8(u8 *a0); -extern void func_8015F380(void* arg0); -extern void func_8015F738(s32 *a0); -extern void func_8015F848(s32 *a0); -extern void func_8015F76C(s32 *a0); -extern s32 func_8015F7D4(s32 a0); -extern void func_8015F7A0(s32 *arg0); -extern void func_8015F810(s32 *a0); -extern void func_80147078(s32 *, s16); -extern void func_80159B70(void *); -extern void func_8015F89C(void *arg0); -extern void func_8015F948(s32 *param_1); -extern void func_8015F9A4(void *arg0); -extern void func_8015FA24(s32 arg0); -extern void func_8015FBE0(s32 *a0); -extern void func_8015FA44(s32 *a0); -extern void func_8015FAAC(s32 *a0); -extern void func_8015FA78(s32 *a0); -extern s32 func_801612B8(void *a0, s32 a1); -extern void func_8016007C(s32 a0); -extern void func_8015FAE8(void *arg0); -extern void func_8015FCC8(void *param_1); -extern unsigned int D_8018DF64[]; -extern void func_8015FD74(int param_1); -extern s32 func_80028DE0(void); -extern u8 func_80165700(s32 a0, s32 a1); -extern void func_8015FDCC(s32 a0); -extern u8 D_80078EC2; -extern u8 func_801656E8(s32 a0, s32 a1); -extern void func_80165670(s32 a0, s32 a1); -extern void func_8016004C(s32 a0); -extern void func_8015FF20(void *param_1); -extern void func_801601AC(s32 *a0); -extern void func_801600D0(s32 *a0); -extern void func_80160138(s32 *a0); -extern void func_80160104(s32 *a0); -extern void func_80160174(s32 *a0); -extern void func_801601E4(s32 *a0); -extern void func_80160244(s32 *a0); -extern void func_8016032C(void); -extern void func_80160410(s32 *a0); -extern void func_80160334(s32 *a0); -extern void func_8016039C(s32 *a0); -extern void func_80160368(s32 *a0); -extern void func_801603D8(s32 *a0); -extern u8 D_80062BD0; -extern void func_80160410(s32 * a0); -extern void func_801607B8(s32 *a0); -extern void func_801608C0(s32 *a0); -extern void func_801607E4(s32 *a0); -extern void func_8016084C(s32 *a0); -extern void func_80160888(s32 *a0); -extern void func_80160A28(s32 a0); -extern void func_80160A74(s32 *a0); -extern void func_80160BB4(s32 *a0); -extern void func_80160ACC(s32 *a0); -extern s32 func_80160B34(s32 a0); -extern void func_80160B00(s32 *arg0); -extern void func_80160B70(s32 a0); -extern void func_80160C28(void *arg0); -extern void func_80160CB4(s32 *a0); -extern void func_80160D10(void *arg0); -extern void func_80160DEC(u8 *a0); -extern void func_80160F00(); -extern void func_80160E3C(s32 *a0); -extern void func_80160EA4(); -extern void func_80160E70(s32 *a0); -extern void (*D_8018E014[])(void); -extern void func_80160EA4(void *a0); -extern void func_80160EE0(void); -extern void func_80160F00(void* arg0); -extern void func_800D0F4C(s32 a0); -extern u8 D_80110EC0; -extern void func_80160F70(s32 a0); -extern void func_80160FE0(s32 *a0); -extern void func_80161034(void *a0); -extern void func_80161094(s32 a0); -extern void func_801610FC(void); -extern void func_801483E8(void); -extern s32 func_80161A60(s32 a0); -extern void func_8016130C(void *a0, s32 a1); -extern void func_80161240(void *a0); -extern void func_80161374(void *a0, s32 a1); -extern void func_80161278(void *a0); -extern s32 func_801612B8(void * a0, s32 a1); -extern void func_8016163C(void *a0, s32 a1); -extern void func_80161774(void *a0, s32 a1); -extern s32 func_8016197C(s32 a0, s32 a1); -extern s32 func_80161488(void *a0); -extern void func_80161888(void *a0, s32 a1); -extern void func_801614E4(void *a0); -extern void func_8016191C(void *a0, s32 a1); -extern void func_8016151C(void *a0); -extern void func_80161554(void *a0); -extern s32 func_801615C4(void * arg0, s32 arg1); -extern s32 func_801619A4(s32 *a0); -extern s32 func_80161A00(s32 a0); -extern s32 func_80161A30(s32 a0); -extern int func_801497A8(void); -extern int func_80161BE0(void *param_1); -extern u16 D_8018E044[]; -extern void func_80161C98(int param_1, u32 param_2); -extern void func_80161E08(s32); -extern s32 func_80162438(s32); -extern s32 D_800AE6A8; -extern void func_800D1734(void *); -extern s32 D_8018E0A8; -extern void func_80161D88(void); -extern void func_80161E08(s32 param_1); -extern int func_800291DC(int); -extern int func_800D0E30(void *a0); -extern int func_801620C4(void); -extern s32 func_800D0D7C(s32, s32); -extern int D_801E96F0[]; -extern void func_8016216C(void); -extern u8 D_80078EB0; -extern u8 D_80078EB1; -extern s32 func_801621CC(s32 arg0); -extern void func_801622C4(void); -extern void (*D_8018E0CC[])(void); -extern void func_80162330(void *a0); -extern void func_8014706C(void *a0); -extern s32 func_8016236C(u8 *a0); -extern void func_800D0C48(s32 a0); -extern s32 func_801623B8(s32 *a0); -extern s32 func_800167F0(s32 a0); -extern s32 func_80162414(void); -extern s32 func_80162438(s32 _unused0); -extern int func_801626B8(void); -extern void func_80162714(void); -extern int D_801E9748[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018E114[])(void); -extern void func_80162834(void *a0); -extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80162968(s32 a0); -extern s32 func_80162ACC(u8 *a0); -extern u8 D_800B5CB8; -extern s32 D_8018E104; -extern s32 D_800B5CBC; -extern u8 D_800B5CDF; -extern s32 D_800B5CEC; -extern void func_80162870(s32 param_1); -extern void func_801628F4(s32 *a0); -extern void func_80162968(s32 param_1); -extern void func_80162AC0(s32 *a0, s8 a1); -extern s32 func_80162AE0(u8 *a0); -extern void func_80162AF4(void); -extern void func_80162CC4(void); -extern s32 D_80126D40; -extern void func_80162B1C(void); -extern void func_80162D28(s32 *a0); -extern void func_80162D88(s32 *a0); -extern void func_80162DE8(s32 *a0); -extern void func_80162E48(s32 *a0); -extern void func_80162EA8(s32 *a0); -extern void func_80162F60(s32 arg0, s32 arg1); -extern void func_80162F80(s32 arg0, s32 arg1); -extern void func_80162FA0(s32 arg0, s32 arg1); -extern void func_80162F08(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80162FC0(s32 *a0); -extern void func_80162FF4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801630C4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163194(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg4); -extern void func_8016325C(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163234(s32 a0); -extern s32 D_80115100; -extern s32 func_801632E0(void); -extern s32 D_80115200; -extern s32 func_801632F0(void); -extern u16 D_80126B18[]; -extern void func_80163328(void); -extern s32 func_801633A8(void); -extern s32 func_80163408(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void func_80163534(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, u16 * a5); -extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); -extern char D_801E8DBC[8]; -extern void *memcpy(void *dst, const void *src, unsigned int n); -extern void func_801634D8(s32 param_1, u16 param_2, u16 param_3, s32 param_4, u16 param_5); -extern void func_80157158(); -extern void func_80163664(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801636D0(s32 a0, s32 a1); -extern s32 func_8016380C(struct S8016380C *a0, s32 a1); -extern void *memcpy(void *dst, void *src, s32 n); -extern s32 func_801638A0(u8 *a0, s32 a1); -extern s32 func_80163950(s32 a0); -extern void (*D_8018E11C[])(void); -extern void func_80163A58(void *a0); -extern void func_80163A94(s32 param_1); -extern void func_80163C2C(s32 param_1); -extern void func_80163EC8(s32 param_1); -extern void func_80164270(s32 *a0); -extern void func_80164418(void); -extern void func_80163764(s32 a0); -extern void func_801642AC(s32 a0); -extern void func_8016432C(s32 a0); -extern void func_80164410(void); -extern s32 func_80012DBC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164530(s32 arg0); -extern void (*D_8018E170[])(void); -extern void func_80164744(s32 param_1); -extern void func_8001C810(s32 a0, s32 a1); -extern void func_80164A74(s32 *a0); -extern void func_80164930(s32 a); -extern u16 D_800DF2E0; -extern s32 D_8018E138; -extern s16 D_8018E16C; -extern s16 D_8018E16A; -extern s16 D_8018E168; -extern void func_801647A4(int param_1); -extern void func_80164ACC(); -extern void func_80164864(void *a0); -extern void func_80164930(s32 param_1); -extern s32 func_8014C308(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164ACC(s32 a0); -extern void (*D_8018E17C[])(void); -extern void func_80164BA0(void *a0); -extern void func_8001CD50(s32 a0, s32 a1); -extern void func_800233CC(void *, unsigned short); -extern void func_80164DD0(s32 a0); -extern void func_80164DB0(void); -extern u8 D_801E97A8; -extern u8 D_801E97A9; -extern u8 D_801E97AA; -extern u8 D_801E97AB; -extern u8 D_801E97AC; -extern u8 D_801E97AD; -extern u8 D_801E97AE; -extern u8 D_801E97AF; -extern void func_80164BDC(s32 param_1); -extern void func_80164E40(void); -extern void func_80164CD4(u8 *a0); -extern void func_80164D4C(void *arg0); -extern void (*D_8018E18C[])(void); -extern void func_80164EA4(void *a0); -extern void func_80165124(void *a0); -extern void func_80164EE0(int param_1); -extern s32 func_80165140(s32 a0); -extern void func_801651B8(void *a0); -extern void func_80164F44(void *arg0); -extern void func_80165024(void *a0); -extern void func_80165064(s32 *a0); -extern void func_801650C4(s32 *a0); -extern s32 func_80165140(s32 param_1); -extern s32 func_80165240(s32 a0, s32 a1, s32 a2); -extern s32 D_801E97E8; -extern void func_801651B8(void * param_1); -extern u8 D_80126CF8; -extern void func_8016533C(void); -extern void func_801653F4(s32 a0); -extern void func_80165580(s32 a0); -extern void func_80165374(s32 a0); -extern void func_80165580(s32 _arg0); -extern void func_801653B8(s32 *a0); -extern s32 func_80165624(s32 a0); -extern u8 D_80078EC5; -extern void (*D_8018E1D0[])(void); -extern u8 func_80165658(s32 a0, s32 a1); -extern void func_800CAE0C(s32 a0); -extern void func_801654A8(s32 arg0); -extern void func_80165B28(void *a0); -extern void func_801655E4(s32 a0); -extern u8 D_8018E24C[]; -extern s32 D_8018E26C[]; -extern u8 D_8018E2E8[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018E308[]; -extern u8 D_8018E328[]; -extern void func_800CAF6C(void); -extern void func_80165770(void); -extern void func_801657D8(void); -extern u8 D_80078EC3; -extern void func_801657A0(void); -extern s32 D_80078EA0; -extern s32 D_80078EA8; -extern u8 D_80078EBB; -extern s32 D_80078ED4; -extern s32 D_80078ED8; -extern s32 D_80078EDC; -extern u8 D_80078EE0; -extern void func_80165874(void); -extern s8 D_80078EC4; -extern void func_801658EC(void); -extern s32 func_80165900(void); -extern s32 func_80165910(void); -extern s32 D_8012672C; -extern s32 D_8012811C; -extern s32 D_80126B08; -extern void func_80165938(void); -extern void func_80165958(void); -extern s32 func_80165978(void); -extern void func_80165988(void); -extern s32 func_801659A8(void); -extern void func_801659B8(void); -extern s32 func_801659CC(void); -extern void func_80165A18(void); -extern s32 func_80165A50(s32 _arg0); -extern void func_80165AC8(void); -extern void func_80165A78(s32 arg0); -extern void (*D_8018E3C4[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_8018E440[])(void); -extern void func_80165BB4(u8 *a0); -extern void func_80165B6C(u8 *a0); -extern void func_80165C58(s32 arg0); -extern void func_80165BFC(void *a0); -extern void func_80165C78(void); -extern M2C_UNK D_801E8DCC; -extern void func_80165E2C(u16 *arg0); -extern s32 func_80165FA4(s32 a0, s32 a1, s32 a2); -extern s32 func_80167DBC(s32 a0, s32 a1, s32 a2); -extern s32 func_80167AE0(s32 a0, s32 a1, s32 a2); -extern void func_80165E90(void); -extern void func_80020F34(s32 a0, s32 a1); -extern s32 func_80165FA4(s32 arg0, s32 arg1, s32 arg2); -extern void (*D_8018E44C[])(void); -extern void func_80166018(void *a0); -extern void func_80166054(s32 arg0); -extern void func_801661CC(s32 param_1); -extern void func_80166244(void* arg0); -extern void func_8016629C(void *a0); -extern void func_801662F4(void *a0); -extern void func_8016634C(void *a0); -extern void func_801663A4(void *a0); -extern void (*D_8018E454[])(void); -extern void func_801663FC(void *a0); -extern u8 D_800D387C[]; -extern u8 D_800D3888[]; -extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); -extern void func_800D1FC8(s32 a0, s32 a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern void func_801665B4(); -extern void func_80146C3C(); -extern void func_80166438(u8 *a0); -extern s32 func_80128ED8(s32 param_1, s32 *param_2); -extern void func_800D22E4(s32 a0); -extern void func_801665B4(s32 *a0); -extern void (*D_8018E51C[])(void); -extern void func_80166618(void *a0); -extern void (*D_8018E52C[])(void); -extern void func_80166654(void *a0); -extern s32 func_80166690(s32 param_1, s32 param_2); -extern s32 func_80166994(); -extern s32 func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern s32 func_80167540(s32 arg0); -extern void (*D_8018E53C[])(void); -extern void func_801678B4(void *a0); -extern void RotMatrixYXZ(void *a0, void *a1); -extern void func_80048EAC(void *a0, void *a1); -extern s32 func_801670E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80146C3C(void); -extern void func_801678F0(s32 a0); -extern void (*D_8018E548[])(void); -extern void func_80167A9C(void *a0); -extern void func_80167AD8(void); -extern s32 func_80167AE0(s32 param_1, s32 param_2, s32 param_3); -extern void func_80168070(s32 a0, s16 *a1, s16 *a2, void *a3); -extern u8 D_8018E4A8[]; -extern u8 D_8018E4BC[]; -extern s32 func_80167DBC(s32 arg0, s32 arg1, s32 arg2); -extern void func_800D20C0(void *a0, void *a1, s32 a2); -extern void func_80017E68(void *a0, void *a1); -extern void func_800D23D0(void *a0); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern s32 D_801269A4; -extern s32 D_801269A8; -extern s32 D_801269AC; -extern void func_80168070(s32 param_1, s16 *param_2, s16 *param_3, void *param_4); -extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_8016829C(s32 a0); -extern s32 func_80166690(s32 a0, s32 a1); -extern void func_80168328(s32 arg0); -extern void func_801683D8(s32 a0); -extern void func_801684B4(s32 a0); -extern void func_80168540(s32 a0); -extern void func_801685EC(s32 a0); -extern void func_80168640(s32 a0); -extern s32 RotMatrixX(s32 a0, void *a1); -extern void func_80168664(void *arg0); -extern void (*D_8018E560[])(void); -extern void func_80168744(void *a0); -extern void func_80168BDC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801687CC(s32 a0); -extern void func_80168780(s32 a0); -extern void func_80168828(void); -extern void func_801687CC(s32 param_1); -extern void func_80168828(); -extern void (*D_8018E568[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_8018E570[])(void); -extern void func_80168AA8(void *a0); -extern void func_80168AE4(s32 a0); -extern void func_800D2318(void); -extern void func_80168BDC(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void (*D_8018E578[])(void); -extern void func_80168D58(void *a0); -extern void func_80168D94(int a0); -extern void func_80168F40(); -extern void func_80168EC4(s32 a0); -extern void func_80168F40(void *arg0); -extern void (*D_8018E580[])(void); -extern void func_8016901C(void *a0); -extern void func_80169058(s32 a0); -extern s32 func_80169228(void); -extern void func_801691B8(void *a0); -extern void (*D_8018E588[])(void); -extern void func_801693CC(void *a0); -extern void func_80169584(s32 param_1); -extern void func_80169408(s32 a0); -extern void func_8016951C(int param_1); -extern s32 func_80017758(void *a0, void *a1); -extern s32 func_80017DC4(void *a0, void *a1); -extern void func_801696D8(s32 a0, s32 a1); -extern void (*D_8018E590[])(void); -extern void func_80169830(void *a0); -extern void func_8016986C(s32 a0); -extern s32 func_80169A4C(s32 a0, s32 a1); -extern void func_801699D0(void *arg0); -extern void (*D_8018E644[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_8018E64C[])(void); -extern void func_80169F00(void *a0); -extern char D_8018E5FC[]; -extern char D_8018E5BC[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8018E684[])(void); -extern void func_8016A020(void *a0); -extern void func_8016A05C(void *a0); -extern void func_8016A290(s32 a, void *b, void *c); -extern void func_8016A08C(s32 param_1); -extern void func_8016A1CC(int param_1); -extern void func_8016A290(s32 param_1, void *param_2, void *param_3); -extern void (*D_8018E690[])(void); -extern void func_8016A700(void *a0); -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_80126B62; -extern u16 D_80126B66; -extern void func_8016AA50(s32 param_1, s32 param_2); -extern void (*D_8018E6D8[])(void); -extern void func_8016AB30(void *a0); -extern void func_8016B234(void); -extern void func_8016AFB0(s32 a0); -extern void func_8016B114(void *arg0); -extern s32 func_8016B448(s32, s32); -extern s32 func_8016BA48(s32 a0); -extern void func_8016B3F4(s32 a0); -extern s32 func_8016B428(s32 a0); -extern void func_8016B984(void *a0); -extern s32 func_8016B448(s32 arg0, s32 arg1); -extern void (*D_8018E754[])(void); -extern void func_8016B4BC(void *a0); -extern int func_8016B9F8(int); -extern int func_8016B834(int, int); -extern void func_8016B91C(int); -extern int D_801E9B08; -extern void func_8016B4F8(int param_1); -extern s32 func_8016B9F8(s32 param_1); -extern void func_8016B6BC(s32, s32, s32, s32); -extern void func_8016B91C(s32); -extern s16 D_8018E748[]; -extern void func_8016B5C0(s32 param_1); -extern void func_8001CD9C(int, void *); -extern int *D_8018E78C[]; -extern unsigned short D_8018E794[]; -extern unsigned short D_8018E79C[]; -extern unsigned char D_801E9B10[]; -extern int func_8016B834(int param_1, int param_2); -extern void func_8016B964(SrcB964 *a0, DstB964 *a1); -extern void func_8016B91C(s32 arg0); -extern s32 D_801E9B08; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8018E7A4[])(void); -extern void func_8016BBA4(void *a0); -extern s32 func_8016BBE0(s32 param_1); -extern void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3); -extern M2C_UNK D_801E9C44; -extern M2C_UNK D_801E9C48; -extern void func_8016BCC0(void *arg0); -extern s32 func_8016BD78(s32 param_1); -extern s32 func_8016BEA0(s32 param_1); -extern void func_8016BF34(void *a0); -extern void func_8016BFD0(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern s32 D_801E9BD0; -extern void (*D_8018E7D4[])(void); -extern void func_8016C14C(void *a0); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801E9C4C[]; -extern u8 D_801E9C54[]; -extern u8 D_801E9C04[]; -extern void func_8016C2C4(s32 param); -extern s32 func_8016C49C(s32 param_1_arg); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_8016C74C(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern short func_8016CF04(s32 a0, s32 a1); -extern void func_8016C83C(s32 a0); -extern void (*D_8018E7DC[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_8018E7F8[])(void); -extern void func_8016D19C(void *a0); -extern void (*D_8018E800[])(void); -extern void func_8016D428(void *a0); -extern void func_8016D464(u8 *a0); -extern void func_8016D4DC(s32 a0); -extern void func_8016D5EC(s32 *a0); -extern short func_8016CBC0(void); -extern void func_8016D64C(int param_1); -extern void func_8016D778(s32 a0); -extern void func_800D20C0(); -extern void func_8016D848(s32 *a0); -extern void func_8016D984(s32 *a0); -extern void func_8016DBD8(u8 *a0); -extern void (*D_8018E868[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_8018E80C; -extern u8 D_8018E818; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void (*D_8018E89C[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8018E8A4[])(void); -extern void func_8016DF20(void *a0); -extern void func_8016E3CC(s32 a0); -extern void func_8016E1CC(s32 a0); -extern void func_8016E26C(s32 *a0); -extern void func_8016E2E8(void *a0); -extern void func_8016E460(void *a0, void *a1); -extern void func_8016E358(void *a0); -extern void func_8016E460(void *arg0, void *arg1); -extern void (*D_8018E8F8[])(void); -extern void func_8016E5B8(void *a0); -extern void func_8016E5F4(s32 arg0); -extern void func_8016E778(); -extern void func_8016E688(void *a0); -extern void func_8016E6E4(s32 a0); -extern void func_8016E728(u8 *a0); -extern void func_8016E7C8(int param_1, short *p1, unsigned int *p2); -extern void func_8016E778(int param_1); -extern void func_8016E7C8(int param_1, short *param_2, unsigned int *param_3); -extern s32 D_80115218; -extern void func_8016E8F0(void); -extern void func_8016E918(short param_1, short param_2); -extern s32 func_8016E95C(); -extern u16 D_8018E92C[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_8018E91C[]; -extern void func_8016EB3C(s32 p); -extern void func_8016EBA8(u8 *param_1); -extern void func_8016ED6C(void); -extern s32 D_80126D70; -extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); -extern void func_8016ED8C(s32 a0, s32 a1, s32 a2); -extern void func_8016EE40(s32 a0, s32 a1, s32 a2); -extern void func_8016EDBC(s32 a0, s32 a1, s32 a2); -extern void func_8016EE94(); -extern void func_8016EDEC(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_8016EF78(s32 a0); -extern void func_8016EE40(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_801726D0(void *a0); -extern s32 D_80126D50; -extern s32 D_80126D54; -extern u8 D_80126D6C; -extern u8 D_80126D6D; -extern u8 D_80126D6E; -extern s32 D_80126D5C; -extern s32 D_80126D60; -extern s16 D_80126D64; -extern s16 D_80126D66; -extern s16 D_80126D68; -extern s16 D_80126D6A; -extern u8 D_80126D1A; -extern s32 D_80127058; -extern s32 D_8012705C; -extern s32 D_80127060; -extern s32 D_80127064; -extern s32 D_80127068; -extern s32 D_8012706C; -extern s32 D_80127070; -extern s32 D_80127074; -extern s16 D_80126D20; -extern void func_8016EE94(s32 a0, s32 a1); -extern s32 func_8016EFC8(s32); -extern s32 func_8016EFA8(s32 a0); -extern void func_8016F094(s32 *a0); -extern s32 func_8016F0AC(); -extern s32 D_8018E948; -extern void func_8016F250(void); -extern void func_8016F288(void); -extern void func_8016F2A8(void); -extern void func_8016F2C8(void); -extern void func_8016F2EC(void); -extern void func_8016F30C(void); -extern void func_8016F330(void); -extern void func_8016F350(void); -extern void func_8016F374(void); -extern void func_8016F388(void); -extern void func_8016F398(void); -extern s32 func_8016F44C(s32 a0); -extern void func_8016F470(s32 a0); -extern s32 func_8016F410(s32 a0); -extern void func_80175414(s32 _arg0); -extern s32 func_8016F4C4(s32); -extern s32 func_8016F494(s32 a0); -extern void func_8016F0E4(void); -extern s32 func_8016F4C4(s32 param_1); -extern void func_8016F4F4(void); -extern void func_801719A4(int a0, int a1); -extern void func_800D1724(s32 a0); -extern void func_80171928(void *a0); -extern void *D_8011F738; -extern void func_8016F4FC(void *a0); -extern void func_8014708C(void *a0); -extern void func_8016F540(void *a0); -extern void func_8016F578(s32 *a0); -extern void func_8016F5B0(void *a0); -extern void func_80147060(u8 *a0); -extern void func_8016F5E0(u8 *a0); -extern void func_8016F610(void *a0); -extern void func_8016F648(void *a0); -extern void func_8016F680(void *a0); -extern void func_8016F6B0(void *a0); -extern void (*D_8018E9C0[])(void); -extern void func_8016F6E0(void *a0); -extern s32 func_80171990(u8 *a0); -extern void func_8016F764(void *a0); -extern void func_8016F71C(u8 *a0); -extern void (*D_8018E9C8[])(void); -extern void func_8016F798(void *a0); -extern void func_8016F804(void *a0); -extern void func_8016F7D4(u8 *a0); -extern void func_80171928(void *); -extern void (*D_8018E9D0[])(void); -extern void func_8016F834(void *a0); -extern void func_8016F8AC(u8 *a0); -extern void func_8016F870(u8 *a0); -extern void func_80172358(u8 *a0, u8 *a1); -extern void (*D_8018E9D8[])(void); -extern void func_8016F8E4(void *a0); -extern void func_8016F95C(void *a0); -extern void func_8016F920(u8 *a0); -extern s32 func_80171CC4(void *a0, void *a1); -extern s32 func_80171D1C(void *a0, void *a1, s32 a2); -extern u16 D_8011F73E; -extern void (*D_8018E9E0[])(void); -extern void func_8016F9C4(void *a0); -extern void func_80171B44(s32 *a0); -extern void func_8016FA44(s32 a0); -extern void func_8016FA00(s32 a0); -extern s32 func_80171C64(s32 a0, s32 a1); -extern void (*D_8018E9E8[])(void); -extern void func_8016FA84(void *a0); -extern void func_8016FB10(void *a0); -extern void func_8016FAC0(u8 *a0); -extern void func_8016FB50(void *a0); -extern void (*D_8018E9F4[])(void); -extern void func_8016FB7C(void *a0); -extern void func_8016FC24(); -extern void func_8016FBB8(s32 a0); -extern s32 func_80171B4C(s32 a0, s32 a1); -extern void func_8016FC24(s32 a0); -extern void func_8016FC64(void *a0); -extern void (*D_8018EA00[])(void); -extern void func_8016FC90(void *a0); -extern void func_8016FD08(u8 *a0); -extern void func_8016FCCC(u8 *a0); -extern s32 func_80172658(s32 *a0); -extern void func_8016FD08(u8 *s0); -extern void func_8016FD7C(s32 *a0); -extern void (*D_8018EA0C[])(void); -extern void func_8016FDB4(void *a0); -extern void func_8016FE2C(u8 *a0); -extern void func_8016FDF0(u8 *a0); -extern void func_8016FE2C(u8 * a0); -extern s32 func_8016FE78(s32 *a0); -extern s32 func_80172664(s32 *a0); -extern void func_8016FED0(s32 *a0); -extern void (*D_8018EA1C[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_8018EA2C[])(void); -extern void func_8016FFDC(void *a0); -extern void func_80170068(u8 *a0); -extern void func_80170018(u8 *a0); -extern void func_801700B8(u8 *a0); -extern void func_80170100(u8 *a0); -extern void (*D_8018EA34[])(void); -extern void func_80170150(void *a0); -extern void func_801701C8(u8 *a0); -extern void func_8017018C(u8 *a0); -extern void func_801701C8(u8 * a0); -extern void (*D_8018EA3C[])(void); -extern void func_80170240(void *a0); -extern void func_801702B8(s32 a0); -extern void func_8017027C(u8 *a0); -extern s16 func_80171AB0(s32 a0, void *a1); -extern void (*D_8018EA44[])(void); -extern void func_801702FC(void *a0); -extern void func_80170374(u8 *a0); -extern void func_80170338(u8 *a0); -extern s32 func_8014C168(s32 *a0, s32 a1); -extern void func_80170374(u8 * a0); -extern void (*D_8018EA4C[])(void); -extern void func_801703E0(void *a0); -extern void func_8017044C(u8 *a0); -extern void func_8017041C(u8 *a0); -extern void func_8017044C(u8 * a0); -extern void (*D_8018EA54[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_8018EA5C[])(void); -extern void func_80170548(void *a0); -extern void func_801705C0(u8 *a0); -extern void func_80170584(u8 *a0); -extern void func_801705C0(u8 * a0); -extern void (*D_8018EA64[])(void); -extern void func_801705F8(void *a0); -extern void func_80170670(void *a0); -extern void func_80170634(u8 *a0); -extern void func_8012A568(void (*a0)(void)); -extern void (*D_8018EA6C[])(void); -extern void func_801706AC(void *a0); -extern void func_80170718(void *a0); -extern void func_801706E8(u8 *a0); -extern void func_80129FF4(void); -extern void (*D_8018EA74[])(void); -extern void func_80170748(void *a0); -extern void func_801707D4(void *a0); -extern void func_80170784(u8 *a0); -extern s32 func_80174ED4(void); -extern void (*D_8018EA7C[])(void); -extern void func_80170810(void *a0); -extern void func_801708B0(void *a0); -extern u8 D_800D5DA8; -extern void func_8017084C(s32 a0); -extern u8 D_800D5A34[]; -extern void func_80170AD8(void *a0); -extern void func_80171904(s32 a0); -extern void func_80170B48(int a0); -extern void func_80170928(void); -extern u8 D_800D59EC[]; -extern void func_80170970(void); -extern u8 D_800D599C[]; -extern void func_801709B8(void); -extern u8 D_800D5934[]; -extern void func_80170A00(void); -extern void func_80170A48(void); -extern u8 D_800D5DC0[]; -extern void func_80170A90(void); -extern void (*D_8018EA84[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_8018EA8C[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8018EA94[])(void); -extern void func_80170C74(void *a0); -extern s32 func_8017197C(u8 *a0); -extern void func_80170CF0(void *a0); -extern void func_80170CB0(u8 *a0); -extern void (*D_8018EA9C[])(void); -extern void func_80170D68(void *a0); -extern void func_80170DE0(u8 *a0); -extern void func_80170DA4(u8 *a0); -extern s32 D_8011F73C; -extern s32 D_8011F740; -extern void func_801718AC(void *a0); -extern void func_80170DE0(u8 * _arg0); -extern void (*D_8018EAA4[])(void); -extern void func_80170E34(void *a0); -extern void func_80170EAC(u8 *a0); -extern void func_80170E70(u8 *a0); -extern int func_800D0F8C(int a0); -extern void func_80170EAC(u8 * _arg0); -extern void (*D_8018EAAC[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8018EAB4[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_8018EABC[])(void); -extern void func_80171064(void *a0); -extern void func_801710DC(u8 *a0); -extern void func_801710A0(u8 *a0); -extern u16 D_8011F73A; -extern void func_801710DC(u8 * arg0); -extern void (*D_8018EAC4[])(void); -extern void func_80171120(void *a0); -extern void func_8017118C(u8 *a0); -extern void func_8017115C(u8 *a0); -extern void func_80142454(s32 a0); -extern void func_8017118C(u8 * a0); -extern void (*D_8018EACC[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8018EAD4[])(void); -extern void func_80171260(void *a0); -extern s32 func_80012F74(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80171384(void *a0); -extern void (*D_8018EADC[])(void); -extern void func_801714E4(void *a0); -extern void func_8017162C(void *a0); -extern void func_80171520(s32 a0); -extern s32 func_801716AC(s32 a0, void *a1, s32 *a2); -extern s32 func_80012FC8(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_800A5E94; -extern u8 D_800A5E95; -extern u8 D_800A5E96; -extern s32 func_801716AC(s32 a0, void * a1, s32 * a2); -extern int func_800D0FE0(int a0); -extern void func_801717A0(void *a0); -extern void func_8013E588(void *a0); -extern void func_801717F4(void *a0); -extern void func_80171824(void *a0); -extern void func_80171854(void *a0); -extern void func_80171884(void); -extern void func_80171A1C(u8 *a0); -extern void func_80171928(void * a0); -extern void func_8017196C(s32 *a0, s8 a1); -extern void func_80171A04(s32 *a0); -extern void func_80171A10(s32 *a0); -extern void func_80171A34(s32 *a0, s8 a1); -extern s32 func_80171A44(u8 *a0); -extern s32 func_80171A58(u8 *a0); -extern s32 func_80171A6C(u8 *a0); -extern void func_80171A80(s32 *a0, s32 a1); -extern s32 func_80171A88(s32 a0); -extern s16 func_80171AB0(s32 param_1, void * _arg1); -extern void func_80171B10(void *a0); -extern void func_80171EC8(s32 a0); -extern s32 func_80171C64(s32 param_1, s32 param_2); -extern s32 func_80171D78(s32 a0, s32 a1); -extern int func_8017250C(short *a0, short *a1); -extern s32 func_80171CC4(void * a0, void * a1); -extern s32 func_80171FFC(short *a0, short *a1, s32 a2); -extern s32 func_80171D1C(void * a0, void * a1, s32 a2); -extern s32 func_8017248C(s32 a0, s32 a1); -extern s32 func_80171E08(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_80047948(s32 a0); -extern s32 func_8004787C(s32 a0); -extern void func_80172170(s32 a0, s32 a1); -extern s32 func_8017209C(void *arg0, void *arg1, s32 arg2, s32 arg3); -extern void func_801722CC(s32 *a0); -extern void func_80172304(s32 *a0); -extern void func_80172310(u8 *a0); -extern void func_801723C4(s32 param_1, s32 param_2); -extern void func_80161C24(s32, s32); -extern void func_80172414(s32 a0); -extern s32 func_801724EC(s32 a0); -extern s32 func_8017248C(s32 arg0, s32 arg1); -extern s32 func_80013450(s32); -extern s32 func_80172560(u8 *a0, u8 *a1); -extern s32 func_8017261C(u8 *a0); -extern s32 func_80172644(u8 *a0); -extern s32 func_80172670(s32 *a0); -extern s32 func_80172688(s32 *a0); -extern s32 func_80172694(s32 *a0); -extern s32 func_801726A0(s32 *a0); -extern s32 func_801726AC(s32 *a0); -extern s32 func_801726B8(s32 *a0); -extern s32 func_801726C4(s32 *a0); -extern s32 func_80172760(s32 a0); -extern s32 func_80174650(s32); -extern void (*D_80127088)(void); -extern s32 D_801270BC; -extern s16 D_80126B0C; -extern void func_801726D0(void * _arg0); -extern void func_80172710(void); -extern void func_80174684(void *); -extern void func_80172738(void); -extern s16 D_80126B30; -extern s32 func_801727D0(void *a0); -extern void func_80172780(void *a0); -extern void func_80172844(u8 *a0); -extern void func_8017280C(u8 *a0); -extern void func_8017288C(void); -extern s32 func_801728E4(void *a0); -extern void func_80172894(void *a0); -extern void func_80172958(u8 *a0); -extern void func_80172920(u8 *a0); -extern s16 D_80126B36; -extern void func_80172958(u8 * a0); -extern void func_801729A8(void); -extern s32 func_801729F0(void *a0); -extern s16 D_80126B34; -extern s16 D_80126B32; -extern void func_801729B0(s32 a0); -extern void func_80172A8C(void *a0); -extern void func_80172A2C(int param_1); -extern void func_80172ACC(u8 *a0); -extern void func_80172B0C(void); -extern s32 func_80172B44(void *a0); -extern void func_80172B14(s16 a0); -extern s32 D_801150F8; -extern void func_80172BC8(void *a0); -extern void func_80172B80(u8 *a0); -extern void func_80172C48(void); -extern void (*D_8018EB20[])(void); -extern void func_80172CA0(void *a0); -extern void func_80172D14(u8 *a0); -extern void func_80172CDC(u8 *a0); -extern void func_80172D14(u8 * a0); -extern void func_80172D60(void); -extern s32 D_80127508; -extern s32 func_80172DAC(void *a0); -extern void func_80172D68(s32 a0); -extern void func_80172E20(u8 *a0); -extern void func_80172DE8(u8 *a0); -extern void func_80172E20(u8 * a0); -extern void func_80172E8C(void); -extern void func_8017303C(void *); -extern void func_80172E94(void); -extern void func_80172ED4(void); -extern void func_80172EFC(void); -extern void func_80172F24(void); -extern u8 D_800D47F4[]; -extern void func_80172F4C(void); -extern void func_80172F9C(void); -extern u8 D_800D5C6C[]; -extern void func_80172FEC(void); -extern s32 func_80173078(void *a0); -extern void func_8017303C(void * a0); -extern void func_801730FC(struct S801730FC *a0); -extern void func_801730B4(s32 a0); -extern void func_8017316C(void); -extern s32 func_8017319C(void *a0); -extern void func_80173174(void); -extern u8 D_800D5AA0[]; -extern void func_80173220(void *a0); -extern void func_801731D8(s32 *a0); -extern M2C_UNK D_8018EAE4; -extern void func_80173220(void * arg0); -extern void func_80173294(void); -extern void func_801732C4(); -extern void func_8017329C(void); -extern void func_801732C4(s32 *a0); -extern void func_8017331C(); -extern void func_801732F4(void); -extern void func_8017331C(s32 *a0); -extern void func_80173374(); -extern void func_8017334C(void); -extern void func_80173374(s32 *a0); -extern void func_801733A4(void); -extern void func_801733CC(s32 a0); -extern void func_801734BC(s32 a0, s32 a1); -extern s16 D_80126B3E; -extern void func_80173460(s32 a0, s32 a1); -extern void func_801734BC(s32 arg0, s32 _unused1); -extern void (*D_8018EB50[])(void); -extern void func_80173544(void *a0); -extern void func_801735B8(u8 *a0); -extern void func_80173580(u8 *a0); -extern s16 D_80126B40; -extern void func_801735EC(void *a0); -extern void func_80173648(u8 *a0); -extern void func_801736A8(void); -extern s32 func_8014C118(void *a0, s32 a1, s32 a2); -extern s32 func_801736FC(void *a0); -extern void func_801736B0(s32 a0, s32 a1); -extern void func_80173770(u8 *a0); -extern void func_80173738(u8 *a0); -extern void func_801723C4(s32 a0, s32 a1); -extern void func_801737B0(void); -extern s32 func_801737E8(void *a0); -extern void func_801737B8(s16 a0); -extern void func_8017385C(u8 *a0); -extern void func_80173824(u8 *a0); -extern void func_801738D4(void); -extern s32 func_8017390C(void *a0); -extern void func_801738DC(s16 a0); -extern void func_80173980(u8 *a0); -extern void func_80173948(u8 *a0); -extern void func_801739D8(u8 *a0); -extern void func_80173A20(void); -extern s32 D_8012750C; -extern void func_80173A60(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80173A28(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void (*D_8018EB8C[])(void); -extern void func_80173B4C(void *a0); -extern void func_80173BC0(u8 *a0); -extern void func_80173B88(u8 *a0); -extern void func_80173C64(u8 *a0); -extern void func_80173E1C(s32 a0); -extern s16 D_80126938; -extern s16 D_80126B3A; -extern void func_800D128C(s32, s32); -extern void func_80174158(s32 a0); -extern void func_8002A088(s32); -extern void func_8002A2D4(s32); -extern void func_8002A544(s32); -extern void func_8002A7B4(s32); -extern s32 func_80174188(s32 a0); -extern void func_801741A8(s32 a0); -extern s32 func_800D0EC4(void); -extern void func_800D0F0C(s32, s32); -extern void func_80145EE8(s32); -extern void func_80173EF8(void *param_1); -extern s32 func_8014BCEC(s32, s32); -extern void func_801741A8(s32 _arg0); -extern s16 D_80126B3C; -extern s16 D_8011F9C8; -extern void func_801741EC(u8 *a0); -extern void func_80174274(void); -extern s32 func_801742A4(void *a0); -extern void func_8017427C(void); -extern void func_80174318(u8 *a0); -extern void func_801742E0(u8 *a0); -extern void func_80174354(void); -extern s32 func_80174384(void *a0); -extern void func_8017435C(void); -extern void func_801743F0(u8 *a0); -extern void func_801743C0(u8 *a0); -extern void func_801743F0(u8 * a0); -extern void func_80174430(void); -extern s32 func_80174474(void *a0); -extern void func_80174438(s32 a0); -extern void func_801744E0(u8 *a0); -extern void func_801744B0(u8 *a0); -extern void func_80174524(void); -extern void func_80174554(); -extern void func_8017452C(void); -extern void func_80174554(s32 arg0); -extern void func_801745AC(); -extern void func_80174584(void); -extern void func_801745AC(s32 *a0); -extern void func_80174604(void); -extern void func_801745DC(void); -extern void func_80174630(void); -extern s32 func_80174650(s32 _arg0); -extern void func_80174674(void); -extern void func_801746A4(void); -extern s32 func_800CF8CC(void); -extern void func_80174714(void); -extern s32 func_80174754(void); -extern s16 func_80174764(void); -extern s16 func_80174774(void); -extern s32 func_801747CC(void *a0); -extern void func_80174784(void); -extern s32 func_801747AC(s32 a0); -extern s32 func_80174808(u8 *a0); -extern void func_8017481C(void); -extern s32 func_80174888(void *a0); -extern void func_80174824(void); -extern void func_8017484C(s32 a0); -extern void func_801748C4(s32 a0); -extern void func_801748E4(void); -extern void func_8012A018(s32 a, s32 b); -extern s32 func_8017496C(void *a0); -extern s32 D_80126954; -extern s32 D_80126950; -extern s32 D_8012695C; -extern s16 D_80126968; -extern s16 D_8012696A; -extern s16 D_8012696C; -extern s16 D_80126976; -extern s16 D_80126978; -extern s16 D_8012697A; -extern void func_801748EC(void); -extern s32 func_801749C8(); -extern s32 func_801749A8(s32 a0); -extern void func_80174BBC(void *a0); -extern void func_8012A0E0(void); -extern void func_80174BF4(void *a0); -extern void (*D_8018EBE4[])(); -extern void func_80174BF4(void * arg0); -extern s32 func_80174CB0(s32, s32); -extern s32 func_80174C60(s32 a0); -extern void func_80174C80(s32 a0); -extern s32 D_8012697C; -extern u16 D_80126980; -extern s32 func_80174F28(void *a0); -extern void func_80174E9C(s32 a0); -extern void func_80174EF0(s32 a0, s16 a1); -extern s32 func_80175014(u8 *a0, u8 *a1, s32 a2); -extern void func_80174F64(u8 *a0); -extern void func_80174FBC(u8 *a0); -extern s32 func_8017509C(u8 *a0, s32 a1, u8 *a2, u8 *a3); -extern void func_80175184(s32 *a0); -extern void func_80175114(s32 *a0); -extern void func_80175184(); -extern void func_80175150(s32 *a0); -extern void (*D_8018EBF4[])(void*); -extern s32 func_80175268(s32); -extern void func_80175184(s32* arg0); -extern s32 func_80175218(void *a0); -extern void func_801751D8(void *a0); -extern void (*D_8018EBFC[])(s32); -extern s32 func_80175218(void * param_1); -extern void func_801752BC(s32 *a0); -extern u8 D_8011F7A8; -extern u8 D_8011F7A9; -extern u8 D_8011F7AD; -extern u8 D_8011F7AE; -extern void func_80175414(s32 _arg0); -extern void func_80175494(void); -extern void (*D_8018ED64[])(); -extern s32 func_801758FC(void); -extern s32 func_80175820(void); -extern s32 func_801759D8(void); -extern void func_8017553C(s32 *param); -extern void func_801757A0(s32 a0); -extern short D_800B9A02; -extern void func_80175590(void *arg0); -extern s16 D_800B9A02; -extern void func_801757A0(s32); -extern void func_80175624(void *a0); -extern void func_801757E0(int); -extern void func_80175668(void); -extern void (*D_8018ED70[])(); -extern void func_80175690(s32 *param); -extern void func_80175DA8(s32 a0); -extern void func_80175AB8(s32 a0); -extern void func_80176144(s32 a0); -extern void func_801756E4(s32 arg0); -extern void func_80175798(void); -extern void func_80176734(s32 a0); -extern void func_80176218(s32 a0); -extern void func_80176D00(s32 a0); -extern void func_801757E0(s32 a0); -extern s32 func_80178004(s32 a0, s32 a1, s32 a2); -extern u8 D_8011F7B1; -extern u16 D_8011F7B4; -extern u16 D_8011F7B6; -extern s16 D_8011F81E; -extern void *func_80177784(void *a0, s32 a1, s32 a2, s32 a3); -extern u32 func_801783D0(s32 a0, s32 a1); -extern void *func_801777BC(void *a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern u16 D_8011F82C; -extern u16 D_8011F82A; -extern u32 * func_80176D94(void *param_1, u32 param_2, s16 param_3_); -extern void func_801778A8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80176FF4(s32 a0); -extern u16 D_8011F830; -extern u16 D_8011F82E; -extern u32 * func_801770E0(void *param_1, u32 param_2, s16 param_3_); -extern void func_80177340(s32 a0); -extern u8 D_8011F837; -extern u8 D_8011F7F0; -extern u8 D_8011F7AB; -extern u32 * func_8017742C(u32 *param_1, s32 param_2, s32 param_3); -extern void func_801776EC(u8 *a0); -extern void * func_80177784(void *a0, s32 a1, s32 a2, s32 a3); -extern uint * func_80177EA4(uint *param_1, int param_2, uint param_3, int param_4); -extern void func_80177F84(s32 param_1, s32 param_2); -extern u32 * func_80178298(u32 *param_1, u8 *param_2, short param_3, short param_4); -extern M2C_UNK D_801E9014; -extern void func_80178438(u16 *arg0); -extern void func_801787D4(void); -extern void func_8012A908(void); -extern void func_8017869C(s32 a0); -extern void func_80130D0C(s32 a0); -extern void func_8013E370(void); -extern s32 D_8011DB08; -extern void func_8017849C(void); -extern void func_8013E4B4(void); -extern s16 D_801270C4; -extern s32 D_801274D8; -extern s16 D_801270C2; -extern u8 D_801270C6; -extern u8 D_801270C7; -extern s32 D_801274DC; -extern s32 D_801274E0; -extern void func_80178608(void); -extern void func_80178744(s32 a0, s32 a1); -extern void func_80178840(); -extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern s32 func_801788B8(s32 arg0, s32 arg1); -extern s32 func_801789AC(s32 arg0); -extern s16 D_801EAFC8; -extern int func_80178970(void); -extern s32 func_80178B18(s32 param_1, s32 param_2); -extern s32 func_80178B70(s32 param_1, s32 param_2); -extern void func_80178BB8(s32 a0, s32 a1); -extern s32 func_80178BF8(); -extern s32 D_801EA388; -extern short D_801EB03C; -extern void func_80178CBC(s32 arg0, s32 arg1); -extern void func_80178D18(void); -extern s32 func_80178D40(s32 arg0, s32 arg1); -extern void func_80179B28(s32 a0); -extern void func_80179B74(u16 *p); -extern void func_80179D30(u16 *a0); -extern void func_80179D78(u16 *a0); -extern void func_80179B74(u16 *p); -extern void func_80179DCC(short a0); -extern void func_80179DF8(void); -extern void func_80179E1C(short a0); -extern void func_80179E48(s16 a0); -extern void func_80179E74(s16 a0); -extern void func_80179EA0(u16 *a0); -extern void func_80179B74(u16 *p); -extern void func_80179EE8(short a0); -extern void func_80179F14(s16 a0, s16 a1); -extern void func_80179F44(void); -extern void func_80179F6C(short a0); -extern void func_80179F98(u16 *a0); -extern void func_80179FEC(u16 *a0); -extern void func_8017A040(u16 *a0); -extern s32 D_801EA7B4; -extern void func_8017A094(s32 arg0); -extern void func_8017A0C4(s32 arg0); -extern void func_8017A0F4(void); -extern void func_8017A11C(void); -extern s32 D_801EA7DC; -extern void func_8017A144(s32 a0); -extern void func_8017A180(void); -extern void func_8017A1A8(void); -extern void func_8017A1D0(void); -extern void func_8017A1F8(void); -extern void func_8017A220(void); -extern void func_8017A248(void); -extern void func_8017A270(void); -extern void func_8017A298(void); -extern void func_8017A2C0(void); -extern void func_8017A2E8(void); -extern void func_8017A310(void); -extern void func_8017A338(void); -extern void func_8017A360(void); -extern void func_8017A388(void); -extern s16 D_801EA798; -extern s32 func_8017A3B0(void); -extern void func_80172310(u8*); -extern void func_80172780(void*); -extern void func_80172894(void*); -extern void func_801729B0(s32); -extern void func_80172B14(s16); -extern void func_80172C50(u16 *); -extern void func_80172D68(s32); -extern void func_801733FC(s16, u16 *); -extern void func_80173460(s32, s32); -extern void func_801734BC(s32, s32); -extern void func_801736B0(s32, s32); -extern void func_801737B8(s16); -extern void func_801738DC(s16); -extern void func_80173A28(s32, s32, s32, s32, s32, s32); -extern void func_80174438(s32); -extern void func_8017A4AC(void); -extern s32 func_8017AD0C(s32 arg0); -extern s32 func_8017AD0C(s32); -extern s32 func_8017ADE8(s32 a0); -extern s32 func_8017AE08(void); -/* ==== end §8b carried decl layer ==== */ - - -extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); -extern void func_8012B178(s32 a0, s32 a1); -extern void func_8012AD80(s32 a0); -extern s32 func_8012B030(u8 *a0); -extern s32 func_8012B744(void *a0, void *a1); -extern s32 func_8012BE98(s32 a0, u16 *a1); -extern s32 func_80012A60(s32 a0, s32 a1); - -extern s16 D_801EAF98; -extern s16 D_801EAF9A; -extern s16 D_801EAFA4; - -void func_8017AE2C(s32 param_1) { - register s32 pv __asm__("$16") = param_1; - register s16 *g __asm__("$17") = &D_801EAF98; - - switch (g[0]) { - case 0: - default: - return; - case 1: - g[1] = (u16)g[1] - 1; - if (g[1] <= 0) { - *(u16 *)(*(s32 *)(pv + 0x20) + 0x12) = (u16)g[2]; - goto reset_both; - } - { - s32 r = func_8012B608(*(s16 *)(*(s32 *)(pv + 0x20) + 0x12), g[2], 6); - *(u16 *)(*(s32 *)(pv + 0x20) + 0x12) = - *(u16 *)(*(s32 *)(pv + 0x20) + 0x12) + r; - } - return; - case 2: - func_8012B178(pv, (s32)g[4] << 8); - func_8012AD80(pv); - *(u16 *)(pv + 0xA) -= 8; - func_8012B030((u8 *)pv); - break; - case 3: - if (g[1] != 0) { - if (g[5] != 0) { - void *p = (void *)(pv + 4); - if ((s16)func_80012A60(*(s16 *)(*(s32 *)(pv + 0x20) + 0x12), - (s16)func_8012B744(p, &g[6])) < 0x100) { - g[1] = 0; - } - *(s16 *)(*(s32 *)(pv + 0x20) + 0x12) = - func_8012B744(p, &D_801EAFA4); - func_8012B178(pv, 0xFFFA0000); - func_8012AD80(pv); - *(u16 *)(pv + 0xA) -= 8; - func_8012B030((u8 *)pv); - /* &D_801EAF98+0xC == &D_801EAFA4; distinct rtx defeats gcc's address-CSE - so BE98's arg rematerializes instead of sharing the store's reg (byte-gate). */ - if (func_8012BE98(pv, (u16 *)((s32)&D_801EAF98 + 0xC)) < 0x101) { - D_801EAF98 = 0; - D_801EAF9A = 0; - } - } - { - s32 t = func_8012B744((void *)(pv + 4), &g[6]); - s32 r = func_8012B608(*(s16 *)(*(s32 *)(pv + 0x20) + 0x12), t, g[3]); - *(u16 *)(*(s32 *)(pv + 0x20) + 0x12) = - *(u16 *)(*(s32 *)(pv + 0x20) + 0x12) + r; - } - g[1] = (u16)g[1] - 1; - if (g[1] > 0) { - return; - } - g[1] = 0; - return; - } - *(s16 *)(*(s32 *)(pv + 0x20) + 0x12) = - func_8012B744((void *)(pv + 4), &D_801EAFA4); - func_8012B178(pv, 0xFFFA0000); - func_8012AD80(pv); - *(u16 *)(pv + 0xA) -= 8; - func_8012B030((u8 *)pv); - /* see note above: distinct rtx for the same address defeats address-CSE. */ - if (func_8012BE98(pv, (u16 *)((s32)&D_801EAF98 + 0xC)) < 0x101) { - D_801EAF98 = 0; - D_801EAF9A = 0; - } - return; - case 4: - func_8012AD80(pv); - } - g[1] = (u16)g[1] - 1; - if (g[1] > 0) { - return; - } -reset_both: - g[0] = 0; - g[1] = 0; - return; -} - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801EA814; - extern s16 D_801EA816; - extern s16 D_801EA818; - extern s16 D_801EA80C; - extern s16 D_801EA80E; - extern s16 D_801EA810; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801EA814, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801EA816, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801EA818, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801EA80C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801EA80E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801EA810, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801EA79C; -extern u16 D_801EA81C; -extern u16 D_801EA81E; -extern u16 D_801EA820; -extern s16 D_801EAFC8; - -void func_8017B1D8(void) { - func_8012A418(); - D_801EAFC8 = 0; - D_801EA79C = 0; - D_801EA81C = D_80126B5E; - D_801EA81E = D_80126B62; - D_801EA820 = D_80126B66; -} - - -// @class: regalloc-order — simplified sibling of matched func_8017B614. -// @stuck: none. Block-moves are align-1 struct-assigns (u8[8]) -> emit_block_move -// (unaligned lwl/lwr/swl/swr), ZERO memcpy-symbol reference, so the TU's `extern memcpy` -// (which turned the old draft's memcpy into a CALL -> DIFF 64) can't drift this. -// $16 pin + in-place re-tie keeps param_2 in $a1 until the >=0xB branch, then $s0 for loads. - - -s32 func_8017B238(s32 param_1, s32 param_2) -{ - extern void func_8012F214(s32 a0, s32 a1, s32 a2); - extern s32 func_8017BE60(void *a0); - extern u8 D_8018EEAC[]; - extern s16 D_801EA814; - extern s16 D_801EA80C; - extern u8 D_8012694C; - - - u8 buf[16]; - - if (((u32)param_2) >= 0xB) { - register u8 *src __asm__("$16"); - __asm__ __volatile__("" : "=r"(src) : "0"((u8 *)((u32)param_2))); - *(Blk8_8017B238_8017B238 *)&buf[0] = *(Blk8_8017B238_8017B238 *)src; - *(Blk8_8017B238_8017B238 *)&buf[8] = *(Blk8_8017B238_8017B238 *)(src + 8); - } else { - s32 a1addr = (s32)&D_8018EEAC[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018EEAC[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801EA814; - s16 *p78C = &D_801EA80C; - *(Blk8_8017B238_8017B238 *)p794 = *(Blk8_8017B238_8017B238 *)&buf[0]; - *(Blk8_8017B238_8017B238 *)p78C = *(Blk8_8017B238_8017B238 *)&buf[8]; - func_8012A018((s32)func_8017BE60, 0); - D_8012694C = 0; - D_801EAFC8 = 1; - D_801EA79C = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - - /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ - /* 16-byte stride array element */ - - - -s32 func_8017B368(s32 param) -{ - extern void func_8017BA3C(s32 param_1, s32 param_2); - extern void func_8012F214(s32 a0, s32 a1, s32 a2); - extern SV4_8017B368 D_801EA7BC; - extern SV4_8017B368 D_801EA7C4; - extern s16 D_801EA814; - extern s16 D_801EA80C; - extern u16 D_8018EEAC; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801EA7BC; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801EA7C4; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_8018EEAC)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_8018EEAC)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801EA814) = loc0; - (*(SV4_8017B368 *)&D_801EA80C) = loc1; - D_801EAFC8 = 1; - D_801EA79C = 0; -} - - - - - -s32 func_8017B490(s32 param) -{ - extern void func_8017BA3C(s32 param_1, s32 param_2); - extern void func_8012F214(s32 a0, s32 a1, s32 a2); - extern SV4_8017B368 D_801EA7BC; - extern SV4_8017B368 D_801EA7C4; - extern s16 D_801EA814; - extern s16 D_801EA80C; - extern u16 D_8018EEAC; - extern s16 D_801EA79C; - extern s16 D_801EAFC8; - extern s32 D_80126984; - extern s32 D_80126988; - extern s32 D_8012698C; - extern s32 D_80126990; - extern s32 D_80126994; - extern s32 D_80126998; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801EA7BC; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801EA7C4; - } else { - s32 ax = (s32)&((Pair16 *)&D_8018EEAC)[n].x; - s32 ay = (s32)&((Pair16 *)&D_8018EEAC)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801EA814) = loc0; - (*(SV4_8017B368 *)&D_801EA80C) = loc1; - D_801EAFC8 = 1; - D_801EA79C = 0x1E; - D_80126990 = (*(SV4_8017B368 *)&D_801EA814).a; - D_80126994 = (*(SV4_8017B368 *)&D_801EA814).b; - D_80126998 = (*(SV4_8017B368 *)&D_801EA814).c; - D_80126984 = (*(SV4_8017B368 *)&D_801EA80C).a; - D_80126988 = (*(SV4_8017B368 *)&D_801EA80C).b; - D_8012698C = (*(SV4_8017B368 *)&D_801EA80C).c; -} - - -// @class: regalloc-order + T1 memcpy-builtin→call re-crack -// @stuck: 0 (iso). Register lever = $16 pin + in-place re-tie on the memcpy-branch src (keeps -// param_2 in $a1 until the branch, then $s0 for the loads). Block-moves are align-1 struct-assigns -// (u8[8]) so they lower via emit_block_move (movstrsi/move_by_pieces) with ZERO memcpy-symbol -// reference — TU-independent, so the sibling TU's `extern memcpy` (which disables the builtin and -// turned the old inlined block-move into a CALL) can no longer drift this. - - - - -s32 func_8017B614(s32 param_1, s32 param_2) -{ - extern void func_8012F214(s32 a0, s32 a1, s32 a2); - extern void func_80129CF8(void); - extern s32 func_8017BE60(void *a0); - extern u8 D_8018EEAC[]; - extern s16 D_801EA814; - extern s16 D_801EA816; - extern s16 D_801EA818; - extern s16 D_801EA80C; - extern s16 D_801EA80E; - extern s16 D_801EA810; - extern u8 D_8012694C; - extern s32 D_80126998; - extern s32 D_80126984; - extern s32 D_80126988; - extern s32 D_8012698C; - - u8 buf[16]; - - if (((u32)param_2) >= 0xB) { - register u8 *src __asm__("$16"); - __asm__ __volatile__("" : "=r"(src) : "0"((u8 *)((u32)param_2))); - *(Blk8_8017B614 *)&buf[0] = *(Blk8_8017B614 *)src; - *(Blk8_8017B614 *)&buf[8] = *(Blk8_8017B614 *)(src + 8); - } else { - s32 a1addr = (s32)&D_8018EEAC[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018EEAC[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801EA814; - s16 *p78C = &D_801EA80C; - *(Blk8_8017B614 *)p794 = *(Blk8_8017B614 *)&buf[0]; - *(Blk8_8017B614 *)p78C = *(Blk8_8017B614 *)&buf[8]; - ((void(*)(s32, s32))func_8012A018)((s32)func_8017BE60, 0); - { - s32 v794, v796, v798, v78C, v78E, v790; - D_8012694C = 0; - v794 = *p794; - v796 = D_801EA816; - v798 = D_801EA818; - v78C = *p78C; - v78E = D_801EA80E; - v790 = D_801EA810; - __asm__ __volatile__(""); - D_801EAFC8 = 1; - D_801EA79C = 0x1E; - D_80126990 = v794; - D_80126994 = v796; - D_80126998 = v798; - D_80126984 = v78C; - D_80126988 = v78E; - D_8012698C = v790; - } - func_80129CF8(); - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH - -extern s32 D_80114F30; -extern s32 D_80114F34; -extern s32 D_80114F38; -extern s32 D_80114F24; -extern s32 D_80114F28; -extern s32 D_80114F2C; - -extern u8 D_8012694C; -extern s16 D_801EA79C; -extern s16 D_801EA814; -extern s16 D_801EA816; -extern s16 D_801EA818; -extern s16 D_801EA80C; -extern s16 D_801EA80E; -extern s16 D_801EA810; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801EA79C = 0; - D_801EA814 = (s16) D_80114F30; - D_801EA816 = (s16) D_80114F34; - D_801EA818 = (s16) D_80114F38; - D_801EA80C = (s16) D_80114F24; - D_801EA80E = (s16) D_80114F28; - D_801EA810 = (s16) D_80114F2C; -} - - - - -extern s16 D_801EA82C; -extern s16 D_801EA82E; -extern s16 D_801EA830; -extern s16 D_801EA834; -extern s16 D_801EA836; -extern s16 D_801EA838; - -void func_8017B824(void) { - /* [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_801151D4; - D_801EA82C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801EA82E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801EA830 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801EA834 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801EA836 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801EA838 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801EA82C; -extern s16 D_801EA82E; -extern s16 D_801EA830; -extern s16 D_801EA834; -extern s16 D_801EA836; -extern s16 D_801EA838; - -extern s32 D_80114F30; -extern s32 D_80114F34; -extern s32 D_80114F38; -extern s32 D_80114F24; -extern s32 D_80114F28; -extern s32 D_80114F2C; - -void func_8017B880(void) -{ - D_80114F30 = D_801EA82C; - D_80114F34 = D_801EA82E; - D_80114F38 = D_801EA830; - D_80114F24 = D_801EA834; - D_80114F28 = D_801EA836; - D_80114F2C = D_801EA838; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801EA814), src[8..15] -> (*(S8_8017B8E8 *)&D_801EA80C) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801EA814) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801EA80C) = ((S8_8017B8E8 *)src)[1]; -} - - - - -// @class: struct -// @stuck: none — MATCH (63 ins) - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern u16 D_801EA81C; -extern u16 D_801EA81E; -extern u16 D_801EA820; - -extern s32 D_80114F30; -extern s32 D_80114F34; -extern s32 D_80114F38; -extern s32 D_80114F24; -extern s32 D_80114F28; -extern s32 D_80114F2C; - -extern u8 D_8012694C; -extern s16 D_801EA79C; -extern short D_801EA824; -extern short D_801EA826; -extern short D_801EA828; -extern s16 D_801EA814; -extern s16 D_801EA816; -extern s16 D_801EA818; -extern s16 D_801EA80C; -extern s16 D_801EA80E; -extern s16 D_801EA810; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801EA81C); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801EA81E); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801EA820); - (*(s16 *)&D_801EA824) = buf[0]; - (*(s16 *)&D_801EA826) = buf[1]; - (*(s16 *)&D_801EA828) = buf[2]; - D_801EA814 = D_80114F30 + buf[0]; - D_801EA79C = 0; - D_801EA816 = D_80114F34 + buf[1]; - D_801EA818 = D_80114F38 + buf[2]; - D_801EA80C = D_80114F24 + buf[0]; - D_801EA80E = D_80114F28 + buf[1]; - D_801EA810 = D_80114F2C + buf[2]; -} - - - -// @class: struct -// @stuck: none — MATCH (62 ins) - -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void RotTransSV(void *a0, void *a1, void *a2); - -/* short-only (align 2) struct -> the 8-byte struct copy emits lwl/lwr/swl/swr */ - -/* PSX MATRIX_L48: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801EA7BC; -extern SV4 D_801EA7C4; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX_L48, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801EA7C4) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801EA7BC = svec; - - v0.a = -*(s16 *)(param_2 + 0xc); - v0.b = *(u16 *)(param_2 + 8); - v0.c = 0; - v1.a = 0; - v1.b = 0; - v1.c = -*(s16 *)(param_2 + 0xa); - ((void (*)(void *, void *))func_80049CAC)(&v0, &mtx); - - mtx.t[0] = (s32)svec.a; - mtx.t[1] = (s32)svec.b; - mtx.t[2] = (s32)svec.c; - func_8004914C(&mtx); - func_800491AC(&mtx); - - RotTransSV(&v1, &buf1, &buf2); - D_801EA7C4 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX_L48, t[] at sp+0x2c */ - SV4_8017BB34 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4_8017BB34 svec; /* sp+0x40 */ - SV4_8017BB34 buf1; /* sp+0x48 : RotTransSV arg1 (-> (*(SV4_8017BB34*)&D_801EA7C4)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801EA7BC) = svec; - - v0.a = -*(s16 *)(param_2 + 0xc); - v0.b = *(u16 *)(param_2 + 8); - v0.c = 0; - v1.a = 0; - v1.b = 0; - v1.c = -*(s16 *)(param_2 + 0xa); - ((void (*)(void *, void *))func_80049CAC)(&v0, &mtx); - - mtx.t[0] = (s32)svec.a; - mtx.t[1] = (s32)svec.b; - mtx.t[2] = (s32)svec.c; - func_8004914C(&mtx); - func_800491AC(&mtx); - - RotTransSV(&v1, &buf1, &buf2); - (*(SV4_8017BB34*)&D_801EA7C4) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801EA7E4[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801EA7E4; - do { - if (*p != (void (*)(int))0) { - (*p)(param_1); - } - i = i + 1; - p = p + 1; - } while (i < 10); - return; -} - - - - -// @class: plumbing -// @stuck: none — MATCH (expected); short-typed global increment + signed compare, store-2 on overflow - -extern void func_8017B0E4(int, int); -extern s16 D_801EA79C; -extern s16 D_801EAFC8; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801EA79C = D_801EA79C + 1; - if (D_801EA79C >= 0x1F) { - D_801EAFC8 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801EA79C; -extern s16 D_801EAFC8; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801EA79C = D_801EA79C + 1; - if (0x18 < D_801EA79C) { - func_8012A4BC(); - D_801EAFC8 = 0; - } - return; -} - - - - -// @class: regalloc-order -// @stuck: none — MATCH (branch-polarity invert: fn-ptr non-zero call is the fall-through arm) - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -extern s16 D_801EA79C; -extern void (*D_801EA7E0)(void); -extern short D_801EA824; -extern short D_801EA826; -extern short D_801EA828; -extern s16 D_801EAFC8; - -extern s32 D_80114F24; -extern s32 D_80114F28; -extern s32 D_80114F2C; -extern s32 D_80114F30; -extern s32 D_80114F34; -extern s32 D_80114F38; - -void func_8017BD50(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801EA79C = D_801EA79C + 1; - if (D_801EA79C >= 0x19) { - if (D_801EA7E0 != 0) { - (*D_801EA7E0)(); - } else { - D_80114F30 = D_80114F30 + D_801EA824; - D_80114F34 = D_80114F34 + D_801EA826; - D_80114F38 = D_80114F38 + D_801EA828; - D_80114F24 = D_80114F24 + D_801EA824; - D_80114F28 = D_80114F28 + D_801EA826; - D_80114F2C = D_80114F2C + D_801EA828; - func_8012A4BC(); - } - D_801EAFC8 = 0; - } -} - - - -extern void (*D_8018EF4C[])(void); - -void func_8017BE60(void *a0) { - D_8018EF4C[*(u8 *)((s32)a0 + 0x4)](); -} - - -DEFINE_func_8017BE9C() /* dedup: shared engine-core @0x8017BE9C (src/shared) */ - -DEFINE_func_8017BEA4() /* dedup: shared engine-core @0x8017BEA4 (src/shared) */ - -DEFINE_func_8017BEAC() /* dedup: shared engine-core @0x8017BEAC (src/shared) */ - -DEFINE_func_8017BEB4() /* dedup: shared engine-core @0x8017BEB4 (src/shared) */ - - -extern void func_80174684(void *); -extern void func_8017BEE4(void *); - -void func_8017BEBC(void) { - func_80174684((void *)func_8017BEE4); -} - - - -extern void (*D_8018EF58[])(void); - -void func_8017BEE4(void *a0) { - D_8018EF58[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_8017BF20() /* dedup: shared engine-core @0x8017BF20 (src/shared) */ - - - - -extern s32 func_80184794(void); -extern void func_80171A1C(u8 *a0); -extern s32 func_80174650(s32); - -void func_8017BF58(void *a0) { - s32 v0; - - v0 = func_80184794(); - if (v0 != 0) { - func_80171A1C((u8 *)a0); - func_80174650((s32)a0); - } -} - - -DEFINE_func_8017BF98() /* dedup: shared engine-core @0x8017BF98 (src/shared) */ - -DEFINE_func_8017BFA0() /* dedup: shared engine-core @0x8017BFA0 (src/shared) */ - - - - -void aF8017BFC8(void *a0) __asm__("func_8017BFC8"); -void aF8017BFC8(void *a0) -{ - - extern void (*D_8018EF64[])(void); - D_8018EF64[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_8017C004() /* dedup: shared engine-core @0x8017C004 (src/shared) */ - - - - -extern s32 func_8018473C(void); -extern void func_80171A1C(u8 *a0); -extern s32 func_80174650(s32 a0); - -void func_8017C03C(void *a0) { - s32 s0 = (s32)a0; - if (func_8018473C() == 0) { - return; - } - func_80171A1C((u8 *)s0); - func_80174650(s0); -} - - -DEFINE_func_8017C07C() /* dedup: shared engine-core @0x8017C07C (src/shared) */ - -DEFINE_func_8017C084() /* dedup: shared engine-core @0x8017C084 (src/shared) */ - - - -extern void (*D_8018F024[])(void); - -void func_8017C0C8(void *a0) { - D_8018F024[*(u16 *)((s32)a0 + 0x2)](); -} - - - - -DEFINE_func_8017C104() /* dedup: shared engine-core @0x8017C104 (src/shared) */ - - -DEFINE_func_8017C12C() /* dedup: shared engine-core @0x8017C12C (src/shared) */ - - -DEFINE_func_8017C14C() /* dedup: shared engine-core @0x8017C14C (src/shared) */ - - extern SVECTOR_8017C290 D_8018F038[4]; - void func_8017C154(void *a0) - { - s16 buf20[4]; - SVECTOR_8017C290 c; - SVECTOR_8017C290 d; - SVECTOR_8017C290 e; - SVECTOR_8017C290 f; - s32 i, j; - *(s16 *)((u8 *)a0 + 0x10) = *(s32 *)((u8 *)a0 + 0x30); - func_80015978((s32)a0 + 4, (s32 *)buf20); - for (j = 0; j < 4; j++) { - c.vx = 0; - c.vy = 0; - c.vz = 0; - d = c; - e = c; - for (i = 0; i < 4; i++) { - f = D_8018F038[i]; - *(s16 *)((u8 *)a0 + 0x12) = i + j; - func_8017C290((int)a0, buf20, &c, &d, &e, &f, (s16 *)((u8 *)a0 + 0x10)); - } - } - } - - -#include "common.h" - -/* func_8017C290 -- ov_SC03_015, TU ov_SC03_015_jr_8017AE2C.c - * - * §136d cross-overlay sibling-first: byte-identical twin already banked as - * func_8017C290 in src/ov_SC03_014/ov_SC03_014_jr_8017AE2C.c (same TU suffix - * jr_8017AE2C -- these overlays share the same runtime load address, so the - * data symbols D_801EA8C0/D_801EA8E0/D_801EA8E4/D_801EA8E8..EE/D_801EA8F0 and - * D_8018EF70 are identical literal addresses in both). Body reused verbatim: - * the MATRIX_8017C290 / SVECTOR_8017C290 / PW8017C290 (packed, align-1, 4 - * byte) type trio, the gte_ldv0/gte_rt/gte_stsv inline-asm macros, and the - * 7-parameter shape (a, b, c, d, e, f, g) with the same register roles - * (a0=a, a1=b, a2=c, a3=d, stack0x10=e, stack0x14=f, stack0x18=g) confirmed - * instruction-by-instruction against the target .s. - */ - -/* MATRIX 0x20: 3x3 short rotation + pad, t[] at 0x14 */ -/* 8, align 2 -> lwl/lwr/swl/swr struct copy */ -/* 4, align 1 -> lwl/lwr/swl/swr */ - -extern void func_80013F3C(s32 a0); -extern void RotMatrixZ(s32, void *); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern int rand(void); -extern void func_80017714(void *); - -extern struct PW8017C290 D_8018EF70[]; - -#define gte_ldv0(r0) __asm__ __volatile__( \ - "lwc2 $0, 0(%0)\n" \ - "lwc2 $1, 4(%0)\n" \ - : : "r"(r0) : "memory") - -#define gte_rt() __asm__ __volatile__( \ - "nop\n" \ - "nop\n" \ - "mvmva 1, 0, 0, 0, 0\n" \ - : : : "memory") - -#define gte_stsv(r0) __asm__ __volatile__( \ - "mfc2 $12, $9\n" \ - "mfc2 $13, $10\n" \ - "mfc2 $14, $11\n" \ - "sh $12, 0(%0)\n" \ - "sh $13, 2(%0)\n" \ - "sh $14, 4(%0)\n" \ - : : "r"(r0) : "$12", "$13", "$14", "memory") - -void func_8017C290(int a, s16 *b, SVECTOR_8017C290 *c, SVECTOR_8017C290 *d, - SVECTOR_8017C290 *e, SVECTOR_8017C290 *f, s16 *g) -{ - /* [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 SVECTOR_8017C290 D_801EA8C0[4]; - extern struct PW8017C290 D_801EA8E0; - extern struct PW8017C290 D_801EA8E4; - extern u8 D_801EA8E8, D_801EA8E9, D_801EA8EA, D_801EA8EC, D_801EA8ED, D_801EA8EE; - extern int D_801EA8F0; - MATRIX_8017C290 m; - SVECTOR_8017C290 *r0_00; - SVECTOR_8017C290 *pSVar6; - SVECTOR_8017C290 *r0; - int r; - int mask; - - func_80013F3C((s32)&m); - RotMatrixZ(g[0], &m); - m.t[0] = b[0]; - m.t[1] = b[1]; - m.t[2] = 0; - func_8004914C(&m); - func_800491AC(&m); - - r0_00 = &D_801EA8C0[0]; - if (*(s16 *)(a + 0x12) == 0) { - D_801EA8F0 = 0x50000000; - D_801EA8E0 = D_8018EF70[*(s32 *)(a + 0x2C)]; - D_801EA8E4 = D_8018EF70[*(s32 *)(a + 0x2C)]; - D_801EA8E8 = 0; - D_801EA8E9 = 0; - D_801EA8EA = 0; - D_801EA8EC = 0; - D_801EA8ED = 0; - D_801EA8EE = 0; - } - - f->vx = f->vx + c->vx; - f->vy = f->vy + c->vy; - r = rand(); - mask = f->pad & r; - if (*(u16 *)(a + 0x12) & 1) - f->vx = f->vx + mask; - else - f->vx = f->vx - mask; - r = rand(); - { int t = f->vy - 0x10; f->vy = t + (r & 0x1f); } - - gte_ldv0(c); - gte_rt(); - gte_stsv(r0_00); - - gte_ldv0(f); - gte_rt(); - gte_stsv(r0_00 + 1); - - gte_ldv0(d); - gte_rt(); - r0 = r0_00 + 2; - gte_stsv(r0); - - *d = *f; - r = rand(); - d->vx = d->vx - (f->pad & r); - - gte_ldv0(d); - gte_rt(); - pSVar6 = r0_00 + 3; - gte_stsv(pSVar6); - - r0_00->vz = ((u16 *)b)[2]; - func_80017714(r0_00); - - gte_ldv0(e); - gte_rt(); - gte_stsv(r0); - - *e = *f; - r = rand(); - e->vx = e->vx + (f->pad & r); - - gte_ldv0(e); - gte_rt(); - gte_stsv(pSVar6); - - r0_00->vz = ((u16 *)b)[2]; - func_80017714(r0_00); - - *c = *f; -} - - -DEFINE_func_8017C624() /* dedup: shared engine-core @0x8017C624 (src/shared) */ - - - -extern void (*D_8018F064[])(void); - -void func_8017C664(void *a0) { - D_8018F064[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern void func_80146F58(s32 a0, s32 a1); - -/* MATCH (match_one, 93/93). ov_SC03_014_jr_8017AE2C, family reach x7 (zero-crack exemplar; see - * asm/ov_SC03_0{14,15,24,118,119}/... and ov_SC06_000, all still INCLUDE_ASM as of this crack). - * - * sibling-search (cookbook §160g) hits, all from src/ov_SC03_014/ov_SC03_014_jr_8017AE2C.c - * (the destination TU itself) plus one cross-overlay MATCHed twin: - * - func_8017CE10(void *a0, s32 a1, s32 a2) -- defined verbatim in THIS TU (line 3679) - * - func_80147324(D_8018EFC0[idx][0]) -- exact idiom of func_8017C8FC's - * func_80147324(D_8018EFD4[idx][0]) (same TU) - * - func_8001CB00(s32,void*,s32,s32) -- signature + literal 0x280/0x100 pair pinned - * by src/ov_SC03_007/ov_SC03_007_jr_8017AE2C.c:5317 func_80186BE8 (labeled MATCH), whose tail - * `*(short*)(param_1+2) += 1;` is the exact idiom of this function's own final statement. - * - func_8012A68C()/func_8012A758()/func_8004978C()/ApplyMatrixSV() call trio -- exact shape of - * shared-engine func_80146F58 (src/ov_SC07_007/ov_SC07_007_jr_801457A4.c:1459): two s16 calls - * stored, func_8004978C(anglesPtr, matOut), ApplyMatrixSV(mat, in, out). - * - func_801465C0 loose void(void) file-scope decl (TU:130) fought via a cast-at-callsite, - * per §161c -- mirrors src/ov_SC06_008/ov_SC06_008_jr_8016AB6C.c's - * `((s32 (*)(void))func_801465C0)()` pattern. No explicit a0 setup precedes the target's jal - * (a0 still holds the entry parameter unclobbered) so a ZERO-ARG cast is the byte-safe choice - * -- it can never force a spurious argument-setup instruction. - * - * PROCESS NOTE (worth banking in the cookbook): a 2-instruction "REGALLOC-LOCAL" residual on - * func_80015954's args looked exactly like local-alloc's optimize_reg_copy_1 collapsing two - * identical-valued arg copies (byte-verified via `cc1 -da`: `.sched` had insn112/114 both reading - * pseudo 80 cleanly, `.lreg` had insn114 rewritten to read insn112's DEST instead of pseudo80's - * hard reg -- textbook §162j1). The `register s32 zr __asm__("$0"); x + zr` opaque-copy lever - * (§136d-1/RC-12) did NOT defeat it when applied to the SECOND of the pair (validate_replace_rtx - * substitutes inside a PLUS operand just as readily as inside a plain SET) -- applying it to the - * FIRST copy instead (so insn117 is no longer a `single_set(REG)` and never qualifies as "a copy" - * for the pass to scan forward from) did defeat it, dropping to a genuine 1-instruction - * REGALLOC-PERM ($s3-vs-$s0). That flushed out the REAL bug: `func_80015954`'s first argument is - * `vecOut` (the ApplyMatrixSV output), not `s3` -- I had the wrong VALUE, not a regalloc quirk. - * Fixing the argument made the "residual" vanish with NO register-pin needed at all. Lesson: a - * clean REGALLOC-LOCAL/-PERM diff on an ARGUMENT SETUP is worth re-deriving the argument's - * identity from the target's OWN register (here $s0, not the more "obvious" $s3) before reaching - * for §162j1/RC-12 levers -- they can mask a semantic error long enough to look load-bearing. - */ - -extern void func_801465C0(void); -extern void func_80149374(s32 a0, s32 a1); -extern s16 func_8012A68C(void); -extern s16 func_8012A758(void); -extern void func_8004978C(s16 *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern void func_80015978(s32 a0, s32 *a1); -extern void func_8012EF70(s32 a0, s32 a1); -extern void func_80015954(s32 a0, s32 a1); -extern void func_8001CB00(s32 a0, void *a1, s32 a2, s32 a3); -extern void func_8017CE10(void *a0, s32 a1, s32 a2); -extern void func_80147324(s32 a0); -extern void func_80146C3C(void); - -/* new-to-this-TU data symbols (own address only in this function; payload owned by - * asm/ov_SC03_014/data/tail.data.s, a data-only splat unit -- extern is correct, not a definition, - * per §160c's "same .s as the function" test). D_8018F07C bytes: 0000 0000 ECFF 0000 = {0,0,-20,0}. - * D_8018F058: 12 opaque bytes (a GPU-primitive template), address-only use -> §160f array style. */ - -void func_8017C6A0(void *a0) { - - extern s16 D_8018F07C[4]; - extern u8 D_8018F058[12]; - extern u16 D_8018EFC0[][2]; - void *s3; - s32 s0; - s32 s1; - u8 mat[0x20]; - u16 vecOut[4]; - - s0 = *(s32 *)(a0 + 0x34); - s3 = ((void *(*)(void))func_801465C0)(); - *(void **)(a0 + 0x20) = s3; - - if (s3 != NULL) { - s1 = (s32)a0 + 4; - func_80149374(s0, s1); - - *(s16 *)(s3 + 0x10) = func_8012A68C(); - *(s16 *)(s3 + 0x12) = func_8012A758(); - func_8004978C((s16 *)(s3 + 0x10), mat); - - ApplyMatrixSV(mat, D_8018F07C, vecOut); - - *(u16 *)(a0 + 0x6) = *(u16 *)(a0 + 0x6) + vecOut[0]; - *(u16 *)(a0 + 0xA) = *(u16 *)(a0 + 0xA) + vecOut[1]; - *(u16 *)(a0 + 0xE) = *(u16 *)(a0 + 0xE) + vecOut[2]; - - func_80015978(s1, (s32 *)vecOut); - func_8012EF70((s32)vecOut, (s32)vecOut); - func_80015954((s32)vecOut, s1); - - func_8001CB00((s32)s3, D_8018F058, 0x280, 0x100); - - *(u8 *)(s3 + 0x27) = 0x80; - - *(s16 *)(s3 + 0x2C) = *(u16 *)(a0 + 0xE); - *(s16 *)(s3 + 0x1A) = 0; - *(s16 *)(s3 + 0x18) = 0; - - *(s32 *)(a0 + 0x10) = 0; - func_8017CE10(a0, *(s32 *)(a0 + 0x2C), 0x8F); - - func_80147324(D_8018EFC0[*(s32 *)(a0 + 0x2C)][0]); - - *(u16 *)(a0 + 2) = *(u16 *)(a0 + 2) + 1; - } else { - ((void (*)(s32))func_80146C3C)((s32)a0); - } -} - - - - -DEFINE_func_8017C814() /* dedup: shared engine-core @0x8017C814 (src/shared) */ - - - -extern void func_8017CE10(void *a0, s32 a1, s32 a2); -extern void func_8017D098(void *a0, s32 a1, s32 a2); -extern void func_80146C3C(void); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_80146E90(s32 *a0, s32 a1); -extern void func_80147324(s32 arg0); - -void func_8017C8FC(void *a0) { - - extern s32 D_8011D030; - extern u16 D_8018EFD4[][2]; - s32 *s2; - - s2 = *(s32 **)((s32)a0 + 0x20); - - if (*(s32 *)((s32)a0 + 0x1C) < 0x100) { - if ((*(s32 *)((s32)a0 + 0x1C) & 0xF) == 0) { - func_8017CE10(a0, *(s32 *)((s32)a0 + 0x2C), 0xF); - if ((*(s32 *)((s32)a0 + 0x1C) & 0xF) == 0) { - s32 flags = *(s32 *)((s32)a0 + 0x1C) << 15; - func_8017D098(a0, *(s32 *)((s32)a0 + 0x2C), flags); - func_8017D098(a0, *(s32 *)((s32)a0 + 0x2C), flags | 1); - func_8017D098(a0, *(s32 *)((s32)a0 + 0x2C), flags | 2); - func_8017D098(a0, *(s32 *)((s32)a0 + 0x2C), flags | 3); - func_8017D098(a0, *(s32 *)((s32)a0 + 0x2C), flags | 4); - func_8017D098(a0, *(s32 *)((s32)a0 + 0x2C), flags | 5); - func_8017D098(a0, *(s32 *)((s32)a0 + 0x2C), flags | 6); - func_8017D098(a0, *(s32 *)((s32)a0 + 0x2C), flags | 7); - } - } - if (*(s32 *)((s32)a0 + 0x1C) & 1) { - s2[1] |= 0x80000000; - } else { - s2[1] &= 0x7FFFFFFF; - } - *(s32 *)((s32)a0 + 0x1C) = *(s32 *)((s32)a0 + 0x1C) + 1; - } else { - u8 *p = (u8 *)&D_8011D030; - s32 idx; - - if ((u32)p < (u32)((u8 *)&D_8011D030 + 0xA50)) { - do { - if (*(u16 *)p == 0x2E) { - ((void (*)(s32))func_80146C3C)((s32)p); - } - p += 0x58; - } while ((u32)p < (u32)((u8 *)&D_8011D030 + 0xA50)); - } - - { - s32 t3 = *(s32 *)((s32)a0 + 0x2C); - s16 t0 = *(s16 *)((s32)a0 + 0x6); - s16 t1 = *(s16 *)((s32)a0 + 0xA); - s16 t2 = *(s16 *)((s32)a0 + 0xE); - func_80146A6C(0x2B, a0, t0, t1, t2, t3, 0); - } - { - s32 t3 = *(s32 *)((s32)a0 + 0x2C); - s16 t0 = *(s16 *)((s32)a0 + 0x6); - s16 t1 = *(s16 *)((s32)a0 + 0xA); - s16 t2 = *(s16 *)((s32)a0 + 0xE); - func_80146A6C(0x2B, a0, t0, t1, t2, t3, 0x1C7); - } - { - s32 t3 = *(s32 *)((s32)a0 + 0x2C); - s16 t0 = *(s16 *)((s32)a0 + 0x6); - s16 t1 = *(s16 *)((s32)a0 + 0xA); - s16 t2 = *(s16 *)((s32)a0 + 0xE); - func_80146A6C(0x2B, a0, t0, t1, t2, t3, 0x38E); - } - { - s32 t3 = *(s32 *)((s32)a0 + 0x2C); - s16 t0 = *(s16 *)((s32)a0 + 0x6); - s16 t1 = *(s16 *)((s32)a0 + 0xA); - s16 t2 = *(s16 *)((s32)a0 + 0xE); - func_80146A6C(0x2B, a0, t0, t1, t2, t3, 0x555); - } - { - s32 t3 = *(s32 *)((s32)a0 + 0x2C); - s16 t0 = *(s16 *)((s32)a0 + 0x6); - s16 t1 = *(s16 *)((s32)a0 + 0xA); - s16 t2 = *(s16 *)((s32)a0 + 0xE); - func_80146A6C(0x2B, a0, t0, t1, t2, t3, 0x71C); - } - { - s32 t3 = *(s32 *)((s32)a0 + 0x2C); - s16 t0 = *(s16 *)((s32)a0 + 0x6); - s16 t1 = *(s16 *)((s32)a0 + 0xA); - s16 t2 = *(s16 *)((s32)a0 + 0xE); - func_80146A6C(0x2B, a0, t0, t1, t2, t3, 0x8E3); - } - { - s32 t3 = *(s32 *)((s32)a0 + 0x2C); - s16 t0 = *(s16 *)((s32)a0 + 0x6); - s16 t1 = *(s16 *)((s32)a0 + 0xA); - s16 t2 = *(s16 *)((s32)a0 + 0xE); - func_80146A6C(0x2B, a0, t0, t1, t2, t3, 0xAAA); - } - { - s32 t3 = *(s32 *)((s32)a0 + 0x2C); - s16 t0 = *(s16 *)((s32)a0 + 0x6); - s16 t1 = *(s16 *)((s32)a0 + 0xA); - s16 t2 = *(s16 *)((s32)a0 + 0xE); - func_80146A6C(0x2B, a0, t0, t1, t2, t3, 0xC71); - } - { - s32 t3 = *(s32 *)((s32)a0 + 0x2C); - s16 t0 = *(s16 *)((s32)a0 + 0x6); - s16 t1 = *(s16 *)((s32)a0 + 0xA); - s16 t2 = *(s16 *)((s32)a0 + 0xE); - func_80146A6C(0x2B, a0, t0, t1, t2, t3, 0xE38); - } - - func_80146E90((s32 *)a0, 0x20); - - idx = *(s32 *)((s32)a0 + 0x2C); - func_80147324(D_8018EFD4[idx][0]); - - *(u16 *)((s32)a0 + 0x2) = *(u16 *)((s32)a0 + 0x2) + 1; - } -} - - -DEFINE_func_8017CC44() /* dedup: shared engine-core @0x8017CC44 (src/shared) */ - - - - -DEFINE_func_8017CCC4() /* dedup: shared engine-core @0x8017CCC4 (src/shared) */ - - - -extern void func_8017CE10(void *a0, s32 a1, s32 a2); -extern void func_80147324(s32 a0); -extern void func_80146C3C(void); - -void func_8017CD10(void *a0) { - - extern u16 D_8018EFE8[][2]; - s32 *s2; - s16 v0; - - s2 = *(s32 **)((s32)a0 + 0x20); - - if (*(s32 *)((s32)a0 + 0x1C) & 1) { - s2[1] |= 0x80000000; - } else { - s2[1] &= 0x7FFFFFFF; - } - - v0 = (*(u16 *)((s32)s2 + 0x12) + 0x80) & 0xFFF; - *(u16 *)((s32)s2 + 0x12) = v0; - - if (v0 == 0 || v0 == 0x800) { - if (*(s16 *)((s32)a0 + 0x24) != 0) { - *(s16 *)((s32)a0 + 0x24) = *(s16 *)((s32)a0 + 0x24) - 1; - } - } - - v0 = *(u16 *)((s32)s2 + 0x1A) - 0x40; - *(u16 *)((s32)s2 + 0x1A) = v0; - *(u16 *)((s32)s2 + 0x18) = v0; - - if (v0 < 0) { - func_8017CE10(a0, *(s32 *)((s32)a0 + 0x2C), 0x8F); - func_80147324(D_8018EFE8[*(s32 *)((s32)a0 + 0x2C)][0]); - ((void (*)(s32))func_80146C3C)((s32)a0); - } - - *(s32 *)((s32)a0 + 0x1C) = *(s32 *)((s32)a0 + 0x1C) + 1; -} - - -DEFINE_func_8017CE10() /* dedup: shared engine-core @0x8017CE10 (src/shared) */ - - - -extern void (*D_8018F084[])(void); - -void func_8017CE54(void *a0) { - D_8018F084[*(u16 *)((s32)a0 + 0x2)](); -} - - - -/* callee-set / sibling search (cookbook §160g): all callees resolved from the DESTINATION TU - * itself, src/ov_SC03_014/ov_SC03_014_jr_8017AE2C.c, whose immediately-preceding matched sibling - * func_8017C6A0 (same TU, same family) uses the identical: - * - func_801465C0 loose void(void) file-scope decl, fought via a zero-arg cast-at-callsite - * (§161c) -- `((void *(*)(void))func_801465C0)()`. - * - func_80146C3C(void) called on the failure path with the object pointer cast in. - * - the returned object (named s3 there, s1 here) has s16 fields at +0x18/+0x1A/+0x2C, matching - * this function's `*(s16*)(s1+0x18)`, `+0x1A`, `+0x2C` stores exactly. - * func_8001CD04(void*,void*) is defined in src/800.c (INCLUDE_ASM, shared engine) -- - * asm/nonmatchings/800/func_8001CD04.s shows it stores its 2nd arg into (a0+0x20), confirming a0 - * here is the newly-allocated object and a1 is an address it retains -- i.e. func_8001CD04(s1, s2) - * installs s2 (&D_801EA840) onto the object. - * The `lwl/lwr`+`swl/swr` pair at D_8018EF84[idx] / D_801EA840 is the §160a align-1 struct-copy - * idiom; D_8018EF84 is already `extern M2C_UNK D_8018EF84;` (address-only) in many ov_SC05_017 - * TUs, and the shared align-1 4-byte struct type `B4` (src/shared/engine_types.h:713) is already - * used repo-wide for this exact shape. The SAME address (&D_801EA840) also takes a plain ALIGNED - * `sw` of 0xFFFFFF on the other branch -- an explicit `(u32*)` cast forces that, while the direct - * `B4` struct assignment on the table-lookup branch keeps the align-1 `swl/swr` -- §160a's "read - * the move width off the target, not off the data's apparent type", both branches hitting the same - * lvalue. - * D_801EA840/844/845/846 are owned by asm/ov_SC03_014/data/tail19.data.s (a data-only splat unit, - * §160c) -- not bundled with this function's .s, so plain `extern` declarations are correct, not a - * definition. D_801EA840 is one `.word` (4 bytes); D_801EA844 and D_801EA845 are each one `.byte`; - * D_801EA846 opens a much larger multi-byte block in that data file, but this function only stores - * a zero to its FIRST byte, so a scalar `extern u8 D_801EA846;` is sufficient here. - * - * TYPE: match_one's standalone `common.h` does NOT reach src/shared/engine_types.h (only the real - * TU's `#include "../shared/engine_core.h"` does), so `B4` isn't visible here. Per the - * ov_SC06_032_jr_8018FCE8.c precedent ("cc1 errors on the redefinition" of an identical-name - * typedef), a fresh, function-scoped name is used instead -- collides with nothing; the integrator - * may DROP this local typedef and reuse the TU's own `B4` when banking into the host TU. - */ - -typedef struct { u8 d[4]; } Blk4_8017CE90_8017CE90; - -extern void func_801465C0(void); -extern void func_8001CD04(void *a0, void *a1); -extern void func_800233CC(void *a0, u16 a1); -extern void func_80146C3C(void); - - -void func_8017CE90(void *a0) -{ - - extern Blk4_8017CE90_8017CE90 D_8018EF84[]; - extern Blk4_8017CE90_8017CE90 D_801EA840; - extern u8 D_801EA844; - extern u8 D_801EA845; - extern u8 D_801EA846; - void *s1; - Blk4_8017CE90_8017CE90 *s2; - s32 pad[10]; - - s1 = ((void *(*)(void))func_801465C0)(); - *(void **)((u8 *)a0 + 0x20) = s1; - - if (s1 != NULL) { - s2 = &D_801EA840; - func_8001CD04(s1, s2); - - *(s32 *)((u8 *)s1 + 4) |= 0x50000000; - func_800233CC(s2, 0x50); - - *(s32 *)((u8 *)a0 + 0x10) = 0; - if (*(s32 *)((u8 *)a0 + 0x30) & 0x80) { - *(u32 *)s2 = 0xFFFFFF; - *(s16 *)((u8 *)s1 + 0x1A) = 0x80; - *(s16 *)((u8 *)s1 + 0x18) = 0x80; - *(s32 *)((u8 *)a0 + 0x14) = 0x80; - } else { - *s2 = D_8018EF84[*(s32 *)((u8 *)a0 + 0x2C)]; - *(s32 *)((u8 *)a0 + 0x14) = 0x20; - } - - D_801EA844 = 0; - D_801EA845 = 0; - D_801EA846 = 0; - - *(s32 *)((u8 *)a0 + 0x30) = *(s32 *)((u8 *)a0 + 0x30) & 0x7F; - *(s16 *)((u8 *)s1 + 0x2C) = *(u16 *)((u8 *)a0 + 0xE) + 0x10; - *(u16 *)((u8 *)a0 + 0x2) = *(u16 *)((u8 *)a0 + 0x2) + 1; - } else { - ((void (*)(void *))func_80146C3C)(a0); - } -} - - - - -void func_8017CFBC(void *a0) -{ - typedef struct { u8 d[4]; } Blk4_8017CE90_8017CE90; - extern Blk4_8017CE90_8017CE90 D_801EA840; - extern s32 func_80012F74(s32 a0, s32 a1, s32 a2, s32 a3); - extern void func_80146C3C(void); - void *s2; - void *s1; - s32 v0; - s32 v1; - - s2 = a0; - s1 = *(void **)((u8 *)s2 + 0x20); - D_801EA840.d[0] = func_80012F74(D_801EA840.d[0], 0, 10, 1); - D_801EA840.d[1] = func_80012F74(D_801EA840.d[1], 0, 10, 1); - D_801EA840.d[2] = func_80012F74(D_801EA840.d[2], 0, 10, 1); - - v1 = *(s32 *)((u8 *)s2 + 0x10) + *(s32 *)((u8 *)s2 + 0x14); - *(s32 *)((u8 *)s2 + 0x10) = v1; - - v0 = *(u16 *)((u8 *)s1 + 0x1A) + v1; - *(u16 *)((u8 *)s1 + 0x1A) = v0; - *(s16 *)((u8 *)s1 + 0x18) = v0; - - v1 = *(s32 *)((u8 *)s2 + 0x30); - *(s32 *)((u8 *)s2 + 0x30) = v1 - 1; - if (v1 == 0) { - ((void (*)(void *))func_80146C3C)(s2); - } -} - - -DEFINE_func_8017D098() /* dedup: shared engine-core @0x8017D098 (src/shared) */ - - - -extern void (*D_8018F094[])(void); - -void func_8017D0DC(void *a0) { - D_8018F094[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8017D118() /* dedup: shared engine-core @0x8017D118 (src/shared) */ - - -DEFINE_func_8017D194() /* dedup: shared engine-core @0x8017D194 (src/shared) */ - - - typedef struct { s16 vx; u16 vy; s16 vz, pad; } SVec_8017D1E0; -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8_8017D1E0; - - - -extern s32 func_80146E98(s32 a0); -extern void func_80147324(s32 arg0); -extern void func_80146C3C(void); -extern void func_8017D318(int a0, SVECTOR_8017C290 *a1, SVECTOR_8017C290 *a2, s32 a3); - -void func_8017D1E0(void *a0) -{ - - extern u16 D_8018EFFC[][2]; - s16 n; - register s32 tmp __asm__("$4"); - register s32 t __asm__("$17"); - s16 v; - SVECTOR_8017C290 vec1; - SVECTOR_8017C290 vec2; - - n = *(s16 *)((s32)a0 + 0x28); - if (n != 0) { - n = n - 1; - *(s16 *)((s32)a0 + 0x28) = n; - if (n == 0) { - func_80147324(D_8018EFFC[*(s32 *)((s32)a0 + 0x2C)][0]); - } - } - - tmp = *(s32 *)((s32)a0 + 0x30) + 0x6000; - *(s32 *)((s32)a0 + 0x14) += tmp; - t = tmp; - - v = *(u16 *)((s32)a0 + 0x10) - *(u16 *)((s32)a0 + 0x16); - *(s16 *)((s32)a0 + 0x10) = v; - if (v < 0) { - *(s16 *)((s32)a0 + 0x10) = 0; - } - - if (func_80146E98((s32)a0)) { - *(s32 *)((s32)a0 + 0x18) += t; - - v = *(u16 *)((s32)a0 + 0x12) - *(u16 *)((s32)a0 + 0x1A); - *(s16 *)((s32)a0 + 0x12) = v; - if (v < 0) { - *(s16 *)((s32)a0 + 0x12) = 0; - } - } - - vec1.vx = 0; - vec1.vy = *(u16 *)((s32)a0 + 0x10); - vec1.vz = 1; - vec2.vx = 0; - vec2.vy = *(u16 *)((s32)a0 + 0x12); - vec2.vz = 1; - func_8017D318((int)a0, &vec1, &vec2, *(s16 *)((s32)a0 + 0x24)); - - if (*(s32 *)((s32)a0 + 0x10) == 0) { - ((void (*)(s32))func_80146C3C)((s32)a0); - } -} - - -extern void func_80013F3C(s32 a0); -extern void func_80017714(void *); -extern void func_8004914C(); -extern void func_800491AC(); -#define gte_ldv0(r0) __asm__ __volatile__( \ - "lwc2 $0, 0(%0)\n" \ - "lwc2 $1, 4(%0)\n" \ - : : "r"(r0) : "memory") -#define gte_rt() __asm__ __volatile__( \ - "nop\n" \ - "nop\n" \ - "mvmva 1, 0, 0, 0, 0\n" \ - : : : "memory") -#define gte_stsv(r0) __asm__ __volatile__( \ - "mfc2 $12, $9\n" \ - "mfc2 $13, $10\n" \ - "mfc2 $14, $11\n" \ - "sh $12, 0(%0)\n" \ - "sh $13, 2(%0)\n" \ - "sh $14, 4(%0)\n" \ - : : "r"(r0) : "$12", "$13", "$14", "memory") -#define gte_ldv0(r0) __asm__ __volatile__( \ - "lwc2 $0, 0(%0)\n" \ - "lwc2 $1, 4(%0)\n" \ - : : "r"(r0) : "memory") -#define gte_rt() __asm__ __volatile__( \ - "nop\n" \ - "nop\n" \ - "mvmva 1, 0, 0, 0, 0\n" \ - : : : "memory") -#define gte_stsv(r0) __asm__ __volatile__( \ - "mfc2 $12, $9\n" \ - "mfc2 $13, $10\n" \ - "mfc2 $14, $11\n" \ - "sh $12, 0(%0)\n" \ - "sh $13, 2(%0)\n" \ - "sh $14, 4(%0)\n" \ - : : "r"(r0) : "$12", "$13", "$14", "memory") -#define gte_ldv0(r0) __asm__ volatile ( \ - "lwc2 $0, 0( %0 );" \ - "lwc2 $1, 4( %0 )" \ - : \ - : "r"( r0 ) ) - -void func_8017D318(int a0, SVECTOR_8017C290 *a1, SVECTOR_8017C290 *a2, s32 a3) -{ - - extern struct PW8017C290 D_8018EF98[]; - extern struct PW8017C290 D_8018EFAC[]; - extern SVECTOR_8017C290 D_801EA8C0[4]; - extern struct PW8017C290 D_801EA8E0; - extern struct PW8017C290 D_801EA8E4; - extern u8 D_801EA8E8, D_801EA8E9, D_801EA8EA, D_801EA8EC, D_801EA8ED, D_801EA8EE; - extern u8 D_801EA8E8, D_801EA8E9, D_801EA8EA, D_801EA8EC, D_801EA8ED, D_801EA8EE; - extern int D_801EA8F0; - MATRIX_8017C290 m; - SVECTOR_8017C290 *r0_00; - SVECTOR_8017C290 *r0; - SVECTOR_8017C290 *pSVar6; - - D_801EA8F0 = 0x50000000; - D_801EA8E0 = D_8018EF98[*(s32 *)(a0 + 0x2C)]; - D_801EA8E4 = D_8018EFAC[*(s32 *)(a0 + 0x2C)]; - *(struct PW8017C290 *)&D_801EA8E8 = D_8018EF98[*(s32 *)(a0 + 0x2C)]; - *(struct PW8017C290 *)&D_801EA8EC = D_8018EFAC[*(s32 *)(a0 + 0x2C)]; - - func_80013F3C((s32)&m); - RotMatrixZ((s16)a3, &m); - m.t[0] = *(s16 *)(a0 + 0x6); - m.t[1] = *(s16 *)(a0 + 0xA); - m.t[2] = 0; - func_8004914C(&m); - func_800491AC(&m); - - r0_00 = &D_801EA8C0[0]; - - gte_ldv0(a1); - gte_rt(); - gte_stsv(r0_00); - - gte_ldv0(a2); - gte_rt(); - gte_stsv(r0_00 + 1); - - a1->vx = a1->vx - 2; - gte_ldv0(a1); - gte_rt(); - r0 = r0_00 + 2; - gte_stsv(r0); - - a2->vx = a2->vx - 2; - gte_ldv0(a2); - gte_rt(); - pSVar6 = r0_00 + 3; - gte_stsv(pSVar6); - - r0_00->vz = *(u16 *)(a0 + 0xE); - func_80017714(r0_00); - - a1->vx = a1->vx + 4; - gte_ldv0(a1); - gte_rt(); - gte_stsv(r0); - - a2->vx = a2->vx + 4; - gte_ldv0(a2); - gte_rt(); - gte_stsv(pSVar6); - - r0_00->vz = *(u16 *)(a0 + 0xE); - func_80017714(r0_00); -} - - -DEFINE_func_8017D5F8() /* dedup: shared engine-core @0x8017D5F8 (src/shared) */ - - - -extern void (*D_8018F0A0[])(void); - -void func_8017D63C(void *a0) { - D_8018F0A0[*(u16 *)((s32)a0 + 0x2)](); -} - - - -/* func_8017D678 -- ov_SC03_014, TU ov_SC03_014_jr_8017AE2C.c - * - * §160g sibling-first: destination TU itself has the exact template two functions earlier, - * func_8017CE90 (same TU, same family, allocate-then-attach-a-fixed-color-quad shape): - * - func_801465C0 loose `void(void)` file-scope decl (TU line 130/3614/3910), fought via a - * zero-arg cast-at-callsite `((void *(*)(void))func_801465C0)()` (§161c). - * - func_8001CD04(void*,void*) shared-engine helper (src/800.c, INCLUDE_ASM) that stores its - * 2nd arg into (a0+0x20) -- confirms s1=result-object, s0=&D_801EA880 retained address. - * - `*(s1+4) |= 0x50000000` computed and stored in the delay slot of the FOLLOWING - * func_800233CC jal (same instruction-order idiom as func_8017CE90's identical line). - * - func_80146C3C(void) called on the alloc-failure path with the object pointer cast in - * (`((void (*)(void *))func_80146C3C)(a0)`), same as func_8017CE90's else-branch. - * func_80146E90(s32*,s32) is already declared+called directly (no cast) at TU line 3801 - * (`func_80146E90((s32 *)a0, 0x20);`) -- reused verbatim here with a different 2nd arg. - * The color-quad global block D_801EA880.. is fixed by this TU's OWN later sibling - * func_8017D900 (a few lines below in the same file), whose header comment explicitly notes: - * "In-TU sibling func_8017D678 shows D_801EA881/D_801EA882 are SEPARATE u8 globals (each gets - * its own lui/%lo sb)" -- i.e. func_8017D900 was written FROM this function's own asm. That - * comment also fixes D_801EA884 as a plain u8 (its Quad_801EA880 4-byte-struct framing only - * matters for func_8017D900's block-copy; here each of D_801EA884/885/886 gets an independent - * byte store, so plain scalar externs are correct and sufficient). - * - * Source statement order mirrors instruction order 1:1 (straight-line alloc/init, no branches - * inside the success path); the `a0 = s2` register move for the func_80146E90 call argument is - * expected to be scheduler-hoisted early by gcc/sched2 exactly as seen in every other sibling in - * this TU -- no special C construct needed for that. - */ - -extern void func_801465C0(void); -extern void func_8001CD04(void *a0, void *a1); -extern void func_800233CC(void *a0, u16 a1); -extern void func_80146E90(s32 *a0, s32 a1); -extern void func_80146C3C(void); - - -void func_8017D678(void *a0) -{ - - extern u8 D_801EA880; - extern u8 D_801EA881; - extern u8 D_801EA882; - extern u8 D_801EA884; - extern u8 D_801EA885; - extern u8 D_801EA886; - void *s1; - void *s0; - s32 pad[10]; - - s1 = ((void *(*)(void))func_801465C0)(); - *(void **)((u8 *)a0 + 0x20) = s1; - - if (s1 != NULL) { - s0 = &D_801EA880; - func_8001CD04(s1, s0); - - *(s32 *)((u8 *)s1 + 4) |= 0x50000000; - func_800233CC(s0, 0x100); - - *(s16 *)((u8 *)s1 + 0x1A) = 0; - *(s16 *)((u8 *)s1 + 0x18) = 0; - *(s32 *)((u8 *)a0 + 0x10) = 0x80; - *(s16 *)((u8 *)s1 + 0x2C) = 0x10; - - *(u8 *)s0 = 0xFF; - D_801EA881 = 0xFF; - D_801EA882 = 0xFF; - D_801EA884 = 0; - D_801EA885 = 0; - D_801EA886 = 0; - - func_80146E90((s32 *)a0, 0xC0); - *(u16 *)((u8 *)a0 + 0x2) = *(u16 *)((u8 *)a0 + 0x2) + 1; - } else { - ((void (*)(void *))func_80146C3C)(a0); - } -} - - -extern s32 func_8004787C(s32 a0); -extern s32 func_80146E98(s32 a0); -extern u16 D_8018F010[]; -extern void func_80146E90(s32 *a0, s32 a1); -extern void func_80147324(s32 arg0); - -void func_8017D75C(s32 param) { - s32 a0; - s32 v0; - s32 v1; - s32 *s1; - - a0 = *(s32 *)(param + 0x1C) & 0x3F; - s1 = (s32 *)(*(s32 *)(param + 0x20)); - v0 = func_8004787C(a0 << 6); - - v1 = *(s32 *)(param + 0x10); - if (v0 < 0) { - v0 += 0x7F; - } - v0 = v0 >> 7; - v1 = v1 + v0; - v0 = v1; - - *(s16 *)((u8 *)s1 + 0x1A) = v0; - *(s16 *)((u8 *)s1 + 0x18) = v0; - - v0 = func_80146E98(param); - if (v0 != 0) { - ((void (*)(s32, s32))func_80146E90)(param, 0x40); - - v0 = *(s32 *)(param + 0x2C); - v0 = D_8018F010[v0 << 1]; - func_80147324(v0); - - v0 = *(u16 *)(param + 0x2); - *(s16 *)(param + 0x2) = v0 + 1; - } -} - - -DEFINE_func_8017D804() /* dedup: shared engine-core @0x8017D804 (src/shared) */ - - -extern u8 D_801EA884; -extern u8 D_801EA885; -extern u8 D_801EA886; - -void func_8017D890(arg0, a1) -void *arg0; -void *a1; -{ - s16 var; - - a1 = *(void **)((s32)arg0 + 0x20); - var = *(u16 *)((s32)a1 + 0x1A) + 0x200; - *(u16 *)((s32)a1 + 0x1A) = var; - *(u16 *)((s32)a1 + 0x18) = var; - if (var >= 0x1001) { - D_801EA884 = 0xFF; - D_801EA885 = 0xFF; - D_801EA886 = 0xFF; - *(u16 *)((s32)a1 + 0x1A) = 0x1000; - *(u16 *)((s32)a1 + 0x18) = 0x1000; - *(u16 *)((s32)arg0 + 2) = *(u16 *)((s32)arg0 + 2) + 1; - } -} - - - -/* func_8017D900 — fade the 4-byte colour quad at D_801EA880 one step toward 0 - * (func_80012F74 = "step a value toward a target"), splat the byte over the - * three sibling bytes, mirror the whole quad into the three following quads, - * then tear the entity down once the byte reaches 0. - * - * §71 sibling-first: DEFINE_func_801685EC() (engine_core.h L8520) is the same - * `if ( == 0) ((void (*)(s32))func_80146C3C)(arg0);` teardown tail. - * In-TU sibling func_8017D678 shows D_801EA881/D_801EA882 are SEPARATE u8 - * globals (each gets its own lui/%lo sb) while D_801EA880's address lives in a - * callee-saved register. - * - * @class: schedule (LENGTH-DRIFT/-1) - * @stuck: none — MATCH 50/50 (match_one AND rtu_match), iteration 2. - * THE CRACK (one edit): the TRAILING reload `if (*p == 0)` was being hoisted by - * sched2 up past the third block move, where the swl/swr pair covered its load - * delay — costing exactly the one `nop` the target keeps (49 vs 50 ins, - * LENGTH-DRIFT/-1). A second zero-byte `__asm__("")` fence between the last - * struct assignment and the `if` pins the lbu after the copies and the load-delay - * nop reappears. Lesson: an inline block move (swl/swr) is a fat delay-slot - * SPONGE — any following narrow load will be sucked up into it unless fenced. - * The first fence (after the chained byte stores) is what keeps the block moves - * from being interleaved with them. - * Other levers already in this draft, all load-bearing: - * - `u8 *p = &D_801EA880;` (§20) — one address register ($s0, callee-saved - * across the jal) serves the lbu, the sb and all three block-move sources. - * - chained assignment `D_801EA881 = D_801EA882 = *p = f(...)` gives the - * target's store order 880, 882, 881 (right-to-left after the *p store). - * - the 4×u8 struct (align 1) is what makes the assignment expand to inline - * lwl/lwr + swl/swr instead of a `jal memcpy` (cf. §38). - */ - - /* align 1 => movstrsi expands to lwl/lwr + swl/swr */ - - -extern s32 func_80012F74(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80146C3C(void); - -void func_8017D900(s32 arg0) { - - extern u8 D_801EA880; - extern u8 D_801EA881; - extern u8 D_801EA882; - extern u8 D_801EA884; - extern u8 D_801EA888; - extern u8 D_801EA88C; - u8 *p = &D_801EA880; - - D_801EA881 = D_801EA882 = *p = func_80012F74(*p, 0, 10, 1); - __asm__(""); - *(Quad_801EA880_8017D900 *)&D_801EA884 = *(Quad_801EA880_8017D900 *)p; - *(Quad_801EA880_8017D900 *)&D_801EA888 = *(Quad_801EA880_8017D900 *)p; - *(Quad_801EA880_8017D900 *)&D_801EA88C = *(Quad_801EA880_8017D900 *)p; - __asm__(""); - if (*p == 0) { - ((void (*)(s32))func_80146C3C)(arg0); - } -} - - -extern s32 D_8011D030; -extern u16 D_8018EFD4[][2]; -extern void func_80146C3C(); -extern void func_80147364(u16, s32); - -void func_8017D9C8(s32 a0) { - - extern s32 D_8011D030; - extern u16 D_8018EFD4[][2]; - u8 *p = (u8 *)&D_8011D030; - - if ((u32)p < (u32)((u8 *)&D_8011D030 + 0xA50)) { - do { - if (*(u16 *)p == 0x2B) { - ((void (*)(s32))func_80146C3C)((s32)p); - } - if (*(u16 *)p == 0x2C) { - *(u16 *)(p + 2) = *(u16 *)(p + 2) + 1; - } - p += 0x58; - } while ((u32)p < (u32)((u8 *)&D_8011D030 + 0xA50)); - } - - func_80147364(4, D_8018EFD4[a0][0]); -} - - -extern s16 D_80126B30; -extern s16 D_80126B3A; -extern s32 D_8012750C; -extern s16 D_8011F9C8; -extern void func_80174684(void *); -extern void func_8017DB00(void *); - -struct S8_8017DA98 { s16 m[4]; }; - -void func_8017DA98(s16 a0, void *a1, s32 a2) { - *(struct S8_8017DA98 *)&D_80126B30 = *(struct S8_8017DA98 *)a1; - D_80126B3A = a0; - D_8012750C = a2; - func_80174684((void *)func_8017DB00); - (*(s32 *)&D_8011F9C8) = 0; -} - - - -extern void (*D_8018F224[])(void); - -void func_8017DB00(void *a0) { - D_8018F224[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_8017DB3C() /* dedup: shared engine-core @0x8017DB3C (src/shared) */ - - -DEFINE_func_8017DB74() /* dedup: shared engine-core @0x8017DB74 (src/shared) */ - - -DEFINE_func_8017DBC4() /* dedup: shared engine-core @0x8017DBC4 (src/shared) */ - - - -DEFINE_func_8017DC28() /* dedup: shared engine-core @0x8017DC28 (src/shared) */ - - -DEFINE_func_8017DC4C() /* dedup: shared engine-core @0x8017DC4C (src/shared) */ - -extern s16 D_80126B3A; -extern s16 D_80126B3C; -extern void func_80171A1C(u8 *a0); -extern void func_8017C624(); - -void func_8017DCC0(a0) -u8 *a0; -{ - s32 v; - if (*(u16 *)(a0 + 0xB8) & 0x8000) { - switch ((s16)(*(u16 *)&D_80126B3A - 2)) { - case 0: v = 0; break; - case 1: v = 1; break; - case 2: v = 2; break; - case 3: v = 3; break; - case 4: v = 4; break; - } - D_80126B3C = v; - func_8017C624(a0, -0x60, v); - func_80171A1C(a0); - } -} - - -DEFINE_func_8017DD74() /* dedup: shared engine-core @0x8017DD74 (src/shared) */ - - -extern s32 func_8013767C(s32 a0); -extern void func_80171A1C(u8 *a0); -extern s32 D_8012750C; -extern s32 D_80126B58; -extern s32 D_80126CF0; - -void func_8017DD7C(void) { - s32 v0; - v0 = func_8013767C(D_8012750C); - D_80126CF0 = v0; - func_80171A1C((u8 *)&D_80126B58); -} - - -DEFINE_func_8017DDBC() /* dedup: shared engine-core @0x8017DDBC (src/shared) */ - - - - -extern u8 D_8018F160; -extern u8 D_800B9A11; -extern void func_80129428(void); -extern void func_8013C964(void); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80171A1C(u8 *a0); - -void func_8017DE24(s32 *a0) { - s32 v0 = a0[0x80]; - s32 v1; - v1 = v0 - 1; - a0[0x80] = v1; - if (v1 != -1) { - return; - } - func_80154274(a0, (s32)&D_8018F160); - func_8013C964(); - D_800B9A11 = 0; - func_80129428(); - func_80171A1C((u8 *)a0); -} - - - -extern s16 D_8011F9C8; -extern s16 D_80126B3A; -extern s32 func_80174650(s32); -extern void func_80029124(s32, s32); -extern void func_80029514(s32); -extern void func_80147060(u8 * a0); -extern void func_80147324(s32 arg0); -extern void func_80171A1C(u8 *a0); - -void func_8017DE8C(a0) -u8 *a0; -{ - u16 flags = *(u16 *)(a0 + 0xB8); - - if (flags & 0x4000) { - func_80147324(0x445); - return; - } - if (!(flags & 0x8000)) { - return; - } - func_80147060(a0); - switch ((s16)(*(u16 *)&D_80126B3A - 2)) { - case 0: - func_80029124(0x16, 1); - func_80029514(0x85); - break; - case 1: - func_80029124(0x17, 1); - break; - case 2: - func_80029124(0x18, 1); - break; - case 3: - func_80029124(0x19, 1); - break; - case 4: - func_80029124(0x1A, 1); - break; - } - (*(s32 *)&D_8011F9C8) = 1; - func_80174650((s32)a0); - func_80171A1C(a0); -} - - -DEFINE_func_8017DF7C() /* dedup: shared engine-core @0x8017DF7C (src/shared) */ - -#define gte_ldv0(r0) __asm__ __volatile__( \ - "lwc2 $0, 0(%0)\n" \ - "lwc2 $1, 4(%0)\n" \ - : : "r"(r0) : "memory") -#define gte_ldv0(r0) __asm__ volatile ( \ - "lwc2 $0, 0( %0 );" \ - "lwc2 $1, 4( %0 )" \ - : \ - : "r"( r0 ) ) -#define gte_ldv3c(r0) __asm__ volatile ( \ - "lwc2 $0, 0( %0 );" \ - "lwc2 $1, 4( %0 );" \ - "lwc2 $2, 8( %0 );" \ - "lwc2 $3, 12( %0 );" \ - "lwc2 $4, 16( %0 );" \ - "lwc2 $5, 20( %0 )" \ - : \ - : "r"( r0 ) ) -#define gte_rtps() __asm__ volatile ("nop;nop;rtps") -#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt") -#define gte_nclip() __asm__ volatile ("nop;nop;nclip") -#define gte_stsxy(r0) __asm__ volatile ( \ - "swc2 $14, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "memory" ) -#define gte_stsxy3(r0, r1, r2) __asm__ volatile ( \ - "swc2 $12, 0( %0 );" \ - "swc2 $13, 0( %1 );" \ - "swc2 $14, 0( %2 )" \ - : \ - : "r"( r0 ), "r"( r1 ), "r"( r2 ) \ - : "memory" ) -#define gte_stsxy3c(r0) __asm__ volatile ( \ - "swc2 $12, 0( %0 );" \ - "swc2 $13, 4( %0 );" \ - "swc2 $14, 8( %0 )" \ - : \ - : "r"( r0 ) \ - : "memory" ) -#define gte_stsxy3_ft3(r0) __asm__ volatile ( \ - "swc2 $12, 8( %0 );" \ - "swc2 $13, 16( %0 );" \ - "swc2 $14, 24( %0 )" \ - : \ - : "r"( r0 ) \ - : "memory" ) -#define gte_stsz3(r0, r1, r2) __asm__ volatile ( \ - "swc2 $17, 0( %0 );" \ - "swc2 $18, 0( %1 );" \ - "swc2 $19, 0( %2 )" \ - : \ - : "r"( r0 ), "r"( r1 ), "r"( r2 ) \ - : "memory" ) -#define gte_stsz4(r0, r1, r2, r3) __asm__ volatile ( \ - "swc2 $16, 0( %0 );" \ - "swc2 $17, 0( %1 );" \ - "swc2 $18, 0( %2 );" \ - "swc2 $19, 0( %3 )" \ - : \ - : "r"( r0 ), "r"( r1 ), "r"( r2 ), "r"( r3 ) ) -#define gte_stszotz(r0) __asm__ volatile ( \ - "mfc2 $12, $19;" \ - "nop;" \ - "sra $12, $12, 2;" \ - "sw $12, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "$12", "memory" ) -#define gte_stflg(r0) __asm__ volatile ( \ - "cfc2 $12, $31;" \ - "nop;" \ - "sw $12, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "$12", "memory" ) -#define gte_stopz(r0) __asm__ volatile ( \ - "swc2 $24, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "memory" ) - - -void func_8017DF84(s32 arg0, s32 arg1, s32 arg2, s32 arg3) -{ - /* vy UNSIGNED: the `+=` reads it with lhu, not lh. */ - - extern s32 func_800491EC(void); - extern void func_800547D8(s32, MATRIX2 *); - extern void func_80052E38(MATRIX2 *); - extern u8 *D_800A5E60; - extern u8 D_800A6610[]; - extern u16 D_8018F250[]; - - DVECTOR2 tmpxy[4]; /* sp+0x10 */ - SVECTOR2 box[8]; /* sp+0x20 */ - SVECTOR2 sxy[8]; /* sp+0x60 */ - SVec_8017DF84 v[3]; /* sp+0xA0 */ - SVec_8017DF84 vdv; /* sp+0xB8 */ - MATRIX2 mtx; /* sp+0xC0 */ - struct { long otz, flag, opz, sz0, sz1, sz2, sz3; } g; /* sp+0xE0 */ - - s32 lim; /* spill 0x100 */ - u32 ot; /* spill 0x108 */ - s32 nparts; /* spill 0x110 */ - s32 j; - u32 nprim; - u32 i; - Part *part; /* spill 0x118 */ - SVec_8017DF84 *vp; - Prim_8017DF84 *prim; - u8 *pkt; - u8 *vtx; - u8 *va, *vb, *vc, *vd; - u32 w; - u32 m24; - s32 code; /* SIGNED: the switch tree uses slti, not sltiu */ - u32 wx, wy, wz; - s32 rot; - s32 zoff; - s32 xa32, xb32, t32; - s32 xmn1, xmx1, xmn2, xmx2; - s32 mnc, mxc; - s16 my, mny, mx, mn; - - if (*(s32 *)arg0 == 0) { - lim = func_800491EC() + *(s32 *)(arg0 + 0x64); - func_800547D8(arg0 + 0x10, &mtx); - func_80052E38(&mtx); - pkt = D_800A5E60; - - nparts = *(s32 *)(arg1 + 8); - ot = (u32)&D_800A6610[(*(u16 *)&D_800B9A02) << 14]; - rot = arg2; - zoff = arg3; - vtx = *(u8 **)(arg1 + 0x10); - part = (Part *)(arg1 + 0x14); - - for (j = 0; j < nparts; j++, part++) { - wx = part->xx; - mn = wx; - mx = wx >> 16; - wy = part->yy; - mny = wy + zoff; - my = (wy >> 16) + zoff; - wz = part->zz; - box[0].vx = mn; box[0].vy = mny; box[0].vz = wz; - box[1].vx = mx; box[1].vy = mny; box[1].vz = wz; - box[2].vx = mn; box[2].vy = mny; box[2].vz = wz >> 16; - box[3].vx = mx; box[3].vy = mny; box[3].vz = wz >> 16; - - gte_ldv3c(&box[0]); - gte_rtpt(); - gte_stsxy3(&sxy[0], &sxy[1], &sxy[2]); - gte_ldv0(&box[3]); - gte_rtps(); - - box[4].vx = mn; box[4].vy = my; box[4].vz = wz; - box[5].vx = mx; box[5].vy = my; box[5].vz = wz; - box[6].vx = mn; box[6].vy = my; box[6].vz = wz >> 16; - box[7].vx = mx; box[7].vy = my; box[7].vz = wz >> 16; - - gte_stsxy(&sxy[3]); - gte_ldv3c(&box[4]); - __asm__ volatile (""); /* §47 live-length slider (carried from the twin) */ - gte_rtpt(); - gte_stsxy3(&sxy[4], &sxy[5], &sxy[6]); - gte_ldv0(&box[7]); - gte_rtps(); - gte_stsxy(&sxy[7]); - gte_stszotz(&g.otz); - - if (lim >= g.otz) { - xa32 = sxy[0].vx; - xb32 = sxy[1].vx; - if (xb32 < xa32) { xmx1 = xa32; xmn1 = xb32; } else { xmn1 = xa32; xmx1 = xb32; } - t32 = sxy[2].vx; - if (xmx1 < t32) xmx1 = t32; else if (t32 < xmn1) xmn1 = t32; - t32 = sxy[3].vx; - if (xmx1 < t32) xmx1 = t32; else if (t32 < xmn1) xmn1 = t32; - xa32 = sxy[4].vx; - xb32 = sxy[5].vx; - if (xb32 < xa32) { xmx2 = xa32; xmn2 = xb32; } else { xmn2 = xa32; xmx2 = xb32; } - t32 = sxy[6].vx; - if (xmx2 < t32) xmx2 = t32; else if (t32 < xmn2) xmn2 = t32; - t32 = sxy[7].vx; - if (xmx2 < t32) xmx2 = t32; else if (t32 < xmn2) xmn2 = t32; - mnc = xmn1; - if (xmn2 < xmn1) mnc = xmn2; - mxc = xmx1; - if (mxc < xmx2) mxc = xmx2; - if ((s16)mxc >= -0xA0 && (s16)mnc < 0xA1) { - xa32 = sxy[0].vy; - xb32 = sxy[1].vy; - if (xb32 < xa32) { xmx1 = xa32; xmn1 = xb32; } else { xmn1 = xa32; xmx1 = xb32; } - t32 = sxy[2].vy; - if (xmx1 < t32) xmx1 = t32; else if (t32 < xmn1) xmn1 = t32; - t32 = sxy[3].vy; - if (xmx1 < t32) xmx1 = t32; else if (t32 < xmn1) xmn1 = t32; - xa32 = sxy[4].vy; - xb32 = sxy[5].vy; - if (xb32 < xa32) { xmx2 = xa32; xmn2 = xb32; } else { xmn2 = xa32; xmx2 = xb32; } - t32 = sxy[6].vy; - if (xmx2 < t32) xmx2 = t32; else if (t32 < xmn2) xmn2 = t32; - t32 = sxy[7].vy; - if (xmx2 < t32) xmx2 = t32; else if (t32 < xmn2) xmn2 = t32; - mnc = xmn1; - if (xmn2 < xmn1) mnc = xmn2; - mxc = xmx1; - if (mxc < xmx2) mxc = xmx2; - if ((s16)mxc >= -0x6E && (s16)mnc < 0x6F) { - prim = (Prim_8017DF84 *)part->prim; - nprim = part->nprim; - for (i = 0; i < nprim; i++, prim++) { - m24 = 0xFFFFFF; - vp = &vdv; - w = prim->w1; - va = vtx + (w & 0xFFFF); - vb = vtx + (w >> 16); - w = prim->w2; - vc = vtx + (w & 0xFFFF); - v[0] = *(SVec_8017DF84 *)va; - v[1] = *(SVec_8017DF84 *)vb; - v[2] = *(SVec_8017DF84 *)vc; - w = w >> 16; - v[0].vy += D_8018F250[(v[0].vz + rot) & 0xFF] + zoff; - v[1].vy += D_8018F250[(v[1].vz + rot) & 0xFF] + zoff; - v[2].vy += D_8018F250[(v[2].vz + rot) & 0xFF] + zoff; - gte_ldv3c(&v[0]); - gte_rtpt(); - gte_stflg(&g.flag); - if (!(g.flag & 0x7F85E000)) { - gte_nclip(); - code = w & 7; - vd = vtx + (w & 0xFFF8); - gte_stopz(&g.opz); - if (g.opz > 0) { - switch (code) { - case 6: - case 7: - gte_stsxy3_ft3(pkt); - gte_stsz3(&g.sz0, &g.sz1, &g.sz2); - if (((PolyFT3 *)pkt)->x0 > ((PolyFT3 *)pkt)->x1) { - mx = ((PolyFT3 *)pkt)->x0; - mn = ((PolyFT3 *)pkt)->x1; - } else { - mn = ((PolyFT3 *)pkt)->x0; - mx = ((PolyFT3 *)pkt)->x1; - } - if (((PolyFT3 *)pkt)->x2 > mx) mx = ((PolyFT3 *)pkt)->x2; - else if (((PolyFT3 *)pkt)->x2 < mn) mn = ((PolyFT3 *)pkt)->x2; - if (mx >= -0xA0 && mn < 0xA1) { - if (((PolyFT3 *)pkt)->y0 > ((PolyFT3 *)pkt)->y1) { - my = ((PolyFT3 *)pkt)->y0; - mny = ((PolyFT3 *)pkt)->y1; - } else { - mny = ((PolyFT3 *)pkt)->y0; - my = ((PolyFT3 *)pkt)->y1; - } - if (((PolyFT3 *)pkt)->y2 > my) my = ((PolyFT3 *)pkt)->y2; - else if (((PolyFT3 *)pkt)->y2 < mny) mny = ((PolyFT3 *)pkt)->y2; - if (my >= -0x6E && mny < 0x6F) { - s32 za; - u32 *otp; - u32 *tp; - if (g.sz0 > g.sz1) { - za = g.sz0; - if (za < g.sz2) za = g.sz2; - } else { - za = g.sz1; - if (za < g.sz2) za = g.sz2; - } - g.opz = za; - if (code == 7) g.opz = za + 0x200; - tp = (u32 *)prim->w0; - ((PolyFT3 *)pkt)->rgbc = tp[0] | 0x2000000; - ((PolyFT3 *)pkt)->uvc0 = tp[1]; - ((PolyFT3 *)pkt)->uvp1 = tp[2]; - ((PolyFT3 *)pkt)->uv2 = tp[3]; - otp = (u32 *)(((g.opz >> 2) << 2) + ot); - *(u32 *)pkt = (*otp & m24) | 0x7000000; - *otp = (*otp & 0xFF000000) | ((u32)pkt & m24); - pkt += 0x28; - } - } - break; - case 2: - case 3: - gte_stsxy3c(&tmpxy[0]); - vdv = *(SVec_8017DF84 *)vd; - vdv.vy += D_8018F250[(vdv.vz + rot) & 0xFF] + zoff; - gte_ldv0(vp); - gte_rtps(); - if (tmpxy[0].vx > tmpxy[1].vx) { - mx = tmpxy[0].vx; - mn = tmpxy[1].vx; - } else { - mn = tmpxy[0].vx; - mx = tmpxy[1].vx; - } - if (tmpxy[2].vx > mx) mx = tmpxy[2].vx; - else if (tmpxy[2].vx < mn) mn = tmpxy[2].vx; - if (tmpxy[0].vy > tmpxy[1].vy) { - my = tmpxy[0].vy; - mny = tmpxy[1].vy; - } else { - mny = tmpxy[0].vy; - my = tmpxy[1].vy; - } - if (tmpxy[2].vy > my) my = tmpxy[2].vy; - else if (tmpxy[2].vy < mny) mny = tmpxy[2].vy; - gte_stflg(&g.flag); - if (!(g.flag & 0x7F85E000)) { - gte_stsz4(&g.sz0, &g.sz1, &g.sz2, &g.sz3); - gte_stsxy((long *)&((PolyFT4 *)pkt)->x3); - if (((PolyFT4 *)pkt)->x3 < mn) mn = ((PolyFT4 *)pkt)->x3; - else if (mx < ((PolyFT4 *)pkt)->x3) mx = ((PolyFT4 *)pkt)->x3; - if (mx >= -0xA0 && mn < 0xA1) { - if (((PolyFT4 *)pkt)->y3 < mny) mny = ((PolyFT4 *)pkt)->y3; - else if (my < ((PolyFT4 *)pkt)->y3) my = ((PolyFT4 *)pkt)->y3; - if (my >= -0x6E && mny < 0x6F) { - s32 za, zb; - u32 *otp; - u32 *tp; - u32 uvw; - zb = g.sz2; - if (zb < g.sz3) zb = g.sz3; - za = g.sz0; - if (za < g.sz1) za = g.sz1; - if (za < zb) za = zb; - g.opz = za; - if (code == 3) g.opz = za + 0x200; - *(u32 *)&((PolyFT4 *)pkt)->x0 = *(u32 *)&tmpxy[0]; - *(u32 *)&((PolyFT4 *)pkt)->x1 = *(u32 *)&tmpxy[1]; - *(u32 *)&((PolyFT4 *)pkt)->x2 = *(u32 *)&tmpxy[2]; - tp = (u32 *)prim->w0; - ((PolyFT4 *)pkt)->rgbc = tp[0] | 0x2000000; - ((PolyFT4 *)pkt)->uvc0 = tp[1]; - ((PolyFT4 *)pkt)->uvp1 = tp[2]; - uvw = tp[3]; - ((PolyFT4 *)pkt)->uv2 = uvw; - ((PolyFT4 *)pkt)->uv3 = uvw >> 16; - otp = (u32 *)(((g.opz >> 2) << 2) + ot); - *(u32 *)pkt = (*otp & m24) | 0x9000000; - *otp = (*otp & 0xFF000000) | ((u32)pkt & m24); - pkt += 0x28; - } - } - } - break; - } - } - } - } - } - } - } - } - D_800A5E60 = pkt; - } -} - - diff --git a/src/ov_SC03_015/ov_SC03_015_jr_8017EB7C.c b/src/ov_SC03_015/ov_SC03_015_jr_8017EB7C.c deleted file mode 100644 index d56ca0d84..000000000 --- a/src/ov_SC03_015/ov_SC03_015_jr_8017EB7C.c +++ /dev/null @@ -1,6065 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ - /* 12-byte sub-table record (stride 0xC) */ - /* 0x20 bytes */ - /* 4 + 16*12 = 0xC4 stride */ - /* 0x08 */ - /* 0x20 */ -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8; -typedef void (*Handler)(struct Entry_8016E95C *); - /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ - /* 16-byte stride array element */ -extern void func_801458E0(void); -extern s32 D_800AE6AC; -extern s32 D_800AE6B0; -extern s16 D_800B9A0A; -extern u8 D_80078E50; -extern void func_800D185C(u8 *a0); -extern void func_801458E8(void); -extern s32 func_80029504(void); -extern void func_80145B24(void); -extern u8 D_8018DAA4; -extern u8 D_8018DA14; -extern u8 D_8018D9F0; -extern u8 D_8018D9CC; -extern u8 D_8018DA80; -extern u8 D_8018DA5C; -extern u8 D_8018DA38; -extern u8 D_8018D9A8; -extern void func_80145934(void); -extern u8 D_8018DB34; -extern u8 D_8018DB10; -extern u8 D_8018DAEC; -extern u8 D_8018DAC8; -extern void func_80145A2C(void); -extern s32 func_800291DC(s32); -extern void func_800291C8(s32, s32); -extern void func_80162120(void); -extern void func_80029124(s32, s32); -extern s32 func_80165A50(s32); -extern void func_80029514(s32); -extern u8 D_800AF630[]; -extern u8 D_80078EC0; -extern s32 func_80028FBC(void); -extern s32 func_80029000(void); -extern s32 func_80028D9C(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_80145BF8(void); -extern s32 func_800291B4(s32 arg); -extern void func_800291A0(s32, s32); -extern void func_80145C54(void); -extern s32 func_80145CEC(); -extern s32 func_80029178(s32 arg); -extern void func_80146014(s32 a0); -extern unsigned char D_8018CF2C[]; -extern unsigned char D_8018CF5C[]; -extern unsigned char D_8018CFAC[]; -extern unsigned char D_8018CFDC[]; -extern unsigned char D_8018D00C[]; -extern void func_80145EE8(s32 param_1); -extern void MoveImage(void *a0, s32 a1, s32 a2); -extern void func_80146074(void); -extern s32 func_80146128(void); -extern void func_80146360(void); -extern void func_801463A0(); -extern void func_8014607C(void); -extern s32 *D_80126B78; -extern u8 D_80078EC1; -extern s32 D_80078EC8; -extern s32 D_80126B9C; -extern s32 D_8011F730; -extern u16 D_801152B8; -extern u16 D_8012693A; -extern u8 D_80126BE0[]; -extern u8 D_801150F0[]; -extern void *memcpy(void *dst, const void *src, u32 n); -extern void func_80146FC4(s32 a0); -extern void func_80150A70(s32 a0); -extern void func_80147098(s32 *a0); -extern void func_8014A638(s32 arg0); -extern s32 func_80155458(s32 a0); -extern s32 func_80029104(void); -extern void func_80029344(void); -extern void func_8014ADE0(s32 a0); -extern void func_8014B350(s32 a0); -extern void func_8014B7A4(s16 *param_1); -extern s32 func_80161D58(s32 a0); -extern void func_80161A90(s32 a0); -extern void func_8014B504(u16 *a0); -extern void func_80149BEC(s32 a0); -extern void func_8014B5D0(s32 *a0); -extern void func_8014C99C(u8 *a0); -extern void func_8014B190(s32 s0); -extern void func_80148648(s32 a0, s32 a1); -extern s32 func_80149228(s32 a0); -extern void func_8014A59C(s32 a0); -extern void func_8016F14C(void *a0); -extern void func_80154418(void *a0); -extern void func_80154BE4(s32 a0); -extern void func_80165694(s32 arg0); -extern void func_801654A8(s32 a0); -extern void func_8014A680(s32 a0); -extern void func_8014A6A8(s32 a0); -extern void func_8014A71C(s32 a0); -extern void func_80172588(s32 *a0); -extern void func_801473DC(s32 *a0); -extern void func_80015978(s32 a0, s32 *a1); -extern void (*D_8018D05C[])(void *); -extern u8 D_80126BA4; -extern s32 D_80127098; -extern s32 D_80127094; -extern s32 D_80127090; -extern void func_80146534(void); -extern void func_8001D074(s32 a0, s32 a1); -extern void func_80146554(void); -extern void func_80146578(void); -extern void func_8001CFDC(s32, s32); -extern void func_8014659C(void); -extern void func_8001D074(s32, s32); -extern void func_801465C0(void); -extern void func_801465E4(void); -extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); -extern s32 D_8011F9D0; -extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); -extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 D_8011F750; -extern s32 D_8011F754; -extern u8 * func_801468C8(s32 arg0, u8 arg1); -extern s32 D_8011D030; -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); -extern s32 func_80146B9C(void *a0); -extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); -extern u16 D_8011DA28; -extern s32 func_80146B9C(void * arg0); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80146CA0(void *a0); -extern void func_80146CB4(void *a0); -extern void func_80146CC8(s32 a0); -extern void func_80146D30(s32 a0); -extern void func_80146D80(s32 *a0); -extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80146D90(s32 a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); -extern void func_80146E90(s32 *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80015954(s32 a0, s32 a1); -extern void func_80149374(s32 a0, s32 a1); -extern void func_80146F58(s32 a0, s32 a1); -extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 func_8012A68C(void); -extern s16 func_8012A758(void); -extern void func_8004978C(s16 *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern u8 D_80126DB0[]; -extern u16 D_80126DB6; -extern void func_8014704C(s32 *a0); -extern s32 func_80147054(void *a0); -extern void func_80147060(u8 * a0); -extern void func_8014706C(void *arg0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80147084(s32 *a0); -extern void func_8014708C(void *arg0); -extern s32 func_801470A0(void *a0); -extern void func_801470AC(s32 *a0); -extern void func_801470B4(s32 arg0); -extern void func_801470C0(s32 a0); -extern void func_80147118(s32 a0); -extern s16 D_80126BB8; -extern s16 D_80126BBA; -extern s16 D_80126BBC; -extern void func_80147264(s32 a0); -extern void func_80147290(void); -extern void func_801472B4(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void *D_8012707C; -extern void func_801472DC(void); -extern void func_801472F0(void *a0); -extern void func_80147364(u16, s32); -extern void func_80147300(u16 arg0); -extern void func_80147324(s32 arg0); -extern void func_801473EC(s32 *a0); -extern void func_80147460(s32 a0); -extern void func_80147514(); -extern void func_80147628(s32 a0); -extern void func_80147478(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); -extern s32 func_800129CC(s32 a0, s32 a1); -extern void func_80147514(s32 arg0); -extern void func_80013F3C(s32 a0); -extern void func_80012558(s32 a0, s32 a1); -extern void func_800126C4(s32 a0, s32 a1); -extern void func_800123F0(s32 a0, s32 a1); -extern void func_80147718(s32 a0); -extern void func_80147788(void *a0, s32 a1); -extern void func_801477A8(void *a0, s32 a1); -extern void func_801477C8(void *a0, s32 a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80147814(s32 a0, s32 a1); -extern void func_80147928(int a0, int a1); -extern void func_8014799C(int a0, int a1); -extern void func_80147A10(int a0, int a1); -extern void func_80147860(int a0, int a1, int a2, int a3); -extern void func_80147948(s32 a0, s32 a1, s32 a2); -extern void func_801479BC(s32 a0, s32 a1, s32 a2); -extern void func_80147A30(s32 a0, s32 a1, s32 a2); -extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147948(int a0, int a1, int a2); -extern void func_801479BC(int a0, int a1, int a2); -extern void func_80147A30(int a0, int a1, int a2); -extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147A84(s32 arg0); -extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147AAC(s32 arg0); -extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80147B5C(s32 a0, void *a1); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern void func_80147B18(s32 a0); -extern void func_80147B5C(s32 arg0, void *arg1); -extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147DC0(s32 a0, s32 a1); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147F50(s32 arg0); -extern void func_80148038(s32 a0, s32 a1); -extern s32 ratan2(s32 a0, s32 a1); -extern s32 csqrt(s32 a0); -extern s32 func_80012A60(s32 a0, s32 a1); -extern void func_80148094(int param_1, short *param_2, int *param_3); -extern void func_801485B8(s32 a0, s32 a1, s32 a2); -extern void func_801484B0(s32 a0, s32 a1); -extern s32 func_80154358(void *a0); -extern void func_801484E8(s32 a0, s32 a1); -extern void func_80148534(s32 a0, s32 a1); -extern void func_8014856C(s32 a0, s32 a1); -extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); -extern void func_80148634(void *a0); -extern u8 D_800B9A64; -extern s32 func_80014DC0(); -extern s32 func_80014D68(); -extern s32 func_80014D94(); -extern s32 func_80014CF8(); -extern void func_800120DC(); -extern s32 func_800CF8B4(); -extern u16 func_801487F4(s32 *a0); -extern u16 func_80148800(s32 *a0); -extern u8 func_8014880C(s32 *a0); -extern u16 func_80148818(s32 *a0); -extern s32 func_80047D3C(s32 a0); -extern s32 func_80148824(void *arg0); -extern s32 func_801488A8(u8 *a0); -extern s32 func_8014891C(s32 a0); -extern s32 func_80148980(u8 *a0); -extern s32 func_801489E8(s32 a0); -extern s32 func_80148A48(s32 a0); -extern int func_80148AFC(void *a0); -extern void func_80148AAC(u8 *a0); -extern s32 func_80148C18(void); -extern s32 func_80148C20(s32 a0, s16 a1); -extern s32 func_80148C34(s32 a0, s32 a1); -extern s32 func_80148C4C(s32 a0, s32 a1); -extern s32 func_80148C64(s32 a0, s32 a1); -extern s32 func_80148C7C(void); -extern s32 func_80148C84(s32 a0, s32 a1); -extern s32 func_80148C9C(s32 a0, s32 a1); -extern s32 func_80148CB4(s32 a0, s32 a1); -extern s32 func_80148CCC(s32 a0, s32 a1); -extern s32 func_80148CE4(void); -extern s32 func_80148CEC(void); -extern s32 func_80148CF4(s32 a0, s32 a1); -extern s32 func_80148D0C(s32 a0, s32 a1); -extern s32 func_80148D24(void *a0, int a1); -extern s32 func_80148D3C(void); -extern s32 func_80148F60(void); -extern s32 func_80148F68(s32 a0); -extern s32 func_80148F74(s32 a0); -extern s32 func_80148F80(s32 a0); -extern s32 func_80148F8C(s32 a0); -extern s32 func_80148F98(void); -extern s32 func_80148FA0(s32 a0); -extern s32 func_80148FAC(s32 a0); -extern s32 func_80148FB8(s32 a0); -extern s32 func_80148FC4(s32 a0); -extern s32 func_80148FD0(void); -extern s32 func_80148FD8(void); -extern s32 func_80148FE0(s32 a0); -extern s32 func_80148FEC(s32 a0); -extern s32 func_80148FF8(s32 a0); -extern s32 func_80149004(void); -extern void func_8014900C(s32 *a0); -extern void func_80149020(s32 *a0); -extern void func_80149034(s32 *a0); -extern void func_80149048(s32 *a0); -extern void func_8014905C(u8 *a0); -extern void func_801490E0(s32 *a0, s16 a1); -extern void func_801490E8(s32 *a0, s16 a1); -extern void func_801490F0(s32 *a0, s16 a1); -extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); -extern void func_801490F8(s32 a0, s32 a1); -extern s32 func_801491C4(s32 a0); -extern s32 func_80149184(s32 a0); -extern s32 D_801151D4; -extern void func_80149204(s32 *a0); -extern void func_80149210(s32 a0, s32 a1); -extern s32 func_80149284(s32 *a0, s32 a1); -extern void func_80149350(s32 arg0); -extern void func_80149290(s32 a0); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_80149374(s32 arg0, s32 arg1); -extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8014942C(s32 arg0); -extern void func_8012EF70(s32 a0, s32 a1); -extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012EFB8(s32 a0); -extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); -extern void func_8014964C(s32 param_1, s32 param_2); -extern s32 func_801496D4(void *a0); -extern void func_8015AD08(); -extern void func_80149704(void); -extern void func_8015ACC4(); -extern void func_80149724(void); -extern u8 D_80078EBF; -extern s32 func_80149744(struct S_80149744 *a0); -extern void func_8015F7A0(); -extern void func_80149788(void); -extern void func_801653B8(); -extern void func_80149864(void); -extern s16 currentLocationId; -extern s32 func_8016F1AC(void); -extern s32 func_80149884(void); -extern void func_80160B00(); -extern void func_801498C0(void); -extern s32 func_80149AA8(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern void func_80146750(void *a0); -extern s32 func_801498E0(s32 *a0); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_80147364(u16 a0, s32 a1); -extern s32 func_800CCF28(s32 a0); -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_8015DAC4(s32 *a0); -extern void func_8015554C(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern void func_80149B14(s32 *a0); -extern u8 func_8014BEF8(void); -extern s32 func_80149B54(s32 * arg0); -extern void func_8015DE24(s32 *a0); -extern void func_80157510(s32 *a0); -extern void func_80149BAC(s32 *a0); -extern s32 func_80029178(s32 a0); -extern s32 func_80149C08(s32 arg0); -extern void func_801577C8(); -extern void func_80149C94(void); -extern void func_80157D20(void); -extern void func_80149CB4(void); -extern s32 func_80149CD4(s32 a0); -extern u8 func_8014B5B8(s32 *a0); -extern s32 func_80149D10(s32 a0); -extern s32 func_80149E94(s32 a0); -extern s32 func_80149DD8(s32 a0); -extern s32 func_80149D9C(s32 a0); -extern s32 func_80149F2C(s32 a0, s32 a1); -extern s32 func_80149E94(s32 arg0); -extern void func_80149FA8(void); -extern s32 D_8018D124[]; -extern u8 D_80078E78[]; -extern s32 func_80149FB0(s32 a0); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern void func_8014A1B0(s32 a0, s32 a1); -extern s32 func_8014A048(s32 param_1); -extern u16 func_80156370(u16 a0); -extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); -extern void func_8015D4B4(); -extern void func_8014A218(void); -extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); -extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); -extern s32 func_8014A238(s32 arg0); -extern s32 func_8014A2E4(s32 a0); -extern void func_8014A380(s32 a0, s32 a1); -extern s16 D_801152B0; -extern s16 D_801152B4; -extern s32 func_8014A3E0(struct S_8014A3E0 *a0); -extern s32 func_8014A454(s32 a0); -extern s32 func_8014A4B4(void *a0); -extern void func_8015EDD4(); -extern void func_8014A4FC(void); -extern s32 func_8014A674(s32 *a0); -extern s32 func_8014A69C(s32 *a0); -extern s32 func_8014A6C4(s32 a0); -extern void func_8015E184(); -extern void func_8014A830(void); -extern s32 func_80029AF4(void); -extern s32 func_8014A850(s32 param_1); -extern void func_8014AA04(s32 a0); -extern void func_801599A4(void *a0); -extern void func_80159B3C(void *a0); -extern s32 func_80165A20(s32 a0); -extern void func_8014AB7C(); -extern void func_8014AC10(); -extern void func_8014AA28(void); -extern void func_8014AB5C(void); -extern void func_80162CCC(void); -extern void func_8014AB7C(s32 arg0); -extern void func_8014ABF0(void); -extern void func_80016714(void *a0, s32 a1); -extern void func_8014AC10(s32 arg0); -extern void func_8014ACC0(s32 a0, s32 a1); -extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); -extern void func_8014ACE8(void *a0, s32 a1, s32 a2); -extern void func_80146AFC(void *a0); -extern void func_8014ADA8(s32 a0, s32 a1); -extern void func_8014AD7C(s32 a0); -extern s32 D_80078E8C; -extern void func_8014B034(s32 arg0); -extern void func_8014B00C(s32 arg0); -extern void func_8014B084(void); -extern s16 D_80078E90; -extern void func_8014B034(s32 a0); -extern u16 D_80078EAC; -extern u8 D_80078EBA; -extern void func_800D10EC(void); -extern void func_8002AC98(void); -extern s32 func_8014B154(s32 *a0); -extern void func_8014B12C(void); -extern void func_8014B2F8(void); -extern void func_8014B4C4(void); -extern void func_8014B160(s32 a0); -extern s32 func_8016F1C4(void); -extern s16 D_80078E96; -extern s16 D_80078EB8; -extern u16 D_80078EA6; -extern void func_8014B2A8(void); -extern void func_8014B310(void); -extern void func_8014B2D0(void); -extern s32 D_80078E94; -extern s32 D_80078ECC; -extern void func_8014B33C(void); -extern u8 D_80062BF4[]; -extern void func_8014BC80(s32 a0, s32 a1); -extern void func_80019064(void *a0); -extern s32 D_80078E98; -extern void func_80166244(); -extern void func_8014B4D4(void *a0); -extern s16 D_80078E9A; -extern u8 D_80126D1C; -extern s32 D_80126D74; -extern void func_8014B598(s32 a0, s32 a1); -extern void func_8014B5B0(s32 *a0); -extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); -extern void func_8014B5D8(s32 s1); -extern s32 D_80078E9C; -extern s32 D_80078ED0; -extern void func_8014B6F0(s32 a0, s32 a1); -extern void func_8014B768(s32 a0, s32 a1); -extern void func_8014B944(s32 a0, s32 a1, s32 a2); -extern s32 D_80078EA4; -extern u16 D_80078EB2; -extern s16 D_80078EB4; -extern void func_8014BB0C(void); -extern void func_8014BB24(s32 a0, s32 a1, s32 a2); -extern void func_8014BC0C(s32 a0, s32 a1); -extern void func_8014BC44(s32 a0, s32 a1); -extern u8 D_800B9A17; -extern void func_8014BCC0(s32 a0, s32 a1); -extern u16 D_80078EB6; -extern s32 func_8014BCEC(s32 a0, s32 a1); -extern void func_8014BD24(s32 a0, s32 a1); -extern void func_8014BD60(s32 param_1, s32 param_2); -extern void func_8014BD98(s32 a0, u16 a1); -extern void func_8014BDC8(void); -extern void func_8014BDE0(void); -extern s32 func_8017267C(s32 *a0); -extern s32 func_80013294(void *a0, void *a1); -extern void func_80029ED4(s32 a0); -extern void func_8014BDE8(s32 a0); -extern void func_8014BE78(void); -extern void func_8014BE9C(void); -extern void func_80029124(s32 a0, s32 a1); -extern void func_8014BEC0(void); -extern void func_8014BF18(s32 a0); -extern void func_8014BF48(void); -extern u8 func_8014BF6C(void); -extern void func_8014BF8C(u8 arg0); -extern void func_8014BFB0(void); -extern u8 func_8014BFD4(void); -extern void func_8014BFF4(s32 a0, s32 a1); -extern void func_8014C010(s32 a0, s32 a1); -extern s32 func_8014C050(s32 a0, s32 a1); -extern s32 func_8014C088(s32 a0, s32 a1); -extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); -extern s32 func_8014C118(void * a0, s32 a1, s32 a2); -extern s32 func_8014C168(s32 * param_1, s32 param_2); -extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); -extern u8 D_8018D1AC[]; -extern void func_8014C1A0(s32 arg0, s32 arg1); -extern s32 func_80013328(s32 a0, s32 a1); -extern s32 func_8014C59C(void *a0, void *a1); -extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); -extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); -extern s32 ratan2(s32 dx, s32 dy); -extern u8 D_8018D1B4; -extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); -extern s16 func_8014C5D0(s32 a0, s32 a1); -extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); -extern u8 D_80126D17; -extern void func_8014C6AC(void); -extern void func_8014C6C0(void); -extern u8 D_80126D1E; -extern void func_8014C6D0(void); -extern void func_8014C6E0(void); -extern s32 func_8014C860(s32 a0, s32 a1); -extern void func_8014C8C8(s32 a0, s32 *a1); -extern void func_8014C88C(s32 a0); -extern void func_8014C8C8(s32 dst, s32 * src); -extern void func_8014C8F0(s32 arg0); -extern u8 D_801151F0[]; -extern s32 func_8014C918(s32 a0, s32 a1); -extern s32 D_80126B50; -extern void func_8014C968(void); -extern void func_8014C978(void); -extern s32 func_8014C98C(void); -extern void func_80139914(s32 a0); -extern s32 func_8014CA00(s32 a0); -extern u16 func_8014CA70(s32 a0, s32 a1); -extern s32 func_8014CA14(s32 a0, s32 a1); -extern u16 func_8014CAE4(s32 *a0, s32 a1); -extern s32 func_8014CA88(s32 *a0, s32 a1); -extern s32 func_8014CAFC(void); -extern s32 func_8014CB0C(void); -extern s32 func_8014CB1C(void); -extern u8 D_80126D1F; -extern s32 func_8014CB2C(void); -extern s32 func_8014CB58(void); -extern u8 D_80126D1D; -extern void func_8014CB68(void); -extern s32 func_8014CB7C(void); -extern s32 func_8014CB8C(void); -extern short D_80126C9E; -extern void func_8014CB9C(struct Packed8 *a0); -extern s32 D_80126CDC; -extern void func_8014CBD8(void); -extern s16 D_80126CC4; -extern void func_8014CBE8(void); -extern void func_8014CBF8(void *a0); -extern void func_8014D3E0(s32 a0); -extern void func_8014D04C(void); -extern void func_8014CCB4(void); -extern void func_8014CC28(s32 a0); -extern void func_8014CD0C(u8 *a0); -extern s32 func_8014CF04(s32 a0, s32 a1, void *a2); -extern void func_8014CD80(s32 a0, void *a1, void *a2); -extern void func_8014D0A4(s32 a0); -extern s32 func_8014D2A0(s32 a0, void *a1, void *a2); -extern s32 func_8014D12C(s32 a0, void *a1, void *a2); -extern void func_8014D438(s32 a0); -extern void func_8014D3E0(s32 _arg0); -extern void func_8014D610(s32 a0, void *a1, void *a2); -extern s32 func_8014D4C0(s32 a0, void *a1, void *a2); -extern void func_8014D790(s32 a0); -extern void func_8014D738(void); -extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); -extern s32 func_8014D820(s32 a0, u16 *a1, u16 *a2); -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); -extern void func_8014DF94(s32 arg0); -extern void func_8014DF3C(void); -extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ -extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ -extern s16 D_801152AC; -extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); -extern void func_8014E48C(s32 a0); -extern void func_8014E434(void); -extern void func_8014E5B4(s32 a0, void *a1, void *a2); -extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); -extern void func_8014E6F8(struct SubE6F8 *a0); -extern void func_8014E6A0(void); -extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); -extern void func_8014E934(s32 _arg0); -extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); -extern s32 func_8014E98C(void *a0); -extern s32 D_801150D8; -extern s16 D_801152AA; -extern u8 D_80126720[]; -extern s16 D_80126724; -extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); -extern s32 func_8014ED80(struct SubED80 *a0); -extern int D_801E9698; -extern void func_8014ED28(s32 _arg0); -extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F24C(struct SubF24C *a0); -extern void func_8014F1F4(void); -extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F4C0(); -extern s32 func_8014F468(void); -extern int func_8014F74C(); -extern int func_8014F6F4(void); -extern u8 D_800D3918[]; -extern u8 D_801152A8[]; -extern s32 D_801152BC; -extern int func_8014F74C(s32 arg0); -extern s32 func_8014FA70(s32 a0); -extern s32 D_801E969C; -extern void func_8014FA04(s32 a0); -extern s32 func_8014FBC0(); -extern s32 func_8014FC18(u8 *self); -extern int func_8014FD54(int param_1); -extern void func_8014FCFC(void); -extern void func_80150170(void *a0); -extern s32 func_8014FE60(void *a0); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_8014FE60(void *e); -extern s32 func_80134510(s32 arg); -extern s32 func_80150150(s32 a, s32 b); -extern s32 func_80150460(s32 a, s32 b); -extern void func_801504D8(u16 *a0); -extern s32 func_80150480(s32 _arg0); -extern s32 func_80150528(void *a0, void *a1, void *a2); -extern s32 func_80150528(void *arg0, void *arg1, void *arg2); -extern s32 func_801506A4(s32 a0, s32 a1); -extern s32 func_801505FC(s32 a0); -extern s32 func_801506A4(s32 arg0, s32 arg1); -extern void func_80150820(s32 a0, s32 a1); -extern void func_8015086C(int param_1); -extern s32 func_801508B4(s32 a0); -extern s32 func_8015094C(s32 a0); -extern short func_801508F8(s32 a0); -extern s32 D_8018D1E4; -extern s32 D_80126990; -extern s32 D_80126994; -extern s32 func_80021174(s32 a0, s32 a1); -extern s32 func_8015094C(s32 param_1); -extern void func_80150B9C(void); -extern s32 func_80151184(s32 a0, s32 a1, s32 a2); -extern s32 func_80150BA4(s32 a0); -extern s32 func_801619D0(void *a0); -extern void func_80150BC8(s32 *a0); -extern s32 func_80150480(s32 a0); -extern u16 D_800AE6DC; -extern void func_80150C48(s32 a0); -extern int func_80151184(int arg, int a1, int a2); -extern int func_80150CA0(int arg); -extern void func_80150EC4(s32 a, s32 b); -extern void func_80150CC4(s32 a); -extern void func_80150CE4(s32 a); -extern void func_80150D04(s32 a); -extern void func_80150D24(s32 a); -extern void func_80150D44(s32 a); -extern void func_80150D64(s32 a); -extern void func_80150D84(s32 a); -extern void func_80150DA4(s32 a); -extern void func_80150DC4(s32 a); -extern void func_80150DE4(s32 a); -extern void func_80150E04(s32 a); -extern void func_80150E24(s32 a); -extern void func_80150E44(s32 a); -extern void func_80150EC4(s32 a0, s32 a1); -extern void func_80150E64(s32 a0); -extern void func_80150E84(s32 a0); -extern void func_80150EA4(s32 a0); -extern u8 D_800AE6C0; -extern s16 D_800AE6C8; -extern s16 D_800AE6CA; -extern s16 D_800AE6CC; -extern s32 D_800AE6C4; -extern s16 D_800AE6CE; -extern u8 D_800AE6BE; -extern u8 D_801201F8[]; -extern void func_80150F78(void); -extern void func_80150F80(s32 a0); -extern int func_80150FB4(int arg); -extern void func_80150FD8(s32 a0); -extern int func_80151014(int arg); -extern void func_80151038(s32 a0); -extern int func_80151070(int arg); -extern int func_80151094(int arg); -extern void func_801510B8(void); -extern void func_801510C0(void); -extern int func_801510C8(int arg); -extern int func_801510EC(int arg); -extern s32 func_8012DB84(void); -extern s32 func_80151110(void); -extern void func_80151130(void); -extern int func_80151138(int arg); -extern void func_8015115C(s32 *a0, s16 a1); -extern s32 func_80151164(s32 a0, s32 a1); -extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); -extern void func_801511A8(u8 *a0); -extern void func_801511C4(u8 *a0); -extern int func_80151204(int arg, int a1); -extern int func_801511E0(int arg); -extern int func_80151204(int a0, int a1); -extern void func_80151238(void *a0); -extern void func_8015126C(u16 *p); -extern void func_80151780(s32 a0); -extern void func_801516F0(s32 *a0); -extern void func_8015173C(s32 *a0); -extern s16 D_8011DB1A; -extern s32 D_80127518; -extern s32 D_801151FC; -extern s32 func_801725CC(u8 *a0); -extern s32 func_80029D3C(void); -extern void func_80151878(void); -extern void func_80153B58(s32 *a0); -extern s32 func_80151880(s32 a0); -extern s32 func_801518D8(s32 a0); -extern s32 func_80151944(void); -extern s32 func_80151924(void); -extern void func_8014E934(s32 a0); -extern s32 func_8014F3E8(s32 a0); -extern void func_801519C8(s32 a0); -extern void func_80151980(s32 a0); -extern M2C_UNK D_800D5880; -extern s32 D_800D58AC; -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801519C8(s32 arg0); -extern void func_80151C54(s32 a0); -extern void func_801542DC(s32 *a0, s32 a1); -extern void func_8015BDD0(s32 *a0); -extern void func_80165718(s32 a0); -extern u8 D_800D46E4[]; -extern void func_80151AE4(s32 arg0); -extern void (*D_8018D28C[])(void); -extern void func_80151D24(void *a0); -extern void func_80151DB0(s32 a0); -extern void func_80151D60(void *a0); -extern s32 func_80172630(u8 *a0); -extern s32 D_80062C14; -extern void func_80151DB0(s32 param_1); -extern void func_80151E78(s32 *a0); -extern void func_80151ECC(struct S80151ECC *a0); -extern void func_80151FB4(s32 a0); -extern void func_80151F38(s32 *a0); -extern void func_801553C0(s32 a0); -extern void func_80153C18(); -extern void (*D_8018D2B0[])(void); -extern void func_80152058(void *a0); -extern void func_801520DC(s32 a0); -extern void func_80152094(s32 a0); -extern void func_80147324(s32 a0); -extern u8 D_80062C04[]; -extern M2C_UNK D_8018D2A0; -extern void func_801520DC(s32 arg0); -extern void func_801470B4(s32 a0); -extern void func_8015369C(s32 a0); -extern void func_80152194(s32 *a0); -extern s32 func_801536DC(s32 a0); -extern void func_8015220C(s32 a0); -extern s32 func_80153800(s32 a0); -extern void func_801522CC(s32 a0); -extern void func_80152254(s32 *a0); -extern void (*D_8018D2C4[])(void); -extern void func_80152370(void *a0); -extern void func_801523F4(s32 a0); -extern void func_801523AC(s32 a0); -extern void func_8001382C(s32 a0, void *a1, void *a2); -extern u8 D_8018D2D0[]; -extern void func_801523F4(s32 arg0); -extern void func_801525F4(int); -extern s32 func_801535F4(void *arg0); -extern void func_8015BF48(s32 *a0); -extern void func_80152500(int param_1); -extern void func_801525F4(s32 a0); -extern void (*D_8018D2E0[])(void); -extern void func_80152698(void *a0); -extern void func_80152714(s32 a0); -extern void func_801526D4(s32 a0); -extern void func_80152790(s32 a0); -extern void (*D_8018D2F8[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018D2E8; -extern void func_801528B0(s32 arg0); -extern void func_8015294C(s32 a0); -extern void func_80152A08(s32 a0); -extern void func_80152AC8(s32 a0); -extern void func_80152A50(s32 *a0); -extern void (*D_8018D30C[])(void); -extern void func_80152B6C(void *a0); -extern void func_80152BF0(s32 a0); -extern void func_80152BA8(s32 a0); -extern void func_80152C80(s32 *a0); -extern void func_80152C40(s32 *a0); -extern void (*D_8018D328[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018D318; -extern void func_80152DA8(s32 arg0); -extern void func_80152E4C(s32 a0); -extern void func_80152EFC(s32 a0); -extern void func_80152FBC(s32 a0); -extern void func_80152F44(s32 *a0); -extern void (*D_8018D33C[])(void); -extern void func_80153060(void *a0); -extern void func_801530E4(s32 a0); -extern void func_8015309C(s32 a0); -extern void func_80155440(s32 *a0); -extern void func_801530E4(s32 arg0); -extern void func_80153150(struct S80153150 *a0); -extern void func_801531BC(s32 a0); -extern void func_8015327C(s32 a0); -extern void func_80153204(s32 *a0); -extern void (*D_8018D350[])(void); -extern void func_80153320(void *a0); -extern void func_801533A4(s32 a0); -extern void func_8015335C(s32 a0); -extern void func_80153410(s32 *a0); -extern void func_80153490(s32 a0); -extern void func_80153550(s32 a0); -extern void func_801534D8(s32 *a0); -extern void (*D_8011DB28)(s32 a0); -extern s32 func_801536DC(s32 param_1); -extern void func_800139C8(s32 a0, void *a1, void *a2); -extern s32 func_80153978(s32 a0, u16 *src); -extern s32 func_80133784(s32 a0, void *src, s32 dst); -extern s32 func_801539F8(s32 a0, void *a1); -extern s32 func_801539F8(s32 a0, void * a1); -extern s32 func_8016DA04(s32 a0); -extern s32 func_80153BD8(s32 a0); -extern s32 func_80153BF0(s32 a0); -extern void func_80153C18(void); -extern u16 D_8011F748; -extern void func_80153C30(void); -extern void func_80153C74(s16 a0, s16 a1); -extern s16 D_8011DB18; -extern void func_80153C44(int a0, int a1, s16 a2); -extern s16 D_8011DB0C; -extern s32 D_80115210; -extern void func_80153C8C(void); -extern void func_80153C9C(void); -extern s32 func_80153CBC(void); -extern s32 D_8018D364; -extern void (*D_8018D38C[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018D36C; -extern void func_80153D7C(s32 param_1); -extern void func_8015410C(void); -extern void func_80153E00(s32 param_1); -extern void func_80151664(void); -extern void func_80154134(u8 *a0); -extern void func_80154190(u8 *a0, s32 a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154218(u8 *a0, s32 a1, s32 a2); -extern void func_801541D8(u8 *a0, s32 a1, s32 a2); -extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); -extern void func_801542A4(); -extern void func_801542A4(s32 *a0, s32 a1); -extern void func_8015430C(); -extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); -extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); -extern s32 func_80154358(void * arg0); -extern void func_80154AB4(s32 a0, s32 a1); -extern void func_80154B20(s32 a0, s32 a1, s32 a2); -extern void func_80154AE0(s32 a0, s32 a1, s32 a2); -extern void func_80154B7C(u8 *a0, s32 a1); -extern void func_80154B4C(u8 *a0, s32 a1); -extern void func_80154BC8(void *a0, s32 a1, s32 a2); -extern void func_80154B98(void *a0, s32 a1, s32 a2); -extern u8 D_800D8D10[]; -extern s16 D_80078E9E; -extern void func_801550FC(s32 a0); -extern void func_80154ED8(s32 a0, s32 a1); -extern void func_80154F9C(s32 a0); -extern void func_800183E0(s32 a0); -extern void func_801550FC(s32 arg0); -extern void func_8001D150(s32, s32); -extern void func_8001D130(int, int); -extern void func_80155150(int param_1); -extern s32 D_800DE2A4[]; -extern void func_801552F4(s32 a0); -extern void func_80155344(s32 a0); -extern s32 func_80155394(s32 *a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80029178(s32); -extern int (*D_8018D3D8[])(void); -extern s32 func_80155458(s32 param_1); -extern s32 func_801659DC(u8 *a0); -extern s32 func_801554B8(void *arg0); -extern void func_801555F4(void *a0); -extern void func_80155518(s32 *a0); -extern void func_80155580(void *a0); -extern void (*D_8018D3DC[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern s32 func_80155800(s32 arg0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern s32 func_80029B4C(s32 a0, s32 a1); -extern s32 func_80029BC8(s32 a0, s32 a1); -extern s32 func_80029C44(s32 a0, s32 a1); -extern s32 func_8015640C(s32 a0, s32 a1); -extern s32 rand(void); -extern u32 func_8015616C(s32 param_1, u16 param_2); -extern u16 func_80156370(u16 param_1); -extern s32 func_801564B0(s32 a0); -extern s32 func_8002A1B4(void); -extern s32 func_8002A400(void); -extern s32 func_8002A670(void); -extern s32 func_8002A8E0(void); -extern s32 D_801151E0[]; -extern s32 func_801565C0(void); -extern void func_80156A14(s32 *a0); -extern void func_80156648(s32 *a0); -extern u8 D_8011DAD8[]; -extern s32 func_8014C568(s16 *a0, s16 *a1); -extern void func_801567BC(s32 a0); -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018D840[]; -extern void func_80156A1C(s32 param_1, s32 param_2); -extern s32 D_801150E0[]; -extern void func_80156A88(s32 a0, s32 a1); -extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); -extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); -extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); -extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern s32 func_80135004(s32 a0, void *a1, s32 a2); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801575E4(void *a0); -extern void func_801574DC(s32 *a0); -extern void func_80157544(void *a0); -extern void (*D_8018D850[])(void); -extern void func_8014CC28(s32 a0); /* defined */ -extern s32 func_8014F3E8(s32 a0); /* declared */ -extern void func_8015BDD0(s32 *a0); /* defined */ -extern void func_801575E4(void *a0); /* defined */ -extern void func_80157580(s32 arg0); -extern u8 D_800D4F14[]; -extern void func_801576A8(void *arg0); -extern s32 func_8015773C(u8 *a0); -extern s32 func_8015771C(u8 *a0); -extern s32 func_8015773C(u8 * arg0); -extern int D_801E96D0; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018D878[])(void); -extern void func_80157808(void *param_1); -extern void func_80157880(s32 a0); -extern s32 func_801725A4(u8 *a0); -extern u8 D_800D5128; -extern u8 D_8018D858; -extern void func_801578C0(s32 param_1); -extern void func_80147A84(int); -extern void func_80148038(int, int); -extern void func_80147460(int); -extern void func_80146D90(int); -extern void func_80161450(void *a0); -extern void func_80157A8C(int); -extern void func_80154A74(int, int); -extern unsigned char D_800D5178; -extern unsigned char D_8018D868; -extern void func_8015795C(int param_1); -extern void func_80161D20(s32 a0, s32 a1); -extern void func_80157A8C(s32 a0); -extern void func_8016706C(s32 a0); -extern u8 D_800D51AC[]; -extern void func_80157AC8(s32 param_1); -extern void func_80157B74(int param_1); -extern void func_8016158C(void *a0); -extern void func_8015BE04(s32 *a0); -extern void func_80157BC8(s32 a0); -extern void func_80157CCC(s32 a0); -extern void func_80157DC4(void *a0); -extern void func_80157FC4(void *a0); -extern void func_80157D74(u16 *a0); -extern void (*D_8018D8B8[])(void); -extern void func_80157E38(void *); -extern void func_80157E00(void *a0); -extern void func_80157E38(void * a0); -extern s32 func_80157F64(s32 *a0); -extern s32 func_80156600(void *a0); -extern void func_80157EA4(void *a0); -extern void (*D_8018D8C0[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018D88C; -extern void func_80158038(void * param); -extern u8 D_800D524C[]; -extern void func_80161418(void *a0); -extern void func_801580B4(s32 a0); -extern void func_801581AC(s32 a0); -extern void (*D_8018D8CC[])(void); -extern void func_8015824C(void *a0); -extern void func_801582C0(void *); -extern void func_80158288(void *a0); -extern u8 D_800D52A8[]; -extern void func_801585A4(s32 *a0); -extern void func_801582C0(void *a0); -extern s32 func_801585AC(s32 *a0); -extern u8 D_800D52E8[]; -extern void func_80158344(s32 *a0); -extern s32 func_801615C4(void *a0, s32 a1); -extern u8 D_8018D89C; -extern u8 D_800D533C; -extern void func_80158434(s32 param_1); -extern void func_80158548(s32 param_1); -extern void func_801585EC(u8 *a0); -extern void func_80158794(void); -extern s32 D_801E96D8; -extern s32 D_801E96E4; -extern s32 D_801E96E8; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018D908[])(s32 *); -extern void func_80158AE4(void *a0); -extern void func_80158AB4(void *a0); -extern void func_8016F264(void); -extern void func_80165840(void); -extern void func_801658DC(void); -extern void func_80165A78(s32); -extern void func_80158AE4(void * a0); -extern M2C_UNK D_800D58D8; -extern void func_80158BB0(void *arg0); -extern s32 func_80159404(s32 a0, s32 a1); -extern void func_80158C40(s32 *a0); -extern void func_80158CD8(s32 *a0); -extern s32 func_80159434(s32 a0, s32 a1); -extern void func_80158D60(s32 a0); -extern M2C_UNK D_800D5904; -extern void func_80158E24(s32 *a0); -extern s32 D_8018D8DC[]; -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80158F00(int param_1); -extern u8 D_80110C3C[]; -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80158FA4(s32 param_1); -extern s32 func_801399F0(s32 a0); -extern u8 D_80110C94[]; -extern u8 D_80110CD4[]; -extern void func_80159070(void *a0); -extern s32 func_80029A94(s32); -extern void func_80175454(void); -extern void func_800298BC(void *); -extern void func_8002992C(s32); -extern void func_800CF804(void); -extern void func_800CF818(void); -extern u8 D_80110D0C[]; -extern void func_80159120(s32 a0); -extern void func_801592CC(s32 *a0); -extern u8 D_800AE6BD; -extern s32 D_801E96E0; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018DB58[])(void); -extern void func_80159698(void *a0); -extern s32 func_801596D4(void *a0); -extern void func_80174B6C(void); -extern void func_80129248(s16 a0); -extern void func_8013C938(void); -extern void func_8013CB20(void); -extern void func_8013C98C(void); -extern void func_8002850C(s32, s32, s32); -extern void func_80028620(s32, void *); -extern s16 D_800B9AAC[]; -extern s16 D_800B9B00; -extern u16 D_801270C0; -extern u32 D_800AFAE8[]; -extern char D_8018D978[]; -extern s32 func_801596F0(s32 param_1); -extern s32 func_80159874(void); -extern void func_800167B8(s32 a0); -extern s32 func_8015987C(s32 a0); -extern int func_800167F0(int arg); -extern int func_801598BC(void); -extern void func_80159968(void *a0); -extern void func_801598E0(u8 *a0); -extern void (*D_8018DBFC[])(void); -extern void func_80159A20(void *a0); -extern void func_801599E0(void *a0); -extern void func_80159A18(void); -extern void func_80159BE4(s32); -extern void func_80159B08(s32 *a0); -extern void func_80159B70(void *a0); -extern void func_80159B3C(void * a0); -extern void (*D_8018DD50[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018DB6C; -extern void func_80159BE4(s32 arg0); -extern void func_8015A1C8(s32 a0); -extern void func_8015A2D8(s32); -extern void func_8015A1FC(s32 *a0); -extern void func_8015A264(void *a0); -extern void func_8015A230(s32 *a0); -extern void (*D_8018DD58[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018DB7C; -extern s32 func_80172608(u8 *a0); -extern void func_8015A2D8(s32 param_1); -extern u8 D_800D48DC; -extern s32 func_8015AB7C(s32 a0); -extern s32 D_8011F9C4; -extern s32 func_8015ABD4(s32 a0, s32 a1, s32 a2); -extern s32 func_80161CD0(s32 a0, s32 a1); -extern M2C_UNK D_8018DB9C; -extern void func_8015AC48(s32 arg0); -extern void func_8015AC90(s32 a0); -extern void func_8015ADB0(s32 a0); -extern void func_8015ACC4(s32 *arg0); -extern void func_8015AD3C(void *a0); -extern void func_8015AD08(void *arg0); -extern void (*D_8018DD60[])(void); -extern void func_8015ADB0(s32); -extern void func_8015AD78(s32 a0); -extern void func_8015ADB0(s32 arg0); -extern s32 D_800D4A9C; -extern int func_8015B6F4(int param_1); -extern u8 D_800D4F8C[]; -extern s32 func_8015B7B4(s32 a0); -extern u8 D_800D4BE0[]; -extern s32 func_8014A51C(void); -extern s32 func_8015B858(u8 *a0); -extern s32 D_800D4B48; -extern void func_8015B8F8(s32 *a0); -extern void func_8015BD8C(s32 *a0); -extern s32 func_8015BE94(); -extern void func_8015BE38(struct Obj *a0); -extern s32 func_8015BE74(void); -extern void func_80161124(void *a0); -extern s32 func_8015BE94(s32 *a0); -extern s32 func_8015AE2C(); -extern s32 func_8015BEC4(void); -extern s32 func_8015B950(s32 arg0); -extern s32 func_8015BEE4(void); -extern void func_8015BF04(s32 *a0); -extern void func_8015C0C4(s32 a0); -extern void func_8015BFF4(void *a0); -extern void func_8015BF7C(s32 *a0); -extern void func_8015C030(s32 *a0, s32 a1); -extern void func_8015BFB0(s32 *a0, s32 a1); -extern void (*D_8018DD88[])(void); -extern void func_8015C0C4(s32); -extern void func_8015C08C(s32 a0); -extern s32 func_8015C128(s32 param_1); -extern void func_8015C6A4(void); -extern void func_8015C788(s32 a0); -extern void func_8015C6AC(s32 *a0); -extern void func_8015C714(void *a0); -extern void func_8015C6E0(s32 *a0); -extern void (*D_8018DD94[])(void); -extern void func_8015C788(s32); -extern void func_8015C750(s32 a0); -extern void func_8015CB94(s32 a0); -extern void func_8015CBCC(void); -extern void func_8015CBD4(void); -extern void func_8015CBDC(void); -extern void func_8015CBE4(void); -extern void func_8015CBEC(void); -extern void func_8015CBF4(void); -extern void func_8015CBFC(void); -extern void func_8015CC04(void); -extern void func_8015CC0C(s32 *param_1); -extern void func_8015CC74(s32 *a0); -extern void func_8015CC40(s32 *a0); -extern s32 func_8015CCD0(); -extern s32 func_8015CCB0(void); -extern s32 func_801725E0(u8 *a0); -extern s32 func_8015CCD0(s32 param_1); -extern s32 func_8015CD20(s32 arg0); -extern void func_8015CF24(s32 a0); -extern void func_8015D01C(); -extern void func_8015CF58(s32 *param_1); -extern void func_8015CFC0(s32 *a0); -extern void func_8015CF8C(s32 *a0); -extern void func_8015CFFC(void); -extern void func_8015D01C(int param_1); -extern void (*D_8018DC08[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018DE38; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018CF1C[]; -extern void func_8015D414(int param_1); -extern void func_8015D57C(s32); -extern void func_8015D480(s32 *a0); -extern s32 func_8015D4E8(s16 *a0); -extern void func_8015D4B4(s16 *a0); -extern void func_8015D524(s32 arg0); -extern void func_8015D544(s32 a0); -extern void func_801746DC(void); -extern void func_8015D57C(s32 arg0); -extern s32 func_80161B18(void *a0); -extern s32 func_80161B84(void *a0); -extern void func_80154150(int, int); -extern void func_80149374(int, int); -extern unsigned char D_8018DE4C[]; -extern void func_8015D5E8(int param_1); -extern int func_8015E0D4(int); -extern void func_8015DA5C(s32 a0); -extern void func_8015DB6C(s32 a0); -extern void func_8015DA90(s32 *a0); -extern void func_8015DAF8(s32 *a0); -extern void func_8015DB6C(s32); -extern void func_8015DB34(s32 a0); -extern void func_8015DCB8(s32 a0); -extern void func_8014BD60(s32 a0, s32 a1); -extern int func_8015DD74(int); -extern void func_8015DBD4(void *arg0); -extern int func_8015DC84(int a0); -extern s8 D_8018DE88[]; -extern void func_8015DCB8(s32 param_1); -extern int func_8015DD74(int arg0); -extern void func_8015DECC(s32 a0); -extern void func_8015DDF0(s32 *a0); -extern void func_8015DE58(s32 *a0); -extern void func_8015DECC(s32); -extern void func_8015DE94(s32 a0); -extern void func_8015E018(s32 a0); -extern void func_8015DF34(void *arg0); -extern int func_8015DFE4(int a0); -extern void func_8015E018(s32 param_1); -extern int func_8015E0D4(int a0); -extern void func_8015E22C(s32 a0); -extern void func_8015E150(s32 *a0); -extern s32 func_8015E1B8(s32 a0); -extern void func_8015E184(s32 *arg0); -extern void func_8015E22C(s32); -extern void func_8015E1F4(s32 a0); -extern u8 D_800D4FF4[]; -extern u8 D_800D5098[]; -extern u8 D_800D5060[]; -extern s32 func_8014A850(s32 a0); -extern void func_8015E40C(s32 a0); -extern void func_8015E588(void); -extern void func_8015E4B0(s32 a0); -extern void func_8015E288(s32 a0); -extern u16 D_8018DED0; -extern u16 D_8018DED2; -extern u16 D_8018DED4; -extern s32 D_8018DED8; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -extern void func_8013C9C4(void *a0); -extern s32 D_8018DEE0; -extern void func_8015E5B0(u8 *self); -extern void func_8015E714(s32 *a0); -extern void func_8015E95C(s32); -extern void func_8015E84C(s32 *a0); -extern void func_8015E8E8(s32 *a0); -extern void func_8015E9B8(s32 *a0); -extern void func_8015E8B4(s32 *a0); -extern void func_8015E924(s32 a0); -extern void func_8015E95C(s32 a0); -extern s16 D_801152A0; -extern void func_80160818(s32 *a0); -extern void func_8015ED6C(s32 *a0); -extern void func_8015EE7C(s32); -extern void func_8015EDA0(s32 *a0); -extern s32 func_8015EE08(s32 a0); -extern void func_8015EDD4(s32 *arg0); -extern void func_8015EE44(s32 a0); -extern int D_800D4C48; -extern int D_8018DBEC; -extern void func_8015EE7C(s32 param_1); -extern void func_8015EEE0(void *arg0); -extern void func_8015EF9C(void); -extern void func_8015F080(s32); -extern void func_8015EFA4(s32 *a0); -extern void func_8015F00C(s32 *a0); -extern void func_8015EFD8(s32 *a0); -extern void func_8015F048(s32 a0); -extern void func_8015F080(s32 a0); -extern s32 D_80062BE8; -extern void func_801466F0(s32, s32, s32, s32, s32, s32, s32, s32); -extern s32 func_80161208(void); -extern void func_8015F118(void *a0); -extern void func_8015F260(s32 *a0); -extern void func_8015F380(); -extern void func_8015F2BC(s32 *a0); -extern void func_8015F324(s32 *a0); -extern void func_8015F2F0(s32 *a0); -extern void func_8015F360(void); -extern s32 func_801725B8(u8 *a0); -extern void func_8015F380(void* arg0); -extern void func_8015F738(s32 *a0); -extern void func_8015F848(s32 *a0); -extern void func_8015F76C(s32 *a0); -extern s32 func_8015F7D4(s32 a0); -extern void func_8015F7A0(s32 *arg0); -extern void func_8015F810(s32 *a0); -extern void func_80147078(s32 *, s16); -extern void func_80159B70(void *); -extern void func_8015F89C(void *arg0); -extern void func_8015F948(s32 *param_1); -extern void func_8015F9A4(void *arg0); -extern void func_8015FA24(s32 arg0); -extern void func_8015FBE0(s32 *a0); -extern void func_8015FA44(s32 *a0); -extern void func_8015FAAC(s32 *a0); -extern void func_8015FA78(s32 *a0); -extern s32 func_801612B8(void *a0, s32 a1); -extern void func_8016007C(s32 a0); -extern void func_8015FAE8(void *arg0); -extern void func_8015FCC8(void *param_1); -extern unsigned int D_8018DF64[]; -extern void func_8015FD74(int param_1); -extern s32 func_80028DE0(void); -extern u8 func_80165700(s32 a0, s32 a1); -extern void func_8015FDCC(s32 a0); -extern u8 D_80078EC2; -extern u8 func_801656E8(s32 a0, s32 a1); -extern void func_80165670(s32 a0, s32 a1); -extern void func_8016004C(s32 a0); -extern void func_8015FF20(void *param_1); -extern void func_801601AC(s32 *a0); -extern void func_801600D0(s32 *a0); -extern void func_80160138(s32 *a0); -extern void func_80160104(s32 *a0); -extern void func_80160174(s32 *a0); -extern void func_801601E4(s32 *a0); -extern void func_80160244(s32 *a0); -extern void func_8016032C(void); -extern void func_80160410(s32 *a0); -extern void func_80160334(s32 *a0); -extern void func_8016039C(s32 *a0); -extern void func_80160368(s32 *a0); -extern void func_801603D8(s32 *a0); -extern u8 D_80062BD0; -extern void func_80160410(s32 * a0); -extern void func_801607B8(s32 *a0); -extern void func_801608C0(s32 *a0); -extern void func_801607E4(s32 *a0); -extern void func_8016084C(s32 *a0); -extern void func_80160888(s32 *a0); -extern void func_80160A28(s32 a0); -extern void func_80160A74(s32 *a0); -extern void func_80160BB4(s32 *a0); -extern void func_80160ACC(s32 *a0); -extern s32 func_80160B34(s32 a0); -extern void func_80160B00(s32 *arg0); -extern void func_80160B70(s32 a0); -extern void func_80160C28(void *arg0); -extern void func_80160CB4(s32 *a0); -extern void func_80160D10(void *arg0); -extern void func_80160DEC(u8 *a0); -extern void func_80160F00(); -extern void func_80160E3C(s32 *a0); -extern void func_80160EA4(); -extern void func_80160E70(s32 *a0); -extern void (*D_8018E014[])(void); -extern void func_80160EA4(void *a0); -extern void func_80160EE0(void); -extern void func_80160F00(void* arg0); -extern void func_800D0F4C(s32 a0); -extern u8 D_80110EC0; -extern void func_80160F70(s32 a0); -extern void func_80160FE0(s32 *a0); -extern void func_80161034(void *a0); -extern void func_80161094(s32 a0); -extern void func_801610FC(void); -extern void func_801483E8(void); -extern s32 func_80161A60(s32 a0); -extern void func_8016130C(void *a0, s32 a1); -extern void func_80161240(void *a0); -extern void func_80161374(void *a0, s32 a1); -extern void func_80161278(void *a0); -extern s32 func_801612B8(void * a0, s32 a1); -extern void func_8016163C(void *a0, s32 a1); -extern void func_80161774(void *a0, s32 a1); -extern s32 func_8016197C(s32 a0, s32 a1); -extern s32 func_80161488(void *a0); -extern void func_80161888(void *a0, s32 a1); -extern void func_801614E4(void *a0); -extern void func_8016191C(void *a0, s32 a1); -extern void func_8016151C(void *a0); -extern void func_80161554(void *a0); -extern s32 func_801615C4(void * arg0, s32 arg1); -extern s32 func_801619A4(s32 *a0); -extern s32 func_80161A00(s32 a0); -extern s32 func_80161A30(s32 a0); -extern int func_801497A8(void); -extern int func_80161BE0(void *param_1); -extern u16 D_8018E044[]; -extern void func_80161C98(int param_1, u32 param_2); -extern void func_80161E08(s32); -extern s32 func_80162438(s32); -extern s32 D_800AE6A8; -extern void func_800D1734(void *); -extern s32 D_8018E0A8; -extern void func_80161D88(void); -extern void func_80161E08(s32 param_1); -extern int func_800291DC(int); -extern int func_800D0E30(void *a0); -extern int func_801620C4(void); -extern s32 func_800D0D7C(s32, s32); -extern int D_801E96F0[]; -extern void func_8016216C(void); -extern u8 D_80078EB0; -extern u8 D_80078EB1; -extern s32 func_801621CC(s32 arg0); -extern void func_801622C4(void); -extern void (*D_8018E0CC[])(void); -extern void func_80162330(void *a0); -extern void func_8014706C(void *a0); -extern s32 func_8016236C(u8 *a0); -extern void func_800D0C48(s32 a0); -extern s32 func_801623B8(s32 *a0); -extern s32 func_800167F0(s32 a0); -extern s32 func_80162414(void); -extern s32 func_80162438(s32 _unused0); -extern int func_801626B8(void); -extern void func_80162714(void); -extern int D_801E9748[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018E114[])(void); -extern void func_80162834(void *a0); -extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80162968(s32 a0); -extern s32 func_80162ACC(u8 *a0); -extern u8 D_800B5CB8; -extern s32 D_8018E104; -extern s32 D_800B5CBC; -extern u8 D_800B5CDF; -extern s32 D_800B5CEC; -extern void func_80162870(s32 param_1); -extern void func_801628F4(s32 *a0); -extern void func_80162968(s32 param_1); -extern void func_80162AC0(s32 *a0, s8 a1); -extern s32 func_80162AE0(u8 *a0); -extern void func_80162AF4(void); -extern void func_80162CC4(void); -extern s32 D_80126D40; -extern void func_80162B1C(void); -extern void func_80162D28(s32 *a0); -extern void func_80162D88(s32 *a0); -extern void func_80162DE8(s32 *a0); -extern void func_80162E48(s32 *a0); -extern void func_80162EA8(s32 *a0); -extern void func_80162F60(s32 arg0, s32 arg1); -extern void func_80162F80(s32 arg0, s32 arg1); -extern void func_80162FA0(s32 arg0, s32 arg1); -extern void func_80162F08(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80162FC0(s32 *a0); -extern void func_80162FF4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801630C4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163194(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg4); -extern void func_8016325C(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163234(s32 a0); -extern s32 D_80115100; -extern s32 func_801632E0(void); -extern s32 D_80115200; -extern s32 func_801632F0(void); -extern u16 D_80126B18[]; -extern void func_80163328(void); -extern s32 func_801633A8(void); -extern s32 func_80163408(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void func_80163534(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, u16 * a5); -extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); -extern char D_801E8DBC[8]; -extern void *memcpy(void *dst, const void *src, unsigned int n); -extern void func_801634D8(s32 param_1, u16 param_2, u16 param_3, s32 param_4, u16 param_5); -extern void func_80157158(); -extern void func_80163664(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801636D0(s32 a0, s32 a1); -extern s32 func_8016380C(struct S8016380C *a0, s32 a1); -extern void *memcpy(void *dst, void *src, s32 n); -extern s32 func_801638A0(u8 *a0, s32 a1); -extern s32 func_80163950(s32 a0); -extern void (*D_8018E11C[])(void); -extern void func_80163A58(void *a0); -extern void func_80163A94(s32 param_1); -extern void func_80163C2C(s32 param_1); -extern void func_80163EC8(s32 param_1); -extern void func_80164270(s32 *a0); -extern void func_80164418(void); -extern void func_80163764(s32 a0); -extern void func_801642AC(s32 a0); -extern void func_8016432C(s32 a0); -extern void func_80164410(void); -extern s32 func_80012DBC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164530(s32 arg0); -extern void (*D_8018E170[])(void); -extern void func_80164744(s32 param_1); -extern void func_8001C810(s32 a0, s32 a1); -extern void func_80164A74(s32 *a0); -extern void func_80164930(s32 a); -extern u16 D_800DF2E0; -extern s32 D_8018E138; -extern s16 D_8018E16C; -extern s16 D_8018E16A; -extern s16 D_8018E168; -extern void func_801647A4(int param_1); -extern void func_80164ACC(); -extern void func_80164864(void *a0); -extern void func_80164930(s32 param_1); -extern s32 func_8014C308(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164ACC(s32 a0); -extern void (*D_8018E17C[])(void); -extern void func_80164BA0(void *a0); -extern void func_8001CD50(s32 a0, s32 a1); -extern void func_800233CC(void *, unsigned short); -extern void func_80164DD0(s32 a0); -extern void func_80164DB0(void); -extern u8 D_801E97A8; -extern u8 D_801E97A9; -extern u8 D_801E97AA; -extern u8 D_801E97AB; -extern u8 D_801E97AC; -extern u8 D_801E97AD; -extern u8 D_801E97AE; -extern u8 D_801E97AF; -extern void func_80164BDC(s32 param_1); -extern void func_80164E40(void); -extern void func_80164CD4(u8 *a0); -extern void func_80164D4C(void *arg0); -extern void (*D_8018E18C[])(void); -extern void func_80164EA4(void *a0); -extern void func_80165124(void *a0); -extern void func_80164EE0(int param_1); -extern s32 func_80165140(s32 a0); -extern void func_801651B8(void *a0); -extern void func_80164F44(void *arg0); -extern void func_80165024(void *a0); -extern void func_80165064(s32 *a0); -extern void func_801650C4(s32 *a0); -extern s32 func_80165140(s32 param_1); -extern s32 func_80165240(s32 a0, s32 a1, s32 a2); -extern s32 D_801E97E8; -extern void func_801651B8(void * param_1); -extern u8 D_80126CF8; -extern void func_8016533C(void); -extern void func_801653F4(s32 a0); -extern void func_80165580(s32 a0); -extern void func_80165374(s32 a0); -extern void func_80165580(s32 _arg0); -extern void func_801653B8(s32 *a0); -extern s32 func_80165624(s32 a0); -extern u8 D_80078EC5; -extern void (*D_8018E1D0[])(void); -extern u8 func_80165658(s32 a0, s32 a1); -extern void func_800CAE0C(s32 a0); -extern void func_801654A8(s32 arg0); -extern void func_80165B28(void *a0); -extern void func_801655E4(s32 a0); -extern u8 D_8018E24C[]; -extern s32 D_8018E26C[]; -extern u8 D_8018E2E8[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018E308[]; -extern u8 D_8018E328[]; -extern void func_800CAF6C(void); -extern void func_80165770(void); -extern void func_801657D8(void); -extern u8 D_80078EC3; -extern void func_801657A0(void); -extern s32 D_80078EA0; -extern s32 D_80078EA8; -extern u8 D_80078EBB; -extern s32 D_80078ED4; -extern s32 D_80078ED8; -extern s32 D_80078EDC; -extern u8 D_80078EE0; -extern void func_80165874(void); -extern s8 D_80078EC4; -extern void func_801658EC(void); -extern s32 func_80165900(void); -extern s32 func_80165910(void); -extern s32 D_8012672C; -extern s32 D_8012811C; -extern s32 D_80126B08; -extern void func_80165938(void); -extern void func_80165958(void); -extern s32 func_80165978(void); -extern void func_80165988(void); -extern s32 func_801659A8(void); -extern void func_801659B8(void); -extern s32 func_801659CC(void); -extern void func_80165A18(void); -extern s32 func_80165A50(s32 _arg0); -extern void func_80165AC8(void); -extern void func_80165A78(s32 arg0); -extern void (*D_8018E3C4[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_8018E440[])(void); -extern void func_80165BB4(u8 *a0); -extern void func_80165B6C(u8 *a0); -extern void func_80165C58(s32 arg0); -extern void func_80165BFC(void *a0); -extern void func_80165C78(void); -extern M2C_UNK D_801E8DCC; -extern void func_80165E2C(u16 *arg0); -extern s32 func_80165FA4(s32 a0, s32 a1, s32 a2); -extern s32 func_80167DBC(s32 a0, s32 a1, s32 a2); -extern s32 func_80167AE0(s32 a0, s32 a1, s32 a2); -extern void func_80165E90(void); -extern void func_80020F34(s32 a0, s32 a1); -extern s32 func_80165FA4(s32 arg0, s32 arg1, s32 arg2); -extern void (*D_8018E44C[])(void); -extern void func_80166018(void *a0); -extern void func_80166054(s32 arg0); -extern void func_801661CC(s32 param_1); -extern void func_80166244(void* arg0); -extern void func_8016629C(void *a0); -extern void func_801662F4(void *a0); -extern void func_8016634C(void *a0); -extern void func_801663A4(void *a0); -extern void (*D_8018E454[])(void); -extern void func_801663FC(void *a0); -extern u8 D_800D387C[]; -extern u8 D_800D3888[]; -extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); -extern void func_800D1FC8(s32 a0, s32 a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern void func_801665B4(); -extern void func_80146C3C(); -extern void func_80166438(u8 *a0); -extern s32 func_80128ED8(s32 param_1, s32 *param_2); -extern void func_800D22E4(s32 a0); -extern void func_801665B4(s32 *a0); -extern void (*D_8018E51C[])(void); -extern void func_80166618(void *a0); -extern void (*D_8018E52C[])(void); -extern void func_80166654(void *a0); -extern s32 func_80166690(s32 param_1, s32 param_2); -extern s32 func_80166994(); -extern s32 func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern s32 func_80167540(s32 arg0); -extern void (*D_8018E53C[])(void); -extern void func_801678B4(void *a0); -extern void RotMatrixYXZ(void *a0, void *a1); -extern void func_80048EAC(void *a0, void *a1); -extern s32 func_801670E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80146C3C(void); -extern void func_801678F0(s32 a0); -extern void (*D_8018E548[])(void); -extern void func_80167A9C(void *a0); -extern void func_80167AD8(void); -extern s32 func_80167AE0(s32 param_1, s32 param_2, s32 param_3); -extern void func_80168070(s32 a0, s16 *a1, s16 *a2, void *a3); -extern u8 D_8018E4A8[]; -extern u8 D_8018E4BC[]; -extern s32 func_80167DBC(s32 arg0, s32 arg1, s32 arg2); -extern void func_800D20C0(void *a0, void *a1, s32 a2); -extern void func_80017E68(void *a0, void *a1); -extern void func_800D23D0(void *a0); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern s32 D_801269A4; -extern s32 D_801269A8; -extern s32 D_801269AC; -extern void func_80168070(s32 param_1, s16 *param_2, s16 *param_3, void *param_4); -extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_8016829C(s32 a0); -extern s32 func_80166690(s32 a0, s32 a1); -extern void func_80168328(s32 arg0); -extern void func_801683D8(s32 a0); -extern void func_801684B4(s32 a0); -extern void func_80168540(s32 a0); -extern void func_801685EC(s32 a0); -extern void func_80168640(s32 a0); -extern s32 RotMatrixX(s32 a0, void *a1); -extern void func_80168664(void *arg0); -extern void (*D_8018E560[])(void); -extern void func_80168744(void *a0); -extern void func_80168BDC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801687CC(s32 a0); -extern void func_80168780(s32 a0); -extern void func_80168828(void); -extern void func_801687CC(s32 param_1); -extern void func_80168828(); -extern void (*D_8018E568[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_8018E570[])(void); -extern void func_80168AA8(void *a0); -extern void func_80168AE4(s32 a0); -extern void func_800D2318(void); -extern void func_80168BDC(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void (*D_8018E578[])(void); -extern void func_80168D58(void *a0); -extern void func_80168D94(int a0); -extern void func_80168F40(); -extern void func_80168EC4(s32 a0); -extern void func_80168F40(void *arg0); -extern void (*D_8018E580[])(void); -extern void func_8016901C(void *a0); -extern void func_80169058(s32 a0); -extern s32 func_80169228(void); -extern void func_801691B8(void *a0); -extern void (*D_8018E588[])(void); -extern void func_801693CC(void *a0); -extern void func_80169584(s32 param_1); -extern void func_80169408(s32 a0); -extern void func_8016951C(int param_1); -extern s32 func_80017758(void *a0, void *a1); -extern s32 func_80017DC4(void *a0, void *a1); -extern void func_801696D8(s32 a0, s32 a1); -extern void (*D_8018E590[])(void); -extern void func_80169830(void *a0); -extern void func_8016986C(s32 a0); -extern s32 func_80169A4C(s32 a0, s32 a1); -extern void func_801699D0(void *arg0); -extern void (*D_8018E644[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_8018E64C[])(void); -extern void func_80169F00(void *a0); -extern char D_8018E5FC[]; -extern char D_8018E5BC[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8018E684[])(void); -extern void func_8016A020(void *a0); -extern void func_8016A05C(void *a0); -extern void func_8016A290(s32 a, void *b, void *c); -extern void func_8016A08C(s32 param_1); -extern void func_8016A1CC(int param_1); -extern void func_8016A290(s32 param_1, void *param_2, void *param_3); -extern void (*D_8018E690[])(void); -extern void func_8016A700(void *a0); -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_8018E6D8[])(void); -extern void func_8016AB30(void *a0); -extern void func_8016B234(void); -extern void func_8016AFB0(s32 a0); -extern void func_8016B114(void *arg0); -extern s32 func_8016B448(s32, s32); -extern s32 func_8016BA48(s32 a0); -extern void func_8016B3F4(s32 a0); -extern s32 func_8016B428(s32 a0); -extern void func_8016B984(void *a0); -extern s32 func_8016B448(s32 arg0, s32 arg1); -extern void (*D_8018E754[])(void); -extern void func_8016B4BC(void *a0); -extern int func_8016B9F8(int); -extern int func_8016B834(int, int); -extern void func_8016B91C(int); -extern int D_801E9B08; -extern void func_8016B4F8(int param_1); -extern s32 func_8016B9F8(s32 param_1); -extern void func_8016B6BC(s32, s32, s32, s32); -extern void func_8016B91C(s32); -extern s16 D_8018E748[]; -extern void func_8016B5C0(s32 param_1); -extern void func_8001CD9C(int, void *); -extern int *D_8018E78C[]; -extern unsigned short D_8018E794[]; -extern unsigned short D_8018E79C[]; -extern unsigned char D_801E9B10[]; -extern int func_8016B834(int param_1, int param_2); -extern void func_8016B964(SrcB964 *a0, DstB964 *a1); -extern void func_8016B91C(s32 arg0); -extern s32 D_801E9B08; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8018E7A4[])(void); -extern void func_8016BBA4(void *a0); -extern s32 func_8016BBE0(s32 param_1); -extern void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3); -extern M2C_UNK D_801E9C44; -extern M2C_UNK D_801E9C48; -extern void func_8016BCC0(void *arg0); -extern s32 func_8016BD78(s32 param_1); -extern s32 func_8016BEA0(s32 param_1); -extern void func_8016BF34(void *a0); -extern void func_8016BFD0(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern s32 D_801E9BD0; -extern void (*D_8018E7D4[])(void); -extern void func_8016C14C(void *a0); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801E9C4C[]; -extern u8 D_801E9C54[]; -extern u8 D_801E9C04[]; -extern void func_8016C2C4(s32 param); -extern s32 func_8016C49C(s32 param_1_arg); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_8016C74C(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern short func_8016CF04(s32 a0, s32 a1); -extern void func_8016C83C(s32 a0); -extern void (*D_8018E7DC[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_8018E7F8[])(void); -extern void func_8016D19C(void *a0); -extern void (*D_8018E800[])(void); -extern void func_8016D428(void *a0); -extern void func_8016D464(u8 *a0); -extern void func_8016D4DC(s32 a0); -extern void func_8016D5EC(s32 *a0); -extern short func_8016CBC0(void); -extern void func_8016D64C(int param_1); -extern void func_8016D778(s32 a0); -extern void func_800D20C0(); -extern void func_8016D848(s32 *a0); -extern void func_8016D984(s32 *a0); -extern void func_8016DBD8(u8 *a0); -extern void (*D_8018E868[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_8018E80C; -extern u8 D_8018E818; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void (*D_8018E89C[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8018E8A4[])(void); -extern void func_8016DF20(void *a0); -extern void func_8016E3CC(s32 a0); -extern void func_8016E1CC(s32 a0); -extern void func_8016E26C(s32 *a0); -extern void func_8016E2E8(void *a0); -extern void func_8016E460(void *a0, void *a1); -extern void func_8016E358(void *a0); -extern void func_8016E460(void *arg0, void *arg1); -extern void (*D_8018E8F8[])(void); -extern void func_8016E5B8(void *a0); -extern void func_8016E5F4(s32 arg0); -extern void func_8016E778(); -extern void func_8016E688(void *a0); -extern void func_8016E6E4(s32 a0); -extern void func_8016E728(u8 *a0); -extern void func_8016E7C8(int param_1, short *p1, unsigned int *p2); -extern void func_8016E778(int param_1); -extern void func_8016E7C8(int param_1, short *param_2, unsigned int *param_3); -extern s32 D_80115218; -extern void func_8016E8F0(void); -extern void func_8016E918(short param_1, short param_2); -extern s32 func_8016E95C(); -extern u16 D_8018E92C[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_8018E91C[]; -extern void func_8016EB3C(s32 p); -extern void func_8016EBA8(u8 *param_1); -extern void func_8016ED6C(void); -extern s32 D_80126D70; -extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); -extern void func_8016ED8C(s32 a0, s32 a1, s32 a2); -extern void func_8016EE40(s32 a0, s32 a1, s32 a2); -extern void func_8016EDBC(s32 a0, s32 a1, s32 a2); -extern void func_8016EE94(); -extern void func_8016EDEC(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_8016EF78(s32 a0); -extern void func_8016EE40(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_801726D0(void *a0); -extern s32 D_80126D50; -extern u8 D_80126D6C; -extern u8 D_80126D6D; -extern u8 D_80126D6E; -extern s32 D_80126D5C; -extern s32 D_80126D60; -extern s16 D_80126D64; -extern s16 D_80126D66; -extern s16 D_80126D68; -extern s16 D_80126D6A; -extern u8 D_80126D1A; -extern s32 D_80127058; -extern s32 D_8012705C; -extern s32 D_80127060; -extern s32 D_80127064; -extern s32 D_80127068; -extern s32 D_8012706C; -extern s32 D_80127070; -extern s32 D_80127074; -extern s16 D_80126D20; -extern void func_8016EE94(s32 a0, s32 a1); -extern s32 func_8016EFC8(s32); -extern s32 func_8016EFA8(s32 a0); -extern void func_8016F094(s32 *a0); -extern s32 func_8016F0AC(); -extern s32 D_8018E948; -extern void func_8016F250(void); -extern void func_8016F288(void); -extern void func_8016F2A8(void); -extern void func_8016F2C8(void); -extern void func_8016F2EC(void); -extern void func_8016F30C(void); -extern void func_8016F330(void); -extern void func_8016F350(void); -extern void func_8016F374(void); -extern void func_8016F388(void); -extern void func_8016F398(void); -extern s32 func_8016F44C(s32 a0); -extern void func_8016F470(s32 a0); -extern s32 func_8016F410(s32 a0); -extern void func_80175414(s32 _arg0); -extern s32 func_8016F4C4(s32); -extern s32 func_8016F494(s32 a0); -extern void func_8016F0E4(void); -extern s32 func_8016F4C4(s32 param_1); -extern void func_8016F4F4(void); -extern void func_801719A4(int a0, int a1); -extern void func_800D1724(s32 a0); -extern void func_80171928(void *a0); -extern void *D_8011F738; -extern void func_8016F4FC(void *a0); -extern void func_8014708C(void *a0); -extern void func_8016F540(void *a0); -extern void func_8016F578(s32 *a0); -extern void func_8016F5B0(void *a0); -extern void func_80147060(u8 *a0); -extern void func_8016F5E0(u8 *a0); -extern void func_8016F610(void *a0); -extern void func_8016F648(void *a0); -extern void func_8016F680(void *a0); -extern void func_8016F6B0(void *a0); -extern void (*D_8018E9C0[])(void); -extern void func_8016F6E0(void *a0); -extern s32 func_80171990(u8 *a0); -extern void func_8016F764(void *a0); -extern void func_8016F71C(u8 *a0); -extern void (*D_8018E9C8[])(void); -extern void func_8016F798(void *a0); -extern void func_8016F804(void *a0); -extern void func_8016F7D4(u8 *a0); -extern void func_80171928(void *); -extern void (*D_8018E9D0[])(void); -extern void func_8016F834(void *a0); -extern void func_8016F8AC(u8 *a0); -extern void func_8016F870(u8 *a0); -extern void func_80172358(u8 *a0, u8 *a1); -extern void (*D_8018E9D8[])(void); -extern void func_8016F8E4(void *a0); -extern void func_8016F95C(void *a0); -extern void func_8016F920(u8 *a0); -extern s32 func_80171CC4(void *a0, void *a1); -extern s32 func_80171D1C(void *a0, void *a1, s32 a2); -extern u16 D_8011F73E; -extern void (*D_8018E9E0[])(void); -extern void func_8016F9C4(void *a0); -extern void func_80171B44(s32 *a0); -extern void func_8016FA44(s32 a0); -extern void func_8016FA00(s32 a0); -extern s32 func_80171C64(s32 a0, s32 a1); -extern void (*D_8018E9E8[])(void); -extern void func_8016FA84(void *a0); -extern void func_8016FB10(void *a0); -extern void func_8016FAC0(u8 *a0); -extern void func_8016FB50(void *a0); -extern void (*D_8018E9F4[])(void); -extern void func_8016FB7C(void *a0); -extern void func_8016FC24(); -extern void func_8016FBB8(s32 a0); -extern s32 func_80171B4C(s32 a0, s32 a1); -extern void func_8016FC24(s32 a0); -extern void func_8016FC64(void *a0); -extern void (*D_8018EA00[])(void); -extern void func_8016FC90(void *a0); -extern void func_8016FD08(u8 *a0); -extern void func_8016FCCC(u8 *a0); -extern s32 func_80172658(s32 *a0); -extern void func_8016FD08(u8 *s0); -extern void func_8016FD7C(s32 *a0); -extern void (*D_8018EA0C[])(void); -extern void func_8016FDB4(void *a0); -extern void func_8016FE2C(u8 *a0); -extern void func_8016FDF0(u8 *a0); -extern void func_8016FE2C(u8 * a0); -extern s32 func_8016FE78(s32 *a0); -extern s32 func_80172664(s32 *a0); -extern void func_8016FED0(s32 *a0); -extern void (*D_8018EA1C[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_8018EA2C[])(void); -extern void func_8016FFDC(void *a0); -extern void func_80170068(u8 *a0); -extern void func_80170018(u8 *a0); -extern void func_801700B8(u8 *a0); -extern void func_80170100(u8 *a0); -extern void (*D_8018EA34[])(void); -extern void func_80170150(void *a0); -extern void func_801701C8(u8 *a0); -extern void func_8017018C(u8 *a0); -extern void func_801701C8(u8 * a0); -extern void (*D_8018EA3C[])(void); -extern void func_80170240(void *a0); -extern void func_801702B8(s32 a0); -extern void func_8017027C(u8 *a0); -extern s16 func_80171AB0(s32 a0, void *a1); -extern void (*D_8018EA44[])(void); -extern void func_801702FC(void *a0); -extern void func_80170374(u8 *a0); -extern void func_80170338(u8 *a0); -extern s32 func_8014C168(s32 *a0, s32 a1); -extern void func_80170374(u8 * a0); -extern void (*D_8018EA4C[])(void); -extern void func_801703E0(void *a0); -extern void func_8017044C(u8 *a0); -extern void func_8017041C(u8 *a0); -extern void func_8017044C(u8 * a0); -extern void (*D_8018EA54[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_8018EA5C[])(void); -extern void func_80170548(void *a0); -extern void func_801705C0(u8 *a0); -extern void func_80170584(u8 *a0); -extern void func_801705C0(u8 * a0); -extern void (*D_8018EA64[])(void); -extern void func_801705F8(void *a0); -extern void func_80170670(void *a0); -extern void func_80170634(u8 *a0); -extern void func_8012A568(void (*a0)(void)); -extern void (*D_8018EA6C[])(void); -extern void func_801706AC(void *a0); -extern void func_80170718(void *a0); -extern void func_801706E8(u8 *a0); -extern void func_80129FF4(void); -extern void (*D_8018EA74[])(void); -extern void func_80170748(void *a0); -extern void func_801707D4(void *a0); -extern void func_80170784(u8 *a0); -extern s32 func_80174ED4(void); -extern void (*D_8018EA7C[])(void); -extern void func_80170810(void *a0); -extern void func_801708B0(void *a0); -extern u8 D_800D5DA8; -extern void func_8017084C(s32 a0); -extern u8 D_800D5A34[]; -extern void func_80170AD8(void *a0); -extern void func_80171904(s32 a0); -extern void func_80170B48(int a0); -extern void func_80170928(void); -extern u8 D_800D59EC[]; -extern void func_80170970(void); -extern u8 D_800D599C[]; -extern void func_801709B8(void); -extern u8 D_800D5934[]; -extern void func_80170A00(void); -extern void func_80170A48(void); -extern u8 D_800D5DC0[]; -extern void func_80170A90(void); -extern void (*D_8018EA84[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_8018EA8C[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8018EA94[])(void); -extern void func_80170C74(void *a0); -extern s32 func_8017197C(u8 *a0); -extern void func_80170CF0(void *a0); -extern void func_80170CB0(u8 *a0); -extern void (*D_8018EA9C[])(void); -extern void func_80170D68(void *a0); -extern void func_80170DE0(u8 *a0); -extern void func_80170DA4(u8 *a0); -extern s32 D_8011F73C; -extern s32 D_8011F740; -extern void func_801718AC(void *a0); -extern void func_80170DE0(u8 * _arg0); -extern void (*D_8018EAA4[])(void); -extern void func_80170E34(void *a0); -extern void func_80170EAC(u8 *a0); -extern void func_80170E70(u8 *a0); -extern int func_800D0F8C(int a0); -extern void func_80170EAC(u8 * _arg0); -extern void (*D_8018EAAC[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8018EAB4[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_8018EABC[])(void); -extern void func_80171064(void *a0); -extern void func_801710DC(u8 *a0); -extern void func_801710A0(u8 *a0); -extern u16 D_8011F73A; -extern void func_801710DC(u8 * arg0); -extern void (*D_8018EAC4[])(void); -extern void func_80171120(void *a0); -extern void func_8017118C(u8 *a0); -extern void func_8017115C(u8 *a0); -extern void func_80142454(s32 a0); -extern void func_8017118C(u8 * a0); -extern void (*D_8018EACC[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8018EAD4[])(void); -extern void func_80171260(void *a0); -extern s32 func_80012F74(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80171384(void *a0); -extern void (*D_8018EADC[])(void); -extern void func_801714E4(void *a0); -extern void func_8017162C(void *a0); -extern void func_80171520(s32 a0); -extern s32 func_801716AC(s32 a0, void *a1, s32 *a2); -extern s32 func_80012FC8(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_800A5E94; -extern u8 D_800A5E95; -extern u8 D_800A5E96; -extern s32 func_801716AC(s32 a0, void * a1, s32 * a2); -extern int func_800D0FE0(int a0); -extern void func_801717A0(void *a0); -extern void func_8013E588(void *a0); -extern void func_801717F4(void *a0); -extern void func_80171824(void *a0); -extern void func_80171854(void *a0); -extern void func_80171884(void); -extern void func_80171A1C(u8 *a0); -extern void func_80171928(void * a0); -extern void func_8017196C(s32 *a0, s8 a1); -extern void func_80171A04(s32 *a0); -extern void func_80171A10(s32 *a0); -extern void func_80171A34(s32 *a0, s8 a1); -extern s32 func_80171A44(u8 *a0); -extern s32 func_80171A58(u8 *a0); -extern s32 func_80171A6C(u8 *a0); -extern void func_80171A80(s32 *a0, s32 a1); -extern s32 func_80171A88(s32 a0); -extern s16 func_80171AB0(s32 param_1, void * _arg1); -extern void func_80171B10(void *a0); -extern void func_80171EC8(s32 a0); -extern s32 func_80171C64(s32 param_1, s32 param_2); -extern s32 func_80171D78(s32 a0, s32 a1); -extern int func_8017250C(short *a0, short *a1); -extern s32 func_80171CC4(void * a0, void * a1); -extern s32 func_80171FFC(short *a0, short *a1, s32 a2); -extern s32 func_80171D1C(void * a0, void * a1, s32 a2); -extern s32 func_8017248C(s32 a0, s32 a1); -extern s32 func_80171E08(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_80047948(s32 a0); -extern s32 func_8004787C(s32 a0); -extern void func_80172170(s32 a0, s32 a1); -extern s32 func_8017209C(void *arg0, void *arg1, s32 arg2, s32 arg3); -extern void func_801722CC(s32 *a0); -extern void func_80172304(s32 *a0); -extern void func_80172310(u8 *a0); -extern void func_801723C4(s32 param_1, s32 param_2); -extern void func_80161C24(s32, s32); -extern void func_80172414(s32 a0); -extern s32 func_801724EC(s32 a0); -extern s32 func_8017248C(s32 arg0, s32 arg1); -extern s32 func_80013450(s32); -extern s32 func_80172560(u8 *a0, u8 *a1); -extern s32 func_8017261C(u8 *a0); -extern s32 func_80172644(u8 *a0); -extern s32 func_80172670(s32 *a0); -extern s32 func_80172688(s32 *a0); -extern s32 func_80172694(s32 *a0); -extern s32 func_801726A0(s32 *a0); -extern s32 func_801726AC(s32 *a0); -extern s32 func_801726B8(s32 *a0); -extern s32 func_801726C4(s32 *a0); -extern s32 func_80172760(s32 a0); -extern s32 func_80174650(s32); -extern void (*D_80127088)(void); -extern s32 D_801270BC; -extern void func_801726D0(void * _arg0); -extern void func_80172710(void); -extern void func_80174684(void *); -extern void func_80172738(void); -extern s16 D_80126B30; -extern s32 func_801727D0(void *a0); -extern void func_80172780(void *a0); -extern void func_80172844(u8 *a0); -extern void func_8017280C(u8 *a0); -extern void func_8017288C(void); -extern s32 func_801728E4(void *a0); -extern void func_80172894(void *a0); -extern void func_80172958(u8 *a0); -extern void func_80172920(u8 *a0); -extern s16 D_80126B36; -extern void func_80172958(u8 * a0); -extern void func_801729A8(void); -extern s32 func_801729F0(void *a0); -extern s16 D_80126B34; -extern s16 D_80126B32; -extern void func_801729B0(s32 a0); -extern void func_80172A8C(void *a0); -extern void func_80172A2C(int param_1); -extern void func_80172ACC(u8 *a0); -extern void func_80172B0C(void); -extern s32 func_80172B44(void *a0); -extern void func_80172B14(s16 a0); -extern s32 D_801150F8; -extern void func_80172BC8(void *a0); -extern void func_80172B80(u8 *a0); -extern void func_80172C48(void); -extern void (*D_8018EB20[])(void); -extern void func_80172CA0(void *a0); -extern void func_80172D14(u8 *a0); -extern void func_80172CDC(u8 *a0); -extern void func_80172D14(u8 * a0); -extern void func_80172D60(void); -extern s32 D_80127508; -extern s32 func_80172DAC(void *a0); -extern void func_80172D68(s32 a0); -extern void func_80172E20(u8 *a0); -extern void func_80172DE8(u8 *a0); -extern void func_80172E20(u8 * a0); -extern void func_80172E8C(void); -extern void func_8017303C(void *); -extern void func_80172E94(void); -extern void func_80172ED4(void); -extern void func_80172EFC(void); -extern void func_80172F24(void); -extern u8 D_800D47F4[]; -extern void func_80172F4C(void); -extern void func_80172F9C(void); -extern u8 D_800D5C6C[]; -extern void func_80172FEC(void); -extern s32 func_80173078(void *a0); -extern void func_8017303C(void * a0); -extern void func_801730FC(struct S801730FC *a0); -extern void func_801730B4(s32 a0); -extern void func_8017316C(void); -extern s32 func_8017319C(void *a0); -extern void func_80173174(void); -extern u8 D_800D5AA0[]; -extern void func_80173220(void *a0); -extern void func_801731D8(s32 *a0); -extern M2C_UNK D_8018EAE4; -extern void func_80173220(void * arg0); -extern void func_80173294(void); -extern void func_801732C4(); -extern void func_8017329C(void); -extern void func_801732C4(s32 *a0); -extern void func_8017331C(); -extern void func_801732F4(void); -extern void func_8017331C(s32 *a0); -extern void func_80173374(); -extern void func_8017334C(void); -extern void func_80173374(s32 *a0); -extern void func_801733A4(void); -extern void func_801733CC(s32 a0); -extern void func_801734BC(s32 a0, s32 a1); -extern s16 D_80126B3E; -extern void func_80173460(s32 a0, s32 a1); -extern void func_801734BC(s32 arg0, s32 _unused1); -extern void (*D_8018EB50[])(void); -extern void func_80173544(void *a0); -extern void func_801735B8(u8 *a0); -extern void func_80173580(u8 *a0); -extern s16 D_80126B40; -extern void func_801735EC(void *a0); -extern void func_80173648(u8 *a0); -extern void func_801736A8(void); -extern s32 func_8014C118(void *a0, s32 a1, s32 a2); -extern s32 func_801736FC(void *a0); -extern void func_801736B0(s32 a0, s32 a1); -extern void func_80173770(u8 *a0); -extern void func_80173738(u8 *a0); -extern void func_801723C4(s32 a0, s32 a1); -extern void func_801737B0(void); -extern s32 func_801737E8(void *a0); -extern void func_801737B8(s16 a0); -extern void func_8017385C(u8 *a0); -extern void func_80173824(u8 *a0); -extern void func_801738D4(void); -extern s32 func_8017390C(void *a0); -extern void func_801738DC(s16 a0); -extern void func_80173980(u8 *a0); -extern void func_80173948(u8 *a0); -extern void func_801739D8(u8 *a0); -extern void func_80173A20(void); -extern s32 D_8012750C; -extern void func_80173A60(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80173A28(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void (*D_8018EB8C[])(void); -extern void func_80173B4C(void *a0); -extern void func_80173BC0(u8 *a0); -extern void func_80173B88(u8 *a0); -extern void func_80173C64(u8 *a0); -extern void func_80173E1C(s32 a0); -extern s16 D_80126938; -extern s16 D_80126B3A; -extern void func_800D128C(s32, s32); -extern void func_80174158(s32 a0); -extern void func_8002A088(s32); -extern void func_8002A2D4(s32); -extern void func_8002A544(s32); -extern void func_8002A7B4(s32); -extern s32 func_80174188(s32 a0); -extern void func_801741A8(s32 a0); -extern s32 func_800D0EC4(void); -extern void func_800D0F0C(s32, s32); -extern void func_80145EE8(s32); -extern void func_80173EF8(void *param_1); -extern s32 func_8014BCEC(s32, s32); -extern void func_801741A8(s32 _arg0); -extern s16 D_80126B3C; -extern s16 D_8011F9C8; -extern void func_801741EC(u8 *a0); -extern void func_80174274(void); -extern s32 func_801742A4(void *a0); -extern void func_8017427C(void); -extern void func_80174318(u8 *a0); -extern void func_801742E0(u8 *a0); -extern void func_80174354(void); -extern s32 func_80174384(void *a0); -extern void func_8017435C(void); -extern void func_801743F0(u8 *a0); -extern void func_801743C0(u8 *a0); -extern void func_801743F0(u8 * a0); -extern void func_80174430(void); -extern s32 func_80174474(void *a0); -extern void func_80174438(s32 a0); -extern void func_801744E0(u8 *a0); -extern void func_801744B0(u8 *a0); -extern void func_80174524(void); -extern void func_80174554(); -extern void func_8017452C(void); -extern void func_80174554(s32 arg0); -extern void func_801745AC(); -extern void func_80174584(void); -extern void func_801745AC(s32 *a0); -extern void func_80174604(void); -extern void func_801745DC(void); -extern void func_80174630(void); -extern s32 func_80174650(s32 _arg0); -extern void func_80174674(void); -extern void func_801746A4(void); -extern s32 func_800CF8CC(void); -extern void func_80174714(void); -extern s32 func_80174754(void); -extern s16 func_80174764(void); -extern s16 func_80174774(void); -extern s32 func_801747CC(void *a0); -extern void func_80174784(void); -extern s32 func_801747AC(s32 a0); -extern s32 func_80174808(u8 *a0); -extern void func_8017481C(void); -extern s32 func_80174888(void *a0); -extern void func_80174824(void); -extern void func_8017484C(s32 a0); -extern void func_801748C4(s32 a0); -extern void func_801748E4(void); -extern void func_8012A018(s32 a, s32 b); -extern s32 func_8017496C(void *a0); -extern s32 D_80126950; -extern void func_801748EC(void); -extern s32 func_801749C8(); -extern s32 func_801749A8(s32 a0); -extern void func_80174BBC(void *a0); -extern void func_8012A0E0(void); -extern void func_80174BF4(void *a0); -extern void (*D_8018EBE4[])(); -extern void func_80174BF4(void * arg0); -extern s32 func_80174CB0(s32, s32); -extern s32 func_80174C60(s32 a0); -extern void func_80174C80(s32 a0); -extern s32 D_8012697C; -extern u16 D_80126980; -extern s32 func_80174F28(void *a0); -extern void func_80174E9C(s32 a0); -extern void func_80174EF0(s32 a0, s16 a1); -extern s32 func_80175014(u8 *a0, u8 *a1, s32 a2); -extern void func_80174F64(u8 *a0); -extern void func_80174FBC(u8 *a0); -extern s32 func_8017509C(u8 *a0, s32 a1, u8 *a2, u8 *a3); -extern void func_80175184(s32 *a0); -extern void func_80175114(s32 *a0); -extern void func_80175184(); -extern void func_80175150(s32 *a0); -extern void (*D_8018EBF4[])(void*); -extern s32 func_80175268(s32); -extern void func_80175184(s32* arg0); -extern s32 func_80175218(void *a0); -extern void func_801751D8(void *a0); -extern void (*D_8018EBFC[])(s32); -extern s32 func_80175218(void * param_1); -extern void func_801752BC(s32 *a0); -extern u8 D_8011F7A8; -extern u8 D_8011F7A9; -extern u8 D_8011F7AD; -extern u8 D_8011F7AE; -extern void func_80175414(s32 _arg0); -extern void func_80175494(void); -extern void (*D_8018ED64[])(); -extern s32 func_801758FC(void); -extern s32 func_80175820(void); -extern s32 func_801759D8(void); -extern void func_8017553C(s32 *param); -extern void func_801757A0(s32 a0); -extern short D_800B9A02; -extern void func_80175590(void *arg0); -extern s16 D_800B9A02; -extern void func_801757A0(s32); -extern void func_80175624(void *a0); -extern void func_801757E0(int); -extern void func_80175668(void); -extern void (*D_8018ED70[])(); -extern void func_80175690(s32 *param); -extern void func_80175DA8(s32 a0); -extern void func_80175AB8(s32 a0); -extern void func_80176144(s32 a0); -extern void func_801756E4(s32 arg0); -extern void func_80175798(void); -extern void func_80176734(s32 a0); -extern void func_80176218(s32 a0); -extern void func_80176D00(s32 a0); -extern void func_801757E0(s32 a0); -extern s32 func_80178004(s32 a0, s32 a1, s32 a2); -extern u8 D_8011F7B1; -extern u16 D_8011F7B4; -extern u16 D_8011F7B6; -extern s16 D_8011F81E; -extern void *func_80177784(void *a0, s32 a1, s32 a2, s32 a3); -extern u32 func_801783D0(s32 a0, s32 a1); -extern void *func_801777BC(void *a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern u16 D_8011F82C; -extern u16 D_8011F82A; -extern u32 * func_80176D94(void *param_1, u32 param_2, s16 param_3_); -extern void func_801778A8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80176FF4(s32 a0); -extern u16 D_8011F830; -extern u16 D_8011F82E; -extern u32 * func_801770E0(void *param_1, u32 param_2, s16 param_3_); -extern void func_80177340(s32 a0); -extern u8 D_8011F837; -extern u8 D_8011F7F0; -extern u8 D_8011F7AB; -extern u32 * func_8017742C(u32 *param_1, s32 param_2, s32 param_3); -extern void func_801776EC(u8 *a0); -extern void * func_80177784(void *a0, s32 a1, s32 a2, s32 a3); -extern uint * func_80177EA4(uint *param_1, int param_2, uint param_3, int param_4); -extern void func_80177F84(s32 param_1, s32 param_2); -extern u32 * func_80178298(u32 *param_1, u8 *param_2, short param_3, short param_4); -extern M2C_UNK D_801E9014; -extern void func_80178438(u16 *arg0); -extern void func_801787D4(void); -extern void func_8012A908(void); -extern void func_8017869C(s32 a0); -extern void func_80130D0C(s32 a0); -extern void func_8013E370(void); -extern s32 D_8011DB08; -extern void func_8017849C(void); -extern void func_8013E4B4(void); -extern s16 D_801270C4; -extern s32 D_801274D8; -extern s16 D_801270C2; -extern u8 D_801270C6; -extern u8 D_801270C7; -extern s32 D_801274DC; -extern s32 D_801274E0; -extern void func_80178608(void); -extern void func_80178744(s32 a0, s32 a1); -extern void func_80178840(); -extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern s32 func_801788B8(s32 arg0, s32 arg1); -extern s32 func_801789AC(s32 arg0); -extern s16 D_801EAFC8; -extern int func_80178970(void); -extern s32 func_80178B18(s32 param_1, s32 param_2); -extern s32 func_80178B70(s32 param_1, s32 param_2); -extern void func_80178BB8(s32 a0, s32 a1); -extern s32 func_80178BF8(); -extern s32 D_801EA388; -extern short D_801EB03C; -extern void func_80178CBC(s32 arg0, s32 arg1); -extern void func_80178D18(void); -extern s32 func_80178D40(s32 arg0, s32 arg1); -extern void func_80179B28(s32 a0); -extern void func_80179B74(u16 *p); -extern void func_80179D30(u16 *a0); -extern void func_80179D78(u16 *a0); -extern void func_80179B74(u16 *p); -extern void func_80179DCC(short a0); -extern void func_80179DF8(void); -extern void func_80179E1C(short a0); -extern void func_80179E48(s16 a0); -extern void func_80179E74(s16 a0); -extern void func_80179EA0(u16 *a0); -extern void func_80179B74(u16 *p); -extern void func_80179EE8(short a0); -extern void func_80179F14(s16 a0, s16 a1); -extern void func_80179F44(void); -extern void func_80179F6C(short a0); -extern void func_80179F98(u16 *a0); -extern void func_80179FEC(u16 *a0); -extern void func_8017A040(u16 *a0); -extern s32 D_801EA7B4; -extern void func_8017A094(s32 arg0); -extern void func_8017A0C4(s32 arg0); -extern void func_8017A0F4(void); -extern void func_8017A11C(void); -extern s32 D_801EA7DC; -extern void func_8017A144(s32 a0); -extern void func_8017A180(void); -extern void func_8017A1A8(void); -extern void func_8017A1D0(void); -extern void func_8017A1F8(void); -extern void func_8017A220(void); -extern void func_8017A248(void); -extern void func_8017A270(void); -extern void func_8017A298(void); -extern void func_8017A2C0(void); -extern void func_8017A2E8(void); -extern void func_8017A310(void); -extern void func_8017A338(void); -extern void func_8017A360(void); -extern void func_8017A388(void); -extern s16 D_801EA798; -extern s32 func_8017A3B0(void); -extern void func_80172310(u8*); -extern void func_80172780(void*); -extern void func_80172894(void*); -extern void func_801729B0(s32); -extern void func_80172B14(s16); -extern void func_80172C50(u16 *); -extern void func_80172D68(s32); -extern void func_801733FC(s16, u16 *); -extern void func_80173460(s32, s32); -extern void func_801734BC(s32, s32); -extern void func_801736B0(s32, s32); -extern void func_801737B8(s16); -extern void func_801738DC(s16); -extern void func_80173A28(s32, s32, s32, s32, s32, s32); -extern void func_80174438(s32); -extern void func_8017A4AC(void); -extern s32 func_8017AD0C(s32 arg0); -extern s32 func_8017AD0C(s32); -extern s32 func_8017ADE8(s32 a0); -extern s32 func_8017AE08(void); -extern void func_8017B0E4(int param_1, int param_2); -extern s16 D_801EA79C; -extern u16 D_801EA81C; -extern u16 D_801EA81E; -extern u16 D_801EA820; -extern void func_8017B1D8(void); -extern s32 func_8017B238(s32 param_1, s32 param_2); -extern s32 func_8017B368(s32 param); -extern s32 func_8017B614(s32 param_1, s32 param_2); -extern s32 D_80114F30; -extern s32 D_80114F34; -extern s32 D_80114F38; -extern s32 D_80114F24; -extern s32 D_80114F28; -extern s32 D_80114F2C; -extern u8 D_8012694C; -extern s16 D_801EA814; -extern s16 D_801EA816; -extern s16 D_801EA818; -extern s16 D_801EA80C; -extern s16 D_801EA80E; -extern s16 D_801EA810; -extern void func_8017B7A8(void); -extern s16 D_801EA82C; -extern s16 D_801EA82E; -extern s16 D_801EA830; -extern s16 D_801EA834; -extern s16 D_801EA836; -extern s16 D_801EA838; -extern void func_8017B824(void); -extern void func_8017B880(void); -extern s32 func_8017B8E8(s32 src); -extern short D_801EA824; -extern short D_801EA826; -extern short D_801EA828; -extern void func_8017B940(void); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void RotTransSV(void *a0, void *a1, void *a2); -extern SV4 D_801EA7BC; -extern SV4 D_801EA7C4; -extern void func_8017BA3C(s32 param_1, s32 param_2); -extern s32 func_8017BB34(s32 param_1, s32 param_2); -extern void (*D_801EA7E4[10])(int); -extern void func_8017BC38(int param_1); -extern void func_8017B0E4(int, int); -extern void func_8017BCA0(int param_1); -extern void func_8012A4BC(void); -extern void func_8017BCF4(int param_1); -extern void (*D_801EA7E0)(void); -extern void func_8017BD50(int param_1); -extern void (*D_8018EF4C[])(void); -extern void func_8017BE60(void *a0); -extern void func_8017BE9C(void); -extern void func_8017BEA4(void); -extern void func_8017BEAC(void); -extern void func_8017BEB4(void); -extern void (*D_8018EF58[])(void); -extern void func_8017BEE4(void *a0); -extern void func_8017BF98(void); -extern s32 func_8017BFA0(void); -extern void func_8017C07C(void); -extern void (*D_8018F024[])(void); -extern void func_8017C0C8(void *a0); -extern void func_8017C154(); -extern void func_8017C12C(void); -extern void func_8017C14C(void); -extern void (*D_8018F064[])(void); -extern void func_8017C664(void *a0); -extern void (*D_8018F084[])(void); -extern void func_8017CE54(void *a0); -extern void (*D_8018F094[])(void); -extern void func_8017D0DC(void *a0); -extern void (*D_8018F0A0[])(void); -extern void func_8017D63C(void *a0); -extern void (*D_8018F224[])(void); -extern void func_8017DB00(void *a0); -extern void func_8017DB74(u8 *a0); -extern void func_8017DD74(void); -extern void func_8017DF7C(void); -/* ==== end §8b carried decl layer ==== */ - -/* func_8017EB7C — ov_SC01_000_after — TMD-style model renderer (952 ins, jr-function). - * Outer loop: per-part bbox -> RTPT/RTPS projection -> g.otz + screen cull. - * Inner loop: per-prim RTPT -> g.flag/nclip/g.opz cull -> switch(code&7): - * 4,5=POLY_F3 / 6,7=POLY_FT3 / 0,1=POLY_F4 / 2,3=POLY_FT4 -> OT insert. - * GTE ops are verbatim PsyQ inline_c.h macro bodies (rtps/rtpt/nclip spelled via - * the project gas macros from include/gte_macros.inc, pulled in by common.h).* - * CLOSED 2026-07-13 (Phase 26 session 8, Fable5 Max): match_one MATCH 952/952, PIN-FREE. - * The close=2 residual (two transposed preheader addius) was a global.c allocno-priority TIE: - * pseudo 228 = &g.sz1 (sp+0xD0): refs 13, live_length 783 -> pri int(3*13*10000/783) = 498 - * pseudo 230 = &g.sz2 (sp+0xD4): refs 13, live_length 782 -> pri int(3*13*10000/782) = 498 - * Tie -> creation-order tie-break -> sz1 allocated first (t8) = swapped. The shipped workaround - * permuted the stsz3 operand list (creation sz0,sz2,sz1) which fixed allocation but transposed - * the preheader emission (close=2). TRUE FIX: natural operand order restored (emission correct) - * + ONE zero-byte `__asm__ volatile ("")` inside the common live range (between two existing GTE - * volatile asms, so no new cse/sched barrier) -> L 784/783 -> pri 497 vs 498 -> the tie SPLITS - * toward the shorter-lived allocno (sz2) -> sz2 first -> t8. All 10 grants cascade. The slider - * emits nothing (#APP/#NO_APP only); the tie can ONLY split toward the target's allocation - * because the later-defined pseudo always has the shorter range. Cookbook §47. - */ - -#define gte_ldv0(r0) __asm__ volatile ( \ - "lwc2 $0, 0( %0 );" \ - "lwc2 $1, 4( %0 )" \ - : \ - : "r"( r0 ) ) - -#define gte_ldv3(r0, r1, r2) __asm__ volatile ( \ - "lwc2 $0, 0( %0 );" \ - "lwc2 $1, 4( %0 );" \ - "lwc2 $2, 0( %1 );" \ - "lwc2 $3, 4( %1 );" \ - "lwc2 $4, 0( %2 );" \ - "lwc2 $5, 4( %2 )" \ - : \ - : "r"( r0 ), "r"( r1 ), "r"( r2 ) ) - -#define gte_ldv3c(r0) __asm__ volatile ( \ - "lwc2 $0, 0( %0 );" \ - "lwc2 $1, 4( %0 );" \ - "lwc2 $2, 8( %0 );" \ - "lwc2 $3, 12( %0 );" \ - "lwc2 $4, 16( %0 );" \ - "lwc2 $5, 20( %0 )" \ - : \ - : "r"( r0 ) ) - -#define gte_rtps() __asm__ volatile ("nop;nop;rtps") -#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt") -#define gte_nclip() __asm__ volatile ("nop;nop;nclip") - -#define gte_stsxy(r0) __asm__ volatile ( \ - "swc2 $14, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "memory" ) - -#define gte_stsxy3(r0, r1, r2) __asm__ volatile ( \ - "swc2 $12, 0( %0 );" \ - "swc2 $13, 0( %1 );" \ - "swc2 $14, 0( %2 )" \ - : \ - : "r"( r0 ), "r"( r1 ), "r"( r2 ) \ - : "memory" ) - -#define gte_stsxy3c(r0) __asm__ volatile ( \ - "swc2 $12, 0( %0 );" \ - "swc2 $13, 4( %0 );" \ - "swc2 $14, 8( %0 )" \ - : \ - : "r"( r0 ) \ - : "memory" ) - -#define gte_stsxy3_f3(r0) __asm__ volatile ( \ - "swc2 $12, 8( %0 );" \ - "swc2 $13, 12( %0 );" \ - "swc2 $14, 16( %0 )" \ - : \ - : "r"( r0 ) \ - : "memory" ) - -#define gte_stsxy3_ft3(r0) __asm__ volatile ( \ - "swc2 $12, 8( %0 );" \ - "swc2 $13, 16( %0 );" \ - "swc2 $14, 24( %0 )" \ - : \ - : "r"( r0 ) \ - : "memory" ) - -#define gte_stsxy3_f4(r0) __asm__ volatile ( \ - "swc2 $12, 8( %0 );" \ - "swc2 $13, 12( %0 );" \ - "swc2 $14, 16( %0 )" \ - : \ - : "r"( r0 ) \ - : "memory" ) - -#define gte_stsz3(r0, r1, r2) __asm__ volatile ( \ - "swc2 $17, 0( %0 );" \ - "swc2 $18, 0( %1 );" \ - "swc2 $19, 0( %2 )" \ - : \ - : "r"( r0 ), "r"( r1 ), "r"( r2 ) \ - : "memory" ) - -#define gte_stsz4(r0, r1, r2, r3) __asm__ volatile ( \ - "swc2 $16, 0( %0 );" \ - "swc2 $17, 0( %1 );" \ - "swc2 $18, 0( %2 );" \ - "swc2 $19, 0( %3 )" \ - : \ - : "r"( r0 ), "r"( r1 ), "r"( r2 ), "r"( r3 ) \ - : "memory" ) - -#define gte_stszotz(r0) __asm__ volatile ( \ - "mfc2 $12, $19;" \ - "nop;" \ - "sra $12, $12, 2;" \ - "sw $12, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "$12", "memory" ) - -#define gte_stflg(r0) __asm__ volatile ( \ - "cfc2 $12, $31;" \ - "nop;" \ - "sw $12, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "$12", "memory" ) - -#define gte_stopz(r0) __asm__ volatile ( \ - "swc2 $24, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "memory" ) - -void func_8017EB7C(s32 arg0) -{ - typedef struct { u32 w0, w1, w2; } Prim; - - extern s32 func_800491EC(void); - extern void func_800547D8(s32, MATRIX2 *); - extern void func_80052E38(MATRIX2 *); - extern u8 *D_800A5E60; - extern u8 D_800A6610[]; - extern short D_800B9A02; /* TU-visible spelling (engine_core.h + ov_SC01_000.c col-0); unsigned access forced at use — §8d sub-class (b) */ - - DVECTOR2 tmpxy[4]; - SVECTOR2 box[8]; - SVECTOR2 sxy[8]; - MATRIX2 mtx; - struct { long otz, flag, opz, sz0, sz1, sz2, sz3; } g; - - s32 lim; - s32 nparts; - s32 j; - u32 nprim; - u32 i; - Part *part; - Prim *prim; - u8 *pkt; - u32 ot; - u8 *vtx; - u8 *va, *vb, *vc, *vd; - u32 w, code; - u32 wx, wy, wz; - s32 xa32, xb32, t32; - s32 xmn1, xmx1, xmn2, xmx2; - s32 mnc, mxc; - s16 my, mny, mx, mn; - - lim = func_800491EC() + *(s32 *)(arg0 + 0x64); - func_800547D8(arg0 + 0x10, &mtx); - func_80052E38(&mtx); - - pkt = D_800A5E60; - part = *(Part **)(arg0 + 0xC); - nparts = *(s32 *)(*(s32 *)(arg0 + 8) + 8); - vtx = *(u8 **)(*(s32 *)(arg0 + 8) + 0x10); - ot = (u32)&D_800A6610[(*(u16 *)&D_800B9A02) << 14]; - - for (j = 0; j < nparts; j++, part++) { - wx = part->xx; - mn = wx; - mx = wx >> 16; - wy = part->yy; - mny = wy; - my = wy >> 16; - wz = part->zz; - box[0].vx = mn; box[0].vy = mny; - box[1].vx = mx; box[1].vy = mny; - box[2].vx = mn; box[2].vy = mny; - box[3].vx = mx; box[3].vy = mny; - box[4].vx = mn; box[4].vy = my; - box[5].vx = mx; box[5].vy = my; - box[6].vx = mn; box[6].vy = my; - box[7].vx = mx; box[7].vy = my; - wy = wz >> 16; - box[0].vz = wz; - box[1].vz = wz; - box[4].vz = wz; - box[5].vz = wz; - box[2].vz = wy; - box[3].vz = wy; - box[6].vz = wy; - box[7].vz = wy; - - gte_ldv3c(&box[0]); - gte_rtpt(); - gte_stsxy3(&sxy[0], &sxy[1], &sxy[2]); - gte_ldv0(&box[3]); - gte_rtps(); - gte_stsxy(&sxy[3]); - gte_ldv3c(&box[4]); - __asm__ volatile (""); /* §45-B live-length slider: +1 static insn splits the 228/230 allocno-priority tie (498/498 -> 497/498) */ - gte_rtpt(); - gte_stsxy3(&sxy[4], &sxy[5], &sxy[6]); - gte_ldv0(&box[7]); - gte_rtps(); - gte_stsxy(&sxy[7]); - gte_stszotz(&g.otz); - - if (lim >= g.otz) { - xa32 = sxy[0].vx; - xb32 = sxy[1].vx; - if (xb32 < xa32) { xmx1 = xa32; xmn1 = xb32; } else { xmn1 = xa32; xmx1 = xb32; } - t32 = sxy[2].vx; - if (xmx1 < t32) xmx1 = t32; else if (t32 < xmn1) xmn1 = t32; - t32 = sxy[3].vx; - if (xmx1 < t32) xmx1 = t32; else if (t32 < xmn1) xmn1 = t32; - xa32 = sxy[4].vx; - xb32 = sxy[5].vx; - if (xb32 < xa32) { xmx2 = xa32; xmn2 = xb32; } else { xmn2 = xa32; xmx2 = xb32; } - t32 = sxy[6].vx; - if (xmx2 < t32) xmx2 = t32; else if (t32 < xmn2) xmn2 = t32; - t32 = sxy[7].vx; - if (xmx2 < t32) xmx2 = t32; else if (t32 < xmn2) xmn2 = t32; - mnc = xmn1; - if (xmn2 < xmn1) mnc = xmn2; - mxc = xmx1; - if (mxc < xmx2) mxc = xmx2; - if ((s16)mxc >= -0xA0 && (s16)mnc < 0xA1) { - xa32 = sxy[0].vy; - xb32 = sxy[1].vy; - if (xb32 < xa32) { xmx1 = xa32; xmn1 = xb32; } else { xmn1 = xa32; xmx1 = xb32; } - t32 = sxy[2].vy; - if (xmx1 < t32) xmx1 = t32; else if (t32 < xmn1) xmn1 = t32; - t32 = sxy[3].vy; - if (xmx1 < t32) xmx1 = t32; else if (t32 < xmn1) xmn1 = t32; - xa32 = sxy[4].vy; - xb32 = sxy[5].vy; - if (xb32 < xa32) { xmx2 = xa32; xmn2 = xb32; } else { xmn2 = xa32; xmx2 = xb32; } - t32 = sxy[6].vy; - if (xmx2 < t32) xmx2 = t32; else if (t32 < xmn2) xmn2 = t32; - t32 = sxy[7].vy; - if (xmx2 < t32) xmx2 = t32; else if (t32 < xmn2) xmn2 = t32; - mnc = xmn1; - if (xmn2 < xmn1) mnc = xmn2; - mxc = xmx1; - if (mxc < xmx2) mxc = xmx2; - if ((s16)mxc >= -0x78 && (s16)mnc < 0x79) { - prim = (Prim *)part->prim; - nprim = part->nprim; - for (i = 0; i < nprim; i++, prim++) { - w = prim->w1; - va = vtx + (w & 0xFFFF); - vb = vtx + (w >> 16); - w = prim->w2; - vc = vtx + (w & 0xFFFF); - w = w >> 16; - gte_ldv3(va, vb, vc); - gte_rtpt(); - gte_stflg(&g.flag); - if (!(g.flag & 0x7F85E000)) { - gte_nclip(); - code = w & 7; - vd = vtx + (w & 0xFFF8); - gte_stopz(&g.opz); - if (g.opz > 0) { - switch (code) { - case 4: - case 5: - gte_stsxy3_f3(pkt); - gte_stsz3(&g.sz0, &g.sz1, &g.sz2); - if (((PolyF3 *)pkt)->x0 > ((PolyF3 *)pkt)->x1) { - mx = ((PolyF3 *)pkt)->x0; - mn = ((PolyF3 *)pkt)->x1; - } else { - mn = ((PolyF3 *)pkt)->x0; - mx = ((PolyF3 *)pkt)->x1; - } - if (((PolyF3 *)pkt)->x2 > mx) mx = ((PolyF3 *)pkt)->x2; - else if (((PolyF3 *)pkt)->x2 < mn) mn = ((PolyF3 *)pkt)->x2; - if (mx >= -0xA0 && mn < 0xA1) { - if (((PolyF3 *)pkt)->y0 > ((PolyF3 *)pkt)->y1) { - my = ((PolyF3 *)pkt)->y0; - mny = ((PolyF3 *)pkt)->y1; - } else { - mny = ((PolyF3 *)pkt)->y0; - my = ((PolyF3 *)pkt)->y1; - } - if (((PolyF3 *)pkt)->y2 > my) my = ((PolyF3 *)pkt)->y2; - else if (((PolyF3 *)pkt)->y2 < mny) mny = ((PolyF3 *)pkt)->y2; - if (my >= -0x78 && mny < 0x79) { - s32 za, zb; - u32 *otp; - if (g.sz0 > g.sz1) { - za = g.sz0; - if (za < g.sz2) za = g.sz2; - } else { - za = g.sz1; - if (za < g.sz2) za = g.sz2; - } - g.opz = za; - if (code != 4) g.opz = za + 0x200; - ((PolyF3 *)pkt)->rgbc = prim->w0; - otp = (u32 *)(((g.opz >> 2) << 2) + ot); - *(u32 *)pkt = (*otp & 0xFFFFFF) | 0x4000000; - *otp = (*otp & 0xFF000000) | ((u32)pkt & 0xFFFFFF); - pkt += 0x14; - } - } - break; - case 6: - case 7: - gte_stsxy3_ft3(pkt); - gte_stsz3(&g.sz0, &g.sz1, &g.sz2); - if (((PolyFT3 *)pkt)->x0 > ((PolyFT3 *)pkt)->x1) { - mx = ((PolyFT3 *)pkt)->x0; - mn = ((PolyFT3 *)pkt)->x1; - } else { - mn = ((PolyFT3 *)pkt)->x0; - mx = ((PolyFT3 *)pkt)->x1; - } - if (((PolyFT3 *)pkt)->x2 > mx) mx = ((PolyFT3 *)pkt)->x2; - else if (((PolyFT3 *)pkt)->x2 < mn) mn = ((PolyFT3 *)pkt)->x2; - if (mx >= -0xA0 && mn < 0xA1) { - if (((PolyFT3 *)pkt)->y0 > ((PolyFT3 *)pkt)->y1) { - my = ((PolyFT3 *)pkt)->y0; - mny = ((PolyFT3 *)pkt)->y1; - } else { - mny = ((PolyFT3 *)pkt)->y0; - my = ((PolyFT3 *)pkt)->y1; - } - if (((PolyFT3 *)pkt)->y2 > my) my = ((PolyFT3 *)pkt)->y2; - else if (((PolyFT3 *)pkt)->y2 < mny) mny = ((PolyFT3 *)pkt)->y2; - if (my >= -0x78 && mny < 0x79) { - s32 za, zb; - u32 *otp; - u32 *tp; - if (g.sz0 > g.sz1) { - za = g.sz0; - if (za < g.sz2) za = g.sz2; - } else { - za = g.sz1; - if (za < g.sz2) za = g.sz2; - } - g.opz = za; - if (code == 7) g.opz = za + 0x200; - tp = (u32 *)prim->w0; - ((PolyFT3 *)pkt)->rgbc = tp[0]; - ((PolyFT3 *)pkt)->uvc0 = tp[1]; - ((PolyFT3 *)pkt)->uvp1 = tp[2]; - ((PolyFT3 *)pkt)->uv2 = tp[3]; - otp = (u32 *)(((g.opz >> 2) << 2) + ot); - *(u32 *)pkt = (*otp & 0xFFFFFF) | 0x7000000; - *otp = (*otp & 0xFF000000) | ((u32)pkt & 0xFFFFFF); - pkt += 0x20; - } - } - break; - case 0: - case 1: - gte_stsxy3_f4(pkt); - gte_ldv0(vd); - gte_rtps(); - if (((PolyF4 *)pkt)->x0 > ((PolyF4 *)pkt)->x1) { - mx = ((PolyF4 *)pkt)->x0; - mn = ((PolyF4 *)pkt)->x1; - } else { - mn = ((PolyF4 *)pkt)->x0; - mx = ((PolyF4 *)pkt)->x1; - } - if (((PolyF4 *)pkt)->x2 > mx) mx = ((PolyF4 *)pkt)->x2; - else if (((PolyF4 *)pkt)->x2 < mn) mn = ((PolyF4 *)pkt)->x2; - if (((PolyF4 *)pkt)->y0 > ((PolyF4 *)pkt)->y1) { - my = ((PolyF4 *)pkt)->y0; - mny = ((PolyF4 *)pkt)->y1; - } else { - mny = ((PolyF4 *)pkt)->y0; - my = ((PolyF4 *)pkt)->y1; - } - if (((PolyF4 *)pkt)->y2 > my) my = ((PolyF4 *)pkt)->y2; - else if (((PolyF4 *)pkt)->y2 < mny) mny = ((PolyF4 *)pkt)->y2; - gte_stflg(&g.flag); - if (!(g.flag & 0x7F85E000)) { - gte_stsz4(&g.sz0, &g.sz1, &g.sz2, &g.sz3); - gte_stsxy((long *)&((PolyF4 *)pkt)->x3); - if (((PolyF4 *)pkt)->x3 < mn) mn = ((PolyF4 *)pkt)->x3; - else if (mx < ((PolyF4 *)pkt)->x3) mx = ((PolyF4 *)pkt)->x3; - if (mx >= -0xA0 && mn < 0xA1) { - if (((PolyF4 *)pkt)->y3 < mny) mny = ((PolyF4 *)pkt)->y3; - else if (my < ((PolyF4 *)pkt)->y3) my = ((PolyF4 *)pkt)->y3; - if (my >= -0x78 && mny < 0x79) { - s32 za, zb; - u32 *otp; - zb = g.sz2; - if (zb < g.sz3) zb = g.sz3; - za = g.sz0; - if (za < g.sz1) za = g.sz1; - if (za < zb) za = zb; - g.opz = za; - ((PolyF4 *)pkt)->rgbc = prim->w0; - otp = (u32 *)(((za >> 2) << 2) + ot); - *(u32 *)pkt = (*otp & 0xFFFFFF) | 0x5000000; - *otp = (*otp & 0xFF000000) | ((u32)pkt & 0xFFFFFF); - pkt += 0x18; - } - } - } - break; - case 2: - case 3: - gte_stsxy3c(&tmpxy[0]); - gte_ldv0(vd); - gte_rtps(); - if (tmpxy[0].vx > tmpxy[1].vx) { - mx = tmpxy[0].vx; - mn = tmpxy[1].vx; - } else { - mn = tmpxy[0].vx; - mx = tmpxy[1].vx; - } - if (tmpxy[2].vx > mx) mx = tmpxy[2].vx; - else if (tmpxy[2].vx < mn) mn = tmpxy[2].vx; - if (tmpxy[0].vy > tmpxy[1].vy) { - my = tmpxy[0].vy; - mny = tmpxy[1].vy; - } else { - mny = tmpxy[0].vy; - my = tmpxy[1].vy; - } - if (tmpxy[2].vy > my) my = tmpxy[2].vy; - else if (tmpxy[2].vy < mny) mny = tmpxy[2].vy; - gte_stflg(&g.flag); - if (!(g.flag & 0x7F85E000)) { - gte_stsz4(&g.sz0, &g.sz1, &g.sz2, &g.sz3); - gte_stsxy((long *)&((PolyFT4 *)pkt)->x3); - if (((PolyFT4 *)pkt)->x3 < mn) mn = ((PolyFT4 *)pkt)->x3; - else if (mx < ((PolyFT4 *)pkt)->x3) mx = ((PolyFT4 *)pkt)->x3; - if (mx >= -0xA0 && mn < 0xA1) { - if (((PolyFT4 *)pkt)->y3 < mny) mny = ((PolyFT4 *)pkt)->y3; - else if (my < ((PolyFT4 *)pkt)->y3) my = ((PolyFT4 *)pkt)->y3; - if (my >= -0x78 && mny < 0x79) { - s32 za, zb; - u32 *otp; - u32 *tp; - u32 uvw; - zb = g.sz2; - if (zb < g.sz3) zb = g.sz3; - za = g.sz0; - if (za < g.sz1) za = g.sz1; - if (za < zb) za = zb; - g.opz = za; - if (code == 3) g.opz = za + 0x200; - *(u32 *)&((PolyFT4 *)pkt)->x0 = *(u32 *)&tmpxy[0]; - *(u32 *)&((PolyFT4 *)pkt)->x1 = *(u32 *)&tmpxy[1]; - *(u32 *)&((PolyFT4 *)pkt)->x2 = *(u32 *)&tmpxy[2]; - tp = (u32 *)prim->w0; - ((PolyFT4 *)pkt)->rgbc = tp[0]; - ((PolyFT4 *)pkt)->uvc0 = tp[1]; - ((PolyFT4 *)pkt)->uvp1 = tp[2]; - uvw = tp[3]; - ((PolyFT4 *)pkt)->uv2 = uvw; - ((PolyFT4 *)pkt)->uv3 = uvw >> 16; - otp = (u32 *)(((g.opz >> 2) << 2) + ot); - *(u32 *)pkt = (*otp & 0xFFFFFF) | 0x9000000; - *otp = (*otp & 0xFF000000) | ((u32)pkt & 0xFFFFFF); - pkt += 0x28; - } - } - } - break; - } - } - } - } - } - } - } - } - D_800A5E60 = pkt; -} - - -#define gte_ldv0(r0) __asm__ volatile ( \ - "lwc2 $0, 0( %0 );" \ - "lwc2 $1, 4( %0 )" \ - : \ - : "r"( r0 ) ) -#define gte_ldv3c(r0) __asm__ volatile ( \ - "lwc2 $0, 0( %0 );" \ - "lwc2 $1, 4( %0 );" \ - "lwc2 $2, 8( %0 );" \ - "lwc2 $3, 12( %0 );" \ - "lwc2 $4, 16( %0 );" \ - "lwc2 $5, 20( %0 )" \ - : \ - : "r"( r0 ) ) -#define gte_rtps() __asm__ volatile ("nop;nop;rtps") -#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt") -#define gte_nclip() __asm__ volatile ("nop;nop;nclip") -#define gte_stsxy(r0) __asm__ volatile ( \ - "swc2 $14, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "memory" ) -#define gte_stsxy3(r0, r1, r2) __asm__ volatile ( \ - "swc2 $12, 0( %0 );" \ - "swc2 $13, 0( %1 );" \ - "swc2 $14, 0( %2 )" \ - : \ - : "r"( r0 ), "r"( r1 ), "r"( r2 ) \ - : "memory" ) -#define gte_stsxy3c(r0) __asm__ volatile ( \ - "swc2 $12, 0( %0 );" \ - "swc2 $13, 4( %0 );" \ - "swc2 $14, 8( %0 )" \ - : \ - : "r"( r0 ) \ - : "memory" ) -#define gte_stsxy3_ft3(r0) __asm__ volatile ( \ - "swc2 $12, 8( %0 );" \ - "swc2 $13, 16( %0 );" \ - "swc2 $14, 24( %0 )" \ - : \ - : "r"( r0 ) \ - : "memory" ) -#define gte_stsz3(r0, r1, r2) __asm__ volatile ( \ - "swc2 $17, 0( %0 );" \ - "swc2 $18, 0( %1 );" \ - "swc2 $19, 0( %2 )" \ - : \ - : "r"( r0 ), "r"( r1 ), "r"( r2 ) \ - : "memory" ) -#define gte_stsz4(r0, r1, r2, r3) __asm__ volatile ( \ - "swc2 $16, 0( %0 );" \ - "swc2 $17, 0( %1 );" \ - "swc2 $18, 0( %2 );" \ - "swc2 $19, 0( %3 )" \ - : \ - : "r"( r0 ), "r"( r1 ), "r"( r2 ), "r"( r3 ) \ - : "memory" ) -#define gte_stszotz(r0) __asm__ volatile ( \ - "mfc2 $12, $19;" \ - "nop;" \ - "sra $12, $12, 2;" \ - "sw $12, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "$12", "memory" ) -#define gte_stflg(r0) __asm__ volatile ( \ - "cfc2 $12, $31;" \ - "nop;" \ - "sw $12, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "$12", "memory" ) -#define gte_stopz(r0) __asm__ volatile ( \ - "swc2 $24, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "memory" ) -#define gte_ldv0(r0) __asm__ volatile ( \ - "lwc2 $0, 0( %0 );" \ - "lwc2 $1, 4( %0 )" \ - : \ - : "r"( r0 ) ) -#define gte_ldv3c(r0) __asm__ volatile ( \ - "lwc2 $0, 0( %0 );" \ - "lwc2 $1, 4( %0 );" \ - "lwc2 $2, 8( %0 );" \ - "lwc2 $3, 12( %0 );" \ - "lwc2 $4, 16( %0 );" \ - "lwc2 $5, 20( %0 )" \ - : \ - : "r"( r0 ) ) -#define gte_rtps() __asm__ volatile ("nop;nop;rtps") -#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt") -#define gte_nclip() __asm__ volatile ("nop;nop;nclip") -#define gte_stsxy(r0) __asm__ volatile ( \ - "swc2 $14, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "memory" ) -#define gte_stsxy3(r0, r1, r2) __asm__ volatile ( \ - "swc2 $12, 0( %0 );" \ - "swc2 $13, 0( %1 );" \ - "swc2 $14, 0( %2 )" \ - : \ - : "r"( r0 ), "r"( r1 ), "r"( r2 ) \ - : "memory" ) -#define gte_stsxy3c(r0) __asm__ volatile ( \ - "swc2 $12, 0( %0 );" \ - "swc2 $13, 4( %0 );" \ - "swc2 $14, 8( %0 )" \ - : \ - : "r"( r0 ) \ - : "memory" ) -#define gte_stsxy3_ft3(r0) __asm__ volatile ( \ - "swc2 $12, 8( %0 );" \ - "swc2 $13, 16( %0 );" \ - "swc2 $14, 24( %0 )" \ - : \ - : "r"( r0 ) \ - : "memory" ) -#define gte_stsz3(r0, r1, r2) __asm__ volatile ( \ - "swc2 $17, 0( %0 );" \ - "swc2 $18, 0( %1 );" \ - "swc2 $19, 0( %2 )" \ - : \ - : "r"( r0 ), "r"( r1 ), "r"( r2 ) \ - : "memory" ) -#define gte_stsz4(r0, r1, r2, r3) __asm__ volatile ( \ - "swc2 $16, 0( %0 );" \ - "swc2 $17, 0( %1 );" \ - "swc2 $18, 0( %2 );" \ - "swc2 $19, 0( %3 )" \ - : \ - : "r"( r0 ), "r"( r1 ), "r"( r2 ), "r"( r3 ) ) -#define gte_stszotz(r0) __asm__ volatile ( \ - "mfc2 $12, $19;" \ - "nop;" \ - "sra $12, $12, 2;" \ - "sw $12, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "$12", "memory" ) -#define gte_stflg(r0) __asm__ volatile ( \ - "cfc2 $12, $31;" \ - "nop;" \ - "sw $12, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "$12", "memory" ) -#define gte_stopz(r0) __asm__ volatile ( \ - "swc2 $24, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "memory" ) - - -void func_8017FA5C(s32 arg0, s32 arg1, s32 arg2) -{ - /* vy UNSIGNED: the `+= xoff` reads it with lhu, not lh. */ - - extern s32 func_800491EC(void); - extern void func_800547D8(s32, MATRIX2 *); - extern void func_80052E38(MATRIX2 *); - extern u8 *D_800A5E60; - extern u8 D_800A6610[]; - - DVECTOR2 tmpxy[4]; /* sp+0x10 */ - SVECTOR2 box[8]; /* sp+0x20 */ - SVECTOR2 sxy[8]; /* sp+0x60 */ - SVec_8017FA5C v[3]; /* sp+0xA0 */ - SVec_8017FA5C vdv; /* sp+0xB8 */ - MATRIX2 mtx; /* sp+0xC0 */ - struct { long otz, flag, opz, sz0, sz1, sz2, sz3; } g; /* sp+0xE0 */ - - s32 lim; - s32 nparts; - s32 j; - u32 nprim; - u32 i; - Part *part; - SVec_8017FA5C *vp; - Prim_8017FA5C *prim; - u8 *pkt; - u32 ot; - u8 *vtx; - u8 *va, *vb, *vc, *vd; - u32 w; - s32 code; /* SIGNED: the switch tree uses slti, not sltiu */ - u32 wx, wy, wz; - s32 xoff; - s32 xa32, xb32, t32; - s32 xmn1, xmx1, xmn2, xmx2; - s32 mnc, mxc; - s16 my, mny, mx, mn; - - if (*(s32 *)arg0 == 0) { - lim = func_800491EC() + *(s32 *)(arg0 + 0x64); - func_800547D8(arg0 + 0x10, &mtx); - func_80052E38(&mtx); - pkt = D_800A5E60; - - nparts = *(s32 *)(arg1 + 8); - vtx = *(u8 **)(arg1 + 0x10); - ot = (u32)&D_800A6610[(*(u16 *)&D_800B9A02) << 14]; - xoff = arg2; - part = (Part *)(arg1 + 0x14); - - for (j = 0; j < nparts; j++, part++) { - wx = part->xx; - mn = wx; - mx = wx >> 16; - wy = part->yy; - mny = wy + xoff; - my = (wy >> 16) + xoff; - wz = part->zz; - box[0].vx = mn; box[0].vy = mny; box[0].vz = wz; - box[1].vx = mx; box[1].vy = mny; box[1].vz = wz; - box[2].vx = mn; box[2].vy = mny; box[2].vz = wz >> 16; - box[3].vx = mx; box[3].vy = mny; box[3].vz = wz >> 16; - - gte_ldv3c(&box[0]); - gte_rtpt(); - gte_stsxy3(&sxy[0], &sxy[1], &sxy[2]); - gte_ldv0(&box[3]); - gte_rtps(); - - box[4].vx = mn; box[4].vy = my; box[4].vz = wz; - box[5].vx = mx; box[5].vy = my; box[5].vz = wz; - box[6].vx = mn; box[6].vy = my; box[6].vz = wz >> 16; - box[7].vx = mx; box[7].vy = my; box[7].vz = wz >> 16; - - gte_stsxy(&sxy[3]); - gte_ldv3c(&box[4]); - __asm__ volatile (""); /* §47 live-length slider: splits the &g.sz0/&g.sz1 254/254 tie */ - gte_rtpt(); - gte_stsxy3(&sxy[4], &sxy[5], &sxy[6]); - gte_ldv0(&box[7]); - gte_rtps(); - gte_stsxy(&sxy[7]); - gte_stszotz(&g.otz); - - if (lim >= g.otz) { - xa32 = sxy[0].vx; - xb32 = sxy[1].vx; - if (xb32 < xa32) { xmx1 = xa32; xmn1 = xb32; } else { xmn1 = xa32; xmx1 = xb32; } - t32 = sxy[2].vx; - if (xmx1 < t32) xmx1 = t32; else if (t32 < xmn1) xmn1 = t32; - t32 = sxy[3].vx; - if (xmx1 < t32) xmx1 = t32; else if (t32 < xmn1) xmn1 = t32; - xa32 = sxy[4].vx; - xb32 = sxy[5].vx; - if (xb32 < xa32) { xmx2 = xa32; xmn2 = xb32; } else { xmn2 = xa32; xmx2 = xb32; } - t32 = sxy[6].vx; - if (xmx2 < t32) xmx2 = t32; else if (t32 < xmn2) xmn2 = t32; - t32 = sxy[7].vx; - if (xmx2 < t32) xmx2 = t32; else if (t32 < xmn2) xmn2 = t32; - mnc = xmn1; - if (xmn2 < xmn1) mnc = xmn2; - mxc = xmx1; - if (mxc < xmx2) mxc = xmx2; - if ((s16)mxc >= -0xA0 && (s16)mnc < 0xA1) { - xa32 = sxy[0].vy; - xb32 = sxy[1].vy; - if (xb32 < xa32) { xmx1 = xa32; xmn1 = xb32; } else { xmn1 = xa32; xmx1 = xb32; } - t32 = sxy[2].vy; - if (xmx1 < t32) xmx1 = t32; else if (t32 < xmn1) xmn1 = t32; - t32 = sxy[3].vy; - if (xmx1 < t32) xmx1 = t32; else if (t32 < xmn1) xmn1 = t32; - xa32 = sxy[4].vy; - xb32 = sxy[5].vy; - if (xb32 < xa32) { xmx2 = xa32; xmn2 = xb32; } else { xmn2 = xa32; xmx2 = xb32; } - t32 = sxy[6].vy; - if (xmx2 < t32) xmx2 = t32; else if (t32 < xmn2) xmn2 = t32; - t32 = sxy[7].vy; - if (xmx2 < t32) xmx2 = t32; else if (t32 < xmn2) xmn2 = t32; - mnc = xmn1; - if (xmn2 < xmn1) mnc = xmn2; - mxc = xmx1; - if (mxc < xmx2) mxc = xmx2; - if ((s16)mxc >= -0x6E && (s16)mnc < 0x6F) { - prim = (Prim_8017FA5C *)part->prim; - nprim = part->nprim; - for (i = 0; i < nprim; i++, prim++) { - vp = &vdv; - w = prim->w1; - va = vtx + (w & 0xFFFF); - vb = vtx + (w >> 16); - w = prim->w2; - vc = vtx + (w & 0xFFFF); - v[0] = *(SVec_8017FA5C *)va; - v[1] = *(SVec_8017FA5C *)vb; - v[2] = *(SVec_8017FA5C *)vc; - w = w >> 16; - v[0].vy += xoff; - v[1].vy += xoff; - v[2].vy += xoff; - gte_ldv3c(&v[0]); - gte_rtpt(); - gte_stflg(&g.flag); - if (!(g.flag & 0x7F85E000)) { - gte_nclip(); - code = w & 7; - vd = vtx + (w & 0xFFF8); - gte_stopz(&g.opz); - if (g.opz > 0) { - switch (code) { - case 6: - case 7: - gte_stsxy3_ft3(pkt); - gte_stsz3(&g.sz0, &g.sz1, &g.sz2); - if (((PolyFT3 *)pkt)->x0 > ((PolyFT3 *)pkt)->x1) { - mx = ((PolyFT3 *)pkt)->x0; - mn = ((PolyFT3 *)pkt)->x1; - } else { - mn = ((PolyFT3 *)pkt)->x0; - mx = ((PolyFT3 *)pkt)->x1; - } - if (((PolyFT3 *)pkt)->x2 > mx) mx = ((PolyFT3 *)pkt)->x2; - else if (((PolyFT3 *)pkt)->x2 < mn) mn = ((PolyFT3 *)pkt)->x2; - if (mx >= -0xA0 && mn < 0xA1) { - if (((PolyFT3 *)pkt)->y0 > ((PolyFT3 *)pkt)->y1) { - my = ((PolyFT3 *)pkt)->y0; - mny = ((PolyFT3 *)pkt)->y1; - } else { - mny = ((PolyFT3 *)pkt)->y0; - my = ((PolyFT3 *)pkt)->y1; - } - if (((PolyFT3 *)pkt)->y2 > my) my = ((PolyFT3 *)pkt)->y2; - else if (((PolyFT3 *)pkt)->y2 < mny) mny = ((PolyFT3 *)pkt)->y2; - if (my >= -0x6E && mny < 0x6F) { - s32 za; - u32 *otp; - u32 *tp; - if (g.sz0 > g.sz1) { - za = g.sz0; - if (za < g.sz2) za = g.sz2; - } else { - za = g.sz1; - if (za < g.sz2) za = g.sz2; - } - g.opz = za; - if (code == 7) g.opz = za + 0x200; - tp = (u32 *)prim->w0; - ((PolyFT3 *)pkt)->rgbc = tp[0]; - ((PolyFT3 *)pkt)->uvc0 = tp[1]; - ((PolyFT3 *)pkt)->uvp1 = tp[2]; - ((PolyFT3 *)pkt)->uv2 = tp[3]; - otp = (u32 *)(((g.opz >> 2) << 2) + ot); - *(u32 *)pkt = (*otp & 0xFFFFFF) | 0x7000000; - *otp = (*otp & 0xFF000000) | ((u32)pkt & 0xFFFFFF); - pkt += 0x28; - } - } - break; - case 2: - case 3: - gte_stsxy3c(&tmpxy[0]); - vdv = *(SVec_8017FA5C *)vd; - vdv.vy += xoff; - gte_ldv0(vp); - gte_rtps(); - if (tmpxy[0].vx > tmpxy[1].vx) { - mx = tmpxy[0].vx; - mn = tmpxy[1].vx; - } else { - mn = tmpxy[0].vx; - mx = tmpxy[1].vx; - } - if (tmpxy[2].vx > mx) mx = tmpxy[2].vx; - else if (tmpxy[2].vx < mn) mn = tmpxy[2].vx; - if (tmpxy[0].vy > tmpxy[1].vy) { - my = tmpxy[0].vy; - mny = tmpxy[1].vy; - } else { - mny = tmpxy[0].vy; - my = tmpxy[1].vy; - } - if (tmpxy[2].vy > my) my = tmpxy[2].vy; - else if (tmpxy[2].vy < mny) mny = tmpxy[2].vy; - gte_stflg(&g.flag); - if (!(g.flag & 0x7F85E000)) { - gte_stsz4(&g.sz0, &g.sz1, &g.sz2, &g.sz3); - gte_stsxy((long *)&((PolyFT4 *)pkt)->x3); - if (((PolyFT4 *)pkt)->x3 < mn) mn = ((PolyFT4 *)pkt)->x3; - else if (mx < ((PolyFT4 *)pkt)->x3) mx = ((PolyFT4 *)pkt)->x3; - if (mx >= -0xA0 && mn < 0xA1) { - if (((PolyFT4 *)pkt)->y3 < mny) mny = ((PolyFT4 *)pkt)->y3; - else if (my < ((PolyFT4 *)pkt)->y3) my = ((PolyFT4 *)pkt)->y3; - if (my >= -0x6E && mny < 0x6F) { - s32 za, zb; - u32 *otp; - u32 *tp; - u32 uvw; - zb = g.sz2; - if (zb < g.sz3) zb = g.sz3; - za = g.sz0; - if (za < g.sz1) za = g.sz1; - if (za < zb) za = zb; - g.opz = za; - if (code == 3) g.opz = za + 0x200; - *(u32 *)&((PolyFT4 *)pkt)->x0 = *(u32 *)&tmpxy[0]; - *(u32 *)&((PolyFT4 *)pkt)->x1 = *(u32 *)&tmpxy[1]; - *(u32 *)&((PolyFT4 *)pkt)->x2 = *(u32 *)&tmpxy[2]; - tp = (u32 *)prim->w0; - ((PolyFT4 *)pkt)->rgbc = tp[0]; - ((PolyFT4 *)pkt)->uvc0 = tp[1]; - ((PolyFT4 *)pkt)->uvp1 = tp[2]; - uvw = tp[3]; - ((PolyFT4 *)pkt)->uv2 = uvw; - ((PolyFT4 *)pkt)->uv3 = uvw >> 16; - otp = (u32 *)(((g.opz >> 2) << 2) + ot); - *(u32 *)pkt = (*otp & 0xFFFFFF) | 0x9000000; - *otp = (*otp & 0xFF000000) | ((u32)pkt & 0xFFFFFF); - pkt += 0x28; - } - } - } - break; - } - } - } - } - } - } - } - } - D_800A5E60 = pkt; - } -} - - - - -DEFINE_func_801805BC() /* dedup: shared engine-core @0x801805BC (src/shared) */ - - -DEFINE_func_801805F8() /* dedup: shared engine-core @0x801805F8 (src/shared) */ - -extern s32 func_80171990(u8 *a0); -extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); -extern void func_80147324(s32 arg0); - -void func_80180638(arg0) -void *arg0; -{ - if (*(u16 *)((s32)arg0 + 0xB8) & 0x4000) { - *(s32 *)((s32)arg0 + 0x44) |= 0x20000; - func_801466F0(0x16, (s32)arg0, 0, -0x80, -0x10, 0, 0, 0); - func_80147324(0x7BC); - func_80171990((u8 *)arg0); - } -} - - -extern s32 func_8014C088(s32 a0, s32 a1); -extern s32 func_8014CB58(void); -extern s32 func_80171990(u8 *a0); -extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); - -void func_801806B4(s32 a0) -{ - if (func_8014C088(a0, 0x16) == 0) - { - *(s32 *)(a0 + 0x44) &= ~0x20000; - func_8014B5C4((s32 *)a0, func_8014CB58() & 0xFF, 0x80); - func_80171990((u8 *)a0); - } -} - - -DEFINE_func_80180714() /* dedup: shared engine-core @0x80180714 (src/shared) */ - -DEFINE_func_8018071C() /* dedup: shared engine-core @0x8018071C (src/shared) */ - - - - - - - - - - - - - - - - - - - -s32 func_80180744(void) -{ - - extern s32 D_80126D54; - extern s32 D_8018F4F8; - int new_var; - ; - new_var++; - new_var = (double) 1; - new_var--; - return ((u32) (D_80126D54 ^ ((u32) (&D_8018F4F8)))) == new_var; -} - - -s16 func_80180760(void) { - /* [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 s16 D_80126B0C; - return D_80126B0C; -} - - - extern void (*D_8018F548[])(void); - extern void func_80162D28(s32*); - void func_80180770(void *a0) { - D_8018F548[*(u16 *)((s32)a0 + 0x2)](); - if (*(s32 *)((s32)a0 + 0x20) != 0) { - ((void (*)(void *))func_80162D28)(a0); - } - } - - - -extern void func_8014659C(void); -extern void func_8001C214(s32 a0, s32 a1); -extern void func_80149374(s32 a0, s32 a1); -extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80146CA0(void *a0); - -void func_801807D0(s32 a0) { - - extern s32 D_801CEE20; - extern s16 D_8018F544; - extern s16 D_8018F542; - extern s16 D_8018F540; - s32 iVar1; - s32 iVar2; - - iVar1 = *(s32 *)(a0 + 0x4C); - iVar2 = ((s32 (*)(void))func_8014659C)(); - *(s32 *)(a0 + 0x20) = iVar2; - if (iVar2 != 0) { - func_8001C214(iVar2, (s32)&D_801CEE20); - *(u16 *)(iVar2 + 0x10) = 0x800; - *(u16 *)(a0 + 0x60) = 0; - func_80149374(iVar1, a0 + 4); - func_80146DE8((s32 *)a0, 0, 0xFFC00000, 0); - D_8018F544 = 0x80; - D_8018F542 = 0x80; - D_8018F540 = 0x80; - func_80146CA0((void *)a0); - if (*(s32 *)(a0 + 0x50) == 0) { - *(u16 *)(iVar2 + 0x2c) = *(u16 *)(iVar2 + 0x2c) | 0x10; - } - } -} - - -extern void func_8001C810(s32 a0, s32 a1); -extern void func_8013C9C4(void * arg0); -extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern void func_80146CA0(void *a0); -extern void func_80147324(s32 a0); -extern void func_80162FC0(s32 *a0); -extern void func_8016325C(s32 a0, s32 a1, s32 a2, s32 a3); - -void func_8018089C(s32 a0) { - extern u8 D_8018F558[]; - extern s32 D_801CF478; - extern s32 D_8018F510; - - s32 iVar1; - s32 iVar2; - s16 sVar1; - - iVar1 = *(s32 *)(a0 + 0x4c); - iVar2 = *(s32 *)(a0 + 0x20); - func_8016325C(a0, 0, 0x20000, 0); - func_80162FC0((s32 *)a0); - if ((*(s16 *)(a0 + 0x60) == 0) && (0 < *(s32 *)(a0 + 0x28))) { - u16 uVar1; - *(u16 *)(iVar2 + 0x10) = 0; - uVar1 = *(u16 *)(a0 + 0x60); - *(u16 *)(a0 + 0x60) = uVar1 + 1; - } - sVar1 = *(s16 *)(iVar1 + 0xA); - if (sVar1 < *(s16 *)(a0 + 0xA)) { - u16 uVar1; - s32 uVar2; - *(s16 *)(a0 + 0xA) = sVar1; - func_8013C9C4(D_8018F558); - *(u16 *)(a0 + 0x60) = *(u16 *)(iVar2 + 0x18); - func_8001C810(iVar2, (s32)&D_801CF478); - *(s32 **)(iVar2 + 0x80) = &D_8018F510; - *(u16 *)(iVar2 + 0x2c) = *(u16 *)(iVar2 + 0x2c) | 0xA0; - *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; - uVar1 = *(u16 *)(a0 + 0x60); - *(u16 *)(iVar2 + 0x1c) = uVar1; - *(u16 *)(iVar2 + 0x1a) = uVar1; - *(u16 *)(iVar2 + 0x18) = uVar1; - if (*(s32 *)(a0 + 0x50) == 0) { - *(u16 *)(iVar2 + 0x2c) = *(u16 *)(iVar2 + 0x2c) | 0x10; - func_801466B4(0x1B, a0, 0, 0, 1); - func_801466B4(0x1B, a0, 1, 0, 1); - func_801466B4(0x1B, a0, 2, 0, 1); - func_801466B4(0x1B, a0, 3, 0, 1); - uVar2 = 0x81D; - } else { - uVar2 = 0xC5E; - } - func_80147324(uVar2); - func_80146CA0((void *)a0); - } else if (*(s16 *)(a0 + 0x60) != 0) { - s16 sVar2; - sVar2 = *(u16 *)(iVar2 + 0x1c) + 0x100; - *(s16 *)(iVar2 + 0x1c) = sVar2; - *(s16 *)(iVar2 + 0x1a) = sVar2; - *(s16 *)(iVar2 + 0x18) = sVar2; - } -} - - - - -extern void func_80146CA0(void *a0); -extern s16 D_8018F544; -extern s16 D_8018F542; -extern s16 D_8018F540; - -void func_80180A68(void) { - s16 sVar1; - - sVar1 = *(u16 *)&D_8018F544 + 8; - D_8018F544 = sVar1; - D_8018F542 = sVar1; - D_8018F540 = sVar1; - if (sVar1 >= 0x101) { - ((void (*)(void))func_80146CA0)(); - } -} - - -extern s16 D_8018F540; -extern s16 D_8018F542; -extern s16 D_8018F544; -extern void func_80162CCC(void); - -void func_80180AC4(void) { - extern s16 D_8018F544; - extern s16 D_8018F542; - extern s16 D_8018F540; - s16 sVar1; - - sVar1 = D_8018F544 - 8; - D_8018F544 = sVar1; - D_8018F542 = sVar1; - D_8018F540 = sVar1; - if (sVar1 < -0x80) { - func_80162CCC(); - } -} - - -DEFINE_func_80180B20() /* dedup: shared engine-core @0x80180B20 (src/shared) */ - - -DEFINE_func_80180B84() /* dedup: shared engine-core @0x80180B84 (src/shared) */ - - -/* func_80180C34 — per-frame spin + clamp handler (ov_SC03_014, reach x8). - * - * Byte-proven shape notes: - * - obj->0x1C/0x1A are read u16 / written s16 (this file's house idiom), so - * "+= 0x800" is lhu+addiu+sh and the compare re-derives the s16 (sll/sra). - * - each clamp needs TWO pseudos: `limN` (s32, the compare operand — it must be - * SINGLE-BLOCK so local-alloc TIES the `slt` dest into it, giving the target's - * `slt $v1,$v1,$v0`) and `lvN` (s16, the store value — it crosses the branch, - * so it is a GLOBAL allocno, global.c never coalesces, and the target's - * `addu $aN,$v1,$zero` copy survives). Sharing one variable per role across - * the two blocks makes both global, kills the tie and loses both copies - * (regalloc map K8). `lvN` must be s16: an s32 copy folds away (-2 ins). - * - `o` (9 refs / 28 insns, density 9642) out-prioritises lv1 (3 refs / 7, - * 4285) in global.c's allocno_compare and grabs $a0 first; the target has - * $a0 = lv, $a1 = o. The zero-byte read-modify-write asm below gives lv1 two - * extra refs (5 refs / 8 insns -> 12500) so it allocates first and takes $a0, - * pushing `o` to $a1. It emits nothing. (Byte-identical alternatives: - * `register s32 o __asm__("$5");`, or pinning lv1/lv2 to "$4".) - * NB gcc-2.7.2 rejects "+r" constraints — use "=r"(x) : "0"(x). - * - the 0x10 phantom frame slot is an address-taken pad (cookbook S17/S36#3). - */ - -extern void func_80146E90(s32 *a0, s32 a1); -extern void func_80146CA0(void *a0); - -void func_80180C34(s32 p) { - - extern s16 D_80126B0C; - s32 o; - s32 lim1, lim2; - s16 t1, t2, lv1, lv2; - s32 pad[3]; - - (void)&pad; - o = *(s32 *)(p + 0x20); - t1 = *(u16 *)(o + 0x1C) + 0x800; - *(s16 *)(o + 0x1C) = t1; - *(s16 *)(o + 0x18) = t1; - lim1 = **(s16 **)(p + 0x58); - lv1 = lim1; - __asm__("" : "=r"(lv1) : "0"(lv1)); - if (lim1 < t1) { - *(s16 *)(o + 0x1C) = lv1; - *(s16 *)(o + 0x18) = lv1; - D_80126B0C = 1; - } - t2 = *(u16 *)(o + 0x1A) + 0x800; - *(s16 *)(o + 0x1A) = t2; - lim2 = *(s16 *)(*(s32 *)(p + 0x58) + 2); - lv2 = lim2; - if (lim2 < t2) { - *(s16 *)(o + 0x1A) = lv2; - func_80146E90((s32 *)p, *(s16 *)(*(s32 *)(p + 0x58) + 4)); - func_80146CA0((void *)p); - } -} - - -extern s32 func_80146E98(s32 a0); -extern void func_80162CCC(void); - -void func_80180CF8(arg0) -s32 arg0; -{ - s32 tbl; - s32 obj; - u16 t1; - u16 t2; - - tbl = *(s32 *)(arg0 + 0x4C); - obj = *(s32 *)(arg0 + 0x20); - if (func_80146E98(arg0) != 0) { - t1 = *(u16 *)(obj + 0x1C) + 0x400; - *(s16 *)(obj + 0x1C) = t1; - *(s16 *)(obj + 0x18) = t1; - if ((s16)t1 >= 0x7001) { - *(s16 *)(obj + 0x1C) = 0x7000; - *(s16 *)(obj + 0x18) = 0x7000; - } - t2 = *(u16 *)(obj + 0x1A) + 0x100; - *(s16 *)(obj + 0x1A) = t2; - if ((s16)t2 >= 0x7001) { - *(s16 *)(obj + 0x1A) = 0x7000; - } - } - if (*(u16 *)tbl != 0x16) { - ((void (*)(s32))func_80162CCC)(arg0); - } -} - - - - -void func_80180DB8(s32 param_1) { - s32 tbl; - s32 obj; - - tbl = *(s32 *)(param_1 + 0x4C); - obj = *(s32 *)(param_1 + 0x20); - *(s32 *)(param_1 + 0x04) = *(s32 *)(tbl + 0x04); - *(s32 *)(param_1 + 0x08) = *(s32 *)(tbl + 0x08); - *(s32 *)(param_1 + 0x0C) = *(s32 *)(tbl + 0x0C); - *(u16 *)(obj + 0x12) += *(u16 *)(*(s32 *)(param_1 + 0x58) + 0x06); -} - - - -extern void (*D_8018F5B0[])(void); - -void func_80180DFC(void *a0) { - D_8018F5B0[*(u16 *)((s32)a0 + 0x2)](); -} - - - - -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_800D20C0(void *a0, void *a1, s32 a2); -extern void func_800D23D0(void *a0); -extern s32 func_800D222C(s32 a0, void *a1, s32 a2); -extern s32 func_8001CF30(void *a0); -extern void func_80146C3C(void); - - -void func_80180E38(s32 param_1) { - - extern u8 D_8018F598; - s32 obj = *(s32 *)(param_1 + 0x34); - Work8017 w; - short i; - s32 e; - s32 node; - - func_80146A6C(0x11, (void *)param_1, *(s16 *)(param_1 + 6), - (s16)(*(u16 *)(param_1 + 0xA) - 0x10), - *(s16 *)(param_1 + 0xE), 0, 0); - - w.x = *(u16 *)(param_1 + 6); - w.y = *(u16 *)(param_1 + 0xA); - w.z = *(u16 *)(param_1 + 0xE); - func_800D20C0(&w.x, &w.vx, 10); - *(s16 *)(param_1 + 6) = w.x; - *(s16 *)(param_1 + 0xE) = w.z; - w.vy = 0; - func_800D23D0(&w.vx); - - i = 0; - do { - e = func_80146A6C(0x12, (void *)param_1, *(s16 *)(obj + 6), - *(s16 *)(obj + 0xA), *(s16 *)(obj + 0xE), i, 0); - if (e != 0) { - *(s16 *)(e + 0x12) = w.vx; - *(s16 *)(e + 0x16) = w.vy; - *(s16 *)(e + 0x1A) = 0; - } - i = i + 1; - } while (i < 3); - - node = func_800D222C(param_1, &D_8018F598, 0xFD); - if (node != 0) { - *(s32 *)(param_1 + 0x20) = node; - *(u32 *)(node + 4) = *(u32 *)(node + 4) | 0x5D000100; - ((void (*)(void *))func_8001CF30)((void *)node); - *(s16 *)(node + 0x18) = 0x4000; - *(s16 *)(node + 0x1A) = 0x200; - *(s16 *)(param_1 + 0x16) = 0x200; - *(s16 *)(param_1 + 0x14) = 0x1000; - *(s16 *)(node + 0x28) = 0x240; - *(s16 *)(node + 0x2A) = 0x180; - *(s16 *)(node + 0x10) = w.vx; - *(s16 *)(node + 0x12) = w.vy; - *(s16 *)(param_1 + 2) = *(s16 *)(param_1 + 2) + 1; - } else { - ((void (*)(s32))func_80146C3C)(param_1); - } -} - - -extern void func_80146C3C(void); -void func_80180FFC(u8 *p) { - u8 *q; - s32 t; - s32 b; - q = *(u8 **)(p + 0x20); - *(u16 *)(p + 0x16) = *(u16 *)(p + 0x16) + *(u16 *)(p + 0x14); - if (*(s32 *)(p + 0x1C) < 8) { - *(s16 *)(p + 0x14) = *(u16 *)(p + 0x14) - 0x200; - } else { - *(s16 *)(p + 0x14) = *(u16 *)(p + 0x14) - 0x51; - } - b = *(u8 *)(q + 0x26) - 2; - *(s16 *)(q + 0x1A) = *(u16 *)(p + 0x16); - *(s8 *)(q + 0x26) = b; - *(s8 *)(q + 0x25) = b; - *(s8 *)(q + 0x24) = b; - t = *(s32 *)(p + 0x1C); - *(s32 *)(p + 0x1C) = t + 1; - if (t >= 0x1E) { - ((void (*)(u8 *))func_80146C3C)(p); - } -} - - - -extern void (*D_8018F5B8[])(void); - -void func_80181090(void *a0) { - D_8018F5B8[*(u16 *)((s32)a0 + 0x2)](); -} - - - -// @class: plumbing -// @stuck: none — MATCH (41 ins, relocation-masked); frame needed a 0x30 address-taken local - -extern s32 func_800D222C(s32 a0, void *a1, s32 a2); -extern s32 func_8001CF30(void *a0); -extern void func_80146C3C(void); -extern u8 D_8018F5A4; - -void func_801810CC(s32 a0) { - s32 r; - s32 buf[12]; - - (void)&buf; - r = func_800D222C(a0, &D_8018F5A4, 0x18); - if (r != 0) { - *(s32 *)(a0 + 0x20) = r; - *(u32 *)(r + 4) = *(u32 *)(r + 4) | 0x5C000140; - func_8001CF30((void *)r); - *(s16 *)(r + 0x10) = 0x400; - *(s16 *)(r + 0x18) = 0x3000; - *(s16 *)(r + 0x1A) = 0x3000; - *(s16 *)(r + 0x28) = 0x248; - *(s16 *)(r + 0x2A) = 0x180; - *(s16 *)(a0 + 2) = *(s16 *)(a0 + 2) + 1; - } else { - ((void (*)(s32))func_80146C3C)(a0); - } -} - - -DEFINE_func_80181170() /* dedup: shared engine-core @0x80181170 (src/shared) */ - - - -/* func_801811D4 — ov_SC02_027_jr_8017AE2C (76 ins) - * Decls copied VERBATIM from the TU: - * src/ov_SC02_027/ov_SC02_027_jr_8017AE2C.c:168 ApplyMatrixSV - * src/ov_SC02_027/ov_SC02_027_jr_8017AE2C.c:1698 RotMatrixYXZ - * D_801EA8F8..D_801EA920 are NOT declared anywhere in the TU (grepped whole file). - */ -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern void RotMatrixYXZ(void *a0, void *a1); - - -void func_801811D4(s32 param_1, s32 param_2) -{ - - extern s32 D_801EA8F8; - extern s32 D_801EA8FC; - extern s32 D_801EA900; - extern s32 D_801EA908; - extern s32 D_801EA90C; - extern s32 D_801EA910; - extern s32 D_801EA918; - extern s32 D_801EA91C; - extern s32 D_801EA920; - /* 8-byte short-only vector (SVECTOR); 32-byte MATRIX_L48 (t[] at +0x14) */ - - SV4_L_801811D4 vec; /* sp+0x10 */ - MTX_L_801811D4 mtx; /* sp+0x18 */ - s32 obj = *(s32 *)(param_1 + 0xCC); - s32 prim = *(s32 *)(param_1 + 0x20); - s32 mode; - s32 val; - s32 hi; - s32 code; - s32 t; - - if ((s16)param_2 != 0) { - mode = 0x40000000; - val = 0x1000; - } else { - mode = 0x50000000; - val = 0x1333; - } - code = *(s32 *)(prim + 4) & 0xCFFFFFFF; - hi = 0x40000000; - *(s32 *)(prim + 4) = code | (mode | hi); - - if (*(u16 *)(*(s32 *)(param_1 + 0xCC)) != 0) { - *(s16 *)(obj + 0x1A) = val; - *(s16 *)(obj + 0x18) = val; - } - - t = *(u16 *)(param_1 + 0xFC) + 0x80; - *(u16 *)(param_1 + 0xFC) = t; - vec.a = t; - t = *(u16 *)(param_1 + 0xFE) + 0x100; - *(u16 *)(param_1 + 0xFE) = t; - vec.b = t; - vec.c = 0; - RotMatrixYXZ(&vec, &mtx); - - vec.b = 0; - vec.a = 0; - vec.c = 0x100; - ApplyMatrixSV(&mtx, &vec, &vec); - - D_801EA918 = vec.a; - D_801EA908 = vec.a; - D_801EA8F8 = vec.a; - D_801EA91C = vec.b; - D_801EA90C = vec.b; - D_801EA8FC = vec.b; - D_801EA920 = vec.c; - D_801EA910 = vec.c; - D_801EA900 = vec.c; -} - - - -/* func_80181304 — ov_SC02_027_jr_8017AE2C (227 ins). MATCH (match_one, 227/227). - * - * RETRY-WAVE RE-VERIFICATION (§136b — the ledgered DIFF describes an OBSOLETE draft). - * The s8 gate ran 14:53; THIS file was written 15:22, 28 min AFTER it. The gate never saw it. - * Four independent checks on the file as it stands: - * 1. match_one -> MATCH (227 ins) - * 2. rtu_match (whole TU) -> MATCH (227 ins); CC1 clean, the only warning is the TU's - * pre-existing `memcpy' builtin one at TU:1530 (baseline too) - * 3. FULL RELOCATION RESOLVE (the byte-gate's view, which match_one's mask cannot see): - * every R_MIPS_26 / HI16 / LO16 resolved from the D_/func_ symbol values and - * compared word-for-word against the target .s -> 0/227 diffs. Every jal target, every - * %hi/%lo symbol AND addend is right. - * 4. COLLATERAL: TU compiled with and without the splice; all 53 other functions emit - * IDENTICAL words. The only deltas are .text-relative `j' addends, every one shifted by - * exactly 0x38C == this function's size, which the linker resolves identically. - * No codegen work was needed; the previous agent's tbl/tbl2 split + load-before-store lever - * (documented below) had already closed it. - * - * Declarations reconciled against the WHOLE TU (grepped in one pass, D2): - * func_800291B4 TU:59/3422 extern s32 func_800291B4(s32 arg); -> `& 0xFF` at the call - * func_8001C810 TU:1548 extern void func_8001C810(s32 a0, s32 a1); - * func_8001CD50 TU:1564/3518 extern void func_8001CD50(s32, s32); - * func_800233CC TU:1565/3519 extern void func_800233CC(void *, unsigned short); - * func_8001D074 TU:124/129/3517 declared VOID -> s32 return taken through a cast (idiom 9) - * func_8012A828 TU:3730 extern void func_8012A828(s32 a0, void *a1); - * D_801152BA TU:3657 extern u16 D_801152BA; (the SIGNED uses need an (s16) cast: - * combine folds (s16)(u16 mem) back to a plain `lh`) - * D_80115214 TU:3432/3658 extern s16 D_80115214; - * D_801EA8F8 TU:3333 extern s32 D_801EA8F8; - * func_8012CAE4 / func_8012C354 are absent from the TU; the canonical engine_core.h forms - * are reused verbatim (DEFINE_func_8012CAE4 @15355 `void func_8012CAE4(void *a0)`, - * DEFINE_func_8012C354 @15748 `s32 func_8012C354(s32 a0, s32 a1)`). - * D_8018F5E8 / D_8018F624 / D_801CFDF0 / every D_801D9E9x-ECx / D_801EA9A8 appear nowhere - * in the TU or engine_core.h (only D_801EA8F8..EB8 and D_801D9F00..F06 are declared there). - * D_801CFE18 is declared BLOCK-SCOPE here on purpose: the TU's only other declaration - * (TU:3587, `extern Rec_8017C738 D_801CFE18[];`) is itself block-scope inside func_8017C738, - * so neither is a file-scope decl the other can collide with. - * - * THE 0x6C-BYTE TABLE COPY. 9 x 12-byte records = 108 bytes at alignment 2, so - * gcc-2.7.2's mips.c:expand_block_move takes the align < UNITS_PER_WORD path and emits the - * runtime `or / andi 3 / beq` alignment probe, an unaligned lwl/lwr loop, an aligned lw/sw - * loop, and an unaligned 12-byte tail. The join label after the two loops resets cse, which - * is why the target RE-COMPUTES 108*D_801152BA for the *(a0+0xD8) store. - * - * WHAT CLOSED THE LAST 7 (sched.md §1.7 / §S2 — THE BIRTHING BOOST). Two independent levers, - * both required; neither is statement-order: - * - * 1. `idx = (s16)D_801152BA;` must be read BEFORE the `*(s16*)(s1+0x10) = 0x400` store. - * Store-then-load is a true dependence (both MEMs non-struct: the store's address varies, - * the load's is constant, so true_dependence's MEM_IN_STRUCT_P escape does not apply) and - * it pins `sh 0x10(s1)` ABOVE the `lh`. Load-first makes it an ANTI dep, whose cost is - * still +1 in 2.7.2 (insn_cost is dep-kind-blind, sched.md [A23]), lifting pri(sh) to 2 so - * the store is picked first by the backward scheduler and lands LAST, at index 93. - * - * 2. `tbl` and `tbl2` MUST BE TWO SEPARATE LOCALS. One shared `tbl` gives the D_801EA9A8 - * address pseudo REG_N_SETS==2, which KILLS the birthing boost (birthing_insn_p, - * sched.c:2469/2490): the unboosted `la $a0` then floats to the front of the pri-1 group - * and lands at index 86, shoving `la $a2,D_801CFE18` to 88 (this was the entire 7-insn - * residual: 86..92 rotated). Splitting the two uses makes each pseudo single-set, the - * boost raises `la $a0` to its consumer's priority so it sinks to 91, and `la $a2` — whose - * pseudo IS genuinely multi-set (expand_block_move increments it in both copy loops, so it - * can never be boosted) — falls to the front at 86, exactly as the target has it. - * Verified invariant: with a shared `tbl`, ALL 8 legal orderings of the 4 head statements - * x 2 store forms (INDIRECT_REF and ARRAY_REF) give the SAME wrong order — proof the - * residual was priority/boost-driven, not LUID/statement-order-driven. - */ -extern s32 func_800291B4(s32 arg); -extern void func_8012CAE4(void *a0); -extern s32 func_8012C354(s32 a0, s32 a1); -extern void func_8001C810(s32 a0, s32 a1); -extern void func_8012A828(s32 a0, void *a1); -extern void func_8001D074(s32 a0, s32 a1); -extern void func_8001CD50(s32 a0, s32 a1); -extern void func_800233CC(void *, unsigned short); - - - -void func_80181304(s32 a0) { - - extern u8 D_8018F5E8[]; - extern u8 D_8018F624[]; - extern s32 D_801CFDF0; - extern u16 D_801152BA; - extern s16 D_80115214; - extern s32 D_801EA8F8; - extern u8 D_801EA904; - extern u8 D_801EA905; - extern u8 D_801EA906; - extern u8 D_801EA914; - extern u8 D_801EA915; - extern u8 D_801EA916; - extern u8 D_801EA925; - extern u8 D_801EA926; - extern u8 D_801EA928; - extern u8 D_801EA929; - extern u8 D_801EA92A; - extern u8 D_801EA92C; - extern u8 D_801EA92D; - extern u8 D_801EA92E; - extern u8 D_801EA934; - /* 9 x 12-byte records = 0x6C bytes, alignment 2 */ - extern Blk027_80181304 D_801CFE18; - extern Blk027_80181304 D_801EA9A8[]; - - u8 *v1; - s32 s1; - u8 *p; - s32 t; - s16 i; - Blk027_80181304 *dst; - Blk027_80181304 *tbl2; - s32 idx; - Blk027_80181304 *tbl; - s32 u; - s32 w; - - v1 = *(u8 **)(a0 + 0xDC); - if ((func_800291B4(v1[0] + 0x3A) & 0xFF) != 0) { - func_8012CAE4((void *)a0); - return; - } - - if (*(s32 *)(a0 + 0x20) == 0) { - if (func_8012C354(a0, (s32)D_8018F5E8) == 0) { - return; - } - func_8001C810(*(s32 *)(a0 + 0x20), (s32)&D_801CFDF0); - func_8012A828(a0, (void *)&D_8018F624[(s16)D_801152BA * 16]); - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x2C) |= 0x20; - *(s32 *)(*(s32 *)(a0 + 0x20) + 0x80) = (s32)&D_801EA8F8; - *(s32 *)(*(s32 *)(a0 + 0x20) + 0x4) |= 0x40000000; - *(s16 *)(a0 + 0xAE) = -3; - } - - s1 = ((s32 (*)(s32, s32))func_8001D074)(0x7E, 0x100); - if (s1 == 0) { - return; - } - - p = &D_801EA928; - *(s32 *)(a0 + 0xCC) = s1; - func_8001CD50(s1, (s32)p); - - D_801EA92A = 0x80; - *p = 0x80; - D_801EA929 = 0xE0; - D_801EA92D = 0; - D_801EA92C = 0; - D_801EA92E = 0; - func_800233CC(p, 0x38); - - tbl = D_801EA9A8; - idx = (s16)D_801152BA; - dst = &tbl[idx]; - *(s16 *)(s1 + 0x10) = 0x400; - *(s16 *)(s1 + 0x8) = *(u16 *)(a0 + 0x6); - t = *(u16 *)(a0 + 0xA) - 4; - *(u16 *)(a0 + 0xA) = t; - *(s16 *)(s1 + 0xA) = t; - *(s16 *)(s1 + 0xC) = *(u16 *)(a0 + 0xE); - *(s32 *)(s1 + 0x4) |= 0x50000000; - - D_801EA926 = 0xFF; - D_801EA934 = 0xFF; - D_801EA916 = 0xFF; - D_801EA914 = 0xFF; - D_801EA906 = 0xFF; - D_801EA904 = 0xFF; - D_801EA925 = 0x80; - D_801EA915 = 0x80; - D_801EA905 = 0x80; - - *dst = D_801CFE18; - - i = 5; - tbl2 = D_801EA9A8; - *(s32 *)(a0 + 0xD8) = (s32)&tbl2[(s16)D_801152BA]; - - while (i < 0x28) { - if ((func_800291B4(i + 0x3B) & 0xFF) != 0) { - break; - } - i++; - } - if (i != 0x28) { - *(s16 *)(a0 + 0x10A) = 1; - } - - w = D_801152BA + 1; - u = *(u16 *)(a0 + 0x2) + 1; - D_80115214 = 0; - D_801152BA = w; - *(u16 *)(a0 + 0x2) = u; -} - - - -/* Declarations copied VERBATIM from the TU (ov_SC02_027_jr_8017AE2C.c): - * func_800291B4 TU:59 - * currentLocationId TU:349 - * D_80126B5C TU:361 (scalar u8 -> pass (s32)&D_80126B5C) - * D_801202A0 TU:385 - * func_80013328 TU:520 - * D_800B99DA TU:615 - * rand TU:957/1092/3543 - * D_80126B62 TU:1793/2740/3068 - * func_801746A4 TU:2397 - * func_80178B18 TU:2539/3653 - * func_801811D4 TU:3465/3542 (void return) - * D_80115214 TU:3547 - * func_8012BD14 / D_8018F61C / D_8018F680 appear nowhere in the TU; the - * canonical engine_core.h form of func_8012BD14 is `void func_8012BD14(s32)` - * (DEFINE_func_8012BD14), so it is declared void and the s32 return is taken - * through a cast at the call site (idiom 9). */ -extern s32 func_800291B4(s32 arg); -extern s16 currentLocationId; -extern s32 func_80013328(s32 a0, s32 a1); -extern s32 rand(void); -extern void func_801746A4(void); -extern s32 func_80178B18(s32 param_1, s32 param_2); -extern void func_801811D4(s32 a0, s32 a1); -extern void func_8012BD14(s32 a0); - -void func_80181690(s32 a0) { - - extern u8 D_80126B5C; - extern u8 D_801202A0[]; - extern u16 D_80126B62; - extern s16 D_80115214; - extern u8 D_8018F61C[]; - extern u8 D_8018F680[]; - /* [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 u16 D_800B99DA; - s32 s0 = *(s32 *)(a0 + 0x20); - s16 found; - s32 lvl; - s16 i; - s16 j; - s32 rand_val; - - if ((D_800B99DA & 0xF) == 0) { - u8 *p; - u8 *end; - for (p = D_801202A0, end = p + 0x6480; p < end; p += 0x10C) { - if (*(u16 *)p == 0x128) { - found = ((s32)p == a0); - break; - } - } - lvl = func_80013328(a0 + 4, (s32)&D_80126B5C); - if (lvl < 0x800) { - lvl = 0x44 - ((lvl >> 5) & 0x38); - } else { - lvl = 4; - } - if (found != 0 || D_80115214 < lvl) { - D_80115214 = lvl; - } - } - - *(u16 *)(s0 + 0x12) += 0x20; - rand_val = rand(); - func_801811D4(a0, rand_val & 0xF); - - if (*(u16 *)(a0 + 0x5E) != 0) { - for (i = 0; (u16)i < 8; i++) { - if (*(u16 *)(a0 + 0x5E) == D_8018F61C[i]) { - func_801746A4(); - *(s32 *)(a0 + 0x1C) = 0x20; - *(u16 *)(a0 + 0x2) += 1; - } - } - *(s16 *)(a0 + 0x5E) = 0; - return; - } - - if (*(s16 *)(a0 + 0x10A) != 0) { - return; - } - - j = 5; - do { - if ((func_800291B4(j + 0x3B) & 0xFF) != 0) { - break; - } - j++; - } while (j < 0x28); - - if (j != 0x28) { - *(s16 *)(a0 + 0x10A) = 1; - } else if (((s32 (*)(s32))func_8012BD14)(a0) < 0x2A40) { - if (currentLocationId == 0x3028) { - if ((u16)(*(u16 *)(a0 + 0xA) - D_80126B62 + 4) < 4) { - *(u16 *)(a0 + 0x106) += 1; - } - if (*(s16 *)(a0 + 0x106) < 2) { - return; - } - } - func_80178B18(a0, (s32)D_8018F680); - *(s16 *)(a0 + 0x10A) = 1; - *(s16 *)(a0 + 0x2) = 0xA; - } else { - *(s16 *)(a0 + 0x106) = 0; - } -} - - - -extern void func_8001D074(s32 a0, s32 a1); -extern void func_8001CD50(s32 a0, s32 a1); -extern void func_800233CC(void *, unsigned short); -extern void func_800D20C0(void *a0, void *a1, s32 a2); -extern void func_800D23D0(void *a0); -extern void RotMatrixYXZ(void *a0, void *a1); - -/* 0x801DA0F0 has no symbol (it is interior to D_801DA084); the real relocs - * in the .s are D_801EAB6C/108/10C, with $s0 = D_801EAB6C - 0x14. */ - -void func_80181908(s32 a0) { - - extern u8 D_801EA968; - extern u8 D_801EA969; - extern u8 D_801EA96A; - extern u8 D_801EA96C; - extern u8 D_801EA96D; - extern u8 D_801EA96E; - extern s32 D_801EAB6C[]; - s32 v0; - u8 *p; - s16 sp[8]; - - v0 = ((s32 (*)(s32, s32))func_8001D074)(0x7E, 0x100); - if (v0 == 0) { - return; - } - - p = &D_801EA968; - *(s32 *)(a0 + 0xD0) = v0; - func_8001CD50(v0, (s32)p); - - D_801EA969 = 0xFF; - D_801EA96A = 0xFF; - *p = 0xFF; - D_801EA96E = 8; - D_801EA96C = 8; - D_801EA96D = 0x18; - func_800233CC(p, 0x100); - - sp[0] = *(u16 *)(a0 + 0x6); - sp[1] = *(u16 *)(a0 + 0xA) - 0x38; - sp[2] = *(u16 *)(a0 + 0xE); - func_800D20C0(&sp[0], &sp[4], 5); - - D_801EAB6C[0] = sp[0]; - D_801EAB6C[1] = sp[1]; - D_801EAB6C[2] = sp[2]; - func_800D23D0(&sp[4]); - RotMatrixYXZ(&sp[4], &D_801EAB6C[-5]); - - *(s32 *)(v0 + 0x34) = (s32)&D_801EAB6C[-5]; - *(s16 *)(v0 + 0x1A) = 0; - *(s16 *)(v0 + 0x18) = 0; - *(s32 *)(v0 + 0x4) |= 0x50000000; - *(u16 *)(a0 + 0x2) += 1; -} - - - - -extern s16 func_80128CFC(u16 a0); -extern void func_801811D4(s32 a0, s32 a1); - -void func_80181A50(s32 a0) { - extern Rec_8017C738_80181A50 D_801CFE18[]; - - Rec_8017C738_80181A50 *q = D_801CFE18; - Rec_8017C738_80181A50 *p = *(Rec_8017C738_80181A50 **)(a0 + 0xD8); - u8 *v1 = *(u8 **)(a0 + 0xDC); - s32 s1 = *(s32 *)(a0 + 0xD0); - s32 s4 = *(s32 *)(a0 + 0x20); - s16 val; - s32 t; - s16 i; - - if (v1[1] != 0) { - if (*(s16 *)(a0 + 0x108) == 0) { - *(s16 *)(a0 + 0x108) = func_80128CFC(*(u16 *)(v1 + 2)); - } - } - - val = *(u16 *)(s1 + 0x1A) + 0x80; - *(s16 *)(s1 + 0x1A) = val; - *(s16 *)(s1 + 0x18) = val; - - t = *(s32 *)(a0 + 0x1C) - 1; - *(s32 *)(a0 + 0x1C) = t; - if (t != -1) { - func_801811D4(a0, 0); - for (i = 0; i < 9; ) { - p->f0 += (s16)q->f0 >> 1; - if (i != 0) { - p->f2 += (q->f2 + 0x30) >> 1; - p->f4 += (s16)q->f4 >> 1; - p->f6 += 0x40; - p->f8 += 0x80; - p->fA += 0x100; - } - i++; - q++; - p++; - } - } else { - *(s16 *)s4 = 0; - *(u16 *)(a0 + 0x2) += 1; - } -} - - - -extern void (*D_8018F6D0[])(void); - -void func_80181BD0(void *a0) { - D_8018F6D0[*(u16 *)((s32)a0 + 0x2)](); -} - - - - -extern s32 func_8014BCEC(s32 a0, s32 a1); -extern void func_8014BD24(s32 a0, s32 a1); -extern void func_8002D4C8(s32 a0, s32 a1); - -void func_80181C0C(void) { - - extern s32 D_80126B58; - func_8014BCEC((s32)&D_80126B58, 0x5); - func_8014BD24((s32)&D_80126B58, 0x270F); - func_8002D4C8(0xBFE, 0); -} - - - - -extern s16 func_80128CFC(u16 a0); -extern void func_801811D4(s32 a0, s32 a1); -extern s32 rand(void); -extern void func_8002D4C8(s32 a0, s32 a1); - - -void func_80181C58(void *a0) { - - extern u16 D_801152BA; - extern s16 D_80115214; - void *v1; - void *s2; - void *s1; - u16 arg; - s16 v0_s16; - u16 tmp; - s32 v0; - s32 rand_val; - s32 pads[4]; /* Force stack frame to 0x30 bytes */ - - v1 = *(void **)(a0 + 0xDC); - s2 = *(void **)(a0 + 0xCC); - s1 = *(void **)(a0 + 0xD0); - - if (*(u8 *)(v1 + 1) != 0) { - if (*(s16 *)(a0 + 0x108) == 0) { - arg = *(u16 *)(v1 + 2); - v0_s16 = func_80128CFC(arg); - *(s16 *)(a0 + 0x108) = v0_s16; - } - } - - tmp = *(u16 *)((s32)s1 + 0x1A) + 0x20; - *(u16 *)((s32)s1 + 0x1A) = tmp; - *(u16 *)((s32)s1 + 0x18) = tmp; - - v0 = *(s32 *)(a0 + 0x1C) - 1; - *(s32 *)(a0 + 0x1C) = v0; - - if (v0 != -1) { - rand_val = rand(); - func_801811D4((s32)a0, rand_val & 1); - } else { - D_80115214 = 4; - D_801152BA -= 1; - func_8002D4C8(0x62E, 0); - *(u16 *)s2 = 0; - *(u16 *)(a0 + 2) += 1; - *(s32 *)(a0 + 0x1C) = 0x28; - } -} - - - -extern s16 func_80128CFC(u16 a0); - -void func_80181D4C(void *a0) { - void *v1 = *(void **)(a0 + 0xDC); - s16 v0; - - if (*(u8 *)(v1 + 1) == 0) { - v0 = 1; - } else { - v0 = *(s16 *)(a0 + 0x108); - if (v0 == 0) { - u16 arg = *(u16 *)(v1 + 2); - v0 = func_80128CFC(arg); - *(s16 *)(a0 + 0x108) = v0; - } - v0 = *(s16 *)(a0 + 0x108); - } - - if (v0 != 0) { - *(u16 *)(a0 + 0x2) += 1; - } -} - - - - -extern void func_8012C1B8(void); -extern void func_8001C214(s32 a0, s32 a1); -extern void func_8012A828(s32 a0, void *a1); -extern void func_800D20C0(void *a0, void *a1, s32 a2); -extern void func_800D23D0(void *a0); - -void func_80181DCC(s32 a0) { - s32 v0; - s32 *s0_ptr; - u16 sp[8]; - - s0_ptr = *(s32 **)(a0 + 0xDC); - v0 = ((s32 (*)(void))func_8012C1B8)(); - *(s32 *)(a0 + 0x20) = v0; - if (v0 == 0) { - return; - } - - func_8001C214(v0, s0_ptr[1]); - func_8012A828(a0, (void *)s0_ptr[2]); - - *(s16 *)(a0 + 0x5C) = 0; - *(s32 *)(a0 + 0x58) = 0; - - sp[0] = *(u16 *)(a0 + 0x6); - sp[1] = *(u16 *)(a0 + 0xA); - sp[2] = *(u16 *)(a0 + 0xE); - - func_800D20C0(&sp[0], &sp[4], 0); - func_800D23D0(&sp[4]); - - *(s16 *)(*(s32 *)(a0 + 0x20) + 0x12) = sp[5] + 0x800; - *(u16 *)(a0 + 0x2) += 1; -} - - - - -extern s32 func_80178B18(s32 param_1, s32 param_2); - -void func_80181E80(s32 a0) { - s32 ptr1 = *(s32 *)(a0 + 0xD0); - s32 ptr2 = *(s32 *)(a0 + 0xDC); - s16 val = *(u16 *)(ptr1 + 0x1A) - 0xC0; - - *(s16 *)(ptr1 + 0x1A) = val; - *(s16 *)(ptr1 + 0x18) = val; - - if (val < 0) { - *(s16 *)(ptr1 + 0x0) = 0; - func_80178B18(a0, *(s32 *)(ptr2 + 0xC)); - *(u16 *)(a0 + 0x2) = *(u16 *)(a0 + 0x2) + 1; - } -} - - - - -extern void func_800291A0(s32, s32); -extern int func_80178970(void); -extern void func_80178D18(void); - -void func_80181EEC(s32 a0) { - extern void func_8002955C(void); - extern s32 func_8002953C(void); - extern void func_8002AC00(s32 arg0); - u8 *p = *(u8 **)(a0 + 0xDC); - - if (func_80178970() != 0) { - ((void (*)(s32))func_80178D18)(a0); - func_800291A0(*p + 0x3A, 1); - func_8002955C(); - if ((u32)func_8002953C() >= 0x23U) { - func_8002AC00(0x25); - } - *(u16 *)(a0 + 2) += 1; - } -} - - -extern void func_8012C218(void*); -void func_80181F78(void) { - ((void (*)(void))func_8012C218)(); -} - - - - -void func_80181F98(s32 a0) { - extern int func_80178970(void); - extern void func_80178D18(void); - s32 rand_val = rand(); - - func_801811D4(a0, rand_val & 0xF); - if (((s32 (*)(s32))func_80178970)(a0) == 0) { - return; - } - ((void (*)(s32))func_80178D18)(a0); - *(s16 *)(a0 + 0x2) = 1; -} - - -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); - -void func_80181FEC(void *a0) { - func_80146A6C(0x19, a0, 0, 0, 0, 0, 1); -} - - - -extern void (*D_8018F728[])(void); - -void func_80182028(void *a0) { - D_8018F728[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern void func_80147324(s32 arg0); -void func_80182064(void *a0) -{ - if (*(s32 *)((s32)a0 + 0x30) == 0) { - func_80147324(*(u16 *)((s32)a0 + 0x2E)); - } - *(u16 *)((s32)a0 + 0x2) = *(u16 *)((s32)a0 + 0x2) + 1; -} - - - -// @class: plumbing -// @stuck: none — signed s32 counter at 0x1C, delay-slot store is the unconditional bump - -extern void func_80182348(int); - -void func_801820B4(int param_1) -{ - int iVar1; - - iVar1 = *(int *)(param_1 + 0x1c); - *(int *)(param_1 + 0x1c) = iVar1 + 1; - if (iVar1 < 0xc) { - *(unsigned short *)(param_1 + 0x12) = *(unsigned short *)(param_1 + 0x12) + 0xe0; - } else { - *(int *)(param_1 + 0x1c) = 0; - *(unsigned short *)(param_1 + 2) = *(unsigned short *)(param_1 + 2) + 1; - } - func_80182348(param_1); - return; -} - - - -/* Entity record touched by func_80182110 (offsets read straight off the asm): - * 0x02 u16 frame/state counter (lhu / sh) - * 0x1C s32 tick counter (lw / sw), signed compare against 0x20 - * 0x2A u16 y-ish delta, decremented by 0x10 (lhu / sh) - * 0x2C u16 sound id passed to func_80147324 (lhu) - * 0x30 s32 suppress flag - */ - -extern void func_80147324(s32 arg0); -extern void func_80182348(int); - -void func_80182110(Ent_8017BFE0_80182110 *param_1) -{ - s32 t; - - t = param_1->f1c; - param_1->f1c = t + 1; - if (t < 0x20) { - param_1->f2a = param_1->f2a - 0x10; - } else { - if (param_1->f30 == 0) { - func_80147324(param_1->f2c); - } - param_1->f1c = 0; - param_1->f02 = param_1->f02 + 1; - } - ((void (*)(Ent_8017BFE0_80182110 *))func_80182348)(param_1); -} - - - - -/* func_80182194 — entity tick with a two-mode "hit/shake" arm. - * +0x1C s32 frame counter (lw / sw), signed compare against 0x20 - * +0x34 ptr sub-object read up-front (lives in $s0 across the jals) - * +0x30 s32 mode flag (0 = direct sub-object, else the +0x20 sub-sub-object) - * +0x02 u16 state word bumped in the timeout arm - * - * §71 sibling-first: func_8017C69C in this same TU is the identical shape — - * counter @0x1C, sub-object @0x34, the 0x60/0x62/0x64 halfword triple and the - * `do { func_80146A6C(0x1B, obj, ...); } while (++i < 3);` s16 loop. - */ - -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_8014708C(void *arg0); -extern s32 func_801472C8(struct S *a0); -extern void func_80182348(int); - -void func_80182194(void *a0) -{ - void *obj; - s32 t; - s32 r; - s16 i; - u16 v; - u16 w; - u16 d; - - t = *(s32 *)((s32)a0 + 0x1C); - obj = *(void **)((s32)a0 + 0x34); - *(s32 *)((s32)a0 + 0x1C) = t + 1; - if (t < 0x20) { - if (*(s32 *)((s32)a0 + 0x30) == 0) { - v = *(u16 *)((s32)obj + 0x64) - 0x80; - w = *(u16 *)((s32)obj + 0x62) + 0x100; - *(s16 *)((s32)obj + 0x64) = v; - *(s16 *)((s32)obj + 0x60) = v; - *(s16 *)((s32)obj + 0x62) = w; - } else { - r = *(s32 *)((s32)obj + 0x20); - *(u16 *)(r + 0x2C) |= 0x10; - r = *(s32 *)((s32)obj + 0x20); - d = *(u16 *)(r + 0x1C) - 0x80; - *(s16 *)(r + 0x1C) = d; - *(s16 *)(r + 0x18) = d; - r = *(s32 *)((s32)obj + 0x20); - *(u16 *)(r + 0x1A) += 0x100; - } - i = 0; - do { - func_80146A6C(0x1B, obj, 0, 0, 0, 0, 0); - i++; - } while (i < 3); - } else { - if (*(s32 *)((s32)a0 + 0x30) == 0) { - func_8014708C(obj); - func_801472C8((struct S *)obj); - } else { - *(s32 *)(*(s32 *)((s32)obj + 0x20) + 0x4) |= 0x80000000; - } - *(s32 *)((s32)a0 + 0x1C) = 0; - *(s16 *)((s32)a0 + 2) = *(u16 *)((s32)a0 + 2) + 1; - } - ((void (*)(void *))func_80182348)(a0); -} - - -extern void func_80182348(int); -extern void func_80146C3C(void); -void func_801822FC(int param_1) -{ - unsigned short uVar1; - uVar1 = *(unsigned short *)(param_1 + 0x12) - 0x100; - *(unsigned short *)(param_1 + 0x12) = uVar1; - if ((short)uVar1 > 0) { - func_80182348(param_1); - } else { - ((void (*)(int))func_80146C3C)(param_1); - } -} - - - - -/* func_80182348 — 4-point primitive sweep driven by the 44-byte curve table - * D_8018F6FC. Builds a rotation matrix from the entity's angle @0x12, then a - * translation from the sub-object @0x34, then walks the table three times - * (10 x stride-4, 20 x stride-2, 20 x stride-2 guarded by the s16 @0x2A). - */ - - - - /* 0x34 */ - - /* 0x20 */ - -extern s32 func_80017758(void *a0, void *a1); -extern s32 func_80017DC4(void *a0, void *a1); -extern void func_80017E68(void *a0, void *a1); - -void func_80182348(int param_1) -{ - - extern u16 D_800B99DA; - extern u8 D_8018F6FC[]; - SVec8_8017C218_80182348 rot; - s32 pad0[2]; - Prim_8017C218_80182348 prim; - s32 pad1[1]; - Mtx_8017C218_80182348 mtx; - s32 pad2[8]; - s32 obj; - u8 *p; - s16 i; - s32 c; - - obj = *(s32 *)(param_1 + 0x34); - rot.vx = rot.vy = rot.vz = *(u16 *)(param_1 + 0x12); - func_80017DC4(&rot, &mtx); - - prim.v[1].vx = prim.v[1].vy = prim.v[1].vz = 0; - prim.v[0].vy = prim.v[2].vy = prim.v[3].vy = 0; - prim.c[1].r = prim.c[1].g = prim.c[1].b = 0; - - c = ((s32)(s16)*(u16 *)(param_1 + 0x12) >> 5) + 0x20; - prim.c[0].r = prim.c[0].g = prim.c[0].b = - prim.c[2].r = prim.c[2].g = prim.c[2].b = - prim.c[3].r = prim.c[3].g = prim.c[3].b = c; - if (D_800B99DA & 1) { - prim.c[0].r = prim.c[2].r = prim.c[3].r = prim.c[3].r >> 1; - } - - prim.code = 0x50000000; - rot.vx = *(u16 *)(obj + 0x6); - rot.vy = *(u16 *)(obj + 0xA) - 8; - rot.vz = *(u16 *)(obj + 0xE); - func_80017E68(&rot, &mtx); - - p = D_8018F6FC; - i = 0; - do { - prim.v[0].vx = (s8)*p++; - prim.v[0].vz = (s8)*p++; - prim.v[2].vx = (s8)*p++; - prim.v[2].vz = (s8)*p++; - prim.v[3].vx = (s8)*p++; - prim.v[3].vz = (s8)*p--; - func_80017758(&prim, &mtx); - i++; - } while (i < 10); - - prim.c[0].r = prim.c[0].g = prim.c[0].b = 0; - p = D_8018F6FC; - i = 0; - do { - prim.v[2].vx = (s8)*p++; - prim.v[0].vx = prim.v[2].vx << 1; - prim.v[2].vz = (s8)*p++; - prim.v[0].vz = prim.v[2].vz << 1; - prim.v[3].vx = (s8)*p++; - prim.v[1].vx = prim.v[3].vx << 1; - prim.v[3].vz = (s8)*p--; - prim.v[1].vz = prim.v[3].vz << 1; - func_80017758(&prim, &mtx); - i++; - } while (i < 0x14); - - if (*(s16 *)(param_1 + 0x2A) != 0) { - p = D_8018F6FC; - i = 0; - do { - prim.v[0].vx = prim.v[2].vx = (s8)*p++; - prim.v[0].vz = prim.v[2].vz = (s8)*p++; - prim.v[1].vx = prim.v[3].vx = (s8)*p++; - prim.v[1].vz = prim.v[3].vz = (s8)*p--; - prim.v[0].vy = prim.v[1].vy = *(u16 *)(param_1 + 0x2A); - func_80017758(&prim, &mtx); - i++; - } while (i < 0x14); - } -} - - - -extern void (*D_8018F73C[])(void); - -void func_80182654(void *a0) { - D_8018F73C[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern void func_80147324(s32 arg0); -void func_80182690(void *a0) -{ - func_80147324(*(u16 *)((s32)a0 + 0x2E)); - *(u16 *)((s32)a0 + 0x2) = *(u16 *)((s32)a0 + 0x2) + 1; -} - - - -/* func_801826D0 — a state-tick: bump the frame counter at 0x1C; while it is - * below 0xC spin the angle at 0x12 by 0xE0, otherwise reset the counter, zero - * the vector at *(0x34)+0x60/0x64, set +0x62 to 0x3000 and advance the state - * word at 0x02. Falls through to ((void (*)(void *))func_80182348)(a0) on both arms (the target - * leaves $a0 untouched, so the call needs no move). - * - * §71 sibling-first: func_8017C560 (same TU, 4 bytes earlier) is the same - * `*(u16 *)(a0 + 2) += 1` idiom, and func_80182348's own prologue reads - * `lw $s1, 0x34($s2)` / `lhu $v0, 0x12($s2)` — same record, same widths. - */ - -extern void func_80182348(int); - -void func_801826D0(void *a0) { - s32 t; - s32 p; - - t = *(s32 *)((s32)a0 + 0x1C); - *(s32 *)((s32)a0 + 0x1C) = t + 1; - p = *(s32 *)((s32)a0 + 0x34); - if (t < 0xC) { - *(u16 *)((s32)a0 + 0x12) += 0xE0; - } else { - *(s16 *)(p + 0x64) = 0; - *(s16 *)(p + 0x60) = 0; - *(s16 *)(p + 0x62) = 0x3000; - *(s32 *)((s32)a0 + 0x1C) = 0; - *(u16 *)((s32)a0 + 0x2) += 1; - } - ((void (*)(void *))func_80182348)(a0); -} - - - -/* func_80182740 — small entity tick: - * read counter @0x1C and the sub-object pointer @0x34 up-front, bump the - * counter unconditionally (gcc puts that store in the beqz delay slot), - * then either slide @0x2A down by 0x10 or run the 3-call teardown. */ - -extern void func_80147324(s32 arg0); -extern void func_80147084(s32 *a0); -extern void func_801472B4(void *a0); -extern void func_80182348(int); - -void func_80182740(void *a0) -{ - s32 t; - s32 *sub; - - t = *(s32 *)((s32)a0 + 0x1C); - sub = *(s32 **)((s32)a0 + 0x34); - *(s32 *)((s32)a0 + 0x1C) = t + 1; - if (t < 0x20) { - *(u16 *)((s32)a0 + 0x2A) = *(u16 *)((s32)a0 + 0x2A) - 0x10; - } else { - func_80147324(*(u16 *)((s32)a0 + 0x2C)); - func_80147084(sub); - func_801472B4(sub); - *(s32 *)((s32)a0 + 0x1C) = 0; - *(u16 *)((s32)a0 + 0x2) = *(u16 *)((s32)a0 + 0x2) + 1; - } - ((void (*)(void *))func_80182348)(a0); -} - - - -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_80182348(int); - -void func_801827CC(void *a0) -{ - void *obj; - s32 t; - s16 i; - u16 v; - u16 w; - - t = *(s32 *)((s32)a0 + 0x1C); - obj = *(void **)((s32)a0 + 0x34); - *(s32 *)((s32)a0 + 0x1C) = t + 1; - if (t < 0x20) { - v = *(u16 *)((s32)obj + 0x64) + 0x80; - w = *(u16 *)((s32)obj + 0x62) - 0x100; - *(s16 *)((s32)obj + 0x64) = v; - *(s16 *)((s32)obj + 0x60) = v; - *(s16 *)((s32)obj + 0x62) = w; - i = 0; - do { - func_80146A6C(0x1B, obj, 0, 0, 0, 1, 0); - i++; - } while (i < 3); - } else { - *(s32 *)((s32)a0 + 0x1C) = 0; - *(s16 *)((s32)a0 + 2) = *(u16 *)((s32)a0 + 2) + 1; - } - ((void (*)(void *))func_80182348)(a0); -} - - -DEFINE_func_801828A0() /* dedup: shared engine-core @0x801828A0 (src/shared) */ - - - -extern void (*D_8018F750[])(void); - -void func_801828F4(void *a0) { - D_8018F750[*(u16 *)((s32)a0 + 0x2)](); -} - - - -/* func_80182930 — spawn/scatter tick for the +0x34 sub-object (state word @0x2). - * MATCH (45 ins), match_one + rtu_match. Four levers, in the order they were found: - * - * 1. §71 sibling-first — same entity shape as func_8017C610 / func_8017C69C in this - * TU: sub-object pointer @0x34 read BEFORE the call (it lives in $s1 across the - * jal), state word @0x2 bumped last. §3-T4: `beqz $v1,else` => `if (p->f2C) {..}`. - * ONE rand() feeds three fields; the raw low 6 bits use a bare `andi` (no extend) - * while the >>12 / >>6 uses share one `sll $x,16` — that shared sign-extend is - * what forces `r` to be a `short` local rather than an int. - * - * 2. §5a CROSS-JUMP — both arms end in `sh ?,0xA($s0)`; gcc tail-merged them (23 off). - * They only stay separate because the loaded halfword lands in a DIFFERENT hard - * reg per arm, which needs (a) the load to be its own statement at the TOP of each - * arm and (b) a SEPARATE temp per arm (t / t2) — one shared temp is one pseudo, - * gets one register in both arms, and re-merges. 23 -> 10 -> 6. - * - * 3. +0x16 is SIGNED: the target materialises -0x20 as `addiu $v0,$zero,-0x20`, not - * `ori 0xffe0`, so that store must go through an s16. - * - * 4. §49 BIRTHING BOOST (the last 6 -> 2 -> 0). Residual was two ALU insns swapped - * with identical registers; source statement order does NOT flip it, because - * sched1's `adjust_priority`/`birthing_insn_p` hands every SET(REG,..) whose dest - * has REG_N_SETS==1 a 0x7f000001 priority, so it sinks to just before its consumer - * and fixes the .greg LUID order that sched2's tie-break then reads. - * THE DIAL: give the offending insn's dest a SECOND set so it loses the boost — - * here one `u16 d` reused by both tail statements. It must be a THIRD temp, not - * `c` itself: writing `c = c + 1;` also un-boosts c's LOAD, which then starves to - * the front of the block and swaps the two `lhu`s instead. Boost the loads, starve - * the arithmetic. */ - -extern int rand(void); - -void func_80182930(void *a0) -{ - s32 p; - s32 obj; - short r; - u16 t; - u16 t2; - u16 e; - u16 c; - u16 d; - - p = (s32)a0; - obj = *(s32 *)(p + 0x34); - r = rand(); - *(u16 *)(p + 0x06) = *(u16 *)(obj + 0x06) + ((r & 0x3F) - 0x20); - if (*(s32 *)(p + 0x2C) != 0) { - t = *(u16 *)(obj + 0x0A); - *(s16 *)(p + 0x16) = 0x20; - *(u16 *)(p + 0x0A) = t - 0x140; - } else { - t2 = *(u16 *)(obj + 0x0A); - *(s16 *)(p + 0x16) = -0x20; - *(u16 *)(p + 0x0A) = t2; - } - e = *(u16 *)(obj + 0x0E); - c = *(u16 *)(p + 0x02); - *(s32 *)(p + 0x30) = (r >> 12) & 3; - d = ((r >> 6) & 0x3F) - 0x20; - *(u16 *)(p + 0x0E) = e + d; - d = c + 1; - *(u16 *)(p + 0x02) = d; -} - - -extern void func_800D22E4(s32 a0); -extern void func_80146C3C(void); -extern void func_80182A40(void *a0); -void func_801829E4(void *a0) -{ - s32 t; - t = *(s32 *)((s32)a0 + 0x1C); - *(s32 *)((s32)a0 + 0x1C) = t + 1; - if (t < 0xA) { - ((void (*)(void))func_800D22E4)(); - func_80182A40(a0); - } else { - ((void (*)(void *))func_80146C3C)(a0); - } -} - - - - -void func_80182A40(void *a0) -{ - extern Mtx8_8017C910_80182A40 aD800AE620 __asm__("D_800AE620"); - extern void aFunc80016A5C(void *arg0, void *arg1) __asm__("func_80016A5C"); - Prim_8017C910_80182A40 prim; - Mtx8_8017C910_80182A40 mtx; - s32 p; - - p = (s32)a0; - if (*(s32 *)(p + 0x2C) != 0) { - prim.v[0].y = *(u16 *)(p + 0xA) - 0x20; - prim.v[1].y = *(u16 *)(p + 0xA) + 0x20; - } else { - prim.v[0].y = *(u16 *)(p + 0xA) + 0x20; - prim.v[1].y = *(u16 *)(p + 0xA) - 0x20; - } - prim.v[0].x = *(u16 *)(p + 0x6); - prim.v[0].z = *(u16 *)(p + 0xE); - prim.v[1].x = *(u16 *)(p + 0x6); - prim.v[1].z = *(u16 *)(p + 0xE); - prim.col[0].b = 0; - prim.col[0].g = 0; - prim.col[0].r = 0; - switch (*(u32 *)(p + 0x30)) { - case 0: - prim.col[1].r = 0xFF; - prim.col[1].b = 0; - prim.col[1].g = 0; - break; - case 1: - prim.col[1].g = 0xFF; - prim.col[1].b = 0; - prim.col[1].r = 0; - break; - case 2: - prim.col[1].b = 0xFF; - prim.col[1].g = 0; - prim.col[1].r = 0; - break; - case 3: - prim.col[1].b = 0xFF; - prim.col[1].g = 0xFF; - prim.col[1].r = 0xFF; - break; - } - mtx = aD800AE620; - prim.tag = 0x50000000; - aFunc80016A5C(&prim, &mtx); -} - - -DEFINE_func_80182BB0() /* dedup: shared engine-core @0x80182BB0 (src/shared) */ - - -DEFINE_func_80182BD4() /* dedup: shared engine-core @0x80182BD4 (src/shared) */ - - - - -extern void func_80182C28(s32 arg0, s32 arg1, s32 arg2, s32 arg3); - void func_80182BFC(void *a0, void *a1, s32 a2, s32 a3) { - ((void (*)(void *, void *, s32, s32))func_80182C28)(a0, a1, (s16)a2, (s16)a3); - } - - - -extern s32 func_8012C750(s32 a0); - - -void func_80182C28(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { - - extern s32 D_8018F77C[]; - Buf8017BF34_80182C28 buf; - s32 v0; - - buf.unk06 = 0x6B; - buf.unk00 = -0x94; - buf.unk02 = -0x68; - buf.unk04 = 0; - buf.unk08 = arg3; - buf.unk0A = 0; - buf.unk0E = arg2; - buf.unk10 = D_8018F77C[(s16)arg2]; - - v0 = ((s32 (*)(void *))func_8012C750)(&buf); - if (v0 != 0) { - *(s32 *)(v0 + 0xD4) = arg0; - *(s32 *)(v0 + 0xD8) = arg1; - } -} - - - - -void func_80182CB0(s32 a0, s32 a1) { - extern u8 D_801202A0[]; - u8 *p; - s16 i; - - p = D_801202A0; - for (i = 0; i < 0x60; i++) { - if (*(u16 *)p == 0x6B) { - *(s32 *)(p + 0xD4) = a0; - *(s32 *)(p + 0xD8) = a1; - return; - } - p += 0x10C; - } -} - - - -void func_80182D04(s32 a0, s32 a1, s32 a2) { - - extern u8 D_801202A0[]; - u8 *p; - short i; - - p = D_801202A0; - for (i = 0; i < 0x60; i++) { - if (*(u16 *)p == 0x6B) { - *(s16 *)(p + 0x70) = a2; - *(s32 *)(p + 0xD4) = a0; - *(s32 *)(p + 0xD8) = a1; - return; - } - p += 0x10C; - } -} - - - -void func_80182D5C(void) { - - extern u8 D_801202A0[]; - extern void func_80016714(void *a0, s32 a1); - extern void func_8012C218(void *a0); - u8 *p; - short i; - - p = D_801202A0; - for (i = 0; i < 0x60; i++) { - if (*(u16 *)p == 0x6B) { - if (*(s32 *)(p + 0xCC) != 0) { - func_80016714(*(void **)(p + 0xCC), 0x38); - } - if (*(s32 *)(p + 0xD0) != 0) { - func_80016714(*(void **)(p + 0xD0), 0x38); - } - func_8012C218(p); - return; - } - p += 0x10C; - } -} - - - -extern void (*D_8018F7AC[])(void); - -void func_80182E08(void *a0) { - D_8018F7AC[*(u16 *)((s32)a0 + 0x2)](); -} - - - - -/* func_80182E44 — spawn + arm the SC03_028 HUD gauge prim bank. - * - * Clears the three s16 mode flags, lazily allocates the entity's +0xD0 child - * object through func_8012C194 (bailing out of the WHOLE function if the pool - * is empty), then re-points the D_801EB5xx prim bank at the owner's +0x6/+0xA - * screen coordinates. Every %lo() address the target touches is its own - * dlabel in asm/ov_SC03_028/data/tail18.data.s, so each store is a plain - * global — none of them is an interior offset (idiom 7 does not apply). - * - * Levers that closed this one (5 needed, applied in the prescribed order): - * - * 1. §136 L1 — every reload group gets its own BLOCK-SCOPED temp. The three - * `lhu 0xA($s2)` reloads are real: a store to a global and a load through - * a pointer parameter are not disambiguated by memrefs_conflict_p, so the - * load is redone in each group. - * - * 2. §136 L1 (obj init) — `*(u16 *)(a0+0xA)` is hoisted into its OWN local - * `y` declared BEFORE the +0x2C/+0x27 constant stores. A load cannot move - * above those stores (different base registers => conservative alias), so - * the target's `lhu $v1,0xA($s2)` sitting three insns early is a SOURCE - * position, not a schedule. Inline it and the whole block re-orders. - * - * 3. TYPE FORM, new — `s16 u = t + 7;` This is the lever that decides - * whether the add issues BEFORE or AFTER the two `t` stores. With - * `s32 u` the pre-reload scheduler (-fschedule-insns, *not* sched2 — - * verified by -fno-schedule-insns2 changing nothing and - * -fno-schedule-insns reproducing the target) SINKS the add to just - * before its first consumer, reuses $v0 and loses the two load-delay - * nops (LENGTH-DRIFT/-2). Narrowing `u` to HImode pins the add - * immediately after the load and forces the $v0/$v1 pair. Equivalent - * fixes that also worked: a non-volatile `__asm__("" : "=r"(u) : "0"(u))` - * re-tie, or `register s32 u __asm__("$3")` — the s16 form is the one - * with no artefact in the source. - * - * 4. Group 4 needs the OPPOSITE of the sink: `u = t + 2` and `w = t - 2` as - * two named locals keep both addiu's ahead of the stores, because there - * is no store of `t` itself for the scheduler to fill with. - * - * 5. STATEMENT ORDER for the constant 2 (§136 idiom 4, refined). The - * constant is CSE'd into one pseudo whose `addiu $v1,$zero,2` is hoisted - * by the scheduler in proportion to how early its first consumer sits in - * the RTL. Writing `D_801EABD8/514 = 2` AFTER the four zero byte stores - * but BEFORE `D_801EAC0C = 4` is what puts the `li 2` right behind the - * `li 0x40` (24 insns ahead of its use) while leaving the emitted store - * order at 572/56E/56A/566, 548, 514, 57C. Putting it any earlier drags - * the stores with it; any later leaves the `li` one slot low - * (SHIFT-DRIFT/+1). - * - * Also: idiom 3 — the 0xFF byte constants need UNSIGNED (u8) destinations so - * gcc emits `addiu $v0,$zero,0xFF`; through `s8` it folds to -1. And idiom 9 - * — func_8012C194 is declared void-returning everywhere in the tree - * (src/shared/engine_core.h), so it is called through a cast rather than - * redeclared. - */ - -void func_80182E44(void *a0) { - - extern void func_8012C194(void); - extern void func_80024054(void *a0, void *a1); - extern void func_8001CE28(void *a0, void *a1); - - extern s16 D_8018F778; - extern s16 D_8018F76C; - extern s16 D_8018F760; - - extern u8 D_801EAB78[]; - - extern s16 D_801EABA0; - extern s16 D_801EABA2; - extern s16 D_801EABA4; - extern s16 D_801EABAA; - extern s16 D_801EABB0; - extern s16 D_801EABB2; - extern s16 D_801EABBA; - extern u8 D_801EABC0; - extern u8 D_801EABC1; - extern u8 D_801EABC2; - extern u8 D_801EABC4; - extern u8 D_801EABC6; - extern u8 D_801EABC8; - extern u8 D_801EABC9; - extern u8 D_801EABCA; - extern u8 D_801EABCC; - extern u8 D_801EABCE; - extern u32 D_801EABD0; - extern s16 D_801EABD6; - extern s16 D_801EABD8; - extern s16 D_801EABDE; - extern s16 D_801EABE6; - extern s16 D_801EABEE; - extern u8 D_801EABF4; - extern u8 D_801EABF5; - extern u8 D_801EABF6; - extern u8 D_801EABF9; - extern u8 D_801EABFA; - extern u8 D_801EABFC; - extern u8 D_801EABFD; - extern u8 D_801EABFE; - extern u8 D_801EAC01; - extern u8 D_801EAC02; - extern u32 D_801EAC04; - extern s16 D_801EAC08; - extern s16 D_801EAC0A; - extern s16 D_801EAC0C; - extern s16 D_801EAC12; - extern s16 D_801EAC18; - extern s16 D_801EAC1A; - extern s16 D_801EAC22; - extern u8 D_801EAC28; - extern u8 D_801EAC29; - extern u8 D_801EAC2A; - extern u8 D_801EAC2C; - extern u8 D_801EAC2D; - extern u8 D_801EAC2E; - extern u8 D_801EAC30; - extern u8 D_801EAC31; - extern u8 D_801EAC32; - extern u8 D_801EAC34; - extern u8 D_801EAC35; - extern u8 D_801EAC36; - extern u32 D_801EAC38; - - s32 obj; - void *bank; - - D_8018F778 = 0; - D_8018F76C = 0; - D_8018F760 = 0; - - if (*(s32 *)((s32)a0 + 0xD0) == 0) { - obj = ((s32 (*)(void))func_8012C194)(); - if (obj == 0) { - return; - } - bank = D_801EAB78; - func_80024054(*(void **)((s32)a0 + 0xDC), bank); - func_8001CE28((void *)obj, bank); - *(s16 *)(obj + 0x8) = *(u16 *)((s32)a0 + 0x6) + 6; - { - s32 y = *(u16 *)((s32)a0 + 0xA); - *(s16 *)(obj + 0x2C) = 3; - *(u8 *)(obj + 0x27) = 1; - *(s16 *)(obj + 0xA) = y + 9; - } - *(s32 *)((s32)a0 + 0xD0) = obj; - } - - { - s32 t = *(u16 *)((s32)a0 + 0x6); - D_801EABA0 = t; - D_801EABB0 = t - 4; - } - { - s32 t = *(u16 *)((s32)a0 + 0xA); - s16 u = t + 7; - D_801EABAA = t; - D_801EABA2 = t; - D_801EABBA = u; - D_801EABB2 = u; - } - { - s32 t = *(u16 *)((s32)a0 + 0xA); - s16 u = t + 7; - D_801EABDE = t; - D_801EABD6 = t; - D_801EABEE = u; - D_801EABE6 = u; - } - { - s32 t = *(u16 *)((s32)a0 + 0x6); - s32 u = t + 2; - s32 w = t - 2; - D_801EAC08 = u; - D_801EAC18 = w; - } - { - s32 t = *(u16 *)((s32)a0 + 0xA); - D_801EABC8 = 0xFF; - D_801EABC0 = 0xFF; - D_801EABCC = 0xFF; - D_801EABC4 = 0xFF; - D_801EABC9 = 0; - D_801EABC1 = 0; - D_801EABCE = 0; - D_801EABCA = 0; - D_801EABC6 = 0; - D_801EABC2 = 0; - D_801EABFC = 0xFF; - D_801EABF4 = 0xFF; - D_801EAC12 = t + 4; - D_801EAC0A = t + 4; - D_801EAC22 = t + 0xB; - D_801EAC1A = t + 0xB; - D_801EABFD = 0xFF; - D_801EABF5 = 0xFF; - D_801EAC01 = 0xFF; - D_801EABF9 = 0xFF; - } - - D_801EAC34 = 0x40; - D_801EAC30 = 0x40; - D_801EAC2C = 0x40; - D_801EAC28 = 0x40; - D_801EAC35 = 0x40; - D_801EAC31 = 0x40; - D_801EAC2D = 0x40; - D_801EAC29 = 0x40; - D_801EAC36 = 0x40; - D_801EAC32 = 0x40; - D_801EAC2E = 0x40; - D_801EAC2A = 0x40; - D_801EAC02 = 0; - D_801EABFE = 0; - D_801EABFA = 0; - D_801EABF6 = 0; - D_801EABD8 = 2; - D_801EABA4 = 2; - D_801EAC0C = 4; - D_801EAC04 = 0; - D_801EABD0 = 0; - D_801EAC38 = 0x60000000; - - if (*(s16 *)((s32)a0 + 0x70) == 0) { - *(s16 *)((s32)a0 + 0x70) = 0x100; - } - D_8018F778 = 2; - *(s16 *)((s32)a0 + 0x2) = *(u16 *)((s32)a0 + 0x2) + 1; -} - - - - -extern void func_800176F0(void *a0); - -void func_80183130(void *a0) { - - extern s16 D_8018F760; - extern s16 D_8018F76C; - extern s16 D_8018F778; - extern s16 D_801EABA0; - extern s16 D_801EABA8; - extern s16 D_801EABB8; - extern u8 D_801EABC1; - extern u8 D_801EABC2; - extern u8 D_801EABC5; - extern u8 D_801EABC6; - extern u8 D_801EABC9; - extern u8 D_801EABCA; - extern u8 D_801EABCD; - extern u8 D_801EABCE; - extern s16 D_801EABDC; - extern s16 D_801EABE4; - extern s16 D_801EABEC; - extern u8 D_801EABF6; - extern u8 D_801EABF8; - extern u8 D_801EABFA; - extern u8 D_801EABFE; - extern u8 D_801EAC00; - extern u8 D_801EAC02; - extern s16 D_801EAC10; - extern s16 D_801EAC20; - - s16 cur = *(s16 *)((s32)a0 + 0x108); - s32 lo = **(s16 **)((s32)a0 + 0xD4); - s32 hi = **(s16 **)((s32)a0 + 0xD8); - s32 hw; - s16 h; - s16 c; - s32 t; - - s16 *p; - void *w; - - if (cur != lo) { - if (lo < cur) { - s32 d; - s16 *r; - *(s16 *)((s32)a0 + 0x108) = cur - hi * 3 / *(s16 *)((s32)a0 + 0x70); - if (*(s16 *)((s32)a0 + 0x108) < lo) { - *(s16 *)((s32)a0 + 0x108) = lo; - } - d = *(s16 *)((s32)a0 + 0x108) * *(s16 *)((s32)a0 + 0x70) / hi; - r = &D_8018F760; - *r = d; - if (*r == 0) { - if (lo != 0) { - *r = 1; - } - } - } else if (cur < *(s16 *)((s32)a0 + 0x10A)) { - *(s16 *)((s32)a0 + 0x108) = cur + hi * 3 / *(s16 *)((s32)a0 + 0x70); - if (lo < *(s16 *)((s32)a0 + 0x108)) { - *(s16 *)((s32)a0 + 0x108) = hi; - } - D_8018F760 = *(s16 *)((s32)a0 + 0x108) * *(s16 *)((s32)a0 + 0x70) / hi; - } else if (*(s16 *)((s32)a0 + 0x10A) < hi) { - *(s16 *)((s32)a0 + 0x10A) = - *(s16 *)((s32)a0 + 0x10A) + hi * 3 / *(s16 *)((s32)a0 + 0x70); - if (hi < *(s16 *)((s32)a0 + 0x10A)) { - *(s16 *)((s32)a0 + 0x10A) = hi; - } - D_8018F76C = *(s16 *)((s32)a0 + 0x10A) * *(s16 *)((s32)a0 + 0x70) / hi; - D_8018F778 = D_8018F76C + 2; - } - } - - if (*(s16 *)((s32)a0 + 0xFC) == 0xB) { - s32 f = *(s32 *)((s32)a0 + 0x1C); - s32 v = -(f & 1) & 0xC0; - __asm__("" : "=r"(v) : "0"(v)); - f = f + 1; - *(s32 *)((s32)a0 + 0x1C) = f; - D_801EABC9 = v; - D_801EABC1 = v; - D_801EAC02 = v; - D_801EABFE = v; - D_801EABFA = v; - D_801EABF6 = v; - D_801EABCE = v; - D_801EABCA = v; - D_801EABC6 = v; - D_801EABC2 = v; - } - - hw = (s16) * (u16 *)((s32)a0 + 0x70) >> 1; - h = hw; - c = D_8018F760; - if (c < h) { - D_801EABA8 = (u16)D_801EABA0 + c; - D_801EABB8 = (u16)D_801EABA0 + c - 4; - D_801EABCD = c * 255 / h; - D_801EABC5 = c * 255 / h; - } else { - register u8 *q __asm__("$6"); - u16 bs; - s32 x; - s16 y; - t = (c - h) * 255 / h; - q = &D_801EABC5; - __asm__("" : "=r"(q) : "0"(q)); - bs = (u16)D_801EABA0; - x = bs + hw; - __asm__("" :: "r"(hw)); - y = x - 4; - D_801EABCD = 0xFF; - *q = 0xFF; - *(s16 *)(q + 0xF) = x; - D_801EABDC = bs + c; - D_801EABA8 = x; - D_801EABE4 = y; - D_801EABB8 = y; - D_801EABEC = bs + c - 4; - D_801EAC00 = -t; - D_801EABF8 = -t; - func_800176F0(q + 0xF); - } - - p = &D_801EAC20; - __asm__("" : "=r"(p) : "0"(p)); - D_801EAC10 = *(u16 *)((s32)p - 0x18) + (u16)D_8018F76C; - *p = D_801EAC10 - 4; - w = (void *)((s32)p - 0x80); - p = (s16 *)((s32)p - 0x18); - func_800176F0(w); - func_800176F0(p); -} - - -DEFINE_func_801835C4() /* dedup: shared engine-core @0x801835C4 (src/shared) */ - - - -extern void func_80183930(void); -extern void func_800167B8(s32 a0); - -s32 func_80183600(s32 a0) { - func_80183930(); - func_800167B8(0); - *(u8 *)(a0 + 0x15) += 1; - return 0; -} - - - -extern s32 func_800167F0(s32 a0); - -s32 func_80183644(void) { - return (func_800167F0(0) & 0xffff) != 0; -} - - - - -extern void func_80183958(void); - -s32 func_80183668(s32 a0) { - func_80183958(); - *(s32 *)(a0 + 0x28) = 10; - *(u8 *)(a0 + 0x15) += 1; - return 0; -} - - - -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_8001BFD0(void); -extern void func_800D0C48(s32 a0); -extern void func_800D1E28(void); - -s32 func_801836A8(u8 *a0) { - if (--(*(s32 *)(a0 + 0x28)) == -1) { - func_8002D4C8(0x1C, 0); - func_8001BFD0(); - func_8002D4C8(0x1D, 0); - func_800D0C48(1); - func_800D1E28(); - *(u8 *)(a0 + 0x15) += 1; - } - return 0; -} - - -extern void func_800D1EBC(void); -void func_80183724(void) { - func_800D1EBC(); -} - - - -extern void (*D_8018F818[])(void); - -void func_80183744(void *a0) { - D_8018F818[*(u8 *)((s32)a0 + 0x15)](); -} - - - - -extern void func_80183958(void); - -s32 func_80183780(s32 a0) { - func_80183958(); - *(s32 *)(a0 + 0x28) = 10; - *(u8 *)(a0 + 0x15) += 1; - return 0; -} - - - -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_8001BFD0(void); -extern void func_800D0C48(s32 a0); -extern void func_800D1E28(void); - -s32 func_801837C0(u8 *a0) { - if (--(*(s32 *)(a0 + 0x28)) == -1) { - func_8002D4C8(0x1C, 0); - func_8001BFD0(); - func_8002D4C8(0x1D, 0); - func_800D0C48(1); - func_800D1E28(); - *(u8 *)(a0 + 0x15) += 1; - } - return 0; -} - - -extern void func_800D1EBC(void); - void func_8018383C(void) { - func_800D1EBC(); - } - - -DEFINE_func_8018385C() /* dedup: shared engine-core @0x8018385C (src/shared) */ - -extern s32 func_80029504(void); -extern void func_8001BFD0(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_800D0C48(s32 a0); -extern void func_800D1E28(void); - -s32 func_80183898(u8 *a0) { - s32 s1 = func_80029504(); - if (--(*(s32 *)(a0 + 0x28)) == -1) { - func_8002D4C8(0x1C, 0); - func_8001BFD0(); - func_8002D4C8(0x1D, 0); - if (s1 >= 0x2C6) { - func_800D0C48(1); - } - func_800D1E28(); - *(u8 *)(a0 + 0x15) += 1; - } - return 0; -} - - -DEFINE_func_80183930() /* dedup: shared engine-core @0x80183930 (src/shared) */ - - -DEFINE_func_80183958() /* dedup: shared engine-core @0x80183958 (src/shared) */ - - - -extern void func_8012A018(s32 a0, s32 a1); -extern void func_8012A094(s32 a0); -extern void func_80183A18(void *a0); - -void func_80183980(void) { - - extern s32 D_80126954; - extern s32 D_8012695C; - extern s16 D_80126968; - extern s16 D_8012696A; - extern s16 D_8012696C; - extern s16 D_80126976; - extern s16 D_80126978; - extern s16 D_8012697A; - extern u8 D_80126948[]; - D_80126954 = 0x190; - D_8012695C = 0x3e8; - D_80126968 = 0x238; - D_8012696A = 0x600; - D_8012696C = 0; - D_80126976 = 0; - D_80126978 = 0; - D_8012697A = 0; - func_8012A018((s32)func_80183A18, 0); - func_8012A094((s32)D_80126948); - func_80183A18(D_80126948); -} - - - -extern void (*D_8018F850[])(void); - -void func_80183A18(void *a0) { - D_8018F850[*(u8 *)((s32)a0 + 0x4)](); -} - - - - -extern s32 D_80126B58; -extern s16 D_8018F854[]; -extern Blk8_80126940 D_80126940; -extern u16 func_80148800(s32 *a0); -extern void func_80183B58(s32 a0, s16 *a1); - -void func_80183A54(s32 a0) { - Blk8_80126940 sp10; - u8 t; - - if (func_80148800(&D_80126B58) & 3) { - t = (*(u8 *)(a0 + 5) + 1) & 1; - *(u8 *)(a0 + 5) = t; - *(s32 *)(a0 + 0x14) = D_8018F854[t]; - } - sp10 = D_80126940; - - if (sp10.v[2] < 0x440) { - *(s16 *)(a0 + 0x22) = 0x800; - } else { - *(s16 *)(a0 + 0x22) = 0x600; - } - - if (sp10.v[0] < -0x150) { - sp10.v[0] = -0x150; - } - if (sp10.v[0] >= 0x151) { - sp10.v[0] = 0x150; - } - if (sp10.v[2] < -0x440) { - sp10.v[2] = -0x440; - } - - func_80183B58(a0, sp10.v); -} - - - -// @class: schedule -// @stuck: none — MATCH (102 ins). MATRIX(0x20:m@0,t@0x14)+SVECTOR in/out stack layout; the only -// lever past struct-layout was source order: emit m1.t[2] BEFORE svec_in.vx/vy so the two `sh -// zero` stores schedule into the t[2] load-delay slot (after the a1 setup), not after t[1]. - - /* 0x20: m@0, pad@0x12, t@0x14 */ - /* 8 bytes */ - -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); -extern s32 func_80012ABC(s32 a0, s32 a1, s32 a2); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); - -void func_80183B58(s32 param_1, s16 *param_2) { - MATRIX m1; - SVECTOR svec_in; - SVECTOR svec_out; - - *(s32 *)(param_1 + 0x8) = (s16)func_80012C6C((s32)*(s16 *)(param_1 + 0x8), (s32)*(s16 *)(param_1 + 0xC), 4); - *(s32 *)(param_1 + 0x10) = (s16)func_80012C6C((s32)*(s16 *)(param_1 + 0x10), (s32)*(s16 *)(param_1 + 0x14), 4); - *(s16 *)(param_1 + 0x18) = func_80012ABC((s32)*(s16 *)(param_1 + 0x18), (s32)*(s16 *)(param_1 + 0x20), 4); - *(s16 *)(param_1 + 0x1A) = func_80012ABC((s32)*(s16 *)(param_1 + 0x1A), (s32)*(s16 *)(param_1 + 0x22), 4); - *(s16 *)(param_1 + 0x1C) = func_80012ABC((s32)*(s16 *)(param_1 + 0x1C), (s32)*(s16 *)(param_1 + 0x24), 4); - *(s16 *)(param_1 + 0x28) = func_80012C6C((s32)*(s16 *)(param_1 + 0x28), (s32)*(s16 *)(param_1 + 0x2E), 0x10); - *(s16 *)(param_1 + 0x2A) = func_80012C6C((s32)*(s16 *)(param_1 + 0x2A), (s32)*(s16 *)(param_1 + 0x30), 0x10); - *(s16 *)(param_1 + 0x2C) = func_80012C6C((s32)*(s16 *)(param_1 + 0x2C), (s32)*(s16 *)(param_1 + 0x32), 0x10); - - *(s32 *)(param_1 + 0x48) = (s32)*(s16 *)(param_1 + 0x28) + (s32)param_2[0]; - *(s32 *)(param_1 + 0x4C) = (s32)*(s16 *)(param_1 + 0x2A) + (s32)param_2[1]; - *(s32 *)(param_1 + 0x50) = (s32)*(s16 *)(param_1 + 0x2C) + (s32)param_2[2]; - func_80049CAC(param_1 + 0x18, (s32)&m1); - - m1.t[0] = *(s16 *)(param_1 + 0x28) + param_2[0]; - m1.t[1] = *(s16 *)(param_1 + 0x2A) + param_2[1]; - m1.t[2] = *(s16 *)(param_1 + 0x2C) + param_2[2]; - svec_in.vx = 0; - svec_in.vy = 0; - svec_in.vz = *(s32 *)(param_1 + 0x10); - ((void (*)(s32, s32, s32))func_8012F14C)((s32)&m1, (s32)&svec_in, (s32)&svec_out); - - *(s32 *)(param_1 + 0x3C) = (s32)svec_out.vx; - *(s32 *)(param_1 + 0x40) = (s32)svec_out.vy; - *(s32 *)(param_1 + 0x44) = (s32)svec_out.vz; -} diff --git a/src/ov_SC03_015/ov_SC03_015_jr_80184440.c b/src/ov_SC03_015/ov_SC03_015_jr_80184440.c deleted file mode 100644 index a4b656f0a..000000000 --- a/src/ov_SC03_015/ov_SC03_015_jr_80184440.c +++ /dev/null @@ -1,2752 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8; -typedef void (*Handler)(struct Entry_8016E95C *); -extern void func_801458E0(void); -extern s32 D_800AE6AC; -extern s32 D_800AE6B0; -extern s16 D_800B9A0A; -extern u8 D_80078E50; -extern void func_800D185C(u8 *a0); -extern void func_801458E8(void); -extern s32 func_80029504(void); -extern void func_80145B24(void); -extern u8 D_8018DAA4; -extern u8 D_8018DA14; -extern u8 D_8018D9F0; -extern u8 D_8018D9CC; -extern u8 D_8018DA80; -extern u8 D_8018DA5C; -extern u8 D_8018DA38; -extern u8 D_8018D9A8; -extern void func_80145934(void); -extern u8 D_8018DB34; -extern u8 D_8018DB10; -extern u8 D_8018DAEC; -extern u8 D_8018DAC8; -extern void func_80145A2C(void); -extern s32 func_800291DC(s32); -extern void func_800291C8(s32, s32); -extern void func_80162120(void); -extern void func_80029124(s32, s32); -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); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_80145BF8(void); -extern s32 func_800291B4(s32 arg); -extern void func_800291A0(s32, s32); -extern void func_80145C54(void); -extern s32 func_80145CEC(); -extern s32 func_80029178(s32 arg); -extern void func_80146014(s32 a0); -extern unsigned char D_8018CF2C[]; -extern unsigned char D_8018CF5C[]; -extern unsigned char D_8018CFAC[]; -extern unsigned char D_8018CFDC[]; -extern unsigned char D_8018D00C[]; -extern void func_80145EE8(s32 param_1); -extern void MoveImage(void *a0, s32 a1, s32 a2); -extern void func_80146074(void); -extern s32 func_80146128(void); -extern void func_80146360(void); -extern void func_801463A0(); -extern void func_8014607C(void); -extern s32 *D_80126B78; -extern u8 D_80078EC1; -extern s32 D_80078EC8; -extern s32 D_80126B9C; -extern s32 D_8011F730; -extern u16 D_801152B8; -extern u16 D_8012693A; -extern u8 D_80126BE0[]; -extern u8 D_801150F0[]; -extern void *memcpy(void *dst, const void *src, u32 n); -extern void func_80146FC4(s32 a0); -extern void func_80150A70(s32 a0); -extern void func_80147098(s32 *a0); -extern void func_8014A638(s32 arg0); -extern s32 func_80155458(s32 a0); -extern s32 func_80029104(void); -extern void func_80029344(void); -extern void func_8014ADE0(s32 a0); -extern void func_8014B350(s32 a0); -extern void func_8014B7A4(s16 *param_1); -extern s32 func_80161D58(s32 a0); -extern void func_80161A90(s32 a0); -extern void func_8014B504(u16 *a0); -extern void func_80149BEC(s32 a0); -extern void func_8014B5D0(s32 *a0); -extern void func_8014C99C(u8 *a0); -extern void func_8014B190(s32 s0); -extern void func_80148648(s32 a0, s32 a1); -extern s32 func_80149228(s32 a0); -extern void func_8014A59C(s32 a0); -extern void func_8016F14C(void *a0); -extern void func_80154418(void *a0); -extern void func_80154BE4(s32 a0); -extern void func_80165694(s32 arg0); -extern void func_801654A8(s32 a0); -extern void func_8014A680(s32 a0); -extern void func_8014A6A8(s32 a0); -extern void func_8014A71C(s32 a0); -extern void func_80172588(s32 *a0); -extern void func_801473DC(s32 *a0); -extern void func_80015978(s32 a0, s32 *a1); -extern void (*D_8018D05C[])(void *); -extern u8 D_80126BA4; -extern s32 D_80127098; -extern s32 D_80127094; -extern s32 D_80127090; -extern void func_80146534(void); -extern void func_8001D074(s32 a0, s32 a1); -extern void func_80146554(void); -extern void func_80146578(void); -extern void func_8001CFDC(s32, s32); -extern void func_8014659C(void); -extern void func_8001D074(s32, s32); -extern void func_801465C0(void); -extern void func_801465E4(void); -extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); -extern s32 D_8011F9D0; -extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); -extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 D_8011F750; -extern s32 D_8011F754; -extern u8 * func_801468C8(s32 arg0, u8 arg1); -extern s32 D_8011D030; -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); -extern s32 func_80146B9C(void *a0); -extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); -extern u16 D_8011DA28; -extern s32 func_80146B9C(void * arg0); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80146CA0(void *a0); -extern void func_80146CB4(void *a0); -extern void func_80146CC8(s32 a0); -extern void func_80146D30(s32 a0); -extern void func_80146D80(s32 *a0); -extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80146D90(s32 a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); -extern void func_80146E90(s32 *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80015954(s32 a0, s32 a1); -extern void func_80149374(s32 a0, s32 a1); -extern void func_80146F58(s32 a0, s32 a1); -extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 func_8012A68C(void); -extern s16 func_8012A758(void); -extern void func_8004978C(s16 *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern u8 D_80126DB0[]; -extern u16 D_80126DB6; -extern void func_8014704C(s32 *a0); -extern s32 func_80147054(void *a0); -extern void func_80147060(u8 * a0); -extern void func_8014706C(void *arg0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80147084(s32 *a0); -extern void func_8014708C(void *arg0); -extern s32 func_801470A0(void *a0); -extern void func_801470AC(s32 *a0); -extern void func_801470B4(s32 arg0); -extern void func_801470C0(s32 a0); -extern void func_80147118(s32 a0); -extern s16 D_80126BB8; -extern s16 D_80126BBA; -extern s16 D_80126BBC; -extern void func_80147264(s32 a0); -extern void func_80147290(void); -extern void func_801472B4(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void *D_8012707C; -extern void func_801472DC(void); -extern void func_801472F0(void *a0); -extern void func_80147364(u16, s32); -extern void func_80147300(u16 arg0); -extern void func_80147324(s32 arg0); -extern void func_801473EC(s32 *a0); -extern void func_80147460(s32 a0); -extern void func_80147514(); -extern void func_80147628(s32 a0); -extern void func_80147478(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); -extern s32 func_800129CC(s32 a0, s32 a1); -extern void func_80147514(s32 arg0); -extern void func_80013F3C(s32 a0); -extern void func_80012558(s32 a0, s32 a1); -extern void func_800126C4(s32 a0, s32 a1); -extern void func_800123F0(s32 a0, s32 a1); -extern void func_80147718(s32 a0); -extern void func_80147788(void *a0, s32 a1); -extern void func_801477A8(void *a0, s32 a1); -extern void func_801477C8(void *a0, s32 a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80147814(s32 a0, s32 a1); -extern void func_80147928(int a0, int a1); -extern void func_8014799C(int a0, int a1); -extern void func_80147A10(int a0, int a1); -extern void func_80147860(int a0, int a1, int a2, int a3); -extern void func_80147948(s32 a0, s32 a1, s32 a2); -extern void func_801479BC(s32 a0, s32 a1, s32 a2); -extern void func_80147A30(s32 a0, s32 a1, s32 a2); -extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147948(int a0, int a1, int a2); -extern void func_801479BC(int a0, int a1, int a2); -extern void func_80147A30(int a0, int a1, int a2); -extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147A84(s32 arg0); -extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147AAC(s32 arg0); -extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80147B5C(s32 a0, void *a1); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern void func_80147B18(s32 a0); -extern void func_80147B5C(s32 arg0, void *arg1); -extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147DC0(s32 a0, s32 a1); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147F50(s32 arg0); -extern void func_80148038(s32 a0, s32 a1); -extern s32 ratan2(s32 a0, s32 a1); -extern s32 csqrt(s32 a0); -extern s32 func_80012A60(s32 a0, s32 a1); -extern void func_80148094(int param_1, short *param_2, int *param_3); -extern void func_801485B8(s32 a0, s32 a1, s32 a2); -extern void func_801484B0(s32 a0, s32 a1); -extern s32 func_80154358(void *a0); -extern void func_801484E8(s32 a0, s32 a1); -extern void func_80148534(s32 a0, s32 a1); -extern void func_8014856C(s32 a0, s32 a1); -extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); -extern void func_80148634(void *a0); -extern u8 D_800B9A64; -extern s32 func_80014DC0(); -extern s32 func_80014D68(); -extern s32 func_80014D94(); -extern s32 func_80014CF8(); -extern void func_800120DC(); -extern s32 func_800CF8B4(); -extern u16 func_801487F4(s32 *a0); -extern u16 func_80148800(s32 *a0); -extern u8 func_8014880C(s32 *a0); -extern u16 func_80148818(s32 *a0); -extern s32 func_80047D3C(s32 a0); -extern s32 func_80148824(void *arg0); -extern s32 func_801488A8(u8 *a0); -extern s32 func_8014891C(s32 a0); -extern s32 func_80148980(u8 *a0); -extern s32 func_801489E8(s32 a0); -extern s32 func_80148A48(s32 a0); -extern int func_80148AFC(void *a0); -extern void func_80148AAC(u8 *a0); -extern s32 func_80148C18(void); -extern s32 func_80148C20(s32 a0, s16 a1); -extern s32 func_80148C34(s32 a0, s32 a1); -extern s32 func_80148C4C(s32 a0, s32 a1); -extern s32 func_80148C64(s32 a0, s32 a1); -extern s32 func_80148C7C(void); -extern s32 func_80148C84(s32 a0, s32 a1); -extern s32 func_80148C9C(s32 a0, s32 a1); -extern s32 func_80148CB4(s32 a0, s32 a1); -extern s32 func_80148CCC(s32 a0, s32 a1); -extern s32 func_80148CE4(void); -extern s32 func_80148CEC(void); -extern s32 func_80148CF4(s32 a0, s32 a1); -extern s32 func_80148D0C(s32 a0, s32 a1); -extern s32 func_80148D24(void *a0, int a1); -extern s32 func_80148D3C(void); -extern s32 func_80148F60(void); -extern s32 func_80148F68(s32 a0); -extern s32 func_80148F74(s32 a0); -extern s32 func_80148F80(s32 a0); -extern s32 func_80148F8C(s32 a0); -extern s32 func_80148F98(void); -extern s32 func_80148FA0(s32 a0); -extern s32 func_80148FAC(s32 a0); -extern s32 func_80148FB8(s32 a0); -extern s32 func_80148FC4(s32 a0); -extern s32 func_80148FD0(void); -extern s32 func_80148FD8(void); -extern s32 func_80148FE0(s32 a0); -extern s32 func_80148FEC(s32 a0); -extern s32 func_80148FF8(s32 a0); -extern s32 func_80149004(void); -extern void func_8014900C(s32 *a0); -extern void func_80149020(s32 *a0); -extern void func_80149034(s32 *a0); -extern void func_80149048(s32 *a0); -extern void func_8014905C(u8 *a0); -extern void func_801490E0(s32 *a0, s16 a1); -extern void func_801490E8(s32 *a0, s16 a1); -extern void func_801490F0(s32 *a0, s16 a1); -extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); -extern void func_801490F8(s32 a0, s32 a1); -extern s32 func_801491C4(s32 a0); -extern s32 func_80149184(s32 a0); -extern s32 D_801151D4; -extern void func_80149204(s32 *a0); -extern void func_80149210(s32 a0, s32 a1); -extern s32 func_80149284(s32 *a0, s32 a1); -extern void func_80149350(s32 arg0); -extern void func_80149290(s32 a0); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_80149374(s32 arg0, s32 arg1); -extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8014942C(s32 arg0); -extern void func_8012EF70(s32 a0, s32 a1); -extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012EFB8(s32 a0); -extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); -extern void func_8014964C(s32 param_1, s32 param_2); -extern s32 func_801496D4(void *a0); -extern void func_8015AD08(); -extern void func_80149704(void); -extern void func_8015ACC4(); -extern void func_80149724(void); -extern u8 D_80078EBF; -extern s32 func_80149744(struct S_80149744 *a0); -extern void func_8015F7A0(); -extern void func_80149788(void); -extern void func_801653B8(); -extern void func_80149864(void); -extern s16 currentLocationId; -extern s32 func_8016F1AC(void); -extern s32 func_80149884(void); -extern void func_80160B00(); -extern void func_801498C0(void); -extern s32 func_80149AA8(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern void func_80146750(void *a0); -extern s32 func_801498E0(s32 *a0); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_80147364(u16 a0, s32 a1); -extern s32 func_800CCF28(s32 a0); -extern u8 D_80126B5C; -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_8015DAC4(s32 *a0); -extern void func_8015554C(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern void func_80149B14(s32 *a0); -extern u8 func_8014BEF8(void); -extern s32 func_80149B54(s32 * arg0); -extern void func_8015DE24(s32 *a0); -extern void func_80157510(s32 *a0); -extern void func_80149BAC(s32 *a0); -extern s32 func_80029178(s32 a0); -extern s32 func_80149C08(s32 arg0); -extern void func_801577C8(); -extern void func_80149C94(void); -extern void func_80157D20(void); -extern void func_80149CB4(void); -extern s32 func_80149CD4(s32 a0); -extern u8 func_8014B5B8(s32 *a0); -extern s32 func_80149D10(s32 a0); -extern s32 func_80149E94(s32 a0); -extern s32 func_80149DD8(s32 a0); -extern s32 func_80149D9C(s32 a0); -extern u8 D_801202A0[]; -extern s32 func_80149F2C(s32 a0, s32 a1); -extern s32 func_80149E94(s32 arg0); -extern void func_80149FA8(void); -extern s32 D_8018D124[]; -extern u8 D_80078E78[]; -extern s32 func_80149FB0(s32 a0); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern void func_8014A1B0(s32 a0, s32 a1); -extern s32 func_8014A048(s32 param_1); -extern u16 func_80156370(u16 a0); -extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); -extern void func_8015D4B4(); -extern void func_8014A218(void); -extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); -extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); -extern s32 func_8014A238(s32 arg0); -extern s32 func_8014A2E4(s32 a0); -extern void func_8014A380(s32 a0, s32 a1); -extern s16 D_801152B0; -extern s16 D_801152B4; -extern s32 func_8014A3E0(struct S_8014A3E0 *a0); -extern s32 func_8014A454(s32 a0); -extern s32 func_8014A4B4(void *a0); -extern void func_8015EDD4(); -extern void func_8014A4FC(void); -extern s32 func_8014A674(s32 *a0); -extern s32 func_8014A69C(s32 *a0); -extern s32 func_8014A6C4(s32 a0); -extern void func_8015E184(); -extern void func_8014A830(void); -extern s32 func_80029AF4(void); -extern s32 func_8014A850(s32 param_1); -extern void func_8014AA04(s32 a0); -extern void func_801599A4(void *a0); -extern void func_80159B3C(void *a0); -extern s32 func_80165A20(s32 a0); -extern void func_8014AB7C(); -extern void func_8014AC10(); -extern void func_8014AA28(void); -extern void func_8014AB5C(void); -extern void func_80162CCC(void); -extern void func_8014AB7C(s32 arg0); -extern void func_8014ABF0(void); -extern void func_80016714(void *a0, s32 a1); -extern void func_8014AC10(s32 arg0); -extern void func_8014ACC0(s32 a0, s32 a1); -extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); -extern void func_8014ACE8(void *a0, s32 a1, s32 a2); -extern void func_80146AFC(void *a0); -extern void func_8014ADA8(s32 a0, s32 a1); -extern void func_8014AD7C(s32 a0); -extern s32 D_80078E8C; -extern void func_8014B034(s32 arg0); -extern void func_8014B00C(s32 arg0); -extern void func_8014B084(void); -extern s16 D_80078E90; -extern void func_8014B034(s32 a0); -extern u16 D_80078EAC; -extern u8 D_80078EBA; -extern void func_800D10EC(void); -extern void func_8002AC98(void); -extern s32 func_8014B154(s32 *a0); -extern void func_8014B12C(void); -extern void func_8014B2F8(void); -extern void func_8014B4C4(void); -extern void func_8014B160(s32 a0); -extern s32 func_8016F1C4(void); -extern s16 D_80078E96; -extern s16 D_80078EB8; -extern u16 D_80078EA6; -extern void func_8014B2A8(void); -extern void func_8014B310(void); -extern void func_8014B2D0(void); -extern s32 D_80078E94; -extern s32 D_80078ECC; -extern void func_8014B33C(void); -extern u8 D_80062BF4[]; -extern void func_8014BC80(s32 a0, s32 a1); -extern void func_80019064(void *a0); -extern s32 D_80078E98; -extern void func_80166244(); -extern void func_8014B4D4(void *a0); -extern s16 D_80078E9A; -extern u8 D_80126D1C; -extern s32 D_80126D74; -extern void func_8014B598(s32 a0, s32 a1); -extern void func_8014B5B0(s32 *a0); -extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); -extern void func_8014B5D8(s32 s1); -extern s32 D_80078E9C; -extern s32 D_80078ED0; -extern void func_8014B6F0(s32 a0, s32 a1); -extern void func_8014B768(s32 a0, s32 a1); -extern void func_8014B944(s32 a0, s32 a1, s32 a2); -extern s32 D_80078EA4; -extern u16 D_80078EB2; -extern s16 D_80078EB4; -extern void func_8014BB0C(void); -extern void func_8014BB24(s32 a0, s32 a1, s32 a2); -extern void func_8014BC0C(s32 a0, s32 a1); -extern void func_8014BC44(s32 a0, s32 a1); -extern u8 D_800B9A17; -extern void func_8014BCC0(s32 a0, s32 a1); -extern u16 D_80078EB6; -extern s32 func_8014BCEC(s32 a0, s32 a1); -extern void func_8014BD24(s32 a0, s32 a1); -extern void func_8014BD60(s32 param_1, s32 param_2); -extern void func_8014BD98(s32 a0, u16 a1); -extern void func_8014BDC8(void); -extern void func_8014BDE0(void); -extern s32 func_8017267C(s32 *a0); -extern s32 func_80013294(void *a0, void *a1); -extern void func_80029ED4(s32 a0); -extern void func_8014BDE8(s32 a0); -extern void func_8014BE78(void); -extern void func_8014BE9C(void); -extern void func_80029124(s32 a0, s32 a1); -extern void func_8014BEC0(void); -extern void func_8014BF18(s32 a0); -extern void func_8014BF48(void); -extern u8 func_8014BF6C(void); -extern void func_8014BF8C(u8 arg0); -extern void func_8014BFB0(void); -extern u8 func_8014BFD4(void); -extern void func_8014BFF4(s32 a0, s32 a1); -extern void func_8014C010(s32 a0, s32 a1); -extern s32 func_8014C050(s32 a0, s32 a1); -extern s32 func_8014C088(s32 a0, s32 a1); -extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); -extern s32 func_8014C118(void * a0, s32 a1, s32 a2); -extern s32 func_8014C168(s32 * param_1, s32 param_2); -extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); -extern u8 D_8018D1AC[]; -extern void func_8014C1A0(s32 arg0, s32 arg1); -extern s32 func_80013328(s32 a0, s32 a1); -extern s32 func_8014C59C(void *a0, void *a1); -extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); -extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); -extern s32 ratan2(s32 dx, s32 dy); -extern u8 D_8018D1B4; -extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); -extern s16 func_8014C5D0(s32 a0, s32 a1); -extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); -extern u8 D_80126D17; -extern void func_8014C6AC(void); -extern void func_8014C6C0(void); -extern u8 D_80126D1E; -extern void func_8014C6D0(void); -extern void func_8014C6E0(void); -extern s32 func_8014C860(s32 a0, s32 a1); -extern void func_8014C8C8(s32 a0, s32 *a1); -extern void func_8014C88C(s32 a0); -extern void func_8014C8C8(s32 dst, s32 * src); -extern void func_8014C8F0(s32 arg0); -extern u8 D_801151F0[]; -extern s32 func_8014C918(s32 a0, s32 a1); -extern s32 D_80126B50; -extern void func_8014C968(void); -extern void func_8014C978(void); -extern s32 func_8014C98C(void); -extern void func_80139914(s32 a0); -extern s32 func_8014CA00(s32 a0); -extern u16 func_8014CA70(s32 a0, s32 a1); -extern s32 func_8014CA14(s32 a0, s32 a1); -extern u16 func_8014CAE4(s32 *a0, s32 a1); -extern s32 func_8014CA88(s32 *a0, s32 a1); -extern s32 func_8014CAFC(void); -extern s32 func_8014CB0C(void); -extern s32 func_8014CB1C(void); -extern u8 D_80126D1F; -extern s32 func_8014CB2C(void); -extern s32 func_8014CB58(void); -extern u8 D_80126D1D; -extern void func_8014CB68(void); -extern s32 func_8014CB7C(void); -extern s32 func_8014CB8C(void); -extern short D_80126C9E; -extern void func_8014CB9C(struct Packed8 *a0); -extern s32 D_80126CDC; -extern void func_8014CBD8(void); -extern s16 D_80126CC4; -extern void func_8014CBE8(void); -extern void func_8014CBF8(void *a0); -extern void func_8014D3E0(s32 a0); -extern void func_8014D04C(void); -extern void func_8014CCB4(void); -extern void func_8014CC28(s32 a0); -extern void func_8014CD0C(u8 *a0); -extern s32 func_8014CF04(s32 a0, s32 a1, void *a2); -extern void func_8014CD80(s32 a0, void *a1, void *a2); -extern void func_8014D0A4(s32 a0); -extern s32 func_8014D2A0(s32 a0, void *a1, void *a2); -extern s32 func_8014D12C(s32 a0, void *a1, void *a2); -extern void func_8014D438(s32 a0); -extern void func_8014D3E0(s32 _arg0); -extern void func_8014D610(s32 a0, void *a1, void *a2); -extern s32 func_8014D4C0(s32 a0, void *a1, void *a2); -extern void func_8014D790(s32 a0); -extern void func_8014D738(void); -extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); -extern s32 func_8014D820(s32 a0, u16 *a1, u16 *a2); -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); -extern void func_8014DF94(s32 arg0); -extern void func_8014DF3C(void); -extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ -extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ -extern s16 D_801152AC; -extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); -extern void func_8014E48C(s32 a0); -extern void func_8014E434(void); -extern void func_8014E5B4(s32 a0, void *a1, void *a2); -extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); -extern void func_8014E6F8(struct SubE6F8 *a0); -extern void func_8014E6A0(void); -extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); -extern void func_8014E934(s32 _arg0); -extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); -extern s32 func_8014E98C(void *a0); -extern s32 D_801150D8; -extern s16 D_801152AA; -extern u8 D_80126720[]; -extern s16 D_80126724; -extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); -extern s32 func_8014ED80(struct SubED80 *a0); -extern int D_801E9698; -extern void func_8014ED28(s32 _arg0); -extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F24C(struct SubF24C *a0); -extern void func_8014F1F4(void); -extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F4C0(); -extern s32 func_8014F468(void); -extern int func_8014F74C(); -extern int func_8014F6F4(void); -extern u8 D_800D3918[]; -extern u8 D_801152A8[]; -extern s32 D_801152BC; -extern int func_8014F74C(s32 arg0); -extern s32 func_8014FA70(s32 a0); -extern s32 D_801E969C; -extern void func_8014FA04(s32 a0); -extern s32 func_8014FBC0(); -extern s32 func_8014FC18(u8 *self); -extern int func_8014FD54(int param_1); -extern void func_8014FCFC(void); -extern void func_80150170(void *a0); -extern s32 func_8014FE60(void *a0); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_8014FE60(void *e); -extern s32 func_80134510(s32 arg); -extern s32 func_80150150(s32 a, s32 b); -extern s32 func_80150460(s32 a, s32 b); -extern void func_801504D8(u16 *a0); -extern s32 func_80150480(s32 _arg0); -extern s32 func_80150528(void *a0, void *a1, void *a2); -extern s32 func_80150528(void *arg0, void *arg1, void *arg2); -extern s32 func_801506A4(s32 a0, s32 a1); -extern s32 func_801505FC(s32 a0); -extern s32 func_801506A4(s32 arg0, s32 arg1); -extern void func_80150820(s32 a0, s32 a1); -extern void func_8015086C(int param_1); -extern s32 func_801508B4(s32 a0); -extern s32 func_8015094C(s32 a0); -extern short func_801508F8(s32 a0); -extern s32 D_8018D1E4; -extern s32 D_80126990; -extern s32 D_80126994; -extern u8 D_80126948[]; -extern s32 func_80021174(s32 a0, s32 a1); -extern s32 func_8015094C(s32 param_1); -extern void func_80150B9C(void); -extern s32 func_80151184(s32 a0, s32 a1, s32 a2); -extern s32 func_80150BA4(s32 a0); -extern s32 func_801619D0(void *a0); -extern void func_80150BC8(s32 *a0); -extern s32 func_80150480(s32 a0); -extern u16 D_800AE6DC; -extern void func_80150C48(s32 a0); -extern int func_80151184(int arg, int a1, int a2); -extern int func_80150CA0(int arg); -extern void func_80150EC4(s32 a, s32 b); -extern void func_80150CC4(s32 a); -extern void func_80150CE4(s32 a); -extern void func_80150D04(s32 a); -extern void func_80150D24(s32 a); -extern void func_80150D44(s32 a); -extern void func_80150D64(s32 a); -extern void func_80150D84(s32 a); -extern void func_80150DA4(s32 a); -extern void func_80150DC4(s32 a); -extern void func_80150DE4(s32 a); -extern void func_80150E04(s32 a); -extern void func_80150E24(s32 a); -extern void func_80150E44(s32 a); -extern void func_80150EC4(s32 a0, s32 a1); -extern void func_80150E64(s32 a0); -extern void func_80150E84(s32 a0); -extern void func_80150EA4(s32 a0); -extern u8 D_800AE6C0; -extern s16 D_800AE6C8; -extern s16 D_800AE6CA; -extern s16 D_800AE6CC; -extern s32 D_800AE6C4; -extern s16 D_800AE6CE; -extern u8 D_800AE6BE; -extern u8 D_801201F8[]; -extern void func_80150F78(void); -extern void func_80150F80(s32 a0); -extern int func_80150FB4(int arg); -extern void func_80150FD8(s32 a0); -extern int func_80151014(int arg); -extern void func_80151038(s32 a0); -extern int func_80151070(int arg); -extern int func_80151094(int arg); -extern void func_801510B8(void); -extern void func_801510C0(void); -extern int func_801510C8(int arg); -extern int func_801510EC(int arg); -extern s32 func_8012DB84(void); -extern s32 func_80151110(void); -extern void func_80151130(void); -extern int func_80151138(int arg); -extern void func_8015115C(s32 *a0, s16 a1); -extern s32 func_80151164(s32 a0, s32 a1); -extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); -extern void func_801511A8(u8 *a0); -extern void func_801511C4(u8 *a0); -extern int func_80151204(int arg, int a1); -extern int func_801511E0(int arg); -extern int func_80151204(int a0, int a1); -extern void func_80151238(void *a0); -extern void func_8015126C(u16 *p); -extern void func_80151780(s32 a0); -extern void func_801516F0(s32 *a0); -extern void func_8015173C(s32 *a0); -extern s16 D_8011DB1A; -extern s32 D_80127518; -extern s32 D_801151FC; -extern s32 func_801725CC(u8 *a0); -extern s32 func_80029D3C(void); -extern void func_80151878(void); -extern void func_80153B58(s32 *a0); -extern s32 func_80151880(s32 a0); -extern s32 func_801518D8(s32 a0); -extern s32 func_80151944(void); -extern s32 func_80151924(void); -extern void func_8014E934(s32 a0); -extern s32 func_8014F3E8(s32 a0); -extern void func_801519C8(s32 a0); -extern void func_80151980(s32 a0); -extern M2C_UNK D_800D5880; -extern s32 D_800D58AC; -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801519C8(s32 arg0); -extern void func_80151C54(s32 a0); -extern void func_801542DC(s32 *a0, s32 a1); -extern void func_8015BDD0(s32 *a0); -extern void func_80165718(s32 a0); -extern u8 D_800D46E4[]; -extern void func_80151AE4(s32 arg0); -extern void (*D_8018D28C[])(void); -extern void func_80151D24(void *a0); -extern void func_80151DB0(s32 a0); -extern void func_80151D60(void *a0); -extern s32 func_80172630(u8 *a0); -extern s32 D_80062C14; -extern void func_80151DB0(s32 param_1); -extern void func_80151E78(s32 *a0); -extern void func_80151ECC(struct S80151ECC *a0); -extern void func_80151FB4(s32 a0); -extern void func_80151F38(s32 *a0); -extern void func_801553C0(s32 a0); -extern void func_80153C18(); -extern void (*D_8018D2B0[])(void); -extern void func_80152058(void *a0); -extern void func_801520DC(s32 a0); -extern void func_80152094(s32 a0); -extern void func_80147324(s32 a0); -extern u8 D_80062C04[]; -extern M2C_UNK D_8018D2A0; -extern void func_801520DC(s32 arg0); -extern void func_801470B4(s32 a0); -extern void func_8015369C(s32 a0); -extern void func_80152194(s32 *a0); -extern s32 func_801536DC(s32 a0); -extern void func_8015220C(s32 a0); -extern s32 func_80153800(s32 a0); -extern void func_801522CC(s32 a0); -extern void func_80152254(s32 *a0); -extern void (*D_8018D2C4[])(void); -extern void func_80152370(void *a0); -extern void func_801523F4(s32 a0); -extern void func_801523AC(s32 a0); -extern void func_8001382C(s32 a0, void *a1, void *a2); -extern u8 D_8018D2D0[]; -extern void func_801523F4(s32 arg0); -extern void func_801525F4(int); -extern s32 func_801535F4(void *arg0); -extern void func_8015BF48(s32 *a0); -extern void func_80152500(int param_1); -extern void func_801525F4(s32 a0); -extern void (*D_8018D2E0[])(void); -extern void func_80152698(void *a0); -extern void func_80152714(s32 a0); -extern void func_801526D4(s32 a0); -extern void func_80152790(s32 a0); -extern void (*D_8018D2F8[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018D2E8; -extern void func_801528B0(s32 arg0); -extern void func_8015294C(s32 a0); -extern void func_80152A08(s32 a0); -extern void func_80152AC8(s32 a0); -extern void func_80152A50(s32 *a0); -extern void (*D_8018D30C[])(void); -extern void func_80152B6C(void *a0); -extern void func_80152BF0(s32 a0); -extern void func_80152BA8(s32 a0); -extern void func_80152C80(s32 *a0); -extern void func_80152C40(s32 *a0); -extern void (*D_8018D328[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018D318; -extern void func_80152DA8(s32 arg0); -extern void func_80152E4C(s32 a0); -extern void func_80152EFC(s32 a0); -extern void func_80152FBC(s32 a0); -extern void func_80152F44(s32 *a0); -extern void (*D_8018D33C[])(void); -extern void func_80153060(void *a0); -extern void func_801530E4(s32 a0); -extern void func_8015309C(s32 a0); -extern void func_80155440(s32 *a0); -extern void func_801530E4(s32 arg0); -extern void func_80153150(struct S80153150 *a0); -extern void func_801531BC(s32 a0); -extern void func_8015327C(s32 a0); -extern void func_80153204(s32 *a0); -extern void (*D_8018D350[])(void); -extern void func_80153320(void *a0); -extern void func_801533A4(s32 a0); -extern void func_8015335C(s32 a0); -extern void func_80153410(s32 *a0); -extern void func_80153490(s32 a0); -extern void func_80153550(s32 a0); -extern void func_801534D8(s32 *a0); -extern void (*D_8011DB28)(s32 a0); -extern s32 func_801536DC(s32 param_1); -extern void func_800139C8(s32 a0, void *a1, void *a2); -extern s32 func_80153978(s32 a0, u16 *src); -extern s32 func_80133784(s32 a0, void *src, s32 dst); -extern s32 func_801539F8(s32 a0, void *a1); -extern s32 func_801539F8(s32 a0, void * a1); -extern s32 func_8016DA04(s32 a0); -extern s32 func_80153BD8(s32 a0); -extern s32 func_80153BF0(s32 a0); -extern void func_80153C18(void); -extern u16 D_8011F748; -extern void func_80153C30(void); -extern void func_80153C74(s16 a0, s16 a1); -extern s16 D_8011DB18; -extern void func_80153C44(int a0, int a1, s16 a2); -extern s16 D_8011DB0C; -extern s32 D_80115210; -extern void func_80153C8C(void); -extern void func_80153C9C(void); -extern s32 func_80153CBC(void); -extern s32 D_8018D364; -extern void (*D_8018D38C[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018D36C; -extern void func_80153D7C(s32 param_1); -extern void func_8015410C(void); -extern void func_80153E00(s32 param_1); -extern void func_80151664(void); -extern void func_80154134(u8 *a0); -extern void func_80154190(u8 *a0, s32 a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154218(u8 *a0, s32 a1, s32 a2); -extern void func_801541D8(u8 *a0, s32 a1, s32 a2); -extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); -extern void func_801542A4(); -extern void func_801542A4(s32 *a0, s32 a1); -extern void func_8015430C(); -extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); -extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); -extern s32 func_80154358(void * arg0); -extern void func_80154AB4(s32 a0, s32 a1); -extern void func_80154B20(s32 a0, s32 a1, s32 a2); -extern void func_80154AE0(s32 a0, s32 a1, s32 a2); -extern void func_80154B7C(u8 *a0, s32 a1); -extern void func_80154B4C(u8 *a0, s32 a1); -extern void func_80154BC8(void *a0, s32 a1, s32 a2); -extern void func_80154B98(void *a0, s32 a1, s32 a2); -extern u8 D_800D8D10[]; -extern s16 D_80078E9E; -extern void func_801550FC(s32 a0); -extern void func_80154ED8(s32 a0, s32 a1); -extern void func_80154F9C(s32 a0); -extern void func_800183E0(s32 a0); -extern void func_801550FC(s32 arg0); -extern void func_8001D150(s32, s32); -extern void func_8001D130(int, int); -extern void func_80155150(int param_1); -extern s32 D_800DE2A4[]; -extern void func_801552F4(s32 a0); -extern void func_80155344(s32 a0); -extern s32 func_80155394(s32 *a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80029178(s32); -extern int (*D_8018D3D8[])(void); -extern s32 func_80155458(s32 param_1); -extern s32 func_801659DC(u8 *a0); -extern s32 func_801554B8(void *arg0); -extern void func_801555F4(void *a0); -extern void func_80155518(s32 *a0); -extern void func_80155580(void *a0); -extern void (*D_8018D3DC[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern s32 func_80155800(s32 arg0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern s32 func_80029B4C(s32 a0, s32 a1); -extern s32 func_80029BC8(s32 a0, s32 a1); -extern s32 func_80029C44(s32 a0, s32 a1); -extern s32 func_8015640C(s32 a0, s32 a1); -extern s32 rand(void); -extern u32 func_8015616C(s32 param_1, u16 param_2); -extern u16 func_80156370(u16 param_1); -extern s32 func_801564B0(s32 a0); -extern s32 func_8002A1B4(void); -extern s32 func_8002A400(void); -extern s32 func_8002A670(void); -extern s32 func_8002A8E0(void); -extern s32 D_801151E0[]; -extern s32 func_801565C0(void); -extern void func_80156A14(s32 *a0); -extern void func_80156648(s32 *a0); -extern u8 D_8011DAD8[]; -extern s32 func_8014C568(s16 *a0, s16 *a1); -extern void func_801567BC(s32 a0); -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018D840[]; -extern void func_80156A1C(s32 param_1, s32 param_2); -extern s32 D_801150E0[]; -extern void func_80156A88(s32 a0, s32 a1); -extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); -extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); -extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); -extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern s32 func_80135004(s32 a0, void *a1, s32 a2); -extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801575E4(void *a0); -extern void func_801574DC(s32 *a0); -extern void func_80157544(void *a0); -extern void (*D_8018D850[])(void); -extern void func_8014CC28(s32 a0); /* defined */ -extern s32 func_8014F3E8(s32 a0); /* declared */ -extern void func_8015BDD0(s32 *a0); /* defined */ -extern void func_801575E4(void *a0); /* defined */ -extern void func_80157580(s32 arg0); -extern u8 D_800D4F14[]; -extern void func_801576A8(void *arg0); -extern s32 func_8015773C(u8 *a0); -extern s32 func_8015771C(u8 *a0); -extern s32 func_8015773C(u8 * arg0); -extern int D_801E96D0; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018D878[])(void); -extern void func_80157808(void *param_1); -extern void func_80157880(s32 a0); -extern s32 func_801725A4(u8 *a0); -extern u8 D_800D5128; -extern u8 D_8018D858; -extern void func_801578C0(s32 param_1); -extern void func_80147A84(int); -extern void func_80148038(int, int); -extern void func_80147460(int); -extern void func_80146D90(int); -extern void func_80161450(void *a0); -extern void func_80157A8C(int); -extern void func_80154A74(int, int); -extern unsigned char D_800D5178; -extern unsigned char D_8018D868; -extern void func_8015795C(int param_1); -extern void func_80161D20(s32 a0, s32 a1); -extern void func_80157A8C(s32 a0); -extern void func_8016706C(s32 a0); -extern u8 D_800D51AC[]; -extern void func_80157AC8(s32 param_1); -extern void func_80157B74(int param_1); -extern void func_8016158C(void *a0); -extern void func_8015BE04(s32 *a0); -extern void func_80157BC8(s32 a0); -extern void func_80157CCC(s32 a0); -extern void func_80157DC4(void *a0); -extern void func_80157FC4(void *a0); -extern void func_80157D74(u16 *a0); -extern void (*D_8018D8B8[])(void); -extern void func_80157E38(void *); -extern void func_80157E00(void *a0); -extern void func_80157E38(void * a0); -extern s32 func_80157F64(s32 *a0); -extern s32 func_80156600(void *a0); -extern void func_80157EA4(void *a0); -extern void (*D_8018D8C0[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018D88C; -extern void func_80158038(void * param); -extern u8 D_800D524C[]; -extern void func_80161418(void *a0); -extern void func_801580B4(s32 a0); -extern void func_801581AC(s32 a0); -extern void (*D_8018D8CC[])(void); -extern void func_8015824C(void *a0); -extern void func_801582C0(void *); -extern void func_80158288(void *a0); -extern u8 D_800D52A8[]; -extern void func_801585A4(s32 *a0); -extern void func_801582C0(void *a0); -extern s32 func_801585AC(s32 *a0); -extern u8 D_800D52E8[]; -extern void func_80158344(s32 *a0); -extern s32 func_801615C4(void *a0, s32 a1); -extern u8 D_8018D89C; -extern u8 D_800D533C; -extern void func_80158434(s32 param_1); -extern void func_80158548(s32 param_1); -extern void func_801585EC(u8 *a0); -extern void func_80158794(void); -extern s32 D_801E96D8; -extern s32 D_801E96E4; -extern s32 D_801E96E8; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018D908[])(s32 *); -extern void func_80158AE4(void *a0); -extern void func_80158AB4(void *a0); -extern void func_8016F264(void); -extern void func_80165840(void); -extern void func_801658DC(void); -extern void func_80165A78(s32); -extern void func_80158AE4(void * a0); -extern M2C_UNK D_800D58D8; -extern void func_80158BB0(void *arg0); -extern s32 func_80159404(s32 a0, s32 a1); -extern void func_80158C40(s32 *a0); -extern void func_80158CD8(s32 *a0); -extern s32 func_80159434(s32 a0, s32 a1); -extern void func_80158D60(s32 a0); -extern M2C_UNK D_800D5904; -extern void func_80158E24(s32 *a0); -extern s32 D_8018D8DC[]; -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80158F00(int param_1); -extern u8 D_80110C3C[]; -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80158FA4(s32 param_1); -extern s32 func_801399F0(s32 a0); -extern u8 D_80110C94[]; -extern u8 D_80110CD4[]; -extern void func_80159070(void *a0); -extern s32 func_80029A94(s32); -extern void func_80175454(void); -extern void func_800298BC(void *); -extern void func_8002992C(s32); -extern void func_800CF804(void); -extern void func_800CF818(void); -extern u8 D_80110D0C[]; -extern void func_80159120(s32 a0); -extern void func_801592CC(s32 *a0); -extern u8 D_800AE6BD; -extern s32 D_801E96E0; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018DB58[])(void); -extern void func_80159698(void *a0); -extern s32 func_801596D4(void *a0); -extern void func_80174B6C(void); -extern void func_80129248(s16 a0); -extern void func_8013C938(void); -extern void func_8013CB20(void); -extern void func_8013C98C(void); -extern void func_8002850C(s32, s32, s32); -extern void func_80028620(s32, void *); -extern s16 D_800B9AAC[]; -extern s16 D_800B9B00; -extern u16 D_801270C0; -extern u32 D_800AFAE8[]; -extern char D_8018D978[]; -extern s32 func_801596F0(s32 param_1); -extern s32 func_80159874(void); -extern void func_800167B8(s32 a0); -extern s32 func_8015987C(s32 a0); -extern int func_800167F0(int arg); -extern int func_801598BC(void); -extern void func_80159968(void *a0); -extern void func_801598E0(u8 *a0); -extern void (*D_8018DBFC[])(void); -extern void func_80159A20(void *a0); -extern void func_801599E0(void *a0); -extern void func_80159A18(void); -extern void func_80159BE4(s32); -extern void func_80159B08(s32 *a0); -extern void func_80159B70(void *a0); -extern void func_80159B3C(void * a0); -extern void (*D_8018DD50[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018DB6C; -extern void func_80159BE4(s32 arg0); -extern void func_8015A1C8(s32 a0); -extern void func_8015A2D8(s32); -extern void func_8015A1FC(s32 *a0); -extern void func_8015A264(void *a0); -extern void func_8015A230(s32 *a0); -extern void (*D_8018DD58[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018DB7C; -extern s32 func_80172608(u8 *a0); -extern void func_8015A2D8(s32 param_1); -extern u8 D_800D48DC; -extern s32 func_8015AB7C(s32 a0); -extern s32 D_8011F9C4; -extern s32 func_8015ABD4(s32 a0, s32 a1, s32 a2); -extern s32 func_80161CD0(s32 a0, s32 a1); -extern M2C_UNK D_8018DB9C; -extern void func_8015AC48(s32 arg0); -extern void func_8015AC90(s32 a0); -extern void func_8015ADB0(s32 a0); -extern void func_8015ACC4(s32 *arg0); -extern void func_8015AD3C(void *a0); -extern void func_8015AD08(void *arg0); -extern void (*D_8018DD60[])(void); -extern void func_8015ADB0(s32); -extern void func_8015AD78(s32 a0); -extern void func_8015ADB0(s32 arg0); -extern s32 D_800D4A9C; -extern int func_8015B6F4(int param_1); -extern u8 D_800D4F8C[]; -extern s32 func_8015B7B4(s32 a0); -extern u8 D_800D4BE0[]; -extern s32 func_8014A51C(void); -extern s32 func_8015B858(u8 *a0); -extern s32 D_800D4B48; -extern void func_8015B8F8(s32 *a0); -extern void func_8015BD8C(s32 *a0); -extern s32 func_8015BE94(); -extern void func_8015BE38(struct Obj *a0); -extern s32 func_8015BE74(void); -extern void func_80161124(void *a0); -extern s32 func_8015BE94(s32 *a0); -extern s32 func_8015AE2C(); -extern s32 func_8015BEC4(void); -extern s32 func_8015B950(s32 arg0); -extern s32 func_8015BEE4(void); -extern void func_8015BF04(s32 *a0); -extern void func_8015C0C4(s32 a0); -extern void func_8015BFF4(void *a0); -extern void func_8015BF7C(s32 *a0); -extern void func_8015C030(s32 *a0, s32 a1); -extern void func_8015BFB0(s32 *a0, s32 a1); -extern void (*D_8018DD88[])(void); -extern void func_8015C0C4(s32); -extern void func_8015C08C(s32 a0); -extern s32 func_8015C128(s32 param_1); -extern void func_8015C6A4(void); -extern void func_8015C788(s32 a0); -extern void func_8015C6AC(s32 *a0); -extern void func_8015C714(void *a0); -extern void func_8015C6E0(s32 *a0); -extern void (*D_8018DD94[])(void); -extern void func_8015C788(s32); -extern void func_8015C750(s32 a0); -extern void func_8015CB94(s32 a0); -extern void func_8015CBCC(void); -extern void func_8015CBD4(void); -extern void func_8015CBDC(void); -extern void func_8015CBE4(void); -extern void func_8015CBEC(void); -extern void func_8015CBF4(void); -extern void func_8015CBFC(void); -extern void func_8015CC04(void); -extern void func_8015CC0C(s32 *param_1); -extern void func_8015CC74(s32 *a0); -extern void func_8015CC40(s32 *a0); -extern s32 func_8015CCD0(); -extern s32 func_8015CCB0(void); -extern s32 func_801725E0(u8 *a0); -extern s32 func_8015CCD0(s32 param_1); -extern s32 func_8015CD20(s32 arg0); -extern void func_8015CF24(s32 a0); -extern void func_8015D01C(); -extern void func_8015CF58(s32 *param_1); -extern void func_8015CFC0(s32 *a0); -extern void func_8015CF8C(s32 *a0); -extern void func_8015CFFC(void); -extern void func_8015D01C(int param_1); -extern void (*D_8018DC08[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018DE38; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018CF1C[]; -extern void func_8015D414(int param_1); -extern void func_8015D57C(s32); -extern void func_8015D480(s32 *a0); -extern s32 func_8015D4E8(s16 *a0); -extern void func_8015D4B4(s16 *a0); -extern void func_8015D524(s32 arg0); -extern void func_8015D544(s32 a0); -extern void func_801746DC(void); -extern void func_8015D57C(s32 arg0); -extern s32 func_80161B18(void *a0); -extern s32 func_80161B84(void *a0); -extern void func_80154150(int, int); -extern void func_80149374(int, int); -extern unsigned char D_8018DE4C[]; -extern void func_8015D5E8(int param_1); -extern int func_8015E0D4(int); -extern void func_8015DA5C(s32 a0); -extern void func_8015DB6C(s32 a0); -extern void func_8015DA90(s32 *a0); -extern void func_8015DAF8(s32 *a0); -extern void func_8015DB6C(s32); -extern void func_8015DB34(s32 a0); -extern void func_8015DCB8(s32 a0); -extern void func_8014BD60(s32 a0, s32 a1); -extern int func_8015DD74(int); -extern void func_8015DBD4(void *arg0); -extern int func_8015DC84(int a0); -extern s8 D_8018DE88[]; -extern void func_8015DCB8(s32 param_1); -extern int func_8015DD74(int arg0); -extern void func_8015DECC(s32 a0); -extern void func_8015DDF0(s32 *a0); -extern void func_8015DE58(s32 *a0); -extern void func_8015DECC(s32); -extern void func_8015DE94(s32 a0); -extern void func_8015E018(s32 a0); -extern void func_8015DF34(void *arg0); -extern int func_8015DFE4(int a0); -extern void func_8015E018(s32 param_1); -extern int func_8015E0D4(int a0); -extern void func_8015E22C(s32 a0); -extern void func_8015E150(s32 *a0); -extern s32 func_8015E1B8(s32 a0); -extern void func_8015E184(s32 *arg0); -extern void func_8015E22C(s32); -extern void func_8015E1F4(s32 a0); -extern u8 D_800D4FF4[]; -extern u8 D_800D5098[]; -extern u8 D_800D5060[]; -extern s32 func_8014A850(s32 a0); -extern void func_8015E40C(s32 a0); -extern void func_8015E588(void); -extern void func_8015E4B0(s32 a0); -extern void func_8015E288(s32 a0); -extern u16 D_8018DED0; -extern u16 D_8018DED2; -extern u16 D_8018DED4; -extern s32 D_8018DED8; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -extern void func_8013C9C4(void *a0); -extern s32 D_8018DEE0; -extern void func_8015E5B0(u8 *self); -extern void func_8015E714(s32 *a0); -extern void func_8015E95C(s32); -extern void func_8015E84C(s32 *a0); -extern void func_8015E8E8(s32 *a0); -extern void func_8015E9B8(s32 *a0); -extern void func_8015E8B4(s32 *a0); -extern void func_8015E924(s32 a0); -extern void func_8015E95C(s32 a0); -extern s16 D_801152A0; -extern void func_80160818(s32 *a0); -extern void func_8015ED6C(s32 *a0); -extern void func_8015EE7C(s32); -extern void func_8015EDA0(s32 *a0); -extern s32 func_8015EE08(s32 a0); -extern void func_8015EDD4(s32 *arg0); -extern void func_8015EE44(s32 a0); -extern int D_800D4C48; -extern int D_8018DBEC; -extern void func_8015EE7C(s32 param_1); -extern void func_8015EEE0(void *arg0); -extern void func_8015EF9C(void); -extern void func_8015F080(s32); -extern void func_8015EFA4(s32 *a0); -extern void func_8015F00C(s32 *a0); -extern void func_8015EFD8(s32 *a0); -extern void func_8015F048(s32 a0); -extern void func_8015F080(s32 a0); -extern s32 D_80062BE8; -extern void func_801466F0(s32, s32, s32, s32, s32, s32, s32, s32); -extern s32 func_80161208(void); -extern void func_8015F118(void *a0); -extern void func_8015F260(s32 *a0); -extern void func_8015F380(); -extern void func_8015F2BC(s32 *a0); -extern void func_8015F324(s32 *a0); -extern void func_8015F2F0(s32 *a0); -extern void func_8015F360(void); -extern s32 func_801725B8(u8 *a0); -extern void func_8015F380(void* arg0); -extern void func_8015F738(s32 *a0); -extern void func_8015F848(s32 *a0); -extern void func_8015F76C(s32 *a0); -extern s32 func_8015F7D4(s32 a0); -extern void func_8015F7A0(s32 *arg0); -extern void func_8015F810(s32 *a0); -extern void func_80147078(s32 *, s16); -extern void func_80159B70(void *); -extern void func_8015F89C(void *arg0); -extern void func_8015F948(s32 *param_1); -extern void func_8015F9A4(void *arg0); -extern void func_8015FA24(s32 arg0); -extern void func_8015FBE0(s32 *a0); -extern void func_8015FA44(s32 *a0); -extern void func_8015FAAC(s32 *a0); -extern void func_8015FA78(s32 *a0); -extern s32 func_801612B8(void *a0, s32 a1); -extern void func_8016007C(s32 a0); -extern void func_8015FAE8(void *arg0); -extern void func_8015FCC8(void *param_1); -extern unsigned int D_8018DF64[]; -extern void func_8015FD74(int param_1); -extern s32 func_80028DE0(void); -extern u8 func_80165700(s32 a0, s32 a1); -extern void func_8015FDCC(s32 a0); -extern u8 D_80078EC2; -extern u8 func_801656E8(s32 a0, s32 a1); -extern void func_80165670(s32 a0, s32 a1); -extern void func_8016004C(s32 a0); -extern void func_8015FF20(void *param_1); -extern void func_801601AC(s32 *a0); -extern void func_801600D0(s32 *a0); -extern void func_80160138(s32 *a0); -extern void func_80160104(s32 *a0); -extern void func_80160174(s32 *a0); -extern void func_801601E4(s32 *a0); -extern void func_80160244(s32 *a0); -extern void func_8016032C(void); -extern void func_80160410(s32 *a0); -extern void func_80160334(s32 *a0); -extern void func_8016039C(s32 *a0); -extern void func_80160368(s32 *a0); -extern void func_801603D8(s32 *a0); -extern u8 D_80062BD0; -extern void func_80160410(s32 * a0); -extern void func_801607B8(s32 *a0); -extern void func_801608C0(s32 *a0); -extern void func_801607E4(s32 *a0); -extern void func_8016084C(s32 *a0); -extern void func_80160888(s32 *a0); -extern void func_80160A28(s32 a0); -extern void func_80160A74(s32 *a0); -extern void func_80160BB4(s32 *a0); -extern void func_80160ACC(s32 *a0); -extern s32 func_80160B34(s32 a0); -extern void func_80160B00(s32 *arg0); -extern void func_80160B70(s32 a0); -extern void func_80160C28(void *arg0); -extern void func_80160CB4(s32 *a0); -extern void func_80160D10(void *arg0); -extern void func_80160DEC(u8 *a0); -extern void func_80160F00(); -extern void func_80160E3C(s32 *a0); -extern void func_80160EA4(); -extern void func_80160E70(s32 *a0); -extern void (*D_8018E014[])(void); -extern void func_80160EA4(void *a0); -extern void func_80160EE0(void); -extern void func_80160F00(void* arg0); -extern void func_800D0F4C(s32 a0); -extern u8 D_80110EC0; -extern void func_80160F70(s32 a0); -extern void func_80160FE0(s32 *a0); -extern void func_80161034(void *a0); -extern void func_80161094(s32 a0); -extern void func_801610FC(void); -extern void func_801483E8(void); -extern s32 func_80161A60(s32 a0); -extern void func_8016130C(void *a0, s32 a1); -extern void func_80161240(void *a0); -extern void func_80161374(void *a0, s32 a1); -extern void func_80161278(void *a0); -extern s32 func_801612B8(void * a0, s32 a1); -extern void func_8016163C(void *a0, s32 a1); -extern void func_80161774(void *a0, s32 a1); -extern s32 func_8016197C(s32 a0, s32 a1); -extern s32 func_80161488(void *a0); -extern void func_80161888(void *a0, s32 a1); -extern void func_801614E4(void *a0); -extern void func_8016191C(void *a0, s32 a1); -extern void func_8016151C(void *a0); -extern void func_80161554(void *a0); -extern s32 func_801615C4(void * arg0, s32 arg1); -extern s32 func_801619A4(s32 *a0); -extern s32 func_80161A00(s32 a0); -extern s32 func_80161A30(s32 a0); -extern int func_801497A8(void); -extern int func_80161BE0(void *param_1); -extern u16 D_8018E044[]; -extern void func_80161C98(int param_1, u32 param_2); -extern void func_80161E08(s32); -extern s32 func_80162438(s32); -extern s32 D_800AE6A8; -extern void func_800D1734(void *); -extern s32 D_8018E0A8; -extern void func_80161D88(void); -extern void func_80161E08(s32 param_1); -extern int func_800291DC(int); -extern int func_800D0E30(void *a0); -extern int func_801620C4(void); -extern s32 func_800D0D7C(s32, s32); -extern int D_801E96F0[]; -extern void func_8016216C(void); -extern u8 D_80078EB0; -extern u8 D_80078EB1; -extern s32 func_801621CC(s32 arg0); -extern void func_801622C4(void); -extern void (*D_8018E0CC[])(void); -extern void func_80162330(void *a0); -extern void func_8014706C(void *a0); -extern s32 func_8016236C(u8 *a0); -extern void func_800D0C48(s32 a0); -extern s32 func_801623B8(s32 *a0); -extern s32 func_800167F0(s32 a0); -extern s32 func_80162414(void); -extern s32 func_80162438(s32 _unused0); -extern int func_801626B8(void); -extern void func_80162714(void); -extern int D_801E9748[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018E114[])(void); -extern void func_80162834(void *a0); -extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80162968(s32 a0); -extern s32 func_80162ACC(u8 *a0); -extern u8 D_800B5CB8; -extern s32 D_8018E104; -extern s32 D_800B5CBC; -extern u8 D_800B5CDF; -extern s32 D_800B5CEC; -extern void func_80162870(s32 param_1); -extern void func_801628F4(s32 *a0); -extern void func_80162968(s32 param_1); -extern void func_80162AC0(s32 *a0, s8 a1); -extern s32 func_80162AE0(u8 *a0); -extern void func_80162AF4(void); -extern void func_80162CC4(void); -extern s32 D_80126D40; -extern void func_80162B1C(void); -extern void func_80162D28(s32 *a0); -extern void func_80162D88(s32 *a0); -extern void func_80162DE8(s32 *a0); -extern void func_80162E48(s32 *a0); -extern void func_80162EA8(s32 *a0); -extern void func_80162F60(s32 arg0, s32 arg1); -extern void func_80162F80(s32 arg0, s32 arg1); -extern void func_80162FA0(s32 arg0, s32 arg1); -extern void func_80162F08(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80162FC0(s32 *a0); -extern void func_80162FF4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801630C4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163194(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg4); -extern void func_8016325C(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163234(s32 a0); -extern s32 D_80115100; -extern s32 func_801632E0(void); -extern s32 D_80115200; -extern s32 func_801632F0(void); -extern u16 D_80126B18[]; -extern void func_80163328(void); -extern s32 func_801633A8(void); -extern s32 func_80163408(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void func_80163534(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, u16 * a5); -extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); -extern char D_801E8DBC[8]; -extern void *memcpy(void *dst, const void *src, unsigned int n); -extern void func_801634D8(s32 param_1, u16 param_2, u16 param_3, s32 param_4, u16 param_5); -extern void func_80157158(); -extern void func_80163664(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801636D0(s32 a0, s32 a1); -extern s32 func_8016380C(struct S8016380C *a0, s32 a1); -extern void *memcpy(void *dst, void *src, s32 n); -extern s32 func_801638A0(u8 *a0, s32 a1); -extern s32 func_80163950(s32 a0); -extern void (*D_8018E11C[])(void); -extern void func_80163A58(void *a0); -extern void func_80163A94(s32 param_1); -extern void func_80163C2C(s32 param_1); -extern void func_80163EC8(s32 param_1); -extern void func_80164270(s32 *a0); -extern void func_80164418(void); -extern void func_80163764(s32 a0); -extern void func_801642AC(s32 a0); -extern void func_8016432C(s32 a0); -extern void func_80164410(void); -extern s32 func_80012DBC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164530(s32 arg0); -extern void (*D_8018E170[])(void); -extern void func_80164744(s32 param_1); -extern void func_8001C810(s32 a0, s32 a1); -extern void func_80164A74(s32 *a0); -extern void func_80164930(s32 a); -extern u16 D_800DF2E0; -extern s32 D_8018E138; -extern s16 D_8018E16C; -extern s16 D_8018E16A; -extern s16 D_8018E168; -extern void func_801647A4(int param_1); -extern void func_80164ACC(); -extern void func_80164864(void *a0); -extern void func_80164930(s32 param_1); -extern s32 func_8014C308(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164ACC(s32 a0); -extern void (*D_8018E17C[])(void); -extern void func_80164BA0(void *a0); -extern void func_8001CD50(s32 a0, s32 a1); -extern void func_800233CC(void *, unsigned short); -extern void func_80164DD0(s32 a0); -extern void func_80164DB0(void); -extern u8 D_801E97A8; -extern u8 D_801E97A9; -extern u8 D_801E97AA; -extern u8 D_801E97AB; -extern u8 D_801E97AC; -extern u8 D_801E97AD; -extern u8 D_801E97AE; -extern u8 D_801E97AF; -extern void func_80164BDC(s32 param_1); -extern void func_80164E40(void); -extern void func_80164CD4(u8 *a0); -extern void func_80164D4C(void *arg0); -extern void (*D_8018E18C[])(void); -extern void func_80164EA4(void *a0); -extern void func_80165124(void *a0); -extern void func_80164EE0(int param_1); -extern s32 func_80165140(s32 a0); -extern void func_801651B8(void *a0); -extern void func_80164F44(void *arg0); -extern void func_80165024(void *a0); -extern void func_80165064(s32 *a0); -extern void func_801650C4(s32 *a0); -extern s32 func_80165140(s32 param_1); -extern s32 func_80165240(s32 a0, s32 a1, s32 a2); -extern s32 D_801E97E8; -extern void func_801651B8(void * param_1); -extern u8 D_80126CF8; -extern void func_8016533C(void); -extern void func_801653F4(s32 a0); -extern void func_80165580(s32 a0); -extern void func_80165374(s32 a0); -extern void func_80165580(s32 _arg0); -extern void func_801653B8(s32 *a0); -extern s32 func_80165624(s32 a0); -extern u8 D_80078EC5; -extern void (*D_8018E1D0[])(void); -extern u8 func_80165658(s32 a0, s32 a1); -extern void func_800CAE0C(s32 a0); -extern void func_801654A8(s32 arg0); -extern void func_80165B28(void *a0); -extern void func_801655E4(s32 a0); -extern u8 D_8018E24C[]; -extern s32 D_8018E26C[]; -extern u8 D_8018E2E8[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018E308[]; -extern u8 D_8018E328[]; -extern void func_800CAF6C(void); -extern void func_80165770(void); -extern void func_801657D8(void); -extern u8 D_80078EC3; -extern void func_801657A0(void); -extern s32 D_80078EA0; -extern s32 D_80078EA8; -extern u8 D_80078EBB; -extern s32 D_80078ED4; -extern s32 D_80078ED8; -extern s32 D_80078EDC; -extern u8 D_80078EE0; -extern void func_80165874(void); -extern s8 D_80078EC4; -extern void func_801658EC(void); -extern s32 func_80165900(void); -extern s32 func_80165910(void); -extern s32 D_8012672C; -extern s32 D_8012811C; -extern s32 D_80126B08; -extern void func_80165938(void); -extern void func_80165958(void); -extern s32 func_80165978(void); -extern void func_80165988(void); -extern s32 func_801659A8(void); -extern void func_801659B8(void); -extern s32 func_801659CC(void); -extern void func_80165A18(void); -extern s32 func_80165A50(s32 _arg0); -extern void func_80165AC8(void); -extern void func_80165A78(s32 arg0); -extern void (*D_8018E3C4[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_8018E440[])(void); -extern void func_80165BB4(u8 *a0); -extern void func_80165B6C(u8 *a0); -extern void func_80165C58(s32 arg0); -extern void func_80165BFC(void *a0); -extern void func_80165C78(void); -extern M2C_UNK D_801E8DCC; -extern void func_80165E2C(u16 *arg0); -extern s32 func_80165FA4(s32 a0, s32 a1, s32 a2); -extern s32 func_80167DBC(s32 a0, s32 a1, s32 a2); -extern s32 func_80167AE0(s32 a0, s32 a1, s32 a2); -extern void func_80165E90(void); -extern void func_80020F34(s32 a0, s32 a1); -extern s32 func_80165FA4(s32 arg0, s32 arg1, s32 arg2); -extern void (*D_8018E44C[])(void); -extern void func_80166018(void *a0); -extern void func_80166054(s32 arg0); -extern void func_801661CC(s32 param_1); -extern void func_80166244(void* arg0); -extern void func_8016629C(void *a0); -extern void func_801662F4(void *a0); -extern void func_8016634C(void *a0); -extern void func_801663A4(void *a0); -extern void (*D_8018E454[])(void); -extern void func_801663FC(void *a0); -extern u8 D_800D387C[]; -extern u8 D_800D3888[]; -extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); -extern void func_800D1FC8(s32 a0, s32 a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern void func_801665B4(); -extern void func_80146C3C(); -extern void func_80166438(u8 *a0); -extern s32 func_80128ED8(s32 param_1, s32 *param_2); -extern void func_800D22E4(s32 a0); -extern void func_801665B4(s32 *a0); -extern void (*D_8018E51C[])(void); -extern void func_80166618(void *a0); -extern void (*D_8018E52C[])(void); -extern void func_80166654(void *a0); -extern s32 func_80166690(s32 param_1, s32 param_2); -extern s32 func_80166994(); -extern s32 func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern s32 func_80167540(s32 arg0); -extern void (*D_8018E53C[])(void); -extern void func_801678B4(void *a0); -extern void RotMatrixYXZ(void *a0, void *a1); -extern void func_80048EAC(void *a0, void *a1); -extern s32 func_801670E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80146C3C(void); -extern void func_801678F0(s32 a0); -extern void (*D_8018E548[])(void); -extern void func_80167A9C(void *a0); -extern void func_80167AD8(void); -extern s32 func_80167AE0(s32 param_1, s32 param_2, s32 param_3); -extern void func_80168070(s32 a0, s16 *a1, s16 *a2, void *a3); -extern u8 D_8018E4A8[]; -extern u8 D_8018E4BC[]; -extern s32 func_80167DBC(s32 arg0, s32 arg1, s32 arg2); -extern void func_800D20C0(void *a0, void *a1, s32 a2); -extern void func_80017E68(void *a0, void *a1); -extern void func_800D23D0(void *a0); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern s32 D_801269A4; -extern s32 D_801269A8; -extern s32 D_801269AC; -extern void func_80168070(s32 param_1, s16 *param_2, s16 *param_3, void *param_4); -extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_8016829C(s32 a0); -extern s32 func_80166690(s32 a0, s32 a1); -extern void func_80168328(s32 arg0); -extern void func_801683D8(s32 a0); -extern void func_801684B4(s32 a0); -extern void func_80168540(s32 a0); -extern void func_801685EC(s32 a0); -extern void func_80168640(s32 a0); -extern s32 RotMatrixX(s32 a0, void *a1); -extern void func_80168664(void *arg0); -extern void (*D_8018E560[])(void); -extern void func_80168744(void *a0); -extern void func_80168BDC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801687CC(s32 a0); -extern void func_80168780(s32 a0); -extern void func_80168828(void); -extern void func_801687CC(s32 param_1); -extern void func_80168828(); -extern void (*D_8018E568[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_8018E570[])(void); -extern void func_80168AA8(void *a0); -extern void func_80168AE4(s32 a0); -extern void func_800D2318(void); -extern void func_80168BDC(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void (*D_8018E578[])(void); -extern void func_80168D58(void *a0); -extern void func_80168D94(int a0); -extern void func_80168F40(); -extern void func_80168EC4(s32 a0); -extern void func_80168F40(void *arg0); -extern void (*D_8018E580[])(void); -extern void func_8016901C(void *a0); -extern void func_80169058(s32 a0); -extern s32 func_80169228(void); -extern void func_801691B8(void *a0); -extern void (*D_8018E588[])(void); -extern void func_801693CC(void *a0); -extern void func_80169584(s32 param_1); -extern void func_80169408(s32 a0); -extern void func_8016951C(int param_1); -extern s32 func_80017758(void *a0, void *a1); -extern s32 func_80017DC4(void *a0, void *a1); -extern void func_801696D8(s32 a0, s32 a1); -extern void (*D_8018E590[])(void); -extern void func_80169830(void *a0); -extern void func_8016986C(s32 a0); -extern s32 func_80169A4C(s32 a0, s32 a1); -extern void func_801699D0(void *arg0); -extern void (*D_8018E644[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_8018E64C[])(void); -extern void func_80169F00(void *a0); -extern char D_8018E5FC[]; -extern char D_8018E5BC[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8018E684[])(void); -extern void func_8016A020(void *a0); -extern void func_8016A05C(void *a0); -extern void func_8016A290(s32 a, void *b, void *c); -extern void func_8016A08C(s32 param_1); -extern void func_8016A1CC(int param_1); -extern void func_8016A290(s32 param_1, void *param_2, void *param_3); -extern void (*D_8018E690[])(void); -extern void func_8016A700(void *a0); -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_80126B62; -extern u16 D_80126B66; -extern void func_8016AA50(s32 param_1, s32 param_2); -extern void (*D_8018E6D8[])(void); -extern void func_8016AB30(void *a0); -extern void func_8016B234(void); -extern void func_8016AFB0(s32 a0); -extern void func_8016B114(void *arg0); -extern s32 func_8016B448(s32, s32); -extern s32 func_8016BA48(s32 a0); -extern void func_8016B3F4(s32 a0); -extern s32 func_8016B428(s32 a0); -extern void func_8016B984(void *a0); -extern s32 func_8016B448(s32 arg0, s32 arg1); -extern void (*D_8018E754[])(void); -extern void func_8016B4BC(void *a0); -extern int func_8016B9F8(int); -extern int func_8016B834(int, int); -extern void func_8016B91C(int); -extern int D_801E9B08; -extern void func_8016B4F8(int param_1); -extern s32 func_8016B9F8(s32 param_1); -extern void func_8016B6BC(s32, s32, s32, s32); -extern void func_8016B91C(s32); -extern s16 D_8018E748[]; -extern void func_8016B5C0(s32 param_1); -extern void func_8001CD9C(int, void *); -extern int *D_8018E78C[]; -extern unsigned short D_8018E794[]; -extern unsigned short D_8018E79C[]; -extern unsigned char D_801E9B10[]; -extern int func_8016B834(int param_1, int param_2); -extern void func_8016B964(SrcB964 *a0, DstB964 *a1); -extern void func_8016B91C(s32 arg0); -extern s32 D_801E9B08; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8018E7A4[])(void); -extern void func_8016BBA4(void *a0); -extern s32 func_8016BBE0(s32 param_1); -extern void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3); -extern M2C_UNK D_801E9C44; -extern M2C_UNK D_801E9C48; -extern void func_8016BCC0(void *arg0); -extern s32 func_8016BD78(s32 param_1); -extern s32 func_8016BEA0(s32 param_1); -extern void func_8016BF34(void *a0); -extern void func_8016BFD0(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern s32 D_801E9BD0; -extern void (*D_8018E7D4[])(void); -extern void func_8016C14C(void *a0); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801E9C4C[]; -extern u8 D_801E9C54[]; -extern u8 D_801E9C04[]; -extern void func_8016C2C4(s32 param); -extern s32 func_8016C49C(s32 param_1_arg); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_8016C74C(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern short func_8016CF04(s32 a0, s32 a1); -extern void func_8016C83C(s32 a0); -extern void (*D_8018E7DC[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_8018E7F8[])(void); -extern void func_8016D19C(void *a0); -extern void (*D_8018E800[])(void); -extern void func_8016D428(void *a0); -extern void func_8016D464(u8 *a0); -extern void func_8016D4DC(s32 a0); -extern void func_8016D5EC(s32 *a0); -extern short func_8016CBC0(void); -extern void func_8016D64C(int param_1); -extern void func_8016D778(s32 a0); -extern void func_800D20C0(); -extern void func_8016D848(s32 *a0); -extern void func_8016D984(s32 *a0); -extern void func_8016DBD8(u8 *a0); -extern void (*D_8018E868[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_8018E80C; -extern u8 D_8018E818; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void (*D_8018E89C[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8018E8A4[])(void); -extern void func_8016DF20(void *a0); -extern void func_8016E3CC(s32 a0); -extern void func_8016E1CC(s32 a0); -extern void func_8016E26C(s32 *a0); -extern void func_8016E2E8(void *a0); -extern void func_8016E460(void *a0, void *a1); -extern void func_8016E358(void *a0); -extern void func_8016E460(void *arg0, void *arg1); -extern void (*D_8018E8F8[])(void); -extern void func_8016E5B8(void *a0); -extern void func_8016E5F4(s32 arg0); -extern void func_8016E778(); -extern void func_8016E688(void *a0); -extern void func_8016E6E4(s32 a0); -extern void func_8016E728(u8 *a0); -extern void func_8016E7C8(int param_1, short *p1, unsigned int *p2); -extern void func_8016E778(int param_1); -extern void func_8016E7C8(int param_1, short *param_2, unsigned int *param_3); -extern s32 D_80115218; -extern void func_8016E8F0(void); -extern void func_8016E918(short param_1, short param_2); -extern s32 func_8016E95C(); -extern u16 D_8018E92C[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_8018E91C[]; -extern void func_8016EB3C(s32 p); -extern void func_8016EBA8(u8 *param_1); -extern void func_8016ED6C(void); -extern s32 D_80126D70; -extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); -extern void func_8016ED8C(s32 a0, s32 a1, s32 a2); -extern void func_8016EE40(s32 a0, s32 a1, s32 a2); -extern void func_8016EDBC(s32 a0, s32 a1, s32 a2); -extern void func_8016EE94(); -extern void func_8016EDEC(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_8016EF78(s32 a0); -extern void func_8016EE40(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_801726D0(void *a0); -extern s32 D_80126D50; -extern u8 D_80126D6C; -extern u8 D_80126D6D; -extern u8 D_80126D6E; -extern s32 D_80126D5C; -extern s32 D_80126D60; -extern s16 D_80126D64; -extern s16 D_80126D66; -extern s16 D_80126D68; -extern s16 D_80126D6A; -extern u8 D_80126D1A; -extern s32 D_80127058; -extern s32 D_8012705C; -extern s32 D_80127060; -extern s32 D_80127064; -extern s32 D_80127068; -extern s32 D_8012706C; -extern s32 D_80127070; -extern s32 D_80127074; -extern s16 D_80126D20; -extern void func_8016EE94(s32 a0, s32 a1); -extern s32 func_8016EFC8(s32); -extern s32 func_8016EFA8(s32 a0); -extern void func_8016F094(s32 *a0); -extern s32 func_8016F0AC(); -extern s32 D_8018E948; -extern void func_8016F250(void); -extern void func_8016F288(void); -extern void func_8016F2A8(void); -extern void func_8016F2C8(void); -extern void func_8016F2EC(void); -extern void func_8016F30C(void); -extern void func_8016F330(void); -extern void func_8016F350(void); -extern void func_8016F374(void); -extern void func_8016F388(void); -extern void func_8016F398(void); -extern s32 func_8016F44C(s32 a0); -extern void func_8016F470(s32 a0); -extern s32 func_8016F410(s32 a0); -extern void func_80175414(s32 _arg0); -extern s32 func_8016F4C4(s32); -extern s32 func_8016F494(s32 a0); -extern void func_8016F0E4(void); -extern s32 func_8016F4C4(s32 param_1); -extern void func_8016F4F4(void); -extern void func_801719A4(int a0, int a1); -extern void func_800D1724(s32 a0); -extern void func_80171928(void *a0); -extern void *D_8011F738; -extern void func_8016F4FC(void *a0); -extern void func_8014708C(void *a0); -extern void func_8016F540(void *a0); -extern void func_8016F578(s32 *a0); -extern void func_8016F5B0(void *a0); -extern void func_80147060(u8 *a0); -extern void func_8016F5E0(u8 *a0); -extern void func_8016F610(void *a0); -extern void func_8016F648(void *a0); -extern void func_8016F680(void *a0); -extern void func_8016F6B0(void *a0); -extern void (*D_8018E9C0[])(void); -extern void func_8016F6E0(void *a0); -extern s32 func_80171990(u8 *a0); -extern void func_8016F764(void *a0); -extern void func_8016F71C(u8 *a0); -extern void (*D_8018E9C8[])(void); -extern void func_8016F798(void *a0); -extern void func_8016F804(void *a0); -extern void func_8016F7D4(u8 *a0); -extern void func_80171928(void *); -extern void (*D_8018E9D0[])(void); -extern void func_8016F834(void *a0); -extern void func_8016F8AC(u8 *a0); -extern void func_8016F870(u8 *a0); -extern void func_80172358(u8 *a0, u8 *a1); -extern void (*D_8018E9D8[])(void); -extern void func_8016F8E4(void *a0); -extern void func_8016F95C(void *a0); -extern void func_8016F920(u8 *a0); -extern s32 func_80171CC4(void *a0, void *a1); -extern s32 func_80171D1C(void *a0, void *a1, s32 a2); -extern u16 D_8011F73E; -extern void (*D_8018E9E0[])(void); -extern void func_8016F9C4(void *a0); -extern void func_80171B44(s32 *a0); -extern void func_8016FA44(s32 a0); -extern void func_8016FA00(s32 a0); -extern s32 func_80171C64(s32 a0, s32 a1); -extern void (*D_8018E9E8[])(void); -extern void func_8016FA84(void *a0); -extern void func_8016FB10(void *a0); -extern void func_8016FAC0(u8 *a0); -extern void func_8016FB50(void *a0); -extern void (*D_8018E9F4[])(void); -extern void func_8016FB7C(void *a0); -extern void func_8016FC24(); -extern void func_8016FBB8(s32 a0); -extern s32 func_80171B4C(s32 a0, s32 a1); -extern void func_8016FC24(s32 a0); -extern void func_8016FC64(void *a0); -extern void (*D_8018EA00[])(void); -extern void func_8016FC90(void *a0); -extern void func_8016FD08(u8 *a0); -extern void func_8016FCCC(u8 *a0); -extern s32 func_80172658(s32 *a0); -extern void func_8016FD08(u8 *s0); -extern void func_8016FD7C(s32 *a0); -extern void (*D_8018EA0C[])(void); -extern void func_8016FDB4(void *a0); -extern void func_8016FE2C(u8 *a0); -extern void func_8016FDF0(u8 *a0); -extern void func_8016FE2C(u8 * a0); -extern s32 func_8016FE78(s32 *a0); -extern s32 func_80172664(s32 *a0); -extern void func_8016FED0(s32 *a0); -extern void (*D_8018EA1C[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_8018EA2C[])(void); -extern void func_8016FFDC(void *a0); -extern void func_80170068(u8 *a0); -extern void func_80170018(u8 *a0); -extern void func_801700B8(u8 *a0); -extern void func_80170100(u8 *a0); -extern void (*D_8018EA34[])(void); -extern void func_80170150(void *a0); -extern void func_801701C8(u8 *a0); -extern void func_8017018C(u8 *a0); -extern void func_801701C8(u8 * a0); -extern void (*D_8018EA3C[])(void); -extern void func_80170240(void *a0); -extern void func_801702B8(s32 a0); -extern void func_8017027C(u8 *a0); -extern s16 func_80171AB0(s32 a0, void *a1); -extern void (*D_8018EA44[])(void); -extern void func_801702FC(void *a0); -extern void func_80170374(u8 *a0); -extern void func_80170338(u8 *a0); -extern s32 func_8014C168(s32 *a0, s32 a1); -extern void func_80170374(u8 * a0); -extern void (*D_8018EA4C[])(void); -extern void func_801703E0(void *a0); -extern void func_8017044C(u8 *a0); -extern void func_8017041C(u8 *a0); -extern void func_8017044C(u8 * a0); -extern void (*D_8018EA54[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_8018EA5C[])(void); -extern void func_80170548(void *a0); -extern void func_801705C0(u8 *a0); -extern void func_80170584(u8 *a0); -extern void func_801705C0(u8 * a0); -extern void (*D_8018EA64[])(void); -extern void func_801705F8(void *a0); -extern void func_80170670(void *a0); -extern void func_80170634(u8 *a0); -extern void func_8012A568(void (*a0)(void)); -extern void (*D_8018EA6C[])(void); -extern void func_801706AC(void *a0); -extern void func_80170718(void *a0); -extern void func_801706E8(u8 *a0); -extern void func_80129FF4(void); -extern void (*D_8018EA74[])(void); -extern void func_80170748(void *a0); -extern void func_801707D4(void *a0); -extern void func_80170784(u8 *a0); -extern s32 func_80174ED4(void); -extern void (*D_8018EA7C[])(void); -extern void func_80170810(void *a0); -extern void func_801708B0(void *a0); -extern u8 D_800D5DA8; -extern void func_8017084C(s32 a0); -extern u8 D_800D5A34[]; -extern void func_80170AD8(void *a0); -extern void func_80171904(s32 a0); -extern void func_80170B48(int a0); -extern void func_80170928(void); -extern u8 D_800D59EC[]; -extern void func_80170970(void); -extern u8 D_800D599C[]; -extern void func_801709B8(void); -extern u8 D_800D5934[]; -extern void func_80170A00(void); -extern void func_80170A48(void); -extern u8 D_800D5DC0[]; -extern void func_80170A90(void); -extern void (*D_8018EA84[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_8018EA8C[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8018EA94[])(void); -extern void func_80170C74(void *a0); -extern s32 func_8017197C(u8 *a0); -extern void func_80170CF0(void *a0); -extern void func_80170CB0(u8 *a0); -extern void (*D_8018EA9C[])(void); -extern void func_80170D68(void *a0); -extern void func_80170DE0(u8 *a0); -extern void func_80170DA4(u8 *a0); -extern s32 D_8011F73C; -extern s32 D_8011F740; -extern void func_801718AC(void *a0); -extern void func_80170DE0(u8 * _arg0); -extern void (*D_8018EAA4[])(void); -extern void func_80170E34(void *a0); -extern void func_80170EAC(u8 *a0); -extern void func_80170E70(u8 *a0); -extern int func_800D0F8C(int a0); -extern void func_80170EAC(u8 * _arg0); -extern void (*D_8018EAAC[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8018EAB4[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_8018EABC[])(void); -extern void func_80171064(void *a0); -extern void func_801710DC(u8 *a0); -extern void func_801710A0(u8 *a0); -extern u16 D_8011F73A; -extern void func_801710DC(u8 * arg0); -extern void (*D_8018EAC4[])(void); -extern void func_80171120(void *a0); -extern void func_8017118C(u8 *a0); -extern void func_8017115C(u8 *a0); -extern void func_80142454(s32 a0); -extern void func_8017118C(u8 * a0); -extern void (*D_8018EACC[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8018EAD4[])(void); -extern void func_80171260(void *a0); -extern s32 func_80012F74(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80171384(void *a0); -extern void (*D_8018EADC[])(void); -extern void func_801714E4(void *a0); -extern void func_8017162C(void *a0); -extern void func_80171520(s32 a0); -extern s32 func_801716AC(s32 a0, void *a1, s32 *a2); -extern s32 func_80012FC8(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_800A5E94; -extern u8 D_800A5E95; -extern u8 D_800A5E96; -extern s32 func_801716AC(s32 a0, void * a1, s32 * a2); -extern int func_800D0FE0(int a0); -extern void func_801717A0(void *a0); -extern void func_8013E588(void *a0); -extern void func_801717F4(void *a0); -extern void func_80171824(void *a0); -extern void func_80171854(void *a0); -extern void func_80171884(void); -extern void func_80171A1C(u8 *a0); -extern void func_80171928(void * a0); -extern void func_8017196C(s32 *a0, s8 a1); -extern void func_80171A04(s32 *a0); -extern void func_80171A10(s32 *a0); -extern void func_80171A34(s32 *a0, s8 a1); -extern s32 func_80171A44(u8 *a0); -extern s32 func_80171A58(u8 *a0); -extern s32 func_80171A6C(u8 *a0); -extern void func_80171A80(s32 *a0, s32 a1); -extern s32 func_80171A88(s32 a0); -extern s16 func_80171AB0(s32 param_1, void * _arg1); -extern void func_80171B10(void *a0); -extern void func_80171EC8(s32 a0); -extern s32 func_80171C64(s32 param_1, s32 param_2); -extern s32 func_80171D78(s32 a0, s32 a1); -extern int func_8017250C(short *a0, short *a1); -extern s32 func_80171CC4(void * a0, void * a1); -extern s32 func_80171FFC(short *a0, short *a1, s32 a2); -extern s32 func_80171D1C(void * a0, void * a1, s32 a2); -extern s32 func_8017248C(s32 a0, s32 a1); -extern s32 func_80171E08(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_80047948(s32 a0); -extern s32 func_8004787C(s32 a0); -extern void func_80172170(s32 a0, s32 a1); -extern s32 func_8017209C(void *arg0, void *arg1, s32 arg2, s32 arg3); -extern void func_801722CC(s32 *a0); -extern void func_80172304(s32 *a0); -extern void func_80172310(u8 *a0); -extern void func_801723C4(s32 param_1, s32 param_2); -extern void func_80161C24(s32, s32); -extern void func_80172414(s32 a0); -extern s32 func_801724EC(s32 a0); -extern s32 func_8017248C(s32 arg0, s32 arg1); -extern s32 func_80013450(s32); -extern s32 func_80172560(u8 *a0, u8 *a1); -extern s32 func_8017261C(u8 *a0); -extern s32 func_80172644(u8 *a0); -extern s32 func_80172670(s32 *a0); -extern s32 func_80172688(s32 *a0); -extern s32 func_80172694(s32 *a0); -extern s32 func_801726A0(s32 *a0); -extern s32 func_801726AC(s32 *a0); -extern s32 func_801726B8(s32 *a0); -extern s32 func_801726C4(s32 *a0); -extern s32 func_80172760(s32 a0); -extern s32 func_80174650(s32); -extern void (*D_80127088)(void); -extern s32 D_801270BC; -extern void func_801726D0(void * _arg0); -extern void func_80172710(void); -extern void func_80174684(void *); -extern void func_80172738(void); -extern s16 D_80126B30; -extern s32 func_801727D0(void *a0); -extern void func_80172780(void *a0); -extern void func_80172844(u8 *a0); -extern void func_8017280C(u8 *a0); -extern void func_8017288C(void); -extern s32 func_801728E4(void *a0); -extern void func_80172894(void *a0); -extern void func_80172958(u8 *a0); -extern void func_80172920(u8 *a0); -extern s16 D_80126B36; -extern void func_80172958(u8 * a0); -extern void func_801729A8(void); -extern s32 func_801729F0(void *a0); -extern s16 D_80126B34; -extern s16 D_80126B32; -extern void func_801729B0(s32 a0); -extern void func_80172A8C(void *a0); -extern void func_80172A2C(int param_1); -extern void func_80172ACC(u8 *a0); -extern void func_80172B0C(void); -extern s32 func_80172B44(void *a0); -extern void func_80172B14(s16 a0); -extern s32 D_801150F8; -extern void func_80172BC8(void *a0); -extern void func_80172B80(u8 *a0); -extern void func_80172C48(void); -extern void (*D_8018EB20[])(void); -extern void func_80172CA0(void *a0); -extern void func_80172D14(u8 *a0); -extern void func_80172CDC(u8 *a0); -extern void func_80172D14(u8 * a0); -extern void func_80172D60(void); -extern s32 D_80127508; -extern s32 func_80172DAC(void *a0); -extern void func_80172D68(s32 a0); -extern void func_80172E20(u8 *a0); -extern void func_80172DE8(u8 *a0); -extern void func_80172E20(u8 * a0); -extern void func_80172E8C(void); -extern void func_8017303C(void *); -extern void func_80172E94(void); -extern void func_80172ED4(void); -extern void func_80172EFC(void); -extern void func_80172F24(void); -extern u8 D_800D47F4[]; -extern void func_80172F4C(void); -extern void func_80172F9C(void); -extern u8 D_800D5C6C[]; -extern void func_80172FEC(void); -extern s32 func_80173078(void *a0); -extern void func_8017303C(void * a0); -extern void func_801730FC(struct S801730FC *a0); -extern void func_801730B4(s32 a0); -extern void func_8017316C(void); -extern s32 func_8017319C(void *a0); -extern void func_80173174(void); -extern u8 D_800D5AA0[]; -extern void func_80173220(void *a0); -extern void func_801731D8(s32 *a0); -extern M2C_UNK D_8018EAE4; -extern void func_80173220(void * arg0); -extern void func_80173294(void); -extern void func_801732C4(); -extern void func_8017329C(void); -extern void func_801732C4(s32 *a0); -extern void func_8017331C(); -extern void func_801732F4(void); -extern void func_8017331C(s32 *a0); -extern void func_80173374(); -extern void func_8017334C(void); -extern void func_80173374(s32 *a0); -extern void func_801733A4(void); -extern void func_801733CC(s32 a0); -extern void func_801734BC(s32 a0, s32 a1); -extern s16 D_80126B3E; -extern void func_80173460(s32 a0, s32 a1); -extern void func_801734BC(s32 arg0, s32 _unused1); -extern void (*D_8018EB50[])(void); -extern void func_80173544(void *a0); -extern void func_801735B8(u8 *a0); -extern void func_80173580(u8 *a0); -extern s16 D_80126B40; -extern void func_801735EC(void *a0); -extern void func_80173648(u8 *a0); -extern void func_801736A8(void); -extern s32 func_8014C118(void *a0, s32 a1, s32 a2); -extern s32 func_801736FC(void *a0); -extern void func_801736B0(s32 a0, s32 a1); -extern void func_80173770(u8 *a0); -extern void func_80173738(u8 *a0); -extern void func_801723C4(s32 a0, s32 a1); -extern void func_801737B0(void); -extern s32 func_801737E8(void *a0); -extern void func_801737B8(s16 a0); -extern void func_8017385C(u8 *a0); -extern void func_80173824(u8 *a0); -extern void func_801738D4(void); -extern s32 func_8017390C(void *a0); -extern void func_801738DC(s16 a0); -extern void func_80173980(u8 *a0); -extern void func_80173948(u8 *a0); -extern void func_801739D8(u8 *a0); -extern void func_80173A20(void); -extern s32 D_8012750C; -extern void func_80173A60(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80173A28(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void (*D_8018EB8C[])(void); -extern void func_80173B4C(void *a0); -extern void func_80173BC0(u8 *a0); -extern void func_80173B88(u8 *a0); -extern void func_80173C64(u8 *a0); -extern void func_80173E1C(s32 a0); -extern s16 D_80126938; -extern s16 D_80126B3A; -extern void func_800D128C(s32, s32); -extern void func_80174158(s32 a0); -extern void func_8002A088(s32); -extern void func_8002A2D4(s32); -extern void func_8002A544(s32); -extern void func_8002A7B4(s32); -extern s32 func_80174188(s32 a0); -extern void func_801741A8(s32 a0); -extern s32 func_800D0EC4(void); -extern void func_800D0F0C(s32, s32); -extern void func_80145EE8(s32); -extern void func_80173EF8(void *param_1); -extern s32 func_8014BCEC(s32, s32); -extern void func_801741A8(s32 _arg0); -extern s16 D_80126B3C; -extern s16 D_8011F9C8; -extern void func_801741EC(u8 *a0); -extern void func_80174274(void); -extern s32 func_801742A4(void *a0); -extern void func_8017427C(void); -extern void func_80174318(u8 *a0); -extern void func_801742E0(u8 *a0); -extern void func_80174354(void); -extern s32 func_80174384(void *a0); -extern void func_8017435C(void); -extern void func_801743F0(u8 *a0); -extern void func_801743C0(u8 *a0); -extern void func_801743F0(u8 * a0); -extern void func_80174430(void); -extern s32 func_80174474(void *a0); -extern void func_80174438(s32 a0); -extern void func_801744E0(u8 *a0); -extern void func_801744B0(u8 *a0); -extern void func_80174524(void); -extern void func_80174554(); -extern void func_8017452C(void); -extern void func_80174554(s32 arg0); -extern void func_801745AC(); -extern void func_80174584(void); -extern void func_801745AC(s32 *a0); -extern void func_80174604(void); -extern void func_801745DC(void); -extern void func_80174630(void); -extern s32 func_80174650(s32 _arg0); -extern void func_80174674(void); -extern void func_801746A4(void); -extern s32 func_800CF8CC(void); -extern void func_80174714(void); -extern s32 func_80174754(void); -extern s16 func_80174764(void); -extern s16 func_80174774(void); -extern s32 func_801747CC(void *a0); -extern void func_80174784(void); -extern s32 func_801747AC(s32 a0); -extern s32 func_80174808(u8 *a0); -extern void func_8017481C(void); -extern s32 func_80174888(void *a0); -extern void func_80174824(void); -extern void func_8017484C(s32 a0); -extern void func_801748C4(s32 a0); -extern void func_801748E4(void); -extern void func_8012A018(s32 a, s32 b); -extern s32 func_8017496C(void *a0); -extern s32 D_80126954; -extern s32 D_80126950; -extern s32 D_8012695C; -extern s16 D_80126968; -extern s16 D_8012696A; -extern s16 D_8012696C; -extern s16 D_80126976; -extern s16 D_80126978; -extern s16 D_8012697A; -extern void func_801748EC(void); -extern s32 func_801749C8(); -extern s32 func_801749A8(s32 a0); -extern void func_80174BBC(void *a0); -extern void func_8012A0E0(void); -extern void func_80174BF4(void *a0); -extern void (*D_8018EBE4[])(); -extern void func_80174BF4(void * arg0); -extern s32 func_80174CB0(s32, s32); -extern s32 func_80174C60(s32 a0); -extern void func_80174C80(s32 a0); -extern s32 D_8012697C; -extern u16 D_80126980; -extern s32 func_80174F28(void *a0); -extern void func_80174E9C(s32 a0); -extern void func_80174EF0(s32 a0, s16 a1); -extern s32 func_80175014(u8 *a0, u8 *a1, s32 a2); -extern void func_80174F64(u8 *a0); -extern void func_80174FBC(u8 *a0); -extern s32 func_8017509C(u8 *a0, s32 a1, u8 *a2, u8 *a3); -extern void func_80175184(s32 *a0); -extern void func_80175114(s32 *a0); -extern void func_80175184(); -extern void func_80175150(s32 *a0); -extern void (*D_8018EBF4[])(void*); -extern s32 func_80175268(s32); -extern void func_80175184(s32* arg0); -extern s32 func_80175218(void *a0); -extern void func_801751D8(void *a0); -extern void (*D_8018EBFC[])(s32); -extern s32 func_80175218(void * param_1); -extern void func_801752BC(s32 *a0); -extern u8 D_8011F7A8; -extern u8 D_8011F7A9; -extern u8 D_8011F7AD; -extern u8 D_8011F7AE; -extern void func_80175414(s32 _arg0); -extern void func_80175494(void); -extern void (*D_8018ED64[])(); -extern s32 func_801758FC(void); -extern s32 func_80175820(void); -extern s32 func_801759D8(void); -extern void func_8017553C(s32 *param); -extern void func_801757A0(s32 a0); -extern short D_800B9A02; -extern void func_80175590(void *arg0); -extern s16 D_800B9A02; -extern void func_801757A0(s32); -extern void func_80175624(void *a0); -extern void func_801757E0(int); -extern void func_80175668(void); -extern void (*D_8018ED70[])(); -extern void func_80175690(s32 *param); -extern void func_80175DA8(s32 a0); -extern void func_80175AB8(s32 a0); -extern void func_80176144(s32 a0); -extern void func_801756E4(s32 arg0); -extern void func_80175798(void); -extern void func_80176734(s32 a0); -extern void func_80176218(s32 a0); -extern void func_80176D00(s32 a0); -extern void func_801757E0(s32 a0); -extern s32 func_80178004(s32 a0, s32 a1, s32 a2); -extern u8 D_8011F7B1; -extern u16 D_8011F7B4; -extern u16 D_8011F7B6; -extern s16 D_8011F81E; -extern void *func_80177784(void *a0, s32 a1, s32 a2, s32 a3); -extern u32 func_801783D0(s32 a0, s32 a1); -extern void *func_801777BC(void *a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern u16 D_8011F82C; -extern u16 D_8011F82A; -extern u32 * func_80176D94(void *param_1, u32 param_2, s16 param_3_); -extern void func_801778A8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80176FF4(s32 a0); -extern u16 D_8011F830; -extern u16 D_8011F82E; -extern u32 * func_801770E0(void *param_1, u32 param_2, s16 param_3_); -extern void func_80177340(s32 a0); -extern u8 D_8011F837; -extern u8 D_8011F7F0; -extern u8 D_8011F7AB; -extern u32 * func_8017742C(u32 *param_1, s32 param_2, s32 param_3); -extern void func_801776EC(u8 *a0); -extern void * func_80177784(void *a0, s32 a1, s32 a2, s32 a3); -extern uint * func_80177EA4(uint *param_1, int param_2, uint param_3, int param_4); -extern void func_80177F84(s32 param_1, s32 param_2); -extern u32 * func_80178298(u32 *param_1, u8 *param_2, short param_3, short param_4); -extern M2C_UNK D_801E9014; -extern void func_80178438(u16 *arg0); -extern void func_801787D4(void); -extern void func_8012A908(void); -extern void func_8017869C(s32 a0); -extern void func_80130D0C(s32 a0); -extern void func_8013E370(void); -extern s32 D_8011DB08; -extern void func_8017849C(void); -extern void func_8013E4B4(void); -extern s16 D_801270C4; -extern s32 D_801274D8; -extern s16 D_801270C2; -extern u8 D_801270C6; -extern u8 D_801270C7; -extern s32 D_801274DC; -extern s32 D_801274E0; -extern void func_80178608(void); -extern void func_80178744(s32 a0, s32 a1); -extern void func_80178840(); -extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern s32 func_801788B8(s32 arg0, s32 arg1); -extern s32 func_801789AC(s32 arg0); -extern s16 D_801EAFC8; -extern int func_80178970(void); -extern s32 func_80178B18(s32 param_1, s32 param_2); -extern s32 func_80178B70(s32 param_1, s32 param_2); -extern void func_80178BB8(s32 a0, s32 a1); -extern s32 func_80178BF8(); -extern s32 D_801EA388; -extern short D_801EB03C; -extern void func_80178CBC(s32 arg0, s32 arg1); -extern void func_80178D18(void); -extern s32 func_80178D40(s32 arg0, s32 arg1); -extern void func_80179B28(s32 a0); -extern void func_80179B74(u16 *p); -extern void func_80179D30(u16 *a0); -extern void func_80179D78(u16 *a0); -extern void func_80179DCC(short a0); -extern void func_80179DF8(void); -extern void func_80179E1C(short a0); -extern void func_80179E48(s16 a0); -extern void func_80179E74(s16 a0); -extern void func_80179EA0(u16 *a0); -extern void func_80179EE8(short a0); -extern void func_80179F14(s16 a0, s16 a1); -extern void func_80179F44(void); -extern void func_80179F6C(short a0); -extern void func_80179F98(u16 *a0); -extern void func_80179FEC(u16 *a0); -extern void func_8017A040(u16 *a0); -extern s32 D_801EA7B4; -extern void func_8017A094(s32 arg0); -extern void func_8017A0C4(s32 arg0); -extern void func_8017A0F4(void); -extern void func_8017A11C(void); -extern s32 D_801EA7DC; -extern void func_8017A144(s32 a0); -extern void func_8017A180(void); -extern void func_8017A1A8(void); -extern void func_8017A1D0(void); -extern void func_8017A1F8(void); -extern void func_8017A220(void); -extern void func_8017A248(void); -extern void func_8017A270(void); -extern void func_8017A298(void); -extern void func_8017A2C0(void); -extern void func_8017A2E8(void); -extern void func_8017A310(void); -extern void func_8017A338(void); -extern void func_8017A360(void); -extern void func_8017A388(void); -extern s16 D_801EA798; -extern s32 func_8017A3B0(void); -extern void func_80172310(u8*); -extern void func_80172780(void*); -extern void func_80172894(void*); -extern void func_801729B0(s32); -extern void func_80172B14(s16); -extern void func_80172C50(u16 *); -extern void func_80172D68(s32); -extern void func_801733FC(s16, u16 *); -extern void func_80173460(s32, s32); -extern void func_801734BC(s32, s32); -extern void func_801736B0(s32, s32); -extern void func_801737B8(s16); -extern void func_801738DC(s16); -extern void func_80173A28(s32, s32, s32, s32, s32, s32); -extern void func_80174438(s32); -extern void func_8017A4AC(void); -extern s32 func_8017AD0C(s32 arg0); -extern s32 func_8017AD0C(s32); -extern s32 func_8017ADE8(s32 a0); -extern s32 func_8017AE08(void); -extern void func_8017B0E4(int param_1, int param_2); -extern s16 D_801EA79C; -extern u16 D_801EA81C; -extern u16 D_801EA81E; -extern u16 D_801EA820; -extern void func_8017B1D8(void); -extern s32 func_8017B238(s32 param_1, s32 param_2); -extern s32 func_8017B368(s32 param); -extern s32 func_8017B614(s32 param_1, s32 param_2); -extern s32 D_80114F30; -extern s32 D_80114F34; -extern s32 D_80114F38; -extern s32 D_80114F24; -extern s32 D_80114F28; -extern s32 D_80114F2C; -extern u8 D_8012694C; -extern s16 D_801EA814; -extern s16 D_801EA816; -extern s16 D_801EA818; -extern s16 D_801EA80C; -extern s16 D_801EA80E; -extern s16 D_801EA810; -extern void func_8017B7A8(void); -extern s16 D_801EA82C; -extern s16 D_801EA82E; -extern s16 D_801EA830; -extern s16 D_801EA834; -extern s16 D_801EA836; -extern s16 D_801EA838; -extern void func_8017B824(void); -extern void func_8017B880(void); -extern s32 func_8017B8E8(s32 src); -extern short D_801EA824; -extern short D_801EA826; -extern short D_801EA828; -extern void func_8017B940(void); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void RotTransSV(void *a0, void *a1, void *a2); -extern SV4 D_801EA7BC; -extern SV4 D_801EA7C4; -extern void func_8017BA3C(s32 param_1, s32 param_2); -extern s32 func_8017BB34(s32 param_1, s32 param_2); -extern void (*D_801EA7E4[10])(int); -extern void func_8017BC38(int param_1); -extern void func_8017B0E4(int, int); -extern void func_8017BCA0(int param_1); -extern void func_8012A4BC(void); -extern void func_8017BCF4(int param_1); -extern void (*D_801EA7E0)(void); -extern void func_8017BD50(int param_1); -extern void (*D_8018EF4C[])(void); -extern void func_8017BE60(void *a0); -extern void func_8017BE9C(void); -extern void func_8017BEA4(void); -extern void func_8017BEAC(void); -extern void func_8017BEB4(void); -extern void (*D_8018EF58[])(void); -extern void func_8017BEE4(void *a0); -extern void func_8017BF98(void); -extern s32 func_8017BFA0(void); -extern void func_8017C07C(void); -extern void (*D_8018F024[])(void); -extern void func_8017C0C8(void *a0); -extern void func_8017C154(); -extern void func_8017C12C(void); -extern void func_8017C14C(void); -extern void (*D_8018F064[])(void); -extern void func_8017C664(void *a0); -extern void (*D_8018F084[])(void); -extern void func_8017CE54(void *a0); -extern void (*D_8018F094[])(void); -extern void func_8017D0DC(void *a0); -extern void (*D_8018F0A0[])(void); -extern void func_8017D63C(void *a0); -extern void (*D_8018F224[])(void); -extern void func_8017DB00(void *a0); -extern void func_8017DB74(u8 *a0); -extern void func_8017DD74(void); -extern void func_8017DF7C(void); -extern void func_8017EB7C(s32 arg0); -extern void func_8017FA5C(s32 arg0, s32 arg1, s32 arg2); -extern void (*D_8018F500[])(void); -extern void func_801805BC(void *a0); -extern u8 D_8018F450; -extern void func_801805F8(s32 a0); -extern void func_80180714(void); -extern M2C_UNK D_8018F4F8; -extern void func_8018071C(void); -extern s32 func_80180744(void); -extern s16 func_80180760(void); -extern s32 D_8018F510; -extern s32 D_8018F56C[]; -extern void func_80180B84(int param_1); -extern void func_80180C34(s32 p); -extern void (*D_8018F5B0[])(void); -extern void func_80180DFC(void *a0); -extern s32 func_800D222C(s32 a0, void *a1, s32 a2); -extern s32 func_8001CF30(void *a0); -extern void func_80180E38(s32 param_1); -extern void func_80180FFC(u8 *p); -extern void (*D_8018F5B8[])(void); -extern void func_80181090(void *a0); -extern u8 D_8018F5A4; -extern void func_801810CC(s32 a0); -extern void func_80181170(int a0); -extern void (*D_8018F6D0[])(void); -extern void func_80181BD0(void *a0); -extern void func_8012C218(void*); -extern void func_80181F78(void); -extern void (*D_8018F728[])(void); -extern void func_80182028(void *a0); -extern void func_80182348(int); -extern void func_801820B4(int param_1); -extern void (*D_8018F73C[])(void); -extern void func_80182654(void *a0); -extern void func_801826D0(void *a0); -extern void func_80182740(void *a0); -extern void func_801827CC(void *a0); -extern void (*D_8018F750[])(void); -extern void func_801828F4(void *a0); -extern void func_80182C28(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80182BB0(s32 arg0, s32 arg1); -extern void func_80182BD4(s32 arg0, s32 arg1, s16 arg2); -extern void func_80182BFC(void *a0, void *a1, s32 a2, s32 a3); -extern void (*D_8018F7AC[])(void); -extern void func_80182E08(void *a0); -extern void (*D_8018F804[])(void); -extern void func_801835C4(void *a0); -extern s32 func_80183644(void); -extern void func_8001BFD0(void); -extern void func_800D1E28(void); -extern s32 func_801836A8(u8 *a0); -extern void func_800D1EBC(void); -extern void func_80183724(void); -extern void (*D_8018F818[])(void); -extern void func_80183744(void *a0); -extern s32 func_801837C0(u8 *a0); -extern void func_8018383C(void); -extern void (*D_8018F824[])(void); -extern void func_8018385C(u8 *a0); -extern M2C_UNK D_8018F830; -extern void func_80183930(void); -extern s32 D_8018F83C; -extern void func_80183958(void); -extern void (*D_8018F850[])(void); -extern void func_80183A18(void *a0); -extern s32 func_80012ABC(s32 a0, s32 a1, s32 a2); -extern void func_80183B58(s32 param_1, s16 *param_2); -/* ==== end §8b carried decl layer ==== */ - -DEFINE_func_80184440() /* dedup: shared engine-core @0x80184440 (src/shared) */ diff --git a/src/ov_SC03_015/ov_SC03_015_jr_801848E4.c b/src/ov_SC03_015/ov_SC03_015_jr_801848E4.c deleted file mode 100644 index 03385c28e..000000000 --- a/src/ov_SC03_015/ov_SC03_015_jr_801848E4.c +++ /dev/null @@ -1,2965 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8; -typedef void (*Handler)(struct Entry_8016E95C *); -extern void func_801458E0(void); -extern s32 D_800AE6AC; -extern s32 D_800AE6B0; -extern s16 D_800B9A0A; -extern u8 D_80078E50; -extern void func_800D185C(u8 *a0); -extern void func_801458E8(void); -extern s32 func_80029504(void); -extern void func_80145B24(void); -extern u8 D_8018DAA4; -extern u8 D_8018DA14; -extern u8 D_8018D9F0; -extern u8 D_8018D9CC; -extern u8 D_8018DA80; -extern u8 D_8018DA5C; -extern u8 D_8018DA38; -extern u8 D_8018D9A8; -extern void func_80145934(void); -extern u8 D_8018DB34; -extern u8 D_8018DB10; -extern u8 D_8018DAEC; -extern u8 D_8018DAC8; -extern void func_80145A2C(void); -extern s32 func_800291DC(s32); -extern void func_800291C8(s32, s32); -extern void func_80162120(void); -extern void func_80029124(s32, s32); -extern s32 func_80165A50(s32); -extern void func_80029514(s32); -extern u8 D_80078EC0; -extern s32 D_80126B58; -extern s32 func_80028FBC(void); -extern s32 func_80029000(void); -extern s32 func_80028D9C(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_80145BF8(void); -extern s32 func_800291B4(s32 arg); -extern void func_800291A0(s32, s32); -extern void func_80145C54(void); -extern s32 func_80145CEC(); -extern s32 func_80029178(s32 arg); -extern void func_80146014(s32 a0); -extern unsigned char D_8018CF2C[]; -extern unsigned char D_8018CF5C[]; -extern unsigned char D_8018CFAC[]; -extern unsigned char D_8018CFDC[]; -extern unsigned char D_8018D00C[]; -extern void func_80145EE8(s32 param_1); -extern void MoveImage(void *a0, s32 a1, s32 a2); -extern void func_80146074(void); -extern s32 func_80146128(void); -extern void func_80146360(void); -extern void func_801463A0(); -extern void func_8014607C(void); -extern u8 D_80078EC1; -extern s32 D_80078EC8; -extern s32 D_80126B9C; -extern s32 D_8011F730; -extern u16 D_801152B8; -extern u16 D_8012693A; -extern u8 D_80126BE0[]; -extern u8 D_801150F0[]; -extern void *memcpy(void *dst, const void *src, u32 n); -extern void func_80146FC4(s32 a0); -extern void func_80150A70(s32 a0); -extern void func_80147098(s32 *a0); -extern void func_8014A638(s32 arg0); -extern s32 func_80155458(s32 a0); -extern s32 func_80029104(void); -extern void func_80029344(void); -extern void func_8014ADE0(s32 a0); -extern void func_8014B350(s32 a0); -extern void func_8014B7A4(s16 *param_1); -extern s32 func_80161D58(s32 a0); -extern void func_80161A90(s32 a0); -extern void func_8014B504(u16 *a0); -extern void func_80149BEC(s32 a0); -extern void func_8014B5D0(s32 *a0); -extern void func_8014C99C(u8 *a0); -extern void func_8014B190(s32 s0); -extern void func_80148648(s32 a0, s32 a1); -extern s32 func_80149228(s32 a0); -extern void func_8014A59C(s32 a0); -extern void func_8016F14C(void *a0); -extern void func_80154418(void *a0); -extern void func_80154BE4(s32 a0); -extern void func_80165694(s32 arg0); -extern void func_801654A8(s32 a0); -extern void func_8014A680(s32 a0); -extern void func_8014A6A8(s32 a0); -extern void func_8014A71C(s32 a0); -extern void func_80172588(s32 *a0); -extern void func_801473DC(s32 *a0); -extern void func_80015978(s32 a0, s32 *a1); -extern void (*D_8018D05C[])(void *); -extern u8 D_80126BA4; -extern s32 D_80127098; -extern s32 D_80127094; -extern s32 D_80127090; -extern void func_80146534(void); -extern void func_8001D074(s32 a0, s32 a1); -extern void func_80146554(void); -extern void func_80146578(void); -extern void func_8001CFDC(s32, s32); -extern void func_8014659C(void); -extern void func_8001D074(s32, s32); -extern void func_801465C0(void); -extern void func_801465E4(void); -extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); -extern s32 D_8011F9D0; -extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); -extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 D_8011F750; -extern s32 D_8011F754; -extern u8 * func_801468C8(s32 arg0, u8 arg1); -extern s32 D_8011D030; -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); -extern s32 func_80146B9C(void *a0); -extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); -extern u16 D_8011DA28; -extern s32 func_80146B9C(void * arg0); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80146CA0(void *a0); -extern void func_80146CB4(void *a0); -extern void func_80146CC8(s32 a0); -extern void func_80146D30(s32 a0); -extern void func_80146D80(s32 *a0); -extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80146D90(s32 a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); -extern void func_80146E90(s32 *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80015954(s32 a0, s32 a1); -extern void func_80149374(s32 a0, s32 a1); -extern void func_80146F58(s32 a0, s32 a1); -extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 func_8012A68C(void); -extern s16 func_8012A758(void); -extern void func_8004978C(s16 *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern u8 D_80126DB0[]; -extern u16 D_80126DB6; -extern void func_8014704C(s32 *a0); -extern s32 func_80147054(void *a0); -extern void func_80147060(u8 * a0); -extern void func_8014706C(void *arg0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80147084(s32 *a0); -extern void func_8014708C(void *arg0); -extern s32 func_801470A0(void *a0); -extern void func_801470AC(s32 *a0); -extern void func_801470B4(s32 arg0); -extern void func_801470C0(s32 a0); -extern void func_80147118(s32 a0); -extern s16 D_80126BB8; -extern s16 D_80126BBA; -extern s16 D_80126BBC; -extern void func_80147264(s32 a0); -extern void func_80147290(void); -extern void func_801472B4(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void *D_8012707C; -extern void func_801472DC(void); -extern void func_801472F0(void *a0); -extern void func_80147364(u16, s32); -extern void func_80147300(u16 arg0); -extern void func_80147324(s32 arg0); -extern void func_801473EC(s32 *a0); -extern void func_80147460(s32 a0); -extern void func_80147514(); -extern void func_80147628(s32 a0); -extern void func_80147478(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); -extern s32 func_800129CC(s32 a0, s32 a1); -extern void func_80147514(s32 arg0); -extern void func_80013F3C(s32 a0); -extern void func_80012558(s32 a0, s32 a1); -extern void func_800126C4(s32 a0, s32 a1); -extern void func_800123F0(s32 a0, s32 a1); -extern void func_80147718(s32 a0); -extern void func_80147788(void *a0, s32 a1); -extern void func_801477A8(void *a0, s32 a1); -extern void func_801477C8(void *a0, s32 a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80147814(s32 a0, s32 a1); -extern void func_80147928(int a0, int a1); -extern void func_8014799C(int a0, int a1); -extern void func_80147A10(int a0, int a1); -extern void func_80147860(int a0, int a1, int a2, int a3); -extern void func_80147948(s32 a0, s32 a1, s32 a2); -extern void func_801479BC(s32 a0, s32 a1, s32 a2); -extern void func_80147A30(s32 a0, s32 a1, s32 a2); -extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147948(int a0, int a1, int a2); -extern void func_801479BC(int a0, int a1, int a2); -extern void func_80147A30(int a0, int a1, int a2); -extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147A84(s32 arg0); -extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147AAC(s32 arg0); -extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80147B5C(s32 a0, void *a1); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern void func_80147B18(s32 a0); -extern void func_80147B5C(s32 arg0, void *arg1); -extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147DC0(s32 a0, s32 a1); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147F50(s32 arg0); -extern void func_80148038(s32 a0, s32 a1); -extern s32 ratan2(s32 a0, s32 a1); -extern s32 csqrt(s32 a0); -extern s32 func_80012A60(s32 a0, s32 a1); -extern void func_80148094(int param_1, short *param_2, int *param_3); -extern void func_801485B8(s32 a0, s32 a1, s32 a2); -extern void func_801484B0(s32 a0, s32 a1); -extern s32 func_80154358(void *a0); -extern void func_801484E8(s32 a0, s32 a1); -extern void func_80148534(s32 a0, s32 a1); -extern void func_8014856C(s32 a0, s32 a1); -extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); -extern void func_80148634(void *a0); -extern u8 D_800B9A64; -extern s32 func_80014DC0(); -extern s32 func_80014D68(); -extern s32 func_80014D94(); -extern s32 func_80014CF8(); -extern void func_800120DC(); -extern s32 func_800CF8B4(); -extern u16 func_801487F4(s32 *a0); -extern u16 func_80148800(s32 *a0); -extern u8 func_8014880C(s32 *a0); -extern u16 func_80148818(s32 *a0); -extern s32 func_80047D3C(s32 a0); -extern s32 func_80148824(void *arg0); -extern s32 func_801488A8(u8 *a0); -extern s32 func_8014891C(s32 a0); -extern s32 func_80148980(u8 *a0); -extern s32 func_801489E8(s32 a0); -extern s32 func_80148A48(s32 a0); -extern int func_80148AFC(void *a0); -extern void func_80148AAC(u8 *a0); -extern s32 func_80148C18(void); -extern s32 func_80148C20(s32 a0, s16 a1); -extern s32 func_80148C34(s32 a0, s32 a1); -extern s32 func_80148C4C(s32 a0, s32 a1); -extern s32 func_80148C64(s32 a0, s32 a1); -extern s32 func_80148C7C(void); -extern s32 func_80148C84(s32 a0, s32 a1); -extern s32 func_80148C9C(s32 a0, s32 a1); -extern s32 func_80148CB4(s32 a0, s32 a1); -extern s32 func_80148CCC(s32 a0, s32 a1); -extern s32 func_80148CE4(void); -extern s32 func_80148CEC(void); -extern s32 func_80148CF4(s32 a0, s32 a1); -extern s32 func_80148D0C(s32 a0, s32 a1); -extern s32 func_80148D24(void *a0, int a1); -extern s32 func_80148D3C(void); -extern s32 func_80148F60(void); -extern s32 func_80148F68(s32 a0); -extern s32 func_80148F74(s32 a0); -extern s32 func_80148F80(s32 a0); -extern s32 func_80148F8C(s32 a0); -extern s32 func_80148F98(void); -extern s32 func_80148FA0(s32 a0); -extern s32 func_80148FAC(s32 a0); -extern s32 func_80148FB8(s32 a0); -extern s32 func_80148FC4(s32 a0); -extern s32 func_80148FD0(void); -extern s32 func_80148FD8(void); -extern s32 func_80148FE0(s32 a0); -extern s32 func_80148FEC(s32 a0); -extern s32 func_80148FF8(s32 a0); -extern s32 func_80149004(void); -extern void func_8014900C(s32 *a0); -extern void func_80149020(s32 *a0); -extern void func_80149034(s32 *a0); -extern void func_80149048(s32 *a0); -extern void func_8014905C(u8 *a0); -extern void func_801490E0(s32 *a0, s16 a1); -extern void func_801490E8(s32 *a0, s16 a1); -extern void func_801490F0(s32 *a0, s16 a1); -extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); -extern void func_801490F8(s32 a0, s32 a1); -extern s32 func_801491C4(s32 a0); -extern s32 func_80149184(s32 a0); -extern s32 D_801151D4; -extern void func_80149204(s32 *a0); -extern void func_80149210(s32 a0, s32 a1); -extern s32 func_80149284(s32 *a0, s32 a1); -extern void func_80149350(s32 arg0); -extern void func_80149290(s32 a0); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_80149374(s32 arg0, s32 arg1); -extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8014942C(s32 arg0); -extern void func_8012EF70(s32 a0, s32 a1); -extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012EFB8(s32 a0); -extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); -extern void func_8014964C(s32 param_1, s32 param_2); -extern s32 func_801496D4(void *a0); -extern void func_8015AD08(); -extern void func_80149704(void); -extern void func_8015ACC4(); -extern void func_80149724(void); -extern u8 D_80078EBF; -extern s32 func_80149744(struct S_80149744 *a0); -extern void func_8015F7A0(); -extern void func_80149788(void); -extern void func_801653B8(); -extern void func_80149864(void); -extern s16 currentLocationId; -extern s32 func_8016F1AC(void); -extern s32 func_80149884(void); -extern void func_80160B00(); -extern void func_801498C0(void); -extern s32 func_80149AA8(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern void func_80146750(void *a0); -extern s32 func_801498E0(s32 *a0); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_80147364(u16 a0, s32 a1); -extern s32 func_800CCF28(s32 a0); -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_8015DAC4(s32 *a0); -extern void func_8015554C(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern void func_80149B14(s32 *a0); -extern u8 func_8014BEF8(void); -extern s32 func_80149B54(s32 * arg0); -extern void func_8015DE24(s32 *a0); -extern void func_80157510(s32 *a0); -extern void func_80149BAC(s32 *a0); -extern s32 func_80029178(s32 a0); -extern s32 func_80149C08(s32 arg0); -extern void func_801577C8(); -extern void func_80149C94(void); -extern void func_80157D20(void); -extern void func_80149CB4(void); -extern s32 func_80149CD4(s32 a0); -extern u8 func_8014B5B8(s32 *a0); -extern s32 func_80149D10(s32 a0); -extern s32 func_80149E94(s32 a0); -extern s32 func_80149DD8(s32 a0); -extern s32 func_80149D9C(s32 a0); -extern u8 D_801202A0[]; -extern s32 func_80149F2C(s32 a0, s32 a1); -extern s32 func_80149E94(s32 arg0); -extern void func_80149FA8(void); -extern s32 D_8018D124[]; -extern u8 D_80078E78[]; -extern s32 func_80149FB0(s32 a0); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern void func_8014A1B0(s32 a0, s32 a1); -extern s32 func_8014A048(s32 param_1); -extern u16 func_80156370(u16 a0); -extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); -extern void func_8015D4B4(); -extern void func_8014A218(void); -extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); -extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); -extern s32 func_8014A238(s32 arg0); -extern s32 func_8014A2E4(s32 a0); -extern void func_8014A380(s32 a0, s32 a1); -extern s16 D_801152B0; -extern s16 D_801152B4; -extern s32 func_8014A3E0(struct S_8014A3E0 *a0); -extern s32 func_8014A454(s32 a0); -extern s32 func_8014A4B4(void *a0); -extern void func_8015EDD4(); -extern void func_8014A4FC(void); -extern s32 func_8014A674(s32 *a0); -extern s32 func_8014A69C(s32 *a0); -extern s32 func_8014A6C4(s32 a0); -extern void func_8015E184(); -extern void func_8014A830(void); -extern s32 func_80029AF4(void); -extern s32 func_8014A850(s32 param_1); -extern void func_8014AA04(s32 a0); -extern void func_801599A4(void *a0); -extern void func_80159B3C(void *a0); -extern s32 func_80165A20(s32 a0); -extern void func_8014AB7C(); -extern void func_8014AC10(); -extern void func_8014AA28(void); -extern void func_8014AB5C(void); -extern void func_80162CCC(void); -extern void func_8014AB7C(s32 arg0); -extern void func_8014ABF0(void); -extern void func_80016714(void *a0, s32 a1); -extern void func_8014AC10(s32 arg0); -extern void func_8014ACC0(s32 a0, s32 a1); -extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); -extern void func_8014ACE8(void *a0, s32 a1, s32 a2); -extern void func_80146AFC(void *a0); -extern void func_8014ADA8(s32 a0, s32 a1); -extern void func_8014AD7C(s32 a0); -extern s32 D_80078E8C; -extern void func_8014B034(s32 arg0); -extern void func_8014B00C(s32 arg0); -extern void func_8014B084(void); -extern s16 D_80078E90; -extern void func_8014B034(s32 a0); -extern u16 D_80078EAC; -extern u8 D_80078EBA; -extern void func_800D10EC(void); -extern void func_8002AC98(void); -extern s32 func_8014B154(s32 *a0); -extern void func_8014B12C(void); -extern void func_8014B2F8(void); -extern void func_8014B4C4(void); -extern void func_8014B160(s32 a0); -extern s32 func_8016F1C4(void); -extern s16 D_80078E96; -extern s16 D_80078EB8; -extern u16 D_80078EA6; -extern void func_8014B2A8(void); -extern void func_8014B310(void); -extern void func_8014B2D0(void); -extern s32 D_80078E94; -extern s32 D_80078ECC; -extern void func_8014B33C(void); -extern u8 D_80062BF4[]; -extern void func_8014BC80(s32 a0, s32 a1); -extern void func_80019064(void *a0); -extern s32 D_80078E98; -extern void func_80166244(); -extern void func_8014B4D4(void *a0); -extern s16 D_80078E9A; -extern u8 D_80126D1C; -extern s32 D_80126D74; -extern void func_8014B598(s32 a0, s32 a1); -extern void func_8014B5B0(s32 *a0); -extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); -extern void func_8014B5D8(s32 s1); -extern s32 D_80078E9C; -extern s32 D_80078ED0; -extern void func_8014B6F0(s32 a0, s32 a1); -extern void func_8014B768(s32 a0, s32 a1); -extern void func_8014B944(s32 a0, s32 a1, s32 a2); -extern s32 D_80078EA4; -extern u16 D_80078EB2; -extern s16 D_80078EB4; -extern void func_8014BB0C(void); -extern void func_8014BB24(s32 a0, s32 a1, s32 a2); -extern void func_8014BC0C(s32 a0, s32 a1); -extern void func_8014BC44(s32 a0, s32 a1); -extern u8 D_800B9A17; -extern void func_8014BCC0(s32 a0, s32 a1); -extern u16 D_80078EB6; -extern s32 func_8014BCEC(s32 a0, s32 a1); -extern void func_8014BD24(s32 a0, s32 a1); -extern void func_8014BD60(s32 param_1, s32 param_2); -extern void func_8014BD98(s32 a0, u16 a1); -extern void func_8014BDC8(void); -extern void func_8014BDE0(void); -extern s32 func_8017267C(s32 *a0); -extern s32 func_80013294(void *a0, void *a1); -extern void func_80029ED4(s32 a0); -extern void func_8014BDE8(s32 a0); -extern void func_8014BE78(void); -extern void func_8014BE9C(void); -extern void func_80029124(s32 a0, s32 a1); -extern void func_8014BEC0(void); -extern void func_8014BF18(s32 a0); -extern void func_8014BF48(void); -extern u8 func_8014BF6C(void); -extern void func_8014BF8C(u8 arg0); -extern void func_8014BFB0(void); -extern u8 func_8014BFD4(void); -extern void func_8014BFF4(s32 a0, s32 a1); -extern void func_8014C010(s32 a0, s32 a1); -extern s32 func_8014C050(s32 a0, s32 a1); -extern s32 func_8014C088(s32 a0, s32 a1); -extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); -extern s32 func_8014C118(void * a0, s32 a1, s32 a2); -extern s32 func_8014C168(s32 * param_1, s32 param_2); -extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); -extern u8 D_8018D1AC[]; -extern void func_8014C1A0(s32 arg0, s32 arg1); -extern s32 func_80013328(s32 a0, s32 a1); -extern s32 func_8014C59C(void *a0, void *a1); -extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); -extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); -extern s32 ratan2(s32 dx, s32 dy); -extern u8 D_8018D1B4; -extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); -extern s16 func_8014C5D0(s32 a0, s32 a1); -extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); -extern u8 D_80126D17; -extern void func_8014C6AC(void); -extern void func_8014C6C0(void); -extern u8 D_80126D1E; -extern void func_8014C6D0(void); -extern void func_8014C6E0(void); -extern s32 func_8014C860(s32 a0, s32 a1); -extern void func_8014C8C8(s32 a0, s32 *a1); -extern void func_8014C88C(s32 a0); -extern void func_8014C8C8(s32 dst, s32 * src); -extern void func_8014C8F0(s32 arg0); -extern u8 D_801151F0[]; -extern s32 func_8014C918(s32 a0, s32 a1); -extern s32 D_80126B50; -extern void func_8014C968(void); -extern void func_8014C978(void); -extern s32 func_8014C98C(void); -extern void func_80139914(s32 a0); -extern s32 func_8014CA00(s32 a0); -extern u16 func_8014CA70(s32 a0, s32 a1); -extern s32 func_8014CA14(s32 a0, s32 a1); -extern u16 func_8014CAE4(s32 *a0, s32 a1); -extern s32 func_8014CA88(s32 *a0, s32 a1); -extern s32 func_8014CAFC(void); -extern s32 func_8014CB0C(void); -extern s32 func_8014CB1C(void); -extern u8 D_80126D1F; -extern s32 func_8014CB2C(void); -extern s32 func_8014CB58(void); -extern u8 D_80126D1D; -extern void func_8014CB68(void); -extern s32 func_8014CB7C(void); -extern s32 func_8014CB8C(void); -extern short D_80126C9E; -extern void func_8014CB9C(struct Packed8 *a0); -extern s32 D_80126CDC; -extern void func_8014CBD8(void); -extern s16 D_80126CC4; -extern void func_8014CBE8(void); -extern void func_8014CBF8(void *a0); -extern void func_8014D3E0(s32 a0); -extern void func_8014D04C(void); -extern void func_8014CCB4(void); -extern void func_8014CC28(s32 a0); -extern void func_8014CD0C(u8 *a0); -extern s32 func_8014CF04(s32 a0, s32 a1, void *a2); -extern void func_8014CD80(s32 a0, void *a1, void *a2); -extern void func_8014D0A4(s32 a0); -extern s32 func_8014D2A0(s32 a0, void *a1, void *a2); -extern s32 func_8014D12C(s32 a0, void *a1, void *a2); -extern void func_8014D438(s32 a0); -extern void func_8014D3E0(s32 _arg0); -extern void func_8014D610(s32 a0, void *a1, void *a2); -extern s32 func_8014D4C0(s32 a0, void *a1, void *a2); -extern void func_8014D790(s32 a0); -extern void func_8014D738(void); -extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); -extern s32 func_8014D820(s32 a0, u16 *a1, u16 *a2); -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); -extern void func_8014DF94(s32 arg0); -extern void func_8014DF3C(void); -extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ -extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ -extern s16 D_801152AC; -extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); -extern void func_8014E48C(s32 a0); -extern void func_8014E434(void); -extern void func_8014E5B4(s32 a0, void *a1, void *a2); -extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); -extern void func_8014E6F8(struct SubE6F8 *a0); -extern void func_8014E6A0(void); -extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); -extern void func_8014E934(s32 _arg0); -extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); -extern s32 func_8014E98C(void *a0); -extern s32 D_801150D8; -extern s16 D_801152AA; -extern u8 D_80126720[]; -extern s16 D_80126724; -extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); -extern s32 func_8014ED80(struct SubED80 *a0); -extern int D_801E9698; -extern void func_8014ED28(s32 _arg0); -extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F24C(struct SubF24C *a0); -extern void func_8014F1F4(void); -extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F4C0(); -extern s32 func_8014F468(void); -extern int func_8014F74C(); -extern int func_8014F6F4(void); -extern u8 D_800D3918[]; -extern u8 D_801152A8[]; -extern s32 D_801152BC; -extern int func_8014F74C(s32 arg0); -extern s32 func_8014FA70(s32 a0); -extern s32 D_801E969C; -extern void func_8014FA04(s32 a0); -extern s32 func_8014FBC0(); -extern s32 func_8014FC18(u8 *self); -extern int func_8014FD54(int param_1); -extern void func_8014FCFC(void); -extern void func_80150170(void *a0); -extern s32 func_8014FE60(void *a0); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_8014FE60(void *e); -extern s32 func_80134510(s32 arg); -extern s32 func_80150150(s32 a, s32 b); -extern s32 func_80150460(s32 a, s32 b); -extern void func_801504D8(u16 *a0); -extern s32 func_80150480(s32 _arg0); -extern s32 func_80150528(void *a0, void *a1, void *a2); -extern s32 func_80150528(void *arg0, void *arg1, void *arg2); -extern s32 func_801506A4(s32 a0, s32 a1); -extern s32 func_801505FC(s32 a0); -extern s32 func_801506A4(s32 arg0, s32 arg1); -extern void func_80150820(s32 a0, s32 a1); -extern void func_8015086C(int param_1); -extern s32 func_801508B4(s32 a0); -extern s32 func_8015094C(s32 a0); -extern short func_801508F8(s32 a0); -extern s32 D_8018D1E4; -extern s32 D_80126990; -extern s32 D_80126994; -extern u8 D_80126948[]; -extern s32 func_80021174(s32 a0, s32 a1); -extern s32 func_8015094C(s32 param_1); -extern void func_80150B9C(void); -extern s32 func_80151184(s32 a0, s32 a1, s32 a2); -extern s32 func_80150BA4(s32 a0); -extern s32 func_801619D0(void *a0); -extern void func_80150BC8(s32 *a0); -extern s32 func_80150480(s32 a0); -extern u16 D_800AE6DC; -extern void func_80150C48(s32 a0); -extern int func_80151184(int arg, int a1, int a2); -extern int func_80150CA0(int arg); -extern void func_80150EC4(s32 a, s32 b); -extern void func_80150CC4(s32 a); -extern void func_80150CE4(s32 a); -extern void func_80150D04(s32 a); -extern void func_80150D24(s32 a); -extern void func_80150D44(s32 a); -extern void func_80150D64(s32 a); -extern void func_80150D84(s32 a); -extern void func_80150DA4(s32 a); -extern void func_80150DC4(s32 a); -extern void func_80150DE4(s32 a); -extern void func_80150E04(s32 a); -extern void func_80150E24(s32 a); -extern void func_80150E44(s32 a); -extern void func_80150EC4(s32 a0, s32 a1); -extern void func_80150E64(s32 a0); -extern void func_80150E84(s32 a0); -extern void func_80150EA4(s32 a0); -extern u8 D_800AE6C0; -extern s16 D_800AE6C8; -extern s16 D_800AE6CA; -extern s16 D_800AE6CC; -extern s32 D_800AE6C4; -extern s16 D_800AE6CE; -extern u8 D_800AE6BE; -extern u8 D_801201F8[]; -extern void func_80150F78(void); -extern void func_80150F80(s32 a0); -extern int func_80150FB4(int arg); -extern void func_80150FD8(s32 a0); -extern int func_80151014(int arg); -extern void func_80151038(s32 a0); -extern int func_80151070(int arg); -extern int func_80151094(int arg); -extern void func_801510B8(void); -extern void func_801510C0(void); -extern int func_801510C8(int arg); -extern int func_801510EC(int arg); -extern s32 func_8012DB84(void); -extern s32 func_80151110(void); -extern void func_80151130(void); -extern int func_80151138(int arg); -extern void func_8015115C(s32 *a0, s16 a1); -extern s32 func_80151164(s32 a0, s32 a1); -extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); -extern void func_801511A8(u8 *a0); -extern void func_801511C4(u8 *a0); -extern int func_80151204(int arg, int a1); -extern int func_801511E0(int arg); -extern int func_80151204(int a0, int a1); -extern void func_80151238(void *a0); -extern void func_8015126C(u16 *p); -extern void func_80151780(s32 a0); -extern void func_801516F0(s32 *a0); -extern void func_8015173C(s32 *a0); -extern s16 D_8011DB1A; -extern s32 D_80127518; -extern s32 D_801151FC; -extern s32 func_801725CC(u8 *a0); -extern s32 func_80029D3C(void); -extern void func_80151878(void); -extern void func_80153B58(s32 *a0); -extern s32 func_80151880(s32 a0); -extern s32 func_801518D8(s32 a0); -extern s32 func_80151944(void); -extern s32 func_80151924(void); -extern void func_8014E934(s32 a0); -extern s32 func_8014F3E8(s32 a0); -extern void func_801519C8(s32 a0); -extern void func_80151980(s32 a0); -extern M2C_UNK D_800D5880; -extern s32 D_800D58AC; -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801519C8(s32 arg0); -extern void func_80151C54(s32 a0); -extern void func_801542DC(s32 *a0, s32 a1); -extern void func_8015BDD0(s32 *a0); -extern void func_80165718(s32 a0); -extern u8 D_800D46E4[]; -extern void func_80151AE4(s32 arg0); -extern void (*D_8018D28C[])(void); -extern void func_80151D24(void *a0); -extern void func_80151DB0(s32 a0); -extern void func_80151D60(void *a0); -extern s32 func_80172630(u8 *a0); -extern s32 D_80062C14; -extern void func_80151DB0(s32 param_1); -extern void func_80151E78(s32 *a0); -extern void func_80151ECC(struct S80151ECC *a0); -extern void func_80151FB4(s32 a0); -extern void func_80151F38(s32 *a0); -extern void func_801553C0(s32 a0); -extern void func_80153C18(); -extern void (*D_8018D2B0[])(void); -extern void func_80152058(void *a0); -extern void func_801520DC(s32 a0); -extern void func_80152094(s32 a0); -extern void func_80147324(s32 a0); -extern u8 D_80062C04[]; -extern M2C_UNK D_8018D2A0; -extern void func_801520DC(s32 arg0); -extern void func_801470B4(s32 a0); -extern void func_8015369C(s32 a0); -extern void func_80152194(s32 *a0); -extern s32 func_801536DC(s32 a0); -extern void func_8015220C(s32 a0); -extern s32 func_80153800(s32 a0); -extern void func_801522CC(s32 a0); -extern void func_80152254(s32 *a0); -extern void (*D_8018D2C4[])(void); -extern void func_80152370(void *a0); -extern void func_801523F4(s32 a0); -extern void func_801523AC(s32 a0); -extern void func_8001382C(s32 a0, void *a1, void *a2); -extern u8 D_8018D2D0[]; -extern void func_801523F4(s32 arg0); -extern void func_801525F4(int); -extern s32 func_801535F4(void *arg0); -extern void func_8015BF48(s32 *a0); -extern void func_80152500(int param_1); -extern void func_801525F4(s32 a0); -extern void (*D_8018D2E0[])(void); -extern void func_80152698(void *a0); -extern void func_80152714(s32 a0); -extern void func_801526D4(s32 a0); -extern void func_80152790(s32 a0); -extern void (*D_8018D2F8[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018D2E8; -extern void func_801528B0(s32 arg0); -extern void func_8015294C(s32 a0); -extern void func_80152A08(s32 a0); -extern void func_80152AC8(s32 a0); -extern void func_80152A50(s32 *a0); -extern void (*D_8018D30C[])(void); -extern void func_80152B6C(void *a0); -extern void func_80152BF0(s32 a0); -extern void func_80152BA8(s32 a0); -extern void func_80152C80(s32 *a0); -extern void func_80152C40(s32 *a0); -extern void (*D_8018D328[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018D318; -extern void func_80152DA8(s32 arg0); -extern void func_80152E4C(s32 a0); -extern void func_80152EFC(s32 a0); -extern void func_80152FBC(s32 a0); -extern void func_80152F44(s32 *a0); -extern void (*D_8018D33C[])(void); -extern void func_80153060(void *a0); -extern void func_801530E4(s32 a0); -extern void func_8015309C(s32 a0); -extern void func_80155440(s32 *a0); -extern void func_801530E4(s32 arg0); -extern void func_80153150(struct S80153150 *a0); -extern void func_801531BC(s32 a0); -extern void func_8015327C(s32 a0); -extern void func_80153204(s32 *a0); -extern void (*D_8018D350[])(void); -extern void func_80153320(void *a0); -extern void func_801533A4(s32 a0); -extern void func_8015335C(s32 a0); -extern void func_80153410(s32 *a0); -extern void func_80153490(s32 a0); -extern void func_80153550(s32 a0); -extern void func_801534D8(s32 *a0); -extern void (*D_8011DB28)(s32 a0); -extern s32 func_801536DC(s32 param_1); -extern void func_800139C8(s32 a0, void *a1, void *a2); -extern s32 func_80153978(s32 a0, u16 *src); -extern s32 func_80133784(s32 a0, void *src, s32 dst); -extern s32 func_801539F8(s32 a0, void *a1); -extern s32 func_801539F8(s32 a0, void * a1); -extern s32 func_8016DA04(s32 a0); -extern s32 func_80153BD8(s32 a0); -extern s32 func_80153BF0(s32 a0); -extern void func_80153C18(void); -extern u16 D_8011F748; -extern void func_80153C30(void); -extern void func_80153C74(s16 a0, s16 a1); -extern s16 D_8011DB18; -extern void func_80153C44(int a0, int a1, s16 a2); -extern s16 D_8011DB0C; -extern s32 D_80115210; -extern void func_80153C8C(void); -extern void func_80153C9C(void); -extern s32 func_80153CBC(void); -extern s32 D_8018D364; -extern void (*D_8018D38C[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018D36C; -extern void func_80153D7C(s32 param_1); -extern void func_8015410C(void); -extern void func_80153E00(s32 param_1); -extern void func_80151664(void); -extern void func_80154134(u8 *a0); -extern void func_80154190(u8 *a0, s32 a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154218(u8 *a0, s32 a1, s32 a2); -extern void func_801541D8(u8 *a0, s32 a1, s32 a2); -extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); -extern void func_801542A4(); -extern void func_801542A4(s32 *a0, s32 a1); -extern void func_8015430C(); -extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); -extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); -extern s32 func_80154358(void * arg0); -extern void func_80154AB4(s32 a0, s32 a1); -extern void func_80154B20(s32 a0, s32 a1, s32 a2); -extern void func_80154AE0(s32 a0, s32 a1, s32 a2); -extern void func_80154B7C(u8 *a0, s32 a1); -extern void func_80154B4C(u8 *a0, s32 a1); -extern void func_80154BC8(void *a0, s32 a1, s32 a2); -extern void func_80154B98(void *a0, s32 a1, s32 a2); -extern u8 D_800D8D10[]; -extern s16 D_80078E9E; -extern void func_801550FC(s32 a0); -extern void func_80154ED8(s32 a0, s32 a1); -extern void func_80154F9C(s32 a0); -extern void func_800183E0(s32 a0); -extern void func_801550FC(s32 arg0); -extern void func_8001D150(s32, s32); -extern void func_8001D130(int, int); -extern void func_80155150(int param_1); -extern s32 D_800DE2A4[]; -extern void func_801552F4(s32 a0); -extern void func_80155344(s32 a0); -extern s32 func_80155394(s32 *a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80029178(s32); -extern int (*D_8018D3D8[])(void); -extern s32 func_80155458(s32 param_1); -extern s32 func_801659DC(u8 *a0); -extern s32 func_801554B8(void *arg0); -extern void func_801555F4(void *a0); -extern void func_80155518(s32 *a0); -extern void func_80155580(void *a0); -extern void (*D_8018D3DC[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern s32 func_80155800(s32 arg0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern s32 func_80029B4C(s32 a0, s32 a1); -extern s32 func_80029BC8(s32 a0, s32 a1); -extern s32 func_80029C44(s32 a0, s32 a1); -extern s32 func_8015640C(s32 a0, s32 a1); -extern s32 rand(void); -extern u32 func_8015616C(s32 param_1, u16 param_2); -extern u16 func_80156370(u16 param_1); -extern s32 func_801564B0(s32 a0); -extern s32 func_8002A1B4(void); -extern s32 func_8002A400(void); -extern s32 func_8002A670(void); -extern s32 func_8002A8E0(void); -extern s32 D_801151E0[]; -extern s32 func_801565C0(void); -extern void func_80156A14(s32 *a0); -extern void func_80156648(s32 *a0); -extern u8 D_8011DAD8[]; -extern s32 func_8014C568(s16 *a0, s16 *a1); -extern void func_801567BC(s32 a0); -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018D840[]; -extern void func_80156A1C(s32 param_1, s32 param_2); -extern s32 D_801150E0[]; -extern void func_80156A88(s32 a0, s32 a1); -extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); -extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); -extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); -extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern s32 func_80135004(s32 a0, void *a1, s32 a2); -extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801575E4(void *a0); -extern void func_801574DC(s32 *a0); -extern void func_80157544(void *a0); -extern void (*D_8018D850[])(void); -extern void func_8014CC28(s32 a0); /* defined */ -extern s32 func_8014F3E8(s32 a0); /* declared */ -extern void func_8015BDD0(s32 *a0); /* defined */ -extern void func_801575E4(void *a0); /* defined */ -extern void func_80157580(s32 arg0); -extern u8 D_800D4F14[]; -extern void func_801576A8(void *arg0); -extern s32 func_8015773C(u8 *a0); -extern s32 func_8015771C(u8 *a0); -extern s32 func_8015773C(u8 * arg0); -extern int D_801E96D0; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018D878[])(void); -extern void func_80157808(void *param_1); -extern void func_80157880(s32 a0); -extern s32 func_801725A4(u8 *a0); -extern u8 D_800D5128; -extern u8 D_8018D858; -extern void func_801578C0(s32 param_1); -extern void func_80147A84(int); -extern void func_80148038(int, int); -extern void func_80147460(int); -extern void func_80146D90(int); -extern void func_80161450(void *a0); -extern void func_80157A8C(int); -extern void func_80154A74(int, int); -extern unsigned char D_800D5178; -extern unsigned char D_8018D868; -extern void func_8015795C(int param_1); -extern void func_80161D20(s32 a0, s32 a1); -extern void func_80157A8C(s32 a0); -extern void func_8016706C(s32 a0); -extern u8 D_800D51AC[]; -extern void func_80157AC8(s32 param_1); -extern void func_80157B74(int param_1); -extern void func_8016158C(void *a0); -extern void func_8015BE04(s32 *a0); -extern void func_80157BC8(s32 a0); -extern void func_80157CCC(s32 a0); -extern void func_80157DC4(void *a0); -extern void func_80157FC4(void *a0); -extern void func_80157D74(u16 *a0); -extern void (*D_8018D8B8[])(void); -extern void func_80157E38(void *); -extern void func_80157E00(void *a0); -extern void func_80157E38(void * a0); -extern s32 func_80157F64(s32 *a0); -extern s32 func_80156600(void *a0); -extern void func_80157EA4(void *a0); -extern void (*D_8018D8C0[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018D88C; -extern void func_80158038(void * param); -extern u8 D_800D524C[]; -extern void func_80161418(void *a0); -extern void func_801580B4(s32 a0); -extern void func_801581AC(s32 a0); -extern void (*D_8018D8CC[])(void); -extern void func_8015824C(void *a0); -extern void func_801582C0(void *); -extern void func_80158288(void *a0); -extern u8 D_800D52A8[]; -extern void func_801585A4(s32 *a0); -extern void func_801582C0(void *a0); -extern s32 func_801585AC(s32 *a0); -extern u8 D_800D52E8[]; -extern void func_80158344(s32 *a0); -extern s32 func_801615C4(void *a0, s32 a1); -extern u8 D_8018D89C; -extern u8 D_800D533C; -extern void func_80158434(s32 param_1); -extern void func_80158548(s32 param_1); -extern void func_801585EC(u8 *a0); -extern void func_80158794(void); -extern s32 D_801E96D8; -extern s32 D_801E96E4; -extern s32 D_801E96E8; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018D908[])(s32 *); -extern void func_80158AE4(void *a0); -extern void func_80158AB4(void *a0); -extern void func_8016F264(void); -extern void func_80165840(void); -extern void func_801658DC(void); -extern void func_80165A78(s32); -extern void func_80158AE4(void * a0); -extern M2C_UNK D_800D58D8; -extern void func_80158BB0(void *arg0); -extern s32 func_80159404(s32 a0, s32 a1); -extern void func_80158C40(s32 *a0); -extern void func_80158CD8(s32 *a0); -extern s32 func_80159434(s32 a0, s32 a1); -extern void func_80158D60(s32 a0); -extern M2C_UNK D_800D5904; -extern void func_80158E24(s32 *a0); -extern s32 D_8018D8DC[]; -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80158F00(int param_1); -extern u8 D_80110C3C[]; -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80158FA4(s32 param_1); -extern s32 func_801399F0(s32 a0); -extern u8 D_80110C94[]; -extern u8 D_80110CD4[]; -extern void func_80159070(void *a0); -extern s32 func_80029A94(s32); -extern void func_80175454(void); -extern void func_800298BC(void *); -extern void func_8002992C(s32); -extern void func_800CF804(void); -extern void func_800CF818(void); -extern u8 D_80110D0C[]; -extern void func_80159120(s32 a0); -extern void func_801592CC(s32 *a0); -extern u8 D_800AE6BD; -extern s32 D_801E96E0; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018DB58[])(void); -extern void func_80159698(void *a0); -extern s32 func_801596D4(void *a0); -extern void func_80174B6C(void); -extern void func_80129248(s16 a0); -extern void func_8013C938(void); -extern void func_8013CB20(void); -extern void func_8013C98C(void); -extern void func_8002850C(s32, s32, s32); -extern void func_80028620(s32, void *); -extern s16 D_800B9AAC[]; -extern s16 D_800B9B00; -extern u16 D_801270C0; -extern u32 D_800AFAE8[]; -extern char D_8018D978[]; -extern s32 func_801596F0(s32 param_1); -extern s32 func_80159874(void); -extern void func_800167B8(s32 a0); -extern s32 func_8015987C(s32 a0); -extern int func_800167F0(int arg); -extern int func_801598BC(void); -extern void func_80159968(void *a0); -extern void func_801598E0(u8 *a0); -extern void (*D_8018DBFC[])(void); -extern void func_80159A20(void *a0); -extern void func_801599E0(void *a0); -extern void func_80159A18(void); -extern void func_80159BE4(s32); -extern void func_80159B08(s32 *a0); -extern void func_80159B70(void *a0); -extern void func_80159B3C(void * a0); -extern void (*D_8018DD50[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018DB6C; -extern void func_80159BE4(s32 arg0); -extern void func_8015A1C8(s32 a0); -extern void func_8015A2D8(s32); -extern void func_8015A1FC(s32 *a0); -extern void func_8015A264(void *a0); -extern void func_8015A230(s32 *a0); -extern void (*D_8018DD58[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018DB7C; -extern s32 func_80172608(u8 *a0); -extern void func_8015A2D8(s32 param_1); -extern u8 D_800D48DC; -extern s32 func_8015AB7C(s32 a0); -extern s32 D_8011F9C4; -extern s32 func_8015ABD4(s32 a0, s32 a1, s32 a2); -extern s32 func_80161CD0(s32 a0, s32 a1); -extern M2C_UNK D_8018DB9C; -extern void func_8015AC48(s32 arg0); -extern void func_8015AC90(s32 a0); -extern void func_8015ADB0(s32 a0); -extern void func_8015ACC4(s32 *arg0); -extern void func_8015AD3C(void *a0); -extern void func_8015AD08(void *arg0); -extern void (*D_8018DD60[])(void); -extern void func_8015ADB0(s32); -extern void func_8015AD78(s32 a0); -extern void func_8015ADB0(s32 arg0); -extern s32 D_800D4A9C; -extern int func_8015B6F4(int param_1); -extern u8 D_800D4F8C[]; -extern s32 func_8015B7B4(s32 a0); -extern u8 D_800D4BE0[]; -extern s32 func_8014A51C(void); -extern s32 func_8015B858(u8 *a0); -extern s32 D_800D4B48; -extern void func_8015B8F8(s32 *a0); -extern void func_8015BD8C(s32 *a0); -extern s32 func_8015BE94(); -extern void func_8015BE38(struct Obj *a0); -extern s32 func_8015BE74(void); -extern void func_80161124(void *a0); -extern s32 func_8015BE94(s32 *a0); -extern s32 func_8015AE2C(); -extern s32 func_8015BEC4(void); -extern s32 func_8015B950(s32 arg0); -extern s32 func_8015BEE4(void); -extern void func_8015BF04(s32 *a0); -extern void func_8015C0C4(s32 a0); -extern void func_8015BFF4(void *a0); -extern void func_8015BF7C(s32 *a0); -extern void func_8015C030(s32 *a0, s32 a1); -extern void func_8015BFB0(s32 *a0, s32 a1); -extern void (*D_8018DD88[])(void); -extern void func_8015C0C4(s32); -extern void func_8015C08C(s32 a0); -extern s32 func_8015C128(s32 param_1); -extern void func_8015C6A4(void); -extern void func_8015C788(s32 a0); -extern void func_8015C6AC(s32 *a0); -extern void func_8015C714(void *a0); -extern void func_8015C6E0(s32 *a0); -extern void (*D_8018DD94[])(void); -extern void func_8015C788(s32); -extern void func_8015C750(s32 a0); -extern void func_8015CB94(s32 a0); -extern void func_8015CBCC(void); -extern void func_8015CBD4(void); -extern void func_8015CBDC(void); -extern void func_8015CBE4(void); -extern void func_8015CBEC(void); -extern void func_8015CBF4(void); -extern void func_8015CBFC(void); -extern void func_8015CC04(void); -extern void func_8015CC0C(s32 *param_1); -extern void func_8015CC74(s32 *a0); -extern void func_8015CC40(s32 *a0); -extern s32 func_8015CCD0(); -extern s32 func_8015CCB0(void); -extern s32 func_801725E0(u8 *a0); -extern s32 func_8015CCD0(s32 param_1); -extern s32 func_8015CD20(s32 arg0); -extern void func_8015CF24(s32 a0); -extern void func_8015D01C(); -extern void func_8015CF58(s32 *param_1); -extern void func_8015CFC0(s32 *a0); -extern void func_8015CF8C(s32 *a0); -extern void func_8015CFFC(void); -extern void func_8015D01C(int param_1); -extern void (*D_8018DC08[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018DE38; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018CF1C[]; -extern void func_8015D414(int param_1); -extern void func_8015D57C(s32); -extern void func_8015D480(s32 *a0); -extern s32 func_8015D4E8(s16 *a0); -extern void func_8015D4B4(s16 *a0); -extern void func_8015D524(s32 arg0); -extern void func_8015D544(s32 a0); -extern void func_801746DC(void); -extern void func_8015D57C(s32 arg0); -extern s32 func_80161B18(void *a0); -extern s32 func_80161B84(void *a0); -extern void func_80154150(int, int); -extern void func_80149374(int, int); -extern unsigned char D_8018DE4C[]; -extern void func_8015D5E8(int param_1); -extern int func_8015E0D4(int); -extern void func_8015DA5C(s32 a0); -extern void func_8015DB6C(s32 a0); -extern void func_8015DA90(s32 *a0); -extern void func_8015DAF8(s32 *a0); -extern void func_8015DB6C(s32); -extern void func_8015DB34(s32 a0); -extern void func_8015DCB8(s32 a0); -extern void func_8014BD60(s32 a0, s32 a1); -extern int func_8015DD74(int); -extern void func_8015DBD4(void *arg0); -extern int func_8015DC84(int a0); -extern s8 D_8018DE88[]; -extern void func_8015DCB8(s32 param_1); -extern int func_8015DD74(int arg0); -extern void func_8015DECC(s32 a0); -extern void func_8015DDF0(s32 *a0); -extern void func_8015DE58(s32 *a0); -extern void func_8015DECC(s32); -extern void func_8015DE94(s32 a0); -extern void func_8015E018(s32 a0); -extern void func_8015DF34(void *arg0); -extern int func_8015DFE4(int a0); -extern void func_8015E018(s32 param_1); -extern int func_8015E0D4(int a0); -extern void func_8015E22C(s32 a0); -extern void func_8015E150(s32 *a0); -extern s32 func_8015E1B8(s32 a0); -extern void func_8015E184(s32 *arg0); -extern void func_8015E22C(s32); -extern void func_8015E1F4(s32 a0); -extern u8 D_800D4FF4[]; -extern u8 D_800D5098[]; -extern u8 D_800D5060[]; -extern s32 func_8014A850(s32 a0); -extern void func_8015E40C(s32 a0); -extern void func_8015E588(void); -extern void func_8015E4B0(s32 a0); -extern void func_8015E288(s32 a0); -extern u16 D_8018DED0; -extern u16 D_8018DED2; -extern u16 D_8018DED4; -extern s32 D_8018DED8; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -extern void func_8013C9C4(void *a0); -extern s32 D_8018DEE0; -extern void func_8015E5B0(u8 *self); -extern void func_8015E714(s32 *a0); -extern void func_8015E95C(s32); -extern void func_8015E84C(s32 *a0); -extern void func_8015E8E8(s32 *a0); -extern void func_8015E9B8(s32 *a0); -extern void func_8015E8B4(s32 *a0); -extern void func_8015E924(s32 a0); -extern void func_8015E95C(s32 a0); -extern s16 D_801152A0; -extern void func_80160818(s32 *a0); -extern void func_8015ED6C(s32 *a0); -extern void func_8015EE7C(s32); -extern void func_8015EDA0(s32 *a0); -extern s32 func_8015EE08(s32 a0); -extern void func_8015EDD4(s32 *arg0); -extern void func_8015EE44(s32 a0); -extern int D_800D4C48; -extern int D_8018DBEC; -extern void func_8015EE7C(s32 param_1); -extern void func_8015EEE0(void *arg0); -extern void func_8015EF9C(void); -extern void func_8015F080(s32); -extern void func_8015EFA4(s32 *a0); -extern void func_8015F00C(s32 *a0); -extern void func_8015EFD8(s32 *a0); -extern void func_8015F048(s32 a0); -extern void func_8015F080(s32 a0); -extern s32 D_80062BE8; -extern void func_801466F0(s32, s32, s32, s32, s32, s32, s32, s32); -extern s32 func_80161208(void); -extern void func_8015F118(void *a0); -extern void func_8015F260(s32 *a0); -extern void func_8015F380(); -extern void func_8015F2BC(s32 *a0); -extern void func_8015F324(s32 *a0); -extern void func_8015F2F0(s32 *a0); -extern void func_8015F360(void); -extern s32 func_801725B8(u8 *a0); -extern void func_8015F380(void* arg0); -extern void func_8015F738(s32 *a0); -extern void func_8015F848(s32 *a0); -extern void func_8015F76C(s32 *a0); -extern s32 func_8015F7D4(s32 a0); -extern void func_8015F7A0(s32 *arg0); -extern void func_8015F810(s32 *a0); -extern void func_80147078(s32 *, s16); -extern void func_80159B70(void *); -extern void func_8015F89C(void *arg0); -extern void func_8015F948(s32 *param_1); -extern void func_8015F9A4(void *arg0); -extern void func_8015FA24(s32 arg0); -extern void func_8015FBE0(s32 *a0); -extern void func_8015FA44(s32 *a0); -extern void func_8015FAAC(s32 *a0); -extern void func_8015FA78(s32 *a0); -extern s32 func_801612B8(void *a0, s32 a1); -extern void func_8016007C(s32 a0); -extern void func_8015FAE8(void *arg0); -extern void func_8015FCC8(void *param_1); -extern unsigned int D_8018DF64[]; -extern void func_8015FD74(int param_1); -extern s32 func_80028DE0(void); -extern u8 func_80165700(s32 a0, s32 a1); -extern void func_8015FDCC(s32 a0); -extern u8 D_80078EC2; -extern u8 func_801656E8(s32 a0, s32 a1); -extern void func_80165670(s32 a0, s32 a1); -extern void func_8016004C(s32 a0); -extern void func_8015FF20(void *param_1); -extern void func_801601AC(s32 *a0); -extern void func_801600D0(s32 *a0); -extern void func_80160138(s32 *a0); -extern void func_80160104(s32 *a0); -extern void func_80160174(s32 *a0); -extern void func_801601E4(s32 *a0); -extern void func_80160244(s32 *a0); -extern void func_8016032C(void); -extern void func_80160410(s32 *a0); -extern void func_80160334(s32 *a0); -extern void func_8016039C(s32 *a0); -extern void func_80160368(s32 *a0); -extern void func_801603D8(s32 *a0); -extern u8 D_80062BD0; -extern void func_80160410(s32 * a0); -extern void func_801607B8(s32 *a0); -extern void func_801608C0(s32 *a0); -extern void func_801607E4(s32 *a0); -extern void func_8016084C(s32 *a0); -extern void func_80160888(s32 *a0); -extern void func_80160A28(s32 a0); -extern void func_80160A74(s32 *a0); -extern void func_80160BB4(s32 *a0); -extern void func_80160ACC(s32 *a0); -extern s32 func_80160B34(s32 a0); -extern void func_80160B00(s32 *arg0); -extern void func_80160B70(s32 a0); -extern void func_80160C28(void *arg0); -extern void func_80160CB4(s32 *a0); -extern void func_80160D10(void *arg0); -extern void func_80160DEC(u8 *a0); -extern void func_80160F00(); -extern void func_80160E3C(s32 *a0); -extern void func_80160EA4(); -extern void func_80160E70(s32 *a0); -extern void (*D_8018E014[])(void); -extern void func_80160EA4(void *a0); -extern void func_80160EE0(void); -extern void func_80160F00(void* arg0); -extern void func_800D0F4C(s32 a0); -extern u8 D_80110EC0; -extern void func_80160F70(s32 a0); -extern void func_80160FE0(s32 *a0); -extern void func_80161034(void *a0); -extern void func_80161094(s32 a0); -extern void func_801610FC(void); -extern void func_801483E8(void); -extern s32 func_80161A60(s32 a0); -extern void func_8016130C(void *a0, s32 a1); -extern void func_80161240(void *a0); -extern void func_80161374(void *a0, s32 a1); -extern void func_80161278(void *a0); -extern s32 func_801612B8(void * a0, s32 a1); -extern void func_8016163C(void *a0, s32 a1); -extern void func_80161774(void *a0, s32 a1); -extern s32 func_8016197C(s32 a0, s32 a1); -extern s32 func_80161488(void *a0); -extern void func_80161888(void *a0, s32 a1); -extern void func_801614E4(void *a0); -extern void func_8016191C(void *a0, s32 a1); -extern void func_8016151C(void *a0); -extern void func_80161554(void *a0); -extern s32 func_801615C4(void * arg0, s32 arg1); -extern s32 func_801619A4(s32 *a0); -extern s32 func_80161A00(s32 a0); -extern s32 func_80161A30(s32 a0); -extern int func_801497A8(void); -extern int func_80161BE0(void *param_1); -extern u16 D_8018E044[]; -extern void func_80161C98(int param_1, u32 param_2); -extern void func_80161E08(s32); -extern s32 func_80162438(s32); -extern s32 D_800AE6A8; -extern void func_800D1734(void *); -extern s32 D_8018E0A8; -extern void func_80161D88(void); -extern void func_80161E08(s32 param_1); -extern int func_800291DC(int); -extern int func_800D0E30(void *a0); -extern int func_801620C4(void); -extern s32 func_800D0D7C(s32, s32); -extern int D_801E96F0[]; -extern void func_8016216C(void); -extern u8 D_80078EB0; -extern u8 D_80078EB1; -extern s32 func_801621CC(s32 arg0); -extern void func_801622C4(void); -extern void (*D_8018E0CC[])(void); -extern void func_80162330(void *a0); -extern void func_8014706C(void *a0); -extern s32 func_8016236C(u8 *a0); -extern void func_800D0C48(s32 a0); -extern s32 func_801623B8(s32 *a0); -extern s32 func_800167F0(s32 a0); -extern s32 func_80162414(void); -extern s32 func_80162438(s32 _unused0); -extern int func_801626B8(void); -extern void func_80162714(void); -extern int D_801E9748[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018E114[])(void); -extern void func_80162834(void *a0); -extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80162968(s32 a0); -extern s32 func_80162ACC(u8 *a0); -extern u8 D_800B5CB8; -extern s32 D_8018E104; -extern s32 D_800B5CBC; -extern u8 D_800B5CDF; -extern s32 D_800B5CEC; -extern void func_80162870(s32 param_1); -extern void func_801628F4(s32 *a0); -extern void func_80162968(s32 param_1); -extern void func_80162AC0(s32 *a0, s8 a1); -extern s32 func_80162AE0(u8 *a0); -extern void func_80162AF4(void); -extern void func_80162CC4(void); -extern s32 D_80126D40; -extern void func_80162B1C(void); -extern void func_80162D28(s32 *a0); -extern void func_80162D88(s32 *a0); -extern void func_80162DE8(s32 *a0); -extern void func_80162E48(s32 *a0); -extern void func_80162EA8(s32 *a0); -extern void func_80162F60(s32 arg0, s32 arg1); -extern void func_80162F80(s32 arg0, s32 arg1); -extern void func_80162FA0(s32 arg0, s32 arg1); -extern void func_80162F08(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80162FC0(s32 *a0); -extern void func_80162FF4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801630C4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163194(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg4); -extern void func_8016325C(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163234(s32 a0); -extern s32 D_80115100; -extern s32 func_801632E0(void); -extern s32 D_80115200; -extern s32 func_801632F0(void); -extern u16 D_80126B18[]; -extern void func_80163328(void); -extern s32 func_801633A8(void); -extern s32 func_80163408(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void func_80163534(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, u16 * a5); -extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); -extern char D_801E8DBC[8]; -extern void *memcpy(void *dst, const void *src, unsigned int n); -extern void func_801634D8(s32 param_1, u16 param_2, u16 param_3, s32 param_4, u16 param_5); -extern void func_80157158(); -extern void func_80163664(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801636D0(s32 a0, s32 a1); -extern s32 func_8016380C(struct S8016380C *a0, s32 a1); -extern void *memcpy(void *dst, void *src, s32 n); -extern s32 func_801638A0(u8 *a0, s32 a1); -extern s32 func_80163950(s32 a0); -extern void (*D_8018E11C[])(void); -extern void func_80163A58(void *a0); -extern void func_80163A94(s32 param_1); -extern void func_80163C2C(s32 param_1); -extern void func_80163EC8(s32 param_1); -extern void func_80164270(s32 *a0); -extern void func_80164418(void); -extern void func_80163764(s32 a0); -extern void func_801642AC(s32 a0); -extern void func_8016432C(s32 a0); -extern void func_80164410(void); -extern s32 func_80012DBC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164530(s32 arg0); -extern void (*D_8018E170[])(void); -extern void func_80164744(s32 param_1); -extern void func_8001C810(s32 a0, s32 a1); -extern void func_80164A74(s32 *a0); -extern void func_80164930(s32 a); -extern u16 D_800DF2E0; -extern s32 D_8018E138; -extern s16 D_8018E16C; -extern s16 D_8018E16A; -extern s16 D_8018E168; -extern void func_801647A4(int param_1); -extern void func_80164ACC(); -extern void func_80164864(void *a0); -extern void func_80164930(s32 param_1); -extern s32 func_8014C308(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164ACC(s32 a0); -extern void (*D_8018E17C[])(void); -extern void func_80164BA0(void *a0); -extern void func_8001CD50(s32 a0, s32 a1); -extern void func_800233CC(void *, unsigned short); -extern void func_80164DD0(s32 a0); -extern void func_80164DB0(void); -extern u8 D_801E97A8; -extern u8 D_801E97A9; -extern u8 D_801E97AA; -extern u8 D_801E97AB; -extern u8 D_801E97AC; -extern u8 D_801E97AD; -extern u8 D_801E97AE; -extern u8 D_801E97AF; -extern void func_80164BDC(s32 param_1); -extern void func_80164E40(void); -extern void func_80164CD4(u8 *a0); -extern void func_80164D4C(void *arg0); -extern void (*D_8018E18C[])(void); -extern void func_80164EA4(void *a0); -extern void func_80165124(void *a0); -extern void func_80164EE0(int param_1); -extern s32 func_80165140(s32 a0); -extern void func_801651B8(void *a0); -extern void func_80164F44(void *arg0); -extern void func_80165024(void *a0); -extern void func_80165064(s32 *a0); -extern void func_801650C4(s32 *a0); -extern s32 func_80165140(s32 param_1); -extern s32 func_80165240(s32 a0, s32 a1, s32 a2); -extern s32 D_801E97E8; -extern void func_801651B8(void * param_1); -extern u8 D_80126CF8; -extern void func_8016533C(void); -extern void func_801653F4(s32 a0); -extern void func_80165580(s32 a0); -extern void func_80165374(s32 a0); -extern void func_80165580(s32 _arg0); -extern void func_801653B8(s32 *a0); -extern s32 func_80165624(s32 a0); -extern u8 D_80078EC5; -extern void (*D_8018E1D0[])(void); -extern u8 func_80165658(s32 a0, s32 a1); -extern void func_800CAE0C(s32 a0); -extern void func_801654A8(s32 arg0); -extern void func_80165B28(void *a0); -extern void func_801655E4(s32 a0); -extern u8 D_8018E24C[]; -extern s32 D_8018E26C[]; -extern u8 D_8018E2E8[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018E308[]; -extern u8 D_8018E328[]; -extern void func_800CAF6C(void); -extern void func_80165770(void); -extern void func_801657D8(void); -extern u8 D_80078EC3; -extern void func_801657A0(void); -extern s32 D_80078EA0; -extern s32 D_80078EA8; -extern u8 D_80078EBB; -extern s32 D_80078ED4; -extern s32 D_80078ED8; -extern s32 D_80078EDC; -extern u8 D_80078EE0; -extern void func_80165874(void); -extern s8 D_80078EC4; -extern void func_801658EC(void); -extern s32 func_80165900(void); -extern s32 func_80165910(void); -extern s32 D_8012672C; -extern s32 D_8012811C; -extern s32 D_80126B08; -extern void func_80165938(void); -extern void func_80165958(void); -extern s32 func_80165978(void); -extern void func_80165988(void); -extern s32 func_801659A8(void); -extern void func_801659B8(void); -extern s32 func_801659CC(void); -extern void func_80165A18(void); -extern s32 func_80165A50(s32 _arg0); -extern void func_80165AC8(void); -extern void func_80165A78(s32 arg0); -extern void (*D_8018E3C4[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_8018E440[])(void); -extern void func_80165BB4(u8 *a0); -extern void func_80165B6C(u8 *a0); -extern void func_80165C58(s32 arg0); -extern void func_80165BFC(void *a0); -extern void func_80165C78(void); -extern M2C_UNK D_801E8DCC; -extern void func_80165E2C(u16 *arg0); -extern s32 func_80165FA4(s32 a0, s32 a1, s32 a2); -extern s32 func_80167DBC(s32 a0, s32 a1, s32 a2); -extern s32 func_80167AE0(s32 a0, s32 a1, s32 a2); -extern void func_80165E90(void); -extern void func_80020F34(s32 a0, s32 a1); -extern s32 func_80165FA4(s32 arg0, s32 arg1, s32 arg2); -extern void (*D_8018E44C[])(void); -extern void func_80166018(void *a0); -extern void func_80166054(s32 arg0); -extern void func_801661CC(s32 param_1); -extern void func_80166244(void* arg0); -extern void func_8016629C(void *a0); -extern void func_801662F4(void *a0); -extern void func_8016634C(void *a0); -extern void func_801663A4(void *a0); -extern void (*D_8018E454[])(void); -extern void func_801663FC(void *a0); -extern u8 D_800D387C[]; -extern u8 D_800D3888[]; -extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); -extern void func_800D1FC8(s32 a0, s32 a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern void func_801665B4(); -extern void func_80146C3C(); -extern void func_80166438(u8 *a0); -extern s32 func_80128ED8(s32 param_1, s32 *param_2); -extern void func_800D22E4(s32 a0); -extern void func_801665B4(s32 *a0); -extern void (*D_8018E51C[])(void); -extern void func_80166618(void *a0); -extern void (*D_8018E52C[])(void); -extern void func_80166654(void *a0); -extern s32 func_80166690(s32 param_1, s32 param_2); -extern s32 func_80166994(); -extern s32 func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern s32 func_80167540(s32 arg0); -extern void (*D_8018E53C[])(void); -extern void func_801678B4(void *a0); -extern void RotMatrixYXZ(void *a0, void *a1); -extern void func_80048EAC(void *a0, void *a1); -extern s32 func_801670E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80146C3C(void); -extern void func_801678F0(s32 a0); -extern void (*D_8018E548[])(void); -extern void func_80167A9C(void *a0); -extern void func_80167AD8(void); -extern s32 func_80167AE0(s32 param_1, s32 param_2, s32 param_3); -extern void func_80168070(s32 a0, s16 *a1, s16 *a2, void *a3); -extern u8 D_8018E4A8[]; -extern u8 D_8018E4BC[]; -extern s32 func_80167DBC(s32 arg0, s32 arg1, s32 arg2); -extern void func_800D20C0(void *a0, void *a1, s32 a2); -extern void func_80017E68(void *a0, void *a1); -extern void func_800D23D0(void *a0); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern s32 D_801269A4; -extern s32 D_801269A8; -extern s32 D_801269AC; -extern void func_80168070(s32 param_1, s16 *param_2, s16 *param_3, void *param_4); -extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_8016829C(s32 a0); -extern s32 func_80166690(s32 a0, s32 a1); -extern void func_80168328(s32 arg0); -extern void func_801683D8(s32 a0); -extern void func_801684B4(s32 a0); -extern void func_80168540(s32 a0); -extern void func_801685EC(s32 a0); -extern void func_80168640(s32 a0); -extern s32 RotMatrixX(s32 a0, void *a1); -extern void func_80168664(void *arg0); -extern void (*D_8018E560[])(void); -extern void func_80168744(void *a0); -extern void func_80168BDC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801687CC(s32 a0); -extern void func_80168780(s32 a0); -extern void func_80168828(void); -extern void func_801687CC(s32 param_1); -extern void func_80168828(); -extern void (*D_8018E568[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_8018E570[])(void); -extern void func_80168AA8(void *a0); -extern void func_80168AE4(s32 a0); -extern void func_800D2318(void); -extern void func_80168BDC(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void (*D_8018E578[])(void); -extern void func_80168D58(void *a0); -extern void func_80168D94(int a0); -extern void func_80168F40(); -extern void func_80168EC4(s32 a0); -extern void func_80168F40(void *arg0); -extern void (*D_8018E580[])(void); -extern void func_8016901C(void *a0); -extern void func_80169058(s32 a0); -extern s32 func_80169228(void); -extern void func_801691B8(void *a0); -extern void (*D_8018E588[])(void); -extern void func_801693CC(void *a0); -extern void func_80169584(s32 param_1); -extern void func_80169408(s32 a0); -extern void func_8016951C(int param_1); -extern s32 func_80017758(void *a0, void *a1); -extern s32 func_80017DC4(void *a0, void *a1); -extern void func_801696D8(s32 a0, s32 a1); -extern void (*D_8018E590[])(void); -extern void func_80169830(void *a0); -extern void func_8016986C(s32 a0); -extern s32 func_80169A4C(s32 a0, s32 a1); -extern void func_801699D0(void *arg0); -extern void (*D_8018E644[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_8018E64C[])(void); -extern void func_80169F00(void *a0); -extern char D_8018E5FC[]; -extern char D_8018E5BC[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8018E684[])(void); -extern void func_8016A020(void *a0); -extern void func_8016A05C(void *a0); -extern void func_8016A290(s32 a, void *b, void *c); -extern void func_8016A08C(s32 param_1); -extern void func_8016A1CC(int param_1); -extern void func_8016A290(s32 param_1, void *param_2, void *param_3); -extern void (*D_8018E690[])(void); -extern void func_8016A700(void *a0); -extern s32 func_8016A73C(s32 arg0); -extern s32 func_8016A8FC(s32 a0); -extern void func_8016A890(s32 arg0); -extern void func_8016AA50(s32 param_1, s32 param_2); -extern void (*D_8018E6D8[])(void); -extern void func_8016AB30(void *a0); -extern void func_8016B234(void); -extern void func_8016AFB0(s32 a0); -extern void func_8016B114(void *arg0); -extern s32 func_8016B448(s32, s32); -extern s32 func_8016BA48(s32 a0); -extern void func_8016B3F4(s32 a0); -extern s32 func_8016B428(s32 a0); -extern void func_8016B984(void *a0); -extern s32 func_8016B448(s32 arg0, s32 arg1); -extern void (*D_8018E754[])(void); -extern void func_8016B4BC(void *a0); -extern int func_8016B9F8(int); -extern int func_8016B834(int, int); -extern void func_8016B91C(int); -extern int D_801E9B08; -extern void func_8016B4F8(int param_1); -extern s32 func_8016B9F8(s32 param_1); -extern void func_8016B6BC(s32, s32, s32, s32); -extern void func_8016B91C(s32); -extern s16 D_8018E748[]; -extern void func_8016B5C0(s32 param_1); -extern void func_8001CD9C(int, void *); -extern int *D_8018E78C[]; -extern unsigned short D_8018E794[]; -extern unsigned short D_8018E79C[]; -extern unsigned char D_801E9B10[]; -extern int func_8016B834(int param_1, int param_2); -extern void func_8016B964(SrcB964 *a0, DstB964 *a1); -extern void func_8016B91C(s32 arg0); -extern s32 D_801E9B08; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8018E7A4[])(void); -extern void func_8016BBA4(void *a0); -extern s32 func_8016BBE0(s32 param_1); -extern void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3); -extern M2C_UNK D_801E9C44; -extern M2C_UNK D_801E9C48; -extern void func_8016BCC0(void *arg0); -extern s32 func_8016BD78(s32 param_1); -extern s32 func_8016BEA0(s32 param_1); -extern void func_8016BF34(void *a0); -extern void func_8016BFD0(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern s32 D_801E9BD0; -extern void (*D_8018E7D4[])(void); -extern void func_8016C14C(void *a0); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801E9C4C[]; -extern u8 D_801E9C54[]; -extern u8 D_801E9C04[]; -extern void func_8016C2C4(s32 param); -extern s32 func_8016C49C(s32 param_1_arg); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_8016C74C(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern short func_8016CF04(s32 a0, s32 a1); -extern void func_8016C83C(s32 a0); -extern void (*D_8018E7DC[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_8018E7F8[])(void); -extern void func_8016D19C(void *a0); -extern void (*D_8018E800[])(void); -extern void func_8016D428(void *a0); -extern void func_8016D464(u8 *a0); -extern void func_8016D4DC(s32 a0); -extern void func_8016D5EC(s32 *a0); -extern short func_8016CBC0(void); -extern void func_8016D64C(int param_1); -extern void func_8016D778(s32 a0); -extern void func_800D20C0(); -extern void func_8016D848(s32 *a0); -extern void func_8016D984(s32 *a0); -extern void func_8016DBD8(u8 *a0); -extern void (*D_8018E868[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_8018E80C; -extern u8 D_8018E818; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void (*D_8018E89C[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8018E8A4[])(void); -extern void func_8016DF20(void *a0); -extern void func_8016E3CC(s32 a0); -extern void func_8016E1CC(s32 a0); -extern void func_8016E26C(s32 *a0); -extern void func_8016E2E8(void *a0); -extern void func_8016E460(void *a0, void *a1); -extern void func_8016E358(void *a0); -extern void func_8016E460(void *arg0, void *arg1); -extern void (*D_8018E8F8[])(void); -extern void func_8016E5B8(void *a0); -extern void func_8016E5F4(s32 arg0); -extern void func_8016E778(); -extern void func_8016E688(void *a0); -extern void func_8016E6E4(s32 a0); -extern void func_8016E728(u8 *a0); -extern void func_8016E7C8(int param_1, short *p1, unsigned int *p2); -extern void func_8016E778(int param_1); -extern void func_8016E7C8(int param_1, short *param_2, unsigned int *param_3); -extern s32 D_80115218; -extern void func_8016E8F0(void); -extern void func_8016E918(short param_1, short param_2); -extern s32 func_8016E95C(); -extern u16 D_8018E92C[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_8018E91C[]; -extern void func_8016EB3C(s32 p); -extern void func_8016EBA8(u8 *param_1); -extern void func_8016ED6C(void); -extern s32 D_80126D70; -extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); -extern void func_8016ED8C(s32 a0, s32 a1, s32 a2); -extern void func_8016EE40(s32 a0, s32 a1, s32 a2); -extern void func_8016EDBC(s32 a0, s32 a1, s32 a2); -extern void func_8016EE94(); -extern void func_8016EDEC(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_8016EF78(s32 a0); -extern void func_8016EE40(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_801726D0(void *a0); -extern s32 D_80126D50; -extern u8 D_80126D6C; -extern u8 D_80126D6D; -extern u8 D_80126D6E; -extern s32 D_80126D5C; -extern s32 D_80126D60; -extern s16 D_80126D64; -extern s16 D_80126D66; -extern s16 D_80126D68; -extern s16 D_80126D6A; -extern u8 D_80126D1A; -extern s32 D_80127058; -extern s32 D_8012705C; -extern s32 D_80127060; -extern s32 D_80127064; -extern s32 D_80127068; -extern s32 D_8012706C; -extern s32 D_80127070; -extern s32 D_80127074; -extern s16 D_80126D20; -extern void func_8016EE94(s32 a0, s32 a1); -extern s32 func_8016EFC8(s32); -extern s32 func_8016EFA8(s32 a0); -extern void func_8016F094(s32 *a0); -extern s32 func_8016F0AC(); -extern s32 D_8018E948; -extern void func_8016F250(void); -extern void func_8016F288(void); -extern void func_8016F2A8(void); -extern void func_8016F2C8(void); -extern void func_8016F2EC(void); -extern void func_8016F30C(void); -extern void func_8016F330(void); -extern void func_8016F350(void); -extern void func_8016F374(void); -extern void func_8016F388(void); -extern void func_8016F398(void); -extern s32 func_8016F44C(s32 a0); -extern void func_8016F470(s32 a0); -extern s32 func_8016F410(s32 a0); -extern void func_80175414(s32 _arg0); -extern s32 func_8016F4C4(s32); -extern s32 func_8016F494(s32 a0); -extern void func_8016F0E4(void); -extern s32 func_8016F4C4(s32 param_1); -extern void func_8016F4F4(void); -extern void func_801719A4(int a0, int a1); -extern void func_800D1724(s32 a0); -extern void func_80171928(void *a0); -extern void *D_8011F738; -extern void func_8016F4FC(void *a0); -extern void func_8014708C(void *a0); -extern void func_8016F540(void *a0); -extern void func_8016F578(s32 *a0); -extern void func_8016F5B0(void *a0); -extern void func_80147060(u8 *a0); -extern void func_8016F5E0(u8 *a0); -extern void func_8016F610(void *a0); -extern void func_8016F648(void *a0); -extern void func_8016F680(void *a0); -extern void func_8016F6B0(void *a0); -extern void (*D_8018E9C0[])(void); -extern void func_8016F6E0(void *a0); -extern s32 func_80171990(u8 *a0); -extern void func_8016F764(void *a0); -extern void func_8016F71C(u8 *a0); -extern void (*D_8018E9C8[])(void); -extern void func_8016F798(void *a0); -extern void func_8016F804(void *a0); -extern void func_8016F7D4(u8 *a0); -extern void func_80171928(void *); -extern void (*D_8018E9D0[])(void); -extern void func_8016F834(void *a0); -extern void func_8016F8AC(u8 *a0); -extern void func_8016F870(u8 *a0); -extern void func_80172358(u8 *a0, u8 *a1); -extern void (*D_8018E9D8[])(void); -extern void func_8016F8E4(void *a0); -extern void func_8016F95C(void *a0); -extern void func_8016F920(u8 *a0); -extern s32 func_80171CC4(void *a0, void *a1); -extern s32 func_80171D1C(void *a0, void *a1, s32 a2); -extern u16 D_8011F73E; -extern void (*D_8018E9E0[])(void); -extern void func_8016F9C4(void *a0); -extern void func_80171B44(s32 *a0); -extern void func_8016FA44(s32 a0); -extern void func_8016FA00(s32 a0); -extern s32 func_80171C64(s32 a0, s32 a1); -extern void (*D_8018E9E8[])(void); -extern void func_8016FA84(void *a0); -extern void func_8016FB10(void *a0); -extern void func_8016FAC0(u8 *a0); -extern void func_8016FB50(void *a0); -extern void (*D_8018E9F4[])(void); -extern void func_8016FB7C(void *a0); -extern void func_8016FC24(); -extern void func_8016FBB8(s32 a0); -extern s32 func_80171B4C(s32 a0, s32 a1); -extern void func_8016FC24(s32 a0); -extern void func_8016FC64(void *a0); -extern void (*D_8018EA00[])(void); -extern void func_8016FC90(void *a0); -extern void func_8016FD08(u8 *a0); -extern void func_8016FCCC(u8 *a0); -extern s32 func_80172658(s32 *a0); -extern void func_8016FD08(u8 *s0); -extern void func_8016FD7C(s32 *a0); -extern void (*D_8018EA0C[])(void); -extern void func_8016FDB4(void *a0); -extern void func_8016FE2C(u8 *a0); -extern void func_8016FDF0(u8 *a0); -extern void func_8016FE2C(u8 * a0); -extern s32 func_8016FE78(s32 *a0); -extern s32 func_80172664(s32 *a0); -extern void func_8016FED0(s32 *a0); -extern void (*D_8018EA1C[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_8018EA2C[])(void); -extern void func_8016FFDC(void *a0); -extern void func_80170068(u8 *a0); -extern void func_80170018(u8 *a0); -extern void func_801700B8(u8 *a0); -extern void func_80170100(u8 *a0); -extern void (*D_8018EA34[])(void); -extern void func_80170150(void *a0); -extern void func_801701C8(u8 *a0); -extern void func_8017018C(u8 *a0); -extern void func_801701C8(u8 * a0); -extern void (*D_8018EA3C[])(void); -extern void func_80170240(void *a0); -extern void func_801702B8(s32 a0); -extern void func_8017027C(u8 *a0); -extern s16 func_80171AB0(s32 a0, void *a1); -extern void (*D_8018EA44[])(void); -extern void func_801702FC(void *a0); -extern void func_80170374(u8 *a0); -extern void func_80170338(u8 *a0); -extern s32 func_8014C168(s32 *a0, s32 a1); -extern void func_80170374(u8 * a0); -extern void (*D_8018EA4C[])(void); -extern void func_801703E0(void *a0); -extern void func_8017044C(u8 *a0); -extern void func_8017041C(u8 *a0); -extern void func_8017044C(u8 * a0); -extern void (*D_8018EA54[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_8018EA5C[])(void); -extern void func_80170548(void *a0); -extern void func_801705C0(u8 *a0); -extern void func_80170584(u8 *a0); -extern void func_801705C0(u8 * a0); -extern void (*D_8018EA64[])(void); -extern void func_801705F8(void *a0); -extern void func_80170670(void *a0); -extern void func_80170634(u8 *a0); -extern void func_8012A568(void (*a0)(void)); -extern void (*D_8018EA6C[])(void); -extern void func_801706AC(void *a0); -extern void func_80170718(void *a0); -extern void func_801706E8(u8 *a0); -extern void func_80129FF4(void); -extern void (*D_8018EA74[])(void); -extern void func_80170748(void *a0); -extern void func_801707D4(void *a0); -extern void func_80170784(u8 *a0); -extern s32 func_80174ED4(void); -extern void (*D_8018EA7C[])(void); -extern void func_80170810(void *a0); -extern void func_801708B0(void *a0); -extern u8 D_800D5DA8; -extern void func_8017084C(s32 a0); -extern u8 D_800D5A34[]; -extern void func_80170AD8(void *a0); -extern void func_80171904(s32 a0); -extern void func_80170B48(int a0); -extern void func_80170928(void); -extern u8 D_800D59EC[]; -extern void func_80170970(void); -extern u8 D_800D599C[]; -extern void func_801709B8(void); -extern u8 D_800D5934[]; -extern void func_80170A00(void); -extern void func_80170A48(void); -extern u8 D_800D5DC0[]; -extern void func_80170A90(void); -extern void (*D_8018EA84[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_8018EA8C[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8018EA94[])(void); -extern void func_80170C74(void *a0); -extern s32 func_8017197C(u8 *a0); -extern void func_80170CF0(void *a0); -extern void func_80170CB0(u8 *a0); -extern void (*D_8018EA9C[])(void); -extern void func_80170D68(void *a0); -extern void func_80170DE0(u8 *a0); -extern void func_80170DA4(u8 *a0); -extern s32 D_8011F73C; -extern s32 D_8011F740; -extern void func_801718AC(void *a0); -extern void func_80170DE0(u8 * _arg0); -extern void (*D_8018EAA4[])(void); -extern void func_80170E34(void *a0); -extern void func_80170EAC(u8 *a0); -extern void func_80170E70(u8 *a0); -extern int func_800D0F8C(int a0); -extern void func_80170EAC(u8 * _arg0); -extern void (*D_8018EAAC[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8018EAB4[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_8018EABC[])(void); -extern void func_80171064(void *a0); -extern void func_801710DC(u8 *a0); -extern void func_801710A0(u8 *a0); -extern u16 D_8011F73A; -extern void func_801710DC(u8 * arg0); -extern void (*D_8018EAC4[])(void); -extern void func_80171120(void *a0); -extern void func_8017118C(u8 *a0); -extern void func_8017115C(u8 *a0); -extern void func_80142454(s32 a0); -extern void func_8017118C(u8 * a0); -extern void (*D_8018EACC[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8018EAD4[])(void); -extern void func_80171260(void *a0); -extern s32 func_80012F74(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80171384(void *a0); -extern void (*D_8018EADC[])(void); -extern void func_801714E4(void *a0); -extern void func_8017162C(void *a0); -extern void func_80171520(s32 a0); -extern s32 func_801716AC(s32 a0, void *a1, s32 *a2); -extern s32 func_80012FC8(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_800A5E94; -extern u8 D_800A5E95; -extern u8 D_800A5E96; -extern s32 func_801716AC(s32 a0, void * a1, s32 * a2); -extern int func_800D0FE0(int a0); -extern void func_801717A0(void *a0); -extern void func_8013E588(void *a0); -extern void func_801717F4(void *a0); -extern void func_80171824(void *a0); -extern void func_80171854(void *a0); -extern void func_80171884(void); -extern void func_80171A1C(u8 *a0); -extern void func_80171928(void * a0); -extern void func_8017196C(s32 *a0, s8 a1); -extern void func_80171A04(s32 *a0); -extern void func_80171A10(s32 *a0); -extern void func_80171A34(s32 *a0, s8 a1); -extern s32 func_80171A44(u8 *a0); -extern s32 func_80171A58(u8 *a0); -extern s32 func_80171A6C(u8 *a0); -extern void func_80171A80(s32 *a0, s32 a1); -extern s32 func_80171A88(s32 a0); -extern s16 func_80171AB0(s32 param_1, void * _arg1); -extern void func_80171B10(void *a0); -extern void func_80171EC8(s32 a0); -extern s32 func_80171C64(s32 param_1, s32 param_2); -extern s32 func_80171D78(s32 a0, s32 a1); -extern int func_8017250C(short *a0, short *a1); -extern s32 func_80171CC4(void * a0, void * a1); -extern s32 func_80171FFC(short *a0, short *a1, s32 a2); -extern s32 func_80171D1C(void * a0, void * a1, s32 a2); -extern s32 func_8017248C(s32 a0, s32 a1); -extern s32 func_80171E08(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_80047948(s32 a0); -extern s32 func_8004787C(s32 a0); -extern void func_80172170(s32 a0, s32 a1); -extern s32 func_8017209C(void *arg0, void *arg1, s32 arg2, s32 arg3); -extern void func_801722CC(s32 *a0); -extern void func_80172304(s32 *a0); -extern void func_80172310(u8 *a0); -extern void func_801723C4(s32 param_1, s32 param_2); -extern void func_80161C24(s32, s32); -extern void func_80172414(s32 a0); -extern s32 func_801724EC(s32 a0); -extern s32 func_8017248C(s32 arg0, s32 arg1); -extern s32 func_80013450(s32); -extern s32 func_80172560(u8 *a0, u8 *a1); -extern s32 func_8017261C(u8 *a0); -extern s32 func_80172644(u8 *a0); -extern s32 func_80172670(s32 *a0); -extern s32 func_80172688(s32 *a0); -extern s32 func_80172694(s32 *a0); -extern s32 func_801726A0(s32 *a0); -extern s32 func_801726AC(s32 *a0); -extern s32 func_801726B8(s32 *a0); -extern s32 func_801726C4(s32 *a0); -extern s32 func_80172760(s32 a0); -extern s32 func_80174650(s32); -extern void (*D_80127088)(void); -extern s32 D_801270BC; -extern void func_801726D0(void * _arg0); -extern void func_80172710(void); -extern void func_80174684(void *); -extern void func_80172738(void); -extern s16 D_80126B30; -extern s32 func_801727D0(void *a0); -extern void func_80172780(void *a0); -extern void func_80172844(u8 *a0); -extern void func_8017280C(u8 *a0); -extern void func_8017288C(void); -extern s32 func_801728E4(void *a0); -extern void func_80172894(void *a0); -extern void func_80172958(u8 *a0); -extern void func_80172920(u8 *a0); -extern s16 D_80126B36; -extern void func_80172958(u8 * a0); -extern void func_801729A8(void); -extern s32 func_801729F0(void *a0); -extern s16 D_80126B34; -extern s16 D_80126B32; -extern void func_801729B0(s32 a0); -extern void func_80172A8C(void *a0); -extern void func_80172A2C(int param_1); -extern void func_80172ACC(u8 *a0); -extern void func_80172B0C(void); -extern s32 func_80172B44(void *a0); -extern void func_80172B14(s16 a0); -extern s32 D_801150F8; -extern void func_80172BC8(void *a0); -extern void func_80172B80(u8 *a0); -extern void func_80172C48(void); -extern void (*D_8018EB20[])(void); -extern void func_80172CA0(void *a0); -extern void func_80172D14(u8 *a0); -extern void func_80172CDC(u8 *a0); -extern void func_80172D14(u8 * a0); -extern void func_80172D60(void); -extern s32 D_80127508; -extern s32 func_80172DAC(void *a0); -extern void func_80172D68(s32 a0); -extern void func_80172E20(u8 *a0); -extern void func_80172DE8(u8 *a0); -extern void func_80172E20(u8 * a0); -extern void func_80172E8C(void); -extern void func_8017303C(void *); -extern void func_80172E94(void); -extern void func_80172ED4(void); -extern void func_80172EFC(void); -extern void func_80172F24(void); -extern u8 D_800D47F4[]; -extern void func_80172F4C(void); -extern void func_80172F9C(void); -extern u8 D_800D5C6C[]; -extern void func_80172FEC(void); -extern s32 func_80173078(void *a0); -extern void func_8017303C(void * a0); -extern void func_801730FC(struct S801730FC *a0); -extern void func_801730B4(s32 a0); -extern void func_8017316C(void); -extern s32 func_8017319C(void *a0); -extern void func_80173174(void); -extern u8 D_800D5AA0[]; -extern void func_80173220(void *a0); -extern void func_801731D8(s32 *a0); -extern M2C_UNK D_8018EAE4; -extern void func_80173220(void * arg0); -extern void func_80173294(void); -extern void func_801732C4(); -extern void func_8017329C(void); -extern void func_801732C4(s32 *a0); -extern void func_8017331C(); -extern void func_801732F4(void); -extern void func_8017331C(s32 *a0); -extern void func_80173374(); -extern void func_8017334C(void); -extern void func_80173374(s32 *a0); -extern void func_801733A4(void); -extern void func_801733CC(s32 a0); -extern void func_801734BC(s32 a0, s32 a1); -extern s16 D_80126B3E; -extern void func_80173460(s32 a0, s32 a1); -extern void func_801734BC(s32 arg0, s32 _unused1); -extern void (*D_8018EB50[])(void); -extern void func_80173544(void *a0); -extern void func_801735B8(u8 *a0); -extern void func_80173580(u8 *a0); -extern s16 D_80126B40; -extern void func_801735EC(void *a0); -extern void func_80173648(u8 *a0); -extern void func_801736A8(void); -extern s32 func_8014C118(void *a0, s32 a1, s32 a2); -extern s32 func_801736FC(void *a0); -extern void func_801736B0(s32 a0, s32 a1); -extern void func_80173770(u8 *a0); -extern void func_80173738(u8 *a0); -extern void func_801723C4(s32 a0, s32 a1); -extern void func_801737B0(void); -extern s32 func_801737E8(void *a0); -extern void func_801737B8(s16 a0); -extern void func_8017385C(u8 *a0); -extern void func_80173824(u8 *a0); -extern void func_801738D4(void); -extern s32 func_8017390C(void *a0); -extern void func_801738DC(s16 a0); -extern void func_80173980(u8 *a0); -extern void func_80173948(u8 *a0); -extern void func_801739D8(u8 *a0); -extern void func_80173A20(void); -extern s32 D_8012750C; -extern void func_80173A60(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80173A28(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void (*D_8018EB8C[])(void); -extern void func_80173B4C(void *a0); -extern void func_80173BC0(u8 *a0); -extern void func_80173B88(u8 *a0); -extern void func_80173C64(u8 *a0); -extern void func_80173E1C(s32 a0); -extern s16 D_80126938; -extern s16 D_80126B3A; -extern void func_800D128C(s32, s32); -extern void func_80174158(s32 a0); -extern void func_8002A088(s32); -extern void func_8002A2D4(s32); -extern void func_8002A544(s32); -extern void func_8002A7B4(s32); -extern s32 func_80174188(s32 a0); -extern void func_801741A8(s32 a0); -extern s32 func_800D0EC4(void); -extern void func_800D0F0C(s32, s32); -extern void func_80145EE8(s32); -extern void func_80173EF8(void *param_1); -extern s32 func_8014BCEC(s32, s32); -extern void func_801741A8(s32 _arg0); -extern s16 D_80126B3C; -extern s16 D_8011F9C8; -extern void func_801741EC(u8 *a0); -extern void func_80174274(void); -extern s32 func_801742A4(void *a0); -extern void func_8017427C(void); -extern void func_80174318(u8 *a0); -extern void func_801742E0(u8 *a0); -extern void func_80174354(void); -extern s32 func_80174384(void *a0); -extern void func_8017435C(void); -extern void func_801743F0(u8 *a0); -extern void func_801743C0(u8 *a0); -extern void func_801743F0(u8 * a0); -extern void func_80174430(void); -extern s32 func_80174474(void *a0); -extern void func_80174438(s32 a0); -extern void func_801744E0(u8 *a0); -extern void func_801744B0(u8 *a0); -extern void func_80174524(void); -extern void func_80174554(); -extern void func_8017452C(void); -extern void func_80174554(s32 arg0); -extern void func_801745AC(); -extern void func_80174584(void); -extern void func_801745AC(s32 *a0); -extern void func_80174604(void); -extern void func_801745DC(void); -extern void func_80174630(void); -extern s32 func_80174650(s32 _arg0); -extern void func_80174674(void); -extern void func_801746A4(void); -extern s32 func_800CF8CC(void); -extern void func_80174714(void); -extern s32 func_80174754(void); -extern s16 func_80174764(void); -extern s16 func_80174774(void); -extern s32 func_801747CC(void *a0); -extern void func_80174784(void); -extern s32 func_801747AC(s32 a0); -extern s32 func_80174808(u8 *a0); -extern void func_8017481C(void); -extern s32 func_80174888(void *a0); -extern void func_80174824(void); -extern void func_8017484C(s32 a0); -extern void func_801748C4(s32 a0); -extern void func_801748E4(void); -extern void func_8012A018(s32 a, s32 b); -extern s32 func_8017496C(void *a0); -extern s32 D_80126954; -extern s32 D_80126950; -extern s32 D_8012695C; -extern s16 D_80126968; -extern s16 D_8012696A; -extern s16 D_8012696C; -extern s16 D_80126976; -extern s16 D_80126978; -extern s16 D_8012697A; -extern void func_801748EC(void); -extern s32 func_801749C8(); -extern s32 func_801749A8(s32 a0); -extern void func_80174BBC(void *a0); -extern void func_8012A0E0(void); -extern void func_80174BF4(void *a0); -extern void (*D_8018EBE4[])(); -extern void func_80174BF4(void * arg0); -extern s32 func_80174CB0(s32, s32); -extern s32 func_80174C60(s32 a0); -extern void func_80174C80(s32 a0); -extern s32 D_8012697C; -extern u16 D_80126980; -extern s32 func_80174F28(void *a0); -extern void func_80174E9C(s32 a0); -extern void func_80174EF0(s32 a0, s16 a1); -extern s32 func_80175014(u8 *a0, u8 *a1, s32 a2); -extern void func_80174F64(u8 *a0); -extern void func_80174FBC(u8 *a0); -extern s32 func_8017509C(u8 *a0, s32 a1, u8 *a2, u8 *a3); -extern void func_80175184(s32 *a0); -extern void func_80175114(s32 *a0); -extern void func_80175184(); -extern void func_80175150(s32 *a0); -extern void (*D_8018EBF4[])(void*); -extern s32 func_80175268(s32); -extern void func_80175184(s32* arg0); -extern s32 func_80175218(void *a0); -extern void func_801751D8(void *a0); -extern void (*D_8018EBFC[])(s32); -extern s32 func_80175218(void * param_1); -extern void func_801752BC(s32 *a0); -extern u8 D_8011F7A8; -extern u8 D_8011F7A9; -extern u8 D_8011F7AD; -extern u8 D_8011F7AE; -extern void func_80175414(s32 _arg0); -extern void func_80175494(void); -extern void (*D_8018ED64[])(); -extern s32 func_801758FC(void); -extern s32 func_80175820(void); -extern s32 func_801759D8(void); -extern void func_8017553C(s32 *param); -extern void func_801757A0(s32 a0); -extern short D_800B9A02; -extern void func_80175590(void *arg0); -extern s16 D_800B9A02; -extern void func_801757A0(s32); -extern void func_80175624(void *a0); -extern void func_801757E0(int); -extern void func_80175668(void); -extern void (*D_8018ED70[])(); -extern void func_80175690(s32 *param); -extern void func_80175DA8(s32 a0); -extern void func_80175AB8(s32 a0); -extern void func_80176144(s32 a0); -extern void func_801756E4(s32 arg0); -extern void func_80175798(void); -extern void func_80176734(s32 a0); -extern void func_80176218(s32 a0); -extern void func_80176D00(s32 a0); -extern void func_801757E0(s32 a0); -extern s32 func_80178004(s32 a0, s32 a1, s32 a2); -extern u8 D_8011F7B1; -extern u16 D_8011F7B4; -extern u16 D_8011F7B6; -extern s16 D_8011F81E; -extern void *func_80177784(void *a0, s32 a1, s32 a2, s32 a3); -extern u32 func_801783D0(s32 a0, s32 a1); -extern void *func_801777BC(void *a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern u16 D_8011F82C; -extern u16 D_8011F82A; -extern u32 * func_80176D94(void *param_1, u32 param_2, s16 param_3_); -extern void func_801778A8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80176FF4(s32 a0); -extern u16 D_8011F830; -extern u16 D_8011F82E; -extern u32 * func_801770E0(void *param_1, u32 param_2, s16 param_3_); -extern void func_80177340(s32 a0); -extern u8 D_8011F837; -extern u8 D_8011F7F0; -extern u8 D_8011F7AB; -extern u32 * func_8017742C(u32 *param_1, s32 param_2, s32 param_3); -extern void func_801776EC(u8 *a0); -extern void * func_80177784(void *a0, s32 a1, s32 a2, s32 a3); -extern uint * func_80177EA4(uint *param_1, int param_2, uint param_3, int param_4); -extern void func_80177F84(s32 param_1, s32 param_2); -extern u32 * func_80178298(u32 *param_1, u8 *param_2, short param_3, short param_4); -extern M2C_UNK D_801E9014; -extern void func_80178438(u16 *arg0); -extern void func_801787D4(void); -extern void func_8012A908(void); -extern void func_8017869C(s32 a0); -extern void func_80130D0C(s32 a0); -extern void func_8013E370(void); -extern s32 D_8011DB08; -extern void func_8017849C(void); -extern void func_8013E4B4(void); -extern s16 D_801270C4; -extern s32 D_801274D8; -extern s16 D_801270C2; -extern u8 D_801270C6; -extern u8 D_801270C7; -extern s32 D_801274DC; -extern s32 D_801274E0; -extern void func_80178608(void); -extern void func_80178744(s32 a0, s32 a1); -extern void func_80178840(); -extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern s32 func_801788B8(s32 arg0, s32 arg1); -extern s32 func_801789AC(s32 arg0); -extern s16 D_801EAFC8; -extern int func_80178970(void); -extern s32 func_80178B18(s32 param_1, s32 param_2); -extern s32 func_80178B70(s32 param_1, s32 param_2); -extern void func_80178BB8(s32 a0, s32 a1); -extern s32 func_80178BF8(); -extern s32 D_801EA388; -extern short D_801EB03C; -extern void func_80178CBC(s32 arg0, s32 arg1); -extern void func_80178D18(void); -extern s32 func_80178D40(s32 arg0, s32 arg1); -extern void func_80179B28(s32 a0); -extern void func_80179B74(u16 *p); -extern void func_80179D30(u16 *a0); -extern void func_80179D78(u16 *a0); -extern void func_80179DCC(short a0); -extern void func_80179DF8(void); -extern void func_80179E1C(short a0); -extern void func_80179E48(s16 a0); -extern void func_80179E74(s16 a0); -extern void func_80179EA0(u16 *a0); -extern void func_80179EE8(short a0); -extern void func_80179F14(s16 a0, s16 a1); -extern void func_80179F44(void); -extern void func_80179F6C(short a0); -extern void func_80179F98(u16 *a0); -extern void func_80179FEC(u16 *a0); -extern void func_8017A040(u16 *a0); -extern s32 D_801EA7B4; -extern void func_8017A094(s32 arg0); -extern void func_8017A0C4(s32 arg0); -extern void func_8017A0F4(void); -extern void func_8017A11C(void); -extern s32 D_801EA7DC; -extern void func_8017A144(s32 a0); -extern void func_8017A180(void); -extern void func_8017A1A8(void); -extern void func_8017A1D0(void); -extern void func_8017A1F8(void); -extern void func_8017A220(void); -extern void func_8017A248(void); -extern void func_8017A270(void); -extern void func_8017A298(void); -extern void func_8017A2C0(void); -extern void func_8017A2E8(void); -extern void func_8017A310(void); -extern void func_8017A338(void); -extern void func_8017A360(void); -extern void func_8017A388(void); -extern s16 D_801EA798; -extern s32 func_8017A3B0(void); -extern void func_80172310(u8*); -extern void func_80172780(void*); -extern void func_80172894(void*); -extern void func_801729B0(s32); -extern void func_80172B14(s16); -extern void func_80172C50(u16 *); -extern void func_80172D68(s32); -extern void func_801733FC(s16, u16 *); -extern void func_80173460(s32, s32); -extern void func_801734BC(s32, s32); -extern void func_801736B0(s32, s32); -extern void func_801737B8(s16); -extern void func_801738DC(s16); -extern void func_80173A28(s32, s32, s32, s32, s32, s32); -extern void func_80174438(s32); -extern void func_8017A4AC(void); -extern s32 func_8017AD0C(s32 arg0); -extern s32 func_8017AD0C(s32); -extern s32 func_8017ADE8(s32 a0); -extern s32 func_8017AE08(void); -extern void func_8017B0E4(int param_1, int param_2); -extern s16 D_801EA79C; -extern u16 D_801EA81C; -extern u16 D_801EA81E; -extern u16 D_801EA820; -extern void func_8017B1D8(void); -extern s32 func_8017B238(s32 param_1, s32 param_2); -extern s32 func_8017B368(s32 param); -extern s32 func_8017B614(s32 param_1, s32 param_2); -extern s32 D_80114F30; -extern s32 D_80114F34; -extern s32 D_80114F38; -extern s32 D_80114F24; -extern s32 D_80114F28; -extern s32 D_80114F2C; -extern u8 D_8012694C; -extern s16 D_801EA814; -extern s16 D_801EA816; -extern s16 D_801EA818; -extern s16 D_801EA80C; -extern s16 D_801EA80E; -extern s16 D_801EA810; -extern void func_8017B7A8(void); -extern s16 D_801EA82C; -extern s16 D_801EA82E; -extern s16 D_801EA830; -extern s16 D_801EA834; -extern s16 D_801EA836; -extern s16 D_801EA838; -extern void func_8017B824(void); -extern void func_8017B880(void); -extern s32 func_8017B8E8(s32 src); -extern short D_801EA824; -extern short D_801EA826; -extern short D_801EA828; -extern void func_8017B940(void); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void RotTransSV(void *a0, void *a1, void *a2); -extern SV4 D_801EA7BC; -extern SV4 D_801EA7C4; -extern void func_8017BA3C(s32 param_1, s32 param_2); -extern s32 func_8017BB34(s32 param_1, s32 param_2); -extern void (*D_801EA7E4[10])(int); -extern void func_8017BC38(int param_1); -extern void func_8017B0E4(int, int); -extern void func_8017BCA0(int param_1); -extern void func_8012A4BC(void); -extern void func_8017BCF4(int param_1); -extern void (*D_801EA7E0)(void); -extern void func_8017BD50(int param_1); -extern void (*D_8018EF4C[])(void); -extern void func_8017BE60(void *a0); -extern void func_8017BE9C(void); -extern void func_8017BEA4(void); -extern void func_8017BEAC(void); -extern void func_8017BEB4(void); -extern void (*D_8018EF58[])(void); -extern void func_8017BEE4(void *a0); -extern void func_8017BF98(void); -extern s32 func_8017BFA0(void); -extern void func_8017C07C(void); -extern void (*D_8018F024[])(void); -extern void func_8017C0C8(void *a0); -extern void func_8017C154(); -extern void func_8017C12C(void); -extern void func_8017C14C(void); -extern void (*D_8018F064[])(void); -extern void func_8017C664(void *a0); -extern void (*D_8018F084[])(void); -extern void func_8017CE54(void *a0); -extern void (*D_8018F094[])(void); -extern void func_8017D0DC(void *a0); -extern void (*D_8018F0A0[])(void); -extern void func_8017D63C(void *a0); -extern void (*D_8018F224[])(void); -extern void func_8017DB00(void *a0); -extern void func_8017DB74(u8 *a0); -extern void func_8017DD74(void); -extern void func_8017DF7C(void); -extern void func_8017EB7C(s32 arg0); -extern void func_8017FA5C(s32 arg0, s32 arg1, s32 arg2); -extern void (*D_8018F500[])(void); -extern void func_801805BC(void *a0); -extern u8 D_8018F450; -extern void func_801805F8(s32 a0); -extern void func_80180714(void); -extern M2C_UNK D_8018F4F8; -extern void func_8018071C(void); -extern s32 func_80180744(void); -extern s16 func_80180760(void); -extern s32 D_8018F510; -extern s32 D_8018F56C[]; -extern void func_80180B84(int param_1); -extern void func_80180C34(s32 p); -extern void (*D_8018F5B0[])(void); -extern void func_80180DFC(void *a0); -extern s32 func_800D222C(s32 a0, void *a1, s32 a2); -extern s32 func_8001CF30(void *a0); -extern void func_80180E38(s32 param_1); -extern void func_80180FFC(u8 *p); -extern void (*D_8018F5B8[])(void); -extern void func_80181090(void *a0); -extern u8 D_8018F5A4; -extern void func_801810CC(s32 a0); -extern void func_80181170(int a0); -extern void (*D_8018F6D0[])(void); -extern void func_80181BD0(void *a0); -extern void func_8012C218(void*); -extern void func_80181F78(void); -extern void (*D_8018F728[])(void); -extern void func_80182028(void *a0); -extern void func_80182348(int); -extern void func_801820B4(int param_1); -extern void (*D_8018F73C[])(void); -extern void func_80182654(void *a0); -extern void func_801826D0(void *a0); -extern void func_80182740(void *a0); -extern void func_801827CC(void *a0); -extern void (*D_8018F750[])(void); -extern void func_801828F4(void *a0); -extern void func_80182C28(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80182BB0(s32 arg0, s32 arg1); -extern void func_80182BD4(s32 arg0, s32 arg1, s16 arg2); -extern void func_80182BFC(void *a0, void *a1, s32 a2, s32 a3); -extern void (*D_8018F7AC[])(void); -extern void func_80182E08(void *a0); -extern void (*D_8018F804[])(void); -extern void func_801835C4(void *a0); -extern s32 func_80183644(void); -extern void func_8001BFD0(void); -extern void func_800D1E28(void); -extern s32 func_801836A8(u8 *a0); -extern void func_800D1EBC(void); -extern void func_80183724(void); -extern void (*D_8018F818[])(void); -extern void func_80183744(void *a0); -extern s32 func_801837C0(u8 *a0); -extern void func_8018383C(void); -extern void (*D_8018F824[])(void); -extern void func_8018385C(u8 *a0); -extern M2C_UNK D_8018F830; -extern void func_80183930(void); -extern s32 D_8018F83C; -extern void func_80183958(void); -extern void (*D_8018F850[])(void); -extern void func_80183A18(void *a0); -extern s32 func_80012ABC(s32 a0, s32 a1, s32 a2); -extern void func_80183B58(s32 param_1, s16 *param_2); -extern s32 D_801EAC64; -extern s32 D_801EAC68; -extern void func_80184440(void); -/* ==== end §8b carried decl layer ==== */ - -DEFINE_func_801848E4() /* dedup: shared engine-core @0x801848E4 (src/shared) */ - - - -extern s32 func_80184E4C(s32 a0, s32 a1, s16 a2, s16 a3, s32 a4); -extern void func_80016714(void *a0, s32 a1); -extern s32 func_80029178(s32 arg); -extern void func_8012CAE4(void *a0); -extern u16 D_8018FB40[]; - -void func_80184920(void *param_1) { - s32 v0; - - v0 = func_80184E4C((s32)param_1, (s32)D_8018FB40, 0x300, 0x140, 0x88); - *(s32 *)((s32)param_1 + 0xCC) = v0; - if (v0 == 0) { - goto L8018498C; - } - v0 = func_80184E4C((s32)param_1, (s32)D_8018FB40, 0x310, 0x140, 0x89); - *(s32 *)((s32)param_1 + 0xD0) = v0; - if (v0 != 0) { - goto L8018499C; - } - func_80016714(*(void **)((s32)param_1 + 0xCC), 0x38); -L8018498C: - func_8012CAE4(param_1); - return; -L8018499C: - *(s16 *)(*(s32 *)((s32)param_1 + 0xCC) + 0x12) = - *(s16 *)(*(s32 *)((s32)param_1 + 0x68) + 0xC); - *(s16 *)(*(s32 *)((s32)param_1 + 0xD0) + 0x12) = - *(s16 *)(*(s32 *)((s32)param_1 + 0x68) + 0xC); - *(s16 *)((s32)param_1 + 0x100) = 0; - v0 = func_80029178(0xB9) & 0xFF; - if (v0 == 0) { - *(s16 *)((s32)param_1 + 2) = 1; - *(s16 *)((s32)param_1 + 0x34) = 0; - return; - } - *(s16 *)((s32)param_1 + 2) = 2; - *(s16 *)((s32)param_1 + 0x34) = 2; - return; -} - - - - -extern s32 func_80029178(s32 arg); -extern s32 func_801789AC(s32 arg0); -extern s32 func_80178B18(s32 param_1, s32 param_2); -extern void func_80178D18(void); -extern s32 func_8014CB58(void); -extern s32 func_8014CB2C(void); -extern void func_8014B598(s32 a0, s32 a1); -extern s32 func_8016F1AC(void); -extern void func_80175454(void); -extern void func_800D0C48(s32 a0); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_80184DA4(s32 param_1); -extern void func_80184DF8(s32 param_1); -extern void func_80029124(s32, s32); -extern void func_80175414(s32 _arg0); /* TU-canonical (ov_SC03_014_jr_801848E4.c L1954) */ -extern u16 D_8018FE60; -extern u16 D_8018FE70; -extern M2C_UNK D_8018F4F8; - -void func_80184A08(s32 a0) { - extern s32 func_8012BD14(); - extern s32 func_801842E0(); - extern void func_8002959C(); - u16 t34; - - if (func_8012BD14() < 0x401 || *(u16 *)(a0 + 0x34) == 1 || *(u16 *)(a0 + 0x34) == 2) { - switch (*(u16 *)(a0 + 0x34)) { - case 0: - if ((func_80029178(0x8B) & 0xFF) == 0) { - func_80178B18(a0, (s32)&D_8018FE60); - *(u16 *)(a0 + 0x34) = 2; - } else { - func_80178B18(a0, (s32)&D_8018FE70); - *(u16 *)(a0 + 0x34) = *(u16 *)(a0 + 0x34) + 1; - } - break; - case 1: - if (func_801789AC(a0) == 1) { - ((void (*)(s32))func_80178D18)(a0); - *(u16 *)(a0 + 0x34) = 3; - } - break; - case 2: - if (func_801789AC(a0) == 1) { - ((void (*)(s32))func_80178D18)(a0); - *(u16 *)(a0 + 0x34) = 4; - } - break; - case 3: - if ((func_80029178(0xB9) & 0xFF) == 0 && func_8014CB58() == 3) { - func_8014B598(3, (s32)&D_8018F4F8); - if (func_8016F1AC() != 0 && (*(u16 *)(a0 + 0x100) & 4) == 0) { - *(u16 *)(a0 + 0x100) |= 4; - *(s32 *)(a0 + 0x1C) = 0; - func_80175454(); - } - if (*(u16 *)(a0 + 0x100) & 4) { - *(s32 *)(a0 + 0x1C) = *(s32 *)(a0 + 0x1C) + 1; - } - if ((*(u16 *)(a0 + 0x100) & 2) == 0 && *(s32 *)(a0 + 0x1C) == 0x5A) { - *(u16 *)(a0 + 0x100) |= 2; - func_800D0C48(0); - } - if ((*(u16 *)(a0 + 0x100) & 1) == 0 && - (func_8014CB2C() & 0x8000007F) == 0x80000003) { - t34 = *(u16 *)(a0 + 0x34) + 1; - *(u16 *)(a0 + 0x100) |= 1; - *(u16 *)(a0 + 0x34) = t34; - func_8002D4C8(0xBD8, 0); - } - } - break; - } - if ((func_80029178(0x8B) & 0xFF) == 0) { - return; - } - /* §165-24: func_80184DF8(a0) is written out on all three paths — gcc cross-jumps the - common tail but leaves the three $a0 arg-setups, which then fill the three branch - delay slots (a single shared call puts the move in the jal's own slot instead). */ - if (func_8014CB58() == 3) { - func_80184DA4(a0); - func_80184DF8(a0); - } else { - *(u8 *)(*(s32 *)(a0 + 0xCC) + 0x27) = 0x88; - func_80184DF8(a0); - } - } else { - if ((func_80029178(0x8B) & 0xFF) == 0) { - return; - } - *(u8 *)(*(s32 *)(a0 + 0xCC) + 0x27) = 0x88; - func_80184DF8(a0); - } - if (*(u16 *)(a0 + 0x100) & 1) { - if (func_801842E0() != 0) { - func_80029124(0xB9, 1); - *(u16 *)(a0 + 0x2) = 2; - *(u16 *)(a0 + 0x100) &= ~1; - *(u16 *)(a0 + 0x34) = 0; - *(u8 *)(*(s32 *)(a0 + 0xCC) + 0x27) = 0x88; - *(u8 *)(*(s32 *)(a0 + 0xD0) + 0x27) = 0x89; - func_8002959C(); - /* the TU carries `extern void func_80175414(s32 _arg0);` at file scope, - but the .s calls it with an EMPTY delay slot => zero arguments; call - through a cast so the carried decl stays untouched (house style). */ - ((void (*)(void))func_80175414)(); - } - } -} - - -extern s32 func_801847EC(void); -extern s32 func_8001AAA0(s32 arg); -extern s32 func_8016F0AC(); - -void func_80184D1C(void *a0) { - u16 v1; - - v1 = *(u16 *)((u8 *)a0 + 0x34); - switch (v1) { - case 0: - if (func_801847EC() != 0) { - *(u16 *)((u8 *)a0 + 0x34) = *(u16 *)((u8 *)a0 + 0x34) + 1; - } - /* fallthrough */ - case 1: - if (func_8001AAA0(0x71) != 0) { - *(u16 *)((u8 *)a0 + 0x34) = *(u16 *)((u8 *)a0 + 0x34) + 1; - func_8016F0AC(); - } - break; - } -} - - - -extern void func_800183E0(s32 a0); - -void func_80184DA4(s32 param_1) { - - extern u8 D_801CF780[]; - /* [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 u16 D_800B99DA; - extern u8 D_8018FE40[]; - *(u8 *)(*(s32 *)(param_1 + 0xCC) + 0x27) = 0x8A; - func_800183E0((s32)&D_801CF780[D_8018FE40[D_800B99DA & 0x1F] * 16]); -} - - - -extern void func_800183E0(s32 a0); - -void func_80184DF8(s32 param_1) { - - extern u8 D_801CF680[]; - /* [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 u16 D_800B99DA; - extern u8 D_8018FE40[]; - *(u8 *)(*(s32 *)(param_1 + 0xD0) + 0x27) = 0x8B; - func_800183E0((s32)&D_801CF680[D_8018FE40[D_800B99DA & 0x1F] * 16]); -} - - - - -DEFINE_func_80184E4C() /* dedup: shared engine-core @0x80184E4C (src/shared) */ diff --git a/src/ov_SC03_015/ov_SC03_015_jr_80184F14.c b/src/ov_SC03_015/ov_SC03_015_jr_80184F14.c deleted file mode 100644 index 528f89d93..000000000 --- a/src/ov_SC03_015/ov_SC03_015_jr_80184F14.c +++ /dev/null @@ -1,3326 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8; -typedef void (*Handler)(struct Entry_8016E95C *); -extern void func_801458E0(void); -extern s32 D_800AE6AC; -extern s32 D_800AE6B0; -extern s16 D_800B9A0A; -extern u8 D_80078E50; -extern void func_800D185C(u8 *a0); -extern void func_801458E8(void); -extern s32 func_80029504(void); -extern void func_80145B24(void); -extern u8 D_8018DAA4; -extern u8 D_8018DA14; -extern u8 D_8018D9F0; -extern u8 D_8018D9CC; -extern u8 D_8018DA80; -extern u8 D_8018DA5C; -extern u8 D_8018DA38; -extern u8 D_8018D9A8; -extern void func_80145934(void); -extern u8 D_8018DB34; -extern u8 D_8018DB10; -extern u8 D_8018DAEC; -extern u8 D_8018DAC8; -extern void func_80145A2C(void); -extern s32 func_800291DC(s32); -extern void func_800291C8(s32, s32); -extern void func_80162120(void); -extern void func_80029124(s32, s32); -extern s32 func_80165A50(s32); -extern void func_80029514(s32); -extern u8 D_80078EC0; -extern s32 D_80126B58; -extern s32 func_80028FBC(void); -extern s32 func_80029000(void); -extern s32 func_80028D9C(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_80145BF8(void); -extern s32 func_800291B4(s32 arg); -extern void func_800291A0(s32, s32); -extern void func_80145C54(void); -extern s32 func_80145CEC(); -extern s32 func_80029178(s32 arg); -extern void func_80146014(s32 a0); -extern unsigned char D_8018CF2C[]; -extern unsigned char D_8018CF5C[]; -extern unsigned char D_8018CFAC[]; -extern unsigned char D_8018CFDC[]; -extern unsigned char D_8018D00C[]; -extern void func_80145EE8(s32 param_1); -extern void MoveImage(void *a0, s32 a1, s32 a2); -extern void func_80146074(void); -extern s32 func_80146128(void); -extern void func_80146360(void); -extern void func_801463A0(); -extern void func_8014607C(void); -extern u8 D_80078EC1; -extern s32 D_80078EC8; -extern s32 D_80126B9C; -extern s32 D_8011F730; -extern u16 D_801152B8; -extern u16 D_8012693A; -extern u8 D_80126BE0[]; -extern u8 D_801150F0[]; -extern void *memcpy(void *dst, const void *src, u32 n); -extern void func_80146FC4(s32 a0); -extern void func_80150A70(s32 a0); -extern void func_80147098(s32 *a0); -extern void func_8014A638(s32 arg0); -extern s32 func_80155458(s32 a0); -extern s32 func_80029104(void); -extern void func_80029344(void); -extern void func_8014ADE0(s32 a0); -extern void func_8014B350(s32 a0); -extern void func_8014B7A4(s16 *param_1); -extern s32 func_80161D58(s32 a0); -extern void func_80161A90(s32 a0); -extern void func_8014B504(u16 *a0); -extern void func_80149BEC(s32 a0); -extern void func_8014B5D0(s32 *a0); -extern void func_8014C99C(u8 *a0); -extern void func_8014B190(s32 s0); -extern void func_80148648(s32 a0, s32 a1); -extern s32 func_80149228(s32 a0); -extern void func_8014A59C(s32 a0); -extern void func_8016F14C(void *a0); -extern void func_80154418(void *a0); -extern void func_80154BE4(s32 a0); -extern void func_80165694(s32 arg0); -extern void func_801654A8(s32 a0); -extern void func_8014A680(s32 a0); -extern void func_8014A6A8(s32 a0); -extern void func_8014A71C(s32 a0); -extern void func_80172588(s32 *a0); -extern void func_801473DC(s32 *a0); -extern void func_80015978(s32 a0, s32 *a1); -extern void (*D_8018D05C[])(void *); -extern u8 D_80126BA4; -extern s32 D_80127098; -extern s32 D_80127094; -extern s32 D_80127090; -extern void func_80146534(void); -extern void func_8001D074(s32 a0, s32 a1); -extern void func_80146554(void); -extern void func_80146578(void); -extern void func_8001CFDC(s32, s32); -extern void func_8014659C(void); -extern void func_8001D074(s32, s32); -extern void func_801465C0(void); -extern void func_801465E4(void); -extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); -extern s32 D_8011F9D0; -extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); -extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 D_8011F750; -extern s32 D_8011F754; -extern u8 * func_801468C8(s32 arg0, u8 arg1); -extern s32 D_8011D030; -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); -extern s32 func_80146B9C(void *a0); -extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); -extern u16 D_8011DA28; -extern s32 func_80146B9C(void * arg0); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80146CA0(void *a0); -extern void func_80146CB4(void *a0); -extern void func_80146CC8(s32 a0); -extern void func_80146D30(s32 a0); -extern void func_80146D80(s32 *a0); -extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80146D90(s32 a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); -extern void func_80146E90(s32 *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80015954(s32 a0, s32 a1); -extern void func_80149374(s32 a0, s32 a1); -extern void func_80146F58(s32 a0, s32 a1); -extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 func_8012A68C(void); -extern s16 func_8012A758(void); -extern void func_8004978C(s16 *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern u8 D_80126DB0[]; -extern u16 D_80126DB6; -extern void func_8014704C(s32 *a0); -extern s32 func_80147054(void *a0); -extern void func_80147060(u8 * a0); -extern void func_8014706C(void *arg0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80147084(s32 *a0); -extern void func_8014708C(void *arg0); -extern s32 func_801470A0(void *a0); -extern void func_801470AC(s32 *a0); -extern void func_801470B4(s32 arg0); -extern void func_801470C0(s32 a0); -extern void func_80147118(s32 a0); -extern s16 D_80126BB8; -extern s16 D_80126BBA; -extern s16 D_80126BBC; -extern void func_80147264(s32 a0); -extern void func_80147290(void); -extern void func_801472B4(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void *D_8012707C; -extern void func_801472DC(void); -extern void func_801472F0(void *a0); -extern void func_80147364(u16, s32); -extern void func_80147300(u16 arg0); -extern void func_80147324(s32 arg0); -extern void func_801473EC(s32 *a0); -extern void func_80147460(s32 a0); -extern void func_80147514(); -extern void func_80147628(s32 a0); -extern void func_80147478(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); -extern s32 func_800129CC(s32 a0, s32 a1); -extern void func_80147514(s32 arg0); -extern void func_80013F3C(s32 a0); -extern void func_80012558(s32 a0, s32 a1); -extern void func_800126C4(s32 a0, s32 a1); -extern void func_800123F0(s32 a0, s32 a1); -extern void func_80147718(s32 a0); -extern void func_80147788(void *a0, s32 a1); -extern void func_801477A8(void *a0, s32 a1); -extern void func_801477C8(void *a0, s32 a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80147814(s32 a0, s32 a1); -extern void func_80147928(int a0, int a1); -extern void func_8014799C(int a0, int a1); -extern void func_80147A10(int a0, int a1); -extern void func_80147860(int a0, int a1, int a2, int a3); -extern void func_80147948(s32 a0, s32 a1, s32 a2); -extern void func_801479BC(s32 a0, s32 a1, s32 a2); -extern void func_80147A30(s32 a0, s32 a1, s32 a2); -extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147948(int a0, int a1, int a2); -extern void func_801479BC(int a0, int a1, int a2); -extern void func_80147A30(int a0, int a1, int a2); -extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147A84(s32 arg0); -extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147AAC(s32 arg0); -extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80147B5C(s32 a0, void *a1); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern void func_80147B18(s32 a0); -extern void func_80147B5C(s32 arg0, void *arg1); -extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147DC0(s32 a0, s32 a1); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147F50(s32 arg0); -extern void func_80148038(s32 a0, s32 a1); -extern s32 ratan2(s32 a0, s32 a1); -extern s32 csqrt(s32 a0); -extern s32 func_80012A60(s32 a0, s32 a1); -extern void func_80148094(int param_1, short *param_2, int *param_3); -extern void func_801485B8(s32 a0, s32 a1, s32 a2); -extern void func_801484B0(s32 a0, s32 a1); -extern s32 func_80154358(void *a0); -extern void func_801484E8(s32 a0, s32 a1); -extern void func_80148534(s32 a0, s32 a1); -extern void func_8014856C(s32 a0, s32 a1); -extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); -extern void func_80148634(void *a0); -extern u8 D_800B9A64; -extern s32 func_80014DC0(); -extern s32 func_80014D68(); -extern s32 func_80014D94(); -extern s32 func_80014CF8(); -extern void func_800120DC(); -extern s32 func_800CF8B4(); -extern u16 func_801487F4(s32 *a0); -extern u16 func_80148800(s32 *a0); -extern u8 func_8014880C(s32 *a0); -extern u16 func_80148818(s32 *a0); -extern s32 func_80047D3C(s32 a0); -extern s32 func_80148824(void *arg0); -extern s32 func_801488A8(u8 *a0); -extern s32 func_8014891C(s32 a0); -extern s32 func_80148980(u8 *a0); -extern s32 func_801489E8(s32 a0); -extern s32 func_80148A48(s32 a0); -extern int func_80148AFC(void *a0); -extern void func_80148AAC(u8 *a0); -extern s32 func_80148C18(void); -extern s32 func_80148C20(s32 a0, s16 a1); -extern s32 func_80148C34(s32 a0, s32 a1); -extern s32 func_80148C4C(s32 a0, s32 a1); -extern s32 func_80148C64(s32 a0, s32 a1); -extern s32 func_80148C7C(void); -extern s32 func_80148C84(s32 a0, s32 a1); -extern s32 func_80148C9C(s32 a0, s32 a1); -extern s32 func_80148CB4(s32 a0, s32 a1); -extern s32 func_80148CCC(s32 a0, s32 a1); -extern s32 func_80148CE4(void); -extern s32 func_80148CEC(void); -extern s32 func_80148CF4(s32 a0, s32 a1); -extern s32 func_80148D0C(s32 a0, s32 a1); -extern s32 func_80148D24(void *a0, int a1); -extern s32 func_80148D3C(void); -extern s32 func_80148F60(void); -extern s32 func_80148F68(s32 a0); -extern s32 func_80148F74(s32 a0); -extern s32 func_80148F80(s32 a0); -extern s32 func_80148F8C(s32 a0); -extern s32 func_80148F98(void); -extern s32 func_80148FA0(s32 a0); -extern s32 func_80148FAC(s32 a0); -extern s32 func_80148FB8(s32 a0); -extern s32 func_80148FC4(s32 a0); -extern s32 func_80148FD0(void); -extern s32 func_80148FD8(void); -extern s32 func_80148FE0(s32 a0); -extern s32 func_80148FEC(s32 a0); -extern s32 func_80148FF8(s32 a0); -extern s32 func_80149004(void); -extern void func_8014900C(s32 *a0); -extern void func_80149020(s32 *a0); -extern void func_80149034(s32 *a0); -extern void func_80149048(s32 *a0); -extern void func_8014905C(u8 *a0); -extern void func_801490E0(s32 *a0, s16 a1); -extern void func_801490E8(s32 *a0, s16 a1); -extern void func_801490F0(s32 *a0, s16 a1); -extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); -extern void func_801490F8(s32 a0, s32 a1); -extern s32 func_801491C4(s32 a0); -extern s32 func_80149184(s32 a0); -extern s32 D_801151D4; -extern void func_80149204(s32 *a0); -extern void func_80149210(s32 a0, s32 a1); -extern s32 func_80149284(s32 *a0, s32 a1); -extern void func_80149350(s32 arg0); -extern void func_80149290(s32 a0); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_80149374(s32 arg0, s32 arg1); -extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8014942C(s32 arg0); -extern void func_8012EF70(s32 a0, s32 a1); -extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012EFB8(s32 a0); -extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); -extern void func_8014964C(s32 param_1, s32 param_2); -extern s32 func_801496D4(void *a0); -extern void func_8015AD08(); -extern void func_80149704(void); -extern void func_8015ACC4(); -extern void func_80149724(void); -extern u8 D_80078EBF; -extern s32 func_80149744(struct S_80149744 *a0); -extern void func_8015F7A0(); -extern void func_80149788(void); -extern void func_801653B8(); -extern void func_80149864(void); -extern s16 currentLocationId; -extern s32 func_8016F1AC(void); -extern s32 func_80149884(void); -extern void func_80160B00(); -extern void func_801498C0(void); -extern s32 func_80149AA8(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern void func_80146750(void *a0); -extern s32 func_801498E0(s32 *a0); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_80147364(u16 a0, s32 a1); -extern s32 func_800CCF28(s32 a0); -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_8015DAC4(s32 *a0); -extern void func_8015554C(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern void func_80149B14(s32 *a0); -extern u8 func_8014BEF8(void); -extern s32 func_80149B54(s32 * arg0); -extern void func_8015DE24(s32 *a0); -extern void func_80157510(s32 *a0); -extern void func_80149BAC(s32 *a0); -extern s32 func_80029178(s32 a0); -extern s32 func_80149C08(s32 arg0); -extern void func_801577C8(); -extern void func_80149C94(void); -extern void func_80157D20(void); -extern void func_80149CB4(void); -extern s32 func_80149CD4(s32 a0); -extern u8 func_8014B5B8(s32 *a0); -extern s32 func_80149D10(s32 a0); -extern s32 func_80149E94(s32 a0); -extern s32 func_80149DD8(s32 a0); -extern s32 func_80149D9C(s32 a0); -extern u8 D_801202A0[]; -extern s32 func_80149F2C(s32 a0, s32 a1); -extern s32 func_80149E94(s32 arg0); -extern void func_80149FA8(void); -extern s32 D_8018D124[]; -extern u8 D_80078E78[]; -extern s32 func_80149FB0(s32 a0); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern void func_8014A1B0(s32 a0, s32 a1); -extern s32 func_8014A048(s32 param_1); -extern u16 func_80156370(u16 a0); -extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); -extern void func_8015D4B4(); -extern void func_8014A218(void); -extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); -extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); -extern s32 func_8014A238(s32 arg0); -extern s32 func_8014A2E4(s32 a0); -extern void func_8014A380(s32 a0, s32 a1); -extern s16 D_801152B0; -extern s16 D_801152B4; -extern s32 func_8014A3E0(struct S_8014A3E0 *a0); -extern s32 func_8014A454(s32 a0); -extern s32 func_8014A4B4(void *a0); -extern void func_8015EDD4(); -extern void func_8014A4FC(void); -extern s32 func_8014A674(s32 *a0); -extern s32 func_8014A69C(s32 *a0); -extern s32 func_8014A6C4(s32 a0); -extern void func_8015E184(); -extern void func_8014A830(void); -extern s32 func_80029AF4(void); -extern s32 func_8014A850(s32 param_1); -extern void func_8014AA04(s32 a0); -extern void func_801599A4(void *a0); -extern void func_80159B3C(void *a0); -extern s32 func_80165A20(s32 a0); -extern void func_8014AB7C(); -extern void func_8014AC10(); -extern void func_8014AA28(void); -extern void func_8014AB5C(void); -extern void func_80162CCC(void); -extern void func_8014AB7C(s32 arg0); -extern void func_8014ABF0(void); -extern void func_80016714(void *a0, s32 a1); -extern void func_8014AC10(s32 arg0); -extern void func_8014ACC0(s32 a0, s32 a1); -extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); -extern void func_8014ACE8(void *a0, s32 a1, s32 a2); -extern void func_80146AFC(void *a0); -extern void func_8014ADA8(s32 a0, s32 a1); -extern void func_8014AD7C(s32 a0); -extern s32 D_80078E8C; -extern void func_8014B034(s32 arg0); -extern void func_8014B00C(s32 arg0); -extern void func_8014B084(void); -extern s16 D_80078E90; -extern void func_8014B034(s32 a0); -extern u16 D_80078EAC; -extern u8 D_80078EBA; -extern void func_800D10EC(void); -extern void func_8002AC98(void); -extern s32 func_8014B154(s32 *a0); -extern void func_8014B12C(void); -extern void func_8014B2F8(void); -extern void func_8014B4C4(void); -extern void func_8014B160(s32 a0); -extern s32 func_8016F1C4(void); -extern s16 D_80078E96; -extern s16 D_80078EB8; -extern u16 D_80078EA6; -extern void func_8014B2A8(void); -extern void func_8014B310(void); -extern void func_8014B2D0(void); -extern s32 D_80078E94; -extern s32 D_80078ECC; -extern void func_8014B33C(void); -extern u8 D_80062BF4[]; -extern void func_8014BC80(s32 a0, s32 a1); -extern void func_80019064(void *a0); -extern s32 D_80078E98; -extern void func_80166244(); -extern void func_8014B4D4(void *a0); -extern s16 D_80078E9A; -extern u8 D_80126D1C; -extern s32 D_80126D74; -extern void func_8014B598(s32 a0, s32 a1); -extern void func_8014B5B0(s32 *a0); -extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); -extern void func_8014B5D8(s32 s1); -extern s32 D_80078E9C; -extern s32 D_80078ED0; -extern void func_8014B6F0(s32 a0, s32 a1); -extern void func_8014B768(s32 a0, s32 a1); -extern void func_8014B944(s32 a0, s32 a1, s32 a2); -extern s32 D_80078EA4; -extern u16 D_80078EB2; -extern s16 D_80078EB4; -extern void func_8014BB0C(void); -extern void func_8014BB24(s32 a0, s32 a1, s32 a2); -extern void func_8014BC0C(s32 a0, s32 a1); -extern void func_8014BC44(s32 a0, s32 a1); -extern u8 D_800B9A17; -extern void func_8014BCC0(s32 a0, s32 a1); -extern u16 D_80078EB6; -extern s32 func_8014BCEC(s32 a0, s32 a1); -extern void func_8014BD24(s32 a0, s32 a1); -extern void func_8014BD60(s32 param_1, s32 param_2); -extern void func_8014BD98(s32 a0, u16 a1); -extern void func_8014BDC8(void); -extern void func_8014BDE0(void); -extern s32 func_8017267C(s32 *a0); -extern s32 func_80013294(void *a0, void *a1); -extern void func_80029ED4(s32 a0); -extern void func_8014BDE8(s32 a0); -extern void func_8014BE78(void); -extern void func_8014BE9C(void); -extern void func_80029124(s32 a0, s32 a1); -extern void func_8014BEC0(void); -extern void func_8014BF18(s32 a0); -extern void func_8014BF48(void); -extern u8 func_8014BF6C(void); -extern void func_8014BF8C(u8 arg0); -extern void func_8014BFB0(void); -extern u8 func_8014BFD4(void); -extern void func_8014BFF4(s32 a0, s32 a1); -extern void func_8014C010(s32 a0, s32 a1); -extern s32 func_8014C050(s32 a0, s32 a1); -extern s32 func_8014C088(s32 a0, s32 a1); -extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); -extern s32 func_8014C118(void * a0, s32 a1, s32 a2); -extern s32 func_8014C168(s32 * param_1, s32 param_2); -extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); -extern u8 D_8018D1AC[]; -extern void func_8014C1A0(s32 arg0, s32 arg1); -extern s32 func_80013328(s32 a0, s32 a1); -extern s32 func_8014C59C(void *a0, void *a1); -extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); -extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); -extern s32 ratan2(s32 dx, s32 dy); -extern u8 D_8018D1B4; -extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); -extern s16 func_8014C5D0(s32 a0, s32 a1); -extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); -extern u8 D_80126D17; -extern void func_8014C6AC(void); -extern void func_8014C6C0(void); -extern u8 D_80126D1E; -extern void func_8014C6D0(void); -extern void func_8014C6E0(void); -extern s32 func_8014C860(s32 a0, s32 a1); -extern void func_8014C8C8(s32 a0, s32 *a1); -extern void func_8014C88C(s32 a0); -extern void func_8014C8C8(s32 dst, s32 * src); -extern void func_8014C8F0(s32 arg0); -extern u8 D_801151F0[]; -extern s32 func_8014C918(s32 a0, s32 a1); -extern s32 D_80126B50; -extern void func_8014C968(void); -extern void func_8014C978(void); -extern s32 func_8014C98C(void); -extern void func_80139914(s32 a0); -extern s32 func_8014CA00(s32 a0); -extern u16 func_8014CA70(s32 a0, s32 a1); -extern s32 func_8014CA14(s32 a0, s32 a1); -extern u16 func_8014CAE4(s32 *a0, s32 a1); -extern s32 func_8014CA88(s32 *a0, s32 a1); -extern s32 func_8014CAFC(void); -extern s32 func_8014CB0C(void); -extern s32 func_8014CB1C(void); -extern u8 D_80126D1F; -extern s32 func_8014CB2C(void); -extern s32 func_8014CB58(void); -extern u8 D_80126D1D; -extern void func_8014CB68(void); -extern s32 func_8014CB7C(void); -extern s32 func_8014CB8C(void); -extern short D_80126C9E; -extern void func_8014CB9C(struct Packed8 *a0); -extern s32 D_80126CDC; -extern void func_8014CBD8(void); -extern s16 D_80126CC4; -extern void func_8014CBE8(void); -extern void func_8014CBF8(void *a0); -extern void func_8014D3E0(s32 a0); -extern void func_8014D04C(void); -extern void func_8014CCB4(void); -extern void func_8014CC28(s32 a0); -extern void func_8014CD0C(u8 *a0); -extern s32 func_8014CF04(s32 a0, s32 a1, void *a2); -extern void func_8014CD80(s32 a0, void *a1, void *a2); -extern void func_8014D0A4(s32 a0); -extern s32 func_8014D2A0(s32 a0, void *a1, void *a2); -extern s32 func_8014D12C(s32 a0, void *a1, void *a2); -extern void func_8014D438(s32 a0); -extern void func_8014D3E0(s32 _arg0); -extern void func_8014D610(s32 a0, void *a1, void *a2); -extern s32 func_8014D4C0(s32 a0, void *a1, void *a2); -extern void func_8014D790(s32 a0); -extern void func_8014D738(void); -extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); -extern s32 func_8014D820(s32 a0, u16 *a1, u16 *a2); -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); -extern void func_8014DF94(s32 arg0); -extern void func_8014DF3C(void); -extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ -extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ -extern s16 D_801152AC; -extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); -extern void func_8014E48C(s32 a0); -extern void func_8014E434(void); -extern void func_8014E5B4(s32 a0, void *a1, void *a2); -extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); -extern void func_8014E6F8(struct SubE6F8 *a0); -extern void func_8014E6A0(void); -extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); -extern void func_8014E934(s32 _arg0); -extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); -extern s32 func_8014E98C(void *a0); -extern s32 D_801150D8; -extern s16 D_801152AA; -extern u8 D_80126720[]; -extern s16 D_80126724; -extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); -extern s32 func_8014ED80(struct SubED80 *a0); -extern int D_801E9698; -extern void func_8014ED28(s32 _arg0); -extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F24C(struct SubF24C *a0); -extern void func_8014F1F4(void); -extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F4C0(); -extern s32 func_8014F468(void); -extern int func_8014F74C(); -extern int func_8014F6F4(void); -extern u8 D_800D3918[]; -extern u8 D_801152A8[]; -extern s32 D_801152BC; -extern int func_8014F74C(s32 arg0); -extern s32 func_8014FA70(s32 a0); -extern s32 D_801E969C; -extern void func_8014FA04(s32 a0); -extern s32 func_8014FBC0(); -extern s32 func_8014FC18(u8 *self); -extern int func_8014FD54(int param_1); -extern void func_8014FCFC(void); -extern void func_80150170(void *a0); -extern s32 func_8014FE60(void *a0); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_8014FE60(void *e); -extern s32 func_80134510(s32 arg); -extern s32 func_80150150(s32 a, s32 b); -extern s32 func_80150460(s32 a, s32 b); -extern void func_801504D8(u16 *a0); -extern s32 func_80150480(s32 _arg0); -extern s32 func_80150528(void *a0, void *a1, void *a2); -extern s32 func_80150528(void *arg0, void *arg1, void *arg2); -extern s32 func_801506A4(s32 a0, s32 a1); -extern s32 func_801505FC(s32 a0); -extern s32 func_801506A4(s32 arg0, s32 arg1); -extern void func_80150820(s32 a0, s32 a1); -extern void func_8015086C(int param_1); -extern s32 func_801508B4(s32 a0); -extern s32 func_8015094C(s32 a0); -extern short func_801508F8(s32 a0); -extern s32 D_8018D1E4; -extern s32 D_80126990; -extern s32 D_80126994; -extern u8 D_80126948[]; -extern s32 func_80021174(s32 a0, s32 a1); -extern s32 func_8015094C(s32 param_1); -extern void func_80150B9C(void); -extern s32 func_80151184(s32 a0, s32 a1, s32 a2); -extern s32 func_80150BA4(s32 a0); -extern s32 func_801619D0(void *a0); -extern void func_80150BC8(s32 *a0); -extern s32 func_80150480(s32 a0); -extern u16 D_800AE6DC; -extern void func_80150C48(s32 a0); -extern int func_80151184(int arg, int a1, int a2); -extern int func_80150CA0(int arg); -extern void func_80150EC4(s32 a, s32 b); -extern void func_80150CC4(s32 a); -extern void func_80150CE4(s32 a); -extern void func_80150D04(s32 a); -extern void func_80150D24(s32 a); -extern void func_80150D44(s32 a); -extern void func_80150D64(s32 a); -extern void func_80150D84(s32 a); -extern void func_80150DA4(s32 a); -extern void func_80150DC4(s32 a); -extern void func_80150DE4(s32 a); -extern void func_80150E04(s32 a); -extern void func_80150E24(s32 a); -extern void func_80150E44(s32 a); -extern void func_80150EC4(s32 a0, s32 a1); -extern void func_80150E64(s32 a0); -extern void func_80150E84(s32 a0); -extern void func_80150EA4(s32 a0); -extern u8 D_800AE6C0; -extern s16 D_800AE6C8; -extern s16 D_800AE6CA; -extern s16 D_800AE6CC; -extern s32 D_800AE6C4; -extern s16 D_800AE6CE; -extern u8 D_800AE6BE; -extern u8 D_801201F8[]; -extern void func_80150F78(void); -extern void func_80150F80(s32 a0); -extern int func_80150FB4(int arg); -extern void func_80150FD8(s32 a0); -extern int func_80151014(int arg); -extern void func_80151038(s32 a0); -extern int func_80151070(int arg); -extern int func_80151094(int arg); -extern void func_801510B8(void); -extern void func_801510C0(void); -extern int func_801510C8(int arg); -extern int func_801510EC(int arg); -extern s32 func_8012DB84(void); -extern s32 func_80151110(void); -extern void func_80151130(void); -extern int func_80151138(int arg); -extern void func_8015115C(s32 *a0, s16 a1); -extern s32 func_80151164(s32 a0, s32 a1); -extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); -extern void func_801511A8(u8 *a0); -extern void func_801511C4(u8 *a0); -extern int func_80151204(int arg, int a1); -extern int func_801511E0(int arg); -extern int func_80151204(int a0, int a1); -extern void func_80151238(void *a0); -extern void func_8015126C(u16 *p); -extern void func_80151780(s32 a0); -extern void func_801516F0(s32 *a0); -extern void func_8015173C(s32 *a0); -extern s16 D_8011DB1A; -extern s32 D_80127518; -extern s32 D_801151FC; -extern s32 func_801725CC(u8 *a0); -extern s32 func_80029D3C(void); -extern void func_80151878(void); -extern void func_80153B58(s32 *a0); -extern s32 func_80151880(s32 a0); -extern s32 func_801518D8(s32 a0); -extern s32 func_80151944(void); -extern s32 func_80151924(void); -extern void func_8014E934(s32 a0); -extern s32 func_8014F3E8(s32 a0); -extern void func_801519C8(s32 a0); -extern void func_80151980(s32 a0); -extern M2C_UNK D_800D5880; -extern s32 D_800D58AC; -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801519C8(s32 arg0); -extern void func_80151C54(s32 a0); -extern void func_801542DC(s32 *a0, s32 a1); -extern void func_8015BDD0(s32 *a0); -extern void func_80165718(s32 a0); -extern u8 D_800D46E4[]; -extern void func_80151AE4(s32 arg0); -extern void (*D_8018D28C[])(void); -extern void func_80151D24(void *a0); -extern void func_80151DB0(s32 a0); -extern void func_80151D60(void *a0); -extern s32 func_80172630(u8 *a0); -extern s32 D_80062C14; -extern void func_80151DB0(s32 param_1); -extern void func_80151E78(s32 *a0); -extern void func_80151ECC(struct S80151ECC *a0); -extern void func_80151FB4(s32 a0); -extern void func_80151F38(s32 *a0); -extern void func_801553C0(s32 a0); -extern void func_80153C18(); -extern void (*D_8018D2B0[])(void); -extern void func_80152058(void *a0); -extern void func_801520DC(s32 a0); -extern void func_80152094(s32 a0); -extern void func_80147324(s32 a0); -extern u8 D_80062C04[]; -extern M2C_UNK D_8018D2A0; -extern void func_801520DC(s32 arg0); -extern void func_801470B4(s32 a0); -extern void func_8015369C(s32 a0); -extern void func_80152194(s32 *a0); -extern s32 func_801536DC(s32 a0); -extern void func_8015220C(s32 a0); -extern s32 func_80153800(s32 a0); -extern void func_801522CC(s32 a0); -extern void func_80152254(s32 *a0); -extern void (*D_8018D2C4[])(void); -extern void func_80152370(void *a0); -extern void func_801523F4(s32 a0); -extern void func_801523AC(s32 a0); -extern void func_8001382C(s32 a0, void *a1, void *a2); -extern u8 D_8018D2D0[]; -extern void func_801523F4(s32 arg0); -extern void func_801525F4(int); -extern s32 func_801535F4(void *arg0); -extern void func_8015BF48(s32 *a0); -extern void func_80152500(int param_1); -extern void func_801525F4(s32 a0); -extern void (*D_8018D2E0[])(void); -extern void func_80152698(void *a0); -extern void func_80152714(s32 a0); -extern void func_801526D4(s32 a0); -extern void func_80152790(s32 a0); -extern void (*D_8018D2F8[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018D2E8; -extern void func_801528B0(s32 arg0); -extern void func_8015294C(s32 a0); -extern void func_80152A08(s32 a0); -extern void func_80152AC8(s32 a0); -extern void func_80152A50(s32 *a0); -extern void (*D_8018D30C[])(void); -extern void func_80152B6C(void *a0); -extern void func_80152BF0(s32 a0); -extern void func_80152BA8(s32 a0); -extern void func_80152C80(s32 *a0); -extern void func_80152C40(s32 *a0); -extern void (*D_8018D328[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018D318; -extern void func_80152DA8(s32 arg0); -extern void func_80152E4C(s32 a0); -extern void func_80152EFC(s32 a0); -extern void func_80152FBC(s32 a0); -extern void func_80152F44(s32 *a0); -extern void (*D_8018D33C[])(void); -extern void func_80153060(void *a0); -extern void func_801530E4(s32 a0); -extern void func_8015309C(s32 a0); -extern void func_80155440(s32 *a0); -extern void func_801530E4(s32 arg0); -extern void func_80153150(struct S80153150 *a0); -extern void func_801531BC(s32 a0); -extern void func_8015327C(s32 a0); -extern void func_80153204(s32 *a0); -extern void (*D_8018D350[])(void); -extern void func_80153320(void *a0); -extern void func_801533A4(s32 a0); -extern void func_8015335C(s32 a0); -extern void func_80153410(s32 *a0); -extern void func_80153490(s32 a0); -extern void func_80153550(s32 a0); -extern void func_801534D8(s32 *a0); -extern void (*D_8011DB28)(s32 a0); -extern s32 func_801536DC(s32 param_1); -extern void func_800139C8(s32 a0, void *a1, void *a2); -extern s32 func_80153978(s32 a0, u16 *src); -extern s32 func_80133784(s32 a0, void *src, s32 dst); -extern s32 func_801539F8(s32 a0, void *a1); -extern s32 func_801539F8(s32 a0, void * a1); -extern s32 func_8016DA04(s32 a0); -extern s32 func_80153BD8(s32 a0); -extern s32 func_80153BF0(s32 a0); -extern void func_80153C18(void); -extern u16 D_8011F748; -extern void func_80153C30(void); -extern void func_80153C74(s16 a0, s16 a1); -extern s16 D_8011DB18; -extern void func_80153C44(int a0, int a1, s16 a2); -extern s16 D_8011DB0C; -extern s32 D_80115210; -extern void func_80153C8C(void); -extern void func_80153C9C(void); -extern s32 func_80153CBC(void); -extern s32 D_8018D364; -extern void (*D_8018D38C[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018D36C; -extern void func_80153D7C(s32 param_1); -extern void func_8015410C(void); -extern void func_80153E00(s32 param_1); -extern void func_80151664(void); -extern void func_80154134(u8 *a0); -extern void func_80154190(u8 *a0, s32 a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154218(u8 *a0, s32 a1, s32 a2); -extern void func_801541D8(u8 *a0, s32 a1, s32 a2); -extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); -extern void func_801542A4(); -extern void func_801542A4(s32 *a0, s32 a1); -extern void func_8015430C(); -extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); -extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); -extern s32 func_80154358(void * arg0); -extern void func_80154AB4(s32 a0, s32 a1); -extern void func_80154B20(s32 a0, s32 a1, s32 a2); -extern void func_80154AE0(s32 a0, s32 a1, s32 a2); -extern void func_80154B7C(u8 *a0, s32 a1); -extern void func_80154B4C(u8 *a0, s32 a1); -extern void func_80154BC8(void *a0, s32 a1, s32 a2); -extern void func_80154B98(void *a0, s32 a1, s32 a2); -extern u8 D_800D8D10[]; -extern s16 D_80078E9E; -extern void func_801550FC(s32 a0); -extern void func_80154ED8(s32 a0, s32 a1); -extern void func_80154F9C(s32 a0); -extern void func_800183E0(s32 a0); -extern void func_801550FC(s32 arg0); -extern void func_8001D150(s32, s32); -extern void func_8001D130(int, int); -extern void func_80155150(int param_1); -extern s32 D_800DE2A4[]; -extern void func_801552F4(s32 a0); -extern void func_80155344(s32 a0); -extern s32 func_80155394(s32 *a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80029178(s32); -extern int (*D_8018D3D8[])(void); -extern s32 func_80155458(s32 param_1); -extern s32 func_801659DC(u8 *a0); -extern s32 func_801554B8(void *arg0); -extern void func_801555F4(void *a0); -extern void func_80155518(s32 *a0); -extern void func_80155580(void *a0); -extern void (*D_8018D3DC[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern s32 func_80155800(s32 arg0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern s32 func_80029B4C(s32 a0, s32 a1); -extern s32 func_80029BC8(s32 a0, s32 a1); -extern s32 func_80029C44(s32 a0, s32 a1); -extern s32 func_8015640C(s32 a0, s32 a1); -extern s32 rand(void); -extern u32 func_8015616C(s32 param_1, u16 param_2); -extern u16 func_80156370(u16 param_1); -extern s32 func_801564B0(s32 a0); -extern s32 func_8002A1B4(void); -extern s32 func_8002A400(void); -extern s32 func_8002A670(void); -extern s32 func_8002A8E0(void); -extern s32 D_801151E0[]; -extern s32 func_801565C0(void); -extern void func_80156A14(s32 *a0); -extern void func_80156648(s32 *a0); -extern u8 D_8011DAD8[]; -extern s32 func_8014C568(s16 *a0, s16 *a1); -extern void func_801567BC(s32 a0); -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018D840[]; -extern void func_80156A1C(s32 param_1, s32 param_2); -extern s32 D_801150E0[]; -extern void func_80156A88(s32 a0, s32 a1); -extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); -extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); -extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); -extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern s32 func_80135004(s32 a0, void *a1, s32 a2); -extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801575E4(void *a0); -extern void func_801574DC(s32 *a0); -extern void func_80157544(void *a0); -extern void (*D_8018D850[])(void); -extern void func_8014CC28(s32 a0); /* defined */ -extern s32 func_8014F3E8(s32 a0); /* declared */ -extern void func_8015BDD0(s32 *a0); /* defined */ -extern void func_801575E4(void *a0); /* defined */ -extern void func_80157580(s32 arg0); -extern u8 D_800D4F14[]; -extern void func_801576A8(void *arg0); -extern s32 func_8015773C(u8 *a0); -extern s32 func_8015771C(u8 *a0); -extern s32 func_8015773C(u8 * arg0); -extern int D_801E96D0; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018D878[])(void); -extern void func_80157808(void *param_1); -extern void func_80157880(s32 a0); -extern s32 func_801725A4(u8 *a0); -extern u8 D_800D5128; -extern u8 D_8018D858; -extern void func_801578C0(s32 param_1); -extern void func_80147A84(int); -extern void func_80148038(int, int); -extern void func_80147460(int); -extern void func_80146D90(int); -extern void func_80161450(void *a0); -extern void func_80157A8C(int); -extern void func_80154A74(int, int); -extern unsigned char D_800D5178; -extern unsigned char D_8018D868; -extern void func_8015795C(int param_1); -extern void func_80161D20(s32 a0, s32 a1); -extern void func_80157A8C(s32 a0); -extern void func_8016706C(s32 a0); -extern u8 D_800D51AC[]; -extern void func_80157AC8(s32 param_1); -extern void func_80157B74(int param_1); -extern void func_8016158C(void *a0); -extern void func_8015BE04(s32 *a0); -extern void func_80157BC8(s32 a0); -extern void func_80157CCC(s32 a0); -extern void func_80157DC4(void *a0); -extern void func_80157FC4(void *a0); -extern void func_80157D74(u16 *a0); -extern void (*D_8018D8B8[])(void); -extern void func_80157E38(void *); -extern void func_80157E00(void *a0); -extern void func_80157E38(void * a0); -extern s32 func_80157F64(s32 *a0); -extern s32 func_80156600(void *a0); -extern void func_80157EA4(void *a0); -extern void (*D_8018D8C0[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018D88C; -extern void func_80158038(void * param); -extern u8 D_800D524C[]; -extern void func_80161418(void *a0); -extern void func_801580B4(s32 a0); -extern void func_801581AC(s32 a0); -extern void (*D_8018D8CC[])(void); -extern void func_8015824C(void *a0); -extern void func_801582C0(void *); -extern void func_80158288(void *a0); -extern u8 D_800D52A8[]; -extern void func_801585A4(s32 *a0); -extern void func_801582C0(void *a0); -extern s32 func_801585AC(s32 *a0); -extern u8 D_800D52E8[]; -extern void func_80158344(s32 *a0); -extern s32 func_801615C4(void *a0, s32 a1); -extern u8 D_8018D89C; -extern u8 D_800D533C; -extern void func_80158434(s32 param_1); -extern void func_80158548(s32 param_1); -extern void func_801585EC(u8 *a0); -extern void func_80158794(void); -extern s32 D_801E96D8; -extern s32 D_801E96E4; -extern s32 D_801E96E8; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018D908[])(s32 *); -extern void func_80158AE4(void *a0); -extern void func_80158AB4(void *a0); -extern void func_8016F264(void); -extern void func_80165840(void); -extern void func_801658DC(void); -extern void func_80165A78(s32); -extern void func_80158AE4(void * a0); -extern M2C_UNK D_800D58D8; -extern void func_80158BB0(void *arg0); -extern s32 func_80159404(s32 a0, s32 a1); -extern void func_80158C40(s32 *a0); -extern void func_80158CD8(s32 *a0); -extern s32 func_80159434(s32 a0, s32 a1); -extern void func_80158D60(s32 a0); -extern M2C_UNK D_800D5904; -extern void func_80158E24(s32 *a0); -extern s32 D_8018D8DC[]; -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80158F00(int param_1); -extern u8 D_80110C3C[]; -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80158FA4(s32 param_1); -extern s32 func_801399F0(s32 a0); -extern u8 D_80110C94[]; -extern u8 D_80110CD4[]; -extern void func_80159070(void *a0); -extern s32 func_80029A94(s32); -extern void func_80175454(void); -extern void func_800298BC(void *); -extern void func_8002992C(s32); -extern void func_800CF804(void); -extern void func_800CF818(void); -extern u8 D_80110D0C[]; -extern void func_80159120(s32 a0); -extern void func_801592CC(s32 *a0); -extern u8 D_800AE6BD; -extern s32 D_801E96E0; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018DB58[])(void); -extern void func_80159698(void *a0); -extern s32 func_801596D4(void *a0); -extern void func_80174B6C(void); -extern void func_80129248(s16 a0); -extern void func_8013C938(void); -extern void func_8013CB20(void); -extern void func_8013C98C(void); -extern void func_8002850C(s32, s32, s32); -extern void func_80028620(s32, void *); -extern s16 D_800B9AAC[]; -extern s16 D_800B9B00; -extern u16 D_801270C0; -extern u32 D_800AFAE8[]; -extern char D_8018D978[]; -extern s32 func_801596F0(s32 param_1); -extern s32 func_80159874(void); -extern void func_800167B8(s32 a0); -extern s32 func_8015987C(s32 a0); -extern int func_800167F0(int arg); -extern int func_801598BC(void); -extern void func_80159968(void *a0); -extern void func_801598E0(u8 *a0); -extern void (*D_8018DBFC[])(void); -extern void func_80159A20(void *a0); -extern void func_801599E0(void *a0); -extern void func_80159A18(void); -extern void func_80159BE4(s32); -extern void func_80159B08(s32 *a0); -extern void func_80159B70(void *a0); -extern void func_80159B3C(void * a0); -extern void (*D_8018DD50[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018DB6C; -extern void func_80159BE4(s32 arg0); -extern void func_8015A1C8(s32 a0); -extern void func_8015A2D8(s32); -extern void func_8015A1FC(s32 *a0); -extern void func_8015A264(void *a0); -extern void func_8015A230(s32 *a0); -extern void (*D_8018DD58[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018DB7C; -extern s32 func_80172608(u8 *a0); -extern void func_8015A2D8(s32 param_1); -extern u8 D_800D48DC; -extern s32 func_8015AB7C(s32 a0); -extern s32 D_8011F9C4; -extern s32 func_8015ABD4(s32 a0, s32 a1, s32 a2); -extern s32 func_80161CD0(s32 a0, s32 a1); -extern M2C_UNK D_8018DB9C; -extern void func_8015AC48(s32 arg0); -extern void func_8015AC90(s32 a0); -extern void func_8015ADB0(s32 a0); -extern void func_8015ACC4(s32 *arg0); -extern void func_8015AD3C(void *a0); -extern void func_8015AD08(void *arg0); -extern void (*D_8018DD60[])(void); -extern void func_8015ADB0(s32); -extern void func_8015AD78(s32 a0); -extern void func_8015ADB0(s32 arg0); -extern s32 D_800D4A9C; -extern int func_8015B6F4(int param_1); -extern u8 D_800D4F8C[]; -extern s32 func_8015B7B4(s32 a0); -extern u8 D_800D4BE0[]; -extern s32 func_8014A51C(void); -extern s32 func_8015B858(u8 *a0); -extern s32 D_800D4B48; -extern void func_8015B8F8(s32 *a0); -extern void func_8015BD8C(s32 *a0); -extern s32 func_8015BE94(); -extern void func_8015BE38(struct Obj *a0); -extern s32 func_8015BE74(void); -extern void func_80161124(void *a0); -extern s32 func_8015BE94(s32 *a0); -extern s32 func_8015AE2C(); -extern s32 func_8015BEC4(void); -extern s32 func_8015B950(s32 arg0); -extern s32 func_8015BEE4(void); -extern void func_8015BF04(s32 *a0); -extern void func_8015C0C4(s32 a0); -extern void func_8015BFF4(void *a0); -extern void func_8015BF7C(s32 *a0); -extern void func_8015C030(s32 *a0, s32 a1); -extern void func_8015BFB0(s32 *a0, s32 a1); -extern void (*D_8018DD88[])(void); -extern void func_8015C0C4(s32); -extern void func_8015C08C(s32 a0); -extern s32 func_8015C128(s32 param_1); -extern void func_8015C6A4(void); -extern void func_8015C788(s32 a0); -extern void func_8015C6AC(s32 *a0); -extern void func_8015C714(void *a0); -extern void func_8015C6E0(s32 *a0); -extern void (*D_8018DD94[])(void); -extern void func_8015C788(s32); -extern void func_8015C750(s32 a0); -extern void func_8015CB94(s32 a0); -extern void func_8015CBCC(void); -extern void func_8015CBD4(void); -extern void func_8015CBDC(void); -extern void func_8015CBE4(void); -extern void func_8015CBEC(void); -extern void func_8015CBF4(void); -extern void func_8015CBFC(void); -extern void func_8015CC04(void); -extern void func_8015CC0C(s32 *param_1); -extern void func_8015CC74(s32 *a0); -extern void func_8015CC40(s32 *a0); -extern s32 func_8015CCD0(); -extern s32 func_8015CCB0(void); -extern s32 func_801725E0(u8 *a0); -extern s32 func_8015CCD0(s32 param_1); -extern s32 func_8015CD20(s32 arg0); -extern void func_8015CF24(s32 a0); -extern void func_8015D01C(); -extern void func_8015CF58(s32 *param_1); -extern void func_8015CFC0(s32 *a0); -extern void func_8015CF8C(s32 *a0); -extern void func_8015CFFC(void); -extern void func_8015D01C(int param_1); -extern void (*D_8018DC08[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018DE38; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018CF1C[]; -extern void func_8015D414(int param_1); -extern void func_8015D57C(s32); -extern void func_8015D480(s32 *a0); -extern s32 func_8015D4E8(s16 *a0); -extern void func_8015D4B4(s16 *a0); -extern void func_8015D524(s32 arg0); -extern void func_8015D544(s32 a0); -extern void func_801746DC(void); -extern void func_8015D57C(s32 arg0); -extern s32 func_80161B18(void *a0); -extern s32 func_80161B84(void *a0); -extern void func_80154150(int, int); -extern void func_80149374(int, int); -extern unsigned char D_8018DE4C[]; -extern void func_8015D5E8(int param_1); -extern int func_8015E0D4(int); -extern void func_8015DA5C(s32 a0); -extern void func_8015DB6C(s32 a0); -extern void func_8015DA90(s32 *a0); -extern void func_8015DAF8(s32 *a0); -extern void func_8015DB6C(s32); -extern void func_8015DB34(s32 a0); -extern void func_8015DCB8(s32 a0); -extern void func_8014BD60(s32 a0, s32 a1); -extern int func_8015DD74(int); -extern void func_8015DBD4(void *arg0); -extern int func_8015DC84(int a0); -extern s8 D_8018DE88[]; -extern void func_8015DCB8(s32 param_1); -extern int func_8015DD74(int arg0); -extern void func_8015DECC(s32 a0); -extern void func_8015DDF0(s32 *a0); -extern void func_8015DE58(s32 *a0); -extern void func_8015DECC(s32); -extern void func_8015DE94(s32 a0); -extern void func_8015E018(s32 a0); -extern void func_8015DF34(void *arg0); -extern int func_8015DFE4(int a0); -extern void func_8015E018(s32 param_1); -extern int func_8015E0D4(int a0); -extern void func_8015E22C(s32 a0); -extern void func_8015E150(s32 *a0); -extern s32 func_8015E1B8(s32 a0); -extern void func_8015E184(s32 *arg0); -extern void func_8015E22C(s32); -extern void func_8015E1F4(s32 a0); -extern u8 D_800D4FF4[]; -extern u8 D_800D5098[]; -extern u8 D_800D5060[]; -extern s32 func_8014A850(s32 a0); -extern void func_8015E40C(s32 a0); -extern void func_8015E588(void); -extern void func_8015E4B0(s32 a0); -extern void func_8015E288(s32 a0); -extern u16 D_8018DED0; -extern u16 D_8018DED2; -extern u16 D_8018DED4; -extern s32 D_8018DED8; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -extern void func_8013C9C4(void *a0); -extern s32 D_8018DEE0; -extern void func_8015E5B0(u8 *self); -extern void func_8015E714(s32 *a0); -extern void func_8015E95C(s32); -extern void func_8015E84C(s32 *a0); -extern void func_8015E8E8(s32 *a0); -extern void func_8015E9B8(s32 *a0); -extern void func_8015E8B4(s32 *a0); -extern void func_8015E924(s32 a0); -extern void func_8015E95C(s32 a0); -extern s16 D_801152A0; -extern void func_80160818(s32 *a0); -extern void func_8015ED6C(s32 *a0); -extern void func_8015EE7C(s32); -extern void func_8015EDA0(s32 *a0); -extern s32 func_8015EE08(s32 a0); -extern void func_8015EDD4(s32 *arg0); -extern void func_8015EE44(s32 a0); -extern int D_800D4C48; -extern int D_8018DBEC; -extern void func_8015EE7C(s32 param_1); -extern void func_8015EEE0(void *arg0); -extern void func_8015EF9C(void); -extern void func_8015F080(s32); -extern void func_8015EFA4(s32 *a0); -extern void func_8015F00C(s32 *a0); -extern void func_8015EFD8(s32 *a0); -extern void func_8015F048(s32 a0); -extern void func_8015F080(s32 a0); -extern s32 D_80062BE8; -extern void func_801466F0(s32, s32, s32, s32, s32, s32, s32, s32); -extern s32 func_80161208(void); -extern void func_8015F118(void *a0); -extern void func_8015F260(s32 *a0); -extern void func_8015F380(); -extern void func_8015F2BC(s32 *a0); -extern void func_8015F324(s32 *a0); -extern void func_8015F2F0(s32 *a0); -extern void func_8015F360(void); -extern s32 func_801725B8(u8 *a0); -extern void func_8015F380(void* arg0); -extern void func_8015F738(s32 *a0); -extern void func_8015F848(s32 *a0); -extern void func_8015F76C(s32 *a0); -extern s32 func_8015F7D4(s32 a0); -extern void func_8015F7A0(s32 *arg0); -extern void func_8015F810(s32 *a0); -extern void func_80147078(s32 *, s16); -extern void func_80159B70(void *); -extern void func_8015F89C(void *arg0); -extern void func_8015F948(s32 *param_1); -extern void func_8015F9A4(void *arg0); -extern void func_8015FA24(s32 arg0); -extern void func_8015FBE0(s32 *a0); -extern void func_8015FA44(s32 *a0); -extern void func_8015FAAC(s32 *a0); -extern void func_8015FA78(s32 *a0); -extern s32 func_801612B8(void *a0, s32 a1); -extern void func_8016007C(s32 a0); -extern void func_8015FAE8(void *arg0); -extern void func_8015FCC8(void *param_1); -extern unsigned int D_8018DF64[]; -extern void func_8015FD74(int param_1); -extern s32 func_80028DE0(void); -extern u8 func_80165700(s32 a0, s32 a1); -extern void func_8015FDCC(s32 a0); -extern u8 D_80078EC2; -extern u8 func_801656E8(s32 a0, s32 a1); -extern void func_80165670(s32 a0, s32 a1); -extern void func_8016004C(s32 a0); -extern void func_8015FF20(void *param_1); -extern void func_801601AC(s32 *a0); -extern void func_801600D0(s32 *a0); -extern void func_80160138(s32 *a0); -extern void func_80160104(s32 *a0); -extern void func_80160174(s32 *a0); -extern void func_801601E4(s32 *a0); -extern void func_80160244(s32 *a0); -extern void func_8016032C(void); -extern void func_80160410(s32 *a0); -extern void func_80160334(s32 *a0); -extern void func_8016039C(s32 *a0); -extern void func_80160368(s32 *a0); -extern void func_801603D8(s32 *a0); -extern u8 D_80062BD0; -extern void func_80160410(s32 * a0); -extern void func_801607B8(s32 *a0); -extern void func_801608C0(s32 *a0); -extern void func_801607E4(s32 *a0); -extern void func_8016084C(s32 *a0); -extern void func_80160888(s32 *a0); -extern void func_80160A28(s32 a0); -extern void func_80160A74(s32 *a0); -extern void func_80160BB4(s32 *a0); -extern void func_80160ACC(s32 *a0); -extern s32 func_80160B34(s32 a0); -extern void func_80160B00(s32 *arg0); -extern void func_80160B70(s32 a0); -extern void func_80160C28(void *arg0); -extern void func_80160CB4(s32 *a0); -extern void func_80160D10(void *arg0); -extern void func_80160DEC(u8 *a0); -extern void func_80160F00(); -extern void func_80160E3C(s32 *a0); -extern void func_80160EA4(); -extern void func_80160E70(s32 *a0); -extern void (*D_8018E014[])(void); -extern void func_80160EA4(void *a0); -extern void func_80160EE0(void); -extern void func_80160F00(void* arg0); -extern void func_800D0F4C(s32 a0); -extern u8 D_80110EC0; -extern void func_80160F70(s32 a0); -extern void func_80160FE0(s32 *a0); -extern void func_80161034(void *a0); -extern void func_80161094(s32 a0); -extern void func_801610FC(void); -extern void func_801483E8(void); -extern s32 func_80161A60(s32 a0); -extern void func_8016130C(void *a0, s32 a1); -extern void func_80161240(void *a0); -extern void func_80161374(void *a0, s32 a1); -extern void func_80161278(void *a0); -extern s32 func_801612B8(void * a0, s32 a1); -extern void func_8016163C(void *a0, s32 a1); -extern void func_80161774(void *a0, s32 a1); -extern s32 func_8016197C(s32 a0, s32 a1); -extern s32 func_80161488(void *a0); -extern void func_80161888(void *a0, s32 a1); -extern void func_801614E4(void *a0); -extern void func_8016191C(void *a0, s32 a1); -extern void func_8016151C(void *a0); -extern void func_80161554(void *a0); -extern s32 func_801615C4(void * arg0, s32 arg1); -extern s32 func_801619A4(s32 *a0); -extern s32 func_80161A00(s32 a0); -extern s32 func_80161A30(s32 a0); -extern int func_801497A8(void); -extern int func_80161BE0(void *param_1); -extern u16 D_8018E044[]; -extern void func_80161C98(int param_1, u32 param_2); -extern void func_80161E08(s32); -extern s32 func_80162438(s32); -extern s32 D_800AE6A8; -extern void func_800D1734(void *); -extern s32 D_8018E0A8; -extern void func_80161D88(void); -extern void func_80161E08(s32 param_1); -extern int func_800291DC(int); -extern int func_800D0E30(void *a0); -extern int func_801620C4(void); -extern s32 func_800D0D7C(s32, s32); -extern int D_801E96F0[]; -extern void func_8016216C(void); -extern u8 D_80078EB0; -extern u8 D_80078EB1; -extern s32 func_801621CC(s32 arg0); -extern void func_801622C4(void); -extern void (*D_8018E0CC[])(void); -extern void func_80162330(void *a0); -extern void func_8014706C(void *a0); -extern s32 func_8016236C(u8 *a0); -extern void func_800D0C48(s32 a0); -extern s32 func_801623B8(s32 *a0); -extern s32 func_800167F0(s32 a0); -extern s32 func_80162414(void); -extern s32 func_80162438(s32 _unused0); -extern int func_801626B8(void); -extern void func_80162714(void); -extern int D_801E9748[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018E114[])(void); -extern void func_80162834(void *a0); -extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80162968(s32 a0); -extern s32 func_80162ACC(u8 *a0); -extern u8 D_800B5CB8; -extern s32 D_8018E104; -extern s32 D_800B5CBC; -extern u8 D_800B5CDF; -extern s32 D_800B5CEC; -extern void func_80162870(s32 param_1); -extern void func_801628F4(s32 *a0); -extern void func_80162968(s32 param_1); -extern void func_80162AC0(s32 *a0, s8 a1); -extern s32 func_80162AE0(u8 *a0); -extern void func_80162AF4(void); -extern void func_80162CC4(void); -extern s32 D_80126D40; -extern void func_80162B1C(void); -extern void func_80162D28(s32 *a0); -extern void func_80162D88(s32 *a0); -extern void func_80162DE8(s32 *a0); -extern void func_80162E48(s32 *a0); -extern void func_80162EA8(s32 *a0); -extern void func_80162F60(s32 arg0, s32 arg1); -extern void func_80162F80(s32 arg0, s32 arg1); -extern void func_80162FA0(s32 arg0, s32 arg1); -extern void func_80162F08(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80162FC0(s32 *a0); -extern void func_80162FF4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801630C4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163194(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg4); -extern void func_8016325C(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163234(s32 a0); -extern s32 D_80115100; -extern s32 func_801632E0(void); -extern s32 D_80115200; -extern s32 func_801632F0(void); -extern u16 D_80126B18[]; -extern void func_80163328(void); -extern s32 func_801633A8(void); -extern s32 func_80163408(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void func_80163534(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, u16 * a5); -extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); -extern char D_801E8DBC[8]; -extern void *memcpy(void *dst, const void *src, unsigned int n); -extern void func_801634D8(s32 param_1, u16 param_2, u16 param_3, s32 param_4, u16 param_5); -extern void func_80157158(); -extern void func_80163664(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801636D0(s32 a0, s32 a1); -extern s32 func_8016380C(struct S8016380C *a0, s32 a1); -extern void *memcpy(void *dst, void *src, s32 n); -extern s32 func_801638A0(u8 *a0, s32 a1); -extern s32 func_80163950(s32 a0); -extern void (*D_8018E11C[])(void); -extern void func_80163A58(void *a0); -extern void func_80163A94(s32 param_1); -extern void func_80163C2C(s32 param_1); -extern void func_80163EC8(s32 param_1); -extern void func_80164270(s32 *a0); -extern void func_80164418(void); -extern void func_80163764(s32 a0); -extern void func_801642AC(s32 a0); -extern void func_8016432C(s32 a0); -extern void func_80164410(void); -extern s32 func_80012DBC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164530(s32 arg0); -extern void (*D_8018E170[])(void); -extern void func_80164744(s32 param_1); -extern void func_8001C810(s32 a0, s32 a1); -extern void func_80164A74(s32 *a0); -extern void func_80164930(s32 a); -extern u16 D_800DF2E0; -extern s32 D_8018E138; -extern s16 D_8018E16C; -extern s16 D_8018E16A; -extern s16 D_8018E168; -extern void func_801647A4(int param_1); -extern void func_80164ACC(); -extern void func_80164864(void *a0); -extern void func_80164930(s32 param_1); -extern s32 func_8014C308(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164ACC(s32 a0); -extern void (*D_8018E17C[])(void); -extern void func_80164BA0(void *a0); -extern void func_8001CD50(s32 a0, s32 a1); -extern void func_800233CC(void *, unsigned short); -extern void func_80164DD0(s32 a0); -extern void func_80164DB0(void); -extern u8 D_801E97A8; -extern u8 D_801E97A9; -extern u8 D_801E97AA; -extern u8 D_801E97AB; -extern u8 D_801E97AC; -extern u8 D_801E97AD; -extern u8 D_801E97AE; -extern u8 D_801E97AF; -extern void func_80164BDC(s32 param_1); -extern void func_80164E40(void); -extern void func_80164CD4(u8 *a0); -extern void func_80164D4C(void *arg0); -extern void (*D_8018E18C[])(void); -extern void func_80164EA4(void *a0); -extern void func_80165124(void *a0); -extern void func_80164EE0(int param_1); -extern s32 func_80165140(s32 a0); -extern void func_801651B8(void *a0); -extern void func_80164F44(void *arg0); -extern void func_80165024(void *a0); -extern void func_80165064(s32 *a0); -extern void func_801650C4(s32 *a0); -extern s32 func_80165140(s32 param_1); -extern s32 func_80165240(s32 a0, s32 a1, s32 a2); -extern s32 D_801E97E8; -extern void func_801651B8(void * param_1); -extern u8 D_80126CF8; -extern void func_8016533C(void); -extern void func_801653F4(s32 a0); -extern void func_80165580(s32 a0); -extern void func_80165374(s32 a0); -extern void func_80165580(s32 _arg0); -extern void func_801653B8(s32 *a0); -extern s32 func_80165624(s32 a0); -extern u8 D_80078EC5; -extern void (*D_8018E1D0[])(void); -extern u8 func_80165658(s32 a0, s32 a1); -extern void func_800CAE0C(s32 a0); -extern void func_801654A8(s32 arg0); -extern void func_80165B28(void *a0); -extern void func_801655E4(s32 a0); -extern u8 D_8018E24C[]; -extern s32 D_8018E26C[]; -extern u8 D_8018E2E8[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018E308[]; -extern u8 D_8018E328[]; -extern void func_800CAF6C(void); -extern void func_80165770(void); -extern void func_801657D8(void); -extern u8 D_80078EC3; -extern void func_801657A0(void); -extern s32 D_80078EA0; -extern s32 D_80078EA8; -extern u8 D_80078EBB; -extern s32 D_80078ED4; -extern s32 D_80078ED8; -extern s32 D_80078EDC; -extern u8 D_80078EE0; -extern void func_80165874(void); -extern s8 D_80078EC4; -extern void func_801658EC(void); -extern s32 func_80165900(void); -extern s32 func_80165910(void); -extern s32 D_8012672C; -extern s32 D_8012811C; -extern s32 D_80126B08; -extern void func_80165938(void); -extern void func_80165958(void); -extern s32 func_80165978(void); -extern void func_80165988(void); -extern s32 func_801659A8(void); -extern void func_801659B8(void); -extern s32 func_801659CC(void); -extern void func_80165A18(void); -extern s32 func_80165A50(s32 _arg0); -extern void func_80165AC8(void); -extern void func_80165A78(s32 arg0); -extern void (*D_8018E3C4[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_8018E440[])(void); -extern void func_80165BB4(u8 *a0); -extern void func_80165B6C(u8 *a0); -extern void func_80165C58(s32 arg0); -extern void func_80165BFC(void *a0); -extern void func_80165C78(void); -extern M2C_UNK D_801E8DCC; -extern void func_80165E2C(u16 *arg0); -extern s32 func_80165FA4(s32 a0, s32 a1, s32 a2); -extern s32 func_80167DBC(s32 a0, s32 a1, s32 a2); -extern s32 func_80167AE0(s32 a0, s32 a1, s32 a2); -extern void func_80165E90(void); -extern void func_80020F34(s32 a0, s32 a1); -extern s32 func_80165FA4(s32 arg0, s32 arg1, s32 arg2); -extern void (*D_8018E44C[])(void); -extern void func_80166018(void *a0); -extern void func_80166054(s32 arg0); -extern void func_801661CC(s32 param_1); -extern void func_80166244(void* arg0); -extern void func_8016629C(void *a0); -extern void func_801662F4(void *a0); -extern void func_8016634C(void *a0); -extern void func_801663A4(void *a0); -extern void (*D_8018E454[])(void); -extern void func_801663FC(void *a0); -extern u8 D_800D387C[]; -extern u8 D_800D3888[]; -extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); -extern void func_800D1FC8(s32 a0, s32 a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern void func_801665B4(); -extern void func_80146C3C(); -extern void func_80166438(u8 *a0); -extern s32 func_80128ED8(s32 param_1, s32 *param_2); -extern void func_800D22E4(s32 a0); -extern void func_801665B4(s32 *a0); -extern void (*D_8018E51C[])(void); -extern void func_80166618(void *a0); -extern void (*D_8018E52C[])(void); -extern void func_80166654(void *a0); -extern s32 func_80166690(s32 param_1, s32 param_2); -extern s32 func_80166994(); -extern s32 func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern s32 func_80167540(s32 arg0); -extern void (*D_8018E53C[])(void); -extern void func_801678B4(void *a0); -extern void RotMatrixYXZ(void *a0, void *a1); -extern void func_80048EAC(void *a0, void *a1); -extern s32 func_801670E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80146C3C(void); -extern void func_801678F0(s32 a0); -extern void (*D_8018E548[])(void); -extern void func_80167A9C(void *a0); -extern void func_80167AD8(void); -extern s32 func_80167AE0(s32 param_1, s32 param_2, s32 param_3); -extern void func_80168070(s32 a0, s16 *a1, s16 *a2, void *a3); -extern u8 D_8018E4A8[]; -extern u8 D_8018E4BC[]; -extern s32 func_80167DBC(s32 arg0, s32 arg1, s32 arg2); -extern void func_800D20C0(void *a0, void *a1, s32 a2); -extern void func_80017E68(void *a0, void *a1); -extern void func_800D23D0(void *a0); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern s32 D_801269A4; -extern s32 D_801269A8; -extern s32 D_801269AC; -extern void func_80168070(s32 param_1, s16 *param_2, s16 *param_3, void *param_4); -extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_8016829C(s32 a0); -extern s32 func_80166690(s32 a0, s32 a1); -extern void func_80168328(s32 arg0); -extern void func_801683D8(s32 a0); -extern void func_801684B4(s32 a0); -extern void func_80168540(s32 a0); -extern void func_801685EC(s32 a0); -extern void func_80168640(s32 a0); -extern s32 RotMatrixX(s32 a0, void *a1); -extern void func_80168664(void *arg0); -extern void (*D_8018E560[])(void); -extern void func_80168744(void *a0); -extern void func_80168BDC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801687CC(s32 a0); -extern void func_80168780(s32 a0); -extern void func_80168828(void); -extern void func_801687CC(s32 param_1); -extern void func_80168828(); -extern void (*D_8018E568[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_8018E570[])(void); -extern void func_80168AA8(void *a0); -extern void func_80168AE4(s32 a0); -extern void func_800D2318(void); -extern void func_80168BDC(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void (*D_8018E578[])(void); -extern void func_80168D58(void *a0); -extern void func_80168D94(int a0); -extern void func_80168F40(); -extern void func_80168EC4(s32 a0); -extern void func_80168F40(void *arg0); -extern void (*D_8018E580[])(void); -extern void func_8016901C(void *a0); -extern void func_80169058(s32 a0); -extern s32 func_80169228(void); -extern void func_801691B8(void *a0); -extern void (*D_8018E588[])(void); -extern void func_801693CC(void *a0); -extern void func_80169584(s32 param_1); -extern void func_80169408(s32 a0); -extern void func_8016951C(int param_1); -extern s32 func_80017758(void *a0, void *a1); -extern s32 func_80017DC4(void *a0, void *a1); -extern void func_801696D8(s32 a0, s32 a1); -extern void (*D_8018E590[])(void); -extern void func_80169830(void *a0); -extern void func_8016986C(s32 a0); -extern s32 func_80169A4C(s32 a0, s32 a1); -extern void func_801699D0(void *arg0); -extern void (*D_8018E644[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_8018E64C[])(void); -extern void func_80169F00(void *a0); -extern char D_8018E5FC[]; -extern char D_8018E5BC[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8018E684[])(void); -extern void func_8016A020(void *a0); -extern void func_8016A05C(void *a0); -extern void func_8016A290(s32 a, void *b, void *c); -extern void func_8016A08C(s32 param_1); -extern void func_8016A1CC(int param_1); -extern void func_8016A290(s32 param_1, void *param_2, void *param_3); -extern void (*D_8018E690[])(void); -extern void func_8016A700(void *a0); -extern s32 func_8016A73C(s32 arg0); -extern s32 func_8016A8FC(s32 a0); -extern void func_8016A890(s32 arg0); -extern void func_8016AA50(s32 param_1, s32 param_2); -extern void (*D_8018E6D8[])(void); -extern void func_8016AB30(void *a0); -extern void func_8016B234(void); -extern void func_8016AFB0(s32 a0); -extern void func_8016B114(void *arg0); -extern s32 func_8016B448(s32, s32); -extern s32 func_8016BA48(s32 a0); -extern void func_8016B3F4(s32 a0); -extern s32 func_8016B428(s32 a0); -extern void func_8016B984(void *a0); -extern s32 func_8016B448(s32 arg0, s32 arg1); -extern void (*D_8018E754[])(void); -extern void func_8016B4BC(void *a0); -extern int func_8016B9F8(int); -extern int func_8016B834(int, int); -extern void func_8016B91C(int); -extern int D_801E9B08; -extern void func_8016B4F8(int param_1); -extern s32 func_8016B9F8(s32 param_1); -extern void func_8016B6BC(s32, s32, s32, s32); -extern void func_8016B91C(s32); -extern s16 D_8018E748[]; -extern void func_8016B5C0(s32 param_1); -extern void func_8001CD9C(int, void *); -extern int *D_8018E78C[]; -extern unsigned short D_8018E794[]; -extern unsigned short D_8018E79C[]; -extern unsigned char D_801E9B10[]; -extern int func_8016B834(int param_1, int param_2); -extern void func_8016B964(SrcB964 *a0, DstB964 *a1); -extern void func_8016B91C(s32 arg0); -extern s32 D_801E9B08; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8018E7A4[])(void); -extern void func_8016BBA4(void *a0); -extern s32 func_8016BBE0(s32 param_1); -extern void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3); -extern M2C_UNK D_801E9C44; -extern M2C_UNK D_801E9C48; -extern void func_8016BCC0(void *arg0); -extern s32 func_8016BD78(s32 param_1); -extern s32 func_8016BEA0(s32 param_1); -extern void func_8016BF34(void *a0); -extern void func_8016BFD0(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern s32 D_801E9BD0; -extern void (*D_8018E7D4[])(void); -extern void func_8016C14C(void *a0); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801E9C4C[]; -extern u8 D_801E9C54[]; -extern u8 D_801E9C04[]; -extern void func_8016C2C4(s32 param); -extern s32 func_8016C49C(s32 param_1_arg); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_8016C74C(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern short func_8016CF04(s32 a0, s32 a1); -extern void func_8016C83C(s32 a0); -extern void (*D_8018E7DC[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_8018E7F8[])(void); -extern void func_8016D19C(void *a0); -extern void (*D_8018E800[])(void); -extern void func_8016D428(void *a0); -extern void func_8016D464(u8 *a0); -extern void func_8016D4DC(s32 a0); -extern void func_8016D5EC(s32 *a0); -extern short func_8016CBC0(void); -extern void func_8016D64C(int param_1); -extern void func_8016D778(s32 a0); -extern void func_800D20C0(); -extern void func_8016D848(s32 *a0); -extern void func_8016D984(s32 *a0); -extern void func_8016DBD8(u8 *a0); -extern void (*D_8018E868[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_8018E80C; -extern u8 D_8018E818; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void (*D_8018E89C[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8018E8A4[])(void); -extern void func_8016DF20(void *a0); -extern void func_8016E3CC(s32 a0); -extern void func_8016E1CC(s32 a0); -extern void func_8016E26C(s32 *a0); -extern void func_8016E2E8(void *a0); -extern void func_8016E460(void *a0, void *a1); -extern void func_8016E358(void *a0); -extern void func_8016E460(void *arg0, void *arg1); -extern void (*D_8018E8F8[])(void); -extern void func_8016E5B8(void *a0); -extern void func_8016E5F4(s32 arg0); -extern void func_8016E778(); -extern void func_8016E688(void *a0); -extern void func_8016E6E4(s32 a0); -extern void func_8016E728(u8 *a0); -extern void func_8016E7C8(int param_1, short *p1, unsigned int *p2); -extern void func_8016E778(int param_1); -extern void func_8016E7C8(int param_1, short *param_2, unsigned int *param_3); -extern s32 D_80115218; -extern void func_8016E8F0(void); -extern void func_8016E918(short param_1, short param_2); -extern s32 func_8016E95C(); -extern u16 D_8018E92C[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_8018E91C[]; -extern void func_8016EB3C(s32 p); -extern void func_8016EBA8(u8 *param_1); -extern void func_8016ED6C(void); -extern s32 D_80126D70; -extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); -extern void func_8016ED8C(s32 a0, s32 a1, s32 a2); -extern void func_8016EE40(s32 a0, s32 a1, s32 a2); -extern void func_8016EDBC(s32 a0, s32 a1, s32 a2); -extern void func_8016EE94(); -extern void func_8016EDEC(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_8016EF78(s32 a0); -extern void func_8016EE40(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_801726D0(void *a0); -extern s32 D_80126D50; -extern u8 D_80126D6C; -extern u8 D_80126D6D; -extern u8 D_80126D6E; -extern s32 D_80126D5C; -extern s32 D_80126D60; -extern s16 D_80126D64; -extern s16 D_80126D66; -extern s16 D_80126D68; -extern s16 D_80126D6A; -extern u8 D_80126D1A; -extern s32 D_80127058; -extern s32 D_8012705C; -extern s32 D_80127060; -extern s32 D_80127064; -extern s32 D_80127068; -extern s32 D_8012706C; -extern s32 D_80127070; -extern s32 D_80127074; -extern s16 D_80126D20; -extern void func_8016EE94(s32 a0, s32 a1); -extern s32 func_8016EFC8(s32); -extern s32 func_8016EFA8(s32 a0); -extern void func_8016F094(s32 *a0); -extern s32 func_8016F0AC(); -extern s32 D_8018E948; -extern void func_8016F250(void); -extern void func_8016F288(void); -extern void func_8016F2A8(void); -extern void func_8016F2C8(void); -extern void func_8016F2EC(void); -extern void func_8016F30C(void); -extern void func_8016F330(void); -extern void func_8016F350(void); -extern void func_8016F374(void); -extern void func_8016F388(void); -extern void func_8016F398(void); -extern s32 func_8016F44C(s32 a0); -extern void func_8016F470(s32 a0); -extern s32 func_8016F410(s32 a0); -extern void func_80175414(s32 _arg0); -extern s32 func_8016F4C4(s32); -extern s32 func_8016F494(s32 a0); -extern void func_8016F0E4(void); -extern s32 func_8016F4C4(s32 param_1); -extern void func_8016F4F4(void); -extern void func_801719A4(int a0, int a1); -extern void func_800D1724(s32 a0); -extern void func_80171928(void *a0); -extern void *D_8011F738; -extern void func_8016F4FC(void *a0); -extern void func_8014708C(void *a0); -extern void func_8016F540(void *a0); -extern void func_8016F578(s32 *a0); -extern void func_8016F5B0(void *a0); -extern void func_80147060(u8 *a0); -extern void func_8016F5E0(u8 *a0); -extern void func_8016F610(void *a0); -extern void func_8016F648(void *a0); -extern void func_8016F680(void *a0); -extern void func_8016F6B0(void *a0); -extern void (*D_8018E9C0[])(void); -extern void func_8016F6E0(void *a0); -extern s32 func_80171990(u8 *a0); -extern void func_8016F764(void *a0); -extern void func_8016F71C(u8 *a0); -extern void (*D_8018E9C8[])(void); -extern void func_8016F798(void *a0); -extern void func_8016F804(void *a0); -extern void func_8016F7D4(u8 *a0); -extern void func_80171928(void *); -extern void (*D_8018E9D0[])(void); -extern void func_8016F834(void *a0); -extern void func_8016F8AC(u8 *a0); -extern void func_8016F870(u8 *a0); -extern void func_80172358(u8 *a0, u8 *a1); -extern void (*D_8018E9D8[])(void); -extern void func_8016F8E4(void *a0); -extern void func_8016F95C(void *a0); -extern void func_8016F920(u8 *a0); -extern s32 func_80171CC4(void *a0, void *a1); -extern s32 func_80171D1C(void *a0, void *a1, s32 a2); -extern u16 D_8011F73E; -extern void (*D_8018E9E0[])(void); -extern void func_8016F9C4(void *a0); -extern void func_80171B44(s32 *a0); -extern void func_8016FA44(s32 a0); -extern void func_8016FA00(s32 a0); -extern s32 func_80171C64(s32 a0, s32 a1); -extern void (*D_8018E9E8[])(void); -extern void func_8016FA84(void *a0); -extern void func_8016FB10(void *a0); -extern void func_8016FAC0(u8 *a0); -extern void func_8016FB50(void *a0); -extern void (*D_8018E9F4[])(void); -extern void func_8016FB7C(void *a0); -extern void func_8016FC24(); -extern void func_8016FBB8(s32 a0); -extern s32 func_80171B4C(s32 a0, s32 a1); -extern void func_8016FC24(s32 a0); -extern void func_8016FC64(void *a0); -extern void (*D_8018EA00[])(void); -extern void func_8016FC90(void *a0); -extern void func_8016FD08(u8 *a0); -extern void func_8016FCCC(u8 *a0); -extern s32 func_80172658(s32 *a0); -extern void func_8016FD08(u8 *s0); -extern void func_8016FD7C(s32 *a0); -extern void (*D_8018EA0C[])(void); -extern void func_8016FDB4(void *a0); -extern void func_8016FE2C(u8 *a0); -extern void func_8016FDF0(u8 *a0); -extern void func_8016FE2C(u8 * a0); -extern s32 func_8016FE78(s32 *a0); -extern s32 func_80172664(s32 *a0); -extern void func_8016FED0(s32 *a0); -extern void (*D_8018EA1C[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_8018EA2C[])(void); -extern void func_8016FFDC(void *a0); -extern void func_80170068(u8 *a0); -extern void func_80170018(u8 *a0); -extern void func_801700B8(u8 *a0); -extern void func_80170100(u8 *a0); -extern void (*D_8018EA34[])(void); -extern void func_80170150(void *a0); -extern void func_801701C8(u8 *a0); -extern void func_8017018C(u8 *a0); -extern void func_801701C8(u8 * a0); -extern void (*D_8018EA3C[])(void); -extern void func_80170240(void *a0); -extern void func_801702B8(s32 a0); -extern void func_8017027C(u8 *a0); -extern s16 func_80171AB0(s32 a0, void *a1); -extern void (*D_8018EA44[])(void); -extern void func_801702FC(void *a0); -extern void func_80170374(u8 *a0); -extern void func_80170338(u8 *a0); -extern s32 func_8014C168(s32 *a0, s32 a1); -extern void func_80170374(u8 * a0); -extern void (*D_8018EA4C[])(void); -extern void func_801703E0(void *a0); -extern void func_8017044C(u8 *a0); -extern void func_8017041C(u8 *a0); -extern void func_8017044C(u8 * a0); -extern void (*D_8018EA54[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_8018EA5C[])(void); -extern void func_80170548(void *a0); -extern void func_801705C0(u8 *a0); -extern void func_80170584(u8 *a0); -extern void func_801705C0(u8 * a0); -extern void (*D_8018EA64[])(void); -extern void func_801705F8(void *a0); -extern void func_80170670(void *a0); -extern void func_80170634(u8 *a0); -extern void func_8012A568(void (*a0)(void)); -extern void (*D_8018EA6C[])(void); -extern void func_801706AC(void *a0); -extern void func_80170718(void *a0); -extern void func_801706E8(u8 *a0); -extern void func_80129FF4(void); -extern void (*D_8018EA74[])(void); -extern void func_80170748(void *a0); -extern void func_801707D4(void *a0); -extern void func_80170784(u8 *a0); -extern s32 func_80174ED4(void); -extern void (*D_8018EA7C[])(void); -extern void func_80170810(void *a0); -extern void func_801708B0(void *a0); -extern u8 D_800D5DA8; -extern void func_8017084C(s32 a0); -extern u8 D_800D5A34[]; -extern void func_80170AD8(void *a0); -extern void func_80171904(s32 a0); -extern void func_80170B48(int a0); -extern void func_80170928(void); -extern u8 D_800D59EC[]; -extern void func_80170970(void); -extern u8 D_800D599C[]; -extern void func_801709B8(void); -extern u8 D_800D5934[]; -extern void func_80170A00(void); -extern void func_80170A48(void); -extern u8 D_800D5DC0[]; -extern void func_80170A90(void); -extern void (*D_8018EA84[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_8018EA8C[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8018EA94[])(void); -extern void func_80170C74(void *a0); -extern s32 func_8017197C(u8 *a0); -extern void func_80170CF0(void *a0); -extern void func_80170CB0(u8 *a0); -extern void (*D_8018EA9C[])(void); -extern void func_80170D68(void *a0); -extern void func_80170DE0(u8 *a0); -extern void func_80170DA4(u8 *a0); -extern s32 D_8011F73C; -extern s32 D_8011F740; -extern void func_801718AC(void *a0); -extern void func_80170DE0(u8 * _arg0); -extern void (*D_8018EAA4[])(void); -extern void func_80170E34(void *a0); -extern void func_80170EAC(u8 *a0); -extern void func_80170E70(u8 *a0); -extern int func_800D0F8C(int a0); -extern void func_80170EAC(u8 * _arg0); -extern void (*D_8018EAAC[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8018EAB4[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_8018EABC[])(void); -extern void func_80171064(void *a0); -extern void func_801710DC(u8 *a0); -extern void func_801710A0(u8 *a0); -extern u16 D_8011F73A; -extern void func_801710DC(u8 * arg0); -extern void (*D_8018EAC4[])(void); -extern void func_80171120(void *a0); -extern void func_8017118C(u8 *a0); -extern void func_8017115C(u8 *a0); -extern void func_80142454(s32 a0); -extern void func_8017118C(u8 * a0); -extern void (*D_8018EACC[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8018EAD4[])(void); -extern void func_80171260(void *a0); -extern s32 func_80012F74(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80171384(void *a0); -extern void (*D_8018EADC[])(void); -extern void func_801714E4(void *a0); -extern void func_8017162C(void *a0); -extern void func_80171520(s32 a0); -extern s32 func_801716AC(s32 a0, void *a1, s32 *a2); -extern s32 func_80012FC8(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_800A5E94; -extern u8 D_800A5E95; -extern u8 D_800A5E96; -extern s32 func_801716AC(s32 a0, void * a1, s32 * a2); -extern int func_800D0FE0(int a0); -extern void func_801717A0(void *a0); -extern void func_8013E588(void *a0); -extern void func_801717F4(void *a0); -extern void func_80171824(void *a0); -extern void func_80171854(void *a0); -extern void func_80171884(void); -extern void func_80171A1C(u8 *a0); -extern void func_80171928(void * a0); -extern void func_8017196C(s32 *a0, s8 a1); -extern void func_80171A04(s32 *a0); -extern void func_80171A10(s32 *a0); -extern void func_80171A34(s32 *a0, s8 a1); -extern s32 func_80171A44(u8 *a0); -extern s32 func_80171A58(u8 *a0); -extern s32 func_80171A6C(u8 *a0); -extern void func_80171A80(s32 *a0, s32 a1); -extern s32 func_80171A88(s32 a0); -extern s16 func_80171AB0(s32 param_1, void * _arg1); -extern void func_80171B10(void *a0); -extern void func_80171EC8(s32 a0); -extern s32 func_80171C64(s32 param_1, s32 param_2); -extern s32 func_80171D78(s32 a0, s32 a1); -extern int func_8017250C(short *a0, short *a1); -extern s32 func_80171CC4(void * a0, void * a1); -extern s32 func_80171FFC(short *a0, short *a1, s32 a2); -extern s32 func_80171D1C(void * a0, void * a1, s32 a2); -extern s32 func_8017248C(s32 a0, s32 a1); -extern s32 func_80171E08(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_80047948(s32 a0); -extern s32 func_8004787C(s32 a0); -extern void func_80172170(s32 a0, s32 a1); -extern s32 func_8017209C(void *arg0, void *arg1, s32 arg2, s32 arg3); -extern void func_801722CC(s32 *a0); -extern void func_80172304(s32 *a0); -extern void func_80172310(u8 *a0); -extern void func_801723C4(s32 param_1, s32 param_2); -extern void func_80161C24(s32, s32); -extern void func_80172414(s32 a0); -extern s32 func_801724EC(s32 a0); -extern s32 func_8017248C(s32 arg0, s32 arg1); -extern s32 func_80013450(s32); -extern s32 func_80172560(u8 *a0, u8 *a1); -extern s32 func_8017261C(u8 *a0); -extern s32 func_80172644(u8 *a0); -extern s32 func_80172670(s32 *a0); -extern s32 func_80172688(s32 *a0); -extern s32 func_80172694(s32 *a0); -extern s32 func_801726A0(s32 *a0); -extern s32 func_801726AC(s32 *a0); -extern s32 func_801726B8(s32 *a0); -extern s32 func_801726C4(s32 *a0); -extern s32 func_80172760(s32 a0); -extern s32 func_80174650(s32); -extern void (*D_80127088)(void); -extern s32 D_801270BC; -extern void func_801726D0(void * _arg0); -extern void func_80172710(void); -extern void func_80174684(void *); -extern void func_80172738(void); -extern s16 D_80126B30; -extern s32 func_801727D0(void *a0); -extern void func_80172780(void *a0); -extern void func_80172844(u8 *a0); -extern void func_8017280C(u8 *a0); -extern void func_8017288C(void); -extern s32 func_801728E4(void *a0); -extern void func_80172894(void *a0); -extern void func_80172958(u8 *a0); -extern void func_80172920(u8 *a0); -extern s16 D_80126B36; -extern void func_80172958(u8 * a0); -extern void func_801729A8(void); -extern s32 func_801729F0(void *a0); -extern s16 D_80126B34; -extern s16 D_80126B32; -extern void func_801729B0(s32 a0); -extern void func_80172A8C(void *a0); -extern void func_80172A2C(int param_1); -extern void func_80172ACC(u8 *a0); -extern void func_80172B0C(void); -extern s32 func_80172B44(void *a0); -extern void func_80172B14(s16 a0); -extern s32 D_801150F8; -extern void func_80172BC8(void *a0); -extern void func_80172B80(u8 *a0); -extern void func_80172C48(void); -extern void (*D_8018EB20[])(void); -extern void func_80172CA0(void *a0); -extern void func_80172D14(u8 *a0); -extern void func_80172CDC(u8 *a0); -extern void func_80172D14(u8 * a0); -extern void func_80172D60(void); -extern s32 D_80127508; -extern s32 func_80172DAC(void *a0); -extern void func_80172D68(s32 a0); -extern void func_80172E20(u8 *a0); -extern void func_80172DE8(u8 *a0); -extern void func_80172E20(u8 * a0); -extern void func_80172E8C(void); -extern void func_8017303C(void *); -extern void func_80172E94(void); -extern void func_80172ED4(void); -extern void func_80172EFC(void); -extern void func_80172F24(void); -extern u8 D_800D47F4[]; -extern void func_80172F4C(void); -extern void func_80172F9C(void); -extern u8 D_800D5C6C[]; -extern void func_80172FEC(void); -extern s32 func_80173078(void *a0); -extern void func_8017303C(void * a0); -extern void func_801730FC(struct S801730FC *a0); -extern void func_801730B4(s32 a0); -extern void func_8017316C(void); -extern s32 func_8017319C(void *a0); -extern void func_80173174(void); -extern u8 D_800D5AA0[]; -extern void func_80173220(void *a0); -extern void func_801731D8(s32 *a0); -extern M2C_UNK D_8018EAE4; -extern void func_80173220(void * arg0); -extern void func_80173294(void); -extern void func_801732C4(); -extern void func_8017329C(void); -extern void func_801732C4(s32 *a0); -extern void func_8017331C(); -extern void func_801732F4(void); -extern void func_8017331C(s32 *a0); -extern void func_80173374(); -extern void func_8017334C(void); -extern void func_80173374(s32 *a0); -extern void func_801733A4(void); -extern void func_801733CC(s32 a0); -extern void func_801734BC(s32 a0, s32 a1); -extern s16 D_80126B3E; -extern void func_80173460(s32 a0, s32 a1); -extern void func_801734BC(s32 arg0, s32 _unused1); -extern void (*D_8018EB50[])(void); -extern void func_80173544(void *a0); -extern void func_801735B8(u8 *a0); -extern void func_80173580(u8 *a0); -extern s16 D_80126B40; -extern void func_801735EC(void *a0); -extern void func_80173648(u8 *a0); -extern void func_801736A8(void); -extern s32 func_8014C118(void *a0, s32 a1, s32 a2); -extern s32 func_801736FC(void *a0); -extern void func_801736B0(s32 a0, s32 a1); -extern void func_80173770(u8 *a0); -extern void func_80173738(u8 *a0); -extern void func_801723C4(s32 a0, s32 a1); -extern void func_801737B0(void); -extern s32 func_801737E8(void *a0); -extern void func_801737B8(s16 a0); -extern void func_8017385C(u8 *a0); -extern void func_80173824(u8 *a0); -extern void func_801738D4(void); -extern s32 func_8017390C(void *a0); -extern void func_801738DC(s16 a0); -extern void func_80173980(u8 *a0); -extern void func_80173948(u8 *a0); -extern void func_801739D8(u8 *a0); -extern void func_80173A20(void); -extern s32 D_8012750C; -extern void func_80173A60(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80173A28(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void (*D_8018EB8C[])(void); -extern void func_80173B4C(void *a0); -extern void func_80173BC0(u8 *a0); -extern void func_80173B88(u8 *a0); -extern void func_80173C64(u8 *a0); -extern void func_80173E1C(s32 a0); -extern s16 D_80126938; -extern s16 D_80126B3A; -extern void func_800D128C(s32, s32); -extern void func_80174158(s32 a0); -extern void func_8002A088(s32); -extern void func_8002A2D4(s32); -extern void func_8002A544(s32); -extern void func_8002A7B4(s32); -extern s32 func_80174188(s32 a0); -extern void func_801741A8(s32 a0); -extern s32 func_800D0EC4(void); -extern void func_800D0F0C(s32, s32); -extern void func_80145EE8(s32); -extern void func_80173EF8(void *param_1); -extern s32 func_8014BCEC(s32, s32); -extern void func_801741A8(s32 _arg0); -extern s16 D_80126B3C; -extern s16 D_8011F9C8; -extern void func_801741EC(u8 *a0); -extern void func_80174274(void); -extern s32 func_801742A4(void *a0); -extern void func_8017427C(void); -extern void func_80174318(u8 *a0); -extern void func_801742E0(u8 *a0); -extern void func_80174354(void); -extern s32 func_80174384(void *a0); -extern void func_8017435C(void); -extern void func_801743F0(u8 *a0); -extern void func_801743C0(u8 *a0); -extern void func_801743F0(u8 * a0); -extern void func_80174430(void); -extern s32 func_80174474(void *a0); -extern void func_80174438(s32 a0); -extern void func_801744E0(u8 *a0); -extern void func_801744B0(u8 *a0); -extern void func_80174524(void); -extern void func_80174554(); -extern void func_8017452C(void); -extern void func_80174554(s32 arg0); -extern void func_801745AC(); -extern void func_80174584(void); -extern void func_801745AC(s32 *a0); -extern void func_80174604(void); -extern void func_801745DC(void); -extern void func_80174630(void); -extern s32 func_80174650(s32 _arg0); -extern void func_80174674(void); -extern void func_801746A4(void); -extern s32 func_800CF8CC(void); -extern void func_80174714(void); -extern s32 func_80174754(void); -extern s16 func_80174764(void); -extern s16 func_80174774(void); -extern s32 func_801747CC(void *a0); -extern void func_80174784(void); -extern s32 func_801747AC(s32 a0); -extern s32 func_80174808(u8 *a0); -extern void func_8017481C(void); -extern s32 func_80174888(void *a0); -extern void func_80174824(void); -extern void func_8017484C(s32 a0); -extern void func_801748C4(s32 a0); -extern void func_801748E4(void); -extern void func_8012A018(s32 a, s32 b); -extern s32 func_8017496C(void *a0); -extern s32 D_80126954; -extern s32 D_80126950; -extern s32 D_8012695C; -extern s16 D_80126968; -extern s16 D_8012696A; -extern s16 D_8012696C; -extern s16 D_80126976; -extern s16 D_80126978; -extern s16 D_8012697A; -extern void func_801748EC(void); -extern s32 func_801749C8(); -extern s32 func_801749A8(s32 a0); -extern void func_80174BBC(void *a0); -extern void func_8012A0E0(void); -extern void func_80174BF4(void *a0); -extern void (*D_8018EBE4[])(); -extern void func_80174BF4(void * arg0); -extern s32 func_80174CB0(s32, s32); -extern s32 func_80174C60(s32 a0); -extern void func_80174C80(s32 a0); -extern s32 D_8012697C; -extern u16 D_80126980; -extern s32 func_80174F28(void *a0); -extern void func_80174E9C(s32 a0); -extern void func_80174EF0(s32 a0, s16 a1); -extern s32 func_80175014(u8 *a0, u8 *a1, s32 a2); -extern void func_80174F64(u8 *a0); -extern void func_80174FBC(u8 *a0); -extern s32 func_8017509C(u8 *a0, s32 a1, u8 *a2, u8 *a3); -extern void func_80175184(s32 *a0); -extern void func_80175114(s32 *a0); -extern void func_80175184(); -extern void func_80175150(s32 *a0); -extern void (*D_8018EBF4[])(void*); -extern s32 func_80175268(s32); -extern void func_80175184(s32* arg0); -extern s32 func_80175218(void *a0); -extern void func_801751D8(void *a0); -extern void (*D_8018EBFC[])(s32); -extern s32 func_80175218(void * param_1); -extern void func_801752BC(s32 *a0); -extern u8 D_8011F7A8; -extern u8 D_8011F7A9; -extern u8 D_8011F7AD; -extern u8 D_8011F7AE; -extern void func_80175494(void); -extern void (*D_8018ED64[])(); -extern s32 func_801758FC(void); -extern s32 func_80175820(void); -extern s32 func_801759D8(void); -extern void func_8017553C(s32 *param); -extern void func_801757A0(s32 a0); -extern short D_800B9A02; -extern void func_80175590(void *arg0); -extern s16 D_800B9A02; -extern void func_801757A0(s32); -extern void func_80175624(void *a0); -extern void func_801757E0(int); -extern void func_80175668(void); -extern void (*D_8018ED70[])(); -extern void func_80175690(s32 *param); -extern void func_80175DA8(s32 a0); -extern void func_80175AB8(s32 a0); -extern void func_80176144(s32 a0); -extern void func_801756E4(s32 arg0); -extern void func_80175798(void); -extern void func_80176734(s32 a0); -extern void func_80176218(s32 a0); -extern void func_80176D00(s32 a0); -extern void func_801757E0(s32 a0); -extern s32 func_80178004(s32 a0, s32 a1, s32 a2); -extern u8 D_8011F7B1; -extern u16 D_8011F7B4; -extern u16 D_8011F7B6; -extern s16 D_8011F81E; -extern void *func_80177784(void *a0, s32 a1, s32 a2, s32 a3); -extern u32 func_801783D0(s32 a0, s32 a1); -extern void *func_801777BC(void *a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern u16 D_8011F82C; -extern u16 D_8011F82A; -extern u32 * func_80176D94(void *param_1, u32 param_2, s16 param_3_); -extern void func_801778A8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80176FF4(s32 a0); -extern u16 D_8011F830; -extern u16 D_8011F82E; -extern u32 * func_801770E0(void *param_1, u32 param_2, s16 param_3_); -extern void func_80177340(s32 a0); -extern u8 D_8011F837; -extern u8 D_8011F7F0; -extern u8 D_8011F7AB; -extern u32 * func_8017742C(u32 *param_1, s32 param_2, s32 param_3); -extern void func_801776EC(u8 *a0); -extern void * func_80177784(void *a0, s32 a1, s32 a2, s32 a3); -extern uint * func_80177EA4(uint *param_1, int param_2, uint param_3, int param_4); -extern void func_80177F84(s32 param_1, s32 param_2); -extern u32 * func_80178298(u32 *param_1, u8 *param_2, short param_3, short param_4); -extern M2C_UNK D_801E9014; -extern void func_80178438(u16 *arg0); -extern void func_801787D4(void); -extern void func_8012A908(void); -extern void func_8017869C(s32 a0); -extern void func_80130D0C(s32 a0); -extern void func_8013E370(void); -extern s32 D_8011DB08; -extern void func_8017849C(void); -extern void func_8013E4B4(void); -extern s16 D_801270C4; -extern s32 D_801274D8; -extern s16 D_801270C2; -extern u8 D_801270C6; -extern u8 D_801270C7; -extern s32 D_801274DC; -extern s32 D_801274E0; -extern void func_80178608(void); -extern void func_80178744(s32 a0, s32 a1); -extern void func_80178840(); -extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern s32 func_801788B8(s32 arg0, s32 arg1); -extern s32 func_801789AC(s32 arg0); -extern s16 D_801EAFC8; -extern int func_80178970(void); -extern s32 func_80178B18(s32 param_1, s32 param_2); -extern s32 func_80178B70(s32 param_1, s32 param_2); -extern void func_80178BB8(s32 a0, s32 a1); -extern s32 func_80178BF8(); -extern s32 D_801EA388; -extern short D_801EB03C; -extern void func_80178CBC(s32 arg0, s32 arg1); -extern void func_80178D18(void); -extern s32 func_80178D40(s32 arg0, s32 arg1); -extern void func_80179B28(s32 a0); -extern void func_80179B74(u16 *p); -extern void func_80179D30(u16 *a0); -extern void func_80179D78(u16 *a0); -extern void func_80179DCC(short a0); -extern void func_80179DF8(void); -extern void func_80179E1C(short a0); -extern void func_80179E48(s16 a0); -extern void func_80179E74(s16 a0); -extern void func_80179EA0(u16 *a0); -extern void func_80179EE8(short a0); -extern void func_80179F14(s16 a0, s16 a1); -extern void func_80179F44(void); -extern void func_80179F6C(short a0); -extern void func_80179F98(u16 *a0); -extern void func_80179FEC(u16 *a0); -extern void func_8017A040(u16 *a0); -extern s32 D_801EA7B4; -extern void func_8017A094(s32 arg0); -extern void func_8017A0C4(s32 arg0); -extern void func_8017A0F4(void); -extern void func_8017A11C(void); -extern s32 D_801EA7DC; -extern void func_8017A144(s32 a0); -extern void func_8017A180(void); -extern void func_8017A1A8(void); -extern void func_8017A1D0(void); -extern void func_8017A1F8(void); -extern void func_8017A220(void); -extern void func_8017A248(void); -extern void func_8017A270(void); -extern void func_8017A298(void); -extern void func_8017A2C0(void); -extern void func_8017A2E8(void); -extern void func_8017A310(void); -extern void func_8017A338(void); -extern void func_8017A360(void); -extern void func_8017A388(void); -extern s16 D_801EA798; -extern s32 func_8017A3B0(void); -extern void func_80172310(u8*); -extern void func_80172780(void*); -extern void func_80172894(void*); -extern void func_801729B0(s32); -extern void func_80172B14(s16); -extern void func_80172C50(u16 *); -extern void func_80172D68(s32); -extern void func_801733FC(s16, u16 *); -extern void func_80173460(s32, s32); -extern void func_801734BC(s32, s32); -extern void func_801736B0(s32, s32); -extern void func_801737B8(s16); -extern void func_801738DC(s16); -extern void func_80173A28(s32, s32, s32, s32, s32, s32); -extern void func_80174438(s32); -extern void func_8017A4AC(void); -extern s32 func_8017AD0C(s32 arg0); -extern s32 func_8017AD0C(s32); -extern s32 func_8017ADE8(s32 a0); -extern s32 func_8017AE08(void); -extern void func_8017B0E4(int param_1, int param_2); -extern s16 D_801EA79C; -extern u16 D_801EA81C; -extern u16 D_801EA81E; -extern u16 D_801EA820; -extern void func_8017B1D8(void); -extern s32 func_8017B238(s32 param_1, s32 param_2); -extern s32 func_8017B368(s32 param); -extern s32 func_8017B614(s32 param_1, s32 param_2); -extern s32 D_80114F30; -extern s32 D_80114F34; -extern s32 D_80114F38; -extern s32 D_80114F24; -extern s32 D_80114F28; -extern s32 D_80114F2C; -extern u8 D_8012694C; -extern s16 D_801EA814; -extern s16 D_801EA816; -extern s16 D_801EA818; -extern s16 D_801EA80C; -extern s16 D_801EA80E; -extern s16 D_801EA810; -extern void func_8017B7A8(void); -extern s16 D_801EA82C; -extern s16 D_801EA82E; -extern s16 D_801EA830; -extern s16 D_801EA834; -extern s16 D_801EA836; -extern s16 D_801EA838; -extern void func_8017B824(void); -extern void func_8017B880(void); -extern s32 func_8017B8E8(s32 src); -extern short D_801EA824; -extern short D_801EA826; -extern short D_801EA828; -extern void func_8017B940(void); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void RotTransSV(void *a0, void *a1, void *a2); -extern SV4 D_801EA7BC; -extern SV4 D_801EA7C4; -extern void func_8017BA3C(s32 param_1, s32 param_2); -extern s32 func_8017BB34(s32 param_1, s32 param_2); -extern void (*D_801EA7E4[10])(int); -extern void func_8017BC38(int param_1); -extern void func_8017B0E4(int, int); -extern void func_8017BCA0(int param_1); -extern void func_8012A4BC(void); -extern void func_8017BCF4(int param_1); -extern void (*D_801EA7E0)(void); -extern void func_8017BD50(int param_1); -extern void (*D_8018EF4C[])(void); -extern void func_8017BE60(void *a0); -extern void func_8017BE9C(void); -extern void func_8017BEA4(void); -extern void func_8017BEAC(void); -extern void func_8017BEB4(void); -extern void (*D_8018EF58[])(void); -extern void func_8017BEE4(void *a0); -extern void func_8017BF98(void); -extern s32 func_8017BFA0(void); -extern void func_8017C07C(void); -extern void (*D_8018F024[])(void); -extern void func_8017C0C8(void *a0); -extern void func_8017C154(); -extern void func_8017C12C(void); -extern void func_8017C14C(void); -extern void (*D_8018F064[])(void); -extern void func_8017C664(void *a0); -extern void (*D_8018F084[])(void); -extern void func_8017CE54(void *a0); -extern void (*D_8018F094[])(void); -extern void func_8017D0DC(void *a0); -extern void (*D_8018F0A0[])(void); -extern void func_8017D63C(void *a0); -extern void (*D_8018F224[])(void); -extern void func_8017DB00(void *a0); -extern void func_8017DB74(u8 *a0); -extern void func_8017DD74(void); -extern void func_8017DF7C(void); -extern void func_8017EB7C(s32 arg0); -extern void func_8017FA5C(s32 arg0, s32 arg1, s32 arg2); -extern void (*D_8018F500[])(void); -extern void func_801805BC(void *a0); -extern u8 D_8018F450; -extern void func_801805F8(s32 a0); -extern void func_80180714(void); -extern M2C_UNK D_8018F4F8; -extern void func_8018071C(void); -extern s32 func_80180744(void); -extern s16 func_80180760(void); -extern s32 D_8018F510; -extern s32 D_8018F56C[]; -extern void func_80180B84(int param_1); -extern void func_80180C34(s32 p); -extern void (*D_8018F5B0[])(void); -extern void func_80180DFC(void *a0); -extern s32 func_800D222C(s32 a0, void *a1, s32 a2); -extern s32 func_8001CF30(void *a0); -extern void func_80180E38(s32 param_1); -extern void func_80180FFC(u8 *p); -extern void (*D_8018F5B8[])(void); -extern void func_80181090(void *a0); -extern u8 D_8018F5A4; -extern void func_801810CC(s32 a0); -extern void func_80181170(int a0); -extern void (*D_8018F6D0[])(void); -extern void func_80181BD0(void *a0); -extern void func_8012C218(void*); -extern void func_80181F78(void); -extern void (*D_8018F728[])(void); -extern void func_80182028(void *a0); -extern void func_80182348(int); -extern void func_801820B4(int param_1); -extern void (*D_8018F73C[])(void); -extern void func_80182654(void *a0); -extern void func_801826D0(void *a0); -extern void func_80182740(void *a0); -extern void func_801827CC(void *a0); -extern void (*D_8018F750[])(void); -extern void func_801828F4(void *a0); -extern void func_80182C28(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80182BB0(s32 arg0, s32 arg1); -extern void func_80182BD4(s32 arg0, s32 arg1, s16 arg2); -extern void func_80182BFC(void *a0, void *a1, s32 a2, s32 a3); -extern void (*D_8018F7AC[])(void); -extern void func_80182E08(void *a0); -extern void (*D_8018F804[])(void); -extern void func_801835C4(void *a0); -extern s32 func_80183644(void); -extern void func_8001BFD0(void); -extern void func_800D1E28(void); -extern s32 func_801836A8(u8 *a0); -extern void func_800D1EBC(void); -extern void func_80183724(void); -extern void (*D_8018F818[])(void); -extern void func_80183744(void *a0); -extern s32 func_801837C0(u8 *a0); -extern void func_8018383C(void); -extern void (*D_8018F824[])(void); -extern void func_8018385C(u8 *a0); -extern M2C_UNK D_8018F830; -extern void func_80183930(void); -extern s32 D_8018F83C; -extern void func_80183958(void); -extern void (*D_8018F850[])(void); -extern void func_80183A18(void *a0); -extern s32 func_80012ABC(s32 a0, s32 a1, s32 a2); -extern void func_80183B58(s32 param_1, s16 *param_2); -extern s32 D_801EAC64; -extern s32 D_801EAC68; -extern void func_80184440(void); -extern void (*D_8018FE80[])(void); -extern void func_801848E4(void *a0); -extern s32 func_801847EC(void); -extern s32 func_8001AAA0(s32 arg); -extern void func_80184D1C(void *a0); -extern void func_80184DA4(s32 param_1); -extern void func_80184DF8(s32 param_1); -extern s32 func_8012C194(void); -extern s32 func_80184E4C(s32 a0, s32 a1, s16 a2, s16 a3, s32 a4); -/* ==== end §8b carried decl layer ==== */ - - -extern s32 func_80178970(void); -extern void func_80178D18(void); -extern void func_80029514(s32); -extern void func_800D0F4C(s32 a0); -extern void func_8012C218(void*); -extern s32 func_8001AAA0(s32 arg); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_800D0C48(s32 a0); -extern s32 func_8004787C(s32 a0); - -void func_80184F14(s32 param_1) { - s32 ret; - - if (func_80178970() != 0) { - ((void (*)(void *))func_80178D18)((void *)param_1); - if (*(u16 *)(param_1 + 0x34) >= 6) { - func_80029514(0x2C6); - func_800D0F4C(0x5F); - if (*(s32 *)(param_1 + 0xCC) != 0) { - func_8012C218((void *)*(s32 *)(param_1 + 0xCC)); - } - if (*(s32 *)(param_1 + 0xD0) != 0) { - func_8012C218((void *)*(s32 *)(param_1 + 0xD0)); - } - func_8012C218((void *)param_1); - return; - } - *(u16 *)(param_1 + 2) = 1; - *(u16 *)(param_1 + 0x34) = 0; - } - switch (*(u16 *)(param_1 + 0x34)) { - case 0: - break; - case 1: - func_800D0C48(1); - *(u16 *)(param_1 + 0x34) = *(u16 *)(param_1 + 0x34) + 1; - /* fallthrough */ - case 2: - *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x18) = *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x18) - 0x40; - *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x1A) = *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x1A) - 0x40; - *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x1C) = *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x1C) - 0x40; - if (*(s16 *)(*(s32 *)(param_1 + 0x20) + 0x18) < 0x100) { - *(u16 *)(param_1 + 0x108) = 0x14; - *(u16 *)(param_1 + 0x34) = *(u16 *)(param_1 + 0x34) + 1; - } - break; - case 3: - *(u16 *)(param_1 + 0x108) = *(u16 *)(param_1 + 0x108) - 1; - *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12) = *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12) + 0x33; - if (*(s16 *)(param_1 + 0x108) == 0) { - *(u16 *)(param_1 + 0x34) = *(u16 *)(param_1 + 0x34) + 1; - func_8002D4C8(0x8B5, 0); - func_8001AAA0(0x50); - } - break; - case 4: - *(u16 *)(param_1 + 0x108) = (*(u16 *)(param_1 + 0x108) + 0x300) & 0xFFF; - ret = func_8004787C(*(u16 *)(param_1 + 0x108)); - if (ret < 0) { - ret = -ret; - } - *(s32 *)(param_1 + 4) = *(s32 *)(param_1 + 4) + (ret * 0x40); - if (0x17FFFFF < *(s32 *)(param_1 + 4)) { - *(u16 *)(param_1 + 0x34) = *(u16 *)(param_1 + 0x34) + 1; - func_8002D4C8(0xD, 0x8B5); - } - break; - case 5: - if (func_8001AAA0(0x50) != 0) { - *(u16 *)(param_1 + 0x34) = *(u16 *)(param_1 + 0x34) + 1; - } - break; - } -} - - - -extern void (*D_80190008[])(void); - -void func_80185144(void *a0) { - D_80190008[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern s32 func_80029504(void); -extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012B2CC(s32 a0); -extern void func_800D0C48(s32 a0); -extern int func_80178970(void); -extern void func_80178D18(void); -extern s32 func_80178B18(s32 param_1, s32 param_2); -extern s16 D_80190078; - -void func_80185180(s32 param_1) { - s32 s0; - - switch (*(u16 *)(param_1 + 0x34)) { - case 0: - if ((u32)func_80029504() >= 0x2D0) { - *(u16 *)(param_1 + 0xA) += 0xF00; - *(u32 *)(*(s32 *)(param_1 + 0x20) + 4) &= 0x7FFFFFFF; - *(u16 *)(param_1 + 0x34) += 1; - func_800D0C48(1); - } - break; - case 1: - s0 = func_8012C658(0x265, 5, param_1); - if (s0 == 0) { - break; - } - *(s16 *)(s0 + 6) = 0x276; - *(s16 *)(s0 + 0xA) = -0x48; - *(s16 *)(s0 + 0xE) = -0x2DA; - func_8012B2CC(s0); - *(s32 *)(param_1 + 0xCC) = s0; - *(u16 *)(param_1 + 0x34) += 1; - break; - case 2: - s0 = func_8012C658(0x265, 5, param_1); - if (s0 == 0) { - break; - } - *(s16 *)(s0 + 6) = -0x26C; - *(s16 *)(s0 + 0xA) = -0x48; - *(s16 *)(s0 + 0xE) = -0x2DA; - func_8012B2CC(s0); - *(s32 *)(param_1 + 0xD0) = s0; - *(u16 *)(param_1 + 0x34) += 1; - break; - case 3: - s0 = func_8012C658(0x265, 0, param_1); - if (s0 == 0) { - break; - } - *(s16 *)(s0 + 6) = -0x15B; - *(s16 *)(s0 + 0xA) = -0x82; - *(s16 *)(s0 + 0xE) = -0x1ED; - *(s16 *)(*(s32 *)(s0 + 0x20) + 0x12) = -0x600; - *(s32 *)(param_1 + 0x6C) = s0; - *(u16 *)(param_1 + 0x34) += 1; - break; - case 4: - s0 = func_8012C658(0x265, 6, param_1); - if (s0 == 0) { - break; - } - *(u16 *)(s0 + 0xA) -= 0x10; - *(s16 *)(*(s32 *)(s0 + 0x20) + 0x12) = 0x900; - *(s32 *)(param_1 + 0xD8) = s0; - *(u16 *)(param_1 + 0x34) += 1; - func_80178B18(param_1, (s32)&D_80190078); - break; - case 5: - if (((s32 (*)(s32))func_80178970)(param_1) != 0) { - ((void (*)(s32))func_80178D18)(param_1); - *(u16 *)(param_1 + 0x34) = 0; - *(u16 *)(param_1 + 2) += 1; - } - break; - } -} - - -typedef struct { - s16 m[3][3]; - s16 pad; - s32 t[3]; -} MtxLocal_80185380; -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8_80185380; - - -extern void func_8012C218(void *a0); -extern s32 func_8012B8A4(s16 *a0); -extern s32 func_8004787C(s32 a0); -extern s32 func_80047948(s32 a0); -extern s32 func_80178B18(s32 param_1, s32 param_2); -extern s32 func_801789AC(s32 arg0); -extern void func_80178D18(void); -extern void func_80029514(s32); -extern void func_8012A568(void (*a0)(void)); -extern void func_80183980(void); - - -void func_80185380(s32 param_1) { - - extern u16 D_80126B5E; - extern u16 D_80126B62; - extern u16 D_80126B66; - extern u16 D_80190048; - extern u16 D_8019004A; - extern u16 D_8019004C; - extern u16 D_8019005A; - extern u16 D_8019005C; - extern s32 D_80190344; - u16 state; - s32 obj; - - state = *(u16 *)(param_1 + 0x34); - switch (state) { - case 0: - obj = *(s32 *)(param_1 + 0x6C); - if (*(s16 *)(obj + 0x76) > 0) { - return; - } - *(u16 *)(param_1 + 0x34) = state + 1; - func_8012C218((void *)*(s32 *)(param_1 + 0xCC)); - func_8012C218((void *)*(s32 *)(param_1 + 0xD0)); - - { - register s32 o __asm__("$2"); - u16 v6; - register u16 *p10 __asm__("$3"); - - o = *(s32 *)(param_1 + 0x6C); - v6 = *(u16 *)(o + 0x6); - __asm__ __volatile__("" : "=r"(v6) : "0"(v6) : "memory"); - p10 = &D_80190048; - __asm__ __volatile__("" : "=r"(p10) : "0"(p10) : "memory"); - *p10 = v6; - - o = *(s32 *)(param_1 + 0x6C); - D_8019004A = *(u16 *)(o + 0xA) - 0x40; - - o = *(s32 *)(param_1 + 0x6C); - { - u16 g5e = D_80126B5E; - D_8019004C = *(u16 *)(o + 0xE); - *(u16 *)((u8 *)p10 + 0x10) = g5e; - } - } - - D_8019005A = D_80126B62 - 0x40; - D_8019005C = D_80126B66; - - { - s32 v; - s32 a1val; - s32 sinv; - s32 angleDelta; - s32 tmp; - s32 *p; - - v = func_8012B8A4((s16 *)param_1); - a1val = func_8004787C(v); - - p = &D_80190344; - angleDelta = (*(s16 *)(param_1 + 0x6) - (((a1val * 3) << 5) >> 12)) & 0xFFFF; - *p = angleDelta; - - sinv = func_80047948(v); - tmp = (*(s32 *)(param_1 + 0xC) - ((sinv * 3) << 9)) & 0xFFFF0000; - *p = *p | tmp; - func_80178B18(param_1, (s32)((u8 *)p - 0x4C)); - } - break; - case 1: - if (func_801789AC(param_1) != 0) { - ((void (*)(void *))func_80178D18)((void *)param_1); - *(u16 *)(param_1 + 0x34) = *(u16 *)(param_1 + 0x34) + 1; - *(u16 *)(*(s32 *)(param_1 + 0xD8) + 0x34) = 1; - func_80029514(0x2DA); - func_8012A568(func_80183980); - } - break; - } -} - - -DEFINE_func_8018553C() /* dedup: shared engine-core @0x8018553C (src/shared) */ - - -extern s32 D_801EAEE4; - s32 func_80185578(void) { - return 0x2 - D_801EAEE4; - } - - - - -s32 func_8018558C(void *a0) { - return ((*(u16 *)((u8 *)a0 + 0x34) < 6) ^ 1); -} - - - - -/* TU-canonical (src/ov_SC03_014/ov_SC03_014_jr_801848E4.c) */ -extern s32 func_8012C354(s32 a0, s32 a1); /* L2928 */ -extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); /* L2929 / L2524 */ -extern void func_8012A828(s32 a0, void *a1); /* L2930 */ -extern s32 func_80029504(void); /* L24 */ -extern void func_8012C218(void *a0); /* L2712/3290 */ -extern s32 func_801788B8(s32 arg0, s32 arg1); /* L2527 */ -extern void func_8012B2CC(s32 a0); /* L2526 */ -extern s32 func_801859B0(void *a0); /* L2902, defined earlier in this TU */ - -extern u8 D_8018B898[]; /* L3981, TU-canonical */ - -/* Not declared elsewhere in the TU; used only as a bare base address here. */ -extern u8 D_8018FEAC[]; -extern u8 D_8018FE9C[]; - -void func_801855A0(s32 a0) { - s32 v1; - - if (func_8012C354(a0, (s32)D_8018FEAC) == 0) { - return; - } - - if ((u32)func_80029504() >= 0x2C6) { - func_8012C218((void *)a0); - return; - } - - *(s16 *)(a0 + 0x2) = 1; - func_8012A828(a0, D_8018B898); - v1 = *(s32 *)(a0 + 0x20); - *(u16 *)(v1 + 0x2C) |= 0x10; - - *(u8 *)(a0 + 0x75) = 0; - if (*(s16 *)(a0 + 0x70) == 0) { - *(s32 *)(a0 + 0xD0) = func_801788B8(a0, (s32)func_801859B0); - *(s32 *)(a0 + 0xCC) = func_8012C658(0x241, 1, a0); - return; - } - - *(s32 *)(a0 + 0x58) = (s32)D_8018FE9C | 0x40000000 | 0x20000000; - *(s16 *)(a0 + 0xA) -= 0xC0; - *(s16 *)(a0 + 0xE) += 0x80; - *(u32 *)(*(s32 *)(a0 + 0x20) + 4) |= 0x80000000; - func_8012B2CC(a0); -} - - -DEFINE_func_801856B4() /* dedup: shared engine-core @0x801856B4 (src/shared) */ - - -extern s32 func_80029504(void); -extern void func_80178CBC(s32 arg0, s32 arg1); - -void func_801856C4(void *arg0) { - - extern u16 D_8018FEE0[]; - extern u16 D_8018FFA0[]; - extern u16 D_8018FF38[]; - s32 s0; - - s0 = (s32)arg0; - if ((u32)func_80029504() < 0x2BC) { - func_80178CBC(s0, (s32)D_8018FEE0); - } else { - if (*(s16 *)(s0 + 0x10A) != 0) { - func_80178CBC(s0, (s32)D_8018FFA0); - } else { - func_80178CBC(s0, (s32)D_8018FF38); - } - } - *(s16 *)(s0 + 0x2) = 3; -} - - - -extern s32 func_8001AAA0(s32 arg); - s32 func_80185744(void) { - return func_8001AAA0(0x51) != 0; - } - - - -extern s32 func_8001AAA0(s32 arg); - s32 func_80185764(void) { - return func_8001AAA0(0x52) != 0; - } - - -extern s32 func_8001AAA0(s32 arg); - s32 func_80185784(void) { - return func_8001AAA0(0x56) != 0; - } - - - - -extern s32 func_80184868(s32); - -s32 func_801857A4(void) { - return (u32)((s32 (*)(void))func_80184868)() != 0; -} - - -extern void func_800D0C48(s32 arg); - void func_801857C4(void) { - func_800D0C48(0x1); - } - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern u16 D_80126BF0; -extern u16 D_80126BF4; -extern void func_80172780(void *a0); - -s32 func_801857E4(void) { - s16 t[3]; - if ((s16)D_80126B5E == (s16)D_80126BF0 && (s16)D_80126B66 == (s16)D_80126BF4) { - t[2] = D_80126B66; - t[0] = D_80126B5E; - t[1] = D_80126B62; - func_80172780((void *)t); - return 1; - } - return 0; -} - - -extern s8 D_801903A8[]; - -void func_80185858(s32 arg0) { - s32 *s0 = (s32 *)arg0; - u32 t; - s32 *obj; - - if (func_8012C354(arg0, (s32)D_801903A8) == 0) { - return; - } - - t = func_80029504(); - *(s16 *)((s32)s0 + 2) = (t < 0x2DA) ? 1 : 4; - - *(u8 *)((s32)s0 + 0x75) = 4; - func_8012B2CC((s32)s0); - - obj = *(s32 **)((s32)s0 + 0x20); - *(u32 *)((s32)obj + 4) |= 0x80000000; -} - - - - -extern s32 func_80184028(); -extern u16 D_80126B66; -extern void func_8002D4C8(s32 a0, s32 a1); - -void func_801858D4(s32 a0) { - s32 v0 = *(s16 *)(a0 + 0x84); - if (v0 != 0) { - v0 = func_80184028(); - if (v0 == 0x18) { - *(s16 *)(a0 + 0x84) = 0; - } - } else { - s32 a1; - v0 = func_80184028(); - if (v0 == 0xF) { - *(s16 *)(a0 + 0x84) = 1; - a1 = -(s16)D_80126B66 >> 3; - if (a1 < 0) a1 = 0; - if (a1 > 0x7F) a1 = 0x7F; - func_8002D4C8(0xBAB, (u16)(a1 | 0x1000)); - } - } -} - - -extern s32 func_80184868(s32 arg); - void func_8018597C(void *a0) { - if (func_80184868((s32)a0)) { - *(s16 *)((s32)a0 + 0x2) = 0x3; - } - } - - - - -extern s32 func_8012BD14(s32 a0); -extern s32 func_80178BF8(); /* TU-canonical (ov_SC03_014_jr_801848E4.c L2534) */ -extern void func_80172710(void); - -s32 func_801859B0(void *a0) -{ - if (func_8012BD14(*(s32 *)((s32)a0 + 0x64)) > 0x4000) { - return 0; - } - - *(s16 *)(*(s32 *)((s32)a0 + 0x64) + 0x2) = 2; - func_80178BF8(); - return (s32)func_80172710; -} - - - - -extern void func_8001C2C4(s32 a0); -extern void func_80049CAC(s32 a0, s32 a1); /* TU L2637 verbatim */ -extern void func_8004914C(void *a0); /* TU L2638 verbatim */ -extern void func_800491AC(void *a0); /* TU L2639 verbatim */ -extern void RotTransSV(void *a0, void *a1, void *a2); /* TU L2640 verbatim */ -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); /* TU L323 verbatim */ - -extern SV4 D_80190470; -extern SV4 D_80190478; -extern SV4 D_801EAC70; -extern SV4 D_801EAC78; - -typedef struct { - s16 m[3][3]; - s16 pad; - s32 t[3]; -} MtxLocal; - -/* The target's stack frame (0xC8) is bigger than the visible locals below account - * for on their own: two byte-ranges (sp+0x28..0x44 and sp+0x64..0x98) never surface - * as a load/store in the target .s, yet the surrounding fields' absolute offsets - * prove the space is reserved. A struct's TOTAL size is BIGGEST_ALIGNMENT(8)-rounded - * as ONE unit (function.c assign_stack_local), but a MEMBER's offset inside that - * struct follows plain C layout rules (no forced 8-byte-per-member rounding) -- so - * folding v0 + the dead region + mtx + the second dead region into ONE aggregate - * local reproduces the exact absolute offsets with a single outer rounding, instead - * of each dead region getting its own independent 8-round (which cannot land on - * mtx's true 0x44 start -- 0x44-0x20=0x24, not a multiple of 8). - */ -typedef struct { - s16 a, b, c, d; /* sp+0x20 : func_80049CAC arg0 (SV4; only a,b,c written) */ - u8 _gap1[28]; /* sp+0x28..0x44 : never referenced by an instruction */ - MtxLocal mtx; /* sp+0x44 : MATRIX out, t[] at sp+0x58 */ - u8 _gap2[52]; /* sp+0x64..0x98 : never referenced by an instruction */ -} Frame1; - -void func_80185A0C(s32 arg0) -{ - s8 unused_buf[16]; /* sp+0x10 : func_8001C2C4 out, never re-read */ - Frame1 f; /* sp+0x20 */ - SV4 buf1; /* sp+0x98 : RotTransSV #1 out */ - SV4 buf2; /* sp+0xA0 : RotTransSV #2 out */ - SV4 buf3; /* sp+0xA8 : shared scratch a2 for both RotTransSV */ - u8 *p; - - func_8001C2C4((s32)&unused_buf[0]); - - p = (u8 *)(*(s32 *)(*(s32 *)(arg0 + 0x20) + 0x20) & 0xFEFFFFFF); - p = p + 0x70; - __asm__("" : "=r"(p) : "0"(p)); - - f.a = *(u16 *)(p + 6); - f.b = p[1] | ((p[0] & 0xF) << 8); - f.c = p[2] | ((p[0] & 0xF0) << 4); - - ((void (*)(void *, void *))func_80049CAC)(&f, &f.mtx); - - f.mtx.t[0] = *(s8 *)(p + 3); - f.mtx.t[1] = *(s8 *)(p + 4); - f.mtx.t[2] = *(s8 *)(p + 5); - - func_8004914C(&f.mtx); - func_800491AC(&f.mtx); - - RotTransSV(&D_80190470, &buf1, &buf3); - RotTransSV(&D_80190478, &buf2, &buf3); - - func_8012F14C(*(s32 *)(arg0 + 0x20) + 0x34, (s32)&buf1, (s32)&D_801EAC70); - func_8012F14C(*(s32 *)(arg0 + 0x20) + 0x34, (s32)&buf2, (s32)&D_801EAC78); -} - diff --git a/src/ov_SC03_015/ov_SC03_015_jr_80185B44.c b/src/ov_SC03_015/ov_SC03_015_jr_80185B44.c deleted file mode 100644 index 0b98b87d0..000000000 --- a/src/ov_SC03_015/ov_SC03_015_jr_80185B44.c +++ /dev/null @@ -1,6527 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8; -typedef void (*Handler)(struct Entry_8016E95C *); -typedef struct { - s16 m[3][3]; - s16 pad; - s32 t[3]; -} MtxLocal_80185380; -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8_80185380; -extern void func_801458E0(void); -extern s32 D_800AE6AC; -extern s32 D_800AE6B0; -extern s16 D_800B9A0A; -extern u8 D_80078E50; -extern void func_800D185C(u8 *a0); -extern void func_801458E8(void); -extern s32 func_80029504(void); -extern void func_80145B24(void); -extern u8 D_8018DAA4; -extern u8 D_8018DA14; -extern u8 D_8018D9F0; -extern u8 D_8018D9CC; -extern u8 D_8018DA80; -extern u8 D_8018DA5C; -extern u8 D_8018DA38; -extern u8 D_8018D9A8; -extern void func_80145934(void); -extern u8 D_8018DB34; -extern u8 D_8018DB10; -extern u8 D_8018DAEC; -extern u8 D_8018DAC8; -extern void func_80145A2C(void); -extern s32 func_800291DC(s32); -extern void func_800291C8(s32, s32); -extern void func_80162120(void); -extern void func_80029124(s32, s32); -extern s32 func_80165A50(s32); -extern void func_80029514(s32); -extern u8 D_80078EC0; -extern s32 D_80126B58; -extern s32 func_80028FBC(void); -extern s32 func_80029000(void); -extern s32 func_80028D9C(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_80145BF8(void); -extern s32 func_800291B4(s32 arg); -extern void func_800291A0(s32, s32); -extern void func_80145C54(void); -extern s32 func_80145CEC(); -extern s32 func_80029178(s32 arg); -extern void func_80146014(s32 a0); -extern unsigned char D_8018CF2C[]; -extern unsigned char D_8018CF5C[]; -extern unsigned char D_8018CFAC[]; -extern unsigned char D_8018CFDC[]; -extern unsigned char D_8018D00C[]; -extern void func_80145EE8(s32 param_1); -extern void MoveImage(void *a0, s32 a1, s32 a2); -extern void func_80146074(void); -extern s32 func_80146128(void); -extern void func_80146360(void); -extern void func_801463A0(); -extern void func_8014607C(void); -extern u8 D_80078EC1; -extern s32 D_80078EC8; -extern s32 D_80126B9C; -extern s32 D_8011F730; -extern u16 D_801152B8; -extern u16 D_8012693A; -extern u8 D_80126BE0[]; -extern u8 D_801150F0[]; -extern void *memcpy(void *dst, const void *src, u32 n); -extern void func_80146FC4(s32 a0); -extern void func_80150A70(s32 a0); -extern void func_80147098(s32 *a0); -extern void func_8014A638(s32 arg0); -extern s32 func_80155458(s32 a0); -extern s32 func_80029104(void); -extern void func_80029344(void); -extern void func_8014ADE0(s32 a0); -extern void func_8014B350(s32 a0); -extern void func_8014B7A4(s16 *param_1); -extern s32 func_80161D58(s32 a0); -extern void func_80161A90(s32 a0); -extern void func_8014B504(u16 *a0); -extern void func_80149BEC(s32 a0); -extern void func_8014B5D0(s32 *a0); -extern void func_8014C99C(u8 *a0); -extern void func_8014B190(s32 s0); -extern void func_80148648(s32 a0, s32 a1); -extern s32 func_80149228(s32 a0); -extern void func_8014A59C(s32 a0); -extern void func_8016F14C(void *a0); -extern void func_80154418(void *a0); -extern void func_80154BE4(s32 a0); -extern void func_80165694(s32 arg0); -extern void func_801654A8(s32 a0); -extern void func_8014A680(s32 a0); -extern void func_8014A6A8(s32 a0); -extern void func_8014A71C(s32 a0); -extern void func_80172588(s32 *a0); -extern void func_801473DC(s32 *a0); -extern void func_80015978(s32 a0, s32 *a1); -extern void (*D_8018D05C[])(void *); -extern u8 D_80126BA4; -extern s32 D_80127098; -extern s32 D_80127094; -extern s32 D_80127090; -extern void func_80146534(void); -extern void func_8001D074(s32 a0, s32 a1); -extern void func_80146554(void); -extern void func_80146578(void); -extern void func_8001CFDC(s32, s32); -extern void func_8014659C(void); -extern void func_8001D074(s32, s32); -extern void func_801465C0(void); -extern void func_801465E4(void); -extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); -extern s32 D_8011F9D0; -extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); -extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 D_8011F750; -extern s32 D_8011F754; -extern u8 * func_801468C8(s32 arg0, u8 arg1); -extern s32 D_8011D030; -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); -extern s32 func_80146B9C(void *a0); -extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); -extern u16 D_8011DA28; -extern s32 func_80146B9C(void * arg0); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80146CA0(void *a0); -extern void func_80146CB4(void *a0); -extern void func_80146CC8(s32 a0); -extern void func_80146D30(s32 a0); -extern void func_80146D80(s32 *a0); -extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80146D90(s32 a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); -extern void func_80146E90(s32 *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80015954(s32 a0, s32 a1); -extern void func_80149374(s32 a0, s32 a1); -extern void func_80146F58(s32 a0, s32 a1); -extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 func_8012A68C(void); -extern s16 func_8012A758(void); -extern void func_8004978C(s16 *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern u8 D_80126DB0[]; -extern u16 D_80126DB6; -extern void func_8014704C(s32 *a0); -extern s32 func_80147054(void *a0); -extern void func_80147060(u8 * a0); -extern void func_8014706C(void *arg0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80147084(s32 *a0); -extern void func_8014708C(void *arg0); -extern s32 func_801470A0(void *a0); -extern void func_801470AC(s32 *a0); -extern void func_801470B4(s32 arg0); -extern void func_801470C0(s32 a0); -extern void func_80147118(s32 a0); -extern s16 D_80126BB8; -extern s16 D_80126BBA; -extern s16 D_80126BBC; -extern void func_80147264(s32 a0); -extern void func_80147290(void); -extern void func_801472B4(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void *D_8012707C; -extern void func_801472DC(void); -extern void func_801472F0(void *a0); -extern void func_80147364(u16, s32); -extern void func_80147300(u16 arg0); -extern void func_80147324(s32 arg0); -extern void func_801473EC(s32 *a0); -extern void func_80147460(s32 a0); -extern void func_80147514(); -extern void func_80147628(s32 a0); -extern void func_80147478(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); -extern s32 func_800129CC(s32 a0, s32 a1); -extern void func_80147514(s32 arg0); -extern void func_80013F3C(s32 a0); -extern void func_80012558(s32 a0, s32 a1); -extern void func_800126C4(s32 a0, s32 a1); -extern void func_800123F0(s32 a0, s32 a1); -extern void func_80147718(s32 a0); -extern void func_80147788(void *a0, s32 a1); -extern void func_801477A8(void *a0, s32 a1); -extern void func_801477C8(void *a0, s32 a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80147814(s32 a0, s32 a1); -extern void func_80147928(int a0, int a1); -extern void func_8014799C(int a0, int a1); -extern void func_80147A10(int a0, int a1); -extern void func_80147860(int a0, int a1, int a2, int a3); -extern void func_80147948(s32 a0, s32 a1, s32 a2); -extern void func_801479BC(s32 a0, s32 a1, s32 a2); -extern void func_80147A30(s32 a0, s32 a1, s32 a2); -extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147948(int a0, int a1, int a2); -extern void func_801479BC(int a0, int a1, int a2); -extern void func_80147A30(int a0, int a1, int a2); -extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147A84(s32 arg0); -extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147AAC(s32 arg0); -extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80147B5C(s32 a0, void *a1); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern void func_80147B18(s32 a0); -extern void func_80147B5C(s32 arg0, void *arg1); -extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147DC0(s32 a0, s32 a1); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147F50(s32 arg0); -extern void func_80148038(s32 a0, s32 a1); -extern s32 ratan2(s32 a0, s32 a1); -extern s32 csqrt(s32 a0); -extern s32 func_80012A60(s32 a0, s32 a1); -extern void func_80148094(int param_1, short *param_2, int *param_3); -extern void func_801485B8(s32 a0, s32 a1, s32 a2); -extern void func_801484B0(s32 a0, s32 a1); -extern s32 func_80154358(void *a0); -extern void func_801484E8(s32 a0, s32 a1); -extern void func_80148534(s32 a0, s32 a1); -extern void func_8014856C(s32 a0, s32 a1); -extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); -extern void func_80148634(void *a0); -extern u8 D_800B9A64; -extern s32 func_80014DC0(); -extern s32 func_80014D68(); -extern s32 func_80014D94(); -extern s32 func_80014CF8(); -extern void func_800120DC(); -extern s32 func_800CF8B4(); -extern u16 func_801487F4(s32 *a0); -extern u16 func_80148800(s32 *a0); -extern u8 func_8014880C(s32 *a0); -extern u16 func_80148818(s32 *a0); -extern s32 func_80047D3C(s32 a0); -extern s32 func_80148824(void *arg0); -extern s32 func_801488A8(u8 *a0); -extern s32 func_8014891C(s32 a0); -extern s32 func_80148980(u8 *a0); -extern s32 func_801489E8(s32 a0); -extern s32 func_80148A48(s32 a0); -extern int func_80148AFC(void *a0); -extern void func_80148AAC(u8 *a0); -extern s32 func_80148C18(void); -extern s32 func_80148C20(s32 a0, s16 a1); -extern s32 func_80148C34(s32 a0, s32 a1); -extern s32 func_80148C4C(s32 a0, s32 a1); -extern s32 func_80148C64(s32 a0, s32 a1); -extern s32 func_80148C7C(void); -extern s32 func_80148C84(s32 a0, s32 a1); -extern s32 func_80148C9C(s32 a0, s32 a1); -extern s32 func_80148CB4(s32 a0, s32 a1); -extern s32 func_80148CCC(s32 a0, s32 a1); -extern s32 func_80148CE4(void); -extern s32 func_80148CEC(void); -extern s32 func_80148CF4(s32 a0, s32 a1); -extern s32 func_80148D0C(s32 a0, s32 a1); -extern s32 func_80148D24(void *a0, int a1); -extern s32 func_80148D3C(void); -extern s32 func_80148F60(void); -extern s32 func_80148F68(s32 a0); -extern s32 func_80148F74(s32 a0); -extern s32 func_80148F80(s32 a0); -extern s32 func_80148F8C(s32 a0); -extern s32 func_80148F98(void); -extern s32 func_80148FA0(s32 a0); -extern s32 func_80148FAC(s32 a0); -extern s32 func_80148FB8(s32 a0); -extern s32 func_80148FC4(s32 a0); -extern s32 func_80148FD0(void); -extern s32 func_80148FD8(void); -extern s32 func_80148FE0(s32 a0); -extern s32 func_80148FEC(s32 a0); -extern s32 func_80148FF8(s32 a0); -extern s32 func_80149004(void); -extern void func_8014900C(s32 *a0); -extern void func_80149020(s32 *a0); -extern void func_80149034(s32 *a0); -extern void func_80149048(s32 *a0); -extern void func_8014905C(u8 *a0); -extern void func_801490E0(s32 *a0, s16 a1); -extern void func_801490E8(s32 *a0, s16 a1); -extern void func_801490F0(s32 *a0, s16 a1); -extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); -extern void func_801490F8(s32 a0, s32 a1); -extern s32 func_801491C4(s32 a0); -extern s32 func_80149184(s32 a0); -extern s32 D_801151D4; -extern void func_80149204(s32 *a0); -extern void func_80149210(s32 a0, s32 a1); -extern s32 func_80149284(s32 *a0, s32 a1); -extern void func_80149350(s32 arg0); -extern void func_80149290(s32 a0); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_80149374(s32 arg0, s32 arg1); -extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8014942C(s32 arg0); -extern void func_8012EF70(s32 a0, s32 a1); -extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012EFB8(s32 a0); -extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); -extern void func_8014964C(s32 param_1, s32 param_2); -extern s32 func_801496D4(void *a0); -extern void func_8015AD08(); -extern void func_80149704(void); -extern void func_8015ACC4(); -extern void func_80149724(void); -extern u8 D_80078EBF; -extern s32 func_80149744(struct S_80149744 *a0); -extern void func_8015F7A0(); -extern void func_80149788(void); -extern void func_801653B8(); -extern void func_80149864(void); -extern s16 currentLocationId; -extern s32 func_8016F1AC(void); -extern s32 func_80149884(void); -extern void func_80160B00(); -extern void func_801498C0(void); -extern s32 func_80149AA8(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern void func_80146750(void *a0); -extern s32 func_801498E0(s32 *a0); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_80147364(u16 a0, s32 a1); -extern s32 func_800CCF28(s32 a0); -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_8015DAC4(s32 *a0); -extern void func_8015554C(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern void func_80149B14(s32 *a0); -extern u8 func_8014BEF8(void); -extern s32 func_80149B54(s32 * arg0); -extern void func_8015DE24(s32 *a0); -extern void func_80157510(s32 *a0); -extern void func_80149BAC(s32 *a0); -extern s32 func_80029178(s32 a0); -extern s32 func_80149C08(s32 arg0); -extern void func_801577C8(); -extern void func_80149C94(void); -extern void func_80157D20(void); -extern void func_80149CB4(void); -extern s32 func_80149CD4(s32 a0); -extern u8 func_8014B5B8(s32 *a0); -extern s32 func_80149D10(s32 a0); -extern s32 func_80149E94(s32 a0); -extern s32 func_80149DD8(s32 a0); -extern s32 func_80149D9C(s32 a0); -extern u8 D_801202A0[]; -extern s32 func_80149F2C(s32 a0, s32 a1); -extern s32 func_80149E94(s32 arg0); -extern void func_80149FA8(void); -extern s32 D_8018D124[]; -extern u8 D_80078E78[]; -extern s32 func_80149FB0(s32 a0); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern void func_8014A1B0(s32 a0, s32 a1); -extern s32 func_8014A048(s32 param_1); -extern u16 func_80156370(u16 a0); -extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); -extern void func_8015D4B4(); -extern void func_8014A218(void); -extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); -extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); -extern s32 func_8014A238(s32 arg0); -extern s32 func_8014A2E4(s32 a0); -extern void func_8014A380(s32 a0, s32 a1); -extern s16 D_801152B0; -extern s16 D_801152B4; -extern s32 func_8014A3E0(struct S_8014A3E0 *a0); -extern s32 func_8014A454(s32 a0); -extern s32 func_8014A4B4(void *a0); -extern void func_8015EDD4(); -extern void func_8014A4FC(void); -extern s32 func_8014A674(s32 *a0); -extern s32 func_8014A69C(s32 *a0); -extern s32 func_8014A6C4(s32 a0); -extern void func_8015E184(); -extern void func_8014A830(void); -extern s32 func_80029AF4(void); -extern s32 func_8014A850(s32 param_1); -extern void func_8014AA04(s32 a0); -extern void func_801599A4(void *a0); -extern void func_80159B3C(void *a0); -extern s32 func_80165A20(s32 a0); -extern void func_8014AB7C(); -extern void func_8014AC10(); -extern void func_8014AA28(void); -extern void func_8014AB5C(void); -extern void func_80162CCC(void); -extern void func_8014AB7C(s32 arg0); -extern void func_8014ABF0(void); -extern void func_80016714(void *a0, s32 a1); -extern void func_8014AC10(s32 arg0); -extern void func_8014ACC0(s32 a0, s32 a1); -extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); -extern void func_8014ACE8(void *a0, s32 a1, s32 a2); -extern void func_80146AFC(void *a0); -extern void func_8014ADA8(s32 a0, s32 a1); -extern void func_8014AD7C(s32 a0); -extern s32 D_80078E8C; -extern void func_8014B034(s32 arg0); -extern void func_8014B00C(s32 arg0); -extern void func_8014B084(void); -extern s16 D_80078E90; -extern void func_8014B034(s32 a0); -extern u16 D_80078EAC; -extern u8 D_80078EBA; -extern void func_800D10EC(void); -extern void func_8002AC98(void); -extern s32 func_8014B154(s32 *a0); -extern void func_8014B12C(void); -extern void func_8014B2F8(void); -extern void func_8014B4C4(void); -extern void func_8014B160(s32 a0); -extern s32 func_8016F1C4(void); -extern s16 D_80078E96; -extern s16 D_80078EB8; -extern u16 D_80078EA6; -extern void func_8014B2A8(void); -extern void func_8014B310(void); -extern void func_8014B2D0(void); -extern s32 D_80078E94; -extern s32 D_80078ECC; -extern void func_8014B33C(void); -extern u8 D_80062BF4[]; -extern void func_8014BC80(s32 a0, s32 a1); -extern void func_80019064(void *a0); -extern s32 D_80078E98; -extern void func_80166244(); -extern void func_8014B4D4(void *a0); -extern s16 D_80078E9A; -extern u8 D_80126D1C; -extern s32 D_80126D74; -extern void func_8014B598(s32 a0, s32 a1); -extern void func_8014B5B0(s32 *a0); -extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); -extern void func_8014B5D8(s32 s1); -extern s32 D_80078E9C; -extern s32 D_80078ED0; -extern void func_8014B6F0(s32 a0, s32 a1); -extern void func_8014B768(s32 a0, s32 a1); -extern void func_8014B944(s32 a0, s32 a1, s32 a2); -extern s32 D_80078EA4; -extern u16 D_80078EB2; -extern s16 D_80078EB4; -extern void func_8014BB0C(void); -extern void func_8014BB24(s32 a0, s32 a1, s32 a2); -extern void func_8014BC0C(s32 a0, s32 a1); -extern void func_8014BC44(s32 a0, s32 a1); -extern u8 D_800B9A17; -extern void func_8014BCC0(s32 a0, s32 a1); -extern u16 D_80078EB6; -extern s32 func_8014BCEC(s32 a0, s32 a1); -extern void func_8014BD24(s32 a0, s32 a1); -extern void func_8014BD60(s32 param_1, s32 param_2); -extern void func_8014BD98(s32 a0, u16 a1); -extern void func_8014BDC8(void); -extern void func_8014BDE0(void); -extern s32 func_8017267C(s32 *a0); -extern s32 func_80013294(void *a0, void *a1); -extern void func_80029ED4(s32 a0); -extern void func_8014BDE8(s32 a0); -extern void func_8014BE78(void); -extern void func_8014BE9C(void); -extern void func_80029124(s32 a0, s32 a1); -extern void func_8014BEC0(void); -extern void func_8014BF18(s32 a0); -extern void func_8014BF48(void); -extern u8 func_8014BF6C(void); -extern void func_8014BF8C(u8 arg0); -extern void func_8014BFB0(void); -extern u8 func_8014BFD4(void); -extern void func_8014BFF4(s32 a0, s32 a1); -extern void func_8014C010(s32 a0, s32 a1); -extern s32 func_8014C050(s32 a0, s32 a1); -extern s32 func_8014C088(s32 a0, s32 a1); -extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); -extern s32 func_8014C118(void * a0, s32 a1, s32 a2); -extern s32 func_8014C168(s32 * param_1, s32 param_2); -extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); -extern u8 D_8018D1AC[]; -extern void func_8014C1A0(s32 arg0, s32 arg1); -extern s32 func_80013328(s32 a0, s32 a1); -extern s32 func_8014C59C(void *a0, void *a1); -extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); -extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); -extern s32 ratan2(s32 dx, s32 dy); -extern u8 D_8018D1B4; -extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); -extern s16 func_8014C5D0(s32 a0, s32 a1); -extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); -extern u8 D_80126D17; -extern void func_8014C6AC(void); -extern void func_8014C6C0(void); -extern u8 D_80126D1E; -extern void func_8014C6D0(void); -extern void func_8014C6E0(void); -extern s32 func_8014C860(s32 a0, s32 a1); -extern void func_8014C8C8(s32 a0, s32 *a1); -extern void func_8014C88C(s32 a0); -extern void func_8014C8C8(s32 dst, s32 * src); -extern void func_8014C8F0(s32 arg0); -extern u8 D_801151F0[]; -extern s32 func_8014C918(s32 a0, s32 a1); -extern s32 D_80126B50; -extern void func_8014C968(void); -extern void func_8014C978(void); -extern s32 func_8014C98C(void); -extern void func_80139914(s32 a0); -extern s32 func_8014CA00(s32 a0); -extern u16 func_8014CA70(s32 a0, s32 a1); -extern s32 func_8014CA14(s32 a0, s32 a1); -extern u16 func_8014CAE4(s32 *a0, s32 a1); -extern s32 func_8014CA88(s32 *a0, s32 a1); -extern s32 func_8014CAFC(void); -extern s32 func_8014CB0C(void); -extern s32 func_8014CB1C(void); -extern u8 D_80126D1F; -extern s32 func_8014CB2C(void); -extern s32 func_8014CB58(void); -extern u8 D_80126D1D; -extern void func_8014CB68(void); -extern s32 func_8014CB7C(void); -extern s32 func_8014CB8C(void); -extern short D_80126C9E; -extern void func_8014CB9C(struct Packed8 *a0); -extern s32 D_80126CDC; -extern void func_8014CBD8(void); -extern s16 D_80126CC4; -extern void func_8014CBE8(void); -extern void func_8014CBF8(void *a0); -extern void func_8014D3E0(s32 a0); -extern void func_8014D04C(void); -extern void func_8014CCB4(void); -extern void func_8014CC28(s32 a0); -extern void func_8014CD0C(u8 *a0); -extern s32 func_8014CF04(s32 a0, s32 a1, void *a2); -extern void func_8014CD80(s32 a0, void *a1, void *a2); -extern void func_8014D0A4(s32 a0); -extern s32 func_8014D2A0(s32 a0, void *a1, void *a2); -extern s32 func_8014D12C(s32 a0, void *a1, void *a2); -extern void func_8014D438(s32 a0); -extern void func_8014D3E0(s32 _arg0); -extern void func_8014D610(s32 a0, void *a1, void *a2); -extern s32 func_8014D4C0(s32 a0, void *a1, void *a2); -extern void func_8014D790(s32 a0); -extern void func_8014D738(void); -extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); -extern s32 func_8014D820(s32 a0, u16 *a1, u16 *a2); -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); -extern void func_8014DF94(s32 arg0); -extern void func_8014DF3C(void); -extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ -extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ -extern s16 D_801152AC; -extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); -extern void func_8014E48C(s32 a0); -extern void func_8014E434(void); -extern void func_8014E5B4(s32 a0, void *a1, void *a2); -extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); -extern void func_8014E6F8(struct SubE6F8 *a0); -extern void func_8014E6A0(void); -extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); -extern void func_8014E934(s32 _arg0); -extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); -extern s32 func_8014E98C(void *a0); -extern s32 D_801150D8; -extern s16 D_801152AA; -extern u8 D_80126720[]; -extern s16 D_80126724; -extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); -extern s32 func_8014ED80(struct SubED80 *a0); -extern int D_801E9698; -extern void func_8014ED28(s32 _arg0); -extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F24C(struct SubF24C *a0); -extern void func_8014F1F4(void); -extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F4C0(); -extern s32 func_8014F468(void); -extern int func_8014F74C(); -extern int func_8014F6F4(void); -extern u8 D_800D3918[]; -extern u8 D_801152A8[]; -extern s32 D_801152BC; -extern int func_8014F74C(s32 arg0); -extern s32 func_8014FA70(s32 a0); -extern s32 D_801E969C; -extern void func_8014FA04(s32 a0); -extern s32 func_8014FBC0(); -extern s32 func_8014FC18(u8 *self); -extern int func_8014FD54(int param_1); -extern void func_8014FCFC(void); -extern void func_80150170(void *a0); -extern s32 func_8014FE60(void *a0); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_8014FE60(void *e); -extern s32 func_80134510(s32 arg); -extern s32 func_80150150(s32 a, s32 b); -extern s32 func_80150460(s32 a, s32 b); -extern void func_801504D8(u16 *a0); -extern s32 func_80150480(s32 _arg0); -extern s32 func_80150528(void *a0, void *a1, void *a2); -extern s32 func_80150528(void *arg0, void *arg1, void *arg2); -extern s32 func_801506A4(s32 a0, s32 a1); -extern s32 func_801505FC(s32 a0); -extern s32 func_801506A4(s32 arg0, s32 arg1); -extern void func_80150820(s32 a0, s32 a1); -extern void func_8015086C(int param_1); -extern s32 func_801508B4(s32 a0); -extern s32 func_8015094C(s32 a0); -extern short func_801508F8(s32 a0); -extern s32 D_8018D1E4; -extern s32 D_80126990; -extern s32 D_80126994; -extern u8 D_80126948[]; -extern s32 func_80021174(s32 a0, s32 a1); -extern s32 func_8015094C(s32 param_1); -extern void func_80150B9C(void); -extern s32 func_80151184(s32 a0, s32 a1, s32 a2); -extern s32 func_80150BA4(s32 a0); -extern s32 func_801619D0(void *a0); -extern void func_80150BC8(s32 *a0); -extern s32 func_80150480(s32 a0); -extern u16 D_800AE6DC; -extern void func_80150C48(s32 a0); -extern int func_80151184(int arg, int a1, int a2); -extern int func_80150CA0(int arg); -extern void func_80150EC4(s32 a, s32 b); -extern void func_80150CC4(s32 a); -extern void func_80150CE4(s32 a); -extern void func_80150D04(s32 a); -extern void func_80150D24(s32 a); -extern void func_80150D44(s32 a); -extern void func_80150D64(s32 a); -extern void func_80150D84(s32 a); -extern void func_80150DA4(s32 a); -extern void func_80150DC4(s32 a); -extern void func_80150DE4(s32 a); -extern void func_80150E04(s32 a); -extern void func_80150E24(s32 a); -extern void func_80150E44(s32 a); -extern void func_80150EC4(s32 a0, s32 a1); -extern void func_80150E64(s32 a0); -extern void func_80150E84(s32 a0); -extern void func_80150EA4(s32 a0); -extern u8 D_800AE6C0; -extern s16 D_800AE6C8; -extern s16 D_800AE6CA; -extern s16 D_800AE6CC; -extern s32 D_800AE6C4; -extern s16 D_800AE6CE; -extern u8 D_800AE6BE; -extern u8 D_801201F8[]; -extern void func_80150F78(void); -extern void func_80150F80(s32 a0); -extern int func_80150FB4(int arg); -extern void func_80150FD8(s32 a0); -extern int func_80151014(int arg); -extern void func_80151038(s32 a0); -extern int func_80151070(int arg); -extern int func_80151094(int arg); -extern void func_801510B8(void); -extern void func_801510C0(void); -extern int func_801510C8(int arg); -extern int func_801510EC(int arg); -extern s32 func_8012DB84(void); -extern s32 func_80151110(void); -extern void func_80151130(void); -extern int func_80151138(int arg); -extern void func_8015115C(s32 *a0, s16 a1); -extern s32 func_80151164(s32 a0, s32 a1); -extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); -extern void func_801511A8(u8 *a0); -extern void func_801511C4(u8 *a0); -extern int func_80151204(int arg, int a1); -extern int func_801511E0(int arg); -extern int func_80151204(int a0, int a1); -extern void func_80151238(void *a0); -extern void func_8015126C(u16 *p); -extern void func_80151780(s32 a0); -extern void func_801516F0(s32 *a0); -extern void func_8015173C(s32 *a0); -extern s16 D_8011DB1A; -extern s32 D_80127518; -extern s32 D_801151FC; -extern s32 func_801725CC(u8 *a0); -extern s32 func_80029D3C(void); -extern void func_80151878(void); -extern void func_80153B58(s32 *a0); -extern s32 func_80151880(s32 a0); -extern s32 func_801518D8(s32 a0); -extern s32 func_80151944(void); -extern s32 func_80151924(void); -extern void func_8014E934(s32 a0); -extern s32 func_8014F3E8(s32 a0); -extern void func_801519C8(s32 a0); -extern void func_80151980(s32 a0); -extern M2C_UNK D_800D5880; -extern s32 D_800D58AC; -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801519C8(s32 arg0); -extern void func_80151C54(s32 a0); -extern void func_801542DC(s32 *a0, s32 a1); -extern void func_8015BDD0(s32 *a0); -extern void func_80165718(s32 a0); -extern u8 D_800D46E4[]; -extern void func_80151AE4(s32 arg0); -extern void (*D_8018D28C[])(void); -extern void func_80151D24(void *a0); -extern void func_80151DB0(s32 a0); -extern void func_80151D60(void *a0); -extern s32 func_80172630(u8 *a0); -extern s32 D_80062C14; -extern void func_80151DB0(s32 param_1); -extern void func_80151E78(s32 *a0); -extern void func_80151ECC(struct S80151ECC *a0); -extern void func_80151FB4(s32 a0); -extern void func_80151F38(s32 *a0); -extern void func_801553C0(s32 a0); -extern void func_80153C18(); -extern void (*D_8018D2B0[])(void); -extern void func_80152058(void *a0); -extern void func_801520DC(s32 a0); -extern void func_80152094(s32 a0); -extern void func_80147324(s32 a0); -extern u8 D_80062C04[]; -extern M2C_UNK D_8018D2A0; -extern void func_801520DC(s32 arg0); -extern void func_801470B4(s32 a0); -extern void func_8015369C(s32 a0); -extern void func_80152194(s32 *a0); -extern s32 func_801536DC(s32 a0); -extern void func_8015220C(s32 a0); -extern s32 func_80153800(s32 a0); -extern void func_801522CC(s32 a0); -extern void func_80152254(s32 *a0); -extern void (*D_8018D2C4[])(void); -extern void func_80152370(void *a0); -extern void func_801523F4(s32 a0); -extern void func_801523AC(s32 a0); -extern void func_8001382C(s32 a0, void *a1, void *a2); -extern u8 D_8018D2D0[]; -extern void func_801523F4(s32 arg0); -extern void func_801525F4(int); -extern s32 func_801535F4(void *arg0); -extern void func_8015BF48(s32 *a0); -extern void func_80152500(int param_1); -extern void func_801525F4(s32 a0); -extern void (*D_8018D2E0[])(void); -extern void func_80152698(void *a0); -extern void func_80152714(s32 a0); -extern void func_801526D4(s32 a0); -extern void func_80152790(s32 a0); -extern void (*D_8018D2F8[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018D2E8; -extern void func_801528B0(s32 arg0); -extern void func_8015294C(s32 a0); -extern void func_80152A08(s32 a0); -extern void func_80152AC8(s32 a0); -extern void func_80152A50(s32 *a0); -extern void (*D_8018D30C[])(void); -extern void func_80152B6C(void *a0); -extern void func_80152BF0(s32 a0); -extern void func_80152BA8(s32 a0); -extern void func_80152C80(s32 *a0); -extern void func_80152C40(s32 *a0); -extern void (*D_8018D328[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018D318; -extern void func_80152DA8(s32 arg0); -extern void func_80152E4C(s32 a0); -extern void func_80152EFC(s32 a0); -extern void func_80152FBC(s32 a0); -extern void func_80152F44(s32 *a0); -extern void (*D_8018D33C[])(void); -extern void func_80153060(void *a0); -extern void func_801530E4(s32 a0); -extern void func_8015309C(s32 a0); -extern void func_80155440(s32 *a0); -extern void func_801530E4(s32 arg0); -extern void func_80153150(struct S80153150 *a0); -extern void func_801531BC(s32 a0); -extern void func_8015327C(s32 a0); -extern void func_80153204(s32 *a0); -extern void (*D_8018D350[])(void); -extern void func_80153320(void *a0); -extern void func_801533A4(s32 a0); -extern void func_8015335C(s32 a0); -extern void func_80153410(s32 *a0); -extern void func_80153490(s32 a0); -extern void func_80153550(s32 a0); -extern void func_801534D8(s32 *a0); -extern void (*D_8011DB28)(s32 a0); -extern s32 func_801536DC(s32 param_1); -extern void func_800139C8(s32 a0, void *a1, void *a2); -extern s32 func_80153978(s32 a0, u16 *src); -extern s32 func_80133784(s32 a0, void *src, s32 dst); -extern s32 func_801539F8(s32 a0, void *a1); -extern s32 func_801539F8(s32 a0, void * a1); -extern s32 func_8016DA04(s32 a0); -extern s32 func_80153BD8(s32 a0); -extern s32 func_80153BF0(s32 a0); -extern void func_80153C18(void); -extern u16 D_8011F748; -extern void func_80153C30(void); -extern void func_80153C74(s16 a0, s16 a1); -extern s16 D_8011DB18; -extern void func_80153C44(int a0, int a1, s16 a2); -extern s16 D_8011DB0C; -extern s32 D_80115210; -extern void func_80153C8C(void); -extern void func_80153C9C(void); -extern s32 func_80153CBC(void); -extern s32 D_8018D364; -extern void (*D_8018D38C[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018D36C; -extern void func_80153D7C(s32 param_1); -extern void func_8015410C(void); -extern void func_80153E00(s32 param_1); -extern void func_80151664(void); -extern void func_80154134(u8 *a0); -extern void func_80154190(u8 *a0, s32 a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154218(u8 *a0, s32 a1, s32 a2); -extern void func_801541D8(u8 *a0, s32 a1, s32 a2); -extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); -extern void func_801542A4(); -extern void func_801542A4(s32 *a0, s32 a1); -extern void func_8015430C(); -extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); -extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); -extern s32 func_80154358(void * arg0); -extern void func_80154AB4(s32 a0, s32 a1); -extern void func_80154B20(s32 a0, s32 a1, s32 a2); -extern void func_80154AE0(s32 a0, s32 a1, s32 a2); -extern void func_80154B7C(u8 *a0, s32 a1); -extern void func_80154B4C(u8 *a0, s32 a1); -extern void func_80154BC8(void *a0, s32 a1, s32 a2); -extern void func_80154B98(void *a0, s32 a1, s32 a2); -extern u8 D_800D8D10[]; -extern s16 D_80078E9E; -extern void func_801550FC(s32 a0); -extern void func_80154ED8(s32 a0, s32 a1); -extern void func_80154F9C(s32 a0); -extern void func_800183E0(s32 a0); -extern void func_801550FC(s32 arg0); -extern void func_8001D150(s32, s32); -extern void func_8001D130(int, int); -extern void func_80155150(int param_1); -extern s32 D_800DE2A4[]; -extern void func_801552F4(s32 a0); -extern void func_80155344(s32 a0); -extern s32 func_80155394(s32 *a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80029178(s32); -extern int (*D_8018D3D8[])(void); -extern s32 func_80155458(s32 param_1); -extern s32 func_801659DC(u8 *a0); -extern s32 func_801554B8(void *arg0); -extern void func_801555F4(void *a0); -extern void func_80155518(s32 *a0); -extern void func_80155580(void *a0); -extern void (*D_8018D3DC[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern s32 func_80155800(s32 arg0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern s32 func_80029B4C(s32 a0, s32 a1); -extern s32 func_80029BC8(s32 a0, s32 a1); -extern s32 func_80029C44(s32 a0, s32 a1); -extern s32 func_8015640C(s32 a0, s32 a1); -extern s32 rand(void); -extern u32 func_8015616C(s32 param_1, u16 param_2); -extern u16 func_80156370(u16 param_1); -extern s32 func_801564B0(s32 a0); -extern s32 func_8002A1B4(void); -extern s32 func_8002A400(void); -extern s32 func_8002A670(void); -extern s32 func_8002A8E0(void); -extern s32 D_801151E0[]; -extern s32 func_801565C0(void); -extern void func_80156A14(s32 *a0); -extern void func_80156648(s32 *a0); -extern u8 D_8011DAD8[]; -extern s32 func_8014C568(s16 *a0, s16 *a1); -extern void func_801567BC(s32 a0); -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018D840[]; -extern void func_80156A1C(s32 param_1, s32 param_2); -extern s32 D_801150E0[]; -extern void func_80156A88(s32 a0, s32 a1); -extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); -extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); -extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); -extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern s32 func_80135004(s32 a0, void *a1, s32 a2); -extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801575E4(void *a0); -extern void func_801574DC(s32 *a0); -extern void func_80157544(void *a0); -extern void (*D_8018D850[])(void); -extern void func_8014CC28(s32 a0); /* defined */ -extern s32 func_8014F3E8(s32 a0); /* declared */ -extern void func_8015BDD0(s32 *a0); /* defined */ -extern void func_801575E4(void *a0); /* defined */ -extern void func_80157580(s32 arg0); -extern u8 D_800D4F14[]; -extern void func_801576A8(void *arg0); -extern s32 func_8015773C(u8 *a0); -extern s32 func_8015771C(u8 *a0); -extern s32 func_8015773C(u8 * arg0); -extern int D_801E96D0; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018D878[])(void); -extern void func_80157808(void *param_1); -extern void func_80157880(s32 a0); -extern s32 func_801725A4(u8 *a0); -extern u8 D_800D5128; -extern u8 D_8018D858; -extern void func_801578C0(s32 param_1); -extern void func_80147A84(int); -extern void func_80148038(int, int); -extern void func_80147460(int); -extern void func_80146D90(int); -extern void func_80161450(void *a0); -extern void func_80157A8C(int); -extern void func_80154A74(int, int); -extern unsigned char D_800D5178; -extern unsigned char D_8018D868; -extern void func_8015795C(int param_1); -extern void func_80161D20(s32 a0, s32 a1); -extern void func_80157A8C(s32 a0); -extern void func_8016706C(s32 a0); -extern u8 D_800D51AC[]; -extern void func_80157AC8(s32 param_1); -extern void func_80157B74(int param_1); -extern void func_8016158C(void *a0); -extern void func_8015BE04(s32 *a0); -extern void func_80157BC8(s32 a0); -extern void func_80157CCC(s32 a0); -extern void func_80157DC4(void *a0); -extern void func_80157FC4(void *a0); -extern void func_80157D74(u16 *a0); -extern void (*D_8018D8B8[])(void); -extern void func_80157E38(void *); -extern void func_80157E00(void *a0); -extern void func_80157E38(void * a0); -extern s32 func_80157F64(s32 *a0); -extern s32 func_80156600(void *a0); -extern void func_80157EA4(void *a0); -extern void (*D_8018D8C0[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018D88C; -extern void func_80158038(void * param); -extern u8 D_800D524C[]; -extern void func_80161418(void *a0); -extern void func_801580B4(s32 a0); -extern void func_801581AC(s32 a0); -extern void (*D_8018D8CC[])(void); -extern void func_8015824C(void *a0); -extern void func_801582C0(void *); -extern void func_80158288(void *a0); -extern u8 D_800D52A8[]; -extern void func_801585A4(s32 *a0); -extern void func_801582C0(void *a0); -extern s32 func_801585AC(s32 *a0); -extern u8 D_800D52E8[]; -extern void func_80158344(s32 *a0); -extern s32 func_801615C4(void *a0, s32 a1); -extern u8 D_8018D89C; -extern u8 D_800D533C; -extern void func_80158434(s32 param_1); -extern void func_80158548(s32 param_1); -extern void func_801585EC(u8 *a0); -extern void func_80158794(void); -extern s32 D_801E96D8; -extern s32 D_801E96E4; -extern s32 D_801E96E8; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018D908[])(s32 *); -extern void func_80158AE4(void *a0); -extern void func_80158AB4(void *a0); -extern void func_8016F264(void); -extern void func_80165840(void); -extern void func_801658DC(void); -extern void func_80165A78(s32); -extern void func_80158AE4(void * a0); -extern M2C_UNK D_800D58D8; -extern void func_80158BB0(void *arg0); -extern s32 func_80159404(s32 a0, s32 a1); -extern void func_80158C40(s32 *a0); -extern void func_80158CD8(s32 *a0); -extern s32 func_80159434(s32 a0, s32 a1); -extern void func_80158D60(s32 a0); -extern M2C_UNK D_800D5904; -extern void func_80158E24(s32 *a0); -extern s32 D_8018D8DC[]; -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80158F00(int param_1); -extern u8 D_80110C3C[]; -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80158FA4(s32 param_1); -extern s32 func_801399F0(s32 a0); -extern u8 D_80110C94[]; -extern u8 D_80110CD4[]; -extern void func_80159070(void *a0); -extern s32 func_80029A94(s32); -extern void func_80175454(void); -extern void func_800298BC(void *); -extern void func_8002992C(s32); -extern void func_800CF804(void); -extern void func_800CF818(void); -extern u8 D_80110D0C[]; -extern void func_80159120(s32 a0); -extern void func_801592CC(s32 *a0); -extern u8 D_800AE6BD; -extern s32 D_801E96E0; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018DB58[])(void); -extern void func_80159698(void *a0); -extern s32 func_801596D4(void *a0); -extern void func_80174B6C(void); -extern void func_80129248(s16 a0); -extern void func_8013C938(void); -extern void func_8013CB20(void); -extern void func_8013C98C(void); -extern void func_8002850C(s32, s32, s32); -extern void func_80028620(s32, void *); -extern s16 D_800B9AAC[]; -extern s16 D_800B9B00; -extern u16 D_801270C0; -extern u32 D_800AFAE8[]; -extern char D_8018D978[]; -extern s32 func_801596F0(s32 param_1); -extern s32 func_80159874(void); -extern void func_800167B8(s32 a0); -extern s32 func_8015987C(s32 a0); -extern int func_800167F0(int arg); -extern int func_801598BC(void); -extern void func_80159968(void *a0); -extern void func_801598E0(u8 *a0); -extern void (*D_8018DBFC[])(void); -extern void func_80159A20(void *a0); -extern void func_801599E0(void *a0); -extern void func_80159A18(void); -extern void func_80159BE4(s32); -extern void func_80159B08(s32 *a0); -extern void func_80159B70(void *a0); -extern void func_80159B3C(void * a0); -extern void (*D_8018DD50[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018DB6C; -extern void func_80159BE4(s32 arg0); -extern void func_8015A1C8(s32 a0); -extern void func_8015A2D8(s32); -extern void func_8015A1FC(s32 *a0); -extern void func_8015A264(void *a0); -extern void func_8015A230(s32 *a0); -extern void (*D_8018DD58[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018DB7C; -extern s32 func_80172608(u8 *a0); -extern void func_8015A2D8(s32 param_1); -extern u8 D_800D48DC; -extern s32 func_8015AB7C(s32 a0); -extern s32 D_8011F9C4; -extern s32 func_8015ABD4(s32 a0, s32 a1, s32 a2); -extern s32 func_80161CD0(s32 a0, s32 a1); -extern M2C_UNK D_8018DB9C; -extern void func_8015AC48(s32 arg0); -extern void func_8015AC90(s32 a0); -extern void func_8015ADB0(s32 a0); -extern void func_8015ACC4(s32 *arg0); -extern void func_8015AD3C(void *a0); -extern void func_8015AD08(void *arg0); -extern void (*D_8018DD60[])(void); -extern void func_8015ADB0(s32); -extern void func_8015AD78(s32 a0); -extern void func_8015ADB0(s32 arg0); -extern s32 D_800D4A9C; -extern int func_8015B6F4(int param_1); -extern u8 D_800D4F8C[]; -extern s32 func_8015B7B4(s32 a0); -extern u8 D_800D4BE0[]; -extern s32 func_8014A51C(void); -extern s32 func_8015B858(u8 *a0); -extern s32 D_800D4B48; -extern void func_8015B8F8(s32 *a0); -extern void func_8015BD8C(s32 *a0); -extern s32 func_8015BE94(); -extern void func_8015BE38(struct Obj *a0); -extern s32 func_8015BE74(void); -extern void func_80161124(void *a0); -extern s32 func_8015BE94(s32 *a0); -extern s32 func_8015AE2C(); -extern s32 func_8015BEC4(void); -extern s32 func_8015B950(s32 arg0); -extern s32 func_8015BEE4(void); -extern void func_8015BF04(s32 *a0); -extern void func_8015C0C4(s32 a0); -extern void func_8015BFF4(void *a0); -extern void func_8015BF7C(s32 *a0); -extern void func_8015C030(s32 *a0, s32 a1); -extern void func_8015BFB0(s32 *a0, s32 a1); -extern void (*D_8018DD88[])(void); -extern void func_8015C0C4(s32); -extern void func_8015C08C(s32 a0); -extern s32 func_8015C128(s32 param_1); -extern void func_8015C6A4(void); -extern void func_8015C788(s32 a0); -extern void func_8015C6AC(s32 *a0); -extern void func_8015C714(void *a0); -extern void func_8015C6E0(s32 *a0); -extern void (*D_8018DD94[])(void); -extern void func_8015C788(s32); -extern void func_8015C750(s32 a0); -extern void func_8015CB94(s32 a0); -extern void func_8015CBCC(void); -extern void func_8015CBD4(void); -extern void func_8015CBDC(void); -extern void func_8015CBE4(void); -extern void func_8015CBEC(void); -extern void func_8015CBF4(void); -extern void func_8015CBFC(void); -extern void func_8015CC04(void); -extern void func_8015CC0C(s32 *param_1); -extern void func_8015CC74(s32 *a0); -extern void func_8015CC40(s32 *a0); -extern s32 func_8015CCD0(); -extern s32 func_8015CCB0(void); -extern s32 func_801725E0(u8 *a0); -extern s32 func_8015CCD0(s32 param_1); -extern s32 func_8015CD20(s32 arg0); -extern void func_8015CF24(s32 a0); -extern void func_8015D01C(); -extern void func_8015CF58(s32 *param_1); -extern void func_8015CFC0(s32 *a0); -extern void func_8015CF8C(s32 *a0); -extern void func_8015CFFC(void); -extern void func_8015D01C(int param_1); -extern void (*D_8018DC08[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018DE38; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018CF1C[]; -extern void func_8015D414(int param_1); -extern void func_8015D57C(s32); -extern void func_8015D480(s32 *a0); -extern s32 func_8015D4E8(s16 *a0); -extern void func_8015D4B4(s16 *a0); -extern void func_8015D524(s32 arg0); -extern void func_8015D544(s32 a0); -extern void func_801746DC(void); -extern void func_8015D57C(s32 arg0); -extern s32 func_80161B18(void *a0); -extern s32 func_80161B84(void *a0); -extern void func_80154150(int, int); -extern void func_80149374(int, int); -extern unsigned char D_8018DE4C[]; -extern void func_8015D5E8(int param_1); -extern int func_8015E0D4(int); -extern void func_8015DA5C(s32 a0); -extern void func_8015DB6C(s32 a0); -extern void func_8015DA90(s32 *a0); -extern void func_8015DAF8(s32 *a0); -extern void func_8015DB6C(s32); -extern void func_8015DB34(s32 a0); -extern void func_8015DCB8(s32 a0); -extern void func_8014BD60(s32 a0, s32 a1); -extern int func_8015DD74(int); -extern void func_8015DBD4(void *arg0); -extern int func_8015DC84(int a0); -extern s8 D_8018DE88[]; -extern void func_8015DCB8(s32 param_1); -extern int func_8015DD74(int arg0); -extern void func_8015DECC(s32 a0); -extern void func_8015DDF0(s32 *a0); -extern void func_8015DE58(s32 *a0); -extern void func_8015DECC(s32); -extern void func_8015DE94(s32 a0); -extern void func_8015E018(s32 a0); -extern void func_8015DF34(void *arg0); -extern int func_8015DFE4(int a0); -extern void func_8015E018(s32 param_1); -extern int func_8015E0D4(int a0); -extern void func_8015E22C(s32 a0); -extern void func_8015E150(s32 *a0); -extern s32 func_8015E1B8(s32 a0); -extern void func_8015E184(s32 *arg0); -extern void func_8015E22C(s32); -extern void func_8015E1F4(s32 a0); -extern u8 D_800D4FF4[]; -extern u8 D_800D5098[]; -extern u8 D_800D5060[]; -extern s32 func_8014A850(s32 a0); -extern void func_8015E40C(s32 a0); -extern void func_8015E588(void); -extern void func_8015E4B0(s32 a0); -extern void func_8015E288(s32 a0); -extern u16 D_8018DED0; -extern u16 D_8018DED2; -extern u16 D_8018DED4; -extern s32 D_8018DED8; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -extern void func_8013C9C4(void *a0); -extern s32 D_8018DEE0; -extern void func_8015E5B0(u8 *self); -extern void func_8015E714(s32 *a0); -extern void func_8015E95C(s32); -extern void func_8015E84C(s32 *a0); -extern void func_8015E8E8(s32 *a0); -extern void func_8015E9B8(s32 *a0); -extern void func_8015E8B4(s32 *a0); -extern void func_8015E924(s32 a0); -extern void func_8015E95C(s32 a0); -extern s16 D_801152A0; -extern void func_80160818(s32 *a0); -extern void func_8015ED6C(s32 *a0); -extern void func_8015EE7C(s32); -extern void func_8015EDA0(s32 *a0); -extern s32 func_8015EE08(s32 a0); -extern void func_8015EDD4(s32 *arg0); -extern void func_8015EE44(s32 a0); -extern int D_800D4C48; -extern int D_8018DBEC; -extern void func_8015EE7C(s32 param_1); -extern void func_8015EEE0(void *arg0); -extern void func_8015EF9C(void); -extern void func_8015F080(s32); -extern void func_8015EFA4(s32 *a0); -extern void func_8015F00C(s32 *a0); -extern void func_8015EFD8(s32 *a0); -extern void func_8015F048(s32 a0); -extern void func_8015F080(s32 a0); -extern s32 D_80062BE8; -extern void func_801466F0(s32, s32, s32, s32, s32, s32, s32, s32); -extern s32 func_80161208(void); -extern void func_8015F118(void *a0); -extern void func_8015F260(s32 *a0); -extern void func_8015F380(); -extern void func_8015F2BC(s32 *a0); -extern void func_8015F324(s32 *a0); -extern void func_8015F2F0(s32 *a0); -extern void func_8015F360(void); -extern s32 func_801725B8(u8 *a0); -extern void func_8015F380(void* arg0); -extern void func_8015F738(s32 *a0); -extern void func_8015F848(s32 *a0); -extern void func_8015F76C(s32 *a0); -extern s32 func_8015F7D4(s32 a0); -extern void func_8015F7A0(s32 *arg0); -extern void func_8015F810(s32 *a0); -extern void func_80147078(s32 *, s16); -extern void func_80159B70(void *); -extern void func_8015F89C(void *arg0); -extern void func_8015F948(s32 *param_1); -extern void func_8015F9A4(void *arg0); -extern void func_8015FA24(s32 arg0); -extern void func_8015FBE0(s32 *a0); -extern void func_8015FA44(s32 *a0); -extern void func_8015FAAC(s32 *a0); -extern void func_8015FA78(s32 *a0); -extern s32 func_801612B8(void *a0, s32 a1); -extern void func_8016007C(s32 a0); -extern void func_8015FAE8(void *arg0); -extern void func_8015FCC8(void *param_1); -extern unsigned int D_8018DF64[]; -extern void func_8015FD74(int param_1); -extern s32 func_80028DE0(void); -extern u8 func_80165700(s32 a0, s32 a1); -extern void func_8015FDCC(s32 a0); -extern u8 D_80078EC2; -extern u8 func_801656E8(s32 a0, s32 a1); -extern void func_80165670(s32 a0, s32 a1); -extern void func_8016004C(s32 a0); -extern void func_8015FF20(void *param_1); -extern void func_801601AC(s32 *a0); -extern void func_801600D0(s32 *a0); -extern void func_80160138(s32 *a0); -extern void func_80160104(s32 *a0); -extern void func_80160174(s32 *a0); -extern void func_801601E4(s32 *a0); -extern void func_80160244(s32 *a0); -extern void func_8016032C(void); -extern void func_80160410(s32 *a0); -extern void func_80160334(s32 *a0); -extern void func_8016039C(s32 *a0); -extern void func_80160368(s32 *a0); -extern void func_801603D8(s32 *a0); -extern u8 D_80062BD0; -extern void func_80160410(s32 * a0); -extern void func_801607B8(s32 *a0); -extern void func_801608C0(s32 *a0); -extern void func_801607E4(s32 *a0); -extern void func_8016084C(s32 *a0); -extern void func_80160888(s32 *a0); -extern void func_80160A28(s32 a0); -extern void func_80160A74(s32 *a0); -extern void func_80160BB4(s32 *a0); -extern void func_80160ACC(s32 *a0); -extern s32 func_80160B34(s32 a0); -extern void func_80160B00(s32 *arg0); -extern void func_80160B70(s32 a0); -extern void func_80160C28(void *arg0); -extern void func_80160CB4(s32 *a0); -extern void func_80160D10(void *arg0); -extern void func_80160DEC(u8 *a0); -extern void func_80160F00(); -extern void func_80160E3C(s32 *a0); -extern void func_80160EA4(); -extern void func_80160E70(s32 *a0); -extern void (*D_8018E014[])(void); -extern void func_80160EA4(void *a0); -extern void func_80160EE0(void); -extern void func_80160F00(void* arg0); -extern void func_800D0F4C(s32 a0); -extern u8 D_80110EC0; -extern void func_80160F70(s32 a0); -extern void func_80160FE0(s32 *a0); -extern void func_80161034(void *a0); -extern void func_80161094(s32 a0); -extern void func_801610FC(void); -extern void func_801483E8(void); -extern s32 func_80161A60(s32 a0); -extern void func_8016130C(void *a0, s32 a1); -extern void func_80161240(void *a0); -extern void func_80161374(void *a0, s32 a1); -extern void func_80161278(void *a0); -extern s32 func_801612B8(void * a0, s32 a1); -extern void func_8016163C(void *a0, s32 a1); -extern void func_80161774(void *a0, s32 a1); -extern s32 func_8016197C(s32 a0, s32 a1); -extern s32 func_80161488(void *a0); -extern void func_80161888(void *a0, s32 a1); -extern void func_801614E4(void *a0); -extern void func_8016191C(void *a0, s32 a1); -extern void func_8016151C(void *a0); -extern void func_80161554(void *a0); -extern s32 func_801615C4(void * arg0, s32 arg1); -extern s32 func_801619A4(s32 *a0); -extern s32 func_80161A00(s32 a0); -extern s32 func_80161A30(s32 a0); -extern int func_801497A8(void); -extern int func_80161BE0(void *param_1); -extern u16 D_8018E044[]; -extern void func_80161C98(int param_1, u32 param_2); -extern void func_80161E08(s32); -extern s32 func_80162438(s32); -extern s32 D_800AE6A8; -extern void func_800D1734(void *); -extern s32 D_8018E0A8; -extern void func_80161D88(void); -extern void func_80161E08(s32 param_1); -extern int func_800291DC(int); -extern int func_800D0E30(void *a0); -extern int func_801620C4(void); -extern s32 func_800D0D7C(s32, s32); -extern int D_801E96F0[]; -extern void func_8016216C(void); -extern u8 D_80078EB0; -extern u8 D_80078EB1; -extern s32 func_801621CC(s32 arg0); -extern void func_801622C4(void); -extern void (*D_8018E0CC[])(void); -extern void func_80162330(void *a0); -extern void func_8014706C(void *a0); -extern s32 func_8016236C(u8 *a0); -extern void func_800D0C48(s32 a0); -extern s32 func_801623B8(s32 *a0); -extern s32 func_800167F0(s32 a0); -extern s32 func_80162414(void); -extern s32 func_80162438(s32 _unused0); -extern int func_801626B8(void); -extern void func_80162714(void); -extern int D_801E9748[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018E114[])(void); -extern void func_80162834(void *a0); -extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80162968(s32 a0); -extern s32 func_80162ACC(u8 *a0); -extern u8 D_800B5CB8; -extern s32 D_8018E104; -extern s32 D_800B5CBC; -extern u8 D_800B5CDF; -extern s32 D_800B5CEC; -extern void func_80162870(s32 param_1); -extern void func_801628F4(s32 *a0); -extern void func_80162968(s32 param_1); -extern void func_80162AC0(s32 *a0, s8 a1); -extern s32 func_80162AE0(u8 *a0); -extern void func_80162AF4(void); -extern void func_80162CC4(void); -extern s32 D_80126D40; -extern void func_80162B1C(void); -extern void func_80162D28(s32 *a0); -extern void func_80162D88(s32 *a0); -extern void func_80162DE8(s32 *a0); -extern void func_80162E48(s32 *a0); -extern void func_80162EA8(s32 *a0); -extern void func_80162F60(s32 arg0, s32 arg1); -extern void func_80162F80(s32 arg0, s32 arg1); -extern void func_80162FA0(s32 arg0, s32 arg1); -extern void func_80162F08(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80162FC0(s32 *a0); -extern void func_80162FF4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801630C4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163194(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg4); -extern void func_8016325C(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163234(s32 a0); -extern s32 D_80115100; -extern s32 func_801632E0(void); -extern s32 D_80115200; -extern s32 func_801632F0(void); -extern u16 D_80126B18[]; -extern void func_80163328(void); -extern s32 func_801633A8(void); -extern s32 func_80163408(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void func_80163534(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, u16 * a5); -extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); -extern char D_801E8DBC[8]; -extern void *memcpy(void *dst, const void *src, unsigned int n); -extern void func_801634D8(s32 param_1, u16 param_2, u16 param_3, s32 param_4, u16 param_5); -extern void func_80157158(); -extern void func_80163664(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801636D0(s32 a0, s32 a1); -extern s32 func_8016380C(struct S8016380C *a0, s32 a1); -extern void *memcpy(void *dst, void *src, s32 n); -extern s32 func_801638A0(u8 *a0, s32 a1); -extern s32 func_80163950(s32 a0); -extern void (*D_8018E11C[])(void); -extern void func_80163A58(void *a0); -extern void func_80163A94(s32 param_1); -extern void func_80163C2C(s32 param_1); -extern void func_80163EC8(s32 param_1); -extern void func_80164270(s32 *a0); -extern void func_80164418(void); -extern void func_80163764(s32 a0); -extern void func_801642AC(s32 a0); -extern void func_8016432C(s32 a0); -extern void func_80164410(void); -extern s32 func_80012DBC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164530(s32 arg0); -extern void (*D_8018E170[])(void); -extern void func_80164744(s32 param_1); -extern void func_8001C810(s32 a0, s32 a1); -extern void func_80164A74(s32 *a0); -extern void func_80164930(s32 a); -extern u16 D_800DF2E0; -extern s32 D_8018E138; -extern s16 D_8018E16C; -extern s16 D_8018E16A; -extern s16 D_8018E168; -extern void func_801647A4(int param_1); -extern void func_80164ACC(); -extern void func_80164864(void *a0); -extern void func_80164930(s32 param_1); -extern s32 func_8014C308(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164ACC(s32 a0); -extern void (*D_8018E17C[])(void); -extern void func_80164BA0(void *a0); -extern void func_8001CD50(s32 a0, s32 a1); -extern void func_800233CC(void *, unsigned short); -extern void func_80164DD0(s32 a0); -extern void func_80164DB0(void); -extern u8 D_801E97A8; -extern u8 D_801E97A9; -extern u8 D_801E97AA; -extern u8 D_801E97AB; -extern u8 D_801E97AC; -extern u8 D_801E97AD; -extern u8 D_801E97AE; -extern u8 D_801E97AF; -extern void func_80164BDC(s32 param_1); -extern void func_80164E40(void); -extern void func_80164CD4(u8 *a0); -extern void func_80164D4C(void *arg0); -extern void (*D_8018E18C[])(void); -extern void func_80164EA4(void *a0); -extern void func_80165124(void *a0); -extern void func_80164EE0(int param_1); -extern s32 func_80165140(s32 a0); -extern void func_801651B8(void *a0); -extern void func_80164F44(void *arg0); -extern void func_80165024(void *a0); -extern void func_80165064(s32 *a0); -extern void func_801650C4(s32 *a0); -extern s32 func_80165140(s32 param_1); -extern s32 func_80165240(s32 a0, s32 a1, s32 a2); -extern s32 D_801E97E8; -extern void func_801651B8(void * param_1); -extern u8 D_80126CF8; -extern void func_8016533C(void); -extern void func_801653F4(s32 a0); -extern void func_80165580(s32 a0); -extern void func_80165374(s32 a0); -extern void func_80165580(s32 _arg0); -extern void func_801653B8(s32 *a0); -extern s32 func_80165624(s32 a0); -extern u8 D_80078EC5; -extern void (*D_8018E1D0[])(void); -extern u8 func_80165658(s32 a0, s32 a1); -extern void func_800CAE0C(s32 a0); -extern void func_801654A8(s32 arg0); -extern void func_80165B28(void *a0); -extern void func_801655E4(s32 a0); -extern u8 D_8018E24C[]; -extern s32 D_8018E26C[]; -extern u8 D_8018E2E8[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018E308[]; -extern u8 D_8018E328[]; -extern void func_800CAF6C(void); -extern void func_80165770(void); -extern void func_801657D8(void); -extern u8 D_80078EC3; -extern void func_801657A0(void); -extern s32 D_80078EA0; -extern s32 D_80078EA8; -extern u8 D_80078EBB; -extern s32 D_80078ED4; -extern s32 D_80078ED8; -extern s32 D_80078EDC; -extern u8 D_80078EE0; -extern void func_80165874(void); -extern s8 D_80078EC4; -extern void func_801658EC(void); -extern s32 func_80165900(void); -extern s32 func_80165910(void); -extern s32 D_8012672C; -extern s32 D_8012811C; -extern s32 D_80126B08; -extern void func_80165938(void); -extern void func_80165958(void); -extern s32 func_80165978(void); -extern void func_80165988(void); -extern s32 func_801659A8(void); -extern void func_801659B8(void); -extern s32 func_801659CC(void); -extern void func_80165A18(void); -extern s32 func_80165A50(s32 _arg0); -extern void func_80165AC8(void); -extern void func_80165A78(s32 arg0); -extern void (*D_8018E3C4[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_8018E440[])(void); -extern void func_80165BB4(u8 *a0); -extern void func_80165B6C(u8 *a0); -extern void func_80165C58(s32 arg0); -extern void func_80165BFC(void *a0); -extern void func_80165C78(void); -extern M2C_UNK D_801E8DCC; -extern void func_80165E2C(u16 *arg0); -extern s32 func_80165FA4(s32 a0, s32 a1, s32 a2); -extern s32 func_80167DBC(s32 a0, s32 a1, s32 a2); -extern s32 func_80167AE0(s32 a0, s32 a1, s32 a2); -extern void func_80165E90(void); -extern void func_80020F34(s32 a0, s32 a1); -extern s32 func_80165FA4(s32 arg0, s32 arg1, s32 arg2); -extern void (*D_8018E44C[])(void); -extern void func_80166018(void *a0); -extern void func_80166054(s32 arg0); -extern void func_801661CC(s32 param_1); -extern void func_80166244(void* arg0); -extern void func_8016629C(void *a0); -extern void func_801662F4(void *a0); -extern void func_8016634C(void *a0); -extern void func_801663A4(void *a0); -extern void (*D_8018E454[])(void); -extern void func_801663FC(void *a0); -extern u8 D_800D387C[]; -extern u8 D_800D3888[]; -extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); -extern void func_800D1FC8(s32 a0, s32 a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern void func_801665B4(); -extern void func_80146C3C(); -extern void func_80166438(u8 *a0); -extern s32 func_80128ED8(s32 param_1, s32 *param_2); -extern void func_800D22E4(s32 a0); -extern void func_801665B4(s32 *a0); -extern void (*D_8018E51C[])(void); -extern void func_80166618(void *a0); -extern void (*D_8018E52C[])(void); -extern void func_80166654(void *a0); -extern s32 func_80166690(s32 param_1, s32 param_2); -extern s32 func_80166994(); -extern s32 func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern s32 func_80167540(s32 arg0); -extern void (*D_8018E53C[])(void); -extern void func_801678B4(void *a0); -extern void RotMatrixYXZ(void *a0, void *a1); -extern void func_80048EAC(void *a0, void *a1); -extern s32 func_801670E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80146C3C(void); -extern void func_801678F0(s32 a0); -extern void (*D_8018E548[])(void); -extern void func_80167A9C(void *a0); -extern void func_80167AD8(void); -extern s32 func_80167AE0(s32 param_1, s32 param_2, s32 param_3); -extern void func_80168070(s32 a0, s16 *a1, s16 *a2, void *a3); -extern u8 D_8018E4A8[]; -extern u8 D_8018E4BC[]; -extern s32 func_80167DBC(s32 arg0, s32 arg1, s32 arg2); -extern void func_800D20C0(void *a0, void *a1, s32 a2); -extern void func_80017E68(void *a0, void *a1); -extern void func_800D23D0(void *a0); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern s32 D_801269A4; -extern s32 D_801269A8; -extern s32 D_801269AC; -extern void func_80168070(s32 param_1, s16 *param_2, s16 *param_3, void *param_4); -extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_8016829C(s32 a0); -extern s32 func_80166690(s32 a0, s32 a1); -extern void func_80168328(s32 arg0); -extern void func_801683D8(s32 a0); -extern void func_801684B4(s32 a0); -extern void func_80168540(s32 a0); -extern void func_801685EC(s32 a0); -extern void func_80168640(s32 a0); -extern s32 RotMatrixX(s32 a0, void *a1); -extern void func_80168664(void *arg0); -extern void (*D_8018E560[])(void); -extern void func_80168744(void *a0); -extern void func_80168BDC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801687CC(s32 a0); -extern void func_80168780(s32 a0); -extern void func_80168828(void); -extern void func_801687CC(s32 param_1); -extern void func_80168828(); -extern void (*D_8018E568[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_8018E570[])(void); -extern void func_80168AA8(void *a0); -extern void func_80168AE4(s32 a0); -extern void func_800D2318(void); -extern void func_80168BDC(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void (*D_8018E578[])(void); -extern void func_80168D58(void *a0); -extern void func_80168D94(int a0); -extern void func_80168F40(); -extern void func_80168EC4(s32 a0); -extern void func_80168F40(void *arg0); -extern void (*D_8018E580[])(void); -extern void func_8016901C(void *a0); -extern void func_80169058(s32 a0); -extern s32 func_80169228(void); -extern void func_801691B8(void *a0); -extern void (*D_8018E588[])(void); -extern void func_801693CC(void *a0); -extern void func_80169584(s32 param_1); -extern void func_80169408(s32 a0); -extern void func_8016951C(int param_1); -extern s32 func_80017758(void *a0, void *a1); -extern s32 func_80017DC4(void *a0, void *a1); -extern void func_801696D8(s32 a0, s32 a1); -extern void (*D_8018E590[])(void); -extern void func_80169830(void *a0); -extern void func_8016986C(s32 a0); -extern s32 func_80169A4C(s32 a0, s32 a1); -extern void func_801699D0(void *arg0); -extern void (*D_8018E644[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_8018E64C[])(void); -extern void func_80169F00(void *a0); -extern char D_8018E5FC[]; -extern char D_8018E5BC[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8018E684[])(void); -extern void func_8016A020(void *a0); -extern void func_8016A05C(void *a0); -extern void func_8016A290(s32 a, void *b, void *c); -extern void func_8016A08C(s32 param_1); -extern void func_8016A1CC(int param_1); -extern void func_8016A290(s32 param_1, void *param_2, void *param_3); -extern void (*D_8018E690[])(void); -extern void func_8016A700(void *a0); -extern s32 func_8016A73C(s32 arg0); -extern s32 func_8016A8FC(s32 a0); -extern void func_8016A890(s32 arg0); -extern void func_8016AA50(s32 param_1, s32 param_2); -extern void (*D_8018E6D8[])(void); -extern void func_8016AB30(void *a0); -extern void func_8016B234(void); -extern void func_8016AFB0(s32 a0); -extern void func_8016B114(void *arg0); -extern s32 func_8016B448(s32, s32); -extern s32 func_8016BA48(s32 a0); -extern void func_8016B3F4(s32 a0); -extern s32 func_8016B428(s32 a0); -extern void func_8016B984(void *a0); -extern s32 func_8016B448(s32 arg0, s32 arg1); -extern void (*D_8018E754[])(void); -extern void func_8016B4BC(void *a0); -extern int func_8016B9F8(int); -extern int func_8016B834(int, int); -extern void func_8016B91C(int); -extern int D_801E9B08; -extern void func_8016B4F8(int param_1); -extern s32 func_8016B9F8(s32 param_1); -extern void func_8016B6BC(s32, s32, s32, s32); -extern void func_8016B91C(s32); -extern s16 D_8018E748[]; -extern void func_8016B5C0(s32 param_1); -extern void func_8001CD9C(int, void *); -extern int *D_8018E78C[]; -extern unsigned short D_8018E794[]; -extern unsigned short D_8018E79C[]; -extern unsigned char D_801E9B10[]; -extern int func_8016B834(int param_1, int param_2); -extern void func_8016B964(SrcB964 *a0, DstB964 *a1); -extern void func_8016B91C(s32 arg0); -extern s32 D_801E9B08; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8018E7A4[])(void); -extern void func_8016BBA4(void *a0); -extern s32 func_8016BBE0(s32 param_1); -extern void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3); -extern M2C_UNK D_801E9C44; -extern M2C_UNK D_801E9C48; -extern void func_8016BCC0(void *arg0); -extern s32 func_8016BD78(s32 param_1); -extern s32 func_8016BEA0(s32 param_1); -extern void func_8016BF34(void *a0); -extern void func_8016BFD0(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern s32 D_801E9BD0; -extern void (*D_8018E7D4[])(void); -extern void func_8016C14C(void *a0); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801E9C4C[]; -extern u8 D_801E9C54[]; -extern u8 D_801E9C04[]; -extern void func_8016C2C4(s32 param); -extern s32 func_8016C49C(s32 param_1_arg); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_8016C74C(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern short func_8016CF04(s32 a0, s32 a1); -extern void func_8016C83C(s32 a0); -extern void (*D_8018E7DC[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_8018E7F8[])(void); -extern void func_8016D19C(void *a0); -extern void (*D_8018E800[])(void); -extern void func_8016D428(void *a0); -extern void func_8016D464(u8 *a0); -extern void func_8016D4DC(s32 a0); -extern void func_8016D5EC(s32 *a0); -extern short func_8016CBC0(void); -extern void func_8016D64C(int param_1); -extern void func_8016D778(s32 a0); -extern void func_800D20C0(); -extern void func_8016D848(s32 *a0); -extern void func_8016D984(s32 *a0); -extern void func_8016DBD8(u8 *a0); -extern void (*D_8018E868[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_8018E80C; -extern u8 D_8018E818; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void (*D_8018E89C[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8018E8A4[])(void); -extern void func_8016DF20(void *a0); -extern void func_8016E3CC(s32 a0); -extern void func_8016E1CC(s32 a0); -extern void func_8016E26C(s32 *a0); -extern void func_8016E2E8(void *a0); -extern void func_8016E460(void *a0, void *a1); -extern void func_8016E358(void *a0); -extern void func_8016E460(void *arg0, void *arg1); -extern void (*D_8018E8F8[])(void); -extern void func_8016E5B8(void *a0); -extern void func_8016E5F4(s32 arg0); -extern void func_8016E778(); -extern void func_8016E688(void *a0); -extern void func_8016E6E4(s32 a0); -extern void func_8016E728(u8 *a0); -extern void func_8016E7C8(int param_1, short *p1, unsigned int *p2); -extern void func_8016E778(int param_1); -extern void func_8016E7C8(int param_1, short *param_2, unsigned int *param_3); -extern s32 D_80115218; -extern void func_8016E8F0(void); -extern void func_8016E918(short param_1, short param_2); -extern s32 func_8016E95C(); -extern u16 D_8018E92C[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_8018E91C[]; -extern void func_8016EB3C(s32 p); -extern void func_8016EBA8(u8 *param_1); -extern void func_8016ED6C(void); -extern s32 D_80126D70; -extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); -extern void func_8016ED8C(s32 a0, s32 a1, s32 a2); -extern void func_8016EE40(s32 a0, s32 a1, s32 a2); -extern void func_8016EDBC(s32 a0, s32 a1, s32 a2); -extern void func_8016EE94(); -extern void func_8016EDEC(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_8016EF78(s32 a0); -extern void func_8016EE40(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_801726D0(void *a0); -extern s32 D_80126D50; -extern u8 D_80126D6C; -extern u8 D_80126D6D; -extern u8 D_80126D6E; -extern s32 D_80126D5C; -extern s32 D_80126D60; -extern s16 D_80126D64; -extern s16 D_80126D66; -extern s16 D_80126D68; -extern s16 D_80126D6A; -extern u8 D_80126D1A; -extern s32 D_80127058; -extern s32 D_8012705C; -extern s32 D_80127060; -extern s32 D_80127064; -extern s32 D_80127068; -extern s32 D_8012706C; -extern s32 D_80127070; -extern s32 D_80127074; -extern s16 D_80126D20; -extern void func_8016EE94(s32 a0, s32 a1); -extern s32 func_8016EFC8(s32); -extern s32 func_8016EFA8(s32 a0); -extern void func_8016F094(s32 *a0); -extern s32 func_8016F0AC(); -extern s32 D_8018E948; -extern void func_8016F250(void); -extern void func_8016F288(void); -extern void func_8016F2A8(void); -extern void func_8016F2C8(void); -extern void func_8016F2EC(void); -extern void func_8016F30C(void); -extern void func_8016F330(void); -extern void func_8016F350(void); -extern void func_8016F374(void); -extern void func_8016F388(void); -extern void func_8016F398(void); -extern s32 func_8016F44C(s32 a0); -extern void func_8016F470(s32 a0); -extern s32 func_8016F410(s32 a0); -extern void func_80175414(s32 _arg0); -extern s32 func_8016F4C4(s32); -extern s32 func_8016F494(s32 a0); -extern void func_8016F0E4(void); -extern s32 func_8016F4C4(s32 param_1); -extern void func_8016F4F4(void); -extern void func_801719A4(int a0, int a1); -extern void func_800D1724(s32 a0); -extern void func_80171928(void *a0); -extern void *D_8011F738; -extern void func_8016F4FC(void *a0); -extern void func_8014708C(void *a0); -extern void func_8016F540(void *a0); -extern void func_8016F578(s32 *a0); -extern void func_8016F5B0(void *a0); -extern void func_80147060(u8 *a0); -extern void func_8016F5E0(u8 *a0); -extern void func_8016F610(void *a0); -extern void func_8016F648(void *a0); -extern void func_8016F680(void *a0); -extern void func_8016F6B0(void *a0); -extern void (*D_8018E9C0[])(void); -extern void func_8016F6E0(void *a0); -extern s32 func_80171990(u8 *a0); -extern void func_8016F764(void *a0); -extern void func_8016F71C(u8 *a0); -extern void (*D_8018E9C8[])(void); -extern void func_8016F798(void *a0); -extern void func_8016F804(void *a0); -extern void func_8016F7D4(u8 *a0); -extern void func_80171928(void *); -extern void (*D_8018E9D0[])(void); -extern void func_8016F834(void *a0); -extern void func_8016F8AC(u8 *a0); -extern void func_8016F870(u8 *a0); -extern void func_80172358(u8 *a0, u8 *a1); -extern void (*D_8018E9D8[])(void); -extern void func_8016F8E4(void *a0); -extern void func_8016F95C(void *a0); -extern void func_8016F920(u8 *a0); -extern s32 func_80171CC4(void *a0, void *a1); -extern s32 func_80171D1C(void *a0, void *a1, s32 a2); -extern u16 D_8011F73E; -extern void (*D_8018E9E0[])(void); -extern void func_8016F9C4(void *a0); -extern void func_80171B44(s32 *a0); -extern void func_8016FA44(s32 a0); -extern void func_8016FA00(s32 a0); -extern s32 func_80171C64(s32 a0, s32 a1); -extern void (*D_8018E9E8[])(void); -extern void func_8016FA84(void *a0); -extern void func_8016FB10(void *a0); -extern void func_8016FAC0(u8 *a0); -extern void func_8016FB50(void *a0); -extern void (*D_8018E9F4[])(void); -extern void func_8016FB7C(void *a0); -extern void func_8016FC24(); -extern void func_8016FBB8(s32 a0); -extern s32 func_80171B4C(s32 a0, s32 a1); -extern void func_8016FC24(s32 a0); -extern void func_8016FC64(void *a0); -extern void (*D_8018EA00[])(void); -extern void func_8016FC90(void *a0); -extern void func_8016FD08(u8 *a0); -extern void func_8016FCCC(u8 *a0); -extern s32 func_80172658(s32 *a0); -extern void func_8016FD08(u8 *s0); -extern void func_8016FD7C(s32 *a0); -extern void (*D_8018EA0C[])(void); -extern void func_8016FDB4(void *a0); -extern void func_8016FE2C(u8 *a0); -extern void func_8016FDF0(u8 *a0); -extern void func_8016FE2C(u8 * a0); -extern s32 func_8016FE78(s32 *a0); -extern s32 func_80172664(s32 *a0); -extern void func_8016FED0(s32 *a0); -extern void (*D_8018EA1C[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_8018EA2C[])(void); -extern void func_8016FFDC(void *a0); -extern void func_80170068(u8 *a0); -extern void func_80170018(u8 *a0); -extern void func_801700B8(u8 *a0); -extern void func_80170100(u8 *a0); -extern void (*D_8018EA34[])(void); -extern void func_80170150(void *a0); -extern void func_801701C8(u8 *a0); -extern void func_8017018C(u8 *a0); -extern void func_801701C8(u8 * a0); -extern void (*D_8018EA3C[])(void); -extern void func_80170240(void *a0); -extern void func_801702B8(s32 a0); -extern void func_8017027C(u8 *a0); -extern s16 func_80171AB0(s32 a0, void *a1); -extern void (*D_8018EA44[])(void); -extern void func_801702FC(void *a0); -extern void func_80170374(u8 *a0); -extern void func_80170338(u8 *a0); -extern s32 func_8014C168(s32 *a0, s32 a1); -extern void func_80170374(u8 * a0); -extern void (*D_8018EA4C[])(void); -extern void func_801703E0(void *a0); -extern void func_8017044C(u8 *a0); -extern void func_8017041C(u8 *a0); -extern void func_8017044C(u8 * a0); -extern void (*D_8018EA54[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_8018EA5C[])(void); -extern void func_80170548(void *a0); -extern void func_801705C0(u8 *a0); -extern void func_80170584(u8 *a0); -extern void func_801705C0(u8 * a0); -extern void (*D_8018EA64[])(void); -extern void func_801705F8(void *a0); -extern void func_80170670(void *a0); -extern void func_80170634(u8 *a0); -extern void func_8012A568(void (*a0)(void)); -extern void (*D_8018EA6C[])(void); -extern void func_801706AC(void *a0); -extern void func_80170718(void *a0); -extern void func_801706E8(u8 *a0); -extern void func_80129FF4(void); -extern void (*D_8018EA74[])(void); -extern void func_80170748(void *a0); -extern void func_801707D4(void *a0); -extern void func_80170784(u8 *a0); -extern s32 func_80174ED4(void); -extern void (*D_8018EA7C[])(void); -extern void func_80170810(void *a0); -extern void func_801708B0(void *a0); -extern u8 D_800D5DA8; -extern void func_8017084C(s32 a0); -extern u8 D_800D5A34[]; -extern void func_80170AD8(void *a0); -extern void func_80171904(s32 a0); -extern void func_80170B48(int a0); -extern void func_80170928(void); -extern u8 D_800D59EC[]; -extern void func_80170970(void); -extern u8 D_800D599C[]; -extern void func_801709B8(void); -extern u8 D_800D5934[]; -extern void func_80170A00(void); -extern void func_80170A48(void); -extern u8 D_800D5DC0[]; -extern void func_80170A90(void); -extern void (*D_8018EA84[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_8018EA8C[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8018EA94[])(void); -extern void func_80170C74(void *a0); -extern s32 func_8017197C(u8 *a0); -extern void func_80170CF0(void *a0); -extern void func_80170CB0(u8 *a0); -extern void (*D_8018EA9C[])(void); -extern void func_80170D68(void *a0); -extern void func_80170DE0(u8 *a0); -extern void func_80170DA4(u8 *a0); -extern s32 D_8011F73C; -extern s32 D_8011F740; -extern void func_801718AC(void *a0); -extern void func_80170DE0(u8 * _arg0); -extern void (*D_8018EAA4[])(void); -extern void func_80170E34(void *a0); -extern void func_80170EAC(u8 *a0); -extern void func_80170E70(u8 *a0); -extern int func_800D0F8C(int a0); -extern void func_80170EAC(u8 * _arg0); -extern void (*D_8018EAAC[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8018EAB4[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_8018EABC[])(void); -extern void func_80171064(void *a0); -extern void func_801710DC(u8 *a0); -extern void func_801710A0(u8 *a0); -extern u16 D_8011F73A; -extern void func_801710DC(u8 * arg0); -extern void (*D_8018EAC4[])(void); -extern void func_80171120(void *a0); -extern void func_8017118C(u8 *a0); -extern void func_8017115C(u8 *a0); -extern void func_80142454(s32 a0); -extern void func_8017118C(u8 * a0); -extern void (*D_8018EACC[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8018EAD4[])(void); -extern void func_80171260(void *a0); -extern s32 func_80012F74(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80171384(void *a0); -extern void (*D_8018EADC[])(void); -extern void func_801714E4(void *a0); -extern void func_8017162C(void *a0); -extern void func_80171520(s32 a0); -extern s32 func_801716AC(s32 a0, void *a1, s32 *a2); -extern s32 func_80012FC8(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_800A5E94; -extern u8 D_800A5E95; -extern u8 D_800A5E96; -extern s32 func_801716AC(s32 a0, void * a1, s32 * a2); -extern int func_800D0FE0(int a0); -extern void func_801717A0(void *a0); -extern void func_8013E588(void *a0); -extern void func_801717F4(void *a0); -extern void func_80171824(void *a0); -extern void func_80171854(void *a0); -extern void func_80171884(void); -extern void func_80171A1C(u8 *a0); -extern void func_80171928(void * a0); -extern void func_8017196C(s32 *a0, s8 a1); -extern void func_80171A04(s32 *a0); -extern void func_80171A10(s32 *a0); -extern void func_80171A34(s32 *a0, s8 a1); -extern s32 func_80171A44(u8 *a0); -extern s32 func_80171A58(u8 *a0); -extern s32 func_80171A6C(u8 *a0); -extern void func_80171A80(s32 *a0, s32 a1); -extern s32 func_80171A88(s32 a0); -extern s16 func_80171AB0(s32 param_1, void * _arg1); -extern void func_80171B10(void *a0); -extern void func_80171EC8(s32 a0); -extern s32 func_80171C64(s32 param_1, s32 param_2); -extern s32 func_80171D78(s32 a0, s32 a1); -extern int func_8017250C(short *a0, short *a1); -extern s32 func_80171CC4(void * a0, void * a1); -extern s32 func_80171FFC(short *a0, short *a1, s32 a2); -extern s32 func_80171D1C(void * a0, void * a1, s32 a2); -extern s32 func_8017248C(s32 a0, s32 a1); -extern s32 func_80171E08(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_80047948(s32 a0); -extern s32 func_8004787C(s32 a0); -extern void func_80172170(s32 a0, s32 a1); -extern s32 func_8017209C(void *arg0, void *arg1, s32 arg2, s32 arg3); -extern void func_801722CC(s32 *a0); -extern void func_80172304(s32 *a0); -extern void func_80172310(u8 *a0); -extern void func_801723C4(s32 param_1, s32 param_2); -extern void func_80161C24(s32, s32); -extern void func_80172414(s32 a0); -extern s32 func_801724EC(s32 a0); -extern s32 func_8017248C(s32 arg0, s32 arg1); -extern s32 func_80013450(s32); -extern s32 func_80172560(u8 *a0, u8 *a1); -extern s32 func_8017261C(u8 *a0); -extern s32 func_80172644(u8 *a0); -extern s32 func_80172670(s32 *a0); -extern s32 func_80172688(s32 *a0); -extern s32 func_80172694(s32 *a0); -extern s32 func_801726A0(s32 *a0); -extern s32 func_801726AC(s32 *a0); -extern s32 func_801726B8(s32 *a0); -extern s32 func_801726C4(s32 *a0); -extern s32 func_80172760(s32 a0); -extern s32 func_80174650(s32); -extern void (*D_80127088)(void); -extern s32 D_801270BC; -extern void func_801726D0(void * _arg0); -extern void func_80172710(void); -extern void func_80174684(void *); -extern void func_80172738(void); -extern s16 D_80126B30; -extern s32 func_801727D0(void *a0); -extern void func_80172780(void *a0); -extern void func_80172844(u8 *a0); -extern void func_8017280C(u8 *a0); -extern void func_8017288C(void); -extern s32 func_801728E4(void *a0); -extern void func_80172894(void *a0); -extern void func_80172958(u8 *a0); -extern void func_80172920(u8 *a0); -extern s16 D_80126B36; -extern void func_80172958(u8 * a0); -extern void func_801729A8(void); -extern s32 func_801729F0(void *a0); -extern s16 D_80126B34; -extern s16 D_80126B32; -extern void func_801729B0(s32 a0); -extern void func_80172A8C(void *a0); -extern void func_80172A2C(int param_1); -extern void func_80172ACC(u8 *a0); -extern void func_80172B0C(void); -extern s32 func_80172B44(void *a0); -extern void func_80172B14(s16 a0); -extern s32 D_801150F8; -extern void func_80172BC8(void *a0); -extern void func_80172B80(u8 *a0); -extern void func_80172C48(void); -extern void (*D_8018EB20[])(void); -extern void func_80172CA0(void *a0); -extern void func_80172D14(u8 *a0); -extern void func_80172CDC(u8 *a0); -extern void func_80172D14(u8 * a0); -extern void func_80172D60(void); -extern s32 D_80127508; -extern s32 func_80172DAC(void *a0); -extern void func_80172D68(s32 a0); -extern void func_80172E20(u8 *a0); -extern void func_80172DE8(u8 *a0); -extern void func_80172E20(u8 * a0); -extern void func_80172E8C(void); -extern void func_8017303C(void *); -extern void func_80172E94(void); -extern void func_80172ED4(void); -extern void func_80172EFC(void); -extern void func_80172F24(void); -extern u8 D_800D47F4[]; -extern void func_80172F4C(void); -extern void func_80172F9C(void); -extern u8 D_800D5C6C[]; -extern void func_80172FEC(void); -extern s32 func_80173078(void *a0); -extern void func_8017303C(void * a0); -extern void func_801730FC(struct S801730FC *a0); -extern void func_801730B4(s32 a0); -extern void func_8017316C(void); -extern s32 func_8017319C(void *a0); -extern void func_80173174(void); -extern u8 D_800D5AA0[]; -extern void func_80173220(void *a0); -extern void func_801731D8(s32 *a0); -extern M2C_UNK D_8018EAE4; -extern void func_80173220(void * arg0); -extern void func_80173294(void); -extern void func_801732C4(); -extern void func_8017329C(void); -extern void func_801732C4(s32 *a0); -extern void func_8017331C(); -extern void func_801732F4(void); -extern void func_8017331C(s32 *a0); -extern void func_80173374(); -extern void func_8017334C(void); -extern void func_80173374(s32 *a0); -extern void func_801733A4(void); -extern void func_801733CC(s32 a0); -extern void func_801734BC(s32 a0, s32 a1); -extern s16 D_80126B3E; -extern void func_80173460(s32 a0, s32 a1); -extern void func_801734BC(s32 arg0, s32 _unused1); -extern void (*D_8018EB50[])(void); -extern void func_80173544(void *a0); -extern void func_801735B8(u8 *a0); -extern void func_80173580(u8 *a0); -extern s16 D_80126B40; -extern void func_801735EC(void *a0); -extern void func_80173648(u8 *a0); -extern void func_801736A8(void); -extern s32 func_8014C118(void *a0, s32 a1, s32 a2); -extern s32 func_801736FC(void *a0); -extern void func_801736B0(s32 a0, s32 a1); -extern void func_80173770(u8 *a0); -extern void func_80173738(u8 *a0); -extern void func_801723C4(s32 a0, s32 a1); -extern void func_801737B0(void); -extern s32 func_801737E8(void *a0); -extern void func_801737B8(s16 a0); -extern void func_8017385C(u8 *a0); -extern void func_80173824(u8 *a0); -extern void func_801738D4(void); -extern s32 func_8017390C(void *a0); -extern void func_801738DC(s16 a0); -extern void func_80173980(u8 *a0); -extern void func_80173948(u8 *a0); -extern void func_801739D8(u8 *a0); -extern void func_80173A20(void); -extern s32 D_8012750C; -extern void func_80173A60(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80173A28(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void (*D_8018EB8C[])(void); -extern void func_80173B4C(void *a0); -extern void func_80173BC0(u8 *a0); -extern void func_80173B88(u8 *a0); -extern void func_80173C64(u8 *a0); -extern void func_80173E1C(s32 a0); -extern s16 D_80126938; -extern s16 D_80126B3A; -extern void func_800D128C(s32, s32); -extern void func_80174158(s32 a0); -extern void func_8002A088(s32); -extern void func_8002A2D4(s32); -extern void func_8002A544(s32); -extern void func_8002A7B4(s32); -extern s32 func_80174188(s32 a0); -extern void func_801741A8(s32 a0); -extern s32 func_800D0EC4(void); -extern void func_800D0F0C(s32, s32); -extern void func_80145EE8(s32); -extern void func_80173EF8(void *param_1); -extern s32 func_8014BCEC(s32, s32); -extern void func_801741A8(s32 _arg0); -extern s16 D_80126B3C; -extern s16 D_8011F9C8; -extern void func_801741EC(u8 *a0); -extern void func_80174274(void); -extern s32 func_801742A4(void *a0); -extern void func_8017427C(void); -extern void func_80174318(u8 *a0); -extern void func_801742E0(u8 *a0); -extern void func_80174354(void); -extern s32 func_80174384(void *a0); -extern void func_8017435C(void); -extern void func_801743F0(u8 *a0); -extern void func_801743C0(u8 *a0); -extern void func_801743F0(u8 * a0); -extern void func_80174430(void); -extern s32 func_80174474(void *a0); -extern void func_80174438(s32 a0); -extern void func_801744E0(u8 *a0); -extern void func_801744B0(u8 *a0); -extern void func_80174524(void); -extern void func_80174554(); -extern void func_8017452C(void); -extern void func_80174554(s32 arg0); -extern void func_801745AC(); -extern void func_80174584(void); -extern void func_801745AC(s32 *a0); -extern void func_80174604(void); -extern void func_801745DC(void); -extern void func_80174630(void); -extern s32 func_80174650(s32 _arg0); -extern void func_80174674(void); -extern void func_801746A4(void); -extern s32 func_800CF8CC(void); -extern void func_80174714(void); -extern s32 func_80174754(void); -extern s16 func_80174764(void); -extern s16 func_80174774(void); -extern s32 func_801747CC(void *a0); -extern void func_80174784(void); -extern s32 func_801747AC(s32 a0); -extern s32 func_80174808(u8 *a0); -extern void func_8017481C(void); -extern s32 func_80174888(void *a0); -extern void func_80174824(void); -extern void func_8017484C(s32 a0); -extern void func_801748C4(s32 a0); -extern void func_801748E4(void); -extern void func_8012A018(s32 a, s32 b); -extern s32 func_8017496C(void *a0); -extern s32 D_80126954; -extern s32 D_80126950; -extern s32 D_8012695C; -extern s16 D_80126968; -extern s16 D_8012696A; -extern s16 D_8012696C; -extern s16 D_80126976; -extern s16 D_80126978; -extern s16 D_8012697A; -extern void func_801748EC(void); -extern s32 func_801749C8(); -extern s32 func_801749A8(s32 a0); -extern void func_80174BBC(void *a0); -extern void func_8012A0E0(void); -extern void func_80174BF4(void *a0); -extern void (*D_8018EBE4[])(); -extern void func_80174BF4(void * arg0); -extern s32 func_80174CB0(s32, s32); -extern s32 func_80174C60(s32 a0); -extern void func_80174C80(s32 a0); -extern s32 D_8012697C; -extern u16 D_80126980; -extern s32 func_80174F28(void *a0); -extern void func_80174E9C(s32 a0); -extern void func_80174EF0(s32 a0, s16 a1); -extern s32 func_80175014(u8 *a0, u8 *a1, s32 a2); -extern void func_80174F64(u8 *a0); -extern void func_80174FBC(u8 *a0); -extern s32 func_8017509C(u8 *a0, s32 a1, u8 *a2, u8 *a3); -extern void func_80175184(s32 *a0); -extern void func_80175114(s32 *a0); -extern void func_80175184(); -extern void func_80175150(s32 *a0); -extern void (*D_8018EBF4[])(void*); -extern s32 func_80175268(s32); -extern void func_80175184(s32* arg0); -extern s32 func_80175218(void *a0); -extern void func_801751D8(void *a0); -extern void (*D_8018EBFC[])(s32); -extern s32 func_80175218(void * param_1); -extern void func_801752BC(s32 *a0); -extern u8 D_8011F7A8; -extern u8 D_8011F7A9; -extern u8 D_8011F7AD; -extern u8 D_8011F7AE; -extern void func_80175494(void); -extern void (*D_8018ED64[])(); -extern s32 func_801758FC(void); -extern s32 func_80175820(void); -extern s32 func_801759D8(void); -extern void func_8017553C(s32 *param); -extern void func_801757A0(s32 a0); -extern short D_800B9A02; -extern void func_80175590(void *arg0); -extern s16 D_800B9A02; -extern void func_801757A0(s32); -extern void func_80175624(void *a0); -extern void func_801757E0(int); -extern void func_80175668(void); -extern void (*D_8018ED70[])(); -extern void func_80175690(s32 *param); -extern void func_80175DA8(s32 a0); -extern void func_80175AB8(s32 a0); -extern void func_80176144(s32 a0); -extern void func_801756E4(s32 arg0); -extern void func_80175798(void); -extern void func_80176734(s32 a0); -extern void func_80176218(s32 a0); -extern void func_80176D00(s32 a0); -extern void func_801757E0(s32 a0); -extern s32 func_80178004(s32 a0, s32 a1, s32 a2); -extern u8 D_8011F7B1; -extern u16 D_8011F7B4; -extern u16 D_8011F7B6; -extern s16 D_8011F81E; -extern void *func_80177784(void *a0, s32 a1, s32 a2, s32 a3); -extern u32 func_801783D0(s32 a0, s32 a1); -extern void *func_801777BC(void *a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern u16 D_8011F82C; -extern u16 D_8011F82A; -extern u32 * func_80176D94(void *param_1, u32 param_2, s16 param_3_); -extern void func_801778A8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80176FF4(s32 a0); -extern u16 D_8011F830; -extern u16 D_8011F82E; -extern u32 * func_801770E0(void *param_1, u32 param_2, s16 param_3_); -extern void func_80177340(s32 a0); -extern u8 D_8011F837; -extern u8 D_8011F7F0; -extern u8 D_8011F7AB; -extern u32 * func_8017742C(u32 *param_1, s32 param_2, s32 param_3); -extern void func_801776EC(u8 *a0); -extern void * func_80177784(void *a0, s32 a1, s32 a2, s32 a3); -extern uint * func_80177EA4(uint *param_1, int param_2, uint param_3, int param_4); -extern void func_80177F84(s32 param_1, s32 param_2); -extern u32 * func_80178298(u32 *param_1, u8 *param_2, short param_3, short param_4); -extern M2C_UNK D_801E9014; -extern void func_80178438(u16 *arg0); -extern void func_801787D4(void); -extern void func_8012A908(void); -extern void func_8017869C(s32 a0); -extern void func_80130D0C(s32 a0); -extern void func_8013E370(void); -extern s32 D_8011DB08; -extern void func_8017849C(void); -extern void func_8013E4B4(void); -extern s16 D_801270C4; -extern s32 D_801274D8; -extern s16 D_801270C2; -extern u8 D_801270C6; -extern u8 D_801270C7; -extern s32 D_801274DC; -extern s32 D_801274E0; -extern void func_80178608(void); -extern void func_80178744(s32 a0, s32 a1); -extern void func_80178840(); -extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern s32 func_801788B8(s32 arg0, s32 arg1); -extern s32 func_801789AC(s32 arg0); -extern s16 D_801EAFC8; -extern int func_80178970(void); -extern s32 func_80178B18(s32 param_1, s32 param_2); -extern s32 func_80178B70(s32 param_1, s32 param_2); -extern void func_80178BB8(s32 a0, s32 a1); -extern s32 func_80178BF8(); -extern s32 D_801EA388; -extern short D_801EB03C; -extern void func_80178CBC(s32 arg0, s32 arg1); -extern void func_80178D18(void); -extern s32 func_80178D40(s32 arg0, s32 arg1); -extern void func_80179B28(s32 a0); -extern void func_80179B74(u16 *p); -extern void func_80179D30(u16 *a0); -extern void func_80179D78(u16 *a0); -extern void func_80179DCC(short a0); -extern void func_80179DF8(void); -extern void func_80179E1C(short a0); -extern void func_80179E48(s16 a0); -extern void func_80179E74(s16 a0); -extern void func_80179EA0(u16 *a0); -extern void func_80179EE8(short a0); -extern void func_80179F14(s16 a0, s16 a1); -extern void func_80179F44(void); -extern void func_80179F6C(short a0); -extern void func_80179F98(u16 *a0); -extern void func_80179FEC(u16 *a0); -extern void func_8017A040(u16 *a0); -extern s32 D_801EA7B4; -extern void func_8017A094(s32 arg0); -extern void func_8017A0C4(s32 arg0); -extern void func_8017A0F4(void); -extern void func_8017A11C(void); -extern s32 D_801EA7DC; -extern void func_8017A144(s32 a0); -extern void func_8017A180(void); -extern void func_8017A1A8(void); -extern void func_8017A1D0(void); -extern void func_8017A1F8(void); -extern void func_8017A220(void); -extern void func_8017A248(void); -extern void func_8017A270(void); -extern void func_8017A298(void); -extern void func_8017A2C0(void); -extern void func_8017A2E8(void); -extern void func_8017A310(void); -extern void func_8017A338(void); -extern void func_8017A360(void); -extern void func_8017A388(void); -extern s16 D_801EA798; -extern s32 func_8017A3B0(void); -extern void func_80172310(u8*); -extern void func_80172780(void*); -extern void func_80172894(void*); -extern void func_801729B0(s32); -extern void func_80172B14(s16); -extern void func_80172C50(u16 *); -extern void func_80172D68(s32); -extern void func_801733FC(s16, u16 *); -extern void func_80173460(s32, s32); -extern void func_801734BC(s32, s32); -extern void func_801736B0(s32, s32); -extern void func_801737B8(s16); -extern void func_801738DC(s16); -extern void func_80173A28(s32, s32, s32, s32, s32, s32); -extern void func_80174438(s32); -extern void func_8017A4AC(void); -extern s32 func_8017AD0C(s32 arg0); -extern s32 func_8017AD0C(s32); -extern s32 func_8017ADE8(s32 a0); -extern s32 func_8017AE08(void); -extern void func_8017B0E4(int param_1, int param_2); -extern s16 D_801EA79C; -extern u16 D_801EA81C; -extern u16 D_801EA81E; -extern u16 D_801EA820; -extern void func_8017B1D8(void); -extern s32 func_8017B238(s32 param_1, s32 param_2); -extern s32 func_8017B368(s32 param); -extern s32 func_8017B614(s32 param_1, s32 param_2); -extern s32 D_80114F30; -extern s32 D_80114F34; -extern s32 D_80114F38; -extern s32 D_80114F24; -extern s32 D_80114F28; -extern s32 D_80114F2C; -extern u8 D_8012694C; -extern s16 D_801EA814; -extern s16 D_801EA816; -extern s16 D_801EA818; -extern s16 D_801EA80C; -extern s16 D_801EA80E; -extern s16 D_801EA810; -extern void func_8017B7A8(void); -extern s16 D_801EA82C; -extern s16 D_801EA82E; -extern s16 D_801EA830; -extern s16 D_801EA834; -extern s16 D_801EA836; -extern s16 D_801EA838; -extern void func_8017B824(void); -extern void func_8017B880(void); -extern s32 func_8017B8E8(s32 src); -extern short D_801EA824; -extern short D_801EA826; -extern short D_801EA828; -extern void func_8017B940(void); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void RotTransSV(void *a0, void *a1, void *a2); -extern SV4 D_801EA7BC; -extern SV4 D_801EA7C4; -extern void func_8017BA3C(s32 param_1, s32 param_2); -extern s32 func_8017BB34(s32 param_1, s32 param_2); -extern void (*D_801EA7E4[10])(int); -extern void func_8017BC38(int param_1); -extern void func_8017B0E4(int, int); -extern void func_8017BCA0(int param_1); -extern void func_8012A4BC(void); -extern void func_8017BCF4(int param_1); -extern void (*D_801EA7E0)(void); -extern void func_8017BD50(int param_1); -extern void (*D_8018EF4C[])(void); -extern void func_8017BE60(void *a0); -extern void func_8017BE9C(void); -extern void func_8017BEA4(void); -extern void func_8017BEAC(void); -extern void func_8017BEB4(void); -extern void (*D_8018EF58[])(void); -extern void func_8017BEE4(void *a0); -extern void func_8017BF98(void); -extern s32 func_8017BFA0(void); -extern void func_8017C07C(void); -extern void (*D_8018F024[])(void); -extern void func_8017C0C8(void *a0); -extern void func_8017C154(); -extern void func_8017C12C(void); -extern void func_8017C14C(void); -extern void (*D_8018F064[])(void); -extern void func_8017C664(void *a0); -extern void (*D_8018F084[])(void); -extern void func_8017CE54(void *a0); -extern void (*D_8018F094[])(void); -extern void func_8017D0DC(void *a0); -extern void (*D_8018F0A0[])(void); -extern void func_8017D63C(void *a0); -extern void (*D_8018F224[])(void); -extern void func_8017DB00(void *a0); -extern void func_8017DB74(u8 *a0); -extern void func_8017DD74(void); -extern void func_8017DF7C(void); -extern void func_8017EB7C(s32 arg0); -extern void func_8017FA5C(s32 arg0, s32 arg1, s32 arg2); -extern void (*D_8018F500[])(void); -extern void func_801805BC(void *a0); -extern u8 D_8018F450; -extern void func_801805F8(s32 a0); -extern void func_80180714(void); -extern M2C_UNK D_8018F4F8; -extern void func_8018071C(void); -extern s32 func_80180744(void); -extern s16 func_80180760(void); -extern s32 D_8018F510; -extern s32 D_8018F56C[]; -extern void func_80180B84(int param_1); -extern void func_80180C34(s32 p); -extern void (*D_8018F5B0[])(void); -extern void func_80180DFC(void *a0); -extern s32 func_800D222C(s32 a0, void *a1, s32 a2); -extern s32 func_8001CF30(void *a0); -extern void func_80180E38(s32 param_1); -extern void func_80180FFC(u8 *p); -extern void (*D_8018F5B8[])(void); -extern void func_80181090(void *a0); -extern u8 D_8018F5A4; -extern void func_801810CC(s32 a0); -extern void func_80181170(int a0); -extern void (*D_8018F6D0[])(void); -extern void func_80181BD0(void *a0); -extern void func_8012C218(void*); -extern void func_80181F78(void); -extern void (*D_8018F728[])(void); -extern void func_80182028(void *a0); -extern void func_80182348(int); -extern void func_801820B4(int param_1); -extern void (*D_8018F73C[])(void); -extern void func_80182654(void *a0); -extern void func_801826D0(void *a0); -extern void func_80182740(void *a0); -extern void func_801827CC(void *a0); -extern void (*D_8018F750[])(void); -extern void func_801828F4(void *a0); -extern void func_80182C28(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80182BB0(s32 arg0, s32 arg1); -extern void func_80182BD4(s32 arg0, s32 arg1, s16 arg2); -extern void func_80182BFC(void *a0, void *a1, s32 a2, s32 a3); -extern void (*D_8018F7AC[])(void); -extern void func_80182E08(void *a0); -extern void (*D_8018F804[])(void); -extern void func_801835C4(void *a0); -extern s32 func_80183644(void); -extern void func_8001BFD0(void); -extern void func_800D1E28(void); -extern s32 func_801836A8(u8 *a0); -extern void func_800D1EBC(void); -extern void func_80183724(void); -extern void (*D_8018F818[])(void); -extern void func_80183744(void *a0); -extern s32 func_801837C0(u8 *a0); -extern void func_8018383C(void); -extern void (*D_8018F824[])(void); -extern void func_8018385C(u8 *a0); -extern M2C_UNK D_8018F830; -extern void func_80183930(void); -extern s32 D_8018F83C; -extern void func_80183958(void); -extern void (*D_8018F850[])(void); -extern void func_80183A18(void *a0); -extern s32 func_80012ABC(s32 a0, s32 a1, s32 a2); -extern void func_80183B58(s32 param_1, s16 *param_2); -extern s32 D_801EAC64; -extern s32 D_801EAC68; -extern void func_80184440(void); -extern void (*D_8018FE80[])(void); -extern void func_801848E4(void *a0); -extern s32 func_801847EC(void); -extern s32 func_8001AAA0(s32 arg); -extern void func_80184D1C(void *a0); -extern void func_80184DA4(s32 param_1); -extern void func_80184DF8(s32 param_1); -extern s32 func_8012C194(void); -extern s32 func_80184E4C(s32 a0, s32 a1, s16 a2, s16 a3, s32 a4); -extern s32 func_80178970(void); -extern void func_80184F14(s32 param_1); -extern void (*D_80190008[])(void); -extern void func_80185144(void *a0); -extern void func_8012C218(void *a0); -extern s32 func_8012B8A4(s16 *a0); -extern void func_80183980(void); -extern void func_80185380(s32 param_1); -extern void (*D_801903DC[])(void); -extern void func_8018553C(void *a0); -extern s32 D_801EAEE4; -extern s32 func_80185578(void); -extern s32 func_8018558C(void *a0); -extern void func_801856B4(void *a0); -extern void func_801856C4(void *arg0); -extern s32 func_80185744(void); -extern s32 func_80185764(void); -extern s32 func_80185784(void); -extern s32 func_80184868(s32); -extern s32 func_801857A4(void); -extern void func_800D0C48(s32 arg); -extern void func_801857C4(void); -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern u16 D_80126BF0; -extern u16 D_80126BF4; -extern s32 func_801857E4(void); -extern s8 D_801903A8[]; -extern void func_80185858(s32 arg0); -extern s32 func_80184868(s32 arg); -extern void func_8018597C(void *a0); -extern s32 func_8012BD14(s32 a0); -extern s32 func_80178BF8(); /* TU-canonical (ov_SC03_014_jr_801848E4.c L2534) */ -extern s32 func_801859B0(void *a0); -/* ==== end §8b carried decl layer ==== */ - - -/* ---- integration surface ---------------------------------------------- - * Decls conform to the host TU src/ov_SC03_014/ov_SC03_014_jr_801848E4.c: - * L3535 extern s32 func_8012C354(s32 a0, s32 a1); - * L2524 extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); - * L2916 extern void func_8012A828(s32 a0, void *a1); - * L3500 extern void func_8001C214(int, int); - * func_8012B23C is only block-scope in the host TU (L4008, same signature); - * func_80143970 / func_8001CA1C are not declared there at all. - * None of the D_* globals are declared in the host TU. - * -------------------------------------------------------------------- */ -extern s32 func_8012C354(s32 a0, s32 a1); -extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012A828(s32 a0, void *a1); -extern void func_8012B23C(s32 a0); -extern s32 func_80143970(s32 a0); /* canonical: DEFINE_func_80143970() in src/shared/engine_core.h returns s32 */ -extern void func_8001CA1C(s32 a0, s32 a1); -extern void func_8001C214(int, int); - -extern u16 D_80190490[]; -extern u8 D_801904C4[]; -extern u8 D_801E2170[]; -extern u8 D_80190590[]; -extern u8 D_8019059C[]; -extern u8 D_801905A4[]; -extern u8 D_801905B4[]; -extern u8 D_801905E4[]; -extern u8 D_801905F0[]; -extern u8 D_80190720[]; -extern u8 D_80190780[]; -extern u8 D_801C97C8[]; -extern u8 D_80191838[]; -extern u8 D_801E732C[]; -extern u8 D_801E7B50[]; -extern u8 D_801D6ED0[]; -extern s32 D_801EAC80; - -void func_80185B44(s32 a0) { - u16 t; - s32 c; - - if (func_8012C354(a0, (s32)D_80190490) == 0) { - return; - } - - switch (*(s16 *)(a0 + 0x70)) { - case 0: - *(u8 *)(a0 + 0xC0) = 1; - *(s16 *)(a0 + 0x2) = 0xE; - func_8012A828(a0, D_801E2170); - func_8012B23C(a0); - func_80143970(a0); - *(s32 *)(a0 + 0xB4) = -0x2032; - *(s32 *)(a0 + 0xBC) = (s32)D_801904C4; - *(s16 *)(a0 + 0xAE) = -1; - *(u8 *)(a0 + 0x75) = 0; - *(u32 *)(a0 + 0xC4) |= 1; - t = D_80190490[0]; - D_801EAC80 = 0; - *(s16 *)(a0 + 0xFE) = 1; - *(u16 *)(a0 + 0x76) = t; - *(s32 *)(a0 + 0x6C) = func_8012C658(0x265, 7, a0); - break; - - case 1: - func_8001CA1C(*(s32 *)(a0 + 0x20), (s32)D_80190590); - func_8012A828(a0, D_8019059C); - *(s32 *)(a0 + 0x58) = (s32)D_801905A4 | 0x40000000 | 0x20000000; - *(u16 *)(a0 + 0x5C) = 0x8000; - *(u32 *)(*(s32 *)(a0 + 0x20) + 4) |= 0x50000000; - *(u32 *)(*(s32 *)(a0 + 0x20) + 4) |= 0x8000000; - *(u8 *)(a0 + 0xC0) = 1; - *(s16 *)(a0 + 0x2) = 3; - *(s32 *)(a0 + 0xBC) = (s32)D_801905B4; - *(u8 *)(a0 + 0x75) = 0; - *(s32 *)(a0 + 0xB4) = 0; - *(s32 *)(a0 + 0x1C) = 0x5A; - *(u32 *)(a0 + 0xC4) |= 2; - break; - - case 2: - func_8001CA1C(*(s32 *)(a0 + 0x20), (s32)D_801905E4); - func_8012A828(a0, D_801905F0); - *(u32 *)(*(s32 *)(a0 + 0x20) + 4) |= 0x50000000; - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x2C) |= 0x10; - *(s16 *)(*(s32 *)(a0 + 0x20) + 0x18) = 0x2000; - *(s16 *)(*(s32 *)(a0 + 0x20) + 0x1A) = 0x2000; - *(s16 *)(a0 + 0x2) = 4; - *(u8 *)(a0 + 0x75) = 0; - c = D_801EAC80; - *(s32 *)(a0 + 0x1C) = 0x1E; - D_801EAC80 = c + 1; - break; - - case 3: - func_8001CA1C(*(s32 *)(a0 + 0x20), (s32)D_80190720); - func_8012A828(a0, D_80190780); - *(u32 *)(*(s32 *)(a0 + 0x20) + 4) |= 0x50000000; - *(u32 *)(*(s32 *)(a0 + 0x20) + 4) |= 0x8000000; - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x2C) |= 0x10; - *(s16 *)(a0 + 0x2) = 5; - *(u8 *)(a0 + 0x75) = 0; - *(s32 *)(a0 + 0x1C) = 0x5A; - break; - - case 4: - func_8001C214(*(s32 *)(a0 + 0x20), (s32)D_801C97C8); - *(u32 *)(*(s32 *)(a0 + 0x20) + 4) |= 0x50000000; - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x2C) |= 0x10; - *(s16 *)(a0 + 0x2) = 7; - *(u8 *)(a0 + 0x75) = 0; - *(s32 *)(a0 + 0x1C) = 0x5A; - break; - - case 5: - *(s32 *)(a0 + 0x58) = (s32)D_80191838 | 0x40000000 | 0x20000000; - *(s16 *)(a0 + 0x5C) = 0x800; - *(u32 *)(*(s32 *)(a0 + 0x20) + 4) |= 0x80000000; - *(s16 *)(a0 + 0x2) = 0xD; - break; - - case 6: - func_8001C214(*(s32 *)(a0 + 0x20), (s32)D_801E732C); - func_8012A828(a0, D_801E7B50); - *(s16 *)(a0 + 0x5C) = 0x800; - *(s16 *)(a0 + 0x2) = 0xF; - func_8012B23C(a0); - break; - - case 7: - func_8001C214(*(s32 *)(a0 + 0x20), (s32)D_801D6ED0); - *(s16 *)(a0 + 0x5C) = 0; - *(s16 *)(a0 + 0x2) = 0x10; - func_8012B23C(a0); - break; - } -} - - -/* ---- integration surface (types taken from the host TU / engine_core.h) ---- */ - -extern s32 rand(void); -extern s32 func_8004787C(s32 a0); /* host TU L2198 */ -extern s32 func_80047948(s32 a0); /* host TU L2197 */ -extern s32 func_8012B744(void *a0, void *a1); /* engine_core canonical */ -extern s32 func_8012BA10(s32 a0, s32 a1); /* engine_core canonical */ -extern void func_8012BE54(s32 a0); /* canonical void -> cast at use */ -extern void func_8012CBA4(s32 a0); /* canonical void */ -extern void func_8012A828(s32 a0, void *a1); /* host TU L3203 */ - -void func_80185EF8(s32 a0) { - - extern s32 *D_80126B78; /* host TU L72 : extern s32 *D_80126B78; */ - extern u16 D_80126B5E; /* host TU L1785: extern u16 D_80126B5E; */ - extern u16 D_80126B62; /* host TU L1786: extern u16 D_80126B62; */ - extern u16 D_80126B66; /* host TU L1787: extern u16 D_80126B66; */ - extern u8 D_80126B5C; /* host TU L356 : extern u8 D_80126B5C; */ - extern s32 D_80126B64; /* project-canonical decl */ - extern void *D_801904F0[]; - s32 t; - s32 spd; - s32 anim; - s32 hit; - s32 hit2; - u16 sp[3]; - - t = ((*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) & 0xFFF) - - (*(u16 *)((u8 *)D_80126B78 + 0x12) & 0xFFF)) & 0xFFF; - - if ((u32)(t - 0x7C1) < 0x7F) { - anim = 1; - spd = 0; - } else if ((u32)(t - 0x101) >= 0xDFF) { - anim = 3; - spd = 8; - } else if (t < 0x701) { - anim = 7; - spd = 8; - } else if (t < 0x7C1) { - anim = 5; - spd = 4; - } else if (t < 0x900) { - anim = 4; - spd = 4; - } else { - anim = 6; - spd = 8; - } - - sp[0] = D_80126B5E - - ((func_8004787C(*(u16 *)((u8 *)D_80126B78 + 0x12) & 0xFFF) * 14) >> 8); - sp[1] = D_80126B62; - sp[2] = D_80126B66 - - ((func_80047948(*(u16 *)((u8 *)D_80126B78 + 0x12) & 0xFFF) * 14) >> 8); - - t = func_8012B744((void *)(a0 + 4), sp); - *(s32 *)(a0 + 0x10) = -((func_8004787C(t) * spd) << 5); - *(s32 *)(a0 + 0x18) = -((func_80047948(t) * spd) << 5); - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) += func_8012BA10(a0, 4); - - /* NOTE: written as nested ifs, NOT an `||` chain -- fold_range_test would - * otherwise collapse each pair into an unsigned HImode range test. */ - hit = 1; - if (*(s16 *)&D_80126B5E < 0xF2) { - if (*(s16 *)&D_80126B5E >= -0x101) { - if (*(s16 *)&D_80126B66 < -0x106) { - hit = *(s16 *)&D_80126B66 < -0x4AA; - } - } - } - - if (hit) { - anim = 0xE; - *(u16 *)(a0 + 0x34) = 0; - if (((s32 (*)(s32))func_8012BE54)(a0) < 0x1000) { - *(u16 *)(a0 + 0x2) = 0xB; - } else { - switch (rand() % 3) { - case 0: - *(u16 *)(a0 + 0x2) = 2; - break; - case 1: - *(u16 *)(a0 + 0x2) = 6; - break; - case 2: - *(u16 *)(a0 + 0x2) = 8; - break; - } - } - *(s32 *)(a0 + 0x10) = 0; - *(s32 *)(a0 + 0x18) = 0; - } else { - func_8012CBA4(a0); - *(s32 *)(a0 + 0x10) = 0; - *(s32 *)(a0 + 0x18) = 0; - - if (*(s16 *)(a0 + 0x6) >= 0xF2) { - goto restore; - } - if (*(s16 *)(a0 + 0x6) < -0x101) { - goto restore; - } - if (*(s16 *)(a0 + 0xE) >= -0x106) { - goto restore; - } - if (*(s16 *)(a0 + 0xE) < -0x4AA) { - goto restore; - } - hit2 = 0; - goto tested; - restore: - *(s32 *)(a0 + 0x4) = *(s32 *)(a0 + 0x38); - *(s32 *)(a0 + 0x8) = *(s32 *)(a0 + 0x3C); - *(s32 *)(a0 + 0xC) = *(s32 *)(a0 + 0x40); - hit2 = 1; - tested: - - if (hit2) { - *(u16 *)(a0 + 0x2) = 0xC; - *(u16 *)(a0 + 0x34) = 0; - anim = 8; - *(s32 *)(a0 + 0x10) = (*(s32 *)&D_80126B5C - *(s32 *)(a0 + 0x4)) / 32; - *(s32 *)(a0 + 0x18) = (D_80126B64 - *(s32 *)(a0 + 0xC)) / 32; - *(u16 *)(a0 + 0xDC) = 0; - *(u16 *)(a0 + 0x102) = 0; - *(u16 *)(a0 + 0xDE) = *(u16 *)(a0 + 0xA); - } else { - if (((s32 (*)(s32))func_8012BE54)(a0) <= 0x8FFF) { - anim = 0xE; - if (rand() & 1) { - *(u16 *)(a0 + 0x2) = 6; - } else { - *(u16 *)(a0 + 0x2) = 8; - } - *(u16 *)(a0 + 0x34) = 0; - if (((s32 (*)(s32))func_8012BE54)(a0) < 0x1000) { - anim = 0xE; - *(u16 *)(a0 + 0x2) = 0xB; - *(u16 *)(a0 + 0x34) = 0; - } - } - - if (*(s16 *)(a0 + 0xE0) == *(s16 *)&D_80126B5E && - *(s16 *)(a0 + 0xE2) == *(s16 *)&D_80126B66) { - s16 c; - c = *(u16 *)(a0 + 0x102) + 1; - *(s16 *)(a0 + 0x102) = c; - if (c >= 0x1E) { - *(u16 *)(a0 + 0x2) = 0xC; - *(u16 *)(a0 + 0x34) = 0; - anim = 8; - *(s32 *)(a0 + 0x10) = - (*(s32 *)&D_80126B5C - *(s32 *)(a0 + 0x4)) / 32; - *(s32 *)(a0 + 0x18) = (D_80126B64 - *(s32 *)(a0 + 0xC)) / 32; - *(u16 *)(a0 + 0xDC) = 0; - *(u16 *)(a0 + 0x102) = 0; - *(u16 *)(a0 + 0xDE) = *(u16 *)(a0 + 0xA); - } - } else { - *(u16 *)(a0 + 0x102) = 0; - } - *(u16 *)(a0 + 0xE0) = D_80126B5E; - *(u16 *)(a0 + 0xE2) = D_80126B66; - } - } - - if (*(s16 *)(a0 + 0xFE) != anim) { - *(s16 *)(a0 + 0xFE) = anim; - func_8012A828(a0, D_801904F0[anim]); - } -} - - - typedef struct { s32 a; s32 b[4]; } Ot_8018B23C_801863B8; - -/* Declarations adopted verbatim from src/ov_SC03_014/ov_SC03_014_jr_801848E4.c - * (law 2). D_801E2CE8 and D_80190538 are first uses in this TU, declared in - * the raw form matching how their addresses are consumed here (never - * dereferenced in this function; passed on as a pointer arg only). */ -extern s32 func_8012CBCC(s32 a0); -extern s32 func_8012BA10(s32 a0, s32 a1); -extern void func_8012A828(s32 a0, void *a1); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); -extern void func_8002D4C8(s32 a0, s32 a1); - - -void func_801863B8(s32 a0) { - - extern u8 D_801E2CE8[]; - extern u8 D_80190538[]; - s32 obj; - s32 s1; - s32 msg; - u16 sp[3]; - - func_8012CBCC(a0); - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) += func_8012BA10(a0, 4); - - switch (*(u16 *)(a0 + 0x34)) { - case 0: - if (!(*(u16 *)(a0 + 0x72) & 0x4000)) { - break; - } - *(u16 *)(a0 + 0x34) = 1; - func_8012A828(a0, D_801E2CE8); - msg = 0xA7E; - goto tail; - - case 1: - if (*(s32 *)(a0 + 0x94) != 0xF) { - break; - } - *(u16 *)(a0 + 0x34) = 2; - func_8012F14C(*(s32 *)(a0 + 0x20) + 0x34, (s32)D_80190538, (s32)sp); - for (s1 = -0x200; s1 < 0x300; s1 += 0x200) { - obj = func_8012C658(0x265, 1, a0); - if (obj != 0) { - *(u16 *)(obj + 0xFE) = - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) + s1; - *(u16 *)(*(s32 *)(obj + 0x20) + 0x14) = - *(u16 *)(obj + 0xFC) + 0x200; - *(u16 *)(obj + 0x6) = sp[0]; - *(u16 *)(obj + 0xA) = sp[1]; - *(u16 *)(obj + 0xE) = sp[2]; - } - } - msg = 0xA35; - tail: - func_8002D4C8(msg, 0); - break; - - case 2: - if (!(*(u16 *)(a0 + 0x72) & 0x4000)) { - break; - } - *(u16 *)(a0 + 0x2) = 1; - func_8012A828(a0, D_801E2170); - break; - } -} - - -DEFINE_func_8018655C() /* dedup: shared engine-core @0x8018655C (src/shared) */ - -DEFINE_func_801867F8() /* dedup: shared engine-core @0x801867F8 (src/shared) */ - - -/* Declarations matched verbatim to src/ov_SC03_014/ov_SC03_014_jr_801848E4.c - * where that TU already declares the symbol (law 2/1b). Fresh raw-form decls - * (u8[]) for the two data symbols the TU does not yet mention. */ -extern s32 func_8012CBCC(s32 a0); -extern s32 func_8012BA10(s32 a0, s32 a1); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012A828(s32 a0, void *a1); -extern s32 func_8004787C(s32 a0); -extern s32 func_80047948(s32 a0); -extern void func_8002D4C8(s32 a0, s32 a1); - - -void func_80186A74(s32 a0) { - - extern u8 D_801E2B50[]; - extern u8 D_80190540[]; - s16 sp10[3]; - s32 s0; - - func_8012CBCC(a0); - - switch (*(u16 *)(a0 + 0x34)) { - case 0: - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) += func_8012BA10(a0, 4); - if (*(u16 *)(a0 + 0x72) & 0x4000) { - *(u16 *)(a0 + 0x34) = 1; - func_8012A828(a0, D_801E2B50); - func_8002D4C8(0xA81, 0); - } - break; - case 1: - if (*(s32 *)(a0 + 0x94) == 0xF) { - *(u16 *)(a0 + 0x34) = 2; - func_8012F14C(*(s32 *)(a0 + 0x20) + 0x34, (s32)D_80190540, (s32)sp10); - s0 = func_8012C658(0x265, 3, a0); - if (s0 != 0) { - *(u16 *)(*(s32 *)(s0 + 0x20) + 0x14) = - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12); - *(s32 *)(s0 + 0x10) = - -(func_8004787C(*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12)) << 8); - *(s32 *)(s0 + 0x18) = - -(func_80047948(*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12)) << 8); - *(u16 *)(s0 + 0x6) = sp10[0]; - *(u16 *)(s0 + 0xA) = sp10[1]; - *(u16 *)(s0 + 0xE) = sp10[2]; - } - func_8002D4C8(0xA36, 0); - } - break; - case 2: - if (*(u16 *)(a0 + 0x72) & 0x4000) { - *(u16 *)(a0 + 0xFC) = 0x1E; - *(u16 *)(a0 + 0x2) = 9; - func_8012A828(a0, D_801E2170); - *(u16 *)(a0 + 0xAE) = 0x2900; - } - break; - } - - func_8012C658(0x3DE, 0, a0); -} - - - -/* func_80186C4C — ov_SC03_014 / ov_SC03_014_jr_801848E4. MATCH 273/273. - * BYTE-IDENTICAL twin: ov_SC03_015 @ 0x80186C4C (same 273 ins, same D_ symbol - * addresses) — this one body matches BOTH overlays verbatim, no remap needed. - * - * Four levers, each measured against match_one: - * - * 1. THE ZERO-ARG func_8012C218. The early-out call at 80186C74 has a *nop* - * delay slot and no `move $a0,$s0` anywhere in its block, while every other - * call in the function sets $a0 explicitly. gcc always emits the arg copy - * when the callee takes one, and dbr would have pulled it into the jal slot, - * so the source call genuinely passes NOTHING. The host TU's file-scope decl - * is `extern void func_8012C218(void *a0);` (an arg-less call against it is a - * hard error), so it is spelled with the TU's own established cast idiom: - * `((void (*)(void))func_8012C218)();` (see TU L2943 for the same idiom). - * The SECOND call, in the &0x8000 arm, does take a0 and keeps the prototype. - * - * 2. THE $s0/$s1 PERM, SOLVED WITHOUT A PIN (§137). Written naively (a separate - * pseudo for &D_80191808 and another for the func_80143C74 result) global-alloc - * ranks the table address ABOVE the a0-copy: a0 -> $s1, table -> $s0, result -> - * $s0 — the exact mirror of the target. Pinning the a0-copy to $16 fixes the - * registers but COSTS an instruction: `register s32 a0 __asm__("$16"); a0=arg0;` - * leaves the parameter as a second live pseudo, and copy-prop then serves - * func_8012CBCC's argument straight out of the incoming $a0, deleting the - * `move $a0,$s0` the target has at 80186C88. The fix that costs nothing is to - * give the table address and the func_80143C74 result THE SAME variable `r` - * (their live ranges are disjoint — the table dies at the third func_8012D5E4). - * One pseudo instead of two drops its priority below the a0-copy, so a0 first- - * fits $s0 and r takes $s1 for both roles, exactly as the target does. A pin - * on the table to $17 works equally well; the merged variable is preferred as - * it adds no asm-register construct. - * - * 3. STATEMENT ORDER AS MULT-GAP SEED. -O2 schedules the statement FOLLOWING a - * multiply into the gap between that multiply's `mult` and its `mflo`. The - * target parks the `r->0x48 -= 0xC000` block (lui/lw/ori/addu/sw) inside the - * SECOND mult's gap (80186F4C..80186F5C), so in the source it must follow the - * r->0xC statement, not sit between r->0x4 and r->0xC. With it in the middle - * it lands in the FIRST mult's gap instead and every following index shifts. - * - * 4. ONE LOAD OF r->0xCC. Two literal `*(s16 *)(*(s32 *)(r + 0xCC) + ...)` stores - * re-load the pointer (the intervening store is may-alias, so CSE refuses); - * the target loads it once into $v1. Hoisting it into a local `c` is what - * makes the 273/275 instruction count come out. - * - * The `q = &D_80126B96; *q |= 0x4000;` pointer form (not a direct `D_80126B96 |=`) - * is the fleet-wide idiom for this global — it is what produces lui+addiu followed - * by `lhu 0($v1)` rather than a `%lo`-folded load. See ov_SC02_027_jr_8017D898.c - * L4527 and ov_SC03_099_jr_8017BEBC.c L6138. - */ - -extern void func_8012C218(void *a0); -extern s32 func_8012CBCC(s32 a0); -extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80143C74(s32 a0, s32 a1); -extern s32 func_8004787C(s32 a0); -extern s32 func_80047948(s32 a0); -extern void func_800599B8(); - - -void func_80186C4C(s32 a0) { - - extern s16 D_80191810; - extern s16 D_80191812; - extern s16 D_80191814; - extern s16 D_80191818; - extern s16 D_8019181A; - extern s16 D_8019181C; - extern s16 D_80191820; - extern s16 D_80191822; - extern s16 D_80191824; - extern u8 D_80191808[]; - extern u8 D_80191828[]; - extern u8 D_80191830[]; - extern u8 D_80190FE8[]; - extern u8 D_801907E8[]; - extern u8 D_801917E8[]; - - extern u16 D_80126B96; - u16 *q; - s32 r; - s32 t; - s32 c; - s16 sp10[3]; - - t = *(s32 *)(a0 + 0x1C) - 1; - *(s32 *)(a0 + 0x1C) = t; - if (t <= 0) { - ((void (*)(void))func_8012C218)(); - return; - } - if (func_8012CBCC(a0) & 0x8000) { - func_8012C218((void *)a0); - return; - } - - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x18) = - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x18) + 0x80; - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x1A) = - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x1A) + 0x80; - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x1C) = - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x1C) + 0x80; - - r = (s32)D_80191808; - sp10[0] = (D_80191810 * *(s16 *)(*(s32 *)(a0 + 0x20) + 0x18)) >> 12; - sp10[1] = (D_80191812 * *(s16 *)(*(s32 *)(a0 + 0x20) + 0x1A)) >> 12; - sp10[2] = (D_80191814 * *(s16 *)(*(s32 *)(a0 + 0x20) + 0x1C)) >> 12; - if (func_8012D5E4(a0, r, (s32)sp10, 0x30) != 0) { - q = &D_80126B96; - *q |= 0x4000; - } - - sp10[0] = (D_80191818 * *(s16 *)(*(s32 *)(a0 + 0x20) + 0x18)) >> 12; - sp10[1] = (D_8019181A * *(s16 *)(*(s32 *)(a0 + 0x20) + 0x1A)) >> 12; - sp10[2] = (D_8019181C * *(s16 *)(*(s32 *)(a0 + 0x20) + 0x1C)) >> 12; - if (func_8012D5E4(a0, r, (s32)sp10, 0x30) != 0) { - q = &D_80126B96; - *q |= 0x4000; - } - - sp10[0] = (D_80191820 * *(s16 *)(*(s32 *)(a0 + 0x20) + 0x18)) >> 12; - sp10[1] = (D_80191822 * *(s16 *)(*(s32 *)(a0 + 0x20) + 0x1A)) >> 12; - sp10[2] = (D_80191824 * *(s16 *)(*(s32 *)(a0 + 0x20) + 0x1C)) >> 12; - if (func_8012D5E4(a0, r, (s32)sp10, 0x30) != 0) { - q = &D_80126B96; - *q |= 0x4000; - } - - r = func_80143C74(a0, 0); - if (r != 0) { - *(s32 *)(r + 0x4) = - *(s32 *)(r + 0x4) - - ((func_8004787C(*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12)) * - *(s16 *)(*(s32 *)(a0 + 0x20) + 0x18)) >> 3); - *(s32 *)(r + 0xC) = - *(s32 *)(r + 0xC) - - ((func_80047948(*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12)) * - *(s16 *)(*(s32 *)(a0 + 0x20) + 0x1C)) >> 3); - *(s32 *)(r + 0x48) = *(s32 *)(r + 0x48) - 0xC000; - c = *(s32 *)(r + 0xCC); - *(s16 *)(c + 0x18) = 0x3000; - *(s16 *)(c + 0x1A) = 0x3000; - } - - if (*(s32 *)(a0 + 0x1C) & 1) { - func_800599B8(D_80191828, D_80190FE8); - func_800599B8(D_80191830, D_801917E8); - if (r == 0) { - return; - } - *(s32 *)(r + 0x10) = - func_8004787C(*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12) + 0x180) << 7; - *(s32 *)(r + 0x18) = - func_80047948(*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12) + 0x180) << 7; - } else { - func_800599B8(D_80191828, D_801907E8); - func_800599B8(D_80191830, D_801917E8); - if (r == 0) { - return; - } - *(s32 *)(r + 0x10) = - func_8004787C(*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12) - 0x180) << 7; - *(s32 *)(r + 0x18) = - func_80047948(*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12) - 0x180) << 7; - } -} - - -DEFINE_func_80187090() /* dedup: shared engine-core @0x80187090 (src/shared) */ - -DEFINE_func_80187300() /* dedup: shared engine-core @0x80187300 (src/shared) */ - - -/* func_801874C0 — ov_SC03_014 / ov_SC03_014_jr_801848E4, 241 ins, jtbl_801E94B0 (6 entries, - * cases 0..5, every entry a real body => NO empty-case construction, §162a negative control). - * - * THREE THINGS ARE LOAD-BEARING HERE; each was byte-measured against match_one. - * - * 1. THE 0xDC BUMP IS A *MEMORY* if/else, NOT A LOCAL ONE. Written the obvious way — - * s16 ang = *(s16 *)(a0 + 0xDC); if (ang < 0x400) ang += 0x30; else ang += 0x50; - * — the `lh 0xDC` is a zero-dependency insn at the head of the block and the backward - * scheduler drags it above BOTH `+=` statements (240 ins, 201 mismatched: the `sw 0xC` - * then fills the `beqz` delay slot the target leaves as `nop`). Reading the field inside - * each arm (`ang = *(s16 *)(a0 + 0xDC) + 0x30;`) makes cse produce the one load the target - * has, in the target's position, and restores the empty delay slot. The RESULT still has - * to live in a local `ang`, because the call argument is the register value sign-extended - * (`sll/sra`), not a re-load: spelling the arm as `*(s16 *)(a0+0xDC) += 0x30;` and passing - * `*(s16 *)(a0+0xDC)` costs `sh; lh` where the target has `sll; sra` + the `sh` in the jal - * delay slot (12 mismatched). - * - * 2. THE VOLATILE PAIR IS A SCHEDULING ALIAS BARRIER — the last 8-instruction residual, and - * the ONLY lever that closes it. gcc-2.7.2 schedules a block BACKWARD (`sched.c` - * schedule_block, "we are traversing the instructions backwards"), picking the highest - * INSN_PRIORITY ready insn, where priority = depth from the block START and ready = all - * SUCCESSORS scheduled. At the step after `sh ,0x18($sp)` the target picks - * `addiu $a0,$sp,0x10` (priority 1) over `sh 0xA($s0)` (priority 2 — the `lhu 0xDE` load - * edge into the `subu` costs 2). A lower-priority insn can only win if the higher one is - * NOT READY, i.e. `sh 0xA($s0)` still owes a successor — and the only insn emitted after it - * is `lhu 0x6($s0)`. So the original's store-to-0xA and load-from-0x6 were NOT - * disambiguated. They cannot be: `memrefs_conflict_p` folds `(plus (reg72) 10)` against - * `(plus (reg72) 6)` to c=-4 with size 2 and returns "no conflict" for any spelling that - * keeps one base pseudo — verified against 20 source variants (shared temps, pointer - * locals, struct-vs-array buffers, operand re-association, statement order: all stuck at - * exactly 8). `true_dependence` (`sched.c:817`) has one other door: - * `MEM_VOLATILE_P (x) && MEM_VOLATILE_P (mem)`. Qualifying BOTH members of that one pair - * makes the dependence and the schedule falls into place, 241/241 exact. - * BOUNDS, all byte-measured: qualifying only ONE of the two does nothing (8 mismatched - * either way — the volatile path is a conjunction); widening it to every entity access is - * catastrophic (+17 ins); widening it to the post-call write-backs at 6/0xA/0xE costs +1. - * The uniform "whole position triple in both fills + the 0xA write" spelling also MATCHes - * (241/241) — the minimal pair is kept here because it names the mechanism exactly. - * - * 3. `*(s16 *)(a0 + 0xAE) = -1;` must be SIGNED. Through a `u16` lvalue gcc materialises - * `ori $v0,$zero,0xFFFF`; the target has `addiu $v0,$zero,-1`. - * - * Frame: two 8-byte buffers at 0x10/0x18 give `vars=24, regs=4/0, args=16` = 0x38 with no - * §162i dead-local pad needed. - * - * Integration surface (§161c) — every decl below either AGREES verbatim with the host TU - * `src/ov_SC03_014/ov_SC03_014_jr_801848E4.c` or is new to it: - * func_8004787C (host L2198/3048/3274) · func_8002D4C8 (host L52/3470) - * func_8012A828 (host L2910/3054/3203) · func_8012D5E4 (host L3272) - * func_8012C658 (host L2524/2909/3731) · func_8012B23C (host L2911) - * rand (host L951/3047) · D_801E2170 [] (host L2918) - * D_80126B96 u16 (host L3296, BLOCK scope inside func_80186C4C — same type, no conflict) - * func_8012CEB0 and the D_8019055x/7x/8x + D_801E25D8/2638/2660/2708 data symbols are NOT - * mentioned anywhere in the host TU: free. - * BANKING NOTE: jtbl_801E94B0 sits at file offset 0xC1358, which is currently the FIRST word - * of the `[0xc1358, data, tail20]` segment — outside `[0xc1338, .rodata, - * ov_SC03_014_jr_801848E4]` (which ends at 0xc1358). Banking this function needs that carve - * extended by 0x18 (6 words) and tail20 moved to 0xc1370; it is a clean append, no reorder. - */ - -typedef struct { - u16 vx, vy, vz, pad; -} V8_801874C0; - -extern s32 func_8004787C(s32 a0); -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); -extern s32 rand(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_8012A828(s32 a0, void *a1); -extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_8012B23C(s32 a0); -extern s32 func_8012C658(s32 a0, s32 a1, s32 a2); - -extern u16 D_80126B96; -extern u8 D_801E2170[]; -extern u8 D_801E25D8[]; -extern u8 D_801E2638[]; -extern u8 D_801E2660[]; -extern u8 D_801E2708[]; -extern u8 D_80190550[]; -extern u8 D_80190558[]; -extern u8 D_80190560[]; -extern u8 D_80190568[]; -extern u8 D_80190570[]; -extern u8 D_80190578[]; -extern u8 D_80190580[]; -extern u8 D_80190588[]; - -void func_801874C0(s32 a0) { - V8_801874C0 sp10; - V8_801874C0 sp18; - s16 ang; - s32 ret; - s32 t; - - sp10.vx = *(u16 *)(a0 + 0x6); - sp10.vy = *(u16 *)(a0 + 0xA); - sp10.vz = *(u16 *)(a0 + 0xE); - *(s32 *)(a0 + 0x4) += *(s32 *)(a0 + 0x10); - *(s32 *)(a0 + 0xC) += *(s32 *)(a0 + 0x18); - - if (*(s16 *)(a0 + 0xDC) < 0x400) { - ang = *(s16 *)(a0 + 0xDC) + 0x30; - } else { - ang = *(s16 *)(a0 + 0xDC) + 0x50; - } - *(s16 *)(a0 + 0xDC) = ang; - /* volatile #1 of the barrier pair — see note 2 in the header. */ - *(volatile s16 *)(a0 + 0xA) = *(u16 *)(a0 + 0xDE) - (func_8004787C(ang) >> 4); - - /* volatile #2 of the barrier pair — see note 2 in the header. */ - sp18.vx = *(volatile u16 *)(a0 + 0x6); - sp18.vy = *(u16 *)(a0 + 0xA); - sp18.vz = *(u16 *)(a0 + 0xE); - ret = func_8012CEB0((s32)&sp10, (s32)&sp18, 1); - *(u16 *)(a0 + 0x6) = sp18.vx; - if (ret & 0x6000) { - *(u16 *)(a0 + 0xA) = sp18.vy; - } - *(u16 *)(a0 + 0xE) = sp18.vz; - - switch (*(u16 *)(a0 + 0x34)) { - case 0: - if (rand() & 1) { - *(s32 *)(a0 + 0x1C) = 0x12; - *(u16 *)(a0 + 0x34) = 1; - func_8002D4C8(0xA80, 0); - } else { - *(s32 *)(a0 + 0x1C) = 0x12; - *(u16 *)(a0 + 0x34) = 5; - func_8002D4C8(0xA7F, 0); - } - break; - case 1: - if (*(u16 *)(a0 + 0x72) & 0x4000) { - func_8012A828(a0, D_801E2638); - } - t = *(s32 *)(a0 + 0x1C) - 1; - *(s32 *)(a0 + 0x1C) = t; - if (t <= 0) { - *(u16 *)(a0 + 0x34) = 2; - func_8012A828(a0, D_801E2708); - } - break; - case 2: - if (*(s32 *)(a0 + 0x94) == 0xF) { - func_8002D4C8(0xA89, 0); - if (func_8012D5E4(a0, (s32)D_80190570, (s32)D_80190578, 0x18) == 1) { - D_80126B96 = 4; - } - if (func_8012D5E4(a0, (s32)D_80190570, (s32)D_80190580, 0x18) == 1) { - D_80126B96 = 4; - } - if (func_8012D5E4(a0, (s32)D_80190570, (s32)D_80190588, 0x18) == 1) { - D_80126B96 = 4; - } - } - if (*(u16 *)(a0 + 0x72) & 0x4000) { - func_8012A828(a0, D_801E25D8); - *(u16 *)(a0 + 0x34) = 4; - } - break; - case 3: - if (*(s32 *)(a0 + 0x94) == 0xF) { - func_8002D4C8(0xA89, 0); - if (func_8012D5E4(a0, (s32)D_80190550, (s32)D_80190558, 0x18) == 1) { - D_80126B96 = 4; - } - if (func_8012D5E4(a0, (s32)D_80190550, (s32)D_80190560, 0x18) == 1) { - D_80126B96 = 4; - } - if (func_8012D5E4(a0, (s32)D_80190550, (s32)D_80190568, 0x18) == 1) { - D_80126B96 = 4; - } - } - if (*(u16 *)(a0 + 0x72) & 0x4000) { - func_8012A828(a0, D_801E25D8); - *(u16 *)(a0 + 0x34) = 4; - } - break; - case 4: - if (ret & 0x6000) { - func_8012B23C(a0); - func_8012A828(a0, D_801E2170); - *(u16 *)(a0 + 0x2) = 0xA; - *(u16 *)(a0 + 0xFC) = 4; - *(s16 *)(a0 + 0xAE) = -1; - } - break; - case 5: - if (*(u16 *)(a0 + 0x72) & 0x4000) { - func_8012A828(a0, D_801E2638); - } - t = *(s32 *)(a0 + 0x1C) - 1; - *(s32 *)(a0 + 0x1C) = t; - if (t <= 0) { - *(u16 *)(a0 + 0x34) = 3; - func_8012A828(a0, D_801E2660); - } - break; - } - func_8012C658(0x3DE, 0, a0); -} - -extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); -extern void func_80185A0C(s32 a0); -extern void func_8012A828(s32 a0, void *a1); -extern void func_8001C214(int, int); -extern void func_8012B2CC(s32 a0); -extern s32 func_8012B8A4(s16 *a0); -extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); -extern void func_80182BFC(void *a0, void *a1, s32 a2, s32 a3); -extern u8 D_801E2170[]; -extern u8 D_801E2B50[]; -extern u8 D_801E2CE8[]; -extern u8 D_801E2DE0[]; -extern u8 D_801E2EE8[]; -extern u8 D_801E2EA0[]; -extern u8 D_801D6D2C[]; - -void func_80187884(s32 a0) { - switch (*(s32 *)(*(s32 *)(a0 + 0x64) + 0xF8)) { - case 0: - break; - case 1: - func_8012A828(a0, D_801E2DE0); - goto set0; - case 2: - func_8012A828(a0, D_801E2B50); - goto set0; - case 3: - func_8012A828(a0, D_801E2EE8); - set0: - *(s32 *)(*(s32 *)(a0 + 0x64) + 0xF8) = 0; - break; - case 4: - func_8012A828(a0, D_801E2EA0); - *(u16 *)(a0 + 0x98) = 0; - *(s32 *)(*(s32 *)(a0 + 0x64) + 0xF8) = 5; - break; - case 5: { - s32 t; - t = func_8012B608(*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12), 0, 4); - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) += t; - break; - } - case 6: - func_8012A828(a0, D_801E2CE8); - *(s32 *)(*(s32 *)(a0 + 0x64) + 0xF8) = 7; - break; - case 7: { - s32 t; - t = func_8012B608(*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12), 0xA00, 2); - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) += t; - break; - } - case 8: - func_8001C214(*(s32 *)(a0 + 0x20), (s32)D_801D6D2C); - *(s16 *)(*(s32 *)(a0 + 0x20) + 0x12) = func_8012B8A4((s16 *)a0); - func_8012A828(a0, D_801E2B50); - *(s32 *)(*(s32 *)(a0 + 0x64) + 0xF8) = 0; - *(u16 *)(*(s32 *)(a0 + 0x6C) + 0x34) += 1; - *(s16 *)(a0 + 0x104) = 1; - *(s16 *)(a0 + 0x106) = 1; - break; - case 10: - *(s16 *)(a0 + 0x2) = 1; - *(s32 *)(*(s32 *)(a0 + 0x64) + 0xF8) = 0; - func_80182BFC((char *)a0 + 0x76, (char *)a0 + 0x76, 3, 0x96); - break; - } - - if (*(s16 *)(a0 + 0x104) != 0) { - func_8012B2CC(a0); - func_80185A0C(a0); - if (*(s16 *)(a0 + 0x106) != 0) { - func_8012C658(0x3DE, 0, a0); - } - } - - if (*(u16 *)(a0 + 0x72) & 0x4000) { - *(s16 *)(a0 + 0x106) = 0; - func_8012A828(a0, D_801E2170); - } -} - - - - -extern void func_8012C218(void *a0); -extern s32 func_8012CBCC(s32 a0); -extern void func_8012B370(s32 a0); -extern s32 func_8004787C(s32 a0); -extern s32 func_80047948(s32 a0); - -void func_80187A98(s32 a0) { - s32 state; - s32 t; - - state = *(u16 *)(a0 + 0x34); - switch (state) { - case 0: - t = 0xFF000058; - t += *(s32 *)(*(s32 *)(*(s32 *)(a0 + 0x64) + 0x20) + 0x20); - *(u16 *)(a0 + 6) = *(u16 *)(*(s32 *)(a0 + 0x64) + 6) + *(s8 *)(t + 3); - *(u16 *)(a0 + 0xA) = *(u16 *)(*(s32 *)(a0 + 0x64) + 0xA) + *(s8 *)(t + 4); - *(u16 *)(a0 + 0xE) = *(u16 *)(*(s32 *)(a0 + 0x64) + 0xE) + *(s8 *)(t + 5); - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x10) = - *(u16 *)(*(s32 *)(*(s32 *)(a0 + 0x64) + 0x20) + 0x10) - *(u16 *)(t + 6); - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) = - *(u16 *)(*(s32 *)(*(s32 *)(a0 + 0x64) + 0x20) + 0x12); - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x14) = - *(u16 *)(*(s32 *)(*(s32 *)(a0 + 0x64) + 0x20) + 0x14) - 0x280; - *(u16 *)(a0 + 6) += (func_8004787C(*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12) + - (*(u8 *)(t + 1) + ((*(u8 *)t & 0xF) * 0x100))) << 4) >> 12; - *(u16 *)(a0 + 0xE) += (func_80047948(*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12) + - (*(u8 *)(t + 1) + ((*(u8 *)t & 0xF) * 0x100))) << 4) >> 12; - func_8012B370(a0); - break; - case 1: - *(s16 *)(a0 + 0x16) = -4; - *(s16 *)(a0 + 0x12) = 0x10; - *(s16 *)(a0 + 0x1A) = -6; - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x10) = 0x400; - *(u16 *)(a0 + 0x34) = 2; - return; - case 2: - if (func_8012CBCC(a0) != 0) { - func_8012C218((void *)a0); - return; - } - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x14) += 0x300; - func_8012B370(a0); - break; - } -} - - - -void func_80187CA8(s32 a0) { - extern void (*D_801906F8[])(void); - extern void (*D_80190700[])(void); - extern void (*D_80191848[])(void *); - extern s32 D_801EAC80; - extern void func_800599B8(); - extern void func_8012B2CC(s32 a0); - extern void func_80185A0C(s32 a0); - s32 idx; - - if ((*(s16 *)(a0 + 0x70) == 0) && (D_801EAC80 != 0)) { - idx = (*(u16 *)(a0 + 0x100) + 1) & 7; - *(u16 *)(a0 + 0x100) = idx; - func_800599B8(D_801906F8, D_80190700[idx]); - } - D_80191848[*(u16 *)(a0 + 2)](a0); - if ((*(s16 *)(a0 + 0x70) == 0) && (*(u16 *)(a0 + 2) != 0) && (*(u16 *)(a0 + 2) < 0xD)) { - func_8012B2CC(a0); - func_80185A0C(a0); - } -} - - - -extern void (*D_80191890[])(void); - -void func_80187D80(void *a0) { - D_80191890[*(u16 *)((s32)a0 + 0x2)](); -} - - -void func_80187DBC(void *a0) { - extern u16 D_801EAC70; - extern u16 D_801EAC72; - extern u16 D_801EAC74; - extern u16 D_801EAC78; - extern u16 D_801EAC7A; - extern u16 D_801EAC7C; - u16 t; - - *(u16 *)((s32)a0 + 0xDC) = D_801EAC70; - *(u16 *)((s32)a0 + 0xDE) = D_801EAC72; - *(u16 *)((s32)a0 + 0xE0) = D_801EAC74; - *(u16 *)((s32)a0 + 0xE4) = D_801EAC78; - *(u16 *)((s32)a0 + 0xE6) = D_801EAC7A; - t = D_801EAC7C; - *(u16 *)((s32)a0 + 2) = *(u16 *)((s32)a0 + 2) + 2; - *(u16 *)((s32)a0 + 0xE8) = t; -} - - -DEFINE_func_80187E28() /* dedup: shared engine-core @0x80187E28 (src/shared) */ - - - - -extern u16 D_801EAC70; -extern u16 D_801EAC72; -extern u16 D_801EAC74; -extern u16 D_801EAC78; -extern u16 D_801EAC7A; -extern u16 D_801EAC7C; - -void func_80187E3C(void *a0) { - s32 v1; - - *(u16 *)((s32)a0 + 0xFC) = D_801EAC70; - v1 = *(u16 *)((s32)a0 + 2); - *(u16 *)((s32)a0 + 0xFE) = D_801EAC72; - *(u16 *)((s32)a0 + 0x100) = D_801EAC74; - *(u16 *)((s32)a0 + 0x104) = D_801EAC78; - *(u16 *)((s32)a0 + 0x106) = D_801EAC7A; - *(u16 *)((s32)a0 + 0x108) = D_801EAC7C; - *(s32 *)((s32)a0 + 0x1C) = 0x10; - *(u16 *)((s32)a0 + 2) = v1 + 1; -} - - -extern void func_80187EE8(s32 a0); -extern s32 func_8012BEE8(s32 a0); -extern void func_8012C218(void*); -void func_80187EA8(s32 a0) { - func_80187EE8(a0); - if (func_8012BEE8(a0)) { - ((void (*)(s32))func_8012C218)(a0); - } -} - - -extern u8 D_800AF630[]; - -typedef struct { s16 vx, vy, vz, pad; } SV_80187EE8; -typedef struct { u8 r, g, b, cd; } CV_80187EE8; -typedef struct { - SV_80187EE8 v[4]; /* +0x00 : sxy0..3 (v[0].vz doubles as the otz slot) */ - CV_80187EE8 rgb[4]; /* +0x20 */ - u32 code; /* +0x30 */ - u32 pad; /* +0x34 */ -} PKT_80187EE8; - -#define gte_ldv0_80187EE8(r0) __asm__ volatile ( \ - "lwc2 $0, 0( %0 );" \ - "lwc2 $1, 4( %0 )" \ - : \ - : "r"( r0 ) ) - -#define gte_ldv3_80187EE8(r0, r1, r2) __asm__ volatile ( \ - "lwc2 $0, 0( %0 );" \ - "lwc2 $1, 4( %0 );" \ - "lwc2 $2, 0( %1 );" \ - "lwc2 $3, 4( %1 );" \ - "lwc2 $4, 0( %2 );" \ - "lwc2 $5, 4( %2 )" \ - : \ - : "r"( r0 ), "r"( r1 ), "r"( r2 ) ) - -#define gte_rtps_80187EE8() __asm__ volatile ("nop;nop;rtps") -#define gte_rtpt_80187EE8() __asm__ volatile ("nop;nop;rtpt") -#define gte_avsz4_80187EE8() __asm__ volatile ("nop;nop;avsz4") - -#define gte_stsxy_80187EE8(r0) __asm__ volatile ( \ - "swc2 $14, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "memory" ) - -#define gte_stsxy3_80187EE8(r0, r1, r2) __asm__ volatile ( \ - "swc2 $12, 0( %0 );" \ - "swc2 $13, 0( %1 );" \ - "swc2 $14, 0( %2 )" \ - : \ - : "r"( r0 ), "r"( r1 ), "r"( r2 ) \ - : "memory" ) - -#define gte_stotz_80187EE8(r0) __asm__ volatile ( \ - "swc2 $7, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "memory" ) - -#define gte_stflg_80187EE8(r0) __asm__ volatile ( \ - "cfc2 $12, $31;" \ - "nop;" \ - "sw $12, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "$12", "memory" ) - -#define gte_SetRotMatrix_80187EE8(r0) __asm__ volatile ( \ - "lw $12, 0( %0 );" \ - "lw $13, 4( %0 );" \ - "ctc2 $12, $0;" \ - "ctc2 $13, $1;" \ - "lw $12, 8( %0 );" \ - "lw $13, 12( %0 );" \ - "lw $14, 16( %0 );" \ - "ctc2 $12, $2;" \ - "ctc2 $13, $3;" \ - "ctc2 $14, $4" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) - -#define gte_SetTransMatrix_80187EE8(r0) __asm__ volatile ( \ - "lw $12, 20( %0 );" \ - "lw $13, 24( %0 );" \ - "ctc2 $12, $5;" \ - "lw $14, 28( %0 );" \ - "ctc2 $13, $6;" \ - "ctc2 $14, $7" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) - -void func_80187EE8(s32 a0) -{ - extern void func_80017714(void *); - extern short D_800B9A02; - typedef struct { s32 a; s32 b[4]; } Ot_8018B23C; - extern Ot_8018B23C D_800A651C[]; - extern u8 D_800AE610[]; - - PKT_80187EE8 pkt; /* sp+0x10 .. sp+0x47 */ - s32 flag1; /* sp+0x48 */ - s32 flag2; /* sp+0x4C */ - s32 otz; /* sp+0x50 */ - u8 *base; - s32 *m; - s16 c, p, q; - s32 d; - - c = *(s32 *)(a0 + 0x1C) * 15; - base = D_800AF630; - p = c; - d = c >> 1; - q = d; - - pkt.rgb[0].r = pkt.rgb[1].r = pkt.rgb[0].b = pkt.rgb[1].b = p; - pkt.rgb[0].g = pkt.rgb[1].g = q; - - c -= 0x10; - p = c; - if (c < 0) { - p = 0; - } - { - s16 e; /* block-scoped: one pseudo (§136/L1) */ - e = d - 0x10; - q = e; - if (e < 0) { - q = 0; - } - } - pkt.rgb[2].r = pkt.rgb[3].r = pkt.rgb[2].b = pkt.rgb[3].b = p; - pkt.rgb[2].g = pkt.rgb[3].g = q; - - pkt.code = 0x50000000; - - m = (s32 *)(base + 0x18); - gte_SetRotMatrix_80187EE8(m); - gte_SetTransMatrix_80187EE8(m); - - gte_ldv3_80187EE8((SV_80187EE8 *)(a0 + 0xFC), (SV_80187EE8 *)(a0 + 0x104), - (SV_80187EE8 *)(a0 + 0xDC)); - gte_rtpt_80187EE8(); - gte_stflg_80187EE8(&flag1); - gte_stsxy3_80187EE8(&pkt.v[0], &pkt.v[1], &pkt.v[2]); - gte_ldv0_80187EE8((SV_80187EE8 *)(a0 + 0xE4)); - gte_rtps_80187EE8(); - gte_stflg_80187EE8(&flag2); - flag1 = flag1 | flag2; - gte_stsxy_80187EE8(&pkt.v[3]); - gte_avsz4_80187EE8(); - gte_stotz_80187EE8(&otz); - - if (otz > 0 && flag1 >= 0 && - !((u32)&D_800AE610 < - (u32)(*(s32 *)((u8 *)&D_800A651C + (*(u16 *)&D_800B9A02) * 0x14) - + otz * 4)) && - (flag1 & 0xFFFFEFFF) == 0) { - pkt.v[0].vz = (s16)otz; - func_80017714(&pkt.v[0]); - } -} - - -DEFINE_func_801880F8() /* dedup: shared engine-core @0x801880F8 (src/shared) */ - - -extern void func_8012A828(s32 a0, void *a1); -extern u8 D_801E2170[]; - -void func_80188118(s32 param_1) { - *(u16 *)(param_1 + 0x5C) = 0xA800; - *(u16 *)(param_1 + 0x2) = 0x1; - func_8012A828(param_1, D_801E2170); - *(s32 *)(param_1 + 0xB4) &= -2; -} - - -void func_80188168(s32 a0) { - extern u8 D_80190468[]; - *(u8 *)(a0 + 0xC1) = 0; - *(u16 *)(a0 + 0x5C) = 0; - *(u16 *)(a0 + 0x2) = 0x11; - func_8012A828(a0, D_80190468); - *(s16 *)(a0 + 0xAE) = -1; - func_8002D4C8(0xA87, 0); - func_8002A04C(a0); - func_80182D5C(); -} - - -void func_801881CC(void *a0) { - extern void func_80131B14(); - extern void func_80131E00(); - extern s32 func_80131A34(s32 a0, s32 a1); - extern void func_80182D04(s32 a0, s32 a1, s32 a2); - extern u16 D_80190490[]; - extern s32 rand(void); - extern void func_8002D4C8(s32 a0, s32 a1); - - *(u32 *)((s32)a0 + 0xB4) = *(u32 *)((s32)a0 + 0xB4) | 1; - *(u8 *)((s32)a0 + 0xC1) = 1; - func_80131B14(); - - *(s16 *)((s32)a0 + 0xAE) = -1; - if (*(s16 *)((s32)a0 + 0x76) <= 0) { - func_80131E00(a0, 0xC); - *(s16 *)((s32)a0 + 0x76) = 0; - func_80182D04((s32)a0 + 0x76, (s32)D_80190490, 0x96); - } else { - func_80182D04((s32)a0 + 0x76, (s32)D_80190490, 0x96); - if (func_80131A34((s32)a0, 4) != 0) { - *(u8 *)((s32)a0 + 0xC2) = 0; - } - func_8002D4C8((rand() & 1) ? 0xA85 : 0xA86, 0); - } -} - - -void func_80188290(s32 arg0) { - s32 obj; - s32 rnd; - s32 i; - - for (i = 0x600; i < 0xB00; i += 0x100) { - obj = func_8012C658(0x265, 2, arg0); - if (obj != 0) { - rnd = rand() & 7; - *(s32 *)(obj + 0x10) = - -func_8004787C(*(s16 *)(arg0 + 0xFE) + i) * rnd << 4; - *(s32 *)(obj + 0x18) = - -func_80047948(*(s16 *)(arg0 + 0xFE) + i) * rnd << 4; - } - } - func_8012C218((void *)arg0); -} - - -extern void func_8012AD80(s32 a0); -extern void func_8012C218(void *a0); -extern s32 D_801EAC80; - -void func_80188350(s32 a0) { - s32 val; - - val = *(s32 *)(a0 + 0x1C) - 1; - *(s32 *)(a0 + 0x1C) = val; - if (val <= 0) { - D_801EAC80--; - func_8012C218((void *)a0); - } else { - func_8012AD80(a0); - } -} - - -extern s32 func_8012CBCC(s32 a0); - -void func_801883AC(s32 a0) { - func_8012CBCC(a0); - *(u16 *)((char *)a0 + 0xFC) -= 1; - if (*(s16 *)((char *)a0 + 0xFC) == 0) { - *(u16 *)((char *)a0 + 0x2) = 0xA; - *(u16 *)((char *)a0 + 0xFC) = 4; - *(s16 *)((char *)a0 + 0xAE) = -1; - } -} - - -extern s32 func_8012CBCC(s32 a0); -extern s32 func_8012BA10(s32 a0, s32 a1); - -void func_80188404(s32 a0) { - s16 t; - func_8012CBCC(a0); - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) += func_8012BA10(a0, 4); - t = *(u16 *)(a0 + 0xFC) - 1; - *(u16 *)(a0 + 0xFC) = t; - if (t == 0) { - *(u16 *)(a0 + 0x2) = 1; - } -} - - -DEFINE_func_80188470() /* dedup: shared engine-core @0x80188470 (src/shared) */ - -DEFINE_func_80188478() /* dedup: shared engine-core @0x80188478 (src/shared) */ - -extern u16 D_80126B66; -void func_8018858C(s32 a0) { - s32 v0 = *(s16 *)(a0 + 0x84); - if (v0 != 0) { - v0 = func_80184028(); - if (v0 == 0x18) { - *(s16 *)(a0 + 0x84) = 0; - } - } else { - s32 a1; - v0 = func_80184028(); - if (v0 == 0xF) { - *(s16 *)(a0 + 0x84) = 1; - a1 = -(s16)D_80126B66 >> 3; - if (a1 < 0) a1 = 0; - if (a1 > 0x7F) a1 = 0x7F; - func_8002D4C8(0xBAB, (u16)(a1 | 0x1000)); - } - } -} - - - -extern void (*D_801918B0[])(void); - -void func_80188634(void *a0) { - D_801918B0[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80188670() /* dedup: shared engine-core @0x80188670 (src/shared) */ - -DEFINE_func_80188828() /* dedup: shared engine-core @0x80188828 (src/shared) */ - -extern s32 func_80132EF4(s32 a0, s32 a1); - -void func_801889B4(arg0) -s32 arg0; -{ - s32 s0; - for (s0 = 0; s0 < 0x49; s0 += 0x18) { - s32 a1 = func_80132EF4(arg0, 0x22); - if (a1 == 0) - continue; - { - register s32 v0 __asm__("v0"); - register s32 v1 __asm__("v1"); - register s32 a0 __asm__("a0"); - v0 = *(u16 *)(arg0 + 0x84); - a0 = *(u16 *)(a1 + 0xE); - v0 &= 0x4; - v1 = v0 * 2; - __asm__("":"=r"(v1):"0"(v1)); - v1 = v1 + v0; - v1 = s0 + v1; - v1 = v1 - 0x2A; - v0 = *(u16 *)(a1 + 0x6); - a0 -= 0x28; - *(u16 *)(a1 + 0xE) = a0; - v0 -= v1; - *(u16 *)(a1 + 0x6) = v0; - v0 = *(u16 *)(a1 + 0xA); - v1 = v1 << 16; - v0 -= 0x20; - *(u16 *)(a1 + 0xA) = v0; - v0 = v1 >> 16; - if (v0 >= 0) { - v0 = v0 << 7; - } else { - v0 = v0 << 7; - v0 = -v0; - } - v0 += 0x1000; - *(u16 *)(a1 + 0x34) = v0; - *(s32 *)(a1 + 0x14) = 0xFFFE0000; - *(s32 *)(a1 + 0x18) = 0xFFFD0000; - } - } -} - - - -extern void func_8001CA1C(s32 a0, s32 a1); -extern s32 func_80143970(s32 a0); -extern void func_8012AD44(s32 *a0, s16 a1); -extern void func_8018A31C(s32 a0); -extern void func_80189104(void *a0); -extern void func_8018AD5C(void); -extern void func_8018AD80(s32 a0); -extern void func_8002D4C8(s32 a0, s32 a1); - -void func_80188A80(s32 a0) { - - extern u8 D_80191928[]; - register s32 obj __asm__("$16"); /* $s0 */ - register s32 self __asm__("$17") = a0; /* $s1 */ - s32 t0; - s32 t1; - s32 t2; - - obj = *(s32 *)(self + 0x20); - func_8001CA1C(obj, (s32)D_80191928); - - *(u16 *)(self + 0xA) = *(u16 *)(self + 0xA) - 0xA0; - *(u16 *)(self + 0xE) = *(u16 *)(self + 0xE) - 0x10; - *(u16 *)(obj + 0x18) = 0x2C00; - *(u16 *)(obj + 0x1A) = 0x1C00; - *(u32 *)(obj + 4) = *(u32 *)(obj + 4) | 0x1000000; - - t0 = *(s32 *)(self + 0xCC); - *(u16 *)(t0) = 0; - *(s32 *)(self + 0xCC) = func_80143970(self); - - *(s32 *)(self + 0x14) = 0xFFF80000; - *(u16 *)(self + 0x5C) = 0; - *(s32 *)(self + 0x1C) = 8; - func_8012AD44((s32 *)self, 3); - - obj = *(s32 *)(self + 0x64); - t1 = *(s32 *)(obj + 0x20); - *(u32 *)(t1 + 4) = *(u32 *)(t1 + 4) | 0x80000000; - func_8018A31C(obj); - - *(u16 *)(obj + 0x5C) = 0; - func_8012AD44((s32 *)obj, 2); - - t2 = *(s32 *)(self + 0xD0); - if (t2 != 0) { - *(u16 *)(t2 + 0x2C) = 0; - func_80189104((void *)t2); - } - - func_8018AD5C(); - func_8018AD80(self + 4); - - func_8002D4C8(0x87B, 0); -} - - -extern void func_8012A828(s32 a0, void *a1); -extern void func_8012AD44(s32 *a0, s16 a1); -extern void func_80189160(void *a0); -extern u8 D_801919F4; - -void func_80188B94(void *arg0) -{ - s32 temp_a0; - - *(s16 *)((u8 *)(*(void **)((u8 *)arg0 + 0x20)) + 0x18) = 0x2C00; - *(s16 *)((u8 *)(*(void **)((u8 *)arg0 + 0x20)) + 0x1A) = 0x3800; - func_8012A828((s32)arg0, &(*(s16 *)&D_801919F4)); - *(s16 *)((u8 *)arg0 + 0xFC) = 0; - *(s32 *)((u8 *)arg0 + 0x1C) = 0x10; - func_8012AD44((s32 *)arg0, 4); - temp_a0 = *(s32 *)((u8 *)arg0 + 0xD0); - if (temp_a0 != 0) { - func_80189160((void *)temp_a0); - } -} - - -extern void func_8012B200(u8 *a0); -extern void func_8012AD44(s32 *a0, s16 a1); -extern void func_8018918C(void*); - -void func_80188C0C(s32 a0) { - u8 *obj; - s32 sub; - - obj = (u8 *)a0; - *(s32 *)(obj + 0x1C) = 4; - func_8012B200(obj); - func_8012AD44((s32 *)obj, 5); - sub = *(s32 *)(obj + 0xD0); - if (sub != 0) { - ((void (*)(s32))func_8018918C)(sub); - } -} - - -#include "common.h" - -void func_80188C60(s32 a0) { - extern void func_80188F18(void *a0); - extern void func_8012AD44(s32 *a0, s16 a1); - extern char D_80191908[]; - register s32 self __asm__("$16") = a0; /* $s0 */ - - *(s32 *)(self + 0x58) = (s32)D_80191908; - func_80188F18((void *)self); - func_8012AD44((s32 *)self, 6); -} - - - -s32 func_80188CA0(s32 arg0) { - return *(u16*)(arg0 + 0x2) == 0x6; - } - - -extern void func_801439C0(u8 *a0); -extern void func_8012B200(u8 *a0); -extern void func_801292C8(u8 *a0); -extern u16 D_80126B5E; -extern u16 D_80126B66; -extern void func_8012AD44(s32 *a0, s16 a1); -extern void func_8002D4C8(s32 a0, s32 a1); - -void func_80188CB4(s32 a0) -{ - register s32 s0 __asm__("$16") = a0; - u8 *ptr; - s32 val1; - s32 val2; - s32 t2; - - func_801439C0(*(u8 **)(s0 + 0xCC)); - func_8012B200((u8 *)s0); - - *(s32 *)(s0 + 0x14) = 0x80000; - *(u16 *)(s0 + 6) = D_80126B5E; - *(u16 *)(s0 + 0xE) = D_80126B66; - - ptr = *(u8 **)(s0 + 0x20); - val1 = *(u16 *)(ptr + 0x18); - *(s16 *)(s0 + 0xDC) = (val1 << 16) >> 19; - - ptr = *(u8 **)(s0 + 0x20); - val2 = *(u16 *)(ptr + 0x1A); - *(s16 *)(s0 + 0xDE) = (val2 << 16) >> 19; - - func_8012AD44((s32 *)s0, 7); - - t2 = *(s32 *)(s0 + 0xD0); - if (t2 != 0) { - func_801292C8((u8 *)t2); - } - - func_8002D4C8(0x87D, 0); -} - - -extern void func_8012AD44(s32 *a0, s16 a1); - -void func_80188D64(void *arg0) { - func_8012AD44((s32 *)arg0, 8); -} - - -extern s32 func_8018473C(void); - void func_80188D84(void) { - func_8018473C(); - } - - -extern void func_8013CAE8(void); -void func_80188DA4(void) { - func_8013CAE8(); -} - - - -extern void (*D_80191B84[])(void); - -void func_80188DC4(void *a0) { - D_80191B84[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern s32 D_801EAC90; -extern s32 func_8001AAA0(s32 arg); -extern s32 func_80132EF4(s32 a0, s32 a1); -extern s32 func_80178B18(s32 param_1, s32 param_2); -extern u8 D_80191ABC[]; -extern u8 D_80191BAC[]; -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_8012AD44(s32 *a0, s16 a1); - -void func_80188E00(s32 a0) { - u32 i; - register s32 ptr __asm__("$3"); - register s32 obj __asm__("$4"); - s16 val; - register s32 val2 __asm__("$3"); - - for (i = 0; i < 8; i++) { - if (*(u16 *)(a0 + 0x5E) == D_80191BAC[i]) { - ptr = *(s32 *)(a0 + 0x64); - val = *(u16 *)(ptr + 6); - D_801EAC90 = 0; - val = val + 1; - *(u16 *)(ptr + 6) = val; - *(s32 *)(a0 + 0x1C) = 0x50; - *(u16 *)(a0 + 0x84) = 0; - *(u16 *)(a0 + 6) = *(u16 *)(a0 + 6) + 1; - func_8012AD44((s32 *)a0, 2); - - obj = func_80132EF4(a0, 0x57); - *(s32 *)(a0 + 0xD0) = obj; - if (obj != 0) { - *(u16 *)(obj + 6) = *(u16 *)(a0 + 6); - *(u16 *)(obj + 0xA) = *(u16 *)(a0 + 0xA); - val2 = *(u16 *)(a0 + 0xE); - *(s16 *)(obj + 0x2C) = -0xA0; - *(s32 *)(obj + 0x34) = a0; - *(u16 *)(obj + 0xE) = val2; - } - - func_80178B18(a0, (s32)D_80191ABC); - - - *(u8 *)(a0 + 0xC1) = 0; - *(u16 *)(a0 + 0x5C) = 0; - *(u16 *)(a0 + 0x5E) = 0; - func_8002D4C8(0x87A, 0); - func_8001AAA0(0x72); - return; - } - } - - *(u16 *)(a0 + 0x5E) = 0; - func_8002D4C8(0x426, 0); -} - - -DEFINE_func_80188F18() /* dedup: shared engine-core @0x80188F18 (src/shared) */ - - -extern void func_8012AD80(s32 a0); - -void func_80188F28(s32 a0) { - s32 v; - - func_8012AD80(a0); - v = *(s32 *)(a0 + 0x14); - if (v > 0x14000) { - *(s32 *)(a0 + 0x48) = -0x1400; - } else if (v < -0x14000) { - *(s32 *)(a0 + 0x48) = 0x1400; - } -} - - - - -void func_80188F80(void* arg0) -{ - s32 *p = *(s32 **)((s32)arg0 + 0xcc); - *(u16 *)((s32)p + 0x8) = *(u16 *)((s32)arg0 + 0x6); - *(s16 *)((s32)p + 0xa) = *(u16 *)((s32)arg0 + 0xa) - 0xe4; - *(s16 *)((s32)p + 0xc) = *(u16 *)((s32)arg0 + 0xe) - 0x8; - } - - - - -int func_80188FB4(int a0, void* a1) -{ - s16 stack_buf[8]; - register s16 *s0 __asm__("$16") = (s16 *)a1; - s16 v0; - s32 result; - s32 ret; - - v0 = s0[2]; - stack_buf[0] = v0; - v0 = s0[3]; - stack_buf[4] = v0; - v0 = s0[5]; - stack_buf[5] = v0; - stack_buf[1] = v0; - v0 = s0[6]; - stack_buf[6] = v0; - stack_buf[2] = v0; - - result = func_80189050((s32)a0, (s32)&stack_buf[0], (s32)&stack_buf[4]); - - if (result != 0) { - ret = 1; - } else { - v0 = s0[7]; - stack_buf[6] = v0; - stack_buf[2] = v0; - result = func_80189050((s32)a0, (s32)&stack_buf[0], (s32)&stack_buf[4]); - ret = (result != 0); - } - return ret; -} - - -extern s32 *D_80126B78; -extern s32 *D_80126B90; -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); - -s32 func_80189050(s32 arg0, s32 arg1, s32 arg2) -{ - extern s32 *D_80126B78; - extern s32 *D_80126B90; - struct { u16 x, y, z, w; } a; - struct { u16 x, y, z, w; } b; - - func_8012F214(arg0, arg1, &a); - func_8012F214(arg0, arg2, &b); - func_80135888((s32)D_80126B78, (s32)D_80126B90, (s32)&a, (s32)&b); -} - - -extern s32 func_8017BEBC(void); - void func_801890B8(void) { - func_8017BEBC(); - } - - -extern s32 func_8017BFA0(void); - void func_801890D8(void) { - func_8017BFA0(); - } - - -DEFINE_func_801890F8() /* dedup: shared engine-core @0x801890F8 (src/shared) */ - - -DEFINE_func_80189104() /* dedup: shared engine-core @0x80189104 (src/shared) */ - -extern u8 D_801EAC94; -extern u8 D_801EAC95; -extern u8 D_801EAC96; - -void func_80189110(void) -{ - typedef struct { unsigned char b[4]; } __attribute__((packed, aligned(1))) Block4; - - extern u8 D_801EAC94; - extern unsigned char D_801EAC95; - extern unsigned char D_801EAC96; - - unsigned char *p = (unsigned char *)&D_801EAC94; - - if (*p < 0xF8U) { - *p += 4; - D_801EAC95 += 8; - D_801EAC96 += 8; - } -} - - -extern void func_8002D4C8(s32 arg0, s32 arg1); - void func_80189160(void *a0) { - *(s16 *)((s32)a0 + 0x2) = 0x4; - func_8002D4C8(0x87C, 0); - } - - -DEFINE_func_8018918C() /* dedup: shared engine-core @0x8018918C (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH expected; param_1 survives jal in $s0, table fp-call with %lo-fold -extern void func_801891E8(); -extern void (*D_80191BD4[])(int); - -void func_8018919C(int param_1) -{ - ((void (*)(void))func_801891E8)(); - D_80191BD4[*(unsigned short *)(param_1 + 2)](param_1); -} - - -extern void func_80129350(s32 *a0, s32 a1); -extern void func_80133060(s32 *a0, s32 a1, s32 a2); - -void func_801891E8(s32 *a0) { - s32 *s0; - s32 a1; - - s0 = a0; - a1 = *(s32 *)((u8 *)s0 + 0x34); - func_80129350(s0, a1); - - a1 = (s32)((u8 *)s0 + 0x4); - *(s16 *)((u8 *)s0 + 0xA) = *(u16 *)((u8 *)s0 + 0xA) + *(u16 *)((u8 *)s0 + 0x2C); - func_80133060((s32 *)((u8 *)s0 + 0x4), a1, -0x180); -} - - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern s32 func_80029178(s32 arg); -extern void func_8001C214(s32 a0, s32 a1); -extern s32 func_8012C588(s32 a0, s32 a1); -extern s32 func_8012AD50(void *a0); -extern u8 D_801E3F20; -extern u8 D_801918A0; - -void func_80189238(s32 param_1) -{ - s32 v0; - - if ((*(s32 *)(param_1 + 0x20) = v0 = ((s32 (*)(void))func_8012C1B8)()) == 0) { - goto fail; - } - if (((s32)(u8)((s32 (*)(s32))func_80029178)(0x18)) != 0) { - goto fail; - } - func_8001C214(*(s32 *)(param_1 + 0x20), &D_801E3F20); - if (((s32 (*)(s32, void *))func_8012C588)(0x2B4, param_1) == 0) { -fail: - ((void (*)(void *))func_8012CAE4)(param_1); - } else { - *(s32 *)(param_1 + 0x58) = (s32)&D_801918A0 | 0x40000000; - *(s16 *)(param_1 + 0x5C) = 0x800; - ((s32 (*)(void *))func_8012AD50)(param_1); - } -} - - -DEFINE_func_801892D4() /* dedup: shared engine-core @0x801892D4 (src/shared) */ - -DEFINE_func_801892DC() /* dedup: shared engine-core @0x801892DC (src/shared) */ - -DEFINE_func_801892E4() /* dedup: shared engine-core @0x801892E4 (src/shared) */ - - - -extern void func_80188B94(void*); -extern int func_80178970(void); - -void func_80189310(s32 *a0) { - if (*(u16 *)((s32)a0 + 0x34) == 0) { - func_8012AD80((s32)a0); - if (func_8012BEE8((s32)a0) != 0) { - *(u16 *)((s32)a0 + 0x100) = 0x80; - *(s32 *)((s32)a0 + 0x1C) = 0x30; - (*(u16 *)((s32)a0 + 0x34))++; - func_80188F18(a0); - } - } else { - if (func_8012BEE8((s32)a0) != 0) { - ((void (*)(s32))func_80188B94)((s32)a0); - } else { - func_80188F28((s32)a0); - } - } - ((int (*)(s32))func_80178970)((s32)a0); - func_8018B128(); -} - - -extern int func_80178970(void); -extern s32 func_8012BEE8(s32 a0); -extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); - -void func_801893BC(a0) -s32 a0; -{ - if (func_8012BEE8(a0) == 0) { - if ((*(s32 *)(a0 + 0x1C) & 3) == 0) { - func_8012C658(0x2b4, 1, a0); - } - } - if (*(s16 *)(a0 + 0x98) == 0) { - func_80188C0C(a0); - } - ((s32 (*)(s32))func_80178970)(a0); -} - - -DEFINE_func_8018942C() /* dedup: shared engine-core @0x8018942C (src/shared) */ - -DEFINE_func_801894BC() /* dedup: shared engine-core @0x801894BC (src/shared) */ - - -extern int func_80178970(void); -extern void func_8012AD80(s32 a0); -extern void func_80188D64(void *arg0); - -void func_8018950C(s32 a0) { - s32 t0; - s16 val0; - - t0 = *(s32 *)(a0 + 0x20); - val0 = *(s16 *)(t0 + 0x18); - - if (val0 > 0) { - s32 temp; - s16 val; - u16 a, b; - u32 flags; - - func_8012AD80(a0); - - temp = *(s32 *)(a0 + 0x20); - a = *(u16 *)(a0 + 0xDC); - b = *(u16 *)(temp + 0x18); - *(s16 *)(temp + 0x18) = (s16)(b - a); - - temp = *(s32 *)(a0 + 0x20); - a = *(u16 *)(a0 + 0xDE); - b = *(u16 *)(temp + 0x1A); - *(s16 *)(temp + 0x1A) = (s16)(b - a); - - temp = *(s32 *)(a0 + 0x20); - val = *(s16 *)(temp + 0x18); - - if (val == 0) { - flags = *(u32 *)(temp + 0x04); - flags |= 0x80000000; - *(u32 *)(temp + 0x04) = flags; - } - } else { - func_80188D64(a0); - } - - ((void (*)(s32))func_80178970)(a0); -} - - -extern s32 func_80178970(void); -extern void func_80178D18(void); -extern void func_80029514(s32); -extern s16 D_801EAFC8; - -void func_801895BC(void *arg0) { - if (*(u16 *)((s32)arg0 + 0x34) != 0) { - return; - } - if (func_80178970() == 0) { - return; - } - if (D_801EAFC8 != 0) { - return; - } - ((void (*)(void *))func_80178D18)(arg0); - *(u16 *)((s32)arg0 + 0x34) = *(u16 *)((s32)arg0 + 0x34) + 1; - func_80029514(0x2D0); -} - - -extern void func_8012AD80(s32 a0); -extern void func_8012C218(void *a0); - -void func_80189630(void *param_1) { - (*(u16 *)((char *)param_1 + 0xFC))++; - func_8012AD80(param_1); - if (*(s16 *)((char *)param_1 + 0x98) == 0) { - func_8012C218(param_1); - } -} - - -extern Block4 D_801E94F4; -extern Block4 D_801EAC98; -extern u8 D_801EAC94; -extern void func_8001CD9C(int, void *); -extern void func_800233CC(void *, unsigned short); - -void func_80189680(a0) -s32 a0; -{ - register u8 *s0 __asm__("$16"); - register s32 *s1 __asm__("$17"); - s32 *v1; - s32 *a0_ptr; - s8 pad[32]; - - s1 = (s32 *)a0; - s0 = (u8 *)&D_801EAC94; - - - func_8001CD9C(s1[8], (s32 *)s0); - - - func_800233CC(s0, 0x80); - - - *(Block4 *)s0 = D_801E94F4; - - - D_801EAC98 = D_801E94F4; - - - v1 = s1[8]; - *(s16 *)((s8 *)v1 + 0x18) = 0x800; - - - v1 = s1[8]; - *(s16 *)((s8 *)v1 + 0x1A) = 0x1000; - - - a0_ptr = s1[8]; - *(s32 *)((s8 *)a0_ptr + 0x4) |= 0x50000000; - - - *(s16 *)((s8 *)s1 + 0x2) = 1; - - (void)pad; -} - - -extern u8 D_801EAC94; -extern u8 D_801EAC95; -extern u8 D_801EAC96; - -void func_8018973C(void) { - u8 *p = &D_801EAC94; - if (*p < 0xC0) { - *p += 4; - } - if (D_801EAC95 < 0x40) { - D_801EAC95 += 4; - } - if (D_801EAC96 < 0x40) { - D_801EAC96 += 4; - } -} - - -extern void func_80189110(void); -void func_801897A4(void) { - func_80189110(); -} - - -extern void func_80189110(void); - -void func_801897C4(s32 param_1) { - int ptr; - short sVar1; - short sVar2; - - ptr = *(int *)(param_1 + 0x20); - sVar1 = *(short *)(ptr + 0x18); - if (sVar1 < 0x5000) { - *(short *)(ptr + 0x18) = sVar1 + 0x800; - } - sVar2 = *(short *)(ptr + 0x1A); - if (sVar2 < 0x5000) { - *(short *)(ptr + 0x1A) = sVar2 + 0x800; - } - func_80189110(); -} - - - - -extern u8 D_801EAC94; -extern u8 D_801EAC95; -extern u8 D_801EAC96; - -void func_80189824(void *arg0) { - s16 *p; - u8 *q; - - p = *(s16 **)((s32)arg0 + 0x20); - if (*(s16 *)((s32)p + 0x18) > 0x800) { - *(s16 *)((s32)p + 0x18) = *(s16 *)((s32)p + 0x18) - 0x200; - } - if (*(s16 *)((s32)p + 0x1A) > 0x800) { - *(s16 *)((s32)p + 0x1A) = *(s16 *)((s32)p + 0x1A) - 0x200; - } - q = &D_801EAC94; - if (*q >= 0xC1) { - *q -= 4; - D_801EAC95 -= 8; - D_801EAC96 -= 8; - } -} - - -DEFINE_func_801898BC() /* dedup: shared engine-core @0x801898BC (src/shared) */ - - -extern void (*D_80191C0C[])(void); - -void func_80189970(void *a0) { - D_80191C0C[*(u16 *)((s32)a0 + 0x2)](); -} - - - - -s32 func_801899AC(void *a0, s32 *p) { - s32 cur = *(s32 *)((s32)a0 + 0xDC); - - if (p[0] != cur) { - p += 2; - for (;;) { - s32 t = p[0]; - if (t == 0) { - return cur; - } - p += 2; - if (t == cur) { - break; - } - } - p -= 2; - } - return p[1]; -} - - - -// @class: plumbing -// @stuck: none — MATCH expected; simple if/else, param saved in $s0 across call - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(int, int); -extern int D_80191BFC; - -void func_801899F4(int param_1) -{ - int v0; - - v0 = ((int (*)(void))func_8012C1B8)(); - *(int *)(param_1 + 0x20) = v0; - if (v0 == 0) { - ((void (*)(int))func_8012CAE4)(param_1); - } else { - func_8001C214(v0, 0); - *(int *)(param_1 + 0x58) = (int)&D_80191BFC; - *(short *)(param_1 + 0x5c) = 0x80; - *(unsigned short *)(param_1 + 2) += 1; - } -} - - - - - - -extern SV4 D_80191BEC; -extern s32 func_80029504(void); -extern s32 func_80029178(s32 arg); -extern void func_80029124(s32, s32); -extern s32 func_801899AC(void *a0, s32 *p); - -void func_80189A60(void *a0) { - if (func_80029504() == 0x2DA) { - if ((func_80029178(0x11F) & 0xFF) == 0) { - func_80029124(0x11F, 1); - *(s32 *)((s32)a0 + 0xDC) = func_801899AC(a0, (s32 *)&D_80191BEC); - } - } -} - - -extern u8 D_80078EAF; -s32 func_80189AC4(s32 arg) { - if ((func_80029178(0x18) & 0xFF) != 0) { - return 0x73; - } - if ((func_80029178(0xB9) & 0xFF) != 0) { - return 0x71; - } - if (arg >= 0x2C6) { - return 0x50; - } - if (D_80078EAF == 4) { - return 0x3C; - } - return 0xA; -} - - - -extern void (*D_801E3298[])(void); - -void func_80189B3C(void *a0) { - D_801E3298[*(u16 *)((s32)a0 + 0x2)](); -} - - - - -/* Declarations conform VERBATIM to the ones already present in - * src/ov_SC03_014/ov_SC03_014_jr_801848E4.c (lines 58, 2524, 2527, 3139, - * 3222, 3244, 3245). Type mismatches are resolved by casting AT THE USE. */ -extern s32 func_8012C354(s32 a0, s32 a1); -extern s32 func_80029178(s32 arg); -extern s32 func_801788B8(s32 arg0, s32 arg1); -extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012CAE4(void *a0); -extern void func_8012A828(s32 a0, void *a1); -/* not declared anywhere in the TU */ -extern void func_8018A224(void); - -void func_80189B78(void *a0) { - - extern s32 D_801E2FF0[]; - extern u8 D_801E2F88[]; - extern u8 D_8018B898[]; - s32 res1, res2, arr_elem; - void *ptr; - u16 idx; - s16 val; - - res1 = func_8012C354((s32)a0, (s32)D_801E2F88); - if (res1 == 0) { - return; - } - - ptr = *(void **)((s32)a0 + 0xDC); - idx = *(u16 *)((s32)ptr + 0xA); - arr_elem = D_801E2FF0[idx]; - - res1 = func_80029178(arr_elem); - - if ((res1 & 0xFF) == 0) { - res2 = func_801788B8((s32)a0, (s32)func_8018A224); - *(s32 *)((s32)a0 + 0xCC) = res2; - } else { - val = *(s16 *)((s32)a0 + 0x70); - val |= 0x4000; - *(s16 *)((s32)a0 + 0x70) = val; - } - - res2 = func_8012C658(0x8F, *(s16 *)((s32)a0 + 0x70), (s32)a0); - *(s32 *)((s32)a0 + 0x6C) = res2; - - if (res2 == 0) { - func_8012CAE4(a0); - } else { - func_8012A828((s32)a0, D_8018B898); - *(u16 *)((s32)a0 + 0x2) = 1; - } -} - - - - -s32 func_80189C4C(void *a0) { - void *p1, *p2; - u16 val; - long x; - - p1 = *(void **)(a0 + 0x20); - p2 = *(void **)(a0 + 0x6C); - val = *(u16 *)(p1 + 0x12); - p2 = *(void **)(p2 + 0x20); - val += 0x800; - val &= 0xFFF; - *(u16 *)(p2 + 0x12) = val; - x = 2; - *(u16 *)(a0 + 0x2) = x; - return x; -} - - -DEFINE_func_80189C74() /* dedup: shared engine-core @0x80189C74 (src/shared) */ - - -/* Declarations copied VERBATIM from src/ov_SC03_014/ov_SC03_014_jr_801848E4.c - * (func_80029178 @ line 58/3176, func_80029124 @ line 43/3253, - * func_80178CBC @ line 2537). The D_801E3* globals are not declared - * anywhere in the TU. */ -extern s32 func_80029178(s32 arg); -extern void func_80029124(s32 a0, s32 a1); -extern void func_80178CBC(s32 arg0, s32 arg1); - -void func_80189C7C(void *a0) { - - extern s32 D_801E31D4; - extern s32 D_801E31C0; - extern s32 D_801E31BC; - extern s32 D_801E3254; - extern s32 D_801E31E8; - extern s32 D_801E30B4[]; - extern s32 D_801E3138[]; - s32 *s0; - s32 *p; - u16 v0; - - s0 = *(s32 **)((char *)a0 + 0xDC); - v0 = *(u16 *)((char *)s0 + 0x8); - - if (!(v0 & 0x8000)) { - v0 = (func_80029178(0x1D)) & 0xFF; - - if (v0 != 0) { - u16 flags2; - D_801E31D4 = *(s32 *)((char *)s0 + 0x4); - flags2 = *(u16 *)((char *)s0 + 0x8); - - if (!(flags2 & 0x4000)) { - v0 = *(u16 *)((char *)s0 + 0xC); - D_801E31BC = 0; - D_801E31C0 = D_801E3138[v0]; - } else { - D_801E31C0 = 0; - v0 = *(u16 *)((char *)s0 + 0xC); - func_80029124(D_801E3138[v0], 1); - D_801E31BC = 2; - } - } else { - D_801E31D4 = *(s32 *)((char *)s0 + 0x0); - v0 = *(u16 *)((char *)s0 + 0xC); - D_801E31BC = 0; - D_801E31C0 = D_801E30B4[v0]; - } - - func_80178CBC((s32)a0, (s32)&D_801E31E8); - } else { - p = &D_801E3254; - *p = *(s32 *)((char *)s0 + 0x0); - func_80178CBC((s32)a0, (s32)(p - 7)); - } - - *(u16 *)(a0 + 0x2) = 4; - *(u16 *)(a0 + 0x70) |= 0x8000; -} - - - - -/* Declarations copied VERBATIM from src/ov_SC03_014/ov_SC03_014_jr_801848E4.c - * (lines 43, 45, 58, 65, 2528, 2538, 2712, 3177, 3282). - * Type mismatches resolved by casting AT THE USE (func_80178D18). */ -extern s32 func_801789AC(s32 arg0); -extern void func_80178D18(void); -extern s32 func_80029178(s32 arg); -extern void func_80029514(s32); -extern void func_80029124(s32, s32); -extern void func_80145EE8(s32 param_1); -extern void func_8012C218(void *a0); -extern s32 func_80189FCC(void); - -void func_80189DC8(void *arg0) { - - extern s32 D_801E2FF0[]; - extern void func_8002AC00(s32 arg0); /* not declared anywhere in the TU */ - s32 ptr; - - ptr = *(s32 *)((s32)arg0 + 0xDC); - - if (func_801789AC((s32)arg0) != 0) { - ((void (*)(void *))func_80178D18)(arg0); - - if ((u8)func_80029178(D_801E2FF0[*(u16 *)(ptr + 0xA)]) != 0) { - if (D_801E2FF0[*(u16 *)(ptr + 0xA)] == 0x54) { - func_80029514(0x5A); - func_80029124(0xEA, 1); - } - - if ((*(u16 *)(ptr + 0x8) & 0x4000) != 0) { - if ((u8)func_80029178(0x1D) != 0) { - func_80145EE8(0); - } - } - - if (func_80189FCC() == 1) { - func_8002AC00(0x26); - } - - *(u16 *)((s32)arg0 + 0x70) &= 0x8000; - func_8012C218(*(void **)((s32)arg0 + 0xCC)); - } - - *(u16 *)((s32)arg0 + 0x2) = 2; - } -} - - -extern void func_8012C218(void *a0); - void func_80189EE8(void *arg0) { - *(short *)((char *)arg0 + 0x2) = 2; - ((void (*)(s32 *))func_8012C218)(*(s32 **)((char *)arg0 + 0xcc)); - } - - -void func_80189F14(void *a0) { - *(short *)(*(int *)((char *)a0 + 0x6c) + 0xfe) = 1; - } - - -void func_80189F24(void *a0) { - *(short *)(*(int *)((char *)a0 + 0x6c) + 0xfe) = 2; - } - - - - -extern void func_80029124(s32, s32); - -void func_80189F34(void *a0) { - - extern s32 D_801E2FF0[]; - u16 idx = *(u16 *)(*(s32 *)(a0 + 0xDC) + 0xA); - func_80029124(D_801E2FF0[idx], 1); -} - - - -extern s32 D_80126B58; -extern void func_8014ADA8(s32 a0, s32 a1); - -void func_80189F74(void * arg0) { - s32 temp_v0; - - temp_v0 = *(s32 *)((s32)arg0 + 0xdc); - ((void (*)(s32 *, s32))func_8014ADA8)((s32 *)&D_80126B58, *(u16 *)(temp_v0 + 0xc)); -} - - -extern s16 func_80174764(void); - s32 func_80189FA8(void) { - return ((u32)(((s32 (*)(void))func_80174764)() ^ 1)) < 1; - } - - - - -extern s32 func_80029178(s32 arg); - -s32 func_80189FCC(void) { - - extern s32 D_801E2FF0[]; - s32 i; - - for (i = 0; i < 0x26; i++) { - if ((u8)func_80029178(D_801E2FF0[i]) == 0) { - return 0; - } - } - return 1; -} - - - -extern void (*D_801E32C0[])(void); - -void func_8018A030(void *a0) { - D_801E32C0[*(u16 *)((s32)a0 + 0x2)](); -} - - - - -extern s32 func_8012C354(s32 a0, s32 a1); -extern void func_8012A828(s32 a0, void *a1); - -void func_8018A06C(void *a0) { - - extern u8 D_801E2FBC[]; - extern u8 D_801E3980[]; - extern u8 D_801E3760[]; - s32 ptr; - unsigned short v1; - unsigned short v0; - - if (func_8012C354((s32)a0, (s32)D_801E2FBC) == 0) { - return; - } - - ptr = *(s32 *)((s32)a0 + 0x64); - v1 = *(unsigned short *)(ptr + 0x36); - v0 = *(unsigned short *)((s32)a0 + 0x70); - *(unsigned short *)((s32)a0 + 0xFC) = v1; - - if (v0 & 0x4000) { - func_8012A828((s32)a0, D_801E3980); - *(unsigned short *)((s32)a0 + 0x5C) = 0; - } else { - func_8012A828((s32)a0, D_801E3760); - } - - *(unsigned short *)((s32)a0 + 0x2) = 1; -} - - - - -extern void func_8012C218(void *a0); -extern void func_8012A828(s32 a0, void *a1); -extern void func_8002D4C8(s32 a0, s32 a1); - -void func_8018A0F4(void *a0) { - - extern u8 D_801E3770[]; - extern u8 D_801E3878[]; - s16 mode; - - if (*(s16 *)((s32)a0 + 0xFC) != *(s16 *)(*(s32 *)((s32)a0 + 0x64) + 0x36)) { - ((void (*)(void))func_8012C218)(); - return; - } - - mode = *(s16 *)((s32)a0 + 0xFE); - if (mode == 1) { - *(s16 *)((s32)a0 + 0x2) = 2; - *(s32 *)((s32)a0 + 0x1C) = 0x20; - func_8012A828((s32)a0, D_801E3770); - *(s16 *)((s32)a0 + 0x5C) = 0; - func_8002D4C8(0x5BF, 0); - } else if (mode == 2) { - *(s16 *)((s32)a0 + 0x2) = 2; - *(s32 *)((s32)a0 + 0x1C) = 0x20; - func_8012A828((s32)a0, D_801E3878); - *(u16 *)((s32)a0 + 0x5C) = 0x8C00; - } -} - - - -/* func_8018A1B4 — guarded state-kick: if the s16 at 0x98 is clear, set the - * state word at 0x02 to 1, hand the entity to func_8012A828 with one of two - * script tables selected by the s16 flag at 0xFE (== 1 -> D_801E3980, else - * D_801E3760), then clear that flag. - * - * §71 sibling-first: func_8018A06C (same TU, 0x148 bytes earlier) is the same - * two-arm `func_8012A828(entity, D_801E3980 / D_801E3760)` selector and pins - * the widths: `lh` at 0x98/0xFE, `sh` at 0x02. - */ - -DEFINE_func_8018A1B4() /* dedup: shared engine-core @0x8018A1B4 (src/shared) */ - - -extern s32 *D_80126B78; -extern u8 D_801E32B0[]; -extern s32 func_8012BDBC(s32 a0, s32 a1); -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80172710(void); -extern s32 func_80178BF8(); -#define gte_SetRotMatrix(r0) __asm__ volatile ( \ - "lw $12, 0( %0 );" \ - "lw $13, 4( %0 );" \ - "ctc2 $12, $0;" \ - "ctc2 $13, $1;" \ - "lw $12, 8( %0 );" \ - "lw $13, 12( %0 );" \ - "lw $14, 16( %0 );" \ - "ctc2 $12, $2;" \ - "ctc2 $13, $3;" \ - "ctc2 $14, $4" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_SetTransMatrix(r0) __asm__ volatile ( \ - "lw $12, 20( %0 );" \ - "lw $13, 24( %0 );" \ - "ctc2 $12, $5;" \ - "lw $14, 28( %0 );" \ - "ctc2 $13, $6;" \ - "ctc2 $14, $7" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) - -s32 aF8018A224() __asm__("func_8018A224"); - -s32 aF8018A224(param_1) - void *param_1; -{ - s32 *m; - s32 obj; - s32 sv0[2]; - s32 sv1[2]; - s32 flag; - - m = (s32 *)((u8 *)D_80126B78 + 0x34); - obj = *(s32 *)((s32)param_1 + 0x64); - - gte_SetRotMatrix(m); - gte_SetTransMatrix(m); - - RotTransSV(D_801E32B0, sv0, &flag); - RotTransSV(D_801E32B0 + 8, sv1, &flag); - - if (func_80135888(*(s32 *)(obj + 0x20), *(s32 *)(obj + 0x58), (s32)sv0, (s32)sv1) == 0) { - return 0; - } - if (func_8012BDBC(obj, 0x300) == 0) { - return 0; - } - *(s16 *)(obj + 0x2) = 3; - func_80178BF8(); - return (s32)func_80172710; -} - - - - -typedef struct { s16 x; u16 y; u16 z; s16 w; } Rec8_8018A31C; -void func_8018A31C(s32 a0) { - extern Rec8_8018A31C D_801E3990[]; - s32 i = 0; - if (D_801E3990[0].x != 0) { - do { - func_8012C658(0x10D, i, a0); - i++; - } while (D_801E3990[i].x != 0); - } -} - - - -/* func_8018A390 — allocates a GTE-projection slot, seeds a random spread - * vector from a per-index table, rotates it by the model's Y angle, applies - * it to the object's matrix, adds it to the object's position, and seeds - * three random spin fields. MATCH (136/136 ins), match_one standalone. - * - * Declarations: func_8012B23C / func_8012AD50 / D_801E3990 / D_801E3A18 are - * NOT declared anywhere else in this TU (whole-TU grep, D2) so they're fresh - * here; func_8012C1B8 / func_8012CAE4 / func_8001C214 / ApplyMatrixSV ARE - * already file-scope in the TU (L163, L3160-3162) with these EXACT - * signatures, so re-declaring them identically merges silently (D3). - * - * §48 STRUCT ASSIGN: `m = D_800AE620;` on the 32-byte, 4-aligned matrix - * routes move_by_pieces to the plain lw/lw/lw+sw/sw/sw grouping (no lwl/lwr). - * - * §48-C2: `sv = D_801E3990[idx];` on the 8-byte, 2-aligned (u16 x,y,z; s16 w) - * record struct falls through move_by_pieces' align>=4 test and emits the - * lwl/lwr+swl/swr unaligned block-move pair instead — matches the target's - * four unaligned loads/stores exactly. - * - * REGALLOC LEVER (new, byte-verified this session — candidate for the - * cookbook): a redundant `void *s1 = a0;` local (never reassigned, used only - * as an alias for the parameter) made gcc-2.7.2 split the parameter pseudo - * into TWO allocnos — one for its pre-call uses (landing in $s0) and a - * SEPARATE one (bridged by an extra `move`) for its post-call/cross-branch - * uses (landing in $s1) — even though the target uses ONE register ($s1) - * uniformly from the second prologue instruction on. Referencing the - * parameter `a0` directly everywhere (no alias local) collapses this back to - * a single allocno and fixed 6 of the 11 mismatches outright. - * - * The remaining 5 (an `addu $a0,$v0,zero` copy scheduled too EARLY, and the - * alloc-check branch/store testing `$a0` instead of `$v0` directly) were a - * v0-pseudo/call-arg-copy coalescing difference: gcc folded the store, the - * branch test, AND the func_8012C1B8 return value into one $a0-homed pseudo. - * Folding the store and the compare into ONE C expression — - * `if ((*(s32*)(a0+0x20) = v0 = func_8012C1B8()) == 0)` — instead of two - * separate statements (assign-then-test) made cc1 keep the store/test on the - * call's native $v0 and defer the $a0 copy to just before its actual - * consumer (func_8001C214), matching the target's schedule exactly. No - * register pins, no permuter, no zero-byte asm barriers needed for either - * residual — both C-lever-closeable (§136-class local-variable/expression- - * shape levers). - */ -void func_8018A390(void *a0) -{ - /* 32B, align 4 */ - /* 8B, align 2 */ - - extern Mat32_8018A390_8018A390 D_800AE620; - extern Rec8_8018A390_8018A390 D_801E3990[]; - extern s32 D_801E3A18[]; - - extern void func_8012C1B8(void); - extern void func_8012CAE4(void *a0); - extern void func_8001C214(s32 a0, s32 a1); - extern void RotMatrixY(s32 a0, void *a1); - extern void ApplyMatrixSV(void *a0, void *a1, void *a2); - extern void func_8012B23C(s32 a0); - extern s32 func_8012AD50(void *a0); - extern s32 rand(void); - - Mat32_8018A390_8018A390 m; /* sp+0x10 */ - Rec8_8018A390_8018A390 sv; /* sp+0x30 */ - void *mp; - void *svp; - s32 v0; - s16 w; - - m = D_800AE620; - sv = D_801E3990[*(s16 *)((s32)a0 + 0x70)]; - - mp = &m; - svp = &sv; - - if ((*(s32 *)((s32)a0 + 0x20) = v0 = ((s32 (*)(void))func_8012C1B8)()) == 0) { - func_8012CAE4(a0); - return; - } - - w = sv.w; - func_8001C214(v0, D_801E3A18[w]); - - RotMatrixY(*(s16 *)(*(s32 *)(*(s32 *)((s32)a0 + 0x64) + 0x20) + 0x12), mp); - - ApplyMatrixSV(mp, svp, svp); - - *(u16 *)((s32)a0 + 0x6) += sv.x; - *(u16 *)((s32)a0 + 0xA) += sv.y; - *(u16 *)((s32)a0 + 0xE) += sv.z; - func_8012B23C((s32)a0); - - *(s16 *)((s32)a0 + 0x12) = (s16)sv.x >> 3; - *(s16 *)((s32)a0 + 0x16) = (s16)sv.y >> 3; - *(s16 *)((s32)a0 + 0x1A) = (s16)sv.z >> 3; - - *(s16 *)((s32)a0 + 0xFC) = (s16)((rand() & 0x7FF) - 0x400) >> w; - *(s16 *)((s32)a0 + 0xFE) = (s16)((rand() & 0x7FF) - 0x400) >> w; - *(s16 *)((s32)a0 + 0x100) = (s16)((rand() & 0x7FF) - 0x400) >> w; - - func_8012AD50(a0); -} - - - -extern void (*D_801E3A24[])(void); - -void func_8018A5B0(void *a0) { - D_801E3A24[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern void func_8012AD80(s32 a0); -extern void func_8012C218(void *a0); - -void func_8018A5EC(s32 a0) { - u8 *s0; - s16 val1; - s16 val2; - - func_8012AD80(a0); - s0 = (u8 *)a0; - - *(u16 *)(*(u32 *)(s0 + 0x20) + 0x10) += *(u16 *)(s0 + 0xFC); - *(u16 *)(*(u32 *)(s0 + 0x20) + 0x12) += *(u16 *)(s0 + 0xFE); - *(u16 *)(*(u32 *)(s0 + 0x20) + 0x14) += *(u16 *)(s0 + 0x100); - - val1 = *(s16 *)(*(s32 *)(s0 + 0x64) + 0x0A); - val2 = *(s16 *)(s0 + 0x0A); - - if (val2 > val1) { - func_8012C218((void *)a0); - } -} - - -void func_8018A680(void) { - - extern s16 D_801EADEC; - s16 *p = &D_801EADEC; - s32 i = 0xF; - do { - *p = 0; - p = (s16 *)((s32)p + 0xe); - i--; - } while (i >= 0); -} - - - -/* func_8018A6A4 — cookbook §71 (sibling-first). - * func_8018A744 is ALREADY MATCHED in the same TU - * (src/ov_SC03_014/ov_SC03_014_jr_8017EB7C.c L4221) as a 3-arg - * `void func_8018A744(s32, s32, s32)`, so the untouched $a3 at the first - * jal is just the incoming arg3 living on, not a 4th argument. - * func_8018A860 (asm, same TU) reads its 2nd arg as lhu+0 / lhu+2 / lh+4 / - * lh+6 => the sp+0x10 local is a 4 x s16 record. - * - * Two levers took it 32 -> 2 -> 0 (match_one MATCH, rtu_match MATCH): - * 1. LENGTH-DRIFT (-2, cookbook §78): writing `sp10.unk2 = i * 0x100` - * leaves gcc-2.7.2 recomputing `sll v0,s1,8` instead of building the - * strength-reduced giv, so only s0..s3 get saved and the frame is two - * instructions short. An EXPLICIT accumulator (`ang += 0x100`) forces - * the second callee-saved register ($s2) and restores sw/lw $s4. - * 2. REGALLOC-PERM $s1>$s2 (cookbook §3-T2, source order drives emission): - * `ang = 0;` on its own line before the loop emits the $s2 zero-init - * FIRST. Folding it into the for-init (`for (i = 0, ang = 0; ...)`) - * puts $s1's zero-init first, which is the target order. - */ - - -extern void func_8018A744(s32 arg0, s32 arg1, s32 arg2); -extern void func_8018A860(s32 arg0, Rec_8018A6A4_8018A6A4 *arg1, s32 arg2, s32 arg3); - -void func_8018A6A4(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { - Rec_8018A6A4_8018A6A4 sp10; - s32 i; - s32 ang; - - func_8018A744(arg0, 0x1000, 0); - sp10.unk0 = *(u16 *)(arg3 + 0x0); - sp10.unk4 = *(u16 *)(arg3 + 0x2); - sp10.unk6 = 1; - for (i = 0, ang = 0; i < 16; i++) { - sp10.unk2 = ang; - func_8018A860(i, &sp10, arg1, arg2); - ang += 0x100; - } -} - - - - extern s16 D_801EADE6; - extern s16 D_801EADE8; - extern s16 D_801EADEA; - void func_8018A744(s32 arg0, s32 arg1, s32 arg2) { - /* [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 s16 D_801EADE4; - D_801EADE4 = *(u16 *)((s32)arg0 + 0x0); - D_801EADE6 = *(u16 *)((s32)arg0 + 0x2); - D_801EADE8 = arg1; - D_801EADEA = arg2; - } - - - - -extern void func_80015978(s32 a0, s32 *a1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); - -void func_8018A774(s32 a0) { - - extern s16 D_801EADE4; - extern s16 D_801EADE6; - /* [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 u8 D_800AF648; - u16 sxy[2]; - s32 pv[4]; - - func_80015978(a0, pv); - func_8004914C(&D_800AF648); - func_800491AC(&D_800AF648); - RotTransPers((s32)pv, (s32)sxy, &pv[2], &pv[3]); - - D_801EADE4 = sxy[0]; - D_801EADE6 = sxy[1]; -} - - - -extern s16 D_801EADEA; - void func_8018A7EC(s32 arg0) { - *(s16 *)((s32)&D_801EADEA + 0x0) += arg0; - } - - - -s32 func_8018A934(void); -extern void func_8018A860(s32 arg0, Rec_8018A6A4_8018A6A4 *arg1, s32 arg2, s32 arg3); - -void func_8018A808(s32 a0, s32 a1, s32 a2) { - s32 v0 = func_8018A934(); - if (v0 >= 0) { - func_8018A860(v0, (Rec_8018A6A4_8018A6A4 *)a0, a1, a2); - } -} - - - -/* func_8018A860 — SPLICE RECONCILE (bytes unchanged from the s6h draft). - * - * THREE in-TU collisions, all fixed without touching an emitted instruction - * (src/ov_SC03_014/ov_SC03_014_jr_801848E4.c): - * - * (1) memcpy — cookbook §2959 / the sibling note at TU L3742. The TU declares - * memcpy THREE times: L81 + L1518 with the builtin-compatible signature - * (void*, const void*, unsigned) and then L1524 as - * `extern void *memcpy(void *dst, void *src, s32 n);`. L1524 disagrees with - * gcc's built-in, so duplicate_decls "throws away the built-in" (warning only, - * because the old decl was still DECL_BUILT_IN) and installs a PLAIN function - * decl. Two consequences at the splice point (L3635): - * a. my own builtin-shaped redeclaration now conflicts with a plain decl — - * hard error ("conflicting types for `memcpy'", :3637 vs :1524); - * b. even if it compiled, the identifier `memcpy` is no longer a builtin - * here, so both copies would lower to `jal memcpy` — but the TARGET - * bytes are the INLINE block move (lwl 3 / lwr 0 / swl / swr, no jal). - * Fix = do not name memcpy at all: a 4-byte STRUCT ASSIGN through an - * ALIGN-1 struct (u8 x4). That is exactly the sibling func_8018ADA8 lever - * in this same TU (TU L3736-3744, cookbook §48-C2): align 1 routes - * mips.c expand_block_move, which copy_addr_to_reg's the source into one - * held register -> the identical lwl/lwr + swl/swr pair, zero memcpy ref. - * The typedef is BLOCK-scoped so it cannot collide with the TU's own - * block-scoped `V4` at L3758. - * - * (2) func_8018A860 itself — the TU prototypes it at L3570 as - * `extern void func_8018A860(s32, Rec_8018A6A4 *, s32, s32);` (used by the - * matched caller func_8018A6A4 at L3583). Rec_8018A6A4 is a TU-local - * typedef I cannot restate (C89 forbids the redefinition), and the last two - * args are really pointers, so defining the name directly is "conflicting - * types". Fix = §37/§124 ASM-LABEL ALIAS: define aF8018A860 with an - * __asm__("func_8018A860") label. Emits the identical symbol, leaves the - * TU's declaration untouched, zero blast radius, zero byte change. - * - * (3) D_801EADEC / rand — declared VERBATIM as the TU already has them - * (D_801EADEC: TU L3637 + L3671; rand: TU L951), so both are exact - * re-declarations and merge silently. - */ -extern s32 rand(void); /* TU L951, verbatim */ - -void aF8018A860(s32 a0, s16 *a1, u8 *a2, u8 *a3) __asm__("func_8018A860"); - -void aF8018A860(s32 a0, s16 *a1, u8 *a2, u8 *a3) -{ - - extern s16 D_801EADEC; /* TU L3637 / L3671, verbatim */ - /* align 1 — §48-C2 */ - s16 *s1; - u16 temp_u16; - s16 temp_s16; - s32 temp_s32, v0; - - s1 = (s16 *)((a0 * 14) + (s32)&D_801EADEC); - - *(u16 *)s1 = *(u16 *)a1; - - *(B4_8018A860 *)((u8 *)s1 + 6) = *(B4_8018A860 *)a2; - *(u8 *)((u8 *)s1 + 9) = 0; - - *(B4_8018A860 *)((u8 *)s1 + 10) = *(B4_8018A860 *)a3; - *(u8 *)((u8 *)s1 + 13) = 0; - - v0 = rand() & 0x3f; - temp_u16 = *(u16 *)((u8 *)a1 + 2); - *(u16 *)((u8 *)s1 + 2) = temp_u16 + v0 - 0x20; - - v0 = rand() & 0x7f0; - temp_s16 = *(s16 *)((u8 *)a1 + 4); - temp_s32 = temp_s16 * (v0 + 0xc00); - v0 = (s32)(temp_s32 >> 12); - *(s16 *)((u8 *)s1 + 4) = (s16)v0; - - v0 = *(s16 *)((u8 *)a1 + 6); - if (v0 != 0) { - u16 v1 = *(u16 *)((u8 *)s1 + 4); - *(u8 *)((u8 *)s1 + 9) = 1; - *(u16 *)((u8 *)s1 + 4) = 0; - *(u8 *)((u8 *)s1 + 13) = (u8)v1; - } -} - - - - -s32 func_8018A934(void) { - - extern s16 D_801EADEC; - s32 i = 0; - s32 offset = 0; - - while (i < 0x10) { - u16 val = *(u16*)((u8*)&D_801EADEC + offset); - if (val == 0) { - return i; - } - i++; - offset += 0xE; - } - return -1; -} - - - - - -void func_8018A970(s32 a0, s32 a1) { - - extern s16 D_801EADEC; - s16 *s1; - u16 val; - - if (a0 >= 0x10) return; - - s1 = (s16 *)((a0 * 14) + (s32)&D_801EADEC); - val = *(u16 *)s1; - - if (val == 0) return; - - if (a1 == 0) { - *(u16 *)s1 = 0; - } else { - *(u8 *)((u8 *)s1 + 9) = 2; - } -} - - - -/* func_8018A9BC — 16-entry table walk, stride 0xE, over D_801EADEC. - * §71 sibling: func_8018A680 (same TU, L4199) already matched the - * `extern s16 D_801EADEC; s16 *p = &D_801EADEC; p = (s16*)((s32)p+0xe)` - * shape over the very same array — copy that walker verbatim. - * - * Two induction registers in the target ($s1 = base+0, $s0 = base+4) are NOT - * two source pointers: $s1 is the user pointer (the biv, used for the +0 - * accesses) and $s0 is loop.c's single COMBINED address giv for the - * {+4, +9, +13} group (offsets 0/5/9 off $s0). Declaring a second pointer - * splits that group and costs a third register (iter 1: 53 mismatches). - */ - -extern void func_8018AA98(s32 arg0); - -void func_8018A9BC(void) { - - extern s16 D_801EADEC; - s16 *p = &D_801EADEC; - s32 i = 0; - s16 t; - - do { - if (*(u16 *)p != 0) { - func_8018AA98(i); - switch (*(u8 *)((s32)p + 9)) { - case 1: - if (*(s16 *)((s32)p + 4) < *(u8 *)((s32)p + 13)) { - *(s16 *)((s32)p + 4) = *(s16 *)((s32)p + 4) + 8; - } else { - *(u8 *)((s32)p + 9) = 0; - } - break; - case 2: - t = *(s16 *)((s32)p + 4); - if (t != 0) { - t -= 0x10; - *(s16 *)((s32)p + 4) = t; - if (t > 0) { - break; - } - } - *p = 0; - break; - } - } - i++; - p = (s16 *)((s32)p + 0xe); - } while (i < 0x10); -} - - - -/* func_8018AA98 — draws one entry of the 16-slot D_801EADEC particle table: - * bump-allocates a 0x1C-byte GPU packet out of D_800A5E60, fills it from the - * table entry, runs two RotMatrixZ/ApplyMatrixSV passes to place the two - * endpoints, then link-ins the packet into the current double-buffer's OT - * (the PSY-Q `addPrim` macro pair) and calls func_80016638. - * - * STATUS: byte-MATCH, 177/177 instructions (match_one standalone AND spliced - * into the real TU — the in-TU compile adds ZERO new cc1 diagnostics over the - * unmodified TU baseline). - * - * --------------------------------------------------------------------------- - * LEVERS (each byte-checked against asm/.../func_8018AA98.s) - * - * §48 STRUCT ASSIGN, not a hand-rolled temp copy. `m = D_800AE620;` on a - * 32-byte aggregate routes expr.c move_by_pieces, which emits the exact - * lw/lw/lw + sw/sw/sw (x2) + lw/lw + sw/sw grouping AND picks the - * target's registers ($a2 = source address, $v0/$v1/$a1 = carriers), and - * keeps the arg0*14 allocator chain OUT of the copy. The manual - * three-temp form (DEFINE_func_8012B4B8, engine_core.h L29487) emits the - * same instruction MIX but a different allocation (+60 mismatches). - * - * §21/T6 The double-buffer index D_800B9A02 is read at ALL THREE use sites - * (three `lhu`s off ONE materialised `la`). A PLAIN read is CSEd down to - * two AND keeps -G0 symbol addressing (lui+lhu per read, +1 insn); a - * POINTER local gives the `la` but lets cse fold the third read. The - * `volatile u16 *` pointer local reproduces BOTH properties and leaves - * the TU's own `extern s16 D_800B9A02;` untouched. - * - * T6 The OT base is bound to an s32 local (`ot`) so the tag read/write keep - * the `0x40($v1)` displacement form instead of folding into the pointer. - * - * L4 `mp`, a pointer local bound to &m, is what puts the matrix address in a - * callee-saved register ($s2) and turns each argument setup into a move; - * passing the array directly re-materialises `addiu $aN,$sp,0x10` at - * every call site and drops $s6 from the frame entirely. - * - * S1 `t = *(u16 *)ent;` is hoisted ABOVE the two `sh $zero` stores — the - * sp-relative stores are not disambiguated from the $s0-based load, so - * only SOURCE ORDER moves it (4 mismatches). - * - * T-form `u16 bx/by` (not s32) is what makes `addu $v0,$s3,$v0` come out with - * the accumulator first; through s32 locals combine canonicalises the - * zero_extend into operand 0 and both adds emit reversed. - * - * §83c-inverse FRAME: 0x70 = 16 args + 56 declared vars + 32 saved regs + an - * 8-byte COMPILER TEMP that gcc allocates for the two `symbol+register` - * memory references (both D_800A651C). So the DECLARED locals must total - * 56, not 60: m(32)@0x10, sv(8)@0x30, out(8)@0x38, v(8)@0x40 — the third - * word of the vector handed to func_8004901C (sp+0x48) lands INSIDE that - * compiler temp. `s32 v[3]` gives a 0x78 frame and 19 extra mismatches. - * Do NOT invent a dead local to reach the frame size. - * - * --------------------------------------------------------------------------- - * THE TWO RESIDUAL CLUSTERS AND WHAT ACTUALLY CLOSED THEM - * (both are gcc-2.7.2-map/sched.md §1 rule 7 "BIRTHING BOOST" + rule 5(b) - * "potential hazard"; diagnosed from the cc1 `-dS` ready-list trace, which - * names the decision verbatim: `;; insn 245 has a greater potential hazard`.) - * - * (a) The three symbol loads before the first RotMatrixZ came out E4,EA,E6 - * instead of EA,E4,E6. `lh $a0,D_801EADEA` is a single-set SET(REG,…) — - * the sched1 birthing boost sinks it to just before its consumer (the - * jal), i.e. one slot too late. Statement order CANNOT fix this: written - * as a plain local the load is combined into the call's arg setup, so its - * LUID is the call's either way (verified: two source orders, identical - * bytes). `register s32 ang __asm__("$4")` keeps the load a separate insn - * AT its source position — zero extra instructions, +0 bytes. - * - * (b) The tail's `lw $v1,0($s1)` (`*(u32 *)p`) belongs in the load-delay slot - * of `lhu $a0,0($a2)`; ours landed 7 insns later with `lui $a0,0xff00` - * taking the slot. sched1 trace: at T-27 the ready list is - * `247 (7f000001) 245 (7f000001)` — BOTH boosted — and the tie goes to the - * LOAD via `potential_hazard` (memory-unit users beat ALU insns), so the - * load is picked first = placed LAST. TWO edits are needed and neither - * works alone: - * 1. KILL the boost on the load's destination — `pv` gets a second SET - * from a zero-byte dead `__asm__ __volatile__("" : "=r"(pv));` at the - * end of the function (sched.md S2: a plain C reassignment does not - * work, cse/flow removes it; reusing one local across BOTH addPrim - * halves does kill the boost but makes `pv` a 2-death GLOBAL allocno - * that loses $v1, §136). With the boost dead, sched1 emits the - * target order exactly (proved with -fno-schedule-insns2). - * 2. PIN `pv` to $v1 (`register u32 pv __asm__("$3")`). Without it, - * local-alloc gives $v1 to the shorter, denser index quantity and - * `pv` lands in $a1/$t0; sched2 then re-applies rule 5(b) and undoes - * sched1's order. With `pv` in $v1 the index is pushed to $a0, the - * 0xFF000000 constant reuses $a0, and its output-dependence on the - * index's `sll/addu` FREEZES it after them — which is precisely the - * target's shape, and what makes sched2 leave sched1's order alone. - * - * Pin-trim log (all re-scored): dropping the $a2 `bidx` pin — MATCH; - * dropping the $a3 0xFFFFFF pin — MATCH; dropping `ang` — 4 mismatches - * (a dead-volatile boost-kill on `ang` does NOT substitute); dropping - * `pv` — 11; dropping the dead `pv` asm — 11. Two pins are the minimum - * found. - * - * --------------------------------------------------------------------------- - * DECLARATIONS: ApplyMatrixSV, D_800B9A02 and D_801EADE4/E6/EA/EC are declared - * VERBATIM as the TU already has them at file scope (L163, L2460/2462, - * L3689/3705/3706, L3726, L3879), so they merge silently. D_800AE620, - * D_800A5E60, D_800A651C, D_800A6518, D_801EADE8, RotMatrixZ, func_8004901C and - * func_80016638 have NO file-scope declaration anywhere in the TU and none in - * include/ (checked in one pass, D2), so each is block-scoped here to keep the - * blast radius on the rest of the TU at zero (§103/T51). Verified by splicing - * this body over the INCLUDE_ASM at TU L3917 and compiling the whole TU: same - * 7 stderr lines as the untouched TU, and func_8018AA98 is byte-identical. - */ - -void func_8018AA98(s32 arg0) -{ - /* 32 bytes, align 4 */ - - extern Blk32_8018AA98_8018AA98 D_800AE620; - extern s32 D_800A5E60; - extern s32 D_800A651C; - extern u8 D_800A6518[]; - extern s16 D_801EADE4; - extern s16 D_801EADE6; - extern s16 D_801EADE8; - extern s16 D_801EADEC; - extern void RotMatrixZ(s32 a0, void *a1); - extern void ApplyMatrixSV(void *a0, void *a1, void *a2); - extern void func_8004901C(void *a0, void *a1); - extern void func_80016638(void *a0, s32 a1, s32 a2); - - Blk32_8018AA98_8018AA98 m; /* sp+0x10 */ - s16 sv[4]; /* sp+0x30 */ - s16 out[4]; /* sp+0x38 */ - s32 v[2]; /* sp+0x40 — 3rd word lives in the temp area */ - void *mp; - u8 *p; - u8 *ent; - s32 ot; - u16 bx; - u16 by; - register s32 ang __asm__("$4"); /* §17 pin — see residual (a) */ - volatile u16 *bidx; - s32 t; - register u32 pv __asm__("$3"); /* §17 pin — see residual (b) */ - - m = D_800AE620; - mp = &m; - - ent = (u8 *)((arg0 * 14) + (s32)&D_801EADEC); - p = (u8 *)D_800A5E60; - D_800A5E60 = (s32)p + 0x1C; - - p[3] = 6; - p[7] = 0x32; - p[4] = ent[6]; - p[5] = ent[7]; - p[6] = ent[8]; - p[0xC] = ent[0xA]; - p[0xD] = ent[0xB]; - p[0xE] = ent[0xC]; - p[0x14] = ent[0xA]; - p[0x15] = ent[0xB]; - p[0x16] = ent[0xC]; - - ang = D_801EADEA; - bx = (u16)D_801EADE4; - by = (u16)D_801EADE6; - RotMatrixZ(ang, mp); - - *(s32 *)((u8 *)v + 8) = D_801EADE8; - v[1] = *(s32 *)((u8 *)v + 8); - v[0] = v[1]; - func_8004901C(mp, v); - - t = *(u16 *)ent; - sv[2] = 0; - sv[1] = 0; - sv[0] = t; - *(s16 *)(p + 8) = bx; - *(s16 *)(p + 0xA) = by; - - RotMatrixZ(*(s16 *)(ent + 2) - (((s32)*(u16 *)(ent + 4) << 16) >> 17), mp); - ApplyMatrixSV(mp, sv, out); - *(s16 *)(p + 0x10) = bx + (u16)out[0]; - *(s16 *)(p + 0x12) = by + (u16)out[1]; - - RotMatrixZ(*(s16 *)(ent + 4), mp); - ApplyMatrixSV(mp, sv, out); - bx += (u16)out[0]; - *(s16 *)(p + 0x18) = bx; - by += (u16)out[1]; - *(s16 *)(p + 0x1A) = by; - - /* addPrim(otp, p) == setaddr(p, getaddr(otp)), setaddr(otp, p) */ - bidx = (volatile u16 *)&D_800B9A02; - pv = *(u32 *)p; - *(u32 *)p = (pv & 0xFF000000) | - (*(u32 *)(*(s32 *)((u8 *)&D_800A651C + - (*bidx * 20)) + 0x40) & 0xFFFFFF); - ot = *(s32 *)((u8 *)&D_800A651C + (*bidx * 20)); - *(u32 *)(ot + 0x40) = (*(u32 *)(ot + 0x40) & 0xFF000000) | ((u32)p & 0xFFFFFF); - func_80016638(&D_800A6518[*bidx * 20], 0x10, 1); - __asm__ __volatile__("" : "=r"(pv)); /* zero-byte 2nd SET: kills the sched1 birthing boost */ -} - - -void func_8018AD5C(void) { - - extern s16 D_801EACE4; - s16 *p = &D_801EACE4; - s32 i = 0xF; - do { - *p = 0; - p = (s16 *)((s32)p + 0x10); - i--; - } while (i >= 0); -} - - - - -extern void func_80015978(s32 a0, s32 *a1); -extern void func_8018ADA8(s32 a0); - -void func_8018AD80(s32 a0) { - s32 pv[2]; - func_80015978(a0, pv); - func_8018ADA8((s32)pv); -} - - - -/* func_8018ADA8 — §71 sibling of func_8018A774 / func_8018AF0C (same TU): the - * RotTransPers wrapper family. Here the SVECTOR comes in as the parameter - * instead of being produced by func_80015978, so pv[0..1] is free and carries - * the 4-byte word copied out of D_801E94F8 instead. - * - * Frame proof (0x38 = 0x10 outgoing + 0x18 var + 0x10 saved s0/s1/ra): - * sp+0x10 u16 sxy[4] (8 bytes) -> RotTransPers a1, func_8018AE30 arg0 - * sp+0x18 s32 pv[4] (16 bytes) -> pv[0] = copy dest, &pv[2]/&pv[3] = 0x20/0x24 - * - * The lwl 0x3 / lwr 0x0 / swl 0x1B / swr 0x18 block move: a 4-byte struct assign - * whose type has ALIGNMENT 1 (cookbook §48-C2). Align 1 (not 2) is load-bearing — - * it is what pushes the copy off the move_by_pieces path (which keeps the SYMBOL - * in the address and emits a fresh `lui $at,%hi` per reference) onto mips.c - * expand_block_move, which copy_addr_to_reg's the source address into ONE held - * register first -> `lui $a1,%hi; addiu $a1,$a1,%lo; lwl 3($a1); lwr 0($a1)`. - * A {u16,u16} (align 2) struct compiles to the same opcode sequence but with the - * folded-symbol addressing: 4 mismatches. Struct assign, NOT memcpy (memcpy - * byte-matches in isolation but lowers to `jal memcpy` in any TU that declares - * it — §2959). - * - * All four callee prototypes are copied VERBATIM from this TU (func_8004914C / - * func_800491AC / RotTransPers at file scope L3484-3486; func_8018AE30 from its - * own definition at L3612). D_800AF648 is block-scoped `extern u8` exactly as - * the two matched siblings do it. D_801E94F8 appears nowhere else in the TU. - */ - -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_8018AE30(void *arg0, void *arg1, s32 arg2, s32 arg3); - -void func_8018ADA8(s32 a0) { - extern u8 D_800AF648; - extern V4_8018ADA8 D_801E94F8; - u16 sxy[4]; - s32 pv[4]; - - *(V4_8018ADA8 *)pv = D_801E94F8; - func_8004914C(&D_800AF648); - func_800491AC(&D_800AF648); - RotTransPers(a0, (s32)sxy, &pv[2], &pv[3]); - func_8018AE30(sxy, pv, 0x10, 0x18); -} - - - -extern void func_8018AE9C(void *a0, void *a1, s16 a2); -extern void func_8018AFD0(s32 a0, s16 a1, u16 a2); - -void func_8018AE30(void *arg0, void *arg1, s32 arg2, s32 arg3) { - /* The target frame is 0x30: 0x10 outgoing-arg area + 0x10 var_size + - * 0x10 saved regs (s0/s1/s2/ra at 0x20..0x2C). gcc-2.7.2 allocates a - * declared aggregate even when it is never referenced, so this 16-byte - * local reproduces the original's var_size exactly. */ - s32 unused[4]; - s32 i; - s32 j; - - func_8018AE9C(arg0, arg1, arg2); - for (i = 0, j = 0; i < 0x10; i++, j += 0x100) { - func_8018AFD0(i, j, arg3); - } -} - - - - - -void func_8018AE9C(void *a0, void *a1, s16 a2) { - - extern s16 D_801EACD8; - extern s16 D_801EACDA; - extern u8 D_801EACE0; - extern u8 D_801EACE1; - extern u8 D_801EACE2; - extern u32 D_801EACDC; - if (a0 != NULL) { - D_801EACD8 = *(u16 *)a0; - D_801EACDA = *(u16 *)((s32)a0 + 2); - } else { - D_801EACD8 = 0; - D_801EACDA = 0; - } - - D_801EACE0 = *(u8 *)a1; - D_801EACE1 = *(u8 *)((s32)a1 + 1); - D_801EACE2 = *(u8 *)((s32)a1 + 2); - D_801EACDC = (u32)a2 << 16; -} - - - - -extern void func_80015978(s32 a0, s32 *a1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); - -void func_8018AF0C(s32 a0) { - - extern s16 D_801EACD8; - extern s16 D_801EACDA; - /* [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 u8 D_800AF648; - u16 sxy[2]; - s32 pv[4]; - - func_80015978(a0, pv); - func_8004914C(&D_800AF648); - func_800491AC(&D_800AF648); - RotTransPers((s32)pv, (s32)sxy, &pv[2], &pv[3]); - - D_801EACD8 = sxy[0]; - D_801EACDA = sxy[1]; -} - - - - -extern s32 func_8018B0EC(void); -extern void func_8018AFD0(s32 a0, s16 a1, u16 a2); - -void func_8018AF84(s32 a0, s32 a1) { - s32 result = func_8018B0EC(); - if (result >= 0) { - s16 ext_a0 = (s16)a0; - func_8018AFD0(result, ext_a0, (u16)a1); - } -} - - - -/* func_8018AFD0 — particle/ripple spawner for slot `a0` of the 16-entry, - * 0x10-byte-stride table at D_801EACE4. - * - * Declaration notes (the TU already carries all of these — nothing is invented): - * - rand / func_80047948 / func_8004787C : verbatim re-declarations of the - * TU's own file-scope prototypes (L951, L2197, L2198) -> merge silently. - * - D_801EACE4 : block-scope `extern s16` exactly as func_8018AD5C (L3869) - * and func_8018B0EC (L3982) declare it. - * - D_801EACDE : its own dlabel in asm/ov_SC03_014/data/tail19.data.s:5868; - * undeclared anywhere in the TU, so a block-scope extern is conflict-free. - * It is declared as an ARRAY on purpose: the ARRAY_REF sets MEM_IN_STRUCT_P, - * which restores the true_dependence() edge against the in-struct `p->f2` - * store and stops sched2 from hoisting the load above it (cookbook §135/2). - * - The TU's own prototype for this function is - * extern void func_8018AFD0(s32 a0, s16 a1, u16 a2); (L3929) - * but the body byte-proves the params are plain s32 (no `sll/sra` on $a1 and - * a single `andi` at the use, not the promoted-var `move`+`andi` pair). So the - * definition uses the §37/§124 ASM-LABEL ALIAS — exactly what this same TU - * already does for `aF8018A860` — leaving the TU's declaration untouched. - */ - -extern s32 rand(void); -extern s32 func_80047948(s32 a0); -extern s32 func_8004787C(s32 a0); - -void aF8018AFD0(s32 a0, s32 a1, s32 a2) __asm__("func_8018AFD0"); - -void aF8018AFD0(s32 a0, s32 a1, s32 a2) -{ - - extern s16 D_801EACE4; - extern s16 D_801EACDE[]; - - s32 unused[4]; /* dead locals — reproduces var_size 0x10 (frame 0x38) */ - P_8018AFD0 *p; - u16 rad; - s32 m; - s32 ang; - s32 t8; - s16 tC; - - p = (P_8018AFD0 *)((s32)&D_801EACE4 + (a0 << 4)); - - rad = a2; - rad = a2 + (rand() % (rad >> 2) - (rad >> 3)); - - ang = a1 + (rand() & 0x3f) - 0x20; - p->f6 = ang; - - m = rad; - t8 = (func_80047948(p->f6) * m) >> 12; - tC = (func_8004787C(p->f6) * m) >> 12; - p->f8 = t8 << 16; - p->fC = tC << 16; - - p->f0 = (rand() & 0xf) + 0x10; - p->f2 = m << 6; - p->f4 = (s32)D_801EACDE[0] * 64; -} - - - - -s32 func_8018B0EC(void) { - - extern s16 D_801EACE4; - s32 i = 0; - s32 offset = 0; - - while (i < 0x10) { - u16 val = *(u16*)((u8*)&D_801EACE4 + offset); - if (val == 0) { - return i; - } - i++; - offset += 0x10; - } - return -1; -} - - - - -/* func_8018B128 — the 16-slot particle/effect stepper over D_801EACE4[16] - * (0x10-byte records; slot 0 = the `active` u16 that func_8018AD5C clears and - * func_8018B0EC scans). Layout used here, all as byte-offsets off ONE walked - * base pointer: - * +0x0 u16 active +0x2 s16 angle +0x4 u16 dangle - * +0x6 s16 dir +0x8 s32 x +0xC s32 z - * - * IV shape (cookbook §3-Giv / gcc-map L1): the target has ONE biv (the walked - * base, kept alive by the bare +0x0 accesses, which find_mem_givs excludes from - * giv formation) plus ONE combined DEST_ADDR giv anchored at base+2 - * (`addiu $s1, $s2, 0x2`). combine_givs takes g1 from the list HEAD and - * record_giv PREPENDS, so *the last-emitted offset reference anchors*: the - * `+= dangle` statement (which ends on a +0x2 store) must therefore come LAST - * in the body. Written before the two s32 updates it anchors at base+0xC - * instead -> 14 mismatched immediates. - * - * Both rsin/rcos products are computed BEFORE any store because gcc-2.7.2's - * sched.c makes every mem ref depend on last_function_call — a store emitted - * between the two `jal`s could not have floated below the second one. - * - * `i++` precedes the pointer bump in the for-increment: that emission order is - * what puts `addiu $s4,$s4,1` ahead of the giv's `addiu $s1,$s1,0x10` (the - * biv's own bump then fills the branch delay slot). - * - * func_80047948 / func_8004787C keep this TU's file-scope prototypes verbatim - * (L2197-2198, `s32` param) — the s16 field is sign-extended at the call site - * by the `lh`, so the narrower m2c-style `s16` prototype is not needed (§17a-1). - * D_801EACE4 uses the TU's existing block-scope `extern s16` spelling - * (func_8018AD5C L3869, func_8018B0EC L3982). - */ - -extern s32 func_80047948(s32 a0); -extern s32 func_8004787C(s32 a0); - -void func_8018B128(void) { - - extern s16 D_801EACDE; - extern s16 D_801EACE4; - extern void func_8018B23C(s32); - - s16 *p; - s32 i; - s16 ang; - s32 vx; - s32 vz; - - ang = D_801EACDE; - p = &D_801EACE4; - - for (i = 0; i < 0x10; i++, p = (s16 *)((s32)p + 0x10)) { - if (*(u16 *)p != 0) { - if ((ang > 0 && *(s16 *)((s32)p + 2) > 0x4000) || - (ang < 0 && *(s16 *)((s32)p + 2) <= 0)) { - *p = 0; - } else { - func_8018B23C(i); - vx = func_80047948(*(s16 *)((s32)p + 6)) * ang * 0x10; - vz = func_8004787C(*(s16 *)((s32)p + 6)) * ang * 0x10; - *(s32 *)((s32)p + 8) += vx; - *(s32 *)((s32)p + 12) += vz; - *(u16 *)((s32)p + 2) += *(u16 *)((s32)p + 4); - } - } - } -} - - - -/* func_8018B23C — spawns one 0x14-byte GPU packet from D_800A5E60, rotates / - * scales a matrix copy of D_800AE620 by the D_801EACE4[a0] record, projects the - * four corner offsets into the packet, then links the packet into the OT. - * - * Byte-verified levers (all three were needed; each is worth 8-31 insns): - * - * A. THE OT LINK IS THE libgpu P_TAG BITFIELD, NOT HAND-MASKING. Writing - * `*(u32*)q = (*(u32*)q & 0xFF000000) | (ot & 0xFFFFFF)` is byte-correct - * arithmetic but gives the WRONG register assignment (16 mismatches: the - * 0xFFFFFF / 0xFF000000 / &D_800B9A02 pseudos land in a0/a2/a3 permuted, - * and the `lw $v1,0($s3)` gets serialised behind the index load). The - * `unsigned addr:24; unsigned len:8` bitfield insert reproduces both the - * allocation and the schedule exactly. This is just `addPrim(ot, q)`. - * - * B. THE OT TABLE MUST BE AN ARRAY_REF (`D_800A651C[i].a`), NOT - * `*(s32*)((u8*)&D_800A651C + i*20)`. With the pointer-arith spelling gcc - * allocates a phantom 8-byte stack temp that is never referenced, pushing - * the frame from 0x68 to 0x70 (cookbook D6 in reverse: the frame is too - * BIG). The temp only appears when the SAME lookup expression occurs in - * two statements; the ARRAY_REF form (engine_core.h `OtBlk`) kills it. - * - * C. THE LAST ApplyMatrixSV RECOMPUTES THE MATRIX ADDRESS. The first four - * matrix arguments come out of $s4 (`addu $aX,$s4,$zero`), but the fifth is - * `addiu $a0,$sp,0x10`. cse.c cannot be talked out of folding a fifth - * `&m` into the existing pseudo: the conditional above it is a - * "branch around a block", so cse_end_of_basic_block EXTENDS the basic - * block through the join label (status AROUND) and the equivalence class - * for (plus fp 16) is still live. Every source-level attempt to break it - * (pointer local, `mp = m` in the skipped arm, a §21 zero-byte re-tie, - * do{}while(0) loop notes) either changed nothing or cost 3 insns by - * turning the pointer into a two-def global allocno. Pinning a reader to - * $sp makes the expression `(plus (reg 29) 16)` — a different rtx from - * `(plus (reg fp) 16)`, so cse never looks it up, and the single-use pseudo - * is folded by combine into the one `addiu` the target has. - * - * The svp/outp block around the FIRST ApplyMatrixSV is load-bearing too: - * removing it costs 6 insns and two extra callee-saved registers. - */ - -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern void RotMatrixZ(s32 a0, void *a1); -extern void func_8004901C(void *a0, void *a1); -extern void func_80016638(void *a0, s32 a1, s32 a2); - - -/* 0x10-byte-stride record table at D_801EACE4 (same table as func_8018AD5C) */ - - /* the 0x20-byte matrix */ - /* == engine_types.h OtBlk */ - /* the D_800B9A02 buffer index */ - /* libgpu P_TAG */ - -void func_8018B23C(s32 a0) { - - extern s16 D_801EACD8; - extern s16 D_801EACDA; - extern u8 D_801EACE0; - extern u8 D_801EACE1; - extern u8 D_801EACE2; - - extern s16 D_801EACE4; - extern u8 *D_800A5E60; - extern s32 D_800AE620; - extern u8 D_800A6518[]; - extern Ot_8018B23C_8018B23C D_800A651C[]; - - s32 m[8]; /* sp+0x10 */ - u8 sv[8]; /* sp+0x30 */ - u16 out[4]; /* sp+0x38 */ - s32 scale[4]; /* sp+0x40 */ - - u8 *q; - Rec_8018B23C_8018B23C *p; - s32 x; - s32 y; - s32 ang; - - q = D_800A5E60; - - *(Mat32_8018B23C_8018B23C *)m = *(Mat32_8018B23C_8018B23C *)&D_800AE620; - - D_800A5E60 = q + 0x14; - *(u8 *)(q + 3) = 4; - *(u8 *)(q + 7) = 0x22; - *(u8 *)(q + 4) = D_801EACE0; - *(u8 *)(q + 5) = D_801EACE1; - *(u8 *)(q + 6) = D_801EACE2; - - p = (Rec_8018B23C_8018B23C *)((s32)&D_801EACE4 + (a0 << 4)); - x = p->fA + (u16)D_801EACD8; - y = p->fE + (u16)D_801EACDA; - RotMatrixZ(p->f6, m); - - scale[0] = *(s16 *)((s32)p + 2); - scale[1] = *(s16 *)((s32)p + 2); - scale[2] = *(s16 *)((s32)p + 2); - func_8004901C(m, scale); - - *(s16 *)(sv + 4) = 0; - *(s16 *)(sv + 2) = 0; - *(s16 *)(sv + 0) = p->f0; - { - void *svp = sv; - void *outp = out; - ApplyMatrixSV(m, svp, outp); - __asm__ __volatile__("" : "=r"(svp)); - __asm__ __volatile__("" : "=r"(outp)); - } - - *(s16 *)(q + 0x8) = x + ((s16)out[0] >> 1) * 3; - *(s16 *)(q + 0xA) = y + ((s16)out[1] >> 1) * 3; - *(s16 *)(q + 0xC) = x - ((s16)out[0] >> 1); - *(s16 *)(q + 0xE) = y - ((s16)out[1] >> 1); - x = x + out[0]; - *(s16 *)(q + 0x10) = x; - y = y + out[1]; - *(s16 *)(q + 0x12) = y; - - ang = -0x400; - if (p->f0 & 1) { - ang = 0x400; - } - RotMatrixZ(ang, m); - - *(s16 *)(sv + 0) = 2; - { - /* lever C: sp+0x10 IS &m, but spelled so cse cannot fold it to $s4 */ - register u8 *spr __asm__("$29"); - ApplyMatrixSV(spr + 0x10, sv, out); - } - - *(s16 *)(q + 0x10) = *(u16 *)(q + 0x10) + out[0]; - *(s16 *)(q + 0x12) = *(u16 *)(q + 0x12) + out[1]; - - { - Bidx_8018B23C_8018B23C *bp = (Bidx_8018B23C_8018B23C *)&D_800B9A02; - - /* addPrim(&D_800A651C[bp->f].a[0x10], q) */ - ((PTag_8018B23C_8018B23C *)q)->addr = - ((PTag_8018B23C_8018B23C *)(D_800A651C[bp->f].a + 0x40))->addr; - ((PTag_8018B23C_8018B23C *)(D_800A651C[bp->f].a + 0x40))->addr = (u32)q; - func_80016638(&D_800A6518[bp->f * 20], 0x10, 1); - } -} - - - - - - - diff --git a/src/ov_SC03_015/ov_SC03_015_o0b.c b/src/ov_SC03_015/ov_SC03_015_o0b.c deleted file mode 100644 index 50b2875ae..000000000 --- a/src/ov_SC03_015/ov_SC03_015_o0b.c +++ /dev/null @@ -1,30 +0,0 @@ -#include "common.h" -#include "../shared/func_80144B9C.h" - - -/* func_801457A4 @ 0x801457A4 — an -O0 function stranded at the whale's end boundary (it is the - * FIRST fn of the -O2 "after" segment, but its target is -O0: frame-pointer + per-case stack - * reloads). It can only bank in an -O0 object, so it lives here: _o0b is already -O0-compiled and - * its .text ends exactly at 0x801457A4 (right after func_80144B9C), placing this fn at its true - * address with no linker/Makefile change. Its stub was removed from ov_SC01_077_after.c. Def sig - * conformed byte-neutrally to func_80144B9C.h's decl `void *func_801457A4(s32)` (the whale calls it - * that way); byte-proven at -O0 (match_one --o0 79/79) and by the whole-binary gate. Phase-29 bank. */ -extern int D_8018B520; - -void *func_801457A4(s32 param_1) { - switch (param_1) { - case 0x1010: - case 0x1052: - case 0x1077: - case 0x1094: - case 0x2013: - case 0x2015 ... 0x201a: - case 0x2055 ... 0x205b: - case 0x207a ... 0x2080: - case 0x2097 ... 0x209d: - return (void *)(&D_8018B520)[param_1 & 0xffff0fff]; - default: - return (void *)D_8018B520; - break; - } -} diff --git a/src/ov_SC03_015/ov_SC03_015_o0c.c b/src/ov_SC03_015/ov_SC03_015_o0c.c deleted file mode 100644 index dab1bb857..000000000 --- a/src/ov_SC03_015/ov_SC03_015_o0c.c +++ /dev/null @@ -1,2950 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8; -typedef void (*Handler)(struct Entry_8016E95C *); -extern void func_801458E0(void); -extern s32 D_800AE6AC; -extern s32 D_800AE6B0; -extern s16 D_800B9A0A; -extern u8 D_80078E50; -extern void func_800D185C(u8 *a0); -extern void func_801458E8(void); -extern s32 func_80029504(void); -extern void func_80145B24(void); -extern u8 D_8018DAA4; -extern u8 D_8018DA14; -extern u8 D_8018D9F0; -extern u8 D_8018D9CC; -extern u8 D_8018DA80; -extern u8 D_8018DA5C; -extern u8 D_8018DA38; -extern u8 D_8018D9A8; -extern void func_80145934(void); -extern u8 D_8018DB34; -extern u8 D_8018DB10; -extern u8 D_8018DAEC; -extern u8 D_8018DAC8; -extern void func_80145A2C(void); -extern s32 func_800291DC(s32); -extern void func_800291C8(s32, s32); -extern void func_80162120(void); -extern void func_80029124(s32, s32); -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); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_80145BF8(void); -extern s32 func_800291B4(s32 arg); -extern void func_800291A0(s32, s32); -extern void func_80145C54(void); -extern s32 func_80145CEC(); -extern s32 func_80029178(s32 arg); -extern void func_80146014(s32 a0); -extern unsigned char D_8018CF2C[]; -extern unsigned char D_8018CF5C[]; -extern unsigned char D_8018CFAC[]; -extern unsigned char D_8018CFDC[]; -extern unsigned char D_8018D00C[]; -extern void func_80145EE8(s32 param_1); -extern void MoveImage(void *a0, s32 a1, s32 a2); -extern void func_80146074(void); -extern s32 func_80146128(void); -extern void func_80146360(void); -extern void func_801463A0(); -extern void func_8014607C(void); -extern s32 *D_80126B78; -extern u8 D_80078EC1; -extern s32 D_80078EC8; -extern s32 D_80126B9C; -extern s32 D_8011F730; -extern u16 D_801152B8; -extern u16 D_8012693A; -extern u8 D_80126BE0[]; -extern u8 D_801150F0[]; -extern void *memcpy(void *dst, const void *src, u32 n); -extern void func_80146FC4(s32 a0); -extern void func_80150A70(s32 a0); -extern void func_80147098(s32 *a0); -extern void func_8014A638(s32 arg0); -extern s32 func_80155458(s32 a0); -extern s32 func_80029104(void); -extern void func_80029344(void); -extern void func_8014ADE0(s32 a0); -extern void func_8014B350(s32 a0); -extern void func_8014B7A4(s16 *param_1); -extern s32 func_80161D58(s32 a0); -extern void func_80161A90(s32 a0); -extern void func_8014B504(u16 *a0); -extern void func_80149BEC(s32 a0); -extern void func_8014B5D0(s32 *a0); -extern void func_8014C99C(u8 *a0); -extern void func_8014B190(s32 s0); -extern void func_80148648(s32 a0, s32 a1); -extern s32 func_80149228(s32 a0); -extern void func_8014A59C(s32 a0); -extern void func_8016F14C(void *a0); -extern void func_80154418(void *a0); -extern void func_80154BE4(s32 a0); -extern void func_80165694(s32 arg0); -extern void func_801654A8(s32 a0); -extern void func_8014A680(s32 a0); -extern void func_8014A6A8(s32 a0); -extern void func_8014A71C(s32 a0); -extern void func_80172588(s32 *a0); -extern void func_801473DC(s32 *a0); -extern void func_80015978(s32 a0, s32 *a1); -extern void (*D_8018D05C[])(void *); -extern u8 D_80126BA4; -extern s32 D_80127098; -extern s32 D_80127094; -extern s32 D_80127090; -extern void func_80146534(void); -extern void func_8001D074(s32 a0, s32 a1); -extern void func_80146554(void); -extern void func_80146578(void); -extern void func_8001CFDC(s32, s32); -extern void func_8014659C(void); -extern void func_8001D074(s32, s32); -extern void func_801465C0(void); -extern void func_801465E4(void); -extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); -extern s32 D_8011F9D0; -extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); -extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 D_8011F750; -extern s32 D_8011F754; -extern u8 * func_801468C8(s32 arg0, u8 arg1); -extern s32 D_8011D030; -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); -extern s32 func_80146B9C(void *a0); -extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); -extern u16 D_8011DA28; -extern s32 func_80146B9C(void * arg0); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80146CA0(void *a0); -extern void func_80146CB4(void *a0); -extern void func_80146CC8(s32 a0); -extern void func_80146D30(s32 a0); -extern void func_80146D80(s32 *a0); -extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80146D90(s32 a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); -extern void func_80146E90(s32 *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80015954(s32 a0, s32 a1); -extern void func_80149374(s32 a0, s32 a1); -extern void func_80146F58(s32 a0, s32 a1); -extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 func_8012A68C(void); -extern s16 func_8012A758(void); -extern void func_8004978C(s16 *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern u8 D_80126DB0[]; -extern u16 D_80126DB6; -extern void func_8014704C(s32 *a0); -extern s32 func_80147054(void *a0); -extern void func_80147060(u8 * a0); -extern void func_8014706C(void *arg0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80147084(s32 *a0); -extern void func_8014708C(void *arg0); -extern s32 func_801470A0(void *a0); -extern void func_801470AC(s32 *a0); -extern void func_801470B4(s32 arg0); -extern void func_801470C0(s32 a0); -extern void func_80147118(s32 a0); -extern s16 D_80126BB8; -extern s16 D_80126BBA; -extern s16 D_80126BBC; -extern void func_80147264(s32 a0); -extern void func_80147290(void); -extern void func_801472B4(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void *D_8012707C; -extern void func_801472DC(void); -extern void func_801472F0(void *a0); -extern void func_80147364(u16, s32); -extern void func_80147300(u16 arg0); -extern void func_80147324(s32 arg0); -extern void func_801473EC(s32 *a0); -extern void func_80147460(s32 a0); -extern void func_80147514(); -extern void func_80147628(s32 a0); -extern void func_80147478(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); -extern s32 func_800129CC(s32 a0, s32 a1); -extern void func_80147514(s32 arg0); -extern void func_80013F3C(s32 a0); -extern void func_80012558(s32 a0, s32 a1); -extern void func_800126C4(s32 a0, s32 a1); -extern void func_800123F0(s32 a0, s32 a1); -extern void func_80147718(s32 a0); -extern void func_80147788(void *a0, s32 a1); -extern void func_801477A8(void *a0, s32 a1); -extern void func_801477C8(void *a0, s32 a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80147814(s32 a0, s32 a1); -extern void func_80147928(int a0, int a1); -extern void func_8014799C(int a0, int a1); -extern void func_80147A10(int a0, int a1); -extern void func_80147860(int a0, int a1, int a2, int a3); -extern void func_80147948(s32 a0, s32 a1, s32 a2); -extern void func_801479BC(s32 a0, s32 a1, s32 a2); -extern void func_80147A30(s32 a0, s32 a1, s32 a2); -extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147948(int a0, int a1, int a2); -extern void func_801479BC(int a0, int a1, int a2); -extern void func_80147A30(int a0, int a1, int a2); -extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147A84(s32 arg0); -extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147AAC(s32 arg0); -extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80147B5C(s32 a0, void *a1); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern void func_80147B18(s32 a0); -extern void func_80147B5C(s32 arg0, void *arg1); -extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147DC0(s32 a0, s32 a1); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147F50(s32 arg0); -extern void func_80148038(s32 a0, s32 a1); -extern s32 ratan2(s32 a0, s32 a1); -extern s32 csqrt(s32 a0); -extern s32 func_80012A60(s32 a0, s32 a1); -extern void func_80148094(int param_1, short *param_2, int *param_3); -extern void func_801485B8(s32 a0, s32 a1, s32 a2); -extern void func_801484B0(s32 a0, s32 a1); -extern s32 func_80154358(void *a0); -extern void func_801484E8(s32 a0, s32 a1); -extern void func_80148534(s32 a0, s32 a1); -extern void func_8014856C(s32 a0, s32 a1); -extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); -extern void func_80148634(void *a0); -extern u8 D_800B9A64; -extern s32 func_80014DC0(); -extern s32 func_80014D68(); -extern s32 func_80014D94(); -extern s32 func_80014CF8(); -extern void func_800120DC(); -extern s32 func_800CF8B4(); -extern u16 func_801487F4(s32 *a0); -extern u16 func_80148800(s32 *a0); -extern u8 func_8014880C(s32 *a0); -extern u16 func_80148818(s32 *a0); -extern s32 func_80047D3C(s32 a0); -extern s32 func_80148824(void *arg0); -extern s32 func_801488A8(u8 *a0); -extern s32 func_8014891C(s32 a0); -extern s32 func_80148980(u8 *a0); -extern s32 func_801489E8(s32 a0); -extern s32 func_80148A48(s32 a0); -extern int func_80148AFC(void *a0); -extern void func_80148AAC(u8 *a0); -extern s32 func_80148C18(void); -extern s32 func_80148C20(s32 a0, s16 a1); -extern s32 func_80148C34(s32 a0, s32 a1); -extern s32 func_80148C4C(s32 a0, s32 a1); -extern s32 func_80148C64(s32 a0, s32 a1); -extern s32 func_80148C7C(void); -extern s32 func_80148C84(s32 a0, s32 a1); -extern s32 func_80148C9C(s32 a0, s32 a1); -extern s32 func_80148CB4(s32 a0, s32 a1); -extern s32 func_80148CCC(s32 a0, s32 a1); -extern s32 func_80148CE4(void); -extern s32 func_80148CEC(void); -extern s32 func_80148CF4(s32 a0, s32 a1); -extern s32 func_80148D0C(s32 a0, s32 a1); -extern s32 func_80148D24(void *a0, int a1); -extern s32 func_80148D3C(void); -extern s32 func_80148F60(void); -extern s32 func_80148F68(s32 a0); -extern s32 func_80148F74(s32 a0); -extern s32 func_80148F80(s32 a0); -extern s32 func_80148F8C(s32 a0); -extern s32 func_80148F98(void); -extern s32 func_80148FA0(s32 a0); -extern s32 func_80148FAC(s32 a0); -extern s32 func_80148FB8(s32 a0); -extern s32 func_80148FC4(s32 a0); -extern s32 func_80148FD0(void); -extern s32 func_80148FD8(void); -extern s32 func_80148FE0(s32 a0); -extern s32 func_80148FEC(s32 a0); -extern s32 func_80148FF8(s32 a0); -extern s32 func_80149004(void); -extern void func_8014900C(s32 *a0); -extern void func_80149020(s32 *a0); -extern void func_80149034(s32 *a0); -extern void func_80149048(s32 *a0); -extern void func_8014905C(u8 *a0); -extern void func_801490E0(s32 *a0, s16 a1); -extern void func_801490E8(s32 *a0, s16 a1); -extern void func_801490F0(s32 *a0, s16 a1); -extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); -extern void func_801490F8(s32 a0, s32 a1); -extern s32 func_801491C4(s32 a0); -extern s32 func_80149184(s32 a0); -extern s32 D_801151D4; -extern void func_80149204(s32 *a0); -extern void func_80149210(s32 a0, s32 a1); -extern s32 func_80149284(s32 *a0, s32 a1); -extern void func_80149350(s32 arg0); -extern void func_80149290(s32 a0); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_80149374(s32 arg0, s32 arg1); -extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8014942C(s32 arg0); -extern void func_8012EF70(s32 a0, s32 a1); -extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012EFB8(s32 a0); -extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); -extern void func_8014964C(s32 param_1, s32 param_2); -extern s32 func_801496D4(void *a0); -extern void func_8015AD08(); -extern void func_80149704(void); -extern void func_8015ACC4(); -extern void func_80149724(void); -extern u8 D_80078EBF; -extern s32 func_80149744(struct S_80149744 *a0); -extern void func_8015F7A0(); -extern void func_80149788(void); -extern void func_801653B8(); -extern void func_80149864(void); -extern s16 currentLocationId; -extern s32 func_8016F1AC(void); -extern s32 func_80149884(void); -extern void func_80160B00(); -extern void func_801498C0(void); -extern s32 func_80149AA8(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern void func_80146750(void *a0); -extern s32 func_801498E0(s32 *a0); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_80147364(u16 a0, s32 a1); -extern s32 func_800CCF28(s32 a0); -extern u8 D_80126B5C; -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_8015DAC4(s32 *a0); -extern void func_8015554C(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern void func_80149B14(s32 *a0); -extern u8 func_8014BEF8(void); -extern s32 func_80149B54(s32 * arg0); -extern void func_8015DE24(s32 *a0); -extern void func_80157510(s32 *a0); -extern void func_80149BAC(s32 *a0); -extern s32 func_80029178(s32 a0); -extern s32 func_80149C08(s32 arg0); -extern void func_801577C8(); -extern void func_80149C94(void); -extern void func_80157D20(void); -extern void func_80149CB4(void); -extern s32 func_80149CD4(s32 a0); -extern u8 func_8014B5B8(s32 *a0); -extern s32 func_80149D10(s32 a0); -extern s32 func_80149E94(s32 a0); -extern s32 func_80149DD8(s32 a0); -extern s32 func_80149D9C(s32 a0); -extern u8 D_801202A0[]; -extern s32 func_80149F2C(s32 a0, s32 a1); -extern s32 func_80149E94(s32 arg0); -extern void func_80149FA8(void); -extern s32 D_8018D124[]; -extern s32 func_80149FB0(s32 a0); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern void func_8014A1B0(s32 a0, s32 a1); -extern s32 func_8014A048(s32 param_1); -extern u16 func_80156370(u16 a0); -extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); -extern void func_8015D4B4(); -extern void func_8014A218(void); -extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); -extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); -extern s32 func_8014A238(s32 arg0); -extern s32 func_8014A2E4(s32 a0); -extern void func_8014A380(s32 a0, s32 a1); -extern s16 D_801152B0; -extern s16 D_801152B4; -extern s32 func_8014A3E0(struct S_8014A3E0 *a0); -extern s32 func_8014A454(s32 a0); -extern s32 func_8014A4B4(void *a0); -extern void func_8015EDD4(); -extern void func_8014A4FC(void); -extern s32 func_8014A674(s32 *a0); -extern s32 func_8014A69C(s32 *a0); -extern s32 func_8014A6C4(s32 a0); -extern void func_8015E184(); -extern void func_8014A830(void); -extern s32 func_80029AF4(void); -extern s32 func_8014A850(s32 param_1); -extern void func_8014AA04(s32 a0); -extern void func_801599A4(void *a0); -extern void func_80159B3C(void *a0); -extern s32 func_80165A20(s32 a0); -extern void func_8014AB7C(); -extern void func_8014AC10(); -extern void func_8014AA28(void); -extern void func_8014AB5C(void); -extern void func_80162CCC(void); -extern void func_8014AB7C(s32 arg0); -extern void func_8014ABF0(void); -extern void func_80016714(void *a0, s32 a1); -extern void func_8014AC10(s32 arg0); -extern void func_8014ACC0(s32 a0, s32 a1); -extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); -extern void func_8014ACE8(void *a0, s32 a1, s32 a2); -extern void func_80146AFC(void *a0); -extern void func_8014ADA8(s32 a0, s32 a1); -extern void func_8014AD7C(s32 a0); -extern s32 D_80078E8C; -extern void func_8014B034(s32 arg0); -extern void func_8014B00C(s32 arg0); -extern void func_8014B084(void); -extern s16 D_80078E90; -extern void func_8014B034(s32 a0); -extern u16 D_80078EAC; -extern u8 D_80078EBA; -extern void func_800D10EC(void); -extern void func_8002AC98(void); -extern s32 func_8014B154(s32 *a0); -extern void func_8014B12C(void); -extern void func_8014B2F8(void); -extern void func_8014B4C4(void); -extern void func_8014B160(s32 a0); -extern s32 func_8016F1C4(void); -extern s16 D_80078E96; -extern s16 D_80078EB8; -extern u16 D_80078EA6; -extern void func_8014B2A8(void); -extern void func_8014B310(void); -extern void func_8014B2D0(void); -extern s32 D_80078E94; -extern s32 D_80078ECC; -extern void func_8014B33C(void); -extern u8 D_80062BF4[]; -extern void func_8014BC80(s32 a0, s32 a1); -extern void func_80019064(void *a0); -extern s32 D_80078E98; -extern void func_80166244(); -extern void func_8014B4D4(void *a0); -extern s16 D_80078E9A; -extern u8 D_80126D1C; -extern s32 D_80126D74; -extern void func_8014B598(s32 a0, s32 a1); -extern void func_8014B5B0(s32 *a0); -extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); -extern void func_8014B5D8(s32 s1); -extern s32 D_80078E9C; -extern s32 D_80078ED0; -extern void func_8014B6F0(s32 a0, s32 a1); -extern void func_8014B768(s32 a0, s32 a1); -extern void func_8014B944(s32 a0, s32 a1, s32 a2); -extern s32 D_80078EA4; -extern u16 D_80078EB2; -extern s16 D_80078EB4; -extern void func_8014BB0C(void); -extern void func_8014BB24(s32 a0, s32 a1, s32 a2); -extern void func_8014BC0C(s32 a0, s32 a1); -extern void func_8014BC44(s32 a0, s32 a1); -extern u8 D_800B9A17; -extern void func_8014BCC0(s32 a0, s32 a1); -extern u16 D_80078EB6; -extern s32 func_8014BCEC(s32 a0, s32 a1); -extern void func_8014BD24(s32 a0, s32 a1); -extern void func_8014BD60(s32 param_1, s32 param_2); -extern void func_8014BD98(s32 a0, u16 a1); -extern void func_8014BDC8(void); -extern void func_8014BDE0(void); -extern s32 func_8017267C(s32 *a0); -extern s32 func_80013294(void *a0, void *a1); -extern void func_80029ED4(s32 a0); -extern void func_8014BDE8(s32 a0); -extern void func_8014BE78(void); -extern void func_8014BE9C(void); -extern void func_80029124(s32 a0, s32 a1); -extern void func_8014BEC0(void); -extern void func_8014BF18(s32 a0); -extern void func_8014BF48(void); -extern u8 func_8014BF6C(void); -extern void func_8014BF8C(u8 arg0); -extern void func_8014BFB0(void); -extern u8 func_8014BFD4(void); -extern void func_8014BFF4(s32 a0, s32 a1); -extern void func_8014C010(s32 a0, s32 a1); -extern s32 func_8014C050(s32 a0, s32 a1); -extern s32 func_8014C088(s32 a0, s32 a1); -extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); -extern s32 func_8014C118(void * a0, s32 a1, s32 a2); -extern s32 func_8014C168(s32 * param_1, s32 param_2); -extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); -extern u8 D_8018D1AC[]; -extern void func_8014C1A0(s32 arg0, s32 arg1); -extern s32 func_80013328(s32 a0, s32 a1); -extern s32 func_8014C59C(void *a0, void *a1); -extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); -extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); -extern s32 ratan2(s32 dx, s32 dy); -extern u8 D_8018D1B4; -extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); -extern s16 func_8014C5D0(s32 a0, s32 a1); -extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); -extern u8 D_80126D17; -extern void func_8014C6AC(void); -extern void func_8014C6C0(void); -extern u8 D_80126D1E; -extern void func_8014C6D0(void); -extern void func_8014C6E0(void); -extern s32 func_8014C860(s32 a0, s32 a1); -extern void func_8014C8C8(s32 a0, s32 *a1); -extern void func_8014C88C(s32 a0); -extern void func_8014C8C8(s32 dst, s32 * src); -extern void func_8014C8F0(s32 arg0); -extern u8 D_801151F0[]; -extern s32 func_8014C918(s32 a0, s32 a1); -extern s32 D_80126B50; -extern void func_8014C968(void); -extern void func_8014C978(void); -extern s32 func_8014C98C(void); -extern void func_80139914(s32 a0); -extern s32 func_8014CA00(s32 a0); -extern u16 func_8014CA70(s32 a0, s32 a1); -extern s32 func_8014CA14(s32 a0, s32 a1); -extern u16 func_8014CAE4(s32 *a0, s32 a1); -extern s32 func_8014CA88(s32 *a0, s32 a1); -extern s32 func_8014CAFC(void); -extern s32 func_8014CB0C(void); -extern s32 func_8014CB1C(void); -extern u8 D_80126D1F; -extern s32 func_8014CB2C(void); -extern s32 func_8014CB58(void); -extern u8 D_80126D1D; -extern void func_8014CB68(void); -extern s32 func_8014CB7C(void); -extern s32 func_8014CB8C(void); -extern short D_80126C9E; -extern void func_8014CB9C(struct Packed8 *a0); -extern s32 D_80126CDC; -extern void func_8014CBD8(void); -extern s16 D_80126CC4; -extern void func_8014CBE8(void); -extern void func_8014CBF8(void *a0); -extern void func_8014D3E0(s32 a0); -extern void func_8014D04C(void); -extern void func_8014CCB4(void); -extern void func_8014CC28(s32 a0); -extern void func_8014CD0C(u8 *a0); -extern s32 func_8014CF04(s32 a0, s32 a1, void *a2); -extern void func_8014CD80(s32 a0, void *a1, void *a2); -extern void func_8014D0A4(s32 a0); -extern s32 func_8014D2A0(s32 a0, void *a1, void *a2); -extern s32 func_8014D12C(s32 a0, void *a1, void *a2); -extern void func_8014D438(s32 a0); -extern void func_8014D3E0(s32 _arg0); -extern void func_8014D610(s32 a0, void *a1, void *a2); -extern s32 func_8014D4C0(s32 a0, void *a1, void *a2); -extern void func_8014D790(s32 a0); -extern void func_8014D738(void); -extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); -extern s32 func_8014D820(s32 a0, u16 *a1, u16 *a2); -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); -extern void func_8014DF94(s32 arg0); -extern void func_8014DF3C(void); -extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ -extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ -extern s16 D_801152AC; -extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); -extern void func_8014E48C(s32 a0); -extern void func_8014E434(void); -extern void func_8014E5B4(s32 a0, void *a1, void *a2); -extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); -extern void func_8014E6F8(struct SubE6F8 *a0); -extern void func_8014E6A0(void); -extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); -extern void func_8014E934(s32 _arg0); -extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); -extern s32 func_8014E98C(void *a0); -extern s32 D_801150D8; -extern s16 D_801152AA; -extern u8 D_80126720[]; -extern s16 D_80126724; -extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); -extern s32 func_8014ED80(struct SubED80 *a0); -extern int D_801E9698; -extern void func_8014ED28(s32 _arg0); -extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F24C(struct SubF24C *a0); -extern void func_8014F1F4(void); -extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F4C0(); -extern s32 func_8014F468(void); -extern int func_8014F74C(); -extern int func_8014F6F4(void); -extern u8 D_800D3918[]; -extern u8 D_801152A8[]; -extern s32 D_801152BC; -extern int func_8014F74C(s32 arg0); -extern s32 func_8014FA70(s32 a0); -extern s32 D_801E969C; -extern void func_8014FA04(s32 a0); -extern s32 func_8014FBC0(); -extern s32 func_8014FC18(u8 *self); -extern int func_8014FD54(int param_1); -extern void func_8014FCFC(void); -extern void func_80150170(void *a0); -extern s32 func_8014FE60(void *a0); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_8014FE60(void *e); -extern s32 func_80134510(s32 arg); -extern s32 func_80150150(s32 a, s32 b); -extern s32 func_80150460(s32 a, s32 b); -extern void func_801504D8(u16 *a0); -extern s32 func_80150480(s32 _arg0); -extern s32 func_80150528(void *a0, void *a1, void *a2); -extern s32 func_80150528(void *arg0, void *arg1, void *arg2); -extern s32 func_801506A4(s32 a0, s32 a1); -extern s32 func_801505FC(s32 a0); -extern s32 func_801506A4(s32 arg0, s32 arg1); -extern void func_80150820(s32 a0, s32 a1); -extern void func_8015086C(int param_1); -extern s32 func_801508B4(s32 a0); -extern s32 func_8015094C(s32 a0); -extern short func_801508F8(s32 a0); -extern s32 D_8018D1E4; -extern s32 D_80126990; -extern s32 D_80126994; -extern u8 D_80126948[]; -extern s32 func_80021174(s32 a0, s32 a1); -extern s32 func_8015094C(s32 param_1); -extern void func_80150B9C(void); -extern s32 func_80151184(s32 a0, s32 a1, s32 a2); -extern s32 func_80150BA4(s32 a0); -extern s32 func_801619D0(void *a0); -extern void func_80150BC8(s32 *a0); -extern s32 func_80150480(s32 a0); -extern u16 D_800AE6DC; -extern void func_80150C48(s32 a0); -extern int func_80151184(int arg, int a1, int a2); -extern int func_80150CA0(int arg); -extern void func_80150EC4(s32 a, s32 b); -extern void func_80150CC4(s32 a); -extern void func_80150CE4(s32 a); -extern void func_80150D04(s32 a); -extern void func_80150D24(s32 a); -extern void func_80150D44(s32 a); -extern void func_80150D64(s32 a); -extern void func_80150D84(s32 a); -extern void func_80150DA4(s32 a); -extern void func_80150DC4(s32 a); -extern void func_80150DE4(s32 a); -extern void func_80150E04(s32 a); -extern void func_80150E24(s32 a); -extern void func_80150E44(s32 a); -extern void func_80150EC4(s32 a0, s32 a1); -extern void func_80150E64(s32 a0); -extern void func_80150E84(s32 a0); -extern void func_80150EA4(s32 a0); -extern u8 D_800AE6C0; -extern s16 D_800AE6C8; -extern s16 D_800AE6CA; -extern s16 D_800AE6CC; -extern s32 D_800AE6C4; -extern s16 D_800AE6CE; -extern u8 D_800AE6BE; -extern u8 D_801201F8[]; -extern void func_80150F78(void); -extern void func_80150F80(s32 a0); -extern int func_80150FB4(int arg); -extern void func_80150FD8(s32 a0); -extern int func_80151014(int arg); -extern void func_80151038(s32 a0); -extern int func_80151070(int arg); -extern int func_80151094(int arg); -extern void func_801510B8(void); -extern void func_801510C0(void); -extern int func_801510C8(int arg); -extern int func_801510EC(int arg); -extern s32 func_8012DB84(void); -extern s32 func_80151110(void); -extern void func_80151130(void); -extern int func_80151138(int arg); -extern void func_8015115C(s32 *a0, s16 a1); -extern s32 func_80151164(s32 a0, s32 a1); -extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); -extern void func_801511A8(u8 *a0); -extern void func_801511C4(u8 *a0); -extern int func_80151204(int arg, int a1); -extern int func_801511E0(int arg); -extern int func_80151204(int a0, int a1); -extern void func_80151238(void *a0); -extern void func_8015126C(u16 *p); -extern void func_80151780(s32 a0); -extern void func_801516F0(s32 *a0); -extern void func_8015173C(s32 *a0); -extern s16 D_8011DB1A; -extern s32 D_80127518; -extern s32 D_801151FC; -extern s32 func_801725CC(u8 *a0); -extern s32 func_80029D3C(void); -extern void func_80151878(void); -extern void func_80153B58(s32 *a0); -extern s32 func_80151880(s32 a0); -extern s32 func_801518D8(s32 a0); -extern s32 func_80151944(void); -extern s32 func_80151924(void); -extern void func_8014E934(s32 a0); -extern s32 func_8014F3E8(s32 a0); -extern void func_801519C8(s32 a0); -extern void func_80151980(s32 a0); -extern M2C_UNK D_800D5880; -extern s32 D_800D58AC; -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801519C8(s32 arg0); -extern void func_80151C54(s32 a0); -extern void func_801542DC(s32 *a0, s32 a1); -extern void func_8015BDD0(s32 *a0); -extern void func_80165718(s32 a0); -extern u8 D_800D46E4[]; -extern void func_80151AE4(s32 arg0); -extern void (*D_8018D28C[])(void); -extern void func_80151D24(void *a0); -extern void func_80151DB0(s32 a0); -extern void func_80151D60(void *a0); -extern s32 func_80172630(u8 *a0); -extern s32 D_80062C14; -extern void func_80151DB0(s32 param_1); -extern void func_80151E78(s32 *a0); -extern void func_80151ECC(struct S80151ECC *a0); -extern void func_80151FB4(s32 a0); -extern void func_80151F38(s32 *a0); -extern void func_801553C0(s32 a0); -extern void func_80153C18(); -extern void (*D_8018D2B0[])(void); -extern void func_80152058(void *a0); -extern void func_801520DC(s32 a0); -extern void func_80152094(s32 a0); -extern void func_80147324(s32 a0); -extern u8 D_80062C04[]; -extern M2C_UNK D_8018D2A0; -extern void func_801520DC(s32 arg0); -extern void func_801470B4(s32 a0); -extern void func_8015369C(s32 a0); -extern void func_80152194(s32 *a0); -extern s32 func_801536DC(s32 a0); -extern void func_8015220C(s32 a0); -extern s32 func_80153800(s32 a0); -extern void func_801522CC(s32 a0); -extern void func_80152254(s32 *a0); -extern void (*D_8018D2C4[])(void); -extern void func_80152370(void *a0); -extern void func_801523F4(s32 a0); -extern void func_801523AC(s32 a0); -extern void func_8001382C(s32 a0, void *a1, void *a2); -extern u8 D_8018D2D0[]; -extern void func_801523F4(s32 arg0); -extern void func_801525F4(int); -extern s32 func_801535F4(void *arg0); -extern void func_8015BF48(s32 *a0); -extern void func_80152500(int param_1); -extern void func_801525F4(s32 a0); -extern void (*D_8018D2E0[])(void); -extern void func_80152698(void *a0); -extern void func_80152714(s32 a0); -extern void func_801526D4(s32 a0); -extern void func_80152790(s32 a0); -extern void (*D_8018D2F8[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018D2E8; -extern void func_801528B0(s32 arg0); -extern void func_8015294C(s32 a0); -extern void func_80152A08(s32 a0); -extern void func_80152AC8(s32 a0); -extern void func_80152A50(s32 *a0); -extern void (*D_8018D30C[])(void); -extern void func_80152B6C(void *a0); -extern void func_80152BF0(s32 a0); -extern void func_80152BA8(s32 a0); -extern void func_80152C80(s32 *a0); -extern void func_80152C40(s32 *a0); -extern void (*D_8018D328[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018D318; -extern void func_80152DA8(s32 arg0); -extern void func_80152E4C(s32 a0); -extern void func_80152EFC(s32 a0); -extern void func_80152FBC(s32 a0); -extern void func_80152F44(s32 *a0); -extern void (*D_8018D33C[])(void); -extern void func_80153060(void *a0); -extern void func_801530E4(s32 a0); -extern void func_8015309C(s32 a0); -extern void func_80155440(s32 *a0); -extern void func_801530E4(s32 arg0); -extern void func_80153150(struct S80153150 *a0); -extern void func_801531BC(s32 a0); -extern void func_8015327C(s32 a0); -extern void func_80153204(s32 *a0); -extern void (*D_8018D350[])(void); -extern void func_80153320(void *a0); -extern void func_801533A4(s32 a0); -extern void func_8015335C(s32 a0); -extern void func_80153410(s32 *a0); -extern void func_80153490(s32 a0); -extern void func_80153550(s32 a0); -extern void func_801534D8(s32 *a0); -extern void (*D_8011DB28)(s32 a0); -extern s32 func_801536DC(s32 param_1); -extern void func_800139C8(s32 a0, void *a1, void *a2); -extern s32 func_80153978(s32 a0, u16 *src); -extern s32 func_80133784(s32 a0, void *src, s32 dst); -extern s32 func_801539F8(s32 a0, void *a1); -extern s32 func_801539F8(s32 a0, void * a1); -extern s32 func_8016DA04(s32 a0); -extern s32 func_80153BD8(s32 a0); -extern s32 func_80153BF0(s32 a0); -extern void func_80153C18(void); -extern u16 D_8011F748; -extern void func_80153C30(void); -extern void func_80153C74(s16 a0, s16 a1); -extern s16 D_8011DB18; -extern void func_80153C44(int a0, int a1, s16 a2); -extern s16 D_8011DB0C; -extern s32 D_80115210; -extern void func_80153C8C(void); -extern void func_80153C9C(void); -extern s32 func_80153CBC(void); -extern s32 D_8018D364; -extern void (*D_8018D38C[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018D36C; -extern void func_80153D7C(s32 param_1); -extern void func_8015410C(void); -extern void func_80153E00(s32 param_1); -extern void func_80151664(void); -extern void func_80154134(u8 *a0); -extern void func_80154190(u8 *a0, s32 a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154218(u8 *a0, s32 a1, s32 a2); -extern void func_801541D8(u8 *a0, s32 a1, s32 a2); -extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); -extern void func_801542A4(); -extern void func_801542A4(s32 *a0, s32 a1); -extern void func_8015430C(); -extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); -extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); -extern s32 func_80154358(void * arg0); -extern void func_80154AB4(s32 a0, s32 a1); -extern void func_80154B20(s32 a0, s32 a1, s32 a2); -extern void func_80154AE0(s32 a0, s32 a1, s32 a2); -extern void func_80154B7C(u8 *a0, s32 a1); -extern void func_80154B4C(u8 *a0, s32 a1); -extern void func_80154BC8(void *a0, s32 a1, s32 a2); -extern void func_80154B98(void *a0, s32 a1, s32 a2); -extern u8 D_800D8D10[]; -extern s16 D_80078E9E; -extern void func_801550FC(s32 a0); -extern void func_80154ED8(s32 a0, s32 a1); -extern void func_80154F9C(s32 a0); -extern void func_800183E0(s32 a0); -extern void func_801550FC(s32 arg0); -extern void func_8001D150(s32, s32); -extern void func_8001D130(int, int); -extern void func_80155150(int param_1); -extern s32 D_800DE2A4[]; -extern void func_801552F4(s32 a0); -extern void func_80155344(s32 a0); -extern s32 func_80155394(s32 *a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80029178(s32); -extern int (*D_8018D3D8[])(void); -extern s32 func_80155458(s32 param_1); -extern s32 func_801659DC(u8 *a0); -extern s32 func_801554B8(void *arg0); -extern void func_801555F4(void *a0); -extern void func_80155518(s32 *a0); -extern void func_80155580(void *a0); -extern void (*D_8018D3DC[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern s32 func_80155800(s32 arg0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern s32 func_80029B4C(s32 a0, s32 a1); -extern s32 func_80029BC8(s32 a0, s32 a1); -extern s32 func_80029C44(s32 a0, s32 a1); -extern s32 func_8015640C(s32 a0, s32 a1); -extern s32 rand(void); -extern u32 func_8015616C(s32 param_1, u16 param_2); -extern u16 func_80156370(u16 param_1); -extern s32 func_801564B0(s32 a0); -extern s32 func_8002A1B4(void); -extern s32 func_8002A400(void); -extern s32 func_8002A670(void); -extern s32 func_8002A8E0(void); -extern s32 D_801151E0[]; -extern s32 func_801565C0(void); -extern void func_80156A14(s32 *a0); -extern void func_80156648(s32 *a0); -extern u8 D_8011DAD8[]; -extern s32 func_8014C568(s16 *a0, s16 *a1); -extern void func_801567BC(s32 a0); -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018D840[]; -extern void func_80156A1C(s32 param_1, s32 param_2); -extern s32 D_801150E0[]; -extern void func_80156A88(s32 a0, s32 a1); -extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); -extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); -extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); -extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern s32 func_80135004(s32 a0, void *a1, s32 a2); -extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801575E4(void *a0); -extern void func_801574DC(s32 *a0); -extern void func_80157544(void *a0); -extern void (*D_8018D850[])(void); -extern void func_8014CC28(s32 a0); /* defined */ -extern s32 func_8014F3E8(s32 a0); /* declared */ -extern void func_8015BDD0(s32 *a0); /* defined */ -extern void func_801575E4(void *a0); /* defined */ -extern void func_80157580(s32 arg0); -extern u8 D_800D4F14[]; -extern void func_801576A8(void *arg0); -extern s32 func_8015773C(u8 *a0); -extern s32 func_8015771C(u8 *a0); -extern s32 func_8015773C(u8 * arg0); -extern int D_801E96D0; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018D878[])(void); -extern void func_80157808(void *param_1); -extern void func_80157880(s32 a0); -extern s32 func_801725A4(u8 *a0); -extern u8 D_800D5128; -extern u8 D_8018D858; -extern void func_801578C0(s32 param_1); -extern void func_80147A84(int); -extern void func_80148038(int, int); -extern void func_80147460(int); -extern void func_80146D90(int); -extern void func_80161450(void *a0); -extern void func_80157A8C(int); -extern void func_80154A74(int, int); -extern unsigned char D_800D5178; -extern unsigned char D_8018D868; -extern void func_8015795C(int param_1); -extern void func_80161D20(s32 a0, s32 a1); -extern void func_80157A8C(s32 a0); -extern void func_8016706C(s32 a0); -extern u8 D_800D51AC[]; -extern void func_80157AC8(s32 param_1); -extern void func_80157B74(int param_1); -extern void func_8016158C(void *a0); -extern void func_8015BE04(s32 *a0); -extern void func_80157BC8(s32 a0); -extern void func_80157CCC(s32 a0); -extern void func_80157DC4(void *a0); -extern void func_80157FC4(void *a0); -extern void func_80157D74(u16 *a0); -extern void (*D_8018D8B8[])(void); -extern void func_80157E38(void *); -extern void func_80157E00(void *a0); -extern void func_80157E38(void * a0); -extern s32 func_80157F64(s32 *a0); -extern s32 func_80156600(void *a0); -extern void func_80157EA4(void *a0); -extern void (*D_8018D8C0[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018D88C; -extern void func_80158038(void * param); -extern u8 D_800D524C[]; -extern void func_80161418(void *a0); -extern void func_801580B4(s32 a0); -extern void func_801581AC(s32 a0); -extern void (*D_8018D8CC[])(void); -extern void func_8015824C(void *a0); -extern void func_801582C0(void *); -extern void func_80158288(void *a0); -extern u8 D_800D52A8[]; -extern void func_801585A4(s32 *a0); -extern void func_801582C0(void *a0); -extern s32 func_801585AC(s32 *a0); -extern u8 D_800D52E8[]; -extern void func_80158344(s32 *a0); -extern s32 func_801615C4(void *a0, s32 a1); -extern u8 D_8018D89C; -extern u8 D_800D533C; -extern void func_80158434(s32 param_1); -extern void func_80158548(s32 param_1); -extern void func_801585EC(u8 *a0); -extern void func_80158794(void); -extern s32 D_801E96D8; -extern s32 D_801E96E4; -extern s32 D_801E96E8; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018D908[])(s32 *); -extern void func_80158AE4(void *a0); -extern void func_80158AB4(void *a0); -extern void func_8016F264(void); -extern void func_80165840(void); -extern void func_801658DC(void); -extern void func_80165A78(s32); -extern void func_80158AE4(void * a0); -extern M2C_UNK D_800D58D8; -extern void func_80158BB0(void *arg0); -extern s32 func_80159404(s32 a0, s32 a1); -extern void func_80158C40(s32 *a0); -extern void func_80158CD8(s32 *a0); -extern s32 func_80159434(s32 a0, s32 a1); -extern void func_80158D60(s32 a0); -extern M2C_UNK D_800D5904; -extern void func_80158E24(s32 *a0); -extern s32 D_8018D8DC[]; -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80158F00(int param_1); -extern u8 D_80110C3C[]; -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80158FA4(s32 param_1); -extern s32 func_801399F0(s32 a0); -extern u8 D_80110C94[]; -extern u8 D_80110CD4[]; -extern void func_80159070(void *a0); -extern s32 func_80029A94(s32); -extern void func_80175454(void); -extern void func_800298BC(void *); -extern void func_8002992C(s32); -extern void func_800CF804(void); -extern void func_800CF818(void); -extern u8 D_80110D0C[]; -extern void func_80159120(s32 a0); -extern void func_801592CC(s32 *a0); -extern u8 D_800AE6BD; -extern s32 D_801E96E0; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018DB58[])(void); -extern void func_80159698(void *a0); -extern s32 func_801596D4(void *a0); -extern void func_80174B6C(void); -extern void func_80129248(s16 a0); -extern void func_8013C938(void); -extern void func_8013CB20(void); -extern void func_8013C98C(void); -extern void func_8002850C(s32, s32, s32); -extern void func_80028620(s32, void *); -extern s16 D_800B9AAC[]; -extern s16 D_800B9B00; -extern u16 D_801270C0; -extern u32 D_800AFAE8[]; -extern char D_8018D978[]; -extern s32 func_801596F0(s32 param_1); -extern s32 func_80159874(void); -extern void func_800167B8(s32 a0); -extern s32 func_8015987C(s32 a0); -extern int func_800167F0(int arg); -extern int func_801598BC(void); -extern void func_80159968(void *a0); -extern void func_801598E0(u8 *a0); -extern void (*D_8018DBFC[])(void); -extern void func_80159A20(void *a0); -extern void func_801599E0(void *a0); -extern void func_80159A18(void); -extern void func_80159BE4(s32); -extern void func_80159B08(s32 *a0); -extern void func_80159B70(void *a0); -extern void func_80159B3C(void * a0); -extern void (*D_8018DD50[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018DB6C; -extern void func_80159BE4(s32 arg0); -extern void func_8015A1C8(s32 a0); -extern void func_8015A2D8(s32); -extern void func_8015A1FC(s32 *a0); -extern void func_8015A264(void *a0); -extern void func_8015A230(s32 *a0); -extern void (*D_8018DD58[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018DB7C; -extern s32 func_80172608(u8 *a0); -extern void func_8015A2D8(s32 param_1); -extern u8 D_800D48DC; -extern s32 func_8015AB7C(s32 a0); -extern s32 D_8011F9C4; -extern s32 func_8015ABD4(s32 a0, s32 a1, s32 a2); -extern s32 func_80161CD0(s32 a0, s32 a1); -extern M2C_UNK D_8018DB9C; -extern void func_8015AC48(s32 arg0); -extern void func_8015AC90(s32 a0); -extern void func_8015ADB0(s32 a0); -extern void func_8015ACC4(s32 *arg0); -extern void func_8015AD3C(void *a0); -extern void func_8015AD08(void *arg0); -extern void (*D_8018DD60[])(void); -extern void func_8015ADB0(s32); -extern void func_8015AD78(s32 a0); -extern void func_8015ADB0(s32 arg0); -extern s32 D_800D4A9C; -extern int func_8015B6F4(int param_1); -extern u8 D_800D4F8C[]; -extern s32 func_8015B7B4(s32 a0); -extern u8 D_800D4BE0[]; -extern s32 func_8014A51C(void); -extern s32 func_8015B858(u8 *a0); -extern s32 D_800D4B48; -extern void func_8015B8F8(s32 *a0); -extern void func_8015BD8C(s32 *a0); -extern s32 func_8015BE94(); -extern void func_8015BE38(struct Obj *a0); -extern s32 func_8015BE74(void); -extern void func_80161124(void *a0); -extern s32 func_8015BE94(s32 *a0); -extern s32 func_8015AE2C(); -extern s32 func_8015BEC4(void); -extern s32 func_8015B950(s32 arg0); -extern s32 func_8015BEE4(void); -extern void func_8015BF04(s32 *a0); -extern void func_8015C0C4(s32 a0); -extern void func_8015BFF4(void *a0); -extern void func_8015BF7C(s32 *a0); -extern void func_8015C030(s32 *a0, s32 a1); -extern void func_8015BFB0(s32 *a0, s32 a1); -extern void (*D_8018DD88[])(void); -extern void func_8015C0C4(s32); -extern void func_8015C08C(s32 a0); -extern s32 func_8015C128(s32 param_1); -extern void func_8015C6A4(void); -extern void func_8015C788(s32 a0); -extern void func_8015C6AC(s32 *a0); -extern void func_8015C714(void *a0); -extern void func_8015C6E0(s32 *a0); -extern void (*D_8018DD94[])(void); -extern void func_8015C788(s32); -extern void func_8015C750(s32 a0); -extern void func_8015CB94(s32 a0); -extern void func_8015CBCC(void); -extern void func_8015CBD4(void); -extern void func_8015CBDC(void); -extern void func_8015CBE4(void); -extern void func_8015CBEC(void); -extern void func_8015CBF4(void); -extern void func_8015CBFC(void); -extern void func_8015CC04(void); -extern void func_8015CC0C(s32 *param_1); -extern void func_8015CC74(s32 *a0); -extern void func_8015CC40(s32 *a0); -extern s32 func_8015CCD0(); -extern s32 func_8015CCB0(void); -extern s32 func_801725E0(u8 *a0); -extern s32 func_8015CCD0(s32 param_1); -extern s32 func_8015CD20(s32 arg0); -extern void func_8015CF24(s32 a0); -extern void func_8015D01C(); -extern void func_8015CF58(s32 *param_1); -extern void func_8015CFC0(s32 *a0); -extern void func_8015CF8C(s32 *a0); -extern void func_8015CFFC(void); -extern void func_8015D01C(int param_1); -extern void (*D_8018DC08[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018DE38; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018CF1C[]; -extern void func_8015D414(int param_1); -extern void func_8015D57C(s32); -extern void func_8015D480(s32 *a0); -extern s32 func_8015D4E8(s16 *a0); -extern void func_8015D4B4(s16 *a0); -extern void func_8015D524(s32 arg0); -extern void func_8015D544(s32 a0); -extern void func_801746DC(void); -extern void func_8015D57C(s32 arg0); -extern s32 func_80161B18(void *a0); -extern s32 func_80161B84(void *a0); -extern void func_80154150(int, int); -extern void func_80149374(int, int); -extern unsigned char D_8018DE4C[]; -extern void func_8015D5E8(int param_1); -extern int func_8015E0D4(int); -extern void func_8015DA5C(s32 a0); -extern void func_8015DB6C(s32 a0); -extern void func_8015DA90(s32 *a0); -extern void func_8015DAF8(s32 *a0); -extern void func_8015DB6C(s32); -extern void func_8015DB34(s32 a0); -extern void func_8015DCB8(s32 a0); -extern void func_8014BD60(s32 a0, s32 a1); -extern int func_8015DD74(int); -extern void func_8015DBD4(void *arg0); -extern int func_8015DC84(int a0); -extern s8 D_8018DE88[]; -extern void func_8015DCB8(s32 param_1); -extern int func_8015DD74(int arg0); -extern void func_8015DECC(s32 a0); -extern void func_8015DDF0(s32 *a0); -extern void func_8015DE58(s32 *a0); -extern void func_8015DECC(s32); -extern void func_8015DE94(s32 a0); -extern void func_8015E018(s32 a0); -extern void func_8015DF34(void *arg0); -extern int func_8015DFE4(int a0); -extern void func_8015E018(s32 param_1); -extern int func_8015E0D4(int a0); -extern void func_8015E22C(s32 a0); -extern void func_8015E150(s32 *a0); -extern s32 func_8015E1B8(s32 a0); -extern void func_8015E184(s32 *arg0); -extern void func_8015E22C(s32); -extern void func_8015E1F4(s32 a0); -extern u8 D_800D4FF4[]; -extern u8 D_800D5098[]; -extern u8 D_800D5060[]; -extern s32 func_8014A850(s32 a0); -extern void func_8015E40C(s32 a0); -extern void func_8015E588(void); -extern void func_8015E4B0(s32 a0); -extern void func_8015E288(s32 a0); -extern u16 D_8018DED0; -extern u16 D_8018DED2; -extern u16 D_8018DED4; -extern s32 D_8018DED8; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -extern void func_8013C9C4(void *a0); -extern s32 D_8018DEE0; -extern void func_8015E5B0(u8 *self); -extern void func_8015E714(s32 *a0); -extern void func_8015E95C(s32); -extern void func_8015E84C(s32 *a0); -extern void func_8015E8E8(s32 *a0); -extern void func_8015E9B8(s32 *a0); -extern void func_8015E8B4(s32 *a0); -extern void func_8015E924(s32 a0); -extern void func_8015E95C(s32 a0); -extern s16 D_801152A0; -extern void func_80160818(s32 *a0); -extern void func_8015ED6C(s32 *a0); -extern void func_8015EE7C(s32); -extern void func_8015EDA0(s32 *a0); -extern s32 func_8015EE08(s32 a0); -extern void func_8015EDD4(s32 *arg0); -extern void func_8015EE44(s32 a0); -extern int D_800D4C48; -extern int D_8018DBEC; -extern void func_8015EE7C(s32 param_1); -extern void func_8015EEE0(void *arg0); -extern void func_8015EF9C(void); -extern void func_8015F080(s32); -extern void func_8015EFA4(s32 *a0); -extern void func_8015F00C(s32 *a0); -extern void func_8015EFD8(s32 *a0); -extern void func_8015F048(s32 a0); -extern void func_8015F080(s32 a0); -extern s32 D_80062BE8; -extern void func_801466F0(s32, s32, s32, s32, s32, s32, s32, s32); -extern s32 func_80161208(void); -extern void func_8015F118(void *a0); -extern void func_8015F260(s32 *a0); -extern void func_8015F380(); -extern void func_8015F2BC(s32 *a0); -extern void func_8015F324(s32 *a0); -extern void func_8015F2F0(s32 *a0); -extern void func_8015F360(void); -extern s32 func_801725B8(u8 *a0); -extern void func_8015F380(void* arg0); -extern void func_8015F738(s32 *a0); -extern void func_8015F848(s32 *a0); -extern void func_8015F76C(s32 *a0); -extern s32 func_8015F7D4(s32 a0); -extern void func_8015F7A0(s32 *arg0); -extern void func_8015F810(s32 *a0); -extern void func_80147078(s32 *, s16); -extern void func_80159B70(void *); -extern void func_8015F89C(void *arg0); -extern void func_8015F948(s32 *param_1); -extern void func_8015F9A4(void *arg0); -extern void func_8015FA24(s32 arg0); -extern void func_8015FBE0(s32 *a0); -extern void func_8015FA44(s32 *a0); -extern void func_8015FAAC(s32 *a0); -extern void func_8015FA78(s32 *a0); -extern s32 func_801612B8(void *a0, s32 a1); -extern void func_8016007C(s32 a0); -extern void func_8015FAE8(void *arg0); -extern void func_8015FCC8(void *param_1); -extern unsigned int D_8018DF64[]; -extern void func_8015FD74(int param_1); -extern s32 func_80028DE0(void); -extern u8 func_80165700(s32 a0, s32 a1); -extern void func_8015FDCC(s32 a0); -extern u8 D_80078EC2; -extern u8 func_801656E8(s32 a0, s32 a1); -extern void func_80165670(s32 a0, s32 a1); -extern void func_8016004C(s32 a0); -extern void func_8015FF20(void *param_1); -extern void func_801601AC(s32 *a0); -extern void func_801600D0(s32 *a0); -extern void func_80160138(s32 *a0); -extern void func_80160104(s32 *a0); -extern void func_80160174(s32 *a0); -extern void func_801601E4(s32 *a0); -extern void func_80160244(s32 *a0); -extern void func_8016032C(void); -extern void func_80160410(s32 *a0); -extern void func_80160334(s32 *a0); -extern void func_8016039C(s32 *a0); -extern void func_80160368(s32 *a0); -extern void func_801603D8(s32 *a0); -extern u8 D_80062BD0; -extern void func_80160410(s32 * a0); -extern void func_801607B8(s32 *a0); -extern void func_801608C0(s32 *a0); -extern void func_801607E4(s32 *a0); -extern void func_8016084C(s32 *a0); -extern void func_80160888(s32 *a0); -extern void func_80160A28(s32 a0); -extern void func_80160A74(s32 *a0); -extern void func_80160BB4(s32 *a0); -extern void func_80160ACC(s32 *a0); -extern s32 func_80160B34(s32 a0); -extern void func_80160B00(s32 *arg0); -extern void func_80160B70(s32 a0); -extern void func_80160C28(void *arg0); -extern void func_80160CB4(s32 *a0); -extern void func_80160D10(void *arg0); -extern void func_80160DEC(u8 *a0); -extern void func_80160F00(); -extern void func_80160E3C(s32 *a0); -extern void func_80160EA4(); -extern void func_80160E70(s32 *a0); -extern void (*D_8018E014[])(void); -extern void func_80160EA4(void *a0); -extern void func_80160EE0(void); -extern void func_80160F00(void* arg0); -extern void func_800D0F4C(s32 a0); -extern u8 D_80110EC0; -extern void func_80160F70(s32 a0); -extern void func_80160FE0(s32 *a0); -extern void func_80161034(void *a0); -extern void func_80161094(s32 a0); -extern void func_801610FC(void); -extern void func_801483E8(void); -extern s32 func_80161A60(s32 a0); -extern void func_8016130C(void *a0, s32 a1); -extern void func_80161240(void *a0); -extern void func_80161374(void *a0, s32 a1); -extern void func_80161278(void *a0); -extern s32 func_801612B8(void * a0, s32 a1); -extern void func_8016163C(void *a0, s32 a1); -extern void func_80161774(void *a0, s32 a1); -extern s32 func_8016197C(s32 a0, s32 a1); -extern s32 func_80161488(void *a0); -extern void func_80161888(void *a0, s32 a1); -extern void func_801614E4(void *a0); -extern void func_8016191C(void *a0, s32 a1); -extern void func_8016151C(void *a0); -extern void func_80161554(void *a0); -extern s32 func_801615C4(void * arg0, s32 arg1); -extern s32 func_801619A4(s32 *a0); -extern s32 func_80161A00(s32 a0); -extern s32 func_80161A30(s32 a0); -extern int func_801497A8(void); -extern int func_80161BE0(void *param_1); -extern u16 D_8018E044[]; -extern void func_80161C98(int param_1, u32 param_2); -extern void func_80161E08(s32); -extern s32 func_80162438(s32); -extern s32 D_800AE6A8; -extern void func_800D1734(void *); -extern s32 D_8018E0A8; -extern void func_80161D88(void); -extern void func_80161E08(s32 param_1); -extern int func_800291DC(int); -extern int func_800D0E30(void *a0); -extern int func_801620C4(void); -extern s32 func_800D0D7C(s32, s32); -extern int D_801E96F0[]; -extern void func_8016216C(void); -extern u8 D_80078EB0; -extern u8 D_80078EB1; -extern s32 func_801621CC(s32 arg0); -extern void func_801622C4(void); -extern void (*D_8018E0CC[])(void); -extern void func_80162330(void *a0); -extern void func_8014706C(void *a0); -extern s32 func_8016236C(u8 *a0); -extern void func_800D0C48(s32 a0); -extern s32 func_801623B8(s32 *a0); -extern s32 func_800167F0(s32 a0); -extern s32 func_80162414(void); -extern s32 func_80162438(s32 _unused0); -extern int func_801626B8(void); -extern void func_80162714(void); -extern int D_801E9748[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018E114[])(void); -extern void func_80162834(void *a0); -extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80162968(s32 a0); -extern s32 func_80162ACC(u8 *a0); -extern u8 D_800B5CB8; -extern s32 D_8018E104; -extern s32 D_800B5CBC; -extern u8 D_800B5CDF; -extern s32 D_800B5CEC; -extern void func_80162870(s32 param_1); -extern void func_801628F4(s32 *a0); -extern void func_80162968(s32 param_1); -extern void func_80162AC0(s32 *a0, s8 a1); -extern s32 func_80162AE0(u8 *a0); -extern void func_80162AF4(void); -extern void func_80162CC4(void); -extern s32 D_80126D40; -extern void func_80162B1C(void); -extern void func_80162D28(s32 *a0); -extern void func_80162D88(s32 *a0); -extern void func_80162DE8(s32 *a0); -extern void func_80162E48(s32 *a0); -extern void func_80162EA8(s32 *a0); -extern void func_80162F60(s32 arg0, s32 arg1); -extern void func_80162F80(s32 arg0, s32 arg1); -extern void func_80162FA0(s32 arg0, s32 arg1); -extern void func_80162F08(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80162FC0(s32 *a0); -extern void func_80162FF4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801630C4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163194(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg4); -extern void func_8016325C(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163234(s32 a0); -extern s32 D_80115100; -extern s32 func_801632E0(void); -extern s32 D_80115200; -extern s32 func_801632F0(void); -extern u16 D_80126B18[]; -extern void func_80163328(void); -extern s32 func_801633A8(void); -extern s32 func_80163408(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void func_80163534(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, u16 * a5); -extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); -extern char D_801E8DBC[8]; -extern void *memcpy(void *dst, const void *src, unsigned int n); -extern void func_801634D8(s32 param_1, u16 param_2, u16 param_3, s32 param_4, u16 param_5); -extern void func_80157158(); -extern void func_80163664(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801636D0(s32 a0, s32 a1); -extern s32 func_8016380C(struct S8016380C *a0, s32 a1); -extern void *memcpy(void *dst, void *src, s32 n); -extern s32 func_801638A0(u8 *a0, s32 a1); -extern s32 func_80163950(s32 a0); -extern void (*D_8018E11C[])(void); -extern void func_80163A58(void *a0); -extern void func_80163A94(s32 param_1); -extern void func_80163C2C(s32 param_1); -extern void func_80163EC8(s32 param_1); -extern void func_80164270(s32 *a0); -extern void func_80164418(void); -extern void func_80163764(s32 a0); -extern void func_801642AC(s32 a0); -extern void func_8016432C(s32 a0); -extern void func_80164410(void); -extern s32 func_80012DBC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164530(s32 arg0); -extern void (*D_8018E170[])(void); -extern void func_80164744(s32 param_1); -extern void func_8001C810(s32 a0, s32 a1); -extern void func_80164A74(s32 *a0); -extern void func_80164930(s32 a); -extern u16 D_800DF2E0; -extern s32 D_8018E138; -extern s16 D_8018E16C; -extern s16 D_8018E16A; -extern s16 D_8018E168; -extern void func_801647A4(int param_1); -extern void func_80164ACC(); -extern void func_80164864(void *a0); -extern void func_80164930(s32 param_1); -extern s32 func_8014C308(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164ACC(s32 a0); -extern void (*D_8018E17C[])(void); -extern void func_80164BA0(void *a0); -extern void func_8001CD50(s32 a0, s32 a1); -extern void func_800233CC(void *, unsigned short); -extern void func_80164DD0(s32 a0); -extern void func_80164DB0(void); -extern u8 D_801E97A8; -extern u8 D_801E97A9; -extern u8 D_801E97AA; -extern u8 D_801E97AB; -extern u8 D_801E97AC; -extern u8 D_801E97AD; -extern u8 D_801E97AE; -extern u8 D_801E97AF; -extern void func_80164BDC(s32 param_1); -extern void func_80164E40(void); -extern void func_80164CD4(u8 *a0); -extern void func_80164D4C(void *arg0); -extern void (*D_8018E18C[])(void); -extern void func_80164EA4(void *a0); -extern void func_80165124(void *a0); -extern void func_80164EE0(int param_1); -extern s32 func_80165140(s32 a0); -extern void func_801651B8(void *a0); -extern void func_80164F44(void *arg0); -extern void func_80165024(void *a0); -extern void func_80165064(s32 *a0); -extern void func_801650C4(s32 *a0); -extern s32 func_80165140(s32 param_1); -extern s32 func_80165240(s32 a0, s32 a1, s32 a2); -extern s32 D_801E97E8; -extern void func_801651B8(void * param_1); -extern u8 D_80126CF8; -extern void func_8016533C(void); -extern void func_801653F4(s32 a0); -extern void func_80165580(s32 a0); -extern void func_80165374(s32 a0); -extern void func_80165580(s32 _arg0); -extern void func_801653B8(s32 *a0); -extern s32 func_80165624(s32 a0); -extern u8 D_80078EC5; -extern void (*D_8018E1D0[])(void); -extern u8 func_80165658(s32 a0, s32 a1); -extern void func_800CAE0C(s32 a0); -extern void func_801654A8(s32 arg0); -extern void func_80165B28(void *a0); -extern void func_801655E4(s32 a0); -extern u8 D_8018E24C[]; -extern s32 D_8018E26C[]; -extern u8 D_8018E2E8[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018E308[]; -extern u8 D_8018E328[]; -extern void func_800CAF6C(void); -extern void func_80165770(void); -extern void func_801657D8(void); -extern u8 D_80078EC3; -extern void func_801657A0(void); -extern s32 D_80078EA0; -extern s32 D_80078EA8; -extern u8 D_80078EBB; -extern s32 D_80078ED4; -extern s32 D_80078ED8; -extern s32 D_80078EDC; -extern u8 D_80078EE0; -extern void func_80165874(void); -extern s8 D_80078EC4; -extern void func_801658EC(void); -extern s32 func_80165900(void); -extern s32 func_80165910(void); -extern s32 D_8012672C; -extern s32 D_8012811C; -extern s32 D_80126B08; -extern void func_80165938(void); -extern void func_80165958(void); -extern s32 func_80165978(void); -extern void func_80165988(void); -extern s32 func_801659A8(void); -extern void func_801659B8(void); -extern s32 func_801659CC(void); -extern void func_80165A18(void); -extern s32 func_80165A50(s32 _arg0); -extern void func_80165AC8(void); -extern void func_80165A78(s32 arg0); -extern void (*D_8018E3C4[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_8018E440[])(void); -extern void func_80165BB4(u8 *a0); -extern void func_80165B6C(u8 *a0); -extern void func_80165C58(s32 arg0); -extern void func_80165BFC(void *a0); -extern void func_80165C78(void); -extern M2C_UNK D_801E8DCC; -extern void func_80165E2C(u16 *arg0); -extern s32 func_80165FA4(s32 a0, s32 a1, s32 a2); -extern s32 func_80167DBC(s32 a0, s32 a1, s32 a2); -extern s32 func_80167AE0(s32 a0, s32 a1, s32 a2); -extern void func_80165E90(void); -extern void func_80020F34(s32 a0, s32 a1); -extern s32 func_80165FA4(s32 arg0, s32 arg1, s32 arg2); -extern void (*D_8018E44C[])(void); -extern void func_80166018(void *a0); -extern void func_80166054(s32 arg0); -extern void func_801661CC(s32 param_1); -extern void func_80166244(void* arg0); -extern void func_8016629C(void *a0); -extern void func_801662F4(void *a0); -extern void func_8016634C(void *a0); -extern void func_801663A4(void *a0); -extern void (*D_8018E454[])(void); -extern void func_801663FC(void *a0); -extern u8 D_800D387C[]; -extern u8 D_800D3888[]; -extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); -extern void func_800D1FC8(s32 a0, s32 a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern void func_801665B4(); -extern void func_80146C3C(); -extern void func_80166438(u8 *a0); -extern s32 func_80128ED8(s32 param_1, s32 *param_2); -extern void func_800D22E4(s32 a0); -extern void func_801665B4(s32 *a0); -extern void (*D_8018E51C[])(void); -extern void func_80166618(void *a0); -extern void (*D_8018E52C[])(void); -extern void func_80166654(void *a0); -extern s32 func_80166690(s32 param_1, s32 param_2); -extern s32 func_80166994(); -extern s32 func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern s32 func_80167540(s32 arg0); -extern void (*D_8018E53C[])(void); -extern void func_801678B4(void *a0); -extern void RotMatrixYXZ(void *a0, void *a1); -extern void func_80048EAC(void *a0, void *a1); -extern s32 func_801670E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80146C3C(void); -extern void func_801678F0(s32 a0); -extern void (*D_8018E548[])(void); -extern void func_80167A9C(void *a0); -extern void func_80167AD8(void); -extern s32 func_80167AE0(s32 param_1, s32 param_2, s32 param_3); -extern void func_80168070(s32 a0, s16 *a1, s16 *a2, void *a3); -extern u8 D_8018E4A8[]; -extern u8 D_8018E4BC[]; -extern s32 func_80167DBC(s32 arg0, s32 arg1, s32 arg2); -extern void func_800D20C0(void *a0, void *a1, s32 a2); -extern void func_80017E68(void *a0, void *a1); -extern void func_800D23D0(void *a0); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern s32 D_801269A4; -extern s32 D_801269A8; -extern s32 D_801269AC; -extern void func_80168070(s32 param_1, s16 *param_2, s16 *param_3, void *param_4); -extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_8016829C(s32 a0); -extern s32 func_80166690(s32 a0, s32 a1); -extern void func_80168328(s32 arg0); -extern void func_801683D8(s32 a0); -extern void func_801684B4(s32 a0); -extern void func_80168540(s32 a0); -extern void func_801685EC(s32 a0); -extern void func_80168640(s32 a0); -extern s32 RotMatrixX(s32 a0, void *a1); -extern void func_80168664(void *arg0); -extern void (*D_8018E560[])(void); -extern void func_80168744(void *a0); -extern void func_80168BDC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801687CC(s32 a0); -extern void func_80168780(s32 a0); -extern void func_80168828(void); -extern void func_801687CC(s32 param_1); -extern void func_80168828(); -extern void (*D_8018E568[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_8018E570[])(void); -extern void func_80168AA8(void *a0); -extern void func_80168AE4(s32 a0); -extern void func_800D2318(void); -extern void func_80168BDC(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void (*D_8018E578[])(void); -extern void func_80168D58(void *a0); -extern void func_80168D94(int a0); -extern void func_80168F40(); -extern void func_80168EC4(s32 a0); -extern void func_80168F40(void *arg0); -extern void (*D_8018E580[])(void); -extern void func_8016901C(void *a0); -extern void func_80169058(s32 a0); -extern s32 func_80169228(void); -extern void func_801691B8(void *a0); -extern void (*D_8018E588[])(void); -extern void func_801693CC(void *a0); -extern void func_80169584(s32 param_1); -extern void func_80169408(s32 a0); -extern void func_8016951C(int param_1); -extern s32 func_80017758(void *a0, void *a1); -extern s32 func_80017DC4(void *a0, void *a1); -extern void func_801696D8(s32 a0, s32 a1); -extern void (*D_8018E590[])(void); -extern void func_80169830(void *a0); -extern void func_8016986C(s32 a0); -extern s32 func_80169A4C(s32 a0, s32 a1); -extern void func_801699D0(void *arg0); -extern void (*D_8018E644[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_8018E64C[])(void); -extern void func_80169F00(void *a0); -extern char D_8018E5FC[]; -extern char D_8018E5BC[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8018E684[])(void); -extern void func_8016A020(void *a0); -extern void func_8016A05C(void *a0); -extern void func_8016A290(s32 a, void *b, void *c); -extern void func_8016A08C(s32 param_1); -extern void func_8016A1CC(int param_1); -extern void func_8016A290(s32 param_1, void *param_2, void *param_3); -extern void (*D_8018E690[])(void); -extern void func_8016A700(void *a0); -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_80126B62; -extern u16 D_80126B66; -extern void func_8016AA50(s32 param_1, s32 param_2); -extern void (*D_8018E6D8[])(void); -extern void func_8016AB30(void *a0); -extern void func_8016B234(void); -extern void func_8016AFB0(s32 a0); -extern void func_8016B114(void *arg0); -extern s32 func_8016B448(s32, s32); -extern s32 func_8016BA48(s32 a0); -extern void func_8016B3F4(s32 a0); -extern s32 func_8016B428(s32 a0); -extern void func_8016B984(void *a0); -extern s32 func_8016B448(s32 arg0, s32 arg1); -extern void (*D_8018E754[])(void); -extern void func_8016B4BC(void *a0); -extern int func_8016B9F8(int); -extern int func_8016B834(int, int); -extern void func_8016B91C(int); -extern int D_801E9B08; -extern void func_8016B4F8(int param_1); -extern s32 func_8016B9F8(s32 param_1); -extern void func_8016B6BC(s32, s32, s32, s32); -extern void func_8016B91C(s32); -extern s16 D_8018E748[]; -extern void func_8016B5C0(s32 param_1); -extern void func_8001CD9C(int, void *); -extern int *D_8018E78C[]; -extern unsigned short D_8018E794[]; -extern unsigned short D_8018E79C[]; -extern unsigned char D_801E9B10[]; -extern int func_8016B834(int param_1, int param_2); -extern void func_8016B964(SrcB964 *a0, DstB964 *a1); -extern void func_8016B91C(s32 arg0); -extern s32 D_801E9B08; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8018E7A4[])(void); -extern void func_8016BBA4(void *a0); -extern s32 func_8016BBE0(s32 param_1); -extern void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3); -extern M2C_UNK D_801E9C44; -extern M2C_UNK D_801E9C48; -extern void func_8016BCC0(void *arg0); -extern s32 func_8016BD78(s32 param_1); -extern s32 func_8016BEA0(s32 param_1); -extern void func_8016BF34(void *a0); -extern void func_8016BFD0(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern s32 D_801E9BD0; -extern void (*D_8018E7D4[])(void); -extern void func_8016C14C(void *a0); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801E9C4C[]; -extern u8 D_801E9C54[]; -extern u8 D_801E9C04[]; -extern void func_8016C2C4(s32 param); -extern s32 func_8016C49C(s32 param_1_arg); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_8016C74C(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern short func_8016CF04(s32 a0, s32 a1); -extern void func_8016C83C(s32 a0); -extern void (*D_8018E7DC[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_8018E7F8[])(void); -extern void func_8016D19C(void *a0); -extern void (*D_8018E800[])(void); -extern void func_8016D428(void *a0); -extern void func_8016D464(u8 *a0); -extern void func_8016D4DC(s32 a0); -extern void func_8016D5EC(s32 *a0); -extern short func_8016CBC0(void); -extern void func_8016D64C(int param_1); -extern void func_8016D778(s32 a0); -extern void func_800D20C0(); -extern void func_8016D848(s32 *a0); -extern void func_8016D984(s32 *a0); -extern void func_8016DBD8(u8 *a0); -extern void (*D_8018E868[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_8018E80C; -extern u8 D_8018E818; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void (*D_8018E89C[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8018E8A4[])(void); -extern void func_8016DF20(void *a0); -extern void func_8016E3CC(s32 a0); -extern void func_8016E1CC(s32 a0); -extern void func_8016E26C(s32 *a0); -extern void func_8016E2E8(void *a0); -extern void func_8016E460(void *a0, void *a1); -extern void func_8016E358(void *a0); -extern void func_8016E460(void *arg0, void *arg1); -extern void (*D_8018E8F8[])(void); -extern void func_8016E5B8(void *a0); -extern void func_8016E5F4(s32 arg0); -extern void func_8016E778(); -extern void func_8016E688(void *a0); -extern void func_8016E6E4(s32 a0); -extern void func_8016E728(u8 *a0); -extern void func_8016E7C8(int param_1, short *p1, unsigned int *p2); -extern void func_8016E778(int param_1); -extern void func_8016E7C8(int param_1, short *param_2, unsigned int *param_3); -extern s32 D_80115218; -extern void func_8016E8F0(void); -extern void func_8016E918(short param_1, short param_2); -extern s32 func_8016E95C(); -extern u16 D_8018E92C[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_8018E91C[]; -extern void func_8016EB3C(s32 p); -extern void func_8016EBA8(u8 *param_1); -extern void func_8016ED6C(void); -extern s32 D_80126D70; -extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); -extern void func_8016ED8C(s32 a0, s32 a1, s32 a2); -extern void func_8016EE40(s32 a0, s32 a1, s32 a2); -extern void func_8016EDBC(s32 a0, s32 a1, s32 a2); -extern void func_8016EE94(); -extern void func_8016EDEC(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_8016EF78(s32 a0); -extern void func_8016EE40(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_801726D0(void *a0); -extern s32 D_80126D50; -extern u8 D_80126D6C; -extern u8 D_80126D6D; -extern u8 D_80126D6E; -extern s32 D_80126D5C; -extern s32 D_80126D60; -extern s16 D_80126D64; -extern s16 D_80126D66; -extern s16 D_80126D68; -extern s16 D_80126D6A; -extern u8 D_80126D1A; -extern s32 D_80127058; -extern s32 D_8012705C; -extern s32 D_80127060; -extern s32 D_80127064; -extern s32 D_80127068; -extern s32 D_8012706C; -extern s32 D_80127070; -extern s32 D_80127074; -extern s16 D_80126D20; -extern void func_8016EE94(s32 a0, s32 a1); -extern s32 func_8016EFC8(s32); -extern s32 func_8016EFA8(s32 a0); -extern void func_8016F094(s32 *a0); -extern s32 func_8016F0AC(); -extern s32 D_8018E948; -extern void func_8016F250(void); -extern void func_8016F288(void); -extern void func_8016F2A8(void); -extern void func_8016F2C8(void); -extern void func_8016F2EC(void); -extern void func_8016F30C(void); -extern void func_8016F330(void); -extern void func_8016F350(void); -extern void func_8016F374(void); -extern void func_8016F388(void); -extern void func_8016F398(void); -extern s32 func_8016F44C(s32 a0); -extern void func_8016F470(s32 a0); -extern s32 func_8016F410(s32 a0); -extern void func_80175414(s32 _arg0); -extern s32 func_8016F4C4(s32); -extern s32 func_8016F494(s32 a0); -extern void func_8016F0E4(void); -extern s32 func_8016F4C4(s32 param_1); -extern void func_8016F4F4(void); -extern void func_801719A4(int a0, int a1); -extern void func_800D1724(s32 a0); -extern void func_80171928(void *a0); -extern void *D_8011F738; -extern void func_8016F4FC(void *a0); -extern void func_8014708C(void *a0); -extern void func_8016F540(void *a0); -extern void func_8016F578(s32 *a0); -extern void func_8016F5B0(void *a0); -extern void func_80147060(u8 *a0); -extern void func_8016F5E0(u8 *a0); -extern void func_8016F610(void *a0); -extern void func_8016F648(void *a0); -extern void func_8016F680(void *a0); -extern void func_8016F6B0(void *a0); -extern void (*D_8018E9C0[])(void); -extern void func_8016F6E0(void *a0); -extern s32 func_80171990(u8 *a0); -extern void func_8016F764(void *a0); -extern void func_8016F71C(u8 *a0); -extern void (*D_8018E9C8[])(void); -extern void func_8016F798(void *a0); -extern void func_8016F804(void *a0); -extern void func_8016F7D4(u8 *a0); -extern void func_80171928(void *); -extern void (*D_8018E9D0[])(void); -extern void func_8016F834(void *a0); -extern void func_8016F8AC(u8 *a0); -extern void func_8016F870(u8 *a0); -extern void func_80172358(u8 *a0, u8 *a1); -extern void (*D_8018E9D8[])(void); -extern void func_8016F8E4(void *a0); -extern void func_8016F95C(void *a0); -extern void func_8016F920(u8 *a0); -extern s32 func_80171CC4(void *a0, void *a1); -extern s32 func_80171D1C(void *a0, void *a1, s32 a2); -extern u16 D_8011F73E; -extern void (*D_8018E9E0[])(void); -extern void func_8016F9C4(void *a0); -extern void func_80171B44(s32 *a0); -extern void func_8016FA44(s32 a0); -extern void func_8016FA00(s32 a0); -extern s32 func_80171C64(s32 a0, s32 a1); -extern void (*D_8018E9E8[])(void); -extern void func_8016FA84(void *a0); -extern void func_8016FB10(void *a0); -extern void func_8016FAC0(u8 *a0); -extern void func_8016FB50(void *a0); -extern void (*D_8018E9F4[])(void); -extern void func_8016FB7C(void *a0); -extern void func_8016FC24(); -extern void func_8016FBB8(s32 a0); -extern s32 func_80171B4C(s32 a0, s32 a1); -extern void func_8016FC24(s32 a0); -extern void func_8016FC64(void *a0); -extern void (*D_8018EA00[])(void); -extern void func_8016FC90(void *a0); -extern void func_8016FD08(u8 *a0); -extern void func_8016FCCC(u8 *a0); -extern s32 func_80172658(s32 *a0); -extern void func_8016FD08(u8 *s0); -extern void func_8016FD7C(s32 *a0); -extern void (*D_8018EA0C[])(void); -extern void func_8016FDB4(void *a0); -extern void func_8016FE2C(u8 *a0); -extern void func_8016FDF0(u8 *a0); -extern void func_8016FE2C(u8 * a0); -extern s32 func_8016FE78(s32 *a0); -extern s32 func_80172664(s32 *a0); -extern void func_8016FED0(s32 *a0); -extern void (*D_8018EA1C[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_8018EA2C[])(void); -extern void func_8016FFDC(void *a0); -extern void func_80170068(u8 *a0); -extern void func_80170018(u8 *a0); -extern void func_801700B8(u8 *a0); -extern void func_80170100(u8 *a0); -extern void (*D_8018EA34[])(void); -extern void func_80170150(void *a0); -extern void func_801701C8(u8 *a0); -extern void func_8017018C(u8 *a0); -extern void func_801701C8(u8 * a0); -extern void (*D_8018EA3C[])(void); -extern void func_80170240(void *a0); -extern void func_801702B8(s32 a0); -extern void func_8017027C(u8 *a0); -extern s16 func_80171AB0(s32 a0, void *a1); -extern void (*D_8018EA44[])(void); -extern void func_801702FC(void *a0); -extern void func_80170374(u8 *a0); -extern void func_80170338(u8 *a0); -extern s32 func_8014C168(s32 *a0, s32 a1); -extern void func_80170374(u8 * a0); -extern void (*D_8018EA4C[])(void); -extern void func_801703E0(void *a0); -extern void func_8017044C(u8 *a0); -extern void func_8017041C(u8 *a0); -extern void func_8017044C(u8 * a0); -extern void (*D_8018EA54[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_8018EA5C[])(void); -extern void func_80170548(void *a0); -extern void func_801705C0(u8 *a0); -extern void func_80170584(u8 *a0); -extern void func_801705C0(u8 * a0); -extern void (*D_8018EA64[])(void); -extern void func_801705F8(void *a0); -extern void func_80170670(void *a0); -extern void func_80170634(u8 *a0); -extern void func_8012A568(void (*a0)(void)); -extern void (*D_8018EA6C[])(void); -extern void func_801706AC(void *a0); -extern void func_80170718(void *a0); -extern void func_801706E8(u8 *a0); -extern void func_80129FF4(void); -extern void (*D_8018EA74[])(void); -extern void func_80170748(void *a0); -extern void func_801707D4(void *a0); -extern void func_80170784(u8 *a0); -extern s32 func_80174ED4(void); -extern void (*D_8018EA7C[])(void); -extern void func_80170810(void *a0); -extern void func_801708B0(void *a0); -extern u8 D_800D5DA8; -extern void func_8017084C(s32 a0); -extern u8 D_800D5A34[]; -extern void func_80170AD8(void *a0); -extern void func_80171904(s32 a0); -extern void func_80170B48(int a0); -extern void func_80170928(void); -extern u8 D_800D59EC[]; -extern void func_80170970(void); -extern u8 D_800D599C[]; -extern void func_801709B8(void); -extern u8 D_800D5934[]; -extern void func_80170A00(void); -extern void func_80170A48(void); -extern u8 D_800D5DC0[]; -extern void func_80170A90(void); -extern void (*D_8018EA84[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_8018EA8C[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8018EA94[])(void); -extern void func_80170C74(void *a0); -extern s32 func_8017197C(u8 *a0); -extern void func_80170CF0(void *a0); -extern void func_80170CB0(u8 *a0); -extern void (*D_8018EA9C[])(void); -extern void func_80170D68(void *a0); -extern void func_80170DE0(u8 *a0); -extern void func_80170DA4(u8 *a0); -extern s32 D_8011F73C; -extern s32 D_8011F740; -extern void func_801718AC(void *a0); -extern void func_80170DE0(u8 * _arg0); -extern void (*D_8018EAA4[])(void); -extern void func_80170E34(void *a0); -extern void func_80170EAC(u8 *a0); -extern void func_80170E70(u8 *a0); -extern int func_800D0F8C(int a0); -extern void func_80170EAC(u8 * _arg0); -extern void (*D_8018EAAC[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8018EAB4[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_8018EABC[])(void); -extern void func_80171064(void *a0); -extern void func_801710DC(u8 *a0); -extern void func_801710A0(u8 *a0); -extern u16 D_8011F73A; -extern void func_801710DC(u8 * arg0); -extern void (*D_8018EAC4[])(void); -extern void func_80171120(void *a0); -extern void func_8017118C(u8 *a0); -extern void func_8017115C(u8 *a0); -extern void func_80142454(s32 a0); -extern void func_8017118C(u8 * a0); -extern void (*D_8018EACC[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8018EAD4[])(void); -extern void func_80171260(void *a0); -extern s32 func_80012F74(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80171384(void *a0); -extern void (*D_8018EADC[])(void); -extern void func_801714E4(void *a0); -extern void func_8017162C(void *a0); -extern void func_80171520(s32 a0); -extern s32 func_801716AC(s32 a0, void *a1, s32 *a2); -extern s32 func_80012FC8(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_800A5E94; -extern u8 D_800A5E95; -extern u8 D_800A5E96; -extern s32 func_801716AC(s32 a0, void * a1, s32 * a2); -extern int func_800D0FE0(int a0); -extern void func_801717A0(void *a0); -extern void func_8013E588(void *a0); -extern void func_801717F4(void *a0); -extern void func_80171824(void *a0); -extern void func_80171854(void *a0); -extern void func_80171884(void); -extern void func_80171A1C(u8 *a0); -extern void func_80171928(void * a0); -extern void func_8017196C(s32 *a0, s8 a1); -extern void func_80171A04(s32 *a0); -extern void func_80171A10(s32 *a0); -extern void func_80171A34(s32 *a0, s8 a1); -extern s32 func_80171A44(u8 *a0); -extern s32 func_80171A58(u8 *a0); -extern s32 func_80171A6C(u8 *a0); -extern void func_80171A80(s32 *a0, s32 a1); -extern s32 func_80171A88(s32 a0); -extern s16 func_80171AB0(s32 param_1, void * _arg1); -extern void func_80171B10(void *a0); -extern void func_80171EC8(s32 a0); -extern s32 func_80171C64(s32 param_1, s32 param_2); -extern s32 func_80171D78(s32 a0, s32 a1); -extern int func_8017250C(short *a0, short *a1); -extern s32 func_80171CC4(void * a0, void * a1); -extern s32 func_80171FFC(short *a0, short *a1, s32 a2); -extern s32 func_80171D1C(void * a0, void * a1, s32 a2); -extern s32 func_8017248C(s32 a0, s32 a1); -extern s32 func_80171E08(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_80047948(s32 a0); -extern s32 func_8004787C(s32 a0); -extern void func_80172170(s32 a0, s32 a1); -extern s32 func_8017209C(void *arg0, void *arg1, s32 arg2, s32 arg3); -extern void func_801722CC(s32 *a0); -extern void func_80172304(s32 *a0); -extern void func_80172310(u8 *a0); -extern void func_801723C4(s32 param_1, s32 param_2); -extern void func_80161C24(s32, s32); -extern void func_80172414(s32 a0); -extern s32 func_801724EC(s32 a0); -extern s32 func_8017248C(s32 arg0, s32 arg1); -extern s32 func_80013450(s32); -extern s32 func_80172560(u8 *a0, u8 *a1); -extern s32 func_8017261C(u8 *a0); -extern s32 func_80172644(u8 *a0); -extern s32 func_80172670(s32 *a0); -extern s32 func_80172688(s32 *a0); -extern s32 func_80172694(s32 *a0); -extern s32 func_801726A0(s32 *a0); -extern s32 func_801726AC(s32 *a0); -extern s32 func_801726B8(s32 *a0); -extern s32 func_801726C4(s32 *a0); -extern s32 func_80172760(s32 a0); -extern s32 func_80174650(s32); -extern void (*D_80127088)(void); -extern s32 D_801270BC; -extern void func_801726D0(void * _arg0); -extern void func_80172710(void); -extern void func_80174684(void *); -extern void func_80172738(void); -extern s16 D_80126B30; -extern s32 func_801727D0(void *a0); -extern void func_80172780(void *a0); -extern void func_80172844(u8 *a0); -extern void func_8017280C(u8 *a0); -extern void func_8017288C(void); -extern s32 func_801728E4(void *a0); -extern void func_80172894(void *a0); -extern void func_80172958(u8 *a0); -extern void func_80172920(u8 *a0); -extern s16 D_80126B36; -extern void func_80172958(u8 * a0); -extern void func_801729A8(void); -extern s32 func_801729F0(void *a0); -extern s16 D_80126B34; -extern s16 D_80126B32; -extern void func_801729B0(s32 a0); -extern void func_80172A8C(void *a0); -extern void func_80172A2C(int param_1); -extern void func_80172ACC(u8 *a0); -extern void func_80172B0C(void); -extern s32 func_80172B44(void *a0); -extern void func_80172B14(s16 a0); -extern s32 D_801150F8; -extern void func_80172BC8(void *a0); -extern void func_80172B80(u8 *a0); -extern void func_80172C48(void); -extern void (*D_8018EB20[])(void); -extern void func_80172CA0(void *a0); -extern void func_80172D14(u8 *a0); -extern void func_80172CDC(u8 *a0); -extern void func_80172D14(u8 * a0); -extern void func_80172D60(void); -extern s32 D_80127508; -extern s32 func_80172DAC(void *a0); -extern void func_80172D68(s32 a0); -extern void func_80172E20(u8 *a0); -extern void func_80172DE8(u8 *a0); -extern void func_80172E20(u8 * a0); -extern void func_80172E8C(void); -extern void func_8017303C(void *); -extern void func_80172E94(void); -extern void func_80172ED4(void); -extern void func_80172EFC(void); -extern void func_80172F24(void); -extern u8 D_800D47F4[]; -extern void func_80172F4C(void); -extern void func_80172F9C(void); -extern u8 D_800D5C6C[]; -extern void func_80172FEC(void); -extern s32 func_80173078(void *a0); -extern void func_8017303C(void * a0); -extern void func_801730FC(struct S801730FC *a0); -extern void func_801730B4(s32 a0); -extern void func_8017316C(void); -extern s32 func_8017319C(void *a0); -extern void func_80173174(void); -extern u8 D_800D5AA0[]; -extern void func_80173220(void *a0); -extern void func_801731D8(s32 *a0); -extern M2C_UNK D_8018EAE4; -extern void func_80173220(void * arg0); -extern void func_80173294(void); -extern void func_801732C4(); -extern void func_8017329C(void); -extern void func_801732C4(s32 *a0); -extern void func_8017331C(); -extern void func_801732F4(void); -extern void func_8017331C(s32 *a0); -extern void func_80173374(); -extern void func_8017334C(void); -extern void func_80173374(s32 *a0); -extern void func_801733A4(void); -extern void func_801733CC(s32 a0); -extern void func_801734BC(s32 a0, s32 a1); -extern s16 D_80126B3E; -extern void func_80173460(s32 a0, s32 a1); -extern void func_801734BC(s32 arg0, s32 _unused1); -extern void (*D_8018EB50[])(void); -extern void func_80173544(void *a0); -extern void func_801735B8(u8 *a0); -extern void func_80173580(u8 *a0); -extern s16 D_80126B40; -extern void func_801735EC(void *a0); -extern void func_80173648(u8 *a0); -extern void func_801736A8(void); -extern s32 func_8014C118(void *a0, s32 a1, s32 a2); -extern s32 func_801736FC(void *a0); -extern void func_801736B0(s32 a0, s32 a1); -extern void func_80173770(u8 *a0); -extern void func_80173738(u8 *a0); -extern void func_801723C4(s32 a0, s32 a1); -extern void func_801737B0(void); -extern s32 func_801737E8(void *a0); -extern void func_801737B8(s16 a0); -extern void func_8017385C(u8 *a0); -extern void func_80173824(u8 *a0); -extern void func_801738D4(void); -extern s32 func_8017390C(void *a0); -extern void func_801738DC(s16 a0); -extern void func_80173980(u8 *a0); -extern void func_80173948(u8 *a0); -extern void func_801739D8(u8 *a0); -extern void func_80173A20(void); -extern s32 D_8012750C; -extern void func_80173A60(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80173A28(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void (*D_8018EB8C[])(void); -extern void func_80173B4C(void *a0); -extern void func_80173BC0(u8 *a0); -extern void func_80173B88(u8 *a0); -extern void func_80173C64(u8 *a0); -extern void func_80173E1C(s32 a0); -extern s16 D_80126938; -extern s16 D_80126B3A; -extern void func_800D128C(s32, s32); -extern void func_80174158(s32 a0); -extern void func_8002A088(s32); -extern void func_8002A2D4(s32); -extern void func_8002A544(s32); -extern void func_8002A7B4(s32); -extern s32 func_80174188(s32 a0); -extern void func_801741A8(s32 a0); -extern s32 func_800D0EC4(void); -extern void func_800D0F0C(s32, s32); -extern void func_80145EE8(s32); -extern void func_80173EF8(void *param_1); -extern s32 func_8014BCEC(s32, s32); -extern void func_801741A8(s32 _arg0); -extern s16 D_80126B3C; -extern s16 D_8011F9C8; -extern void func_801741EC(u8 *a0); -extern void func_80174274(void); -extern s32 func_801742A4(void *a0); -extern void func_8017427C(void); -extern void func_80174318(u8 *a0); -extern void func_801742E0(u8 *a0); -extern void func_80174354(void); -extern s32 func_80174384(void *a0); -extern void func_8017435C(void); -extern void func_801743F0(u8 *a0); -extern void func_801743C0(u8 *a0); -extern void func_801743F0(u8 * a0); -extern void func_80174430(void); -extern s32 func_80174474(void *a0); -extern void func_80174438(s32 a0); -extern void func_801744E0(u8 *a0); -extern void func_801744B0(u8 *a0); -extern void func_80174524(void); -extern void func_80174554(); -extern void func_8017452C(void); -extern void func_80174554(s32 arg0); -extern void func_801745AC(); -extern void func_80174584(void); -extern void func_801745AC(s32 *a0); -extern void func_80174604(void); -extern void func_801745DC(void); -extern void func_80174630(void); -extern s32 func_80174650(s32 _arg0); -extern void func_80174674(void); -extern void func_801746A4(void); -extern s32 func_800CF8CC(void); -extern void func_80174714(void); -extern s32 func_80174754(void); -extern s16 func_80174764(void); -extern s16 func_80174774(void); -extern s32 func_801747CC(void *a0); -extern void func_80174784(void); -extern s32 func_801747AC(s32 a0); -extern s32 func_80174808(u8 *a0); -extern void func_8017481C(void); -extern s32 func_80174888(void *a0); -extern void func_80174824(void); -extern void func_8017484C(s32 a0); -extern void func_801748C4(s32 a0); -extern void func_801748E4(void); -extern void func_8012A018(s32 a, s32 b); -extern s32 func_8017496C(void *a0); -extern s32 D_80126954; -extern s32 D_80126950; -extern s32 D_8012695C; -extern s16 D_80126968; -extern s16 D_8012696A; -extern s16 D_8012696C; -extern s16 D_80126976; -extern s16 D_80126978; -extern s16 D_8012697A; -extern void func_801748EC(void); -extern s32 func_801749C8(); -extern s32 func_801749A8(s32 a0); -extern void func_80174BBC(void *a0); -extern void func_8012A0E0(void); -extern void func_80174BF4(void *a0); -extern void (*D_8018EBE4[])(); -extern void func_80174BF4(void * arg0); -extern s32 func_80174CB0(s32, s32); -extern s32 func_80174C60(s32 a0); -extern void func_80174C80(s32 a0); -extern s32 D_8012697C; -extern u16 D_80126980; -extern s32 func_80174F28(void *a0); -extern void func_80174E9C(s32 a0); -extern void func_80174EF0(s32 a0, s16 a1); -extern s32 func_80175014(u8 *a0, u8 *a1, s32 a2); -extern void func_80174F64(u8 *a0); -extern void func_80174FBC(u8 *a0); -extern s32 func_8017509C(u8 *a0, s32 a1, u8 *a2, u8 *a3); -extern void func_80175184(s32 *a0); -extern void func_80175114(s32 *a0); -extern void func_80175184(); -extern void func_80175150(s32 *a0); -extern void (*D_8018EBF4[])(void*); -extern s32 func_80175268(s32); -extern void func_80175184(s32* arg0); -extern s32 func_80175218(void *a0); -extern void func_801751D8(void *a0); -extern void (*D_8018EBFC[])(s32); -extern s32 func_80175218(void * param_1); -extern void func_801752BC(s32 *a0); -extern u8 D_8011F7A8; -extern u8 D_8011F7A9; -extern u8 D_8011F7AD; -extern u8 D_8011F7AE; -extern void func_80175414(s32 _arg0); -extern void func_80175494(void); -extern void (*D_8018ED64[])(); -extern s32 func_801758FC(void); -extern s32 func_80175820(void); -extern s32 func_801759D8(void); -extern void func_8017553C(s32 *param); -extern void func_801757A0(s32 a0); -extern short D_800B9A02; -extern void func_80175590(void *arg0); -extern s16 D_800B9A02; -extern void func_801757A0(s32); -extern void func_80175624(void *a0); -extern void func_801757E0(int); -extern void func_80175668(void); -extern void (*D_8018ED70[])(); -extern void func_80175690(s32 *param); -extern void func_80175DA8(s32 a0); -extern void func_80175AB8(s32 a0); -extern void func_80176144(s32 a0); -extern void func_801756E4(s32 arg0); -extern void func_80175798(void); -extern void func_80176734(s32 a0); -extern void func_80176218(s32 a0); -extern void func_80176D00(s32 a0); -extern void func_801757E0(s32 a0); -extern s32 func_80178004(s32 a0, s32 a1, s32 a2); -extern u8 D_8011F7B1; -extern u16 D_8011F7B4; -extern u16 D_8011F7B6; -extern s16 D_8011F81E; -extern void *func_80177784(void *a0, s32 a1, s32 a2, s32 a3); -extern u32 func_801783D0(s32 a0, s32 a1); -extern void *func_801777BC(void *a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern u16 D_8011F82C; -extern u16 D_8011F82A; -extern u32 * func_80176D94(void *param_1, u32 param_2, s16 param_3_); -extern void func_801778A8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80176FF4(s32 a0); -extern u16 D_8011F830; -extern u16 D_8011F82E; -extern u32 * func_801770E0(void *param_1, u32 param_2, s16 param_3_); -extern void func_80177340(s32 a0); -extern u8 D_8011F837; -extern u8 D_8011F7F0; -extern u8 D_8011F7AB; -extern u32 * func_8017742C(u32 *param_1, s32 param_2, s32 param_3); -extern void func_801776EC(u8 *a0); -extern void * func_80177784(void *a0, s32 a1, s32 a2, s32 a3); -extern uint * func_80177EA4(uint *param_1, int param_2, uint param_3, int param_4); -extern void func_80177F84(s32 param_1, s32 param_2); -extern u32 * func_80178298(u32 *param_1, u8 *param_2, short param_3, short param_4); -extern M2C_UNK D_801E9014; -extern void func_80178438(u16 *arg0); -extern void func_801787D4(void); -extern void func_8012A908(void); -extern void func_8017869C(s32 a0); -extern void func_80130D0C(s32 a0); -extern void func_8013E370(void); -extern s32 D_8011DB08; -extern void func_8017849C(void); -extern void func_8013E4B4(void); -extern s16 D_801270C4; -extern s32 D_801274D8; -extern s16 D_801270C2; -extern u8 D_801270C6; -extern u8 D_801270C7; -extern s32 D_801274DC; -extern s32 D_801274E0; -extern void func_80178608(void); -extern void func_80178744(s32 a0, s32 a1); -extern void func_80178840(); -extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern s32 func_801788B8(s32 arg0, s32 arg1); -extern s32 func_801789AC(s32 arg0); -extern s16 D_801EAFC8; -extern int func_80178970(void); -extern s32 func_80178B18(s32 param_1, s32 param_2); -extern s32 func_80178B70(s32 param_1, s32 param_2); -extern void func_80178BB8(s32 a0, s32 a1); -extern s32 func_80178BF8(); -extern s32 D_801EA388; -extern short D_801EB03C; -extern void func_80178CBC(s32 arg0, s32 arg1); -extern void func_80178D18(void); -extern s32 func_80178D40(s32 arg0, s32 arg1); -extern void func_80179B28(s32 a0); -extern void func_80179B74(u16 *p); -extern void func_80179D30(u16 *a0); -extern void func_80179D78(u16 *a0); -extern void func_80179DCC(short a0); -extern void func_80179DF8(void); -extern void func_80179E1C(short a0); -extern void func_80179E48(s16 a0); -extern void func_80179E74(s16 a0); -extern void func_80179EA0(u16 *a0); -extern void func_80179EE8(short a0); -extern void func_80179F14(s16 a0, s16 a1); -extern void func_80179F44(void); -extern void func_80179F6C(short a0); -extern void func_80179F98(u16 *a0); -extern void func_80179FEC(u16 *a0); -extern void func_8017A040(u16 *a0); -extern s32 D_801EA7B4; -extern void func_8017A094(s32 arg0); -extern void func_8017A0C4(s32 arg0); -extern void func_8017A0F4(void); -extern void func_8017A11C(void); -extern s32 D_801EA7DC; -extern void func_8017A144(s32 a0); -extern void func_8017A180(void); -extern void func_8017A1A8(void); -extern void func_8017A1D0(void); -extern void func_8017A1F8(void); -extern void func_8017A220(void); -extern void func_8017A248(void); -extern void func_8017A270(void); -extern void func_8017A298(void); -extern void func_8017A2C0(void); -extern void func_8017A2E8(void); -extern void func_8017A310(void); -extern void func_8017A338(void); -extern void func_8017A360(void); -extern void func_8017A388(void); -extern s16 D_801EA798; -extern s32 func_8017A3B0(void); -extern void func_80172310(u8*); -extern void func_80172780(void*); -extern void func_80172894(void*); -extern void func_801729B0(s32); -extern void func_80172B14(s16); -extern void func_80172C50(u16 *); -extern void func_80172D68(s32); -extern void func_801733FC(s16, u16 *); -extern void func_80173460(s32, s32); -extern void func_801734BC(s32, s32); -extern void func_801736B0(s32, s32); -extern void func_801737B8(s16); -extern void func_801738DC(s16); -extern void func_80173A28(s32, s32, s32, s32, s32, s32); -extern void func_80174438(s32); -extern void func_8017A4AC(void); -extern s32 func_8017AD0C(s32 arg0); -extern s32 func_8017AD0C(s32); -extern s32 func_8017ADE8(s32 a0); -extern s32 func_8017AE08(void); -extern void func_8017B0E4(int param_1, int param_2); -extern s16 D_801EA79C; -extern u16 D_801EA81C; -extern u16 D_801EA81E; -extern u16 D_801EA820; -extern void func_8017B1D8(void); -extern s32 func_8017B238(s32 param_1, s32 param_2); -extern s32 func_8017B368(s32 param); -extern s32 func_8017B614(s32 param_1, s32 param_2); -extern s32 D_80114F30; -extern s32 D_80114F34; -extern s32 D_80114F38; -extern s32 D_80114F24; -extern s32 D_80114F28; -extern s32 D_80114F2C; -extern u8 D_8012694C; -extern s16 D_801EA814; -extern s16 D_801EA816; -extern s16 D_801EA818; -extern s16 D_801EA80C; -extern s16 D_801EA80E; -extern s16 D_801EA810; -extern void func_8017B7A8(void); -extern s16 D_801EA82C; -extern s16 D_801EA82E; -extern s16 D_801EA830; -extern s16 D_801EA834; -extern s16 D_801EA836; -extern s16 D_801EA838; -extern void func_8017B824(void); -extern void func_8017B880(void); -extern s32 func_8017B8E8(s32 src); -extern short D_801EA824; -extern short D_801EA826; -extern short D_801EA828; -extern void func_8017B940(void); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void RotTransSV(void *a0, void *a1, void *a2); -extern SV4 D_801EA7BC; -extern SV4 D_801EA7C4; -extern void func_8017BA3C(s32 param_1, s32 param_2); -extern s32 func_8017BB34(s32 param_1, s32 param_2); -extern void (*D_801EA7E4[10])(int); -extern void func_8017BC38(int param_1); -extern void func_8017B0E4(int, int); -extern void func_8017BCA0(int param_1); -extern void func_8012A4BC(void); -extern void func_8017BCF4(int param_1); -extern void (*D_801EA7E0)(void); -extern void func_8017BD50(int param_1); -extern void (*D_8018EF4C[])(void); -extern void func_8017BE60(void *a0); -extern void func_8017BE9C(void); -extern void func_8017BEA4(void); -extern void func_8017BEAC(void); -extern void func_8017BEB4(void); -extern void (*D_8018EF58[])(void); -extern void func_8017BEE4(void *a0); -extern void func_8017BF98(void); -extern s32 func_8017BFA0(void); -extern void func_8017C07C(void); -extern void (*D_8018F024[])(void); -extern void func_8017C0C8(void *a0); -extern void func_8017C154(); -extern void func_8017C12C(void); -extern void func_8017C14C(void); -extern void (*D_8018F064[])(void); -extern void func_8017C664(void *a0); -extern void (*D_8018F084[])(void); -extern void func_8017CE54(void *a0); -extern void (*D_8018F094[])(void); -extern void func_8017D0DC(void *a0); -extern void (*D_8018F0A0[])(void); -extern void func_8017D63C(void *a0); -extern void (*D_8018F224[])(void); -extern void func_8017DB00(void *a0); -extern void func_8017DB74(u8 *a0); -extern void func_8017DD74(void); -extern void func_8017DF7C(void); -extern void func_8017EB7C(s32 arg0); -extern void func_8017FA5C(s32 arg0, s32 arg1, s32 arg2); -extern void (*D_8018F500[])(void); -extern void func_801805BC(void *a0); -extern u8 D_8018F450; -extern void func_801805F8(s32 a0); -extern void func_80180714(void); -extern M2C_UNK D_8018F4F8; -extern void func_8018071C(void); -extern s32 func_80180744(void); -extern s16 func_80180760(void); -extern s32 D_8018F510; -extern s32 D_8018F56C[]; -extern void func_80180B84(int param_1); -extern void func_80180C34(s32 p); -extern void (*D_8018F5B0[])(void); -extern void func_80180DFC(void *a0); -extern s32 func_800D222C(s32 a0, void *a1, s32 a2); -extern s32 func_8001CF30(void *a0); -extern void func_80180E38(s32 param_1); -extern void func_80180FFC(u8 *p); -extern void (*D_8018F5B8[])(void); -extern void func_80181090(void *a0); -extern u8 D_8018F5A4; -extern void func_801810CC(s32 a0); -extern void func_80181170(int a0); -extern void (*D_8018F6D0[])(void); -extern void func_80181BD0(void *a0); -extern void func_8012C218(void*); -extern void func_80181F78(void); -extern void (*D_8018F728[])(void); -extern void func_80182028(void *a0); -extern void func_80182348(int); -extern void func_801820B4(int param_1); -extern void (*D_8018F73C[])(void); -extern void func_80182654(void *a0); -extern void func_801826D0(void *a0); -extern void func_80182740(void *a0); -extern void func_801827CC(void *a0); -extern void (*D_8018F750[])(void); -extern void func_801828F4(void *a0); -extern void func_80182C28(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80182BB0(s32 arg0, s32 arg1); -extern void func_80182BD4(s32 arg0, s32 arg1, s16 arg2); -extern void func_80182BFC(void *a0, void *a1, s32 a2, s32 a3); -extern void (*D_8018F7AC[])(void); -extern void func_80182E08(void *a0); -extern void (*D_8018F804[])(void); -extern void func_801835C4(void *a0); -extern s32 func_80183644(void); -extern void func_8001BFD0(void); -extern void func_800D1E28(void); -extern s32 func_801836A8(u8 *a0); -extern void func_800D1EBC(void); -extern void func_80183724(void); -extern void (*D_8018F818[])(void); -extern void func_80183744(void *a0); -extern s32 func_801837C0(u8 *a0); -extern void func_8018383C(void); -extern void (*D_8018F824[])(void); -extern void func_8018385C(u8 *a0); -extern M2C_UNK D_8018F830; -extern void func_80183930(void); -extern s32 D_8018F83C; -extern void func_80183958(void); -extern void (*D_8018F850[])(void); -extern void func_80183A18(void *a0); -extern s32 func_80012ABC(s32 a0, s32 a1, s32 a2); -extern void func_80183B58(s32 param_1, s16 *param_2); -/* ==== end §8b carried decl layer ==== */ - - - - - -void func_80183CF0(Ent_80183CF0_80183CF0 *arg) { - - extern void (*D_8018FB30[])(Ent_80183CF0_80183CF0 *); - D_8018FB30[arg->unk2](arg); -} - - - - - -extern void func_8013C0F8(u8 *a0); -extern void func_80184440(void); -extern s32 func_80029178(s32 arg); -extern void func_8013373C(s32 a0); - -void func_80183D50(Ent_80183D50_80183D50 *arg) { - - extern u8 D_80078E78[]; - extern u8 D_801B5864[]; - extern u8 D_801B5E30[]; - extern u8 D_801B75CC[]; - Gs_80078E78_80183D50 *p = (Gs_80078E78_80183D50 *)D_80078E78; - - func_8013C0F8(D_801B5864); - func_8013C0F8(D_801B5E30); - func_8013C0F8(D_801B75CC); - arg->unkDC = 0; - arg->unkE4 = 0; - arg->unkE8 = 1; - arg->unkEA = 0x3C; - arg->unkE2 = -0x3C0; - func_80184440(); - arg->unk2++; - if (func_80029178(0xB9) & 0xFF) { - func_8013373C(1); - arg->unkE2 = -0x68; - arg->unkE2 = 0; - arg->unkE4 = 0; - arg->unk2 = 3; - } else if (p->unk37 == 0 || p->unk37 == 3 || p->unk37 == 4) { - arg->unkE2 = -0x3C0; - arg->unkE2 = 0; - arg->unkE4 = 2; - } else { - func_8013373C(0); - arg->unkE2 = -0x2C9; - arg->unkE2 = 0; - arg->unkE4 = 1; - } -} - - - - -extern void func_8017DF84(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80029178(s32 a0); -extern void func_80184354(void); - -void func_80183F28(Ent80183F28_80183F28 *arg0) { - - extern s32 D_801270C8; - extern s32 D_801EAFD0; - extern s32 D_8018F858[]; - func_8017DF84(&D_801EAFD0, D_8018F858[arg0->unkE4], arg0->unkDC, arg0->unkE2); - arg0->unkDC += 8; - if ((func_80029178(0xB9) & 0xFF) == 0) { - if (D_801270C8 != 0) { - ++arg0->unk02; - } - arg0->unkEA = 0x3C; - func_80184354(); - } -} - - - - - -s32 func_80184028(void) { - - extern s32 D_801EAC68; - return D_801EAC68; -} - - -#include "common.h" - -/* 16.16 fixed-point view: unkE0 is a 32-bit accumulator whose HIGH half is the s16 - * unkE2 the rest of the function reads (little-endian overlay). */ -typedef struct { - /* 0x00 */ s16 unk00; - /* 0x02 */ s16 unk02; - /* 0x04 */ u8 pad04[0xD8]; - /* 0xDC */ s16 unkDC; - /* 0xDE */ s16 unkDE; - /* 0xE0 */ s32 unkE0; -} Ent58_fx; - -typedef struct { - /* 0x00 */ s16 unk00; - /* 0x02 */ s16 unk02; - /* 0x04 */ u8 pad04[0xD8]; - /* 0xDC */ s16 unkDC; - /* 0xDE */ s16 unkDE; - /* 0xE0 */ s16 unkE0; - /* 0xE2 */ s16 unkE2; - /* 0xE4 */ s16 unkE4; - /* 0xE6 */ s16 unkE6; - /* 0xE8 */ s16 unkE8; - /* 0xEA */ s16 unkEA; -} Ent_80184058; - -extern s32 D_801EAFD0; -extern s32 D_8018F858[]; -extern s32 D_801270C8; -extern u16 D_800B99DC; -extern u8 D_8018BCC8; -extern void func_8017DF84(void *a0, s32 a1, s32 a2, s32 a3); -extern void func_80184354(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_8013C9C4(void *a0); -extern void func_8013373C(s32 a0); - -void func_80184058(Ent_80184058 *p) { - func_8017DF84(&D_801EAFD0, D_8018F858[p->unkE4], p->unkDC, p->unkE2); - func_80184354(); - if (p->unkEA == 0) { - ((Ent58_fx *)p)->unkE0 += 0x5CCCC; - } else { - if (--p->unkEA == 0) { - func_8002D4C8(0x81E, 0); - } - } - if (--p->unkE8 == 0) { - func_8013C9C4(&D_8018BCC8); - p->unkE8 = (D_800B99DC & 7) + 3; - } - if (p->unkE2 >= 0x259) { - p->unkE2 = 0; - D_801270C8 = 2; - p->unkE4 = 0; - func_8013373C(1); - func_8002D4C8(4, 0x81E); - ++p->unk02; - } - p->unkDC += 8; -} - - - -extern void func_8017FA5C(s32 arg0, s32 arg1, s32 arg2); -extern void func_80184474(void); - - -void func_80184264(Ent_80184264_80184264 *param_1) { - - extern s32 D_801EAFD0; - extern s32 D_8018F858[]; - func_8017FA5C((s32)&D_801EAFD0, D_8018F858[param_1->unkE4], param_1->unkE2); - func_80184474(); -} - - - - - -s32 func_801842E0(void) { - - extern s32 D_801270C8; - if (D_801270C8 == 0) { - D_801270C8 = 1; - } else if (D_801270C8 == 2) { - return 1; - } - return 0; -} - - - -extern void func_800183E0(s32 a0); - -void func_80184354(void) { - - extern u32 D_801EAC40; - extern u16 D_801EAC44[]; - extern u16 D_8018F864[]; - extern u16 D_8018F884[]; - u32 i; - - for (i = 0; i < 16; i++) { - D_801EAC44[i] = D_8018F864[((D_801EAC40 >> 8) + i) & 0xF]; - } - func_800183E0((s32)&D_8018F884); - D_801EAC40 += 0x40; -} - diff --git a/src/ov_SC03_015/ov_SC03_015_o0d.c b/src/ov_SC03_015/ov_SC03_015_o0d.c deleted file mode 100644 index 1eaa14796..000000000 --- a/src/ov_SC03_015/ov_SC03_015_o0d.c +++ /dev/null @@ -1,2871 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8; -typedef void (*Handler)(struct Entry_8016E95C *); -extern void func_801458E0(void); -extern s32 D_800AE6AC; -extern s32 D_800AE6B0; -extern s16 D_800B9A0A; -extern u8 D_80078E50; -extern void func_800D185C(u8 *a0); -extern void func_801458E8(void); -extern s32 func_80029504(void); -extern void func_80145B24(void); -extern u8 D_8018DAA4; -extern u8 D_8018DA14; -extern u8 D_8018D9F0; -extern u8 D_8018D9CC; -extern u8 D_8018DA80; -extern u8 D_8018DA5C; -extern u8 D_8018DA38; -extern u8 D_8018D9A8; -extern void func_80145934(void); -extern u8 D_8018DB34; -extern u8 D_8018DB10; -extern u8 D_8018DAEC; -extern u8 D_8018DAC8; -extern void func_80145A2C(void); -extern s32 func_800291DC(s32); -extern void func_800291C8(s32, s32); -extern void func_80162120(void); -extern void func_80029124(s32, s32); -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); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_80145BF8(void); -extern s32 func_800291B4(s32 arg); -extern void func_800291A0(s32, s32); -extern void func_80145C54(void); -extern s32 func_80145CEC(); -extern s32 func_80029178(s32 arg); -extern void func_80146014(s32 a0); -extern unsigned char D_8018CF2C[]; -extern unsigned char D_8018CF5C[]; -extern unsigned char D_8018CFAC[]; -extern unsigned char D_8018CFDC[]; -extern unsigned char D_8018D00C[]; -extern void func_80145EE8(s32 param_1); -extern void MoveImage(void *a0, s32 a1, s32 a2); -extern void func_80146074(void); -extern s32 func_80146128(void); -extern void func_80146360(void); -extern void func_801463A0(); -extern void func_8014607C(void); -extern s32 *D_80126B78; -extern u8 D_80078EC1; -extern s32 D_80078EC8; -extern s32 D_80126B9C; -extern s32 D_8011F730; -extern u16 D_801152B8; -extern u16 D_8012693A; -extern u8 D_80126BE0[]; -extern u8 D_801150F0[]; -extern void *memcpy(void *dst, const void *src, u32 n); -extern void func_80146FC4(s32 a0); -extern void func_80150A70(s32 a0); -extern void func_80147098(s32 *a0); -extern void func_8014A638(s32 arg0); -extern s32 func_80155458(s32 a0); -extern s32 func_80029104(void); -extern void func_80029344(void); -extern void func_8014ADE0(s32 a0); -extern void func_8014B350(s32 a0); -extern void func_8014B7A4(s16 *param_1); -extern s32 func_80161D58(s32 a0); -extern void func_80161A90(s32 a0); -extern void func_8014B504(u16 *a0); -extern void func_80149BEC(s32 a0); -extern void func_8014B5D0(s32 *a0); -extern void func_8014C99C(u8 *a0); -extern void func_8014B190(s32 s0); -extern void func_80148648(s32 a0, s32 a1); -extern s32 func_80149228(s32 a0); -extern void func_8014A59C(s32 a0); -extern void func_8016F14C(void *a0); -extern void func_80154418(void *a0); -extern void func_80154BE4(s32 a0); -extern void func_80165694(s32 arg0); -extern void func_801654A8(s32 a0); -extern void func_8014A680(s32 a0); -extern void func_8014A6A8(s32 a0); -extern void func_8014A71C(s32 a0); -extern void func_80172588(s32 *a0); -extern void func_801473DC(s32 *a0); -extern void func_80015978(s32 a0, s32 *a1); -extern void (*D_8018D05C[])(void *); -extern u8 D_80126BA4; -extern s32 D_80127098; -extern s32 D_80127094; -extern s32 D_80127090; -extern void func_80146534(void); -extern void func_8001D074(s32 a0, s32 a1); -extern void func_80146554(void); -extern void func_80146578(void); -extern void func_8001CFDC(s32, s32); -extern void func_8014659C(void); -extern void func_8001D074(s32, s32); -extern void func_801465C0(void); -extern void func_801465E4(void); -extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); -extern s32 D_8011F9D0; -extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); -extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 D_8011F750; -extern s32 D_8011F754; -extern u8 * func_801468C8(s32 arg0, u8 arg1); -extern s32 D_8011D030; -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); -extern s32 func_80146B9C(void *a0); -extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); -extern u16 D_8011DA28; -extern s32 func_80146B9C(void * arg0); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80146CA0(void *a0); -extern void func_80146CB4(void *a0); -extern void func_80146CC8(s32 a0); -extern void func_80146D30(s32 a0); -extern void func_80146D80(s32 *a0); -extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80146D90(s32 a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); -extern void func_80146E90(s32 *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80015954(s32 a0, s32 a1); -extern void func_80149374(s32 a0, s32 a1); -extern void func_80146F58(s32 a0, s32 a1); -extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 func_8012A68C(void); -extern s16 func_8012A758(void); -extern void func_8004978C(s16 *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern u8 D_80126DB0[]; -extern u16 D_80126DB6; -extern void func_8014704C(s32 *a0); -extern s32 func_80147054(void *a0); -extern void func_80147060(u8 * a0); -extern void func_8014706C(void *arg0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80147084(s32 *a0); -extern void func_8014708C(void *arg0); -extern s32 func_801470A0(void *a0); -extern void func_801470AC(s32 *a0); -extern void func_801470B4(s32 arg0); -extern void func_801470C0(s32 a0); -extern void func_80147118(s32 a0); -extern s16 D_80126BB8; -extern s16 D_80126BBA; -extern s16 D_80126BBC; -extern void func_80147264(s32 a0); -extern void func_80147290(void); -extern void func_801472B4(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void *D_8012707C; -extern void func_801472DC(void); -extern void func_801472F0(void *a0); -extern void func_80147364(u16, s32); -extern void func_80147300(u16 arg0); -extern void func_80147324(s32 arg0); -extern void func_801473EC(s32 *a0); -extern void func_80147460(s32 a0); -extern void func_80147514(); -extern void func_80147628(s32 a0); -extern void func_80147478(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); -extern s32 func_800129CC(s32 a0, s32 a1); -extern void func_80147514(s32 arg0); -extern void func_80013F3C(s32 a0); -extern void func_80012558(s32 a0, s32 a1); -extern void func_800126C4(s32 a0, s32 a1); -extern void func_800123F0(s32 a0, s32 a1); -extern void func_80147718(s32 a0); -extern void func_80147788(void *a0, s32 a1); -extern void func_801477A8(void *a0, s32 a1); -extern void func_801477C8(void *a0, s32 a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80147814(s32 a0, s32 a1); -extern void func_80147928(int a0, int a1); -extern void func_8014799C(int a0, int a1); -extern void func_80147A10(int a0, int a1); -extern void func_80147860(int a0, int a1, int a2, int a3); -extern void func_80147948(s32 a0, s32 a1, s32 a2); -extern void func_801479BC(s32 a0, s32 a1, s32 a2); -extern void func_80147A30(s32 a0, s32 a1, s32 a2); -extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147948(int a0, int a1, int a2); -extern void func_801479BC(int a0, int a1, int a2); -extern void func_80147A30(int a0, int a1, int a2); -extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147A84(s32 arg0); -extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147AAC(s32 arg0); -extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80147B5C(s32 a0, void *a1); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern void func_80147B18(s32 a0); -extern void func_80147B5C(s32 arg0, void *arg1); -extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147DC0(s32 a0, s32 a1); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147F50(s32 arg0); -extern void func_80148038(s32 a0, s32 a1); -extern s32 ratan2(s32 a0, s32 a1); -extern s32 csqrt(s32 a0); -extern s32 func_80012A60(s32 a0, s32 a1); -extern void func_80148094(int param_1, short *param_2, int *param_3); -extern void func_801485B8(s32 a0, s32 a1, s32 a2); -extern void func_801484B0(s32 a0, s32 a1); -extern s32 func_80154358(void *a0); -extern void func_801484E8(s32 a0, s32 a1); -extern void func_80148534(s32 a0, s32 a1); -extern void func_8014856C(s32 a0, s32 a1); -extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); -extern void func_80148634(void *a0); -extern u8 D_800B9A64; -extern s32 func_80014DC0(); -extern s32 func_80014D68(); -extern s32 func_80014D94(); -extern s32 func_80014CF8(); -extern void func_800120DC(); -extern s32 func_800CF8B4(); -extern u16 func_801487F4(s32 *a0); -extern u16 func_80148800(s32 *a0); -extern u8 func_8014880C(s32 *a0); -extern u16 func_80148818(s32 *a0); -extern s32 func_80047D3C(s32 a0); -extern s32 func_80148824(void *arg0); -extern s32 func_801488A8(u8 *a0); -extern s32 func_8014891C(s32 a0); -extern s32 func_80148980(u8 *a0); -extern s32 func_801489E8(s32 a0); -extern s32 func_80148A48(s32 a0); -extern int func_80148AFC(void *a0); -extern void func_80148AAC(u8 *a0); -extern s32 func_80148C18(void); -extern s32 func_80148C20(s32 a0, s16 a1); -extern s32 func_80148C34(s32 a0, s32 a1); -extern s32 func_80148C4C(s32 a0, s32 a1); -extern s32 func_80148C64(s32 a0, s32 a1); -extern s32 func_80148C7C(void); -extern s32 func_80148C84(s32 a0, s32 a1); -extern s32 func_80148C9C(s32 a0, s32 a1); -extern s32 func_80148CB4(s32 a0, s32 a1); -extern s32 func_80148CCC(s32 a0, s32 a1); -extern s32 func_80148CE4(void); -extern s32 func_80148CEC(void); -extern s32 func_80148CF4(s32 a0, s32 a1); -extern s32 func_80148D0C(s32 a0, s32 a1); -extern s32 func_80148D24(void *a0, int a1); -extern s32 func_80148D3C(void); -extern s32 func_80148F60(void); -extern s32 func_80148F68(s32 a0); -extern s32 func_80148F74(s32 a0); -extern s32 func_80148F80(s32 a0); -extern s32 func_80148F8C(s32 a0); -extern s32 func_80148F98(void); -extern s32 func_80148FA0(s32 a0); -extern s32 func_80148FAC(s32 a0); -extern s32 func_80148FB8(s32 a0); -extern s32 func_80148FC4(s32 a0); -extern s32 func_80148FD0(void); -extern s32 func_80148FD8(void); -extern s32 func_80148FE0(s32 a0); -extern s32 func_80148FEC(s32 a0); -extern s32 func_80148FF8(s32 a0); -extern s32 func_80149004(void); -extern void func_8014900C(s32 *a0); -extern void func_80149020(s32 *a0); -extern void func_80149034(s32 *a0); -extern void func_80149048(s32 *a0); -extern void func_8014905C(u8 *a0); -extern void func_801490E0(s32 *a0, s16 a1); -extern void func_801490E8(s32 *a0, s16 a1); -extern void func_801490F0(s32 *a0, s16 a1); -extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); -extern void func_801490F8(s32 a0, s32 a1); -extern s32 func_801491C4(s32 a0); -extern s32 func_80149184(s32 a0); -extern s32 D_801151D4; -extern void func_80149204(s32 *a0); -extern void func_80149210(s32 a0, s32 a1); -extern s32 func_80149284(s32 *a0, s32 a1); -extern void func_80149350(s32 arg0); -extern void func_80149290(s32 a0); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_80149374(s32 arg0, s32 arg1); -extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8014942C(s32 arg0); -extern void func_8012EF70(s32 a0, s32 a1); -extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012EFB8(s32 a0); -extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); -extern void func_8014964C(s32 param_1, s32 param_2); -extern s32 func_801496D4(void *a0); -extern void func_8015AD08(); -extern void func_80149704(void); -extern void func_8015ACC4(); -extern void func_80149724(void); -extern u8 D_80078EBF; -extern s32 func_80149744(struct S_80149744 *a0); -extern void func_8015F7A0(); -extern void func_80149788(void); -extern void func_801653B8(); -extern void func_80149864(void); -extern s16 currentLocationId; -extern s32 func_8016F1AC(void); -extern s32 func_80149884(void); -extern void func_80160B00(); -extern void func_801498C0(void); -extern s32 func_80149AA8(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern void func_80146750(void *a0); -extern s32 func_801498E0(s32 *a0); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_80147364(u16 a0, s32 a1); -extern s32 func_800CCF28(s32 a0); -extern u8 D_80126B5C; -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_8015DAC4(s32 *a0); -extern void func_8015554C(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern void func_80149B14(s32 *a0); -extern u8 func_8014BEF8(void); -extern s32 func_80149B54(s32 * arg0); -extern void func_8015DE24(s32 *a0); -extern void func_80157510(s32 *a0); -extern void func_80149BAC(s32 *a0); -extern s32 func_80029178(s32 a0); -extern s32 func_80149C08(s32 arg0); -extern void func_801577C8(); -extern void func_80149C94(void); -extern void func_80157D20(void); -extern void func_80149CB4(void); -extern s32 func_80149CD4(s32 a0); -extern u8 func_8014B5B8(s32 *a0); -extern s32 func_80149D10(s32 a0); -extern s32 func_80149E94(s32 a0); -extern s32 func_80149DD8(s32 a0); -extern s32 func_80149D9C(s32 a0); -extern u8 D_801202A0[]; -extern s32 func_80149F2C(s32 a0, s32 a1); -extern s32 func_80149E94(s32 arg0); -extern void func_80149FA8(void); -extern s32 D_8018D124[]; -extern u8 D_80078E78[]; -extern s32 func_80149FB0(s32 a0); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern void func_8014A1B0(s32 a0, s32 a1); -extern s32 func_8014A048(s32 param_1); -extern u16 func_80156370(u16 a0); -extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); -extern void func_8015D4B4(); -extern void func_8014A218(void); -extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); -extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); -extern s32 func_8014A238(s32 arg0); -extern s32 func_8014A2E4(s32 a0); -extern void func_8014A380(s32 a0, s32 a1); -extern s16 D_801152B0; -extern s16 D_801152B4; -extern s32 func_8014A3E0(struct S_8014A3E0 *a0); -extern s32 func_8014A454(s32 a0); -extern s32 func_8014A4B4(void *a0); -extern void func_8015EDD4(); -extern void func_8014A4FC(void); -extern s32 func_8014A674(s32 *a0); -extern s32 func_8014A69C(s32 *a0); -extern s32 func_8014A6C4(s32 a0); -extern void func_8015E184(); -extern void func_8014A830(void); -extern s32 func_80029AF4(void); -extern s32 func_8014A850(s32 param_1); -extern void func_8014AA04(s32 a0); -extern void func_801599A4(void *a0); -extern void func_80159B3C(void *a0); -extern s32 func_80165A20(s32 a0); -extern void func_8014AB7C(); -extern void func_8014AC10(); -extern void func_8014AA28(void); -extern void func_8014AB5C(void); -extern void func_80162CCC(void); -extern void func_8014AB7C(s32 arg0); -extern void func_8014ABF0(void); -extern void func_80016714(void *a0, s32 a1); -extern void func_8014AC10(s32 arg0); -extern void func_8014ACC0(s32 a0, s32 a1); -extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); -extern void func_8014ACE8(void *a0, s32 a1, s32 a2); -extern void func_80146AFC(void *a0); -extern void func_8014ADA8(s32 a0, s32 a1); -extern void func_8014AD7C(s32 a0); -extern s32 D_80078E8C; -extern void func_8014B034(s32 arg0); -extern void func_8014B00C(s32 arg0); -extern void func_8014B084(void); -extern s16 D_80078E90; -extern void func_8014B034(s32 a0); -extern u16 D_80078EAC; -extern u8 D_80078EBA; -extern void func_800D10EC(void); -extern void func_8002AC98(void); -extern s32 func_8014B154(s32 *a0); -extern void func_8014B12C(void); -extern void func_8014B2F8(void); -extern void func_8014B4C4(void); -extern void func_8014B160(s32 a0); -extern s32 func_8016F1C4(void); -extern s16 D_80078E96; -extern s16 D_80078EB8; -extern u16 D_80078EA6; -extern void func_8014B2A8(void); -extern void func_8014B310(void); -extern void func_8014B2D0(void); -extern s32 D_80078E94; -extern s32 D_80078ECC; -extern void func_8014B33C(void); -extern u8 D_80062BF4[]; -extern void func_8014BC80(s32 a0, s32 a1); -extern void func_80019064(void *a0); -extern s32 D_80078E98; -extern void func_80166244(); -extern void func_8014B4D4(void *a0); -extern s16 D_80078E9A; -extern u8 D_80126D1C; -extern s32 D_80126D74; -extern void func_8014B598(s32 a0, s32 a1); -extern void func_8014B5B0(s32 *a0); -extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); -extern void func_8014B5D8(s32 s1); -extern s32 D_80078E9C; -extern s32 D_80078ED0; -extern void func_8014B6F0(s32 a0, s32 a1); -extern void func_8014B768(s32 a0, s32 a1); -extern void func_8014B944(s32 a0, s32 a1, s32 a2); -extern s32 D_80078EA4; -extern u16 D_80078EB2; -extern s16 D_80078EB4; -extern void func_8014BB0C(void); -extern void func_8014BB24(s32 a0, s32 a1, s32 a2); -extern void func_8014BC0C(s32 a0, s32 a1); -extern void func_8014BC44(s32 a0, s32 a1); -extern u8 D_800B9A17; -extern void func_8014BCC0(s32 a0, s32 a1); -extern u16 D_80078EB6; -extern s32 func_8014BCEC(s32 a0, s32 a1); -extern void func_8014BD24(s32 a0, s32 a1); -extern void func_8014BD60(s32 param_1, s32 param_2); -extern void func_8014BD98(s32 a0, u16 a1); -extern void func_8014BDC8(void); -extern void func_8014BDE0(void); -extern s32 func_8017267C(s32 *a0); -extern s32 func_80013294(void *a0, void *a1); -extern void func_80029ED4(s32 a0); -extern void func_8014BDE8(s32 a0); -extern void func_8014BE78(void); -extern void func_8014BE9C(void); -extern void func_80029124(s32 a0, s32 a1); -extern void func_8014BEC0(void); -extern void func_8014BF18(s32 a0); -extern void func_8014BF48(void); -extern u8 func_8014BF6C(void); -extern void func_8014BF8C(u8 arg0); -extern void func_8014BFB0(void); -extern u8 func_8014BFD4(void); -extern void func_8014BFF4(s32 a0, s32 a1); -extern void func_8014C010(s32 a0, s32 a1); -extern s32 func_8014C050(s32 a0, s32 a1); -extern s32 func_8014C088(s32 a0, s32 a1); -extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); -extern s32 func_8014C118(void * a0, s32 a1, s32 a2); -extern s32 func_8014C168(s32 * param_1, s32 param_2); -extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); -extern u8 D_8018D1AC[]; -extern void func_8014C1A0(s32 arg0, s32 arg1); -extern s32 func_80013328(s32 a0, s32 a1); -extern s32 func_8014C59C(void *a0, void *a1); -extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); -extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); -extern s32 ratan2(s32 dx, s32 dy); -extern u8 D_8018D1B4; -extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); -extern s16 func_8014C5D0(s32 a0, s32 a1); -extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); -extern u8 D_80126D17; -extern void func_8014C6AC(void); -extern void func_8014C6C0(void); -extern u8 D_80126D1E; -extern void func_8014C6D0(void); -extern void func_8014C6E0(void); -extern s32 func_8014C860(s32 a0, s32 a1); -extern void func_8014C8C8(s32 a0, s32 *a1); -extern void func_8014C88C(s32 a0); -extern void func_8014C8C8(s32 dst, s32 * src); -extern void func_8014C8F0(s32 arg0); -extern u8 D_801151F0[]; -extern s32 func_8014C918(s32 a0, s32 a1); -extern s32 D_80126B50; -extern void func_8014C968(void); -extern void func_8014C978(void); -extern s32 func_8014C98C(void); -extern void func_80139914(s32 a0); -extern s32 func_8014CA00(s32 a0); -extern u16 func_8014CA70(s32 a0, s32 a1); -extern s32 func_8014CA14(s32 a0, s32 a1); -extern u16 func_8014CAE4(s32 *a0, s32 a1); -extern s32 func_8014CA88(s32 *a0, s32 a1); -extern s32 func_8014CAFC(void); -extern s32 func_8014CB0C(void); -extern s32 func_8014CB1C(void); -extern u8 D_80126D1F; -extern s32 func_8014CB2C(void); -extern s32 func_8014CB58(void); -extern u8 D_80126D1D; -extern void func_8014CB68(void); -extern s32 func_8014CB7C(void); -extern s32 func_8014CB8C(void); -extern short D_80126C9E; -extern void func_8014CB9C(struct Packed8 *a0); -extern s32 D_80126CDC; -extern void func_8014CBD8(void); -extern s16 D_80126CC4; -extern void func_8014CBE8(void); -extern void func_8014CBF8(void *a0); -extern void func_8014D3E0(s32 a0); -extern void func_8014D04C(void); -extern void func_8014CCB4(void); -extern void func_8014CC28(s32 a0); -extern void func_8014CD0C(u8 *a0); -extern s32 func_8014CF04(s32 a0, s32 a1, void *a2); -extern void func_8014CD80(s32 a0, void *a1, void *a2); -extern void func_8014D0A4(s32 a0); -extern s32 func_8014D2A0(s32 a0, void *a1, void *a2); -extern s32 func_8014D12C(s32 a0, void *a1, void *a2); -extern void func_8014D438(s32 a0); -extern void func_8014D3E0(s32 _arg0); -extern void func_8014D610(s32 a0, void *a1, void *a2); -extern s32 func_8014D4C0(s32 a0, void *a1, void *a2); -extern void func_8014D790(s32 a0); -extern void func_8014D738(void); -extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); -extern s32 func_8014D820(s32 a0, u16 *a1, u16 *a2); -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); -extern void func_8014DF94(s32 arg0); -extern void func_8014DF3C(void); -extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ -extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ -extern s16 D_801152AC; -extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); -extern void func_8014E48C(s32 a0); -extern void func_8014E434(void); -extern void func_8014E5B4(s32 a0, void *a1, void *a2); -extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); -extern void func_8014E6F8(struct SubE6F8 *a0); -extern void func_8014E6A0(void); -extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); -extern void func_8014E934(s32 _arg0); -extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); -extern s32 func_8014E98C(void *a0); -extern s32 D_801150D8; -extern s16 D_801152AA; -extern u8 D_80126720[]; -extern s16 D_80126724; -extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); -extern s32 func_8014ED80(struct SubED80 *a0); -extern int D_801E9698; -extern void func_8014ED28(s32 _arg0); -extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F24C(struct SubF24C *a0); -extern void func_8014F1F4(void); -extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F4C0(); -extern s32 func_8014F468(void); -extern int func_8014F74C(); -extern int func_8014F6F4(void); -extern u8 D_800D3918[]; -extern u8 D_801152A8[]; -extern s32 D_801152BC; -extern int func_8014F74C(s32 arg0); -extern s32 func_8014FA70(s32 a0); -extern s32 D_801E969C; -extern void func_8014FA04(s32 a0); -extern s32 func_8014FBC0(); -extern s32 func_8014FC18(u8 *self); -extern int func_8014FD54(int param_1); -extern void func_8014FCFC(void); -extern void func_80150170(void *a0); -extern s32 func_8014FE60(void *a0); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_8014FE60(void *e); -extern s32 func_80134510(s32 arg); -extern s32 func_80150150(s32 a, s32 b); -extern s32 func_80150460(s32 a, s32 b); -extern void func_801504D8(u16 *a0); -extern s32 func_80150480(s32 _arg0); -extern s32 func_80150528(void *a0, void *a1, void *a2); -extern s32 func_80150528(void *arg0, void *arg1, void *arg2); -extern s32 func_801506A4(s32 a0, s32 a1); -extern s32 func_801505FC(s32 a0); -extern s32 func_801506A4(s32 arg0, s32 arg1); -extern void func_80150820(s32 a0, s32 a1); -extern void func_8015086C(int param_1); -extern s32 func_801508B4(s32 a0); -extern s32 func_8015094C(s32 a0); -extern short func_801508F8(s32 a0); -extern s32 D_8018D1E4; -extern s32 D_80126990; -extern s32 D_80126994; -extern u8 D_80126948[]; -extern s32 func_80021174(s32 a0, s32 a1); -extern s32 func_8015094C(s32 param_1); -extern void func_80150B9C(void); -extern s32 func_80151184(s32 a0, s32 a1, s32 a2); -extern s32 func_80150BA4(s32 a0); -extern s32 func_801619D0(void *a0); -extern void func_80150BC8(s32 *a0); -extern s32 func_80150480(s32 a0); -extern u16 D_800AE6DC; -extern void func_80150C48(s32 a0); -extern int func_80151184(int arg, int a1, int a2); -extern int func_80150CA0(int arg); -extern void func_80150EC4(s32 a, s32 b); -extern void func_80150CC4(s32 a); -extern void func_80150CE4(s32 a); -extern void func_80150D04(s32 a); -extern void func_80150D24(s32 a); -extern void func_80150D44(s32 a); -extern void func_80150D64(s32 a); -extern void func_80150D84(s32 a); -extern void func_80150DA4(s32 a); -extern void func_80150DC4(s32 a); -extern void func_80150DE4(s32 a); -extern void func_80150E04(s32 a); -extern void func_80150E24(s32 a); -extern void func_80150E44(s32 a); -extern void func_80150EC4(s32 a0, s32 a1); -extern void func_80150E64(s32 a0); -extern void func_80150E84(s32 a0); -extern void func_80150EA4(s32 a0); -extern u8 D_800AE6C0; -extern s16 D_800AE6C8; -extern s16 D_800AE6CA; -extern s16 D_800AE6CC; -extern s32 D_800AE6C4; -extern s16 D_800AE6CE; -extern u8 D_800AE6BE; -extern u8 D_801201F8[]; -extern void func_80150F78(void); -extern void func_80150F80(s32 a0); -extern int func_80150FB4(int arg); -extern void func_80150FD8(s32 a0); -extern int func_80151014(int arg); -extern void func_80151038(s32 a0); -extern int func_80151070(int arg); -extern int func_80151094(int arg); -extern void func_801510B8(void); -extern void func_801510C0(void); -extern int func_801510C8(int arg); -extern int func_801510EC(int arg); -extern s32 func_8012DB84(void); -extern s32 func_80151110(void); -extern void func_80151130(void); -extern int func_80151138(int arg); -extern void func_8015115C(s32 *a0, s16 a1); -extern s32 func_80151164(s32 a0, s32 a1); -extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); -extern void func_801511A8(u8 *a0); -extern void func_801511C4(u8 *a0); -extern int func_80151204(int arg, int a1); -extern int func_801511E0(int arg); -extern int func_80151204(int a0, int a1); -extern void func_80151238(void *a0); -extern void func_8015126C(u16 *p); -extern void func_80151780(s32 a0); -extern void func_801516F0(s32 *a0); -extern void func_8015173C(s32 *a0); -extern s16 D_8011DB1A; -extern s32 D_80127518; -extern s32 D_801151FC; -extern s32 func_801725CC(u8 *a0); -extern s32 func_80029D3C(void); -extern void func_80151878(void); -extern void func_80153B58(s32 *a0); -extern s32 func_80151880(s32 a0); -extern s32 func_801518D8(s32 a0); -extern s32 func_80151944(void); -extern s32 func_80151924(void); -extern void func_8014E934(s32 a0); -extern s32 func_8014F3E8(s32 a0); -extern void func_801519C8(s32 a0); -extern void func_80151980(s32 a0); -extern M2C_UNK D_800D5880; -extern s32 D_800D58AC; -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801519C8(s32 arg0); -extern void func_80151C54(s32 a0); -extern void func_801542DC(s32 *a0, s32 a1); -extern void func_8015BDD0(s32 *a0); -extern void func_80165718(s32 a0); -extern u8 D_800D46E4[]; -extern void func_80151AE4(s32 arg0); -extern void (*D_8018D28C[])(void); -extern void func_80151D24(void *a0); -extern void func_80151DB0(s32 a0); -extern void func_80151D60(void *a0); -extern s32 func_80172630(u8 *a0); -extern s32 D_80062C14; -extern void func_80151DB0(s32 param_1); -extern void func_80151E78(s32 *a0); -extern void func_80151ECC(struct S80151ECC *a0); -extern void func_80151FB4(s32 a0); -extern void func_80151F38(s32 *a0); -extern void func_801553C0(s32 a0); -extern void func_80153C18(); -extern void (*D_8018D2B0[])(void); -extern void func_80152058(void *a0); -extern void func_801520DC(s32 a0); -extern void func_80152094(s32 a0); -extern void func_80147324(s32 a0); -extern u8 D_80062C04[]; -extern M2C_UNK D_8018D2A0; -extern void func_801520DC(s32 arg0); -extern void func_801470B4(s32 a0); -extern void func_8015369C(s32 a0); -extern void func_80152194(s32 *a0); -extern s32 func_801536DC(s32 a0); -extern void func_8015220C(s32 a0); -extern s32 func_80153800(s32 a0); -extern void func_801522CC(s32 a0); -extern void func_80152254(s32 *a0); -extern void (*D_8018D2C4[])(void); -extern void func_80152370(void *a0); -extern void func_801523F4(s32 a0); -extern void func_801523AC(s32 a0); -extern void func_8001382C(s32 a0, void *a1, void *a2); -extern u8 D_8018D2D0[]; -extern void func_801523F4(s32 arg0); -extern void func_801525F4(int); -extern s32 func_801535F4(void *arg0); -extern void func_8015BF48(s32 *a0); -extern void func_80152500(int param_1); -extern void func_801525F4(s32 a0); -extern void (*D_8018D2E0[])(void); -extern void func_80152698(void *a0); -extern void func_80152714(s32 a0); -extern void func_801526D4(s32 a0); -extern void func_80152790(s32 a0); -extern void (*D_8018D2F8[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018D2E8; -extern void func_801528B0(s32 arg0); -extern void func_8015294C(s32 a0); -extern void func_80152A08(s32 a0); -extern void func_80152AC8(s32 a0); -extern void func_80152A50(s32 *a0); -extern void (*D_8018D30C[])(void); -extern void func_80152B6C(void *a0); -extern void func_80152BF0(s32 a0); -extern void func_80152BA8(s32 a0); -extern void func_80152C80(s32 *a0); -extern void func_80152C40(s32 *a0); -extern void (*D_8018D328[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018D318; -extern void func_80152DA8(s32 arg0); -extern void func_80152E4C(s32 a0); -extern void func_80152EFC(s32 a0); -extern void func_80152FBC(s32 a0); -extern void func_80152F44(s32 *a0); -extern void (*D_8018D33C[])(void); -extern void func_80153060(void *a0); -extern void func_801530E4(s32 a0); -extern void func_8015309C(s32 a0); -extern void func_80155440(s32 *a0); -extern void func_801530E4(s32 arg0); -extern void func_80153150(struct S80153150 *a0); -extern void func_801531BC(s32 a0); -extern void func_8015327C(s32 a0); -extern void func_80153204(s32 *a0); -extern void (*D_8018D350[])(void); -extern void func_80153320(void *a0); -extern void func_801533A4(s32 a0); -extern void func_8015335C(s32 a0); -extern void func_80153410(s32 *a0); -extern void func_80153490(s32 a0); -extern void func_80153550(s32 a0); -extern void func_801534D8(s32 *a0); -extern void (*D_8011DB28)(s32 a0); -extern s32 func_801536DC(s32 param_1); -extern void func_800139C8(s32 a0, void *a1, void *a2); -extern s32 func_80153978(s32 a0, u16 *src); -extern s32 func_80133784(s32 a0, void *src, s32 dst); -extern s32 func_801539F8(s32 a0, void *a1); -extern s32 func_801539F8(s32 a0, void * a1); -extern s32 func_8016DA04(s32 a0); -extern s32 func_80153BD8(s32 a0); -extern s32 func_80153BF0(s32 a0); -extern void func_80153C18(void); -extern u16 D_8011F748; -extern void func_80153C30(void); -extern void func_80153C74(s16 a0, s16 a1); -extern s16 D_8011DB18; -extern void func_80153C44(int a0, int a1, s16 a2); -extern s16 D_8011DB0C; -extern s32 D_80115210; -extern void func_80153C8C(void); -extern void func_80153C9C(void); -extern s32 func_80153CBC(void); -extern s32 D_8018D364; -extern void (*D_8018D38C[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018D36C; -extern void func_80153D7C(s32 param_1); -extern void func_8015410C(void); -extern void func_80153E00(s32 param_1); -extern void func_80151664(void); -extern void func_80154134(u8 *a0); -extern void func_80154190(u8 *a0, s32 a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154218(u8 *a0, s32 a1, s32 a2); -extern void func_801541D8(u8 *a0, s32 a1, s32 a2); -extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); -extern void func_801542A4(); -extern void func_801542A4(s32 *a0, s32 a1); -extern void func_8015430C(); -extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); -extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); -extern s32 func_80154358(void * arg0); -extern void func_80154AB4(s32 a0, s32 a1); -extern void func_80154B20(s32 a0, s32 a1, s32 a2); -extern void func_80154AE0(s32 a0, s32 a1, s32 a2); -extern void func_80154B7C(u8 *a0, s32 a1); -extern void func_80154B4C(u8 *a0, s32 a1); -extern void func_80154BC8(void *a0, s32 a1, s32 a2); -extern void func_80154B98(void *a0, s32 a1, s32 a2); -extern u8 D_800D8D10[]; -extern s16 D_80078E9E; -extern void func_801550FC(s32 a0); -extern void func_80154ED8(s32 a0, s32 a1); -extern void func_80154F9C(s32 a0); -extern void func_800183E0(s32 a0); -extern void func_801550FC(s32 arg0); -extern void func_8001D150(s32, s32); -extern void func_8001D130(int, int); -extern void func_80155150(int param_1); -extern s32 D_800DE2A4[]; -extern void func_801552F4(s32 a0); -extern void func_80155344(s32 a0); -extern s32 func_80155394(s32 *a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80029178(s32); -extern int (*D_8018D3D8[])(void); -extern s32 func_80155458(s32 param_1); -extern s32 func_801659DC(u8 *a0); -extern s32 func_801554B8(void *arg0); -extern void func_801555F4(void *a0); -extern void func_80155518(s32 *a0); -extern void func_80155580(void *a0); -extern void (*D_8018D3DC[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern s32 func_80155800(s32 arg0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern s32 func_80029B4C(s32 a0, s32 a1); -extern s32 func_80029BC8(s32 a0, s32 a1); -extern s32 func_80029C44(s32 a0, s32 a1); -extern s32 func_8015640C(s32 a0, s32 a1); -extern s32 rand(void); -extern u32 func_8015616C(s32 param_1, u16 param_2); -extern u16 func_80156370(u16 param_1); -extern s32 func_801564B0(s32 a0); -extern s32 func_8002A1B4(void); -extern s32 func_8002A400(void); -extern s32 func_8002A670(void); -extern s32 func_8002A8E0(void); -extern s32 D_801151E0[]; -extern s32 func_801565C0(void); -extern void func_80156A14(s32 *a0); -extern void func_80156648(s32 *a0); -extern u8 D_8011DAD8[]; -extern s32 func_8014C568(s16 *a0, s16 *a1); -extern void func_801567BC(s32 a0); -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018D840[]; -extern void func_80156A1C(s32 param_1, s32 param_2); -extern s32 D_801150E0[]; -extern void func_80156A88(s32 a0, s32 a1); -extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); -extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); -extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); -extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern s32 func_80135004(s32 a0, void *a1, s32 a2); -extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801575E4(void *a0); -extern void func_801574DC(s32 *a0); -extern void func_80157544(void *a0); -extern void (*D_8018D850[])(void); -extern void func_8014CC28(s32 a0); /* defined */ -extern s32 func_8014F3E8(s32 a0); /* declared */ -extern void func_8015BDD0(s32 *a0); /* defined */ -extern void func_801575E4(void *a0); /* defined */ -extern void func_80157580(s32 arg0); -extern u8 D_800D4F14[]; -extern void func_801576A8(void *arg0); -extern s32 func_8015773C(u8 *a0); -extern s32 func_8015771C(u8 *a0); -extern s32 func_8015773C(u8 * arg0); -extern int D_801E96D0; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018D878[])(void); -extern void func_80157808(void *param_1); -extern void func_80157880(s32 a0); -extern s32 func_801725A4(u8 *a0); -extern u8 D_800D5128; -extern u8 D_8018D858; -extern void func_801578C0(s32 param_1); -extern void func_80147A84(int); -extern void func_80148038(int, int); -extern void func_80147460(int); -extern void func_80146D90(int); -extern void func_80161450(void *a0); -extern void func_80157A8C(int); -extern void func_80154A74(int, int); -extern unsigned char D_800D5178; -extern unsigned char D_8018D868; -extern void func_8015795C(int param_1); -extern void func_80161D20(s32 a0, s32 a1); -extern void func_80157A8C(s32 a0); -extern void func_8016706C(s32 a0); -extern u8 D_800D51AC[]; -extern void func_80157AC8(s32 param_1); -extern void func_80157B74(int param_1); -extern void func_8016158C(void *a0); -extern void func_8015BE04(s32 *a0); -extern void func_80157BC8(s32 a0); -extern void func_80157CCC(s32 a0); -extern void func_80157DC4(void *a0); -extern void func_80157FC4(void *a0); -extern void func_80157D74(u16 *a0); -extern void (*D_8018D8B8[])(void); -extern void func_80157E38(void *); -extern void func_80157E00(void *a0); -extern void func_80157E38(void * a0); -extern s32 func_80157F64(s32 *a0); -extern s32 func_80156600(void *a0); -extern void func_80157EA4(void *a0); -extern void (*D_8018D8C0[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018D88C; -extern void func_80158038(void * param); -extern u8 D_800D524C[]; -extern void func_80161418(void *a0); -extern void func_801580B4(s32 a0); -extern void func_801581AC(s32 a0); -extern void (*D_8018D8CC[])(void); -extern void func_8015824C(void *a0); -extern void func_801582C0(void *); -extern void func_80158288(void *a0); -extern u8 D_800D52A8[]; -extern void func_801585A4(s32 *a0); -extern void func_801582C0(void *a0); -extern s32 func_801585AC(s32 *a0); -extern u8 D_800D52E8[]; -extern void func_80158344(s32 *a0); -extern s32 func_801615C4(void *a0, s32 a1); -extern u8 D_8018D89C; -extern u8 D_800D533C; -extern void func_80158434(s32 param_1); -extern void func_80158548(s32 param_1); -extern void func_801585EC(u8 *a0); -extern void func_80158794(void); -extern s32 D_801E96D8; -extern s32 D_801E96E4; -extern s32 D_801E96E8; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018D908[])(s32 *); -extern void func_80158AE4(void *a0); -extern void func_80158AB4(void *a0); -extern void func_8016F264(void); -extern void func_80165840(void); -extern void func_801658DC(void); -extern void func_80165A78(s32); -extern void func_80158AE4(void * a0); -extern M2C_UNK D_800D58D8; -extern void func_80158BB0(void *arg0); -extern s32 func_80159404(s32 a0, s32 a1); -extern void func_80158C40(s32 *a0); -extern void func_80158CD8(s32 *a0); -extern s32 func_80159434(s32 a0, s32 a1); -extern void func_80158D60(s32 a0); -extern M2C_UNK D_800D5904; -extern void func_80158E24(s32 *a0); -extern s32 D_8018D8DC[]; -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80158F00(int param_1); -extern u8 D_80110C3C[]; -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80158FA4(s32 param_1); -extern s32 func_801399F0(s32 a0); -extern u8 D_80110C94[]; -extern u8 D_80110CD4[]; -extern void func_80159070(void *a0); -extern s32 func_80029A94(s32); -extern void func_80175454(void); -extern void func_800298BC(void *); -extern void func_8002992C(s32); -extern void func_800CF804(void); -extern void func_800CF818(void); -extern u8 D_80110D0C[]; -extern void func_80159120(s32 a0); -extern void func_801592CC(s32 *a0); -extern u8 D_800AE6BD; -extern s32 D_801E96E0; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018DB58[])(void); -extern void func_80159698(void *a0); -extern s32 func_801596D4(void *a0); -extern void func_80174B6C(void); -extern void func_80129248(s16 a0); -extern void func_8013C938(void); -extern void func_8013CB20(void); -extern void func_8013C98C(void); -extern void func_8002850C(s32, s32, s32); -extern void func_80028620(s32, void *); -extern s16 D_800B9AAC[]; -extern s16 D_800B9B00; -extern u16 D_801270C0; -extern u32 D_800AFAE8[]; -extern char D_8018D978[]; -extern s32 func_801596F0(s32 param_1); -extern s32 func_80159874(void); -extern void func_800167B8(s32 a0); -extern s32 func_8015987C(s32 a0); -extern int func_800167F0(int arg); -extern int func_801598BC(void); -extern void func_80159968(void *a0); -extern void func_801598E0(u8 *a0); -extern void (*D_8018DBFC[])(void); -extern void func_80159A20(void *a0); -extern void func_801599E0(void *a0); -extern void func_80159A18(void); -extern void func_80159BE4(s32); -extern void func_80159B08(s32 *a0); -extern void func_80159B70(void *a0); -extern void func_80159B3C(void * a0); -extern void (*D_8018DD50[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018DB6C; -extern void func_80159BE4(s32 arg0); -extern void func_8015A1C8(s32 a0); -extern void func_8015A2D8(s32); -extern void func_8015A1FC(s32 *a0); -extern void func_8015A264(void *a0); -extern void func_8015A230(s32 *a0); -extern void (*D_8018DD58[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018DB7C; -extern s32 func_80172608(u8 *a0); -extern void func_8015A2D8(s32 param_1); -extern u8 D_800D48DC; -extern s32 func_8015AB7C(s32 a0); -extern s32 D_8011F9C4; -extern s32 func_8015ABD4(s32 a0, s32 a1, s32 a2); -extern s32 func_80161CD0(s32 a0, s32 a1); -extern M2C_UNK D_8018DB9C; -extern void func_8015AC48(s32 arg0); -extern void func_8015AC90(s32 a0); -extern void func_8015ADB0(s32 a0); -extern void func_8015ACC4(s32 *arg0); -extern void func_8015AD3C(void *a0); -extern void func_8015AD08(void *arg0); -extern void (*D_8018DD60[])(void); -extern void func_8015ADB0(s32); -extern void func_8015AD78(s32 a0); -extern void func_8015ADB0(s32 arg0); -extern s32 D_800D4A9C; -extern int func_8015B6F4(int param_1); -extern u8 D_800D4F8C[]; -extern s32 func_8015B7B4(s32 a0); -extern u8 D_800D4BE0[]; -extern s32 func_8014A51C(void); -extern s32 func_8015B858(u8 *a0); -extern s32 D_800D4B48; -extern void func_8015B8F8(s32 *a0); -extern void func_8015BD8C(s32 *a0); -extern s32 func_8015BE94(); -extern void func_8015BE38(struct Obj *a0); -extern s32 func_8015BE74(void); -extern void func_80161124(void *a0); -extern s32 func_8015BE94(s32 *a0); -extern s32 func_8015AE2C(); -extern s32 func_8015BEC4(void); -extern s32 func_8015B950(s32 arg0); -extern s32 func_8015BEE4(void); -extern void func_8015BF04(s32 *a0); -extern void func_8015C0C4(s32 a0); -extern void func_8015BFF4(void *a0); -extern void func_8015BF7C(s32 *a0); -extern void func_8015C030(s32 *a0, s32 a1); -extern void func_8015BFB0(s32 *a0, s32 a1); -extern void (*D_8018DD88[])(void); -extern void func_8015C0C4(s32); -extern void func_8015C08C(s32 a0); -extern s32 func_8015C128(s32 param_1); -extern void func_8015C6A4(void); -extern void func_8015C788(s32 a0); -extern void func_8015C6AC(s32 *a0); -extern void func_8015C714(void *a0); -extern void func_8015C6E0(s32 *a0); -extern void (*D_8018DD94[])(void); -extern void func_8015C788(s32); -extern void func_8015C750(s32 a0); -extern void func_8015CB94(s32 a0); -extern void func_8015CBCC(void); -extern void func_8015CBD4(void); -extern void func_8015CBDC(void); -extern void func_8015CBE4(void); -extern void func_8015CBEC(void); -extern void func_8015CBF4(void); -extern void func_8015CBFC(void); -extern void func_8015CC04(void); -extern void func_8015CC0C(s32 *param_1); -extern void func_8015CC74(s32 *a0); -extern void func_8015CC40(s32 *a0); -extern s32 func_8015CCD0(); -extern s32 func_8015CCB0(void); -extern s32 func_801725E0(u8 *a0); -extern s32 func_8015CCD0(s32 param_1); -extern s32 func_8015CD20(s32 arg0); -extern void func_8015CF24(s32 a0); -extern void func_8015D01C(); -extern void func_8015CF58(s32 *param_1); -extern void func_8015CFC0(s32 *a0); -extern void func_8015CF8C(s32 *a0); -extern void func_8015CFFC(void); -extern void func_8015D01C(int param_1); -extern void (*D_8018DC08[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018DE38; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018CF1C[]; -extern void func_8015D414(int param_1); -extern void func_8015D57C(s32); -extern void func_8015D480(s32 *a0); -extern s32 func_8015D4E8(s16 *a0); -extern void func_8015D4B4(s16 *a0); -extern void func_8015D524(s32 arg0); -extern void func_8015D544(s32 a0); -extern void func_801746DC(void); -extern void func_8015D57C(s32 arg0); -extern s32 func_80161B18(void *a0); -extern s32 func_80161B84(void *a0); -extern void func_80154150(int, int); -extern void func_80149374(int, int); -extern unsigned char D_8018DE4C[]; -extern void func_8015D5E8(int param_1); -extern int func_8015E0D4(int); -extern void func_8015DA5C(s32 a0); -extern void func_8015DB6C(s32 a0); -extern void func_8015DA90(s32 *a0); -extern void func_8015DAF8(s32 *a0); -extern void func_8015DB6C(s32); -extern void func_8015DB34(s32 a0); -extern void func_8015DCB8(s32 a0); -extern void func_8014BD60(s32 a0, s32 a1); -extern int func_8015DD74(int); -extern void func_8015DBD4(void *arg0); -extern int func_8015DC84(int a0); -extern s8 D_8018DE88[]; -extern void func_8015DCB8(s32 param_1); -extern int func_8015DD74(int arg0); -extern void func_8015DECC(s32 a0); -extern void func_8015DDF0(s32 *a0); -extern void func_8015DE58(s32 *a0); -extern void func_8015DECC(s32); -extern void func_8015DE94(s32 a0); -extern void func_8015E018(s32 a0); -extern void func_8015DF34(void *arg0); -extern int func_8015DFE4(int a0); -extern void func_8015E018(s32 param_1); -extern int func_8015E0D4(int a0); -extern void func_8015E22C(s32 a0); -extern void func_8015E150(s32 *a0); -extern s32 func_8015E1B8(s32 a0); -extern void func_8015E184(s32 *arg0); -extern void func_8015E22C(s32); -extern void func_8015E1F4(s32 a0); -extern u8 D_800D4FF4[]; -extern u8 D_800D5098[]; -extern u8 D_800D5060[]; -extern s32 func_8014A850(s32 a0); -extern void func_8015E40C(s32 a0); -extern void func_8015E588(void); -extern void func_8015E4B0(s32 a0); -extern void func_8015E288(s32 a0); -extern u16 D_8018DED0; -extern u16 D_8018DED2; -extern u16 D_8018DED4; -extern s32 D_8018DED8; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -extern void func_8013C9C4(void *a0); -extern s32 D_8018DEE0; -extern void func_8015E5B0(u8 *self); -extern void func_8015E714(s32 *a0); -extern void func_8015E95C(s32); -extern void func_8015E84C(s32 *a0); -extern void func_8015E8E8(s32 *a0); -extern void func_8015E9B8(s32 *a0); -extern void func_8015E8B4(s32 *a0); -extern void func_8015E924(s32 a0); -extern void func_8015E95C(s32 a0); -extern s16 D_801152A0; -extern void func_80160818(s32 *a0); -extern void func_8015ED6C(s32 *a0); -extern void func_8015EE7C(s32); -extern void func_8015EDA0(s32 *a0); -extern s32 func_8015EE08(s32 a0); -extern void func_8015EDD4(s32 *arg0); -extern void func_8015EE44(s32 a0); -extern int D_800D4C48; -extern int D_8018DBEC; -extern void func_8015EE7C(s32 param_1); -extern void func_8015EEE0(void *arg0); -extern void func_8015EF9C(void); -extern void func_8015F080(s32); -extern void func_8015EFA4(s32 *a0); -extern void func_8015F00C(s32 *a0); -extern void func_8015EFD8(s32 *a0); -extern void func_8015F048(s32 a0); -extern void func_8015F080(s32 a0); -extern s32 D_80062BE8; -extern void func_801466F0(s32, s32, s32, s32, s32, s32, s32, s32); -extern s32 func_80161208(void); -extern void func_8015F118(void *a0); -extern void func_8015F260(s32 *a0); -extern void func_8015F380(); -extern void func_8015F2BC(s32 *a0); -extern void func_8015F324(s32 *a0); -extern void func_8015F2F0(s32 *a0); -extern void func_8015F360(void); -extern s32 func_801725B8(u8 *a0); -extern void func_8015F380(void* arg0); -extern void func_8015F738(s32 *a0); -extern void func_8015F848(s32 *a0); -extern void func_8015F76C(s32 *a0); -extern s32 func_8015F7D4(s32 a0); -extern void func_8015F7A0(s32 *arg0); -extern void func_8015F810(s32 *a0); -extern void func_80147078(s32 *, s16); -extern void func_80159B70(void *); -extern void func_8015F89C(void *arg0); -extern void func_8015F948(s32 *param_1); -extern void func_8015F9A4(void *arg0); -extern void func_8015FA24(s32 arg0); -extern void func_8015FBE0(s32 *a0); -extern void func_8015FA44(s32 *a0); -extern void func_8015FAAC(s32 *a0); -extern void func_8015FA78(s32 *a0); -extern s32 func_801612B8(void *a0, s32 a1); -extern void func_8016007C(s32 a0); -extern void func_8015FAE8(void *arg0); -extern void func_8015FCC8(void *param_1); -extern unsigned int D_8018DF64[]; -extern void func_8015FD74(int param_1); -extern s32 func_80028DE0(void); -extern u8 func_80165700(s32 a0, s32 a1); -extern void func_8015FDCC(s32 a0); -extern u8 D_80078EC2; -extern u8 func_801656E8(s32 a0, s32 a1); -extern void func_80165670(s32 a0, s32 a1); -extern void func_8016004C(s32 a0); -extern void func_8015FF20(void *param_1); -extern void func_801601AC(s32 *a0); -extern void func_801600D0(s32 *a0); -extern void func_80160138(s32 *a0); -extern void func_80160104(s32 *a0); -extern void func_80160174(s32 *a0); -extern void func_801601E4(s32 *a0); -extern void func_80160244(s32 *a0); -extern void func_8016032C(void); -extern void func_80160410(s32 *a0); -extern void func_80160334(s32 *a0); -extern void func_8016039C(s32 *a0); -extern void func_80160368(s32 *a0); -extern void func_801603D8(s32 *a0); -extern u8 D_80062BD0; -extern void func_80160410(s32 * a0); -extern void func_801607B8(s32 *a0); -extern void func_801608C0(s32 *a0); -extern void func_801607E4(s32 *a0); -extern void func_8016084C(s32 *a0); -extern void func_80160888(s32 *a0); -extern void func_80160A28(s32 a0); -extern void func_80160A74(s32 *a0); -extern void func_80160BB4(s32 *a0); -extern void func_80160ACC(s32 *a0); -extern s32 func_80160B34(s32 a0); -extern void func_80160B00(s32 *arg0); -extern void func_80160B70(s32 a0); -extern void func_80160C28(void *arg0); -extern void func_80160CB4(s32 *a0); -extern void func_80160D10(void *arg0); -extern void func_80160DEC(u8 *a0); -extern void func_80160F00(); -extern void func_80160E3C(s32 *a0); -extern void func_80160EA4(); -extern void func_80160E70(s32 *a0); -extern void (*D_8018E014[])(void); -extern void func_80160EA4(void *a0); -extern void func_80160EE0(void); -extern void func_80160F00(void* arg0); -extern void func_800D0F4C(s32 a0); -extern u8 D_80110EC0; -extern void func_80160F70(s32 a0); -extern void func_80160FE0(s32 *a0); -extern void func_80161034(void *a0); -extern void func_80161094(s32 a0); -extern void func_801610FC(void); -extern void func_801483E8(void); -extern s32 func_80161A60(s32 a0); -extern void func_8016130C(void *a0, s32 a1); -extern void func_80161240(void *a0); -extern void func_80161374(void *a0, s32 a1); -extern void func_80161278(void *a0); -extern s32 func_801612B8(void * a0, s32 a1); -extern void func_8016163C(void *a0, s32 a1); -extern void func_80161774(void *a0, s32 a1); -extern s32 func_8016197C(s32 a0, s32 a1); -extern s32 func_80161488(void *a0); -extern void func_80161888(void *a0, s32 a1); -extern void func_801614E4(void *a0); -extern void func_8016191C(void *a0, s32 a1); -extern void func_8016151C(void *a0); -extern void func_80161554(void *a0); -extern s32 func_801615C4(void * arg0, s32 arg1); -extern s32 func_801619A4(s32 *a0); -extern s32 func_80161A00(s32 a0); -extern s32 func_80161A30(s32 a0); -extern int func_801497A8(void); -extern int func_80161BE0(void *param_1); -extern u16 D_8018E044[]; -extern void func_80161C98(int param_1, u32 param_2); -extern void func_80161E08(s32); -extern s32 func_80162438(s32); -extern s32 D_800AE6A8; -extern void func_800D1734(void *); -extern s32 D_8018E0A8; -extern void func_80161D88(void); -extern void func_80161E08(s32 param_1); -extern int func_800291DC(int); -extern int func_800D0E30(void *a0); -extern int func_801620C4(void); -extern s32 func_800D0D7C(s32, s32); -extern int D_801E96F0[]; -extern void func_8016216C(void); -extern u8 D_80078EB0; -extern u8 D_80078EB1; -extern s32 func_801621CC(s32 arg0); -extern void func_801622C4(void); -extern void (*D_8018E0CC[])(void); -extern void func_80162330(void *a0); -extern void func_8014706C(void *a0); -extern s32 func_8016236C(u8 *a0); -extern void func_800D0C48(s32 a0); -extern s32 func_801623B8(s32 *a0); -extern s32 func_800167F0(s32 a0); -extern s32 func_80162414(void); -extern s32 func_80162438(s32 _unused0); -extern int func_801626B8(void); -extern void func_80162714(void); -extern int D_801E9748[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018E114[])(void); -extern void func_80162834(void *a0); -extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80162968(s32 a0); -extern s32 func_80162ACC(u8 *a0); -extern u8 D_800B5CB8; -extern s32 D_8018E104; -extern s32 D_800B5CBC; -extern u8 D_800B5CDF; -extern s32 D_800B5CEC; -extern void func_80162870(s32 param_1); -extern void func_801628F4(s32 *a0); -extern void func_80162968(s32 param_1); -extern void func_80162AC0(s32 *a0, s8 a1); -extern s32 func_80162AE0(u8 *a0); -extern void func_80162AF4(void); -extern void func_80162CC4(void); -extern s32 D_80126D40; -extern void func_80162B1C(void); -extern void func_80162D28(s32 *a0); -extern void func_80162D88(s32 *a0); -extern void func_80162DE8(s32 *a0); -extern void func_80162E48(s32 *a0); -extern void func_80162EA8(s32 *a0); -extern void func_80162F60(s32 arg0, s32 arg1); -extern void func_80162F80(s32 arg0, s32 arg1); -extern void func_80162FA0(s32 arg0, s32 arg1); -extern void func_80162F08(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80162FC0(s32 *a0); -extern void func_80162FF4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801630C4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163194(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg4); -extern void func_8016325C(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163234(s32 a0); -extern s32 D_80115100; -extern s32 func_801632E0(void); -extern s32 D_80115200; -extern s32 func_801632F0(void); -extern u16 D_80126B18[]; -extern void func_80163328(void); -extern s32 func_801633A8(void); -extern s32 func_80163408(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void func_80163534(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, u16 * a5); -extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); -extern char D_801E8DBC[8]; -extern void *memcpy(void *dst, const void *src, unsigned int n); -extern void func_801634D8(s32 param_1, u16 param_2, u16 param_3, s32 param_4, u16 param_5); -extern void func_80157158(); -extern void func_80163664(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801636D0(s32 a0, s32 a1); -extern s32 func_8016380C(struct S8016380C *a0, s32 a1); -extern void *memcpy(void *dst, void *src, s32 n); -extern s32 func_801638A0(u8 *a0, s32 a1); -extern s32 func_80163950(s32 a0); -extern void (*D_8018E11C[])(void); -extern void func_80163A58(void *a0); -extern void func_80163A94(s32 param_1); -extern void func_80163C2C(s32 param_1); -extern void func_80163EC8(s32 param_1); -extern void func_80164270(s32 *a0); -extern void func_80164418(void); -extern void func_80163764(s32 a0); -extern void func_801642AC(s32 a0); -extern void func_8016432C(s32 a0); -extern void func_80164410(void); -extern s32 func_80012DBC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164530(s32 arg0); -extern void (*D_8018E170[])(void); -extern void func_80164744(s32 param_1); -extern void func_8001C810(s32 a0, s32 a1); -extern void func_80164A74(s32 *a0); -extern void func_80164930(s32 a); -extern u16 D_800DF2E0; -extern s32 D_8018E138; -extern s16 D_8018E16C; -extern s16 D_8018E16A; -extern s16 D_8018E168; -extern void func_801647A4(int param_1); -extern void func_80164ACC(); -extern void func_80164864(void *a0); -extern void func_80164930(s32 param_1); -extern s32 func_8014C308(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164ACC(s32 a0); -extern void (*D_8018E17C[])(void); -extern void func_80164BA0(void *a0); -extern void func_8001CD50(s32 a0, s32 a1); -extern void func_800233CC(void *, unsigned short); -extern void func_80164DD0(s32 a0); -extern void func_80164DB0(void); -extern u8 D_801E97A8; -extern u8 D_801E97A9; -extern u8 D_801E97AA; -extern u8 D_801E97AB; -extern u8 D_801E97AC; -extern u8 D_801E97AD; -extern u8 D_801E97AE; -extern u8 D_801E97AF; -extern void func_80164BDC(s32 param_1); -extern void func_80164E40(void); -extern void func_80164CD4(u8 *a0); -extern void func_80164D4C(void *arg0); -extern void (*D_8018E18C[])(void); -extern void func_80164EA4(void *a0); -extern void func_80165124(void *a0); -extern void func_80164EE0(int param_1); -extern s32 func_80165140(s32 a0); -extern void func_801651B8(void *a0); -extern void func_80164F44(void *arg0); -extern void func_80165024(void *a0); -extern void func_80165064(s32 *a0); -extern void func_801650C4(s32 *a0); -extern s32 func_80165140(s32 param_1); -extern s32 func_80165240(s32 a0, s32 a1, s32 a2); -extern s32 D_801E97E8; -extern void func_801651B8(void * param_1); -extern u8 D_80126CF8; -extern void func_8016533C(void); -extern void func_801653F4(s32 a0); -extern void func_80165580(s32 a0); -extern void func_80165374(s32 a0); -extern void func_80165580(s32 _arg0); -extern void func_801653B8(s32 *a0); -extern s32 func_80165624(s32 a0); -extern u8 D_80078EC5; -extern void (*D_8018E1D0[])(void); -extern u8 func_80165658(s32 a0, s32 a1); -extern void func_800CAE0C(s32 a0); -extern void func_801654A8(s32 arg0); -extern void func_80165B28(void *a0); -extern void func_801655E4(s32 a0); -extern u8 D_8018E24C[]; -extern s32 D_8018E26C[]; -extern u8 D_8018E2E8[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018E308[]; -extern u8 D_8018E328[]; -extern void func_800CAF6C(void); -extern void func_80165770(void); -extern void func_801657D8(void); -extern u8 D_80078EC3; -extern void func_801657A0(void); -extern s32 D_80078EA0; -extern s32 D_80078EA8; -extern u8 D_80078EBB; -extern s32 D_80078ED4; -extern s32 D_80078ED8; -extern s32 D_80078EDC; -extern u8 D_80078EE0; -extern void func_80165874(void); -extern s8 D_80078EC4; -extern void func_801658EC(void); -extern s32 func_80165900(void); -extern s32 func_80165910(void); -extern s32 D_8012672C; -extern s32 D_8012811C; -extern s32 D_80126B08; -extern void func_80165938(void); -extern void func_80165958(void); -extern s32 func_80165978(void); -extern void func_80165988(void); -extern s32 func_801659A8(void); -extern void func_801659B8(void); -extern s32 func_801659CC(void); -extern void func_80165A18(void); -extern s32 func_80165A50(s32 _arg0); -extern void func_80165AC8(void); -extern void func_80165A78(s32 arg0); -extern void (*D_8018E3C4[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_8018E440[])(void); -extern void func_80165BB4(u8 *a0); -extern void func_80165B6C(u8 *a0); -extern void func_80165C58(s32 arg0); -extern void func_80165BFC(void *a0); -extern void func_80165C78(void); -extern M2C_UNK D_801E8DCC; -extern void func_80165E2C(u16 *arg0); -extern s32 func_80165FA4(s32 a0, s32 a1, s32 a2); -extern s32 func_80167DBC(s32 a0, s32 a1, s32 a2); -extern s32 func_80167AE0(s32 a0, s32 a1, s32 a2); -extern void func_80165E90(void); -extern void func_80020F34(s32 a0, s32 a1); -extern s32 func_80165FA4(s32 arg0, s32 arg1, s32 arg2); -extern void (*D_8018E44C[])(void); -extern void func_80166018(void *a0); -extern void func_80166054(s32 arg0); -extern void func_801661CC(s32 param_1); -extern void func_80166244(void* arg0); -extern void func_8016629C(void *a0); -extern void func_801662F4(void *a0); -extern void func_8016634C(void *a0); -extern void func_801663A4(void *a0); -extern void (*D_8018E454[])(void); -extern void func_801663FC(void *a0); -extern u8 D_800D387C[]; -extern u8 D_800D3888[]; -extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); -extern void func_800D1FC8(s32 a0, s32 a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern void func_801665B4(); -extern void func_80146C3C(); -extern void func_80166438(u8 *a0); -extern s32 func_80128ED8(s32 param_1, s32 *param_2); -extern void func_800D22E4(s32 a0); -extern void func_801665B4(s32 *a0); -extern void (*D_8018E51C[])(void); -extern void func_80166618(void *a0); -extern void (*D_8018E52C[])(void); -extern void func_80166654(void *a0); -extern s32 func_80166690(s32 param_1, s32 param_2); -extern s32 func_80166994(); -extern s32 func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern s32 func_80167540(s32 arg0); -extern void (*D_8018E53C[])(void); -extern void func_801678B4(void *a0); -extern void RotMatrixYXZ(void *a0, void *a1); -extern void func_80048EAC(void *a0, void *a1); -extern s32 func_801670E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80146C3C(void); -extern void func_801678F0(s32 a0); -extern void (*D_8018E548[])(void); -extern void func_80167A9C(void *a0); -extern void func_80167AD8(void); -extern s32 func_80167AE0(s32 param_1, s32 param_2, s32 param_3); -extern void func_80168070(s32 a0, s16 *a1, s16 *a2, void *a3); -extern u8 D_8018E4A8[]; -extern u8 D_8018E4BC[]; -extern s32 func_80167DBC(s32 arg0, s32 arg1, s32 arg2); -extern void func_800D20C0(void *a0, void *a1, s32 a2); -extern void func_80017E68(void *a0, void *a1); -extern void func_800D23D0(void *a0); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern s32 D_801269A4; -extern s32 D_801269A8; -extern s32 D_801269AC; -extern void func_80168070(s32 param_1, s16 *param_2, s16 *param_3, void *param_4); -extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_8016829C(s32 a0); -extern s32 func_80166690(s32 a0, s32 a1); -extern void func_80168328(s32 arg0); -extern void func_801683D8(s32 a0); -extern void func_801684B4(s32 a0); -extern void func_80168540(s32 a0); -extern void func_801685EC(s32 a0); -extern void func_80168640(s32 a0); -extern s32 RotMatrixX(s32 a0, void *a1); -extern void func_80168664(void *arg0); -extern void (*D_8018E560[])(void); -extern void func_80168744(void *a0); -extern void func_80168BDC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801687CC(s32 a0); -extern void func_80168780(s32 a0); -extern void func_80168828(void); -extern void func_801687CC(s32 param_1); -extern void func_80168828(); -extern void (*D_8018E568[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_8018E570[])(void); -extern void func_80168AA8(void *a0); -extern void func_80168AE4(s32 a0); -extern void func_800D2318(void); -extern void func_80168BDC(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void (*D_8018E578[])(void); -extern void func_80168D58(void *a0); -extern void func_80168D94(int a0); -extern void func_80168F40(); -extern void func_80168EC4(s32 a0); -extern void func_80168F40(void *arg0); -extern void (*D_8018E580[])(void); -extern void func_8016901C(void *a0); -extern void func_80169058(s32 a0); -extern s32 func_80169228(void); -extern void func_801691B8(void *a0); -extern void (*D_8018E588[])(void); -extern void func_801693CC(void *a0); -extern void func_80169584(s32 param_1); -extern void func_80169408(s32 a0); -extern void func_8016951C(int param_1); -extern s32 func_80017758(void *a0, void *a1); -extern s32 func_80017DC4(void *a0, void *a1); -extern void func_801696D8(s32 a0, s32 a1); -extern void (*D_8018E590[])(void); -extern void func_80169830(void *a0); -extern void func_8016986C(s32 a0); -extern s32 func_80169A4C(s32 a0, s32 a1); -extern void func_801699D0(void *arg0); -extern void (*D_8018E644[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_8018E64C[])(void); -extern void func_80169F00(void *a0); -extern char D_8018E5FC[]; -extern char D_8018E5BC[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8018E684[])(void); -extern void func_8016A020(void *a0); -extern void func_8016A05C(void *a0); -extern void func_8016A290(s32 a, void *b, void *c); -extern void func_8016A08C(s32 param_1); -extern void func_8016A1CC(int param_1); -extern void func_8016A290(s32 param_1, void *param_2, void *param_3); -extern void (*D_8018E690[])(void); -extern void func_8016A700(void *a0); -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_80126B62; -extern u16 D_80126B66; -extern void func_8016AA50(s32 param_1, s32 param_2); -extern void (*D_8018E6D8[])(void); -extern void func_8016AB30(void *a0); -extern void func_8016B234(void); -extern void func_8016AFB0(s32 a0); -extern void func_8016B114(void *arg0); -extern s32 func_8016B448(s32, s32); -extern s32 func_8016BA48(s32 a0); -extern void func_8016B3F4(s32 a0); -extern s32 func_8016B428(s32 a0); -extern void func_8016B984(void *a0); -extern s32 func_8016B448(s32 arg0, s32 arg1); -extern void (*D_8018E754[])(void); -extern void func_8016B4BC(void *a0); -extern int func_8016B9F8(int); -extern int func_8016B834(int, int); -extern void func_8016B91C(int); -extern int D_801E9B08; -extern void func_8016B4F8(int param_1); -extern s32 func_8016B9F8(s32 param_1); -extern void func_8016B6BC(s32, s32, s32, s32); -extern void func_8016B91C(s32); -extern s16 D_8018E748[]; -extern void func_8016B5C0(s32 param_1); -extern void func_8001CD9C(int, void *); -extern int *D_8018E78C[]; -extern unsigned short D_8018E794[]; -extern unsigned short D_8018E79C[]; -extern unsigned char D_801E9B10[]; -extern int func_8016B834(int param_1, int param_2); -extern void func_8016B964(SrcB964 *a0, DstB964 *a1); -extern void func_8016B91C(s32 arg0); -extern s32 D_801E9B08; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8018E7A4[])(void); -extern void func_8016BBA4(void *a0); -extern s32 func_8016BBE0(s32 param_1); -extern void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3); -extern M2C_UNK D_801E9C44; -extern M2C_UNK D_801E9C48; -extern void func_8016BCC0(void *arg0); -extern s32 func_8016BD78(s32 param_1); -extern s32 func_8016BEA0(s32 param_1); -extern void func_8016BF34(void *a0); -extern void func_8016BFD0(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern s32 D_801E9BD0; -extern void (*D_8018E7D4[])(void); -extern void func_8016C14C(void *a0); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801E9C4C[]; -extern u8 D_801E9C54[]; -extern u8 D_801E9C04[]; -extern void func_8016C2C4(s32 param); -extern s32 func_8016C49C(s32 param_1_arg); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_8016C74C(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern short func_8016CF04(s32 a0, s32 a1); -extern void func_8016C83C(s32 a0); -extern void (*D_8018E7DC[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_8018E7F8[])(void); -extern void func_8016D19C(void *a0); -extern void (*D_8018E800[])(void); -extern void func_8016D428(void *a0); -extern void func_8016D464(u8 *a0); -extern void func_8016D4DC(s32 a0); -extern void func_8016D5EC(s32 *a0); -extern short func_8016CBC0(void); -extern void func_8016D64C(int param_1); -extern void func_8016D778(s32 a0); -extern void func_800D20C0(); -extern void func_8016D848(s32 *a0); -extern void func_8016D984(s32 *a0); -extern void func_8016DBD8(u8 *a0); -extern void (*D_8018E868[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_8018E80C; -extern u8 D_8018E818; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void (*D_8018E89C[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8018E8A4[])(void); -extern void func_8016DF20(void *a0); -extern void func_8016E3CC(s32 a0); -extern void func_8016E1CC(s32 a0); -extern void func_8016E26C(s32 *a0); -extern void func_8016E2E8(void *a0); -extern void func_8016E460(void *a0, void *a1); -extern void func_8016E358(void *a0); -extern void func_8016E460(void *arg0, void *arg1); -extern void (*D_8018E8F8[])(void); -extern void func_8016E5B8(void *a0); -extern void func_8016E5F4(s32 arg0); -extern void func_8016E778(); -extern void func_8016E688(void *a0); -extern void func_8016E6E4(s32 a0); -extern void func_8016E728(u8 *a0); -extern void func_8016E7C8(int param_1, short *p1, unsigned int *p2); -extern void func_8016E778(int param_1); -extern void func_8016E7C8(int param_1, short *param_2, unsigned int *param_3); -extern s32 D_80115218; -extern void func_8016E8F0(void); -extern void func_8016E918(short param_1, short param_2); -extern s32 func_8016E95C(); -extern u16 D_8018E92C[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_8018E91C[]; -extern void func_8016EB3C(s32 p); -extern void func_8016EBA8(u8 *param_1); -extern void func_8016ED6C(void); -extern s32 D_80126D70; -extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); -extern void func_8016ED8C(s32 a0, s32 a1, s32 a2); -extern void func_8016EE40(s32 a0, s32 a1, s32 a2); -extern void func_8016EDBC(s32 a0, s32 a1, s32 a2); -extern void func_8016EE94(); -extern void func_8016EDEC(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_8016EF78(s32 a0); -extern void func_8016EE40(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_801726D0(void *a0); -extern s32 D_80126D50; -extern u8 D_80126D6C; -extern u8 D_80126D6D; -extern u8 D_80126D6E; -extern s32 D_80126D5C; -extern s32 D_80126D60; -extern s16 D_80126D64; -extern s16 D_80126D66; -extern s16 D_80126D68; -extern s16 D_80126D6A; -extern u8 D_80126D1A; -extern s32 D_80127058; -extern s32 D_8012705C; -extern s32 D_80127060; -extern s32 D_80127064; -extern s32 D_80127068; -extern s32 D_8012706C; -extern s32 D_80127070; -extern s32 D_80127074; -extern s16 D_80126D20; -extern void func_8016EE94(s32 a0, s32 a1); -extern s32 func_8016EFC8(s32); -extern s32 func_8016EFA8(s32 a0); -extern void func_8016F094(s32 *a0); -extern s32 func_8016F0AC(); -extern s32 D_8018E948; -extern void func_8016F250(void); -extern void func_8016F288(void); -extern void func_8016F2A8(void); -extern void func_8016F2C8(void); -extern void func_8016F2EC(void); -extern void func_8016F30C(void); -extern void func_8016F330(void); -extern void func_8016F350(void); -extern void func_8016F374(void); -extern void func_8016F388(void); -extern void func_8016F398(void); -extern s32 func_8016F44C(s32 a0); -extern void func_8016F470(s32 a0); -extern s32 func_8016F410(s32 a0); -extern void func_80175414(s32 _arg0); -extern s32 func_8016F4C4(s32); -extern s32 func_8016F494(s32 a0); -extern void func_8016F0E4(void); -extern s32 func_8016F4C4(s32 param_1); -extern void func_8016F4F4(void); -extern void func_801719A4(int a0, int a1); -extern void func_800D1724(s32 a0); -extern void func_80171928(void *a0); -extern void *D_8011F738; -extern void func_8016F4FC(void *a0); -extern void func_8014708C(void *a0); -extern void func_8016F540(void *a0); -extern void func_8016F578(s32 *a0); -extern void func_8016F5B0(void *a0); -extern void func_80147060(u8 *a0); -extern void func_8016F5E0(u8 *a0); -extern void func_8016F610(void *a0); -extern void func_8016F648(void *a0); -extern void func_8016F680(void *a0); -extern void func_8016F6B0(void *a0); -extern void (*D_8018E9C0[])(void); -extern void func_8016F6E0(void *a0); -extern s32 func_80171990(u8 *a0); -extern void func_8016F764(void *a0); -extern void func_8016F71C(u8 *a0); -extern void (*D_8018E9C8[])(void); -extern void func_8016F798(void *a0); -extern void func_8016F804(void *a0); -extern void func_8016F7D4(u8 *a0); -extern void func_80171928(void *); -extern void (*D_8018E9D0[])(void); -extern void func_8016F834(void *a0); -extern void func_8016F8AC(u8 *a0); -extern void func_8016F870(u8 *a0); -extern void func_80172358(u8 *a0, u8 *a1); -extern void (*D_8018E9D8[])(void); -extern void func_8016F8E4(void *a0); -extern void func_8016F95C(void *a0); -extern void func_8016F920(u8 *a0); -extern s32 func_80171CC4(void *a0, void *a1); -extern s32 func_80171D1C(void *a0, void *a1, s32 a2); -extern u16 D_8011F73E; -extern void (*D_8018E9E0[])(void); -extern void func_8016F9C4(void *a0); -extern void func_80171B44(s32 *a0); -extern void func_8016FA44(s32 a0); -extern void func_8016FA00(s32 a0); -extern s32 func_80171C64(s32 a0, s32 a1); -extern void (*D_8018E9E8[])(void); -extern void func_8016FA84(void *a0); -extern void func_8016FB10(void *a0); -extern void func_8016FAC0(u8 *a0); -extern void func_8016FB50(void *a0); -extern void (*D_8018E9F4[])(void); -extern void func_8016FB7C(void *a0); -extern void func_8016FC24(); -extern void func_8016FBB8(s32 a0); -extern s32 func_80171B4C(s32 a0, s32 a1); -extern void func_8016FC24(s32 a0); -extern void func_8016FC64(void *a0); -extern void (*D_8018EA00[])(void); -extern void func_8016FC90(void *a0); -extern void func_8016FD08(u8 *a0); -extern void func_8016FCCC(u8 *a0); -extern s32 func_80172658(s32 *a0); -extern void func_8016FD08(u8 *s0); -extern void func_8016FD7C(s32 *a0); -extern void (*D_8018EA0C[])(void); -extern void func_8016FDB4(void *a0); -extern void func_8016FE2C(u8 *a0); -extern void func_8016FDF0(u8 *a0); -extern void func_8016FE2C(u8 * a0); -extern s32 func_8016FE78(s32 *a0); -extern s32 func_80172664(s32 *a0); -extern void func_8016FED0(s32 *a0); -extern void (*D_8018EA1C[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_8018EA2C[])(void); -extern void func_8016FFDC(void *a0); -extern void func_80170068(u8 *a0); -extern void func_80170018(u8 *a0); -extern void func_801700B8(u8 *a0); -extern void func_80170100(u8 *a0); -extern void (*D_8018EA34[])(void); -extern void func_80170150(void *a0); -extern void func_801701C8(u8 *a0); -extern void func_8017018C(u8 *a0); -extern void func_801701C8(u8 * a0); -extern void (*D_8018EA3C[])(void); -extern void func_80170240(void *a0); -extern void func_801702B8(s32 a0); -extern void func_8017027C(u8 *a0); -extern s16 func_80171AB0(s32 a0, void *a1); -extern void (*D_8018EA44[])(void); -extern void func_801702FC(void *a0); -extern void func_80170374(u8 *a0); -extern void func_80170338(u8 *a0); -extern s32 func_8014C168(s32 *a0, s32 a1); -extern void func_80170374(u8 * a0); -extern void (*D_8018EA4C[])(void); -extern void func_801703E0(void *a0); -extern void func_8017044C(u8 *a0); -extern void func_8017041C(u8 *a0); -extern void func_8017044C(u8 * a0); -extern void (*D_8018EA54[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_8018EA5C[])(void); -extern void func_80170548(void *a0); -extern void func_801705C0(u8 *a0); -extern void func_80170584(u8 *a0); -extern void func_801705C0(u8 * a0); -extern void (*D_8018EA64[])(void); -extern void func_801705F8(void *a0); -extern void func_80170670(void *a0); -extern void func_80170634(u8 *a0); -extern void func_8012A568(void (*a0)(void)); -extern void (*D_8018EA6C[])(void); -extern void func_801706AC(void *a0); -extern void func_80170718(void *a0); -extern void func_801706E8(u8 *a0); -extern void func_80129FF4(void); -extern void (*D_8018EA74[])(void); -extern void func_80170748(void *a0); -extern void func_801707D4(void *a0); -extern void func_80170784(u8 *a0); -extern s32 func_80174ED4(void); -extern void (*D_8018EA7C[])(void); -extern void func_80170810(void *a0); -extern void func_801708B0(void *a0); -extern u8 D_800D5DA8; -extern void func_8017084C(s32 a0); -extern u8 D_800D5A34[]; -extern void func_80170AD8(void *a0); -extern void func_80171904(s32 a0); -extern void func_80170B48(int a0); -extern void func_80170928(void); -extern u8 D_800D59EC[]; -extern void func_80170970(void); -extern u8 D_800D599C[]; -extern void func_801709B8(void); -extern u8 D_800D5934[]; -extern void func_80170A00(void); -extern void func_80170A48(void); -extern u8 D_800D5DC0[]; -extern void func_80170A90(void); -extern void (*D_8018EA84[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_8018EA8C[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8018EA94[])(void); -extern void func_80170C74(void *a0); -extern s32 func_8017197C(u8 *a0); -extern void func_80170CF0(void *a0); -extern void func_80170CB0(u8 *a0); -extern void (*D_8018EA9C[])(void); -extern void func_80170D68(void *a0); -extern void func_80170DE0(u8 *a0); -extern void func_80170DA4(u8 *a0); -extern s32 D_8011F73C; -extern s32 D_8011F740; -extern void func_801718AC(void *a0); -extern void func_80170DE0(u8 * _arg0); -extern void (*D_8018EAA4[])(void); -extern void func_80170E34(void *a0); -extern void func_80170EAC(u8 *a0); -extern void func_80170E70(u8 *a0); -extern int func_800D0F8C(int a0); -extern void func_80170EAC(u8 * _arg0); -extern void (*D_8018EAAC[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8018EAB4[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_8018EABC[])(void); -extern void func_80171064(void *a0); -extern void func_801710DC(u8 *a0); -extern void func_801710A0(u8 *a0); -extern u16 D_8011F73A; -extern void func_801710DC(u8 * arg0); -extern void (*D_8018EAC4[])(void); -extern void func_80171120(void *a0); -extern void func_8017118C(u8 *a0); -extern void func_8017115C(u8 *a0); -extern void func_80142454(s32 a0); -extern void func_8017118C(u8 * a0); -extern void (*D_8018EACC[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8018EAD4[])(void); -extern void func_80171260(void *a0); -extern s32 func_80012F74(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80171384(void *a0); -extern void (*D_8018EADC[])(void); -extern void func_801714E4(void *a0); -extern void func_8017162C(void *a0); -extern void func_80171520(s32 a0); -extern s32 func_801716AC(s32 a0, void *a1, s32 *a2); -extern s32 func_80012FC8(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_800A5E94; -extern u8 D_800A5E95; -extern u8 D_800A5E96; -extern s32 func_801716AC(s32 a0, void * a1, s32 * a2); -extern int func_800D0FE0(int a0); -extern void func_801717A0(void *a0); -extern void func_8013E588(void *a0); -extern void func_801717F4(void *a0); -extern void func_80171824(void *a0); -extern void func_80171854(void *a0); -extern void func_80171884(void); -extern void func_80171A1C(u8 *a0); -extern void func_80171928(void * a0); -extern void func_8017196C(s32 *a0, s8 a1); -extern void func_80171A04(s32 *a0); -extern void func_80171A10(s32 *a0); -extern void func_80171A34(s32 *a0, s8 a1); -extern s32 func_80171A44(u8 *a0); -extern s32 func_80171A58(u8 *a0); -extern s32 func_80171A6C(u8 *a0); -extern void func_80171A80(s32 *a0, s32 a1); -extern s32 func_80171A88(s32 a0); -extern s16 func_80171AB0(s32 param_1, void * _arg1); -extern void func_80171B10(void *a0); -extern void func_80171EC8(s32 a0); -extern s32 func_80171C64(s32 param_1, s32 param_2); -extern s32 func_80171D78(s32 a0, s32 a1); -extern int func_8017250C(short *a0, short *a1); -extern s32 func_80171CC4(void * a0, void * a1); -extern s32 func_80171FFC(short *a0, short *a1, s32 a2); -extern s32 func_80171D1C(void * a0, void * a1, s32 a2); -extern s32 func_8017248C(s32 a0, s32 a1); -extern s32 func_80171E08(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_80047948(s32 a0); -extern s32 func_8004787C(s32 a0); -extern void func_80172170(s32 a0, s32 a1); -extern s32 func_8017209C(void *arg0, void *arg1, s32 arg2, s32 arg3); -extern void func_801722CC(s32 *a0); -extern void func_80172304(s32 *a0); -extern void func_80172310(u8 *a0); -extern void func_801723C4(s32 param_1, s32 param_2); -extern void func_80161C24(s32, s32); -extern void func_80172414(s32 a0); -extern s32 func_801724EC(s32 a0); -extern s32 func_8017248C(s32 arg0, s32 arg1); -extern s32 func_80013450(s32); -extern s32 func_80172560(u8 *a0, u8 *a1); -extern s32 func_8017261C(u8 *a0); -extern s32 func_80172644(u8 *a0); -extern s32 func_80172670(s32 *a0); -extern s32 func_80172688(s32 *a0); -extern s32 func_80172694(s32 *a0); -extern s32 func_801726A0(s32 *a0); -extern s32 func_801726AC(s32 *a0); -extern s32 func_801726B8(s32 *a0); -extern s32 func_801726C4(s32 *a0); -extern s32 func_80172760(s32 a0); -extern s32 func_80174650(s32); -extern void (*D_80127088)(void); -extern s32 D_801270BC; -extern void func_801726D0(void * _arg0); -extern void func_80172710(void); -extern void func_80174684(void *); -extern void func_80172738(void); -extern s16 D_80126B30; -extern s32 func_801727D0(void *a0); -extern void func_80172780(void *a0); -extern void func_80172844(u8 *a0); -extern void func_8017280C(u8 *a0); -extern void func_8017288C(void); -extern s32 func_801728E4(void *a0); -extern void func_80172894(void *a0); -extern void func_80172958(u8 *a0); -extern void func_80172920(u8 *a0); -extern s16 D_80126B36; -extern void func_80172958(u8 * a0); -extern void func_801729A8(void); -extern s32 func_801729F0(void *a0); -extern s16 D_80126B34; -extern s16 D_80126B32; -extern void func_801729B0(s32 a0); -extern void func_80172A8C(void *a0); -extern void func_80172A2C(int param_1); -extern void func_80172ACC(u8 *a0); -extern void func_80172B0C(void); -extern s32 func_80172B44(void *a0); -extern void func_80172B14(s16 a0); -extern s32 D_801150F8; -extern void func_80172BC8(void *a0); -extern void func_80172B80(u8 *a0); -extern void func_80172C48(void); -extern void (*D_8018EB20[])(void); -extern void func_80172CA0(void *a0); -extern void func_80172D14(u8 *a0); -extern void func_80172CDC(u8 *a0); -extern void func_80172D14(u8 * a0); -extern void func_80172D60(void); -extern s32 D_80127508; -extern s32 func_80172DAC(void *a0); -extern void func_80172D68(s32 a0); -extern void func_80172E20(u8 *a0); -extern void func_80172DE8(u8 *a0); -extern void func_80172E20(u8 * a0); -extern void func_80172E8C(void); -extern void func_8017303C(void *); -extern void func_80172E94(void); -extern void func_80172ED4(void); -extern void func_80172EFC(void); -extern void func_80172F24(void); -extern u8 D_800D47F4[]; -extern void func_80172F4C(void); -extern void func_80172F9C(void); -extern u8 D_800D5C6C[]; -extern void func_80172FEC(void); -extern s32 func_80173078(void *a0); -extern void func_8017303C(void * a0); -extern void func_801730FC(struct S801730FC *a0); -extern void func_801730B4(s32 a0); -extern void func_8017316C(void); -extern s32 func_8017319C(void *a0); -extern void func_80173174(void); -extern u8 D_800D5AA0[]; -extern void func_80173220(void *a0); -extern void func_801731D8(s32 *a0); -extern M2C_UNK D_8018EAE4; -extern void func_80173220(void * arg0); -extern void func_80173294(void); -extern void func_801732C4(); -extern void func_8017329C(void); -extern void func_801732C4(s32 *a0); -extern void func_8017331C(); -extern void func_801732F4(void); -extern void func_8017331C(s32 *a0); -extern void func_80173374(); -extern void func_8017334C(void); -extern void func_80173374(s32 *a0); -extern void func_801733A4(void); -extern void func_801733CC(s32 a0); -extern void func_801734BC(s32 a0, s32 a1); -extern s16 D_80126B3E; -extern void func_80173460(s32 a0, s32 a1); -extern void func_801734BC(s32 arg0, s32 _unused1); -extern void (*D_8018EB50[])(void); -extern void func_80173544(void *a0); -extern void func_801735B8(u8 *a0); -extern void func_80173580(u8 *a0); -extern s16 D_80126B40; -extern void func_801735EC(void *a0); -extern void func_80173648(u8 *a0); -extern void func_801736A8(void); -extern s32 func_8014C118(void *a0, s32 a1, s32 a2); -extern s32 func_801736FC(void *a0); -extern void func_801736B0(s32 a0, s32 a1); -extern void func_80173770(u8 *a0); -extern void func_80173738(u8 *a0); -extern void func_801723C4(s32 a0, s32 a1); -extern void func_801737B0(void); -extern s32 func_801737E8(void *a0); -extern void func_801737B8(s16 a0); -extern void func_8017385C(u8 *a0); -extern void func_80173824(u8 *a0); -extern void func_801738D4(void); -extern s32 func_8017390C(void *a0); -extern void func_801738DC(s16 a0); -extern void func_80173980(u8 *a0); -extern void func_80173948(u8 *a0); -extern void func_801739D8(u8 *a0); -extern void func_80173A20(void); -extern s32 D_8012750C; -extern void func_80173A60(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80173A28(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void (*D_8018EB8C[])(void); -extern void func_80173B4C(void *a0); -extern void func_80173BC0(u8 *a0); -extern void func_80173B88(u8 *a0); -extern void func_80173C64(u8 *a0); -extern void func_80173E1C(s32 a0); -extern s16 D_80126938; -extern s16 D_80126B3A; -extern void func_800D128C(s32, s32); -extern void func_80174158(s32 a0); -extern void func_8002A088(s32); -extern void func_8002A2D4(s32); -extern void func_8002A544(s32); -extern void func_8002A7B4(s32); -extern s32 func_80174188(s32 a0); -extern void func_801741A8(s32 a0); -extern s32 func_800D0EC4(void); -extern void func_800D0F0C(s32, s32); -extern void func_80145EE8(s32); -extern void func_80173EF8(void *param_1); -extern s32 func_8014BCEC(s32, s32); -extern void func_801741A8(s32 _arg0); -extern s16 D_80126B3C; -extern s16 D_8011F9C8; -extern void func_801741EC(u8 *a0); -extern void func_80174274(void); -extern s32 func_801742A4(void *a0); -extern void func_8017427C(void); -extern void func_80174318(u8 *a0); -extern void func_801742E0(u8 *a0); -extern void func_80174354(void); -extern s32 func_80174384(void *a0); -extern void func_8017435C(void); -extern void func_801743F0(u8 *a0); -extern void func_801743C0(u8 *a0); -extern void func_801743F0(u8 * a0); -extern void func_80174430(void); -extern s32 func_80174474(void *a0); -extern void func_80174438(s32 a0); -extern void func_801744E0(u8 *a0); -extern void func_801744B0(u8 *a0); -extern void func_80174524(void); -extern void func_80174554(); -extern void func_8017452C(void); -extern void func_80174554(s32 arg0); -extern void func_801745AC(); -extern void func_80174584(void); -extern void func_801745AC(s32 *a0); -extern void func_80174604(void); -extern void func_801745DC(void); -extern void func_80174630(void); -extern s32 func_80174650(s32 _arg0); -extern void func_80174674(void); -extern void func_801746A4(void); -extern s32 func_800CF8CC(void); -extern void func_80174714(void); -extern s32 func_80174754(void); -extern s16 func_80174764(void); -extern s16 func_80174774(void); -extern s32 func_801747CC(void *a0); -extern void func_80174784(void); -extern s32 func_801747AC(s32 a0); -extern s32 func_80174808(u8 *a0); -extern void func_8017481C(void); -extern s32 func_80174888(void *a0); -extern void func_80174824(void); -extern void func_8017484C(s32 a0); -extern void func_801748C4(s32 a0); -extern void func_801748E4(void); -extern void func_8012A018(s32 a, s32 b); -extern s32 func_8017496C(void *a0); -extern s32 D_80126954; -extern s32 D_80126950; -extern s32 D_8012695C; -extern s16 D_80126968; -extern s16 D_8012696A; -extern s16 D_8012696C; -extern s16 D_80126976; -extern s16 D_80126978; -extern s16 D_8012697A; -extern void func_801748EC(void); -extern s32 func_801749C8(); -extern s32 func_801749A8(s32 a0); -extern void func_80174BBC(void *a0); -extern void func_8012A0E0(void); -extern void func_80174BF4(void *a0); -extern void (*D_8018EBE4[])(); -extern void func_80174BF4(void * arg0); -extern s32 func_80174CB0(s32, s32); -extern s32 func_80174C60(s32 a0); -extern void func_80174C80(s32 a0); -extern s32 D_8012697C; -extern u16 D_80126980; -extern s32 func_80174F28(void *a0); -extern void func_80174E9C(s32 a0); -extern void func_80174EF0(s32 a0, s16 a1); -extern s32 func_80175014(u8 *a0, u8 *a1, s32 a2); -extern void func_80174F64(u8 *a0); -extern void func_80174FBC(u8 *a0); -extern s32 func_8017509C(u8 *a0, s32 a1, u8 *a2, u8 *a3); -extern void func_80175184(s32 *a0); -extern void func_80175114(s32 *a0); -extern void func_80175184(); -extern void func_80175150(s32 *a0); -extern void (*D_8018EBF4[])(void*); -extern s32 func_80175268(s32); -extern void func_80175184(s32* arg0); -extern s32 func_80175218(void *a0); -extern void func_801751D8(void *a0); -extern void (*D_8018EBFC[])(s32); -extern s32 func_80175218(void * param_1); -extern void func_801752BC(s32 *a0); -extern u8 D_8011F7A8; -extern u8 D_8011F7A9; -extern u8 D_8011F7AD; -extern u8 D_8011F7AE; -extern void func_80175414(s32 _arg0); -extern void func_80175494(void); -extern void (*D_8018ED64[])(); -extern s32 func_801758FC(void); -extern s32 func_80175820(void); -extern s32 func_801759D8(void); -extern void func_8017553C(s32 *param); -extern void func_801757A0(s32 a0); -extern short D_800B9A02; -extern void func_80175590(void *arg0); -extern s16 D_800B9A02; -extern void func_801757A0(s32); -extern void func_80175624(void *a0); -extern void func_801757E0(int); -extern void func_80175668(void); -extern void (*D_8018ED70[])(); -extern void func_80175690(s32 *param); -extern void func_80175DA8(s32 a0); -extern void func_80175AB8(s32 a0); -extern void func_80176144(s32 a0); -extern void func_801756E4(s32 arg0); -extern void func_80175798(void); -extern void func_80176734(s32 a0); -extern void func_80176218(s32 a0); -extern void func_80176D00(s32 a0); -extern void func_801757E0(s32 a0); -extern s32 func_80178004(s32 a0, s32 a1, s32 a2); -extern u8 D_8011F7B1; -extern u16 D_8011F7B4; -extern u16 D_8011F7B6; -extern s16 D_8011F81E; -extern void *func_80177784(void *a0, s32 a1, s32 a2, s32 a3); -extern u32 func_801783D0(s32 a0, s32 a1); -extern void *func_801777BC(void *a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern u16 D_8011F82C; -extern u16 D_8011F82A; -extern u32 * func_80176D94(void *param_1, u32 param_2, s16 param_3_); -extern void func_801778A8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80176FF4(s32 a0); -extern u16 D_8011F830; -extern u16 D_8011F82E; -extern u32 * func_801770E0(void *param_1, u32 param_2, s16 param_3_); -extern void func_80177340(s32 a0); -extern u8 D_8011F837; -extern u8 D_8011F7F0; -extern u8 D_8011F7AB; -extern u32 * func_8017742C(u32 *param_1, s32 param_2, s32 param_3); -extern void func_801776EC(u8 *a0); -extern void * func_80177784(void *a0, s32 a1, s32 a2, s32 a3); -extern uint * func_80177EA4(uint *param_1, int param_2, uint param_3, int param_4); -extern void func_80177F84(s32 param_1, s32 param_2); -extern u32 * func_80178298(u32 *param_1, u8 *param_2, short param_3, short param_4); -extern M2C_UNK D_801E9014; -extern void func_80178438(u16 *arg0); -extern void func_801787D4(void); -extern void func_8012A908(void); -extern void func_8017869C(s32 a0); -extern void func_80130D0C(s32 a0); -extern void func_8013E370(void); -extern s32 D_8011DB08; -extern void func_8017849C(void); -extern void func_8013E4B4(void); -extern s16 D_801270C4; -extern s32 D_801274D8; -extern s16 D_801270C2; -extern u8 D_801270C6; -extern u8 D_801270C7; -extern s32 D_801274DC; -extern s32 D_801274E0; -extern void func_80178608(void); -extern void func_80178744(s32 a0, s32 a1); -extern void func_80178840(); -extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern s32 func_801788B8(s32 arg0, s32 arg1); -extern s32 func_801789AC(s32 arg0); -extern s16 D_801EAFC8; -extern int func_80178970(void); -extern s32 func_80178B18(s32 param_1, s32 param_2); -extern s32 func_80178B70(s32 param_1, s32 param_2); -extern void func_80178BB8(s32 a0, s32 a1); -extern s32 func_80178BF8(); -extern s32 D_801EA388; -extern short D_801EB03C; -extern void func_80178CBC(s32 arg0, s32 arg1); -extern void func_80178D18(void); -extern s32 func_80178D40(s32 arg0, s32 arg1); -extern void func_80179B28(s32 a0); -extern void func_80179B74(u16 *p); -extern void func_80179D30(u16 *a0); -extern void func_80179D78(u16 *a0); -extern void func_80179DCC(short a0); -extern void func_80179DF8(void); -extern void func_80179E1C(short a0); -extern void func_80179E48(s16 a0); -extern void func_80179E74(s16 a0); -extern void func_80179EA0(u16 *a0); -extern void func_80179EE8(short a0); -extern void func_80179F14(s16 a0, s16 a1); -extern void func_80179F44(void); -extern void func_80179F6C(short a0); -extern void func_80179F98(u16 *a0); -extern void func_80179FEC(u16 *a0); -extern void func_8017A040(u16 *a0); -extern s32 D_801EA7B4; -extern void func_8017A094(s32 arg0); -extern void func_8017A0C4(s32 arg0); -extern void func_8017A0F4(void); -extern void func_8017A11C(void); -extern s32 D_801EA7DC; -extern void func_8017A144(s32 a0); -extern void func_8017A180(void); -extern void func_8017A1A8(void); -extern void func_8017A1D0(void); -extern void func_8017A1F8(void); -extern void func_8017A220(void); -extern void func_8017A248(void); -extern void func_8017A270(void); -extern void func_8017A298(void); -extern void func_8017A2C0(void); -extern void func_8017A2E8(void); -extern void func_8017A310(void); -extern void func_8017A338(void); -extern void func_8017A360(void); -extern void func_8017A388(void); -extern s16 D_801EA798; -extern s32 func_8017A3B0(void); -extern void func_80172310(u8*); -extern void func_80172780(void*); -extern void func_80172894(void*); -extern void func_801729B0(s32); -extern void func_80172B14(s16); -extern void func_80172C50(u16 *); -extern void func_80172D68(s32); -extern void func_801733FC(s16, u16 *); -extern void func_80173460(s32, s32); -extern void func_801734BC(s32, s32); -extern void func_801736B0(s32, s32); -extern void func_801737B8(s16); -extern void func_801738DC(s16); -extern void func_80173A28(s32, s32, s32, s32, s32, s32); -extern void func_80174438(s32); -extern void func_8017A4AC(void); -extern s32 func_8017AD0C(s32 arg0); -extern s32 func_8017AD0C(s32); -extern s32 func_8017ADE8(s32 a0); -extern s32 func_8017AE08(void); -extern void func_8017B0E4(int param_1, int param_2); -extern s16 D_801EA79C; -extern u16 D_801EA81C; -extern u16 D_801EA81E; -extern u16 D_801EA820; -extern void func_8017B1D8(void); -extern s32 func_8017B238(s32 param_1, s32 param_2); -extern s32 func_8017B368(s32 param); -extern s32 func_8017B614(s32 param_1, s32 param_2); -extern s32 D_80114F30; -extern s32 D_80114F34; -extern s32 D_80114F38; -extern s32 D_80114F24; -extern s32 D_80114F28; -extern s32 D_80114F2C; -extern u8 D_8012694C; -extern s16 D_801EA814; -extern s16 D_801EA816; -extern s16 D_801EA818; -extern s16 D_801EA80C; -extern s16 D_801EA80E; -extern s16 D_801EA810; -extern void func_8017B7A8(void); -extern s16 D_801EA82C; -extern s16 D_801EA82E; -extern s16 D_801EA830; -extern s16 D_801EA834; -extern s16 D_801EA836; -extern s16 D_801EA838; -extern void func_8017B824(void); -extern void func_8017B880(void); -extern s32 func_8017B8E8(s32 src); -extern short D_801EA824; -extern short D_801EA826; -extern short D_801EA828; -extern void func_8017B940(void); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void RotTransSV(void *a0, void *a1, void *a2); -extern SV4 D_801EA7BC; -extern SV4 D_801EA7C4; -extern void func_8017BA3C(s32 param_1, s32 param_2); -extern s32 func_8017BB34(s32 param_1, s32 param_2); -extern void (*D_801EA7E4[10])(int); -extern void func_8017BC38(int param_1); -extern void func_8017B0E4(int, int); -extern void func_8017BCA0(int param_1); -extern void func_8012A4BC(void); -extern void func_8017BCF4(int param_1); -extern void (*D_801EA7E0)(void); -extern void func_8017BD50(int param_1); -extern void (*D_8018EF4C[])(void); -extern void func_8017BE60(void *a0); -extern void func_8017BE9C(void); -extern void func_8017BEA4(void); -extern void func_8017BEAC(void); -extern void func_8017BEB4(void); -extern void (*D_8018EF58[])(void); -extern void func_8017BEE4(void *a0); -extern void func_8017BF98(void); -extern s32 func_8017BFA0(void); -extern void func_8017C07C(void); -extern void (*D_8018F024[])(void); -extern void func_8017C0C8(void *a0); -extern void func_8017C154(); -extern void func_8017C12C(void); -extern void func_8017C14C(void); -extern void (*D_8018F064[])(void); -extern void func_8017C664(void *a0); -extern void (*D_8018F084[])(void); -extern void func_8017CE54(void *a0); -extern void (*D_8018F094[])(void); -extern void func_8017D0DC(void *a0); -extern void (*D_8018F0A0[])(void); -extern void func_8017D63C(void *a0); -extern void (*D_8018F224[])(void); -extern void func_8017DB00(void *a0); -extern void func_8017DB74(u8 *a0); -extern void func_8017DD74(void); -extern void func_8017DF7C(void); -extern void func_8017EB7C(s32 arg0); -extern void func_8017FA5C(s32 arg0, s32 arg1, s32 arg2); -extern void (*D_8018F500[])(void); -extern void func_801805BC(void *a0); -extern u8 D_8018F450; -extern void func_801805F8(s32 a0); -extern void func_80180714(void); -extern M2C_UNK D_8018F4F8; -extern void func_8018071C(void); -extern s32 func_80180744(void); -extern s16 func_80180760(void); -extern s32 D_8018F510; -extern s32 D_8018F56C[]; -extern void func_80180B84(int param_1); -extern void func_80180C34(s32 p); -extern void (*D_8018F5B0[])(void); -extern void func_80180DFC(void *a0); -extern s32 func_800D222C(s32 a0, void *a1, s32 a2); -extern s32 func_8001CF30(void *a0); -extern void func_80180E38(s32 param_1); -extern void func_80180FFC(u8 *p); -extern void (*D_8018F5B8[])(void); -extern void func_80181090(void *a0); -extern u8 D_8018F5A4; -extern void func_801810CC(s32 a0); -extern void func_80181170(int a0); -extern void (*D_8018F6D0[])(void); -extern void func_80181BD0(void *a0); -extern void func_8012C218(void*); -extern void func_80181F78(void); -extern void (*D_8018F728[])(void); -extern void func_80182028(void *a0); -extern void func_80182348(int); -extern void func_801820B4(int param_1); -extern void (*D_8018F73C[])(void); -extern void func_80182654(void *a0); -extern void func_801826D0(void *a0); -extern void func_80182740(void *a0); -extern void func_801827CC(void *a0); -extern void (*D_8018F750[])(void); -extern void func_801828F4(void *a0); -extern void func_80182C28(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80182BB0(s32 arg0, s32 arg1); -extern void func_80182BD4(s32 arg0, s32 arg1, s16 arg2); -extern void func_80182BFC(void *a0, void *a1, s32 a2, s32 a3); -extern void (*D_8018F7AC[])(void); -extern void func_80182E08(void *a0); -extern void (*D_8018F804[])(void); -extern void func_801835C4(void *a0); -extern s32 func_80183644(void); -extern void func_8001BFD0(void); -extern void func_800D1E28(void); -extern s32 func_801836A8(u8 *a0); -extern void func_800D1EBC(void); -extern void func_80183724(void); -extern void (*D_8018F818[])(void); -extern void func_80183744(void *a0); -extern s32 func_801837C0(u8 *a0); -extern void func_8018383C(void); -extern void (*D_8018F824[])(void); -extern void func_8018385C(u8 *a0); -extern M2C_UNK D_8018F830; -extern void func_80183930(void); -extern s32 D_8018F83C; -extern void func_80183958(void); -extern void (*D_8018F850[])(void); -extern void func_80183A18(void *a0); -extern s32 func_80012ABC(s32 a0, s32 a1, s32 a2); -extern void func_80183B58(s32 param_1, s16 *param_2); -extern void func_80184440(void); -/* ==== end §8b carried decl layer ==== */ - - -extern void func_80184538(s32 a0); - -void func_80184474(void) { - - extern s32 D_801EAC64; - extern s32 D_801EAC68; - extern u8 D_8018F8A4[]; - s32 unused; /* -O0 frame padding: original had a dead local (0x20 frame, not 0x18) */ - - --D_801EAC64; - if (D_801EAC64 == 0) { - func_80184538(D_801EAC68); - D_801EAC64 = D_8018F8A4[D_801EAC68] * 2; - if (++D_801EAC68 >= 30) { - D_801EAC68 = 0; - } - } -} - - - - /* sizeof == 0x14 */ - - -extern void MoveImage(void *a0, s32 a1, s32 a2); -extern void func_800183E0(s32 a0); - -void func_80184538(s32 arg0) { - - extern Unk8018F8C4_80184538 D_8018F8C4[]; - s16 rect[4]; - s32 x; - s32 y; - - if (D_8018F8C4[arg0].unk00 == 0) { - rect[0] = D_8018F8C4[arg0].unk08; - rect[1] = D_8018F8C4[arg0].unk0A; - rect[2] = D_8018F8C4[arg0].unk0C; - rect[3] = D_8018F8C4[arg0].unk0E; - x = D_8018F8C4[arg0].unk10; - y = D_8018F8C4[arg0].unk12; - MoveImage(rect, x, y); - } else { - func_800183E0(D_8018F8C4[arg0].unk04); - } -} - - -extern s32 func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); -extern u8 D_800AEE50; - -s32 func_801846E4(void) { - s32 ret; - - ret = func_8001ABBC(0, 0, &D_800AEE50, 0, 0); - return ret; -} - - -extern s32 func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); -extern u8 D_800AEE58; - -s32 func_8018473C(void) { - s32 ret; - - ret = func_8001ABBC(0, 0, &D_800AEE58, 0, 0); - return ret; -} - - -extern s32 func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); -extern u8 D_800AEE60; - -s32 func_80184794(void) { - s32 ret; - - ret = func_8001ABBC(0, 0, &D_800AEE60, 0, 0); - return ret; -} - - - - -extern s32 func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); - -s32 func_801847EC(void) { - - extern s32 D_800C7C60; - extern s32 *D_800C7C64; - extern s32 D_800A2E20; - extern u8 D_800AEE40; - s32 ret; - - D_800C7C60 = 0x41; - D_800C7C64 = &D_800A2E20; - ret = func_8001ABBC(0, 0, &D_800AEE40, 0, (s32)&D_800C7C60); - return ret; -} - - - - -extern s32 func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); - -s32 func_80184868(void) { - - extern s32 D_800C7C60; - extern s32 *D_800C7C64; - extern s32 D_800A2E20; - extern u8 D_800AEE48; - s32 ret; - - D_800C7C60 = 0x39; - D_800C7C64 = &D_800A2E20; - ret = func_8001ABBC(0, 0, &D_800AEE48, 0, (s32)&D_800C7C60); - return ret; -} - diff --git a/src/ov_SC03_015/ov_SC03_015_o0e.c b/src/ov_SC03_015/ov_SC03_015_o0e.c deleted file mode 100644 index 29c1ed2ef..000000000 --- a/src/ov_SC03_015/ov_SC03_015_o0e.c +++ /dev/null @@ -1,1152 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -extern void func_80128288(void); -extern void func_80128158(void); -extern void func_801285E4(void); -extern void func_80128178(void); -extern void func_80128678(void); -extern void func_80128198(void); -extern void func_80128714(void); -extern void func_801281B8(void); -extern void func_8013E67C(void); -extern void func_801281D8(void); -extern void func_8013E558(void); -extern void func_801281F8(void); -extern s32 D_801E819C; -extern s32 func_80128218(void); -extern void func_80128A28(void); -extern void func_80128228(void); -extern void func_80128AF4(void); -extern void func_80128248(void); -extern void func_801282EC(void); -extern void func_80128268(void); -extern u16 D_800B99F6; -extern void (*D_8018B804[])(void); -extern void func_80011B7C(int); -extern void func_801282CC(void); -extern void func_8001C0C8(void); -extern void func_80015310(void); -extern void func_80129258(void); -extern void func_801378F0(void); -extern void func_80010E14(void); -extern s16 currentLocationId; -extern s32 func_80029504(void); -extern s32 func_800CF854(s32); -extern s32 func_80128998(void); -extern s32 func_801289F0(void); -extern s32 func_801288E8(s32); -extern s32 func_80128940(s32); -extern s32 func_80029178(s32); -extern s32 func_801288B0(void); -extern void func_80011C10(void); -extern void func_8012832C(void); -extern void func_80129220(void); -extern void func_80011E24(void); -extern void func_80128C14(void); -extern void func_8002AEF8(void); -extern void func_800CFBBC(void); -extern void SsUtReverbOff(void); -extern void func_8013C98C(void); -extern void func_80129C40(s32 a0); -extern void func_800D0630(void); -extern void func_80145CEC(void); -extern void func_80144B9C(void); -extern u8 D_800B9A17; -extern u8 D_800B9A10; -extern void func_80128420(void); -extern s32 func_800D0588(void); -extern void func_801284B8(void); -extern void func_80175308(void); -extern void func_8016E8F0(void); -extern void func_80175494(void); -extern u8 D_800B9A64; -extern void func_801284F0(void); -extern void func_80146074(void); -extern void func_8012853C(void); -extern void func_80178608(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern s32 func_80011A3C(void); -extern short currentLocationId; -extern short D_800B99F2; -extern void func_80128564(void); -extern u8 D_800B9A11; -extern void func_801285D4(void); -extern s32 func_800D18DC(void); -extern void func_8014607C(void); -extern void func_801287B8(void); -extern s32 D_801E9504; -extern void func_80029444(void); -extern void func_800D1754(void); -extern s32 D_80126B58; -extern u16 D_800B99DA; -extern void func_80129CF8(void); -extern void func_8017849C(void); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_801505FC(s32 a0); -extern void func_801508B4(void *a0); -extern void func_80165E90(void); -extern void func_801627E8(void); -extern void func_80162B1C(void); -extern void func_80165CA0(void); -extern void func_80129010(void); -extern void func_8013CA14(void); -extern void func_800190AC(void); -extern void func_8012956C(void); -extern void func_8016E95C(void); -extern void func_801754A8(void); -extern void func_8013BC7C(void *arg0); -extern void func_8013BCDC(void); -extern void func_801379FC(void); -extern void func_8001212C(void); -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); -extern u8 D_800AEFD0; -extern int D_800C7C60; -extern int *D_800C7C64; -extern int D_800A2E20; -extern int D_800AF558; -extern int D_801E819C; -extern int func_801288E8(int arg0); -extern u8 D_800AF560; -extern s32 func_80128940(s32 _arg0); -extern int D_800AECB0; -extern u8 D_800AECB8; -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4); -extern s16 D_800B9A00; -extern M2C_UNK (*D_8018B540)(); -extern s16 (*D_8018B544)(); -extern M2C_UNK (*D_8018B54C)(); -extern s32 (*D_8018B550)(); -extern s32 D_801E9500; -extern void func_80010AE0(s32 a0); -extern void func_80018450(s32 a0, s32 a1); -extern void func_800183E0(s32 a0); -extern void func_80128D60(s32 a0, s32 *a1, s32 *a2); -extern s32 func_80128DB4(s32 a0, s32 *a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern M2C_UNK D_801E81A0; -extern void func_80128FAC(u16 *arg0); -extern s16 D_8011DB2C; -extern s16 D_8011DB30; -extern s32 D_80126AEC; -extern u8 *func_8012913C(s32 a0); -extern u8 * func_801290DC(s32 a0, u8 *a1); -extern void func_8001D074(s32 a, s32 b); -extern u8 *func_801291C0(void); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 * func_8012913C(s32 arg0); -extern void func_80016714(void *a0, s32 a1); -extern u8 * func_801291C0(void); -extern void func_80129248(s16 a0); -extern void func_801292C8(u8 *a0); -extern void func_8012927C(void); -extern void func_8012931C(struct vec *a0); -extern void func_80129350(s32 a0, s32 a1); -extern void func_80129374(s32 a0, s32 a1); -extern s16 D_800B9AAC[]; -extern s16 D_800B9AAE[]; -extern s16 D_800B9AB0[]; -extern s16 D_800B9AB2[]; -extern s16 D_800B9AB4[]; -extern s16 D_800B9AB6[]; -extern s16 D_800B9AB8[]; -extern s16 D_800B9ABA[]; -extern void func_80129398(void); -extern s16 D_80114EE0; -extern void func_80129428(void); -extern void func_8012943C(void); -extern s32 D_8005128C; -extern u8 D_800B9A78; -extern void func_801298F4(void *arg0); -extern void func_801299C8(s32 a, s32 b, s32 c); -extern void func_8012944C(void); -extern unsigned short D_800B99F0; -extern void func_8012A328(void); -extern void func_80053308(s32); -extern s32 func_80012F74(s32, s32, s32, s32); /* canonical s32 (engine_core); (s16)-cast the return for the sll/sra */ -extern void GsSetRefView2L(void *); -extern s8 D_801150D6; /* canonical (engine_core macro): s8 — access via *(u8*)& for lbu */ -extern u8 D_80127504; -extern s32 D_80126E60[]; -extern s32 D_80126F04[]; -extern u8 D_80126948[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_80126FA8[]; -extern u8 D_800AF630[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_800AE688[]; -extern s32 D_801151D4; /* canonical (10 siblings): scalar s32 — store (s32)ptr */ -extern void func_8012A018(s32 a, s32 b); -extern void func_80129FF4(void); -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_80126940; -extern s16 D_80126942; -extern s16 D_80126944; -extern void func_8012A048(void *a0, s32 a1, u8 a2); -extern void *memcpy(void *, const void *, unsigned int); -extern void func_8012A094(s32 a0); -extern void func_8012A100(s8 a0); -extern void func_8012A0E0(void); -extern s8 D_801150D6; -extern s32 D_80120204; -extern s32 D_80120200; -extern s32 D_8012020C; -extern s32 D_80120208; -extern s16 D_80120218; -extern s16 D_80120210; -extern s16 D_8012021A; -extern s16 D_80120212; -extern s16 D_8012021C; -extern s16 D_80120214; -extern s16 D_80120226; -extern s16 D_80120220; -extern s16 D_80120228; -extern s16 D_80120222; -extern s16 D_8012022A; -extern s16 D_80120224; -extern s32 D_80120294; -extern s16 D_80120298; -extern s16 D_8012029A; -extern void func_8012A110(void); -extern s8 D_801152C0; -extern void func_8012A2F4(void); -extern s16 D_80127080; -extern s16 D_801152C2; -extern void func_8012A304(s32 a0, s32 a1); -extern s32 D_801151D4; -extern void func_8012A4BC(void); -extern void func_8012A62C(s32); -extern void func_8012A5F8(void (*a0)(void), s32 a1); -extern void func_8012A62C(s32 a0); -extern void func_8012A7D4(void *a0, void *a1); -extern s32 func_8012A6D0(void *a0, void *a1); -extern s16 func_8012A68C(void); -extern s16 func_8012A79C(s16 *a0, s16 *a1); -extern s16 func_8012A758(void); -extern s32 ratan2(s32 a0, s32 a1); -extern void func_8012A7D4(void *arg0, void *arg1); -extern void func_8012AAAC(); -extern void func_8012A828(s32 a0, void * a1); -extern int func_8012ACE0(void *a0); -extern void func_8012A860(void *a0, int a1); -extern void func_8012A8B0(u8 *a0, s32 a1); -extern void func_8012A8E8(void); -extern u8 D_801202A0[]; -extern u16 D_801270C0; -extern void func_8012A988(u8 *a0); -extern void func_8012A908(void); -extern s32 func_8012ACE0(void *a0); -extern M2C_UNK D_8018B898; -extern void func_8012ACA0(void *arg0); -extern s32 func_8012ACE0(void *o); -extern void func_8012AD44(s32 *a0, s16 a1); -extern s32 func_8012AD50(void * arg0); -extern void func_8012AD64(s32 *a0, s16 a1); -extern void func_8012AD6C(void *a0); -extern void func_8012AD80(s32 a0); -extern void func_8012ADE4(u8 *a0); -extern s32 *D_80126B78; -extern s32 *D_80126B90; -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80013478(s32 a0, s32 a1); -extern s32 func_8012AE00(s32 a0); -extern s32 func_8012AF0C(s32 a0, s32 a1); -extern s32 func_80134510(s32 arg); -extern s32 func_8012B030(u8 *a0); -extern int func_80047948(int a0); -extern int func_8004787C(int a0); -extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_8012B14C(s32 a0, s32 a1); -extern void func_8012B178(s32 a0, s32 a1); -extern void func_8012B1B4(s32 a0, s32 a1); -extern void func_8012B200(u8 *a0); -extern void func_8012B21C(void *a0); -extern void func_8012B23C(s32 a0); -extern void func_8012B260(u8 *a0); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern void RotMatrixYXZ(void *m, void *p); -extern void func_8012B370(int a0); -extern void func_8004978C(s16 *a0, void *a1); -extern void func_8012B414(int a0); -extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); -extern s32 func_8012B6D4(s16 *a0, s16 *a1); -extern s32 func_8012B70C(s16 *a0, s16 *a1); -extern s32 ratan2(s32 x, s32 y); -extern s32 func_8012B744(void *a0, void *a1); -extern s16 D_80126CB8; -extern s16 D_80126CB4; -extern s32 func_8012B864(s32 a0); -extern s32 func_8012B8A4(s16 *a0); -extern s32 func_8012B8E4(s32 arg0, s32 arg1); -extern s32 func_8012BA10(s32 arg0, s32 arg1); -extern s32 func_8012BB3C(s32 arg0, s32 arg1, u32 arg2, s32 arg3); -extern void Square0(s32 *a0, s32 *a1); -extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1); -extern s16 D_80126CBA; -extern s32 func_8012BCCC(s32 a0); -extern void func_80013350(s32 a0, void *a1); -extern u8 D_80126B5C; -extern void func_8012BD14(s32 a0); -extern s32 func_8012BDBC(s32 a0, s32 a1); -extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2); -extern void func_8012BE98(s32 a0, u16 *a1); -extern void func_8012BE54(s32 a0); -extern s32 func_800132BC(s32 a0, s32 a1); -extern void func_8012BE98(s32 arg0, u16 * arg1); -extern s32 func_8012BEE8(s32 a0); -extern s32 func_8012BF10(s32 a0, s32 a1); -extern void func_8012BF4C(s32 *a0, s32 a1); -extern void func_8012BF54(void *a0); -extern void func_8012BF68(void *a0); -extern s16 D_80126CB0; -extern s32 func_8012BF7C(s16 *a0); -extern s16 D_80126CAC; -extern short D_80126CAE; -extern int func_8012BFA8(short *a0); -extern s32 D_801274D4; -extern s32 D_801274E0; -extern s32 func_8012C044(s32 a0); -extern void func_8012C194(void); -extern void func_8001CFDC(s32 a, s32 b); -extern void func_8012C1B8(void); -extern u8 D_800B3DF0[]; -extern s32 func_8012C1DC(s32 a0); -extern void func_8012C218(void *a0); -extern u8 D_80126720[]; -extern u16 * func_8012C284(u16 *a0); -extern u8 D_80120194[]; -extern s32 func_8012C2D0(void); -extern s32 func_8012C31C(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32 a0, s32 a1); -extern u8 D_80078EAE; -extern s32 func_8012C354(s32 a0, s32 a1); -extern void func_8001C810(s32 a0, s32 a1); -extern s32 func_8012C438(s32 a0, s32 a1); -extern s32 func_8012C890(s32 a0, s32 a1, s32 a2); -extern s32 func_8012C51C(void *a0, s32 a1); -extern s32 func_8012C588(s32 a0, s32 a1); -extern void func_8012C724(s32 a0, s32 a1); -extern s32 func_8012C820(u8 *a0); -extern s32 D_8018ED7C; -extern s16 D_801270C4; -extern u16 D_801274E4[]; -extern s32 D_8011DB08; -extern s32 func_8012CB64(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); -extern s32 func_8012CC88(s32 a, s32 b, s32 c); -extern u8 D_800D3918[]; -extern void func_8012CBA4(s32 a0); -extern void func_8012CBCC(s32 a0); -extern void func_8012CBF4(s32 a0); -extern void func_8012CC1C(s32 arg0, s32 arg1); -extern void func_8012CC40(s32 arg0, s32 arg1); -extern s32 func_8012CC88(s32 a0, s32 a1, s32 a2); -extern void func_8012CC64(s32 a0, s32 a1); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern s32 func_8012CE2C(s32 a0); -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); -extern void func_8012CFA8(s32 arg0); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_8012D3B4(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012D098(u16 *param_1, u32 param_2); -extern void func_8012D098(); -extern void func_8012D38C(int a0); -extern void func_8012D3AC(void); -extern s32 AddPrim(s32, void *); -extern s32 RotTransPers(s32, s32, s32 *, s32 *); -extern void SetLineF2(void *); -extern void *func_80010A08(s32); -extern void func_8004914C(void *); -extern void func_800491AC(void *); -extern s32 D_800A651C; -extern u8 D_800AF648; -extern s16 D_800B9A02; -extern void func_8012D4B4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_8012D5DC(void); -extern s16 D_80126B98; -extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2); -extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern int func_8012D664(); -extern void func_8012D624(s32 a0); -extern int func_8012D664(int arg0, int arg1, int arg2); -extern s32 func_8012D714(s32 param_1, u32 param_2); -extern void func_8012F568(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void func_8014C978(void); -extern M2C_UNK D_8018B8B0; -extern M2C_UNK D_8018B8B8; -extern s32 func_8012DB84(void); -extern s32 func_8012DE2C(s32 a0); -extern s32 func_8012DDA4(void); -extern s32 func_8012DBD0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8012DDA4(); -extern s32 func_8012DF34(s32 a0, s32 a1, s32 a2); -extern s16 D_80126B9A; -extern u8 D_801152A8[]; -extern void func_8012DFBC(void); -extern void func_8012DFCC(void); -extern void func_8012E014(s32 arg0); -extern void func_8012E138(void); -extern void func_8012DFD4(u8 *a0); -extern s32 func_8012E27C(void); -extern void func_8012E284(void); -extern s32 GetTPage(s32, s32, s32, s32); -extern s32 func_8005A600(s32, s32, s32, s32, s32); -extern void func_8012E28C(s32 arg0, s32 arg1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void func_8012E32C(void); -extern s32 func_8012E470(s32 a0); -extern void func_8012E4C8(s32 a0); -extern s32 func_8012E504(s32 a0, s32 a1); -extern s32 func_8012E544(s32 a0); -extern s32 func_8012E57C(s32 a0, s32 a1); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E688(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E88C(u8 *a0); -extern void func_8012E8A8(u8 *a0); -extern void func_8012E8C4(u8 *a0); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8016AA50(int, int); -extern void func_8016B428(int); -extern void func_80019064(void *); -extern int D_8018B8C0; -extern void func_8012E9C0(int param_1); -extern void func_8012EC04(s32 param_1, s32 param_2, s32 *param_3); -extern s32 func_8002A4FC(s32 a0); -extern s32 func_8012EECC(s32 a0); -extern void func_8012EFB8(s32 a0); -extern void func_8012EF34(s32 a0, s32 a1); -extern void func_8012EF70(s32 a0, s32 a1); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8012F0BC(s32 *a0, s32 *a1, s32 *a2); -extern void RotTransSV(s32 a0, s32 a1, void *a2); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_8012F1A4(s32 *a0, s32 a1, s32 *a2); -extern void func_8012F2E8(s32 a0, s32 a1, s32 a2); -extern s16 D_80126CB6; -extern void func_8012F374(s32 a0, s32 a1); -extern void *memcpy(void *, const void *, u32); -extern u8 D_80126C38; -extern u8 D_80126C40; -extern u16 D_80126B94; -extern u16 D_80126B96; -extern void func_8012F568(s32 param_1, s32 param_2, s32 param_3, s32 param_4, s32 param_5, s32 param_6); -extern void func_80131B14(); -extern void func_80131E00(struct S80131E00 *a0, s32 a1); -extern s32 func_80131A34(s32, s32); -extern void func_80131CA8(int a0, int a1); -extern void func_8012F5F4(s32 arg0); -extern void func_80131C78(s32 a0); -extern void func_8012F68C(s32 arg0); -extern void func_8012F75C(s32 a0); -extern s32 func_8012BEE8(s32); -extern void func_8012F7B4(s32 a0); -extern void func_80131170(); -extern void func_80131CA8(); -extern unsigned char D_8018B8DC[]; -extern void func_8012F828(int param_1); -extern void func_80131340(s32 a0); -extern void func_8012F87C(s32 a0); -extern void func_80131170(s32 a0, s32 a1, s32 a2); -extern u8 D_8018B8E8[]; -extern void func_8012F8C8(u8* arg0); -extern void func_8012F91C(s32 a0); -extern s32 func_80131A34(s32 a0, s32 a1); -extern void func_80131CA8(s32 a0, s32 a1); -extern void func_8012F968(s32 param_1); -extern void func_801319E0(s32 a0); -extern s32 func_80143B6C(s32 a0, s32 a1); -extern void func_8012FB54(s32 a0); -extern void func_8012FC30(s32 a0); -extern void func_8012FCA4(int a0); -extern s32 func_8012FCC4(s32 param_1); -extern void func_8012FDA8(int param_1); -extern void func_8012FE70(s32 a0); -extern void func_8012FF00(s32 a0); -extern void func_8012FF4C(s32 a0); -extern void func_80130D48(s32 a0); -extern void func_8012FF98(u8 *a0); -extern s32 func_80131AC8(void *a0); -extern void func_8013001C(void *a0); -extern void func_80130088(void *a0); -extern s32 func_8012BCCC(s32); -extern void func_801300F4(s32 a0); -extern void func_801301E8(u8 *a0); -extern void func_80130278(s32 arg0); -extern void func_80130314(s32 a0); -extern void func_80130360(s32 a0); -extern void func_8012E364(void); -extern void func_801303A0(s32 a0); -extern void func_801303EC(void *a0); -extern void func_80143CD4(s32 a0); -extern void func_800CB0E8(s32 a0); -extern void func_80130438(s32 a0); -extern void func_801319E0(int); -extern int func_80131D68(int, int); -extern int func_8012BEE8(int); -extern void func_80131CA8(int, int); -extern void func_80130514(int param_1); -extern void func_801305CC(u8 *a0); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_80130740(void *a0, u16 *a1); -extern s32 func_801312D0(s32 a0, void *a1); -extern void func_801307B0(s32 a0); -extern void func_80130858(s32 a0); -extern void func_80130898(u8 *a0); -extern void func_801308DC(s32 a0); -extern void func_80166244(); -extern void func_80130974(int param_1); -extern void func_80130AC4(s32 a0); -extern int func_80131A34(int a0, int a1); -extern void func_80130AF0(int param_1); -extern void (*D_8018B8FC[])(void); -extern void func_80130D0C(void *a0); -extern s32 rand(void); -extern u8 D_80078E78[]; -extern u16 D_80078EB2; -extern u16 D_80078EB4; -extern s16 D_8018B94C[]; -extern s16 D_8018B97C[]; -extern s16 D_8018B9DC[]; -extern s16 D_8018B9E4[]; -extern s16 D_8018BA04[]; -extern void func_80130D48(s32 arg0); -extern void func_80131170(s32 p, s32 b, s32 c); -extern s32 func_801312D0(s32 param_1, void *param_2); -extern void func_8002A04C(s32 a0); -extern void func_801319E0(s32 arg0); -extern s32 func_80131CF4(s32 a0); -extern void (*D_8018BA3C[])(struct S80131E00 *a0); -extern void func_80131E38(u8 *a0); -extern void func_80131E7C(s32 a0); -extern void func_80131EE4(void); -extern void (*D_8018BA94[])(void); -extern void func_80131EEC(void *a0); -extern void (*D_8018BADC[])(void); -extern void func_80131F28(void *a0); -extern void (*D_8018BAE4[])(void); -extern void func_80131F64(void *a0); -extern void (*D_8018BAEC[])(void); -extern void func_80131FA0(void *a0); -extern void (*D_8018BAF4[])(void); -extern void func_80131FDC(void *a0); -extern void func_801320D0(void); -extern void func_8001C214(int, int); -extern int D_8018BA9C; -extern void func_801320D8(int param_1); -extern s32 func_80132144(s32 param_1); -extern int D_8018BABC; -extern void func_801321B0(int param_1); -extern int D_8018BACC; -extern void func_8013221C(int param_1); -extern void func_8005C324(int dst, int src, int n) __asm__("memcpy"); /* Phase-24: 0x8005C324 is named memcpy for overlays (whale needs it); keep the non-builtin C name here (else built-in codegen), emit via asm-label */ -extern void func_801325B8(int a0, int a1, int a2, int a3, int a4); -extern void func_80132288(int *param_1, int *param_2, int param_3); -extern void func_801325B8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_8013240C(s32 a0); -extern void func_8013277C(void); -extern void func_80020F34(s32 a0, s32 a1); -extern void func_80054514(s32 a0, s32 a1); -extern void func_80132784(s32 a0, s32 a1, u32 a2); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_80132DC4(s32 a0, s32 a1, s32 a2); -extern s32 func_80132E6C(s16 *a0); -extern void func_80132EC4(void *a0, s16 a1); -extern s32 func_80132EF4(s32 a0, s32 a1); -extern void func_801330E0(void * param_1, s16 * param_2, s32 param_3); -extern void func_80133060(u8 *a0, s32 *a1, s32 a2); -extern void func_8013339C(short *param_1, short *param_2); -extern s32 func_8013361C(s16 *a0, s16 *a1, s16 *a2, s16 *a3); -extern s32 D_801E9570; -extern s32 D_801E9574[]; -extern int D_801E9578; -extern void func_80136BC4(s32 a0); -extern void func_801336E8(void *a0, int a1, int a2); -extern void func_80136BC4(s32); -extern void func_8013373C(s16 arg0); -extern s32 func_80133784(s32 arg0, void *arg1, s32 arg2); -extern s32 func_80133CD4(); -extern s32 func_8013435C(s16 *a0, s16 *a1, s32 a2, s16 *a3); -extern s32 func_801343C4(s32 angle, s32 p1, s32 p2); -extern s32 func_80134510(s32 param); -extern s32 func_801345F8(s32 arg); -extern s32 func_801347A0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134A28(s32 a0, s32 a1, s32 a2); -extern s32 func_80134C20(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134FB8(s32 a0, s32 a1, s32 a2); -extern s32 func_80135004(s32 arg0, s32 p1, s32 p2); -extern u8 D_8018BB00; -extern u8 D_8018BAFC; -extern s16 *D_8018BB04; -extern u8 D_8018BB08; -extern int D_801E9570; -extern u16 D_801E9580; -extern int func_80134A74(int, s16, s16, int); -extern int func_80135168(u16 arg0, u16 *p1, u16 *p2); -extern s16 func_80135480(void *param_1, s32 param_2, s16 *param_3, s16 *param_4); -extern s32 func_80136334(void *arg0, s32 arg1, s32 arg2); -extern s32 func_80136824(s32 arg0, s32 arg1, s32 arg2); -extern s16 *D_8018BB04; /* holds a pointer value (*(u16**)&D_8018BB04) */ -extern s32 func_80136A94(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80136C3C(void); -extern void func_80136C1C(void); -extern void func_80136C44(void); -extern void func_80136C4C(void); -extern void (*D_8018BB18[])(void); -extern void func_80136C54(void); -extern s32 func_80136C90(); -extern void func_80136D00(void); -extern void SetLineG2(void *); -extern void func_80136D08(s32 arg0, s32 arg1); -extern void func_80136EC4(void); -extern short D_800B9A02; -extern u8 D_800A6518[]; -extern void GsSortLine(void *a0, void *a1, s32 a2); -extern void func_80136ECC(s16 a0, s16 a1, s16 a2, s16 a3, u8 r, u8 g, u8 b); -extern void func_80137030(s16 a0, s16 a1); -extern void ApplyMatrixSV(void *m, Svec_801372B0 *in, Svec_801372B0 *out); -extern void aGsSortLine(Gline_801372B0 *p, void *ot, s32 z) __asm__("GsSortLine"); -extern void aF80137030(s32 x, s32 y) __asm__("func_80137030"); -extern void func_80137178(s32 x, s32 y); -extern u8 D_800AF630[]; -extern u16 aD800B9A02 __asm__("D_800B9A02"); -extern void func_801372B0(void); -extern void func_80137614(s32 a0, s32 a1, s32 a2); -extern void func_801375EC(s32 a0, s16 a1); -extern s32 func_801399A8(void); -extern void func_801377B4(s32 a0, s32 a1, s32 a2); -extern s32 func_8013767C(s32 a0); -extern void func_801376E8(int a0, int a1); -extern void func_801376C8(int a0); -extern s32 D_80127524; -extern s32 D_80127528; -extern void func_80137840(s32 a0); -extern void func_80139634(void *); -extern void func_80139DC8(void); -extern s16 D_8012752E; -extern void func_801379D8(void); -extern void func_801379EC(void); -extern int D_8018BB6C; -extern int D_801269F0; -extern void func_80138BE0(int p); -extern void func_80137B80(void); -extern void func_801392FC(); -extern void func_801397B0(s32 a0); -extern void func_80137DD4(s32 a0, u8 *a1, u8 *a2); -extern void func_80139680(s32 a0, u8 *a1); -extern u16 D_800B99D8; -extern void func_80137BD8(s32 a0); -extern unsigned char D_80126A0E; -extern short D_80126A0A; -extern s16 D_801269F4; -extern int D_800A5E60; -extern int func_80137D08(int arg0, int arg1, short arg2); -extern void func_80137FD8(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_801380E0(s32 arg0); -extern void func_801387B8(s32 arg0); -extern void func_80138948(void *a0); -extern s16 func_80138DB8(s32 a0, u8 a1, s32 a2); -extern void func_80138B88(s32 a0); -extern void func_8013895C(s32 a0); -extern s16 D_80127540[4]; -extern s32 func_80139D04(s32 a0, s32 a1); -extern s32 func_80138DE0(u8 *arg0, u8 arg1, s32 arg2); -extern void func_80139B18(s32 a0); -extern void func_80138AB4(s32 a0); -extern void (*D_8018BB70[])(void); -extern void func_80138C30(void *a0); -extern s32 func_80139BE0(s32); -extern s32 func_80138C60(s32 arg0); -extern void func_8013A9F8(s32 a0, s32 a1); -extern void func_80138D58(s32 a0, u16 a1); -extern s32 func_80014E80(s32 a0, s32 a1); -extern s32 func_80138ED0(u8 *param_1, u32 param_2, u8 *param_3); -extern s32 func_8013914C(s32 a0, s32 a1); -extern void func_800599B8(u16 *); -extern u16 D_80127C0C[]; -extern s32 D_80127548[]; -extern s32 func_80139220(s32 a0); -extern void func_801391F0(void *a0); -extern void func_801392C8(void *a0); -extern void func_801395D4(void *); -extern s32 GetTPage(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80052460(s32 a0, s32 a1, s32 a2); -extern void func_801392FC(s32 arg0, s32 arg1, u8 *arg2); -extern void func_80059888(void *a0, s32 a1, s32 a2, s32 a3); -extern void func_801395D4(void * a0); -extern void func_80139634(void *a0); -extern void func_80139680(s32 arg0, u8 * arg1); -extern void func_8001931C(void); -extern s16 D_8012752C; -extern void func_80139788(void); -extern u8 D_8018BBB4; -extern u8 D_8018BBF8; -extern void GsSortSprite(void *a0, u8 *a1, s32 a2); -extern void func_801397B0(s32 arg0); -extern void func_8013A8B0(s32 *a0); -extern void func_80139914(s32 arg0); -extern u16 D_80126A08; -extern s32 D_801269F0; -extern s32 *D_80126A30; -extern void func_80139954(void); -extern s32 D_80126A3C; -extern s32 func_801399F0(s32 a0); -extern s32 D_80127520; -extern void func_80139A34(s32 a0); -extern s32 D_80127530[4]; -extern void func_80139A44(s32 a0, u16 a1); -extern void func_80139A68(s32 a0, u16 a1); -extern void func_80139A8C(s32 a0); -extern void func_80139C7C(u8 *a0); -extern s16 D_8012811A; -extern void func_80139DEC(void); -extern void func_80139DF4(s32 a0); -extern void func_80139E84(s32 a0); -extern void func_80139F0C(s32 a0); -extern void func_80139FBC(struct obj *a0); -extern s32 func_8001B22C(void *a0); -extern void func_80139FE8(void *a0); -extern void func_8013A0A4(struct S8013A0A4 *a0); -extern void func_8013A164(struct S8013A164 *a0); -extern void func_8013A1E8(s32 a0); -extern void func_8013A250(struct S8013A250 *a0); -extern void func_8013A2BC(s32 a0); -extern void func_8013A378(void); -extern u8 D_8011DA80[]; -extern void func_8013A530(); -extern void func_8013A448(void *a0); -extern void func_8013A4C4(struct S8013A4C4 *a0); -extern void func_8013A380(void); -extern void func_80015D4C(); -extern void func_80015F04(); -extern void func_8013AA24(s32 a0, s32 a1); -extern void func_8013A530(int param_1); -extern void func_8013A860(void); -extern s32 func_8013A8BC(void); -extern void func_8013A9B4(s32 a0, s32 a1); -extern s32 func_8013A8FC(s32 arg0); -extern void func_8013AD38(void *a0, s32 a1, void *a2, void *a3); -extern void func_8013B204(s32 a0, s32 a1); -extern void func_8013AF20(); -extern void func_8013B274(s32 a0, s32 a1, void *a2); -extern s32 D_800A5E60; -extern s32 func_8013AB54(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */ -extern u8 D_8018BC3C[]; /* sign table, alt (when a1 < 0xC00) */ -extern void func_8013AD38(void *flag, s32 a1, void *out2, void *out3); -extern void func_8013AF20(u32 *param_1, u16 *param_2, u16 *param_3, u8 *param_4); -extern s16 D_8018BCB4, D_8018BCB6, D_8018BCB8, D_8018BCBA, D_8018BCBC, D_8018BCBE; -extern u16 D_800D45F6; -/* ==== end §8b carried decl layer ==== */ - - - -void func_8013B568(s32 arg0) { - - extern s32 D_8018BCC0; - D_8018BCC0 = arg0; -} - - - -/* func_8013B598 (ov_SC01_077_o0, -O0): fills entry a0 of the 0x1C-stride table at - * D_801EAF18 from a 3-halfword source record. - * - * -O0 CONSTANT-OFFSET FOLD (the quirk that stalled this -O0 cluster in Phase 19): - * at -O0 gcc-2.7.2 folds a constant offset into the memory operand ONLY through a - * COMPONENT_REF / a real ARRAY_REF on an array-typed DECL: - * D_801EAF18[a0].f4 = ... -> lui $at,%hi(sym); addu $at,$at,idx; sh %lo(sym+4)($at) - * A CAST base defeats it (NOP_EXPR over the ADDR_EXPR), and so does pointer indexing: - * ((S *)D_801EAF18)[a0].f4 -> lui;addiu;addu;sh 4(reg) (+2 ins per store) - * a1[1] -> addiu $v1,$a0,2; lhu 0($v1) (+1 ins per load) - * So the table extern must carry the FULL struct type (not the pad-only canonical - * E_3B7AC), and the source record must be read as ->field, not as a[i]. Casting the - * incoming POINTER is harmless (a NOP on a register), only the base decl's type matters. - * - * Both types are body-scoped (cookbook §100) and the extern is declared inside the body, - * matching the established -O0 sibling pattern in src/ov_SC07_010/ov_SC07_010_o0.c - * (func_8013B7AC: `extern E_3B7AC D_801A9420[];` in-body). NOTE FOR BANKING: the canonical - * sig-layer decl `extern E_3B7AC D_801EAF18[];` (f0 + pad only) CANNOT be used here — it has - * no f4/f6/f8/fC members. The in-body decl below must be the one that survives; do not also - * emit a file-scope E_3B7AC decl for D_801EAF18 (conflicting types). - * - * 66/66 instructions byte-identical (match_one --o0). - */ -void func_8013B598(s32 a0, u16 *a1) { - extern Spr_8013B598_8013B598 D_801EAF18[]; - - D_801EAF18[a0].f0 = 1; - D_801EAF18[a0].f4 = ((Src_8013B598_8013B598 *)a1)->f0; - D_801EAF18[a0].f6 = ((Src_8013B598_8013B598 *)a1)->f2; - D_801EAF18[a0].f8 = ((Src_8013B598_8013B598 *)a1)->f4; - D_801EAF18[a0].fC = 0x100; -} - - - - -void func_8013B6A0(s32 idx, u16 *src, s32 val) -{ - extern Ent_8013B6A0_8013B6A0 D_801EAF18[]; - - D_801EAF18[idx].f0 = 1; - D_801EAF18[idx].f4 = ((Src_8013B6A0_8013B6A0 *)src)->f0; - D_801EAF18[idx].f6 = ((Src_8013B6A0_8013B6A0 *)src)->f2; - D_801EAF18[idx].f8 = ((Src_8013B6A0_8013B6A0 *)src)->f4; - D_801EAF18[idx].fC = val; -} - - - /* sizeof 0x1C stride */ -void func_8013B7AC(int a0) { - extern E_3B7AC_8013B7AC D_801EAF18[]; - D_801EAF18[a0].f0 = 0; } - - - - -void func_8013B7F4(s32 a0, s32 a1) { - - extern s32 D_801EB034; - func_8013B83C(a0, a1, D_801EB034); -} - - -extern s32 D_801EAFD0; -extern s32 D_801EB034; - -void func_8013B83C(s32 a0, s32 a1, s32 a2) { - /* sizeof 0x1C */ - extern Ent_8013B83C D_801DAA08_e[] __asm__("D_801EAF18"); - extern s32 D_801EAFB4; - extern s32 D_801EAFB8; - extern s32 D_801EAFBC; - extern s32 D_801EAFE0; - extern s32 D_801EB030; - extern s32 D_801EB038; - extern s16 D_800B9A0E; - extern void func_80052D90(s32 a0, void *a1); - extern void func_8013C08C(void *a0, s32 a1); - s32 i; - - D_801EAFD0 = 0; - D_801EAFBC = 0; - D_801EAFB8 = 0; - D_801EAFB4 = 0; - func_80052D90(0, &D_801EAFE0); - if (a0 == 0) { - return; - } - D_801EB030 = a2 + 500; - D_801EB034 = a2; - for (i = 0; i < 4; i++) { - D_801DAA08_e[i].f0 = 0; - D_801DAA08_e[i].f4 = D_801DAA08_e[i].f6 = D_801DAA08_e[i].f8 = 0x6000; - D_801DAA08_e[i].fC = 0x100; - D_801DAA08_e[i].f18 = 0; - } - switch (*(u8 *)a0) { - case 0x42: - if (D_800B9A0E == 0) { - func_8013BD74(&D_801EAFD0, a0); - } else { - func_8013BD74(&D_801EAFD0, a1); - } - D_801EB038 = 0; - break; - case 0x43: - func_8013C08C(&D_801EAFD0, a0); - D_801EB038 = 1; - break; - case 0x44: - func_8013C08C(&D_801EAFD0, a0); - D_801EB038 = 2; - break; - case 0x45: - func_8013C08C(&D_801EAFD0, a0); - D_801EB038 = 3; - break; - case 0x46: - func_8013C08C(&D_801EAFD0, a0); - D_801EB038 = 4; - break; - case 0x47: - func_8013C08C(&D_801EAFD0, a0); - D_801EB038 = 5; - break; - case 0x48: - func_8013C08C(&D_801EAFD0, a0); - D_801EB038 = 6; - break; - case 0x49: - func_8013C08C(&D_801EAFD0, a0); - D_801EB038 = 9; - break; - case 0x4A: - func_8013C08C(&D_801EAFD0, a0); - D_801EB038 = 0xC; - break; - case 0x4B: - func_8013C08C(&D_801EAFD0, a0); - D_801EB038 = 0xD; - break; - case 0x4C: - func_8013C08C(&D_801EAFD0, a0); - D_801EB038 = 0xE; - break; - case 0x4D: - func_8013C08C(&D_801EAFD0, a0); - D_801EB038 = 0xF; - break; - case 0x4E: - func_8013C08C(&D_801EAFD0, a0); - D_801EB038 = 0x10; - break; - } -} - - - - -void func_8013BC7C(void *arg0) { - - extern void (*D_8018B524[])(void *); - D_8018B524[((S_8013BC7C_8013BC7C *)arg0)->f68](arg0); -} - - - -/* func_8013BCDC (ov_SC01_077_o0, -O0): guarded indirect call through D_8018BCC0. - * D_8018BCC0 is declared `extern s32` in the TU (canonical-sig layer) and holds a - * function pointer; read it as an s32, test non-null, cast to fn-ptr and call. - * Frame residual: target frame is 0x30 (saves $ra/$fp/$s0 at 0x28/0x24/0x20) — 16 - * bytes of var_size above the minimal 0x20. At -O0 (no DCE) an unused 16-byte local - * reserves exactly that var region (cookbook §42 lever 3, frame-pad induction) with - * zero body instructions. 22/22 byte-identical via rtu_match. */ -void func_8013BCDC(void) { - - extern s32 D_8018BCC0; - s32 pad[4]; - if (D_8018BCC0 != 0) { - ((void (*)(void))D_8018BCC0)(); - } -} - - - -void func_8013BD34(s32 a0) { - - extern s32 D_801EAFD0; - func_8013BD74(&D_801EAFD0, a0); -} - - - -extern s16 D_801EAED8; -extern s16 D_801EAEDA; -extern s16 D_801EAEDC; -extern s16 D_801EAEDE; - -void func_8013BD74(void *a0, s32 a1) { - /* §100 draft-LOCAL types: file-scope typedefs are NOT carried by extract_unit/remap_hseq, so a - file-scope E_13BD74 banks the exemplar and then fails every sibling with `E_13BD74' - undeclared (the §94 type-carry class, measured on ov_SC01_000). Block scope travels with the - body and is byte-neutral (a type emits no code). */ - s32 *q; - s32 *p; - s32 i; - s32 unused0; - s32 unused1; - P_13BD74 *e; - P_13BD74 *end; - s32 unused2; - s32 base; - s32 unused3; - - D_801EAED8 = -0xA0; - D_801EAEDA = -0x78; - D_801EAEDC = 0x140; - D_801EAEDE = 0xF0; - ((E_13BD74 *)a0)->f8 = (void *)a1; - ((E_13BD74 *)a0)->fC = (void *)(a1 + 8); - base = a1 + 0x4008; - if (((u8 *)a1)[4] == 0) { - p = (s32 *)((E_13BD74 *)a0)->fC; - for (i = 0; i < 0x1000; i++) { - if (*p != 0) { - *p += (s32)((E_13BD74 *)a0)->fC; - q = (s32 *)*p; - q[0] += (s32)q; - q[5] += (s32)q; - e = (P_13BD74 *)q[5]; - q[6] = q[6] * 12 + q[5]; - end = (P_13BD74 *)q[6]; - while (e < end) { - switch (e->code) { - case 0x24: - case 0x2C: - case 0x34: - case 0x3C: - *(s32 *)e = (*(s32 *)e & 0xFFFFFF) + base; - break; - case 0x26: - case 0x2E: - case 0x36: - case 0x3E: - *(s32 *)e = (*(s32 *)e & 0xFFFFFF) + base; - break; - } - e++; - } - } - p++; - } - ((u8 *)a1)[4] = 1; - } -} - - -DEFINE_func_8013C08C() /* dedup: shared engine-core @0x8013C08C (src/shared) */ - - - -void func_8013C0F8(int param_1) { - int iVar1; - int iVar2; - unsigned int local_18; - unsigned int local_14; - Bar *local_10; - Foo *local_c; - - iVar1 = param_1 + 0x14; - if (*(char *)(param_1 + 4) == '\0') { - iVar2 = iVar1 + *(int *)(param_1 + 0xc); - *(int *)(param_1 + 0xc) = iVar2; - *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + iVar1; - local_c = (Foo *)iVar1; - for (local_18 = 0; local_18 < *(unsigned int *)(param_1 + 8); local_18++, local_c++) { - local_c->field10 = local_c->field10 + iVar1; - local_10 = (Bar *)local_c->field10; - for (local_14 = 0; local_14 < local_c->count; local_14++, local_10++) { - switch (local_10->tag) { - case 0x24: - case 0x2c: - case 0x34: - case 0x3c: - *(unsigned int *)local_10 = (*(unsigned int *)local_10 & 0xffffff) + iVar2; - break; - case 0x26: - case 0x2e: - case 0x36: - case 0x3e: - *(unsigned int *)local_10 = (*(unsigned int *)local_10 & 0xffffff) + iVar2; - break; - } - } - } - *(unsigned char *)(param_1 + 4) = 1; - } -} - -DEFINE_func_8013C360() /* dedup: shared engine-core @0x8013C360 (src/shared) */ - - -void func_8013C414(s32 param_1, s32 param_2) -{ - s32 base10; /* 0x00 */ - s32 p; /* 0x04 */ - s32 q; /* 0x08 */ - s32 base4008; /* 0x0C */ - s32 lo; /* 0x10 */ - u32 i; /* 0x14 */ - s32 unused; /* 0x18 */ - s32 base8; /* 0x1C */ - T3Reloc *r; /* 0x20 */ - T3Reloc *s; /* 0x24 */ - - if (*(s32 *)(param_2 + 4) == 0) { - base10 = param_2 + 0x10; - base4008 = param_1 + 0x4008; - lo = *(s32 *)(param_2 + 0xC) + base10; - base8 = param_1 + 8; - p = base10; - for (i = 0; i < *(u32 *)(param_2 + 8); i++) { - *(s32 *)p = *(s32 *)p + base8; - if (*(s32 *)(p + 4) != 0) { - *(s32 *)(p + 4) = *(s32 *)(p + 4) + base10; - q = *(s32 *)(p + 4); - *(s32 *)q = *(s32 *)q + q; - *(s32 *)(q + 0x14) = *(s32 *)(q + 0x14) + q; - r = (T3Reloc *)*(s32 *)(q + 0x14); - *(s32 *)(q + 0x18) = *(s32 *)(q + 0x18) * 0xC + *(s32 *)(q + 0x14); - s = (T3Reloc *)*(s32 *)(q + 0x18); - while (r < s) { - switch (r->type) { - case 0x24: - case 0x2C: - case 0x34: - case 0x3C: - if ((*(u32 *)r) & 0x800000) { - (*(u32 *)r) = ((*(u32 *)r) & 0x7FFFFF) + lo; - } else { - (*(u32 *)r) = ((*(u32 *)r) & 0xFFFFFF) + base4008; - } - break; - case 0x26: - case 0x2E: - case 0x36: - case 0x3E: - if ((*(u32 *)r) & 0x800000) { - (*(u32 *)r) = ((*(u32 *)r) & 0x7FFFFF) + lo; - } else { - (*(u32 *)r) = ((*(u32 *)r) & 0xFFFFFF) + base4008; - } - break; - } - r++; - } - } - p = p + 0xC; - } - *(s32 *)(param_2 + 4) = 1; - p = param_2 + 0x10; - for (i = 0; i < *(u32 *)(param_2 + 8); i++) { - if (*(s32 *)(p + 8) == 0) { - *(s32 *)(p + 8) = *(s32 *)(*(s32 *)p); - } - p = p + 0xC; - } - } else { - p = param_2 + 0x10; - for (i = 0; i < *(u32 *)(param_2 + 8); i++) { - *(s32 *)(*(s32 *)p) = *(s32 *)(p + 8); - p = p + 0xC; - } - } -} - - - -void func_8013C938(void) { - - extern s32 D_801EAFD0; - D_801EAFD0 = 1; -} - - - -void func_8013C964(void) { - - extern s32 D_801EAFD0; - D_801EAFD0 = 0; -} - diff --git a/src/ov_SC04_019/ov_SC04_019.c b/src/ov_SC04_019/ov_SC04_019.c deleted file mode 100644 index 26cbf6da9..000000000 --- a/src/ov_SC04_019/ov_SC04_019.c +++ /dev/null @@ -1,859 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - -DEFINE_func_80128158() /* dedup: shared engine-core @0x80128158 (src/shared) */ - -DEFINE_func_80128178() /* dedup: shared engine-core @0x80128178 (src/shared) */ - -DEFINE_func_80128198() /* dedup: shared engine-core @0x80128198 (src/shared) */ - -DEFINE_func_801281B8() /* dedup: shared engine-core @0x801281B8 (src/shared) */ - -DEFINE_func_801281D8() /* dedup: shared engine-core @0x801281D8 (src/shared) */ - -DEFINE_func_801281F8() /* dedup: shared engine-core @0x801281F8 (src/shared) */ - - -extern s32 D_801E4434; - -s32 func_80128218(void) { - return D_801E4434; -} - - -DEFINE_func_80128228() /* dedup: shared engine-core @0x80128228 (src/shared) */ - -DEFINE_func_80128248() /* dedup: shared engine-core @0x80128248 (src/shared) */ - -DEFINE_func_80128268() /* dedup: shared engine-core @0x80128268 (src/shared) */ - - -extern u16 D_800B99F6; -extern void (*D_8018D4AC[])(void); - -void func_80128288(void) { - u32 v1; - v1 = D_800B99F6; - if (v1 < 9) { - D_8018D4AC[v1](); - } -} - - -DEFINE_func_801282CC() /* dedup: shared engine-core @0x801282CC (src/shared) */ - -DEFINE_func_801282EC() /* dedup: shared engine-core @0x801282EC (src/shared) */ - -DEFINE_func_8012832C() /* dedup: shared engine-core @0x8012832C (src/shared) */ - -DEFINE_func_80128420() /* dedup: shared engine-core @0x80128420 (src/shared) */ - -DEFINE_func_801284B8() /* dedup: shared engine-core @0x801284B8 (src/shared) */ - -DEFINE_func_801284F0() /* dedup: shared engine-core @0x801284F0 (src/shared) */ - -DEFINE_func_8012853C() /* dedup: shared engine-core @0x8012853C (src/shared) */ - -DEFINE_func_80128564() /* dedup: shared engine-core @0x80128564 (src/shared) */ - -DEFINE_func_801285D4() /* dedup: shared engine-core @0x801285D4 (src/shared) */ - - -extern s32 func_800D18DC(void); -extern void func_8014607C(void); -extern void func_801287B8(void); -extern s32 func_80011A3C(void); -extern s32 D_801E5A14; - -void func_801285E4(void) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "sw $sp, 0($t0)\n" - "addiu $t0, $t0, -4\n" - "addu $sp, $t0, $zero\n" - "jal func_800D18DC\n" - "lui $at, %%hi(D_801E5A14)\n" - "sw $v0, %%lo(D_801E5A14)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "jal func_8014607C\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "addu $t0, $v1, $zero\n" - "sw $sp, 0($t0)\n" - "addiu $t0, $t0, -4\n" - "addu $sp, $t0, $zero\n" - "jal func_801287B8\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E5A14)\n" - "lw $v0, %%lo(D_801E5A14)($v0)\n" - "nop\n" - "beqz $v0, 1f\n" - "nop\n" - "jal func_80011A3C\n" - "1:\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_80128678() /* dedup: shared engine-core @0x80128678 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (handwritten full inline-asm scratchpad-stack-switch wrapper w/ branch) -/* - * HANDWRITTEN scratchpad-stack-switch dispatcher (same idiom as func_80128564 / - * the func_8014ED28 family): repoints $sp into the D-cache scratchpad stack held - * at *(0x1F8003FC), calls func_800D19F0, stashes its $v0 result through D_801E5A14, - * restores $sp, then dispatches on the stored value: - * if (D_801E5A14 != 0) { func_8001903C(); func_80018FC8(); } - * else { func_8014607C(); func_801287B8(); } - * Manipulating $sp is not expressible in C; full inline asm (manages its own frame). - * - * NOTE (maspsx --aspsx-version=2.56): the inline ".set noreorder" is written with a - * SPACE, so maspsx's own is_reorder tracker stays True and it auto-fills EVERY - * jal/j/branch delay slot with a nop (GNU as honors noreorder and adds none). So do - * NOT write explicit delay-slot nops after jal/j/bne — that yields a double nop. - * bnez is written as `bne $v0,$zero` so maspsx recognizes it (bnez isn't in its - * branch set). The load-delay nop after `lw $v0,%lo(...)($v0)` is auto-inserted too. - * %hi/%lo escaped as %%hi/%%lo (bare % is an operand placeholder). - */ -void func_80128714(void) { - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "sw $sp, 0($t0)\n" - "addiu $t0, $t0, -4\n" - "addu $sp, $t0, $zero\n" - "jal func_800D19F0\n" - "lui $at, %%hi(D_801E5A14)\n" - "sw $v0, %%lo(D_801E5A14)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E5A14)\n" - "lw $v0, %%lo(D_801E5A14)($v0)\n" - "bne $v0, $zero, 1f\n" - "jal func_8014607C\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "addu $t0, $v1, $zero\n" - "sw $sp, 0($t0)\n" - "addiu $t0, $t0, -4\n" - "addu $sp, $t0, $zero\n" - "jal func_801287B8\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "j 2f\n" - "1:\n" - "jal func_8001903C\n" - "jal func_80018FC8\n" - "2:\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - - - -// @class: remat -// @stuck: none — MATCH (62 ins). D_801E7AB8 read needed the address REMATERIALIZED -// (lui;addiu;lw 0(reg), not the folded lui;lw %lo) AND pinned to $a0. volatile forces the -// remat; register __asm__("$4") forces the a0 allocation (gcc otherwise picks v0). Both levers -// required — pin-alone folds, volatile-alone lands in v0. - -extern s32 D_80126B58; -extern s32 D_801E7AB8; -extern u16 D_800B99DA; -extern u8 D_800B9A64; - -extern void func_80129CF8(void); -extern void func_8017849C(void); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_801505FC(s32 a0); -extern void func_801508B4(void *a0); -extern void func_80165E90(void); -extern void func_801627E8(void); -extern void func_80162B1C(void); -extern void func_80165CA0(void); -extern void func_80129010(void); -extern void func_8013CA14(void); -extern void func_800190AC(void); -extern void func_8012956C(void); -extern void func_8016E95C(void); -extern void func_801754A8(void); -extern void func_8013BC7C(void); -extern void func_8013BCDC(void); -extern void func_801379FC(void); -extern void func_8001212C(void); - -void func_801287B8(void) { - func_80129CF8(); - func_8017849C(); - ((void (*)(void *))func_8014FDF4)(&D_80126B58); - ((void (*)(void *))func_801505FC)(&D_80126B58); - func_801508B4(&D_80126B58); - func_80165E90(); - func_801627E8(); - func_80162B1C(); - func_80165CA0(); - func_80129010(); - func_8013CA14(); - func_800190AC(); - func_8012956C(); - func_8016E95C(); - func_801754A8(); - { - /* D_801E7AB8 read: the target materializes &sym into $a0 then lw 0($a0) (not the folded - * lui;lw %lo). volatile forces the rematerialize; the $4 pin forces the a0 allocation. */ - register volatile s32 *p __asm__("$4") = &D_801E7AB8; - if (*p == 0) { - func_8013BC7C(); - } - } - func_8013BCDC(); - func_801379FC(); - D_800B99DA++; - if (D_800B9A64 != 0) { - func_8001212C(); - } -} - - - -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); -extern s32 D_801E4434; -extern u8 D_800AEFD0; - -s32 func_801288B0(void) { - func_8001ABBC(0, 0, &D_800AEFD0, D_801E4434, 0); -} - - - -// @class: remat -// @stuck: none — MATCH. &D_800C7C60 CSE'd once via pointer local `p` so the same reg feeds the *p=0x60 store AND arg5; writing D_800C7C60=0x60 directly would emit a 2nd address materialization (+1 ins). Mirrors matched sibling func_80128998. - -extern int D_800C7C60; -extern int *D_800C7C64; -extern int D_800A2E20; -extern int D_800AF558; -extern int D_801E4434; - -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); - -int func_801288E8(int arg0) -{ - int *p = &D_800C7C60; - *p = 0x60; - D_800C7C64 = &D_800A2E20; - ((void (*)(int, int, int *, int, int *))func_8001ABBC)(0, 0, &D_800AF558, D_801E4434, p); -} - - - - -// @class: remat -// @stuck: none — MATCH (pointer-var forces single materialization of &D_800C7C60, reused as store base + arg5) - -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); -extern int D_800C7C60; -extern int *D_800C7C64; -extern int D_800A2E20; -extern u8 D_800AF560; -extern s32 D_801E4434; - -s32 func_80128940(s32 _arg0) -{ - s32 *p = &D_800C7C60; - *p = 0x5E; - D_800C7C64 = &D_800A2E20; - ((void (*)(s32, s32, void *, s32, void *))func_8001ABBC)(0, 0, &D_800AF560, D_801E4434, p); -} - - - - -// @class: remat -// @stuck: none — MATCH. &D_800C7C60 must be CSE'd once (pointer local `p`) so the same reg feeds the *p=13 store AND arg5; writing D_800C7C60=13 directly emits a 2nd address materialization (+1 ins). - -extern int D_800C7C60; -extern int *D_800C7C64; -extern int D_800A2E20; -extern int D_800AECB0; -extern s32 D_801E4434; - -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); - -s32 func_80128998(void) -{ - int *p = &D_800C7C60; - *p = 13; - D_800C7C64 = &D_800A2E20; - ((void (*)(int, int, int *, int, int *))func_8001ABBC)(0, 0, &D_800AECB0, D_801E4434, p); -} - - - -extern s32 D_801E4434; -extern u8 D_800AECB8; -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4); - -s32 func_801289F0(void) { - func_8001ABBC(0, 0, &D_800AECB8, D_801E4434, 0); -} - - -extern void func_80011B7C(int); -extern void func_80011C10(void); -extern u16 D_800B99F6; -extern s16 D_800B9A00; -extern M2C_UNK (*D_8018D1E0)(); -extern s16 (*D_8018D1E4)(); - -void func_80128A28(void) { - s16 temp_v0; - - switch (D_800B99F6) { /* irregular */ - case 1: - D_8018D1E0(); - /* fallthrough */ - case 0: - func_80011C10(); - return; - case 2: - temp_v0 = D_8018D1E4(); - if (temp_v0 != 0) { - if (temp_v0 < 0) { - func_80011B7C(0); - D_800B9A00 = 1; - return; - } - func_80010DE0(); - } else { - return; - } - break; - } -} - - -extern u16 D_800B99F6; -extern M2C_UNK (*D_8018D1EC)(); -extern s32 (*D_8018D1F0)(); -extern s32 D_801E5A10; - -void func_80128AF4(void) { - switch (D_800B99F6) { /* irregular */ - case 0: - D_801E5A10 = func_8002AF08(); - func_80011C10(); - return; - case 1: - D_8018D1EC(); - func_80011C10(); - return; - case 2: - if ((D_8018D1F0() << 0x10) != 0) { - if (D_801E5A10 == 1) { - if (func_800CFBE8() != 0) { - func_800CFBBC(); - func_80011B7C(0x13); - } else { - func_80011B7C(4); - } - } else { - func_80010DE0(); - } - func_8002AEF8(); - } - return; - } -} - - -DEFINE_func_80128C14() /* dedup: shared engine-core @0x80128C14 (src/shared) */ - - - -extern CdFileLoc_80128C98 cdFileLocTable[]; -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4); - -s32 func_80128C98(s32 arg0) { - - extern s16 D_8018D4C4[]; - s16 idx = D_8018D4C4[arg0]; - - if (idx >= 0) { - func_8001ABBC(0, 0, (u8 *)&cdFileLocTable[idx], D_801E4434, 0); - } else { - return 1; - } -} - - - - -extern CdFileLoc cdFileLocTable[]; -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4); - -s32 func_80128CFC(s32 arg0) { - - extern s16 D_8018D4D4[]; - s16 idx = D_8018D4D4[arg0]; - - if (idx >= 0) { - func_8001ABBC(0, 0, (u8 *)&cdFileLocTable[idx], D_801E4434, 0); - } else { - return 1; - } -} - - -DEFINE_func_80128D60() /* dedup: shared engine-core @0x80128D60 (src/shared) */ - -DEFINE_func_80128DB4() /* dedup: shared engine-core @0x80128DB4 (src/shared) */ - -DEFINE_func_80128EA8() /* dedup: shared engine-core @0x80128EA8 (src/shared) */ - -DEFINE_func_80128ED8() /* dedup: shared engine-core @0x80128ED8 (src/shared) */ - -extern M2C_UNK D_801E4438; - -void func_80128FAC(u16 *arg0) { - func_8001534C(4, &D_801E4438, 0x80, 0x90, 0, 0); - func_800153CC(5, *arg0, 0xA8, 0x90, 0x40, 0); -} - - -DEFINE_func_80129010() /* dedup: shared engine-core @0x80129010 (src/shared) */ - -DEFINE_func_801290DC() /* dedup: shared engine-core @0x801290DC (src/shared) */ - -DEFINE_func_8012913C() /* dedup: shared engine-core @0x8012913C (src/shared) */ - -DEFINE_func_801291C0() /* dedup: shared engine-core @0x801291C0 (src/shared) */ - -DEFINE_func_80129220() /* dedup: shared engine-core @0x80129220 (src/shared) */ - -DEFINE_func_80129248() /* dedup: shared engine-core @0x80129248 (src/shared) */ - -DEFINE_func_80129258() /* dedup: shared engine-core @0x80129258 (src/shared) */ - -DEFINE_func_8012927C() /* dedup: shared engine-core @0x8012927C (src/shared) */ - -DEFINE_func_801292C8() /* dedup: shared engine-core @0x801292C8 (src/shared) */ - -DEFINE_func_8012931C() /* dedup: shared engine-core @0x8012931C (src/shared) */ - -DEFINE_func_80129350() /* dedup: shared engine-core @0x80129350 (src/shared) */ - -DEFINE_func_80129374() /* dedup: shared engine-core @0x80129374 (src/shared) */ - -DEFINE_func_80129398() /* dedup: shared engine-core @0x80129398 (src/shared) */ - -DEFINE_func_80129428() /* dedup: shared engine-core @0x80129428 (src/shared) */ - -DEFINE_func_8012943C() /* dedup: shared engine-core @0x8012943C (src/shared) */ - -DEFINE_func_8012944C() /* dedup: shared engine-core @0x8012944C (src/shared) */ - - - - -extern s32 D_801E5A14; - -extern void func_801299C8(); -extern void func_80015B6C(s32, s16, s32, s16, s32, s32, s32, s32, s32, s32); -extern void GsSortBg(s32 *, void *, u16, s32 *); -extern void GsSortFastBg(s32 *, void *, u16, s32 *); - -void func_8012956C(void) { - - extern s16 D_80114EE0; - extern u8 D_800B9A78; - extern u8 D_801E5A15[]; - extern u8 D_801E5A16[]; - extern u8 D_801E5A18[]; - extern u8 D_801E5A19[]; - extern u8 D_801E5A1A[]; - extern u8 D_801E7A80; - extern u8 D_800AF630[]; - extern u8 D_800A6518[]; - register s32 *sp10 __asm__("$21"); - register u8 *afbase __asm__("$22"); - register s32 *sp0 __asm__("$23"); - Ent_956C *base; - s32 i; - s16 a1; - register u32 temp_a3 __asm__("$7"); - register u32 arg0 __asm__("$4"); - register u32 s __asm__("$2"); - register u32 s2 __asm__("$3"); - register u32 t6 __asm__("$8"); - s32 code; - - sp10 = (s32 *)0x1F800010; - sp0 = (s32 *)0x1F800000; - afbase = (u8 *)&D_800AF630; - if (D_80114EE0 == 0) { - return; - } - base = (Ent_956C *)&D_800B9A78; - __asm__("" : "=r"(base) : "0"(base)); - i = 0; - do { - s32 idx = i * 8 + 4; - code = base->f34; - if (code == 0x7FFE) { - goto case_7FFE; - } - if (code < 0x7FFF) { - a1 = i + 3; - if (code == 0x7FFD) { - goto case_7FFD; - } - goto do_default; - } - a1 = i + 3; - if (code != 0x7FFF) { - goto do_default; - } - goto next; - case_7FFD: - if (i == 0) { - func_801299C8(D_801E7A80, 1, base); - } - func_80015B6C(-0xA0, -0x74, 0x140, 0x8C, - D_801E5A18[0], D_801E5A18[1], D_801E5A18[2], - D_801E5A18[4], D_801E5A18[5], D_801E5A18[6]); - func_80015B6C(-0xA0, 0x18, 0x140, 0x3C, - D_801E5A18[4], D_801E5A18[5], D_801E5A18[6], - D_801E5A18[8], D_801E5A18[9], D_801E5A18[0xA]); - func_80015B6C(-0xA0, 0x54, 0x140, 0x28, - D_801E5A18[8], D_801E5A18[9], D_801E5A18[0xA], - D_801E5A18[0xC], D_801E5A18[0xD], D_801E5A18[0xE]); - goto next; - case_7FFE: - func_801299C8(D_801E7A80, (s16)(i * 2), base); - func_80015B6C(-0xA0, *(s16 *)&base->f3A, 0x140, base->f3E, - ((u8 *)&D_801E5A14)[idx], D_801E5A15[idx], D_801E5A16[idx], - D_801E5A18[idx], D_801E5A19[idx], D_801E5A1A[idx]); - goto next; - do_default: - __asm__(""); - arg0 = D_801E7A80; - s = base->f40; - temp_a3 = base->f38; - s += temp_a3; - base->f1C = s; - s2 = base->f42; - t6 = base->f3A; - s2 += t6; - base->f1E = s2; - ((void (*)(s32, s32, void *, s32))func_801299C8)(arg0, a1, base, temp_a3); - *(Blk16_956C *)sp0 = *(Blk16_956C *)base; - { - s32 *dst = sp10; - s32 *src = (s32 *)((u8 *)base + 0x10); - s32 *end = (s32 *)((u8 *)base + 0x30); - do { - *(Blk16_956C *)dst = *(Blk16_956C *)src; - src += 4; - dst += 4; - } while (src != end); - *dst = *src; - sp10[5] = (s32)sp0; - if (base->f36 == 0) { - GsSortFastBg(sp10, &D_800A6518[(*(u16 *)(afbase + 0xA3D2)) * 0x14], base->f34, dst); - } else { - GsSortBg(sp10, &D_800A6518[(*(u16 *)(afbase + 0xA3D2)) * 0x14], base->f34, dst); - } - } - next: - base += 1; - i += 1; - } while (i < 2); -} - - -DEFINE_func_801298F4() /* dedup: shared engine-core @0x801298F4 (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (158 ins, match_one relocation-masked) -// -// Levers that landed it (2 iterations, 56 mismatched -> MATCH): -// 1. §43 K&R s16-param definition: `void f(a0,a1,a2) s16 a0; s16 a1; u8 *a2;` reproduces the -// in-place `sll $a0,$a0,16` zero-test on the arg reg + the raw-$a1 copy (`addu $a3,$a1,$zero`) -// stashed in the jtbl branch delay slot and RE-extended per use in the case body. -// 2. §18 array-of-struct %lo-fold: three sibling extern arrays D_801E5A18/1/2[] (a 4-row x 3-comp -// RGB gradient table, stride 4) give `lui $at,%hi(sym); addu $at,$at,idx4; sb $v0,%lo(sym)($at)` -// for the indexed case and plain `lui/sb %lo(sym+k)` for the constant-index case. -// 3. Switch CASE-ORDER = source order: the jump table dispatches case 1 to the FIRST emitted block, -// so `case 1:` must be written before `case 0/2:` and `case 3/4:`. -// 4. THE residual (56 -> 0): the case-1 body must be written ROW-MAJOR (BE0[0],BE1[0],BE2[0], -// BE0[4],BE1[4],BE2[4],...), i.e. the natural table fill. gcc-2.7.2's sched pass then REORDERS -// the stores itself (BE0,BE1,BE5,BE8,BE4,BEC,BE9,BED,BE2,BE6,BEA,BEE) because the three arrays -// are distinct declarations => provably non-aliasing. Writing the source in the target's STORE -// order is the trap: it pins the b*255 / r*143 CSEs at their late store sites instead of letting -// them hoist into $a0/$v1 at rows 0/1, and mis-schedules the D_801E7988 load. -// 5. Shift signedness: `u32` component locals give `srl` for r*5>>3 and g*25>>1; an explicit -// `(s32)(x * 255) >> 4` gives `sra` for the *255 / *143 / *45 terms (mixed within one block). - -extern u8 D_801E7AB2; -extern u8 D_801E79B2; -extern u8 D_801E7988; -extern u8 D_801E5A18[]; -extern u8 D_801E5A19[]; -extern u8 D_801E5A1A[]; - -void func_801299C8(arg0, arg1, arg2) -s16 arg0; -s16 arg1; -u8 *arg2; -{ - u32 r; - u32 g; - u32 b; - s32 i; - - if (arg0 != 0) { - switch (arg1) { - case 1: - r = D_801E7AB2; - g = D_801E79B2; - b = D_801E7988; - D_801E5A18[0] = r * 5 >> 3; - D_801E5A19[0] = g << 3; - D_801E5A1A[0] = (s32)(b * 255) >> 4; - D_801E5A18[4] = (s32)(r * 143) >> 4; - D_801E5A19[4] = g * 25 >> 1; - D_801E5A1A[4] = (s32)(b * 255) >> 4; - D_801E5A18[8] = (s32)(r * 255) >> 4; - D_801E5A19[8] = (s32)(g * 255) >> 4; - D_801E5A1A[8] = (s32)(b * 255) >> 4; - D_801E5A18[12] = (s32)(r * 143) >> 4; - D_801E5A19[12] = (s32)(g * 255) >> 4; - D_801E5A1A[12] = (s32)(b * 45) >> 2; - break; - case 0: - case 2: - i = arg1 * 4; - D_801E5A18[i] = arg2[0x44] * D_801E7AB2 >> 4; - D_801E5A19[i] = arg2[0x45] * D_801E79B2 >> 4; - D_801E5A1A[i] = arg2[0x46] * D_801E7988 >> 4; - i = (arg1 + 1) * 4; - D_801E5A18[i] = arg2[0x47] * D_801E7AB2 >> 4; - D_801E5A19[i] = arg2[0x48] * D_801E79B2 >> 4; - D_801E5A1A[i] = arg2[0x49] * D_801E7988 >> 4; - break; - case 3: - case 4: - arg2[0x20] = D_801E7AB2 << 3; - arg2[0x21] = D_801E79B2 << 3; - arg2[0x22] = D_801E7988 << 3; - break; - } - } -} - -DEFINE_func_80129C40() /* dedup: shared engine-core @0x80129C40 (src/shared) */ - -DEFINE_func_80129CF8() /* dedup: shared engine-core @0x80129CF8 (src/shared) */ - -DEFINE_func_80129FF4() /* dedup: shared engine-core @0x80129FF4 (src/shared) */ - -DEFINE_func_8012A018() /* dedup: shared engine-core @0x8012A018 (src/shared) */ - - -DEFINE_func_8012A048() /* dedup: shared engine-core @0x8012A048 (src/shared) */ - -DEFINE_func_8012A094() /* dedup: shared engine-core @0x8012A094 (src/shared) */ - -DEFINE_func_8012A0E0() /* dedup: shared engine-core @0x8012A0E0 (src/shared) */ - -DEFINE_func_8012A100() /* dedup: shared engine-core @0x8012A100 (src/shared) */ - -DEFINE_func_8012A110() /* dedup: shared engine-core @0x8012A110 (src/shared) */ - - - -// @class: regalloc-order -// @stuck: none — MATCH (78 ins, relocation-masked). Register pins ($2-$5 reused for -// the D_x200-x20C words then the D_x220-x226 halfwords; $6-$10 held across for the -// D_x228/x22A/x294/x298/x29A tail) force the frameless 9-deep allocation the default -// -O2 pre-reload scheduler otherwise blows to a 3-reg spill (all 720 stmt orders spill -// without the pins). A single zero-byte scheduling/memory barrier after the 4 word -// stores stops gcc hoisting the first 8-byte block copy above them. - - - - -DEFINE_func_8012A1BC() /* dedup: shared engine-core @0x8012A1BC (src/shared) */ - - -DEFINE_func_8012A2F4() /* dedup: shared engine-core @0x8012A2F4 (src/shared) */ - -DEFINE_func_8012A304() /* dedup: shared engine-core @0x8012A304 (src/shared) */ - - - - - - - - - -DEFINE_func_8012A328() /* dedup: shared engine-core @0x8012A328 (src/shared) */ - - -DEFINE_func_8012A418() /* dedup: shared engine-core @0x8012A418 (src/shared) */ - - - - - -DEFINE_func_8012A464() /* dedup: shared engine-core @0x8012A464 (src/shared) */ - - -DEFINE_func_8012A4BC() /* dedup: shared engine-core @0x8012A4BC (src/shared) */ - -DEFINE_func_8012A568() /* dedup: shared engine-core @0x8012A568 (src/shared) */ - -DEFINE_func_8012A598() /* dedup: shared engine-core @0x8012A598 (src/shared) */ - -DEFINE_func_8012A5F8() /* dedup: shared engine-core @0x8012A5F8 (src/shared) */ - -DEFINE_func_8012A62C() /* dedup: shared engine-core @0x8012A62C (src/shared) */ - -DEFINE_func_8012A68C() /* dedup: shared engine-core @0x8012A68C (src/shared) */ - -DEFINE_func_8012A6D0() /* dedup: shared engine-core @0x8012A6D0 (src/shared) */ - -DEFINE_func_8012A758() /* dedup: shared engine-core @0x8012A758 (src/shared) */ - -DEFINE_func_8012A79C() /* dedup: shared engine-core @0x8012A79C (src/shared) */ - -DEFINE_func_8012A7D4() /* dedup: shared engine-core @0x8012A7D4 (src/shared) */ - -DEFINE_func_8012A828() /* dedup: shared engine-core @0x8012A828 (src/shared) */ - -DEFINE_func_8012A860() /* dedup: shared engine-core @0x8012A860 (src/shared) */ - -DEFINE_func_8012A8B0() /* dedup: shared engine-core @0x8012A8B0 (src/shared) */ - -DEFINE_func_8012A8E8() /* dedup: shared engine-core @0x8012A8E8 (src/shared) */ - -DEFINE_func_8012A908() /* dedup: shared engine-core @0x8012A908 (src/shared) */ - -DEFINE_func_8012A988() /* dedup: shared engine-core @0x8012A988 (src/shared) */ - - -extern void func_8012AAAC(void *arg0); - -void func_8012AAAC(void *arg0) { - void *ptr; - s32 link; - s32 next; - s32 saved; - s32 cnt; - s32 back; - s32 head; - - M2C_FIELD(arg0, u16 *, 0x72) = (u16) (M2C_FIELD(arg0, u16 *, 0x72) & 0xBFFF); - ptr = (void *) (M2C_FIELD(arg0, s32 *, 0x90) + (M2C_FIELD(arg0, s32 *, 0x94) * 8)); - if (M2C_FIELD(ptr, s16 *, 4) < 0) { - switch (M2C_FIELD(ptr, s16 *, 4)) { - case -2: - link = M2C_FIELD(arg0, s32 *, 0x9C); - if (link == 0) { - M2C_FIELD(arg0, s16 *, 0x98) = 0; - break; - } - goto pop; - case -1: - link = M2C_FIELD(arg0, s32 *, 0x9C); - if (link != 0) { -pop: - back = M2C_FIELD(arg0, s16 *, 0x9A); - M2C_FIELD(arg0, s32 *, 0x90) = link; - M2C_FIELD(arg0, s32 *, 0x9C) = 0; - M2C_FIELD(arg0, s16 *, 0x9A) = 0; - M2C_FIELD(arg0, s32 *, 0x94) = back; - func_8012AAAC(arg0); - break; - } - M2C_FIELD(arg0, s32 *, 0x94) = 0; - func_8012AAAC(arg0); - M2C_FIELD(arg0, u16 *, 0x72) = (u16) (M2C_FIELD(arg0, u16 *, 0x72) | 0x4000); - break; - case -4: - head = M2C_FIELD(ptr, s32 *, 0); - M2C_FIELD(arg0, s32 *, 0x94) = 0; - M2C_FIELD(arg0, s32 *, 0x9C) = 0; - M2C_FIELD(arg0, s16 *, 0x9A) = 0; - M2C_FIELD(arg0, s32 *, 0x90) = head; - M2C_FIELD(arg0, u16 *, 0x72) = (u16) (M2C_FIELD(arg0, u16 *, 0x72) & 0xF9FF); - func_8012AAAC(arg0); - break; - case -3: - cnt = M2C_FIELD(arg0, s32 *, 0x94) + 1; - M2C_FIELD(arg0, s32 *, 0x94) = cnt; - if (M2C_FIELD(arg0, s32 *, 0x9C) != 0) { - func_8012AAAC(arg0); - break; - } - saved = M2C_FIELD(arg0, s32 *, 0x90); - next = M2C_FIELD(ptr, s32 *, 0); - M2C_FIELD(arg0, s32 *, 0x94) = 0; - M2C_FIELD(arg0, s32 *, 0x9C) = 0; - M2C_FIELD(arg0, s16 *, 0x9A) = 0; - M2C_FIELD(arg0, s32 *, 0x90) = next; - M2C_FIELD(arg0, u16 *, 0x72) = (u16) (M2C_FIELD(arg0, u16 *, 0x72) & 0xF9FF); - func_8012AAAC(arg0); - M2C_FIELD(arg0, s32 *, 0x9C) = saved; - M2C_FIELD(arg0, s16 *, 0x9A) = (s16) cnt; - break; - case -50: - M2C_FIELD(arg0, s32 *, 0x94) = M2C_FIELD(arg0, s32 *, 0x94) + 1; - func_8012AAAC(arg0); - M2C_FIELD(arg0, u16 *, 0x72) = (u16) (M2C_FIELD(arg0, u16 *, 0x72) | 0x2000); - break; - case -5: - M2C_FIELD(arg0, u16 *, 0x72) = (u16) (M2C_FIELD(arg0, u16 *, 0x72) | 0x400); - M2C_FIELD(arg0, s32 *, 0x94) = M2C_FIELD(arg0, s32 *, 0x94) - 1; - func_8012AAAC(arg0); - break; - } - } else { - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s32 *, 0x20) = M2C_FIELD(ptr, s32 *, 0); - M2C_FIELD(arg0, s16 *, 0x98) = M2C_FIELD(ptr, s16 *, 4); - } -} - - -extern void func_8012AAAC(); -extern M2C_UNK D_8018D540; - -void func_8012ACA0(void *arg0) { - M2C_FIELD(arg0, M2C_UNK **, 0x90) = &D_8018D540; - M2C_FIELD(arg0, s32 *, 0x94) = 0; - M2C_FIELD(arg0, s32 *, 0x9C) = 0; - M2C_FIELD(arg0, s16 *, 0x9A) = 0; - M2C_FIELD(arg0, u16 *, 0x72) = (u16) (M2C_FIELD(arg0, u16 *, 0x72) & 0xF9FF); - ((void (*)(void))func_8012AAAC)(); -} diff --git a/src/ov_SC04_019/ov_SC04_019_after.c b/src/ov_SC04_019/ov_SC04_019_after.c deleted file mode 100644 index 0b1371529..000000000 --- a/src/ov_SC04_019/ov_SC04_019_after.c +++ /dev/null @@ -1,3096 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* func_801457A4 (@0x801457A4) is an -O0 function; its definition lives in ov_SC04_019_o0b.c (the -O0 - * whale object, whose .text ends exactly at this address). Mirrors ov_SC01_077. §116 */ -DEFINE_func_801458E0() /* dedup: shared engine-core @0x801458E0 (src/shared) */ - -DEFINE_func_801458E8() /* dedup: shared engine-core @0x801458E8 (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (else-if >= ladder + §5a cross-jump barrier in the first D_8018F74C block defeats the tail-merge of the two identical D_8018F74C loads; barrier emits zero bytes, load-bearing) - -extern s32 func_80029504(void); -extern void func_800D185C(u8 *a0); -extern void func_80145B24(void); - -extern u8 D_8018F74C; -extern u8 D_8018F6BC; -extern u8 D_8018F698; -extern u8 D_8018F674; -extern u8 D_8018F728; -extern u8 D_8018F704; -extern u8 D_8018F6E0; -extern u8 D_8018F650; - -void func_80145934(void) { - s32 v; - void *p; - - v = func_80029504(); - if (v >= 0x6A4) { - p = &D_8018F74C; - /* §5a cross-jump barrier — LOAD-BEARING: keeps this D_8018F74C load from being - * tail-merged with the v>=0x384 D_8018F74C load below (emits zero machine code). */ - __asm__ __volatile__("" ::: "memory"); - } else if (v >= 0x5DC) { - p = &D_8018F6BC; - } else if (v >= 0x578) { - p = &D_8018F698; - } else if (v >= 0x514) { - p = &D_8018F674; - } else if (v >= 0x384) { - p = &D_8018F74C; - } else if (v >= 0x258) { - p = &D_8018F728; - } else if (v >= 0xC8) { - p = &D_8018F704; - } else if (v >= 0xA) { - p = &D_8018F6E0; - } else { - p = &D_8018F650; - } - ((void (*)(void *))func_800D185C)(p); - func_80145B24(); -} - - - - -// @class: other -// @stuck: none — MATCH (62 ins). Sibling func_80145934 (byte-matched, same shape) is the template. Tail is default-then-conditional-override (matches asm .L80145AEC), and a §5a cross-jump barrier prevents the two identical D_8018F7DC loads (>=0x6A4 and >=0x384) from being tail-merged. - -extern s32 func_80029504(void); -extern void func_800D185C(u8 *a0); -extern void func_80145B24(void); - -extern u8 D_8018F7DC; -extern u8 D_8018F6BC; -extern u8 D_8018F698; -extern u8 D_8018F674; -extern u8 D_8018F7B8; -extern u8 D_8018F794; -extern u8 D_8018F650; -extern u8 D_8018F770; - -void func_80145A2C(void) { - s32 v; - void *p; - - v = func_80029504(); - if (v >= 0x6A4) { - p = &D_8018F7DC; - /* §5a cross-jump barrier — LOAD-BEARING: keeps this D_8018F7DC load from being - * tail-merged with the v>=0x384 D_8018F7DC load below (emits zero machine code). */ - __asm__ __volatile__("" ::: "memory"); - } else if (v >= 0x5DC) { - p = &D_8018F6BC; - } else if (v >= 0x578) { - p = &D_8018F698; - } else if (v >= 0x514) { - p = &D_8018F674; - } else if (v >= 0x384) { - p = &D_8018F7DC; - } else if (v >= 0x258) { - p = &D_8018F7B8; - } else if (v >= 0xC8) { - p = &D_8018F794; - } else { - p = &D_8018F650; - if (v >= 0xA) { - p = &D_8018F770; - } - } - ((void (*)(void *))func_800D185C)(p); - func_80145B24(); -} - - -DEFINE_func_80145B24() /* dedup: shared engine-core @0x80145B24 (src/shared) */ - -DEFINE_func_80145BF8() /* dedup: shared engine-core @0x80145BF8 (src/shared) */ - -DEFINE_func_80145C54() /* dedup: shared engine-core @0x80145C54 (src/shared) */ - -// @class: struct -// @stuck: 2 residuals — (1) target RELOADS global ptr D_80126B78 before each of its 5 field accesses (f28/f18/f1a/f1c/f2c); gcc-2.7.2 CSEs the single pointer load in every clean-C form I tried (int-cast, (s8*)/(s32) M2C_FIELD, struct*), keeping ONE load. volatile forces reloads but hoists them + leaves delay-slot nops the target fills (target is NOT volatile). (2) frame 0x20 not 0x18: target reserves an unused 8-byte stack local @0x10 (address-taken local — reproduced, but every code-free escape optimizes away and a visible escape corrupts the func_80145EE8(0) arg). Structure/order/values/callees all match; only the alias-driven reload chain + the phantom frame local remain. Family exemplar (~130 overlays). - - - -s32 func_80145CEC() { - extern int func_80016714(); - extern int func_8001C320(); - extern int func_801552F4(); - extern int func_80147084(); - extern int func_80147098(); - extern int func_801470AC(); - extern int func_80149210(); - extern int func_8014BE9C(); - extern int func_8016533C(); - extern int func_801627C0(); - extern int func_80162AF4(); - extern int func_80165C78(); - extern int func_801468C8(); - extern int func_80145EE8(); - extern int func_8014C968(); - extern int func_8014C6D0(); - extern int func_80165938(); - extern int func_80153C8C(); - extern int func_800290BC(); - extern s32 D_800AFAE8; - extern s32 D_800DE2A4; - extern s32 D_801152C8; - extern s32 D_8018EBC4; - extern s32 * D_80126B78[1]; - extern s32 * D_800AF7C8; - extern s32 * D_80126B90; - extern s16 D_80126BB8; - extern s16 D_80126BBA; - extern s16 D_80126BBC; - extern s16 D_80126BC0; - extern s16 D_80126BC2; - extern s16 D_80126BC4; - extern s16 D_80126BC8; - extern s16 D_80126BCA; - extern s16 D_80126BCC; - extern s16 D_80126D10; - extern s16 D_80126D12; - extern s16 D_80126C4E; - extern s16 currentLocationId; - extern s32 D_8011F9C4; - extern s32 D_8012707C; - extern s32 D_8011DB10; - - unsigned int uVar1; - s32 pad[2]; - (void)&pad; - - func_80016714(&D_80126B58, 0x254); - D_80126B78[0] = (s32 *)&D_800AFAE8; - D_800AF7C8 = (s32 *)&D_801152C8; - func_8001C320(&D_800AFAE8, &D_800DE2A4); - *(s32 *)((s32)D_80126B78[0] + 0x28) = 0x7fff7fff; - D_80126B90 = (s32 *)&D_8018EBC4; - *(u16 *)((s32)D_80126B78[0] + 0x18) = 0x1000; - D_80126BC8 = 0x1000; - D_80126BC0 = 0x1000; - D_80126BB8 = 0x1000; - *(u16 *)((s32)D_80126B78[0] + 0x1a) = 0x1000; - D_80126BCA = 0x1000; - D_80126BC2 = 0x1000; - D_80126BBA = 0x1000; - *(u16 *)((s32)D_80126B78[0] + 0x1c) = 0x1000; - D_80126BCC = 0x1000; - D_80126BC4 = 0x1000; - D_80126BBC = 0x1000; - D_80126D12 = 0x1000; - D_80126D10 = 0x1000; - D_80126C4E = 0x1000; - func_801552F4(&D_80126B58); - func_80147084(&D_80126B58); - func_80147098(&D_80126B58); - func_801470AC(&D_80126B58); - *(u16 *)((s32)D_80126B78[0] + 0x2c) = *(u16 *)((s32)D_80126B78[0] + 0x2c) | 0x50; - func_80149210(&D_80126B58, 8); - func_8014BE9C(); - func_8016533C(); - func_801627C0(); - func_80162AF4(); - func_80165C78(); - func_801468C8(&D_80126B58, 1); - if (currentLocationId != 0x30a2 && currentLocationId != 0x30a5) { - func_80145EE8(0); - } - func_8014C968(); - func_8014C6D0(); - D_8011F9C4 = 0; - func_80165938(); - func_80153C8C(); - D_8012707C = 0; - D_8011DB10 = 0; - uVar1 = ((int(*)())func_80029504)(); - if (uVar1 >= 10) { - func_800290BC(); - } -} - - - - -// @class: schedule -// @stuck: branch layout — 3-way dispatch on param_1; trying switch form - -extern s32 func_80029178(s32 arg); -extern void func_80146014(s32 a0); - -extern unsigned char D_8018EBD4[]; -extern unsigned char D_8018EC04[]; -extern unsigned char D_8018EC54[]; -extern unsigned char D_8018EC84[]; -extern unsigned char D_8018ECB4[]; - -void func_80145EE8(s32 param_1) -{ - switch (param_1) { - case 0: - if (((unsigned char (*)(int))func_80029178)(0x1F) != 0) { - ((void (*)(void *))func_80146014)(D_8018EBD4); - } - if (((unsigned char (*)(int))func_80029178)(0x21) != 0) { - ((void (*)(void *))func_80146014)(D_8018EC04); - } - if (((unsigned char (*)(int))func_80029178)(0x1E) != 0) { - ((void (*)(void *))func_80146014)(D_8018EC54); - } - if (((unsigned char (*)(int))func_80029178)(0x1D) != 0) { - ((void (*)(void *))func_80146014)(D_8018EC84); - } - if (((unsigned char (*)(int))func_80029178)(0x20) == 0) { - return; - } - ((void (*)(void *))func_80146014)(D_8018ECB4); - break; - case 1: - ((void (*)(void *))func_80146014)(D_8018EBD4); - ((void (*)(void *))func_80146014)(D_8018EC04); - ((void (*)(void *))func_80146014)(D_8018EC54); - ((void (*)(void *))func_80146014)(D_8018EC84); - ((void (*)(void *))func_80146014)(D_8018ECB4); - break; - } -} - - -DEFINE_func_80146014() /* dedup: shared engine-core @0x80146014 (src/shared) */ - -DEFINE_func_80146074() /* dedup: shared engine-core @0x80146074 (src/shared) */ - - -extern s32 func_80146128(void); -extern void func_80146360(void); -extern void func_801463A0(); - -void func_8014607C(void) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "sw $sp, 0($t0)\n" - "addiu $t0, $t0, -4\n" - "addu $sp, $t0, $zero\n" - "jal func_80146128\n" - "lui $at, %%hi(D_801E5BA0)\n" - "sw $v0, %%lo(D_801E5BA0)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E5BA0)\n" - "lw $v0, %%lo(D_801E5BA0)($v0)\n" - "nop\n" - "beqz $v0, .L80146114\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "addu $t0, $v1, $zero\n" - "sw $sp, 0($t0)\n" - "addiu $t0, $t0, -4\n" - "addu $sp, $t0, $zero\n" - "jal func_80146360\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "addu $t0, $v1, $zero\n" - "sw $sp, 0($t0)\n" - "addiu $t0, $t0, -4\n" - "addu $sp, $t0, $zero\n" - "jal func_801463A0\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - ".L80146114:\n" - "nop\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_80146128() /* dedup: shared engine-core @0x80146128 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (fnptr-table idiom: D_8018ED04[u8 idx](&arg)) -extern void (*D_8018ED04[])(void *); -extern u8 D_80126BA4; - -void func_80146360(void) -{ - /* [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; - D_8018ED04[D_80126BA4](&D_80126B58); -} - - - - - - /* size 8, align 1 -> unaligned block move */ - -DEFINE_func_801463A0() /* dedup: shared engine-core @0x801463A0 (src/shared) */ - - -DEFINE_func_80146534() /* dedup: shared engine-core @0x80146534 (src/shared) */ - -DEFINE_func_80146554() /* dedup: shared engine-core @0x80146554 (src/shared) */ - -DEFINE_func_80146578() /* dedup: shared engine-core @0x80146578 (src/shared) */ - -DEFINE_func_8014659C() /* dedup: shared engine-core @0x8014659C (src/shared) */ - -DEFINE_func_801465C0() /* dedup: shared engine-core @0x801465C0 (src/shared) */ - -DEFINE_func_801465E4() /* dedup: shared engine-core @0x801465E4 (src/shared) */ - -DEFINE_func_80146608() /* dedup: shared engine-core @0x80146608 (src/shared) */ - -DEFINE_func_801466B4() /* dedup: shared engine-core @0x801466B4 (src/shared) */ - -DEFINE_func_801466F0() /* dedup: shared engine-core @0x801466F0 (src/shared) */ - - - -DEFINE_func_80146750() /* dedup: shared engine-core @0x80146750 (src/shared) */ - - -DEFINE_func_8014680C() /* dedup: shared engine-core @0x8014680C (src/shared) */ - -DEFINE_func_801468C8() /* dedup: shared engine-core @0x801468C8 (src/shared) */ - -DEFINE_func_80146924() /* dedup: shared engine-core @0x80146924 (src/shared) */ - -DEFINE_func_80146994() /* dedup: shared engine-core @0x80146994 (src/shared) */ - -DEFINE_func_801469C8() /* dedup: shared engine-core @0x801469C8 (src/shared) */ - -extern void func_80146AFC(void*); -void aF80146A6C(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6) __asm__("func_80146A6C"); -void aF80146A6C(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6) -{ - u8 sp[0x18]; - *(s16 *)(sp + 0x0) = a0; - *(s32 *)(sp + 0x8) = a1; - *(s16 *)(sp + 0x2) = a2; - *(s16 *)(sp + 0x4) = a3; - *(s16 *)(sp + 0x6) = a4; - *(s32 *)(sp + 0xC) = a5; - *(s32 *)(sp + 0x10) = a6; - ((s32 (*)(void *))func_80146AFC)(sp); -} - - -DEFINE_func_80146AB4() /* dedup: shared engine-core @0x80146AB4 (src/shared) */ - -extern s32 func_80146B9C(void * arg0); - -/* func_80146AFC — ASCENDING twin of the byte-proven DEFINE_func_80146B9C() - * in src/shared/engine_core.h (cookbook §71: find the already-matched sibling first). - * Same 0x58-stride slot table (base D_8011D030), same 7-store copy body in the same - * order, same $a2/$a1 giv pair. 80146B9C walks DOWN; this one walks UP, so the guard - * is `p < end`, end = p + 0xA50 (30 slots x 0x58). - * - * DECAY ROOT CAUSE (this redraft): the stored backlog draft had been rewritten to - * `void func_80146AFC(...)`, which drops BOTH `return 0` paths' `addu $v0,$zero,$zero` - * and the hit path's `j .L80146B94` => LENGTH-DRIFT -2 (38 vs 40) plus $v0/$v1 regalloc - * drift on the final lw/sw pair. Restoring the s32 return type (the fleet spelling the - * banked sibling func_80146B9C already uses) restores MATCH at 40/40. - * - * RECONCILE (2026-08-01) — the whole-binary gate failed with - * ov_SC01_077_after.c:592: conflicting types for `D_8011D030' (previous decl :564) - * TWO file-scope collisions were present; both are fixed HERE, with NO edit to - * src/shared/engine_core.h and NO change to the generated code (re-verified MATCH - * after each step): - * - * 1. D_8011D030 (the reported one). DEFINE_func_801469C8() emits - * `extern s32 D_8011D030;` at FILE scope (engine_core.h:10811, above the - * `s32 func_801469C8(...) {` line), and this TU expands that macro at :564 — - - extern s32 D_8011D030; - * i.e. before the splice point :570. The draft's `extern u16` therefore - * redeclared it incompatibly at :592. Conformed to the TU's `extern s32`. - * Codegen-neutral: the sole use is `(u8 *)&D_8011D030`, an address-of, so the - * declared object type never reaches a load/store width (cookbook §20). - * - * 2. func_80146AFC ITSELF (latent, would have surfaced next). DEFINE_func_8014C010() - * (:13510) and DEFINE_func_8014AD30() (:13524) each emit a file-scope - * `extern void func_80146AFC(void *a0);`, and this TU expands them at :1386 and - * :1541 — after the splice — so an `s32 func_80146AFC` definition collides on the - * RETURN axis. Fixed with the §37/§124 ASM-LABEL ALIAS: the C identifier is - * aF80146AFC, the emitted label is func_80146AFC, so the canonical void decl and - * this s32 definition never share a namespace. Callers discard the result, so the - * void-typed call sites stay codegen-identical. - * - * Both were reproduced and then cleared against the real cpp+cc1-2.7.2 pair using a - * synthetic copy of this TU's declaration environment (.run/uc2/_recon_probe_80146AFC.c): - * the pre-reconcile spelling emits exactly the gate's error pair; the spelling below - * compiles clean. - * - * ORACLE: tools/match_one.py func_80146AFC --c .run/uc2/func_80146AFC.c - * --asm-subdir asm/ov_SC01_077/nonmatchings/ov_SC01_077_after -> MATCH (40 ins) - */ - - -s32 aF80146AFC(void *arg0) __asm__("func_80146AFC"); - -s32 aF80146AFC(void *arg0) -{ - register u8 *p __asm__("$6"); - register u8 *q __asm__("$5"); - u8 *end; - p = (u8 *)&D_8011D030; - end = p + 0xA50; - if ((u32)p < (u32)end) { - q = p + 0x30; - do { - if (*(u16 *)p == 0) { - *(s32 *)(q + 0x4) = *(s32 *)((u8 *)arg0 + 0x8); - *(s16 *)p = *(u16 *)((u8 *)arg0 + 0x0); - *(s16 *)(q - 0x2A) = *(u16 *)((u8 *)arg0 + 0x2); - *(s16 *)(q - 0x26) = *(u16 *)((u8 *)arg0 + 0x4); - *(s16 *)(q - 0x22) = *(u16 *)((u8 *)arg0 + 0x6); - *(s32 *)(q - 0x4) = *(s32 *)((u8 *)arg0 + 0xC); - *(s32 *)(q + 0x0) = *(s32 *)((u8 *)arg0 + 0x10); - return (s32)p; - } - p += 0x58; - q += 0x58; - } while ((u32)p < (u32)end); - } - return 0; -} - - -DEFINE_func_80146B9C() /* dedup: shared engine-core @0x80146B9C (src/shared) */ - -DEFINE_func_80146C3C() /* dedup: shared engine-core @0x80146C3C (src/shared) */ - -DEFINE_func_80146C98() /* dedup: shared engine-core @0x80146C98 (src/shared) */ - -DEFINE_func_80146CA0() /* dedup: shared engine-core @0x80146CA0 (src/shared) */ - -DEFINE_func_80146CB4() /* dedup: shared engine-core @0x80146CB4 (src/shared) */ - -DEFINE_func_80146CC8() /* dedup: shared engine-core @0x80146CC8 (src/shared) */ - -DEFINE_func_80146D30() /* dedup: shared engine-core @0x80146D30 (src/shared) */ - -DEFINE_func_80146D80() /* dedup: shared engine-core @0x80146D80 (src/shared) */ - -DEFINE_func_80146D90() /* dedup: shared engine-core @0x80146D90 (src/shared) */ - -DEFINE_func_80146DB8() /* dedup: shared engine-core @0x80146DB8 (src/shared) */ - -DEFINE_func_80146DE8() /* dedup: shared engine-core @0x80146DE8 (src/shared) */ - -DEFINE_func_80146DF8() /* dedup: shared engine-core @0x80146DF8 (src/shared) */ - -DEFINE_func_80146E90() /* dedup: shared engine-core @0x80146E90 (src/shared) */ - -DEFINE_func_80146E98() /* dedup: shared engine-core @0x80146E98 (src/shared) */ - -DEFINE_func_80146EC0() /* dedup: shared engine-core @0x80146EC0 (src/shared) */ - -DEFINE_func_80146F58() /* dedup: shared engine-core @0x80146F58 (src/shared) */ - -DEFINE_func_80146FC4() /* dedup: shared engine-core @0x80146FC4 (src/shared) */ - -DEFINE_func_8014704C() /* dedup: shared engine-core @0x8014704C (src/shared) */ - -DEFINE_func_80147054() /* dedup: shared engine-core @0x80147054 (src/shared) */ - -DEFINE_func_80147060() /* dedup: shared engine-core @0x80147060 (src/shared) */ - -DEFINE_func_8014706C() /* dedup: shared engine-core @0x8014706C (src/shared) */ - -DEFINE_func_80147078() /* dedup: shared engine-core @0x80147078 (src/shared) */ - -DEFINE_func_80147084() /* dedup: shared engine-core @0x80147084 (src/shared) */ - -DEFINE_func_8014708C() /* dedup: shared engine-core @0x8014708C (src/shared) */ - -DEFINE_func_80147098() /* dedup: shared engine-core @0x80147098 (src/shared) */ - -DEFINE_func_801470A0() /* dedup: shared engine-core @0x801470A0 (src/shared) */ - -DEFINE_func_801470AC() /* dedup: shared engine-core @0x801470AC (src/shared) */ - -DEFINE_func_801470B4() /* dedup: shared engine-core @0x801470B4 (src/shared) */ - -DEFINE_func_801470C0() /* dedup: shared engine-core @0x801470C0 (src/shared) */ - -DEFINE_func_80147118() /* dedup: shared engine-core @0x80147118 (src/shared) */ - -DEFINE_func_80147264() /* dedup: shared engine-core @0x80147264 (src/shared) */ - -DEFINE_func_80147290() /* dedup: shared engine-core @0x80147290 (src/shared) */ - -DEFINE_func_801472B4() /* dedup: shared engine-core @0x801472B4 (src/shared) */ - -DEFINE_func_801472C8() /* dedup: shared engine-core @0x801472C8 (src/shared) */ - -DEFINE_func_801472DC() /* dedup: shared engine-core @0x801472DC (src/shared) */ - -DEFINE_func_801472F0() /* dedup: shared engine-core @0x801472F0 (src/shared) */ - -DEFINE_func_80147300() /* dedup: shared engine-core @0x80147300 (src/shared) */ - -DEFINE_func_80147324() /* dedup: shared engine-core @0x80147324 (src/shared) */ - -DEFINE_func_80147364() /* dedup: shared engine-core @0x80147364 (src/shared) */ - -DEFINE_func_801473DC() /* dedup: shared engine-core @0x801473DC (src/shared) */ - -DEFINE_func_801473EC() /* dedup: shared engine-core @0x801473EC (src/shared) */ - -DEFINE_func_80147460() /* dedup: shared engine-core @0x80147460 (src/shared) */ - -DEFINE_func_80147478() /* dedup: shared engine-core @0x80147478 (src/shared) */ - -DEFINE_func_801474D8() /* dedup: shared engine-core @0x801474D8 (src/shared) */ - -DEFINE_func_801474EC() /* dedup: shared engine-core @0x801474EC (src/shared) */ - -DEFINE_func_80147514() /* dedup: shared engine-core @0x80147514 (src/shared) */ - -DEFINE_func_80147628() /* dedup: shared engine-core @0x80147628 (src/shared) */ - -DEFINE_func_80147718() /* dedup: shared engine-core @0x80147718 (src/shared) */ - -DEFINE_func_80147788() /* dedup: shared engine-core @0x80147788 (src/shared) */ - -DEFINE_func_801477A8() /* dedup: shared engine-core @0x801477A8 (src/shared) */ - -DEFINE_func_801477C8() /* dedup: shared engine-core @0x801477C8 (src/shared) */ - -DEFINE_func_801477E8() /* dedup: shared engine-core @0x801477E8 (src/shared) */ - -DEFINE_func_80147814() /* dedup: shared engine-core @0x80147814 (src/shared) */ - -DEFINE_func_80147860() /* dedup: shared engine-core @0x80147860 (src/shared) */ - -DEFINE_func_801478B8() /* dedup: shared engine-core @0x801478B8 (src/shared) */ - -DEFINE_func_80147928() /* dedup: shared engine-core @0x80147928 (src/shared) */ - -DEFINE_func_80147948() /* dedup: shared engine-core @0x80147948 (src/shared) */ - -DEFINE_func_8014799C() /* dedup: shared engine-core @0x8014799C (src/shared) */ - -DEFINE_func_801479BC() /* dedup: shared engine-core @0x801479BC (src/shared) */ - -DEFINE_func_80147A10() /* dedup: shared engine-core @0x80147A10 (src/shared) */ - -DEFINE_func_80147A30() /* dedup: shared engine-core @0x80147A30 (src/shared) */ - -DEFINE_func_80147A84() /* dedup: shared engine-core @0x80147A84 (src/shared) */ - -DEFINE_func_80147AAC() /* dedup: shared engine-core @0x80147AAC (src/shared) */ - -DEFINE_func_80147AD4() /* dedup: shared engine-core @0x80147AD4 (src/shared) */ - -DEFINE_func_80147B18() /* dedup: shared engine-core @0x80147B18 (src/shared) */ - -DEFINE_func_80147B5C() /* dedup: shared engine-core @0x80147B5C (src/shared) */ - -DEFINE_func_80147C30() /* dedup: shared engine-core @0x80147C30 (src/shared) */ - -DEFINE_func_80147CC8() /* dedup: shared engine-core @0x80147CC8 (src/shared) */ - -DEFINE_func_80147D38() /* dedup: shared engine-core @0x80147D38 (src/shared) */ - -DEFINE_func_80147DC0() /* dedup: shared engine-core @0x80147DC0 (src/shared) */ - -DEFINE_func_80147E44() /* dedup: shared engine-core @0x80147E44 (src/shared) */ - -DEFINE_func_80147F50() /* dedup: shared engine-core @0x80147F50 (src/shared) */ - -DEFINE_func_80147F78() /* dedup: shared engine-core @0x80147F78 (src/shared) */ - -DEFINE_func_80148038() /* dedup: shared engine-core @0x80148038 (src/shared) */ - -DEFINE_func_80148094() /* dedup: shared engine-core @0x80148094 (src/shared) */ - -DEFINE_func_801483E8() /* dedup: shared engine-core @0x801483E8 (src/shared) */ - -DEFINE_func_801484B0() /* dedup: shared engine-core @0x801484B0 (src/shared) */ - -DEFINE_func_801484E8() /* dedup: shared engine-core @0x801484E8 (src/shared) */ - -DEFINE_func_80148534() /* dedup: shared engine-core @0x80148534 (src/shared) */ - -DEFINE_func_8014856C() /* dedup: shared engine-core @0x8014856C (src/shared) */ - -DEFINE_func_801485B8() /* dedup: shared engine-core @0x801485B8 (src/shared) */ - -DEFINE_func_80148634() /* dedup: shared engine-core @0x80148634 (src/shared) */ - -DEFINE_func_80148648() /* dedup: shared engine-core @0x80148648 (src/shared) */ - -DEFINE_func_801487F4() /* dedup: shared engine-core @0x801487F4 (src/shared) */ - -DEFINE_func_80148800() /* dedup: shared engine-core @0x80148800 (src/shared) */ - -DEFINE_func_8014880C() /* dedup: shared engine-core @0x8014880C (src/shared) */ - -DEFINE_func_80148818() /* dedup: shared engine-core @0x80148818 (src/shared) */ - -DEFINE_func_80148824() /* dedup: shared engine-core @0x80148824 (src/shared) */ - -DEFINE_func_801488A8() /* dedup: shared engine-core @0x801488A8 (src/shared) */ - -DEFINE_func_8014891C() /* dedup: shared engine-core @0x8014891C (src/shared) */ - -DEFINE_func_80148980() /* dedup: shared engine-core @0x80148980 (src/shared) */ - -DEFINE_func_801489E8() /* dedup: shared engine-core @0x801489E8 (src/shared) */ - -DEFINE_func_80148A48() /* dedup: shared engine-core @0x80148A48 (src/shared) */ - -DEFINE_func_80148AAC() /* dedup: shared engine-core @0x80148AAC (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (71 ins). switch binary-tree; s1 angle = pin-source-of-copy ($5 temp + retie); 2nd-block double-load + 0x80-clobber via $v1/$v0/$a0 pins + lazy hi-pin reusing dead c80 reg - -extern s32 ratan2(s32 a0, s32 a1); - -int func_80148AFC(void *a0) { - - extern s32 D_801151D4; - extern ActorFn D_8018ED0C[]; - s32 p = (s32)a0; - s32 iVar5 = *(s32 *)(p + 0x20); - register s32 tmp __asm__("$5") = (ratan2(*(s32 *)(D_801151D4 + 0x44) - *(s32 *)(D_801151D4 + 0x50), - *(s32 *)(D_801151D4 + 0x48) - *(s32 *)(D_801151D4 + 0x3C)) - 0x400) & 0xFFF; - s32 sVar3; - u8 bVar1; - __asm__("" : "=r"(tmp) : "0"(tmp)); - sVar3 = tmp; - bVar1 = *(u8 *)(p + 0xA9); - - switch (bVar1) { - case 0x41: - return D_8018ED0C[*(u16 *)(p + 0xAA) >> 12](a0) & 0xFF; - case 0x53: - case 0x73: - { - register u32 bb __asm__("$3"); - register s32 c80 __asm__("$2") = 0x80; - register s32 lo __asm__("$4"); - register s32 hi __asm__("$2"); - bb = *(u16 *)(p + 0xAE); - lo = bb & 0xFF; - if (lo != c80 || (hi = bb >> 8) != 0x80) { - s32 sVar4; - __asm__ __volatile__("" : : : "memory"); - sVar4 = ratan2((*(u16 *)(p + 0xAE) & 0xFF) - 0x80, 0x80 - (*(u16 *)(p + 0xAE) >> 8)); - *(u16 *)(iVar5 + 0x12) = (sVar3 + sVar4) & 0xFFF; - return 1; - } - return 0; - } - } -} - - -DEFINE_func_80148C18() /* dedup: shared engine-core @0x80148C18 (src/shared) */ - -DEFINE_func_80148C20() /* dedup: shared engine-core @0x80148C20 (src/shared) */ - -DEFINE_func_80148C34() /* dedup: shared engine-core @0x80148C34 (src/shared) */ - -DEFINE_func_80148C4C() /* dedup: shared engine-core @0x80148C4C (src/shared) */ - -DEFINE_func_80148C64() /* dedup: shared engine-core @0x80148C64 (src/shared) */ - -DEFINE_func_80148C7C() /* dedup: shared engine-core @0x80148C7C (src/shared) */ - -DEFINE_func_80148C84() /* dedup: shared engine-core @0x80148C84 (src/shared) */ - -DEFINE_func_80148C9C() /* dedup: shared engine-core @0x80148C9C (src/shared) */ - -DEFINE_func_80148CB4() /* dedup: shared engine-core @0x80148CB4 (src/shared) */ - -DEFINE_func_80148CCC() /* dedup: shared engine-core @0x80148CCC (src/shared) */ - -DEFINE_func_80148CE4() /* dedup: shared engine-core @0x80148CE4 (src/shared) */ - -DEFINE_func_80148CEC() /* dedup: shared engine-core @0x80148CEC (src/shared) */ - -DEFINE_func_80148CF4() /* dedup: shared engine-core @0x80148CF4 (src/shared) */ - -DEFINE_func_80148D0C() /* dedup: shared engine-core @0x80148D0C (src/shared) */ - -DEFINE_func_80148D24() /* dedup: shared engine-core @0x80148D24 (src/shared) */ - -DEFINE_func_80148D3C() /* dedup: shared engine-core @0x80148D3C (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (68 ins) -extern s32 ratan2(s32 a0, s32 a1); - -s32 func_80148D44(void) { - - extern s32 D_801151D4; - extern u8 D_80126C01; - extern u16 D_80126C02; - extern u16 D_80126C06; - extern s32 D_8018ED4C[]; - register s32 ang __asm__("$16"); - register s32 a __asm__("$4"); - s32 p; - s32 res; - s32 d; - - p = D_801151D4; - a = (ratan2(*(s32 *)(p + 0x44) - *(s32 *)(p + 0x50), - *(s32 *)(p + 0x48) - *(s32 *)(p + 0x3c)) - 0x400) & 0xFFF; - d = (s32)D_80126C01; - __asm__ __volatile__("" : : "r"(a)); - ang = a; - if (d == 0x53) { - goto final; - } - if (d < 0x54) { - if (d == 0x41) { - goto call; - } - return 0x41; - } - if (d != 0x73) { - return 0x73; - } - goto final; -call: - return (s32)(s16)((s16 (*)())(D_8018ED4C[D_80126C02 >> 0xc]))(); -final: - { - u32 e = D_80126C06; - if (((e & 0xff) == 0x80) && ((e >> 8) == (e & 0xff))) { - return -1; - } - __asm__ __volatile__("" : : : "memory"); - res = (ang + ratan2((D_80126C06 & 0xff) - 0x80, 0x80 - (D_80126C06 >> 8))) & 0xFFF; - } - return res; -} - - - -extern s32 ratan2(s32, s32); -/* derived from asm: lui/addu/lw %lo(D_8018ED8C) indexed by (u16>>12)*4, then jalr with no args; - * the result is sign-extended from 16 bits => the table's functions return s16. */ - -s32 func_80148E54(s32 arg0) { - - extern s32 D_801151D4; - extern s16 (*D_8018ED8C[])(); - register s32 tmp __asm__("$4") = (ratan2(*(s32 *)(D_801151D4 + 0x44) - *(s32 *)(D_801151D4 + 0x50), - *(s32 *)(D_801151D4 + 0x48) - *(s32 *)(D_801151D4 + 0x3C)) - 0x400) & 0xFFF; - s32 ang; - __asm__("" : "=r"(tmp) : "0"(tmp)); - ang = tmp; - - switch (*(u8 *)(arg0 + 0xA9)) { - case 0x41: - return D_8018ED8C[*(u16 *)(arg0 + 0xAA) >> 12](); - case 0x53: - case 0x73: - if ((*(u16 *)(arg0 + 0xAE) & 0xFF) == 0x80 && (*(u16 *)(arg0 + 0xAE) >> 8) == 0x80) { - return -1; - } - return (ang + ratan2((*(u16 *)(arg0 + 0xAE) & 0xFF) - 0x80, - 0x80 - (*(u16 *)(arg0 + 0xAE) >> 8))) & 0xFFF; - } -} - - -DEFINE_func_80148F60() /* dedup: shared engine-core @0x80148F60 (src/shared) */ - -DEFINE_func_80148F68() /* dedup: shared engine-core @0x80148F68 (src/shared) */ - -DEFINE_func_80148F74() /* dedup: shared engine-core @0x80148F74 (src/shared) */ - -DEFINE_func_80148F80() /* dedup: shared engine-core @0x80148F80 (src/shared) */ - -DEFINE_func_80148F8C() /* dedup: shared engine-core @0x80148F8C (src/shared) */ - -DEFINE_func_80148F98() /* dedup: shared engine-core @0x80148F98 (src/shared) */ - -DEFINE_func_80148FA0() /* dedup: shared engine-core @0x80148FA0 (src/shared) */ - -DEFINE_func_80148FAC() /* dedup: shared engine-core @0x80148FAC (src/shared) */ - -DEFINE_func_80148FB8() /* dedup: shared engine-core @0x80148FB8 (src/shared) */ - -DEFINE_func_80148FC4() /* dedup: shared engine-core @0x80148FC4 (src/shared) */ - -DEFINE_func_80148FD0() /* dedup: shared engine-core @0x80148FD0 (src/shared) */ - -DEFINE_func_80148FD8() /* dedup: shared engine-core @0x80148FD8 (src/shared) */ - -DEFINE_func_80148FE0() /* dedup: shared engine-core @0x80148FE0 (src/shared) */ - -DEFINE_func_80148FEC() /* dedup: shared engine-core @0x80148FEC (src/shared) */ - -DEFINE_func_80148FF8() /* dedup: shared engine-core @0x80148FF8 (src/shared) */ - -DEFINE_func_80149004() /* dedup: shared engine-core @0x80149004 (src/shared) */ - -DEFINE_func_8014900C() /* dedup: shared engine-core @0x8014900C (src/shared) */ - -DEFINE_func_80149020() /* dedup: shared engine-core @0x80149020 (src/shared) */ - -DEFINE_func_80149034() /* dedup: shared engine-core @0x80149034 (src/shared) */ - -DEFINE_func_80149048() /* dedup: shared engine-core @0x80149048 (src/shared) */ - -DEFINE_func_8014905C() /* dedup: shared engine-core @0x8014905C (src/shared) */ - -DEFINE_func_80149078() /* dedup: shared engine-core @0x80149078 (src/shared) */ - -DEFINE_func_801490E0() /* dedup: shared engine-core @0x801490E0 (src/shared) */ - -DEFINE_func_801490E8() /* dedup: shared engine-core @0x801490E8 (src/shared) */ - -DEFINE_func_801490F0() /* dedup: shared engine-core @0x801490F0 (src/shared) */ - -DEFINE_func_801490F8() /* dedup: shared engine-core @0x801490F8 (src/shared) */ - -DEFINE_func_80149184() /* dedup: shared engine-core @0x80149184 (src/shared) */ - -DEFINE_func_801491C4() /* dedup: shared engine-core @0x801491C4 (src/shared) */ - -DEFINE_func_80149204() /* dedup: shared engine-core @0x80149204 (src/shared) */ - -DEFINE_func_80149210() /* dedup: shared engine-core @0x80149210 (src/shared) */ - -DEFINE_func_80149228() /* dedup: shared engine-core @0x80149228 (src/shared) */ - -DEFINE_func_80149284() /* dedup: shared engine-core @0x80149284 (src/shared) */ - -DEFINE_func_80149290() /* dedup: shared engine-core @0x80149290 (src/shared) */ - -DEFINE_func_80149350() /* dedup: shared engine-core @0x80149350 (src/shared) */ - -DEFINE_func_80149374() /* dedup: shared engine-core @0x80149374 (src/shared) */ - -DEFINE_func_801493D0() /* dedup: shared engine-core @0x801493D0 (src/shared) */ - -DEFINE_func_8014942C() /* dedup: shared engine-core @0x8014942C (src/shared) */ - -DEFINE_func_80149450() /* dedup: shared engine-core @0x80149450 (src/shared) */ - -DEFINE_func_801494CC() /* dedup: shared engine-core @0x801494CC (src/shared) */ - -DEFINE_func_80149544() /* dedup: shared engine-core @0x80149544 (src/shared) */ - -DEFINE_func_80149584() /* dedup: shared engine-core @0x80149584 (src/shared) */ - -DEFINE_func_801495C4() /* dedup: shared engine-core @0x801495C4 (src/shared) */ - - - -// @class: regalloc-order -// @stuck: none — MATCH (34 ins). param_2 pinned to $s0; the two stack out-bufs (in@0x10, -// mid@0x20,out@0x18) would be HOISTED into $s1 across call1 (frame 0x38, +s1 save) — break -// that with a per-use CSE-break barrier (`__asm__("":"=r"(p):"0"(p))`) on &in, mid(call1), -// mid(call2) so each rematerializes `addiu reg,$sp,off` (frame 0x30, only $s0 saved). The -// two independent arg setups (`lw $a0,0x20($a0)` vs `addiu $a2,$sp,0x20`) tie in sched2 — -// force target order with VOLATILE barriers in textual order pin(&in)->mtx-load->mid. - -DEFINE_func_8014964C() /* dedup: shared engine-core @0x8014964C (src/shared) */ - - -DEFINE_func_801496D4() /* dedup: shared engine-core @0x801496D4 (src/shared) */ - -DEFINE_func_80149704() /* dedup: shared engine-core @0x80149704 (src/shared) */ - -DEFINE_func_80149724() /* dedup: shared engine-core @0x80149724 (src/shared) */ - -DEFINE_func_80149744() /* dedup: shared engine-core @0x80149744 (src/shared) */ - -DEFINE_func_80149788() /* dedup: shared engine-core @0x80149788 (src/shared) */ - - -DEFINE_func_801497A8() /* dedup: shared engine-core @0x801497A8 (src/shared) */ - - -DEFINE_func_80149864() /* dedup: shared engine-core @0x80149864 (src/shared) */ - -DEFINE_func_80149884() /* dedup: shared engine-core @0x80149884 (src/shared) */ - -DEFINE_func_801498C0() /* dedup: shared engine-core @0x801498C0 (src/shared) */ - -DEFINE_func_801498E0() /* dedup: shared engine-core @0x801498E0 (src/shared) */ - -DEFINE_func_80149954() /* dedup: shared engine-core @0x80149954 (src/shared) */ - -DEFINE_func_80149A64() /* dedup: shared engine-core @0x80149A64 (src/shared) */ - -DEFINE_func_80149AA8() /* dedup: shared engine-core @0x80149AA8 (src/shared) */ - -DEFINE_func_80149AD4() /* dedup: shared engine-core @0x80149AD4 (src/shared) */ - -DEFINE_func_80149B14() /* dedup: shared engine-core @0x80149B14 (src/shared) */ - -DEFINE_func_80149B54() /* dedup: shared engine-core @0x80149B54 (src/shared) */ - -DEFINE_func_80149BAC() /* dedup: shared engine-core @0x80149BAC (src/shared) */ - -DEFINE_func_80149BEC() /* dedup: shared engine-core @0x80149BEC (src/shared) */ - -DEFINE_func_80149C08() /* dedup: shared engine-core @0x80149C08 (src/shared) */ - -DEFINE_func_80149C94() /* dedup: shared engine-core @0x80149C94 (src/shared) */ - -DEFINE_func_80149CB4() /* dedup: shared engine-core @0x80149CB4 (src/shared) */ - -DEFINE_func_80149CD4() /* dedup: shared engine-core @0x80149CD4 (src/shared) */ - -DEFINE_func_80149D10() /* dedup: shared engine-core @0x80149D10 (src/shared) */ - -DEFINE_func_80149D9C() /* dedup: shared engine-core @0x80149D9C (src/shared) */ - -DEFINE_func_80149DD8() /* dedup: shared engine-core @0x80149DD8 (src/shared) */ - -DEFINE_func_80149E94() /* dedup: shared engine-core @0x80149E94 (src/shared) */ - -DEFINE_func_80149F2C() /* dedup: shared engine-core @0x80149F2C (src/shared) */ - -DEFINE_func_80149FA8() /* dedup: shared engine-core @0x80149FA8 (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (38 ins) -extern s32 D_8018EDCC[]; -extern u8 D_80078E78[]; -extern s16 currentLocationId; - -s32 func_80149FB0(s32 a0) { - s32 *p = &D_8018EDCC[0]; - register s32 v __asm__("$3") = *p; - u8 *q = &D_80078E78[0]; - s32 loc; - - if (v != 0) { - loc = currentLocationId; - p = p + 1; - do { - if (loc == v) { - goto ret0; - } - v = *p; - p = p + 1; - } while (v != 0); - } - - if ((*(u32 *)(a0 + 0x44) & 0x400) != 0) { - return 0; - } - if (*(s16 *)(a0 + 0x1C8) != 0) { - return 0; - } - if ((*(u16 *)(a0 + 0xAC) & 0x100) == 0) { - ret0: - return 0; - } - v = q[0x48]; - q[0x48] = v ^ 0x80; - return 1; -} - - - -// @class: struct -// @stuck: none — MATCH (90 ins). Keys: (1) single Loc struct pins the 0x10..0x25 stack -// region (frame 0x40) for the func_8012F14C/func_80135260 out-params; (2) loop is a -// while(1) with the 6 checks &&-chained in the loop CONDITION + the "found" block AFTER -// the loop (fall-through) so the success path is a forward j .L8014A190 — matches the -// target CFG (Ghidra-C while-form); (3) the base &D_801202A0 must be RECOMPUTED inside -// the loop, not hoisted: `s0 = (s32)D_801202A0 + s2;` + the in-place re-tie barrier -// `__asm__ __volatile__("":"=r"(s0):"0"(s0));` (cookbook §21) forces the lui/addiu/addu -// per iteration instead of caching the symbol addr in $s4 (kills 1 ins + $s4); (4) u32 -// counter -> sltiu; (5) bef8-fail uses `goto ret0;` to a ret0 label placed AFTER the -// success block -> gives the bef8 v0=0 its own .L8014A18C block (delay slot = a1 setup); -// (6) setup-store SOURCE order a30,a2e,a2c,a1e,a20,a1c makes the scheduler hold a2c(0xE) -// in $v1 (loaded early, stored last at 0x14) while a2e(0xA) stores immediately at 0x12. - -DEFINE_func_8014A048() /* dedup: shared engine-core @0x8014A048 (src/shared) */ - - -DEFINE_func_8014A1B0() /* dedup: shared engine-core @0x8014A1B0 (src/shared) */ - -DEFINE_func_8014A218() /* dedup: shared engine-core @0x8014A218 (src/shared) */ - -DEFINE_func_8014A238() /* dedup: shared engine-core @0x8014A238 (src/shared) */ - -DEFINE_func_8014A2E4() /* dedup: shared engine-core @0x8014A2E4 (src/shared) */ - -DEFINE_func_8014A380() /* dedup: shared engine-core @0x8014A380 (src/shared) */ - -DEFINE_func_8014A3E0() /* dedup: shared engine-core @0x8014A3E0 (src/shared) */ - -DEFINE_func_8014A454() /* dedup: shared engine-core @0x8014A454 (src/shared) */ - -DEFINE_func_8014A4B4() /* dedup: shared engine-core @0x8014A4B4 (src/shared) */ - -DEFINE_func_8014A4FC() /* dedup: shared engine-core @0x8014A4FC (src/shared) */ - -DEFINE_func_8014A51C() /* dedup: shared engine-core @0x8014A51C (src/shared) */ - -DEFINE_func_8014A59C() /* dedup: shared engine-core @0x8014A59C (src/shared) */ - -DEFINE_func_8014A638() /* dedup: shared engine-core @0x8014A638 (src/shared) */ - -DEFINE_func_8014A674() /* dedup: shared engine-core @0x8014A674 (src/shared) */ - -DEFINE_func_8014A680() /* dedup: shared engine-core @0x8014A680 (src/shared) */ - -DEFINE_func_8014A69C() /* dedup: shared engine-core @0x8014A69C (src/shared) */ - -DEFINE_func_8014A6A8() /* dedup: shared engine-core @0x8014A6A8 (src/shared) */ - -DEFINE_func_8014A6C4() /* dedup: shared engine-core @0x8014A6C4 (src/shared) */ - -DEFINE_func_8014A71C() /* dedup: shared engine-core @0x8014A71C (src/shared) */ - - - - - - - - - -DEFINE_func_8014A738() /* dedup: shared engine-core @0x8014A738 (src/shared) */ - - -DEFINE_func_8014A830() /* dedup: shared engine-core @0x8014A830 (src/shared) */ - -DEFINE_func_8014A850() /* dedup: shared engine-core @0x8014A850 (src/shared) */ - -DEFINE_func_8014AA04() /* dedup: shared engine-core @0x8014AA04 (src/shared) */ - -DEFINE_func_8014AA28() /* dedup: shared engine-core @0x8014AA28 (src/shared) */ - -DEFINE_func_8014AB5C() /* dedup: shared engine-core @0x8014AB5C (src/shared) */ - -DEFINE_func_8014AB7C() /* dedup: shared engine-core @0x8014AB7C (src/shared) */ - -DEFINE_func_8014ABF0() /* dedup: shared engine-core @0x8014ABF0 (src/shared) */ - -DEFINE_func_8014AC10() /* dedup: shared engine-core @0x8014AC10 (src/shared) */ - -DEFINE_func_8014ACC0() /* dedup: shared engine-core @0x8014ACC0 (src/shared) */ - -DEFINE_func_8014ACE8() /* dedup: shared engine-core @0x8014ACE8 (src/shared) */ - -DEFINE_func_8014AD30() /* dedup: shared engine-core @0x8014AD30 (src/shared) */ - -DEFINE_func_8014AD7C() /* dedup: shared engine-core @0x8014AD7C (src/shared) */ - -DEFINE_func_8014ADA8() /* dedup: shared engine-core @0x8014ADA8 (src/shared) */ - -DEFINE_func_8014ADE0() /* dedup: shared engine-core @0x8014ADE0 (src/shared) */ - -DEFINE_func_8014B00C() /* dedup: shared engine-core @0x8014B00C (src/shared) */ - -DEFINE_func_8014B034() /* dedup: shared engine-core @0x8014B034 (src/shared) */ - -DEFINE_func_8014B084() /* dedup: shared engine-core @0x8014B084 (src/shared) */ - -DEFINE_func_8014B12C() /* dedup: shared engine-core @0x8014B12C (src/shared) */ - -DEFINE_func_8014B154() /* dedup: shared engine-core @0x8014B154 (src/shared) */ - -DEFINE_func_8014B160() /* dedup: shared engine-core @0x8014B160 (src/shared) */ - -DEFINE_func_8014B190() /* dedup: shared engine-core @0x8014B190 (src/shared) */ - -DEFINE_func_8014B2A8() /* dedup: shared engine-core @0x8014B2A8 (src/shared) */ - -DEFINE_func_8014B2D0() /* dedup: shared engine-core @0x8014B2D0 (src/shared) */ - -DEFINE_func_8014B2F8() /* dedup: shared engine-core @0x8014B2F8 (src/shared) */ - -DEFINE_func_8014B310() /* dedup: shared engine-core @0x8014B310 (src/shared) */ - -DEFINE_func_8014B33C() /* dedup: shared engine-core @0x8014B33C (src/shared) */ - -DEFINE_func_8014B350() /* dedup: shared engine-core @0x8014B350 (src/shared) */ - -DEFINE_func_8014B4C4() /* dedup: shared engine-core @0x8014B4C4 (src/shared) */ - -DEFINE_func_8014B4D4() /* dedup: shared engine-core @0x8014B4D4 (src/shared) */ - -DEFINE_func_8014B504() /* dedup: shared engine-core @0x8014B504 (src/shared) */ - -DEFINE_func_8014B598() /* dedup: shared engine-core @0x8014B598 (src/shared) */ - -DEFINE_func_8014B5B0() /* dedup: shared engine-core @0x8014B5B0 (src/shared) */ - -DEFINE_func_8014B5B8() /* dedup: shared engine-core @0x8014B5B8 (src/shared) */ - -DEFINE_func_8014B5C4() /* dedup: shared engine-core @0x8014B5C4 (src/shared) */ - -DEFINE_func_8014B5D0() /* dedup: shared engine-core @0x8014B5D0 (src/shared) */ - -DEFINE_func_8014B5D8() /* dedup: shared engine-core @0x8014B5D8 (src/shared) */ - -DEFINE_func_8014B6F0() /* dedup: shared engine-core @0x8014B6F0 (src/shared) */ - -DEFINE_func_8014B768() /* dedup: shared engine-core @0x8014B768 (src/shared) */ - -DEFINE_func_8014B7A4() /* dedup: shared engine-core @0x8014B7A4 (src/shared) */ - -DEFINE_func_8014B944() /* dedup: shared engine-core @0x8014B944 (src/shared) */ - -DEFINE_func_8014BB0C() /* dedup: shared engine-core @0x8014BB0C (src/shared) */ - -DEFINE_func_8014BB24() /* dedup: shared engine-core @0x8014BB24 (src/shared) */ - -DEFINE_func_8014BC0C() /* dedup: shared engine-core @0x8014BC0C (src/shared) */ - -DEFINE_func_8014BC44() /* dedup: shared engine-core @0x8014BC44 (src/shared) */ - -DEFINE_func_8014BC80() /* dedup: shared engine-core @0x8014BC80 (src/shared) */ - -DEFINE_func_8014BCC0() /* dedup: shared engine-core @0x8014BCC0 (src/shared) */ - -DEFINE_func_8014BCEC() /* dedup: shared engine-core @0x8014BCEC (src/shared) */ - -DEFINE_func_8014BD24() /* dedup: shared engine-core @0x8014BD24 (src/shared) */ - -DEFINE_func_8014BD60() /* dedup: shared engine-core @0x8014BD60 (src/shared) */ - -DEFINE_func_8014BD98() /* dedup: shared engine-core @0x8014BD98 (src/shared) */ - -DEFINE_func_8014BDC8() /* dedup: shared engine-core @0x8014BDC8 (src/shared) */ - -DEFINE_func_8014BDE0() /* dedup: shared engine-core @0x8014BDE0 (src/shared) */ - -DEFINE_func_8014BDE8() /* dedup: shared engine-core @0x8014BDE8 (src/shared) */ - -DEFINE_func_8014BE78() /* dedup: shared engine-core @0x8014BE78 (src/shared) */ - -DEFINE_func_8014BE9C() /* dedup: shared engine-core @0x8014BE9C (src/shared) */ - -DEFINE_func_8014BEC0() /* dedup: shared engine-core @0x8014BEC0 (src/shared) */ - -DEFINE_func_8014BEF8() /* dedup: shared engine-core @0x8014BEF8 (src/shared) */ - -DEFINE_func_8014BF18() /* dedup: shared engine-core @0x8014BF18 (src/shared) */ - -DEFINE_func_8014BF48() /* dedup: shared engine-core @0x8014BF48 (src/shared) */ - -DEFINE_func_8014BF6C() /* dedup: shared engine-core @0x8014BF6C (src/shared) */ - -DEFINE_func_8014BF8C() /* dedup: shared engine-core @0x8014BF8C (src/shared) */ - -DEFINE_func_8014BFB0() /* dedup: shared engine-core @0x8014BFB0 (src/shared) */ - -DEFINE_func_8014BFD4() /* dedup: shared engine-core @0x8014BFD4 (src/shared) */ - -DEFINE_func_8014BFF4() /* dedup: shared engine-core @0x8014BFF4 (src/shared) */ - -DEFINE_func_8014C010() /* dedup: shared engine-core @0x8014C010 (src/shared) */ - -DEFINE_func_8014C050() /* dedup: shared engine-core @0x8014C050 (src/shared) */ - -DEFINE_func_8014C088() /* dedup: shared engine-core @0x8014C088 (src/shared) */ - -DEFINE_func_8014C0C8() /* dedup: shared engine-core @0x8014C0C8 (src/shared) */ - -DEFINE_func_8014C118() /* dedup: shared engine-core @0x8014C118 (src/shared) */ - -DEFINE_func_8014C168() /* dedup: shared engine-core @0x8014C168 (src/shared) */ - - - -extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); -extern u8 D_8018EE54[]; - -void func_8014C1A0(s32 arg0, s32 arg1) { - func_8014C1C8(arg0, arg1, D_8018EE54); -} - - -DEFINE_func_8014C1C8() /* dedup: shared engine-core @0x8014C1C8 (src/shared) */ - -DEFINE_func_8014C278() /* dedup: shared engine-core @0x8014C278 (src/shared) */ - -DEFINE_func_8014C2B0() /* dedup: shared engine-core @0x8014C2B0 (src/shared) */ - -DEFINE_func_8014C308() /* dedup: shared engine-core @0x8014C308 (src/shared) */ - -DEFINE_func_8014C3A4() /* dedup: shared engine-core @0x8014C3A4 (src/shared) */ - -DEFINE_func_8014C3D0() /* dedup: shared engine-core @0x8014C3D0 (src/shared) */ - -DEFINE_func_8014C43C() /* dedup: shared engine-core @0x8014C43C (src/shared) */ - - -/* §37/§73/§124 asm-label alias: the fleet canon declares this `extern void` (engine_core.h, inside 8 - * DEFINE_func_* macros); the byte-true body must return s32. Aliasing the C name sidesteps the - * RETURN-axis conflict with no header edit. This line MUST travel with the body. */ -s32 aF8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4) __asm__("func_8014C4AC"); - -DEFINE_func_8014C4AC() /* dedup: shared engine-core @0x8014C4AC (src/shared) */ - - - -DEFINE_func_8014C568() /* dedup: shared engine-core @0x8014C568 (src/shared) */ - - -DEFINE_func_8014C59C() /* dedup: shared engine-core @0x8014C59C (src/shared) */ - - -extern u8 D_8018EE5C; -extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); - -s16 func_8014C5D0(s32 a0, s32 a1) { - return func_8014C5FC(a0, a1, &D_8018EE5C); -} - - -DEFINE_func_8014C5FC() /* dedup: shared engine-core @0x8014C5FC (src/shared) */ - -DEFINE_func_8014C6AC() /* dedup: shared engine-core @0x8014C6AC (src/shared) */ - -DEFINE_func_8014C6C0() /* dedup: shared engine-core @0x8014C6C0 (src/shared) */ - -DEFINE_func_8014C6D0() /* dedup: shared engine-core @0x8014C6D0 (src/shared) */ - -DEFINE_func_8014C6E0() /* dedup: shared engine-core @0x8014C6E0 (src/shared) */ - - - -// @class: schedule -// @stuck: none — MATCH (match_one 91/91) -// -// Levers used (all byte-gated on ov_SC07_006): -// 1. §struct 8-byte alignment-1 struct copy `*(M8_8014C6F4*)(a+0x164) = *(M8_8014C6F4*)(p+0x10)` -// -> the lwl/lwr,lwl/lwr,swl/swr,swl/swr block (engine_types.h M8_xxx convention). -// 2. §17 base-pointer cache: `u8 *p = D_80078E78;` (NOT a direct D_80078E78[0x49]) so gcc pins -// the base into callee-saved $s1 and hoists the la into the prologue (live across the jal). -// 3. §17 register pins: the search result `e` MUST be $v0 and the limit `lim` $v1, else -// local-alloc swaps the loop IV/limit pair ($v1<->$a0) and coalesces `e` into the IV. -// 4. DELAY-SLOT lever (new): writing the compare constant as its own pre-loop statement -// (`want = 0x22;`) instead of the literal `0x22` inside the loop test. With the literal, -// loop.c hoists the `li $a1,0x22` into the loop PREHEADER (after the duplicated entry test), -// so reorg.c's guard branch has nothing local to take and instead COPIES the branch-target -// insn (`addu $v0,$zero,$zero`) into its delay slot and redirects past it — a +1 shift that -// also lets the loop-back branch steal the same insn (nop -> move). Materialising the -// constant in the block BEFORE the entry test makes fill_simple_delay_slots take it from -// the preceding insns, reproducing `beqz $v0,.L8014C7F4 / addiu $a1,$zero,0x22` and leaving -// the loop-back delay slot a nop. `want` needs no pin — gcc lands it in $a1 on its own. - - -DEFINE_func_8014C6F4() /* dedup: shared engine-core @0x8014C6F4 (src/shared) */ - - -DEFINE_func_8014C860() /* dedup: shared engine-core @0x8014C860 (src/shared) */ - -DEFINE_func_8014C88C() /* dedup: shared engine-core @0x8014C88C (src/shared) */ - - -DEFINE_func_8014C8C8() /* dedup: shared engine-core @0x8014C8C8 (src/shared) */ - - -DEFINE_func_8014C8F0() /* dedup: shared engine-core @0x8014C8F0 (src/shared) */ - -DEFINE_func_8014C918() /* dedup: shared engine-core @0x8014C918 (src/shared) */ - -DEFINE_func_8014C968() /* dedup: shared engine-core @0x8014C968 (src/shared) */ - -DEFINE_func_8014C978() /* dedup: shared engine-core @0x8014C978 (src/shared) */ - -DEFINE_func_8014C98C() /* dedup: shared engine-core @0x8014C98C (src/shared) */ - -DEFINE_func_8014C99C() /* dedup: shared engine-core @0x8014C99C (src/shared) */ - -DEFINE_func_8014CA00() /* dedup: shared engine-core @0x8014CA00 (src/shared) */ - -DEFINE_func_8014CA14() /* dedup: shared engine-core @0x8014CA14 (src/shared) */ - -DEFINE_func_8014CA70() /* dedup: shared engine-core @0x8014CA70 (src/shared) */ - -DEFINE_func_8014CA88() /* dedup: shared engine-core @0x8014CA88 (src/shared) */ - -DEFINE_func_8014CAE4() /* dedup: shared engine-core @0x8014CAE4 (src/shared) */ - -DEFINE_func_8014CAFC() /* dedup: shared engine-core @0x8014CAFC (src/shared) */ - -DEFINE_func_8014CB0C() /* dedup: shared engine-core @0x8014CB0C (src/shared) */ - -DEFINE_func_8014CB1C() /* dedup: shared engine-core @0x8014CB1C (src/shared) */ - -DEFINE_func_8014CB2C() /* dedup: shared engine-core @0x8014CB2C (src/shared) */ - -DEFINE_func_8014CB58() /* dedup: shared engine-core @0x8014CB58 (src/shared) */ - -DEFINE_func_8014CB68() /* dedup: shared engine-core @0x8014CB68 (src/shared) */ - -DEFINE_func_8014CB7C() /* dedup: shared engine-core @0x8014CB7C (src/shared) */ - -DEFINE_func_8014CB8C() /* dedup: shared engine-core @0x8014CB8C (src/shared) */ - -DEFINE_func_8014CB9C() /* dedup: shared engine-core @0x8014CB9C (src/shared) */ - -DEFINE_func_8014CBD8() /* dedup: shared engine-core @0x8014CBD8 (src/shared) */ - -DEFINE_func_8014CBE8() /* dedup: shared engine-core @0x8014CBE8 (src/shared) */ - -DEFINE_func_8014CBF8() /* dedup: shared engine-core @0x8014CBF8 (src/shared) */ - -DEFINE_func_8014CC28() /* dedup: shared engine-core @0x8014CC28 (src/shared) */ - - -extern void func_8014CD0C(u8 *a0); - -void func_8014CCB4(void) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014CD0C\n" - "lui $at, %%hi(D_801E5BA8)\n" - "sw $v0, %%lo(D_801E5BA8)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E5BA8)\n" - "lw $v0, %%lo(D_801E5BA8)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014CD0C() /* dedup: shared engine-core @0x8014CD0C (src/shared) */ - -DEFINE_func_8014CD80() /* dedup: shared engine-core @0x8014CD80 (src/shared) */ - -DEFINE_func_8014CF04() /* dedup: shared engine-core @0x8014CF04 (src/shared) */ - - - -extern void func_8014D0A4(s32 a0); - -void func_8014D04C(void) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014D0A4\n" - "lui $at, %%hi(D_801E5BA8)\n" - "sw $v0, %%lo(D_801E5BA8)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E5BA8)\n" - "lw $v0, %%lo(D_801E5BA8)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014D0A4() /* dedup: shared engine-core @0x8014D0A4 (src/shared) */ - - -DEFINE_func_8014D12C() /* dedup: shared engine-core @0x8014D12C (src/shared) */ - - - -DEFINE_func_8014D2A0() /* dedup: shared engine-core @0x8014D2A0 (src/shared) */ - - - -extern void func_8014D438(s32 a0); - -void func_8014D3E0(s32 _arg0) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014D438\n" - "lui $at, %%hi(D_801E5BA8)\n" - "sw $v0, %%lo(D_801E5BA8)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E5BA8)\n" - "lw $v0, %%lo(D_801E5BA8)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014D438() /* dedup: shared engine-core @0x8014D438 (src/shared) */ - -DEFINE_func_8014D4C0() /* dedup: shared engine-core @0x8014D4C0 (src/shared) */ - - -DEFINE_func_8014D610() /* dedup: shared engine-core @0x8014D610 (src/shared) */ - - - -extern void func_8014D790(s32 a0); - -void func_8014D738(void) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014D790\n" - "lui $at, %%hi(D_801E5BA8)\n" - "sw $v0, %%lo(D_801E5BA8)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E5BA8)\n" - "lw $v0, %%lo(D_801E5BA8)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014D790() /* dedup: shared engine-core @0x8014D790 (src/shared) */ - -extern void func_8012AAAC(void *arg0); - -// @class: schedule -// @stuck: none — MATCH (304/304), symcheck SYMS-OK 12/12, and the whole-TU cc1 stage now compiles CLEAN -// -// ══════════════════════════════════════════════════════════════════════════════ -// SESSION-22 RE-DERIVATION + THE ROOT-CAUSE FIX FOR THE "ASSEMBLER-STAGE" FAILURE -// ══════════════════════════════════════════════════════════════════════════════ -// The SESSION-21 draft did reach match_one MATCH (re-verified this session, 304/304) -// and symcheck SYMS-OK — but the whole-binary build died with an opaque `Error 33` -// that was logged as "an ASSEMBLER-stage failure I did not finish diagnosing". -// -// IT IS NOT AN ASSEMBLER FAILURE. Stage-by-stage isolation of the real pipeline -// (cpp | cc1 | maspsx | as) over a scratch copy of src/ov_SC01_077/ov_SC01_077_after.c -// with this function spliced in place of its INCLUDE_ASM gives: -// cpp rc=0 -// cc1 rc=33 <-- ".../tu.c:1901: conflicting types for `Ent'" -// "src/shared/engine_types.h:434: previous declaration of `Ent'" -// maspsx rc=0 -// as rc=0 (only benign "used $at without .set noat" warnings) -// `33` is CC1's exit code, surfaced by the recipe's `set -o pipefail` (Makefile:560). -// Because `as` is the LAST stage in that pipe, make attributes the failure to the -// assembler — the same misread that made func_8012AAAC's "opaque Error 33" look -// assembler-shaped until it was isolated stage by stage. -// -// ROOT CAUSE: the draft declared `typedef struct Ent { ... } Ent;` at FILE scope. -// `Ent` is already a shared engine type (src/shared/engine_types.h:434, -// typedef struct { u16 guard; u16 pad; u16 field; u8 rest[14]; } Ent; -// a 20-byte struct), pulled into every overlay TU through -// src/ov_SC01_077/../shared/engine_core.h. gcc-2.7.2 rejects the redefinition -// outright (an ERROR, not the "type mismatch with previous external decl" -// WARNING that the rest of this TU is full of), so cc1 aborts. -// -// THE FIX, and why this shape: all three helper types are now declared at BLOCK -// scope inside func_8014D820 itself. That is strictly better than renaming to -// `Ent_8014D820` at file scope, because this function is an h_seq family EXEMPLAR -// with 138 members: a file-scope type name has to stay unique against 138 distinct -// overlay TUs *and* against whatever engine_types.h grows next, while a block-scope -// typedef can never collide with anything, in any TU, ever. It also matches the -// fleet convention — src/shared/engine_core.h contains ZERO `typedef struct` -// (all 0 of them); every DEFINE_ macro body uses engine_types.h types or local ones. -// Typedefs emit no code and create no allocno, so the move is byte-neutral: -// re-verified MATCH (304 ins) after the change, and the local DECLARATION ORDER -// below is untouched (§76 — declaration order is the dominant regalloc lever here). -// -// ══════════════════════════════════════════════════════════════════════════════ -// THE BODY (SESSION-21 derivation, each lever re-verified this session) -// ══════════════════════════════════════════════════════════════════════════════ -// func_8014D820 (304 ins, ov_SC01_077, h_seq family exemplar, 138 members). -// The whole residual off the SESSION-18 close=9 seed was a sched1 PERMUTATION -// inside ONE basic block (idx 79..101, the pos/desc set-up between the `slti 0x400` -// guard and the `currentLocationId` test): identical multiset of insns, identical -// register assignment, wrong positions. §66d-5 exactly — classed WIDTH [structural] -// at every waypoint and not structural at all. -// -// The lever (reusable): that block is 12 statements over a small dependency poset -// (load x0/y0/z0 -> add -> store pos.* / desc.*), so source ORDER is the only -// control and the space of linear extensions is enumerable. A dependency-respecting -// sweep found MATCH at -// x0; pos.x; y0; pos.y; z0; tx; pos.z; tz; desc.x; desc.z; ty; desc.y -// i.e. all three loads and both pos stores first, then the two adds, then the desc -// stores, with the y accumulator (`ty`) computed LAST. No pin, no barrier, no -// permuter run. Eleven hand attempts on this window (SESSION-18) were inert or -// worse — hand-reading a 12-statement schedule permutation is the wrong tool; -// brute-forcing the linear extensions is the right one. -// -// Load-bearing levers (each re-verified by removal this session): -// * the `a0v` launder (`__asm__("" : "=r"(a0v) : "0"(a0))`) — drop => 9 mismatched -// * the `a2` $7 pin — drop => 5 -// * the `a2x -> a2` launder (vs a plain copy) — drop => 1 -// * `new_var3` (the s16 stash of dx feeding ratan2) — drop => 2 -// * `new_var2` (the desc.y + 0x10 accumulator) — drop => 2 -// The `a2` pin's live range ENDS before the first `jal` (last use is -// `desc.z = a2[2] - a1[2]`), so it is §42e-CORRECTION / §74-safe to propagate. -// -// SYMBOLS (§58 rule 1/2): all five data externs use the canonical splat spelling and -// the engine_core.h type — `u8 D_801202A0[]`, `u8 D_801152A8[]`, `s16 D_801152AC`, -// `u8 D_8018EE64[]`, `s16 currentLocationId`. symcheck: SYMS-OK, 12 symbols agree. -// -// The one deliberate divergence (§27 step 2 / rule 3): func_80135A4C's canonical -// extern is 4-arg but this call site sets only $a0-$a2, so the canonical decl is -// kept verbatim (it is also the TU's own spelling at ov_SC01_077_after.c:1651/1709) -// and the ARITY is cast at the call site. -// -// BANKING NOTE for the orchestrator (carried forward from SESSION-18, still true): -// 1 `self_decl_hdr` axis remains — DEFINE_func_8014D790's body declares -// func_8014D820, so that macro in engine_core.h needs the §85 return-axis widen -// (already applied). With the `Ent` collision gone the TU's cc1 stage is clean. - - - - - - - - - - -extern s16 currentLocationId; -extern s32 ratan2(s32 a0, s32 a1); -extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); -extern s32 func_80012A60(s32 a0, s32 a1); -extern void func_800139C8(s32 a0, void *a1, void *a2); -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014DCE0(s32 a0, s32 a1, s32 a2); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -s32 func_8014D820(s32 a0, u16 *a1, u16 *a2x) -{ - - extern u8 D_801202A0[]; - extern u8 D_8018EE64[]; - extern u8 D_801152A8[]; - extern s16 D_801152AC; - /* BLOCK-SCOPE types — see the header note. `Ent` at file scope collides with - src/shared/engine_types.h:434 and kills the TU's cc1 stage (exit 33). */ - typedef struct - { - u16 x; - u16 y; - u16 z; - u16 w; - } V4; - typedef struct EntD820 - { - u16 f0; - u16 f2; - u16 f4; - u16 x; - u16 f8; - u16 y; - u16 fC; - u16 z; - u8 p10[0x10]; - s32 f20; - u8 p24[0x34]; - s32 f58; - u16 f5C; - u16 f5E; - u8 p60[0x10C - 0x60]; - } Ent; - int new_var2; - s16 new_var3; -register u16 *a2 __asm__("$7"); - V4 out[3]; - V4 pos; - Desc desc; - Ent *ent; - Ent *p; - s32 dx; - s32 dz; - s32 ex; - s32 ez; - s32 r1; - s32 r2; - s32 r3; - s32 ang; - s32 x0; - s32 y0; - s32 z0; - s32 tx; - s32 tz; - s32 ty; - s32 r; - s32 t; - s32 u; - s32 a0v; -__asm__ __volatile__("" : "=r"(a2) : "0"(a2x)); - t = a2[0]; - u = a1[0]; - dx = t - u; -__asm__ __volatile__("" : "=r"(a0v) : "0"(a0)); - new_var3 = (s16) dx; - t = a2[2]; - u = a1[2]; - dz = t - u; - if (((s16) (dx | dz)) == 0) - { - goto fail; - } - desc.x = dx; - desc.y = a2[1] - a1[1]; - desc.z = a2[2] - a1[2]; - ent = *((Ent **) (a0v + 0x170)); - if (ent->f0 == 0) - { - goto fail; - } - if ((ent->f5C & 0x1000) == 0) - { - goto fail; - } - if (ent->f58 == 0) - { - goto fail; - } - if (((s32 (*)(s32, s32, s32)) func_80135A4C)(ent->f20, ent->f58, (s32) a1) == 0) - { - goto fail; - } - ex = ent->x - (*((u16 *) (a0v + 6))); - ez = ent->z - (*((u16 *) (a0v + 0xE))); - r1 = (s16) ratan2((s16) dz, new_var3); - r2 = (s16) ratan2((s16) ez, (s16) ex); - r3 = (s16) func_80012A60(r1, r2); - if (0x400 <= r3) - { - goto fail; - } - desc.f20 = 0; - desc.f1C = 0; - desc.f18 = 0; - x0 = ent->x; - pos.x = x0; - y0 = ent->y; - pos.y = y0; - z0 = ent->z; - tx = x0 + desc.x; - pos.z = z0; - tz = z0 + desc.z; - desc.x = tx; - desc.z = tz; - ty = (y0 + desc.y) + 8; - desc.y = ty; - if (currentLocationId != 0x3008) - { - for (p = (Ent *) D_801202A0; p < (Ent *) (D_801202A0 + 0x6480); p++) - { - if (p == ent) - { - continue; - } - if (p->f0 == 0) - { - continue; - } - if (p->f5C == 0) - { - continue; - } - if (p->f58 == 0) - { - continue; - } - func_80135888(p->f20, p->f58, (s32) (&pos), (s32) (&desc)); - } - - } - else - { - ang = ratan2(((s16) x0) - ((s16) tx), ((s16) z0) - ((s16) tz)) & 0xFFF; - func_800139C8(ang, D_8018EE64, &out[0]); - func_800139C8((s16) (ang - 0x155), D_8018EE64, &out[1]); - func_800139C8((s16) (ang + 0x155), D_8018EE64, &out[2]); - out[0].x += pos.x; - out[0].y = pos.y; - out[0].z += pos.z; - out[1].x += pos.x; - out[1].y = pos.y; - out[1].z += pos.z; - out[2].x += pos.x; - out[2].y = pos.y; - out[2].z += pos.z; - for (p = (Ent *) D_801202A0; p < (Ent *) (D_801202A0 + 0x6480); p++) - { - if (p == ent) - { - continue; - } - if (p->f0 == 0) - { - continue; - } - if (p->f5C == 0) - { - continue; - } - if (p->f58 == 0) - { - continue; - } - if (func_8014DCE0((s32) p, (s32) (&pos), (s32) (&out[0])) != 0) - { - __builtin_memcpy((void *) ((s32) (&desc)), (void *) ((s32) (&pos)), 8); - } - } - - } - r = func_80133784(0, &pos, (s32) (&desc)); - if ((r == 0) || ((r == 0x2000) && (((*(u16 *) D_801152A8) | ((u16) D_801152AC)) == 0))) - { - ent->x = desc.x - desc.f18; - ent->y = desc.y; - ent->z = desc.z - desc.f20; - desc.x -= pos.x; - desc.y -= pos.y; - desc.z -= pos.z; - *((u16 *) (a0v + 6)) = a1[0] + desc.x; - new_var2 = desc.y; - new_var2 = new_var2 + 0x10; - *((u16 *) (a0v + 0xA)) = a1[1] + new_var2; - *((u16 *) (a0v + 0xE)) = a1[2] + desc.z; - } - else - { - *((u16 *) (a0v + 6)) = a1[0]; - *((u16 *) (a0v + 0xA)) = a1[1] + 0x10; - *((u16 *) (a0v + 0xE)) = a1[2]; - } - return 1; - fail: - *((s32 *) (a0v + 0x170)) = 0; - - return 0; -} - - -DEFINE_func_8014DCE0() /* dedup: shared engine-core @0x8014DCE0 (src/shared) */ - - -DEFINE_func_8014DD8C() /* dedup: shared engine-core @0x8014DD8C (src/shared) */ - - - -extern void func_8014DF94(s32 arg0); - -void func_8014DF3C(void) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014DF94\n" - "lui $at, %%hi(D_801E5BA8)\n" - "sw $v0, %%lo(D_801E5BA8)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E5BA8)\n" - "lw $v0, %%lo(D_801E5BA8)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014DF94() /* dedup: shared engine-core @0x8014DF94 (src/shared) */ - -DEFINE_func_8014E048() /* dedup: shared engine-core @0x8014E048 (src/shared) */ - -DEFINE_func_8014E284() /* dedup: shared engine-core @0x8014E284 (src/shared) */ - - -extern void func_8014E48C(s32 a0); - -void func_8014E434(void) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014E48C\n" - "lui $at, %%hi(D_801E5BA8)\n" - "sw $v0, %%lo(D_801E5BA8)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E5BA8)\n" - "lw $v0, %%lo(D_801E5BA8)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014E48C() /* dedup: shared engine-core @0x8014E48C (src/shared) */ - -DEFINE_func_8014E514() /* dedup: shared engine-core @0x8014E514 (src/shared) */ - -// — the guard makes $v1, CSE turns the in-body `e = p + 0x6480` into a copy of it, and -// regalloc does not coalesce (gcc-2.7.2 has no coalescing, regalloc.md K8). The back edge -// then uses the register ($s5), NOT a rematerialised %hi/%lo(D_80126720) as in -// func_8014CF04 — so do NOT reuse that sibling's absolute-bound half here. -// -// (2) TWO INDUCTION VARIABLES, secondary base +0xE. `q = p + 0xE` carries every access except -// the two that use the entry pointer itself (`*(u16 *)p` and `*(u8 **)(a0+0x17C) = p`): -// offsets -0x8 / 0x0 / 0x12 / 0x4A / 0x4E off q == 0x6 / 0xE / 0x20 / 0x58 / 0x5C off p. -// A single-pointer spelling is NOT equivalent: gcc emits ONE base and the function comes -// out 56 ins (verified). The negative displacement is the tell that the second pointer is -// in the source, not a compiler-made giv. -// -// (3) REGISTER PINS ($16/$17) — the one non-obvious lever, and it is a genuine density -// knife-edge (regalloc.md K2 / §RC-15). Unpinned, the .lreg reads -// p: 9 refs / 24 insns -> floor_log2(9)*9/24 = 1.125 -// q: 8 refs / 22 insns -> floor_log2(8)*8/22 = 1.091 -// so p wins $s0 by ~3% and the whole function comes out with p/q SWAPPED (17 mismatches, -// every one of them a bare $s0<->$s1 rename). The target wants q in $s0. Decl-order swap -// does nothing (ties are not what decides it — p genuinely out-scores q). Rather than -// hunt a +1-ref anchor (§RC-11 `#APP` would sit next to three delay slots that maspsx -// fills: the `beqz $a1` slot, the `jal` slot and the `bnez` slot), pin both: -// register u8 *p __asm__("$17"); register u8 *q __asm__("$16"); -// Both are callee-saved, so the live-across-`jal` range is §42e/§74-safe by construction -// (the ov_SC03_099 func_8014D820 caveat only applies to caller-saved pins). Everything -// else falls out naturally: a0->$s2, a1->$s3, a2->$s4, e->$s5. -// -// (4) `t = *(s32 *)(q + 0x4A)` is loaded ONCE and reused as arg1 of func_80135888 — that is -// why `lw $a1, 0x4A($s0)` sits at the zero-test rather than at the call. -// -// The func_80135888 decl below is byte-compatible with the one this TU already carries at -// ov_SC01_077_after.c:2303, so it is not a second conflict axis. - -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); - -/* §37/§124 asm-label alias: the fleet canon declares this `extern void` (engine_core.h:13392, - * inside DEFINE_func_8014E48C()); the byte-true body must return s32. Aliasing the C name - * sidesteps the RETURN-axis conflict with no header edit. This line MUST travel with the body. */ -s32 aF8014E5B4(s32 a0, void *a1, void *a2) __asm__("func_8014E5B4"); - -DEFINE_func_8014E5B4() /* dedup: shared engine-core @0x8014E5B4 (src/shared) */ - - - -extern void func_8014E6F8(struct SubE6F8 *a0); - -void func_8014E6A0(void) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014E6F8\n" - "lui $at, %%hi(D_801E5BA8)\n" - "sw $v0, %%lo(D_801E5BA8)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E5BA8)\n" - "lw $v0, %%lo(D_801E5BA8)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014E6F8() /* dedup: shared engine-core @0x8014E6F8 (src/shared) */ - -DEFINE_func_8014E790() /* dedup: shared engine-core @0x8014E790 (src/shared) */ - -DEFINE_func_8014E83C() /* dedup: shared engine-core @0x8014E83C (src/shared) */ - - -void func_8014E934(s32 _arg0) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014E98C\n" - "lui $at, %%hi(D_801E5BA8)\n" - "sw $v0, %%lo(D_801E5BA8)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E5BA8)\n" - "lw $v0, %%lo(D_801E5BA8)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014E98C() /* dedup: shared engine-core @0x8014E98C (src/shared) */ - -DEFINE_func_8014EA4C() /* dedup: shared engine-core @0x8014EA4C (src/shared) */ - - - -// @class: other -// @stuck: none — MATCH (handwritten full inline-asm scratchpad-stack-switch wrapper; no trailing .set reorder — that adds a stray epilogue nop) -/* - * HANDWRITTEN scratchpad-stack-switch wrapper: temporarily repoints $sp into the - * D-cache scratchpad stack held at *(0x1F8003FC), calls func_8014ED80, stashes the - * return value through D_801E5BA8, restores $sp and returns it. - * Manipulating $sp is not expressible in C; full inline asm (manages its own frame). - */ -extern s32 func_8014ED80(struct SubED80 *a0); -extern int D_801E5BA8; - -void func_8014ED28(s32 _arg0) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014ED80\n" - "lui $at, %%hi(D_801E5BA8)\n" - "sw $v0, %%lo(D_801E5BA8)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E5BA8)\n" - "lw $v0, %%lo(D_801E5BA8)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014ED80() /* dedup: shared engine-core @0x8014ED80 (src/shared) */ - -DEFINE_func_8014EE14() /* dedup: shared engine-core @0x8014EE14 (src/shared) */ - - -extern s32 func_8014F24C(struct SubF24C *a0); - -void func_8014F1F4(void) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014F24C\n" - "lui $at, %%hi(D_801E5BA8)\n" - "sw $v0, %%lo(D_801E5BA8)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E5BA8)\n" - "lw $v0, %%lo(D_801E5BA8)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014F24C() /* dedup: shared engine-core @0x8014F24C (src/shared) */ - -DEFINE_func_8014F2E0() /* dedup: shared engine-core @0x8014F2E0 (src/shared) */ - -DEFINE_func_8014F3E8() /* dedup: shared engine-core @0x8014f3e8 (src/shared) */ - - - -extern s32 func_8014F4C0(); - -s32 func_8014F468(void) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014F4C0\n" - "lui $at, %%hi(D_801E5BAC)\n" - "sw $v0, %%lo(D_801E5BAC)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E5BAC)\n" - "lw $v0, %%lo(D_801E5BAC)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014F4C0() /* dedup: shared engine-core @0x8014F4C0 (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH (22 ins, relocation-masked). Handwritten scratchpad-stack-switch -// wrapper, full inline asm like DEFINE_func_80155FF8. NOTE: do NOT write an explicit -// "nop" after "jal func_8014F74C" — maspsx --aspsx-version=2.56 auto-fills the jal -// delay slot with a nop; an explicit one yields a double-nop (+1 ins). %hi/%lo must be -// escaped as %%hi/%%lo inside __asm__ (bare % is read as an operand placeholder). - -/* HANDWRITTEN scratchpad-stack-switch wrapper (same idiom as func_80155FF8 / - * func_80128564): temporarily repoints $sp into the D-cache scratchpad stack held - * at *(0x1F8003FC), calls func_8014F74C, stores its $v0 result to D_801E5BAC, then - * restores $sp and returns the stored value. Manipulating $sp is not expressible in - * C; full inline asm (manages its own frame). */ - -extern int func_8014F74C(); - -int func_8014F6F4(void) { - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014F74C\n" - "lui $at, %%hi(D_801E5BAC)\n" - "sw $v0, %%lo(D_801E5BAC)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E5BAC)\n" - "lw $v0, %%lo(D_801E5BAC)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014F74C() /* dedup: shared engine-core @0x8014F74C (src/shared) */ - - - -// @class: other -// @stuck: none — MATCH (full inline-asm $sp-switch trampoline w/ 0x40000 guard, jal func_8014FA70, stash D_801E5BAC; maspsx auto-fills jal delay slot) - -extern s32 func_8014FA70(s32 a0); -extern s32 D_801E5BAC; - -void func_8014FA04(s32 a0) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "sw $ra, 16($sp)\n" - "lw $v0, 68($a0)\n" - "lui $v1, 0x4\n" - "and $v0, $v0, $v1\n" - "bnez $v0, 1f\n" - "addu $v0, $zero, $zero\n" - "lui $a1, 0x1f80\n" - "ori $a1, $a1, 0x03fc\n" - "addu $t0, $a1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014FA70\n" - "lui $at, %%hi(D_801E5BAC)\n" - "sw $v0, %%lo(D_801E5BAC)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E5BAC)\n" - "lw $v0, %%lo(D_801E5BAC)($v0)\n" - "1:\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014FA70() /* dedup: shared engine-core @0x8014FA70 (src/shared) */ - -// @class: other -// @stuck: none — MATCH (22 ins, relocation-masked). Handwritten scratchpad-stack-switch -// trampoline: byte-identical to the matched in-TU sibling func_8014F6F4 (line ~2005), -// differing ONLY in the callee (func_8014FC18 vs func_8014F74C). Full inline asm manages -// its own frame; both the callee and the D_801E5BAC global live inside the asm, so NO C -// externs are declared — this sidesteps the canonical-sig-layer reconcile that CC1_FAILed -// the register-asm draft (func_8014FC18/D_801E5BAC are declared elsewhere in the TU). -// maspsx --aspsx-version=2.56 auto-fills the jal delay slot with a nop, so do NOT write an -// explicit nop after `jal` (double-nop = +1 ins); %hi/%lo escaped as %% inside __asm__. -// gcc emits only the `jr $ra; nop` epilogue (leaf, no locals it can see) → exactly 22 ins. -s32 func_8014FBC0() { - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014FC18\n" - "lui $at, %%hi(D_801E5BAC)\n" - "sw $v0, %%lo(D_801E5BAC)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E5BAC)\n" - "lw $v0, %%lo(D_801E5BAC)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - - -DEFINE_func_8014FC18() /* dedup: shared engine-core @0x8014FC18 (src/shared) */ - - -extern int func_8014FD54(int param_1); - -void func_8014FCFC(void) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014FD54\n" - "lui $at, %%hi(D_801E5BA8)\n" - "sw $v0, %%lo(D_801E5BA8)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E5BA8)\n" - "lw $v0, %%lo(D_801E5BA8)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014FD54() /* dedup: shared engine-core @0x8014FD54 (src/shared) */ - -DEFINE_func_8014FDF4() /* dedup: shared engine-core @0x8014FDF4 (src/shared) */ - -DEFINE_func_8014FE60() /* dedup: shared engine-core @0x8014FE60 (src/shared) */ - - - - -DEFINE_func_8014FFDC() /* dedup: shared engine-core @0x8014FFDC (src/shared) */ - - -DEFINE_func_80150150() /* dedup: shared engine-core @0x80150150 (src/shared) */ - -DEFINE_func_80150170() /* dedup: shared engine-core @0x80150170 (src/shared) */ - - -DEFINE_func_801502EC() /* dedup: shared engine-core @0x801502EC (src/shared) */ - - -DEFINE_func_80150460() /* dedup: shared engine-core @0x80150460 (src/shared) */ - - -extern void func_801504D8(u16 *a0); - -s32 func_80150480(s32 _arg0) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_801504D8\n" - "lui $at, %%hi(D_801E5BA8)\n" - "sw $v0, %%lo(D_801E5BA8)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E5BA8)\n" - "lw $v0, %%lo(D_801E5BA8)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_801504D8() /* dedup: shared engine-core @0x801504D8 (src/shared) */ - -DEFINE_func_80150528() /* dedup: shared engine-core @0x80150528 (src/shared) */ - -DEFINE_func_801505FC() /* dedup: shared engine-core @0x801505FC (src/shared) */ - - - -s32 func_801506A4(s32 arg0, s32 arg1) { - extern void func_80150820(int, unsigned short); - extern void func_8015086C(int); - extern unsigned short D_8018EE74[]; - extern unsigned short D_8018EE7C[]; - extern unsigned short D_8018EE84[]; - - int mode; - - mode = ((struct Ent_801506A4 *)arg1)->unk0; - ((struct Ent_801506A4 *)arg1)->unk5C |= 1; - switch (mode) { - case 0x31: - ((void(*)(int))func_80147324)(0x452); - ((void(*)(int, unsigned))func_8014ADA8)(((int)arg0), D_8018EE74[((struct Ent_801506A4 *)arg1)->unk70]); - ((void(*)(int, int, unsigned))func_8014ACE8)(((int)arg0), 3, D_8018EE74[((struct Ent_801506A4 *)arg1)->unk70]); - break; - case 0x32: - if ((*(unsigned short*)&D_80078EB4) != 0) { - ((void(*)(int))func_80147324)(0x452); - ((void(*)(int, unsigned, int))func_8014BB24)(((int)arg0), D_8018EE7C[((struct Ent_801506A4 *)arg1)->unk70], 1); - ((void(*)(int, int, unsigned))func_8014ACE8)(((int)arg0), 2, D_8018EE7C[((struct Ent_801506A4 *)arg1)->unk70]); - } - break; - case 0x33: - ((void(*)(int))func_80147324)(0x452); - func_80150820(((int)arg0), D_8018EE84[((struct Ent_801506A4 *)arg1)->unk70]); - break; - case 0xC5: - case 0x27B: - ((void(*)(int))func_80147324)(0x452); - func_8015086C(((int)arg0)); - break; - } -} - - - -DEFINE_func_80150820() /* dedup: shared engine-core @0x80150820 (src/shared) */ - -DEFINE_func_8015086C() /* dedup: shared engine-core @0x8015086C (src/shared) */ - -DEFINE_func_801508B4() /* dedup: shared engine-core @0x801508B4 (src/shared) */ - -DEFINE_func_801508F8() /* dedup: shared engine-core @0x801508F8 (src/shared) */ - - -extern S16 D_801E4DC8; -extern s32 D_8018EE8C; -extern s32 D_80126990; -extern s32 D_80126994; -extern u8 D_80126948[]; -extern s32 func_80021174(s32 a0, s32 a1); - -s32 func_8015094C(s32 param_1) { - struct { s32 x, mid, y; s32 _pad[9]; } arg; /* 0x30 @ 0x10 */ - S16 local; /* 0x10 @ 0x40 */ - s32 pad1[4]; /* 0x10 @ 0x50 */ - register u8 *cam __asm__("$17") = D_80126948; - s32 ret; - - local = D_801E4DC8; - arg.x = *(short *)(param_1 + 6); - arg.mid = D_80126994; - arg.y = *(short *)(param_1 + 0xe); - ret = func_80021174(D_8018EE8C, (s32)&arg); - if (ret == 0) { - { - short cur = *(short *)(param_1 + 6); - s32 diff = D_80126990 - cur; - s32 av = (diff < 0) ? -diff : diff; - if (av >= 5) { - *(short *)(param_1 + 6) = (diff >= 0) ? cur + 4 : cur - 4; - } - } - { - short cur = *(short *)(param_1 + 0xe); - s32 diff = *(s32 *)(cam + 0x50) - cur; - s32 av = (diff < 0) ? -diff : diff; - if (av >= 5) { - *(short *)(param_1 + 0xe) = (diff >= 0) ? cur + 4 : cur - 4; - } - } - (void)&pad1; - return 1; - } - return 0; -} - - - -extern s32 func_8014FA70(s32 a0); -extern void func_80015978(s32 a0, s32 *a1); -extern s32 D_801E5BAC; - -void func_80150A70(s32 a0) -{ - __asm__ __volatile__( - ".set\tnoreorder\n" - "addiu $sp, $sp, -24\n" - "sw $s0, 16($sp)\n" - "addu $s0, $a0, $zero\n" - "sw $ra, 20($sp)\n" - "lh $v1, 6($s0)\n" - "lh $v0, 136($s0)\n" - "nop\n" - "bne $v1, $v0, 1f\n" - "nop\n" - "lh $v1, 10($s0)\n" - "lh $v0, 138($s0)\n" - "nop\n" - "bne $v1, $v0, 1f\n" - "nop\n" - "lh $v1, 14($s0)\n" - "lh $v0, 140($s0)\n" - "nop\n" - "beq $v1, $v0, 3f\n" - "nop\n" - "1:\n" - "lw $v0, 68($s0)\n" - "lui $v1, 0x4\n" - "and $v0, $v0, $v1\n" - "bnez $v0, 2f\n" - "addiu $a0, $s0, 4\n" - "lui $a2, 0x1f80\n" - "ori $a2, $a2, 0x03fc\n" - "addu $t0, $a2, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014FA70\n" - "addu $a0, $s0, $zero\n" - "lui $at, %%hi(D_801E5BAC)\n" - "sw $v0, %%lo(D_801E5BAC)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "addiu $a0, $s0, 4\n" - "2:\n" - "jal func_80015978\n" - "addiu $a1, $s0, 136\n" - "3:\n" - "lw $ra, 20($sp)\n" - "lw $s0, 16($sp)\n" - "addiu $sp, $sp, 24\n" - ".set\treorder\n" - : : : "memory"); -} - - - -// @class: regalloc-order -// @stuck: none — MATCH (fn-ptr table; split idx-1 into a $v0-pinned temp to stop (idx-1)*4 strength-reducing into a -4 load offset AND land the subtract in $v0) - - -void func_80150B28(int param_1) { - - extern s32 D_800AE6B0; - extern void (*D_8018EE90[])(void); - u32 idx; - register u32 sub __asm__("$2"); - - if ((D_800AE6B0 & 0x80FFFFFF) == 0) { - idx = *(u16 *)(param_1 + 0x16C); - if (idx != 0 && idx < 0x26) { - sub = idx - 1; - D_8018EE90[sub](); - } - } - *(u16 *)(param_1 + 0x16C) = 0; -} - - -DEFINE_func_80150B9C() /* dedup: shared engine-core @0x80150B9C (src/shared) */ - -DEFINE_func_80150BA4() /* dedup: shared engine-core @0x80150BA4 (src/shared) */ - -DEFINE_func_80150BC8() /* dedup: shared engine-core @0x80150BC8 (src/shared) */ - -DEFINE_func_80150C48() /* dedup: shared engine-core @0x80150C48 (src/shared) */ - -DEFINE_func_80150CA0() /* dedup: shared engine-core @0x80150CA0 (src/shared) */ - -DEFINE_func_80150CC4() /* dedup: shared engine-core @0x80150CC4 (src/shared) */ - -DEFINE_func_80150CE4() /* dedup: shared engine-core @0x80150CE4 (src/shared) */ - -DEFINE_func_80150D04() /* dedup: shared engine-core @0x80150D04 (src/shared) */ - -DEFINE_func_80150D24() /* dedup: shared engine-core @0x80150D24 (src/shared) */ - -DEFINE_func_80150D44() /* dedup: shared engine-core @0x80150D44 (src/shared) */ - -DEFINE_func_80150D64() /* dedup: shared engine-core @0x80150D64 (src/shared) */ - -DEFINE_func_80150D84() /* dedup: shared engine-core @0x80150D84 (src/shared) */ - -DEFINE_func_80150DA4() /* dedup: shared engine-core @0x80150DA4 (src/shared) */ - -DEFINE_func_80150DC4() /* dedup: shared engine-core @0x80150DC4 (src/shared) */ - -DEFINE_func_80150DE4() /* dedup: shared engine-core @0x80150DE4 (src/shared) */ - -DEFINE_func_80150E04() /* dedup: shared engine-core @0x80150E04 (src/shared) */ - -DEFINE_func_80150E24() /* dedup: shared engine-core @0x80150E24 (src/shared) */ - -DEFINE_func_80150E44() /* dedup: shared engine-core @0x80150E44 (src/shared) */ - -DEFINE_func_80150E64() /* dedup: shared engine-core @0x80150E64 (src/shared) */ - -DEFINE_func_80150E84() /* dedup: shared engine-core @0x80150E84 (src/shared) */ - -DEFINE_func_80150EA4() /* dedup: shared engine-core @0x80150EA4 (src/shared) */ - -DEFINE_func_80150EC4() /* dedup: shared engine-core @0x80150EC4 (src/shared) */ - -DEFINE_func_80150F78() /* dedup: shared engine-core @0x80150F78 (src/shared) */ - -DEFINE_func_80150F80() /* dedup: shared engine-core @0x80150F80 (src/shared) */ - -DEFINE_func_80150FB4() /* dedup: shared engine-core @0x80150FB4 (src/shared) */ - -DEFINE_func_80150FD8() /* dedup: shared engine-core @0x80150FD8 (src/shared) */ - -DEFINE_func_80151014() /* dedup: shared engine-core @0x80151014 (src/shared) */ - -DEFINE_func_80151038() /* dedup: shared engine-core @0x80151038 (src/shared) */ - -DEFINE_func_80151070() /* dedup: shared engine-core @0x80151070 (src/shared) */ - -DEFINE_func_80151094() /* dedup: shared engine-core @0x80151094 (src/shared) */ - -DEFINE_func_801510B8() /* dedup: shared engine-core @0x801510B8 (src/shared) */ - -DEFINE_func_801510C0() /* dedup: shared engine-core @0x801510C0 (src/shared) */ - -DEFINE_func_801510C8() /* dedup: shared engine-core @0x801510C8 (src/shared) */ - -DEFINE_func_801510EC() /* dedup: shared engine-core @0x801510EC (src/shared) */ - -DEFINE_func_80151110() /* dedup: shared engine-core @0x80151110 (src/shared) */ - -DEFINE_func_80151130() /* dedup: shared engine-core @0x80151130 (src/shared) */ - -DEFINE_func_80151138() /* dedup: shared engine-core @0x80151138 (src/shared) */ - -DEFINE_func_8015115C() /* dedup: shared engine-core @0x8015115C (src/shared) */ - -DEFINE_func_80151164() /* dedup: shared engine-core @0x80151164 (src/shared) */ - -DEFINE_func_80151184() /* dedup: shared engine-core @0x80151184 (src/shared) */ - -DEFINE_func_801511A8() /* dedup: shared engine-core @0x801511A8 (src/shared) */ - -DEFINE_func_801511C4() /* dedup: shared engine-core @0x801511C4 (src/shared) */ - -DEFINE_func_801511E0() /* dedup: shared engine-core @0x801511E0 (src/shared) */ - -DEFINE_func_80151204() /* dedup: shared engine-core @0x80151204 (src/shared) */ - -DEFINE_func_80151238() /* dedup: shared engine-core @0x80151238 (src/shared) */ - -DEFINE_func_8015126C() /* dedup: shared engine-core @0x8015126C (src/shared) */ - - -/* func_80151664 — INTEGRATE lane. - * Fleet canon (src/shared/engine_core.h:2924, inside DEFINE_func_8015410C()) declares - * extern void func_80151664(void); - * so a `void func_80151664(s32 a0)` definition is `conflicting types` in every TU that - * expands that macro (ov_SC01_077_after.c:3910 does). Cookbook §73 PARAMS axis / §42: - * keep the canonical (void) signature and read the incoming argument through a $a0 pin. - * The decl below is reproduced verbatim so this file compiles the real conflict. */ -extern void func_80151664(void); - -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801470AC(s32 *a0); -extern void func_801472B4(void *a0); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80153C18(); /* fleet canon: K&R empty prototype (engine_core.h:75, :1682 defines it (void)); - * a prototyped (s32) decl is `conflicting types` in this TU. Arg still - * passes in $a0 under default promotions -> codegen unchanged. */ - -void func_80151664(void) { - register s32 a0v __asm__("$4"); - s32 s0; - s32 v1; - - s0 = a0v; - func_80154A74(s0, 0x11); - func_801553C0(s0); - func_801470AC((s32 *)s0); - func_801472B4((void *)s0); - v1 = *(s32 *)(s0 + 0x20); - *(s16 *)(s0 + 0x3E) = 0; - *(s16 *)(s0 + 0x40) = 0; - *(s16 *)(s0 + 0x42) = 0; - *(s8 *)(s0 + 0xDD) = 0; - *(s16 *)(s0 + 0x3C) = *(u16 *)(s0 + 0x3C) & 0xFFFE; - *(s16 *)(v1 + 0x10) = 0; - *(s16 *)(s0 + 0x60) = 0x1000; - *(s16 *)(s0 + 0x62) = 0x1000; - *(s16 *)(s0 + 0x64) = 0x1000; - func_801477E8((s32 *)s0, 0); - func_80153C18(s0); -} - - -DEFINE_func_801516F0() /* dedup: shared engine-core @0x801516F0 (src/shared) */ - -DEFINE_func_8015173C() /* dedup: shared engine-core @0x8015173C (src/shared) */ - -DEFINE_func_80151780() /* dedup: shared engine-core @0x80151780 (src/shared) */ - -DEFINE_func_80151878() /* dedup: shared engine-core @0x80151878 (src/shared) */ - -DEFINE_func_80151880() /* dedup: shared engine-core @0x80151880 (src/shared) */ - -DEFINE_func_801518D8() /* dedup: shared engine-core @0x801518D8 (src/shared) */ - -DEFINE_func_80151924() /* dedup: shared engine-core @0x80151924 (src/shared) */ - - - -void func_80151944(void *a0) { - - extern void (*D_8018EF24[])(void); - D_8018EF24[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80151980() /* dedup: shared engine-core @0x80151980 (src/shared) */ - -DEFINE_func_801519C8() /* dedup: shared engine-core @0x801519C8 (src/shared) */ - -DEFINE_func_80151AE4() /* dedup: shared engine-core @0x80151AE4 (src/shared) */ - -DEFINE_func_80151B98() /* dedup: shared engine-core @0x80151B98 (src/shared) */ - -DEFINE_func_80151C54() /* dedup: shared engine-core @0x80151C54 (src/shared) */ - - -extern void (*D_8018EF34[])(void); - -void func_80151D24(void *a0) { - D_8018EF34[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80151D60() /* dedup: shared engine-core @0x80151D60 (src/shared) */ - -DEFINE_func_80151DB0() /* dedup: shared engine-core @0x80151DB0 (src/shared) */ - -DEFINE_func_80151E78() /* dedup: shared engine-core @0x80151E78 (src/shared) */ - -DEFINE_func_80151ECC() /* dedup: shared engine-core @0x80151ECC (src/shared) */ - -DEFINE_func_80151F38() /* dedup: shared engine-core @0x80151F38 (src/shared) */ - -DEFINE_func_80151FB4() /* dedup: shared engine-core @0x80151FB4 (src/shared) */ - - -extern void (*D_8018EF58[])(void); - -void func_80152058(void *a0) { - D_8018EF58[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80152094() /* dedup: shared engine-core @0x80152094 (src/shared) */ - - -extern void func_80019064(void *a0); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_80146CA0(void *a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474EC(s32 *a0); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80149020(s32 *a0); -extern void func_8014CBF8(void *a0); -extern int func_80151204(int arg, int a1); -extern u8 D_80062C04[]; -extern M2C_UNK D_8018EF48; - -void func_801520DC(s32 arg0) -{ - func_80019064(&D_80062C04); - func_80151204(arg0, M2C_FIELD(arg0, s16 *, 0xF2)); - func_80149020(arg0); - func_801472C8(arg0); - M2C_FIELD(arg0, s8 *, 0xDE) = 0x10; - func_80146DB8(arg0, &D_8018EF48); - func_801477E8(arg0, 0x40000); - func_8014CBF8(arg0); - func_801474EC(arg0); - func_80146A6C(0x10, arg0, M2C_FIELD(arg0, s16 *, 6), M2C_FIELD(arg0, s16 *, 0xA), (s32) M2C_FIELD(arg0, s16 *, 0xE), 0, 0); - func_80147324(0x441); - func_80146CA0(arg0); -} - - -DEFINE_func_80152194() /* dedup: shared engine-core @0x80152194 (src/shared) */ - -DEFINE_func_8015220C() /* dedup: shared engine-core @0x8015220C (src/shared) */ - -DEFINE_func_80152254() /* dedup: shared engine-core @0x80152254 (src/shared) */ - -DEFINE_func_801522CC() /* dedup: shared engine-core @0x801522CC (src/shared) */ - - - -extern void (*D_8018EF6C[])(void); - -void func_80152370(void *a0) { - D_8018EF6C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_801523AC() /* dedup: shared engine-core @0x801523AC (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (67 ins) - - -extern void func_80146E90(s32 *a0, s32 a1); -extern void func_80019064(void *a0); -extern int func_80151204(int arg, int a1); -extern s32 func_80012A60(s32 a0, s32 a1); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_80149020(s32 *a0); -extern void func_8001382C(s32 a0, void *a1, void *a2); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80147324(s32 arg0); -extern void func_80146CA0(void *a0); - -extern u8 D_80062C04[]; -extern M2C_UNK D_800D5880; -extern s32 D_800D58AC; -extern u8 D_8018EF78[]; - -void func_801523F4(s32 arg0) -{ - s32 pad[4]; - s32 buf[4]; - register s32 s0a __asm__("$16"); /* $s0 = buf */ - register s32 s2a __asm__("$18") = (s32)&D_8018EF78; /* $s2 = &D_8018EF78 */ - - ((void (*)(s32, s32))func_80146E90)(arg0, 0); - func_80019064(&D_80062C04); - ((void (*)(s32, s32))func_80151204)(arg0, *(s16 *)(arg0 + 0xF2)); - if ((s16)func_80012A60((s32)*(s16 *)(*(s32 *)(arg0 + 0x20) + 0x12), - (s32)*(s16 *)(arg0 + 0xF4)) >= 0x401) { - ((void (*)(s32, s32))func_80154274)(arg0, (s32)&D_800D5880); - } else { - ((void (*)(s32, s32))func_80154274)(arg0, (s32)&D_800D58AC); - } - func_80154A74(arg0, 0x16); - ((void (*)(s32))func_80149020)(arg0); - s0a = (s32)buf; - ((void (*)(s32, s32, s32))func_8001382C)((*(u16 *)(arg0 + 0xF4) - *(u16 *)(*(s32 *)(arg0 + 0x20) + 0x12)) & 0xFFF, - s2a, s0a); - ((void (*)(s32, s32))func_80146DB8)(arg0, s0a); - ((void (*)(s32, s32))func_801477E8)(arg0, *(s32 *)(s2a + 0xC)); - func_80147324(0x451); - ((void (*)(s32))func_80146CA0)(arg0); - (void)pad; -} - - -DEFINE_func_80152500() /* dedup: shared engine-core @0x80152500 (src/shared) */ - -DEFINE_func_801525F4() /* dedup: shared engine-core @0x801525F4 (src/shared) */ - - -extern void (*D_8018EF88[])(void); - -void func_80152698(void *a0) { - D_8018EF88[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_801526D4() /* dedup: shared engine-core @0x801526D4 (src/shared) */ - -DEFINE_func_80152714() /* dedup: shared engine-core @0x80152714 (src/shared) */ - -DEFINE_func_80152790() /* dedup: shared engine-core @0x80152790 (src/shared) */ - - -extern void (*D_8018EFA0[])(void); - -void func_8015282C(void *a0) { - D_8018EFA0[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80152868() /* dedup: shared engine-core @0x80152868 (src/shared) */ - - -extern void func_80019064(void *a0); -extern void func_80146CA0(void *a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80147324(s32 a0); -extern void func_801474EC(s32 *a0); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80149020(s32 *a0); -extern void func_8014CBF8(void *a0); -extern int func_80151204(int arg, int a1); -extern void func_80154274(s32 *a0, s32 a1); -extern u8 D_80062C04[]; -extern M2C_UNK D_800D5880; -extern M2C_UNK D_8018EF90; - -void func_801528B0(s32 arg0) -{ - func_80019064(&D_80062C04); - func_80151204(arg0, M2C_FIELD(arg0, s16 *, 0xF2)); - func_80149020(arg0); - func_80154274(arg0, &D_800D5880); - func_80147324(0x451); - M2C_FIELD(arg0, s8 *, 0xDE) = 0x10; - func_80146DB8(arg0, &D_8018EF90); - func_801477E8(arg0, 0xFFF00000); - func_8014CBF8(arg0); - func_801474EC(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_8015294C() /* dedup: shared engine-core @0x8015294C (src/shared) */ - -DEFINE_func_80152A08() /* dedup: shared engine-core @0x80152A08 (src/shared) */ - -DEFINE_func_80152A50() /* dedup: shared engine-core @0x80152A50 (src/shared) */ - -DEFINE_func_80152AC8() /* dedup: shared engine-core @0x80152AC8 (src/shared) */ - - -extern void (*D_8018EFB4[])(void); - -void func_80152B6C(void *a0) { - D_8018EFB4[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80152BA8() /* dedup: shared engine-core @0x80152BA8 (src/shared) */ - -DEFINE_func_80152BF0() /* dedup: shared engine-core @0x80152BF0 (src/shared) */ - -DEFINE_func_80152C40() /* dedup: shared engine-core @0x80152C40 (src/shared) */ - -DEFINE_func_80152C80() /* dedup: shared engine-core @0x80152C80 (src/shared) */ - - -extern void (*D_8018EFD0[])(void); - -void func_80152D24(void *a0) { - D_8018EFD0[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80152D60() /* dedup: shared engine-core @0x80152D60 (src/shared) */ - - -extern void func_80019064(void *a0); -extern void func_80146CA0(void *a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80147324(s32 a0); -extern void func_801474EC(s32 *a0); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80149020(s32 *a0); -extern void func_8014CBF8(void *a0); -extern int func_80151204(int arg, int a1); -extern void func_80154274(s32 *a0, s32 a1); -extern s32 D_80062C14; -extern M2C_UNK D_800D5880; -extern M2C_UNK D_8018EFC0; - -void func_80152DA8(s32 arg0) -{ - func_80019064(&D_80062C14); - func_80151204(arg0, M2C_FIELD(arg0, s16 *, 0xF2)); - func_80149020(arg0); - func_80154274(arg0, &D_800D5880); - func_80147324(0x451); - M2C_FIELD(arg0, s8 *, 0xDE) = 0x10; - M2C_FIELD(arg0, s8 *, 0xDF) = 8; - func_80146DB8(arg0, &D_8018EFC0); - func_801477E8(arg0, 0xFFE40000); - func_8014CBF8(arg0); - func_801474EC(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80152E4C() /* dedup: shared engine-core @0x80152E4C (src/shared) */ - -DEFINE_func_80152EFC() /* dedup: shared engine-core @0x80152EFC (src/shared) */ - -DEFINE_func_80152F44() /* dedup: shared engine-core @0x80152F44 (src/shared) */ - -DEFINE_func_80152FBC() /* dedup: shared engine-core @0x80152FBC (src/shared) */ - - -extern void (*D_8018EFE4[])(void); - -void func_80153060(void *a0) { - D_8018EFE4[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015309C() /* dedup: shared engine-core @0x8015309C (src/shared) */ - -DEFINE_func_801530E4() /* dedup: shared engine-core @0x801530E4 (src/shared) */ - -DEFINE_func_80153150() /* dedup: shared engine-core @0x80153150 (src/shared) */ - -DEFINE_func_801531BC() /* dedup: shared engine-core @0x801531BC (src/shared) */ - -DEFINE_func_80153204() /* dedup: shared engine-core @0x80153204 (src/shared) */ - -DEFINE_func_8015327C() /* dedup: shared engine-core @0x8015327C (src/shared) */ - - -extern void (*D_8018EFF8[])(void); - -void func_80153320(void *a0) { - D_8018EFF8[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015335C() /* dedup: shared engine-core @0x8015335C (src/shared) */ - -DEFINE_func_801533A4() /* dedup: shared engine-core @0x801533A4 (src/shared) */ - -DEFINE_func_80153410() /* dedup: shared engine-core @0x80153410 (src/shared) */ - -DEFINE_func_80153490() /* dedup: shared engine-core @0x80153490 (src/shared) */ - -DEFINE_func_801534D8() /* dedup: shared engine-core @0x801534D8 (src/shared) */ - -DEFINE_func_80153550() /* dedup: shared engine-core @0x80153550 (src/shared) */ - - -DEFINE_func_801535F4() /* dedup: shared engine-core @0x801535F4 (src/shared) */ - - -DEFINE_func_8015369C() /* dedup: shared engine-core @0x8015369C (src/shared) */ - -DEFINE_func_801536DC() /* dedup: shared engine-core @0x801536DC (src/shared) */ - -DEFINE_func_80153800() /* dedup: shared engine-core @0x80153800 (src/shared) */ - -DEFINE_func_80153978() /* dedup: shared engine-core @0x80153978 (src/shared) */ - -DEFINE_func_801539F8() /* dedup: shared engine-core @0x801539F8 (src/shared) */ - -DEFINE_func_80153B58() /* dedup: shared engine-core @0x80153B58 (src/shared) */ - -DEFINE_func_80153BD8() /* dedup: shared engine-core @0x80153BD8 (src/shared) */ - -DEFINE_func_80153BF0() /* dedup: shared engine-core @0x80153BF0 (src/shared) */ - -DEFINE_func_80153C18() /* dedup: shared engine-core @0x80153C18 (src/shared) */ - -DEFINE_func_80153C30() /* dedup: shared engine-core @0x80153C30 (src/shared) */ - -DEFINE_func_80153C44() /* dedup: shared engine-core @0x80153C44 (src/shared) */ - -DEFINE_func_80153C74() /* dedup: shared engine-core @0x80153C74 (src/shared) */ - -DEFINE_func_80153C8C() /* dedup: shared engine-core @0x80153C8C (src/shared) */ - -DEFINE_func_80153C9C() /* dedup: shared engine-core @0x80153C9C (src/shared) */ - -DEFINE_func_80153CBC() /* dedup: shared engine-core @0x80153CBC (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (expected); dispatch-table %lo-fold via extern fn-ptr array, s0 holds param across both calls -extern void func_80019064(void *a0); -extern s32 D_8018F00C; -extern void (*D_8018F034[])(void *a0); -extern s16 D_8011DB0C; -extern u16 D_8011F748; - -void func_80153CCC(S80153CCC *a0) { - ((s32 (*)(s32))func_80019064)((s32)&D_8018F00C); - D_8018F034[a0->idx](a0); - D_8011DB0C = 0; - D_8011F748 = 0; -} - - -DEFINE_func_80153D34() /* dedup: shared engine-core @0x80153D34 (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (33/33) - -extern void func_80147324(s32 arg0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80149020(s32 *a0); -extern void func_80146CA0(void *a0); -extern s16 currentLocationId; -extern u8 D_8018F014; - -void func_80153D7C(s32 param_1) -{ - func_80147324(0x451); - func_80154274((s32 *)param_1, (s32)&D_8018F014); - func_80149020((s32 *)param_1); - *(u16 *)(param_1 + 0x244) = *(u16 *)(param_1 + 6); - *(u16 *)(param_1 + 0x246) = *(u16 *)(param_1 + 10); - *(u16 *)(param_1 + 0x248) = *(u16 *)(param_1 + 0xe); - if (currentLocationId == 0x3075) *(u8 *)(param_1 + 0xde) = 0x14; - else *(u8 *)(param_1 + 0xde) = 10; - *(u8 *)(param_1 + 0xdf) = 0; - __asm__ __volatile__("" ::: "memory"); - func_80146CA0((void *)param_1); -} - - -DEFINE_func_80153E00() /* dedup: shared engine-core @0x80153E00 (src/shared) */ - -DEFINE_func_8015410C() /* dedup: shared engine-core @0x8015410C (src/shared) */ - -DEFINE_func_80154134() /* dedup: shared engine-core @0x80154134 (src/shared) */ - -DEFINE_func_80154150() /* dedup: shared engine-core @0x80154150 (src/shared) */ - -DEFINE_func_80154190() /* dedup: shared engine-core @0x80154190 (src/shared) */ - -DEFINE_func_801541D8() /* dedup: shared engine-core @0x801541D8 (src/shared) */ - -DEFINE_func_80154218() /* dedup: shared engine-core @0x80154218 (src/shared) */ - -DEFINE_func_80154274() /* dedup: shared engine-core @0x80154274 (src/shared) */ - -DEFINE_func_801542A4() /* dedup: shared engine-core @0x801542A4 (src/shared) */ - -DEFINE_func_801542DC() /* dedup: shared engine-core @0x801542DC (src/shared) */ - -DEFINE_func_8015430C() /* dedup: shared engine-core @0x8015430C (src/shared) */ - -DEFINE_func_80154358() /* dedup: shared engine-core @0x80154358 (src/shared) */ - -DEFINE_func_80154418() /* dedup: shared engine-core @0x80154418 (src/shared) */ diff --git a/src/ov_SC04_019/ov_SC04_019_jr_8012ACE0.c b/src/ov_SC04_019/ov_SC04_019_jr_8012ACE0.c deleted file mode 100644 index e89df467e..000000000 --- a/src/ov_SC04_019/ov_SC04_019_jr_8012ACE0.c +++ /dev/null @@ -1,3561 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -extern void func_80128288(void); -extern void func_80128158(void); -extern void func_801285E4(void); -extern void func_80128178(void); -extern void func_80128678(void); -extern void func_80128198(void); -extern void func_80128714(void); -extern void func_801281B8(void); -extern void func_8013E67C(void); -extern void func_801281D8(void); -extern void func_8013E558(void); -extern void func_801281F8(void); -extern s32 D_801E4434; -extern s32 func_80128218(void); -extern void func_80128A28(void); -extern void func_80128228(void); -extern void func_80128AF4(void); -extern void func_80128248(void); -extern void func_801282EC(void); -extern void func_80128268(void); -extern u16 D_800B99F6; -extern void (*D_8018D4AC[])(void); -extern void func_80011B7C(int); -extern void func_801282CC(void); -extern void func_8001C0C8(void); -extern void func_80015310(void); -extern void func_80129258(void); -extern void func_801378F0(void); -extern void func_80010E14(void); -extern s16 currentLocationId; -extern s32 func_80029504(void); -extern s32 func_800CF854(s32); -extern s32 func_80128998(void); -extern s32 func_801289F0(void); -extern s32 func_801288E8(s32); -extern s32 func_80128940(s32); -extern s32 func_80029178(s32); -extern s32 func_801288B0(void); -extern void func_80011C10(void); -extern void func_8012832C(void); -extern void func_80129220(void); -extern void func_80011E24(void); -extern void func_80128C14(void); -extern void func_8002AEF8(void); -extern void func_800CFBBC(void); -extern void SsUtReverbOff(void); -extern void func_8013C98C(void); -extern void func_80129C40(s32 a0); -extern void func_800D0630(void); -extern void func_80145CEC(void); -extern void func_80144B9C(void); -extern u8 D_800B9A17; -extern u8 D_800B9A10; -extern void func_80128420(void); -extern s32 func_800D0588(void); -extern void func_801284B8(void); -extern void func_80175308(void); -extern void func_8016E8F0(void); -extern void func_80175494(void); -extern u8 D_800B9A64; -extern void func_801284F0(void); -extern void func_80146074(void); -extern void func_8012853C(void); -extern void func_80178608(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern s32 func_80011A3C(void); -extern short currentLocationId; -extern short D_800B99F2; -extern void func_80128564(void); -extern u8 D_800B9A11; -extern void func_801285D4(void); -extern s32 func_800D18DC(void); -extern void func_8014607C(void); -extern void func_801287B8(void); -extern s32 D_801E5A14; -extern void func_80029444(void); -extern void func_800D1754(void); -extern s32 D_80126B58; -extern s32 D_801E7AB8; -extern u16 D_800B99DA; -extern void func_80129CF8(void); -extern void func_8017849C(void); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_801505FC(s32 a0); -extern void func_801508B4(void *a0); -extern void func_80165E90(void); -extern void func_801627E8(void); -extern void func_80162B1C(void); -extern void func_80165CA0(void); -extern void func_80129010(void); -extern void func_8013CA14(void); -extern void func_800190AC(void); -extern void func_8012956C(void); -extern void func_8016E95C(void); -extern void func_801754A8(void); -extern void func_8013BC7C(void); -extern void func_8013BCDC(void); -extern void func_801379FC(void); -extern void func_8001212C(void); -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); -extern u8 D_800AEFD0; -extern int D_800C7C60; -extern int *D_800C7C64; -extern int D_800A2E20; -extern int D_800AF558; -extern int D_801E4434; -extern int func_801288E8(int arg0); -extern u8 D_800AF560; -extern s32 func_80128940(s32 _arg0); -extern int D_800AECB0; -extern u8 D_800AECB8; -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4); -extern s16 D_800B9A00; -extern M2C_UNK (*D_8018D1E0)(); -extern s16 (*D_8018D1E4)(); -extern M2C_UNK (*D_8018D1EC)(); -extern s32 (*D_8018D1F0)(); -extern s32 D_801E5A10; -extern void func_80010AE0(s32 a0); -extern void func_80018450(s32 a0, s32 a1); -extern void func_800183E0(s32 a0); -extern void func_80128D60(s32 a0, s32 *a1, s32 *a2); -extern s32 func_80128DB4(s32 a0, s32 *a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern M2C_UNK D_801E4438; -extern void func_80128FAC(u16 *arg0); -extern s16 D_8011DB2C; -extern s16 D_8011DB30; -extern s32 D_80126AEC; -extern u8 *func_8012913C(s32 a0); -extern u8 * func_801290DC(s32 a0, u8 *a1); -extern void func_8001D074(s32 a, s32 b); -extern u8 *func_801291C0(void); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 * func_8012913C(s32 arg0); -extern void func_80016714(void *a0, s32 a1); -extern u8 * func_801291C0(void); -extern void func_80129248(s16 a0); -extern void func_801292C8(u8 *a0); -extern void func_8012927C(void); -extern void func_8012931C(struct vec *a0); -extern void func_80129350(s32 a0, s32 a1); -extern void func_80129374(s32 a0, s32 a1); -extern s16 D_800B9AAC[]; -extern s16 D_800B9AAE[]; -extern s16 D_800B9AB0[]; -extern s16 D_800B9AB2[]; -extern s16 D_800B9AB4[]; -extern s16 D_800B9AB6[]; -extern s16 D_800B9AB8[]; -extern s16 D_800B9ABA[]; -extern void func_80129398(void); -extern s16 D_80114EE0; -extern void func_80129428(void); -extern void func_8012943C(void); -extern s32 D_8005128C; -extern u8 D_800B9A78; -extern void func_801298F4(void *arg0); -extern void func_801299C8(s32 a, s32 b, s32 c); -extern void func_8012944C(void); -extern unsigned short D_800B99F0; -extern void func_8012A328(void); -extern void func_80053308(s32); -extern s32 func_80012F74(s32, s32, s32, s32); /* canonical s32 (engine_core); (s16)-cast the return for the sll/sra */ -extern void GsSetRefView2L(void *); -extern s8 D_801150D6; /* canonical (engine_core macro): s8 — access via *(u8*)& for lbu */ -extern u8 D_80127504; -extern s32 D_80126E60[]; -extern s32 D_80126F04[]; -extern u8 D_80126948[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_80126FA8[]; -extern struct BigCopy D_80126DB8;/* canonical (engine_core macro): struct BigCopy — (s32*)& at use */ -extern u8 D_800AF630[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_800AE688[]; -extern s32 D_801151D4; /* canonical (10 siblings): scalar s32 — store (s32)ptr */ -extern void func_8012A018(s32 a, s32 b); -extern void func_80129FF4(void); -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_80126940; -extern s16 D_80126942; -extern s16 D_80126944; -extern void func_8012A048(void *a0, s32 a1, u8 a2); -extern void *memcpy(void *, const void *, unsigned int); -extern void func_8012A094(s32 a0); -extern void func_8012A100(s8 a0); -extern void func_8012A0E0(void); -extern s8 D_801150D6; -extern s32 D_80120204; -extern s32 D_80120200; -extern s32 D_8012020C; -extern s32 D_80120208; -extern s16 D_80120218; -extern s16 D_80120210; -extern s16 D_8012021A; -extern s16 D_80120212; -extern s16 D_8012021C; -extern s16 D_80120214; -extern s16 D_80120226; -extern s16 D_80120220; -extern s16 D_80120228; -extern s16 D_80120222; -extern s16 D_8012022A; -extern s16 D_80120224; -extern s32 D_80120294; -extern s16 D_80120298; -extern s16 D_8012029A; -extern void func_8012A110(void); -extern s8 D_801152C0; -extern void func_8012A2F4(void); -extern s16 D_80127080; -extern s16 D_801152C2; -extern void func_8012A304(s32 a0, s32 a1); -extern s32 D_801151D4; -extern struct BigCopy D_80126DB8; -extern struct BigCopy D_80114EE8; -extern void func_8012A4BC(void); -extern void func_8012A598(void *a0); -extern void func_8012A568(void (*a0)(void)); -extern void func_8012A62C(s32); -extern void func_8012A5F8(void (*a0)(void), s32 a1); -extern void func_8012A62C(s32 a0); -extern void func_8012A7D4(void *a0, void *a1); -extern s32 func_8012A6D0(void *a0, void *a1); -extern s16 func_8012A68C(void); -extern s16 func_8012A79C(s16 *a0, s16 *a1); -extern s16 func_8012A758(void); -extern s32 ratan2(s32 a0, s32 a1); -extern void func_8012A7D4(void *arg0, void *arg1); -extern void func_8012AAAC(); -extern void func_8012A828(s32 a0, void * a1); -extern int func_8012ACE0(void *a0); -extern void func_8012A860(void *a0, int a1); -extern void func_8012A8B0(u8 *a0, s32 a1); -extern void func_8012A8E8(void); -extern u8 D_801202A0[]; -extern u16 D_801270C0; -extern void func_8012A988(u8 *a0); -extern void func_8012A908(void); -extern s32 func_8012ACE0(void *a0); -extern M2C_UNK D_8018D540; -extern void func_8012ACA0(void *arg0); -/* ==== end §8b carried decl layer ==== */ - - - - -// @class: iv-combine -// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). - /* 8-byte element, cmd @ +4 */ - /* list ptr @ +0x90 */ - -s32 func_8012ACE0(void *o) { - int i; - for (i = 0; ; i++) { - switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { - case -2: - case -1: - case 0: - return i; - case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ - default: - break; - } - } -} - -DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ - -DEFINE_func_8012AD50() /* dedup: shared engine-core @0x8012AD50 (src/shared) */ - - - -void func_8012AD64(s32 *a0, s16 a1) { - *(s16*)((s32)a0 + 0x34) = a1; -} - - -DEFINE_func_8012AD6C() /* dedup: shared engine-core @0x8012AD6C (src/shared) */ - -DEFINE_func_8012AD80() /* dedup: shared engine-core @0x8012AD80 (src/shared) */ - -DEFINE_func_8012ADE4() /* dedup: shared engine-core @0x8012ADE4 (src/shared) */ - -DEFINE_func_8012AE00() /* dedup: shared engine-core @0x8012AE00 (src/shared) */ - -DEFINE_func_8012AF0C() /* dedup: shared engine-core @0x8012AF0C (src/shared) */ - -DEFINE_func_8012B030() /* dedup: shared engine-core @0x8012B030 (src/shared) */ - -DEFINE_func_8012B0B4() /* dedup: shared engine-core @0x8012B0B4 (src/shared) */ - -DEFINE_func_8012B14C() /* dedup: shared engine-core @0x8012B14C (src/shared) */ - -DEFINE_func_8012B178() /* dedup: shared engine-core @0x8012B178 (src/shared) */ - -DEFINE_func_8012B1B4() /* dedup: shared engine-core @0x8012B1B4 (src/shared) */ - -DEFINE_func_8012B200() /* dedup: shared engine-core @0x8012B200 (src/shared) */ - -DEFINE_func_8012B21C() /* dedup: shared engine-core @0x8012B21C (src/shared) */ - -DEFINE_func_8012B23C() /* dedup: shared engine-core @0x8012B23C (src/shared) */ - -DEFINE_func_8012B260() /* dedup: shared engine-core @0x8012B260 (src/shared) */ - -DEFINE_func_8012B2CC() /* dedup: shared engine-core @0x8012B2CC (src/shared) */ - -DEFINE_func_8012B370() /* dedup: shared engine-core @0x8012B370 (src/shared) */ - -DEFINE_func_8012B414() /* dedup: shared engine-core @0x8012B414 (src/shared) */ - -DEFINE_func_8012B4B8() /* dedup: shared engine-core @0x8012B4B8 (src/shared) */ - -DEFINE_func_8012B608() /* dedup: shared engine-core @0x8012B608 (src/shared) */ - -DEFINE_func_8012B6D4() /* dedup: shared engine-core @0x8012B6D4 (src/shared) */ - -DEFINE_func_8012B70C() /* dedup: shared engine-core @0x8012B70C (src/shared) */ - -DEFINE_func_8012B744() /* dedup: shared engine-core @0x8012B744 (src/shared) */ - - -DEFINE_func_8012B77C() /* dedup: shared engine-core @0x8012B77C (src/shared) */ - - -DEFINE_func_8012B864() /* dedup: shared engine-core @0x8012B864 (src/shared) */ - -DEFINE_func_8012B8A4() /* dedup: shared engine-core @0x8012B8A4 (src/shared) */ - -DEFINE_func_8012B8E4() /* dedup: shared engine-core @0x8012B8E4 (src/shared) */ - -DEFINE_func_8012BA10() /* dedup: shared engine-core @0x8012BA10 (src/shared) */ - -DEFINE_func_8012BB3C() /* dedup: shared engine-core @0x8012BB3C (src/shared) */ - -DEFINE_func_8012BC60() /* dedup: shared engine-core @0x8012BC60 (src/shared) */ - -DEFINE_func_8012BCCC() /* dedup: shared engine-core @0x8012BCCC (src/shared) */ - -DEFINE_func_8012BD14() /* dedup: shared engine-core @0x8012BD14 (src/shared) */ - -DEFINE_func_8012BD3C() /* dedup: shared engine-core @0x8012BD3C (src/shared) */ - -DEFINE_func_8012BDBC() /* dedup: shared engine-core @0x8012BDBC (src/shared) */ - -DEFINE_func_8012BE54() /* dedup: shared engine-core @0x8012BE54 (src/shared) */ - -DEFINE_func_8012BE98() /* dedup: shared engine-core @0x8012BE98 (src/shared) */ - -DEFINE_func_8012BEE8() /* dedup: shared engine-core @0x8012BEE8 (src/shared) */ - -DEFINE_func_8012BF10() /* dedup: shared engine-core @0x8012BF10 (src/shared) */ - - -void func_8012BF4C(s32 *a0, s32 a1) { - *(s32*)((s32)a0 + 0x1C) = a1; -} - - -DEFINE_func_8012BF54() /* dedup: shared engine-core @0x8012BF54 (src/shared) */ - -DEFINE_func_8012BF68() /* dedup: shared engine-core @0x8012BF68 (src/shared) */ - -DEFINE_func_8012BF7C() /* dedup: shared engine-core @0x8012BF7C (src/shared) */ - -DEFINE_func_8012BFA8() /* dedup: shared engine-core @0x8012BFA8 (src/shared) */ - -DEFINE_func_8012C044() /* dedup: shared engine-core @0x8012C044 (src/shared) */ - -DEFINE_func_8012C098() /* dedup: shared engine-core @0x8012C098 (src/shared) */ - -DEFINE_func_8012C0EC() /* dedup: shared engine-core @0x8012C0EC (src/shared) */ - -DEFINE_func_8012C194() /* dedup: shared engine-core @0x8012C194 (src/shared) */ - -DEFINE_func_8012C1B8() /* dedup: shared engine-core @0x8012C1B8 (src/shared) */ - -DEFINE_func_8012C1DC() /* dedup: shared engine-core @0x8012C1DC (src/shared) */ - -DEFINE_func_8012C218() /* dedup: shared engine-core @0x8012C218 (src/shared) */ - -DEFINE_func_8012C284() /* dedup: shared engine-core @0x8012C284 (src/shared) */ - -DEFINE_func_8012C2D0() /* dedup: shared engine-core @0x8012C2D0 (src/shared) */ - -DEFINE_func_8012C31C() /* dedup: shared engine-core @0x8012C31C (src/shared) */ - -DEFINE_func_8012C354() /* dedup: shared engine-core @0x8012C354 (src/shared) */ - -DEFINE_func_8012C438() /* dedup: shared engine-core @0x8012C438 (src/shared) */ - -DEFINE_func_8012C51C() /* dedup: shared engine-core @0x8012C51C (src/shared) */ - -DEFINE_func_8012C588() /* dedup: shared engine-core @0x8012C588 (src/shared) */ - -DEFINE_func_8012C658() /* dedup: shared engine-core @0x8012C658 (src/shared) */ - -DEFINE_func_8012C724() /* dedup: shared engine-core @0x8012C724 (src/shared) */ - -DEFINE_func_8012C750() /* dedup: shared engine-core @0x8012C750 (src/shared) */ - -DEFINE_func_8012C820() /* dedup: shared engine-core @0x8012C820 (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (149 ins). Counter (*(u16 *)&D_801270C4): gcc CSE's the two reads (store to -// dst+0x36 assumed non-aliasing the global) AND folds %lo per-access — target instead RELOADS -// and keeps &(*(u16 *)&D_801270C4) in one reg. Fix = pin a `u16*` to $v1 (register asm "$3"), read via -// `*(volatile u16*)pc` (defeats CSE -> 2 loads) but STORE via plain `*pc` (non-volatile store -// schedules store-before-sll, no extra `move`). count is s16 so `count==0` -> `sll 16;bnez`. -// else-block obj must be a BLOCK-LOCAL (gcc then picks $a1, not the shared if-branch $a0). - -extern s32 D_80190A24; -extern s16 D_801270C4; -extern u16 D_801274E4[]; -extern s32 D_8011DB08; -extern void func_80016714(void *a0, s32 a1); - -s32 func_8012C890(s32 a0, s32 a1, s32 a2) { - u8 *src = (u8 *)a0; - u8 *dst = (u8 *)a1; - u16 *d; - s16 count; - u16 v2, v4; - s32 v10; - void *obj; - - *(u16 *)(dst + 0x0) = *(u16 *)(src + 0x6); - v2 = *(u16 *)(src + 0x0); - *(u16 *)(dst + 0x6) = v2; - *(u16 *)(dst + 0x88) = v2; - v2 = *(u16 *)(src + 0x2); - *(u16 *)(dst + 0xA) = v2; - *(u16 *)(dst + 0x8A) = v2; - v4 = *(u16 *)(src + 0x4); - *(u16 *)(dst + 0xC) = 0; - *(u16 *)(dst + 0x8) = 0; - *(u16 *)(dst + 0x4) = 0; - *(u16 *)(dst + 0xE) = v4; - *(u16 *)(dst + 0x8C) = v4; - *(u16 *)(dst + 0x70) = *(u16 *)(src + 0x8); - *(u16 *)(dst + 0x72) = *(u16 *)(src + 0xA) & 0xF7FF; - *(u16 *)(dst + 0xFC) = *(u16 *)(src + 0xE); - v10 = *(s32 *)(src + 0x10); - *(s32 *)(dst + 0x78) = (s32)&D_80190A24; - *(s32 *)(dst + 0xDC) = v10; - - { - register u16 *pc __asm__("$3"); - pc = &(*(u16 *)&D_801270C4); - *(u16 *)(dst + 0x36) = *(volatile u16 *)pc; - count = *(volatile u16 *)pc + 1; - *pc = count; - if (count == 0) { - *pc = 1; - } - } - - if (a2 != 0) { - *(s32 *)(dst + 0x64) = a2; - *(s32 *)(dst + 0x68) = 0; - } else { - *(s32 *)(dst + 0x64) = 0; - *(s32 *)(dst + 0x68) = (s32)src; - } - - *(u16 *)(src + 0xA) |= 0x8000; - *(u16 *)(dst + 0x2) = 0; - d = D_801274E4; - *d &= 0xFFFE; - (*(void (**)(void *))(D_8011DB08 + *(u16 *)(dst + 0x0) * 4))(dst); - - if (*d & 1) { - s32 a1v; - obj = *(void **)(dst + 0x20); - if (obj != 0) { - s32 t = *(u16 *)obj; - if (t != 1) { - if (t != 2) { - goto done; - } - a1v = 0x38; - } else { - a1v = 0x84; - } - func_80016714(obj, a1v); - done:; - } - func_80016714(dst, 0x10C); - *(u16 *)(src + 0xA) &= 0x7FFF; - return 0; - } - - if (*(s32 *)(dst + 0x64) == 0) { - void *o = *(void **)(dst + 0x20); - if (o == 0) { - return (s32)dst; - } - if (*(u16 *)o == 1) { - s16 c = *(s16 *)(src + 0xC); - if (c != 0x7FFF) { - *(s16 *)((u8 *)o + 0x12) = c; - } - } - } - if (*(s32 *)(dst + 0x20) != 0) { - *(u16 *)(*(s32 *)(dst + 0x20) + 0x8) = *(u16 *)(dst + 0x6) + *(u16 *)(dst + 0x50); - *(u16 *)(*(s32 *)(dst + 0x20) + 0xA) = *(u16 *)(dst + 0xA) + *(u16 *)(dst + 0x52); - *(u16 *)(*(s32 *)(dst + 0x20) + 0xC) = *(u16 *)(dst + 0xE) + *(u16 *)(dst + 0x54); - } - return (s32)dst; -} - - -DEFINE_func_8012CAE4() /* dedup: shared engine-core @0x8012CAE4 (src/shared) */ - -DEFINE_func_8012CB64() /* dedup: shared engine-core @0x8012CB64 (src/shared) */ - -DEFINE_func_8012CBA4() /* dedup: shared engine-core @0x8012CBA4 (src/shared) */ - -DEFINE_func_8012CBCC() /* dedup: shared engine-core @0x8012CBCC (src/shared) */ - -DEFINE_func_8012CBF4() /* dedup: shared engine-core @0x8012CBF4 (src/shared) */ - -DEFINE_func_8012CC1C() /* dedup: shared engine-core @0x8012CC1C (src/shared) */ - -DEFINE_func_8012CC40() /* dedup: shared engine-core @0x8012CC40 (src/shared) */ - -DEFINE_func_8012CC64() /* dedup: shared engine-core @0x8012CC64 (src/shared) */ - - -DEFINE_func_8012CC88() /* dedup: shared engine-core @0x8012CC88 (src/shared) */ - - -DEFINE_func_8012CE2C() /* dedup: shared engine-core @0x8012CE2C (src/shared) */ - -DEFINE_func_8012CEB0() /* dedup: shared engine-core @0x8012CEB0 (src/shared) */ - -DEFINE_func_8012CFA8() /* dedup: shared engine-core @0x8012CFA8 (src/shared) */ - -DEFINE_func_8012D098() /* dedup: shared engine-core @0x8012D098 (src/shared) */ - -DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */ - -DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */ - -DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */ - -DEFINE_func_8012D4B4() /* dedup: shared engine-core @0x8012D4B4 (src/shared) */ - -DEFINE_func_8012D5DC() /* dedup: shared engine-core @0x8012D5DC (src/shared) */ - -DEFINE_func_8012D5E4() /* dedup: shared engine-core @0x8012D5E4 (src/shared) */ - -DEFINE_func_8012D624() /* dedup: shared engine-core @0x8012D624 (src/shared) */ - -// @class: schedule -// @stuck: none — MATCH - - - -int func_8012D664(int arg0, int arg1, int arg2) { - extern int func_8012F568(); - extern int D_8018D550; - - struct S8012D664_8012D664 s; - int ret; - int t; - - s.a = (*(unsigned short*)&D_80126B5E); - s.b = (*(unsigned short*)&D_80126B62) - 0x40; - s.c = (*(unsigned short*)&D_80126B66); - ret = ((int(*)())func_800132BC)(arg0, &s); - t = arg1 + 0x20; - if (ret < t * t) { - func_8012F568(1, 1, 0, arg2, arg0, &D_8018D550); - return 1; - } - return 0; -} - - - -DEFINE_func_8012D714() /* dedup: shared engine-core @0x8012D714 (src/shared) */ - - - -extern void func_8012F568(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void func_8014C978(void); -extern M2C_UNK D_8018D558; -extern M2C_UNK D_8018D560; - -s32 func_8012DB84(void) -{ - func_8014C978(); - func_8012F568(1, 0xC001, 0, 0x3E8, &D_8018D558, &D_8018D560); -} - - -DEFINE_func_8012DBD0() /* dedup: shared engine-core @0x8012DBD0 (src/shared) */ - -// @class: regalloc-order -// @stuck: none — MATCH - - - - -s32 func_8012DDA4() -{ - extern Entry_8012DDA4 * D_801E5A34; - extern Entry_8012DDA4 * D_801E5A30; - - Entry_8012DDA4 *p; - Entry_8012DDA4 *end = ((Entry_8012DDA4 *)D_80126720); - - while (D_801E5A34 != end) { - p = D_801E5A34; - if (p->active != 0 && p != D_801E5A30) { - D_801E5A34 = p + 1; - return p; - } - D_801E5A34++; - } - D_801E5A34 = 0; - return 0; -} - - - -// @class: plumbing -// @stuck: none — MATCH (35/35 ins, relocation-masked) - - -s32 func_8012DE2C(s32 a0) { - extern u8 * D_801E5A34; - extern u8 * D_801E5A30; - - u8 *base; - u8 *end; - u8 *p; - - base = D_801202A0; - end = base + 0x6480; - D_801E5A34 = base; - D_801E5A30 = ((u8 *)a0); - - while (D_801E5A34 != end) { - p = D_801E5A34; - if (*(u16 *)p != 0 && p != ((u8 *)a0)) { - D_801E5A34 = p + 0x10C; - return p; - } - D_801E5A34 += 0x10C; - } - D_801E5A34 = 0; - return 0; -} - - - -DEFINE_func_8012DEB8() /* dedup: shared engine-core @0x8012DEB8 (src/shared) */ - -DEFINE_func_8012DF34() /* dedup: shared engine-core @0x8012DF34 (src/shared) */ - -DEFINE_func_8012DFBC() /* dedup: shared engine-core @0x8012DFBC (src/shared) */ - -DEFINE_func_8012DFCC() /* dedup: shared engine-core @0x8012DFCC (src/shared) */ - -DEFINE_func_8012DFD4() /* dedup: shared engine-core @0x8012DFD4 (src/shared) */ - -DEFINE_func_8012E014() /* dedup: shared engine-core @0x8012E014 (src/shared) */ - -DEFINE_func_8012E138() /* dedup: shared engine-core @0x8012E138 (src/shared) */ - - -s32 func_8012E27C(void) { - return 1; -} - - -DEFINE_func_8012E284() /* dedup: shared engine-core @0x8012E284 (src/shared) */ - -DEFINE_func_8012E28C() /* dedup: shared engine-core @0x8012E28C (src/shared) */ - -DEFINE_func_8012E32C() /* dedup: shared engine-core @0x8012E32C (src/shared) */ - - -/* func_8012E364 (ov_SC01_077_jr_8012ACE0) — MATCH, 67/67 ins, 0 mismatched (reloc-masked). - * - * Verified: - * python3 tools/match_one.py func_8012E364 --c .run/near6/wave23/func_8012E364.c \ - * --asm-subdir asm/ov_SC01_077/nonmatchings/ov_SC01_077_jr_8012ACE0 - * -> MATCH (67 ins) func_8012E364 - * - * Symbols: sig_hints listed no callees and no data decls for this fn, so the three externs below - * are derived from the asm's %hi/%lo pairs: - * D_80126CE0 -> `lh` (0x8012E370) => s16 - * D_801E5A28 -> `lw`/`sw` => s32 - * D_801E5A2C -> `lw`/`sw` => s32 - * D_80126CE0 is already declared `extern s16 D_80126CE0;` inside ov_SC03_099_jr_8016AB6C.c etc., - * so the s16 typing is consistent with the rest of the tree. - * - * --------------------------------------------------------------------------------------------- - * HOW THE LAST 7 SLOTS CAME OFF (wave22 plateaued here at closeness 7; that header's - * "genuine regalloc hard tail / not C-expressible" verdict was WRONG on both clusters). - * - * CLUSTER B - idx 59-62 (`nop`/`negu $v1,$v1` vs `addu $v0,$v1,$zero`/`negu $v0,$v0`): 7 -> 3. - * NOT a delay-slot (dbr) residual at all. `mips.md:1526 abssi2` is a 3-instruction `multi` - * template that emits its OWN branch AND fills its OWN slot: - * REGNO(op0) == REGNO(op1): "bgez %1,1f%#\n\tsubu %0,%z2,%0\n1:" (slot -> maspsx nop) - * REGNO(op0) != REGNO(op1): "%(bgez %1,1f\n\tmove %0,%1\n\tsubu %0,%z2,%0\n1:%)" - * The target IS the second form (`.set noreorder` + `move` in the slot). So the whole residual - * was one question: does the abs DEST get a different hard reg from its SOURCE? - * Two edits, both required: - * (a) spell the abs as `__builtin_abs(v)` so a real `(abs:SI ...)` insn exists. A hand-rolled - * `d = v; if (d<0) d = -d;` is equivalent (cse folds it to the same abs insn - the wave22 - * draft was ALREADY going through abssi2, it just hit the dest==src arm), but a - * `(v<0) ? -v : v` ternary does NOT fold here: 68 ins, 19 off. - * (b) PIN the abs result to $2. Unpinned, local-alloc's combine_regs (K8) ties the abs dest - * into its dying input `v` -> REGNO(op0)==REGNO(op1) -> the nop form. Measured: the same - * file with `s32 d;` instead of the pin is 5 off; with the pin, 3 off. - * (Rejected on measurement: `d = v; asm("" :: "r"(v))` dead-read to break the tie = 68 ins/13; - * RC-12 `$0`-add opaque copy = 9; pinning d to $3 = 5.) - * - * CLUSTER A - idx 43-45 (the D_801E5A2C load vs the 0x20($a2) load, swapped): 3 -> MATCH. - * Pure sched1 rank, and it IS steerable (sched.md S2, the birthing boost). The `.i.sched` dump - * of the wave22 draft says it outright: - * ;; insn[ 104]: priority = 1 (prev = D_801E5A2C) - * ;; insn[ 107]: priority = 1 (a = *(arg0+0x20)) - * ;; ready list at T-17: 107 (1) 104 (7f000001), now 104 107 - * Equal base priority, but 104 carries the `adjust_priority`/`birthing_insn_p` boost - * (sched.c:2506/2469 - `reg_n_sets[dest] == 1`) and 107 does NOT, because wave22 reused ONE - * variable `a` for four roles (hint value, division result, both tail entity loads) -> 4 sets. - * Backward scheduling means picked-first = placed-LAST, so the boosted 104 got pushed BELOW 107. - * Fix: give each tail entity load its own single-set local (`e1`, `e2`). Now both loads are - * boosted, the rank falls through to `rank_for_schedule`'s LUID tie-break (sched.c:2427, - * "highest LUID first" = ascending source order forward) and the two loads come out in - * statement order = the target order. - * NB the wave22 header's claim "splitting `a` regresses 2 slots" only applies to splitting the - * FIRST two roles (hint value / division result) - those must stay one multi-set cross-block - * variable. Splitting only the TAIL roles is what pays. - * - * LOAD-BEARING constructs (do not "simplify"): - * 1. `spd` - a local holding 0x1000 SET BEFORE the if/else chain, so the constant lives in a - * pseudo across the branch: `addiu $a3,$zero,0x1000` in the `blez` slot at 0x8012E3DC and the - * `sw $a3` / `addu $v1,$v1,$a3` forms at L8012E410. - * 2. `a` reused for the D_80126CE0 value AND the division result (multi-set, cross-block) - that - * is what puts the quotient in $a0 (`subu $a0,$v0,$v1`) instead of coalescing into $v0. - * 3. `flags` pinned to $2 (dropping it = 13 off) and `prev` pinned to $5 (dropping it = 6 off). - * 4. `d` pinned to $2 - see CLUSTER B(b). - * 5. `e1`/`e2` must be SEPARATE single-set locals - see CLUSTER A. - * The `arg0` $6 pin is NOT load-bearing any more (verified: still MATCH without it); it is kept - * because it costs nothing and documents the target's `addu $a2,$a0,$zero`. - */ - -void func_8012E364(s32 arg0_) -{ - - extern s16 D_80126CE0; - extern s32 D_801E5A28; - extern s32 D_801E5A2C; - register s32 arg0 __asm__("$6"); - register s32 prev __asm__("$5"); - register u16 flags __asm__("$2"); - s32 a; - s32 diff; - s32 v; - register s32 d __asm__("$2"); - s32 spd; - s32 e1; - s32 e2; - - arg0 = arg0_; - *(s16 *)(arg0 + 0x5C) = 0; - a = D_80126CE0; - if (a == 0) { - D_801E5A28 = 0x1000; - D_801E5A2C = 0x1000; - } - a = ((0x90 - a) << 12) / 0x90; - *(s32 *)(arg0 + 0x1C) += 1; - spd = 0x1000; - - diff = D_801E5A28 - a; - if (diff > 0) { - D_801E5A28 -= diff >> 2; - } else if (diff < 0) { - D_801E5A28 += (-diff) / 4; - } - - prev = D_801E5A2C; - e1 = *(s32 *)(arg0 + 0x20); - v = D_801E5A28 - prev + spd; - D_801E5A2C = spd; - flags = *(u16 *)(e1 + 0x2C); - D_801E5A28 = v; - *(u16 *)(e1 + 0x2C) = flags | 0x10; - - e2 = *(s32 *)(arg0 + 0x20); - d = __builtin_abs(v); - *(s16 *)(e2 + 0x1C) = d; - *(s16 *)(e2 + 0x18) = d; - *(s16 *)(*(s32 *)(arg0 + 0x20) + 0x1A) = 0x1000; -} - - -DEFINE_func_8012E470() /* dedup: shared engine-core @0x8012E470 (src/shared) */ - -DEFINE_func_8012E4C8() /* dedup: shared engine-core @0x8012E4C8 (src/shared) */ - -DEFINE_func_8012E504() /* dedup: shared engine-core @0x8012E504 (src/shared) */ - -DEFINE_func_8012E544() /* dedup: shared engine-core @0x8012E544 (src/shared) */ - -DEFINE_func_8012E57C() /* dedup: shared engine-core @0x8012E57C (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH -DEFINE_func_8012E5CC() /* dedup: shared engine-core @0x8012E5CC (src/shared) */ - - -DEFINE_func_8012E688() /* dedup: shared engine-core @0x8012E688 (src/shared) */ - -#define gte_SetRotMatrix(r0) __asm__ volatile ( \ - "lw $12, 0( %0 );" \ - "lw $13, 4( %0 );" \ - "ctc2 $12, $0;" \ - "ctc2 $13, $1;" \ - "lw $12, 8( %0 );" \ - "lw $13, 12( %0 );" \ - "lw $14, 16( %0 );" \ - "ctc2 $12, $2;" \ - "ctc2 $13, $3;" \ - "ctc2 $14, $4" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_SetTransMatrix(r0) __asm__ volatile ( \ - "lw $12, 20( %0 );" \ - "lw $13, 24( %0 );" \ - "ctc2 $12, $5;" \ - "lw $14, 28( %0 );" \ - "ctc2 $13, $6;" \ - "ctc2 $14, $7" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_ldlv0(r0) __asm__ volatile ( \ - "lhu $13, 4( %0 );" \ - "lhu $12, 0( %0 );" \ - "sll $13, $13, 16;" \ - "or $12, $12, $13;" \ - "mtc2 $12, $0;" \ - "lwc2 $1, 8( %0 )" \ - : \ - : "r"( r0 ) \ - : "$12", "$13" ) -#define gte_rtps() __asm__ volatile ("nop;nop;rtps") -#define gte_stsxy(r0) __asm__ volatile ( \ - "swc2 $14, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "memory" ) - - - -DEFINE_func_8012E778() /* dedup: shared engine-core @0x8012E778 (src/shared) */ - - -DEFINE_func_8012E88C() /* dedup: shared engine-core @0x8012E88C (src/shared) */ - -DEFINE_func_8012E8A8() /* dedup: shared engine-core @0x8012E8A8 (src/shared) */ - -DEFINE_func_8012E8C4() /* dedup: shared engine-core @0x8012E8C4 (src/shared) */ - -DEFINE_func_8012E8E0() /* dedup: shared engine-core @0x8012E8E0 (src/shared) */ - - - -// @class: other -// @stuck: none — MATCH (branch-polarity invert: `0x78 != 0` puts compute block as fall-through) - -extern void func_8016AA50(int, int); -extern void func_8016B428(int); -extern void func_80019064(void *); -extern int D_8018D568; - -void func_8012E9C0(int param_1) -{ - int iVar1; - - if (*(short *)(param_1 + 0x60) != 0) { - if (*(unsigned char *)(param_1 + 0x5e) == 0x1d) { - *(short *)(param_1 + 0x82) = 0; - *(short *)(param_1 + 0x7c) = *(unsigned short *)(param_1 + 6); - *(short *)(param_1 + 0x7e) = *(unsigned short *)(param_1 + 0xa); - *(short *)(param_1 + 0x80) = *(unsigned short *)(param_1 + 0xe); - } - if (*(int *)(param_1 + 0x78) != 0) { - iVar1 = *(short *)(param_1 + 0x60) * - *(short *)(*(int *)(param_1 + 0x78) + 0x30) >> 0xc; - if (iVar1 < 1) { - iVar1 = 1; - } - } else { - iVar1 = *(short *)(param_1 + 0x60); - } - func_8016AA50(param_1, iVar1); - if ((*(unsigned short *)(param_1 + 0x82) & 1) != 0) { - func_8016B428(param_1); - func_80019064(&D_8018D568); - } - } - return; -} - - - - -// @class: regalloc-order -// @stuck: none — MATCH (93 ins) - - -extern void func_80049CAC(s32 a0, s32 a1); - -/* Blk16 lifted to src/shared/engine_types.h (Phase 22). */ - -DEFINE_func_8012EA90() /* dedup: shared engine-core @0x8012EA90 (src/shared) */ - - -DEFINE_func_8012EC04() /* dedup: shared engine-core @0x8012EC04 (src/shared) */ - -DEFINE_func_8012EECC() /* dedup: shared engine-core @0x8012EECC (src/shared) */ - -DEFINE_func_8012EF34() /* dedup: shared engine-core @0x8012EF34 (src/shared) */ - -DEFINE_func_8012EF70() /* dedup: shared engine-core @0x8012EF70 (src/shared) */ - -#define gte_SetRotMatrix(r0) __asm__ volatile ( \ - "lw $12, 0( %0 );" \ - "lw $13, 4( %0 );" \ - "ctc2 $12, $0;" \ - "ctc2 $13, $1;" \ - "lw $12, 8( %0 );" \ - "lw $13, 12( %0 );" \ - "lw $14, 16( %0 );" \ - "ctc2 $12, $2;" \ - "ctc2 $13, $3;" \ - "ctc2 $14, $4" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_SetTransMatrix(r0) __asm__ volatile ( \ - "lw $12, 20( %0 );" \ - "lw $13, 24( %0 );" \ - "ctc2 $12, $5;" \ - "lw $14, 28( %0 );" \ - "ctc2 $13, $6;" \ - "ctc2 $14, $7" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_rtps() __asm__ volatile ("nop;nop;rtps") -#define gte_stsxy(r0) __asm__ volatile ( \ - "swc2 $14, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "memory" ) -#define gte_SetRotMatrix(r0) __asm__ volatile ( \ - "lw $12, 0( %0 );" \ - "lw $13, 4( %0 );" \ - "ctc2 $12, $0;" \ - "ctc2 $13, $1;" \ - "lw $12, 8( %0 );" \ - "lw $13, 12( %0 );" \ - "lw $14, 16( %0 );" \ - "ctc2 $12, $2;" \ - "ctc2 $13, $3;" \ - "ctc2 $14, $4" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_SetTransMatrix(r0) __asm__ volatile ( \ - "lw $12, 20( %0 );" \ - "lw $13, 24( %0 );" \ - "ctc2 $12, $5;" \ - "lw $14, 28( %0 );" \ - "ctc2 $13, $6;" \ - "ctc2 $14, $7" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_ldv0(r0) __asm__ volatile ( \ - "lwc2 $0, 0( %0 );" \ - "lwc2 $1, 4( %0 )" \ - : \ - : "r"( r0 ) ) -#define gte_rtps() __asm__ volatile ("nop;nop;rtps") -#define gte_stsxy(r0) __asm__ volatile ( \ - "swc2 $14, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "memory" ) -#define gte_stflg(r0) __asm__ volatile ( \ - "cfc2 $12, $31;" \ - "nop;" \ - "sw $12, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "$12", "memory" ) -#define gte_SetRotMatrix(r0) __asm__ volatile ( \ - "lw $12, 0( %0 );" \ - "lw $13, 4( %0 );" \ - "ctc2 $12, $0;" \ - "ctc2 $13, $1;" \ - "lw $12, 8( %0 );" \ - "lw $13, 12( %0 );" \ - "lw $14, 16( %0 );" \ - "ctc2 $12, $2;" \ - "ctc2 $13, $3;" \ - "ctc2 $14, $4" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_SetTransMatrix(r0) __asm__ volatile ( \ - "lw $12, 20( %0 );" \ - "lw $13, 24( %0 );" \ - "ctc2 $12, $5;" \ - "lw $14, 28( %0 );" \ - "ctc2 $13, $6;" \ - "ctc2 $14, $7" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_ldv0(r0) __asm__ volatile ( \ - "lwc2 $0, 0( %0 );" \ - "lwc2 $1, 4( %0 )" \ - : \ - : "r"( r0 ) ) -#define gte_stflg(r0) __asm__ volatile ( \ - "cfc2 $12, $31;" \ - "nop;" \ - "sw $12, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "$12", "memory" ) - -/* §37/§124 asm-label alias: the fleet canon declares this `extern void - * func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in - * src/shared/engine_core.h (the one at src/ov_SC01_077/ov_SC01_077_jr_8012ACE0.c:1169 - * comes from DEFINE_func_8012EF70()). The byte-true body returns s32 and takes - * TWO pointers, so it conflicts on BOTH the return axis and the arity axis. - * Aliasing the C name sidesteps both with no header edit and no codegen change. - * This declaration MUST travel with the body. */ -s32 aF8012EFB8(void *param_1, void *param_2) __asm__("func_8012EFB8"); - -DEFINE_func_8012EFB8() /* dedup: shared engine-core @0x8012EFB8 (src/shared) */ - - - -// @class: other -// @stuck: none — MATCH (33 ins, match_one verified) - -DEFINE_func_8012F038() /* dedup: shared engine-core @0x8012F038 (src/shared) */ - - -DEFINE_func_8012F0BC() /* dedup: shared engine-core @0x8012F0BC (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH (clone of confirmed func_8012F214 template; passthrough a0) -DEFINE_func_8012F14C() /* dedup: shared engine-core @0x8012F14C (src/shared) */ - - -DEFINE_func_8012F1A4() /* dedup: shared engine-core @0x8012F1A4 (src/shared) */ - -DEFINE_func_8012F214() /* dedup: shared engine-core @0x8012F214 (src/shared) */ - -DEFINE_func_8012F274() /* dedup: shared engine-core @0x8012F274 (src/shared) */ - -DEFINE_func_8012F2E8() /* dedup: shared engine-core @0x8012F2E8 (src/shared) */ - -DEFINE_func_8012F374() /* dedup: shared engine-core @0x8012F374 (src/shared) */ - - - -// @class: remat -// @stuck: none — MATCH - -DEFINE_func_8012F40C() /* dedup: shared engine-core @0x8012F40C (src/shared) */ - - -DEFINE_func_8012F49C() /* dedup: shared engine-core @0x8012F49C (src/shared) */ - -DEFINE_func_8012F568() /* dedup: shared engine-core @0x8012F568 (src/shared) */ - -DEFINE_func_8012F5F4() /* dedup: shared engine-core @0x8012F5F4 (src/shared) */ - -DEFINE_func_8012F68C() /* dedup: shared engine-core @0x8012F68C (src/shared) */ - -DEFINE_func_8012F75C() /* dedup: shared engine-core @0x8012F75C (src/shared) */ - -DEFINE_func_8012F7B4() /* dedup: shared engine-core @0x8012F7B4 (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH (pending gate) -extern void func_80131170(); -extern void func_80131CA8(); -extern unsigned char D_8018D584[]; - -void func_8012F828(int param_1) -{ - *(unsigned char *)(param_1 + 0xC1) = 4; - if (*(unsigned int *)(param_1 + 0xB4) & 8) { - func_80131170(param_1, D_8018D584, 0xB); - } - func_80131CA8(param_1, 9); -} - - -DEFINE_func_8012F87C() /* dedup: shared engine-core @0x8012F87C (src/shared) */ - - -extern void func_80131170(s32 a0, s32 a1, s32 a2); -extern void func_80131CA8(int a0, int a1); -extern u8 D_8018D590[]; - -void func_8012F8C8(u8* arg0) { - *(u8*)(arg0 + 0xC1) = 7; - if (*(u32*)(arg0 + 0xB4) & 0x80) { - ((void (*)(void*, void*, s32))func_80131170)(arg0, D_8018D590, 0xB); - } - ((void (*)(void*, s32))func_80131CA8)(arg0, 0x16); -} - - -DEFINE_func_8012F91C() /* dedup: shared engine-core @0x8012F91C (src/shared) */ - -DEFINE_func_8012F968() /* dedup: shared engine-core @0x8012F968 (src/shared) */ - -DEFINE_func_8012FB54() /* dedup: shared engine-core @0x8012FB54 (src/shared) */ - -DEFINE_func_8012FC30() /* dedup: shared engine-core @0x8012FC30 (src/shared) */ - -DEFINE_func_8012FCA4() /* dedup: shared engine-core @0x8012FCA4 (src/shared) */ - -// @class: schedule -// @stuck: none — MATCH (57 ins), byte-exact via rtu_match on the real TU. -// ROOT CAUSE of the prior 3-off "irreducible schedule-steal": the wave-2 draft had the WRONG ARITY for -// func_80131B14. It cast the call to (int,int) and passed (param_1, 0x1C), which forced `li a1,0x1C` to be -// func_80131B14's OWN arg. That premise made the beqz-delay `li a1,0x1C` / jal-delay `move a0,s0` look like an -// un-reorderable {li,move} schedule-steal (calls.c emits a0 first; sched2 keeps LUID; reorg swaps them). -// THE FIX: func_80131B14 takes ONE arg — ((void(*)(int))func_80131B14)(param_1). Then: -// - func_80131B14's own delay slot = `move a0,s0` (its a0 arg), and a1 is NOT live across it. -// - the `li a1,0x1C` in the beqz(0x100) delay slot is the TERMINAL func_80131CA8(param_1,0x1C)'s arg, which -// reorg fill_slots_from_thread shares into the delay slot for the beqz-taken (else) edge FOR FREE, because -// a1 is dead on the fall-through (1-arg func_80131B14 never reads a1) so there is no resource conflict. -// No barrier, no register pin, no schedule mutation — the correct arity makes the target schedule fall out -// of stock gcc-2.7.2 reorg. (Lesson for the cookbook: before conceding a delay-slot "steal" as irreducible, -// re-derive the CALLEE ARITY from the asm — a spurious extra register arg that is live across the call is what -// blocks reorg from sharing a downstream constant into a branch delay slot.) - - -s32 func_8012FCC4(s32 param_1) { - extern int D_8018D59C; - - int v1 = *(int *)(((int)param_1) + 0xC4); - *(char *)(((int)param_1) + 0xC1) = 8; - if (v1 & 2) { - *(char *)(((int)param_1) + 0xC1) = 1; - func_80131CA8(((int)param_1), 3); - return; - } - if (v1 & 1) { - ((void (*)(int, int))func_80131E00)(((int)param_1), 1); - return; - } - if (*(int *)(((int)param_1) + 0xB4) & 0x100) { - ((void (*)(int))func_80131B14)(((int)param_1)); - if (*(short *)(((int)param_1) + 0x76) <= 0) { - ((void (*)(int, int))func_80131E00)(((int)param_1), 0xC); - return; - } - if (((s32(*)(s32, s32))func_80131A34)(((int)param_1), 4) != 0) { - *(char *)(((int)param_1) + 0xC2) = 0; - } else { - *(short *)(((int)param_1) + 0x98) = 0; - *(char *)(((int)param_1) + 0xC2) = 1; - } - ((void (*)(int, void *))func_8012B14C)(((int)param_1), &D_8018D59C); - *(int *)(((int)param_1) + 0x1C) = 0; - func_80131CA8(((int)param_1), 0x1C); - return; - } - func_80131CA8(((int)param_1), 0x1C); -} - - - -DEFINE_func_8012FDA8() /* dedup: shared engine-core @0x8012FDA8 (src/shared) */ - -DEFINE_func_8012FE70() /* dedup: shared engine-core @0x8012FE70 (src/shared) */ - -DEFINE_func_8012FF00() /* dedup: shared engine-core @0x8012FF00 (src/shared) */ - -DEFINE_func_8012FF4C() /* dedup: shared engine-core @0x8012FF4C (src/shared) */ - -DEFINE_func_8012FF98() /* dedup: shared engine-core @0x8012FF98 (src/shared) */ - -DEFINE_func_8013001C() /* dedup: shared engine-core @0x8013001C (src/shared) */ - -DEFINE_func_80130088() /* dedup: shared engine-core @0x80130088 (src/shared) */ - -DEFINE_func_801300F4() /* dedup: shared engine-core @0x801300F4 (src/shared) */ - -DEFINE_func_801301E8() /* dedup: shared engine-core @0x801301E8 (src/shared) */ - -DEFINE_func_80130278() /* dedup: shared engine-core @0x80130278 (src/shared) */ - -DEFINE_func_80130314() /* dedup: shared engine-core @0x80130314 (src/shared) */ - -DEFINE_func_80130360() /* dedup: shared engine-core @0x80130360 (src/shared) */ - -DEFINE_func_801303A0() /* dedup: shared engine-core @0x801303A0 (src/shared) */ - -DEFINE_func_801303EC() /* dedup: shared engine-core @0x801303EC (src/shared) */ - -DEFINE_func_80130438() /* dedup: shared engine-core @0x80130438 (src/shared) */ - -DEFINE_func_80130514() /* dedup: shared engine-core @0x80130514 (src/shared) */ - -DEFINE_func_801305CC() /* dedup: shared engine-core @0x801305CC (src/shared) */ - -DEFINE_func_80130650() /* dedup: shared engine-core @0x80130650 (src/shared) */ - -DEFINE_func_80130740() /* dedup: shared engine-core @0x80130740 (src/shared) */ - -DEFINE_func_801307B0() /* dedup: shared engine-core @0x801307B0 (src/shared) */ - -DEFINE_func_80130858() /* dedup: shared engine-core @0x80130858 (src/shared) */ - -DEFINE_func_80130898() /* dedup: shared engine-core @0x80130898 (src/shared) */ - -DEFINE_func_801308DC() /* dedup: shared engine-core @0x801308DC (src/shared) */ - -DEFINE_func_80130974() /* dedup: shared engine-core @0x80130974 (src/shared) */ - -DEFINE_func_80130A18() /* dedup: shared engine-core @0x80130A18 (src/shared) */ - -DEFINE_func_80130AC4() /* dedup: shared engine-core @0x80130AC4 (src/shared) */ - -DEFINE_func_80130AF0() /* dedup: shared engine-core @0x80130AF0 (src/shared) */ - -DEFINE_func_80130C08() /* dedup: shared engine-core @0x80130C08 (src/shared) */ - - -extern void (*D_8018D5A4[])(void); - -void func_80130D0C(void *a0) { - D_8018D5A4[*(u8 *)((s32)a0 + 0xC1)](); -} - - - -// @class: regalloc-order -// @stuck: none — MATCH (266/266). Levers: pin pa=$s2 p=$s3, tbl=$s0 (NOT s1v — leave natural so switch-mask lands in $v1); tight-block pins for the table-addr temps `register s32 v1 __asm__("$3"); register s8 *bp __asm__("$2")` force offset=$v1/base=$v0 (else compute-into-dest $s0); inline offset `TABLE + s1v*2` (late) keeps the 2-sll delay-slot dup; 0x60000 reuses `tbl` (not a fresh `e`) so it stays $s0 and materializes after rand(). -extern s32 rand(void); -extern u8 D_80078E78[]; -extern u16 D_80078EB2; -extern u16 D_80078EB4; -extern s16 D_8018D5F4[]; -extern s16 D_8018D624[]; -extern s16 D_8018D684[]; -extern s16 D_8018D68C[]; -extern s16 D_8018D6AC[]; - -void func_80130D48(s32 arg0) -{ - register s16 *tbl __asm__("$16"); - register s32 pa __asm__("$18") = arg0; - register u8 *p __asm__("$19") = D_80078E78; - s32 s1v; - s32 call_a0; - s32 call_a1; - s32 cnt; - s32 r; - void *ret; - - s1v = func_80131CF4(*(s32 *)((s8 *)pa + 0xBC), 0x15); - if (s1v == 0) { - return; - } - - if (*(u8 *)((s8 *)pa + 0x5E) == 0xB) { - call_a0 = 0x33; - call_a1 = 0; - goto do_call; - } - - switch (s1v & 0xFFFF0000) { - case 0x10000: { - u32 x = D_80078EB4; - u32 y = D_80078EB2; - u32 b; - u32 a; - - s1v = 0; - if (x == y) { - s1v = 0xC; - } else if ((y >> 1) >= x) { - s1v = 3; - } - - b = *(u16 *)(p + 0x40); - a = *(u16 *)(p + 0x3E); - if (b == a) { - s1v += 0x18; - } else if ((a >> 1) >= b) { - s1v += 6; - } - { register s32 v1 __asm__("$3"); register s8 *bp __asm__("$2"); v1 = s1v * 2; bp = (s8 *)D_8018D624; tbl = (s16 *)(bp + v1); } - - r = rand() % 100; - cnt = 0; - loop27: - if (r >= *tbl) { - cnt += 1; - tbl += 1; - if (cnt < 3) { - goto loop27; - } - } - - s1v = 0; - switch (cnt) { - case 0: - tbl = D_8018D684; - s1v = 0x31; - break; - case 1: { - s32 mx = *(u16 *)(p + 0x3A); - s32 cur = *(u16 *)(p + 0x3C); - if (((mx * 7) / 10) >= cur) { - s1v = 4; - if ((mx / 2) >= cur) { - s1v = 8; - if ((mx / 5) >= cur) { - s1v = 0xC; - } - } - } - { register s32 v1 __asm__("$3"); register s8 *bp __asm__("$2"); v1 = s1v * 2; bp = (s8 *)D_8018D68C; tbl = (s16 *)(bp + v1); } - s1v = 0x32; - break; - } - case 2: { - s32 mx = *(u16 *)(p + 0x3E); - s32 cur = *(u16 *)(p + 0x40); - if (((mx * 7) / 10) >= cur) { - s1v = 4; - if ((mx / 2) >= cur) { - s1v = 8; - if ((mx / 5) >= cur) { - s1v = 0xC; - } - } - } - { register s32 v1 __asm__("$3"); register s8 *bp __asm__("$2"); v1 = s1v * 2; bp = (s8 *)D_8018D6AC; tbl = (s16 *)(bp + v1); } - s1v = 0x33; - break; - } - } - - r = rand() % 100; - call_a1 = 0; - loop50: - if (r >= *tbl) { - call_a1 += 1; - tbl += 1; - if (call_a1 < 4) { - goto loop50; - } - } - call_a0 = s1v; - goto do_call; - } - case 0x20000: - call_a0 = 0x33; - call_a1 = 0; - goto do_call; - case 0x30000: - call_a0 = 0x31; - call_a1 = 0; - goto do_call; - case 0x40000: - call_a0 = 0x32; - call_a1 = 0; - goto do_call; - case 0x50000: - call_a0 = 0x33; - call_a1 = 0; - goto do_call; - case 0x60000: { - s32 rr = rand() & 0xFF; - tbl = D_8018D5F4; - if (rr >= *tbl) { - do { - tbl += 3; - } while (rr >= *tbl); - } - call_a0 = tbl[1]; - if (*(u16 *)(p + 0x40) < 4U) { - call_a0 = 0x33; - } - call_a1 = tbl[2]; - goto do_call; - } - case 0x70000: - call_a0 = 0x27B; - call_a1 = 0; - goto do_call; - default: - return; - } - -do_call: - ret = func_8012C658(call_a0, call_a1, pa); - if (ret != 0) { - *(u16 *)((s8 *)ret + 0xA) -= 0x20; - } -} - - -// @class: loop-guard -// @stuck: none — MATCH (88 ins). Keys: duplicate the c!=0/c==0 bodies verbatim (gcc cross-jumps -// the shared "|=4;goto tail" into L240 on its own); tail dispatch as `if (((s32(*)(s32))func_8012BCCC)(p) <= 0x8FFF)` -// (the <= polarity makes the >0x8FFF/0x33-first block the bnez'd else=L298, fall-through = 0x32-first); -// both AC8 tails cross-jump-merge into the shared L2AC final call. Externs aligned to the file's -// existing decls for gate-safety: func_80131B14(void) [file line 1486], func_8012B14C/func_8012BCCC -// canonical (s32) [DEFINE macros], ((s32(*)())func_80131AC8)() no-proto (compatible w/ later 1-arg DEFINE, 2-arg call). - - -void func_80131170(s32 p, s32 b, s32 c) { - extern u8 D_8018D578[]; - - func_80131B14(); - *(u8 *)(((u8 *)p) + 0xC2) = 0; - *(u8 *)(((u8 *)p) + 0xC3) = 0; - *(s16 *)(((u8 *)p) + 0x98) = 0; - if (((u8 *)b) == 0) { - ((u8 *)b) = D_8018D578; - } - func_8012B14C((s32)((u8 *)p), (s32)((u8 *)b)); - *(s32 *)(((u8 *)p) + 0x1C) = 0; - if (c != 0) { - if (((s32(*)(s32, s32))func_80131A34)((s32)((u8 *)p), c) != 0) goto tail; - if (((s32(*)(s32, s32))func_80131A34)((s32)((u8 *)p), 0x24) != 0) goto tail; - *(s32 *)(((u8 *)p) + 0xC4) &= ~4; - if (((s32(*)(s32, s32))func_80131A34)((s32)((u8 *)p), 0x20) != 0) { - *(s32 *)(((u8 *)p) + 0xC4) |= 4; - } else { - *(s16 *)(((u8 *)p) + 0x98) = 0; - } - } else { - if (((s32(*)(s32, s32))func_80131A34)((s32)((u8 *)p), 0x24) != 0) goto tail; - *(s32 *)(((u8 *)p) + 0xC4) &= ~4; - if (((s32(*)(s32, s32))func_80131A34)((s32)((u8 *)p), 0x20) != 0) { - *(s32 *)(((u8 *)p) + 0xC4) |= 4; - } else { - *(s16 *)(((u8 *)p) + 0x98) = 0; - } - } -tail: - if (*(s16 *)(((u8 *)p) + 0x76) > 0) { - return; - } - if (((s32(*)(s32))func_8012BCCC)((s32)((u8 *)p)) <= 0x8FFF) { - if (((s32(*)())func_80131AC8)(((u8 *)p), 0x32) != 0) return; - ((s32(*)())func_80131AC8)(((u8 *)p), 0x33); - } else { - if (((s32(*)())func_80131AC8)(((u8 *)p), 0x33) != 0) return; - ((s32(*)())func_80131AC8)(((u8 *)p), 0x32); - } -} - - - -// @class: struct -// @stuck: none — MATCH (8-byte alignment-1 struct copy → lwl/lwr/swl/swr) - - /* size 8, alignment 1 -> unaligned copy */ - - -s32 func_801312D0(s32 param_1, void *param_2) -{ - extern int func_80131CF4(int, int); - extern M8_801312D0 D_8018D6CC; - - int iVar5; - - iVar5 = func_80131CF4(*(int *)(((int)param_1) + 0xBC), 0x2E); - if (iVar5 != 0) { - ((short *)param_2)[2] = 0; - ((short *)param_2)[0] = 0; - ((short *)param_2)[1] = (short)iVar5; - } else { - *(M8_801312D0 *)((short *)param_2) = D_8018D6CC; - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (424/424). Verified TWICE: match_one 424/424 standalone AND 424/424 -// relocation-masked through the REAL src/ov_SC01_077/ov_SC01_077_jr_8012ACE0.c at the -// func_80131340 slot (L1635) with every DEFINE_ macro expanded (cpp -> cc1 -> maspsx -// --expand-div -> as, exit 0, zero `conflicting types`). -// -// --------------------------------------------------------------------------------------- -// THE TWO LEVERS THAT CRACKED IT (both byte-proven; do not "clean up"): -// -// (1) `case 0: case 1:` SHARE one block. jtbl_801D8144 (read from the sibling overlay data, -// asm/ov_SC03_099/data/tail2.data.s @801BCE68) is -// [0]=0x80131440 [1]=0x80131440 [2]=0x80131634 [3]=0x8013174C [4]=0x801318F4 -// — two entries point at the SAME block. That is the ONLY reason the shared block -// re-tests `*(u8*)(a0+0xC2) == 0` to gate its vector-init half (gcc-2.7.2 has no VRP, -// so the switch value is not propagated into the case body). -// -// (2) CROSS-JUMP POLARITY (§5a, the 4-instruction shortfall). The `lh 0x76` / E00-vs-C78 -// if-else appears TWICE (case 3's tail @801318DC and case 4 @80131944). Both arms must -// be written `if (x <= 0) E00(a0,6); else C78(a0);` — the SAME polarity in BOTH sites. -// Writing case 3 as the "natural" `if (x > 0) C78 else E00` compiles 4 ins SHORT: gcc -// merges case 3's ENTIRE tail into case 4's (`j` straight to the shared `lh`). -// Why (ground-truthed against tools/reference/gcc-2.7.2/jump.c): -// - jump.c:1969 `find_cross_jump(insn, target, 2, ...)` pairs each `j Lend` with every -// OTHER jump to Lend (the jump_chain) and merges BACKWARD while -// `rtx_renumbered_equal_p` holds. The forward walk hits the LOWER address first, so -// case 3 is always e1 (deleted/redirected) and case 4 is e2 (kept) — hence the -// surviving .L80131954/.L80131964 bodies physically live in case 4. -// - With the matching polarity, case 3's FIRST `j` is the E00 body -> it merges into -// .L80131954, leaving `bgtz -> Lelse; j .L80131954; Lelse:`. Lelse now sits directly -// after the `j`, so jump.c's conditional-jump-around-an-unconditional-jump transform -// fires and INVERTS it to `blez -> .L80131954`; the C78 body then merges into -// .L80131964, giving exactly `blez .L80131954 / j .L80131964`. The two sites are now -// textually different (blez+j vs bgtz+fallthru), so find_cross_jump stops at the -// branch and both `lh` blocks survive. That asymmetric-looking output is EMITTED BY -// symmetric source — the inversion is what creates the asymmetry. -// - With the opposite polarity in case 3, the C78 body merges FIRST, the inversion -// fires the other way, and case 3 becomes byte-identical to case 4 -> fully merged. -// NOTE: the §5a volatile-asm barrier is the WRONG tool here — it would also un-merge the -// .L80131954/.L80131964 call bodies (+8 ins). The fix is polarity, not a barrier. -// -// OTHER BYTE-PROVEN KEYS: -// - Two SEPARATE locals for the two func_80131CF4 results. Reusing one `temp` lets gcc -// coalesce it into $a1 for the second call and emits an extra `move a1,v0` up at the -// FIRST call site (+1 ins, whole-function cascade). -// - The /3 store block: `*(s32*)(a0+0x14) = (-D_801E5A3C)/3;` must come FIRST (before the -// 0x1C/0xC2 stores). Written after them, gcc will not hoist the D_801E5A3C load above -// `sw zero,0x1C($s0)` and the mult-latency slots fill differently (9 ins reordered). -// - sp10/18/20/28 are four 8-byte, 2-byte-aligned vectors. `sp28 = sp20` is a DEAD -// aggregate copy that gcc-2.7.2 KEEPS (no aggregate DSE) — it is load-bearing, not dead -// code. align(2) < 4 is what makes the copies lwl/lwr + swl/swr (cf. the TU's own `M8` -// align-1 idiom at L1614, used by func_801312D0 directly above this slot). -// - Every vector field read is `lhu` -> the fields are u16. Contrast `lh 0xA($s0)`, -// `lh 0x76($s0)`, `lh 0x12($v0)`, which are genuinely signed (s16 casts). -// - `func_801319E0(a0)` gets a NOP delay slot, not `addu $a0,$s0,$zero`: cse-2.7.2 deletes -// the redundant arg copy because $a0 still holds the param at the first call. Declaring -// it 0-arg to "explain" the nop would be wrong (canonical is 1-arg) — just call it. -// - `*(s32*)(a0+0x10) = *(s32*)(a0+0x10) * 15 / 16;` -> (x<<4)-x then the bgez/+0xF/sra-4 -// signed-div-by-16 fixup. `>>4` would drop the fixup. -// - func_80131D68 is 2-arg here — (a0, D_801E5A38); a1 is reloaded from the global before -// all 5 of its call sites (the value is NOT cached in a callee reg: gcc-2.7.2's cse is -// extended-basic-block-local, so each join point reloads). -// -// DECL RECONCILE (§17a-1) — the TU declares these at FILE scope BEFORE this slot (L1635), -// so they are HARD `conflicting types` if redeclared differently. Sigs below are byte-copies -// of the canonical set; where the canonical return is `void` but the asm USES $v0, the read -// is done with a call-site cast (the codebase's own idiom, engine_core.h L17026) — which is -// codegen-neutral: -// - func_8012CBF4 / func_8012CBA4 / func_8012CC64: canonical `void`, $v0 used -> cast. -// - func_80131E00: canonical takes `struct S80131E00 *` -> declared K&R no-proto here -// (compatible with the prototyped decl at L1250; params are promotion-safe: ptr + s32), -// matching the TU's own precedent `extern void func_80131CA8();` at L1189. -// - func_8012B23C / func_8012CC64 / func_8012CEB0 / func_8012DBD0 / func_8012CBF4 are -// DEFINE_-instantiated ABOVE this slot — the decls here are exact-identical -// redeclarations (legal C), not new sigs. -// - func_80131CF4 is declared 2-arg `(int,int)`, mirroring func_801312D0's already-matched -// block-scope decl at L1619 (the engine_core canonical 1-arg form is the stale one). - -extern void func_801319E0(s32 a0); -extern s32 func_8012DBD0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); -extern void func_8012CC64(s32 a0, s32 a1); -extern int func_80131D68(int, int); -extern s32 func_80143B6C(s32 a0, s32 a1); -extern void func_8012B23C(s32 a0); -extern void func_8012CBA4(s32 a0); -extern void func_8012CBF4(s32 a0); -extern void func_80131E00(); -extern void func_80131C78(s32 a0); -extern void func_80131CA8(int a0, int a1); - -extern s32 D_801E5A38; -extern s32 D_801E5A3C; - -void func_80131340(s32 a0) -{ - /* 8-byte, align-2 vector: align < 4 is what makes the assignments unaligned - * (lwl/lwr + swl/swr) block moves. Block-scope so the body stays self-contained - * for the dedup_propagate lift (§28-#1) and cannot collide with the TU's `M8`. */ - struct V8 { - u16 vx, vy, vz, pad; - }; - extern struct V8 D_8018D6CC; - /* BLOCK-scope, mirroring the already-matched func_801312D0's decl at TU L1619: the - * later DEFINE_func_80131AC8() (TU L1964, AFTER this slot) redeclares func_80131CF4 - * with the stale 1-arg engine_core canonical. A file-scope `extern int - * func_80131CF4(int,int);` here is a HARD `conflicting types` against it (cc1 rc=33, - * measured); block-scope goes out of scope before that macro and compiles clean. */ - extern int func_80131CF4(int, int); - - struct V8 sp10; - struct V8 sp18; - struct V8 sp20; - struct V8 sp28; - s32 temp; - s32 var_a1; - - if (*(s16 *)(a0 + 0xA) >= 0x10) { - func_801319E0(a0); - return; - } - - temp = func_80131CF4(*(s32 *)(a0 + 0xBC), 0x2E); - if (temp != 0) { - sp10.vz = 0; - sp10.vx = 0; - sp10.vy = temp; - } else { - sp10 = D_8018D6CC; - } - - if (*(s32 *)(a0 + 0x10) != 0 || *(s32 *)(a0 + 0x18) != 0) { - var_a1 = func_80131CF4(*(s32 *)(a0 + 0xBC), 0x19); - if (var_a1 == 0) { - var_a1 = 0x50; - } - func_8012DBD0(a0, var_a1, - *(s16 *)(*(s32 *)(a0 + 0x20) + 0x12) + 0x800, 0x1D); - } - - switch (*(u8 *)(a0 + 0xC2)) { - case 0: - case 1: - if (*(s32 *)(a0 + 0xC4) & 4) { - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x10) -= 0x100; - } - *(s32 *)(a0 + 0x1C) += 1; - if (*(s32 *)(a0 + 0x1C) >= 0x3D) { - func_80131E00(a0, 0xD); - return; - } - if (*(u8 *)(a0 + 0xC2) == 0) { - *(u8 *)(a0 + 0xC2) = 1; - sp18.vx = *(u16 *)(a0 + 0x3A); - sp18.vy = *(u16 *)(a0 + 0x3E); - sp18.vz = *(u16 *)(a0 + 0x42); - sp20 = sp18; - sp20.vx += sp10.vx; - sp20.vy += sp10.vy; - sp20.vz += sp10.vz; - sp28 = sp20; /* load-bearing dead aggregate copy — gcc-2.7.2 has no aggregate DSE */ - func_8012CEB0((s32)&sp18, (s32)&sp20, 1); - sp20.vx -= sp10.vx; - sp20.vy -= sp10.vy; - sp20.vz -= sp10.vz; - *(u16 *)(a0 + 0x3A) = sp20.vx; - *(u16 *)(a0 + 0x3E) = sp20.vy; - *(u16 *)(a0 + 0x42) = sp20.vz; - *(u16 *)(a0 + 0x6) = sp20.vx; - *(u16 *)(a0 + 0xA) = sp20.vy; - *(u16 *)(a0 + 0xE) = sp20.vz; - } - D_801E5A38 = ((s32 (*)(s32, s32))func_8012CC64)(a0, (s32)&sp10); - if (D_801E5A38 & 0x8000) { - *(s32 *)(a0 + 0x18) = 0; - *(s32 *)(a0 + 0x10) = 0; - } - if (D_801E5A38 & 0x4000) { - func_8012B23C(a0); - *(u8 *)(a0 + 0xC2) = 4; - } else if (D_801E5A38 & 0x2000) { - if (func_80131D68(a0, D_801E5A38) == 1) { - return; - } - *(u8 *)(a0 + 0xC2) = 2; - func_80143B6C(a0, 1); - *(s32 *)(a0 + 0x14) = 0xFFF30000; - *(s32 *)(a0 + 0x1C) = 0; - } else if (D_801E5A38 & 0x8000) { - *(u8 *)(a0 + 0xC2) = 2; - *(s32 *)(a0 + 0x1C) = 0; - *(s32 *)(a0 + 0x18) = 0; - *(s32 *)(a0 + 0x10) = 0; - } - break; - - case 2: - if (*(s32 *)(a0 + 0xC4) & 4) { - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x10) -= 0x100; - } - *(s32 *)(a0 + 0x1C) += 1; - if (*(s32 *)(a0 + 0x1C) >= 0x3D) { - func_80131E00(a0, 0xD); - return; - } - D_801E5A3C = *(s32 *)(a0 + 0x14); - D_801E5A38 = ((s32 (*)(s32, s32))func_8012CC64)(a0, (s32)&sp10); - if (D_801E5A38 & 0x8000) { - *(s32 *)(a0 + 0x18) = 0; - *(s32 *)(a0 + 0x10) = 0; - } - if (D_801E5A38 & 0x4000) { - func_8012B23C(a0); - *(u8 *)(a0 + 0xC2) = 4; - } else if (D_801E5A38 & 0x2000) { - if (func_80131D68(a0, D_801E5A38) == 1) { - return; - } - func_80143B6C(a0, 1); - /* MUST precede the 0x1C/0xC2 stores — see the header note on the /3 block. */ - *(s32 *)(a0 + 0x14) = (-D_801E5A3C) / 3; - *(s32 *)(a0 + 0x1C) = 0; - *(u8 *)(a0 + 0xC2) = 3; - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x10) = 0; - } else if (D_801E5A38 & 0x8000) { - *(u8 *)(a0 + 0xC2) = 3; - *(s32 *)(a0 + 0x1C) = 0; - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x10) = 0; - *(s32 *)(a0 + 0x18) = 0; - *(s32 *)(a0 + 0x10) = 0; - } - break; - - case 3: - *(s32 *)(a0 + 0x10) = *(s32 *)(a0 + 0x10) * 15 / 16; - *(s32 *)(a0 + 0x18) = *(s32 *)(a0 + 0x18) * 15 / 16; - if (*(u8 *)(a0 + 0xC3) & 1) { - D_801E5A38 = ((s32 (*)(s32))func_8012CBA4)(a0); - if (D_801E5A38 & 0x8000) { - *(s32 *)(a0 + 0x18) = 0; - *(s32 *)(a0 + 0x10) = 0; - } - if (func_80131D68(a0, D_801E5A38) == 1) { - return; - } - if (!(D_801E5A38 & 0x6000)) { - func_80131E00(a0, 0xD); - return; - } - } else { - D_801E5A38 = ((s32 (*)(s32))func_8012CBF4)(a0); - if (D_801E5A38 & 0x8000) { - *(s32 *)(a0 + 0x18) = 0; - *(s32 *)(a0 + 0x10) = 0; - } - if (D_801E5A38 & 0x4000) { - func_8012B23C(a0); - *(u8 *)(a0 + 0xC2) = 4; - break; - } else if (D_801E5A38 & 0x2000) { - if (func_80131D68(a0, D_801E5A38) == 1) { - return; - } - *(u8 *)(a0 + 0xC3) |= 1; - } else if (D_801E5A38 & 0x8000) { - *(s32 *)(a0 + 0x18) = 0; - *(s32 *)(a0 + 0x10) = 0; - } - } - if ((*(s32 *)(a0 + 0x1C) & 3) == 3) { - func_80143B6C(a0, 1); - } - *(s32 *)(a0 + 0x1C) += 1; - if (*(s32 *)(a0 + 0x1C) < 0x11) { - break; - } - if (!(D_801E5A38 & 0x6000)) { - func_80131E00(a0, 0xD); - return; - } - /* polarity MUST match case 4's — see the cross-jump note in the header. */ - if (*(s16 *)(a0 + 0x76) <= 0) { - func_80131E00(a0, 6); - } else { - func_80131C78(a0); - } - break; - - case 4: - D_801E5A38 = ((s32 (*)(s32))func_8012CBA4)(a0); - if (D_801E5A38 & 0x8000) { - *(s32 *)(a0 + 0x18) = 0; - *(s32 *)(a0 + 0x10) = 0; - } - if (D_801E5A38 & 0x2000) { - if (func_80131D68(a0, D_801E5A38) == 1) { - return; - } - if (*(s16 *)(a0 + 0x76) <= 0) { - func_80131E00(a0, 6); - } else { - func_80131C78(a0); - } - } else { - if ((*(s32 *)(a0 + 0x1C) & 3) == 3) { - func_80143B6C(a0, 1); - } - *(s32 *)(a0 + 0x1C) += 1; - if (*(s32 *)(a0 + 0x1C) >= 0x3D) { - func_80131E00(a0, 0xD); - return; - } - } - break; - } - - func_80131CA8(a0, 0x2F); -} - - -DEFINE_func_801319E0() /* dedup: shared engine-core @0x801319E0 (src/shared) */ - - - -/* func_80131A34 — MATCH (37/37). - * Keys: - * - func_80131CF4 is the TU's 2-arg canonical `(int,int)` and the SECOND arg is the - * incoming `a1` (kind). $a1 already holds it, so the call costs no arg-setup insn -- - * but the extra arg ref is what breaks the sched2 prologue save-order tie so - * `sw $s0` schedules before `sw $ra` (cookbook §52a RC-3 / sched.md S7). Without it - * the pair comes out ra-then-s0 (2 mismatches); the `const`-load form of RC-3 fixes - * the tie but OVER-frees (the `lw $a0` hoists above both saves, 3 mismatches). - * - Declaration is BLOCK-SCOPE on purpose, mirroring func_801312D0 (TU L1619) and - * func_80131340 (TU L1822): the later DEFINE_func_80131AC8() re-declares - * func_80131CF4 with the stale 1-arg engine_core canonical, so a file-scope 2-arg - * decl here is a hard `conflicting types` (cc1 rc=33). - * - func_8012A828 is the TU's file-scope canonical (L280) `(s32, void *)`; `p` rides in - * $a1 from the return of func_80131CF4, so no move is emitted. - */ -DEFINE_func_80131A34() /* dedup: shared engine-core @0x80131A34 (src/shared) */ - - -DEFINE_func_80131AC8() /* dedup: shared engine-core @0x80131AC8 (src/shared) */ - -// @class: regalloc-order -// @stuck: none — MATCH (89 ins). Reconcile: TU canonical decl is `void func_80131B14(void)` -// (ov_SC01_077_a.c L1676/L1756; callers cast to (void(*)(int)) when passing p), so the def MUST be -// (void) or cc1 hard-errors `conflicting types` (exit 33). §42c lever #6: capture incoming $a0 into a -// NORMAL pseudo (`register u8 *a0v __asm__("$4"); u8 *p = a0v;`) so p gets a callee-saved home ($s0). -// func_8012B2CC/func_8012B23C are file-scope DEFINE'd here (split L740/L744) as void(s32) — do NOT redeclare; -// the (void(*)(void*)) cast on the bare name is byte-neutral. Body keys: e(0x5E) as s32 not u8 (kills the -// compare-time andi 0xff); f76 dual-width via per-access casts (lhu in the decrement, lh in the <=0 compare); -// the p->f20 reload split into TWO separate temps so the 2nd load takes $v0 not $v1. - -void func_80131B14() { - extern void func_8002A520(void *); - extern void func_8002A790(void *); - extern u8 D_8018D6D4; - - register u8 *a0v __asm__("$4"); - u8 *p = a0v; - - - s32 e = *(u8 *)(p + 0x5E); - - if (*(s16 *)(p + 0x60) != 0) { - if (e == 0x1D) { - *(s16 *)(p + 0x82) = 0; - *(s16 *)(p + 0x7C) = *(u16 *)(p + 0x06); - *(s16 *)(p + 0x7E) = *(u16 *)(p + 0x0A); - *(s16 *)(p + 0x80) = *(u16 *)(p + 0x0E); - } - { - s32 dec; - s32 q = *(s32 *)(p + 0x78); - if (q != 0) { - dec = ((s32)*(s16 *)(p + 0x60) * (s32)*(s16 *)(q + 0x30)) >> 12; - if (dec <= 0) dec = 1; - } - *(u16 *)(p + 0x76) = *(u16 *)(p + 0x76) - dec; - } - ((void (*)(void *))func_8016AA50)(p); - if (*(u16 *)(p + 0x82) & 1) { - ((void (*)(void *))func_8016B428)(p); - ((void(*)(void *))func_80019064)(&D_8018D6D4); - } - } - - *(u16 *)(p + 0x5C) = *(u16 *)(p + 0x5C) & 0xFFFE; - - if (e != 0x1D) { - if (*(u8 *)(p + 0xC8)) func_8002A520(p); - if (*(u8 *)(p + 0xC9)) func_8002A790(p); - } - - if (*(s16 *)(p + 0x76) <= 0) *(s16 *)(p + 0x5C) = 0; - - { - s32 r = *(s32 *)(p + 0x20); - *(s16 *)(r + 0x12) = (*(u16 *)(p + 0x62) + 0x800) & 0xFFF; - { - s32 r2 = *(s32 *)(p + 0x20); - *(s16 *)(r2 + 0x14) = 0; - *(s16 *)(r2 + 0x10) = 0; - } - } - - ((void (*)(void *))func_8012B2CC)(p); - ((void (*)(void *))func_8012B23C)(p); -} - - - -DEFINE_func_80131C78() /* dedup: shared engine-core @0x80131C78 (src/shared) */ - - -/* func_80131CA8 — RECONCILE (§37/§124 asm-label alias) - * - * Declaration-environment conflict, NOT a body problem: - * The TU's DEFINE_func_80131C78() expansion (jr_8012ACE0.c L2232) and the later - * DEFINE_func_80131D68() expansion (L2250) each emit the canonical - * extern void func_80131CA8(int a0, int a1); - * (src/shared/engine_core.h, e.g. L1961/L4131). The byte-correct body is - * `s32 f(int)` — it disagrees on BOTH the return axis (s32 vs void) and the - * arity axis (1 vs 2), so it collides with the macro-emitted declaration on - * either side of the slot. Escape 1 (conform + cast at use) cannot apply: the - * conflict is on the DEFINED symbol itself. - * - * Fix: define under the C name aF80131CA8 with __asm__("func_80131CA8") so the - * C-level name never meets the canonical declaration, while the emitted symbol - * is unchanged. Codegen-neutral — match_one still prints MATCH (19/19). - * This declaration MUST travel with the body. - * - * func_80131CF4 is declared here 1-arg s32, matching the engine_core canonical - * at engine_core.h L6563; it does not collide anywhere in this TU (verified by - * a full preprocess+cc1 of the spliced TU: diagnostic-free apart from - * pre-existing warnings). - */ -extern s32 func_80131CF4(s32 a0); - -s32 aF80131CA8(int a0) __asm__("func_80131CA8"); - -DEFINE_func_80131CA8() /* dedup: shared engine-core @0x80131CA8 (src/shared) */ - - - - -/* func_80131CF4 — table lookup: walk (key, value) pairs; key 0xD chains to the - * next table via value; key == wanted returns value; key 0 terminates. - * - * The __asm__ inside the body is a matching pin, not logic. It does two things - * gcc-2.7.2 -O2 needs in order to reproduce the target's preheader exactly: - * 1. "0"(0xD) forces the 0xD compare constant to be materialised HERE - * (`addiu $v1,$zero,0xD`) instead of being loop-hoisted, which places it - * AFTER the preheader load and drops the load-delay nop at the loop head. - * 2. the "memory" clobber stops CSE folding the preheader re-read of a0[0] - * into the guard's read (that CSE costs the second `lw $v0,0x0($a0)`). - * The asm body is empty, so it emits no instruction of its own. - * - * RECONCILE (§37/§124 asm-label alias) — the gate error was - * jr_8012ACE0.c:2248 conflicting types for func_80131CF4 || :2164 previous declaration - * :2164 is `DEFINE_func_80131AC8()`, whose expansion (src/shared/engine_core.h:6563) - * carries the STALE 1-arg engine-core canonical `extern s32 func_80131CF4(s32 a0);`. - * That prototype is wrong for this function (the TU's own call sites at L1780/L1903/ - * L2147 all declare and call the real 2-arg form `int func_80131CF4(int, int)`), but - * it is file-visible before the splice point, so a file-scope definition with the true - * signature is a hard `conflicting types` (arity AND param type). Conforming the - * definition to the 1-arg prototype is impossible without changing codegen, and the - * §42 `register s32 a1 __asm__("$5")` route would still leave the param-type mismatch - * on a0 (s32 vs s32*). So the definition is given a different C identifier and pinned - * to the real symbol with an asm label: no declaration ever collides, the emitted - * label is still `func_80131CF4`, and the callers' `jal func_80131CF4` binds to it. - * Zero header edits; body byte-identical (match_one: MATCH, 29 ins). - */ -DEFINE_func_80131CF4() /* dedup: shared engine-core @0x80131CF4 (src/shared) */ - - -DEFINE_func_80131D68() /* dedup: shared engine-core @0x80131D68 (src/shared) */ - - -extern void (*D_8018D6E4[])(struct S80131E00 *a0); - -void func_80131E00(struct S80131E00 *a0, s32 a1) { - a0->field_B0 = a1; - D_8018D6E4[a1](a0); -} - - -DEFINE_func_80131E38() /* dedup: shared engine-core @0x80131E38 (src/shared) */ - -DEFINE_func_80131E7C() /* dedup: shared engine-core @0x80131E7C (src/shared) */ - -DEFINE_func_80131EE4() /* dedup: shared engine-core @0x80131EE4 (src/shared) */ - - -extern void (*D_8018D73C[])(void); - -void func_80131EEC(void *a0) { - D_8018D73C[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_8018D784[])(void); - -void func_80131F28(void *a0) { - D_8018D784[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_8018D78C[])(void); - -void func_80131F64(void *a0) { - D_8018D78C[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_8018D794[])(void); - -void func_80131FA0(void *a0) { - D_8018D794[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_8018D79C[])(void); - -void func_80131FDC(void *a0) { - D_8018D79C[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(int, int); - -/* §37 asm-label aliases: D_8018D73C is declared in this TU as `void (*[])(void)` - * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view - * below is this function's own. D_8018D740 == D_8018D73C + 4 is a SEPARATE - * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ - -void func_80132018(int param_1) -{ - - extern int tbl_D_80187044[][5] __asm__("D_8018D73C"); - extern int tbl_D_80187048[][5] __asm__("D_8018D740"); - int v0; - - v0 = ((int (*)(void))func_8012C1B8)(); - *(int *)(param_1 + 0x20) = v0; - if (v0 == 0) { - ((void (*)(int))func_8012CAE4)(param_1); - } else { - func_8001C214(v0, 0); - *(short *)(param_1 + 0x5c) = 0x80; - *(unsigned short *)(param_1 + 2) += 1; - *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; - *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; - *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; - } -} - - -DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH expected; simple if/else, param saved in $s0 across call - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(int, int); -extern int D_8018D744; - -void func_801320D8(int param_1) -{ - int v0; - - v0 = ((int (*)(void))func_8012C1B8)(); - *(int *)(param_1 + 0x20) = v0; - if (v0 == 0) { - ((void (*)(int))func_8012CAE4)(param_1); - } else { - func_8001C214(v0, 0); - *(int *)(param_1 + 0x58) = (int)&D_8018D744; - *(short *)(param_1 + 0x5c) = 0x80; - *(unsigned short *)(param_1 + 2) += 1; - } -} - - - -s32 func_80132144(s32 param_1) -{ - extern int D_8018D754; - - int v0; - - v0 = ((int (*)(void))func_8012C1B8)(); - *(int *)(((int)param_1) + 0x20) = v0; - if (v0 == 0) { - ((void (*)(int))func_8012CAE4)(((int)param_1)); - } else { - ((void(*)(int, int))func_8001C214)(v0, 0); - *(int *)(((int)param_1) + 0x58) = (int)&D_8018D754; - *(short *)(((int)param_1) + 0x5c) = 0x80; - *(unsigned short *)(((int)param_1) + 2) += 1; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected; simple if/else, param saved in $s0 across call - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(int, int); -extern int D_8018D764; - -void func_801321B0(int param_1) -{ - int v0; - - v0 = ((int (*)(void))func_8012C1B8)(); - *(int *)(param_1 + 0x20) = v0; - if (v0 == 0) { - ((void (*)(int))func_8012CAE4)(param_1); - } else { - func_8001C214(v0, 0); - *(int *)(param_1 + 0x58) = (int)&D_8018D764; - *(short *)(param_1 + 0x5c) = 0x80; - *(unsigned short *)(param_1 + 2) += 1; - } -} - - - -// @class: plumbing -// @stuck: none — MATCH expected; simple if/else, param saved in $s0 across call - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(int, int); -extern int D_8018D774; - -void func_8013221C(int param_1) -{ - int v0; - - v0 = ((int (*)(void))func_8012C1B8)(); - *(int *)(param_1 + 0x20) = v0; - if (v0 == 0) { - ((void (*)(int))func_8012CAE4)(param_1); - } else { - func_8001C214(v0, 0); - *(int *)(param_1 + 0x58) = (int)&D_8018D774; - *(short *)(param_1 + 0x5c) = 0x80; - *(unsigned short *)(param_1 + 2) += 1; - } -} - - -DEFINE_func_80132288() /* dedup: shared engine-core @0x80132288 (src/shared) */ - -DEFINE_func_8013240C() /* dedup: shared engine-core @0x8013240C (src/shared) */ - -DEFINE_func_801325B8() /* dedup: shared engine-core @0x801325B8 (src/shared) */ - -DEFINE_func_8013277C() /* dedup: shared engine-core @0x8013277C (src/shared) */ - -DEFINE_func_80132784() /* dedup: shared engine-core @0x80132784 (src/shared) */ - -DEFINE_func_80132DC4() /* dedup: shared engine-core @0x80132DC4 (src/shared) */ - -DEFINE_func_80132E6C() /* dedup: shared engine-core @0x80132E6C (src/shared) */ - -DEFINE_func_80132EC4() /* dedup: shared engine-core @0x80132EC4 (src/shared) */ - -DEFINE_func_80132EF4() /* dedup: shared engine-core @0x80132EF4 (src/shared) */ - - -/* func_80132F40 — ov_SC01_077 (jr_8012ACE0 region), 72 ins, -O2. *** MATCH *** - * - * Verified: - * python3 tools/match_one.py func_80132F40 --c .run/near6/wave23/func_80132F40.c \ - * --asm-subdir asm/ov_SC01_077/nonmatchings/ov_SC01_077_jr_8012ACE0 - * -> MATCH (72 ins) - * - * --------------------------------------------------------------------------- - * WHAT THE WAVE-22 SEED GOT WRONG (the 6-mismatch plateau, and why s32 "cost 3") - * --------------------------------------------------------------------------- - * The seed's note blamed the `addiu $s3,$sp,0x10` hoist on a *whole-function CSE - * fork keyed on s16-vs-s32 w/h*, and concluded the s32 world was unreachable. - * Both halves of that are wrong, and the real mechanism is a reusable idiom. - * - * The hoisted register is the block-move source-address pseudo (reg 83 = - * `(plus fp 16)`, created by expand for `v[1] = v[0]`). Whether it survives is - * decided by ONE thing: does CSE's *extended basic block* still contain it when - * CSE reaches the two `&v[0]` call arguments? - * - * cse.c:cse_end_of_basic_block scans `while (p && GET_CODE (p) != CODE_LABEL)`. - * It can walk PAST a conditional jump only via - * - follow_jumps : target label preceded by a BARRIER, LABEL_NUSES == 1, or - * - skip_blocks : "branch around a block", no labels inside (-O2 sets both) - * and it BREAKS EARLY on - * `if (! after_loop && NOTE_LINE_NUMBER (p) == NOTE_INSN_LOOP_END) break;` - * - * With s16 w the min block stayed a *diamond* (jump.c's `if(..) x=a; else x=b;` - * -> `x=b; if(..) x=a;` at jump.c:699 is blocked when the moved insn carries a - * REG_EQUAL note — the sign_extend note from the sll/sra pair). The diamond's - * BARRIER + join label ended CSE's block before the calls, so `&v[0]` was - * recomputed at each site. With s32 w the diamond was flattened in jump1, and - * skip_blocks then walked CSE straight through to both call sites -> reg 83 was - * substituted, went live across a call, and took a 5th callee-saved register. - * So the fork was never about the *type* — it was about the CFG shape at CSE. - * - * --------------------------------------------------------------------------- - * THE NEW LEVER (cookbook candidate: "zero-instruction CSE path cut") - * --------------------------------------------------------------------------- - * `do { } while (0);` emits NOTE_INSN_LOOP_BEG/CONT/END and ZERO instructions. - * A NOTE_INSN_LOOP_END is exactly what cse1 (after_loop == 0) breaks its - * extended basic block on. Dropping one between the struct copy and the call - * sites cuts the path, kills the hoist, and costs nothing: 73 ins -> 70 ins. - * (Measured: without it this same file is 75 ins / 58 mismatched.) - * It is *not* an ordering/pressure hack — 1..8 empty `__asm__ __volatile__("")` - * barriers, which lengthen live ranges but emit no LOOP notes, changed the hoist - * by exactly nothing, which refutes the global.c allocno-priority explanation. - * - * --------------------------------------------------------------------------- - * THE MIN BLOCK (idx 37..44) - * --------------------------------------------------------------------------- - * lh $v1,8($v0) w (both loads are SImode sign_extend -> `lh`) - * lh $v0,0xA($v0) h (reuses the dying pointer's $v0) - * nop (load-delay; nothing schedulable) - * addu $a0,$v0,$zero hh = h (a REAL source-level carrier) - * slt $v0,$v0,$v1 c = h 75 ins / 58 drop `p` pin -> 71 ins / 40 - * drop `h` pin -> 71 ins / 33 drop `c` pin -> 70 ins / 36 - * drop `hh` pin -> 71 ins / 32 drop `q` pin -> 72 ins / 12 - * adding a `w`->$3 pin or an `m`->$18 pin -> still MATCH (so both are omitted) - * - * Canonical decls (wave22_targets.json sig_hints) verbatim; D_80126BE0 is - * declared exactly as the 20+ sibling TUs already declare it. - */ -DEFINE_func_80132F40() /* dedup: shared engine-core @0x80132F40 (src/shared) */ - - -DEFINE_func_80133060() /* dedup: shared engine-core @0x80133060 (src/shared) */ - -#define gte_SetRotMatrix(r0) __asm__ volatile ( \ - "lw $12, 0( %0 );" \ - "lw $13, 4( %0 );" \ - "ctc2 $12, $0;" \ - "ctc2 $13, $1;" \ - "lw $12, 8( %0 );" \ - "lw $13, 12( %0 );" \ - "lw $14, 16( %0 );" \ - "ctc2 $12, $2;" \ - "ctc2 $13, $3;" \ - "ctc2 $14, $4" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_SetTransMatrix(r0) __asm__ volatile ( \ - "lw $12, 20( %0 );" \ - "lw $13, 24( %0 );" \ - "ctc2 $12, $5;" \ - "lw $14, 28( %0 );" \ - "ctc2 $13, $6;" \ - "ctc2 $14, $7" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_SetRotMatrix(r0) __asm__ volatile ( \ - "lw $12, 0( %0 );" \ - "lw $13, 4( %0 );" \ - "ctc2 $12, $0;" \ - "ctc2 $13, $1;" \ - "lw $12, 8( %0 );" \ - "lw $13, 12( %0 );" \ - "lw $14, 16( %0 );" \ - "ctc2 $12, $2;" \ - "ctc2 $13, $3;" \ - "ctc2 $14, $4" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_SetTransMatrix(r0) __asm__ volatile ( \ - "lw $12, 20( %0 );" \ - "lw $13, 24( %0 );" \ - "ctc2 $12, $5;" \ - "lw $14, 28( %0 );" \ - "ctc2 $13, $6;" \ - "ctc2 $14, $7" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_ldv0(r0) __asm__ volatile ( \ - "lwc2 $0, 0( %0 );" \ - "lwc2 $1, 4( %0 )" \ - : \ - : "r"( r0 ) ) -#define gte_rtv0tr() __asm__ volatile ( \ - "nop;" \ - "nop;" \ - "mvmva 1, 0, 0, 0, 0" \ - : \ - : \ - : "memory" ) -#define gte_stlvnl(r0) __asm__ volatile ( \ - "swc2 $25, 0( %0 );" \ - "swc2 $26, 4( %0 );" \ - "swc2 $27, 8( %0 )" \ - : \ - : "r"( r0 ) \ - : "memory" ) -#define gte_stflg(r0) __asm__ volatile ( \ - "cfc2 $12, $31;" \ - "nop;" \ - "sw $12, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "$12", "memory" ) - -DEFINE_func_801330E0() /* dedup: shared engine-core @0x801330E0 (src/shared) */ - - - -/* 32-byte opaque block: drives gcc's movstrsi block-move (4x lw / 4x sw, cookbook - * struct-fold) instead of 8 serial lw/sw pairs. Locally named (engine_types.h's - * identical `Blk32` is an anonymous-tag typedef -> a same-name redefinition here - * is a C89 error in the real TU). */ - - -DEFINE_func_80133298() /* dedup: shared engine-core @0x80133298 (src/shared) */ - - -DEFINE_func_8013339C() /* dedup: shared engine-core @0x8013339C (src/shared) */ - -DEFINE_func_8013361C() /* dedup: shared engine-core @0x8013361C (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH - -extern s32 D_801E5A80; -extern s32 D_801E5A84[]; -extern int D_801E5A88; -extern void func_80136BC4(s32 a0); - -void func_801336E8(void *a0, int a1, int a2) { - if (a0 != 0) { - (*(void * *)&D_801E5A80) = a0; - ((void (*)(void))func_80136BC4)(); - } - (*(int *)&D_801E5A84) = a1; - D_801E5A88 = a2; -} - - - - -extern s32 D_801E5A84[]; -extern s32 D_801E5A80; -extern void func_80136BC4(s32); - -void func_8013373C(s16 arg0) { - s32 temp = D_801E5A84[arg0]; - if (temp != 0) { - D_801E5A80 = temp; - func_80136BC4(temp); - } -} - - -// @class: regalloc-order -#include "common.h" - - - -s32 func_80133784(s32 arg0, void *arg1, s32 arg2) { - extern s32 func_80047D3C(s32); - extern s32 func_80133AB0(s16, s16, s16, s32); - extern Box_80133784 * D_8018D7A4; - extern Box_80133784 * D_8018D7A8; - extern s16 D_801E5A8C; - extern u16 D_801E5A90; - - register s32 s1 __asm__("$17"); - s32 s2; - register s16 s3 __asm__("$19"); - register s32 s4 __asm__("$20"); - register s16 a0v __asm__("$4"); - register s16 arg0s __asm__("$21"); - s32 dx, dy, dz; - s32 r, ret; - - a0v = ((s16)arg0); - s1 = 0; - s3 = 0; - s4 = 0; - s2 = 0; - arg0s = a0v; - D_8018D7A4->f6 = -0x7FFF; - D_8018D7A8->f6 = 0x7FFF; - D_8018D7A4->f0 = ((Box_80133784 *)arg1)->f0; - D_8018D7A4->f4 = ((Box_80133784 *)arg1)->f4; - D_8018D7A8->f0 = ((Box_80133784 *)arg2)->f0; - D_8018D7A8->f4 = ((Box_80133784 *)arg2)->f4; - D_801E5A90 = 0; - D_801E5A8C = 0; - - if ((s16)a0v == 0) { - s16 sx = ((Box_80133784 *)arg2)->f0 - ((Box_80133784 *)arg1)->f0; - s16 sy = ((Box_80133784 *)arg2)->f2 - ((Box_80133784 *)arg1)->f2; - s16 sz = ((Box_80133784 *)arg2)->f4 - ((Box_80133784 *)arg1)->f4; - if (sx == 0 && sy == 0) { - s32 zt = (sz == 0); - __asm__("addu %0,%1,$zero" : "=r"(s2) : "r"(zt)); - } - D_8018D7A4->f2 = ((Box_80133784 *)arg1)->f2 - 4; - r = func_80047D3C(sx * sx + sz * sz); - if (r < 3) { - r = 4; - } else if (r < 5) { - r += 1; - } - D_8018D7A8->f2 = ((Box_80133784 *)arg2)->f2 + r + 1; - } else { - D_8018D7A4->f2 = ((Box_80133784 *)arg1)->f2; - if ((s16)a0v == 2) { - D_8018D7A8->f0 = D_8018D7A4->f0; - D_8018D7A8->f2 = D_8018D7A4->f2 + 6; - s2 = 1; - D_8018D7A8->f4 = D_8018D7A4->f4; - } else { - D_8018D7A8->f2 = ((Box_80133784 *)arg2)->f2; - } - } - - while (1) { - s32 ret0; - register s32 retc __asm__("$3"); - __asm__ __volatile__(""); - ret0 = func_80133AB0(arg0s, (s16)D_8018D7A4->f0, (s16)D_8018D7A4->f4, (*(s32*)&D_801E5A80)); - __asm__("addu %0,%1,$zero" : "=r"(retc) : "r"(ret0)); - ret = retc; - if (ret == 0) goto after; - s4 |= ret; - if (s2 != 0) goto after; - { - s16 oldc = s3; - s3 = s3 + 1; - if (oldc >= 5) break; - } - } - - D_8018D7A8->f0 = D_8018D7A4->f0; - D_8018D7A8->f2 = D_8018D7A4->f2; - s1 = 0x2000; - D_8018D7A8->f4 = D_8018D7A4->f4; - goto store_out; - -after: - if ((s16)s4 != 0 || D_801E5A8C != 0) { - s16 t; - __asm__ __volatile__("" :: "r"(s4)); - t = D_8018D7A4->f6; - if (t >= -0xBCB) { - if (t < -0x578) { - s1 |= 0x4000; - } else { - s1 |= 0x8000; - } - } - if ((s16)D_8018D7A8->f6 < -0xBCB) { - s1 |= 0x2000; - } - store_out: - ((Box_80133784 *)arg2)->f0 = D_8018D7A8->f0; - ((Box_80133784 *)arg2)->f2 = D_8018D7A8->f2; - ((Box_80133784 *)arg2)->f4 = D_8018D7A8->f4; - ((Box_80133784 *)arg2)->f6 = D_801E5A90; - return s1 & 0xFFFF; - } - ((Box_80133784 *)arg2)->f6 = D_801E5A90; - return 0; -} - - - - - -s32 func_80133AB0(s16 flag, s16 x, s16 y, s32 arg3) -{ - extern u8 D_8018D7A8; - extern u8 D_8018D7A4; - extern u8 D_8018D7B0; - extern u16 D_801E5A90; - extern s16 D_801E5A8C; - extern s32 func_80133CD4(); - - Map_80133AB0 *map = (Map_80133AB0 *)arg3; - u16 *pA = (*(u16 * *)&D_8018D7A8); - u16 *pB = (*(u16 * *)&D_8018D7A4); - u16 *pC = (*(u16 * *)&D_8018D7B0); - register int zr __asm__("$0"); - u32 X, Y, cell, Xc, Yc; - u16 k, off; - int cnt; - u16 *cp, *lst; - u8 *s0; - u16 raw; - u32 hib; - register int harg __asm__("$4"); - s32 ret; - void *p0C, *p10; - u8 *p14, *p18, *p1C; - u16 *cells; - - pC[0] = pA[0] - pB[0]; - pC[1] = pA[1] - pB[1]; - pC[2] = pA[2] - pB[2]; - - X = ((((u16)x + 0x8000) >> 7) & 0x1ff) - map->ox; - __asm__("addu %0,%1,$zero" : "=r"(Xc) : "r"(X)); - if (!((X & 0xffff) < map->w)) - return 0; - Y = ((((u16)y + 0x8000) >> 7) & 0x1ff) - map->oy; - __asm__("addu %0,%1,$zero" : "=r"(Yc) : "r"(Y)); - if (!((Y & 0xffff) < map->h)) - return 0; - - cell = (Yc & 0xffff) * map->w + (Xc & 0xffff); - cells = map->cells; - p14 = map->p14; - p0C = map->p0C; - p10 = map->p10; - p18 = map->p18; - p1C = map->p1C; - k = cell * 2; - cp = (u16 *)(k * 2 + (u32)cells); - off = cp[0]; - cnt = cp[1]; - lst = (u16 *)(p14 + off); - - while (((cnt-- + zr) & 0xffff) != 0) { - raw = *lst; - hib = raw & 0x8000; - harg = hib + zr; - if (hib == 0) { - s0 = p18 + raw * 18; - } else { - s0 = p1C + (raw & 0x7fff) * 22; - } - ret = (s16)func_80133CD4((s16)(harg | flag), s0, p10, p0C); - if (ret != 0) { - if (ret > 0) - D_801E5A90 = *(u16 *)s0; - return 1; - } - lst++; - if (D_801E5A8C != 0) { - D_801E5A90 = *(u16 *)s0; - return 0; - } - } - return 0; -} - - - -s32 func_80133CD4(arg0, cmd, base, arr) - s16 arg0; - s16 *cmd; - s16 *base; - s32 *arr; -{ - - extern u16 *D_8018D7A8; - extern u16 *D_8018D7A4; - extern s16 *D_8018D7B0; - extern s16 *D_8018D7AC; - extern s32 *D_8018D7B8; - extern s32 *D_8018D7BC; - extern u16 D_801E5A90; - extern u8 D_801152A8[]; - extern s16 D_801152AA; - extern s16 D_801152AC; - extern u16 D_801152AE; - extern u8 D_801152B0; - extern s32 func_80134310(); - extern s32 func_8013435C(); - - s16 *s3 = ((ElemK *)base)[cmd[1]].e; - s32 s6 = arr[cmd[2]]; - s32 s0var, s1var; - s32 s2a; - s16 y; - - if (func_80134310(s3, D_8018D7A8, s6) >= 0) - return 0; - - s1var = func_80134310(s3, D_8018D7A4, s6); - if (s1var < 0) - return 0; - - s0var = func_80134310(s3, D_8018D7B0, 0); - { - u16 *pac = D_8018D7A4; - s16 *pb8 = D_8018D7B0; - s16 *pb4 = D_8018D7AC; - s32 neg = -s1var; - pb4[0] = pac[0] + neg * pb8[0] / s0var; - pb4[1] = pac[1] + neg * pb8[1] / s0var; - pb4[2] = pac[2] + neg * pb8[2] / s0var; - if (func_8013435C(((ElemK *)base)[cmd[3]].e, pb4, arr[cmd[4]], s3)) - return 0; - } - if (func_8013435C(((ElemK *)base)[cmd[5]].e, D_8018D7AC, arr[cmd[6]], s3)) - return 0; - if (func_8013435C(((ElemK *)base)[cmd[7]].e, D_8018D7AC, arr[cmd[8]], s3)) - return 0; - if (arg0 < 0) { - if (func_8013435C(((ElemK *)base)[cmd[9]].e, D_8018D7AC, arr[cmd[10]], s3)) - return 0; - } - if (arg0 & 0x10) { - if (*(u16 *)cmd & 0x100) - return 0; - } - if (*(u16 *)cmd & 0x200) { - D_801E5A90 = *(u16 *)cmd; - return 0; - } - - { - s32 ret = func_80134310(s3, D_8018D7A8, s6); - s32 *pc0; - s32 *pc4; - u16 *pb0; - s32 t, o2; - s32 q3v; - - { - s32 *pw = D_8018D7B8; - ((struct { s32 w; } *)pw)->w = s3[0]; - pw[1] = s3[1]; - pw[2] = s3[2]; - } - s1var = -ret; - - __asm__ __volatile__( - "lwc2 $9, 0(%0)\n" - "lwc2 $10, 4(%0)\n" - "lwc2 $11, 8(%0)\n" - "nop\n" - "nop\n" - "sqr 0\n" - : : "r"(D_8018D7B8) : "$9", "$10", "$11", "memory"); - __asm__ __volatile__( - "swc2 $25, 0(%0)\n" - "swc2 $26, 4(%0)\n" - "swc2 $27, 8(%0)\n" - : : "r"(D_8018D7BC) : "memory"); - - pc0 = D_8018D7B8; - pc4 = D_8018D7BC; - s0var = pc4[0] + pc4[1] + pc4[2]; - pb0 = D_8018D7A8; - pb0[0] += s1var * pc0[0] / s0var; - pb0[1] += s1var * pc0[1] / s0var; - q3v = s1var * pc0[2] / s0var; - - { - s32 h; - h = ((s16 *)pb0)[0]; - s1var = h << 16; - __asm__("lh %0, 2(%2)" : "=r"(h) : "0"(h), "r"(pb0) : "memory"); - s0var = h << 16; - } - pb0[2] += q3v; - s2a = (s16)pb0[2] << 16; - - t = pc0[0] << 4; - pc0[0] = t; - if (t < 0) s1var |= 0xFFFF; - t = pc0[1] << 4; - pc0[1] = t; - if (t < 0) s0var |= 0xFFFF; - o2 = pc0[2]; - t = o2 << 4; - pc0[2] = t; - if (t < 0) s2a |= 0xFFFF; - s2a += o2 << 5; - s1var += pc0[0] << 1; - s0var += pc0[1] << 1; - - do { - s32 *pl = D_8018D7B8; - u16 *pb; - s1var += pl[0]; - s0var += pl[1]; - s2a += pl[2]; - pb = D_8018D7A8; - pb[0] = s1var >> 16; - pb[1] = s0var >> 16; - pb[2] = s2a >> 16; - ret = func_80134310(s3, pb, s6); - } while (ret < ((s3[1] < -0xE00) ? 0x1800 : 0x2F00)); - } - - y = s3[1]; - if (y >= -0xBCB) { - D_8018D7A4[3] = y; - { - typedef struct { s8 c[8]; } Blk8; - *(Blk8 *)&D_801152B0 = *(Blk8 *)s3; - } - if (*(u8 *)cmd != 0) - goto ret1; - return -1; - } - { - u16 *s3u = (u16 *)s3; - u16 *bp = D_8018D7A8; - u16 w; - ((H16 *)D_801152A8)->h = s3u[0]; - w = s3u[1]; - bp[3] = w; - ((H16 *)&D_801152AA)->h = w; - ((H16 *)&D_801152AC)->h = s3u[2]; - ((H16 *)&D_801152AE)->h = s3u[3]; - } -ret1: - return 1; -} - - - - - -DEFINE_func_80134310() /* dedup: shared engine-core @0x80134310 (src/shared) */ - - -DEFINE_func_8013435C() /* dedup: shared engine-core @0x8013435C (src/shared) */ - -// @class: schedule -// @stuck: none — MATCH (83 ins, relocation-masked) - - - -s32 func_801343C4(s32 angle, s32 p1, s32 p2) -{ - extern s32 func_80133AB0(s16 flag, s16 x, s16 y, s32 arg3); - extern s16 * D_8018D7A4; - extern s16 * D_8018D7A8; - extern u16 D_801E5A90; - extern u16 D_801E5A8C; - - s16 *pac; - s16 *pb0; - s16 *pacs, *pb0s; - u16 *pb0u; - int a1v, a2v, d94, b0; - int sangle = ((s16)angle); - - pac = D_8018D7A4; - d94 = D_801E5A80; - pb0 = D_8018D7A8; - pac[0] = ((u16 *)p1)[0]; - pac[1] = ((u16 *)p1)[1]; - pac[2] = ((u16 *)p1)[2]; - pb0[0] = ((u16 *)p2)[0]; - pb0[1] = ((u16 *)p2)[1]; - pb0[2] = ((u16 *)p2)[2]; - - a1v = pac[0]; a2v = pac[2]; - __asm__ __volatile__("" ::: "memory"); - D_801E5A90 = 0; - D_801E5A8C = 0; - if (((int (*)(int, s16, s16, int))func_80133AB0)(sangle, a1v, a2v, d94)) { - setdst: - pb0u = (u16 *)D_8018D7A8; - ((u16 *)p2)[0] = pb0u[0]; - ((u16 *)p2)[1] = pb0u[1]; - ((u16 *)p2)[2] = pb0u[2]; - ((u16 *)p2)[3] = D_801E5A90; - return 1; - } - - pacs = D_8018D7A4; - pb0s = D_8018D7A8; - b0 = pb0s[0]; - if ((pacs[0] & 0xFF80) == (b0 & 0xFF80) && - (pacs[2] & 0xFF80) == (pb0s[2] & 0xFF80)) { - return 0; - } - if (((int (*)(int, s16, s16, int))func_80133AB0)(sangle, b0, pb0s[2], D_801E5A80)) { - goto setdst; - } - return 0; -} - - - -// @class: schedule - - -s32 func_80134510(s32 param) { - extern s32 func_801345F8(s32); - extern Foo_80134510_80134510 * D_8018D7A4; - extern Foo_80134510_80134510 * D_8018D7A8; - extern Foo_80134510_80134510 * D_8018D7AC; - extern u16 D_801E5A90; - - - s32 ret = 0; - Foo_80134510_80134510 *b0 = D_8018D7A8; - Foo_80134510_80134510 *ac = D_8018D7A4; - u16 t0 = ((Foo_80134510_80134510 *)param)->f0; - u16 t2, t4; - - ((Foo_80134510_80134510 *)param)->f6 = 0; - ac->f0 = t0; - b0->f0 = t0; - t2 = ((Foo_80134510_80134510 *)param)->f2; - ac->f2 = t2 - 4; - b0->f2 = t2 + 0x2FC; - t4 = ((Foo_80134510_80134510 *)param)->f4; - ac->f4 = t4; - b0->f4 = t4; - - if (func_801345F8((*(s32*)&D_801E5A80)) != 0) { - s16 x; - ((Foo_80134510_80134510 *)param)->f2 = D_8018D7AC->f2 - 2; - x = D_8018D7A4->f6; - if (x >= -3019) { - if (x < -1400) { - ret = 0x4000; - } else { - ret = 0x8000; - } - } else { - ret = 0x2000; - } - D_8018D7A4->f6 = D_801E5A90; - } - return ret; -} - - - -// @class: regalloc-order -// @stuck: 26-mismatch near-miss (structure fully matches: while-loop test-first via j-to-bottom-test, s0=puVar7/s1=cnt/s2=scan/s3=iVar8/s4=iVar9/s5=uVar3/s6=uVar10, a1=param/a0=cc/a3=0x8000 pinned, both range-persist copies present, mult+GPU-index+call all byte-correct). Residual = 4 instances of ONE gcc-2.7.2 regalloc/copy-prop tie-break: target computes a preserved-then-masked value in $v0 and reads $v0 for the mask (`subu $v0; addu $persist,$v0; andi $v0,$v0`), gcc here reads the persist reg (`andi $v0,$t0`). (1) range-check-1 andi reads $t0 not $v0; (2) range-check-2 andi reads $a0 not $v0; (3) `hi=uVar1&0x8000` folds into $a0 — target computes in $v0 + copies to $a0 in the branch-delay (same-block copy, gcc coalesces mine); (4) loop-test `cnt&0xffff` folds to direct `andi $v0,$s1` — target copies `addu $v0,$s1` first. Splitting the value into compare-temp + persist-var produces the copy but gcc forward-propagates the copy DEST into the mask; persist-after-compare kills the copy; explicit `register __asm__` pins fold the whole expr chain into the pinned reg; `=r/0` barriers force bad materialization. Also minor: while-loop header-copy adds a `beqz s1` entry guard vs target `j`, and a2/a3 call-arg setup order. Permuter can't run (register __asm__ pins rejected by pycparser). Genuinely compiler-internal — hand-finish or accept as ceiling. - - -s32 func_801345F8(s32 arg) -{ - extern int func_801347A0(short, u16 *, int, int); - extern u16 * D_8018D7A4; - extern u16 D_801E5A90; - - register u16 *param_1 __asm__("$5") = ((u16 *)arg); - register u16 *cc __asm__("$4") = D_8018D7A4; - int c8000 = 0x8000; - register int zr __asm__("$0"); - u32 c1, c2, uVar6, uVar2, cnt, v14; - u16 *ptmp, *puVar4, *puVar7, uVar1; - int hi, harg, iVar9, iVar8, uVar3, uVar10, tbl; - - c1 = ((int)(cc[0] + c8000) >> 7 & 0x1ff) - (u32)param_1[0]; - uVar6 = c1 + zr; - if ((c1 & 0xffff) < (u32)param_1[2]) { - c2 = ((int)(cc[2] + c8000) >> 7 & 0x1ff) - (u32)param_1[1]; - uVar2 = c2 + zr; - if ((c2 & 0xffff) < (u32)param_1[3]) - goto do_mult; - return 0; - found: - D_801E5A90 = *puVar7; - return 1; - do_mult: - tbl = *(int *)(param_1 + 4); - uVar10 = *(int *)(param_1 + 6); - uVar3 = *(int *)(param_1 + 8); - iVar9 = *(int *)(param_1 + 0xc); - iVar8 = *(int *)(param_1 + 0xe); - ptmp = (u16 *)((((u32)(u16)uVar2 * (u32)param_1[2] + (u32)(u16)uVar6) * 2 & 0xffff) * 2 + tbl); - cnt = (u32)ptmp[1]; - v14 = *(int *)(param_1 + 10); - puVar4 = (u16 *)(v14 + (u32)*ptmp + cnt * 2) - 1; - while (((cnt-- + zr) & 0xffff) != 0) { - uVar1 = *puVar4; - hi = uVar1 & 0x8000; - harg = hi + zr; - if (hi == 0) - puVar7 = (u16 *)(iVar9 + (u32)uVar1 * 0x12); - else - puVar7 = (u16 *)(iVar8 + (uVar1 & 0x7fff) * 0x16); - if (func_801347A0((short)harg, puVar7, uVar3, uVar10) != 0) - goto found; - puVar4 = puVar4 - 1; - } - } - return 0; -} - - - -// @class: regalloc-order -// @stuck: none — MATCH (162 ins). iv pinned to $4 (a0) forces move+delay-slot negu; divisor-temp forces divisor-first schedule (load-delay nop). Globals declared pointer-typed (SVec_801347A0*/s16*) so %lo folds per-use instead of &sym address-CSE into callee regs. -#include "common.h" - - - - - - -s32 func_801347A0(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { - extern s32 func_80134A28(s32 a0, s32 a1, s32 a2); - extern s16 * D_8018D7A8; - extern SVec_801347A0 * D_8018D7A4; - extern SVec_801347A0 * D_8018D7AC; - - Elem_801347A0 *pElem; - s32 val; - register s32 iv __asm__("$4"); - s32 q; - s32 dvsr; - - pElem = &((Elem_801347A0 *)arg2)[((S0_801347A0 *)arg1)->f2]; - val = ((s32 *)arg3)[((S0_801347A0 *)arg1)->f4]; - if (func_80134A28((s32)pElem, (s32)D_8018D7A8, val) >= 0) { - return 0; - } - iv = func_80134A28((s32)pElem, (s32)D_8018D7A4, val); - if (iv < 0) { - return 0; - } - iv = -iv; - dvsr = pElem->f2 * 48; - q = (iv * 48) / dvsr; - D_8018D7AC->f0 = D_8018D7A4->f0; - D_8018D7AC->f2 = D_8018D7A4->f2 + q; - D_8018D7AC->f4 = D_8018D7A4->f4; - if (func_80134A28((s32)&((Elem_801347A0 *)arg2)[((S0_801347A0 *)arg1)->f6], (s32)D_8018D7AC, ((s32 *)arg3)[((S0_801347A0 *)arg1)->f8]) < -0x2F00) { - return 0; - } - if (func_80134A28((s32)&((Elem_801347A0 *)arg2)[((S0_801347A0 *)arg1)->fa], (s32)D_8018D7AC, ((s32 *)arg3)[((S0_801347A0 *)arg1)->fc]) < -0x2F00) { - return 0; - } - if (func_80134A28((s32)&((Elem_801347A0 *)arg2)[((S0_801347A0 *)arg1)->fe], (s32)D_8018D7AC, ((s32 *)arg3)[((S0_801347A0 *)arg1)->f10]) < -0x2F00) { - return 0; - } - if ((s16)arg0) { - if (func_80134A28((s32)&((Elem_801347A0 *)arg2)[((S0_801347A0 *)arg1)->f12], (s32)D_8018D7AC, ((s32 *)arg3)[((S0_801347A0 *)arg1)->f14]) < -0x2F00) { - return 0; - } - } - if ((((S0_801347A0 *)arg1)->f0 & 0x300) != 0) { - return 0; - } - D_8018D7AC->f0 = D_8018D7A4->f0; - D_8018D7AC->f4 = D_8018D7A4->f4; - (*(Elem_801347A0*)D_801152A8) = *pElem; - D_8018D7A4->f6 = pElem->f2; - return 1; -} - - - -DEFINE_func_80134A28() /* dedup: shared engine-core @0x80134A28 (src/shared) */ - - -int func_80134A74(int param_1, s16 param_2, s16 param_3, int param_4) -{ - extern u16 D_801E5A90; - extern s32 func_80134C20(s32, s32, s32, s32); - - u16 *param_4p = (u16 *)param_4; - register u32 zr __asm__("$0"); - u32 uVar6, uVar2, uVar2c; - register u32 uVar6c __asm__("$9"); - u16 *puVar4, *ptmp; - register u32 n __asm__("$18"); - register u32 p0 __asm__("$4"); - register int v14 __asm__("$3"); - u16 *puVar7, uVar1; - u32 hi, hic; - int iVar5, iVar9, iVar8, uVar3, uVar10; - - uVar6 = ((int)((param_2 & 0xffff) + 0x8000) >> 7 & 0x1ff) - (u32)param_4p[0]; - uVar6c = uVar6 + zr; - if ((uVar6 & 0xffff) < (u32)param_4p[2]) { - uVar2 = ((int)((param_3 & 0xffff) + 0x8000) >> 7 & 0x1ff) - (u32)param_4p[1]; - __asm__("addu %0,%1,$zero" : "=r"(uVar2c) : "r"(uVar2)); - if ((uVar2 & 0xffff) < (u32)param_4p[3]) goto work; - return 0; - found: - D_801E5A90 = *puVar7; - return 1; - work: - uVar10 = *(int *)(param_4p + 6); - uVar3 = *(int *)(param_4p + 8); - iVar9 = *(int *)(param_4p + 0xc); - iVar8 = *(int *)(param_4p + 0xe); - ptmp = (u16 *)((((uVar2c & 0xffff) * (u32)param_4p[2] + (uVar6c & 0xffff)) * 2 & 0xffff) * 2 + *(int *)(param_4p + 4)); - v14 = *(int *)(param_4p + 10); - __asm__ __volatile__("" :: "r"(uVar6c)); - p0 = (u32)*ptmp; - n = (u32)ptmp[1]; - puVar4 = (u16 *)(v14 + p0 + n * 2) - 1; - goto test; - body: - uVar1 = *puVar4; - hi = uVar1 & 0x8000; - hic = hi + zr; - if (hi == 0) - puVar7 = (u16 *)(iVar9 + (u32)uVar1 * 0x12); - else - puVar7 = (u16 *)(iVar8 + (uVar1 & 0x7fff) * 0x16); - puVar4 = puVar4 - 1; - iVar5 = func_80134C20((short)(hic | param_1), (s32)puVar7, uVar3, uVar10); - if (iVar5 != 0) goto found; - test: - { - u32 m; - __asm__("addu %0,%1,$zero" : "=r"(m) : "r"(n)); - n--; - if ((m & 0xffff) != 0) goto body; - } - } - return 0; -} - - -// @class: regalloc-order -// @try: variant B — direct pins m=$s5($21), c=$s6($22) - - -s32 func_80134C20(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { - extern s32 func_80134FB8(s32 a0, s32 a1, s32 a2); - extern void * D_8018D7A4; - extern void * D_8018D7A8; - extern void * D_8018D7AC; - extern void * D_8018D7B0; - extern u16 D_801E5A90; - - s32 temp_a3; - s32 temp_s1; - s32 temp_v0; - s32 temp_v0_2; - s32 var_v0; - u16 temp_a1; - s32 temp_s4; - s32 c = arg0; - __asm__ __volatile__("" : "=r"(c) : "0"(c)); - __asm__ __volatile__("" : : "r"(arg0)); - - temp_s4 = arg2 + (M2C_FIELD(((void *)arg1), s16 *, 2) * 8); - temp_s1 = *(s32 *)(arg3 + (M2C_FIELD(((void *)arg1), s16 *, 4) * 4)); - var_v0 = 0; - if (func_80134FB8(temp_s4, (s32) D_8018D7A8, temp_s1) >= 0) { - return var_v0; - } - temp_v0 = func_80134FB8(temp_s4, (s32) D_8018D7A4, temp_s1); - if (temp_v0 < 0) { - goto block_13; - } - temp_v0_2 = func_80134FB8(temp_s4, (s32) D_8018D7B0, 0); - temp_a3 = -temp_v0; - { - u16 *pB4 = (u16 *)D_8018D7AC; - u16 *pAC = (u16 *)D_8018D7A4; - s16 *pB8 = (s16 *)D_8018D7B0; - pB4[0] = pAC[0] + (temp_a3 * pB8[0]) / temp_v0_2; - pB4[1] = pAC[1] + (temp_a3 * pB8[1]) / temp_v0_2; - pB4[2] = pAC[2] + (temp_a3 * pB8[2]) / temp_v0_2; - var_v0 = 0; - if (func_80134FB8(arg2 + (M2C_FIELD(((void *)arg1), s16 *, 6) * 8), (s32) pB4, *(s32 *)(arg3 + (M2C_FIELD(((void *)arg1), s16 *, 8) * 4))) < -0x2F00) { - return var_v0; - } - } - var_v0 = 0; - if (func_80134FB8(arg2 + (M2C_FIELD(((void *)arg1), s16 *, 0xA) * 8), (s32) D_8018D7AC, *(s32 *)(arg3 + (M2C_FIELD(((void *)arg1), s16 *, 0xC) * 4))) < -0x2F00) { - return var_v0; - } - var_v0 = 0; - if (func_80134FB8(arg2 + (M2C_FIELD(((void *)arg1), s16 *, 0xE) * 8), (s32) D_8018D7AC, *(s32 *)(arg3 + (M2C_FIELD(((void *)arg1), s16 *, 0x10) * 4))) < -0x2F00) { - return var_v0; - } - if ((arg0 << 16) < 0) { - var_v0 = 0; - if (func_80134FB8(arg2 + (M2C_FIELD(((void *)arg1), s16 *, 0x12) * 8), (s32) D_8018D7AC, *(s32 *)(arg3 + (M2C_FIELD(((void *)arg1), s16 *, 0x14) * 4))) < -0x2F00) { - return var_v0; - } - } - if (c & 1) { - if (!(M2C_FIELD(((void *)arg1), u16 *, 0) & 0x300)) { - goto block_14; - } - return 0; - } - temp_a1 = M2C_FIELD(((void *)arg1), u16 *, 0); - if (!(temp_a1 & 0x200)) { - goto block_14; - } - D_801E5A90 = temp_a1; -block_13: - return 0; -block_14: - __builtin_memcpy(D_801152A8, (void *)temp_s4, 8); - VectorNormalSS(D_8018D7B0, D_8018D7B0); - { - u16 *pB8 = (u16 *)D_8018D7B0; - u16 *pB4b = (u16 *)D_8018D7AC; - pB4b[0] = pB4b[0] - ((pB8[0] << 0x10) >> 0x1B); - var_v0 = 1; - pB4b[1] = pB4b[1] - ((pB8[1] << 0x10) >> 0x1B); - pB4b[2] = pB4b[2] - ((pB8[2] << 0x10) >> 0x1B); - } - return var_v0; -} - - - -DEFINE_func_80134FB8() /* dedup: shared engine-core @0x80134FB8 (src/shared) */ - -// @class: plumbing -// @stuck: MATCH (89 ins). To BANK: retype D_8018D7A8 + D_8018D7A4 (u8 -> s16*) in sibling func_80135168's externs (src/ov_SC01_077/ov_SC01_077_a.c ~L1879); they hold pointers double-referenced across a call, so only a 4-byte/pointer decl folds %lo (u8 &-cast CSE's the address into a saved reg). Retype is byte-NEUTRAL for the sibling (verified: identical objdump bytes u8 vs s16*). - - - - -s32 func_80135004(s32 arg0, s32 p1, s32 p2) -{ - extern int func_80134A74(int, s16, s16, int); - extern s16 * D_8018D7A8; - extern s16 * D_8018D7A4; - extern u8 D_8018D7B0; - extern s16 *D_8018D7AC; - extern u16 D_801E5A90; - - register s16 *pb0 __asm__("$9"); /* D_8018D7A8 -> $t1 */ - register s16 *pac __asm__("$6"); /* D_8018D7A4 -> $a2 */ - register s16 *pb8 __asm__("$8"); /* D_8018D7B0 -> $t0 */ - u16 *pb4; - u16 a, b; - int id; - int a1v, a2v, d94; - - pb0 = D_8018D7A8; - __asm__ __volatile__("" : : "r"(pb0)); - - a = ((u16 *)p2)[0]; pac = D_8018D7A4; pb0[0] = a; b = ((u16 *)p1)[0]; pb8 = (*(s16 * *)&D_8018D7B0); pac[0] = b; pb8[0] = a - b; - a = ((u16 *)p2)[1]; pb0[1] = a; b = ((u16 *)p1)[1]; pac[1] = b; pb8[1] = a - b; - a = ((u16 *)p2)[2]; pb0[2] = a; b = ((u16 *)p1)[2]; pac[2] = b; pb8[2] = a - b; - - id = ((int)arg0) & 0xFFFF; - a1v = pac[0]; a2v = pac[2]; d94 = D_801E5A80; - __asm__ __volatile__("" ::: "memory"); - D_801E5A90 = 0; - - if (func_80134A74(id, a1v, a2v, d94)) { - found: - pb4 = (*(u16 * *)&D_8018D7AC); - ((u16 *)p2)[0] = pb4[0]; - ((u16 *)p2)[1] = pb4[1]; - ((u16 *)p2)[2] = pb4[2]; - ((u16 *)p2)[3] = D_801E5A90; - return 1; - } - { - register u16 *qb __asm__("$4"); /* D_8018D7A4 -> $a0 (reloaded) */ - register int qa0 __asm__("$5"); /* D_8018D7A8[0], kept in $a1 for the 2nd-call arg */ - register u16 *qa __asm__("$6"); /* D_8018D7A8 -> $a2 (reloaded) */ - qb = (u16 *)D_8018D7A4; - qa = (u16 *)D_8018D7A8; - qa0 = qa[0]; - if (((qb[0] & 0xFF80) == (qa0 & 0xFF80)) && - ((qb[2] & 0xFF80) == (qa[2] & 0xFF80))) - return 0; - if (func_80134A74(id, (s16)qa0, (s16)qa[2], D_801E5A80)) - goto found; - return 0; - } -} - - - - -// @class: schedule -// @stuck: none — MATCH (62 ins, relocation-masked) - - -extern s16 *D_8018D7AC; -extern int D_801E5A80; -extern u16 D_801E5A90; - -extern int func_80134A74(int, s16, s16, int); - -int func_80135168(u16 arg0, u16 *p1, u16 *p2) -{ - /* [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 §100); the whole-binary byte-gate is the arbiter. */ - extern u8 D_8018D7A4; - extern u8 D_8018D7A8; - extern u8 D_8018D7B0; - register s16 *pb0 __asm__("$8"); - register s16 *pac __asm__("$6"); - register s16 *pb8 __asm__("$7"); - u16 *pb4; - u16 a, b; - int a1v, a2v, d94; - - pb0 = (*(s16 * *)&D_8018D7A8); - __asm__ __volatile__("" : : "r"(pb0)); - - a = p2[0]; pac = (*(s16 * *)&D_8018D7A4); pb0[0] = a; b = p1[0]; pb8 = (*(s16 * *)&D_8018D7B0); pac[0] = b; pb8[0] = a - b; - a = p2[1]; pb0[1] = a; b = p1[1]; pac[1] = b; pb8[1] = a - b; - a = p2[2]; pb0[2] = a; b = p1[2]; pac[2] = b; pb8[2] = a - b; - - a1v = pac[0]; a2v = pac[2]; d94 = D_801E5A80; - __asm__ __volatile__("" ::: "memory"); - D_801E5A90 = 0; - if (func_80134A74(arg0, a1v, a2v, d94)) { - pb4 = (*(u16 * *)&D_8018D7AC); - p2[0] = pb4[0]; - p2[1] = pb4[1]; - p2[2] = pb4[2]; - p2[3] = D_801E5A90; - return 1; - } - return 0; -} - - - - -/* func_80135260 — "is reachable/hittable" gate (136 ins, ov_SC01_077 jr_8012ACE0). - * - * Sibling of the already-banked func_80135D20 (src/ov_SC03_099/ov_SC03_099_jr_80135D20.c L659+): - * same func_80135480 switch (jtbl_801D8158, cases 0..4, default falls through with p/flag/q - * UNINITIALISED — reproduced by leaving the switch without a default), same peeled-probe + - * rotated list loop, different `elsepath`. - * - * Load-bearing details (all byte-proven by ablation against match_one): - * - func_80135480 is DEFINED later in this same TU (L3261) returning s16. Calling it through an - * `s32 (*)(...)` cast is REQUIRED: the target does NOT re-extend the callee result before the - * switch (`addu $v1,$v0,$zero` only); a plain s16-returning call costs an extra `sll/sra 16`. - * The cast is call-site-local, so func_80135480's own definition is untouched (no //@EDIT). - * - D_8018D7A4 / D_8018D7A8 / D_8018D7B0 MUST be declared as 4-byte POINTERS - * (`extern u16 *D_801870Bx;`), not the canonical `extern u8` + `(*(u16**)&sym)` cast. With the - * u8 form gcc CSEs `&sym` into two callee-saved regs ($s1/$s5), which costs a 7th saved - * register ($s6 for arg3) and 3 extra instructions. This is exactly the retype already - * documented in this TU's @stuck note at L3127. The decls are BLOCK-SCOPE-compatible with the - * TU's other `extern u8 D_8018D7A4;` bodies (the TU already mixes both forms: L2461 vs L2587). - * - `u8 dead[56];` is a DEAD local that only sets the frame: without it the frame is 0x30, the - * target's is 0x68 (gcc-2.7.2 assign_stack_local runs at expand time, so an unreferenced - * aggregate still owns its slot). Body bytes are already exact at 136/136 without it — the 16 - * residual diffs are purely the sp/save-slot immediates. - * - explicit goto layout (loop / hit / body / elsepath) reproduces the target's block ORDER: the - * `hit` block sits physically between the loop test and the loop body, and its leading - * `move a0,flag` gets copied into all four branch delay slots. - * - the two D_801870xx compare fields are read `lhu` -> u16; the func_80134A74 args are `(s16)` - * casts of those u16 lvalues (combine folds the fresh ones into `lh`, and sll/sra the one that - * is still live in $a1 from the 0xFF80 compare). - * - func_80135D20's §5a cross-jump barrier is NOT needed here (ablated: MATCH either way). - */ -extern s16 func_80135480(void*, s32, s16*, s16*); -extern s32 func_80135EB0(void *arg0, s32 arg1_); -extern s32 func_80136A94(s32 a0, s32 a1, s32 a2, s32 a3); -extern int func_80134A74(int, s16, s16, int); - -s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3) -{ - /* BLOCK scope on purpose: this TU already declares D_8018D7A4/B0/B8 as `extern u8` inside - * other function bodies (L2461-2463) and as `extern u16 *` inside others (L2587-2589). - * A FILE-scope pointer decl here would make those inner `extern u8` decls conflicting-types. - * The same reason keeps D_801E5A94/D_801E5AB4 local (cf. the TU's own L3268-3270). */ - extern u16 *D_8018D7A4; - extern u16 *D_8018D7A8; - extern u16 *D_8018D7B0; - extern s32 D_801E5A94; - extern s32 D_801E5AB4; - - u8 dead[56]; - s32 *p; - s32 flag; - s32 q; - u16 *pa; - u16 *pb; - u16 *pc; - u16 *pd; - u16 *pe; - u16 t; - - switch (((s32 (*)(void *, s32, s16 *, s16 *))func_80135480)((void *)arg0, arg1, arg2, arg3)) { - case 0: - return 0; - case 1: - q = arg0 + 0x34; - p = (s32 *)((arg1 & 0xFFFFFFF) | 0x80000000); - flag = 0; - break; - case 2: - q = arg0 + 0x34; - p = (s32 *)((arg1 & 0xFFFFFFF) | 0x80000000); - flag = 1; - break; - case 3: - q = arg0 + 0x34; - p = &D_801E5AB4; - flag = 0; - break; - case 4: - q = (s32)&D_801E5A94; - p = &D_801E5AB4; - flag = 1; - break; - } - if (arg1 >= 0) { - goto elsepath; - } - if (func_80135EB0(p, 0) != 0) { - goto hit; - } - p = (s32 *)*p; - if (p == 0) { - return 0; - } -loop: - if (func_80135EB0(p, 0) == 0) { - goto body; - } -hit: - func_80136A94(flag, arg0, (s32)arg3, q); - return 1; -body: - p = (s32 *)*p; - if (p != 0) { - goto loop; - } - return 0; -elsepath: - pa = D_8018D7A8; - pb = D_8018D7A4; - pc = D_8018D7B0; - pc[0] = pa[0] - pb[0]; - pc[1] = pa[1] - pb[1]; - pc[2] = pa[2] - pb[2]; - if (func_80134A74(0, (s16)pb[0], (s16)pb[2], (int)p) != 0) { - goto hit; - } - pd = D_8018D7A4; - pe = D_8018D7A8; - t = pe[0]; - if (((pd[0] & 0xFF80) == (t & 0xFF80)) && ((pd[2] & 0xFF80) == (pe[2] & 0xFF80))) { - return 0; - } - if (func_80134A74(0, (s16)t, (s16)pe[2], (int)p) != 0) { - goto hit; - } - return 0; -} - - -/* func_80135480 — cull + coordinate-transform emitter (258 ins, ov_SC01_077 split _a, ×134 family). - * - * NOT a §43 s16-param giant. Params are (void*, s32, s16*, s16*); the sole `sll/sra 16` is the s16 - * RETURN narrowing on $s3 (result), not an in-place arg-reg narrow. So §43's K&R-s16-param map does - * not apply here — no //@EDIT, no ec_edit. func_80135480 has NO ambient prototype/caller anywhere in - * src/include, so the s16 return type is free (no void->s32 flip, no engine_core.h edit). - * - * THE CRACK (residual class = §31 regalloc/schedule, RC-4/RC-2 in gcc-2.7.2-map/regalloc.md): - * the two output buffers D_8018D7A4 / D_8018D7A8 are written through a pointer in each of the two - * return tails (mode!=0 and mode==0). A single function-scope `s16 *tmp` reused across both tails is a - * GLOBAL allocno (used in 2 blocks, dies 4x) -> forced onto one hard reg ($a1), which is WRONG and also - * perturbs the switch's first-`beq` delay-slot fill (extra nop). The target instead allocates each - * store-group's pointer as a LOCAL-ALLOC pseudo (set once, used 3x, dies once, single block) that picks - * the lowest-free scratch over its OWN window: - * mode!=0 tail: p_AC -> $v1, p_B0 -> $v1 (reused, $v0 = the load temp) - * mode==0 tail: p_AC -> $v1, p_B0 -> $a0 (the sub-scratch occupies $v1, so $v1 is unavailable) - * Reproduced by giving each of the four store-groups its OWN block-scoped pointer. With the tail - * allocation correct, the whole schedule (incl. the beq delay slot) re-derives to byte-identical. - * No register pins (§17 caveat: don't pin $v1 — the target reuses it for the cull; a pin cascades - * per RC-5). NOTE: the block-scope `s16 *p` intentionally shadows the function-scope `s32 p` (the - * case-0x20000000 pointer base); scopes never overlap — legal and byte-verified. - * - * Zero file-scope footprint (block-scoped typedefs + externs; D_8018D7A4/B0 read via the ambient - * `extern u8` + `*(s16**)&` §30 anon-cast, matching neighbor func_80135168) -> ×134-clean for - * family_sweep --edit-remap with no cc1 crash. - * - * VERIFIED: tools/rtu_match.py func_80135480 --split ov_SC01_077_a -> MATCH (258 ins), 3x stable. - */ -s16 func_80135480(void *param_1, s32 param_2, s16 *param_3, s16 *param_4) -{ - /* [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 §100); the whole-binary byte-gate is the arbiter. */ - extern u8 D_8018D7A4; - extern u8 D_8018D7A8; - extern void func_80048EAC(void *m0, void *m1); - extern void func_8004914C(void *m); - extern void ApplyTransposeMatrixLV(void *m, void *in, void *out); - extern void ApplyRotMatrixLV(void *in, void *out); - extern void ApplyRotMatrix(void *in, void *out); - extern s32 D_801E5A94, D_801E5A98, D_801E5A9C, D_801E5AA0; - extern s16 D_801E5AA4; - extern s32 D_801E5AB4; - extern s16 D_801E5AB8, D_801E5ABA, D_801E5ABC, D_801E5ABE, D_801E5AC0, D_801E5AC2; - - Vec32 in0, in1, rotout; - Mat32 mat2; - Vec16 vecin; - s32 result; - s32 mode; - s32 q1, q2; - s32 p; - s32 t18, t1A, t1C; - s32 *m; - - in0.vx = param_3[0] - *(s32 *)((s32)param_1 + 0x48); - in0.vz = param_3[2] - *(s32 *)((s32)param_1 + 0x50); - if ((param_2 & 0x10000000) == 0) { - if (in0.vx * in0.vx + in0.vz * in0.vz > 0x40000) { - return 0; - } - } - mode = param_2 & 0x60000000; - if (mode != 0) { - result = 1; - if (param_2 >= 0) { - mode &= 0x40000000; - } - in0.vy = param_3[1] - *(s32 *)((s32)param_1 + 0x4C); - in1.vx = param_4[0] - *(s32 *)((s32)param_1 + 0x48); - in1.vy = param_4[1] - *(s32 *)((s32)param_1 + 0x4C); - in1.vz = param_4[2] - *(s32 *)((s32)param_1 + 0x50); - switch (mode) { - case 0x60000000: - m = &D_801E5A94; - *m = 0x1000000 / *(s16 *)((s32)param_1 + 0x18); - q1 = 0x1000000 / *(s16 *)((s32)param_1 + 0x1A); - q2 = 0x1000000 / *(s16 *)((s32)param_1 + 0x1C); - D_801E5A98 = 0; - D_801E5AA0 = 0; - D_801E5A9C = q1; - D_801E5AA4 = q2; - func_80048EAC((void *)((s32)param_1 + 0x34), m); - ApplyTransposeMatrixLV(m, &in0, &in0); - ApplyRotMatrixLV(&in1, &in1); - result = 2; - /* fallthrough */ - case 0x20000000: - p = (param_2 & 0xFFFFFFF) | 0x80000000; - t18 = *(s16 *)((s32)param_1 + 0x18); - t1A = *(s16 *)((s32)param_1 + 0x1A); - t1C = *(u16 *)((s32)param_1 + 0x1C); - mat2.w4 = 0; - mat2.wC = 0; - mat2.w0 = t18; - mat2.w8 = t1A; - mat2.h10 = t1C; - func_8004914C(&mat2); - vecin.vx = *(u16 *)(p + 4); - vecin.vy = *(u16 *)(p + 8); - vecin.vz = *(u16 *)(p + 0xC); - ApplyRotMatrix(&vecin, &rotout); - D_801E5AB8 = rotout.vx; - D_801E5ABC = rotout.vy; - D_801E5AC0 = rotout.vz; - vecin.vx = *(u16 *)(p + 6); - vecin.vy = *(u16 *)(p + 0xA); - vecin.vz = *(u16 *)(p + 0xE); - ApplyRotMatrix(&vecin, &rotout); - D_801E5AB4 = 0; - D_801E5ABA = rotout.vx; - D_801E5ABE = rotout.vy; - D_801E5AC2 = rotout.vz; - result += 2; - break; - case 0x40000000: - ApplyTransposeMatrixLV((void *)((s32)param_1 + 0x34), &in0, &in0); - ApplyRotMatrixLV(&in1, &in1); - result = 2; - break; - } - { - s16 *p = *(s16 **)&D_8018D7A4; - p[0] = in0.vx; - p[1] = in0.vy; - p[2] = in0.vz; - } - { - s16 *p = *(s16 **)&D_8018D7A8; - p[0] = in1.vx; - p[1] = in1.vy; - p[2] = in1.vz; - } - return result; - } - { - s16 *p = *(s16 **)&D_8018D7A4; - p[0] = in0.vx; - p[1] = ((u16 *)param_3)[1] - *(s32 *)((s32)param_1 + 0x4C); - p[2] = in0.vz; - } - { - s16 *p = *(s16 **)&D_8018D7A8; - p[0] = ((u16 *)param_4)[0] - *(s32 *)((s32)param_1 + 0x48); - p[1] = ((u16 *)param_4)[1] - *(s32 *)((s32)param_1 + 0x4C); - p[2] = ((u16 *)param_4)[2] - *(s32 *)((s32)param_1 + 0x50); - } - return 1; -} diff --git a/src/ov_SC04_019/ov_SC04_019_jr_80135888.c b/src/ov_SC04_019/ov_SC04_019_jr_80135888.c deleted file mode 100644 index 031d291ee..000000000 --- a/src/ov_SC04_019/ov_SC04_019_jr_80135888.c +++ /dev/null @@ -1,709 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ - /* 8-byte element, cmd @ +4 */ - /* list ptr @ +0x90 */ - /* size 8, alignment 1 -> unaligned copy */ -extern void func_80128288(void); -extern void func_80128158(void); -extern void func_801285E4(void); -extern void func_80128178(void); -extern void func_80128678(void); -extern void func_80128198(void); -extern void func_80128714(void); -extern void func_801281B8(void); -extern void func_8013E67C(void); -extern void func_801281D8(void); -extern void func_8013E558(void); -extern void func_801281F8(void); -extern s32 D_801E4434; -extern s32 func_80128218(void); -extern void func_80128A28(void); -extern void func_80128228(void); -extern void func_80128AF4(void); -extern void func_80128248(void); -extern void func_801282EC(void); -extern void func_80128268(void); -extern u16 D_800B99F6; -extern void (*D_8018D4AC[])(void); -extern void func_80011B7C(int); -extern void func_801282CC(void); -extern void func_8001C0C8(void); -extern void func_80015310(void); -extern void func_80129258(void); -extern void func_801378F0(void); -extern void func_80010E14(void); -extern s16 currentLocationId; -extern s32 func_80029504(void); -extern s32 func_800CF854(s32); -extern s32 func_80128998(void); -extern s32 func_801289F0(void); -extern s32 func_801288E8(s32); -extern s32 func_80128940(s32); -extern s32 func_80029178(s32); -extern s32 func_801288B0(void); -extern void func_80011C10(void); -extern void func_8012832C(void); -extern void func_80129220(void); -extern void func_80011E24(void); -extern void func_80128C14(void); -extern void func_8002AEF8(void); -extern void func_800CFBBC(void); -extern void SsUtReverbOff(void); -extern void func_8013C98C(void); -extern void func_80129C40(s32 a0); -extern void func_800D0630(void); -extern void func_80145CEC(void); -extern void func_80144B9C(void); -extern u8 D_800B9A17; -extern u8 D_800B9A10; -extern void func_80128420(void); -extern s32 func_800D0588(void); -extern void func_801284B8(void); -extern void func_80175308(void); -extern void func_8016E8F0(void); -extern void func_80175494(void); -extern u8 D_800B9A64; -extern void func_801284F0(void); -extern void func_80146074(void); -extern void func_8012853C(void); -extern void func_80178608(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern s32 func_80011A3C(void); -extern short currentLocationId; -extern short D_800B99F2; -extern void func_80128564(void); -extern u8 D_800B9A11; -extern void func_801285D4(void); -extern s32 func_800D18DC(void); -extern void func_8014607C(void); -extern void func_801287B8(void); -extern s32 D_801E5A14; -extern void func_80029444(void); -extern void func_800D1754(void); -extern s32 D_80126B58; -extern s32 D_801E7AB8; -extern u16 D_800B99DA; -extern void func_80129CF8(void); -extern void func_8017849C(void); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_801505FC(s32 a0); -extern void func_801508B4(void *a0); -extern void func_80165E90(void); -extern void func_801627E8(void); -extern void func_80162B1C(void); -extern void func_80165CA0(void); -extern void func_80129010(void); -extern void func_8013CA14(void); -extern void func_800190AC(void); -extern void func_8012956C(void); -extern void func_8016E95C(void); -extern void func_801754A8(void); -extern void func_8013BC7C(void); -extern void func_8013BCDC(void); -extern void func_801379FC(void); -extern void func_8001212C(void); -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); -extern u8 D_800AEFD0; -extern int D_800C7C60; -extern int *D_800C7C64; -extern int D_800A2E20; -extern int D_800AF558; -extern int D_801E4434; -extern int func_801288E8(int arg0); -extern u8 D_800AF560; -extern s32 func_80128940(s32 _arg0); -extern int D_800AECB0; -extern u8 D_800AECB8; -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4); -extern s16 D_800B9A00; -extern M2C_UNK (*D_8018D1E0)(); -extern s16 (*D_8018D1E4)(); -extern M2C_UNK (*D_8018D1EC)(); -extern s32 (*D_8018D1F0)(); -extern s32 D_801E5A10; -extern void func_80010AE0(s32 a0); -extern void func_80018450(s32 a0, s32 a1); -extern void func_800183E0(s32 a0); -extern void func_80128D60(s32 a0, s32 *a1, s32 *a2); -extern s32 func_80128DB4(s32 a0, s32 *a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern M2C_UNK D_801E4438; -extern void func_80128FAC(u16 *arg0); -extern s16 D_8011DB2C; -extern s16 D_8011DB30; -extern s32 D_80126AEC; -extern u8 *func_8012913C(s32 a0); -extern u8 * func_801290DC(s32 a0, u8 *a1); -extern void func_8001D074(s32 a, s32 b); -extern u8 *func_801291C0(void); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 * func_8012913C(s32 arg0); -extern void func_80016714(void *a0, s32 a1); -extern u8 * func_801291C0(void); -extern void func_80129248(s16 a0); -extern void func_801292C8(u8 *a0); -extern void func_8012927C(void); -extern void func_8012931C(struct vec *a0); -extern void func_80129350(s32 a0, s32 a1); -extern void func_80129374(s32 a0, s32 a1); -extern s16 D_800B9AAC[]; -extern s16 D_800B9AAE[]; -extern s16 D_800B9AB0[]; -extern s16 D_800B9AB2[]; -extern s16 D_800B9AB4[]; -extern s16 D_800B9AB6[]; -extern s16 D_800B9AB8[]; -extern s16 D_800B9ABA[]; -extern void func_80129398(void); -extern s16 D_80114EE0; -extern void func_80129428(void); -extern void func_8012943C(void); -extern s32 D_8005128C; -extern u8 D_800B9A78; -extern void func_801298F4(void *arg0); -extern void func_801299C8(s32 a, s32 b, s32 c); -extern void func_8012944C(void); -extern unsigned short D_800B99F0; -extern void func_8012A328(void); -extern void func_80053308(s32); -extern s32 func_80012F74(s32, s32, s32, s32); /* canonical s32 (engine_core); (s16)-cast the return for the sll/sra */ -extern void GsSetRefView2L(void *); -extern s8 D_801150D6; /* canonical (engine_core macro): s8 — access via *(u8*)& for lbu */ -extern u8 D_80127504; -extern s32 D_80126E60[]; -extern s32 D_80126F04[]; -extern u8 D_80126948[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_80126FA8[]; -extern struct BigCopy D_80126DB8;/* canonical (engine_core macro): struct BigCopy — (s32*)& at use */ -extern u8 D_800AF630[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_800AE688[]; -extern s32 D_801151D4; /* canonical (10 siblings): scalar s32 — store (s32)ptr */ -extern void func_8012A018(s32 a, s32 b); -extern void func_80129FF4(void); -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_80126940; -extern s16 D_80126942; -extern s16 D_80126944; -extern void func_8012A048(void *a0, s32 a1, u8 a2); -extern void *memcpy(void *, const void *, unsigned int); -extern void func_8012A094(s32 a0); -extern void func_8012A100(s8 a0); -extern void func_8012A0E0(void); -extern s8 D_801150D6; -extern s32 D_80120204; -extern s32 D_80120200; -extern s32 D_8012020C; -extern s32 D_80120208; -extern s16 D_80120218; -extern s16 D_80120210; -extern s16 D_8012021A; -extern s16 D_80120212; -extern s16 D_8012021C; -extern s16 D_80120214; -extern s16 D_80120226; -extern s16 D_80120220; -extern s16 D_80120228; -extern s16 D_80120222; -extern s16 D_8012022A; -extern s16 D_80120224; -extern s32 D_80120294; -extern s16 D_80120298; -extern s16 D_8012029A; -extern void func_8012A110(void); -extern s8 D_801152C0; -extern void func_8012A2F4(void); -extern s16 D_80127080; -extern s16 D_801152C2; -extern void func_8012A304(s32 a0, s32 a1); -extern s32 D_801151D4; -extern struct BigCopy D_80126DB8; -extern struct BigCopy D_80114EE8; -extern void func_8012A4BC(void); -extern void func_8012A598(void *a0); -extern void func_8012A568(void (*a0)(void)); -extern void func_8012A62C(s32); -extern void func_8012A5F8(void (*a0)(void), s32 a1); -extern void func_8012A62C(s32 a0); -extern void func_8012A7D4(void *a0, void *a1); -extern s32 func_8012A6D0(void *a0, void *a1); -extern s16 func_8012A68C(void); -extern s16 func_8012A79C(s16 *a0, s16 *a1); -extern s16 func_8012A758(void); -extern s32 ratan2(s32 a0, s32 a1); -extern void func_8012A7D4(void *arg0, void *arg1); -extern void func_8012AAAC(); -extern void func_8012A828(s32 a0, void * a1); -extern int func_8012ACE0(void *a0); -extern void func_8012A860(void *a0, int a1); -extern void func_8012A8B0(u8 *a0, s32 a1); -extern void func_8012A8E8(void); -extern u8 D_801202A0[]; -extern u16 D_801270C0; -extern void func_8012A988(u8 *a0); -extern void func_8012A908(void); -extern s32 func_8012ACE0(void *a0); -extern M2C_UNK D_8018D540; -extern void func_8012ACA0(void *arg0); -extern s32 func_8012ACE0(void *o); -extern void func_8012AD44(s32 *a0, s16 a1); -extern s32 func_8012AD50(void * arg0); -extern void func_8012AD64(s32 *a0, s16 a1); -extern void func_8012AD6C(void *a0); -extern void func_8012AD80(s32 a0); -extern void func_8012ADE4(u8 *a0); -extern s32 *D_80126B78; -extern s32 *D_80126B90; -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80013478(s32 a0, s32 a1); -extern s32 func_8012AE00(s32 a0); -extern s32 func_8012AF0C(s32 a0, s32 a1); -extern s32 func_80134510(s32 arg); -extern s32 func_8012B030(u8 *a0); -extern int func_80047948(int a0); -extern int func_8004787C(int a0); -extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_8012B14C(s32 a0, s32 a1); -extern void func_8012B178(s32 a0, s32 a1); -extern void func_8012B1B4(s32 a0, s32 a1); -extern void func_8012B200(u8 *a0); -extern void func_8012B21C(void *a0); -extern void func_8012B23C(s32 a0); -extern void func_8012B260(u8 *a0); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern void RotMatrixYXZ(void *m, void *p); -extern void func_8012B370(int a0); -extern void func_8004978C(s16 *a0, void *a1); -extern void func_8012B414(int a0); -extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); -extern s32 func_8012B6D4(s16 *a0, s16 *a1); -extern s32 func_8012B70C(s16 *a0, s16 *a1); -extern s32 ratan2(s32 x, s32 y); -extern s32 func_8012B744(void *a0, void *a1); -extern s16 D_80126CB8; -extern s16 D_80126CB4; -extern s32 func_8012B864(s32 a0); -extern s32 func_8012B8A4(s16 *a0); -extern s32 func_8012B8E4(s32 arg0, s32 arg1); -extern s32 func_8012BA10(s32 arg0, s32 arg1); -extern s32 func_8012BB3C(s32 arg0, s32 arg1, u32 arg2, s32 arg3); -extern void Square0(s32 *a0, s32 *a1); -extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1); -extern s16 D_80126CBA; -extern s32 func_8012BCCC(s32 a0); -extern void func_80013350(s32 a0, void *a1); -extern u8 D_80126B5C; -extern void func_8012BD14(s32 a0); -extern s32 func_8012BDBC(s32 a0, s32 a1); -extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2); -extern void func_8012BE98(s32 a0, u16 *a1); -extern void func_8012BE54(s32 a0); -extern s32 func_800132BC(s32 a0, s32 a1); -extern void func_8012BE98(s32 arg0, u16 * arg1); -extern s32 func_8012BEE8(s32 a0); -extern s32 func_8012BF10(s32 a0, s32 a1); -extern void func_8012BF4C(s32 *a0, s32 a1); -extern void func_8012BF54(void *a0); -extern void func_8012BF68(void *a0); -extern s16 D_80126CB0; -extern s32 func_8012BF7C(s16 *a0); -extern s16 D_80126CAC; -extern short D_80126CAE; -extern int func_8012BFA8(short *a0); -extern s32 D_801274D4; -extern s32 D_801274E0; -extern s32 func_8012C044(s32 a0); -extern void func_8012C218(void *a0); -extern void func_8012C098(void *param_1); -extern s32 func_8012C0EC(s32 a0); -extern void func_8012C194(void); -extern void func_8001CFDC(s32 a, s32 b); -extern void func_8012C1B8(void); -extern u8 D_800B3DF0[]; -extern s32 func_8012C1DC(s32 a0); -extern u8 D_80126720[]; -extern u16 * func_8012C284(u16 *a0); -extern u8 D_80120194[]; -extern s32 func_8012C2D0(void); -extern s32 func_8012C31C(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32 a0, s32 a1); -extern u8 D_80078EAE; -extern s32 func_8012C354(s32 a0, s32 a1); -extern void func_8001C810(s32 a0, s32 a1); -extern s32 func_8012C438(s32 a0, s32 a1); -extern s32 func_8012C890(s32 a0, s32 a1, s32 a2); -extern s32 func_8012C51C(void *a0, s32 a1); -extern s32 func_8012C588(s32 a0, s32 a1); -extern void func_8012C724(s32 a0, s32 a1); -extern s32 func_8012C750(s32 a0); -extern s32 func_8012C820(u8 *a0); -extern s32 D_80190A24; -extern s16 D_801270C4; -extern u16 D_801274E4[]; -extern s32 D_8011DB08; -extern s32 func_8012CB64(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); -extern s32 func_8012CC88(s32 a, s32 b, s32 c); -extern u8 D_800D3918[]; -extern void func_8012CBA4(s32 a0); -extern void func_8012CBCC(s32 a0); -extern void func_8012CBF4(s32 a0); -extern void func_8012CC1C(s32 arg0, s32 arg1); -extern void func_8012CC40(s32 arg0, s32 arg1); -extern s32 func_8012CC88(s32 a0, s32 a1, s32 a2); -extern void func_8012CC64(s32 a0, s32 a1); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern s32 func_8012CE2C(s32 a0); -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); -extern void func_8012CFA8(s32 arg0); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_8012D3B4(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012D098(u16 *param_1, u32 param_2); -extern void func_8012D098(); -extern void func_8012D38C(int a0); -extern void func_8012D3AC(void); -extern s32 AddPrim(s32, void *); -extern s32 RotTransPers(s32, s32, s32 *, s32 *); -extern void SetLineF2(void *); -extern void *func_80010A08(s32); -extern void func_8004914C(void *); -extern void func_800491AC(void *); -extern s32 D_800A651C; -extern u8 D_800AF648; -extern s16 D_800B9A02; -extern void func_8012D4B4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_8012D5DC(void); -extern s16 D_80126B98; -extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2); -extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern int func_8012D664(); -extern void func_8012D624(s32 a0); -extern int func_8012D664(int arg0, int arg1, int arg2); -extern s32 func_8012D714(s32 param_1, u32 param_2); -extern void func_8012F568(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void func_8014C978(void); -extern M2C_UNK D_8018D558; -extern M2C_UNK D_8018D560; -extern s32 func_8012DB84(void); -extern s32 func_8012DE2C(s32 a0); -extern s32 func_8012DDA4(void); -extern s32 func_8012DBD0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8012DDA4(); -extern s32 func_8012DF34(s32 a0, s32 a1, s32 a2); -extern s16 D_80126B9A; -extern u8 D_801152A8[]; -extern void func_8012DFBC(void); -extern void func_8012DFCC(void); -extern void func_8012E014(s32 arg0); -extern void func_8012E138(void); -extern void func_8012DFD4(u8 *a0); -extern s32 func_8012E27C(void); -extern void func_8012E284(void); -extern s32 GetTPage(s32, s32, s32, s32); -extern s32 func_8005A600(s32, s32, s32, s32, s32); -extern void func_8012E28C(s32 arg0, s32 arg1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void func_8012E32C(void); -extern s32 func_8012E470(s32 a0); -extern void func_8012E4C8(s32 a0); -extern s32 func_8012E504(s32 a0, s32 a1); -extern s32 func_8012E544(s32 a0); -extern s32 func_8012E57C(s32 a0, s32 a1); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E688(s32 param_1, u16 param_2, u16 param_3); -extern s32 func_8012E778(int param_1, int param_2); -extern void func_8012E88C(u8 *a0); -extern void func_8012E8A8(u8 *a0); -extern void func_8012E8C4(u8 *a0); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8016AA50(int, int); -extern void func_8016B428(int); -extern void func_80019064(void *); -extern int D_8018D568; -extern void func_8012E9C0(int param_1); -extern void func_8012EA90(s32 param_1, s32 param_2, s32 *param_3); -extern void func_8012EC04(s32 param_1, s32 param_2, s32 *param_3); -extern s32 func_8002A4FC(s32 a0); -extern s32 func_8012EECC(s32 a0); -extern void func_8012EFB8(s32 a0); -extern void func_8012EF34(s32 a0, s32 a1); -extern void func_8012EF70(s32 a0, s32 a1); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8012F0BC(s32 *a0, s32 *a1, s32 *a2); -extern void RotTransSV(s32 a0, s32 a1, void *a2); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_8012F1A4(s32 *a0, s32 a1, s32 *a2); -extern void func_8012F2E8(s32 a0, s32 a1, s32 a2); -extern s16 D_80126CB6; -extern void func_8012F374(s32 a0, s32 a1); -extern void *memcpy(void *, const void *, u32); -extern u8 D_80126C38; -extern u8 D_80126C40; -extern u16 D_80126B94; -extern u16 D_80126B96; -extern void func_8012F568(s32 param_1, s32 param_2, s32 param_3, s32 param_4, s32 param_5, s32 param_6); -extern void func_80131B14(); -extern void func_80131E00(struct S80131E00 *a0, s32 a1); -extern s32 func_80131A34(s32, s32); -extern void func_80131CA8(int a0, int a1); -extern void func_8012F5F4(s32 arg0); -extern void func_80131C78(s32 a0); -extern void func_8012F68C(s32 arg0); -extern void func_8012F75C(s32 a0); -extern s32 func_8012BEE8(s32); -extern void func_8012F7B4(s32 a0); -extern void func_80131170(); -extern void func_80131CA8(); -extern unsigned char D_8018D584[]; -extern void func_8012F828(int param_1); -extern void func_80131340(s32 a0); -extern void func_8012F87C(s32 a0); -extern void func_80131170(s32 a0, s32 a1, s32 a2); -extern u8 D_8018D590[]; -extern void func_8012F8C8(u8* arg0); -extern void func_8012F91C(s32 a0); -extern s32 func_80131A34(s32 a0, s32 a1); -extern void func_80131CA8(s32 a0, s32 a1); -extern void func_8012F968(s32 param_1); -extern void func_801319E0(s32 a0); -extern s32 func_80143B6C(s32 a0, s32 a1); -extern void func_8012FB54(s32 a0); -extern void func_8012FC30(s32 a0); -extern void func_8012FCA4(int a0); -extern s32 func_8012FCC4(s32 param_1); -extern void func_8012FDA8(int param_1); -extern void func_8012FE70(s32 a0); -extern void func_8012FF00(s32 a0); -extern void func_8012FF4C(s32 a0); -extern void func_80130D48(s32 a0); -extern void func_8012FF98(u8 *a0); -extern s32 func_80131AC8(void *a0); -extern void func_8013001C(void *a0); -extern void func_80130088(void *a0); -extern s32 func_8012BCCC(s32); -extern void func_801300F4(s32 a0); -extern void func_801301E8(u8 *a0); -extern void func_80130278(s32 arg0); -extern void func_80130314(s32 a0); -extern void func_80130360(s32 a0); -extern void func_8012E364(void); -extern void func_801303A0(s32 a0); -extern void func_801303EC(void *a0); -extern void func_80143CD4(s32 a0); -extern void func_800CB0E8(s32 a0); -extern void func_80130438(s32 a0); -extern void func_801319E0(int); -extern int func_80131D68(int, int); -extern int func_8012BEE8(int); -extern void func_80131CA8(int, int); -extern void func_80130514(int param_1); -extern void func_801305CC(u8 *a0); -extern void func_8012CBF4(s32); -extern s32 func_80131D68(s32 a0, s32 a1); -extern void func_80130650(s32 a0); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_80130740(void *a0, u16 *a1); -extern s32 func_801312D0(s32 a0, void *a1); -extern void func_801307B0(s32 a0); -extern void func_80130858(s32 a0); -extern void func_80130898(u8 *a0); -extern void func_801308DC(s32 a0); -extern void func_80166244(); -extern void func_80130974(int param_1); -extern void func_80130A18(u8 *a0); -extern void func_80130AC4(s32 a0); -extern int func_80131A34(int a0, int a1); -extern void func_80130AF0(int param_1); -extern void (*D_8018D5A4[])(void); -extern void func_80130D0C(void *a0); -extern s32 rand(void); -extern u8 D_80078E78[]; -extern u16 D_80078EB2; -extern u16 D_80078EB4; -extern s16 D_8018D5F4[]; -extern s16 D_8018D624[]; -extern s16 D_8018D684[]; -extern s16 D_8018D68C[]; -extern s16 D_8018D6AC[]; -extern void func_80130D48(s32 arg0); -extern void func_80131170(s32 p, s32 b, s32 c); -extern s32 func_801312D0(s32 param_1, void *param_2); -extern void func_80131E00(); -extern s32 D_801E5A38; -extern s32 D_801E5A3C; -extern void func_8002A04C(s32 a0); -extern void func_801319E0(s32 arg0); -extern s32 func_80131CF4(s32 a0); -extern int func_80131D68(int a0, int a1); -extern void (*D_8018D6E4[])(struct S80131E00 *a0); -extern void func_80131E38(u8 *a0); -extern void func_80131E7C(s32 a0); -extern void func_80131EE4(void); -extern void (*D_8018D73C[])(void); -extern void func_80131EEC(void *a0); -extern void (*D_8018D784[])(void); -extern void func_80131F28(void *a0); -extern void (*D_8018D78C[])(void); -extern void func_80131F64(void *a0); -extern void (*D_8018D794[])(void); -extern void func_80131FA0(void *a0); -extern void (*D_8018D79C[])(void); -extern void func_80131FDC(void *a0); -extern void func_801320D0(void); -extern void func_8001C214(int, int); -extern int D_8018D744; -extern void func_801320D8(int param_1); -extern s32 func_80132144(s32 param_1); -extern int D_8018D764; -extern void func_801321B0(int param_1); -extern int D_8018D774; -extern void func_8013221C(int param_1); -extern void func_8005C324(int dst, int src, int n) __asm__("memcpy"); /* Phase-24: 0x8005C324 is named memcpy for overlays (whale needs it); keep the non-builtin C name here (else built-in codegen), emit via asm-label */ -extern void func_801325B8(int a0, int a1, int a2, int a3, int a4); -extern void func_80132288(int *param_1, int *param_2, int param_3); -extern void func_801325B8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_8013240C(s32 a0); -extern void memcpy(); -extern void gteMIMefunc(); -extern void func_801325B8(int dst, int src, int m0, int mm, int arg5); -extern void func_8013277C(void); -extern void func_80020F34(s32 a0, s32 a1); -extern void func_80054514(s32 a0, s32 a1); -extern void func_80132784(s32 a0, s32 a1, u32 a2); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_80132DC4(s32 a0, s32 a1, s32 a2); -extern s32 func_80132E6C(s16 *a0); -extern void func_80132EC4(void *a0, s16 a1); -extern s32 func_80132EF4(s32 a0, s32 a1); -extern void func_801330E0(void * param_1, s16 * param_2, s32 param_3); -extern void func_80133060(u8 *a0, s32 *a1, s32 a2); -extern void func_8013339C(short *param_1, short *param_2); -extern s32 func_8013361C(s16 *a0, s16 *a1, s16 *a2, s16 *a3); -extern s32 D_801E5A80; -extern s32 D_801E5A84[]; -extern int D_801E5A88; -extern void func_80136BC4(s32 a0); -extern void func_801336E8(void *a0, int a1, int a2); -extern void func_80136BC4(s32); -extern void func_8013373C(s16 arg0); -extern s32 func_80133784(s32 arg0, void *arg1, s32 arg2); -extern s32 func_80133CD4(); -extern s32 func_80134310(Vec3s *a0, Vec3s *a1, s32 a2); -extern s32 func_8013435C(s16 *a0, s16 *a1, s32 a2, s16 *a3); -extern s32 func_801343C4(s32 angle, s32 p1, s32 p2); -extern s32 func_80134510(s32 param); -extern s32 func_801345F8(s32 arg); -extern s32 func_801347A0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134A28(s32 a0, s32 a1, s32 a2); -extern int func_80134A74(int param_1, s16 param_2, s16 param_3, int param_4); -extern s32 func_80134C20(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134FB8(s32 a0, s32 a1, s32 a2); -extern s32 func_80135004(s32 arg0, s32 p1, s32 p2); -extern u8 D_8018D7A8; -extern u8 D_8018D7A4; -extern s16 *D_8018D7AC; -extern u8 D_8018D7B0; -extern int D_801E5A80; -extern u16 D_801E5A90; -extern int func_80134A74(int, s16, s16, int); -extern int func_80135168(u16 arg0, u16 *p1, u16 *p2); -extern s16 func_80135480(void *param_1, s32 param_2, s16 *param_3, s16 *param_4); -/* ==== end §8b carried decl layer ==== */ - - - -extern s16 func_80135480(void*, s32, s16*, s16*); -extern s32 func_80135EB0(void *arg0, s32 arg1_); -extern int func_80134A74(int, s16, s16, int); -extern s32 func_80136A94(s32 a0, s32 a1, s32 a2, s32 a3); - -extern u8 D_8018D7A4; -extern u8 D_8018D7A8; -extern u8 D_8018D7B0; -extern s32 D_801E5A94; -extern s32 D_801E5AB4; - -s32 func_80135888(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { - s32 pad_[8]; - register s32 m __asm__("$2"); - s32 sp; - register s32 p1 __asm__("$17"); - register s32 mode __asm__("$18"); - register s32 p0 __asm__("$19"); - register s32 base __asm__("$20"); - register s32 p3 __asm__("$21"); - - p0 = arg0; - p1 = arg1; - p3 = arg3; - - switch (((s32 (*)(void *, s32, s16 *, s16 *))func_80135480)((void *)arg0, arg1, (s16 *)arg2, (s16 *)arg3)) { - case 0: - return 0; - case 1: - base = p0 + 0x34; - m = p1 & 0xFFFFFFF; - sp = m | 0x80000000; - mode = 0; - break; - case 2: - base = p0 + 0x34; - m = p1 & 0xFFFFFFF; - sp = m | 0x80000000; - mode = 1; - break; - case 3: - base = p0 + 0x34; - sp = (s32)&D_801E5AB4; - mode = 0; - break; - case 4: - base = (s32)&D_801E5A94; - sp = (s32)&D_801E5AB4; - mode = 1; - break; - } - - if (p1 < 0) { - if (func_80135EB0(sp, 0) != 0) { - func_80136A94(mode, p0, p3, base); - return 1; - } - sp = *(s32 *)sp; - __asm__ __volatile__(""); - while (sp != 0) { - if (func_80135EB0(sp, 0) != 0) { -hit: - func_80136A94(mode, p0, p3, base); - return 1; - } - sp = *(s32 *)sp; - } - return 0; - } - { - u16 *pb = (*(u16 * *)&D_8018D7A8); - u16 *pa = (*(u16 * *)&D_8018D7A4); - s16 *pc = (*(s16 * *)&D_8018D7B0); - pc[0] = pb[0] - pa[0]; - pc[1] = pb[1] - pa[1]; - pc[2] = pb[2] - pa[2]; - if (func_80134A74(0, (s16)pa[0], (s16)pa[2], sp) == 0) { - return 0; - } - } - goto hit; -} - diff --git a/src/ov_SC04_019/ov_SC04_019_jr_80135A4C.c b/src/ov_SC04_019/ov_SC04_019_jr_80135A4C.c deleted file mode 100644 index 0cc921248..000000000 --- a/src/ov_SC04_019/ov_SC04_019_jr_80135A4C.c +++ /dev/null @@ -1,732 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ - /* 8-byte element, cmd @ +4 */ - /* list ptr @ +0x90 */ - /* size 8, alignment 1 -> unaligned copy */ -extern void func_80128288(void); -extern void func_80128158(void); -extern void func_801285E4(void); -extern void func_80128178(void); -extern void func_80128678(void); -extern void func_80128198(void); -extern void func_80128714(void); -extern void func_801281B8(void); -extern void func_8013E67C(void); -extern void func_801281D8(void); -extern void func_8013E558(void); -extern void func_801281F8(void); -extern s32 D_801E4434; -extern s32 func_80128218(void); -extern void func_80128A28(void); -extern void func_80128228(void); -extern void func_80128AF4(void); -extern void func_80128248(void); -extern void func_801282EC(void); -extern void func_80128268(void); -extern u16 D_800B99F6; -extern void (*D_8018D4AC[])(void); -extern void func_80011B7C(int); -extern void func_801282CC(void); -extern void func_8001C0C8(void); -extern void func_80015310(void); -extern void func_80129258(void); -extern void func_801378F0(void); -extern void func_80010E14(void); -extern s16 currentLocationId; -extern s32 func_80029504(void); -extern s32 func_800CF854(s32); -extern s32 func_80128998(void); -extern s32 func_801289F0(void); -extern s32 func_801288E8(s32); -extern s32 func_80128940(s32); -extern s32 func_80029178(s32); -extern s32 func_801288B0(void); -extern void func_80011C10(void); -extern void func_8012832C(void); -extern void func_80129220(void); -extern void func_80011E24(void); -extern void func_80128C14(void); -extern void func_8002AEF8(void); -extern void func_800CFBBC(void); -extern void SsUtReverbOff(void); -extern void func_8013C98C(void); -extern void func_80129C40(s32 a0); -extern void func_800D0630(void); -extern void func_80145CEC(void); -extern void func_80144B9C(void); -extern u8 D_800B9A17; -extern u8 D_800B9A10; -extern void func_80128420(void); -extern s32 func_800D0588(void); -extern void func_801284B8(void); -extern void func_80175308(void); -extern void func_8016E8F0(void); -extern void func_80175494(void); -extern u8 D_800B9A64; -extern void func_801284F0(void); -extern void func_80146074(void); -extern void func_8012853C(void); -extern void func_80178608(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern s32 func_80011A3C(void); -extern short currentLocationId; -extern short D_800B99F2; -extern void func_80128564(void); -extern u8 D_800B9A11; -extern void func_801285D4(void); -extern s32 func_800D18DC(void); -extern void func_8014607C(void); -extern void func_801287B8(void); -extern s32 D_801E5A14; -extern void func_80029444(void); -extern void func_800D1754(void); -extern s32 D_80126B58; -extern s32 D_801E7AB8; -extern u16 D_800B99DA; -extern void func_80129CF8(void); -extern void func_8017849C(void); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_801505FC(s32 a0); -extern void func_801508B4(void *a0); -extern void func_80165E90(void); -extern void func_801627E8(void); -extern void func_80162B1C(void); -extern void func_80165CA0(void); -extern void func_80129010(void); -extern void func_8013CA14(void); -extern void func_800190AC(void); -extern void func_8012956C(void); -extern void func_8016E95C(void); -extern void func_801754A8(void); -extern void func_8013BC7C(void); -extern void func_8013BCDC(void); -extern void func_801379FC(void); -extern void func_8001212C(void); -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); -extern u8 D_800AEFD0; -extern int D_800C7C60; -extern int *D_800C7C64; -extern int D_800A2E20; -extern int D_800AF558; -extern int D_801E4434; -extern int func_801288E8(int arg0); -extern u8 D_800AF560; -extern s32 func_80128940(s32 _arg0); -extern int D_800AECB0; -extern u8 D_800AECB8; -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4); -extern s16 D_800B9A00; -extern M2C_UNK (*D_8018D1E0)(); -extern s16 (*D_8018D1E4)(); -extern M2C_UNK (*D_8018D1EC)(); -extern s32 (*D_8018D1F0)(); -extern s32 D_801E5A10; -extern void func_80010AE0(s32 a0); -extern void func_80018450(s32 a0, s32 a1); -extern void func_800183E0(s32 a0); -extern void func_80128D60(s32 a0, s32 *a1, s32 *a2); -extern s32 func_80128DB4(s32 a0, s32 *a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern M2C_UNK D_801E4438; -extern void func_80128FAC(u16 *arg0); -extern s16 D_8011DB2C; -extern s16 D_8011DB30; -extern s32 D_80126AEC; -extern u8 *func_8012913C(s32 a0); -extern u8 * func_801290DC(s32 a0, u8 *a1); -extern void func_8001D074(s32 a, s32 b); -extern u8 *func_801291C0(void); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 * func_8012913C(s32 arg0); -extern void func_80016714(void *a0, s32 a1); -extern u8 * func_801291C0(void); -extern void func_80129248(s16 a0); -extern void func_801292C8(u8 *a0); -extern void func_8012927C(void); -extern void func_8012931C(struct vec *a0); -extern void func_80129350(s32 a0, s32 a1); -extern void func_80129374(s32 a0, s32 a1); -extern s16 D_800B9AAC[]; -extern s16 D_800B9AAE[]; -extern s16 D_800B9AB0[]; -extern s16 D_800B9AB2[]; -extern s16 D_800B9AB4[]; -extern s16 D_800B9AB6[]; -extern s16 D_800B9AB8[]; -extern s16 D_800B9ABA[]; -extern void func_80129398(void); -extern s16 D_80114EE0; -extern void func_80129428(void); -extern void func_8012943C(void); -extern s32 D_8005128C; -extern u8 D_800B9A78; -extern void func_801298F4(void *arg0); -extern void func_801299C8(s32 a, s32 b, s32 c); -extern void func_8012944C(void); -extern unsigned short D_800B99F0; -extern void func_8012A328(void); -extern void func_80053308(s32); -extern s32 func_80012F74(s32, s32, s32, s32); /* canonical s32 (engine_core); (s16)-cast the return for the sll/sra */ -extern void GsSetRefView2L(void *); -extern s8 D_801150D6; /* canonical (engine_core macro): s8 — access via *(u8*)& for lbu */ -extern u8 D_80127504; -extern s32 D_80126E60[]; -extern s32 D_80126F04[]; -extern u8 D_80126948[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_80126FA8[]; -extern struct BigCopy D_80126DB8;/* canonical (engine_core macro): struct BigCopy — (s32*)& at use */ -extern u8 D_800AF630[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_800AE688[]; -extern s32 D_801151D4; /* canonical (10 siblings): scalar s32 — store (s32)ptr */ -extern void func_8012A018(s32 a, s32 b); -extern void func_80129FF4(void); -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_80126940; -extern s16 D_80126942; -extern s16 D_80126944; -extern void func_8012A048(void *a0, s32 a1, u8 a2); -extern void *memcpy(void *, const void *, unsigned int); -extern void func_8012A094(s32 a0); -extern void func_8012A100(s8 a0); -extern void func_8012A0E0(void); -extern s8 D_801150D6; -extern s32 D_80120204; -extern s32 D_80120200; -extern s32 D_8012020C; -extern s32 D_80120208; -extern s16 D_80120218; -extern s16 D_80120210; -extern s16 D_8012021A; -extern s16 D_80120212; -extern s16 D_8012021C; -extern s16 D_80120214; -extern s16 D_80120226; -extern s16 D_80120220; -extern s16 D_80120228; -extern s16 D_80120222; -extern s16 D_8012022A; -extern s16 D_80120224; -extern s32 D_80120294; -extern s16 D_80120298; -extern s16 D_8012029A; -extern void func_8012A110(void); -extern s8 D_801152C0; -extern void func_8012A2F4(void); -extern s16 D_80127080; -extern s16 D_801152C2; -extern void func_8012A304(s32 a0, s32 a1); -extern s32 D_801151D4; -extern struct BigCopy D_80126DB8; -extern struct BigCopy D_80114EE8; -extern void func_8012A4BC(void); -extern void func_8012A598(void *a0); -extern void func_8012A568(void (*a0)(void)); -extern void func_8012A62C(s32); -extern void func_8012A5F8(void (*a0)(void), s32 a1); -extern void func_8012A62C(s32 a0); -extern void func_8012A7D4(void *a0, void *a1); -extern s32 func_8012A6D0(void *a0, void *a1); -extern s16 func_8012A68C(void); -extern s16 func_8012A79C(s16 *a0, s16 *a1); -extern s16 func_8012A758(void); -extern s32 ratan2(s32 a0, s32 a1); -extern void func_8012A7D4(void *arg0, void *arg1); -extern void func_8012AAAC(); -extern void func_8012A828(s32 a0, void * a1); -extern int func_8012ACE0(void *a0); -extern void func_8012A860(void *a0, int a1); -extern void func_8012A8B0(u8 *a0, s32 a1); -extern void func_8012A8E8(void); -extern u8 D_801202A0[]; -extern u16 D_801270C0; -extern void func_8012A988(u8 *a0); -extern void func_8012A908(void); -extern s32 func_8012ACE0(void *a0); -extern M2C_UNK D_8018D540; -extern void func_8012ACA0(void *arg0); -extern s32 func_8012ACE0(void *o); -extern void func_8012AD44(s32 *a0, s16 a1); -extern s32 func_8012AD50(void * arg0); -extern void func_8012AD64(s32 *a0, s16 a1); -extern void func_8012AD6C(void *a0); -extern void func_8012AD80(s32 a0); -extern void func_8012ADE4(u8 *a0); -extern s32 *D_80126B78; -extern s32 *D_80126B90; -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80013478(s32 a0, s32 a1); -extern s32 func_8012AE00(s32 a0); -extern s32 func_8012AF0C(s32 a0, s32 a1); -extern s32 func_80134510(s32 arg); -extern s32 func_8012B030(u8 *a0); -extern int func_80047948(int a0); -extern int func_8004787C(int a0); -extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_8012B14C(s32 a0, s32 a1); -extern void func_8012B178(s32 a0, s32 a1); -extern void func_8012B1B4(s32 a0, s32 a1); -extern void func_8012B200(u8 *a0); -extern void func_8012B21C(void *a0); -extern void func_8012B23C(s32 a0); -extern void func_8012B260(u8 *a0); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern void RotMatrixYXZ(void *m, void *p); -extern void func_8012B370(int a0); -extern void func_8004978C(s16 *a0, void *a1); -extern void func_8012B414(int a0); -extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); -extern s32 func_8012B6D4(s16 *a0, s16 *a1); -extern s32 func_8012B70C(s16 *a0, s16 *a1); -extern s32 ratan2(s32 x, s32 y); -extern s32 func_8012B744(void *a0, void *a1); -extern s16 D_80126CB8; -extern s16 D_80126CB4; -extern s32 func_8012B864(s32 a0); -extern s32 func_8012B8A4(s16 *a0); -extern s32 func_8012B8E4(s32 arg0, s32 arg1); -extern s32 func_8012BA10(s32 arg0, s32 arg1); -extern s32 func_8012BB3C(s32 arg0, s32 arg1, u32 arg2, s32 arg3); -extern void Square0(s32 *a0, s32 *a1); -extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1); -extern s16 D_80126CBA; -extern s32 func_8012BCCC(s32 a0); -extern void func_80013350(s32 a0, void *a1); -extern u8 D_80126B5C; -extern void func_8012BD14(s32 a0); -extern s32 func_8012BDBC(s32 a0, s32 a1); -extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2); -extern void func_8012BE98(s32 a0, u16 *a1); -extern void func_8012BE54(s32 a0); -extern s32 func_800132BC(s32 a0, s32 a1); -extern void func_8012BE98(s32 arg0, u16 * arg1); -extern s32 func_8012BEE8(s32 a0); -extern s32 func_8012BF10(s32 a0, s32 a1); -extern void func_8012BF4C(s32 *a0, s32 a1); -extern void func_8012BF54(void *a0); -extern void func_8012BF68(void *a0); -extern s16 D_80126CB0; -extern s32 func_8012BF7C(s16 *a0); -extern s16 D_80126CAC; -extern short D_80126CAE; -extern int func_8012BFA8(short *a0); -extern s32 D_801274D4; -extern s32 D_801274E0; -extern s32 func_8012C044(s32 a0); -extern void func_8012C218(void *a0); -extern void func_8012C098(void *param_1); -extern s32 func_8012C0EC(s32 a0); -extern void func_8012C194(void); -extern void func_8001CFDC(s32 a, s32 b); -extern void func_8012C1B8(void); -extern u8 D_800B3DF0[]; -extern s32 func_8012C1DC(s32 a0); -extern u8 D_80126720[]; -extern u16 * func_8012C284(u16 *a0); -extern u8 D_80120194[]; -extern s32 func_8012C2D0(void); -extern s32 func_8012C31C(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32 a0, s32 a1); -extern u8 D_80078EAE; -extern s32 func_8012C354(s32 a0, s32 a1); -extern void func_8001C810(s32 a0, s32 a1); -extern s32 func_8012C438(s32 a0, s32 a1); -extern s32 func_8012C890(s32 a0, s32 a1, s32 a2); -extern s32 func_8012C51C(void *a0, s32 a1); -extern s32 func_8012C588(s32 a0, s32 a1); -extern void func_8012C724(s32 a0, s32 a1); -extern s32 func_8012C750(s32 a0); -extern s32 func_8012C820(u8 *a0); -extern s32 D_80190A24; -extern s16 D_801270C4; -extern u16 D_801274E4[]; -extern s32 D_8011DB08; -extern s32 func_8012CB64(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); -extern s32 func_8012CC88(s32 a, s32 b, s32 c); -extern u8 D_800D3918[]; -extern void func_8012CBA4(s32 a0); -extern void func_8012CBCC(s32 a0); -extern void func_8012CBF4(s32 a0); -extern void func_8012CC1C(s32 arg0, s32 arg1); -extern void func_8012CC40(s32 arg0, s32 arg1); -extern s32 func_8012CC88(s32 a0, s32 a1, s32 a2); -extern void func_8012CC64(s32 a0, s32 a1); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern s32 func_8012CE2C(s32 a0); -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); -extern void func_8012CFA8(s32 arg0); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_8012D3B4(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012D098(u16 *param_1, u32 param_2); -extern void func_8012D098(); -extern void func_8012D38C(int a0); -extern void func_8012D3AC(void); -extern s32 AddPrim(s32, void *); -extern s32 RotTransPers(s32, s32, s32 *, s32 *); -extern void SetLineF2(void *); -extern void *func_80010A08(s32); -extern void func_8004914C(void *); -extern void func_800491AC(void *); -extern s32 D_800A651C; -extern u8 D_800AF648; -extern s16 D_800B9A02; -extern void func_8012D4B4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_8012D5DC(void); -extern s16 D_80126B98; -extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2); -extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern int func_8012D664(); -extern void func_8012D624(s32 a0); -extern int func_8012D664(int arg0, int arg1, int arg2); -extern s32 func_8012D714(s32 param_1, u32 param_2); -extern void func_8012F568(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void func_8014C978(void); -extern M2C_UNK D_8018D558; -extern M2C_UNK D_8018D560; -extern s32 func_8012DB84(void); -extern s32 func_8012DE2C(s32 a0); -extern s32 func_8012DDA4(void); -extern s32 func_8012DBD0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8012DDA4(); -extern s32 func_8012DF34(s32 a0, s32 a1, s32 a2); -extern s16 D_80126B9A; -extern u8 D_801152A8[]; -extern void func_8012DFBC(void); -extern void func_8012DFCC(void); -extern void func_8012E014(s32 arg0); -extern void func_8012E138(void); -extern void func_8012DFD4(u8 *a0); -extern s32 func_8012E27C(void); -extern void func_8012E284(void); -extern s32 GetTPage(s32, s32, s32, s32); -extern s32 func_8005A600(s32, s32, s32, s32, s32); -extern void func_8012E28C(s32 arg0, s32 arg1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void func_8012E32C(void); -extern s32 func_8012E470(s32 a0); -extern void func_8012E4C8(s32 a0); -extern s32 func_8012E504(s32 a0, s32 a1); -extern s32 func_8012E544(s32 a0); -extern s32 func_8012E57C(s32 a0, s32 a1); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E688(s32 param_1, u16 param_2, u16 param_3); -extern s32 func_8012E778(int param_1, int param_2); -extern void func_8012E88C(u8 *a0); -extern void func_8012E8A8(u8 *a0); -extern void func_8012E8C4(u8 *a0); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8016AA50(int, int); -extern void func_8016B428(int); -extern void func_80019064(void *); -extern int D_8018D568; -extern void func_8012E9C0(int param_1); -extern void func_8012EA90(s32 param_1, s32 param_2, s32 *param_3); -extern void func_8012EC04(s32 param_1, s32 param_2, s32 *param_3); -extern s32 func_8002A4FC(s32 a0); -extern s32 func_8012EECC(s32 a0); -extern void func_8012EFB8(s32 a0); -extern void func_8012EF34(s32 a0, s32 a1); -extern void func_8012EF70(s32 a0, s32 a1); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8012F0BC(s32 *a0, s32 *a1, s32 *a2); -extern void RotTransSV(s32 a0, s32 a1, void *a2); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_8012F1A4(s32 *a0, s32 a1, s32 *a2); -extern void func_8012F2E8(s32 a0, s32 a1, s32 a2); -extern s16 D_80126CB6; -extern void func_8012F374(s32 a0, s32 a1); -extern void *memcpy(void *, const void *, u32); -extern u8 D_80126C38; -extern u8 D_80126C40; -extern u16 D_80126B94; -extern u16 D_80126B96; -extern void func_8012F568(s32 param_1, s32 param_2, s32 param_3, s32 param_4, s32 param_5, s32 param_6); -extern void func_80131B14(); -extern void func_80131E00(struct S80131E00 *a0, s32 a1); -extern s32 func_80131A34(s32, s32); -extern void func_80131CA8(int a0, int a1); -extern void func_8012F5F4(s32 arg0); -extern void func_80131C78(s32 a0); -extern void func_8012F68C(s32 arg0); -extern void func_8012F75C(s32 a0); -extern s32 func_8012BEE8(s32); -extern void func_8012F7B4(s32 a0); -extern void func_80131170(); -extern void func_80131CA8(); -extern unsigned char D_8018D584[]; -extern void func_8012F828(int param_1); -extern void func_80131340(s32 a0); -extern void func_8012F87C(s32 a0); -extern void func_80131170(s32 a0, s32 a1, s32 a2); -extern u8 D_8018D590[]; -extern void func_8012F8C8(u8* arg0); -extern void func_8012F91C(s32 a0); -extern s32 func_80131A34(s32 a0, s32 a1); -extern void func_80131CA8(s32 a0, s32 a1); -extern void func_8012F968(s32 param_1); -extern void func_801319E0(s32 a0); -extern s32 func_80143B6C(s32 a0, s32 a1); -extern void func_8012FB54(s32 a0); -extern void func_8012FC30(s32 a0); -extern void func_8012FCA4(int a0); -extern s32 func_8012FCC4(s32 param_1); -extern void func_8012FDA8(int param_1); -extern void func_8012FE70(s32 a0); -extern void func_8012FF00(s32 a0); -extern void func_8012FF4C(s32 a0); -extern void func_80130D48(s32 a0); -extern void func_8012FF98(u8 *a0); -extern s32 func_80131AC8(void *a0); -extern void func_8013001C(void *a0); -extern void func_80130088(void *a0); -extern s32 func_8012BCCC(s32); -extern void func_801300F4(s32 a0); -extern void func_801301E8(u8 *a0); -extern void func_80130278(s32 arg0); -extern void func_80130314(s32 a0); -extern void func_80130360(s32 a0); -extern void func_8012E364(void); -extern void func_801303A0(s32 a0); -extern void func_801303EC(void *a0); -extern void func_80143CD4(s32 a0); -extern void func_800CB0E8(s32 a0); -extern void func_80130438(s32 a0); -extern void func_801319E0(int); -extern int func_80131D68(int, int); -extern int func_8012BEE8(int); -extern void func_80131CA8(int, int); -extern void func_80130514(int param_1); -extern void func_801305CC(u8 *a0); -extern void func_8012CBF4(s32); -extern s32 func_80131D68(s32 a0, s32 a1); -extern void func_80130650(s32 a0); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_80130740(void *a0, u16 *a1); -extern s32 func_801312D0(s32 a0, void *a1); -extern void func_801307B0(s32 a0); -extern void func_80130858(s32 a0); -extern void func_80130898(u8 *a0); -extern void func_801308DC(s32 a0); -extern void func_80166244(); -extern void func_80130974(int param_1); -extern void func_80130A18(u8 *a0); -extern void func_80130AC4(s32 a0); -extern int func_80131A34(int a0, int a1); -extern void func_80130AF0(int param_1); -extern void (*D_8018D5A4[])(void); -extern void func_80130D0C(void *a0); -extern s32 rand(void); -extern u8 D_80078E78[]; -extern u16 D_80078EB2; -extern u16 D_80078EB4; -extern s16 D_8018D5F4[]; -extern s16 D_8018D624[]; -extern s16 D_8018D684[]; -extern s16 D_8018D68C[]; -extern s16 D_8018D6AC[]; -extern void func_80130D48(s32 arg0); -extern void func_80131170(s32 p, s32 b, s32 c); -extern s32 func_801312D0(s32 param_1, void *param_2); -extern void func_80131E00(); -extern s32 D_801E5A38; -extern s32 D_801E5A3C; -extern void func_8002A04C(s32 a0); -extern void func_801319E0(s32 arg0); -extern s32 func_80131CF4(s32 a0); -extern int func_80131D68(int a0, int a1); -extern void (*D_8018D6E4[])(struct S80131E00 *a0); -extern void func_80131E38(u8 *a0); -extern void func_80131E7C(s32 a0); -extern void func_80131EE4(void); -extern void (*D_8018D73C[])(void); -extern void func_80131EEC(void *a0); -extern void (*D_8018D784[])(void); -extern void func_80131F28(void *a0); -extern void (*D_8018D78C[])(void); -extern void func_80131F64(void *a0); -extern void (*D_8018D794[])(void); -extern void func_80131FA0(void *a0); -extern void (*D_8018D79C[])(void); -extern void func_80131FDC(void *a0); -extern void func_801320D0(void); -extern void func_8001C214(int, int); -extern int D_8018D744; -extern void func_801320D8(int param_1); -extern s32 func_80132144(s32 param_1); -extern int D_8018D764; -extern void func_801321B0(int param_1); -extern int D_8018D774; -extern void func_8013221C(int param_1); -extern void func_8005C324(int dst, int src, int n) __asm__("memcpy"); /* Phase-24: 0x8005C324 is named memcpy for overlays (whale needs it); keep the non-builtin C name here (else built-in codegen), emit via asm-label */ -extern void func_801325B8(int a0, int a1, int a2, int a3, int a4); -extern void func_80132288(int *param_1, int *param_2, int param_3); -extern void func_801325B8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_8013240C(s32 a0); -extern void memcpy(); -extern void gteMIMefunc(); -extern void func_801325B8(int dst, int src, int m0, int mm, int arg5); -extern void func_8013277C(void); -extern void func_80020F34(s32 a0, s32 a1); -extern void func_80054514(s32 a0, s32 a1); -extern void func_80132784(s32 a0, s32 a1, u32 a2); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_80132DC4(s32 a0, s32 a1, s32 a2); -extern s32 func_80132E6C(s16 *a0); -extern void func_80132EC4(void *a0, s16 a1); -extern s32 func_80132EF4(s32 a0, s32 a1); -extern void func_801330E0(void * param_1, s16 * param_2, s32 param_3); -extern void func_80133060(u8 *a0, s32 *a1, s32 a2); -extern void func_8013339C(short *param_1, short *param_2); -extern s32 func_8013361C(s16 *a0, s16 *a1, s16 *a2, s16 *a3); -extern s32 D_801E5A80; -extern s32 D_801E5A84[]; -extern int D_801E5A88; -extern void func_80136BC4(s32 a0); -extern void func_801336E8(void *a0, int a1, int a2); -extern void func_80136BC4(s32); -extern void func_8013373C(s16 arg0); -extern s32 func_80133784(s32 arg0, void *arg1, s32 arg2); -extern s32 func_80133CD4(); -extern s32 func_80134310(Vec3s *a0, Vec3s *a1, s32 a2); -extern s32 func_8013435C(s16 *a0, s16 *a1, s32 a2, s16 *a3); -extern s32 func_801343C4(s32 angle, s32 p1, s32 p2); -extern s32 func_80134510(s32 param); -extern s32 func_801345F8(s32 arg); -extern s32 func_801347A0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134A28(s32 a0, s32 a1, s32 a2); -extern int func_80134A74(int param_1, s16 param_2, s16 param_3, int param_4); -extern s32 func_80134C20(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134FB8(s32 a0, s32 a1, s32 a2); -extern s32 func_80135004(s32 arg0, s32 p1, s32 p2); -extern u8 D_8018D7A8; -extern u8 D_8018D7A4; -extern s16 *D_8018D7AC; -extern u8 D_8018D7B0; -extern int D_801E5A80; -extern u16 D_801E5A90; -extern int func_80134A74(int, s16, s16, int); -extern int func_80135168(u16 arg0, u16 *p1, u16 *p2); -extern s16 func_80135480(void *param_1, s32 param_2, s16 *param_3, s16 *param_4); -/* ==== end §8b carried decl layer ==== */ - - -s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3) { - typedef struct { s8 c[8]; } Blk8; - extern s16 func_80135480(void *param_1, s32 param_2, s16 *param_3, s16 *param_4); - extern s32 func_80135EB0(void *arg0, s32 arg1_); - extern s32 func_80136A94(s32 a0, s32 a1, s32 a2, s32 a3); - extern s32 func_80133AB0(s16, s16, s16, s32); - extern u8 D_8018D7A4; - extern u8 D_8018D7A8; - extern s16 *D_8018D7AC; - extern s16 D_801E5A8C; - extern u16 D_801E5A90; - extern s32 D_801E5A94; - extern s32 D_801E5AB4; - extern u8 D_801152A8[]; - extern u8 D_801152B0; - - s32 *p; - register s32 s7 __asm__("$23"); - s32 flag; - s32 acc; - s16 i; - s32 eq; - s32 ret; - s32 frame_pad[8]; - (void)&frame_pad; - - switch (((s32 (*)(void))func_80135480)()) { - case 0: - return 0; - case 1: - s7 = a0 + 0x34; - p = (s32 *)((a1 & 0xFFFFFFF) | 0x80000000); - flag = 0; - break; - case 2: - s7 = a0 + 0x34; - p = (s32 *)((a1 & 0xFFFFFFF) | 0x80000000); - flag = 1; - break; - case 3: - s7 = a0 + 0x34; - p = (s32 *)&D_801E5AB4; - flag = 0; - break; - case 4: - s7 = (s32)&D_801E5A94; - p = (s32 *)&D_801E5AB4; - flag = 1; - break; - } - - acc = 0; - if (a1 < 0) { - if (func_80135EB0(p, -0x8000) == 0) { - p = (s32 *)*p; - if (p == 0) return 0; - loop: - if (func_80135EB0(p, -0x8000) == 0) goto next; - } - docall: - func_80136A94(flag, a0, a3, s7); - return 1; - next: - p = (s32 *)*p; - __asm__ __volatile__(""); - if (p != 0) goto loop; - return 0; - } - - i = 0; - *(s16 *)((*(u8 **)&D_8018D7A4) + 6) = -0x7FFF; - *(s16 *)((*(u8 **)&D_8018D7A8) + 6) = 0x7FFF; - D_801E5A90 = 0; - D_801E5A8C = 0; - { - s32 t = 0; - if (((V3 *)a2)->x == ((V3 *)a3)->x && ((V3 *)a2)->y == ((V3 *)a3)->y) { - s32 zt = (((V3 *)a2)->z == ((V3 *)a3)->z); - __asm__("addu %0,%1,$zero" : "=r"(t) : "r"(zt)); - } - eq = t; - } - - while (1) { - ret = func_80133AB0(0, (s16)(*(Box **)&D_8018D7A4)->f0, (s16)(*(Box **)&D_8018D7A4)->f4, (s32)p); - if (ret == 0) goto out; - acc |= ret; - if (eq != 0) goto out; - { - s16 old = i; - i = i + 1; - if (old >= 5) return 0; - } - } - -out: - if ((s16)acc != 0 || D_801E5A8C != 0) { - if ((*(Box **)&D_8018D7A4)->f6 >= -0xBCB) { - *(Blk8 *)D_801152A8 = *(Blk8 *)&D_801152B0; - } - (*(Box **)&D_8018D7AC)->f0 = (*(Box **)&D_8018D7A8)->f0; - (*(Box **)&D_8018D7AC)->f2 = (*(Box **)&D_8018D7A8)->f2; - (*(Box **)&D_8018D7AC)->f4 = (*(Box **)&D_8018D7A8)->f4; - goto docall; - } - return 0; -} diff --git a/src/ov_SC04_019/ov_SC04_019_jr_80135D20.c b/src/ov_SC04_019/ov_SC04_019_jr_80135D20.c deleted file mode 100644 index 38d0a4626..000000000 --- a/src/ov_SC04_019/ov_SC04_019_jr_80135D20.c +++ /dev/null @@ -1,1504 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ - /* 8-byte element, cmd @ +4 */ - /* list ptr @ +0x90 */ - /* size 8, alignment 1 -> unaligned copy */ -extern void func_80128288(void); -extern void func_80128158(void); -extern void func_801285E4(void); -extern void func_80128178(void); -extern void func_80128678(void); -extern void func_80128198(void); -extern void func_80128714(void); -extern void func_801281B8(void); -extern void func_8013E67C(void); -extern void func_801281D8(void); -extern void func_8013E558(void); -extern void func_801281F8(void); -extern s32 D_801E4434; -extern s32 func_80128218(void); -extern void func_80128A28(void); -extern void func_80128228(void); -extern void func_80128AF4(void); -extern void func_80128248(void); -extern void func_801282EC(void); -extern void func_80128268(void); -extern u16 D_800B99F6; -extern void (*D_8018D4AC[])(void); -extern void func_80011B7C(int); -extern void func_801282CC(void); -extern void func_8001C0C8(void); -extern void func_80015310(void); -extern void func_80129258(void); -extern void func_801378F0(void); -extern void func_80010E14(void); -extern s16 currentLocationId; -extern s32 func_80029504(void); -extern s32 func_800CF854(s32); -extern s32 func_80128998(void); -extern s32 func_801289F0(void); -extern s32 func_801288E8(s32); -extern s32 func_80128940(s32); -extern s32 func_80029178(s32); -extern s32 func_801288B0(void); -extern void func_80011C10(void); -extern void func_8012832C(void); -extern void func_80129220(void); -extern void func_80011E24(void); -extern void func_80128C14(void); -extern void func_8002AEF8(void); -extern void func_800CFBBC(void); -extern void SsUtReverbOff(void); -extern void func_8013C98C(void); -extern void func_80129C40(s32 a0); -extern void func_800D0630(void); -extern void func_80145CEC(void); -extern void func_80144B9C(void); -extern u8 D_800B9A17; -extern u8 D_800B9A10; -extern void func_80128420(void); -extern s32 func_800D0588(void); -extern void func_801284B8(void); -extern void func_80175308(void); -extern void func_8016E8F0(void); -extern void func_80175494(void); -extern u8 D_800B9A64; -extern void func_801284F0(void); -extern void func_80146074(void); -extern void func_8012853C(void); -extern void func_80178608(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern s32 func_80011A3C(void); -extern short currentLocationId; -extern short D_800B99F2; -extern void func_80128564(void); -extern u8 D_800B9A11; -extern void func_801285D4(void); -extern s32 func_800D18DC(void); -extern void func_8014607C(void); -extern void func_801287B8(void); -extern s32 D_801E5A14; -extern void func_80029444(void); -extern void func_800D1754(void); -extern s32 D_80126B58; -extern s32 D_801E7AB8; -extern u16 D_800B99DA; -extern void func_80129CF8(void); -extern void func_8017849C(void); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_801505FC(s32 a0); -extern void func_801508B4(void *a0); -extern void func_80165E90(void); -extern void func_801627E8(void); -extern void func_80162B1C(void); -extern void func_80165CA0(void); -extern void func_80129010(void); -extern void func_8013CA14(void); -extern void func_800190AC(void); -extern void func_8012956C(void); -extern void func_8016E95C(void); -extern void func_801754A8(void); -extern void func_8013BC7C(void); -extern void func_8013BCDC(void); -extern void func_801379FC(void); -extern void func_8001212C(void); -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); -extern u8 D_800AEFD0; -extern int D_800C7C60; -extern int *D_800C7C64; -extern int D_800A2E20; -extern int D_800AF558; -extern int D_801E4434; -extern int func_801288E8(int arg0); -extern u8 D_800AF560; -extern s32 func_80128940(s32 _arg0); -extern int D_800AECB0; -extern u8 D_800AECB8; -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4); -extern s16 D_800B9A00; -extern M2C_UNK (*D_8018D1E0)(); -extern s16 (*D_8018D1E4)(); -extern M2C_UNK (*D_8018D1EC)(); -extern s32 (*D_8018D1F0)(); -extern s32 D_801E5A10; -extern void func_80010AE0(s32 a0); -extern void func_80018450(s32 a0, s32 a1); -extern void func_800183E0(s32 a0); -extern void func_80128D60(s32 a0, s32 *a1, s32 *a2); -extern s32 func_80128DB4(s32 a0, s32 *a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern M2C_UNK D_801E4438; -extern void func_80128FAC(u16 *arg0); -extern s16 D_8011DB2C; -extern s16 D_8011DB30; -extern s32 D_80126AEC; -extern u8 *func_8012913C(s32 a0); -extern u8 * func_801290DC(s32 a0, u8 *a1); -extern void func_8001D074(s32 a, s32 b); -extern u8 *func_801291C0(void); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 * func_8012913C(s32 arg0); -extern void func_80016714(void *a0, s32 a1); -extern u8 * func_801291C0(void); -extern void func_80129248(s16 a0); -extern void func_801292C8(u8 *a0); -extern void func_8012927C(void); -extern void func_8012931C(struct vec *a0); -extern void func_80129350(s32 a0, s32 a1); -extern void func_80129374(s32 a0, s32 a1); -extern s16 D_800B9AAC[]; -extern s16 D_800B9AAE[]; -extern s16 D_800B9AB0[]; -extern s16 D_800B9AB2[]; -extern s16 D_800B9AB4[]; -extern s16 D_800B9AB6[]; -extern s16 D_800B9AB8[]; -extern s16 D_800B9ABA[]; -extern void func_80129398(void); -extern s16 D_80114EE0; -extern void func_80129428(void); -extern void func_8012943C(void); -extern s32 D_8005128C; -extern u8 D_800B9A78; -extern void func_801298F4(void *arg0); -extern void func_801299C8(s32 a, s32 b, s32 c); -extern void func_8012944C(void); -extern unsigned short D_800B99F0; -extern void func_8012A328(void); -extern void func_80053308(s32); -extern s32 func_80012F74(s32, s32, s32, s32); /* canonical s32 (engine_core); (s16)-cast the return for the sll/sra */ -extern void GsSetRefView2L(void *); -extern s8 D_801150D6; /* canonical (engine_core macro): s8 — access via *(u8*)& for lbu */ -extern u8 D_80127504; -extern s32 D_80126E60[]; -extern s32 D_80126F04[]; -extern u8 D_80126948[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_80126FA8[]; -extern struct BigCopy D_80126DB8;/* canonical (engine_core macro): struct BigCopy — (s32*)& at use */ -extern u8 D_800AF630[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_800AE688[]; -extern s32 D_801151D4; /* canonical (10 siblings): scalar s32 — store (s32)ptr */ -extern void func_8012A018(s32 a, s32 b); -extern void func_80129FF4(void); -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_80126940; -extern s16 D_80126942; -extern s16 D_80126944; -extern void func_8012A048(void *a0, s32 a1, u8 a2); -extern void *memcpy(void *, const void *, unsigned int); -extern void func_8012A094(s32 a0); -extern void func_8012A100(s8 a0); -extern void func_8012A0E0(void); -extern s8 D_801150D6; -extern s32 D_80120204; -extern s32 D_80120200; -extern s32 D_8012020C; -extern s32 D_80120208; -extern s16 D_80120218; -extern s16 D_80120210; -extern s16 D_8012021A; -extern s16 D_80120212; -extern s16 D_8012021C; -extern s16 D_80120214; -extern s16 D_80120226; -extern s16 D_80120220; -extern s16 D_80120228; -extern s16 D_80120222; -extern s16 D_8012022A; -extern s16 D_80120224; -extern s32 D_80120294; -extern s16 D_80120298; -extern s16 D_8012029A; -extern void func_8012A110(void); -extern s8 D_801152C0; -extern void func_8012A2F4(void); -extern s16 D_80127080; -extern s16 D_801152C2; -extern void func_8012A304(s32 a0, s32 a1); -extern s32 D_801151D4; -extern struct BigCopy D_80126DB8; -extern struct BigCopy D_80114EE8; -extern void func_8012A4BC(void); -extern void func_8012A598(void *a0); -extern void func_8012A568(void (*a0)(void)); -extern void func_8012A62C(s32); -extern void func_8012A5F8(void (*a0)(void), s32 a1); -extern void func_8012A62C(s32 a0); -extern void func_8012A7D4(void *a0, void *a1); -extern s32 func_8012A6D0(void *a0, void *a1); -extern s16 func_8012A68C(void); -extern s16 func_8012A79C(s16 *a0, s16 *a1); -extern s16 func_8012A758(void); -extern s32 ratan2(s32 a0, s32 a1); -extern void func_8012A7D4(void *arg0, void *arg1); -extern void func_8012AAAC(); -extern void func_8012A828(s32 a0, void * a1); -extern int func_8012ACE0(void *a0); -extern void func_8012A860(void *a0, int a1); -extern void func_8012A8B0(u8 *a0, s32 a1); -extern void func_8012A8E8(void); -extern u8 D_801202A0[]; -extern u16 D_801270C0; -extern void func_8012A988(u8 *a0); -extern void func_8012A908(void); -extern s32 func_8012ACE0(void *a0); -extern M2C_UNK D_8018D540; -extern void func_8012ACA0(void *arg0); -extern s32 func_8012ACE0(void *o); -extern void func_8012AD44(s32 *a0, s16 a1); -extern s32 func_8012AD50(void * arg0); -extern void func_8012AD64(s32 *a0, s16 a1); -extern void func_8012AD6C(void *a0); -extern void func_8012AD80(s32 a0); -extern void func_8012ADE4(u8 *a0); -extern s32 *D_80126B78; -extern s32 *D_80126B90; -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80013478(s32 a0, s32 a1); -extern s32 func_8012AE00(s32 a0); -extern s32 func_8012AF0C(s32 a0, s32 a1); -extern s32 func_80134510(s32 arg); -extern s32 func_8012B030(u8 *a0); -extern int func_80047948(int a0); -extern int func_8004787C(int a0); -extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_8012B14C(s32 a0, s32 a1); -extern void func_8012B178(s32 a0, s32 a1); -extern void func_8012B1B4(s32 a0, s32 a1); -extern void func_8012B200(u8 *a0); -extern void func_8012B21C(void *a0); -extern void func_8012B23C(s32 a0); -extern void func_8012B260(u8 *a0); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern void RotMatrixYXZ(void *m, void *p); -extern void func_8012B370(int a0); -extern void func_8004978C(s16 *a0, void *a1); -extern void func_8012B414(int a0); -extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); -extern s32 func_8012B6D4(s16 *a0, s16 *a1); -extern s32 func_8012B70C(s16 *a0, s16 *a1); -extern s32 ratan2(s32 x, s32 y); -extern s32 func_8012B744(void *a0, void *a1); -extern s16 D_80126CB8; -extern s16 D_80126CB4; -extern s32 func_8012B864(s32 a0); -extern s32 func_8012B8A4(s16 *a0); -extern s32 func_8012B8E4(s32 arg0, s32 arg1); -extern s32 func_8012BA10(s32 arg0, s32 arg1); -extern s32 func_8012BB3C(s32 arg0, s32 arg1, u32 arg2, s32 arg3); -extern void Square0(s32 *a0, s32 *a1); -extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1); -extern s16 D_80126CBA; -extern s32 func_8012BCCC(s32 a0); -extern void func_80013350(s32 a0, void *a1); -extern u8 D_80126B5C; -extern void func_8012BD14(s32 a0); -extern s32 func_8012BDBC(s32 a0, s32 a1); -extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2); -extern void func_8012BE98(s32 a0, u16 *a1); -extern void func_8012BE54(s32 a0); -extern s32 func_800132BC(s32 a0, s32 a1); -extern void func_8012BE98(s32 arg0, u16 * arg1); -extern s32 func_8012BEE8(s32 a0); -extern s32 func_8012BF10(s32 a0, s32 a1); -extern void func_8012BF4C(s32 *a0, s32 a1); -extern void func_8012BF54(void *a0); -extern void func_8012BF68(void *a0); -extern s16 D_80126CB0; -extern s32 func_8012BF7C(s16 *a0); -extern s16 D_80126CAC; -extern short D_80126CAE; -extern int func_8012BFA8(short *a0); -extern s32 D_801274D4; -extern s32 D_801274E0; -extern s32 func_8012C044(s32 a0); -extern void func_8012C218(void *a0); -extern void func_8012C098(void *param_1); -extern s32 func_8012C0EC(s32 a0); -extern void func_8012C194(void); -extern void func_8001CFDC(s32 a, s32 b); -extern void func_8012C1B8(void); -extern u8 D_800B3DF0[]; -extern s32 func_8012C1DC(s32 a0); -extern u8 D_80126720[]; -extern u16 * func_8012C284(u16 *a0); -extern u8 D_80120194[]; -extern s32 func_8012C2D0(void); -extern s32 func_8012C31C(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32 a0, s32 a1); -extern u8 D_80078EAE; -extern s32 func_8012C354(s32 a0, s32 a1); -extern void func_8001C810(s32 a0, s32 a1); -extern s32 func_8012C438(s32 a0, s32 a1); -extern s32 func_8012C890(s32 a0, s32 a1, s32 a2); -extern s32 func_8012C51C(void *a0, s32 a1); -extern s32 func_8012C588(s32 a0, s32 a1); -extern void func_8012C724(s32 a0, s32 a1); -extern s32 func_8012C750(s32 a0); -extern s32 func_8012C820(u8 *a0); -extern s32 D_80190A24; -extern s16 D_801270C4; -extern u16 D_801274E4[]; -extern s32 D_8011DB08; -extern s32 func_8012CB64(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); -extern s32 func_8012CC88(s32 a, s32 b, s32 c); -extern u8 D_800D3918[]; -extern void func_8012CBA4(s32 a0); -extern void func_8012CBCC(s32 a0); -extern void func_8012CBF4(s32 a0); -extern void func_8012CC1C(s32 arg0, s32 arg1); -extern void func_8012CC40(s32 arg0, s32 arg1); -extern s32 func_8012CC88(s32 a0, s32 a1, s32 a2); -extern void func_8012CC64(s32 a0, s32 a1); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern s32 func_8012CE2C(s32 a0); -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); -extern void func_8012CFA8(s32 arg0); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_8012D3B4(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012D098(u16 *param_1, u32 param_2); -extern void func_8012D098(); -extern void func_8012D38C(int a0); -extern void func_8012D3AC(void); -extern s32 AddPrim(s32, void *); -extern s32 RotTransPers(s32, s32, s32 *, s32 *); -extern void SetLineF2(void *); -extern void *func_80010A08(s32); -extern void func_8004914C(void *); -extern void func_800491AC(void *); -extern s32 D_800A651C; -extern u8 D_800AF648; -extern s16 D_800B9A02; -extern void func_8012D4B4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_8012D5DC(void); -extern s16 D_80126B98; -extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2); -extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern int func_8012D664(); -extern void func_8012D624(s32 a0); -extern int func_8012D664(int arg0, int arg1, int arg2); -extern s32 func_8012D714(s32 param_1, u32 param_2); -extern void func_8012F568(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void func_8014C978(void); -extern M2C_UNK D_8018D558; -extern M2C_UNK D_8018D560; -extern s32 func_8012DB84(void); -extern s32 func_8012DE2C(s32 a0); -extern s32 func_8012DDA4(void); -extern s32 func_8012DBD0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8012DDA4(); -extern s32 func_8012DF34(s32 a0, s32 a1, s32 a2); -extern s16 D_80126B9A; -extern u8 D_801152A8[]; -extern void func_8012DFBC(void); -extern void func_8012DFCC(void); -extern void func_8012E014(s32 arg0); -extern void func_8012E138(void); -extern void func_8012DFD4(u8 *a0); -extern s32 func_8012E27C(void); -extern void func_8012E284(void); -extern s32 GetTPage(s32, s32, s32, s32); -extern s32 func_8005A600(s32, s32, s32, s32, s32); -extern void func_8012E28C(s32 arg0, s32 arg1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void func_8012E32C(void); -extern s32 func_8012E470(s32 a0); -extern void func_8012E4C8(s32 a0); -extern s32 func_8012E504(s32 a0, s32 a1); -extern s32 func_8012E544(s32 a0); -extern s32 func_8012E57C(s32 a0, s32 a1); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E688(s32 param_1, u16 param_2, u16 param_3); -extern s32 func_8012E778(int param_1, int param_2); -extern void func_8012E88C(u8 *a0); -extern void func_8012E8A8(u8 *a0); -extern void func_8012E8C4(u8 *a0); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8016AA50(int, int); -extern void func_8016B428(int); -extern void func_80019064(void *); -extern int D_8018D568; -extern void func_8012E9C0(int param_1); -extern void func_8012EA90(s32 param_1, s32 param_2, s32 *param_3); -extern void func_8012EC04(s32 param_1, s32 param_2, s32 *param_3); -extern s32 func_8002A4FC(s32 a0); -extern s32 func_8012EECC(s32 a0); -extern void func_8012EFB8(s32 a0); -extern void func_8012EF34(s32 a0, s32 a1); -extern void func_8012EF70(s32 a0, s32 a1); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8012F0BC(s32 *a0, s32 *a1, s32 *a2); -extern void RotTransSV(s32 a0, s32 a1, void *a2); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_8012F1A4(s32 *a0, s32 a1, s32 *a2); -extern void func_8012F2E8(s32 a0, s32 a1, s32 a2); -extern s16 D_80126CB6; -extern void func_8012F374(s32 a0, s32 a1); -extern void *memcpy(void *, const void *, u32); -extern u8 D_80126C38; -extern u8 D_80126C40; -extern u16 D_80126B94; -extern u16 D_80126B96; -extern void func_8012F568(s32 param_1, s32 param_2, s32 param_3, s32 param_4, s32 param_5, s32 param_6); -extern void func_80131B14(); -extern void func_80131E00(struct S80131E00 *a0, s32 a1); -extern s32 func_80131A34(s32, s32); -extern void func_80131CA8(int a0, int a1); -extern void func_8012F5F4(s32 arg0); -extern void func_80131C78(s32 a0); -extern void func_8012F68C(s32 arg0); -extern void func_8012F75C(s32 a0); -extern s32 func_8012BEE8(s32); -extern void func_8012F7B4(s32 a0); -extern void func_80131170(); -extern void func_80131CA8(); -extern unsigned char D_8018D584[]; -extern void func_8012F828(int param_1); -extern void func_80131340(s32 a0); -extern void func_8012F87C(s32 a0); -extern void func_80131170(s32 a0, s32 a1, s32 a2); -extern u8 D_8018D590[]; -extern void func_8012F8C8(u8* arg0); -extern void func_8012F91C(s32 a0); -extern s32 func_80131A34(s32 a0, s32 a1); -extern void func_80131CA8(s32 a0, s32 a1); -extern void func_8012F968(s32 param_1); -extern void func_801319E0(s32 a0); -extern s32 func_80143B6C(s32 a0, s32 a1); -extern void func_8012FB54(s32 a0); -extern void func_8012FC30(s32 a0); -extern void func_8012FCA4(int a0); -extern s32 func_8012FCC4(s32 param_1); -extern void func_8012FDA8(int param_1); -extern void func_8012FE70(s32 a0); -extern void func_8012FF00(s32 a0); -extern void func_8012FF4C(s32 a0); -extern void func_80130D48(s32 a0); -extern void func_8012FF98(u8 *a0); -extern s32 func_80131AC8(void *a0); -extern void func_8013001C(void *a0); -extern void func_80130088(void *a0); -extern s32 func_8012BCCC(s32); -extern void func_801300F4(s32 a0); -extern void func_801301E8(u8 *a0); -extern void func_80130278(s32 arg0); -extern void func_80130314(s32 a0); -extern void func_80130360(s32 a0); -extern void func_8012E364(void); -extern void func_801303A0(s32 a0); -extern void func_801303EC(void *a0); -extern void func_80143CD4(s32 a0); -extern void func_800CB0E8(s32 a0); -extern void func_80130438(s32 a0); -extern void func_801319E0(int); -extern int func_80131D68(int, int); -extern int func_8012BEE8(int); -extern void func_80131CA8(int, int); -extern void func_80130514(int param_1); -extern void func_801305CC(u8 *a0); -extern void func_8012CBF4(s32); -extern s32 func_80131D68(s32 a0, s32 a1); -extern void func_80130650(s32 a0); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_80130740(void *a0, u16 *a1); -extern s32 func_801312D0(s32 a0, void *a1); -extern void func_801307B0(s32 a0); -extern void func_80130858(s32 a0); -extern void func_80130898(u8 *a0); -extern void func_801308DC(s32 a0); -extern void func_80166244(); -extern void func_80130974(int param_1); -extern void func_80130A18(u8 *a0); -extern void func_80130AC4(s32 a0); -extern int func_80131A34(int a0, int a1); -extern void func_80130AF0(int param_1); -extern void (*D_8018D5A4[])(void); -extern void func_80130D0C(void *a0); -extern s32 rand(void); -extern u8 D_80078E78[]; -extern u16 D_80078EB2; -extern u16 D_80078EB4; -extern s16 D_8018D5F4[]; -extern s16 D_8018D624[]; -extern s16 D_8018D684[]; -extern s16 D_8018D68C[]; -extern s16 D_8018D6AC[]; -extern void func_80130D48(s32 arg0); -extern void func_80131170(s32 p, s32 b, s32 c); -extern s32 func_801312D0(s32 param_1, void *param_2); -extern void func_80131E00(); -extern s32 D_801E5A38; -extern s32 D_801E5A3C; -extern void func_8002A04C(s32 a0); -extern void func_801319E0(s32 arg0); -extern s32 func_80131CF4(s32 a0); -extern int func_80131D68(int a0, int a1); -extern void (*D_8018D6E4[])(struct S80131E00 *a0); -extern void func_80131E38(u8 *a0); -extern void func_80131E7C(s32 a0); -extern void func_80131EE4(void); -extern void (*D_8018D73C[])(void); -extern void func_80131EEC(void *a0); -extern void (*D_8018D784[])(void); -extern void func_80131F28(void *a0); -extern void (*D_8018D78C[])(void); -extern void func_80131F64(void *a0); -extern void (*D_8018D794[])(void); -extern void func_80131FA0(void *a0); -extern void (*D_8018D79C[])(void); -extern void func_80131FDC(void *a0); -extern void func_801320D0(void); -extern void func_8001C214(int, int); -extern int D_8018D744; -extern void func_801320D8(int param_1); -extern s32 func_80132144(s32 param_1); -extern int D_8018D764; -extern void func_801321B0(int param_1); -extern int D_8018D774; -extern void func_8013221C(int param_1); -extern void func_8005C324(int dst, int src, int n) __asm__("memcpy"); /* Phase-24: 0x8005C324 is named memcpy for overlays (whale needs it); keep the non-builtin C name here (else built-in codegen), emit via asm-label */ -extern void func_801325B8(int a0, int a1, int a2, int a3, int a4); -extern void func_80132288(int *param_1, int *param_2, int param_3); -extern void func_801325B8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_8013240C(s32 a0); -extern void memcpy(); -extern void gteMIMefunc(); -extern void func_801325B8(int dst, int src, int m0, int mm, int arg5); -extern void func_8013277C(void); -extern void func_80020F34(s32 a0, s32 a1); -extern void func_80054514(s32 a0, s32 a1); -extern void func_80132784(s32 a0, s32 a1, u32 a2); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_80132DC4(s32 a0, s32 a1, s32 a2); -extern s32 func_80132E6C(s16 *a0); -extern void func_80132EC4(void *a0, s16 a1); -extern s32 func_80132EF4(s32 a0, s32 a1); -extern void func_801330E0(void * param_1, s16 * param_2, s32 param_3); -extern void func_80133060(u8 *a0, s32 *a1, s32 a2); -extern void func_8013339C(short *param_1, short *param_2); -extern s32 func_8013361C(s16 *a0, s16 *a1, s16 *a2, s16 *a3); -extern s32 D_801E5A80; -extern s32 D_801E5A84[]; -extern int D_801E5A88; -extern void func_80136BC4(s32 a0); -extern void func_801336E8(void *a0, int a1, int a2); -extern void func_80136BC4(s32); -extern void func_8013373C(s16 arg0); -extern s32 func_80133784(s32 arg0, void *arg1, s32 arg2); -extern s32 func_80133CD4(); -extern s32 func_80134310(Vec3s *a0, Vec3s *a1, s32 a2); -extern s32 func_8013435C(s16 *a0, s16 *a1, s32 a2, s16 *a3); -extern s32 func_801343C4(s32 angle, s32 p1, s32 p2); -extern s32 func_80134510(s32 param); -extern s32 func_801345F8(s32 arg); -extern s32 func_801347A0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134A28(s32 a0, s32 a1, s32 a2); -extern int func_80134A74(int param_1, s16 param_2, s16 param_3, int param_4); -extern s32 func_80134C20(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134FB8(s32 a0, s32 a1, s32 a2); -extern s32 func_80135004(s32 arg0, s32 p1, s32 p2); -extern u8 D_8018D7A8; -extern u8 D_8018D7A4; -extern s16 *D_8018D7AC; -extern u8 D_8018D7B0; -extern int D_801E5A80; -extern u16 D_801E5A90; -extern int func_80134A74(int, s16, s16, int); -extern int func_80135168(u16 arg0, u16 *p1, u16 *p2); -extern s16 func_80135480(void *param_1, s32 param_2, s16 *param_3, s16 *param_4); -extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); -/* ==== end §8b carried decl layer ==== */ - - - -// @class: regalloc-order -// @stuck: none — MATCH (match_one 100/100 + rtu_match real-TU); needs the PAIRED //@EDIT on ((s32 (*)(void *, s32, s16 *, s16 *))func_80135480)(return s16->s32 + `s32 result;`->`s16 result;`, whole-TU byte-neutral, verified) + one $s1 pin on `flag` -//@EDIT s16 ((s32 (*)(void *, s32, s16 *, s16 *))func_80135480)(void *param_1, s32 param_2, s16 *param_3, s16 *param_4)||s32 ((s32 (*)(void *, s32, s16 *, s16 *))func_80135480)(void *param_1, s32 param_2, s16 *param_3, s16 *param_4) -//@EDIT s32 result;|| s16 result; - -/* func_80135D20 — "is visible/hittable from " gate (100 ins, ov_SC06_018 jr_8012ACE0). - * - * Builds a second probe point 0x300 above the caller's point on the stack, asks func_80135480 to - * cull/transform it, then dispatches on that result (jtbl_801D2A90, cases 0..4; default falls - * through with p/flag/q UNINITIALISED — reproduced by leaving the switch without a default). - * - * Load-bearing details (do not "clean up"): - * - `u8 dead[96];` is a DEAD aggregate whose only job is the frame layout: it forces the probe - * buffer to sp+0x70 and the frame to 0x98 (gcc-2.7.2 assign_stack_local runs at expand time, so - * an unreferenced aggregate still owns its slot). Remove it and every sp offset shifts by 0x60. - * - `__asm__ __volatile__("")` is the §5a CROSS-JUMP BARRIER: without it jump.c merges the peeled - * first func_80135EB0 probe into the list loop (100 ins -> 88). - * - the explicit goto layout (loop / hit / body / elsepath) reproduces the target's basic-block - * ORDER: the `hit` block sits physically between the loop test and the loop body. A structured - * while/do-while emits the inverted layout (-3 ins, 39 diffs). - * - `register s32 flag __asm__("$17")` is a §17 pin. WITHOUT it gcc ties `arg1`->$s1 / `flag`->$s2, - * the reverse of the target (12 diffs, everything else already byte-exact). Pin-free attempts - * (declaring `flag` before `p`; assigning `flag` first in every case body) were both tried and - * do NOT flip the tie-break. The pin's live range does cross calls, so prefer ×1 banking. - * - func_80135480 must be declared INT-returning here: the target does NOT re-extend the callee's - * result before the switch (`addu $v1,$v0,$zero` only), while an s16-returning prototype costs a - * `sll/sra 16` pair. The two //@EDIT lines flip the in-TU definition s16->s32 and narrow its local - * `result` to s16 instead — the narrowing simply moves from the return-type conversion to the - * assignment, so the WHOLE TU compiles byte-identically (objdump-diffed: only the filename line - * changes). Both edits are required; flipping the return type alone drops func_80135480's tail - * `sll/sra` and shortens it by one instruction. - */ -extern s16 func_80135480(void*, s32, s16*, s16*); -extern s32 func_80135EB0(void *arg0, s32 arg1_); -extern s32 func_801345F8(s32 arg); -extern s32 func_80136A94(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 D_801E5A94; -extern s32 D_801E5AB4; - -s32 func_80135D20(s32 arg0, s32 arg1, u16 *arg2) -{ - u8 dead[96]; - u16 sp[3]; - s32 *p; - register s32 flag __asm__("$17"); - s32 q; - - sp[0] = arg2[0]; - sp[1] = arg2[1] + 0x300; - sp[2] = arg2[2]; - switch (((s32 (*)(void *, s32, s16 *, s16 *))func_80135480)((void *)arg0, arg1, (s16 *)arg2, (s16 *)sp)) { - case 0: - return 0; - case 1: - q = arg0 + 0x34; - p = (s32 *)((arg1 & 0xFFFFFFF) | 0x80000000); - flag = 0; - break; - case 2: - q = arg0 + 0x34; - p = (s32 *)((arg1 & 0xFFFFFFF) | 0x80000000); - flag = 1; - break; - case 3: - q = arg0 + 0x34; - p = &D_801E5AB4; - flag = 0; - break; - case 4: - q = (s32)&D_801E5A94; - p = &D_801E5AB4; - flag = 1; - break; - } - if (arg1 >= 0) { - goto elsepath; - } - if (func_80135EB0(p, 0) != 0) { - goto hit; - } - p = (s32 *)*p; - if (p == NULL) { - return 0; - } - __asm__ __volatile__(""); -loop: - if (func_80135EB0(p, 0) == 0) { - goto body; - } -hit: - func_80136A94(flag, arg0, (s32)arg2, q); - return 1; -body: - p = (s32 *)*p; - if (p != NULL) { - goto loop; - } - return 0; -elsepath: - if (func_801345F8(arg1) != 0) { - goto hit; - } - return 0; -} - - -// @class: struct -// @stuck: none — MATCH (289 ins). symcheck: only the cosmetic jtbl_801D81B8 floor (§8 carve). -// -// func_80135EB0 — h_seq family exemplar (x138 across the overlay fleet). Levers that made it: -// 1. m2 (the y-axis mask) MUST be the if/else form, NOT `m2=0x10; if (a8<=t3) m2=...`. -// Both emit the same compact `bnez; li $s2,0x10` pair, but the pre-init form lets CSE carry -// the D_8018D7A4 pointer load into the (m1|m2)==0 block; the if/else form ends the CSE -// extended-BB so the block reloads `lui/lw D_8018D7A4` (target does). Worth 2 ins + the whole -// big-block register assignment. -// 2. Zero-byte `__asm__ __volatile__("")` fences in case 1 and case 2 (DIFFERENT templates, "" vs " ") -// block gcc-2.7.2 cross_jump from folding those two bodies into case 6's second-call tail -// (they are byte-identical to it; the target keeps all three copies). Worth 10 ins. -// 3. Zero-byte fences between the three big-block coordinate groups stop sched2 hoisting the next -// group's `lhu` into the previous group's load-delay nop (restores 2 nops). -// 4. `D_801152AA = 0;` AFTER the h0 statement: it shortens the [6]-field temp's local-alloc live -// range so c0 wins $v1 and the field temps take $v0/$a0 (target), not $v1/$v0. -// 5. case 4 reaches case 8's tail through a shared `L288` label using `w = x << 16` / `w >> 16` -// so the shared block is exactly `sra $a1,$a1,16` — that is target's .L80136288. `w` pinned to -// $a1 ($5); it never spans a jal so §74 does not apply. -// 6. arg1 copied into a $s3-pinned local — without it global-alloc gives arg1 $s2 and m2 $s3 -// (arg1 has more refs; target's priority order is arg0, sext-temp, m2, arg1). -// 7. `ret0:` sits between case 8 and case 10 and `done:`/`case 0:` after case 10 — that is the -// target's basic-block order; reorg then produces the inline `move $v0,$zero` delay slots. - -extern u8 D_8018D7A4; -extern u8 D_8018D7A8; -extern s16 *D_8018D7AC; -extern u8 D_8018D7B0; -extern s32 D_801150D8; -extern u8 D_80126720[]; - -extern s32 VectorNormalSS(void *a0, void *a1); -extern s32 func_801365B8(void *arg0, s32 arg1, s32 arg2); -extern s32 func_80136334(void *arg0, s32 arg1, s32 arg2); -extern s32 func_80136824(s32, s32, s32); - -s32 func_80135EB0(void *arg0, s32 arg1_) { - extern u8 D_801152A8[]; - extern s16 D_801152AA; - extern s16 D_801152AC; - extern s16 D_80126722; - extern s16 D_80126724; - register s32 arg1 __asm__("$19") = arg1_; - s32 t1; - s32 t2; - s32 t3; - s32 m1; - s32 m2; - s32 t4; - s32 t5; - s32 t6; - s32 n1; - s32 n2; - s32 r; - s32 sv; - register s32 w __asm__("$5"); - void *q; - - t1 = (*(s16 **)&D_8018D7A4)[0]; - if (t1 < M2C_FIELD(arg0, s16 *, 4)) { - m1 = 1; - } else { - m1 = (M2C_FIELD(arg0, s16 *, 6) < t1) << 1; - } - t2 = (*(s16 **)&D_8018D7A4)[2]; - if (t2 < M2C_FIELD(arg0, s16 *, 0xC)) { - m1 |= 4; - } else if (M2C_FIELD(arg0, s16 *, 0xE) < t2) { - m1 |= 8; - } - t3 = (*(s16 **)&D_8018D7A4)[1]; - if (t3 < M2C_FIELD(arg0, s16 *, 8)) { - m2 = 0x10; - } else { - m2 = (M2C_FIELD(arg0, s16 *, 0xA) < t3) << 5; - } - if ((m1 | m2) == 0) { - u16 *ac; - s16 *b4; - s32 c0; - s32 c1; - s32 h0; - s32 h1; - - ac = *(u16 **)&D_8018D7A4; - b4 = D_8018D7AC; - c0 = ac[0]; - b4[0] = c0; - h0 = (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1; - D_801152AA = 0; - (*(s16 *)D_80126720) = h0; - (*(s16 *)D_801152A8) = c0 - h0; - __asm__ __volatile__(""); - c1 = ac[2]; - b4[2] = c1; - h1 = (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1; - D_80126724 = h1; - D_801152AC = c1 - h1; - __asm__ __volatile__(""); - b4[1] = ac[1]; - D_80126722 = (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1; - VectorNormalSS(D_801152A8, D_801152A8); - D_801150D8 |= 1; - return 1; - } - - t4 = (*(s16 **)&D_8018D7A8)[0]; - if (t4 < M2C_FIELD(arg0, s16 *, 4)) { - n1 = 1; - } else { - n1 = (M2C_FIELD(arg0, s16 *, 6) < t4) << 1; - } - t5 = (*(s16 **)&D_8018D7A8)[2]; - if (t5 < M2C_FIELD(arg0, s16 *, 0xC)) { - n1 |= 4; - } else if (M2C_FIELD(arg0, s16 *, 0xE) < t5) { - n1 |= 8; - } - t6 = (*(s16 **)&D_8018D7A8)[1]; - if (t6 < M2C_FIELD(arg0, s16 *, 8)) { - n2 = 0x10; - } else { - n2 = (M2C_FIELD(arg0, s16 *, 0xA) < t6) << 5; - } - if (((m1 | m2) & (n1 | n2)) != 0) { - goto ret0; - } - { - u16 *b0 = *(u16 **)&D_8018D7A8; - u16 *ac = *(u16 **)&D_8018D7A4; - s16 *b8 = *(s16 **)&D_8018D7B0; - - b8[0] = b0[0] - ac[0]; - b8[1] = b0[1] - ac[1]; - b8[2] = b0[2] - ac[2]; - } - - switch (m1) { - case 4: - q = arg0; - sv = M2C_FIELD(arg0, s16 *, 0xC); - w = arg1 << 16; - goto L288; - case 1: - r = func_801365B8(arg0, (s16) arg1, M2C_FIELD(arg0, s16 *, 4)); - __asm__ __volatile__(""); - goto done; - case 2: - r = func_801365B8(arg0, (s16) (arg1 | 1), M2C_FIELD(arg0, s16 *, 6)); - __asm__ __volatile__(" "); - goto done; - case 5: - if (func_80136334(arg0, (s16) arg1, M2C_FIELD(arg0, s16 *, 0xC)) != 0) { - return 1; - } - r = func_801365B8(arg0, (s16) arg1, M2C_FIELD(arg0, s16 *, 4)); - goto done; - case 6: - if (func_80136334(arg0, (s16) arg1, M2C_FIELD(arg0, s16 *, 0xC)) != 0) { - return 1; - } - r = func_801365B8(arg0, (s16) (arg1 | 1), M2C_FIELD(arg0, s16 *, 6)); - goto done; - case 9: - if (func_801365B8(arg0, (s16) arg1, M2C_FIELD(arg0, s16 *, 4)) != 0) { - return 1; - } - /* fallthrough */ - case 8: - q = arg0; - sv = M2C_FIELD(arg0, s16 *, 0xE); - w = (arg1 | 1) << 16; - L288: - r = func_80136334(q, w >> 16, sv); - goto done; - ret0: - return 0; - case 10: - if (func_801365B8(arg0, (s16) (arg1 | 1), M2C_FIELD(arg0, s16 *, 6)) != 0) { - return 1; - } - r = func_80136334(arg0, (s16) (arg1 | 1), M2C_FIELD(arg0, s16 *, 0xE)); - done: - if (r != 0) { - return 1; - } - case 0: - if (m2 == 0) { - goto ret0; - } - if (m2 == 0x10) { - if (((s32 (*)(void *, s32, s32))func_80136824)(arg0, (s16) arg1, M2C_FIELD(arg0, s16 *, 8)) == 0) { - goto ret0; - } - } else { - if (((s32 (*)(void *, s32, s32))func_80136824)(arg0, (s16) (arg1 | 1), M2C_FIELD(arg0, s16 *, 0xA)) == 0) { - goto ret0; - } - } - default: - return 1; - } -} - - -s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { - extern u8 D_801152A8[]; - extern s16 D_801152AA; - extern s16 D_801152AC; - extern s16 D_80126722; - extern s16 D_80126724; - register s32 a1v __asm__("$11"); - register s32 a2v __asm__("$12"); - register s32 n __asm__("$5"); - register s16 *b4 __asm__("$7"); - s32 d; - s32 dx; - s32 denom; - s32 result; - s32 frame_pad[2]; - (void)&frame_pad; - __asm__("" : "=r"(a1v) : "0"(arg1)); - a2v = arg2; - - if (!(arg1 & 1)) { - dx = (s16) arg2 - (*(s16 **)&D_8018D7A4)[2]; - d = dx; - denom = -(*(s16 **)&D_8018D7B0)[2]; - } else { - denom = (*(s16 **)&D_8018D7B0)[2]; - d = (*(s16 **)&D_8018D7A4)[2] - (s16) arg2; - dx = -d; - } - n = -d; - { - register s16 *b8 __asm__("$6") = *(s16 **)&D_8018D7B0; - u16 *ac = *(u16 **)&D_8018D7A4; - b4 = D_8018D7AC; - b4[0] = ac[0] + n * b8[0] / denom; - b4[1] = ac[1] + n * b8[1] / denom; - b4[2] = ac[2] + dx; - } - - if (b4[0] < M2C_FIELD(arg0, s16 *, 4)) return 0; - if (M2C_FIELD(arg0, s16 *, 6) < b4[0]) return 0; - if (b4[1] < M2C_FIELD(arg0, s16 *, 8)) return 0; - if (M2C_FIELD(arg0, s16 *, 0xA) < b4[1]) return 0; - if (a1v & 0x8000) { - u16 *b0 = *(u16 **)&D_8018D7A8; - b4[0] = b0[0]; - b4[1] = b0[1]; - } - D_801152AA = 0; - (*(s16 *)D_801152A8) = 0; - if (a1v & 1) { - D_8018D7AC[2] = a2v + 2; - __asm__ __volatile__(""); - D_801152AC = 0xFFF; - } else { - D_801152AC = -0xFFF; - D_8018D7AC[2] = a2v - 2; - } - __asm__ __volatile__("" :: "r"(a1v), "r"(a2v)); - (*(s16 *)D_80126720) = (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1; - D_80126722 = (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1; - result = 1; - D_80126724 = (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1; - return result; -} - - - - -// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). -// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). - -// D_8018D7A4/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). -// D_8018D7AC file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` -// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs -// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). -extern u8 D_8018D7A8; -extern u8 D_8018D7A4; -extern s16 *D_8018D7AC; -extern u8 D_8018D7B0; -extern u8 D_80126720[]; - -s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { - extern u8 D_801152A8[]; - extern s16 D_801152AA; - extern s16 D_801152AC; - extern s16 D_80126722; - extern s16 D_80126724; - u16 *ac; - s16 *b8; - s16 *b4; - s16 temp_v0; - s16 temp_v1; - s32 var_a3; - s32 temp_a1; - s32 var_a1; - s32 var_v0; - s32 var_v1; - s32 a1c; - s32 a2c; - s32 cond; - register u32 zr __asm__("$0"); - - __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); - cond = arg1 & 1; - a2c = arg2 + zr; - if (!cond) { - var_v1 = (s16) arg2 - (*(s16 **)&D_8018D7A4)[0]; - var_a1 = var_v1; - var_a3 = -(*(s16 **)&D_8018D7B0)[0]; - } else { - var_a3 = (*(s16 **)&D_8018D7B0)[0]; - var_v1 = (*(s16 **)&D_8018D7A4)[0] - (s16) arg2; - var_a1 = -var_v1; - } - ac = *(u16 **)&D_8018D7A4; - b4 = D_8018D7AC; - b8 = *(s16 **)&D_8018D7B0; - b4[0] = ac[0] + var_a1; - temp_a1 = -var_v1; - b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; - temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; - b4[2] = temp_v0; - var_v0 = 0; - if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { - return var_v0; - } - if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { - return var_v0; - } - temp_v1 = b4[1]; - if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { - return var_v0; - } - if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { - return var_v0; - } - __asm__("" :: "r"(a1c)); - __asm__("" :: "r"(a1c)); - if (a1c & 0x8000) { - b4[1] = (s16) (*(u16 **)&D_8018D7A8)[1]; - b4[2] = (s16) (*(u16 **)&D_8018D7A8)[2]; - } - D_801152AC = 0; - D_801152AA = 0; - if ((a1c & 1) != 0) { - *(s16 *)D_801152A8 = 0xFFF; - M2C_FIELD(D_8018D7AC, s16 *, 0) = a2c + 2; - } else { - *(s16 *)D_801152A8 = -0xFFF; - M2C_FIELD(D_8018D7AC, s16 *, 0) = a2c - 2; - } - *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); - D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); - var_v0 = 1; - D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); - return var_v0; -} - - - -// @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) -// D_8018D7A4/B0/B8 are file-scope `extern u8`, D_8018D7AC is `extern s32 []`; each HOLDS a -// pointer value that the target loads via lw then derefs. Read as pointer via *(T**)&sym. -// D_8018D7AC must be a SCALAR pointer (not s32[]) — as an array it decays and gcc CSEs the -// base address into a held reg (lui;addiu;lw 0(reg)) across the 3 reloads; as a scalar -// pointer it folds %lo (lui;lw %lo). Retype all 3 file-TU occurrences (byte-neutral: the -// siblings read it once via *(u16**)&sym == direct lw either way). - -s32 func_80136824(s32 arg0, s32 arg1, s32 arg2) { - extern u8 D_801152A8[]; - extern s16 D_801152AA; - extern s16 D_801152AC; - extern s16 D_80126722; - extern s16 D_80126724; - - register u16 *ac __asm__("$4"); - register s16 *b8 __asm__("$6"); - register s16 *b4 __asm__("$9"); - register s32 r __asm__("$3"); - register s32 pos __asm__("$12"); - register s32 a1v __asm__("$5"); - s16 temp_v0; - s16 temp_v1; - s32 var_a3; - s16 var_v0_3; - s32 temp_a1; - s32 var_t0; - s32 var_v1; - s16 *b4b; - u16 *p; - - __asm__ ("" : "=r"(a1v) : "0"(arg1)); - pos = arg2; - if (!(a1v & 1)) { - var_t0 = (s16) arg2 - (*(s16 **)&D_8018D7A4)[1]; - var_v1 = var_t0; - var_a3 = -(*(s16 **)&D_8018D7B0)[1]; - } else { - var_a3 = (*(s16 **)&D_8018D7B0)[1]; - var_v1 = (*(s16 **)&D_8018D7A4)[1] - (s16) arg2; - var_t0 = -var_v1; - } - b8 = (*(s16 **)&D_8018D7B0); - ac = (*(u16 **)&D_8018D7A4); - b4 = D_8018D7AC; - temp_a1 = -var_v1; - r = (temp_a1 * b8[0]) / var_a3; - b4[0] = ac[0] + r; - b4[1] = ac[1] + var_t0; - r = (temp_a1 * b8[2]) / var_a3; - temp_v0 = ac[2] + r; - b4[2] = temp_v0; - temp_v1 = b4[0]; - if (temp_v1 < M2C_FIELD(((void *)arg0), s16 *, 4)) { - return 0; - } - if (M2C_FIELD(((void *)arg0), s16 *, 6) < temp_v1) { - return 0; - } - if (temp_v0 < M2C_FIELD(((void *)arg0), s16 *, 0xC)) { - return 0; - } - if (M2C_FIELD(((void *)arg0), s16 *, 0xE) < temp_v0) { - return 0; - } - if (arg1 & 0x8000) { - p = (*(u16 **)&D_8018D7A8); - b4[0] = (s16) p[0]; - b4[2] = (s16) p[2]; - } - D_801152AC = 0; - (*(s16 *)D_801152A8) = 0; - if (arg1 & 1) { - b4b = D_8018D7AC; - D_801152AA = 0xFFF; - __asm__ __volatile__(""); - var_v0_3 = pos + 2; - } else { - b4b = D_8018D7AC; - D_801152AA = -0xFFF; - __asm__ __volatile__(""); - var_v0_3 = pos - 2; - } - b4b[1] = var_v0_3; - __asm__ __volatile__("" :: "r"(pos)); - (*(s16 *)D_80126720) = (s16) ((s32) (M2C_FIELD(((void *)arg0), s16 *, 4) + M2C_FIELD(((void *)arg0), s16 *, 6)) >> 1); - D_80126722 = (s16) ((s32) (M2C_FIELD(((void *)arg0), s16 *, 8) + M2C_FIELD(((void *)arg0), s16 *, 0xA)) >> 1); - D_80126724 = (s16) ((s32) (M2C_FIELD(((void *)arg0), s16 *, 0xC) + M2C_FIELD(((void *)arg0), s16 *, 0xE)) >> 1); - return 1; -} - - -// @class: schedule -// @stuck: none — MATCH (76 ins, relocation-masked). Key lever: the D_80126720/22/24 tail is a -// global-short RMW `+=`. Writing it via a cast `*(u16*)&SYM = *(u16*)&SYM + x` makes gcc CSE -// the address into a base reg (base-reuse) for ALL three — but the target only base-reuses -// D_80126720 (a SCHEDULER artifact: its addr-lui fills the load-delay slot after the pb4[4] -// load, and since $v0 is live it lands in $a0, reused for load+store). D_80126722/24 use the -// plain inline 2-lui form. Fix = DIRECT scalar RMW `SYM = SYM + x` (no &/cast) → inline %hi/%lo; -// the scheduler alone forces base-reuse on #1. Also: `s16 D_80126724 = D_80126724 + int` emits -// LHU (gcc-2.7.2 drops the sign-extend because the sum is truncated to 16b on the sh) — so the -// canonical s16 decl is byte-safe here (no u16 retype needed, keeps the sign-sensitive callers). - - -extern s16 *D_8018D7AC; /* holds a pointer value (*(u16**)&D_8018D7AC) */ - -s32 func_80136A94(s32 a0, s32 a1, s32 a2, s32 a3) { - extern void ApplyMatrixSV(void *m, void *v0, void *v1); - extern void ApplyRotMatrix(void *v0, void *v1); - extern u16 D_80126722; - extern s16 D_80126724; - extern s16 D_801152AA; - extern s16 D_801152AC; - - s32 out[4]; - u16 *pb4; - - if (a0) { - ApplyMatrixSV((void *)a3, *(void **)&D_8018D7AC, *(void **)&D_8018D7AC); - ApplyMatrixSV((void *)a3, (void *)D_80126720, (void *)D_80126720); - ApplyRotMatrix((void *)D_801152A8, (void *)out); - *(s16 *)D_801152A8 = out[0]; - D_801152AA = out[1]; - D_801152AC = out[2]; - } - - pb4 = *(u16 **)&D_8018D7AC; - *(s16 *)(a2) = pb4[0] + *(s32 *)(a1 + 0x48); - *(s16 *)(a2 + 2) = pb4[1] + *(s32 *)(a1 + 0x4C); - *(s16 *)(a2 + 4) = pb4[2] + *(s32 *)(a1 + 0x50); - - *(u16 *)D_80126720 = *(u16 *)D_80126720 + *(s32 *)(a1 + 0x48); - D_80126722 = D_80126722 + *(s32 *)(a1 + 0x4C); - D_80126724 = D_80126724 + *(s32 *)(a1 + 0x50); -} - - - -DEFINE_func_80136BC4() /* dedup: shared engine-core @0x80136BC4 (src/shared) */ - -DEFINE_func_80136C1C() /* dedup: shared engine-core @0x80136C1C (src/shared) */ - -DEFINE_func_80136C3C() /* dedup: shared engine-core @0x80136C3C (src/shared) */ - -DEFINE_func_80136C44() /* dedup: shared engine-core @0x80136C44 (src/shared) */ - -DEFINE_func_80136C4C() /* dedup: shared engine-core @0x80136C4C (src/shared) */ - - -extern unsigned short D_800B99F0; -extern void (*D_8018D7C0[])(void); - -void func_80136C54(void) -{ - D_8018D7C0[D_800B99F0](); -} - - -// @class: struct -// @stuck: none — MATCH (28 ins). 10-byte 1-aligned struct copy (S10_80136C90{char s[10]}) from global D_801E4688 into a stack buffer, then func_8001534C(0,&buf,0x78,0x10,0,0). gcc emits the block move as 2 unaligned words (lwl/lwr+swl/swr) + 2 bytes (lb/sb). - - -s32 func_80136C90() -{ - extern void func_8001534C(int, void *, int, int, int, int); - extern S10_80136C90 D_801E4688; - - S10_80136C90 buf = D_801E4688; - func_8001534C(0, &buf, 0x78, 0x10, 0, 0); -} - - - -DEFINE_func_80136D00() /* dedup: shared engine-core @0x80136D00 (src/shared) */ - -DEFINE_func_80136D08() /* dedup: shared engine-core @0x80136D08 (src/shared) */ - -DEFINE_func_80136DFC() /* dedup: shared engine-core @0x80136DFC (src/shared) */ - -DEFINE_func_80136EC4() /* dedup: shared engine-core @0x80136EC4 (src/shared) */ - -DEFINE_func_80136ECC() /* dedup: shared engine-core @0x80136ECC (src/shared) */ - -DEFINE_func_80136F3C() /* dedup: shared engine-core @0x80136F3C (src/shared) */ - -DEFINE_func_80137030() /* dedup: shared engine-core @0x80137030 (src/shared) */ - -DEFINE_func_80137178() /* dedup: shared engine-core @0x80137178 (src/shared) */ - -DEFINE_func_801372B0() /* dedup: shared engine-core @0x801372B0 (src/shared) */ - -DEFINE_func_801375EC() /* dedup: shared engine-core @0x801375EC (src/shared) */ - -extern void func_801375EC(s32 a0, s16 a1); - -// @class: schedule (arg-copy placement) — PIN-FREE -// match_one: MATCH (26 ins). rtu: MATCH (26 ins) with NO //@EDIT and NO header edit. -// -// ---- RECONCILE 2026-08-01 (uc2 -> uc3) --------------------------------------------------- -// GATE ERROR was: -// jr_80135D20.c:1412 conflicting types for func_80137614 || :1362 previous declaration -// :1362 is `DEFINE_func_801375EC()`, whose expansion (src/shared/engine_core.h:2819) carries -// extern void func_80137614(s32 a0, s32 a1, s32 a2); -// and it is instantiated two lines ABOVE this function's INCLUDE_ASM splice point (:1364). -// :1412 is this draft's own definition. So the conflicting symbol is func_80137614 ITSELF -// and the axis is the §73 RETURN type: the shared header says `void`, the target ends -// `addu $v0, $s0, $zero` and callers in other overlays consume the result -// (ov_SC03_099_jr_80178D40.c already declares it `extern s32 func_80137614(s32,s32,s32)`), -// so the definition MUST stay s32. Re-voiding the definition is the decay loop: gcc-2.7.2 -// silently drops the $v0 set and you get 25/26 ins, class LENGTH-DRIFT/-1. -// -// ESCAPE USED: §37/§124 ASM-LABEL ALIAS (escape #2). The definition is given a distinct C -// identifier `aF80137614` with __asm__("func_80137614"), so it never collides with the -// header's `extern void func_80137614` while still emitting the canonical symbol. Zero -// header edits, zero TU edits, blast radius 0 — this replaces uc2's //@EDIT §65b de-macroize -// of DEFINE_func_801375EC, which would have had to be repeated at all 138 sweep sites. -// The TU already uses this exact idiom 60-odd lines below -// (`void *aF801376E8(int a0, int a1) __asm__("func_801376E8");`), so it travels to siblings. -// The in-TU call from func_801375EC still binds to the header's extern declaration and -// resolves to the same symbol at link time; func_801375EC's own 10 instructions are unchanged. -// -// ---- CODEGEN (unchanged from uc2 — do not touch) ----------------------------------------- -// Residual before the lever: 4 mismatched, the (sw $sN / addu $sN,$aX) prologue PAIRS mirrored — -// target births $s2<-a2 then $s3<-a1; the naive draft births $s3<-a1 then $s2<-a2 (parm order), -// and drags `sw $s3` above `sw $s2` with it. Register ASSIGNMENT was already right in both, so -// this is NOT a regalloc problem. Measured INERT: body statement order, extra plain locals, -// K&R parm-declaration order (incl. declaring a2 before a1 in the K&R decl block). -// -// LEVER — cookbook §67 (arg-copy PLACEMENT). One zero-instruction launder of the a1 parameter -// pins WHERE its entry copy materialises; a2's copy then takes the earlier slot and the register -// saves fall back into ascending order. DIRECTION MATTERS and is the opposite of the intuition: -// laundering a2 (the copy that must move EARLIER) is inert — launder the copy that must land -// LATER. §67 rule 1 respected: the laundered local is NOT pinned. A pinned variant -// (register s32 __asm__("$18") / __asm__("$19") on a2/a1) also MATCHes, but pins are strictly -// worse for the ×138 family sweep (§42e/§86 pin guard), so the pin-free single launder is banked. -// -// Shape copied from the matched next-door sibling DEFINE_func_8013767C() (engine_core.h), -// which is this function minus the 0xD8 mask and the +0x1C halfword store. - -extern s32 func_801399A8(void); -extern void func_801377B4(s32 a0, s32 a1, s32 a2); - -s32 aF80137614(s32 a0, s32 a1, s32 a2) __asm__("func_80137614"); - -DEFINE_func_80137614() /* dedup: shared engine-core @0x80137614 (src/shared) */ - - -DEFINE_func_8013767C() /* dedup: shared engine-core @0x8013767C (src/shared) */ - -DEFINE_func_801376C8() /* dedup: shared engine-core @0x801376C8 (src/shared) */ - - -/* @class: plumbing (globals-around-two-calls) - * @stuck: none — MATCH (51 ins). - * - * RECONCILE (§37/§124 ASM-LABEL ALIAS) — no TU / header edit required. - * Gate error: ov_SC01_077_jr_80135D20.c:1415: conflicting types for `func_801376E8' - * || previous declaration at :1368 - * :1368 is DEFINE_func_801376C8(), the shared engine-core macro that carries - * `extern void func_801376E8(int a0, int a1);` — a VOID return. The target's last - * pre-epilogue instruction is `addu $v0, $s1, $zero`, i.e. it RETURNS &D_801269F0, - * so the definition MUST be non-void; a `void` definition makes gcc-2.7.2 merely warn - * and DROP the returned value, killing that instruction (LENGTH-DRIFT/-1, 50 ins). - * The conflict is on func_801376E8 ITSELF and is a pure RETURN-type disagreement - * (params already agree: int,int), so the §37/§124 alias applies verbatim: - * define under the C name aF801376E8 with __asm__("func_801376E8") so the C-level - * declaration never collides, while the emitted symbol is still func_801376E8. - * Codegen is untouched — an asm label renames the symbol, nothing else. - * (The earlier draft's `//@EDIT` widening of the shared extern to `void *` is a - * T2 fleet-shared edit; the alias is T0 draft-only. Cookbook §124: fix the reader, - * not the source.) - * - * Byte levers (unchanged from the passing draft): - * - `obj` local holding (s32)&D_801269F0: the address is CSEd ONCE into $s1 and reused - * for both jal args and the return (same idiom as the neighbouring func_80137B80). - * - D_80126A24 is s16 (`lh`) but D_80126A26 is u16 (`lhu`) with an explicit (s16) cast - * at the use site: gcc combines the cast's `sll 16; sra 16` with the `>>1` into - * `sll 16; sra 17`, which is exactly what the target emits. A plain s16 D_80126A26 - * would give `lh; sra 1` instead. - * - D_80126A14 as u16[2] (`lhu` loads, `%lo(D_80126A14 + 0x2)` for element 1). - */ - - -extern void func_801377B4(s32 a0, s32 a1, s32 a2); -extern void func_80139BE0(s32 a0); - -void *aF801376E8(int a0, int a1) __asm__("func_801376E8"); - -DEFINE_func_801376E8() /* dedup: shared engine-core @0x801376E8 (src/shared) */ - - -DEFINE_func_801377B4() /* dedup: shared engine-core @0x801377B4 (src/shared) */ - -DEFINE_func_80137840() /* dedup: shared engine-core @0x80137840 (src/shared) */ - - -extern void func_80016714(void *a0, s32 a1); -extern void func_8013A860(void); - -void func_801378F0(void) { - - extern u8 D_80127520[]; - extern u8 aD801269F0[] __asm__("D_801269F0"); /* §37 alias: TU canon is `extern int D_801269F0` */ - extern u8 D_80126A28[]; - extern u8 D_8018D7C8[]; - s32 i; - s32 si; - s32 di; - u8 *p; - - func_80016714(D_80127520, 0xBFC); - i = 0; - si = 0; - p = aD801269F0; - di = 0; - do { - func_80016714(p, 0x4C); - *(u16 *)&D_80126A28[di] = *(u16 *)&D_8018D7C8[si]; - *(u16 *)&D_80126A28[di + 2] = *(u16 *)&D_8018D7C8[si + 2]; - *(u16 *)&D_80126A28[di + 4] = *(u16 *)&D_8018D7C8[si + 4]; - *(u16 *)&D_80126A28[di + 6] = *(u16 *)&D_8018D7C8[si + 6]; - p += 0x4C; - i += 1; - si += 8; - di += 0x4C; - } while (i < 3); - func_8013A860(); -} - - -DEFINE_func_801379D8() /* dedup: shared engine-core @0x801379D8 (src/shared) */ - -DEFINE_func_801379EC() /* dedup: shared engine-core @0x801379EC (src/shared) */ - - -// @class: regalloc-order (walker-family, §52/§52a) — PIN-FREE -// Role-swap ($s0<->$s2 between loop1 and loops2/3) is driven by DENSITY (K2), not pins: -// - loop1 pointer has an extra ref (p != D_80127524 compare) -> wins $s0; index -> $s2 -// - loop2/3 index has >= pointer refs -> wins $s0; pointer -> $s2 -// Separate per-loop pointer/index vars => separate pseudos => can take different regs. - - -DEFINE_func_801379FC() /* dedup: shared engine-core @0x801379FC (src/shared) */ - - - -// @class: remat -// @stuck: target CSEs &D_801269F0 once for load+call arg; force via local pointer -extern s32 D_80127548[]; -extern int D_8018D814; -extern int D_801269F0; -extern void func_80138BE0(int p); - -void func_80137B80(void) { - int *p = &D_801269F0; - (*(int *)&D_80127548) = 0x24; - if (*p != 0) { - ((void (*)(int *))func_80138BE0)(p); - } - D_8018D814 += 1; -} - - -DEFINE_func_80137BD8() /* dedup: shared engine-core @0x80137BD8 (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Three globals stored/loaded around 3 calls; &D_801269F0 held in $s1, arg1 in $s0 across calls; return reloads global D_800A5E60. - -extern unsigned char D_80126A0E; -extern short D_80126A0A; -extern s16 D_801269F4; -extern int D_800A5E60; -extern int D_8018D814; -extern int D_801269F0; - -extern void func_801392FC(); -extern void func_80137DD4(s32 a0, u8 *a1, u8 *a2); -extern void func_80139680(s32 a0, u8 *a1); - -int func_80137D08(int arg0, int arg1, short arg2) -{ - unsigned char buf[3]; - - D_800A5E60 = arg0; - D_80126A0A = arg2; - ((void (*)(void *, int, int))func_801392FC)(&D_801269F0, D_80126A0E, arg1); - if ((*(short *)&D_801269F4) == 7) { - buf[0] = 0x39; - buf[1] = 0xFF; - buf[2] = 0x71; - ((void (*)(void *, void *, int))func_80137DD4)(&D_801269F0, buf, arg1); - } else if ((*(short *)&D_801269F4) == 3) { - if (D_8018D814 & 4) { - ((void (*)(void *, int))func_80139680)(&D_801269F0, arg1); - } - } - return D_800A5E60; -} - - -DEFINE_func_80137DD4() /* dedup: shared engine-core @0x80137DD4 (src/shared) */ - -DEFINE_func_80137FD8() /* dedup: shared engine-core @0x80137FD8 (src/shared) */ - - diff --git a/src/ov_SC04_019/ov_SC04_019_jr_801380E0.c b/src/ov_SC04_019/ov_SC04_019_jr_801380E0.c deleted file mode 100644 index 04932077d..000000000 --- a/src/ov_SC04_019/ov_SC04_019_jr_801380E0.c +++ /dev/null @@ -1,1472 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ - /* 8-byte element, cmd @ +4 */ - /* list ptr @ +0x90 */ - /* size 8, alignment 1 -> unaligned copy */ -extern void func_80128288(void); -extern void func_80128158(void); -extern void func_801285E4(void); -extern void func_80128178(void); -extern void func_80128678(void); -extern void func_80128198(void); -extern void func_80128714(void); -extern void func_801281B8(void); -extern void func_8013E67C(void); -extern void func_801281D8(void); -extern void func_8013E558(void); -extern void func_801281F8(void); -extern s32 D_801E4434; -extern s32 func_80128218(void); -extern void func_80128A28(void); -extern void func_80128228(void); -extern void func_80128AF4(void); -extern void func_80128248(void); -extern void func_801282EC(void); -extern void func_80128268(void); -extern u16 D_800B99F6; -extern void (*D_8018D4AC[])(void); -extern void func_80011B7C(int); -extern void func_801282CC(void); -extern void func_8001C0C8(void); -extern void func_80015310(void); -extern void func_80129258(void); -extern void func_801378F0(void); -extern void func_80010E14(void); -extern s16 currentLocationId; -extern s32 func_80029504(void); -extern s32 func_800CF854(s32); -extern s32 func_80128998(void); -extern s32 func_801289F0(void); -extern s32 func_801288E8(s32); -extern s32 func_80128940(s32); -extern s32 func_80029178(s32); -extern s32 func_801288B0(void); -extern void func_80011C10(void); -extern void func_8012832C(void); -extern void func_80129220(void); -extern void func_80011E24(void); -extern void func_80128C14(void); -extern void func_8002AEF8(void); -extern void func_800CFBBC(void); -extern void SsUtReverbOff(void); -extern void func_8013C98C(void); -extern void func_80129C40(s32 a0); -extern void func_800D0630(void); -extern void func_80145CEC(void); -extern void func_80144B9C(void); -extern u8 D_800B9A17; -extern u8 D_800B9A10; -extern void func_80128420(void); -extern s32 func_800D0588(void); -extern void func_801284B8(void); -extern void func_80175308(void); -extern void func_8016E8F0(void); -extern void func_80175494(void); -extern u8 D_800B9A64; -extern void func_801284F0(void); -extern void func_80146074(void); -extern void func_8012853C(void); -extern void func_80178608(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern s32 func_80011A3C(void); -extern short currentLocationId; -extern short D_800B99F2; -extern void func_80128564(void); -extern u8 D_800B9A11; -extern void func_801285D4(void); -extern s32 func_800D18DC(void); -extern void func_8014607C(void); -extern void func_801287B8(void); -extern s32 D_801E5A14; -extern void func_80029444(void); -extern void func_800D1754(void); -extern s32 D_80126B58; -extern s32 D_801E7AB8; -extern u16 D_800B99DA; -extern void func_80129CF8(void); -extern void func_8017849C(void); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_801505FC(s32 a0); -extern void func_801508B4(void *a0); -extern void func_80165E90(void); -extern void func_801627E8(void); -extern void func_80162B1C(void); -extern void func_80165CA0(void); -extern void func_80129010(void); -extern void func_8013CA14(void); -extern void func_800190AC(void); -extern void func_8012956C(void); -extern void func_8016E95C(void); -extern void func_801754A8(void); -extern void func_8013BC7C(void); -extern void func_8013BCDC(void); -extern void func_801379FC(void); -extern void func_8001212C(void); -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); -extern u8 D_800AEFD0; -extern int D_800C7C60; -extern int *D_800C7C64; -extern int D_800A2E20; -extern int D_800AF558; -extern int D_801E4434; -extern int func_801288E8(int arg0); -extern u8 D_800AF560; -extern s32 func_80128940(s32 _arg0); -extern int D_800AECB0; -extern u8 D_800AECB8; -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4); -extern s16 D_800B9A00; -extern M2C_UNK (*D_8018D1E0)(); -extern s16 (*D_8018D1E4)(); -extern M2C_UNK (*D_8018D1EC)(); -extern s32 (*D_8018D1F0)(); -extern s32 D_801E5A10; -extern void func_80010AE0(s32 a0); -extern void func_80018450(s32 a0, s32 a1); -extern void func_800183E0(s32 a0); -extern void func_80128D60(s32 a0, s32 *a1, s32 *a2); -extern s32 func_80128DB4(s32 a0, s32 *a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern M2C_UNK D_801E4438; -extern void func_80128FAC(u16 *arg0); -extern s16 D_8011DB2C; -extern s16 D_8011DB30; -extern s32 D_80126AEC; -extern u8 *func_8012913C(s32 a0); -extern u8 * func_801290DC(s32 a0, u8 *a1); -extern void func_8001D074(s32 a, s32 b); -extern u8 *func_801291C0(void); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 * func_8012913C(s32 arg0); -extern void func_80016714(void *a0, s32 a1); -extern u8 * func_801291C0(void); -extern void func_80129248(s16 a0); -extern void func_801292C8(u8 *a0); -extern void func_8012927C(void); -extern void func_8012931C(struct vec *a0); -extern void func_80129350(s32 a0, s32 a1); -extern void func_80129374(s32 a0, s32 a1); -extern s16 D_800B9AAC[]; -extern s16 D_800B9AAE[]; -extern s16 D_800B9AB0[]; -extern s16 D_800B9AB2[]; -extern s16 D_800B9AB4[]; -extern s16 D_800B9AB6[]; -extern s16 D_800B9AB8[]; -extern s16 D_800B9ABA[]; -extern void func_80129398(void); -extern s16 D_80114EE0; -extern void func_80129428(void); -extern void func_8012943C(void); -extern s32 D_8005128C; -extern u8 D_800B9A78; -extern void func_801298F4(void *arg0); -extern void func_801299C8(s32 a, s32 b, s32 c); -extern void func_8012944C(void); -extern unsigned short D_800B99F0; -extern void func_8012A328(void); -extern void func_80053308(s32); -extern s32 func_80012F74(s32, s32, s32, s32); /* canonical s32 (engine_core); (s16)-cast the return for the sll/sra */ -extern void GsSetRefView2L(void *); -extern s8 D_801150D6; /* canonical (engine_core macro): s8 — access via *(u8*)& for lbu */ -extern u8 D_80127504; -extern s32 D_80126E60[]; -extern s32 D_80126F04[]; -extern u8 D_80126948[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_80126FA8[]; -extern u8 D_800AF630[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_800AE688[]; -extern s32 D_801151D4; /* canonical (10 siblings): scalar s32 — store (s32)ptr */ -extern void func_8012A018(s32 a, s32 b); -extern void func_80129FF4(void); -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_80126940; -extern s16 D_80126942; -extern s16 D_80126944; -extern void func_8012A048(void *a0, s32 a1, u8 a2); -extern void *memcpy(void *, const void *, unsigned int); -extern void func_8012A094(s32 a0); -extern void func_8012A100(s8 a0); -extern void func_8012A0E0(void); -extern s8 D_801150D6; -extern s32 D_80120204; -extern s32 D_80120200; -extern s32 D_8012020C; -extern s32 D_80120208; -extern s16 D_80120218; -extern s16 D_80120210; -extern s16 D_8012021A; -extern s16 D_80120212; -extern s16 D_8012021C; -extern s16 D_80120214; -extern s16 D_80120226; -extern s16 D_80120220; -extern s16 D_80120228; -extern s16 D_80120222; -extern s16 D_8012022A; -extern s16 D_80120224; -extern s32 D_80120294; -extern s16 D_80120298; -extern s16 D_8012029A; -extern void func_8012A110(void); -extern s8 D_801152C0; -extern void func_8012A2F4(void); -extern s16 D_80127080; -extern s16 D_801152C2; -extern void func_8012A304(s32 a0, s32 a1); -extern s32 D_801151D4; -extern void func_8012A4BC(void); -extern void func_8012A598(void *a0); -extern void func_8012A568(void (*a0)(void)); -extern void func_8012A62C(s32); -extern void func_8012A5F8(void (*a0)(void), s32 a1); -extern void func_8012A62C(s32 a0); -extern void func_8012A7D4(void *a0, void *a1); -extern s32 func_8012A6D0(void *a0, void *a1); -extern s16 func_8012A68C(void); -extern s16 func_8012A79C(s16 *a0, s16 *a1); -extern s16 func_8012A758(void); -extern s32 ratan2(s32 a0, s32 a1); -extern void func_8012A7D4(void *arg0, void *arg1); -extern void func_8012AAAC(); -extern void func_8012A828(s32 a0, void * a1); -extern int func_8012ACE0(void *a0); -extern void func_8012A860(void *a0, int a1); -extern void func_8012A8B0(u8 *a0, s32 a1); -extern void func_8012A8E8(void); -extern u8 D_801202A0[]; -extern u16 D_801270C0; -extern void func_8012A988(u8 *a0); -extern void func_8012A908(void); -extern s32 func_8012ACE0(void *a0); -extern M2C_UNK D_8018D540; -extern void func_8012ACA0(void *arg0); -extern s32 func_8012ACE0(void *o); -extern void func_8012AD44(s32 *a0, s16 a1); -extern s32 func_8012AD50(void * arg0); -extern void func_8012AD64(s32 *a0, s16 a1); -extern void func_8012AD6C(void *a0); -extern void func_8012AD80(s32 a0); -extern void func_8012ADE4(u8 *a0); -extern s32 *D_80126B78; -extern s32 *D_80126B90; -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80013478(s32 a0, s32 a1); -extern s32 func_8012AE00(s32 a0); -extern s32 func_8012AF0C(s32 a0, s32 a1); -extern s32 func_80134510(s32 arg); -extern s32 func_8012B030(u8 *a0); -extern int func_80047948(int a0); -extern int func_8004787C(int a0); -extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_8012B14C(s32 a0, s32 a1); -extern void func_8012B178(s32 a0, s32 a1); -extern void func_8012B1B4(s32 a0, s32 a1); -extern void func_8012B200(u8 *a0); -extern void func_8012B21C(void *a0); -extern void func_8012B23C(s32 a0); -extern void func_8012B260(u8 *a0); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern void RotMatrixYXZ(void *m, void *p); -extern void func_8012B370(int a0); -extern void func_8004978C(s16 *a0, void *a1); -extern void func_8012B414(int a0); -extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); -extern s32 func_8012B6D4(s16 *a0, s16 *a1); -extern s32 func_8012B70C(s16 *a0, s16 *a1); -extern s32 ratan2(s32 x, s32 y); -extern s32 func_8012B744(void *a0, void *a1); -extern s16 D_80126CB8; -extern s16 D_80126CB4; -extern s32 func_8012B864(s32 a0); -extern s32 func_8012B8A4(s16 *a0); -extern s32 func_8012B8E4(s32 arg0, s32 arg1); -extern s32 func_8012BA10(s32 arg0, s32 arg1); -extern s32 func_8012BB3C(s32 arg0, s32 arg1, u32 arg2, s32 arg3); -extern void Square0(s32 *a0, s32 *a1); -extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1); -extern s16 D_80126CBA; -extern s32 func_8012BCCC(s32 a0); -extern void func_80013350(s32 a0, void *a1); -extern u8 D_80126B5C; -extern void func_8012BD14(s32 a0); -extern s32 func_8012BDBC(s32 a0, s32 a1); -extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2); -extern void func_8012BE98(s32 a0, u16 *a1); -extern void func_8012BE54(s32 a0); -extern s32 func_800132BC(s32 a0, s32 a1); -extern void func_8012BE98(s32 arg0, u16 * arg1); -extern s32 func_8012BEE8(s32 a0); -extern s32 func_8012BF10(s32 a0, s32 a1); -extern void func_8012BF4C(s32 *a0, s32 a1); -extern void func_8012BF54(void *a0); -extern void func_8012BF68(void *a0); -extern s16 D_80126CB0; -extern s32 func_8012BF7C(s16 *a0); -extern s16 D_80126CAC; -extern short D_80126CAE; -extern int func_8012BFA8(short *a0); -extern s32 D_801274D4; -extern s32 D_801274E0; -extern s32 func_8012C044(s32 a0); -extern void func_8012C194(void); -extern void func_8001CFDC(s32 a, s32 b); -extern void func_8012C1B8(void); -extern u8 D_800B3DF0[]; -extern s32 func_8012C1DC(s32 a0); -extern void func_8012C218(void *a0); -extern u8 D_80126720[]; -extern u16 * func_8012C284(u16 *a0); -extern u8 D_80120194[]; -extern s32 func_8012C2D0(void); -extern s32 func_8012C31C(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32 a0, s32 a1); -extern u8 D_80078EAE; -extern s32 func_8012C354(s32 a0, s32 a1); -extern void func_8001C810(s32 a0, s32 a1); -extern s32 func_8012C438(s32 a0, s32 a1); -extern s32 func_8012C890(s32 a0, s32 a1, s32 a2); -extern s32 func_8012C51C(void *a0, s32 a1); -extern s32 func_8012C588(s32 a0, s32 a1); -extern void func_8012C724(s32 a0, s32 a1); -extern s32 func_8012C820(u8 *a0); -extern s32 D_80190A24; -extern s16 D_801270C4; -extern u16 D_801274E4[]; -extern s32 D_8011DB08; -extern s32 func_8012CB64(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); -extern s32 func_8012CC88(s32 a, s32 b, s32 c); -extern u8 D_800D3918[]; -extern void func_8012CBA4(s32 a0); -extern void func_8012CBCC(s32 a0); -extern void func_8012CBF4(s32 a0); -extern void func_8012CC1C(s32 arg0, s32 arg1); -extern void func_8012CC40(s32 arg0, s32 arg1); -extern s32 func_8012CC88(s32 a0, s32 a1, s32 a2); -extern void func_8012CC64(s32 a0, s32 a1); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern s32 func_8012CE2C(s32 a0); -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); -extern void func_8012CFA8(s32 arg0); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_8012D3B4(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012D098(u16 *param_1, u32 param_2); -extern void func_8012D098(); -extern void func_8012D38C(int a0); -extern void func_8012D3AC(void); -extern s32 AddPrim(s32, void *); -extern s32 RotTransPers(s32, s32, s32 *, s32 *); -extern void SetLineF2(void *); -extern void *func_80010A08(s32); -extern void func_8004914C(void *); -extern void func_800491AC(void *); -extern s32 D_800A651C; -extern u8 D_800AF648; -extern s16 D_800B9A02; -extern void func_8012D4B4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_8012D5DC(void); -extern s16 D_80126B98; -extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2); -extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern int func_8012D664(); -extern void func_8012D624(s32 a0); -extern int func_8012D664(int arg0, int arg1, int arg2); -extern s32 func_8012D714(s32 param_1, u32 param_2); -extern void func_8012F568(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void func_8014C978(void); -extern M2C_UNK D_8018D558; -extern M2C_UNK D_8018D560; -extern s32 func_8012DB84(void); -extern s32 func_8012DE2C(s32 a0); -extern s32 func_8012DDA4(void); -extern s32 func_8012DBD0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8012DDA4(); -extern s32 func_8012DF34(s32 a0, s32 a1, s32 a2); -extern s16 D_80126B9A; -extern u8 D_801152A8[]; -extern void func_8012DFBC(void); -extern void func_8012DFCC(void); -extern void func_8012E014(s32 arg0); -extern void func_8012E138(void); -extern void func_8012DFD4(u8 *a0); -extern s32 func_8012E27C(void); -extern void func_8012E284(void); -extern s32 GetTPage(s32, s32, s32, s32); -extern s32 func_8005A600(s32, s32, s32, s32, s32); -extern void func_8012E28C(s32 arg0, s32 arg1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void func_8012E32C(void); -extern s32 func_8012E470(s32 a0); -extern void func_8012E4C8(s32 a0); -extern s32 func_8012E504(s32 a0, s32 a1); -extern s32 func_8012E544(s32 a0); -extern s32 func_8012E57C(s32 a0, s32 a1); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E688(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E88C(u8 *a0); -extern void func_8012E8A8(u8 *a0); -extern void func_8012E8C4(u8 *a0); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8016AA50(int, int); -extern void func_8016B428(int); -extern void func_80019064(void *); -extern int D_8018D568; -extern void func_8012E9C0(int param_1); -extern void func_8012EC04(s32 param_1, s32 param_2, s32 *param_3); -extern s32 func_8002A4FC(s32 a0); -extern s32 func_8012EECC(s32 a0); -extern void func_8012EFB8(s32 a0); -extern void func_8012EF34(s32 a0, s32 a1); -extern void func_8012EF70(s32 a0, s32 a1); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8012F0BC(s32 *a0, s32 *a1, s32 *a2); -extern void RotTransSV(s32 a0, s32 a1, void *a2); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_8012F1A4(s32 *a0, s32 a1, s32 *a2); -extern void func_8012F2E8(s32 a0, s32 a1, s32 a2); -extern s16 D_80126CB6; -extern void func_8012F374(s32 a0, s32 a1); -extern void *memcpy(void *, const void *, u32); -extern u8 D_80126C38; -extern u8 D_80126C40; -extern u16 D_80126B94; -extern u16 D_80126B96; -extern void func_8012F568(s32 param_1, s32 param_2, s32 param_3, s32 param_4, s32 param_5, s32 param_6); -extern void func_80131B14(); -extern void func_80131E00(struct S80131E00 *a0, s32 a1); -extern s32 func_80131A34(s32, s32); -extern void func_80131CA8(int a0, int a1); -extern void func_8012F5F4(s32 arg0); -extern void func_80131C78(s32 a0); -extern void func_8012F68C(s32 arg0); -extern void func_8012F75C(s32 a0); -extern s32 func_8012BEE8(s32); -extern void func_8012F7B4(s32 a0); -extern void func_80131170(); -extern void func_80131CA8(); -extern unsigned char D_8018D584[]; -extern void func_8012F828(int param_1); -extern void func_80131340(s32 a0); -extern void func_8012F87C(s32 a0); -extern void func_80131170(s32 a0, s32 a1, s32 a2); -extern u8 D_8018D590[]; -extern void func_8012F8C8(u8* arg0); -extern void func_8012F91C(s32 a0); -extern s32 func_80131A34(s32 a0, s32 a1); -extern void func_80131CA8(s32 a0, s32 a1); -extern void func_8012F968(s32 param_1); -extern void func_801319E0(s32 a0); -extern s32 func_80143B6C(s32 a0, s32 a1); -extern void func_8012FB54(s32 a0); -extern void func_8012FC30(s32 a0); -extern void func_8012FCA4(int a0); -extern s32 func_8012FCC4(s32 param_1); -extern void func_8012FDA8(int param_1); -extern void func_8012FE70(s32 a0); -extern void func_8012FF00(s32 a0); -extern void func_8012FF4C(s32 a0); -extern void func_80130D48(s32 a0); -extern void func_8012FF98(u8 *a0); -extern s32 func_80131AC8(void *a0); -extern void func_8013001C(void *a0); -extern void func_80130088(void *a0); -extern s32 func_8012BCCC(s32); -extern void func_801300F4(s32 a0); -extern void func_801301E8(u8 *a0); -extern void func_80130278(s32 arg0); -extern void func_80130314(s32 a0); -extern void func_80130360(s32 a0); -extern void func_8012E364(void); -extern void func_801303A0(s32 a0); -extern void func_801303EC(void *a0); -extern void func_80143CD4(s32 a0); -extern void func_800CB0E8(s32 a0); -extern void func_80130438(s32 a0); -extern void func_801319E0(int); -extern int func_80131D68(int, int); -extern int func_8012BEE8(int); -extern void func_80131CA8(int, int); -extern void func_80130514(int param_1); -extern void func_801305CC(u8 *a0); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_80130740(void *a0, u16 *a1); -extern s32 func_801312D0(s32 a0, void *a1); -extern void func_801307B0(s32 a0); -extern void func_80130858(s32 a0); -extern void func_80130898(u8 *a0); -extern void func_801308DC(s32 a0); -extern void func_80166244(); -extern void func_80130974(int param_1); -extern void func_80130AC4(s32 a0); -extern int func_80131A34(int a0, int a1); -extern void func_80130AF0(int param_1); -extern void (*D_8018D5A4[])(void); -extern void func_80130D0C(void *a0); -extern s32 rand(void); -extern u8 D_80078E78[]; -extern u16 D_80078EB2; -extern u16 D_80078EB4; -extern s16 D_8018D5F4[]; -extern s16 D_8018D624[]; -extern s16 D_8018D684[]; -extern s16 D_8018D68C[]; -extern s16 D_8018D6AC[]; -extern void func_80130D48(s32 arg0); -extern void func_80131170(s32 p, s32 b, s32 c); -extern s32 func_801312D0(s32 param_1, void *param_2); -extern void func_8002A04C(s32 a0); -extern void func_801319E0(s32 arg0); -extern s32 func_80131CF4(s32 a0); -extern void (*D_8018D6E4[])(struct S80131E00 *a0); -extern void func_80131E38(u8 *a0); -extern void func_80131E7C(s32 a0); -extern void func_80131EE4(void); -extern void (*D_8018D73C[])(void); -extern void func_80131EEC(void *a0); -extern void (*D_8018D784[])(void); -extern void func_80131F28(void *a0); -extern void (*D_8018D78C[])(void); -extern void func_80131F64(void *a0); -extern void (*D_8018D794[])(void); -extern void func_80131FA0(void *a0); -extern void (*D_8018D79C[])(void); -extern void func_80131FDC(void *a0); -extern void func_801320D0(void); -extern void func_8001C214(int, int); -extern int D_8018D744; -extern void func_801320D8(int param_1); -extern s32 func_80132144(s32 param_1); -extern int D_8018D764; -extern void func_801321B0(int param_1); -extern int D_8018D774; -extern void func_8013221C(int param_1); -extern void func_8005C324(int dst, int src, int n) __asm__("memcpy"); /* Phase-24: 0x8005C324 is named memcpy for overlays (whale needs it); keep the non-builtin C name here (else built-in codegen), emit via asm-label */ -extern void func_801325B8(int a0, int a1, int a2, int a3, int a4); -extern void func_80132288(int *param_1, int *param_2, int param_3); -extern void func_801325B8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_8013240C(s32 a0); -extern void func_8013277C(void); -extern void func_80020F34(s32 a0, s32 a1); -extern void func_80054514(s32 a0, s32 a1); -extern void func_80132784(s32 a0, s32 a1, u32 a2); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_80132DC4(s32 a0, s32 a1, s32 a2); -extern s32 func_80132E6C(s16 *a0); -extern void func_80132EC4(void *a0, s16 a1); -extern s32 func_80132EF4(s32 a0, s32 a1); -extern void func_801330E0(void * param_1, s16 * param_2, s32 param_3); -extern void func_80133060(u8 *a0, s32 *a1, s32 a2); -extern void func_8013339C(short *param_1, short *param_2); -extern s32 func_8013361C(s16 *a0, s16 *a1, s16 *a2, s16 *a3); -extern s32 D_801E5A80; -extern s32 D_801E5A84[]; -extern int D_801E5A88; -extern void func_80136BC4(s32 a0); -extern void func_801336E8(void *a0, int a1, int a2); -extern void func_80136BC4(s32); -extern void func_8013373C(s16 arg0); -extern s32 func_80133784(s32 arg0, void *arg1, s32 arg2); -extern s32 func_80133CD4(); -extern s32 func_8013435C(s16 *a0, s16 *a1, s32 a2, s16 *a3); -extern s32 func_801343C4(s32 angle, s32 p1, s32 p2); -extern s32 func_80134510(s32 param); -extern s32 func_801345F8(s32 arg); -extern s32 func_801347A0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134A28(s32 a0, s32 a1, s32 a2); -extern s32 func_80134C20(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134FB8(s32 a0, s32 a1, s32 a2); -extern s32 func_80135004(s32 arg0, s32 p1, s32 p2); -extern u8 D_8018D7A8; -extern u8 D_8018D7A4; -extern s16 *D_8018D7AC; -extern u8 D_8018D7B0; -extern int D_801E5A80; -extern u16 D_801E5A90; -extern int func_80134A74(int, s16, s16, int); -extern int func_80135168(u16 arg0, u16 *p1, u16 *p2); -extern s16 func_80135480(void *param_1, s32 param_2, s16 *param_3, s16 *param_4); -extern s32 func_80136334(void *arg0, s32 arg1, s32 arg2); -extern s32 func_80136824(s32 arg0, s32 arg1, s32 arg2); -extern s16 *D_8018D7AC; /* holds a pointer value (*(u16**)&D_8018D7AC) */ -extern s32 func_80136A94(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80136C3C(void); -extern void func_80136C1C(void); -extern void func_80136C44(void); -extern void func_80136C4C(void); -extern void (*D_8018D7C0[])(void); -extern void func_80136C54(void); -extern s32 func_80136C90(); -extern void func_80136D00(void); -extern void SetLineG2(void *); -extern void func_80136D08(s32 arg0, s32 arg1); -extern void func_80136EC4(void); -extern short D_800B9A02; -extern u8 D_800A6518[]; -extern void GsSortLine(void *a0, void *a1, s32 a2); -extern void func_80136ECC(s16 a0, s16 a1, s16 a2, s16 a3, u8 r, u8 g, u8 b); -extern void func_80137030(s16 a0, s16 a1); -extern void ApplyMatrixSV(void *m, Svec_801372B0 *in, Svec_801372B0 *out); -extern void aGsSortLine(Gline_801372B0 *p, void *ot, s32 z) __asm__("GsSortLine"); -extern void aF80137030(s32 x, s32 y) __asm__("func_80137030"); -extern void func_80137178(s32 x, s32 y); -extern u8 D_800AF630[]; -extern u16 aD800B9A02 __asm__("D_800B9A02"); -extern void func_801372B0(void); -extern void func_80137614(s32 a0, s32 a1, s32 a2); -extern void func_801375EC(s32 a0, s16 a1); -extern s32 func_801399A8(void); -extern void func_801377B4(s32 a0, s32 a1, s32 a2); -extern s32 func_8013767C(s32 a0); -extern void func_801376E8(int a0, int a1); -extern void func_801376C8(int a0); -extern s32 D_80127524; -extern s32 D_80127528; -extern void func_80137840(s32 a0); -extern void func_80139634(void *); -extern void func_80139DC8(void); -extern s16 D_8012752E; -extern void func_801379D8(void); -extern void func_801379EC(void); -extern int D_8018D814; -extern int D_801269F0; -extern void func_80138BE0(int p); -extern void func_80137B80(void); -extern void func_801392FC(); -extern void func_801397B0(s32 a0); -extern void func_80137DD4(s32 a0, u8 *a1, u8 *a2); -extern void func_80139680(s32 a0, u8 *a1); -extern u16 D_800B99D8; -extern void func_80137BD8(s32 a0); -extern unsigned char D_80126A0E; -extern short D_80126A0A; -extern s16 D_801269F4; -extern int D_800A5E60; -extern int func_80137D08(int arg0, int arg1, short arg2); -extern void func_80137FD8(s32 a0, s32 a1, s32 a2, s32 a3); -/* ==== end §8b carried decl layer ==== */ - -/* func_801380E0 (ov_SC01_077_a, 438 ins, jtbl_801D81F0) — Phase 26 crack - * Script-command interpreter: for(;;) fetch cmd byte, dispatch (>=0x20 -> extern - * handler; ==0 -> END; else 25-case jump table), loop while `cont`. - * PIN-FREE. Offset-pure (s32 arg0 + raw offsets) — x134 template-safe. - * - * match_one: MATCH (438 ins). jtbl VERIFIED: 25 entries, byte-identical offsets - * (0x17C 0x184 0x220 0x218 0x20C 0x254 0x13C 0x168 0x404 0x118 0x268 0x3C0 0x3D0 - * 0x424 0x444 0x454 0x47C 0x494 0x4EC 0x544 0x58C 0x1F8 0x5B4 0x5C0 0x5E4); - * bound `sltiu 0x19`; default -> +0x624; case 0 peel `beqz` -> +0x634; .text 0x6D8. - * - * FOUR levers made this land (all in the cookbook's §46/§47 family): - * L-A s32 (NOT pointer) address arithmetic. `pc + base` vs `base + pc` is a real - * byte difference (`addu $v0,$v0,$s3` vs `addu $v0,$s3,$v0`): C's - * pointer_int_sum() canonicalises ptr-first and DESTROYS source operand order, - * so a `u8 *base` can never emit the idx-first form. Plain int + a cast at the - * deref keeps gcc's PLUS operand order == source order. - * L-B `u32 cmd` — the `cmd >= 0x20` guard must be UNSIGNED (`sltiu`, not `slti`). - * L-C THE $s5 HOIST (this is the crack). The target holds &D_8012752E in a - * callee-saved reg across the whole loop and reaches D_8012752C at -2($s5). - * gcc will NOT do this for a plain global (a symbolic address is a legitimate - * MIPS address — GO_IF_LEGITIMATE_ADDRESS/CONSTANT_ADDRESS_P), and a local - * `s16 *snd = &D_8012752E;` written INSIDE case 11 gets constant-folded straight - * back into `sh $x, %lo(D_8012752E)-2($at)` by cse's find_best_addr. - * §46-L2 is the fix: set the pointer at the LOOP TOP, so its def and its uses - * live in DIFFERENT extended basic blocks (the case-11 body is only reachable - * through the `jr` table, so cse starts a fresh hash table there and cannot - * fold). The `la` then survives cse, loop.c's move_movables hoists it into the - * PREHEADER (exactly .L80138138), and global-alloc gives it $s5. - * Case 25 deliberately keeps the PLAIN global (lui/lh) — matching the target. - * L-D PER-CASE temps. Sharing one `q` across cases 18/19/20 makes the pseudo - * multi-block => it leaves local-alloc for global-alloc and both branches of - * case 18/19 land their result in $v0 — which lets the post-reload cross_jump - * tail-merge the `sh $v0,0($s0)` with the default block's store (2 ins short). - * Separate q18/q19/q20 keeps each block-local; the true-branch gets $v1, the - * false-branch $v0, and the tails stay APART (the §46-L5 register-divergence - * rule, here obtained for free by scoping rather than by pinning). - * - * Bonus (no lever needed, just don't fight it): the two out-of-line blocks at the top - * of the function (func_80139914+return, and state=0xD+return) are loop.c - * find_and_verify_loops (loop.c:2382) MOVING a loop-exiting block to the barrier - * before the loop and inverting the branch around it. Writing the natural - * `if (...) { call(); return; }` inside a real `for(;;)` reproduces it exactly. - - */ - - -s32 func_801380E0(s32 arg0) { - extern void func_8001931C(s32); - extern void func_8001AAD0(s32, s32); - extern s32 func_8001B22C(void); - extern void func_80029124(s32, s32); - extern s32 func_800CF864(s32, s32); - extern void func_80138AB4(s32, s32); - extern s32 func_80138C60(s32, s32); - extern void func_80138D58(s32, s32); - extern s32 func_80138DE0(u8 *arg0, u8 arg1, s32 arg2); - extern void func_801391F0(s32, s32); - extern void func_80139220(s32, s32); - extern void func_80139788(s32); - extern void func_80139914(s32); - extern void func_80139A8C(s32); - extern void func_80139B18(s32); - extern s16 D_8012752C; - extern s32 D_80127530[]; - - u16 *p; - s32 base; - s32 cont; - u32 cmd; - s32 sub; - s32 pc; - s32 t; - s32 f; - s32 f0; - s32 q18; - s32 q19; - s32 q20; - u32 idx; - s16 *snd; - - t = *(u8 *)(arg0 + 0xC); - if (t != 0) { - *(u8 *)(arg0 + 0xC) = t - 1; - goto done; - } - - for (;;) { - cont = 0; - snd = &D_8012752E; - if (*(s32 *)(arg0 + 8) & 0x400) { - base = D_80127530[*(u16 *)(arg0 + 0x4A)]; - p = (u16 *)(arg0 + 0x44); - } else { - p = (u16 *)(arg0 + 0x10); - base = *(s32 *)(arg0 + 0); - } - pc = *p; - cmd = *(u8 *)(pc + base); - sub = *(u8 *)(pc + base + 1); - - if (cmd >= 0x20) { - cont = ((s32 (*)(s32, s32, s32))func_80138DE0)(arg0, cmd, sub); - if (!(*(s32 *)(arg0 + 8) & 0x80220)) { - cont = 0; - } - } else if (cmd != 0) { - switch (cmd) { - case 10: - func_80139220(arg0, cmd); - *p += 1; - *(s32 *)(arg0 + 8) = *(s32 *)(arg0 + 8) & ~0x80000; - break; - - case 7: - if (*(s32 *)(arg0 + 8) & 0x10000) { - cont = 1; - } else { - *(s16 *)(arg0 + 4) = 3; - } - *p += 1; - break; - - case 8: - func_801391F0(arg0, cmd); - *p += 1; - break; - - case 1: - *(u8 *)(arg0 + 0x23) = sub; - cont = 1; - *p += 2; - break; - - case 2: - *(u8 *)(arg0 + 0x22) = sub; - *(u8 *)(arg0 + 0x20) = *(u8 *)(*p + base + 2); - *p += 3; - if (func_80138C60(arg0, cmd) == 0) { - func_80139914(arg0); - return; - } - *(s16 *)(arg0 + 4) = 9; - if (*(u8 *)(base + *p) == 5) { - *(s32 *)(arg0 + 8) = *(s32 *)(arg0 + 8) | 0x4000; - *p += 1; - } - break; - - case 22: - *(s32 *)(arg0 + 8) = (*(s32 *)(arg0 + 8) & ~0x20) | 0x4001; - cont = 1; - *p += 1; - break; - - case 5: - *(s32 *)(arg0 + 8) = *(s32 *)(arg0 + 8) | 0x4000; - cont = 1; - *p += 1; - break; - - case 4: - *(u8 *)(arg0 + 0xD) = sub; - cont = 1; - *p += 2; - break; - - case 3: - if (*(s32 *)(arg0 + 8) & 0x20000) { - cont = 1; - *p += 2; - } else { - *(s16 *)(arg0 + 4) = 0xB; - *(u8 *)(arg0 + 0xD) = sub; - *(s32 *)(arg0 + 8) = (*(s32 *)(arg0 + 8) | 0x8000) & ~0x20; - } - break; - - case 6: - *(s16 *)(arg0 + 4) = 4; - *p += 1; - break; - - case 11: - if ((*snd != 0) || (*(s32 *)(arg0 + 8) & 0x20) - || (func_800CF864(pc, cmd) == 0)) { - cont = 1; - *p += 4; - } else { - snd[-1] = *(u8 *)(*p + base + 2) + (*(u8 *)(*p + base + 3) << 8); - *p += 4; - *(s32 *)(arg0 + 8) = (*(s32 *)(arg0 + 8) & ~0x60020) | 0x10000; - if (snd[-1] != 0) { - func_8001AAD0(sub & 0x7F, snd[-1]); - if (sub & 0x80) { - *(s32 *)(arg0 + 8) = *(s32 *)(arg0 + 8) | 0x40000; - } - if ((*(u8 *)(base + *p) == 2) || (*(s32 *)(arg0 + 8) & 0x40000)) { - cont = 1; - } else { - *(s16 *)(arg0 + 4) = 0x10; - } - if (func_8001B22C() == 0) { - f = *(s32 *)(arg0 + 8); - if (f & 1) { - func_8001931C(f); - } else { - *(s32 *)(arg0 + 8) = (f & ~0x10000) | 0x20020; - func_80139788(f); - } - *(s16 *)(arg0 + 4) = 2; - } - } else { - cont = 1; - } - } - break; - - case 12: - *(s16 *)(arg0 + 4) = 6; - *(u8 *)(arg0 + 0x21) = 2; - *p += 1; - *(s32 *)(arg0 + 8) = *(s32 *)(arg0 + 8) | 0x4300; - break; - - case 13: - *(s16 *)(arg0 + 4) = 6; - *(u8 *)(arg0 + 0x21) = 3; - *p += 1; - *(s32 *)(arg0 + 8) = *(s32 *)(arg0 + 8) | 0x4300; - break; - - case 9: - func_80138D58(arg0, sub); - cont = 1; - *p += 2; - break; - - case 14: - *(s16 *)(arg0 + 4) = 8; - *(u16 *)(arg0 + 0x44) = 0; - func_80138AB4(arg0, cmd); - *p += 1; - break; - - case 15: - *(u16 *)(arg0 + 0x44) = 0; - *(s32 *)(arg0 + 8) = *(s32 *)(arg0 + 8) | 0x400; - cont = 1; - *p += 1; - break; - - case 16: - func_80029124(sub | (*(u8 *)(*p + base + 2) << 8), 1); - cont = 1; - *p += 3; - break; - - case 17: - func_80029124(sub | (*(u8 *)(*p + base + 2) << 8), 0); - cont = 1; - *p += 3; - break; - - case 18: - if (((u8(*)(s32, s32))func_80029178)(sub | (*(u8 *)(*p + base + 2) << 8), cmd)) { - q18 = *p; - *p = *(u8 *)(q18 + base + 3) + (q18 + 4); - } else { - *p = *p + 4; - } - cont = 1; - break; - - case 19: - if (!((u8(*)(s32, s32))func_80029178)(sub | (*(u8 *)(*p + base + 2) << 8), cmd)) { - q19 = *p; - *p = *(u8 *)(q19 + base + 3) + (q19 + 4); - } else { - *p = *p + 4; - } - cont = 1; - break; - - case 20: - if (!(*(s32 *)(arg0 + 8) & 0x20000)) { - q20 = *p + base; - *(u16 *)(arg0 + 0xE) = *(u8 *)(q20 + 1) + (*(u8 *)(q20 + 2) << 8); - } - cont = 1; - *p += 3; - break; - - case 21: - if (*(u16 *)(arg0 + 0xE) != 0) { - *(s16 *)(arg0 + 4) = 0xF; - } else { - cont = 1; - } - *p += 1; - break; - - case 23: - *(s32 *)(arg0 + 8) = *(s32 *)(arg0 + 8) | 2; - cont = 1; - *p += 1; - break; - - case 24: - *(s32 *)(arg0 + 8) = *(s32 *)(arg0 + 8) | 0x80000; - cont = 1; - *p += 1; - break; - - case 25: - *p += 1; - if ((*(s32 *)(arg0 + 8) & 0x10000) && (D_8012752C != 0)) { - *(s16 *)(arg0 + 4) = 0x10; - } else { - cont = 1; - } - break; - - default: - *p = pc + 1; - cont = 1; - break; - } - } else { - f0 = *(s32 *)(arg0 + 8); - if (f0 & 0x400) { - idx = *(u16 *)(arg0 + 0x4A); - *(s32 *)(arg0 + 8) = f0 & ~0x400; - if (idx < 3) { - *(u16 *)(arg0 + 0x4A) = idx + 1; - } - } else if (f0 & 0x2000) { - *(s16 *)(arg0 + 4) = 0xD; - return; - } else { - *(s16 *)(arg0 + 4) = 0xA; - return; - } - } - - if (cont == 0) { - break; - } - } - - if (*(u8 *)(arg0 + 0xC) == 0) { - *(u8 *)(arg0 + 0xC) = *(u8 *)(arg0 + 0xD); - } -done: - func_80139A8C(arg0); - func_80139B18(arg0); -} - - -DEFINE_func_801387B8() /* dedup: shared engine-core @0x801387B8 (src/shared) */ - -DEFINE_func_80138948() /* dedup: shared engine-core @0x80138948 (src/shared) */ - -DEFINE_func_8013895C() /* dedup: shared engine-core @0x8013895C (src/shared) */ - -DEFINE_func_80138AB4() /* dedup: shared engine-core @0x80138AB4 (src/shared) */ - -DEFINE_func_80138B88() /* dedup: shared engine-core @0x80138B88 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (match_one: MATCH 20 ins) - -extern void (*D_8018D818[])(void); - -void func_80138BE0(int p) -{ - if (*(unsigned short *)(p + 0xe) != 0) { - *(unsigned short *)(p + 0xe) -= 1; - } - D_8018D818[*(short *)(p + 4)](); -} - - -DEFINE_func_80138C30() /* dedup: shared engine-core @0x80138C30 (src/shared) */ - -extern s32 func_80139BE0(s32); - -s32 func_80138C60(s32 arg0) -{ - extern Q_80138C60 D_8018D7E4[]; - u16 t; - u8 b; - s32 f; - s32 idx; - - if (*(s32 *)(arg0 + 8) & 0x2000) { - return 1; - } - - t = *(u8 *)(arg0 + 0x22) & 7; - *(s16 *)(arg0 + 0x18) = t; - if (t < 2) { - *(u8 *)(arg0 + 0x20) = 0; - } - - f = *(s32 *)(arg0 + 8); - if (f & 0x40) { - *(u8 *)(arg0 + 0x22) = (*(u8 *)(arg0 + 0x22) & 0x67) | (f & ~0x67); - } - - b = *(u8 *)(arg0 + 0x22); - if (b & 0x80) { - idx = (b & 0x18) >> 3; - } else { - idx = (b & 0x78) >> 3; - if (b & 0x60) { - *(s16 *)(arg0 + 0x1C) = 0; - } - } - - *(Q_80138C60 *)(arg0 + 0x24) = D_8018D7E4[idx]; - - func_80139BE0(arg0); - func_80139C7C((u8 *)arg0); - return func_8013A8FC(arg0); -} - - -DEFINE_func_80138D58() /* dedup: shared engine-core @0x80138D58 (src/shared) */ - -DEFINE_func_80138DB8() /* dedup: shared engine-core @0x80138DB8 (src/shared) */ - - -DEFINE_func_80138DE0() /* dedup: shared engine-core @0x80138DE0 (src/shared) */ - - -DEFINE_func_80138ED0() /* dedup: shared engine-core @0x80138ED0 (src/shared) */ - -DEFINE_func_8013914C() /* dedup: shared engine-core @0x8013914C (src/shared) */ - -DEFINE_func_801391F0() /* dedup: shared engine-core @0x801391F0 (src/shared) */ - -DEFINE_func_80139220() /* dedup: shared engine-core @0x80139220 (src/shared) */ - -DEFINE_func_801392C8() /* dedup: shared engine-core @0x801392C8 (src/shared) */ - -DEFINE_func_801392FC() /* dedup: shared engine-core @0x801392FC (src/shared) */ - -DEFINE_func_801395D4() /* dedup: shared engine-core @0x801395D4 (src/shared) */ - -DEFINE_func_80139634() /* dedup: shared engine-core @0x80139634 (src/shared) */ - -DEFINE_func_80139680() /* dedup: shared engine-core @0x80139680 (src/shared) */ - -DEFINE_func_80139788() /* dedup: shared engine-core @0x80139788 (src/shared) */ - - -extern short D_800B9A02; -extern u8 D_800A6518[]; -extern u8 D_8018D85C; -extern u8 D_8018D8A0; -extern void GsSortSprite(void *a0, u8 *a1, s32 a2); - -void func_801397B0(s32 arg0) -{ - register u8 *e __asm__("$7"); - register s32 off __asm__("$4"); - s32 buf[12]; - u8 *b164; - u8 *b1A8; - s32 sc; - s32 t2; - s32 t0; - s32 hi; - s32 lo; - s32 uu; - s32 vv; - - e = (u8 *)arg0; - b164 = (u8 *)&D_8018D85C; - off = ((s32)*(u8 *)(e + 0x20) - 1) << 2; - b164 = off + b164; - - *(s32 *)((u8 *)buf + 0x00) = 0; - - t2 = *(s16 *)(b164 + 2); - t0 = *(s16 *)(b164 + 0); - hi = (t2 & 0x100) >> 4; - lo = ((t0 & 0x3C0) >> 6) | 0x20; - *(s16 *)((u8 *)buf + 0x0C) = hi | lo | ((t2 & 0x200) << 2); - - b1A8 = (u8 *)&D_8018D8A0 + off; - *(s16 *)((u8 *)buf + 0x10) = *(u16 *)(b1A8 + 0); - *(s16 *)((u8 *)buf + 0x12) = *(u16 *)(b1A8 + 2); - *(u8 *)((u8 *)buf + 0x16) = 0x80; - *(u8 *)((u8 *)buf + 0x15) = 0x80; - *(u8 *)((u8 *)buf + 0x14) = 0x80; - *(s16 *)((u8 *)buf + 0x06) = *(u16 *)(e + 0x32); - *(s16 *)((u8 *)buf + 0x08) = 0x20; - *(s16 *)((u8 *)buf + 0x0A) = 0x28; - - uu = (*(u16 *)(b164 + 0) & 0x3F) << 2; - *(u8 *)((u8 *)buf + 0x0E) = uu; - vv = *(u16 *)(b164 + 2); - *(u8 *)((u8 *)buf + 0x0F) = vv; - - if (*(u8 *)(e + 0x22) & 8) { - *(s16 *)((u8 *)buf + 0x04) = - *(u16 *)(e + 0x30) + *(u16 *)(e + 0x34) + 0x28; - sc = -*(u16 *)(e + 0x28); - } else { - *(s16 *)((u8 *)buf + 0x04) = *(u16 *)(e + 0x30) - 0x28; - sc = *(u16 *)(e + 0x28); - } - *(s16 *)((u8 *)buf + 0x1C) = sc; - *(s16 *)((u8 *)buf + 0x1E) = *(u16 *)(e + 0x2A); - *(s16 *)((u8 *)buf + 0x1A) = 0; - *(s16 *)((u8 *)buf + 0x18) = 0; - *(s32 *)((u8 *)buf + 0x20) = 0; - - GsSortSprite(buf, &D_800A6518[(u16)D_800B9A02 * 20], - *(u16 *)(e + 0x1A)); -} - - -DEFINE_func_80139914() /* dedup: shared engine-core @0x80139914 (src/shared) */ - -DEFINE_func_80139954() /* dedup: shared engine-core @0x80139954 (src/shared) */ - -DEFINE_func_801399A8() /* dedup: shared engine-core @0x801399A8 (src/shared) */ - -DEFINE_func_801399F0() /* dedup: shared engine-core @0x801399F0 (src/shared) */ - -DEFINE_func_80139A34() /* dedup: shared engine-core @0x80139A34 (src/shared) */ - -DEFINE_func_80139A44() /* dedup: shared engine-core @0x80139A44 (src/shared) */ - -DEFINE_func_80139A68() /* dedup: shared engine-core @0x80139A68 (src/shared) */ - -DEFINE_func_80139A8C() /* dedup: shared engine-core @0x80139A8C (src/shared) */ - -DEFINE_func_80139B18() /* dedup: shared engine-core @0x80139B18 (src/shared) */ - - -/* func_80139BE0 — ov_SC01_077 / ov_SC01_077_jr_801380E0, 39 ins, MATCH. - * - * REDRAFT of the decayed backlog draft: the stored draft was -1 instruction - * (LENGTH-DRIFT) because the target keeps a QI->SI zero-extend of the masked - * byte (`andi $a1,$v0,0xFF` after `andi $v0,$v0,0x60`) that gcc-2.7.2 folds - * away: combine proves nonzero_bits(x & 0x60) <= 0xff and simplifies the - * extend to nothing. No pure-C spelling survives that fold when the def and - * the extend sit in the SAME basic block (verified: u8 local, (u8) cast at - * the use, `& 0xff` at the use, u8-via-int, u16 hold, hard-register pins) — - * a cross-BB def keeps it but lands the andi in the wrong block. - * The opacity idiom (already used in src/ov_SC03_099) makes the value's range - * unprovable in place, so the extend survives at its original position. - * cookbook §1/I2 ("masked andi survives only if the value's range is - * unprovable"), §17 (pins/barriers). - */ - -s32 func_80139BE0(int param_1) -{ - - extern unsigned char D_8018D7E0[]; - int v; - - if ((*(unsigned int *)(param_1 + 8) & 0x2000) == 0) { - int t = *(unsigned char *)(param_1 + 0x22) & 0x60; - int h = *(unsigned short *)(param_1 + 0x18); - unsigned int idx; - - __asm__("" : "=r"(t) : "0"(t)); - idx = (unsigned char)t; - if (h < 7) { - if (h >= 2) { - v = D_8018D7E0[idx >> 5]; - } else { - v = D_8018D7E0[0]; - } - } else { - v = D_8018D7E0[0]; - } - *(short *)(param_1 + 0x2e) = 3; - *(short *)(param_1 + 0x2c) = v; - } - *(short *)(param_1 + 0x34) = *(short *)(param_1 + 0x2c) * 6; - { - int x = *(short *)(param_1 + 0x2e); - *(short *)(param_1 + 0x36) = x * 12 + (x - 1) * 2; - } -} - - -DEFINE_func_80139C7C() /* dedup: shared engine-core @0x80139C7C (src/shared) */ - -DEFINE_func_80139D04() /* dedup: shared engine-core @0x80139D04 (src/shared) */ - -DEFINE_func_80139DC8() /* dedup: shared engine-core @0x80139DC8 (src/shared) */ - -DEFINE_func_80139DEC() /* dedup: shared engine-core @0x80139DEC (src/shared) */ - -DEFINE_func_80139DF4() /* dedup: shared engine-core @0x80139DF4 (src/shared) */ - -DEFINE_func_80139E84() /* dedup: shared engine-core @0x80139E84 (src/shared) */ - -DEFINE_func_80139F0C() /* dedup: shared engine-core @0x80139F0C (src/shared) */ - -DEFINE_func_80139FBC() /* dedup: shared engine-core @0x80139FBC (src/shared) */ - -DEFINE_func_80139FE8() /* dedup: shared engine-core @0x80139FE8 (src/shared) */ - -DEFINE_func_8013A0A4() /* dedup: shared engine-core @0x8013A0A4 (src/shared) */ - -DEFINE_func_8013A164() /* dedup: shared engine-core @0x8013A164 (src/shared) */ - -DEFINE_func_8013A1E8() /* dedup: shared engine-core @0x8013A1E8 (src/shared) */ - -DEFINE_func_8013A250() /* dedup: shared engine-core @0x8013A250 (src/shared) */ - -DEFINE_func_8013A2BC() /* dedup: shared engine-core @0x8013A2BC (src/shared) */ - -DEFINE_func_8013A378() /* dedup: shared engine-core @0x8013A378 (src/shared) */ - -DEFINE_func_8013A380() /* dedup: shared engine-core @0x8013A380 (src/shared) */ - -DEFINE_func_8013A448() /* dedup: shared engine-core @0x8013A448 (src/shared) */ - -DEFINE_func_8013A4C4() /* dedup: shared engine-core @0x8013A4C4 (src/shared) */ - -DEFINE_func_8013A530() /* dedup: shared engine-core @0x8013A530 (src/shared) */ - -DEFINE_func_8013A860() /* dedup: shared engine-core @0x8013A860 (src/shared) */ - -DEFINE_func_8013A8B0() /* dedup: shared engine-core @0x8013A8B0 (src/shared) */ - -DEFINE_func_8013A8BC() /* dedup: shared engine-core @0x8013A8BC (src/shared) */ - -DEFINE_func_8013A8FC() /* dedup: shared engine-core @0x8013A8FC (src/shared) */ - -DEFINE_func_8013A9B4() /* dedup: shared engine-core @0x8013A9B4 (src/shared) */ - -DEFINE_func_8013A9F8() /* dedup: shared engine-core @0x8013A9F8 (src/shared) */ - -DEFINE_func_8013AA24() /* dedup: shared engine-core @0x8013AA24 (src/shared) */ - -DEFINE_func_8013AB54() /* dedup: shared engine-core @0x8013AB54 (src/shared) */ - -// @class: schedule -// @stuck: none — MATCH (122 ins). GTE lerp+mvmva loop. Two levers: (1) flat `extern s16` -// source arrays indexed [2*i]/[2*i+1] force 4 separate walking IVs (t2/t3/t4/t5) instead of -// one shared offset-IV + symbol(reg) addressing; (2) INVERTED-arm if/else -// `if (flag<0) out3=-tbl; else out3=tbl;` gives the target's bgez polarity + reload-per-arm -// sign-flip block (a plain ?: hoists the common lbu; the inverted if/else does not, and gcc -// still merges the sb). out2[i]=out2[0] tail-copy of the align-2 Pair_8013AD38 emits lwl/lwr/swl/swr. -#include "common.h" - - -extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */ -extern u8 D_8018D8E4[]; /* sign table, alt (when a1 < 0xC00) */ - -#define gte_ldv0(r0) __asm__ __volatile__( \ - "lwc2 $0, 0(%0)\n" \ - "lwc2 $1, 4(%0)\n" \ - : : "r"(r0) : "memory") - -#define gte_mvmva0() __asm__ __volatile__( \ - "nop\n" \ - "nop\n" \ - "mvmva 1, 0, 0, 0, 0\n" \ - : : : "memory") - -#define gte_stlvnl(r0) __asm__ __volatile__( \ - "swc2 $25, 0(%0)\n" \ - "swc2 $26, 4(%0)\n" \ - "swc2 $27, 8(%0)\n" \ - : : "r"(r0) : "memory") - -void func_8013AD38(void *flag, s32 a1, void *out2, void *out3) -{ - extern s16 D_800D466C[]; - extern u8 D_8018D920[]; - - u8 *tbl; - s16 vec[4]; - s32 res[3]; - s32 i; - - tbl = D_8018D920; - if (((s16)a1) < 0xC00) { - tbl = D_8018D8E4; - } - - for (i = 0; i < 30; i++) { - vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12); - vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12); - gte_ldv0(vec); - gte_mvmva0(); - gte_stlvnl(res); - ((Pair_8013AD38 *)out2)[i].x = res[0]; - ((Pair_8013AD38 *)out2)[i].y = res[1]; - if (((s16 *)flag)[0] < 0) ((s8 *)out3)[2 * i] = -tbl[2 * i]; else ((s8 *)out3)[2 * i] = tbl[2 * i]; - if (((s16 *)flag)[1] < 0) ((s8 *)out3)[2 * i + 1] = -tbl[2 * i + 1]; else ((s8 *)out3)[2 * i + 1] = tbl[2 * i + 1]; - } - ((Pair_8013AD38 *)out2)[i] = ((Pair_8013AD38 *)out2)[0]; - if (((s16 *)flag)[0] < 0) ((s8 *)out3)[2 * i] = -tbl[0]; else ((s8 *)out3)[2 * i] = tbl[0]; - if (((s16 *)flag)[1] < 0) ((s8 *)out3)[2 * i + 1] = -tbl[1]; else ((s8 *)out3)[2 * i + 1] = tbl[1]; -} - - - -DEFINE_func_8013AF20() /* dedup: shared engine-core @0x8013AF20 (src/shared) */ - -DEFINE_func_8013B204() /* dedup: shared engine-core @0x8013B204 (src/shared) */ - - - -extern void *func_80010A08(s32); -extern s16 D_8018D95C, D_8018D95E, D_8018D960, D_8018D962, D_8018D964, D_8018D966; -extern u16 D_800D45F6; - -void func_8013B274(s32 a0, s32 a1, void *a2) -{ - u8 *p; - s32 L[10]; - s16 sa; - s32 quot; - s16 ang; - - p = (u8 *)func_80010A08(0x28); - p[3] = 9; - p[7] = 0x2C; - p[4] = 0x80; - p[5] = 0x80; - p[6] = 0x80; - *(s16 *)(p + 0x16) = 0x37; - *(s16 *)(p + 0xE) = 0x6FD6; - p[0xC] = 0xE0; - p[0xD] = 0; - p[0x14] = 0xEF; - p[0x15] = 0; - p[0x1C] = 0xE0; - p[0x1D] = 0xF; - p[0x24] = 0xEF; - p[0x25] = 0xF; - - sa = (s16)a1; - if (sa == 0) { - *(s16 *)L = 0; - } else { - quot = ((s32)sa << 12) / ((s16*)a2)[0]; - ang = (s16)quot; - if (!(D_8018D95E < ang)) goto outer_else; - if (!(ang < D_8018D964)) goto inner_else; - if (ang < D_8018D960) { *(s16 *)L = D_8018D960; goto done; } - if (D_8018D962 < ang) { *(s16 *)L = D_8018D962; goto done; } - *(s16 *)L = quot; - goto done; - outer_else: - if (ang < D_8018D95C) { *(s16 *)L = D_8018D95C; goto done; } - *(s16 *)L = quot; - goto done; - inner_else: - if (D_8018D966 < ang) { *(s16 *)L = D_8018D966; goto done; } - *(s16 *)L = quot; - done: ; - } - *(s16 *)((u8 *)L + 2) = D_800D45F6; - - __asm__ __volatile__( - "lwc2 $0, 0(%0)\n" - "lwc2 $1, 4(%0)\n" - "nop\n" "nop\n" - "mvmva 1, 0, 0, 0, 0\n" - : : "r"(L) : "memory"); - __asm__ __volatile__( - "swc2 $25, 0(%0)\n" - "swc2 $26, 4(%0)\n" - "swc2 $27, 8(%0)\n" - : : "r"((u8 *)L + 8) : "memory"); - - if (((s16*)a2)[1] > 0) - *(s32 *)((u8 *)L + 0xC) -= 1; - else - *(s32 *)((u8 *)L + 0xC) += 2; - - *(s16 *)L = 9; - *(s16 *)((u8 *)L + 2) = 9; - __asm__ __volatile__( - "lwc2 $0, 0(%0)\n" - "lwc2 $1, 4(%0)\n" - "nop\n" "nop\n" - "mvmva 1, 0, 0, 3, 0\n" - : : "r"(L) : "memory"); - __asm__ __volatile__( - "swc2 $25, 0(%0)\n" - "swc2 $26, 4(%0)\n" - "swc2 $27, 8(%0)\n" - : : "r"((u8 *)L + 0x18) : "memory"); - - *(s16 *)(p + 8) = *(volatile s32 *)((u8 *)L + 8); - *(s16 *)(p + 0xA) = *(volatile s32 *)((u8 *)L + 0xC); - *(s16 *)(p + 0x10) = *(volatile s32 *)((u8 *)L + 8) + *(volatile s32 *)((u8 *)L + 0x18); - *(s16 *)(p + 0x12) = *(volatile s32 *)((u8 *)L + 0xC); - *(s16 *)(p + 0x18) = *(volatile s32 *)((u8 *)L + 8); - *(s16 *)(p + 0x1A) = *(volatile s32 *)((u8 *)L + 0xC) + *(volatile s32 *)((u8 *)L + 0x1C); - *(s16 *)(p + 0x20) = *(volatile s32 *)((u8 *)L + 8) + *(volatile s32 *)((u8 *)L + 0x18); - *(s16 *)(p + 0x22) = *(volatile s32 *)((u8 *)L + 0xC) + *(volatile s32 *)((u8 *)L + 0x1C); - - ((P_TAG *)p)->addr = ((P_TAG *)a0)->addr; - ((P_TAG *)a0)->addr = (u32)p; -} diff --git a/src/ov_SC04_019/ov_SC04_019_jr_8013C98C.c b/src/ov_SC04_019/ov_SC04_019_jr_8013C98C.c deleted file mode 100644 index 0842ae4b8..000000000 --- a/src/ov_SC04_019/ov_SC04_019_jr_8013C98C.c +++ /dev/null @@ -1,2236 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -extern void func_80128288(void); -extern void func_80128158(void); -extern void func_801285E4(void); -extern void func_80128178(void); -extern void func_80128678(void); -extern void func_80128198(void); -extern void func_80128714(void); -extern void func_801281B8(void); -extern void func_8013E67C(void); -extern void func_801281D8(void); -extern void func_8013E558(void); -extern void func_801281F8(void); -extern s32 D_801E4434; -extern s32 func_80128218(void); -extern void func_80128A28(void); -extern void func_80128228(void); -extern void func_80128AF4(void); -extern void func_80128248(void); -extern void func_801282EC(void); -extern void func_80128268(void); -extern u16 D_800B99F6; -extern void (*D_8018D4AC[])(void); -extern void func_80011B7C(int); -extern void func_801282CC(void); -extern void func_8001C0C8(void); -extern void func_80015310(void); -extern void func_80129258(void); -extern void func_801378F0(void); -extern void func_80010E14(void); -extern s16 currentLocationId; -extern s32 func_80029504(void); -extern s32 func_800CF854(s32); -extern s32 func_80128998(void); -extern s32 func_801289F0(void); -extern s32 func_801288E8(s32); -extern s32 func_80128940(s32); -extern s32 func_80029178(s32); -extern s32 func_801288B0(void); -extern void func_80011C10(void); -extern void func_8012832C(void); -extern void func_80129220(void); -extern void func_80011E24(void); -extern void func_80128C14(void); -extern void func_8002AEF8(void); -extern void func_800CFBBC(void); -extern void SsUtReverbOff(void); -extern void func_8013C98C(void); -extern void func_80129C40(s32 a0); -extern void func_800D0630(void); -extern void func_80145CEC(void); -extern void func_80144B9C(void); -extern u8 D_800B9A17; -extern u8 D_800B9A10; -extern void func_80128420(void); -extern s32 func_800D0588(void); -extern void func_801284B8(void); -extern void func_80175308(void); -extern void func_8016E8F0(void); -extern void func_80175494(void); -extern u8 D_800B9A64; -extern void func_801284F0(void); -extern void func_80146074(void); -extern void func_8012853C(void); -extern void func_80178608(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern s32 func_80011A3C(void); -extern short currentLocationId; -extern short D_800B99F2; -extern void func_80128564(void); -extern u8 D_800B9A11; -extern void func_801285D4(void); -extern s32 func_800D18DC(void); -extern void func_8014607C(void); -extern void func_801287B8(void); -extern s32 D_801E5A14; -extern void func_80029444(void); -extern void func_800D1754(void); -extern s32 D_80126B58; -extern s32 D_801E7AB8; -extern u16 D_800B99DA; -extern void func_80129CF8(void); -extern void func_8017849C(void); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_801505FC(s32 a0); -extern void func_801508B4(void *a0); -extern void func_80165E90(void); -extern void func_801627E8(void); -extern void func_80162B1C(void); -extern void func_80165CA0(void); -extern void func_80129010(void); -extern void func_8013CA14(void); -extern void func_800190AC(void); -extern void func_8012956C(void); -extern void func_8016E95C(void); -extern void func_801754A8(void); -extern void func_8013BC7C(void); -extern void func_8013BCDC(void); -extern void func_801379FC(void); -extern void func_8001212C(void); -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); -extern u8 D_800AEFD0; -extern int D_800C7C60; -extern int *D_800C7C64; -extern int D_800A2E20; -extern int D_800AF558; -extern int D_801E4434; -extern int func_801288E8(int arg0); -extern u8 D_800AF560; -extern s32 func_80128940(s32 _arg0); -extern int D_800AECB0; -extern u8 D_800AECB8; -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4); -extern s16 D_800B9A00; -extern M2C_UNK (*D_8018D1E0)(); -extern s16 (*D_8018D1E4)(); -extern M2C_UNK (*D_8018D1EC)(); -extern s32 (*D_8018D1F0)(); -extern s32 D_801E5A10; -extern void func_80010AE0(s32 a0); -extern void func_80018450(s32 a0, s32 a1); -extern void func_800183E0(s32 a0); -extern void func_80128D60(s32 a0, s32 *a1, s32 *a2); -extern s32 func_80128DB4(s32 a0, s32 *a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern M2C_UNK D_801E4438; -extern void func_80128FAC(u16 *arg0); -extern s16 D_8011DB2C; -extern s16 D_8011DB30; -extern s32 D_80126AEC; -extern u8 *func_8012913C(s32 a0); -extern u8 * func_801290DC(s32 a0, u8 *a1); -extern void func_8001D074(s32 a, s32 b); -extern u8 *func_801291C0(void); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 * func_8012913C(s32 arg0); -extern void func_80016714(void *a0, s32 a1); -extern u8 * func_801291C0(void); -extern void func_80129248(s16 a0); -extern void func_801292C8(u8 *a0); -extern void func_8012927C(void); -extern void func_8012931C(struct vec *a0); -extern void func_80129350(s32 a0, s32 a1); -extern void func_80129374(s32 a0, s32 a1); -extern s16 D_800B9AAC[]; -extern s16 D_800B9AAE[]; -extern s16 D_800B9AB0[]; -extern s16 D_800B9AB2[]; -extern s16 D_800B9AB4[]; -extern s16 D_800B9AB6[]; -extern s16 D_800B9AB8[]; -extern s16 D_800B9ABA[]; -extern void func_80129398(void); -extern s16 D_80114EE0; -extern void func_80129428(void); -extern void func_8012943C(void); -extern s32 D_8005128C; -extern u8 D_800B9A78; -extern void func_801298F4(void *arg0); -extern void func_801299C8(s32 a, s32 b, s32 c); -extern void func_8012944C(void); -extern unsigned short D_800B99F0; -extern void func_8012A328(void); -extern void func_80053308(s32); -extern s32 func_80012F74(s32, s32, s32, s32); /* canonical s32 (engine_core); (s16)-cast the return for the sll/sra */ -extern void GsSetRefView2L(void *); -extern s8 D_801150D6; /* canonical (engine_core macro): s8 — access via *(u8*)& for lbu */ -extern u8 D_80127504; -extern s32 D_80126E60[]; -extern s32 D_80126F04[]; -extern u8 D_80126948[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_80126FA8[]; -extern u8 D_800AF630[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_800AE688[]; -extern s32 D_801151D4; /* canonical (10 siblings): scalar s32 — store (s32)ptr */ -extern void func_8012A018(s32 a, s32 b); -extern void func_80129FF4(void); -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_80126940; -extern s16 D_80126942; -extern s16 D_80126944; -extern void func_8012A048(void *a0, s32 a1, u8 a2); -extern void *memcpy(void *, const void *, unsigned int); -extern void func_8012A094(s32 a0); -extern void func_8012A100(s8 a0); -extern void func_8012A0E0(void); -extern s8 D_801150D6; -extern s32 D_80120204; -extern s32 D_80120200; -extern s32 D_8012020C; -extern s32 D_80120208; -extern s16 D_80120218; -extern s16 D_80120210; -extern s16 D_8012021A; -extern s16 D_80120212; -extern s16 D_8012021C; -extern s16 D_80120214; -extern s16 D_80120226; -extern s16 D_80120220; -extern s16 D_80120228; -extern s16 D_80120222; -extern s16 D_8012022A; -extern s16 D_80120224; -extern s32 D_80120294; -extern s16 D_80120298; -extern s16 D_8012029A; -extern void func_8012A110(void); -extern s8 D_801152C0; -extern void func_8012A2F4(void); -extern s16 D_80127080; -extern s16 D_801152C2; -extern void func_8012A304(s32 a0, s32 a1); -extern s32 D_801151D4; -extern void func_8012A4BC(void); -extern void func_8012A598(void *a0); -extern void func_8012A568(void (*a0)(void)); -extern void func_8012A62C(s32); -extern void func_8012A5F8(void (*a0)(void), s32 a1); -extern void func_8012A62C(s32 a0); -extern void func_8012A7D4(void *a0, void *a1); -extern s32 func_8012A6D0(void *a0, void *a1); -extern s16 func_8012A68C(void); -extern s16 func_8012A79C(s16 *a0, s16 *a1); -extern s16 func_8012A758(void); -extern s32 ratan2(s32 a0, s32 a1); -extern void func_8012A7D4(void *arg0, void *arg1); -extern void func_8012AAAC(); -extern void func_8012A828(s32 a0, void * a1); -extern int func_8012ACE0(void *a0); -extern void func_8012A860(void *a0, int a1); -extern void func_8012A8B0(u8 *a0, s32 a1); -extern void func_8012A8E8(void); -extern u8 D_801202A0[]; -extern u16 D_801270C0; -extern void func_8012A988(u8 *a0); -extern void func_8012A908(void); -extern s32 func_8012ACE0(void *a0); -extern M2C_UNK D_8018D540; -extern void func_8012ACA0(void *arg0); -extern s32 func_8012ACE0(void *o); -extern void func_8012AD44(s32 *a0, s16 a1); -extern s32 func_8012AD50(void * arg0); -extern void func_8012AD64(s32 *a0, s16 a1); -extern void func_8012AD6C(void *a0); -extern void func_8012AD80(s32 a0); -extern void func_8012ADE4(u8 *a0); -extern s32 *D_80126B78; -extern s32 *D_80126B90; -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80013478(s32 a0, s32 a1); -extern s32 func_8012AE00(s32 a0); -extern s32 func_8012AF0C(s32 a0, s32 a1); -extern s32 func_80134510(s32 arg); -extern s32 func_8012B030(u8 *a0); -extern int func_80047948(int a0); -extern int func_8004787C(int a0); -extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_8012B14C(s32 a0, s32 a1); -extern void func_8012B178(s32 a0, s32 a1); -extern void func_8012B1B4(s32 a0, s32 a1); -extern void func_8012B200(u8 *a0); -extern void func_8012B21C(void *a0); -extern void func_8012B23C(s32 a0); -extern void func_8012B260(u8 *a0); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern void RotMatrixYXZ(void *m, void *p); -extern void func_8012B370(int a0); -extern void func_8004978C(s16 *a0, void *a1); -extern void func_8012B414(int a0); -extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); -extern s32 func_8012B6D4(s16 *a0, s16 *a1); -extern s32 func_8012B70C(s16 *a0, s16 *a1); -extern s32 ratan2(s32 x, s32 y); -extern s32 func_8012B744(void *a0, void *a1); -extern s16 D_80126CB8; -extern s16 D_80126CB4; -extern s32 func_8012B864(s32 a0); -extern s32 func_8012B8A4(s16 *a0); -extern s32 func_8012B8E4(s32 arg0, s32 arg1); -extern s32 func_8012BA10(s32 arg0, s32 arg1); -extern s32 func_8012BB3C(s32 arg0, s32 arg1, u32 arg2, s32 arg3); -extern void Square0(s32 *a0, s32 *a1); -extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1); -extern s16 D_80126CBA; -extern s32 func_8012BCCC(s32 a0); -extern void func_80013350(s32 a0, void *a1); -extern u8 D_80126B5C; -extern void func_8012BD14(s32 a0); -extern s32 func_8012BDBC(s32 a0, s32 a1); -extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2); -extern void func_8012BE98(s32 a0, u16 *a1); -extern void func_8012BE54(s32 a0); -extern s32 func_800132BC(s32 a0, s32 a1); -extern void func_8012BE98(s32 arg0, u16 * arg1); -extern s32 func_8012BEE8(s32 a0); -extern s32 func_8012BF10(s32 a0, s32 a1); -extern void func_8012BF4C(s32 *a0, s32 a1); -extern void func_8012BF54(void *a0); -extern void func_8012BF68(void *a0); -extern s16 D_80126CB0; -extern s32 func_8012BF7C(s16 *a0); -extern s16 D_80126CAC; -extern short D_80126CAE; -extern int func_8012BFA8(short *a0); -extern s32 D_801274D4; -extern s32 D_801274E0; -extern s32 func_8012C044(s32 a0); -extern void func_8012C194(void); -extern void func_8001CFDC(s32 a, s32 b); -extern void func_8012C1B8(void); -extern u8 D_800B3DF0[]; -extern s32 func_8012C1DC(s32 a0); -extern void func_8012C218(void *a0); -extern u8 D_80126720[]; -extern u16 * func_8012C284(u16 *a0); -extern u8 D_80120194[]; -extern s32 func_8012C2D0(void); -extern s32 func_8012C31C(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32 a0, s32 a1); -extern u8 D_80078EAE; -extern s32 func_8012C354(s32 a0, s32 a1); -extern void func_8001C810(s32 a0, s32 a1); -extern s32 func_8012C438(s32 a0, s32 a1); -extern s32 func_8012C890(s32 a0, s32 a1, s32 a2); -extern s32 func_8012C51C(void *a0, s32 a1); -extern s32 func_8012C588(s32 a0, s32 a1); -extern void func_8012C724(s32 a0, s32 a1); -extern s32 func_8012C820(u8 *a0); -extern s32 D_80190A24; -extern s16 D_801270C4; -extern u16 D_801274E4[]; -extern s32 D_8011DB08; -extern s32 func_8012CB64(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); -extern s32 func_8012CC88(s32 a, s32 b, s32 c); -extern u8 D_800D3918[]; -extern void func_8012CBA4(s32 a0); -extern void func_8012CBCC(s32 a0); -extern void func_8012CBF4(s32 a0); -extern void func_8012CC1C(s32 arg0, s32 arg1); -extern void func_8012CC40(s32 arg0, s32 arg1); -extern s32 func_8012CC88(s32 a0, s32 a1, s32 a2); -extern void func_8012CC64(s32 a0, s32 a1); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern s32 func_8012CE2C(s32 a0); -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); -extern void func_8012CFA8(s32 arg0); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_8012D3B4(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012D098(u16 *param_1, u32 param_2); -extern void func_8012D098(); -extern void func_8012D38C(int a0); -extern void func_8012D3AC(void); -extern s32 AddPrim(s32, void *); -extern s32 RotTransPers(s32, s32, s32 *, s32 *); -extern void SetLineF2(void *); -extern void *func_80010A08(s32); -extern void func_8004914C(void *); -extern void func_800491AC(void *); -extern s32 D_800A651C; -extern u8 D_800AF648; -extern s16 D_800B9A02; -extern void func_8012D4B4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_8012D5DC(void); -extern s16 D_80126B98; -extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2); -extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern int func_8012D664(); -extern void func_8012D624(s32 a0); -extern int func_8012D664(int arg0, int arg1, int arg2); -extern s32 func_8012D714(s32 param_1, u32 param_2); -extern void func_8012F568(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void func_8014C978(void); -extern M2C_UNK D_8018D558; -extern M2C_UNK D_8018D560; -extern s32 func_8012DB84(void); -extern s32 func_8012DE2C(s32 a0); -extern s32 func_8012DDA4(void); -extern s32 func_8012DBD0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8012DDA4(); -extern s32 func_8012DF34(s32 a0, s32 a1, s32 a2); -extern s16 D_80126B9A; -extern u8 D_801152A8[]; -extern void func_8012DFBC(void); -extern void func_8012DFCC(void); -extern void func_8012E014(s32 arg0); -extern void func_8012E138(void); -extern void func_8012DFD4(u8 *a0); -extern s32 func_8012E27C(void); -extern void func_8012E284(void); -extern s32 GetTPage(s32, s32, s32, s32); -extern s32 func_8005A600(s32, s32, s32, s32, s32); -extern void func_8012E28C(s32 arg0, s32 arg1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void func_8012E32C(void); -extern s32 func_8012E470(s32 a0); -extern void func_8012E4C8(s32 a0); -extern s32 func_8012E504(s32 a0, s32 a1); -extern s32 func_8012E544(s32 a0); -extern s32 func_8012E57C(s32 a0, s32 a1); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E688(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E88C(u8 *a0); -extern void func_8012E8A8(u8 *a0); -extern void func_8012E8C4(u8 *a0); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8016AA50(int, int); -extern void func_8016B428(int); -extern void func_80019064(void *); -extern int D_8018D568; -extern void func_8012E9C0(int param_1); -extern void func_8012EC04(s32 param_1, s32 param_2, s32 *param_3); -extern s32 func_8002A4FC(s32 a0); -extern s32 func_8012EECC(s32 a0); -extern void func_8012EFB8(s32 a0); -extern void func_8012EF34(s32 a0, s32 a1); -extern void func_8012EF70(s32 a0, s32 a1); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8012F0BC(s32 *a0, s32 *a1, s32 *a2); -extern void RotTransSV(s32 a0, s32 a1, void *a2); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_8012F1A4(s32 *a0, s32 a1, s32 *a2); -extern void func_8012F2E8(s32 a0, s32 a1, s32 a2); -extern s16 D_80126CB6; -extern void func_8012F374(s32 a0, s32 a1); -extern void *memcpy(void *, const void *, u32); -extern u8 D_80126C38; -extern u8 D_80126C40; -extern u16 D_80126B94; -extern u16 D_80126B96; -extern void func_8012F568(s32 param_1, s32 param_2, s32 param_3, s32 param_4, s32 param_5, s32 param_6); -extern void func_80131B14(); -extern void func_80131E00(struct S80131E00 *a0, s32 a1); -extern s32 func_80131A34(s32, s32); -extern void func_80131CA8(int a0, int a1); -extern void func_8012F5F4(s32 arg0); -extern void func_80131C78(s32 a0); -extern void func_8012F68C(s32 arg0); -extern void func_8012F75C(s32 a0); -extern s32 func_8012BEE8(s32); -extern void func_8012F7B4(s32 a0); -extern void func_80131170(); -extern void func_80131CA8(); -extern unsigned char D_8018D584[]; -extern void func_8012F828(int param_1); -extern void func_80131340(s32 a0); -extern void func_8012F87C(s32 a0); -extern void func_80131170(s32 a0, s32 a1, s32 a2); -extern u8 D_8018D590[]; -extern void func_8012F8C8(u8* arg0); -extern void func_8012F91C(s32 a0); -extern s32 func_80131A34(s32 a0, s32 a1); -extern void func_80131CA8(s32 a0, s32 a1); -extern void func_8012F968(s32 param_1); -extern void func_801319E0(s32 a0); -extern s32 func_80143B6C(s32 a0, s32 a1); -extern void func_8012FB54(s32 a0); -extern void func_8012FC30(s32 a0); -extern void func_8012FCA4(int a0); -extern s32 func_8012FCC4(s32 param_1); -extern void func_8012FDA8(int param_1); -extern void func_8012FE70(s32 a0); -extern void func_8012FF00(s32 a0); -extern void func_8012FF4C(s32 a0); -extern void func_80130D48(s32 a0); -extern void func_8012FF98(u8 *a0); -extern s32 func_80131AC8(void *a0); -extern void func_8013001C(void *a0); -extern void func_80130088(void *a0); -extern s32 func_8012BCCC(s32); -extern void func_801300F4(s32 a0); -extern void func_801301E8(u8 *a0); -extern void func_80130278(s32 arg0); -extern void func_80130314(s32 a0); -extern void func_80130360(s32 a0); -extern void func_8012E364(void); -extern void func_801303A0(s32 a0); -extern void func_801303EC(void *a0); -extern void func_80143CD4(s32 a0); -extern void func_800CB0E8(s32 a0); -extern void func_80130438(s32 a0); -extern void func_801319E0(int); -extern int func_80131D68(int, int); -extern int func_8012BEE8(int); -extern void func_80131CA8(int, int); -extern void func_80130514(int param_1); -extern void func_801305CC(u8 *a0); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_80130740(void *a0, u16 *a1); -extern s32 func_801312D0(s32 a0, void *a1); -extern void func_801307B0(s32 a0); -extern void func_80130858(s32 a0); -extern void func_80130898(u8 *a0); -extern void func_801308DC(s32 a0); -extern void func_80166244(); -extern void func_80130974(int param_1); -extern void func_80130AC4(s32 a0); -extern int func_80131A34(int a0, int a1); -extern void func_80130AF0(int param_1); -extern void (*D_8018D5A4[])(void); -extern void func_80130D0C(void *a0); -extern s32 rand(void); -extern u8 D_80078E78[]; -extern u16 D_80078EB2; -extern u16 D_80078EB4; -extern s16 D_8018D5F4[]; -extern s16 D_8018D624[]; -extern s16 D_8018D684[]; -extern s16 D_8018D68C[]; -extern s16 D_8018D6AC[]; -extern void func_80130D48(s32 arg0); -extern void func_80131170(s32 p, s32 b, s32 c); -extern s32 func_801312D0(s32 param_1, void *param_2); -extern void func_8002A04C(s32 a0); -extern void func_801319E0(s32 arg0); -extern s32 func_80131CF4(s32 a0); -extern void (*D_8018D6E4[])(struct S80131E00 *a0); -extern void func_80131E38(u8 *a0); -extern void func_80131E7C(s32 a0); -extern void func_80131EE4(void); -extern void (*D_8018D73C[])(void); -extern void func_80131EEC(void *a0); -extern void (*D_8018D784[])(void); -extern void func_80131F28(void *a0); -extern void (*D_8018D78C[])(void); -extern void func_80131F64(void *a0); -extern void (*D_8018D794[])(void); -extern void func_80131FA0(void *a0); -extern void (*D_8018D79C[])(void); -extern void func_80131FDC(void *a0); -extern void func_801320D0(void); -extern void func_8001C214(int, int); -extern int D_8018D744; -extern void func_801320D8(int param_1); -extern s32 func_80132144(s32 param_1); -extern int D_8018D764; -extern void func_801321B0(int param_1); -extern int D_8018D774; -extern void func_8013221C(int param_1); -extern void func_8005C324(int dst, int src, int n) __asm__("memcpy"); /* Phase-24: 0x8005C324 is named memcpy for overlays (whale needs it); keep the non-builtin C name here (else built-in codegen), emit via asm-label */ -extern void func_801325B8(int a0, int a1, int a2, int a3, int a4); -extern void func_80132288(int *param_1, int *param_2, int param_3); -extern void func_801325B8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_8013240C(s32 a0); -extern void func_8013277C(void); -extern void func_80020F34(s32 a0, s32 a1); -extern void func_80054514(s32 a0, s32 a1); -extern void func_80132784(s32 a0, s32 a1, u32 a2); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_80132DC4(s32 a0, s32 a1, s32 a2); -extern s32 func_80132E6C(s16 *a0); -extern void func_80132EC4(void *a0, s16 a1); -extern s32 func_80132EF4(s32 a0, s32 a1); -extern void func_801330E0(void * param_1, s16 * param_2, s32 param_3); -extern void func_80133060(u8 *a0, s32 *a1, s32 a2); -extern void func_8013339C(short *param_1, short *param_2); -extern s32 func_8013361C(s16 *a0, s16 *a1, s16 *a2, s16 *a3); -extern s32 D_801E5A80; -extern s32 D_801E5A84[]; -extern int D_801E5A88; -extern void func_80136BC4(s32 a0); -extern void func_801336E8(void *a0, int a1, int a2); -extern void func_80136BC4(s32); -extern void func_8013373C(s16 arg0); -extern s32 func_80133784(s32 arg0, void *arg1, s32 arg2); -extern s32 func_80133CD4(); -extern s32 func_8013435C(s16 *a0, s16 *a1, s32 a2, s16 *a3); -extern s32 func_801343C4(s32 angle, s32 p1, s32 p2); -extern s32 func_80134510(s32 param); -extern s32 func_801345F8(s32 arg); -extern s32 func_801347A0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134A28(s32 a0, s32 a1, s32 a2); -extern s32 func_80134C20(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134FB8(s32 a0, s32 a1, s32 a2); -extern s32 func_80135004(s32 arg0, s32 p1, s32 p2); -extern u8 D_8018D7A8; -extern u8 D_8018D7A4; -extern s16 *D_8018D7AC; -extern u8 D_8018D7B0; -extern int D_801E5A80; -extern u16 D_801E5A90; -extern int func_80134A74(int, s16, s16, int); -extern int func_80135168(u16 arg0, u16 *p1, u16 *p2); -extern s16 func_80135480(void *param_1, s32 param_2, s16 *param_3, s16 *param_4); -extern s32 func_80136334(void *arg0, s32 arg1, s32 arg2); -extern s32 func_80136824(s32 arg0, s32 arg1, s32 arg2); -extern s16 *D_8018D7AC; /* holds a pointer value (*(u16**)&D_8018D7AC) */ -extern s32 func_80136A94(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80136C3C(void); -extern void func_80136C1C(void); -extern void func_80136C44(void); -extern void func_80136C4C(void); -extern void (*D_8018D7C0[])(void); -extern void func_80136C54(void); -extern s32 func_80136C90(); -extern void func_80136D00(void); -extern void SetLineG2(void *); -extern void func_80136D08(s32 arg0, s32 arg1); -extern void func_80136EC4(void); -extern short D_800B9A02; -extern u8 D_800A6518[]; -extern void GsSortLine(void *a0, void *a1, s32 a2); -extern void func_80136ECC(s16 a0, s16 a1, s16 a2, s16 a3, u8 r, u8 g, u8 b); -extern void func_80137030(s16 a0, s16 a1); -extern void ApplyMatrixSV(void *m, Svec_801372B0 *in, Svec_801372B0 *out); -extern void aGsSortLine(Gline_801372B0 *p, void *ot, s32 z) __asm__("GsSortLine"); -extern void aF80137030(s32 x, s32 y) __asm__("func_80137030"); -extern void func_80137178(s32 x, s32 y); -extern u8 D_800AF630[]; -extern u16 aD800B9A02 __asm__("D_800B9A02"); -extern void func_801372B0(void); -extern void func_80137614(s32 a0, s32 a1, s32 a2); -extern void func_801375EC(s32 a0, s16 a1); -extern s32 func_801399A8(void); -extern void func_801377B4(s32 a0, s32 a1, s32 a2); -extern s32 func_8013767C(s32 a0); -extern void func_801376E8(int a0, int a1); -extern void func_801376C8(int a0); -extern s32 D_80127524; -extern s32 D_80127528; -extern void func_80137840(s32 a0); -extern void func_80139634(void *); -extern void func_80139DC8(void); -extern s16 D_8012752E; -extern void func_801379D8(void); -extern void func_801379EC(void); -extern int D_8018D814; -extern int D_801269F0; -extern void func_80138BE0(int p); -extern void func_80137B80(void); -extern void func_801392FC(); -extern void func_801397B0(s32 a0); -extern void func_80137DD4(s32 a0, u8 *a1, u8 *a2); -extern void func_80139680(s32 a0, u8 *a1); -extern u16 D_800B99D8; -extern void func_80137BD8(s32 a0); -extern unsigned char D_80126A0E; -extern short D_80126A0A; -extern s16 D_801269F4; -extern int D_800A5E60; -extern int func_80137D08(int arg0, int arg1, short arg2); -extern void func_80137FD8(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_801380E0(s32 arg0); -extern void func_801387B8(s32 arg0); -extern void func_80138948(void *a0); -extern s16 func_80138DB8(s32 a0, u8 a1, s32 a2); -extern void func_80138B88(s32 a0); -extern void func_8013895C(s32 a0); -extern s16 D_80127540[4]; -extern s32 func_80139D04(s32 a0, s32 a1); -extern s32 func_80138DE0(u8 *arg0, u8 arg1, s32 arg2); -extern void func_80139B18(s32 a0); -extern void func_80138AB4(s32 a0); -extern void (*D_8018D818[])(void); -extern void func_80138C30(void *a0); -extern s32 func_80139BE0(s32); -extern s32 func_80138C60(s32 arg0); -extern void func_8013A9F8(s32 a0, s32 a1); -extern void func_80138D58(s32 a0, u16 a1); -extern s32 func_80014E80(s32 a0, s32 a1); -extern s32 func_80138ED0(u8 *param_1, u32 param_2, u8 *param_3); -extern s32 func_8013914C(s32 a0, s32 a1); -extern void func_800599B8(u16 *); -extern u16 D_80127C0C[]; -extern s32 D_80127548[]; -extern s32 func_80139220(s32 a0); -extern void func_801391F0(void *a0); -extern void func_801392C8(void *a0); -extern void func_801395D4(void *); -extern s32 GetTPage(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80052460(s32 a0, s32 a1, s32 a2); -extern void func_801392FC(s32 arg0, s32 arg1, u8 *arg2); -extern void func_80059888(void *a0, s32 a1, s32 a2, s32 a3); -extern void func_801395D4(void * a0); -extern void func_80139634(void *a0); -extern void func_80139680(s32 arg0, u8 * arg1); -extern void func_8001931C(void); -extern s16 D_8012752C; -extern void func_80139788(void); -extern u8 D_8018D85C; -extern u8 D_8018D8A0; -extern void GsSortSprite(void *a0, u8 *a1, s32 a2); -extern void func_801397B0(s32 arg0); -extern void func_8013A8B0(s32 *a0); -extern void func_80139914(s32 arg0); -extern u16 D_80126A08; -extern s32 D_801269F0; -extern s32 *D_80126A30; -extern void func_80139954(void); -extern s32 D_80126A3C; -extern s32 func_801399F0(s32 a0); -extern s32 D_80127520; -extern void func_80139A34(s32 a0); -extern s32 D_80127530[4]; -extern void func_80139A44(s32 a0, u16 a1); -extern void func_80139A68(s32 a0, u16 a1); -extern void func_80139A8C(s32 a0); -extern void func_80139C7C(u8 *a0); -extern s16 D_8012811A; -extern void func_80139DEC(void); -extern void func_80139DF4(s32 a0); -extern void func_80139E84(s32 a0); -extern void func_80139F0C(s32 a0); -extern void func_80139FBC(struct obj *a0); -extern s32 func_8001B22C(void *a0); -extern void func_80139FE8(void *a0); -extern void func_8013A0A4(struct S8013A0A4 *a0); -extern void func_8013A164(struct S8013A164 *a0); -extern void func_8013A1E8(s32 a0); -extern void func_8013A250(struct S8013A250 *a0); -extern void func_8013A2BC(s32 a0); -extern void func_8013A378(void); -extern u8 D_8011DA80[]; -extern void func_8013A530(); -extern void func_8013A448(void *a0); -extern void func_8013A4C4(struct S8013A4C4 *a0); -extern void func_8013A380(void); -extern void func_80015D4C(); -extern void func_80015F04(); -extern void func_8013AA24(s32 a0, s32 a1); -extern void func_8013A530(int param_1); -extern void func_8013A860(void); -extern s32 func_8013A8BC(void); -extern void func_8013A9B4(s32 a0, s32 a1); -extern s32 func_8013A8FC(s32 arg0); -extern void func_8013AD38(void *a0, s32 a1, void *a2, void *a3); -extern void func_8013B204(s32 a0, s32 a1); -extern void func_8013AF20(); -extern void func_8013B274(s32 a0, s32 a1, void *a2); -extern s32 D_800A5E60; -extern s32 func_8013AB54(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */ -extern u8 D_8018D8E4[]; /* sign table, alt (when a1 < 0xC00) */ -extern void func_8013AD38(void *flag, s32 a1, void *out2, void *out3); -extern void func_8013AF20(u32 *param_1, u16 *param_2, u16 *param_3, u8 *param_4); -extern s16 D_8018D95C, D_8018D95E, D_8018D960, D_8018D962, D_8018D964, D_8018D966; -extern u16 D_800D45F6; -/* ==== end §8b carried decl layer ==== */ - - -/* ==== Phase-17 canonical-sig layer (tools/derive_canonical_sigs.py) =================== - * ONE byte-neutral canonical signature per undeclared-stub conflict callee, so the parallel - * hand-matching wave declares each shared callee consistently and the one-big-TU build stops - * failing on `conflicting types` (hand-matching-process.md §7c). Form: s32 return (void->s32 - * byte-neutral, §3a-1) + s32 params (matched bodies cast int->ptr), arity from Ghidra-C + asm - * read-before-write $a0-$a3 (agree on all 14 cached; 6 stubs call-site-validated). LOCAL to - * this TU on purpose (reach-1 names like func_801809BC differ across overlays, so NOT in the - * shared engine_core.h). Whole-binary harvest_verify byte-gate remains the sole arbiter (G3/P9). */ -extern s32 func_8016EC0C(s32 a0, s32 a1); /* match-first, arity 2 */ -extern s32 func_8012B4B8(s32 a0); /* match-first, arity 1 */ -extern s32 func_801670E4(s32 a0, s32 a1, s32 a2, s32 a3); /* derive-decl, arity 4 */ -extern s32 func_80169A4C(s32 a0, s32 a1); /* match-first, arity 2 */ -extern s32 func_8016A8FC(s32 a0); /* match-first, arity 1 */ -extern s32 func_8012B8E4(s32 a0, s32 a1); /* match-first, arity 2 */ -extern s32 func_8015E1B8(s32 a0); /* match-first, arity 1 */ -extern s32 func_8015EE08(s32 a0); /* match-first, arity 1 */ -extern s32 func_8015F7D4(s32 a0); /* match-first, arity 1 */ -extern s32 func_80160B34(s32 a0); /* match-first, arity 1 */ -extern s32 func_80165140(s32 a0); /* match-first, arity 1 */ -extern s32 func_80161CD0(s32 a0, s32 a1); /* match-first, arity 2 */ -extern s32 func_80175268(s32 a0); /* match-first, arity 1 */ -extern s32 func_8017EC7C(s32 a0); /* match-first, arity 1 */ -extern s32 func_801809BC(s32 a0, s32 a1); /* match-first, arity 2 */ -extern s32 func_8012DE2C(s32 a0); /* derive-decl, arity 1 */ -extern s32 func_8012DDA4(void); /* derive-decl, arity 0 */ -extern s32 func_801759D8(void); /* derive-decl, arity 0 */ -extern s32 func_80175820(void); /* derive-decl, arity 0 */ -extern s32 func_801758FC(void); /* derive-decl, arity 0 */ -/* ==== end canonical-sig layer ==================================================== */ - -extern void func_80016714(void *a0, s32 a1); -extern s32 D_801E5AF8; -extern s32 D_801269D4; -extern s32 D_801269C8; - -void func_8013C98C(void) { - func_80016714(&D_801E5AF8, 8); - D_801269D4 = 0; - D_801269C8 = 0; -} - - -extern M2C_UNK D_80062BC0; -extern s32 D_801E5AF8; -extern s8 D_801E5AFC; -extern s8 D_801E5AFD; - -void func_8013C9C4(void * arg0) -{ - D_801E5AF8 = arg0; - D_801E5AFC = 0; - D_801E5AFD = 0; - if (func_80019198() == 0) { - func_80019064(&D_80062BC0); - } -} - - - - -extern s32 D_801E5AF8; -extern s8 D_801E5AFC; -extern s8 D_801E5AFD; -extern s32 D_801269C8; -extern s32 D_801269D4; -void func_8013CA14(void) -{ - int *base = &D_801E5AF8; - signed char *p; - unsigned char c; - int t; - if ((*base) != 0) - { - c = D_801E5AFD; - if (c == 0) - { - p = (signed char *) ((((unsigned int) ((unsigned char) D_801E5AFC)) * 2) + D_801E5AF8); - t = (int) (*p); - D_801269D4 = t; - D_801269C8 = t; - D_801E5AFD = (unsigned char) p[1]; - D_801E5AFC = D_801E5AFC + 1; - if (D_801E5AFD == 0) - { - D_801269D4 = 0; - D_801269C8 = 0; - D_801E5AFC = 0; - *base = 0; - } - } - else - { - D_801E5AFD = c - 1; - } - } - return; -} - - - -extern s32 D_801E5B1C; -extern s32 D_801E5B10; -extern s32 D_801E5B14; -extern s32 D_801E5B20; - -void func_8013CABC(void) { - D_801E5B1C = 1; - D_801E5B10 = 1; - D_801E5B14 = 0; - D_801E5B20 = 1; -} - - - -extern s32 D_801E5B10; -extern s32 D_801E5B14; -extern s32 D_801E5B18; -extern s32 D_801E5B1C; -extern s32 D_801E5B20; - -void func_8013CAE8(void) { - D_801E5B10 = 1; - D_801E5B1C = 0; - D_801E5B14 = 0; - D_801E5B18 = -1; - D_801E5B20 = 0; -} - - - -extern s32 D_801E5B1C; -extern s32 D_801E5B20; -extern s32 D_801E5B48; -extern s32 D_801E5B4C; - -void func_8013CB20(void) -{ - D_801E5B48 = D_801E5B20; - D_801E5B4C = D_801E5B1C; - D_801E5B20 = 1; - D_801E5B1C = 0; -} - - - -extern s32 D_801E5B48; -extern s32 D_801E5B4C; -extern s32 D_801E5B20; -extern s32 D_801E5B1C; - -void func_8013CB5C(void) { - D_801E5B20 = D_801E5B48; - D_801E5B1C = D_801E5B4C; -} - - - - -extern s16 currentLocationId; -extern s32 D_801E5B20; -extern s32 D_801E5B18; -extern s32 D_801E5B1C; -extern s32 D_801E5B10; -extern s32 D_801E5B14; - -extern void func_8013DBE4(); -extern void func_8013D9B0(); -extern void func_8013D330(void); -extern void func_8013D178(void); -extern void func_8013CF68(void); - -void func_8013CB84(void) { - - extern u8 D_80078EAF; - extern s32 D_801E5B24; - extern s32 D_801E5B30; - extern s32 D_801E5B38; - extern s32 D_801E7A80; - extern s32 D_801E7A00; - extern s32 D_801E79F4[]; - extern u8 D_801E79B1; - extern u8 D_801E7B26; - extern u8 D_801E7A7C; - extern Rec12 D_8018DB7C[]; - extern Rec9 D_8018DB44[]; - extern u8 D_801E7A58; /* canonical (§8d); Rec9 block-move via cast-at-use */ - s32 loc = currentLocationId; - s32 s0 = D_80078EAF; - s32 ta, tb, tc, t; - - D_801E7A80 = 0; - if (D_801E5B20 == 0 && s0 != D_801E5B18) { - ta = D_8018DB7C[s0].a; - tb = D_8018DB7C[s0].b; - tc = D_8018DB7C[s0].c; - D_801E5B18 = s0; - D_801E79B1 = tc; - D_801E7B26 = ta; - D_801E7A7C = tb; - *(Rec9 *)&D_801E7A58 = D_8018DB44[s0]; - D_801E5B1C = 1; - D_801E5B10 = 1; - if (D_801E5B30 & 2) { - if (s0 == 4) { D_801E79F4[0] = 0x100; D_801E7A00 = 0x80; } - if (s0 == 0) { D_801E79F4[0] = 0x100; D_801E7A00 = 0; } - } - } - if (D_801E5B1C != 0) { - t = D_801E5B10 - 1; - D_801E5B10 = t; - if (t == 0) { - if (D_801E5B20 == 0) { - if ((D_801E5B30 & 2) && s0 == 4) { - if (D_801E5B38 != 0) func_8013DBE4(6); - else func_8013D9B0(6); - } else { - if (D_801E5B38 != 0) func_8013DBE4(s0); - else func_8013D9B0(s0); - } - func_8013D330(); - func_8013D178(); - func_8013CF68(); - D_801E5B10 = 2; - if (D_801E5B1C != 0) { - if (D_801E5B30 & 2) { - if (s0 == 4) { - s32 *p = &D_801E7A00; - t = *p - 8; - *p = t; - if (t < 0) *p = 0; - } else if (s0 == 0) { - s32 *p = &D_801E7A00; - t = *p + 0x20; - *p = t; - if (t >= 0x81) *p = 0x80; - } - } - } else if (D_801E5B30 & 2) { - if (s0 == 4) D_801E7A00 = 0; - if (s0 == 0) D_801E7A00 = 0x80; - } - } else { - if (D_801E5B38 != 0) func_8013DBE4(5); - else func_8013D9B0(5); - D_801E5B10 = 1; - } - } - } - D_801E5B24 = 0; - if (loc == 0x1010) { - if (s0 == 3) { - if (D_801E5B1C != 0) D_801E5B24 = D_801E5B14; - else D_801E5B24 = 0x1F; - } else if (s0 == 4) { - if (D_801E5B1C != 0) D_801E5B24 = 0x1F - D_801E5B14; - else D_801E5B24 = 0; - } - } -} - - -// @class: struct -// @stuck: none — MATCH (63 ins) -// -// Sets up 3 consecutive 16-byte records (at D_800A5E88[0..2]: {s32 a,b,c; u8 d,e,f,g}) -// and registers each via func_80028620(i, &rec[i]). -// -// Keys to the byte match: -// (1) The base pointer is anchored at D_800A5E94 (= &rec0.d, i.e. rec0+0xC) and materialized -// via a NON-volatile inline-asm `la` so gcc treats it as OPAQUE (not a const symbol). -// Opacity is what makes the base-relative stores FOLD into `off($s0)` instead of -// const-folding to a direct `lui $at; sw %lo(sym)`. A `__asm__ __volatile__` re-tie -// barrier (cookbook §21) also launders base, but the barrier pins the schedule and -// pushes the first call's `a0=0` down; the non-volatile `la` avoids the barrier so the -// scheduler still hoists `addu $a0,$zero,$zero` to the top (matches target idx1). -// (2) rec0's inner fields (E8C/E90 ints, E95/E96 bytes) are written as DIRECT globals, not -// base-relative — in the entry block gcc emits them as `lui $at; sw/sb %lo(sym)`. Only -// the address-taken E88 (= call arg base-0xC) and the offset-0 E94 fold via $s0. rec1/rec2 -// fold entirely (base opaque, all offsets small). -// (3) The three source bytes per record are loaded into temps t0/t1/t2 BEFORE the stores so -// gcc keeps them live in three registers ($v1/$a2/$a3) as a group (not one-at-a-time in $v0). -// (4) Statement order matches the target scheduler: rec1 stores b(=7) before the loads; -// rec2 stores b(=-0x12) AFTER the loads (the differing constants drive the scheduler). -#include "common.h" - - -void func_8013CF68() -{ - extern void func_80028620(); - extern u8 D_800A5E94[]; - extern s32 D_800A5E8C; - extern s32 D_800A5E90; - extern u8 D_800A5E95; - extern u8 D_800A5E96; - extern u8 D_801E79A8; - extern u8 D_801E79A9; - extern u8 D_801E79AA; - extern u8 D_801E79AB; - extern u8 D_801E79AC; - extern u8 D_801E79AD; - extern u8 D_801E79AE; - extern u8 D_801E79AF; - extern u8 D_801E79B0; - - u8 t0, t1, t2; - u8 *base; - __asm__("la %0, D_800A5E94" : "=r"(base)); - - *(s32 *)(base - 0xC) = 0; - t0 = D_801E79A8; t1 = D_801E79A9; t2 = D_801E79AA; - D_800A5E8C = 0x1E; - D_800A5E90 = 0; - base[0] = t0; D_800A5E95 = t1; D_800A5E96 = t2; - func_80028620(0, base - 0xC); - - *(s32 *)(base + 4) = 0; *(s32 *)(base + 8) = 7; - t0 = D_801E79AB; t1 = D_801E79AC; t2 = D_801E79AD; - *(s32 *)(base + 0xC) = 0x14; - base[0x10] = t0; base[0x11] = t1; base[0x12] = t2; - func_80028620(1, base + 4); - - *(s32 *)(base + 0x14) = 0; - t0 = D_801E79AE; t1 = D_801E79AF; t2 = D_801E79B0; - *(s32 *)(base + 0x18) = -0x12; - *(s32 *)(base + 0x1C) = 0; - base[0x20] = t0; base[0x21] = t1; base[0x22] = t2; - func_80028620(2, base + 0x14); -} - - - - -// @class: schedule -// @stuck: testing if/else-if with ==2 placed as the else (tail) block - -extern s32 D_801E5B28; -extern s32 D_801E5B10; -extern s32 D_801E5B2C; -extern s32 D_801E5B1C; -extern void func_8013D9B0(); - -void func_8013D064(void) -{ - if (D_801E5B28 != 0) { - if (D_801E5B28 != 2) { - if (((D_801E5B28 < 3) && (D_801E5B28 == 1)) && - (D_801E5B2C = D_801E5B2C + 1, 0x23a < D_801E5B2C)) { - D_801E5B10 = D_801E5B28; - D_801E5B28 = 2; - } - } else { - D_801E5B10 = D_801E5B10 + -1; - if (D_801E5B10 == 0) { - D_801E5B10 = D_801E5B28; - ((void (*)(s32))func_8013D9B0)(2); - if (D_801E5B1C == 0) { - D_801E5B28 = D_801E5B28 + 1; - } - } - } - } - return; -} - - - - -extern void func_8013D9B0(); -extern s32 D_801E5B1C; - -s32 func_8013D13C(void) { - func_8013D9B0(); - return D_801E5B1C; -} - - - -extern s32 D_801E5B28; - -void func_8013D164(void) { - D_801E5B28 = 1; -} - - - -void func_8013D178(void) { - - extern u8 D_801E79A8; - extern u8 D_801E79A9; - extern u8 D_801E79AA; - extern u8 D_801E79AB; - extern u8 D_801E79AC; - extern u8 D_801E79AD; - extern u8 D_801E79AE; - extern u8 D_801E79AF; - extern u8 D_801E79B0; - extern unsigned char D_801E7A58, D_801E7A59, D_801E7A5A, D_801E7A5B, D_801E7A5C, D_801E7A5D, D_801E7A5E, D_801E7A5F, D_801E7A60; - extern unsigned char D_801E7A58, D_801E7A59, D_801E7A5A, D_801E7A5B, D_801E7A5C, D_801E7A5D, D_801E7A5E, D_801E7A5F, D_801E7A60; - extern unsigned char D_801E7A58, D_801E7A59, D_801E7A5A, D_801E7A5B, D_801E7A5C, D_801E7A5D, D_801E7A5E, D_801E7A5F, D_801E7A60; - extern unsigned char D_801E7A58, D_801E7A59, D_801E7A5A, D_801E7A5B, D_801E7A5C, D_801E7A5D, D_801E7A5E, D_801E7A5F, D_801E7A60; - extern unsigned char D_801E7A58, D_801E7A59, D_801E7A5A, D_801E7A5B, D_801E7A5C, D_801E7A5D, D_801E7A5E, D_801E7A5F, D_801E7A60; - extern unsigned char D_801E7A58, D_801E7A59, D_801E7A5A, D_801E7A5B, D_801E7A5C, D_801E7A5D, D_801E7A5E, D_801E7A5F, D_801E7A60; - extern unsigned char D_801E7A58, D_801E7A59, D_801E7A5A, D_801E7A5B, D_801E7A5C, D_801E7A5D, D_801E7A5E, D_801E7A5F, D_801E7A60; - extern unsigned char D_801E7A58, D_801E7A59, D_801E7A5A, D_801E7A5B, D_801E7A5C, D_801E7A5D, D_801E7A5E, D_801E7A5F, D_801E7A60; - extern unsigned char D_801E7A58, D_801E7A59, D_801E7A5A, D_801E7A5B, D_801E7A5C, D_801E7A5D, D_801E7A5E, D_801E7A5F, D_801E7A60; - unsigned char v, t; - register unsigned char *p __asm__("$5"); - - p = &D_801E79A8; v = *p; t = D_801E7A58; - if (v != t) { if (v < t) *p = v + 8; else *p = v - 8; } - p = &D_801E79A9; v = *p; t = D_801E7A59; - if (v != t) { if (v < t) *p = v + 8; else *p = v - 8; } - p = &D_801E79AA; v = *p; t = D_801E7A5A; - if (v != t) { if (v < t) *p = v + 8; else *p = v - 8; } - p = &D_801E79AB; v = *p; t = D_801E7A5B; - if (v != t) { if (v < t) *p = v + 8; else *p = v - 8; } - p = &D_801E79AC; v = *p; t = D_801E7A5C; - if (v != t) { if (v < t) *p = v + 8; else *p = v - 8; } - p = &D_801E79AD; v = *p; t = D_801E7A5D; - if (v != t) { if (v < t) *p = v + 8; else *p = v - 8; } - p = &D_801E79AE; v = *p; t = D_801E7A5E; - if (v != t) { if (v < t) *p = v + 8; else *p = v - 8; } - p = &D_801E79AF; v = *p; t = D_801E7A5F; - if (v != t) { if (v < t) *p = v + 8; else *p = v - 8; } - p = &D_801E79B0; v = *p; t = D_801E7A60; - if (v != t) { if (v < t) *p = v + 8; else *p = v - 8; } -} - - - -// @class: other -// @stuck: none — MATCH (three step-toward-target byte clamps + word store) - -extern u8 D_801E7AB2; -extern u8 D_801E7B26; -extern u8 D_801E79B2; -extern u8 D_801E7A7C; -extern u8 D_801E7988; -extern u8 D_801E79B1; -extern s32 D_801E7A80; - -void func_8013D330(void) { - if ((D_801E7AB2 & 0xff) != D_801E7B26) { - D_801E7AB2 = ((D_801E7AB2 & 0xff) < D_801E7B26) ? (D_801E7AB2 + 1) : (D_801E7AB2 - 1); - } - if ((D_801E79B2 & 0xff) != D_801E7A7C) { - D_801E79B2 = ((D_801E79B2 & 0xff) < D_801E7A7C) ? (D_801E79B2 + 1) : (D_801E79B2 - 1); - } - if ((D_801E7988 & 0xff) != D_801E79B1) { - D_801E7988 = ((D_801E7988 & 0xff) < D_801E79B1) ? (D_801E7988 + 1) : (D_801E7988 - 1); - } - D_801E7A80 = 1; -} - - - - -// @class: regalloc-order -// @stuck: none — MATCH (match_one 90/90); base &D_80078E78 cached in a pointer local so gcc pins it into callee-saved $s1 and hoists the addr to the prologue (live across all 4 calls); direct array access D_80078E78[0x37] instead folds %lo per use (no $s1, frame 0x18 not 0x20) - -extern u8 D_80078E78[]; - -extern void *D_801E5B00; -extern void *D_801E5B04; -extern void *D_801E5B08; -extern s32 D_801E5B30; -extern s32 D_801E5B34; -extern s32 D_801E5B38; -extern s32 D_801E79F4[]; - -extern u8 D_8018DA54[]; -extern u8 D_8018DAFC[]; -extern u8 D_8018D9AC[]; -extern u8 D_8018DAA8[]; -extern u8 D_8018DB28[]; -extern u8 D_8018DA00[]; - -extern void func_8013D53C(void *arg0v); -extern void func_8013DD68(void); -extern void func_8013D8FC(void); -extern void func_8013CF68(void); - -void func_8013D3D4(int param_1, int param_2) -{ - u8 *p = D_80078E78; - - D_801E5B30 = param_2; - D_801E5B34 = (param_2 >> 2) & 3; - D_801E5B38 = (param_2 >> 4) & 1; - if (((param_2 >> 2) & 3) == 0) { - D_801E5B00 = D_8018DA54; - D_801E5B04 = D_8018DAFC; - D_801E5B08 = D_8018D9AC; - } else { - D_801E5B00 = D_8018DAA8; - D_801E5B04 = D_8018DB28; - D_801E5B08 = D_8018DA00; - } - ((void (*)(void))func_8013D53C)(); - if ((param_2 & 1) != 0) { - if (D_801E5B38 != 0) { - func_8013DD68(); - } else { - func_8013D8FC(); - } - func_8013CF68(); - if ((D_801E5B30 & 2) != 0) { - D_801E79F4[0] = 0x140; - D_801E79F4[3] = 0x80; - if (p[0x37] == 4) { - D_801E79F4[0] = 0x140; - D_801E79F4[3] = 0; - } - if (p[0x37] == 0) { - D_801E79F4[0] = 0x140; - D_801E79F4[3] = 0x80; - } - } - } -} - - - - /* 9-byte, align-1 -> unaligned block copy */ - - -extern s32 D_801E5B30; -extern s32 D_801E5B18; - - -extern u8 D_801E7AB2; -extern u8 D_801E7B26; -extern u8 D_801E79B2; -extern u8 D_801E7A7C; -extern u8 D_801E7988; -extern u8 D_801E79B1; - - -extern s32 D_801E7A80; -extern s32 D_801E5B2C; -extern s32 D_801E5B28; -extern s32 D_801E5B10; -extern s32 D_801E5B1C; -extern s32 D_801E5B20; - -extern void *D_801E5B00; -extern s32 D_801E5B38; -extern void *D_801E5B08; - -void func_8013D53C(void *arg0v) { - - extern Rec9 D_8018DB44[]; - extern Rec12 D_8018DB7C[]; - extern u8 D_80078EAF; - extern u8 D_801E7A58; - extern s32 D_801E5B24; - Cmd_8013D53C *arg0 = arg0v; - - extern u8 D_8018DB80[]; - extern u8 D_8018DB84[]; - extern unsigned char D_801E79A8; - extern s16 *D_801E5B0C; - extern s32 D_801E5B3C; - extern s32 D_801E5B40; - extern s32 D_801E5B44; - s32 s0v; - s32 t9v; - s32 t8v; - u8 b0, b1, b2; - u8 pad[8]; /* dead BLKmode local: frame 0x10 -> 0x18, zero code */ - - if (!(D_801E5B30 & 1)) { - D_801E5B18 = 1; - } else { - D_801E5B18 = D_80078EAF; - } - - b0 = ((u8 *)D_8018DB7C)[D_801E5B18 * 12]; - D_801E7AB2 = b0; - D_801E7B26 = b0; - b1 = D_8018DB80[D_801E5B18 * 12]; - D_801E79B2 = b1; - D_801E7A7C = b1; - b2 = D_8018DB84[D_801E5B18 * 12]; - D_801E7988 = b2; - D_801E79B1 = b2; - - (*(S9 *)&D_801E79A8) = ((S9 *)D_8018DB44)[D_801E5B18]; - (*(S9 *)&D_801E7A58) = *(S9 *)(&D_801E7988 + 0x20); /* same addr as (*(S9 *)&D_801E79A8); distinct sym defeats cse, keeps %hi/%lo */ - - D_801E7A80 = 1; - D_801E5B2C = -1; - D_801E5B28 = 0; - D_801E5B24 = -1; - D_801E5B10 = 0; - D_801E5B1C = 0; - D_801E5B20 = 0; - - if ((D_801E5B30 & 2) && (D_801E5B18 == 4)) { - s0v = (*(s32 * *)&D_801E5B00)[18]; - t9v = (*(s32 * *)&D_801E5B00)[19]; - t8v = (*(s32 * *)&D_801E5B00)[20]; - } else { - s32 *p = (s32 *)(D_801E5B18 * 12 + (s32) (*(s32 * *)&D_801E5B00)); /* block-local: local-alloc ties sum into mul chain */ - s0v = p[0]; - t9v = p[1]; - t8v = p[2]; - } - - (*(Cmd_8013D53C * *)&D_801E5B0C) = arg0; - if (arg0 != 0) { - if (D_801E5B38 != 0) { - s32 *p = (s32 *)(D_801E5B18 * 12 + (s32) (*(s32 * *)&D_801E5B08)); - D_801E5B3C = p[0]; - D_801E5B40 = p[1]; - D_801E5B44 = p[2]; - } else { - while ((arg0->cmd & 0xFFFF) != 0xFF) { - if ((arg0->cmd & 0xFFFF) == 9) { - s32 n; - s32 i; - u16 *src; - u16 *dst; - n = arg0->w * arg0->h; - i = 0; - src = arg0->data; - __asm__("" :: "r"(src)); /* +2 refs on src (depth-2): keeps src above i, below the mfhi temp */ - dst = src + n; - if (n > 0) { - do { - u16 px; - s32 r, g, b, out; - __asm__("" :: "r"(i)); /* +3 refs on i (depth-3): lifts i over dst in the $t2 race */ - px = *src; - r = ((px & 0x1F) * s0v) / 2560; - g = (((px & 0x3E0) * t9v) / 2560) & 0x3E0; - b = (((px & 0x7C00) * t8v) / 2560) & 0x7C00; - out = r | g | b | (px & 0x8000); - if (out == 0 && px != 0) { - out = 0x8000; - } - *dst = out; - dst++; - i++; - src++; - } while (i < n); - } - } - arg0++; - } - } - } -} - - - - - - - - -extern void func_800599B8(u16*); - -void func_8013D8FC(void) -{ - - extern s16 *D_801E5B0C; - register s16 *psVar3 __asm__("$17"); - register s16 *psVar2 __asm__("$16"); - register s32 c9 __asm__("$19"); - register s32 cff __asm__("$18"); - u16 sVar1; - s16 buf[4]; - - psVar3 = D_801E5B0C; - if (psVar3 != (s16 *)0x0 && (sVar1 = (u16)*psVar3, sVar1 != 0xff)) { - c9 = 9; - cff = 0xff; - psVar2 = psVar3 + 5; - do { - if (sVar1 == c9) { - s32 arg2 = *(s32 *)(psVar2 + 1) + psVar2[-1] * 2; - buf[0] = psVar2[-3]; - buf[1] = psVar2[-2]; - buf[2] = psVar2[-1]; - buf[3] = *psVar2; - ((void (*)(s32, s32))func_800599B8)((s32)buf, arg2); - } - psVar3 = psVar3 + 8; - sVar1 = (u16)*psVar3; - psVar2 = psVar2 + 8; - } while (sVar1 != cff); - } -} - - -extern void *D_801E5B04; -extern s32 D_801E5B1C; -extern void func_800599B8(u16*); -#define gte_ldIR0z() __asm__ __volatile__("mtc2 $0, $8") -#define gte_ldrgb(p) __asm__ __volatile__("lwc2 $6, 0(%0)" :: "r"(p) : "memory") -#define gte_ldIRGB(p) __asm__ __volatile__("lwc2 $28, 0(%0)" :: "r"(p) : "memory") -#define gte_dpcl() __asm__ __volatile__("nop\n\tnop\n\tdpcl") -#define gte_stORGB(p) __asm__ __volatile__("swc2 $29, 0(%0)" :: "r"(p) : "memory") - -void func_8013D9B0(int param_1) -{ - - extern s16 *D_801E5B0C; - extern s32 D_801E5B24; - u8 buf[0x20]; - register s32 uVar13 __asm__("$16"); - register u16 *psVar14 __asm__("$17"); - register u16 *psVar15 __asm__("$18"); - register s32 uVar16 __asm__("$19"); - register void *r0 __asm__("$20"); - register u16 *puVar10 __asm__("$11"); - register u16 *puVar9 __asm__("$10"); - register s32 iVar11 __asm__("$13"); - register s32 iVar12 __asm__("$14"); - u16 sVar4; - register u32 uVar5 __asm__("$3"); - register u32 uVar7 __asm__("$6"); - register u32 uVar1 __asm__("$7"); - register u32 uVar6 __asm__("$4"); - register u32 uVar8 __asm__("$8"); - register u32 uVar3 __asm__("$9"); - - psVar15 = (*(u16 * *)&D_801E5B0C); - if (psVar15 != 0) { - sVar4 = *psVar15; - *(u32 *)(buf + 8) = (*(u32 * *)&D_801E5B04)[param_1]; - D_801E5B24 = -1; - uVar16 = 0; - if (sVar4 != 0xff) { - r0 = buf + 8; - psVar14 = psVar15 + 6; - do { - iVar11 = 0; - if (sVar4 == 9) { - *(s16 *)(buf + 0) = psVar14[-4]; - __asm__ __volatile__("" ::: "memory"); - *(s16 *)(buf + 2) = psVar14[-3]; - __asm__ __volatile__("" ::: "memory"); - *(s16 *)(buf + 4) = psVar14[-2]; - __asm__ __volatile__("" ::: "memory"); - *(s16 *)(buf + 6) = psVar14[-1]; - __asm__ __volatile__("" ::: "memory"); - { - register s32 mw __asm__("$3") = (s32)((s16 *)psVar14)[-2]; - register s32 mh __asm__("$2") = (s32)((s16 *)psVar14)[-1]; - iVar12 = mw * mh; - } - uVar13 = 0; - puVar10 = *(u16 **)psVar14; - { - register s32 boff __asm__("$2") = iVar12 * 2; - register u16 *pi __asm__("$5"); - pi = (u16 *)((s32)puVar10 + boff); - __asm__ __volatile__("" : "=r"(pi) : "0"(pi)); - puVar9 = pi; - } - if (0 < iVar12) { - do { - register u32 pix __asm__("$2"); - register u32 out __asm__("$2"); - u32 result; - *(u32 *)(buf + 0xc) = (u32)*puVar10; - pix = (u32)*puVar9; - uVar5 = pix & 0x1f; - uVar7 = pix & 0x3e0; - uVar1 = pix & 0x7c00; - { - void *p1; - register void *pa __asm__("$2"); - register void *pb __asm__("$12"); - __asm__ __volatile__(""); - p1 = buf + 0xc; - __asm__ __volatile__("" : "=r"(p1) : "0"(p1)); - gte_ldIR0z(); - gte_ldrgb(r0); - gte_ldIRGB(p1); - gte_dpcl(); - pa = buf + 0x10; - __asm__ __volatile__("" : "=r"(pa) : "0"(pa)); - pb = pa; - gte_stORGB(pb); - } - out = *(u32 *)(buf + 0x10); - uVar6 = out & 0x1f; - uVar8 = out & 0x3e0; - uVar3 = out & 0x7c00; - if (uVar5 != uVar6) { - register s32 c __asm__("$2"); - uVar13 = 1; - if ((s32)uVar5 < (s32)uVar6) uVar5 = uVar5 + 1; - c = (s32)uVar6 < (s32)uVar5; - if (c) uVar5 = uVar5 - 1; - } - if (uVar7 != uVar8) { - register s32 c __asm__("$2"); - uVar13 = 1; - if ((s32)uVar7 < (s32)uVar8) uVar7 = uVar7 + 0x20; - c = (s32)uVar8 < (s32)uVar7; - if (c) uVar7 = uVar7 - 0x20; - } - if (uVar1 != uVar3) { - register s32 c __asm__("$2"); - uVar13 = 1; - if ((s32)uVar1 < (s32)uVar3) uVar1 = uVar1 + 0x400; - c = (s32)uVar3 < (s32)uVar1; - if (c) uVar1 = uVar1 - 0x400; - } - result = uVar5 | uVar7 | uVar1 | (*(u32 *)(buf + 0xc) & 0x8000); - if (result == 0 && *(u32 *)(buf + 0xc) != 0) { - result = 0x8000; - } - *puVar9 = (u16)result; - puVar9 = puVar9 + 1; - iVar11 = iVar11 + 1; - puVar10 = puVar10 + 1; - } while (iVar11 < iVar12); - } - if (uVar13 != 0) { - ((void (*)(void *))func_800599B8)(buf); - } - uVar16 = uVar16 | uVar13; - } - psVar15 = psVar15 + 8; - sVar4 = *psVar15; - psVar14 = psVar14 + 8; - } while (sVar4 != 0xff); - } - D_801E5B1C = uVar16; - } - return; -} - - - -// @class: struct -// @stuck: none — MATCH (match_one 97/97). Two levers: (1) offset-first pointer arith -// `(int*)(param_1*12 + (int)D_801E5B08)` makes the addu `offset+base` (dest=v0) so x/y/z -// load into a0/a1/a2 and each global loads LATE into v1 (base-first gave addu dest=v1 → -// global hoisted into a0, shifting x/y/z to a1/a2/a3). (2) the clamp must be NESTED -// if/else (slti dup'd inside each <,>= branch), NOT a merged `if(diff<5)` after the -// branch — gcc cross-jumps the identical `G=x` and `G=t` store tails into the two shared -// sites; the merged form emits one slti + unconditional store and diverges. - -extern void *D_801E5B08; -extern s16 *D_801E5B0C; -extern s32 D_801E5B1C; -extern s32 D_801E5B3C; -extern s32 D_801E5B40; -extern s32 D_801E5B44; - -extern void func_8013DD68(void); - -void func_8013DBE4(int param_1) -{ - int *p; - int x, y, z; - int flag; - - if (D_801E5B0C != 0) { - D_801E5B1C = 0; - p = (int *)(param_1 * 12 + (int)D_801E5B08); - x = p[0]; - y = p[1]; - z = p[2]; - flag = 0; - if (D_801E5B3C != x) { - flag = 1; - if (D_801E5B3C < x) { - if (x - D_801E5B3C < 5) { - D_801E5B3C = x; - } else { - D_801E5B3C = D_801E5B3C + 4; - } - } else { - if (D_801E5B3C - x < 5) { - D_801E5B3C = x; - } else { - D_801E5B3C = D_801E5B3C - 4; - } - } - } - if (D_801E5B40 != y) { - flag = 1; - if (D_801E5B40 < y) { - if (y - D_801E5B40 < 5) { - D_801E5B40 = y; - } else { - D_801E5B40 = D_801E5B40 + 4; - } - } else { - if (D_801E5B40 - y < 5) { - D_801E5B40 = y; - } else { - D_801E5B40 = D_801E5B40 - 4; - } - } - } - if (D_801E5B44 != z) { - flag = 1; - if (D_801E5B44 < z) { - if (z - D_801E5B44 < 5) { - D_801E5B44 = z; - } else { - D_801E5B44 = D_801E5B44 + 4; - } - } else { - if (D_801E5B44 - z < 5) { - D_801E5B44 = z; - } else { - D_801E5B44 = D_801E5B44 - 4; - } - } - } - if (flag != 0) { - func_8013DD68(); - } - D_801E5B1C = flag; - } -} - - -// @class: regalloc-order -// @stuck: none — MATCH (187 ins). Levers: struct-assign DRAWENV copy (align via type); pbase local for $s2-relative D_800B9A02; two-biv SPRT loop (q anchored one-above -> gcc re-anchors, no bare-deref); P_TAG_8013DD68 addPrim; single p var coalesces puVar7->puVar15; pins uVar2=$v1,iVar14=$a3,c5=$t3; biv-increment order sets q-init-before-puVar10-init; Buf_8013DD68 0x68 -> frame 0xA0. - - /* 0x5C copy unit, align 4 */ - /* -> frame 0xA0 (gcc adds 0x10 for the struct-copy) */ - - -#define IDVAL (*(u16 *)(pbase + 0xA3D2)) -#define OTE ((P_TAG_8013DD68 *)(D_800BA0E4 + IDVAL * 0x10)) - -void func_8013DD68() { - extern void SetDrawEnv(void *p, void *env); - extern u16 D_800AF7B8; - extern u8 D_800BA0E4[]; - extern u8 D_8018DBB8[]; - - u32 *p; - u16 uVar1; - u16 *puVar16; - u16 *q; - u16 *puVar10; - register u16 uVar2 __asm__("$3"); - int uVar5; - register int iVar14 __asm__("$7"); - Buf_8013DD68 buf; - u8 *pbase; - u8 *base; - - pbase = D_800AF630; - puVar16 = (*(u16 * *)&D_801E5B0C); - p = (*(u32 * *)&D_800A5E60); - uVar1 = *puVar16; - puVar16 = puVar16 + 1; - base = pbase + (u32)D_800AF7B8 * 0x5C; - buf.env = *(DrawEnv_8013DD68 *)(base + 0x38); - *((u8 *)&buf + 0x18) = 0; - SetDrawEnv(p, &buf); - ((P_TAG_8013DD68 *)p)->addr = OTE->addr; - OTE->addr = (u32)p; - p = p + 0x10; - iVar14 = 0; - if (uVar1 != 0) { - register int c5 __asm__("$11") = 5; - puVar10 = (u16 *)((int)p + 0x18); - q = puVar16 + 8; - do { - *(u8 *)((int)puVar10 + -0x15) = c5; - uVar2 = q[-6]; - *(u8 *)((int)puVar10 + -0xd) = 100; - *(u8 *)((int)puVar10 + -0x10) = (u8)(*(int*)&D_801E5B3C); - *(u8 *)((int)puVar10 + -0xf) = (u8)(*(int*)&D_801E5B40); - uVar5 = (*(int*)&D_801E5B44); - *(u32 *)((int)puVar10 + -0x14) = uVar2 & 0x9ff | 0xe1000400; - *(u8 *)((int)puVar10 + -0xe) = (u8)uVar5; - *(u16 *)((int)puVar10 + -0xc) = q[-4]; - iVar14 = iVar14 + 1; - *(u16 *)((int)puVar10 + -0xa) = q[-3]; - *(u8 *)((int)puVar10 + -8) = (u8)*puVar16; - uVar2 = q[-7]; - *(u16 *)((int)puVar10 + -6) = 0x7800; - *(u8 *)((int)puVar10 + -7) = (u8)uVar2; - puVar16 = puVar16 + 8; - *(u16 *)((int)puVar10 + -4) = q[-2]; - *(u16 *)((int)puVar10 + -2) = q[-1]; - ((P_TAG_8013DD68 *)p)->addr = OTE->addr; - puVar10 = puVar10 + 0xc; - OTE->addr = (u32)p; - p = p + 6; - q = q + 8; - } while (iVar14 < (int)(u32)uVar1); - } - SetDrawEnv(p, D_8018DBB8); - ((P_TAG_8013DD68 *)p)->addr = OTE->addr; - OTE->addr = (u32)p; - p = p + 0x10; - (*(u32 * *)&D_800A5E60) = p; - return; -} - - - - -extern s32 D_801E5B24; - -s32 func_8013E054(void) { - return D_801E5B24; -} - - -DEFINE_func_8013E064() /* dedup: shared engine-core @0x8013E064 (src/shared) */ - -DEFINE_func_8013E0FC() /* dedup: shared engine-core @0x8013E0FC (src/shared) */ - -DEFINE_func_8013E194() /* dedup: shared engine-core @0x8013E194 (src/shared) */ - -DEFINE_func_8013E22C() /* dedup: shared engine-core @0x8013E22C (src/shared) */ - -DEFINE_func_8013E298() /* dedup: shared engine-core @0x8013E298 (src/shared) */ - -DEFINE_func_8013E2C4() /* dedup: shared engine-core @0x8013E2C4 (src/shared) */ - -DEFINE_func_8013E370() /* dedup: shared engine-core @0x8013E370 (src/shared) */ - -DEFINE_func_8013E410() /* dedup: shared engine-core @0x8013E410 (src/shared) */ - -DEFINE_func_8013E448() /* dedup: shared engine-core @0x8013E448 (src/shared) */ - -DEFINE_func_8013E4B4() /* dedup: shared engine-core @0x8013E4B4 (src/shared) */ - -DEFINE_func_8013E558() /* dedup: shared engine-core @0x8013E558 (src/shared) */ - -DEFINE_func_8013E588() /* dedup: shared engine-core @0x8013E588 (src/shared) */ - - -extern void func_80029444(void); -extern void func_801754A8(void); -extern s32 func_80014ED4(s32); -extern s32 func_80015018(s32); -extern void func_800190AC(void); -extern void func_80141C04(void); - - -void func_8013E5E8(void) -{ - - extern u16 D_8011511E; - extern u16 D_8011511C; - extern unsigned short D_80115112; - extern u16 D_80115116; - extern void (*D_8018E5C8[])(void); - register void (*fp)(void) __asm__("$2"); /* pin fn-ptr to $v0 -> store retires early */ - func_80029444(); - func_801754A8(); - D_8011511E = func_80014ED4(0); - D_8011511C = func_80015018(0); - fp = D_8018E5C8[D_80115112]; - fp(); - func_800190AC(); - func_80141C04(); - D_80115116 += 1; -} - - -DEFINE_func_8013E67C() /* dedup: shared engine-core @0x8013E67C (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (90 ins, relocation-masked) - -extern u8 D_80078EC0; -extern u16 D_8011511A; -extern u16 D_80115124; -extern u8 D_80115148[]; -extern u8 D_80115140[]; -extern s32 D_8018E5B4; -extern u16 D_80115110; -extern s32 D_80115188; -extern s16 currentLocationId; -extern s16 D_8018E58C; -extern s16 D_8018E58E; -extern unsigned short D_80115112; - -extern void func_8013E83C(void); -extern s32 func_80029504(void); - -void func_8013E6AC(void) { - short i; - - func_8013E83C(); - D_8011511A = 0; - D_80115124 = D_80078EC0; - for (i = 0; i < 8; i++) { - *(s16 *)((char *)&D_80115148 + (i << 1)) = 0; - D_80115140[i] = 0; - } - if (!((u32)func_80029504() < 5 || currentLocationId == 0x302A || currentLocationId == 0x3073)) { - register s32 *ep __asm__("$8"); - register s32 *fp __asm__("$9"); - fp = (s32 *)&D_80115110; - ep = (s32 *)&D_8018E5B4; - for (i = 0; i < 5; i++) { - register s32 *fa __asm__("$6"); - s32 v; - fa = (s32 *)(i * 4 + (s32)fp); - v = ep[i] * 3 >> 2; - fa[0x16] = v; - *(s32 *)((char *)&D_80115188 + (i << 2)) = v; - } - D_8018E58C = 2; - D_8018E58E = 1; - { u16 *q = &D_80115112; *q += 1; } - } else { - func_8013E83C(); - D_8011511A = 7; - D_8018E58E = 0; - D_8018E58C = 0; - D_80115112 = 6; - } -} - - -DEFINE_func_8013E814() /* dedup: shared engine-core @0x8013E814 (src/shared) */ - -// @class: plumbing -// @stuck: none — MATCH (direct u16 global reads fold to lui/lhu; scheduler hoists the D_8011511A read above the prologue, reproduced by -O2) - -void func_8013E83C() { - extern void func_80141C0C(int); - extern unsigned short D_80115118; - extern unsigned short D_80115128; - extern unsigned short D_8011512E; - extern unsigned int D_80115130; - extern unsigned short D_80115158; - extern unsigned short D_8011515A; - extern unsigned short D_8011515C; - extern unsigned short D_8011515E; - extern unsigned short D_80115162; - extern unsigned short D_80115166; - extern void * D_801E5B58; - extern void * D_801E5B5C; - extern unsigned char D_8018E22C; - extern unsigned char D_8018E244; - extern unsigned char D_8018E2B8; - extern unsigned char D_8018E2C0; - - - D_80115118 = 0; - D_80115130 = 0; - if (D_8011511A >= 4) { - D_8011511A = D_8011511A - 3; - } - D_80115158 = 0x106; - - if ((((int(*)(int))func_80029178)(0x1c) & 0xFF) == 0) { - D_801E5B58 = &D_8018E22C; - D_801E5B5C = &D_8018E2B8; - } else { - D_801E5B58 = &D_8018E244; - D_801E5B5C = &D_8018E2C0; - } - - D_8011515A = 0x104; - D_8011515C = 0x104; - D_8011515E = 0x129; - D_80115162 = 0x103; - D_80115166 = 0x105; - D_80115128 = 0; - D_8011512E = 0; - - if (D_80115110 == 3) { - ((void(*)(int, int))func_8002D4C8)(0x46e, 0); - } else { - func_80141C0C(0); - } -} - - - -// @class: schedule -// @stuck: none — MATCH (63 ins). The idx-32+ residual was a THIRD held base pointer for the -// D_80115188 store: the draft's `((Cell*)&D_80115188)[i].v = v` allocates a pointer, so gcc kept -// three bases (D_80115110/D_8018E5B4/D_80115188) and buried the branch-delay `sll` (i<<16 carry) -// under the extra store. Switching to the sibling func_8013E6AC's relocation-masked form -// `*(s32*)((char*)&D_80115188 + (i<<2))` recomputes that address via per-iteration %hi/%lo, leaving -// only TWO held pointers (fp=&D_80115110 -> $t0, ep=&D_8018E5B4 -> $a3) and freeing the delay slot -// to carry `i<<16` in $a0 exactly as the target does. Head (idx 0-31) already matched; i naturally -// lands in $a2 from the goto-loop delay slots, driving the fp/ep/fa=$8/$7/$5 alloc with no pins. - -void func_8013E958() -{ - extern void func_8014AA28(void); - extern s32 func_800D0488(s32); - extern void func_80141C0C(s32); - - - s16 *p = &(*(s16*)&D_80115124); - s16 i; - s32 v; - s16 m; - - D_800B9A15 = 0; - func_80139954(); - if (D_80078EC0 != *p) { - func_8014AA28(); - if ((D_80078EC0 & 0x7F) != 0) { - m = D_80078EC0 & 0x7F; - *p = m; - if (m == 0 || func_800D0488(m) == 0) - goto loop; - } - } - *p = 0; -loop: - for (i = 0; i < 5; i++) { - s32 *q = &((s32 *)&D_80115110)[i]; - v = ((s32 *)&D_8018E5B4)[i] >> 6; - q[0x16] = v; - *(s32 *)((char *)&D_80115188 + (i << 2)) = v; - } - func_80141C0C(7); - (*(u16*)&D_80115112) = 4; -} - - - -DEFINE_func_8013EA54() /* dedup: shared engine-core @0x8013EA54 (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (sVar2 pinned to $v0 forces in-place sll/sra sign-ext scratch) - - -extern s32 func_80141C50(void); -extern s32 func_8013F350(void); /* §30#2 widened: def returns live $v0; callers discard */ -extern void func_8013FAF8(s16 a0, s16 a1); -extern s16 func_8014168C(s16 a0); -extern s32 func_8014032C(s32 a0, s32 a1); -extern void func_80139954(void); -extern void func_801376E8(int a0, int a1); -extern void func_80137B80(void); -extern unsigned char *func_80141CA4(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_8013E958(void); - -extern short D_800B9A02; -extern u8 D_801151C8[]; -extern s32 D_801151D0; -extern u16 D_8011511A; -extern u16 D_8011511E; -extern short D_80115128; -extern unsigned short D_80115112; -extern s16 D_8011512A; -extern s32 D_80115130; -extern unsigned char D_8018E590; - -void func_8013EB7C(void) { - s32 sp10[2]; - short sVar1; - register short sVar2 __asm__("$2"); - s32 a0v; - s32 iVar4; - - if ((s16)func_80141C50() == 0) { - D_801151D0 = *(s32 *)&D_801151C8[(u16)D_800B9A02 * 4]; - sVar1 = ((short (*)(void))func_8013F350)(); - if (D_8011511A >= 4) { - func_8013FAF8((s16)D_8011511A, (s16)(D_8011511A + 1)); - } - func_8013FAF8(0, 5); - if (D_8011511A == 5) { - sVar2 = ((short (*)(s32))func_8014168C)(2); - a0v = 2; - } else { - sVar2 = ((short (*)(s32))func_8014168C)((s16)D_8011511A); - a0v = (s16)D_8011511A; - } - iVar4 = func_8014032C(a0v, sVar2); - if (iVar4 != 0) { - s32 *p130 = &D_80115130; - if (iVar4 != *p130) { - *p130 = iVar4; - func_80139954(); - func_801376E8(iVar4, (s32)&(*(u8 *)&D_8018E590)); - } - } - func_80137B80(); - if ((D_8011511E & 0x10) != 0 && D_8011511A < 5 && sVar1 == 0) { - (*(s16 *)&D_80115128) = 0; - func_8002D4C8(0x466, 0); - if (D_8011511A != 4) { - func_801376E8((s32)((s32 (*)(void))func_80141CA4)(), (s32)&(*(u8 *)&D_8018E590)); - } - (*(unsigned short *)&D_80115112) -= 1; - } else { - if ((D_8011511E & 0x800) != 0 || D_8011512A != 0) { - func_8013E958(); - } - } - } - (void)sp10; -} - - -DEFINE_func_8013ED6C() /* dedup: shared engine-core @0x8013ED6C (src/shared) */ - -extern short D_800B9A02; -extern unsigned short D_80115112; -extern u8 D_801151C8[]; -extern s32 D_801151D0; -extern s16 D_8018E58C; -extern s16 D_8018E58E; -extern unsigned char D_8018E590; -extern void func_801376E8(int a0, int a1); -extern void func_8013FAF8(s16 a0, s16 a1); -extern unsigned char *func_80141CA4(void); - -// @class: struct -// @stuck: none — MATCH (94 ins, relocation-masked). Keys: (1) §18 array-of-STRUCT fold -// `typedef struct{s32 f0;} E4; extern E4 arr[]; arr[i].f0` defeats gcc's base-CSE/loop-hoist so each -// global-array access stays a per-access `lui %hi; addu idx; lw/sw %lo(sym)($at)` (a plain `s32 arr[]; -// arr[i]` HOISTS the base into a reg → wrong). (2) §21 global-RMW: the conditional `D_8018E58E` bump and -// the `D_80115112` increment keep the address in ONE reg → access via a pointer var, not the bare global. -// (3) the 2nd-loop base `q = p-8` (=&D_80115118 kept in $s0 across the calls) is declared INSIDE the loop -// so loop.c hoists it to the preheader slot AFTER `i=0` (an explicit pre-loop `q=` emits it BEFORE i=0, -// +2 off). (4) dead `s32 sp10[2];(void)sp10;` reserves the extra 8 frame bytes (0x28, not 0x20). -// Conflict-safe externs: asm-alias `aD80115188` (file-scope decl is scalar `s32 D_80115188`); `(u16)` -// cast on the `s16 D_8018E58C` read for the `lhu`; `D_80115168` is undeclared elsewhere in the TU. - - - - -s32 func_8013EE10() { - extern E4 aD80115188[] __asm__("D_80115188"); - extern E4 D_80115168[]; - extern unsigned short D_80115118; - - short i; - u16 *p; - u16 old; - s16 *r; - u16 *c; - s32 sp10[2]; - - D_801151D0 = *(s32 *)&D_801151C8[(u16)D_800B9A02 * 4]; - func_8013FAF8(0, 5); - for (i = 0; i < 5; i++) { - s32 t = D_80115168[i].f0 * 3 >> 2; - aD80115188[i].f0 = t; - D_80115168[i].f0 = D_80115168[i].f0 - t; - } - r = &D_8018E58E; - if (*r < 3) { - *r = *r + 1; - } - D_8018E58C = (u16)D_8018E58C + 2; - p = &D_80115118; - old = *p; - *p = old + 1; - if (old >= 5) { - ((void (*)(int, unsigned char *))func_801376E8)((int)func_80141CA4(), &D_8018E590); - for (i = 0; i < 5; i++) { - s32 *q = (s32 *)((char *)p - 8); - *(s32 *)((char *)&q[i] + 0x78) = 0; - D_80115168[i].f0 = 0; - } - c = &D_80115112; - *c += 1; - } - (void)sp10; -} - - - - - - - - - - - -extern s16 D_800B9A02; -extern s32 D_801151D0; -extern E4 aD80115188[] __asm__("D_80115188"); -extern u16 D_80115124; -extern u16 D_80115112; -extern s16 D_8018E58E; -extern s16 D_8018E58C; - -extern void func_8013FAF8(s16 a0, s16 a1); -extern s32 func_800D0488(s16 a0); -extern void func_800D2624(void); - -void func_8013EF88(void) -{ - - extern u16 D_80115118; - extern E4 D_80115168[]; - extern u16 D_80115114; - u16 *p = &D_80115118; - u16 old = *p; - short i; - - if (old != 0) { - u16 nw = old - 1; - *p = nw; - if (nw != 0) { - D_801151D0 = *(s32 *)((char *)&D_80115118 + 0xB0 + (u16)D_800B9A02 * 4); - func_8013FAF8(0, 5); - for (i = 0; i < 5; i++) { - s32 t = aD80115188[i].f0 * 3; - aD80115188[i].f0 = t; - D_80115168[i].f0 = D_80115168[i].f0 + t; - } - if (D_80115118 < 3) { - u16 *s = &(*(u16 *)&D_8018E58E); - *s -= 1; - } - { - u16 *w = &(*(u16 *)&D_8018E58C); - *w -= 2; - if ((s16)*w < 0) { - *w = 0; - } - } - } - } - - { - s16 *pv = &(*(s16 *)&D_80115124); - if (*pv != 0) { - if (func_800D0488(*pv) == 0) return; - *pv = 0; - } - } - - if (D_80115118 == 0) { - if (D_80115114 == ((u16)D_800B9A02 ^ 1)) { - func_800D2624(); - } else { - D_80115112 += 1; - } - } -} - - - -// @class: struct -// @stuck: none — MATCH expected (u16* base materialization for read+write, %lo-folded single-access globals) - - -extern unsigned short D_80115118; -extern unsigned short D_80115112; -extern u16 D_80115110; -extern unsigned char D_8018E590; - -extern unsigned char *func_80141CA4(void); -extern void func_801376E8(int a0, int a1); - -void func_8013F138(void) { - u16 *p = &D_80115118; - *p += 0x10; - if ((u16)*p >= 0x40) { - if (D_80115110 == 0) { - ((void (*)(int, unsigned char *))func_801376E8)((int)func_80141CA4(), &D_8018E590); - } - D_80115112 += 1; - } -} - - -DEFINE_func_8013F1BC() /* dedup: shared engine-core @0x8013F1BC (src/shared) */ - -DEFINE_func_8013F244() /* dedup: shared engine-core @0x8013F244 (src/shared) */ - diff --git a/src/ov_SC04_019/ov_SC04_019_jr_8013F350.c b/src/ov_SC04_019/ov_SC04_019_jr_8013F350.c deleted file mode 100644 index 3a37e5af8..000000000 --- a/src/ov_SC04_019/ov_SC04_019_jr_8013F350.c +++ /dev/null @@ -1,1353 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ - /* 8-byte element, cmd @ +4 */ - /* list ptr @ +0x90 */ - /* size 8, alignment 1 -> unaligned copy */ - /* 0x5C copy unit, align 4 */ - /* -> frame 0xA0 (gcc adds 0x10 for the struct-copy) */ -extern void func_80128288(void); -extern void func_80128158(void); -extern void func_801285E4(void); -extern void func_80128178(void); -extern void func_80128678(void); -extern void func_80128198(void); -extern void func_80128714(void); -extern void func_801281B8(void); -extern void func_8013E67C(void); -extern void func_801281D8(void); -extern void func_8013E558(void); -extern void func_801281F8(void); -extern s32 D_801E4434; -extern s32 func_80128218(void); -extern void func_80128A28(void); -extern void func_80128228(void); -extern void func_80128AF4(void); -extern void func_80128248(void); -extern void func_801282EC(void); -extern void func_80128268(void); -extern u16 D_800B99F6; -extern void (*D_8018D4AC[])(void); -extern void func_80011B7C(int); -extern void func_801282CC(void); -extern void func_8001C0C8(void); -extern void func_80015310(void); -extern void func_80129258(void); -extern void func_801378F0(void); -extern void func_80010E14(void); -extern s16 currentLocationId; -extern s32 func_80029504(void); -extern s32 func_800CF854(s32); -extern s32 func_80128998(void); -extern s32 func_801289F0(void); -extern s32 func_801288E8(s32); -extern s32 func_80128940(s32); -extern s32 func_80029178(s32); -extern s32 func_801288B0(void); -extern void func_80011C10(void); -extern void func_8012832C(void); -extern void func_80129220(void); -extern void func_80011E24(void); -extern void func_80128C14(void); -extern void func_8002AEF8(void); -extern void func_800CFBBC(void); -extern void SsUtReverbOff(void); -extern void func_8013C98C(void); -extern void func_80129C40(s32 a0); -extern void func_800D0630(void); -extern void func_80145CEC(void); -extern void func_80144B9C(void); -extern u8 D_800B9A17; -extern u8 D_800B9A10; -extern void func_80128420(void); -extern s32 func_800D0588(void); -extern void func_801284B8(void); -extern void func_80175308(void); -extern void func_8016E8F0(void); -extern void func_80175494(void); -extern u8 D_800B9A64; -extern void func_801284F0(void); -extern void func_80146074(void); -extern void func_8012853C(void); -extern void func_80178608(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern s32 func_80011A3C(void); -extern short currentLocationId; -extern short D_800B99F2; -extern void func_80128564(void); -extern u8 D_800B9A11; -extern void func_801285D4(void); -extern s32 func_800D18DC(void); -extern void func_8014607C(void); -extern void func_801287B8(void); -extern s32 D_801E5A14; -extern void func_80029444(void); -extern void func_800D1754(void); -extern s32 D_80126B58; -extern s32 D_801E7AB8; -extern u16 D_800B99DA; -extern void func_80129CF8(void); -extern void func_8017849C(void); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_801505FC(s32 a0); -extern void func_801508B4(void *a0); -extern void func_80165E90(void); -extern void func_801627E8(void); -extern void func_80162B1C(void); -extern void func_80165CA0(void); -extern void func_80129010(void); -extern void func_8013CA14(void); -extern void func_800190AC(void); -extern void func_8012956C(void); -extern void func_8016E95C(void); -extern void func_801754A8(void); -extern void func_8013BC7C(void); -extern void func_8013BCDC(void); -extern void func_801379FC(void); -extern void func_8001212C(void); -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); -extern u8 D_800AEFD0; -extern int D_800C7C60; -extern int *D_800C7C64; -extern int D_800A2E20; -extern int D_800AF558; -extern int D_801E4434; -extern int func_801288E8(int arg0); -extern u8 D_800AF560; -extern s32 func_80128940(s32 _arg0); -extern int D_800AECB0; -extern u8 D_800AECB8; -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4); -extern s16 D_800B9A00; -extern M2C_UNK (*D_8018D1E0)(); -extern s16 (*D_8018D1E4)(); -extern M2C_UNK (*D_8018D1EC)(); -extern s32 (*D_8018D1F0)(); -extern s32 D_801E5A10; -extern void func_80010AE0(s32 a0); -extern void func_80018450(s32 a0, s32 a1); -extern void func_800183E0(s32 a0); -extern void func_80128D60(s32 a0, s32 *a1, s32 *a2); -extern s32 func_80128DB4(s32 a0, s32 *a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern M2C_UNK D_801E4438; -extern void func_80128FAC(u16 *arg0); -extern s16 D_8011DB2C; -extern s16 D_8011DB30; -extern s32 D_80126AEC; -extern u8 *func_8012913C(s32 a0); -extern u8 * func_801290DC(s32 a0, u8 *a1); -extern void func_8001D074(s32 a, s32 b); -extern u8 *func_801291C0(void); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 * func_8012913C(s32 arg0); -extern void func_80016714(void *a0, s32 a1); -extern u8 * func_801291C0(void); -extern void func_80129248(s16 a0); -extern void func_801292C8(u8 *a0); -extern void func_8012927C(void); -extern void func_8012931C(struct vec *a0); -extern void func_80129350(s32 a0, s32 a1); -extern void func_80129374(s32 a0, s32 a1); -extern s16 D_800B9AAC[]; -extern s16 D_800B9AAE[]; -extern s16 D_800B9AB0[]; -extern s16 D_800B9AB2[]; -extern s16 D_800B9AB4[]; -extern s16 D_800B9AB6[]; -extern s16 D_800B9AB8[]; -extern s16 D_800B9ABA[]; -extern void func_80129398(void); -extern s16 D_80114EE0; -extern void func_80129428(void); -extern void func_8012943C(void); -extern s32 D_8005128C; -extern u8 D_800B9A78; -extern void func_801298F4(void *arg0); -extern void func_801299C8(s32 a, s32 b, s32 c); -extern void func_8012944C(void); -extern unsigned short D_800B99F0; -extern void func_8012A328(void); -extern void func_80053308(s32); -extern s32 func_80012F74(s32, s32, s32, s32); /* canonical s32 (engine_core); (s16)-cast the return for the sll/sra */ -extern void GsSetRefView2L(void *); -extern s8 D_801150D6; /* canonical (engine_core macro): s8 — access via *(u8*)& for lbu */ -extern u8 D_80127504; -extern s32 D_80126E60[]; -extern s32 D_80126F04[]; -extern u8 D_80126948[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_80126FA8[]; -extern u8 D_800AF630[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_800AE688[]; -extern s32 D_801151D4; /* canonical (10 siblings): scalar s32 — store (s32)ptr */ -extern void func_8012A018(s32 a, s32 b); -extern void func_80129FF4(void); -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_80126940; -extern s16 D_80126942; -extern s16 D_80126944; -extern void func_8012A048(void *a0, s32 a1, u8 a2); -extern void *memcpy(void *, const void *, unsigned int); -extern void func_8012A094(s32 a0); -extern void func_8012A100(s8 a0); -extern void func_8012A0E0(void); -extern s8 D_801150D6; -extern s32 D_80120204; -extern s32 D_80120200; -extern s32 D_8012020C; -extern s32 D_80120208; -extern s16 D_80120218; -extern s16 D_80120210; -extern s16 D_8012021A; -extern s16 D_80120212; -extern s16 D_8012021C; -extern s16 D_80120214; -extern s16 D_80120226; -extern s16 D_80120220; -extern s16 D_80120228; -extern s16 D_80120222; -extern s16 D_8012022A; -extern s16 D_80120224; -extern s32 D_80120294; -extern s16 D_80120298; -extern s16 D_8012029A; -extern void func_8012A110(void); -extern s8 D_801152C0; -extern void func_8012A2F4(void); -extern s16 D_80127080; -extern s16 D_801152C2; -extern void func_8012A304(s32 a0, s32 a1); -extern s32 D_801151D4; -extern void func_8012A4BC(void); -extern void func_8012A598(void *a0); -extern void func_8012A568(void (*a0)(void)); -extern void func_8012A62C(s32); -extern void func_8012A5F8(void (*a0)(void), s32 a1); -extern void func_8012A62C(s32 a0); -extern void func_8012A7D4(void *a0, void *a1); -extern s32 func_8012A6D0(void *a0, void *a1); -extern s16 func_8012A68C(void); -extern s16 func_8012A79C(s16 *a0, s16 *a1); -extern s16 func_8012A758(void); -extern s32 ratan2(s32 a0, s32 a1); -extern void func_8012A7D4(void *arg0, void *arg1); -extern void func_8012AAAC(); -extern void func_8012A828(s32 a0, void * a1); -extern int func_8012ACE0(void *a0); -extern void func_8012A860(void *a0, int a1); -extern void func_8012A8B0(u8 *a0, s32 a1); -extern void func_8012A8E8(void); -extern u8 D_801202A0[]; -extern u16 D_801270C0; -extern void func_8012A988(u8 *a0); -extern void func_8012A908(void); -extern s32 func_8012ACE0(void *a0); -extern M2C_UNK D_8018D540; -extern void func_8012ACA0(void *arg0); -extern s32 func_8012ACE0(void *o); -extern void func_8012AD44(s32 *a0, s16 a1); -extern s32 func_8012AD50(void * arg0); -extern void func_8012AD64(s32 *a0, s16 a1); -extern void func_8012AD6C(void *a0); -extern void func_8012AD80(s32 a0); -extern void func_8012ADE4(u8 *a0); -extern s32 *D_80126B78; -extern s32 *D_80126B90; -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80013478(s32 a0, s32 a1); -extern s32 func_8012AE00(s32 a0); -extern s32 func_8012AF0C(s32 a0, s32 a1); -extern s32 func_80134510(s32 arg); -extern s32 func_8012B030(u8 *a0); -extern int func_80047948(int a0); -extern int func_8004787C(int a0); -extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_8012B14C(s32 a0, s32 a1); -extern void func_8012B178(s32 a0, s32 a1); -extern void func_8012B1B4(s32 a0, s32 a1); -extern void func_8012B200(u8 *a0); -extern void func_8012B21C(void *a0); -extern void func_8012B23C(s32 a0); -extern void func_8012B260(u8 *a0); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern void RotMatrixYXZ(void *m, void *p); -extern void func_8012B370(int a0); -extern void func_8004978C(s16 *a0, void *a1); -extern void func_8012B414(int a0); -extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); -extern s32 func_8012B6D4(s16 *a0, s16 *a1); -extern s32 func_8012B70C(s16 *a0, s16 *a1); -extern s32 ratan2(s32 x, s32 y); -extern s32 func_8012B744(void *a0, void *a1); -extern s16 D_80126CB8; -extern s16 D_80126CB4; -extern s32 func_8012B864(s32 a0); -extern s32 func_8012B8A4(s16 *a0); -extern s32 func_8012B8E4(s32 arg0, s32 arg1); -extern s32 func_8012BA10(s32 arg0, s32 arg1); -extern s32 func_8012BB3C(s32 arg0, s32 arg1, u32 arg2, s32 arg3); -extern void Square0(s32 *a0, s32 *a1); -extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1); -extern s16 D_80126CBA; -extern s32 func_8012BCCC(s32 a0); -extern void func_80013350(s32 a0, void *a1); -extern u8 D_80126B5C; -extern void func_8012BD14(s32 a0); -extern s32 func_8012BDBC(s32 a0, s32 a1); -extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2); -extern void func_8012BE98(s32 a0, u16 *a1); -extern void func_8012BE54(s32 a0); -extern s32 func_800132BC(s32 a0, s32 a1); -extern void func_8012BE98(s32 arg0, u16 * arg1); -extern s32 func_8012BEE8(s32 a0); -extern s32 func_8012BF10(s32 a0, s32 a1); -extern void func_8012BF4C(s32 *a0, s32 a1); -extern void func_8012BF54(void *a0); -extern void func_8012BF68(void *a0); -extern s16 D_80126CB0; -extern s32 func_8012BF7C(s16 *a0); -extern s16 D_80126CAC; -extern short D_80126CAE; -extern int func_8012BFA8(short *a0); -extern s32 D_801274D4; -extern s32 D_801274E0; -extern s32 func_8012C044(s32 a0); -extern void func_8012C194(void); -extern void func_8001CFDC(s32 a, s32 b); -extern void func_8012C1B8(void); -extern u8 D_800B3DF0[]; -extern s32 func_8012C1DC(s32 a0); -extern void func_8012C218(void *a0); -extern u8 D_80126720[]; -extern u16 * func_8012C284(u16 *a0); -extern u8 D_80120194[]; -extern s32 func_8012C2D0(void); -extern s32 func_8012C31C(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32 a0, s32 a1); -extern u8 D_80078EAE; -extern s32 func_8012C354(s32 a0, s32 a1); -extern void func_8001C810(s32 a0, s32 a1); -extern s32 func_8012C438(s32 a0, s32 a1); -extern s32 func_8012C890(s32 a0, s32 a1, s32 a2); -extern s32 func_8012C51C(void *a0, s32 a1); -extern s32 func_8012C588(s32 a0, s32 a1); -extern void func_8012C724(s32 a0, s32 a1); -extern s32 func_8012C820(u8 *a0); -extern s32 D_80190A24; -extern s16 D_801270C4; -extern u16 D_801274E4[]; -extern s32 D_8011DB08; -extern s32 func_8012CB64(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); -extern s32 func_8012CC88(s32 a, s32 b, s32 c); -extern u8 D_800D3918[]; -extern void func_8012CBA4(s32 a0); -extern void func_8012CBCC(s32 a0); -extern void func_8012CBF4(s32 a0); -extern void func_8012CC1C(s32 arg0, s32 arg1); -extern void func_8012CC40(s32 arg0, s32 arg1); -extern s32 func_8012CC88(s32 a0, s32 a1, s32 a2); -extern void func_8012CC64(s32 a0, s32 a1); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern s32 func_8012CE2C(s32 a0); -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); -extern void func_8012CFA8(s32 arg0); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_8012D3B4(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012D098(u16 *param_1, u32 param_2); -extern void func_8012D098(); -extern void func_8012D38C(int a0); -extern void func_8012D3AC(void); -extern s32 AddPrim(s32, void *); -extern s32 RotTransPers(s32, s32, s32 *, s32 *); -extern void SetLineF2(void *); -extern void *func_80010A08(s32); -extern void func_8004914C(void *); -extern void func_800491AC(void *); -extern s32 D_800A651C; -extern u8 D_800AF648; -extern s16 D_800B9A02; -extern void func_8012D4B4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_8012D5DC(void); -extern s16 D_80126B98; -extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2); -extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern int func_8012D664(); -extern void func_8012D624(s32 a0); -extern int func_8012D664(int arg0, int arg1, int arg2); -extern s32 func_8012D714(s32 param_1, u32 param_2); -extern void func_8012F568(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void func_8014C978(void); -extern M2C_UNK D_8018D558; -extern M2C_UNK D_8018D560; -extern s32 func_8012DB84(void); -extern s32 func_8012DE2C(s32 a0); -extern s32 func_8012DDA4(void); -extern s32 func_8012DBD0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8012DDA4(); -extern s32 func_8012DF34(s32 a0, s32 a1, s32 a2); -extern s16 D_80126B9A; -extern u8 D_801152A8[]; -extern void func_8012DFBC(void); -extern void func_8012DFCC(void); -extern void func_8012E014(s32 arg0); -extern void func_8012E138(void); -extern void func_8012DFD4(u8 *a0); -extern s32 func_8012E27C(void); -extern void func_8012E284(void); -extern s32 GetTPage(s32, s32, s32, s32); -extern s32 func_8005A600(s32, s32, s32, s32, s32); -extern void func_8012E28C(s32 arg0, s32 arg1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void func_8012E32C(void); -extern s32 func_8012E470(s32 a0); -extern void func_8012E4C8(s32 a0); -extern s32 func_8012E504(s32 a0, s32 a1); -extern s32 func_8012E544(s32 a0); -extern s32 func_8012E57C(s32 a0, s32 a1); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E688(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E88C(u8 *a0); -extern void func_8012E8A8(u8 *a0); -extern void func_8012E8C4(u8 *a0); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8016AA50(int, int); -extern void func_8016B428(int); -extern void func_80019064(void *); -extern int D_8018D568; -extern void func_8012E9C0(int param_1); -extern void func_8012EC04(s32 param_1, s32 param_2, s32 *param_3); -extern s32 func_8002A4FC(s32 a0); -extern s32 func_8012EECC(s32 a0); -extern void func_8012EFB8(s32 a0); -extern void func_8012EF34(s32 a0, s32 a1); -extern void func_8012EF70(s32 a0, s32 a1); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8012F0BC(s32 *a0, s32 *a1, s32 *a2); -extern void RotTransSV(s32 a0, s32 a1, void *a2); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_8012F1A4(s32 *a0, s32 a1, s32 *a2); -extern void func_8012F2E8(s32 a0, s32 a1, s32 a2); -extern s16 D_80126CB6; -extern void func_8012F374(s32 a0, s32 a1); -extern void *memcpy(void *, const void *, u32); -extern u8 D_80126C38; -extern u8 D_80126C40; -extern u16 D_80126B94; -extern u16 D_80126B96; -extern void func_8012F568(s32 param_1, s32 param_2, s32 param_3, s32 param_4, s32 param_5, s32 param_6); -extern void func_80131B14(); -extern void func_80131E00(struct S80131E00 *a0, s32 a1); -extern s32 func_80131A34(s32, s32); -extern void func_80131CA8(int a0, int a1); -extern void func_8012F5F4(s32 arg0); -extern void func_80131C78(s32 a0); -extern void func_8012F68C(s32 arg0); -extern void func_8012F75C(s32 a0); -extern s32 func_8012BEE8(s32); -extern void func_8012F7B4(s32 a0); -extern void func_80131170(); -extern void func_80131CA8(); -extern unsigned char D_8018D584[]; -extern void func_8012F828(int param_1); -extern void func_80131340(s32 a0); -extern void func_8012F87C(s32 a0); -extern void func_80131170(s32 a0, s32 a1, s32 a2); -extern u8 D_8018D590[]; -extern void func_8012F8C8(u8* arg0); -extern void func_8012F91C(s32 a0); -extern s32 func_80131A34(s32 a0, s32 a1); -extern void func_80131CA8(s32 a0, s32 a1); -extern void func_8012F968(s32 param_1); -extern void func_801319E0(s32 a0); -extern s32 func_80143B6C(s32 a0, s32 a1); -extern void func_8012FB54(s32 a0); -extern void func_8012FC30(s32 a0); -extern void func_8012FCA4(int a0); -extern s32 func_8012FCC4(s32 param_1); -extern void func_8012FDA8(int param_1); -extern void func_8012FE70(s32 a0); -extern void func_8012FF00(s32 a0); -extern void func_8012FF4C(s32 a0); -extern void func_80130D48(s32 a0); -extern void func_8012FF98(u8 *a0); -extern s32 func_80131AC8(void *a0); -extern void func_8013001C(void *a0); -extern void func_80130088(void *a0); -extern s32 func_8012BCCC(s32); -extern void func_801300F4(s32 a0); -extern void func_801301E8(u8 *a0); -extern void func_80130278(s32 arg0); -extern void func_80130314(s32 a0); -extern void func_80130360(s32 a0); -extern void func_8012E364(void); -extern void func_801303A0(s32 a0); -extern void func_801303EC(void *a0); -extern void func_80143CD4(s32 a0); -extern void func_800CB0E8(s32 a0); -extern void func_80130438(s32 a0); -extern void func_801319E0(int); -extern int func_80131D68(int, int); -extern int func_8012BEE8(int); -extern void func_80131CA8(int, int); -extern void func_80130514(int param_1); -extern void func_801305CC(u8 *a0); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_80130740(void *a0, u16 *a1); -extern s32 func_801312D0(s32 a0, void *a1); -extern void func_801307B0(s32 a0); -extern void func_80130858(s32 a0); -extern void func_80130898(u8 *a0); -extern void func_801308DC(s32 a0); -extern void func_80166244(); -extern void func_80130974(int param_1); -extern void func_80130AC4(s32 a0); -extern int func_80131A34(int a0, int a1); -extern void func_80130AF0(int param_1); -extern void (*D_8018D5A4[])(void); -extern void func_80130D0C(void *a0); -extern s32 rand(void); -extern u8 D_80078E78[]; -extern u16 D_80078EB2; -extern u16 D_80078EB4; -extern s16 D_8018D5F4[]; -extern s16 D_8018D624[]; -extern s16 D_8018D684[]; -extern s16 D_8018D68C[]; -extern s16 D_8018D6AC[]; -extern void func_80130D48(s32 arg0); -extern void func_80131170(s32 p, s32 b, s32 c); -extern s32 func_801312D0(s32 param_1, void *param_2); -extern void func_8002A04C(s32 a0); -extern void func_801319E0(s32 arg0); -extern s32 func_80131CF4(s32 a0); -extern void (*D_8018D6E4[])(struct S80131E00 *a0); -extern void func_80131E38(u8 *a0); -extern void func_80131E7C(s32 a0); -extern void func_80131EE4(void); -extern void (*D_8018D73C[])(void); -extern void func_80131EEC(void *a0); -extern void (*D_8018D784[])(void); -extern void func_80131F28(void *a0); -extern void (*D_8018D78C[])(void); -extern void func_80131F64(void *a0); -extern void (*D_8018D794[])(void); -extern void func_80131FA0(void *a0); -extern void (*D_8018D79C[])(void); -extern void func_80131FDC(void *a0); -extern void func_801320D0(void); -extern void func_8001C214(int, int); -extern int D_8018D744; -extern void func_801320D8(int param_1); -extern s32 func_80132144(s32 param_1); -extern int D_8018D764; -extern void func_801321B0(int param_1); -extern int D_8018D774; -extern void func_8013221C(int param_1); -extern void func_8005C324(int dst, int src, int n) __asm__("memcpy"); /* Phase-24: 0x8005C324 is named memcpy for overlays (whale needs it); keep the non-builtin C name here (else built-in codegen), emit via asm-label */ -extern void func_801325B8(int a0, int a1, int a2, int a3, int a4); -extern void func_80132288(int *param_1, int *param_2, int param_3); -extern void func_801325B8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_8013240C(s32 a0); -extern void func_8013277C(void); -extern void func_80020F34(s32 a0, s32 a1); -extern void func_80054514(s32 a0, s32 a1); -extern void func_80132784(s32 a0, s32 a1, u32 a2); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_80132DC4(s32 a0, s32 a1, s32 a2); -extern s32 func_80132E6C(s16 *a0); -extern void func_80132EC4(void *a0, s16 a1); -extern s32 func_80132EF4(s32 a0, s32 a1); -extern void func_801330E0(void * param_1, s16 * param_2, s32 param_3); -extern void func_80133060(u8 *a0, s32 *a1, s32 a2); -extern void func_8013339C(short *param_1, short *param_2); -extern s32 func_8013361C(s16 *a0, s16 *a1, s16 *a2, s16 *a3); -extern s32 D_801E5A80; -extern s32 D_801E5A84[]; -extern int D_801E5A88; -extern void func_80136BC4(s32 a0); -extern void func_801336E8(void *a0, int a1, int a2); -extern void func_80136BC4(s32); -extern void func_8013373C(s16 arg0); -extern s32 func_80133784(s32 arg0, void *arg1, s32 arg2); -extern s32 func_80133CD4(); -extern s32 func_8013435C(s16 *a0, s16 *a1, s32 a2, s16 *a3); -extern s32 func_801343C4(s32 angle, s32 p1, s32 p2); -extern s32 func_80134510(s32 param); -extern s32 func_801345F8(s32 arg); -extern s32 func_801347A0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134A28(s32 a0, s32 a1, s32 a2); -extern s32 func_80134C20(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134FB8(s32 a0, s32 a1, s32 a2); -extern s32 func_80135004(s32 arg0, s32 p1, s32 p2); -extern u8 D_8018D7A8; -extern u8 D_8018D7A4; -extern s16 *D_8018D7AC; -extern u8 D_8018D7B0; -extern int D_801E5A80; -extern u16 D_801E5A90; -extern int func_80134A74(int, s16, s16, int); -extern int func_80135168(u16 arg0, u16 *p1, u16 *p2); -extern s16 func_80135480(void *param_1, s32 param_2, s16 *param_3, s16 *param_4); -extern s32 func_80136334(void *arg0, s32 arg1, s32 arg2); -extern s32 func_80136824(s32 arg0, s32 arg1, s32 arg2); -extern s16 *D_8018D7AC; /* holds a pointer value (*(u16**)&D_8018D7AC) */ -extern s32 func_80136A94(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80136C3C(void); -extern void func_80136C1C(void); -extern void func_80136C44(void); -extern void func_80136C4C(void); -extern void (*D_8018D7C0[])(void); -extern void func_80136C54(void); -extern s32 func_80136C90(); -extern void func_80136D00(void); -extern void SetLineG2(void *); -extern void func_80136D08(s32 arg0, s32 arg1); -extern void func_80136EC4(void); -extern short D_800B9A02; -extern u8 D_800A6518[]; -extern void GsSortLine(void *a0, void *a1, s32 a2); -extern void func_80136ECC(s16 a0, s16 a1, s16 a2, s16 a3, u8 r, u8 g, u8 b); -extern void func_80137030(s16 a0, s16 a1); -extern void ApplyMatrixSV(void *m, Svec_801372B0 *in, Svec_801372B0 *out); -extern void aGsSortLine(Gline_801372B0 *p, void *ot, s32 z) __asm__("GsSortLine"); -extern void aF80137030(s32 x, s32 y) __asm__("func_80137030"); -extern void func_80137178(s32 x, s32 y); -extern u8 D_800AF630[]; -extern u16 aD800B9A02 __asm__("D_800B9A02"); -extern void func_801372B0(void); -extern void func_80137614(s32 a0, s32 a1, s32 a2); -extern void func_801375EC(s32 a0, s16 a1); -extern s32 func_801399A8(void); -extern void func_801377B4(s32 a0, s32 a1, s32 a2); -extern s32 func_8013767C(s32 a0); -extern void func_801376E8(int a0, int a1); -extern void func_801376C8(int a0); -extern s32 D_80127524; -extern s32 D_80127528; -extern void func_80137840(s32 a0); -extern void func_80139634(void *); -extern void func_80139DC8(void); -extern s16 D_8012752E; -extern void func_801379D8(void); -extern void func_801379EC(void); -extern s32 D_80127548[]; -extern int D_8018D814; -extern int D_801269F0; -extern void func_80138BE0(int p); -extern void func_80137B80(void); -extern void func_801392FC(); -extern void func_801397B0(s32 a0); -extern void func_80137DD4(s32 a0, u8 *a1, u8 *a2); -extern void func_80139680(s32 a0, u8 *a1); -extern u16 D_800B99D8; -extern void func_80137BD8(s32 a0); -extern unsigned char D_80126A0E; -extern short D_80126A0A; -extern s16 D_801269F4; -extern int D_800A5E60; -extern int func_80137D08(int arg0, int arg1, short arg2); -extern void func_80137FD8(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_801380E0(s32 arg0); -extern void func_801387B8(s32 arg0); -extern void func_80138948(void *a0); -extern s16 func_80138DB8(s32 a0, u8 a1, s32 a2); -extern void func_80138B88(s32 a0); -extern void func_8013895C(s32 a0); -extern s16 D_80127540[4]; -extern s32 func_80139D04(s32 a0, s32 a1); -extern s32 func_80138DE0(s32 a0, s32 a1, s32 a2); -extern void func_80139B18(s32 a0); -extern void func_80138AB4(s32 a0); -extern void (*D_8018D818[])(void); -extern void func_80138C30(void *a0); -extern void func_8013A9F8(s32 a0, s32 a1); -extern void func_80138D58(s32 a0, u16 a1); -extern s32 func_80014E80(s32 a0, s32 a1); -extern s32 func_8013914C(s32 a0, s32 a1); -extern void func_800599B8(u16 *); -extern u16 D_80127C0C[]; -extern s32 func_80138ED0(u8 *param_1, u32 param_2, u8 *param_3); -extern s32 func_80139220(s32 a0); -extern void func_801391F0(void *a0); -extern void func_801392C8(void *a0); -extern void func_801395D4(void *); -extern s32 GetTPage(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80052460(s32 a0, s32 a1, s32 a2); -extern void func_801392FC(s32 arg0, s32 arg1, u8 *arg2); -extern void func_80059888(void *a0, s32 a1, s32 a2, s32 a3); -extern void func_80139634(void *a0); -extern void func_80139680(s32 arg0, u8 * arg1); -extern void func_8001931C(void); -extern s16 D_8012752C; -extern void func_80139788(void); -extern u8 D_8018D85C; -extern u8 D_8018D8A0; -extern void GsSortSprite(void *a0, u8 *a1, s32 a2); -extern void func_801397B0(s32 arg0); -extern void func_8013A8B0(s32 *a0); -extern void func_80139914(s32 arg0); -extern u16 D_80126A08; -extern s32 D_801269F0; -extern s32 *D_80126A30; -extern void func_80139954(void); -extern s32 D_80126A3C; -extern s32 func_801399F0(s32 a0); -extern s32 D_80127520; -extern void func_80139A34(s32 a0); -extern s32 D_80127530[4]; -extern void func_80139A44(s32 a0, u16 a1); -extern void func_80139A68(s32 a0, u16 a1); -extern void func_80139A8C(s32 a0); -extern void func_80139C7C(u8 *a0); -extern s16 D_8012811A; -extern void func_80139DEC(void); -extern void func_80139DF4(s32 a0); -extern void func_80139E84(s32 a0); -extern void func_80139F0C(s32 a0); -extern void func_80139FBC(struct obj *a0); -extern s32 func_8001B22C(void *a0); -extern void func_80139FE8(void *a0); -extern void func_8013A0A4(struct S8013A0A4 *a0); -extern void func_8013A164(struct S8013A164 *a0); -extern void func_8013A1E8(s32 a0); -extern void func_8013A250(struct S8013A250 *a0); -extern void func_8013A2BC(s32 a0); -extern void func_8013A378(void); -extern u8 D_8011DA80[]; -extern void func_8013A530(); -extern void func_8013A448(void *a0); -extern void func_8013A4C4(struct S8013A4C4 *a0); -extern void func_8013A380(void); -extern void func_80015D4C(); -extern void func_80015F04(); -extern void func_8013AA24(s32 a0, s32 a1); -extern void func_8013A530(int param_1); -extern void func_8013A860(void); -extern s32 func_8013A8BC(void); -extern void func_8013A9B4(s32 a0, s32 a1); -extern s32 func_8013A8FC(s32 arg0); -extern void func_8013AD38(void *a0, s32 a1, void *a2, void *a3); -extern void func_8013B204(s32 a0, s32 a1); -extern void func_8013AF20(); -extern void func_8013B274(s32 a0, s32 a1, void *a2); -extern s32 D_800A5E60; -extern s32 func_8013AB54(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */ -extern u8 D_8018D8E4[]; /* sign table, alt (when a1 < 0xC00) */ -extern void func_8013AD38(void *flag, s32 a1, void *out2, void *out3); -extern void func_8013AF20(u32 *param_1, u16 *param_2, u16 *param_3, u8 *param_4); -extern s16 D_8018D95C, D_8018D95E, D_8018D960, D_8018D962, D_8018D964, D_8018D966; -extern u16 D_800D45F6; -extern s32 func_8016EC0C(s32 a0, s32 a1); /* match-first, arity 2 */ -extern s32 func_8012B4B8(s32 a0); /* match-first, arity 1 */ -extern s32 func_801670E4(s32 a0, s32 a1, s32 a2, s32 a3); /* derive-decl, arity 4 */ -extern s32 func_80169A4C(s32 a0, s32 a1); /* match-first, arity 2 */ -extern s32 func_8016A8FC(s32 a0); /* match-first, arity 1 */ -extern s32 func_8012B8E4(s32 a0, s32 a1); /* match-first, arity 2 */ -extern s32 func_8015E1B8(s32 a0); /* match-first, arity 1 */ -extern s32 func_8015EE08(s32 a0); /* match-first, arity 1 */ -extern s32 func_8015F7D4(s32 a0); /* match-first, arity 1 */ -extern s32 func_80160B34(s32 a0); /* match-first, arity 1 */ -extern s32 func_80165140(s32 a0); /* match-first, arity 1 */ -extern s32 func_80161CD0(s32 a0, s32 a1); /* match-first, arity 2 */ -extern s32 func_80175268(s32 a0); /* match-first, arity 1 */ -extern s32 func_8017EC7C(s32 a0); /* match-first, arity 1 */ -extern s32 func_801809BC(s32 a0, s32 a1); /* match-first, arity 2 */ -extern s32 func_8012DE2C(s32 a0); /* derive-decl, arity 1 */ -extern s32 func_8012DDA4(void); /* derive-decl, arity 0 */ -extern s32 func_801759D8(void); /* derive-decl, arity 0 */ -extern s32 func_80175820(void); /* derive-decl, arity 0 */ -extern s32 func_801758FC(void); /* derive-decl, arity 0 */ -extern s32 D_801E5AF8; -extern s32 D_801269D4; -extern s32 D_801269C8; -extern M2C_UNK D_80062BC0; -extern s8 D_801E5AFC; -extern s8 D_801E5AFD; -extern void func_8013C9C4(void * arg0); -extern s32 D_801E5B1C; -extern s32 D_801E5B10; -extern s32 D_801E5B14; -extern s32 D_801E5B20; -extern void func_8013CABC(void); -extern s32 D_801E5B18; -extern void func_8013CAE8(void); -extern s32 D_801E5B48; -extern s32 D_801E5B4C; -extern void func_8013CB20(void); -extern void func_8013CB5C(void); -extern void func_8013CF68(); -extern s32 D_801E5B28; -extern s32 D_801E5B2C; -extern void func_8013D9B0(void); -extern void func_8013D064(void); -extern s32 func_8013D13C(void); -extern void func_8013D164(void); -extern void func_8013D178(void); -extern u8 D_801E7AB2; -extern u8 D_801E7B26; -extern u8 D_801E79B2; -extern u8 D_801E7A7C; -extern u8 D_801E7988; -extern u8 D_801E79B1; -extern s32 D_801E7A80; -extern void func_8013D330(void); -extern void *D_801E5B00; -extern void *D_801E5B04; -extern void *D_801E5B08; -extern s32 D_801E5B30; -extern s32 D_801E5B34; -extern s32 D_801E5B38; -extern s32 D_801E79F4[]; -extern u8 D_8018DA54[]; -extern u8 D_8018DAFC[]; -extern u8 D_8018D9AC[]; -extern u8 D_8018DAA8[]; -extern u8 D_8018DB28[]; -extern u8 D_8018DA00[]; -extern void func_8013D53C(void); -extern void func_8013DD68(void); -extern void func_8013D8FC(void); -extern void func_8013CF68(void); -extern void func_8013D3D4(int param_1, int param_2); -extern s16 *D_801E5B0C; -extern s32 D_801E5B3C; -extern s32 D_801E5B40; -extern s32 D_801E5B44; -extern void func_8013DBE4(int param_1); -extern void func_8013DD68(); -extern s32 D_801E5B24; -extern s32 func_8013E054(void); -extern int SquareRoot12(int a0); -extern int func_8013E064(s16 *a0, s16 *a1); -extern int func_8013E0FC(s16 *a0, s16 *a1); -extern int func_8013E194(s16 *a0, s16 *a1); -extern void Square12(s32 *a0, s32 *a1); -extern s32 func_8013E22C(struct VecA *a0, struct VecB *a1); -extern s32 func_8013E298(s16 *a0); -extern int func_8013E2C4(short *a0); -extern void *D_801274CC; -extern s32 func_8013E410(void); -extern s32 func_8013E448(s32 a0); -extern void func_8013E370(void); -extern s32 (*D_801274D0)(s32); -extern s32 D_801274D8; -extern s32 D_801274DC; -extern s32 func_8013E448(s32 param_1); -extern s32 func_8012C750(s32 a0); -extern u8 *D_801274C8; -extern void func_8013E4B4(void); -extern void func_800D24A0(s32 a0); -extern void func_80141788(void); -extern void *D_8011DB24; -extern s32 func_800D0EC4(void); -extern void func_80141874(void); -extern u8 D_800B9A15; -extern unsigned char D_800B9A13; -extern u16 D_80115110; -extern unsigned short D_80115112; -extern void func_8013E588(void * _arg0); -extern s32 func_80014ED4(s32); -extern s32 func_80015018(s32); -extern void func_80141C04(void); -extern void func_8013E5E8(void); -extern u8 D_80078EC0; -extern u16 D_8011511A; -extern u16 D_80115124; -extern u8 D_80115148[]; -extern u8 D_80115140[]; -extern s32 D_8018E5B4; -extern s32 D_80115188; -extern s16 D_8018E58C; -extern s16 D_8018E58E; -extern void func_8013E83C(void); -extern void func_8013E6AC(void); -extern void func_800D24A0(s32 arg); -extern void func_8013E814(void); -extern void func_8013E83C(); -extern void func_8013E958(); -extern s32 func_80141C50(void); -extern void func_8013F244(void); -extern void func_8013FAF8(s16 a0, s16 a1); -extern void func_8013E958(void); -extern u8 D_801151C8[]; -extern s32 D_801151D0; -extern u16 D_8011511E; -extern s32 D_80115130; -extern s16 D_8011514C; -extern void func_8013EA54(void); -extern s32 func_8013F350(void); /* §30#2 widened: def returns live $v0; callers discard */ -extern s16 func_8014168C(s16 a0); -extern s32 func_8014032C(s32 a0, s32 a1); -extern unsigned char *func_80141CA4(void); -extern short D_80115128; -extern s16 D_8011512A; -extern unsigned char D_8018E590; -extern void func_8013EB7C(void); -extern s32 func_8013F350(void); /* §30#2 widened (discarding caller) */ -extern u16 D_80115112; -extern void func_8013ED6C(void); -extern s32 func_8013EE10(); -extern unsigned short D_80115118; -extern void func_8013F138(void); -extern void func_800D2624(void); -extern unsigned short D_80115114; -extern void func_8013F1BC(void); -extern void func_80141C0C(s32); -/* ==== end §8b carried decl layer ==== */ - -// @class: regalloc-order -// @stuck: none — MATCH (490 ins, match_one, canonical-typed) -// -// func_8013F350 — 490-ins GIANT (menu/pad state machine, double jump table -// jtbl_801D8860 [8] + jtbl_801D8880 [5]). Load-bearing levers, do NOT "clean up": -// -// 1. `register s32 off __asm__("$4")` — THE crack. gcc otherwise emits pmax -// before pcur, letting pcur sink into the beq delay slot (target has a nop -// there) and losing the off/pmax coalesce into $a0. Pinning off cost 0 insns -// and took the diff 162 -> 13. (`bb` shares $4; live ranges are disjoint.) -// 2. `register u16 *pd __asm__("$5")` + the "=r"/"0" self-barrier — without the -// barrier gcc const-propagates &D_8011511C away and %lo-folds every access -// (target holds the base: lhu 0($a1) / lhu 4($a1) / sh 4($a1)). The barrier -// emits zero code; it only hides the pointer's constant value from cse. -// NOTE: `ps` (&D_8011511A) must NOT get the same barrier — it regressed. -// 3. `case 0/2/3: break;` in the inner switch are NOT dead — 5 case nodes is -// what pushes gcc past CASE_VALUES_THRESHOLD into a jump table (jtbl_801D8880) -// instead of a compare chain (worth 18 instructions). -// 4. case 5 tests (flags & 0x10) with `!= 0 -> goto tail6`, case 6 with -// `== 0 -> break`. The OPPOSITE polarity is what stops gcc cross-jumping the -// two tails into one (§5a class, solved by source shape, not an asm barrier). -// 5. `if (d > 0) A; else if (d < 0) A;` — a single `d > 0 || d < 0` is folded to -// `d != 0` by the FRONT END (andi 0xffff; beqz). Two ifs keep bgtz+bgez; gcc's -// cross-jump then re-merges the twin store blocks, which is the target's shape. -// 6. 0x1000/0x8000/0x2000 blocks are written in-place (`pcur[0] = pcur[0] - 1`) -// -> one register + a load-delay nop. The 0x4000 block needs the `b` temp -// (its ==3 arm restores the original), so it keeps two registers and no nop. -// 7. `s16 d` (not s32 + <<16>>16): the wide form pushed the frame 0x30 -> 0x38. -// 8. `pad` is u16 (its andi 0xFFFF is real) but `st` must stay u16 AND be used -// only for the pointer math / `st == 2` — the D_80115140 index re-reads -// D_8011511A, which is what keeps st free of a masking andi. -// -// Canonical-reconciled (§17a-1) and re-verified MATCH: D_8011512E keeps the TU's -// `u16` canonical with `*(s16*)&` at the read sites (target needs lh), and -// func_8014168C keeps the canonical s16(s16) decl with s32(s32) call-site casts. -// Def sig is s32(void); engine_core.h canon is `void func_8013F350(void)` and the -// callers already cast (`((short (*)(void))func_8013F350)()`) -> def-side reconcile. - -extern u16 D_80115110; -extern u16 D_8011511A; -extern u16 D_8011511C; -extern u16 D_8011511E; -extern u16 D_80115120; -extern u16 D_80115122; -extern s16 D_80115128; -extern s16 D_8011512A; -extern u16 D_8011512E; -extern u8 D_80115140[]; -extern s16 D_8011514C; -extern s16 D_8011514E; -extern u8 D_80115152; -extern u8 D_80115158[]; /* macro-canonical (§8e) */ -extern u8 D_8011515C; /* macro-canonical (§8e) */ -extern u8 D_8018E2B0[]; -extern u8 D_8018E2C8[]; -extern u16 D_8018E1CC[]; - -extern s32 func_80029178(s32 arg); -extern s32 func_800291B4(s32 arg); -extern s16 func_8014168C(s16 a0); -extern void func_8014AA04(s32 a0); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_801415C0(s32 a0, s32 a1); -extern void func_80141C0C(s32 a0); -extern s32 func_80140608(s32 a0); -extern void func_801407F4(void); -extern s32 func_801416D4(s16); /* macro-canonical (§8e) */ - -s32 func_8013F350(void) { - register u16 *pd __asm__("$5") = &D_8011511C; - u16 *ps; - u16 *pf; - u16 *pg; - u16 pad; - u16 st; - u8 *pcur; - u8 *pmax; - u8 *p2e; - u8 *p3e; - register s32 off __asm__("$4"); - s16 i; - s32 r; - s16 rs; - s16 d; - u8 b; - register u8 bb __asm__("$4"); - u8 m; - s32 chg; - - __asm__ __volatile__("" : "=r"(pd) : "0"(pd)); - pad = *pd; - chg = 0; - if (pad != 0) { - if (pad == pd[2]) { - D_80115122 = D_80115122 - 1; - if (D_80115122 == 0) { - D_8011511E = pad & 0xF000; - D_80115122 = 3; - } - } else { - pd[2] = pad; - D_80115122 = 6; - } - } else { - D_80115120 = 0; - D_80115122 = 0xC; - } - - i = 0; - do { - if ((func_80029178(D_8018E2B0[i]) & 0xFF) == 0) { - break; - } - i = i + 1; - } while (i < 6); - *(u16 *)D_80115158 = i | 0x100; - - switch (D_8011511A) { /* jtbl_801D8860 */ - case 0: - r = ((s32 (*)(s32))func_8014168C)(0); - rs = (s16)r; - if ((func_80029178(D_8018E2B0[rs]) & 0xFF) != 0 && (D_8011511E & 0x40) != 0) { - func_8014AA04((r + 1) & 0xFF); - if (rs != 0) { - func_8002D4C8(0x461, 0); - } else { - func_8002D4C8(0x460, 0); - } - } - break; - case 1: - if ((D_8011511E & 0x40) != 0) { - D_80115128 = ((s32 (*)(s32))func_8014168C)(1) + 1; - D_8011511A = 2; - func_80141C0C(3); - return 1; - } - if (D_80115128 != 4) { - break; - } - goto tail7; - case 2: - switch (D_80115128) { /* jtbl_801D8880 */ - case 0: - break; - case 1: - r = ((s32 (*)(s32))func_8014168C)(2); - pf = &D_8011511E; - if ((*pf & 0x40) != 0) { - if ((*(s16 *)&D_8011512E) == 0) { - if ((func_800291B4(D_8018E2C8[(s16)r]) & 0xFF) != 0 && (*pf & 0x40) != 0) { - D_8011511A = 5; - *(s16 *)&D_80115152 = 0; - func_80141C0C(3); - return 1; - } - func_80141C0C(5); - } else { - func_801415C0((s16)r, (*(s16 *)&D_8011512E) & 0xF); - D_8011512E = 0; - func_80141C0C(3); - return 1; - } - } else if ((*pf & 0x20) != 0) { - if ((*(s16 *)&D_8011512E) == 0) { - D_8011512E = r | 0x8000; - } else { - func_801415C0((s16)r, (*(s16 *)&D_8011512E) & 0xF); - D_8011512E = 0; - } - func_80141C0C(3); - } - break; - case 4: - if ((D_8011511E & 0xA000) != 0) { - chg = func_80140608(2); - } - func_801407F4(); - break; - case 2: - break; - case 3: - break; - } - if (D_80115128 != 0 && (D_8011511E & 0x10) != 0 && D_80115110 != 1) { - D_8011511E = D_8011511E & 0xFFEF; - D_8011511A = 1; - D_8011512E = 0; - func_80141C0C(6); - } - break; - case 3: - if (D_8011514E == 0 && (D_8011511E & 0x40) != 0) { - D_8011511A = D_8011511A + 3; - func_80141C0C(3); - return 1; - } - break; - case 5: - if ((D_8011511E & 0x40) != 0) { - rs = (s16)((s32 (*)(s32))func_801416D4)(D_80115152); - if (rs != 0) { - if (rs < 0) { - D_8011512A = 1; - } else { - D_8011511A = D_8011511A - 3; - func_80141C0C(4); - return 1; - } - } - break; - } - if ((D_8011511E & 0x10) != 0) { - goto tail6; - } - break; - case 6: - if ((D_8011511E & 0x10) == 0) { - break; - } - tail6: - pg = &D_8011511E; - *pg = *pg & 0xFFEF; - D_8011511A = D_8011511A - 3; - func_80141C0C(6); - return 1; - case 7: - if ((D_8011511E & 0xA000) != 0) { - chg = func_80140608(7); - } - tail7: - func_801407F4(); - break; - } - - ps = &D_8011511A; - - st = *ps; - p2e = (u8 *)ps + 0x2E; - p3e = (u8 *)ps + 0x3E; - off = st << 1; - pcur = p2e + off; - pmax = p3e + off; - if (st == 2 || 1 < pmax[0]) { - if ((D_8011511E & 0x1000) != 0) { - pcur[0] = pcur[0] - 1; - chg = 1; - if (0x7F < pcur[0]) { - if (D_8011511A != 3) { - pcur[0] = pmax[0] - 1; - } else { - pcur[0] = 0; - chg = 0; - } - } - } - if ((D_8011511E & 0x4000) != 0) { - b = pcur[0]; - pcur[0] = b + 1; - chg = 1; - if (pmax[0] <= (u8)(b + 1)) { - if (D_8011511A != 3) { - pcur[0] = 0; - } else { - pcur[0] = b; - chg = 0; - } - } - } - if (D_8011511A == 2 && D_80115128 == 1) { - if ((D_8011511E & 0x8000) != 0) { - pcur[1] = pcur[1] - 1; - chg = 1; - if (0x7F < pcur[1]) { - pcur[1] = pmax[1] - 1; - } - } - if ((D_8011511E & 0x2000) != 0) { - pcur[1] = pcur[1] + 1; - chg = 1; - if (pmax[1] <= pcur[1]) { - pcur[1] = 0; - } - } - } else { - bb = pcur[0]; - m = D_80115140[D_8011511A]; - d = (s8)bb - (s8)m; - if (d > 0) { - D_80115140[D_8011511A] = bb; - } else if (d < 0) { - D_80115140[D_8011511A] = bb; - } - } - if (D_8011511A == 1) { - D_80115128 = ((s32 (*)(s32))func_8014168C)(1) + 1; - if ((D_8011511E & 0x5000) != 0) { - D_8011514C = 0; - } - } - *(u16 *)&D_8011515C = D_8018E1CC[D_80115128]; - if ((chg << 0x10) != 0) { - func_80141C0C(1); - } - } - return 0; -} - - - -// @class: regalloc-order -// @stuck: none — MATCH (312/312, relocation-masked) - - - - - - - - - - -extern void func_80140E6C(void); -extern void func_80140F00(void); -extern s32 *func_80140958(s32 *, s32, s32); -extern int func_80141100(int); -extern s16 func_8014168C(s16); -extern s32 func_8013FFD8(s16, s32, s32 *); -extern void func_80024054(void *a0, void *a1); -extern s32 *func_800D2650(s32 *, void *, s32, s32, s32, s32); -extern s32 func_8005A600(s32, s32, s32, s32, s32); -extern s32 func_800D27DC(s32, s32 *, void *, s32, s32); -extern s32 *func_800D29F8(s32, s32, void *, s32, s32); -extern int func_80137D08(int arg0, int arg1, short arg2); -extern s32 func_8013AB54(s32 a0, s32 a1, s32 a2, s32 a3); - -extern s32 D_801151D0; -extern u16 D_8011511A; -extern short D_80115128; -extern u8 D_80078EC0; -extern short D_800B9A02; -extern s16 D_8018E58C; -extern s16 D_8018E58E; - -void func_8013FAF8(s16 arg0, s16 arg1) { - - extern Hw4 D_8011516A[]; - extern Rec20 D_800AE7B8[]; - extern Blk60 D_8018DC14[]; - extern Blk20 D_8018DF14[]; - extern Prim4 D_8018E014[]; - extern Prim4 D_8018E084[]; - extern Prim4 *D_8018E178[]; - extern s32 D_8018E198[]; - extern u8 D_8018E1B8; - u8 sp18[72]; - s32 sp60[2]; - s32 *ot; - s16 i; - s16 j; - s32 flag; - s32 addr; - Prim4 *p; - s32 r; - s32 t; - s16 *pp; - s32 flag2; - register s32 flag3 __asm__("$18"); - - func_80140E6C(); - func_80140F00(); - ot = func_80140958((s32 *)D_801151D0, arg0, arg1); - if (D_8011511A < 6) { - ot = (s32 *)func_80141100((int)ot); - } - for (i = arg0; i < arg1; i++) { - if (i == D_8011511A || i == 2 || i == 4) { - flag = 0; - } else { - flag = 0xFF; - } - p = &D_8018E014[i]; - if (i != 5) { - if (i == 2) { - addr = ((s32 *)&D_8018E1B8)[*(s16 *)&D_80115128]; - } else { - addr = D_8018E198[i]; - } - } else { - addr = func_8013FFD8(2, func_8014168C(2), sp60); - } - func_80024054(addr, sp18); - ot = func_800D2650(ot, sp18, (s16)(p->f0 + (u16)D_8011516A[i].x), p->f2, 1, - flag != 0 ? 0x585858 : 0x808080); - p = D_8018E178[i]; - j = 0; - if (p != 0) { - if (i == 2 && *(s16 *)&D_80115128 != 0) { - p = D_8018E084; - } - flag2 = flag; - for (;;) { - r = func_8013FFD8(i, j++, sp60); - if (r == 0) { - break; - } - if (r < 0) { - func_80024054(r, sp18); - t = 1; - if (i == 0 && (D_80078EC0 & 0x7F) == j) { - t = 0xB6; - } - if (flag2 != 0) { - sp60[0] += -0x282828; - } - ot = func_800D2650(ot, sp18, (s16)(p->f0 + (u16)D_8011516A[i].x), p->f2, t, sp60[0]); - } - p++; - } - } - func_8005A600((s32)ot, 0, 0, 0x15, 0); - flag3 = flag; - *ot = 0x2000000; - *ot = (D_800AE7B8[*(u16 *)&D_800B9A02].f4[2] & 0xFFFFFF) | 0x2000000; - D_800AE7B8[*(u16 *)&D_800B9A02].f4[2] = - (D_800AE7B8[*(u16 *)&D_800B9A02].f4[2] & 0xFF000000) | ((u32)ot & 0xFFFFFF); - ot = func_800D29F8(flag3, - func_800D27DC(flag3 != 0, ot + 10, &D_8018DC14[i], 8, D_8011516A[i].x), - &D_8018DF14[i], 2, D_8011516A[i].x); - } - pp = &D_8018E58C; - if (*pp == 0xE) { - ot = func_80137D08(ot, &D_800AE7B8[*(u16 *)&D_800B9A02], 2); - } - if (*pp != 0 && D_8018E58E != 0) { - ot = func_8013AB54(ot, D_800AE7B8[*(u16 *)&D_800B9A02].f4 + 2, (s32)(pp - 2), 0x8000); - } - D_801151D0 = (s32)ot; -} - - - diff --git a/src/ov_SC04_019/ov_SC04_019_jr_8013FFD8.c b/src/ov_SC04_019/ov_SC04_019_jr_8013FFD8.c deleted file mode 100644 index 7aa719dbc..000000000 --- a/src/ov_SC04_019/ov_SC04_019_jr_8013FFD8.c +++ /dev/null @@ -1,1161 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ - /* 8-byte element, cmd @ +4 */ - /* list ptr @ +0x90 */ - /* size 8, alignment 1 -> unaligned copy */ - /* 0x5C copy unit, align 4 */ - /* -> frame 0xA0 (gcc adds 0x10 for the struct-copy) */ -extern void func_80128288(void); -extern void func_80128158(void); -extern void func_801285E4(void); -extern void func_80128178(void); -extern void func_80128678(void); -extern void func_80128198(void); -extern void func_80128714(void); -extern void func_801281B8(void); -extern void func_8013E67C(void); -extern void func_801281D8(void); -extern void func_8013E558(void); -extern void func_801281F8(void); -extern s32 D_801E4434; -extern s32 func_80128218(void); -extern void func_80128A28(void); -extern void func_80128228(void); -extern void func_80128AF4(void); -extern void func_80128248(void); -extern void func_801282EC(void); -extern void func_80128268(void); -extern u16 D_800B99F6; -extern void (*D_8018D4AC[])(void); -extern void func_80011B7C(int); -extern void func_801282CC(void); -extern void func_8001C0C8(void); -extern void func_80015310(void); -extern void func_80129258(void); -extern void func_801378F0(void); -extern void func_80010E14(void); -extern s16 currentLocationId; -extern s32 func_80029504(void); -extern s32 func_800CF854(s32); -extern s32 func_80128998(void); -extern s32 func_801289F0(void); -extern s32 func_801288E8(s32); -extern s32 func_80128940(s32); -extern s32 func_80029178(s32); -extern s32 func_801288B0(void); -extern void func_80011C10(void); -extern void func_8012832C(void); -extern void func_80129220(void); -extern void func_80011E24(void); -extern void func_80128C14(void); -extern void func_8002AEF8(void); -extern void func_800CFBBC(void); -extern void SsUtReverbOff(void); -extern void func_8013C98C(void); -extern void func_80129C40(s32 a0); -extern void func_800D0630(void); -extern void func_80145CEC(void); -extern void func_80144B9C(void); -extern u8 D_800B9A17; -extern u8 D_800B9A10; -extern void func_80128420(void); -extern s32 func_800D0588(void); -extern void func_801284B8(void); -extern void func_80175308(void); -extern void func_8016E8F0(void); -extern void func_80175494(void); -extern u8 D_800B9A64; -extern void func_801284F0(void); -extern void func_80146074(void); -extern void func_8012853C(void); -extern void func_80178608(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern s32 func_80011A3C(void); -extern short currentLocationId; -extern short D_800B99F2; -extern void func_80128564(void); -extern u8 D_800B9A11; -extern void func_801285D4(void); -extern s32 func_800D18DC(void); -extern void func_8014607C(void); -extern void func_801287B8(void); -extern s32 D_801E5A14; -extern void func_80029444(void); -extern void func_800D1754(void); -extern s32 D_80126B58; -extern s32 D_801E7AB8; -extern u16 D_800B99DA; -extern void func_80129CF8(void); -extern void func_8017849C(void); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_801505FC(s32 a0); -extern void func_801508B4(void *a0); -extern void func_80165E90(void); -extern void func_801627E8(void); -extern void func_80162B1C(void); -extern void func_80165CA0(void); -extern void func_80129010(void); -extern void func_8013CA14(void); -extern void func_800190AC(void); -extern void func_8012956C(void); -extern void func_8016E95C(void); -extern void func_801754A8(void); -extern void func_8013BC7C(void); -extern void func_8013BCDC(void); -extern void func_801379FC(void); -extern void func_8001212C(void); -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); -extern u8 D_800AEFD0; -extern int D_800C7C60; -extern int *D_800C7C64; -extern int D_800A2E20; -extern int D_800AF558; -extern int D_801E4434; -extern int func_801288E8(int arg0); -extern u8 D_800AF560; -extern s32 func_80128940(s32 _arg0); -extern int D_800AECB0; -extern u8 D_800AECB8; -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4); -extern s16 D_800B9A00; -extern M2C_UNK (*D_8018D1E0)(); -extern s16 (*D_8018D1E4)(); -extern M2C_UNK (*D_8018D1EC)(); -extern s32 (*D_8018D1F0)(); -extern s32 D_801E5A10; -extern void func_80010AE0(s32 a0); -extern void func_80018450(s32 a0, s32 a1); -extern void func_800183E0(s32 a0); -extern void func_80128D60(s32 a0, s32 *a1, s32 *a2); -extern s32 func_80128DB4(s32 a0, s32 *a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern M2C_UNK D_801E4438; -extern void func_80128FAC(u16 *arg0); -extern s16 D_8011DB2C; -extern s16 D_8011DB30; -extern s32 D_80126AEC; -extern u8 *func_8012913C(s32 a0); -extern u8 * func_801290DC(s32 a0, u8 *a1); -extern void func_8001D074(s32 a, s32 b); -extern u8 *func_801291C0(void); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 * func_8012913C(s32 arg0); -extern void func_80016714(void *a0, s32 a1); -extern u8 * func_801291C0(void); -extern void func_80129248(s16 a0); -extern void func_801292C8(u8 *a0); -extern void func_8012927C(void); -extern void func_8012931C(struct vec *a0); -extern void func_80129350(s32 a0, s32 a1); -extern void func_80129374(s32 a0, s32 a1); -extern s16 D_800B9AAC[]; -extern s16 D_800B9AAE[]; -extern s16 D_800B9AB0[]; -extern s16 D_800B9AB2[]; -extern s16 D_800B9AB4[]; -extern s16 D_800B9AB6[]; -extern s16 D_800B9AB8[]; -extern s16 D_800B9ABA[]; -extern void func_80129398(void); -extern s16 D_80114EE0; -extern void func_80129428(void); -extern void func_8012943C(void); -extern s32 D_8005128C; -extern u8 D_800B9A78; -extern void func_801298F4(void *arg0); -extern void func_801299C8(s32 a, s32 b, s32 c); -extern void func_8012944C(void); -extern unsigned short D_800B99F0; -extern void func_8012A328(void); -extern void func_80053308(s32); -extern s32 func_80012F74(s32, s32, s32, s32); /* canonical s32 (engine_core); (s16)-cast the return for the sll/sra */ -extern void GsSetRefView2L(void *); -extern s8 D_801150D6; /* canonical (engine_core macro): s8 — access via *(u8*)& for lbu */ -extern u8 D_80127504; -extern s32 D_80126E60[]; -extern s32 D_80126F04[]; -extern u8 D_80126948[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_80126FA8[]; -extern struct BigCopy D_80126DB8;/* canonical (engine_core macro): struct BigCopy — (s32*)& at use */ -extern u8 D_800AF630[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_800AE688[]; -extern s32 D_801151D4; /* canonical (10 siblings): scalar s32 — store (s32)ptr */ -extern void func_8012A018(s32 a, s32 b); -extern void func_80129FF4(void); -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_80126940; -extern s16 D_80126942; -extern s16 D_80126944; -extern void func_8012A048(void *a0, s32 a1, u8 a2); -extern void *memcpy(void *, const void *, unsigned int); -extern void func_8012A094(s32 a0); -extern void func_8012A100(s8 a0); -extern void func_8012A0E0(void); -extern s8 D_801150D6; -extern s32 D_80120204; -extern s32 D_80120200; -extern s32 D_8012020C; -extern s32 D_80120208; -extern s16 D_80120218; -extern s16 D_80120210; -extern s16 D_8012021A; -extern s16 D_80120212; -extern s16 D_8012021C; -extern s16 D_80120214; -extern s16 D_80120226; -extern s16 D_80120220; -extern s16 D_80120228; -extern s16 D_80120222; -extern s16 D_8012022A; -extern s16 D_80120224; -extern s32 D_80120294; -extern s16 D_80120298; -extern s16 D_8012029A; -extern void func_8012A110(void); -extern s8 D_801152C0; -extern void func_8012A2F4(void); -extern s16 D_80127080; -extern s16 D_801152C2; -extern void func_8012A304(s32 a0, s32 a1); -extern s32 D_801151D4; -extern struct BigCopy D_80126DB8; -extern struct BigCopy D_80114EE8; -extern void func_8012A4BC(void); -extern void func_8012A598(void *a0); -extern void func_8012A568(void (*a0)(void)); -extern void func_8012A62C(s32); -extern void func_8012A5F8(void (*a0)(void), s32 a1); -extern void func_8012A62C(s32 a0); -extern void func_8012A7D4(void *a0, void *a1); -extern s32 func_8012A6D0(void *a0, void *a1); -extern s16 func_8012A68C(void); -extern s16 func_8012A79C(s16 *a0, s16 *a1); -extern s16 func_8012A758(void); -extern s32 ratan2(s32 a0, s32 a1); -extern void func_8012A7D4(void *arg0, void *arg1); -extern void func_8012AAAC(); -extern void func_8012A828(s32 a0, void * a1); -extern int func_8012ACE0(void *a0); -extern void func_8012A860(void *a0, int a1); -extern void func_8012A8B0(u8 *a0, s32 a1); -extern void func_8012A8E8(void); -extern u8 D_801202A0[]; -extern u16 D_801270C0; -extern void func_8012A988(u8 *a0); -extern void func_8012A908(void); -extern s32 func_8012ACE0(void *a0); -extern M2C_UNK D_8018D540; -extern void func_8012ACA0(void *arg0); -extern s32 func_8012ACE0(void *o); -extern void func_8012AD44(s32 *a0, s16 a1); -extern s32 func_8012AD50(void * arg0); -extern void func_8012AD64(s32 *a0, s16 a1); -extern void func_8012AD6C(void *a0); -extern void func_8012AD80(s32 a0); -extern void func_8012ADE4(u8 *a0); -extern s32 *D_80126B78; -extern s32 *D_80126B90; -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80013478(s32 a0, s32 a1); -extern s32 func_8012AE00(s32 a0); -extern s32 func_8012AF0C(s32 a0, s32 a1); -extern s32 func_80134510(s32 arg); -extern s32 func_8012B030(u8 *a0); -extern int func_80047948(int a0); -extern int func_8004787C(int a0); -extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_8012B14C(s32 a0, s32 a1); -extern void func_8012B178(s32 a0, s32 a1); -extern void func_8012B1B4(s32 a0, s32 a1); -extern void func_8012B200(u8 *a0); -extern void func_8012B21C(void *a0); -extern void func_8012B23C(s32 a0); -extern void func_8012B260(u8 *a0); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern void RotMatrixYXZ(void *m, void *p); -extern void func_8012B370(int a0); -extern void func_8004978C(s16 *a0, void *a1); -extern void func_8012B414(int a0); -extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); -extern s32 func_8012B6D4(s16 *a0, s16 *a1); -extern s32 func_8012B70C(s16 *a0, s16 *a1); -extern s32 ratan2(s32 x, s32 y); -extern s32 func_8012B744(void *a0, void *a1); -extern s16 D_80126CB8; -extern s16 D_80126CB4; -extern s32 func_8012B864(s32 a0); -extern s32 func_8012B8A4(s16 *a0); -extern s32 func_8012B8E4(s32 arg0, s32 arg1); -extern s32 func_8012BA10(s32 arg0, s32 arg1); -extern s32 func_8012BB3C(s32 arg0, s32 arg1, u32 arg2, s32 arg3); -extern void Square0(s32 *a0, s32 *a1); -extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1); -extern s16 D_80126CBA; -extern s32 func_8012BCCC(s32 a0); -extern void func_80013350(s32 a0, void *a1); -extern u8 D_80126B5C; -extern void func_8012BD14(s32 a0); -extern s32 func_8012BDBC(s32 a0, s32 a1); -extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2); -extern void func_8012BE98(s32 a0, u16 *a1); -extern void func_8012BE54(s32 a0); -extern s32 func_800132BC(s32 a0, s32 a1); -extern void func_8012BE98(s32 arg0, u16 * arg1); -extern s32 func_8012BEE8(s32 a0); -extern s32 func_8012BF10(s32 a0, s32 a1); -extern void func_8012BF4C(s32 *a0, s32 a1); -extern void func_8012BF54(void *a0); -extern void func_8012BF68(void *a0); -extern s16 D_80126CB0; -extern s32 func_8012BF7C(s16 *a0); -extern s16 D_80126CAC; -extern short D_80126CAE; -extern int func_8012BFA8(short *a0); -extern s32 D_801274D4; -extern s32 D_801274E0; -extern s32 func_8012C044(s32 a0); -extern void func_8012C194(void); -extern void func_8001CFDC(s32 a, s32 b); -extern void func_8012C1B8(void); -extern u8 D_800B3DF0[]; -extern s32 func_8012C1DC(s32 a0); -extern void func_8012C218(void *a0); -extern u8 D_80126720[]; -extern u16 * func_8012C284(u16 *a0); -extern u8 D_80120194[]; -extern s32 func_8012C2D0(void); -extern s32 func_8012C31C(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32 a0, s32 a1); -extern u8 D_80078EAE; -extern s32 func_8012C354(s32 a0, s32 a1); -extern void func_8001C810(s32 a0, s32 a1); -extern s32 func_8012C438(s32 a0, s32 a1); -extern s32 func_8012C890(s32 a0, s32 a1, s32 a2); -extern s32 func_8012C51C(void *a0, s32 a1); -extern s32 func_8012C588(s32 a0, s32 a1); -extern void func_8012C724(s32 a0, s32 a1); -extern s32 func_8012C820(u8 *a0); -extern s32 D_80190A24; -extern s16 D_801270C4; -extern u16 D_801274E4[]; -extern s32 D_8011DB08; -extern s32 func_8012CB64(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); -extern s32 func_8012CC88(s32 a, s32 b, s32 c); -extern u8 D_800D3918[]; -extern void func_8012CBA4(s32 a0); -extern void func_8012CBCC(s32 a0); -extern void func_8012CBF4(s32 a0); -extern void func_8012CC1C(s32 arg0, s32 arg1); -extern void func_8012CC40(s32 arg0, s32 arg1); -extern s32 func_8012CC88(s32 a0, s32 a1, s32 a2); -extern void func_8012CC64(s32 a0, s32 a1); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern s32 func_8012CE2C(s32 a0); -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); -extern void func_8012CFA8(s32 arg0); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_8012D3B4(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012D098(u16 *param_1, u32 param_2); -extern void func_8012D098(); -extern void func_8012D38C(int a0); -extern void func_8012D3AC(void); -extern s32 AddPrim(s32, void *); -extern s32 RotTransPers(s32, s32, s32 *, s32 *); -extern void SetLineF2(void *); -extern void *func_80010A08(s32); -extern void func_8004914C(void *); -extern void func_800491AC(void *); -extern s32 D_800A651C; -extern u8 D_800AF648; -extern s16 D_800B9A02; -extern void func_8012D4B4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_8012D5DC(void); -extern s16 D_80126B98; -extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2); -extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern int func_8012D664(); -extern void func_8012D624(s32 a0); -extern int func_8012D664(int arg0, int arg1, int arg2); -extern s32 func_8012D714(s32 param_1, u32 param_2); -extern void func_8012F568(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void func_8014C978(void); -extern M2C_UNK D_8018D558; -extern M2C_UNK D_8018D560; -extern s32 func_8012DB84(void); -extern s32 func_8012DE2C(s32 a0); -extern s32 func_8012DDA4(void); -extern s32 func_8012DBD0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8012DDA4(); -extern s32 func_8012DF34(s32 a0, s32 a1, s32 a2); -extern s16 D_80126B9A; -extern u8 D_801152A8[]; -extern void func_8012DFBC(void); -extern void func_8012DFCC(void); -extern void func_8012E014(s32 arg0); -extern void func_8012E138(void); -extern void func_8012DFD4(u8 *a0); -extern s32 func_8012E27C(void); -extern void func_8012E284(void); -extern s32 GetTPage(s32, s32, s32, s32); -extern s32 func_8005A600(s32, s32, s32, s32, s32); -extern void func_8012E28C(s32 arg0, s32 arg1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void func_8012E32C(void); -extern s32 func_8012E470(s32 a0); -extern void func_8012E4C8(s32 a0); -extern s32 func_8012E504(s32 a0, s32 a1); -extern s32 func_8012E544(s32 a0); -extern s32 func_8012E57C(s32 a0, s32 a1); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E688(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E88C(u8 *a0); -extern void func_8012E8A8(u8 *a0); -extern void func_8012E8C4(u8 *a0); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8016AA50(int, int); -extern void func_8016B428(int); -extern void func_80019064(void *); -extern int D_8018D568; -extern void func_8012E9C0(int param_1); -extern void func_8012EC04(s32 param_1, s32 param_2, s32 *param_3); -extern s32 func_8002A4FC(s32 a0); -extern s32 func_8012EECC(s32 a0); -extern void func_8012EFB8(s32 a0); -extern void func_8012EF34(s32 a0, s32 a1); -extern void func_8012EF70(s32 a0, s32 a1); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8012F0BC(s32 *a0, s32 *a1, s32 *a2); -extern void RotTransSV(s32 a0, s32 a1, void *a2); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_8012F1A4(s32 *a0, s32 a1, s32 *a2); -extern void func_8012F2E8(s32 a0, s32 a1, s32 a2); -extern s16 D_80126CB6; -extern void func_8012F374(s32 a0, s32 a1); -extern void *memcpy(void *, const void *, u32); -extern u8 D_80126C38; -extern u8 D_80126C40; -extern u16 D_80126B94; -extern u16 D_80126B96; -extern void func_8012F568(s32 param_1, s32 param_2, s32 param_3, s32 param_4, s32 param_5, s32 param_6); -extern void func_80131B14(); -extern void func_80131E00(struct S80131E00 *a0, s32 a1); -extern s32 func_80131A34(s32, s32); -extern void func_80131CA8(int a0, int a1); -extern void func_8012F5F4(s32 arg0); -extern void func_80131C78(s32 a0); -extern void func_8012F68C(s32 arg0); -extern void func_8012F75C(s32 a0); -extern s32 func_8012BEE8(s32); -extern void func_8012F7B4(s32 a0); -extern void func_80131170(); -extern void func_80131CA8(); -extern unsigned char D_8018D584[]; -extern void func_8012F828(int param_1); -extern void func_80131340(s32 a0); -extern void func_8012F87C(s32 a0); -extern void func_80131170(s32 a0, s32 a1, s32 a2); -extern u8 D_8018D590[]; -extern void func_8012F8C8(u8* arg0); -extern void func_8012F91C(s32 a0); -extern s32 func_80131A34(s32 a0, s32 a1); -extern void func_80131CA8(s32 a0, s32 a1); -extern void func_8012F968(s32 param_1); -extern void func_801319E0(s32 a0); -extern s32 func_80143B6C(s32 a0, s32 a1); -extern void func_8012FB54(s32 a0); -extern void func_8012FC30(s32 a0); -extern void func_8012FCA4(int a0); -extern s32 func_8012FCC4(s32 param_1); -extern void func_8012FDA8(int param_1); -extern void func_8012FE70(s32 a0); -extern void func_8012FF00(s32 a0); -extern void func_8012FF4C(s32 a0); -extern void func_80130D48(s32 a0); -extern void func_8012FF98(u8 *a0); -extern s32 func_80131AC8(void *a0); -extern void func_8013001C(void *a0); -extern void func_80130088(void *a0); -extern s32 func_8012BCCC(s32); -extern void func_801300F4(s32 a0); -extern void func_801301E8(u8 *a0); -extern void func_80130278(s32 arg0); -extern void func_80130314(s32 a0); -extern void func_80130360(s32 a0); -extern void func_8012E364(void); -extern void func_801303A0(s32 a0); -extern void func_801303EC(void *a0); -extern void func_80143CD4(s32 a0); -extern void func_800CB0E8(s32 a0); -extern void func_80130438(s32 a0); -extern void func_801319E0(int); -extern int func_80131D68(int, int); -extern int func_8012BEE8(int); -extern void func_80131CA8(int, int); -extern void func_80130514(int param_1); -extern void func_801305CC(u8 *a0); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_80130740(void *a0, u16 *a1); -extern s32 func_801312D0(s32 a0, void *a1); -extern void func_801307B0(s32 a0); -extern void func_80130858(s32 a0); -extern void func_80130898(u8 *a0); -extern void func_801308DC(s32 a0); -extern void func_80166244(); -extern void func_80130974(int param_1); -extern void func_80130AC4(s32 a0); -extern int func_80131A34(int a0, int a1); -extern void func_80130AF0(int param_1); -extern void (*D_8018D5A4[])(void); -extern void func_80130D0C(void *a0); -extern s32 rand(void); -extern u8 D_80078E78[]; -extern u16 D_80078EB2; -extern u16 D_80078EB4; -extern s16 D_8018D5F4[]; -extern s16 D_8018D624[]; -extern s16 D_8018D684[]; -extern s16 D_8018D68C[]; -extern s16 D_8018D6AC[]; -extern void func_80130D48(s32 arg0); -extern void func_80131170(s32 p, s32 b, s32 c); -extern s32 func_801312D0(s32 param_1, void *param_2); -extern void func_8002A04C(s32 a0); -extern void func_801319E0(s32 arg0); -extern s32 func_80131CF4(s32 a0); -extern void (*D_8018D6E4[])(struct S80131E00 *a0); -extern void func_80131E38(u8 *a0); -extern void func_80131E7C(s32 a0); -extern void func_80131EE4(void); -extern void (*D_8018D73C[])(void); -extern void func_80131EEC(void *a0); -extern void (*D_8018D784[])(void); -extern void func_80131F28(void *a0); -extern void (*D_8018D78C[])(void); -extern void func_80131F64(void *a0); -extern void (*D_8018D794[])(void); -extern void func_80131FA0(void *a0); -extern void (*D_8018D79C[])(void); -extern void func_80131FDC(void *a0); -extern void func_801320D0(void); -extern void func_8001C214(int, int); -extern int D_8018D744; -extern void func_801320D8(int param_1); -extern s32 func_80132144(s32 param_1); -extern int D_8018D764; -extern void func_801321B0(int param_1); -extern int D_8018D774; -extern void func_8013221C(int param_1); -extern void func_8005C324(int dst, int src, int n) __asm__("memcpy"); /* Phase-24: 0x8005C324 is named memcpy for overlays (whale needs it); keep the non-builtin C name here (else built-in codegen), emit via asm-label */ -extern void func_801325B8(int a0, int a1, int a2, int a3, int a4); -extern void func_80132288(int *param_1, int *param_2, int param_3); -extern void func_801325B8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_8013240C(s32 a0); -extern void func_8013277C(void); -extern void func_80020F34(s32 a0, s32 a1); -extern void func_80054514(s32 a0, s32 a1); -extern void func_80132784(s32 a0, s32 a1, u32 a2); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_80132DC4(s32 a0, s32 a1, s32 a2); -extern s32 func_80132E6C(s16 *a0); -extern void func_80132EC4(void *a0, s16 a1); -extern s32 func_80132EF4(s32 a0, s32 a1); -extern void func_801330E0(void * param_1, s16 * param_2, s32 param_3); -extern void func_80133060(u8 *a0, s32 *a1, s32 a2); -extern void func_8013339C(short *param_1, short *param_2); -extern s32 func_8013361C(s16 *a0, s16 *a1, s16 *a2, s16 *a3); -extern s32 D_801E5A80; -extern s32 D_801E5A84[]; -extern int D_801E5A88; -extern void func_80136BC4(s32 a0); -extern void func_801336E8(void *a0, int a1, int a2); -extern void func_80136BC4(s32); -extern void func_8013373C(s16 arg0); -extern s32 func_80133784(s32 arg0, void *arg1, s32 arg2); -extern s32 func_80133CD4(); -extern s32 func_8013435C(s16 *a0, s16 *a1, s32 a2, s16 *a3); -extern s32 func_801343C4(s32 angle, s32 p1, s32 p2); -extern s32 func_80134510(s32 param); -extern s32 func_801345F8(s32 arg); -extern s32 func_801347A0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134A28(s32 a0, s32 a1, s32 a2); -extern s32 func_80134C20(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134FB8(s32 a0, s32 a1, s32 a2); -extern s32 func_80135004(s32 arg0, s32 p1, s32 p2); -extern u8 D_8018D7A8; -extern u8 D_8018D7A4; -extern s16 *D_8018D7AC; -extern u8 D_8018D7B0; -extern int D_801E5A80; -extern u16 D_801E5A90; -extern int func_80134A74(int, s16, s16, int); -extern int func_80135168(u16 arg0, u16 *p1, u16 *p2); -extern s16 func_80135480(void *param_1, s32 param_2, s16 *param_3, s16 *param_4); -extern s32 func_80136334(void *arg0, s32 arg1, s32 arg2); -extern s32 func_80136824(s32 arg0, s32 arg1, s32 arg2); -extern s16 *D_8018D7AC; /* holds a pointer value (*(u16**)&D_8018D7AC) */ -extern s32 func_80136A94(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80136C3C(void); -extern void func_80136C1C(void); -extern void func_80136C44(void); -extern void func_80136C4C(void); -extern void (*D_8018D7C0[])(void); -extern void func_80136C54(void); -extern s32 func_80136C90(); -extern void func_80136D00(void); -extern void SetLineG2(void *); -extern void func_80136D08(s32 arg0, s32 arg1); -extern void func_80136EC4(void); -extern short D_800B9A02; -extern u8 D_800A6518[]; -extern void GsSortLine(void *a0, void *a1, s32 a2); -extern void func_80136ECC(s16 a0, s16 a1, s16 a2, s16 a3, u8 r, u8 g, u8 b); -extern void func_80137030(s16 a0, s16 a1); -extern void ApplyMatrixSV(void *m, Svec_801372B0 *in, Svec_801372B0 *out); -extern void aGsSortLine(Gline_801372B0 *p, void *ot, s32 z) __asm__("GsSortLine"); -extern void aF80137030(s32 x, s32 y) __asm__("func_80137030"); -extern void func_80137178(s32 x, s32 y); -extern u8 D_800AF630[]; -extern u16 aD800B9A02 __asm__("D_800B9A02"); -extern void func_801372B0(void); -extern void func_80137614(s32 a0, s32 a1, s32 a2); -extern void func_801375EC(s32 a0, s16 a1); -extern s32 func_801399A8(void); -extern void func_801377B4(s32 a0, s32 a1, s32 a2); -extern s32 func_8013767C(s32 a0); -extern void func_801376E8(int a0, int a1); -extern void func_801376C8(int a0); -extern s32 D_80127524; -extern s32 D_80127528; -extern void func_80137840(s32 a0); -extern void func_80139634(void *); -extern void func_80139DC8(void); -extern s16 D_8012752E; -extern void func_801379D8(void); -extern void func_801379EC(void); -extern s32 D_80127548[]; -extern int D_8018D814; -extern int D_801269F0; -extern void func_80138BE0(int p); -extern void func_80137B80(void); -extern void func_801392FC(); -extern void func_801397B0(s32 a0); -extern void func_80137DD4(s32 a0, u8 *a1, u8 *a2); -extern void func_80139680(s32 a0, u8 *a1); -extern u16 D_800B99D8; -extern void func_80137BD8(s32 a0); -extern unsigned char D_80126A0E; -extern short D_80126A0A; -extern s16 D_801269F4; -extern int D_800A5E60; -extern int func_80137D08(int arg0, int arg1, short arg2); -extern void func_80137FD8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80138948(void *a0); -extern s16 func_80138DB8(s32 a0, u8 a1, s32 a2); -extern void func_80138B88(s32 a0); -extern void func_8013895C(s32 a0); -extern s16 D_80127540[4]; -extern s32 func_80139D04(s32 a0, s32 a1); -extern s32 func_80138DE0(s32 a0, s32 a1, s32 a2); -extern void func_80139B18(s32 a0); -extern void func_80138AB4(s32 a0); -extern void (*D_8018D818[])(void); -extern void func_80138C30(void *a0); -extern void func_8013A9F8(s32 a0, s32 a1); -extern void func_80138D58(s32 a0, u16 a1); -extern s32 func_80014E80(s32 a0, s32 a1); -extern s32 func_8013914C(s32 a0, s32 a1); -extern void func_800599B8(u16 *); -extern u16 D_80127C0C[]; -extern s32 func_80138ED0(u8 *param_1, u32 param_2, u8 *param_3); -extern s32 func_80139220(s32 a0); -extern void func_801391F0(void *a0); -extern void func_801392C8(void *a0); -extern void func_801395D4(void *); -extern s32 GetTPage(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80052460(s32 a0, s32 a1, s32 a2); -extern void func_801392FC(s32 arg0, s32 arg1, u8 *arg2); -extern void func_80059888(void *a0, s32 a1, s32 a2, s32 a3); -extern void func_80139634(void *a0); -extern void func_80139680(s32 arg0, u8 * arg1); -extern void func_8001931C(void); -extern s16 D_8012752C; -extern void func_80139788(void); -extern u8 D_8018D85C; -extern u8 D_8018D8A0; -extern void GsSortSprite(void *a0, u8 *a1, s32 a2); -extern void func_801397B0(s32 arg0); -extern void func_8013A8B0(s32 *a0); -extern void func_80139914(s32 arg0); -extern u16 D_80126A08; -extern s32 D_801269F0; -extern s32 *D_80126A30; -extern void func_80139954(void); -extern s32 D_80126A3C; -extern s32 func_801399F0(s32 a0); -extern s32 D_80127520; -extern void func_80139A34(s32 a0); -extern s32 D_80127530[4]; -extern void func_80139A44(s32 a0, u16 a1); -extern void func_80139A68(s32 a0, u16 a1); -extern void func_80139A8C(s32 a0); -extern void func_80139C7C(u8 *a0); -extern s16 D_8012811A; -extern void func_80139DEC(void); -extern void func_80139DF4(s32 a0); -extern void func_80139E84(s32 a0); -extern void func_80139F0C(s32 a0); -extern void func_80139FBC(struct obj *a0); -extern s32 func_8001B22C(void *a0); -extern void func_80139FE8(void *a0); -extern void func_8013A0A4(struct S8013A0A4 *a0); -extern void func_8013A164(struct S8013A164 *a0); -extern void func_8013A1E8(s32 a0); -extern void func_8013A250(struct S8013A250 *a0); -extern void func_8013A2BC(s32 a0); -extern void func_8013A378(void); -extern u8 D_8011DA80[]; -extern void func_8013A530(); -extern void func_8013A448(void *a0); -extern void func_8013A4C4(struct S8013A4C4 *a0); -extern void func_8013A380(void); -extern void func_80015D4C(); -extern void func_80015F04(); -extern void func_8013AA24(s32 a0, s32 a1); -extern void func_8013A530(int param_1); -extern void func_8013A860(void); -extern s32 func_8013A8BC(void); -extern void func_8013A9B4(s32 a0, s32 a1); -extern s32 func_8013A8FC(s32 arg0); -extern void func_8013AD38(void *a0, s32 a1, void *a2, void *a3); -extern void func_8013B204(s32 a0, s32 a1); -extern void func_8013AF20(); -extern void func_8013B274(s32 a0, s32 a1, void *a2); -extern s32 D_800A5E60; -extern s32 func_8013AB54(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */ -extern u8 D_8018D8E4[]; /* sign table, alt (when a1 < 0xC00) */ -extern void func_8013AD38(void *flag, s32 a1, void *out2, void *out3); -extern void func_8013AF20(u32 *param_1, u16 *param_2, u16 *param_3, u8 *param_4); -extern s16 D_8018D95C, D_8018D95E, D_8018D960, D_8018D962, D_8018D964, D_8018D966; -extern u16 D_800D45F6; -extern s32 func_8016EC0C(s32 a0, s32 a1); /* match-first, arity 2 */ -extern s32 func_8012B4B8(s32 a0); /* match-first, arity 1 */ -extern s32 func_801670E4(s32 a0, s32 a1, s32 a2, s32 a3); /* derive-decl, arity 4 */ -extern s32 func_80169A4C(s32 a0, s32 a1); /* match-first, arity 2 */ -extern s32 func_8016A8FC(s32 a0); /* match-first, arity 1 */ -extern s32 func_8012B8E4(s32 a0, s32 a1); /* match-first, arity 2 */ -extern s32 func_8015E1B8(s32 a0); /* match-first, arity 1 */ -extern s32 func_8015EE08(s32 a0); /* match-first, arity 1 */ -extern s32 func_8015F7D4(s32 a0); /* match-first, arity 1 */ -extern s32 func_80160B34(s32 a0); /* match-first, arity 1 */ -extern s32 func_80165140(s32 a0); /* match-first, arity 1 */ -extern s32 func_80161CD0(s32 a0, s32 a1); /* match-first, arity 2 */ -extern s32 func_80175268(s32 a0); /* match-first, arity 1 */ -extern s32 func_8017EC7C(s32 a0); /* match-first, arity 1 */ -extern s32 func_801809BC(s32 a0, s32 a1); /* match-first, arity 2 */ -extern s32 func_8012DE2C(s32 a0); /* derive-decl, arity 1 */ -extern s32 func_8012DDA4(void); /* derive-decl, arity 0 */ -extern s32 func_801759D8(void); /* derive-decl, arity 0 */ -extern s32 func_80175820(void); /* derive-decl, arity 0 */ -extern s32 func_801758FC(void); /* derive-decl, arity 0 */ -extern s32 D_801E5AF8; -extern s32 D_801269D4; -extern s32 D_801269C8; -extern M2C_UNK D_80062BC0; -extern s8 D_801E5AFC; -extern s8 D_801E5AFD; -extern void func_8013C9C4(void * arg0); -extern s32 D_801E5B1C; -extern s32 D_801E5B10; -extern s32 D_801E5B14; -extern s32 D_801E5B20; -extern void func_8013CABC(void); -extern s32 D_801E5B18; -extern void func_8013CAE8(void); -extern s32 D_801E5B48; -extern s32 D_801E5B4C; -extern void func_8013CB20(void); -extern void func_8013CB5C(void); -extern void func_8013CF68(); -extern s32 D_801E5B28; -extern s32 D_801E5B2C; -extern void func_8013D9B0(void); -extern void func_8013D064(void); -extern s32 func_8013D13C(void); -extern void func_8013D164(void); -extern u8 D_801E7AB2; -extern u8 D_801E7B26; -extern u8 D_801E79B2; -extern u8 D_801E7A7C; -extern u8 D_801E7988; -extern u8 D_801E79B1; -extern s32 D_801E7A80; -extern void func_8013D330(void); -extern void *D_801E5B00; -extern void *D_801E5B04; -extern void *D_801E5B08; -extern s32 D_801E5B30; -extern s32 D_801E5B34; -extern s32 D_801E5B38; -extern s32 D_801E79F4[]; -extern u8 D_8018DA54[]; -extern u8 D_8018DAFC[]; -extern u8 D_8018D9AC[]; -extern u8 D_8018DAA8[]; -extern u8 D_8018DB28[]; -extern u8 D_8018DA00[]; -extern void func_8013D53C(void); -extern void func_8013DD68(void); -extern void func_8013D8FC(void); -extern void func_8013CF68(void); -extern void func_8013D3D4(int param_1, int param_2); -extern s16 *D_801E5B0C; -extern s32 D_801E5B3C; -extern s32 D_801E5B40; -extern s32 D_801E5B44; -extern void func_8013DBE4(int param_1); -extern void func_8013DD68(); -extern s32 D_801E5B24; -extern s32 func_8013E054(void); -extern int SquareRoot12(int a0); -extern int func_8013E064(s16 *a0, s16 *a1); -extern int func_8013E0FC(s16 *a0, s16 *a1); -extern int func_8013E194(s16 *a0, s16 *a1); -extern void Square12(s32 *a0, s32 *a1); -extern s32 func_8013E22C(struct VecA *a0, struct VecB *a1); -extern s32 func_8013E298(s16 *a0); -extern int func_8013E2C4(short *a0); -extern void *D_801274CC; -extern s32 func_8013E410(void); -extern s32 func_8013E448(s32 a0); -extern void func_8013E370(void); -extern s32 (*D_801274D0)(s32); -extern s32 D_801274D8; -extern s32 D_801274DC; -extern s32 func_8013E448(s32 param_1); -extern s32 func_8012C750(s32 a0); -extern u8 *D_801274C8; -extern void func_8013E4B4(void); -extern void func_800D24A0(s32 a0); -extern void func_80141788(void); -extern void *D_8011DB24; -extern s32 func_800D0EC4(void); -extern void func_80141874(void); -extern u8 D_800B9A15; -extern unsigned char D_800B9A13; -extern u16 D_80115110; -extern unsigned short D_80115112; -extern void func_8013E588(void * _arg0); -extern void func_8013E5E8(void); -extern u8 D_80078EC0; -extern u16 D_8011511A; -extern u16 D_80115124; -extern u8 D_80115148[]; -extern u8 D_80115140[]; -extern s32 D_8018E5B4; -extern s32 D_80115188; -extern s16 D_8018E58C; -extern s16 D_8018E58E; -extern void func_8013E83C(void); -extern void func_8013E6AC(void); -extern void func_800D24A0(s32 arg); -extern void func_8013E814(void); -extern void func_8013E83C(); -extern void func_8013E958(); -extern s32 func_80141C50(void); -extern void func_8013F244(void); -extern void func_8013FAF8(s16 a0, s16 a1); -extern void func_8013E958(void); -extern u8 D_801151C8[]; -extern s32 D_801151D0; -extern u16 D_8011511E; -extern s32 D_80115130; -extern s16 D_8011514C; -extern void func_8013EA54(void); -extern s32 func_8013F350(void); /* §30#2 widened: def returns live $v0; callers discard */ -extern s16 func_8014168C(s16 a0); -extern s32 func_8014032C(s32 a0, s32 a1); -extern unsigned char *func_80141CA4(void); -extern short D_80115128; -extern s16 D_8011512A; -extern unsigned char D_8018E590; -extern void func_8013EB7C(void); -extern u16 D_80115112; -extern void func_8013ED6C(void); -extern s32 func_8013EE10(); -extern unsigned short D_80115118; -extern void func_8013F138(void); -extern void func_800D2624(void); -extern unsigned short D_80115114; -extern void func_8013F1BC(void); -extern void func_80141C0C(s32); -/* ==== end §8b carried decl layer ==== */ - -/* func_8013FFD8 — 213 ins, double jump-table, per-location family (134 members). */ - -extern s32 func_80029178(s32 arg); -extern s32 func_800291B4(s32 arg); - -extern short D_80115128; - -s32 func_8013FFD8(s16 arg0, s32 arg1, s32 *arg2) { - - extern u8 D_8018E2B0[]; - extern s32 D_8018E2C8; - extern s16 D_8018E2D4; - extern u8 D_8018E2DB[]; - extern char *D_8018E2DC; - extern s32 D_8018E204[]; - extern s32 D_8018E21C[]; - extern char *D_8018E1D8; - extern s32 D_8018E1EC[]; - extern s32 D_8018E25C; - extern struct packed_word D_8018E260; - extern s32 D_8018E26C[]; - extern s32 D_8010F3C4[]; - extern s32 D_8010EDE8[]; - extern u8 D_80115143; - extern void * D_801E5B5C; - extern void * D_801E5B58; - s32 ret; - - *arg2 = 0x808080; - ret = 0; - - switch (arg0) { /* jtbl_801D8898 */ - case 0: { - s16 s0 = (s16) arg1; - if (s0 < 6) { - if ((((s32 (*)(u8))func_80029178)(D_8018E2B0[s0]) & 0xFF) == 0) { - return 1; - } - ret = D_8018E204[s0]; - } - break; - } - case 1: { - s16 v1 = (s16) arg1; - if (v1 < 4) { - ret = D_8018E21C[v1]; - } - break; - } - case 2: - switch ((*(s16 *)&D_80115128)) { /* jtbl_801D88B8 */ - case 0: { - s16 v1 = (s16) arg1; - if (v1 < 5) { - ret = ((s32 *)&D_8018E1D8)[v1]; - } - break; - } - case 1: { - s16 v1 = (s16) arg1; - if (v1 < 0xC) { - s32 v3 = ((s32 (*)(u8, s32))func_800291B4)(((u8 *)&D_8018E2C8)[v1], arg1) & 0xFF; - if (v3 == 0) { - return 1; - } - ret = D_8010EDE8[v3 * 3]; - } - break; - } - case 2: { - s16 s0 = (s16) arg1; - if (s0 < 6) { - if ((((s32 (*)(u8))func_80029178)((*(u8 * *)&D_801E5B5C)[s0]) & 0xFF) == 0) { - return 1; - } - ret = (*(s32 * *)&D_801E5B58)[s0]; - } - break; - } - case 3: { - s16 s0 = (s16) arg1; - if (s0 < 6) { - if ((((s32 (*)(u8))func_80029178)(((u8 *)&D_8018E2D4)[s0]) & 0xFF) == 0) { - return 1; - } - ret = D_8018E1EC[s0]; - } - break; - } - case 4: { - s16 v1 = (s16) arg1; - if (v1 < 5) { - ret = D_8018E26C[v1]; - } - break; - } - } - break; - case 3: { - s16 t = (s16) arg1; - if (t <= 0) { - s16 s0 = t + D_80115143; - if (s0 != 0) { - if ((((s32 (*)(u8, s32))func_800291B4)(D_8018E2DB[s0], arg1) & 0xFF) == 0) { - *arg2 = 0x804040; - } - ret = D_8010F3C4[s0]; - } else { - ret = D_8018E25C; - } - } - break; - } - case 5: { - s16 v1 = (s16) arg1; - if (v1 < 3) { - ret = ((s32 *)&D_8018E260)[v1]; - } - break; - } - case 6: { - s16 s0 = (s16) arg1; - if (s0 < 0x28) { - s32 idx; - if ((((s32 (*)(u8, s32))func_800291B4)(((u8 *)&D_8018E2DC)[s0], arg1) & 0xFF) == 0) { - *arg2 = 0x804040; - } - idx = s0 + 1; - ret = D_8010F3C4[idx]; - } - break; - } - case 7: { - s16 v1 = (s16) arg1; - if (v1 < 5) { - ret = D_8018E26C[v1]; - } - break; - } - } - return ret; -} - - -extern short D_80115128; -extern u8 D_8018E2B0[]; -extern u8 D_8018E2C8[]; -extern s32 func_80029178(s32 arg); -extern s32 func_800291B4(s32 arg); - - - - -/* indexed data arrays (overlay) */ - - -/* address-return symbols (main RAM) */ - -s32 func_8014032C(s32 param_1, s32 param_2) { - extern int (*D_8018E5F8[])(void); - extern int (*D_8018E5E8[])(void); - extern void * D_8018E304[]; - extern void * D_8018E334[]; - extern void * D_8018E344[]; - extern void * D_8018E31C[]; - extern u8 D_8018E2D4[]; - extern void * D_8018E35C[]; - extern void * D_8018E374[]; - extern void * D_8018E388[]; - extern u8 D_8018E2DB[]; - extern u8 * D_801E5B5C; - extern u8 D_801117EC[]; - extern u8 D_801117B4[]; - extern u8 D_80112BC8[]; - extern u8 D_80112B58[]; - extern u8 D_80112BA8[]; - extern u8 D_80112B90[]; - - - int cVar1; - unsigned int uVar3; - void *result; - - result = D_801117EC; - switch (((short)param_1)) { - case 0: - if (((s32(*)(s32))func_80029178)(D_8018E2B0[((short)param_2)]) & 0xFF) { - result = D_8018E304[((short)param_2)]; - } - break; - case 1: - result = D_8018E334[((short)param_2)]; - break; - case 2: - switch ((*(s16*)&D_80115128)) { - case 0: - if (D_8018E5F8[((short)param_2)]() == 0) { - ((short)param_2) = 5; - } else if (D_8018E5E8[((short)param_2)]() != 0) { - ((short)param_2) = 4; - } - result = D_8018E344[((short)param_2)]; - break; - case 1: - goto case5; - case 2: - if (((s32(*)(s32))func_80029178)(D_801E5B5C[((short)param_2)]) & 0xFF) { - if (((short)param_2) == 5 && (((s32(*)(s32))func_80029178)(0x1C) & 0xFF)) { - result = D_801117B4; - } else { - result = D_8018E31C[((short)param_2)]; - } - } - break; - case 3: - if (((s32(*)(s32))func_80029178)(D_8018E2D4[((short)param_2)]) & 0xFF) { - result = D_8018E35C[((short)param_2)]; - } - break; - case 4: - result = D_8018E374[((short)param_2)]; - break; - } - break; - case 5: - case5: - uVar3 = ((s32(*)(s32))func_800291B4)(D_8018E2C8[((short)param_2)]) & 0xFF; - if (uVar3 != 0) { - result = D_8018E388[uVar3]; - } - break; - case 3: - if (((short)param_2) != 0) { - cVar1 = ((s32(*)(s32))func_800291B4)(D_8018E2DB[((short)param_2)]) & 0xFF; - if (cVar1 == 0) { - result = D_80112B58; - } else { - result = D_80112BA8; - if (cVar1 == 1) { - result = D_80112B90; - } - } - } else { - result = D_80112BC8; - } - break; - case 6: - case 7: - default: - result = 0; - break; - } - return result; -} diff --git a/src/ov_SC04_019/ov_SC04_019_jr_80140608.c b/src/ov_SC04_019/ov_SC04_019_jr_80140608.c deleted file mode 100644 index 18a91abbc..000000000 --- a/src/ov_SC04_019/ov_SC04_019_jr_80140608.c +++ /dev/null @@ -1,2528 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ - /* 8-byte element, cmd @ +4 */ - /* list ptr @ +0x90 */ - /* size 8, alignment 1 -> unaligned copy */ - /* 0x5C copy unit, align 4 */ - /* -> frame 0xA0 (gcc adds 0x10 for the struct-copy) */ -extern void func_80128288(void); -extern void func_80128158(void); -extern void func_801285E4(void); -extern void func_80128178(void); -extern void func_80128678(void); -extern void func_80128198(void); -extern void func_80128714(void); -extern void func_801281B8(void); -extern void func_8013E67C(void); -extern void func_801281D8(void); -extern void func_8013E558(void); -extern void func_801281F8(void); -extern s32 D_801E4434; -extern s32 func_80128218(void); -extern void func_80128A28(void); -extern void func_80128228(void); -extern void func_80128AF4(void); -extern void func_80128248(void); -extern void func_801282EC(void); -extern void func_80128268(void); -extern u16 D_800B99F6; -extern void (*D_8018D4AC[])(void); -extern void func_80011B7C(int); -extern void func_801282CC(void); -extern void func_8001C0C8(void); -extern void func_80015310(void); -extern void func_80129258(void); -extern void func_801378F0(void); -extern void func_80010E14(void); -extern s16 currentLocationId; -extern s32 func_80029504(void); -extern s32 func_800CF854(s32); -extern s32 func_80128998(void); -extern s32 func_801289F0(void); -extern s32 func_801288E8(s32); -extern s32 func_80128940(s32); -extern s32 func_80029178(s32); -extern s32 func_801288B0(void); -extern void func_80011C10(void); -extern void func_8012832C(void); -extern void func_80129220(void); -extern void func_80011E24(void); -extern void func_80128C14(void); -extern void func_8002AEF8(void); -extern void func_800CFBBC(void); -extern void SsUtReverbOff(void); -extern void func_8013C98C(void); -extern void func_80129C40(s32 a0); -extern void func_800D0630(void); -extern void func_80145CEC(void); -extern void func_80144B9C(void); -extern u8 D_800B9A17; -extern u8 D_800B9A10; -extern void func_80128420(void); -extern s32 func_800D0588(void); -extern void func_801284B8(void); -extern void func_80175308(void); -extern void func_8016E8F0(void); -extern void func_80175494(void); -extern u8 D_800B9A64; -extern void func_801284F0(void); -extern void func_80146074(void); -extern void func_8012853C(void); -extern void func_80178608(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern s32 func_80011A3C(void); -extern short currentLocationId; -extern short D_800B99F2; -extern void func_80128564(void); -extern u8 D_800B9A11; -extern void func_801285D4(void); -extern s32 func_800D18DC(void); -extern void func_8014607C(void); -extern void func_801287B8(void); -extern s32 D_801E5A14; -extern void func_80029444(void); -extern void func_800D1754(void); -extern s32 D_80126B58; -extern s32 D_801E7AB8; -extern u16 D_800B99DA; -extern void func_80129CF8(void); -extern void func_8017849C(void); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_801505FC(s32 a0); -extern void func_801508B4(void *a0); -extern void func_80165E90(void); -extern void func_801627E8(void); -extern void func_80162B1C(void); -extern void func_80165CA0(void); -extern void func_80129010(void); -extern void func_8013CA14(void); -extern void func_800190AC(void); -extern void func_8012956C(void); -extern void func_8016E95C(void); -extern void func_801754A8(void); -extern void func_8013BC7C(void); -extern void func_8013BCDC(void); -extern void func_801379FC(void); -extern void func_8001212C(void); -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); -extern u8 D_800AEFD0; -extern int D_800C7C60; -extern int *D_800C7C64; -extern int D_800A2E20; -extern int D_800AF558; -extern int D_801E4434; -extern int func_801288E8(int arg0); -extern u8 D_800AF560; -extern s32 func_80128940(s32 _arg0); -extern int D_800AECB0; -extern u8 D_800AECB8; -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4); -extern s16 D_800B9A00; -extern M2C_UNK (*D_8018D1E0)(); -extern s16 (*D_8018D1E4)(); -extern M2C_UNK (*D_8018D1EC)(); -extern s32 (*D_8018D1F0)(); -extern s32 D_801E5A10; -extern void func_80010AE0(s32 a0); -extern void func_80018450(s32 a0, s32 a1); -extern void func_800183E0(s32 a0); -extern void func_80128D60(s32 a0, s32 *a1, s32 *a2); -extern s32 func_80128DB4(s32 a0, s32 *a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern M2C_UNK D_801E4438; -extern void func_80128FAC(u16 *arg0); -extern s16 D_8011DB2C; -extern s16 D_8011DB30; -extern s32 D_80126AEC; -extern u8 *func_8012913C(s32 a0); -extern u8 * func_801290DC(s32 a0, u8 *a1); -extern void func_8001D074(s32 a, s32 b); -extern u8 *func_801291C0(void); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 * func_8012913C(s32 arg0); -extern void func_80016714(void *a0, s32 a1); -extern u8 * func_801291C0(void); -extern void func_80129248(s16 a0); -extern void func_801292C8(u8 *a0); -extern void func_8012927C(void); -extern void func_8012931C(struct vec *a0); -extern void func_80129350(s32 a0, s32 a1); -extern void func_80129374(s32 a0, s32 a1); -extern s16 D_800B9AAC[]; -extern s16 D_800B9AAE[]; -extern s16 D_800B9AB0[]; -extern s16 D_800B9AB2[]; -extern s16 D_800B9AB4[]; -extern s16 D_800B9AB6[]; -extern s16 D_800B9AB8[]; -extern s16 D_800B9ABA[]; -extern void func_80129398(void); -extern s16 D_80114EE0; -extern void func_80129428(void); -extern void func_8012943C(void); -extern s32 D_8005128C; -extern u8 D_800B9A78; -extern void func_801298F4(void *arg0); -extern void func_801299C8(s32 a, s32 b, s32 c); -extern void func_8012944C(void); -extern unsigned short D_800B99F0; -extern void func_8012A328(void); -extern void func_80053308(s32); -extern s32 func_80012F74(s32, s32, s32, s32); /* canonical s32 (engine_core); (s16)-cast the return for the sll/sra */ -extern void GsSetRefView2L(void *); -extern s8 D_801150D6; /* canonical (engine_core macro): s8 — access via *(u8*)& for lbu */ -extern u8 D_80127504; -extern s32 D_80126E60[]; -extern s32 D_80126F04[]; -extern u8 D_80126948[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_80126FA8[]; -extern struct BigCopy D_80126DB8;/* canonical (engine_core macro): struct BigCopy — (s32*)& at use */ -extern u8 D_800AF630[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_800AE688[]; -extern s32 D_801151D4; /* canonical (10 siblings): scalar s32 — store (s32)ptr */ -extern void func_8012A018(s32 a, s32 b); -extern void func_80129FF4(void); -extern s16 D_80126940; -extern s16 D_80126942; -extern s16 D_80126944; -extern void func_8012A048(void *a0, s32 a1, u8 a2); -extern void *memcpy(void *, const void *, unsigned int); -extern void func_8012A094(s32 a0); -extern void func_8012A100(s8 a0); -extern void func_8012A0E0(void); -extern s8 D_801150D6; -extern s32 D_80120204; -extern s32 D_80120200; -extern s32 D_8012020C; -extern s32 D_80120208; -extern s16 D_80120218; -extern s16 D_80120210; -extern s16 D_8012021A; -extern s16 D_80120212; -extern s16 D_8012021C; -extern s16 D_80120214; -extern s16 D_80120226; -extern s16 D_80120220; -extern s16 D_80120228; -extern s16 D_80120222; -extern s16 D_8012022A; -extern s16 D_80120224; -extern s32 D_80120294; -extern s16 D_80120298; -extern s16 D_8012029A; -extern void func_8012A110(void); -extern s8 D_801152C0; -extern void func_8012A2F4(void); -extern s16 D_80127080; -extern s16 D_801152C2; -extern void func_8012A304(s32 a0, s32 a1); -extern s32 D_801151D4; -extern struct BigCopy D_80126DB8; -extern struct BigCopy D_80114EE8; -extern void func_8012A4BC(void); -extern void func_8012A598(void *a0); -extern void func_8012A568(void (*a0)(void)); -extern void func_8012A62C(s32); -extern void func_8012A5F8(void (*a0)(void), s32 a1); -extern void func_8012A62C(s32 a0); -extern void func_8012A7D4(void *a0, void *a1); -extern s32 func_8012A6D0(void *a0, void *a1); -extern s16 func_8012A68C(void); -extern s16 func_8012A79C(s16 *a0, s16 *a1); -extern s16 func_8012A758(void); -extern s32 ratan2(s32 a0, s32 a1); -extern void func_8012A7D4(void *arg0, void *arg1); -extern void func_8012AAAC(); -extern void func_8012A828(s32 a0, void * a1); -extern int func_8012ACE0(void *a0); -extern void func_8012A860(void *a0, int a1); -extern void func_8012A8B0(u8 *a0, s32 a1); -extern void func_8012A8E8(void); -extern u8 D_801202A0[]; -extern u16 D_801270C0; -extern void func_8012A988(u8 *a0); -extern void func_8012A908(void); -extern s32 func_8012ACE0(void *a0); -extern M2C_UNK D_8018D540; -extern void func_8012ACA0(void *arg0); -extern s32 func_8012ACE0(void *o); -extern void func_8012AD44(s32 *a0, s16 a1); -extern s32 func_8012AD50(void * arg0); -extern void func_8012AD64(s32 *a0, s16 a1); -extern void func_8012AD6C(void *a0); -extern void func_8012AD80(s32 a0); -extern void func_8012ADE4(u8 *a0); -extern s32 *D_80126B78; -extern s32 *D_80126B90; -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80013478(s32 a0, s32 a1); -extern s32 func_8012AE00(s32 a0); -extern s32 func_8012AF0C(s32 a0, s32 a1); -extern s32 func_80134510(s32 arg); -extern s32 func_8012B030(u8 *a0); -extern int func_80047948(int a0); -extern int func_8004787C(int a0); -extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_8012B14C(s32 a0, s32 a1); -extern void func_8012B178(s32 a0, s32 a1); -extern void func_8012B1B4(s32 a0, s32 a1); -extern void func_8012B200(u8 *a0); -extern void func_8012B21C(void *a0); -extern void func_8012B23C(s32 a0); -extern void func_8012B260(u8 *a0); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern void RotMatrixYXZ(void *m, void *p); -extern void func_8012B370(int a0); -extern void func_8004978C(s16 *a0, void *a1); -extern void func_8012B414(int a0); -extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); -extern s32 func_8012B6D4(s16 *a0, s16 *a1); -extern s32 func_8012B70C(s16 *a0, s16 *a1); -extern s32 ratan2(s32 x, s32 y); -extern s32 func_8012B744(void *a0, void *a1); -extern s16 D_80126CB8; -extern s16 D_80126CB4; -extern s32 func_8012B864(s32 a0); -extern s32 func_8012B8A4(s16 *a0); -extern s32 func_8012B8E4(s32 arg0, s32 arg1); -extern s32 func_8012BA10(s32 arg0, s32 arg1); -extern s32 func_8012BB3C(s32 arg0, s32 arg1, u32 arg2, s32 arg3); -extern void Square0(s32 *a0, s32 *a1); -extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1); -extern s16 D_80126CBA; -extern s32 func_8012BCCC(s32 a0); -extern void func_80013350(s32 a0, void *a1); -extern u8 D_80126B5C; -extern void func_8012BD14(s32 a0); -extern s32 func_8012BDBC(s32 a0, s32 a1); -extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2); -extern void func_8012BE98(s32 a0, u16 *a1); -extern void func_8012BE54(s32 a0); -extern s32 func_800132BC(s32 a0, s32 a1); -extern void func_8012BE98(s32 arg0, u16 * arg1); -extern s32 func_8012BEE8(s32 a0); -extern s32 func_8012BF10(s32 a0, s32 a1); -extern void func_8012BF4C(s32 *a0, s32 a1); -extern void func_8012BF54(void *a0); -extern void func_8012BF68(void *a0); -extern s16 D_80126CB0; -extern s32 func_8012BF7C(s16 *a0); -extern s16 D_80126CAC; -extern short D_80126CAE; -extern int func_8012BFA8(short *a0); -extern s32 D_801274D4; -extern s32 D_801274E0; -extern s32 func_8012C044(s32 a0); -extern void func_8012C194(void); -extern void func_8001CFDC(s32 a, s32 b); -extern void func_8012C1B8(void); -extern u8 D_800B3DF0[]; -extern s32 func_8012C1DC(s32 a0); -extern void func_8012C218(void *a0); -extern u8 D_80126720[]; -extern u16 * func_8012C284(u16 *a0); -extern u8 D_80120194[]; -extern s32 func_8012C2D0(void); -extern s32 func_8012C31C(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32 a0, s32 a1); -extern u8 D_80078EAE; -extern s32 func_8012C354(s32 a0, s32 a1); -extern void func_8001C810(s32 a0, s32 a1); -extern s32 func_8012C438(s32 a0, s32 a1); -extern s32 func_8012C890(s32 a0, s32 a1, s32 a2); -extern s32 func_8012C51C(void *a0, s32 a1); -extern s32 func_8012C588(s32 a0, s32 a1); -extern void func_8012C724(s32 a0, s32 a1); -extern s32 func_8012C820(u8 *a0); -extern s32 D_80190A24; -extern s16 D_801270C4; -extern u16 D_801274E4[]; -extern s32 D_8011DB08; -extern s32 func_8012CB64(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); -extern s32 func_8012CC88(s32 a, s32 b, s32 c); -extern u8 D_800D3918[]; -extern void func_8012CBA4(s32 a0); -extern void func_8012CBCC(s32 a0); -extern void func_8012CBF4(s32 a0); -extern void func_8012CC1C(s32 arg0, s32 arg1); -extern void func_8012CC40(s32 arg0, s32 arg1); -extern s32 func_8012CC88(s32 a0, s32 a1, s32 a2); -extern void func_8012CC64(s32 a0, s32 a1); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern s32 func_8012CE2C(s32 a0); -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); -extern void func_8012CFA8(s32 arg0); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_8012D3B4(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012D098(u16 *param_1, u32 param_2); -extern void func_8012D098(); -extern void func_8012D38C(int a0); -extern void func_8012D3AC(void); -extern s32 AddPrim(s32, void *); -extern s32 RotTransPers(s32, s32, s32 *, s32 *); -extern void SetLineF2(void *); -extern void *func_80010A08(s32); -extern void func_8004914C(void *); -extern void func_800491AC(void *); -extern s16 D_800B9A02; -extern void func_8012D4B4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_8012D5DC(void); -extern s16 D_80126B98; -extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2); -extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern int func_8012D664(); -extern void func_8012D624(s32 a0); -extern int func_8012D664(int arg0, int arg1, int arg2); -extern s32 func_8012D714(s32 param_1, u32 param_2); -extern void func_8012F568(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void func_8014C978(void); -extern M2C_UNK D_8018D558; -extern M2C_UNK D_8018D560; -extern s32 func_8012DB84(void); -extern s32 func_8012DE2C(s32 a0); -extern s32 func_8012DDA4(void); -extern s32 func_8012DBD0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8012DDA4(); -extern s32 func_8012DF34(s32 a0, s32 a1, s32 a2); -extern s16 D_80126B9A; -extern u8 D_801152A8[]; -extern void func_8012DFBC(void); -extern void func_8012DFCC(void); -extern void func_8012E014(s32 arg0); -extern void func_8012E138(void); -extern void func_8012DFD4(u8 *a0); -extern s32 func_8012E27C(void); -extern void func_8012E284(void); -extern s32 GetTPage(s32, s32, s32, s32); -extern s32 func_8005A600(s32, s32, s32, s32, s32); -extern void func_8012E28C(s32 arg0, s32 arg1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void func_8012E32C(void); -extern s32 func_8012E470(s32 a0); -extern void func_8012E4C8(s32 a0); -extern s32 func_8012E504(s32 a0, s32 a1); -extern s32 func_8012E544(s32 a0); -extern s32 func_8012E57C(s32 a0, s32 a1); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E688(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E88C(u8 *a0); -extern void func_8012E8A8(u8 *a0); -extern void func_8012E8C4(u8 *a0); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8016AA50(int, int); -extern void func_8016B428(int); -extern void func_80019064(void *); -extern int D_8018D568; -extern void func_8012E9C0(int param_1); -extern void func_8012EC04(s32 param_1, s32 param_2, s32 *param_3); -extern s32 func_8002A4FC(s32 a0); -extern s32 func_8012EECC(s32 a0); -extern void func_8012EFB8(s32 a0); -extern void func_8012EF34(s32 a0, s32 a1); -extern void func_8012EF70(s32 a0, s32 a1); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8012F0BC(s32 *a0, s32 *a1, s32 *a2); -extern void RotTransSV(s32 a0, s32 a1, void *a2); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_8012F1A4(s32 *a0, s32 a1, s32 *a2); -extern void func_8012F2E8(s32 a0, s32 a1, s32 a2); -extern s16 D_80126CB6; -extern void func_8012F374(s32 a0, s32 a1); -extern void *memcpy(void *, const void *, u32); -extern u8 D_80126C38; -extern u8 D_80126C40; -extern u16 D_80126B94; -extern u16 D_80126B96; -extern void func_8012F568(s32 param_1, s32 param_2, s32 param_3, s32 param_4, s32 param_5, s32 param_6); -extern void func_80131B14(); -extern void func_80131E00(struct S80131E00 *a0, s32 a1); -extern s32 func_80131A34(s32, s32); -extern void func_80131CA8(int a0, int a1); -extern void func_8012F5F4(s32 arg0); -extern void func_80131C78(s32 a0); -extern void func_8012F68C(s32 arg0); -extern void func_8012F75C(s32 a0); -extern s32 func_8012BEE8(s32); -extern void func_8012F7B4(s32 a0); -extern void func_80131170(); -extern void func_80131CA8(); -extern unsigned char D_8018D584[]; -extern void func_8012F828(int param_1); -extern void func_80131340(s32 a0); -extern void func_8012F87C(s32 a0); -extern void func_80131170(s32 a0, s32 a1, s32 a2); -extern u8 D_8018D590[]; -extern void func_8012F8C8(u8* arg0); -extern void func_8012F91C(s32 a0); -extern s32 func_80131A34(s32 a0, s32 a1); -extern void func_80131CA8(s32 a0, s32 a1); -extern void func_8012F968(s32 param_1); -extern void func_801319E0(s32 a0); -extern s32 func_80143B6C(s32 a0, s32 a1); -extern void func_8012FB54(s32 a0); -extern void func_8012FC30(s32 a0); -extern void func_8012FCA4(int a0); -extern s32 func_8012FCC4(s32 param_1); -extern void func_8012FDA8(int param_1); -extern void func_8012FE70(s32 a0); -extern void func_8012FF00(s32 a0); -extern void func_8012FF4C(s32 a0); -extern void func_80130D48(s32 a0); -extern void func_8012FF98(u8 *a0); -extern s32 func_80131AC8(void *a0); -extern void func_8013001C(void *a0); -extern void func_80130088(void *a0); -extern s32 func_8012BCCC(s32); -extern void func_801300F4(s32 a0); -extern void func_801301E8(u8 *a0); -extern void func_80130278(s32 arg0); -extern void func_80130314(s32 a0); -extern void func_80130360(s32 a0); -extern void func_8012E364(void); -extern void func_801303A0(s32 a0); -extern void func_801303EC(void *a0); -extern void func_80143CD4(s32 a0); -extern void func_800CB0E8(s32 a0); -extern void func_80130438(s32 a0); -extern void func_801319E0(int); -extern int func_80131D68(int, int); -extern int func_8012BEE8(int); -extern void func_80131CA8(int, int); -extern void func_80130514(int param_1); -extern void func_801305CC(u8 *a0); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_80130740(void *a0, u16 *a1); -extern s32 func_801312D0(s32 a0, void *a1); -extern void func_801307B0(s32 a0); -extern void func_80130858(s32 a0); -extern void func_80130898(u8 *a0); -extern void func_801308DC(s32 a0); -extern void func_80166244(); -extern void func_80130974(int param_1); -extern void func_80130AC4(s32 a0); -extern int func_80131A34(int a0, int a1); -extern void func_80130AF0(int param_1); -extern void (*D_8018D5A4[])(void); -extern void func_80130D0C(void *a0); -extern s32 rand(void); -extern u8 D_80078E78[]; -extern u16 D_80078EB2; -extern u16 D_80078EB4; -extern s16 D_8018D5F4[]; -extern s16 D_8018D624[]; -extern s16 D_8018D684[]; -extern s16 D_8018D68C[]; -extern s16 D_8018D6AC[]; -extern void func_80130D48(s32 arg0); -extern void func_80131170(s32 p, s32 b, s32 c); -extern s32 func_801312D0(s32 param_1, void *param_2); -extern void func_8002A04C(s32 a0); -extern void func_801319E0(s32 arg0); -extern s32 func_80131CF4(s32 a0); -extern void (*D_8018D6E4[])(struct S80131E00 *a0); -extern void func_80131E38(u8 *a0); -extern void func_80131E7C(s32 a0); -extern void func_80131EE4(void); -extern void (*D_8018D73C[])(void); -extern void func_80131EEC(void *a0); -extern void (*D_8018D784[])(void); -extern void func_80131F28(void *a0); -extern void (*D_8018D78C[])(void); -extern void func_80131F64(void *a0); -extern void (*D_8018D794[])(void); -extern void func_80131FA0(void *a0); -extern void (*D_8018D79C[])(void); -extern void func_80131FDC(void *a0); -extern void func_801320D0(void); -extern void func_8001C214(int, int); -extern int D_8018D744; -extern void func_801320D8(int param_1); -extern s32 func_80132144(s32 param_1); -extern int D_8018D764; -extern void func_801321B0(int param_1); -extern int D_8018D774; -extern void func_8013221C(int param_1); -extern void func_8005C324(int dst, int src, int n) __asm__("memcpy"); /* Phase-24: 0x8005C324 is named memcpy for overlays (whale needs it); keep the non-builtin C name here (else built-in codegen), emit via asm-label */ -extern void func_801325B8(int a0, int a1, int a2, int a3, int a4); -extern void func_80132288(int *param_1, int *param_2, int param_3); -extern void func_801325B8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_8013240C(s32 a0); -extern void func_8013277C(void); -extern void func_80020F34(s32 a0, s32 a1); -extern void func_80054514(s32 a0, s32 a1); -extern void func_80132784(s32 a0, s32 a1, u32 a2); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_80132DC4(s32 a0, s32 a1, s32 a2); -extern s32 func_80132E6C(s16 *a0); -extern void func_80132EC4(void *a0, s16 a1); -extern s32 func_80132EF4(s32 a0, s32 a1); -extern void func_801330E0(void * param_1, s16 * param_2, s32 param_3); -extern void func_80133060(u8 *a0, s32 *a1, s32 a2); -extern void func_8013339C(short *param_1, short *param_2); -extern s32 func_8013361C(s16 *a0, s16 *a1, s16 *a2, s16 *a3); -extern s32 D_801E5A80; -extern s32 D_801E5A84[]; -extern int D_801E5A88; -extern void func_80136BC4(s32 a0); -extern void func_801336E8(void *a0, int a1, int a2); -extern void func_80136BC4(s32); -extern void func_8013373C(s16 arg0); -extern s32 func_80133784(s32 arg0, void *arg1, s32 arg2); -extern s32 func_80133CD4(); -extern s32 func_8013435C(s16 *a0, s16 *a1, s32 a2, s16 *a3); -extern s32 func_801343C4(s32 angle, s32 p1, s32 p2); -extern s32 func_80134510(s32 param); -extern s32 func_801345F8(s32 arg); -extern s32 func_801347A0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134A28(s32 a0, s32 a1, s32 a2); -extern s32 func_80134C20(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134FB8(s32 a0, s32 a1, s32 a2); -extern s32 func_80135004(s32 arg0, s32 p1, s32 p2); -extern u8 D_8018D7A8; -extern u8 D_8018D7A4; -extern s16 *D_8018D7AC; -extern u8 D_8018D7B0; -extern int D_801E5A80; -extern u16 D_801E5A90; -extern int func_80134A74(int, s16, s16, int); -extern int func_80135168(u16 arg0, u16 *p1, u16 *p2); -extern s16 func_80135480(void *param_1, s32 param_2, s16 *param_3, s16 *param_4); -extern s32 func_80136334(void *arg0, s32 arg1, s32 arg2); -extern s32 func_80136824(s32 arg0, s32 arg1, s32 arg2); -extern s16 *D_8018D7AC; /* holds a pointer value (*(u16**)&D_8018D7AC) */ -extern s32 func_80136A94(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80136C3C(void); -extern void func_80136C1C(void); -extern void func_80136C44(void); -extern void func_80136C4C(void); -extern void (*D_8018D7C0[])(void); -extern void func_80136C54(void); -extern s32 func_80136C90(); -extern void func_80136D00(void); -extern void SetLineG2(void *); -extern void func_80136D08(s32 arg0, s32 arg1); -extern void func_80136EC4(void); -extern short D_800B9A02; -extern u8 D_800A6518[]; -extern void GsSortLine(void *a0, void *a1, s32 a2); -extern void func_80136ECC(s16 a0, s16 a1, s16 a2, s16 a3, u8 r, u8 g, u8 b); -extern void func_80137030(s16 a0, s16 a1); -extern void ApplyMatrixSV(void *m, Svec_801372B0 *in, Svec_801372B0 *out); -extern void aGsSortLine(Gline_801372B0 *p, void *ot, s32 z) __asm__("GsSortLine"); -extern void aF80137030(s32 x, s32 y) __asm__("func_80137030"); -extern void func_80137178(s32 x, s32 y); -extern u8 D_800AF630[]; -extern u16 aD800B9A02 __asm__("D_800B9A02"); -extern void func_801372B0(void); -extern void func_80137614(s32 a0, s32 a1, s32 a2); -extern void func_801375EC(s32 a0, s16 a1); -extern s32 func_801399A8(void); -extern void func_801377B4(s32 a0, s32 a1, s32 a2); -extern s32 func_8013767C(s32 a0); -extern void func_801376E8(int a0, int a1); -extern void func_801376C8(int a0); -extern s32 D_80127524; -extern s32 D_80127528; -extern void func_80137840(s32 a0); -extern void func_80139634(void *); -extern void func_80139DC8(void); -extern s16 D_8012752E; -extern void func_801379D8(void); -extern void func_801379EC(void); -extern s32 D_80127548[]; -extern int D_8018D814; -extern int D_801269F0; -extern void func_80138BE0(int p); -extern void func_80137B80(void); -extern void func_801392FC(); -extern void func_801397B0(s32 a0); -extern void func_80137DD4(s32 a0, u8 *a1, u8 *a2); -extern void func_80139680(s32 a0, u8 *a1); -extern u16 D_800B99D8; -extern void func_80137BD8(s32 a0); -extern unsigned char D_80126A0E; -extern short D_80126A0A; -extern s16 D_801269F4; -extern int D_800A5E60; -extern int func_80137D08(int arg0, int arg1, short arg2); -extern void func_80137FD8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80138948(void *a0); -extern s16 func_80138DB8(s32 a0, u8 a1, s32 a2); -extern void func_80138B88(s32 a0); -extern void func_8013895C(s32 a0); -extern s16 D_80127540[4]; -extern s32 func_80139D04(s32 a0, s32 a1); -extern s32 func_80138DE0(s32 a0, s32 a1, s32 a2); -extern void func_80139B18(s32 a0); -extern void func_80138AB4(s32 a0); -extern void (*D_8018D818[])(void); -extern void func_80138C30(void *a0); -extern void func_8013A9F8(s32 a0, s32 a1); -extern void func_80138D58(s32 a0, u16 a1); -extern s32 func_80014E80(s32 a0, s32 a1); -extern s32 func_8013914C(s32 a0, s32 a1); -extern void func_800599B8(u16 *); -extern u16 D_80127C0C[]; -extern s32 func_80138ED0(u8 *param_1, u32 param_2, u8 *param_3); -extern s32 func_80139220(s32 a0); -extern void func_801391F0(void *a0); -extern void func_801392C8(void *a0); -extern void func_801395D4(void *); -extern s32 GetTPage(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80052460(s32 a0, s32 a1, s32 a2); -extern void func_801392FC(s32 arg0, s32 arg1, u8 *arg2); -extern void func_80059888(void *a0, s32 a1, s32 a2, s32 a3); -extern void func_80139634(void *a0); -extern void func_80139680(s32 arg0, u8 * arg1); -extern void func_8001931C(void); -extern s16 D_8012752C; -extern void func_80139788(void); -extern u8 D_8018D85C; -extern u8 D_8018D8A0; -extern void GsSortSprite(void *a0, u8 *a1, s32 a2); -extern void func_801397B0(s32 arg0); -extern void func_8013A8B0(s32 *a0); -extern void func_80139914(s32 arg0); -extern u16 D_80126A08; -extern s32 D_801269F0; -extern s32 *D_80126A30; -extern void func_80139954(void); -extern s32 D_80126A3C; -extern s32 func_801399F0(s32 a0); -extern s32 D_80127520; -extern void func_80139A34(s32 a0); -extern s32 D_80127530[4]; -extern void func_80139A44(s32 a0, u16 a1); -extern void func_80139A68(s32 a0, u16 a1); -extern void func_80139A8C(s32 a0); -extern void func_80139C7C(u8 *a0); -extern s16 D_8012811A; -extern void func_80139DEC(void); -extern void func_80139DF4(s32 a0); -extern void func_80139E84(s32 a0); -extern void func_80139F0C(s32 a0); -extern void func_80139FBC(struct obj *a0); -extern s32 func_8001B22C(void *a0); -extern void func_80139FE8(void *a0); -extern void func_8013A0A4(struct S8013A0A4 *a0); -extern void func_8013A164(struct S8013A164 *a0); -extern void func_8013A1E8(s32 a0); -extern void func_8013A250(struct S8013A250 *a0); -extern void func_8013A2BC(s32 a0); -extern void func_8013A378(void); -extern u8 D_8011DA80[]; -extern void func_8013A530(); -extern void func_8013A448(void *a0); -extern void func_8013A4C4(struct S8013A4C4 *a0); -extern void func_8013A380(void); -extern void func_80015D4C(); -extern void func_80015F04(); -extern void func_8013AA24(s32 a0, s32 a1); -extern void func_8013A530(int param_1); -extern void func_8013A860(void); -extern s32 func_8013A8BC(void); -extern void func_8013A9B4(s32 a0, s32 a1); -extern s32 func_8013A8FC(s32 arg0); -extern void func_8013AD38(void *a0, s32 a1, void *a2, void *a3); -extern void func_8013B204(s32 a0, s32 a1); -extern void func_8013AF20(); -extern void func_8013B274(s32 a0, s32 a1, void *a2); -extern s32 D_800A5E60; -extern s32 func_8013AB54(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */ -extern u8 D_8018D8E4[]; /* sign table, alt (when a1 < 0xC00) */ -extern void func_8013AD38(void *flag, s32 a1, void *out2, void *out3); -extern void func_8013AF20(u32 *param_1, u16 *param_2, u16 *param_3, u8 *param_4); -extern s16 D_8018D95C, D_8018D95E, D_8018D960, D_8018D962, D_8018D964, D_8018D966; -extern u16 D_800D45F6; -extern s32 func_8016EC0C(s32 a0, s32 a1); /* match-first, arity 2 */ -extern s32 func_8012B4B8(s32 a0); /* match-first, arity 1 */ -extern s32 func_801670E4(s32 a0, s32 a1, s32 a2, s32 a3); /* derive-decl, arity 4 */ -extern s32 func_80169A4C(s32 a0, s32 a1); /* match-first, arity 2 */ -extern s32 func_8016A8FC(s32 a0); /* match-first, arity 1 */ -extern s32 func_8012B8E4(s32 a0, s32 a1); /* match-first, arity 2 */ -extern s32 func_8015E1B8(s32 a0); /* match-first, arity 1 */ -extern s32 func_8015EE08(s32 a0); /* match-first, arity 1 */ -extern s32 func_8015F7D4(s32 a0); /* match-first, arity 1 */ -extern s32 func_80160B34(s32 a0); /* match-first, arity 1 */ -extern s32 func_80165140(s32 a0); /* match-first, arity 1 */ -extern s32 func_80161CD0(s32 a0, s32 a1); /* match-first, arity 2 */ -extern s32 func_80175268(s32 a0); /* match-first, arity 1 */ -extern s32 func_8017EC7C(s32 a0); /* match-first, arity 1 */ -extern s32 func_801809BC(s32 a0, s32 a1); /* match-first, arity 2 */ -extern s32 func_8012DE2C(s32 a0); /* derive-decl, arity 1 */ -extern s32 func_8012DDA4(void); /* derive-decl, arity 0 */ -extern s32 func_801759D8(void); /* derive-decl, arity 0 */ -extern s32 func_80175820(void); /* derive-decl, arity 0 */ -extern s32 func_801758FC(void); /* derive-decl, arity 0 */ -extern s32 D_801E5AF8; -extern s32 D_801269D4; -extern s32 D_801269C8; -extern M2C_UNK D_80062BC0; -extern s8 D_801E5AFC; -extern s8 D_801E5AFD; -extern void func_8013C9C4(void * arg0); -extern s32 D_801E5B1C; -extern s32 D_801E5B10; -extern s32 D_801E5B14; -extern s32 D_801E5B20; -extern void func_8013CABC(void); -extern s32 D_801E5B18; -extern void func_8013CAE8(void); -extern s32 D_801E5B48; -extern s32 D_801E5B4C; -extern void func_8013CB20(void); -extern void func_8013CB5C(void); -extern void func_8013CF68(); -extern s32 D_801E5B28; -extern s32 D_801E5B2C; -extern void func_8013D9B0(void); -extern void func_8013D064(void); -extern s32 func_8013D13C(void); -extern void func_8013D164(void); -extern u8 D_801E7AB2; -extern u8 D_801E7B26; -extern u8 D_801E79B2; -extern u8 D_801E7A7C; -extern u8 D_801E7988; -extern u8 D_801E79B1; -extern s32 D_801E7A80; -extern void func_8013D330(void); -extern void *D_801E5B00; -extern void *D_801E5B04; -extern void *D_801E5B08; -extern s32 D_801E5B30; -extern s32 D_801E5B34; -extern s32 D_801E5B38; -extern s32 D_801E79F4[]; -extern u8 D_8018DA54[]; -extern u8 D_8018DAFC[]; -extern u8 D_8018D9AC[]; -extern u8 D_8018DAA8[]; -extern u8 D_8018DB28[]; -extern u8 D_8018DA00[]; -extern void func_8013D53C(void); -extern void func_8013DD68(void); -extern void func_8013D8FC(void); -extern void func_8013CF68(void); -extern void func_8013D3D4(int param_1, int param_2); -extern s16 *D_801E5B0C; -extern s32 D_801E5B3C; -extern s32 D_801E5B40; -extern s32 D_801E5B44; -extern void func_8013DBE4(int param_1); -extern void func_8013DD68(); -extern s32 D_801E5B24; -extern s32 func_8013E054(void); -extern int SquareRoot12(int a0); -extern int func_8013E064(s16 *a0, s16 *a1); -extern int func_8013E0FC(s16 *a0, s16 *a1); -extern int func_8013E194(s16 *a0, s16 *a1); -extern void Square12(s32 *a0, s32 *a1); -extern s32 func_8013E22C(struct VecA *a0, struct VecB *a1); -extern s32 func_8013E298(s16 *a0); -extern int func_8013E2C4(short *a0); -extern void *D_801274CC; -extern s32 func_8013E410(void); -extern s32 func_8013E448(s32 a0); -extern void func_8013E370(void); -extern s32 (*D_801274D0)(s32); -extern s32 D_801274D8; -extern s32 D_801274DC; -extern s32 func_8013E448(s32 param_1); -extern s32 func_8012C750(s32 a0); -extern u8 *D_801274C8; -extern void func_8013E4B4(void); -extern void func_800D24A0(s32 a0); -extern void func_80141788(void); -extern void *D_8011DB24; -extern s32 func_800D0EC4(void); -extern void func_80141874(void); -extern u8 D_800B9A15; -extern unsigned char D_800B9A13; -extern u16 D_80115110; -extern unsigned short D_80115112; -extern void func_8013E588(void * _arg0); -extern void func_8013E5E8(void); -extern u8 D_80078EC0; -extern u16 D_8011511A; -extern u16 D_80115124; -extern u8 D_80115148[]; -extern u8 D_80115140[]; -extern s32 D_8018E5B4; -extern s32 D_80115188; -extern s16 D_8018E58C; -extern s16 D_8018E58E; -extern void func_8013E83C(void); -extern void func_8013E6AC(void); -extern void func_800D24A0(s32 arg); -extern void func_8013E814(void); -extern void func_8013E83C(); -extern void func_8013E958(); -extern s32 func_80141C50(void); -extern void func_8013F244(void); -extern void func_8013FAF8(s16 a0, s16 a1); -extern void func_8013E958(void); -extern u8 D_801151C8[]; -extern s32 D_801151D0; -extern u16 D_8011511E; -extern s32 D_80115130; -extern s16 D_8011514C; -extern void func_8013EA54(void); -extern s32 func_8013F350(void); /* §30#2 widened: def returns live $v0; callers discard */ -extern s16 func_8014168C(s16 a0); -extern s32 func_8014032C(s32 a0, s32 a1); -extern unsigned char *func_80141CA4(void); -extern short D_80115128; -extern s16 D_8011512A; -extern unsigned char D_8018E590; -extern void func_8013EB7C(void); -extern u16 D_80115112; -extern void func_8013ED6C(void); -extern s32 func_8013EE10(); -extern unsigned short D_80115118; -extern void func_8013F138(void); -extern void func_800D2624(void); -extern unsigned short D_80115114; -extern void func_8013F1BC(void); -extern void func_80141C0C(s32); -extern s32 func_80029178(s32 arg); -extern s32 func_800291B4(s32 arg); -extern s32 func_8013FFD8(s16 arg0, s32 arg1, s32 *arg2); -/* ==== end §8b carried decl layer ==== */ - -#include "common.h" - -extern u8 D_80115148[]; -extern u16 D_8011511E; -extern u8 D_80062BDC; - -extern s32 func_80028D58(void); -extern void func_80028D78(s32 a0); -extern void func_80019064(void *a0); -extern s32 func_80028DE0(void); -extern void func_80028E00(s32 a0); -extern s32 func_80028FBC(void); -extern void func_80028FDC(s32 a0); -extern s32 func_80029000(void); -extern void func_80029020(s32 a0); -extern s32 func_80028D9C(void); -extern void func_80028DBC(s32 a0); -extern void func_8002D4C8(s32 a0, s32 a1); - -s32 func_80140608(s32 a0) { - s16 t; - register s32 iVar2 __asm__("$2"); - register s32 zr __asm__("$0"); - s32 uVar3; - u32 uVar4; - s32 uVar5 = 1; - - switch (D_80115148[(s16)a0 * 2]) { - case 0: - t = func_80028D58() ^ 1; - func_80028D78(t); - if (t != 0) { - return uVar5; - } - func_80019064(&D_80062BDC); - return uVar5; - case 1: - func_80028E00((s16)(func_80028DE0() ^ 1)); - return uVar5; - case 2: - iVar2 = func_80028FBC(); - if (D_8011511E & 0x8000) { - iVar2 = iVar2 - 1; - uVar4 = iVar2 + zr; - if ((s16)iVar2 < 0) { - uVar4 = 0; - uVar5 = 0; - } - } else { - iVar2 = iVar2 + 1; - uVar4 = iVar2 + zr; - if ((s16)iVar2 >= 8) { - uVar4 = 7; - uVar5 = 0; - } - } - func_80028FDC((s16)uVar4); - func_8002D4C8(0x21, uVar4 & 0xFFFF); - goto ret; - case 3: - iVar2 = func_80029000(); - if (D_8011511E & 0x8000) { - iVar2 = iVar2 - 1; - uVar4 = iVar2 + zr; - if ((s16)iVar2 < 0) { - uVar4 = 0; - uVar5 = 0; - } - } else { - iVar2 = iVar2 + 1; - uVar4 = iVar2 + zr; - if ((s16)iVar2 >= 8) { - uVar4 = 7; - uVar5 = 0; - } - } - func_80029020((s16)uVar4); - func_8002D4C8(0x22, uVar4 & 0xFFFF); - goto ret; - case 4: - t = func_80028D9C() ^ 1; - func_80028DBC(t); - uVar3 = 0xB; - if (t == 0) { - uVar3 = 0xC; - } - func_8002D4C8(uVar3, 0); - goto ret; - default: - goto ret; - } -ret: - return uVar5; -} - - - -// @class: iv-combine -// @stuck: none — MATCH (89 ins). Sequential struct fields fed from a running source -// pointer compile to fixed offsets when written base[0..n]; the target advances -// the pointer, so use post-increment `*p++` for EVERY field (gcc drops the dead -// final increment, yielding the "increment N-2 then offset 0/2" tail). - -extern u8 *D_8018E26C; -extern u8 *D_8018E270; -extern u8 *D_8018E274; -extern u8 *D_8018E278; -extern u8 *D_8018E27C; -extern u16 *D_8018E280[]; -extern u16 *D_8018E288[]; -extern u16 *D_8018E2A8[]; - -extern s32 func_80028D58(void); -extern s32 func_80028DE0(void); -extern s32 func_80028FBC(void); -extern s32 func_80029000(void); -extern s32 func_80028D9C(void); - -void func_801407F4(void) -{ - u8 *puVar1; - s32 iVar2; - u16 *puVar3; - - puVar1 = D_8018E26C; - iVar2 = func_80028D58(); - puVar3 = D_8018E280[iVar2]; - *(s16 *)(puVar1 + 0x16) = *puVar3++; - *(s16 *)(puVar1 + 0x18) = *puVar3++; - *(s16 *)(puVar1 + 0x1a) = *puVar3++; - - puVar1 = D_8018E270; - iVar2 = func_80028DE0(); - puVar3 = D_8018E280[iVar2]; - *(s16 *)(puVar1 + 0x16) = *puVar3++; - *(s16 *)(puVar1 + 0x18) = *puVar3++; - *(s16 *)(puVar1 + 0x1a) = *puVar3++; - - iVar2 = func_80028FBC(); - *(s16 *)(D_8018E274 + 0x18) = *D_8018E288[iVar2]; - iVar2 = func_80029000(); - *(s16 *)(D_8018E278 + 0x18) = *D_8018E288[iVar2]; - - puVar1 = D_8018E27C; - iVar2 = func_80028D9C(); - puVar3 = D_8018E2A8[iVar2]; - *(s16 *)(puVar1 + 0x12) = *puVar3++; - *(s16 *)(puVar1 + 0x14) = *puVar3++; - *(s16 *)(puVar1 + 0x16) = *puVar3++; - *(s16 *)(puVar1 + 0x18) = *puVar3++; - *(s16 *)(puVar1 + 0x1a) = *puVar3++; - *(s16 *)(puVar1 + 0x1c) = *puVar3++; -} - - - - - - - - - - - - - - - - - - - - - -extern s16 func_8014168C(s16); -extern s32 *func_80140D68(s32 *, Prim4 *, s32, s32, s32); -/* func_80140958 -- MATCH (260 ins), verified by - * python3 tools/match_one.py func_80140958 --c .run/near6/wave23/func_80140958.c \ - * --asm-subdir asm/ov_SC01_077/nonmatchings/ov_SC01_077 - * - * Three levers took the seed from 6 -> 0 (see the numbered notes in the inner block): - * [L1] `m == i` (not `m == 3`) -- keeps b[0] a RUNTIME value; `m == 3` let gcc - * const-fold it and materialise `li a3,3` / `li t3,12` instead of - * `addu a3,v1,zero` / `sll t3,v1,2`. - * [L2] one dead `__asm__ volatile("" :: "r"(j))` -- +1 weighted REG_N_REFS on j so - * global.c:594 allocno_compare ranks j above k (j -> $a2, k -> $a3). - * [L3] `t3v = m * 4` as an EXPLICIT preheader statement (instead of letting loop.c - * hoist D_8011516A[m]'s index) -- gives it a LUID *below* the three constant - * assignments, which is what puts `move a3,v1 / sll t3,v1,2` ahead of them in - * sched1's backward LUID tie-break. - */ -s32 *func_80140958(ot, i, n) -s32 *ot; -s16 i; -s16 n; -{ - - extern s16 D_8011514E; - extern u8 D_80115158[]; - extern Hw4 D_8011516A[]; - extern Prim4 D_8018E084[]; - extern Prim4 *D_8018E178[]; - extern u8 D_80115143; - extern Prim4 D_8018E034[]; - extern s16 D_8018E594[]; - extern s16 D_8018E5A4[]; - extern u16 D_8018E0B4; - extern u16 D_8018E0B6; - extern Env_80140958 D_800AE7BC[]; - Prim4 *p; - s16 t; - s32 c3; -register u16 *a __asm__("$20"); -register u16 *b __asm__("$21"); -register u16 *c __asm__("$23"); -register u16 *e __asm__("$22"); -register u16 *pb __asm__("$10"); -register u32 m24 __asm__("$8"); -register u32 mhi __asm__("$9"); -register s32 eight __asm__("$2"); - if (i < n) - { - c3 = 3; - a = &D_80115110; - b = a + 5; - c = a + 3; - e = &D_8018E0B6; - do - { - if (((a[0] == 0) && (a[1] != c3)) && (a[1] < 6)) - { - if (i == a[5]) - { - ot = func_80140D68(ot, &D_8018E034[i], i, D_8018E594[a[3] & 7], 0); - } - } - else - { - p = D_8018E178[i]; - if (((p != 0) && (i == b[0])) && (i != 6)) - { - if ((i == 2) && ((*((s16 *) (b + 7))) != 0)) - { - p = D_8018E084; - } - if (i != c3) - { - t = ((s32 (*)(s16)) func_8014168C)(i) * 2; - } - else - { - t = ((*((u8 *) (&D_8011514E))) - D_80115143) * 2; - } - ot = func_80140D68(ot, p, i, D_8018E5A4[c[0] & 7], t); - if (((i == 2) && ((*((s16 *) (c + 9))) == 1)) && ((*((s16 *) (c + 12))) != 0)) - { - ot = func_80140D68(ot, p, 2, 8, ((*((s16 *) (c + 12))) & 0xF) * 2); - } - } - } - if (i == c3) - { - s32 m = b[0]; - /* [L1] compare against `i`, NOT against the literal 3. */ - if ((m == i) && ((b[-2] & 8) != 0)) - { - s16 j; - s32 k; - s32 t3v; - u8 *q = ((u8 *) ot) + 0x14; - s16 y; - j = 0; - k = m; - t3v = m * 4; /* [L3] explicit, must sit before the 3 constants */ - pb = (u16 *) (&D_800B9A02); - m24 = 0xFFFFFF; - mhi = 0xFF000000; - for (; j < 2; j++) - { - if (j == 0) - { - if (D_80115140[k] == 0) - { - continue; - } - q[-7] = 0x30; - y = (*e) - 4; - } - else - { - s32 k2 = k * 2; - if ((((s8 *) D_80115158)[k2] - ((s8 *) D_80115140)[k]) < 2) - { - continue; - } - q[-7] = 0x38; - y = (*e) + 3; - } - *((s16 *) (q - 10)) = y; -__asm__("" ::: "memory"); - *((u32 *) ot) = 0x4000000; - q[-8] = 0x78; - *((u32 *) (q - 0x10)) = 0x64808080; - *((s16 *) (q - 6)) = 0x4056; - *((s16 *) (q - 0xC)) = (D_8018E0B4 + ((u16) *((u16 *) (((u8 *) D_8011516A) + t3v)))) + 0x4A; - eight = 8; - *((s16 *) (q - 2)) = eight; - *((s16 *) (q - 4)) = eight; - *((u32 *) ot) = ((*((u32 *) ot)) & mhi) | (D_800AE7BC[*pb].ot[2] & m24); - { -register u32 *op __asm__("$4"); - op = D_800AE7BC[*pb].ot; - op[2] = (op[2] & mhi) | (((u32) ot) & m24); - } - q += 0x14; - ot += 5; - __asm__ volatile("" :: "r"(j)); /* [L2] zero code, +1 ref on j */ - } - - } - } - i = i + 1; - } - while (i < n); - } - return ot; -} - - - - - -s32 *func_80140D68(out, src, idx, dx, ofs) - s32 *out; - Prim4 *src; /* conformed to the fleet prototype; used only as (s32)src */ - s16 idx; - s32 dx; - s16 ofs; -{ - - extern Hw4 D_8011516A[]; - /* §94 TYPE-CARRY: this typedef and its extern MUST be BLOCK-scope. extract_unit carries - file-scope externs and #defines into each remapped sibling (Phase-27 _carry_macros) but - NOT file-scope typedefs — so a file-scope Env_800D29F8 is silently dropped from every - sibling and the family sweeps 0/137. Body-local typedefs DO survive (PTag_80140D68 below - is the proof), so it lives here. */ - /* 0x14 stride */ - extern Env_800D29F8 D_800AE7BC[]; - - - register u32 mhi __asm__("$8"); - s16 *q; - s32 a; - - out[0] = 0x04000000; - *((u8 *)out + 0xC) = 0x70; - *((u8 *)out + 0xD) = 0x10; - mhi = 0x64808080; - out[1] = mhi; - *(u16 *)((u8 *)out + 0xE) = 0x4056; - - dx -= 0xD; - q = (s16 *)(ofs * 2 + (s32)src); - a = (u16)q[0] + (u16)D_8011516A[idx].x; - a += dx; - *(s16 *)((u8 *)out + 0x8) = a; - *(s16 *)((u8 *)out + 0xA) = q[1] - 4; - *(s16 *)((u8 *)out + 0x12) = 0x10; - *(s16 *)((u8 *)out + 0x10) = 0x10; - - ((PTag_80140D68 *)out)->addr = ((PTag_80140D68 *)((D_800AE7BC[*(volatile u16 *)&D_800B9A02].ot) + 2))->addr; - ((PTag_80140D68 *)((D_800AE7BC[*(volatile u16 *)&D_800B9A02].ot) + 2))->addr = (u32)out; - - return out + 5; -} - - - -// @class: struct -// @stuck: none — MATCH - -extern unsigned char D_80078E7F; -extern unsigned char D_80078E7E; -extern unsigned char D_80078E7D; -extern M2C_UNK D_8018E1A8; - -extern int func_800D2CA8(int, int); -extern void func_800D2D10(int, int, void *, int); - -void func_80140E6C(void) { - void *puVar1; - unsigned int uVar2; - unsigned int uVar3; - unsigned int uVar4; - - puVar1 = (*(void * *)&D_8018E1A8); - uVar2 = func_800D2CA8(D_80078E7F, 0x18); - uVar3 = func_800D2CA8(D_80078E7E, 0xc); - uVar4 = func_800D2CA8(D_80078E7D, 0); - func_800D2D10(uVar2 | 0xb00000 | uVar3 | 0xb00 | uVar4, 8, puVar1, 0); -} - - - - -// @class: plumbing -// @stuck: none — MATCH (128/128 ins, match_one confirmed) - -extern short D_80115128; -extern u8 D_8018E1B8; -extern char *D_8018E1D8; -extern char *D_8018E1DC; -extern char *D_8018E1E0; -extern char *D_8018E1E4; -extern char *D_8018E1E8; - -extern int func_80029FE4(void); -extern int func_800D2CA8(int, int); -extern void func_800D2D10(int, int, void *, int); -extern char *func_8002AAB4(void); -extern char *strcpy(char *, const char *); -extern int func_8002A26C(void); -extern int func_8002A2B0(void); -extern int func_8002A4B8(void); -extern s32 func_8002A4FC(s32 a0); -extern int func_8002A998(void); -extern int func_8002A9DC(void); -extern int func_8002A728(void); -extern int func_8002A76C(void); -extern int func_80029FD4(void); - -void func_80140F00(void) { - char *p; - int r; - - if (D_80115128 == 0) { - p = (*(char * *)&D_8018E1B8); - r = func_800D2CA8(func_80029FE4() + 1, 0x18); - func_800D2D10(r, 2, p + 4, 1); - strcpy(p + 0xA, func_8002AAB4()); - - p = D_8018E1D8; - r = func_800D2CA8(func_8002A26C() + 1, 0x18); - func_800D2D10(r, 2, p + 0x12, 1); - r = func_800D2CA8(func_8002A2B0(), 0x18); - func_800D2D10(r, 2, p + 0x22, -1); - - p = D_8018E1DC; - r = func_800D2CA8(func_8002A4B8() + 1, 0x18); - func_800D2D10(r, 2, p + 0x12, 1); - r = func_800D2CA8(((int (*)(void))func_8002A4FC)(), 0x18); - func_800D2D10(r, 2, p + 0x22, -1); - - p = D_8018E1E0; - r = func_800D2CA8(func_8002A998() + 1, 0x18); - func_800D2D10(r, 2, p + 0x12, 1); - r = func_800D2CA8(func_8002A9DC(), 0x18); - func_800D2D10(r, 2, p + 0x22, -1); - - p = D_8018E1E4; - r = func_800D2CA8(func_8002A728() + 1, 0x18); - func_800D2D10(r, 2, p + 0x12, 1); - r = func_800D2CA8(func_8002A76C(), 0x18); - func_800D2D10(r, 2, p + 0x22, -1); - - p = D_8018E1E8; - r = func_800D2CA8(func_80029FD4(), 4); - func_800D2D10(r, 7, p + 0x18, -1); - } -} - - - -// @class: other -// @stuck: none — MATCH - -extern short D_80115128; -extern unsigned short D_80115172; -extern unsigned short D_8018E072; -extern unsigned short D_8018E076; -extern unsigned short D_8018E07A; -extern unsigned short D_8018E07E; - -extern s32 func_8002A1B4(void); -extern short func_8002A28C(void); -extern short func_8002A27C(void); -extern s32 func_8002A400(void); -extern short func_8002A4D8(void); -extern short func_8002A4C8(void); -extern s32 func_8002A8E0(void); -extern short func_8002A9B8(void); -extern short func_8002A9A8(void); -extern s32 func_8002A670(void); -extern short func_8002A748(void); -extern short func_8002A738(void); -extern int func_801412A8(int, int, int, int, int, int); - -int func_80141100(int param_1) -{ - short sVar1; - int iVar7; - - if (D_80115128 == 0) { - iVar7 = D_80115172 + 0x31; - sVar1 = D_8018E072; - param_1 = func_801412A8(param_1, ((short (*)(void))func_8002A1B4)(), func_8002A28C(), func_8002A27C(), (short)iVar7, (int)sVar1); - sVar1 = D_8018E076; - param_1 = func_801412A8(param_1, ((short (*)(void))func_8002A400)(), func_8002A4D8(), func_8002A4C8(), (short)iVar7, (int)sVar1); - sVar1 = D_8018E07A; - param_1 = func_801412A8(param_1, ((short (*)(void))func_8002A8E0)(), func_8002A9B8(), func_8002A9A8(), (short)iVar7, (int)sVar1); - sVar1 = D_8018E07E; - param_1 = func_801412A8(param_1, ((short (*)(void))func_8002A670)(), func_8002A748(), func_8002A738(), (short)iVar7, (int)sVar1); - } - return param_1; -} - - -#define addPrim_1412A8(ot, p) (setaddr_1412A8(p, getaddr_1412A8(ot)), setaddr_1412A8(ot, p)) -/* §37/§124 def-side asm-label alias (the S40 class lever). The TU declares - * extern int func_801412A8(int, int, int, int, int, int); (ov_SC01_077.c:2720) - * and its callers USE the return value (`param_1 = func_801412A8(...)`, :2730-:2736), while the - * byte-true definition is `Prim_1412A8 *(Prim_1412A8 *, int, int, int, u16, u16)`. The u16 params - * cannot agree with an `int` prototype (C default argument promotion) and the `()` no-prototype - * escape is illegal precisely when a param promotes -- so NEITHER side can move. Giving the - * DEFINITION a private C identifier bound to the emitted symbol by a GNU asm label decouples - * them: the TU's declaration continues to govern the CALL SITES (their codegen is untouched -- - * which is what match_one could not see, since it only compiles this function), and the - * definition keeps its byte-true signature. Zero blast radius. */ -DEFINE_func_801412A8() /* dedup: shared engine-core @0x801412A8 (src/shared) */ - - -DEFINE_func_801415C0() /* dedup: shared engine-core @0x801415C0 (src/shared) */ - -DEFINE_func_8014168C() /* dedup: shared engine-core @0x8014168C (src/shared) */ - -DEFINE_func_801416D4() /* dedup: shared engine-core @0x801416D4 (src/shared) */ - - -extern unsigned short D_80115112; -extern void (*D_8018E608[])(void); - -void func_80141788(void) -{ - D_8018E608[D_80115112](); -} - - -DEFINE_func_801417C4() /* dedup: shared engine-core @0x801417C4 (src/shared) */ - -DEFINE_func_801417F8() /* dedup: shared engine-core @0x801417F8 (src/shared) */ - - -extern void func_801754A8(void); -extern s32 func_80014ED4(s32); -extern s32 func_80015018(s32); -extern void func_80141C04(void); - -extern u16 D_8011511E; -extern unsigned short D_80115112; - -void func_80141874(void) { - - extern u16 D_8011511C; - extern u16 D_80115116; - extern void (*D_8018E614[])(void); - register void (*fp)(void) __asm__("$2"); /* pin fn-ptr to $v0 → store retires early */ - func_801754A8(); - D_8011511E = func_80014ED4(0); - D_8011511C = func_80015018(0); - fp = D_8018E614[D_80115112]; - fp(); - func_80141C04(); - D_80115116 += 1; -} - - - - - - - - - -extern u16 D_80115110; -extern u16 D_80115112; -extern unsigned short D_80115118; -extern volatile u16 D_8011511A; -extern s16 D_80115128; -extern s32 D_80115130; -extern s16 D_8018E58C; -extern s16 D_8018E58E; - -extern void func_800D24A0(s32 a0); -extern s32 func_80029178(s32 a0); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_80141C0C(s32 a0); - -void func_801418F8(void) -{ - - extern s16 D_8011512E; - extern u8 D_80115158[]; - extern s16 D_8011515A; - extern u8 D_8011515C; - extern s16 D_8011515E; - extern s16 D_80115162; - extern s16 D_80115166; - extern u8 D_8018E22C; - extern u8 D_8018E244; - extern u8 D_8018E2B8; - extern u8 D_8018E2C0; - extern void *D_801E5B58; - extern void *D_801E5B5C; - u16 t; - - func_800D24A0(1); - D_8011511A = 2; - t = D_8011511A; - (*(s16 *)&D_80115118) = 0; - D_80115130 = 0; - if (t >= 4) { - D_8011511A = t - 3; - } - (*(s16 *)D_80115158) = 0x106; - if ((func_80029178(0x1C) & 0xFF) == 0) { - D_801E5B58 = &D_8018E22C; - D_801E5B5C = &D_8018E2B8; - } else { - D_801E5B58 = &D_8018E244; - D_801E5B5C = &D_8018E2C0; - } - D_8011515A = 0x104; - (*(s16 *)&D_8011515C) = 0x104; - D_8011515E = 0x129; - D_80115162 = 0x103; - D_80115166 = 0x105; - D_80115128 = 0; - D_8011512E = 0; - if (D_80115110 == 3) { - func_8002D4C8(0x46E, 0); - } else { - func_80141C0C(0); - } - D_80115128 = 1; - D_8018E58C = 0xE; - D_8018E58E = 3; - D_80115112 = D_80115112 + 1; -} - - -/* func_80141A60 @ 0x80141A60 (0x130, 76 ins) -- ov_SC01_000 shared engine fn. - * - * ((s32 *)D_801151C8)[]: word (s32) table indexed by (u16)(*(u16 *)&D_800B9A02) -> D_801151D0. - * D_8011511A: u16, unsigned compare vs 4 (sltiu). - * (*(u8 *)&D_8011514C)/4D/5C: u8 fields; a1 = (s16)((*(u8 *)&D_8011514C) + D_8011514D*D_8011515C). - * D_80115130: cached s32 handle. D_8018E590: address-taken arg to func_801376E8. - * D_80115116: s16 <- 0xfff8 (ori, positive const). D_80115112: u16 counter. - */ - -extern s16 D_800B9A02; -extern u8 D_801151C8[]; -extern s32 D_801151D0; -/* D_8011511A: this TU declares it volatile at file scope -> a direct read reloads on every - * use; the cast-at-use *(u16 *)&D_8011511A strips volatile so gcc CSEs the three reads into - * one load (matches the single-load target). */ -extern s16 D_8011514C; -extern s32 D_80115130; -extern u8 D_8018E590; -extern u16 D_80115112; - -extern s32 func_8013F350(void); -extern void func_8013FAF8(s16 a0, s16 a1); -extern s32 func_8014032C(s32 a0, s32 a1); -extern void func_80139954(void); -extern void func_801376E8(int a0, int a1); -extern void func_80137B80(void); -extern s32 func_800D0EC4(void); - -void func_80141A60(void) -{ - - extern u8 D_8011514D; - extern u8 D_8011515C; - extern u16 D_80115116; - s32 iVar1; - s32 pad[2]; - (void)&pad; /* §36#3 frame-pad induction: force frame 0x20 (vs 0x18) */ - - D_801151D0 = ((s32 *)D_801151C8)[(*(u16 *)&D_800B9A02)]; - func_8013F350(); - if ((*(u16 *)&D_8011511A) >= 4) { - func_8013FAF8((*(u16 *)&D_8011511A), (*(u16 *)&D_8011511A) + 1); - } - func_8013FAF8(2, 3); - iVar1 = func_8014032C(2, (s16)((*(u8 *)&D_8011514C) + D_8011514D * D_8011515C)); - if (iVar1 != 0 && iVar1 != D_80115130) { - D_80115130 = iVar1; - func_80139954(); - func_801376E8(iVar1, (int)&D_8018E590); - } - func_80137B80(); - iVar1 = func_800D0EC4(); - if (iVar1 != 0) { - D_80115116 = 0xfff8; - D_80115112 = D_80115112 + 1; - } -} - - - - - - - - - - - - - - - - - - -DEFINE_func_80141B90() /* dedup: shared engine-core @0x80141B90 (src/shared) */ - -DEFINE_func_80141C04() /* dedup: shared engine-core @0x80141C04 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH expected (indexed u16 global: (s16)param_1*2 + D_80115110, *2 array stride) - -extern u16 D_80115110; -extern u8 D_8018E568; -extern void func_8002D4C8(s32 a0, s32 a1); - -void func_80141C0C(s32 param_1) -{ - func_8002D4C8(*(u16 *)(&D_8018E568 + (((param_1 << 16) >> 15) + (u32)D_80115110) * 2), 0); -} - - -DEFINE_func_80141C50() /* dedup: shared engine-core @0x80141C50 (src/shared) */ - -DEFINE_func_80141CA4() /* dedup: shared engine-core @0x80141CA4 (src/shared) */ - -DEFINE_func_80142414() /* dedup: shared engine-core @0x80142414 (src/shared) */ - -DEFINE_func_80142454() /* dedup: shared engine-core @0x80142454 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (58 ins). STRUCT branch reconstruction + 3 levers: (1) §3-T4 branch-polarity -// invert in the ==0 arm so the func_8012C218 cold path sinks to the tail; (2) *(volatile int*) on -// the two extra param_1[0x32] reloads to defeat gcc CSE (gcc reloads via register reuse, not a store); -// (3) param_1[0x7e] pinned to $v1 (register __asm__("$3")) + an input-only scheduling barrier -// __asm__ __volatile__("" : : "r"(a)) on the 0xA read so the pinned load is anchored AFTER it in the -// ==0 arm (matches the load2-reused-as-$v1 ordering). - -extern void func_8012C218(void *a0); - -void func_801424E4(short *param_1) { - - extern void (*D_8018E638[])(void); - short sVar1; - int iVar2; - register unsigned short t __asm__("$3"); - - (*D_8018E638[(unsigned short)param_1[1]])(); - if (*(unsigned short *)param_1 != 0) { - if (param_1[0x38] != 0) { - iVar2 = *(int *)(param_1 + 0x32); - if (iVar2 == 0) { - return; - } - *(int *)(param_1 + 2) = *(int *)(iVar2 + 4); - t = (unsigned short)param_1[0x7e]; - sVar1 = *(unsigned short *)(iVar2 + 10) + t; - param_1[5] = sVar1; - *(int *)(param_1 + 6) = *(int *)(iVar2 + 0xc); - } else { - unsigned short a; - iVar2 = *(int *)(param_1 + 0x32); - if ((iVar2 != 0) && (*(short *)(iVar2 + 0x36) == param_1[0x7f])) { - *(int *)(param_1 + 2) = *(int *)(iVar2 + 4); - a = *(unsigned short *)(*(volatile int *)(param_1 + 0x32) + 10); - __asm__ __volatile__("" : : "r"(a)); - t = (unsigned short)param_1[0x7e]; - sVar1 = a + t; - iVar2 = *(volatile int *)(param_1 + 0x32); - param_1[5] = sVar1; - *(int *)(param_1 + 6) = *(int *)(iVar2 + 0xc); - return; - } - ((void (*)(short *))func_8012C218)(param_1); - } - } - return; -} - - - -extern void (*D_8018E648[])(void); - -void func_801425CC(void *a0) { - D_8018E648[*(u16 *)((s32)a0 + 0x2)](); -} - - - -// @class: schedule -// @stuck: none — MATCH expected; CAE4 block fallthrough, AD50 block goto-tail - -extern void func_8012C1B8(void); -extern s32 func_8012C1DC(s32 a0); -extern void func_8001CA1C(s32 a0, s32 a1); -extern void func_8012CAE4(void *a0); -extern s32 func_8012AD50(void *a0); -extern s32 D_8018E62C; - -void func_80142608(s32 param_1) -{ - register s32 iVar1 __asm__("$16"); - - if (*(short *)(param_1 + 0x70) != 0) { - iVar1 = ((s32 (*)(void))func_8012C1B8)(); - } else { - iVar1 = func_8012C1DC(*(s32 *)(param_1 + 100)); - } - *(s32 *)(param_1 + 0x20) = iVar1; - if (iVar1 != 0) { - func_8001CA1C(iVar1, (s32)&D_8018E62C); - *(short *)(iVar1 + 0x1a) = 0x200; - *(short *)(iVar1 + 0x18) = 0x200; - *(short *)(param_1 + 0xfc) = 0x40; - if (*(short *)(param_1 + 0x70) != 0) { - goto ad50; - } - if (*(s32 *)(param_1 + 100) != 0) { - *(short *)(param_1 + 0xfe) = *(short *)(*(s32 *)(param_1 + 100) + 0x36); - goto ad50; - } - } - ((void (*)(s32))func_8012CAE4)(param_1); - return; -ad50: - *(short *)(param_1 + 0x98) = 0; - *(s32 *)(param_1 + 0x90) = 0; - ((void (*)(s32))func_8012AD50)(param_1); -} - - -DEFINE_func_801426D4() /* dedup: shared engine-core @0x801426D4 (src/shared) */ - -DEFINE_func_80142740() /* dedup: shared engine-core @0x80142740 (src/shared) */ - -DEFINE_func_80142778() /* dedup: shared engine-core @0x80142778 (src/shared) */ - -DEFINE_func_801427DC() /* dedup: shared engine-core @0x801427DC (src/shared) */ - -DEFINE_func_801427E4() /* dedup: shared engine-core @0x801427E4 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (array-of-fnptr %lo-fold + signed-halfword guard) - -extern u16 D_801270C0; -extern void (*D_8018E65C[])(); - -void func_801427EC(int param_1) -{ - if (*(s16 *)&D_801270C0 != 3) { - D_8018E65C[*(u16 *)(param_1 + 2)](); - } -} - - -DEFINE_func_80142838() /* dedup: shared engine-core @0x80142838 (src/shared) */ - -DEFINE_func_801428CC() /* dedup: shared engine-core @0x801428CC (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (array-of-fnptr %lo-fold + signed-halfword guard) - -extern u16 D_801270C0; -extern void (*D_8018E678[])(); - -void func_8014292C(int param_1) -{ - if (*(s16 *)&D_801270C0 != 3) { - D_8018E678[*(u16 *)(param_1 + 2)](); - } -} - - - -// @class: struct -// @stuck: none — MATCH (array-of-fnptr %lo-fold + signed-halfword guard) - -extern u16 D_801270C0; -extern void (*D_8018E848[])(); - -void func_80142978(int param_1) -{ - if (*(s16 *)&D_801270C0 != 3) { - D_8018E848[*(u16 *)(param_1 + 2)](); - } -} - - - -// @class: struct -// @stuck: none — MATCH (array-of-fnptr %lo-fold + signed-halfword guard) - -extern u16 D_801270C0; -extern void (*D_8018E900[])(); - -void func_801429C4(int param_1) -{ - if (*(s16 *)&D_801270C0 != 3) { - D_8018E900[*(u16 *)(param_1 + 2)](); - } -} - - - -// @class: struct -// @stuck: none — MATCH (array-of-fnptr %lo-fold + signed-halfword guard) -// @reconcile: func_80142A80 is DEFINED later in this TU as `void func_80142A80(void)`. -// The uc2 draft declared it `extern void func_80142A80(int)` -> conflicting types. -// Escape §17a-1/§20: conform the declaration to the TU's, cast at the use site -// (codegen-neutral: the argument still lands in $a0). - -extern void func_80142A80(void); - -void func_80142A10(int param_1) -{ - - extern void (*D_8018E910[])(); - if (*(s16 *)&D_801270C0 != 3) { - D_8018E910[*(u16 *)(param_1 + 2)](); - if (*(s16 *)(param_1 + 0xFC) != 0) { - ((void (*)(int))func_80142A80)(param_1); - } - } -} - - - -// @class: struct -// @stuck: none — MATCH (packed-word struct -> lwl/lwr unaligned copy; union byte[] -> $sp-direct lbu; branch-polarity invert -> beqz) - -extern u16 D_800B99D8; -extern struct packed_word D_801E4DC4; -extern u8 D_801E5B60; -extern u8 D_801E5B61; -extern u8 D_801E5B62; - -void func_80142A80(void) -{ - u16 flags; - union word_bytes local; - s32 mul; - - flags = D_800B99D8; - local.pw = D_801E4DC4; - - if (flags & 0x10) { - mul = (s8)((flags & 0xf) >> 1) + 9; - } else { - mul = 0x10 - (s8)((flags & 0xf) >> 1); - } - - D_801E5B60 = mul * (local.b[0] >> 4); - D_801E5B61 = mul * (local.b[1] >> 4); - D_801E5B62 = mul * (local.b[2] >> 4); -} - - -DEFINE_func_80142B2C() /* dedup: shared engine-core @0x80142B2C (src/shared) */ - - -DEFINE_func_80142BB4() /* dedup: shared engine-core @0x80142BB4 (src/shared) */ - -DEFINE_func_80142C7C() /* dedup: shared engine-core @0x80142C7C (src/shared) */ - -DEFINE_func_80142C84() /* dedup: shared engine-core @0x80142C84 (src/shared) */ - -DEFINE_func_80142C9C() /* dedup: shared engine-core @0x80142C9C (src/shared) */ - -DEFINE_func_80142D38() /* dedup: shared engine-core @0x80142D38 (src/shared) */ - -DEFINE_func_80142DB8() /* dedup: shared engine-core @0x80142DB8 (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (combined store-assign `*(p)=v0=call()` keeps test/store on $v0, copy to $s0 for the else) - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001CA1C(s32 a0, s32 a1); -extern void func_80142B2C(void *arg0); - -extern int D_8018E650; - -void func_80142DC4(int param_1) -{ - int v0; - - *(int *)(param_1 + 0x20) = v0 = ((int (*)(void))func_8012C1B8)(); - if (v0 == 0) { - ((void (*)(int))func_8012CAE4)(param_1); - } else { - ((void (*)(s32, s32))func_8001CA1C)(v0, (s32)&D_8018E650); - *(short *)(v0 + 0x1a) = 0x1800; - *(short *)(v0 + 0x18) = 0x1800; - *(short *)(param_1 + 0xfc) = 0; - ((void (*)(int))func_80142B2C)(param_1); - } -} - - - - -// @class: regalloc-order -// @stuck: none — MATCH - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001CA1C(s32 a0, s32 a1); -extern void func_80142B2C(void *arg0); - -extern unsigned char D_8018E66C[]; - -void func_80142E38(int param_1) -{ - short sVar1; - int iVar2; - - *(int *)(param_1 + 0x20) = iVar2 = ((int (*)(void))func_8012C1B8)(); - if (iVar2 == 0) { - ((void (*)(int))func_8012CAE4)(param_1); - } else { - ((void (*)(int, void *))func_8001CA1C)(iVar2, &D_8018E66C); - sVar1 = (*(unsigned short *)(param_1 + 0x70) & 0xf) * 0x600 + 0x1200; - *(short *)(iVar2 + 0x1a) = sVar1; - *(short *)(iVar2 + 0x18) = sVar1; - *(short *)(param_1 + 0xfc) = 0; - ((void (*)(int))func_80142B2C)(param_1); - } -} - - - -// @class: regalloc-order -// @stuck: none — MATCH - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001CA1C(s32 a0, s32 a1); -extern void func_8012A828(s32 a0, void *a1); -extern void func_80142B2C(void *arg0); - - -void func_80142EC0(s32 param_1) { - - extern s32 D_8018E838[]; - register s32 d __asm__("$16") = param_1; /* $s0 */ - register s32 obj __asm__("$17"); /* $s1 */ - s32 ret; - s16 sVar2; - - ret = ((s32 (*)(void))func_8012C1B8)(); - *(s32 *)(d + 0x20) = ret; - obj = ret; - if (ret == 0) { - ((void (*)(s32))func_8012CAE4)(d); - } else { - func_8001CA1C(obj, 0); - sVar2 = (s16)((*(u16 *)(d + 0x70) & 0xf) * 0x600 + 0xc00); - *(s16 *)(obj + 0x1a) = sVar2; - *(s16 *)(obj + 0x18) = sVar2; - *(s16 *)(d + 0xfc) = 0; - ((void (*)(s32, s32))func_8012A828)(d, D_8018E838[*(u16 *)(d + 0x70) & 0xf]); - ((void (*)(s32))func_80142B2C)(d); - } -} - - -DEFINE_func_80142F68() /* dedup: shared engine-core @0x80142F68 (src/shared) */ - -DEFINE_func_80142FFC() /* dedup: shared engine-core @0x80142FFC (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (38 ins). $16=param pin; explicit $17 copy of the call result -// survives across func_8001CA1C while $v0 serves the pre-call store/test; -// store BEFORE the s1 copy so the store keeps $v0 (not the saved copy). - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001CA1C(s32 a0, s32 a1); -extern void func_8012A828(s32 a0, void *a1); -extern void func_80142B2C(void *arg0); - -extern unsigned char D_8018E858[]; -extern unsigned char D_8018E8B8[]; - -void func_8014305C(int param_1) -{ - register int s0_param __asm__("$16") = param_1; - register int s1_copy __asm__("$17"); - int iVar2; - short sVar1; - - iVar2 = ((int (*)(void))func_8012C1B8)(); - *(int *)(s0_param + 0x20) = iVar2; - s1_copy = iVar2; - if (iVar2 == 0) { - ((void (*)(int))func_8012CAE4)(s0_param); - } else { - ((void (*)(int, void *))func_8001CA1C)(s1_copy, D_8018E858); - sVar1 = (*(unsigned short *)(s0_param + 0x70) & 0xf) * 0x600 + 0xc00; - *(short *)(s1_copy + 0x1a) = sVar1; - *(short *)(s1_copy + 0x18) = sVar1; - *(short *)(s0_param + 0xfc) = 0; - func_8012A828(s0_param, D_8018E8B8); - ((void (*)(int))func_80142B2C)(s0_param); - } -} - - -DEFINE_func_801430F4() /* dedup: shared engine-core @0x801430F4 (src/shared) */ - -DEFINE_func_80143188() /* dedup: shared engine-core @0x80143188 (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (memcpy unaligned copy; $s0 survivor pinned, store-before-copy keeps $v0 for early store/branch) - - -extern void *memcpy(void *, const void *, u32); - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern int func_8001CA88(int, void *); -extern s32 func_8012E504(s32 a0, s32 a1); -extern void func_800233CC(void *, unsigned short); -extern void func_80142B2C(void *arg0); - -extern u8 D_801E4DC0; -extern u8 D_801E5B60; -extern u8 D_801E5B64; - -void func_801431E8(s32 param_1) { - u8 buf[8]; - s32 iVar5; - u16 uVar2; - s16 sVar4; - - register s32 d __asm__("$16"); - memcpy(buf, &D_801E4DC0, 4); - iVar5 = ((s32 (*)(void))func_8012C1B8)(); - *(s32 *)(param_1 + 0x20) = iVar5; - d = iVar5; - if (iVar5 == 0) { - ((void (*)(s32))func_8012CAE4)(param_1); - } else { - ((void (*)(s32, void *))func_8001CA88)(d, &D_801E5B60); - uVar2 = *(u16 *)(param_1 + 0x70); - *(s16 *)(d + 0x76) = -0x10; - sVar4 = (uVar2 & 0xf) * 0x600 + 0xc00; - *(s16 *)(d + 0x1a) = sVar4; - *(s16 *)(d + 0x18) = sVar4; - *(u32 *)(d + 4) = *(u32 *)(d + 4) | 0x50000000; - if (func_8012E504(param_1, 0x33) == 0) { - *(s16 *)(param_1 + 0xfc) = 1; - func_800233CC(&D_801E5B60, 0x10); - memcpy(&D_801E5B64, buf, 4); - } else { - *(s16 *)(param_1 + 0xfc) = 0; - } - ((void (*)(s32))func_80142B2C)(param_1); - } -} - - -DEFINE_func_801432FC() /* dedup: shared engine-core @0x801432FC (src/shared) */ - -DEFINE_func_80143390() /* dedup: shared engine-core @0x80143390 (src/shared) */ - -DEFINE_func_801433F0() /* dedup: shared engine-core @0x801433F0 (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH (pending gate) - -extern u8 D_800D387C[]; -extern u32 D_8018EA10[]; - -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); - -void func_80143458(s32 param_1) -{ - s32 p; - u16 v; - - *(u32 *)(*(s32 *)(param_1 + 0x20) + 0x20) = (u32)&D_800D387C; - - p = *(s32 *)(param_1 + 0x20); - if (*(s32 *)(p + 4) == 0) { - *(s32 *)(p + 4) = 0x50000000; - } - - *(u8 *)(*(s32 *)(param_1 + 0x20) + 0x27) = 0x9c; - - v = *(u16 *)(param_1 + 0x34) & 0x7fff; - if (v != 0) { - p = *(s32 *)(param_1 + 0x20); - *(u16 *)(p + 0x1a) = v; - *(u16 *)(p + 0x18) = v; - } - - func_80128EA8(*(u32 *)(param_1 + 0x20), param_1 + 0x24, - D_8018EA10[*(u16 *)(param_1 + 0x34) & 3]); - - *(u16 *)(param_1 + 2) = *(u16 *)(param_1 + 2) + 1; -} - - -DEFINE_func_8014350C() /* dedup: shared engine-core @0x8014350C (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH (pending gate) - - -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); - -void func_8014358C(s32 param_1) -{ - - extern u8 D_8018EA20[]; - extern u32 D_8018EB1C[]; - s32 p; - u16 v; - - *(u32 *)(*(s32 *)(param_1 + 0x20) + 0x20) = (u32)&D_8018EA20; - - p = *(s32 *)(param_1 + 0x20); - if (*(s32 *)(p + 4) == 0) { - *(s32 *)(p + 4) = 0x50000000; - } - - *(u8 *)(*(s32 *)(param_1 + 0x20) + 0x27) = 0x90; - - v = *(u16 *)(param_1 + 0x34) & 0x7fff; - if (v != 0) { - p = *(s32 *)(param_1 + 0x20); - *(u16 *)(p + 0x1a) = v; - *(u16 *)(p + 0x18) = v; - } - - func_80128EA8(*(u32 *)(param_1 + 0x20), param_1 + 0x24, - D_8018EB1C[*(u16 *)(param_1 + 0x34) & 3]); - - *(u16 *)(param_1 + 2) = *(u16 *)(param_1 + 2) + 1; -} - - -DEFINE_func_80143640() /* dedup: shared engine-core @0x80143640 (src/shared) */ - -DEFINE_func_801437D8() /* dedup: shared engine-core @0x801437D8 (src/shared) */ - -DEFINE_func_80143970() /* dedup: shared engine-core @0x80143970 (src/shared) */ - -DEFINE_func_80143994() /* dedup: shared engine-core @0x80143994 (src/shared) */ - -DEFINE_func_801439C0() /* dedup: shared engine-core @0x801439C0 (src/shared) */ - -DEFINE_func_801439FC() /* dedup: shared engine-core @0x801439FC (src/shared) */ - - -extern void (*D_8018EB38[])(void); - -void func_80143B30(void *a0) { - D_8018EB38[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80143B6C() /* dedup: shared engine-core @0x80143B6C (src/shared) */ - -DEFINE_func_80143BDC() /* dedup: shared engine-core @0x80143BDC (src/shared) */ - - -extern void (*D_8018EB44[])(void); - -void func_80143C38(void *a0) { - D_8018EB44[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80143C74() /* dedup: shared engine-core @0x80143C74 (src/shared) */ - - -extern void (*D_8018EB4C[])(void); - -void func_80143C98(void *a0) { - D_8018EB4C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80143CD4() /* dedup: shared engine-core @0x80143CD4 (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (80 ins, relocation-masked). iVar2/iVar3 pinned $s1/$s2; sVar4 is an -// int set BEFORE the call so it naturally takes callee-saved $s3; chained assignment -// a=b=c=sVar4 materializes the value once (the addu $v0,$s3,$zero move) + delay-slot store. - - /* size 0x0c */ - -extern void ApplyMatrixSV(void*, Svec_801372B0*, Svec_801372B0*); -extern s32 func_8012BEE8(s32 a0); -extern void func_8012C218(void *a0); - -void func_80143D28(s32 param_1) { - - extern MatEntry D_8018EB70[]; - register s32 iVar3 __asm__("$18") = *(s32 *)(param_1 + 0x20); /* $s2 */ - register s32 iVar2 __asm__("$17") = *(s32 *)(param_1 + 0x64); /* $s1 */ - MatEntry *p = &D_8018EB70[*(s16 *)(param_1 + 0x70)]; - s32 sVar4; - s32 iVar1; - - *(s16 *)(iVar3 + 0x14) = p->f8; - *(u16 *)(iVar3 + 0x12) = *(u16 *)(iVar3 + 0x12) + p->fa; - sVar4 = 0x1000; - ((void (*)(void *, void *, void *))ApplyMatrixSV)((void *)(*(s32 *)(param_1 + 0x20) + 0x34), p, (void *)(param_1 + 0x50)); - - if (*(s16 *)(param_1 + 0xfe) == 0 && - (iVar2 == 0 || *(s16 *)(iVar2 + 0x36) != *(s16 *)(param_1 + 0xfc) || - *(u8 *)(iVar2 + 0xc1) != 6)) { - if (0x10 < *(s32 *)(param_1 + 0x1c)) { - *(s32 *)(param_1 + 0x1c) = 0x10; - } - *(s16 *)(param_1 + 0xfe) = 1; - } - - iVar1 = *(s32 *)(param_1 + 0x1c); - if (iVar1 < 0x11) { - sVar4 = iVar1 << 8; - } - if (0x73 < iVar1) { - sVar4 = (0x78 - iVar1) << 10; - } - *(s16 *)(iVar3 + 0x18) = *(s16 *)(iVar3 + 0x1a) = *(s16 *)(iVar3 + 0x1c) = sVar4; - - if (func_8012BEE8(param_1)) { - func_8012C218((void *)param_1); - } -} - - - -extern void (*D_8018EB94[])(void); - -void func_80143E68(void *a0) { - D_8018EB94[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80143EA4() /* dedup: shared engine-core @0x80143EA4 (src/shared) */ - -DEFINE_func_80143EAC() /* dedup: shared engine-core @0x80143EAC (src/shared) */ - -DEFINE_func_80143EB4() /* dedup: shared engine-core @0x80143EB4 (src/shared) */ - -DEFINE_func_80143EBC() /* dedup: shared engine-core @0x80143EBC (src/shared) */ - - -extern void (*D_8018EBA8[])(void); - -void func_80144054(void *a0) { - D_8018EBA8[*(u16 *)((s32)a0 + 0x2)](); -} - - - -// @class: regalloc-order -// @stuck: 154/154 ins structural match (callees/consts/ctrl-flow/stack/GPU-packet all byte-correct); residual 25 = caller-saved temp-reg coalescing in the final ring-vertex block (target reuses dead $s0=iVar3 for iVar3-(iVar4>>6) subu where gcc reuses iVar4>>6's reg; iVar4 mflo -> $a3 vs target $v0) + 2-ins schedule swap of giv-increment vs iVar2*4 -> permuter grinder territory (§27 step-5) - - /* 0x14 stride */ - -DEFINE_func_80144090() /* dedup: shared engine-core @0x80144090 (src/shared) */ - - -extern void func_8012C218(void *a0); - -// @class: struct -// @stuck: none — MATCH (relocation-masked match_one); fn-ptr dispatch table + 0x1c counter, sibling idiom (func_801427EC/func_80143B30) - -extern void (*D_8018EBB0[])(); - -void func_801442F8(int param_1) -{ - int iVar1; - - D_8018EBB0[*(u16 *)(param_1 + 2)](); - iVar1 = *(int *)(param_1 + 0x1c) + 1; - *(int *)(param_1 + 0x1c) = iVar1; - if (0x1d < iVar1) { - func_8012C218(param_1); - } -} - - - -extern void func_8012C194(void); -extern void func_8012CAE4(void *a0); -extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); -extern u8 D_8018EB2C; - -void func_80144364(int param_1) { - int iVar3; - u16 uVar2; - s16 sVar1; - - iVar3 = ((s32 (*)(void))func_8012C194)(); - if (iVar3 == 0) { - ((void (*)(int))func_8012CAE4)(param_1); - } else { - uVar2 = *(u16 *)(*(int *)(param_1 + 0x64) + 0x36); - *(int *)(param_1 + 0xCC) = iVar3; - *(u16 *)(param_1 + 0xFC) = uVar2; - func_8001CB6C((u8 *)iVar3, (s32)&D_8018EB2C, 0x250, 0x1A0); - *(s32 *)(iVar3 + 4) = 0x60000000; - *(u8 *)(iVar3 + 0x27) = 0x14; - *(u16 *)(iVar3 + 0x10) = 0x400; - *(u16 *)(iVar3 + 8) = *(u16 *)(*(int *)(param_1 + 0x64) + 6); - *(u16 *)(iVar3 + 0xA) = *(u16 *)(*(int *)(param_1 + 0x64) + 0xA); - *(u16 *)(iVar3 + 0xC) = *(u16 *)(*(int *)(param_1 + 0x64) + 0xE); - sVar1 = *(s16 *)(param_1 + 0x70); - if (sVar1 != 0) { - *(s16 *)(iVar3 + 0x1A) = sVar1; - *(s16 *)(iVar3 + 0x18) = sVar1; - } else { - *(u16 *)(iVar3 + 0x1A) = 0x2000; - *(u16 *)(iVar3 + 0x18) = 0x2000; - } - *(u16 *)(param_1 + 2) = 1; - } -} - - - - -extern void func_80016714(void *a0, s32 a1); -extern s32 func_8004787C(s32 a0); -extern s32 func_80047948(s32 a0); -extern s32 func_80128ED8(s32 param_1, s32 *param_2); -extern void func_8012AD80(s32 a0); -extern void func_8012C218(void *a0); -extern s32 D_8018EB40; - -void func_80144458(void *arg0) { - s32 temp_s0; - void *temp_s2; - void *temp_v0; - - temp_s2 = M2C_FIELD(arg0, void **, 0xCC); - if (M2C_FIELD(arg0, s16 *, 0x70) == 0) { - temp_v0 = M2C_FIELD(M2C_FIELD(arg0, void **, 0x64), void **, 0x20); - if (temp_v0 != NULL) { - temp_s0 = (M2C_FIELD(temp_v0, s16 *, 0x12) - 0x400) & 0xFFF; - M2C_FIELD(arg0, s32 *, 0x10) = (s32) (func_80047948(temp_s0) * D_8018EB40 * 0x10); - M2C_FIELD(arg0, s32 *, 0x18) = (s32) (func_8004787C(temp_s0) * -D_8018EB40 * 0x10); - func_8012AD80(arg0); - } - } - M2C_FIELD(temp_s2, u16 *, 8) = (u16) M2C_FIELD(arg0, u16 *, 6); - M2C_FIELD(temp_s2, u16 *, 0xA) = (u16) M2C_FIELD(arg0, u16 *, 0xA); - M2C_FIELD(temp_s2, u16 *, 0xC) = (u16) M2C_FIELD(arg0, u16 *, 0xE); - if (func_80128ED8(temp_s2, arg0 + 0xD0) != 0) { - func_80016714(temp_s2, 0x38); - func_8012C218(arg0); - } -} - - -DEFINE_func_80144558() /* dedup: shared engine-core @0x80144558 (src/shared) */ - -DEFINE_func_8014462C() /* dedup: shared engine-core @0x8014462C (src/shared) */ - -DEFINE_func_801446A4() /* dedup: shared engine-core @0x801446A4 (src/shared) */ - - - -// @class: struct -// @stuck: none — MATCH (65 ins, match_one). Levers: uVar2/$2 + addr/$3 pins; split (uVar2&0xFFFFFFF) into addr then (addr|0x80000000)+8 deref; %hi/%lo of 0x80000008 via plain 0x80000000+8 (match_one masks the target's D_80000008 reloc, real bytes identical); v1/3 magic-divide; gv+fv reassoc (field-0x30 in own temp) loads field first -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001CA1C(s32 a0, s32 a1); -extern void func_8012A828(s32 a0, void *a1); -extern u8 D_8018EB54; -extern u8 D_8018EB60; - -void func_8014477C(void *param_1) { - s32 v0; - s32 v1; - register s32 uVar2 __asm__("$2"); - register s32 addr __asm__("$3"); - s32 gv; - s32 fv; - - v0 = ((s32 (*)(void))func_8012C1B8)(); - *(s32 *)((s32)param_1 + 0x20) = v0; - if (v0 == 0) { - func_8012CAE4(param_1); - return; - } - ((void (*)(s32, void *))func_8001CA1C)(v0, &D_8018EB54); - if (*(u16 *)(*(s32 *)((s32)param_1 + 0x64)) != 0) { - *(s16 *)((s32)param_1 + 0xFC) = *(u16 *)(*(s32 *)((s32)param_1 + 0x64) + 0x36); - uVar2 = *(s32 *)(*(s32 *)((s32)param_1 + 0x64) + 0x58); - if (uVar2 != 0) { - addr = uVar2 & 0xFFFFFFF; - gv = *(u16 *)((addr | 0x80000000) + 8); - fv = *(u16 *)((s32)param_1 + 0xA) - 0x30; - *(u16 *)((s32)param_1 + 0xA) = gv + fv; - } else { - *(u16 *)((s32)param_1 + 0xA) = *(u16 *)((s32)param_1 + 0xA) - 0x60; - } - } - ((void (*)(void *, void *))func_8012A828)(param_1, &D_8018EB60); - v1 = (s32)*(s16 *)((s32)param_1 + 0x70) << 0xC; - *(s16 *)((s32)param_1 + 0x2) = 1; - *(s16 *)(*(s32 *)((s32)param_1 + 0x20) + 0x12) = v1 / 3; - *(s32 *)((s32)param_1 + 0x1C) = 0x78; -} - - - -extern void func_8012C194(void); -extern void func_8012CAE4(void *a0); -extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); - -extern u8 D_8018EB2C; -extern u8 D_8018EB9C; - -void func_80144880(s32 param_1) -{ - register s32 obj __asm__("$16"); /* $s0 */ - register s32 self __asm__("$17") = param_1; /* $s1 */ - register s32 b __asm__("$2"); /* $v0 */ - s32 e; - - obj = ((s32 (*)(void))func_8012C194)(); - if (obj == 0) { - ((void (*)(s32))func_8012CAE4)(self); - } else { - *(u16 *)(self + 0xFC) = *(u16 *)(*(s32 *)(self + 0x64) + 0x36); - *(s32 *)(self + 0xCC) = obj; - if (*(s16 *)(self + 0x70) == 1) { - func_8001CB6C((u8 *)obj, (s32)&D_8018EB2C, 0x250, 0x1A0); - b = 0x14; - } else { - func_8001CB6C((u8 *)obj, (s32)&D_8018EB9C, 0x300, 0x1D0); - b = 0x6A; - } - *(u8 *)(obj + 0x27) = (u8)b; - *(s32 *)(obj + 4) = 0x60000000; - *(u16 *)(obj + 0x10) = 0x400; - *(u16 *)(obj + 8) = *(u16 *)(*(s32 *)(self + 0x64) + 6); - *(u16 *)(obj + 0xA) = *(u16 *)(*(s32 *)(self + 0x64) + 0xA); - e = *(u16 *)(*(s32 *)(self + 0x64) + 0xE); - *(u16 *)(obj + 0x1A) = 0x4000; - *(u16 *)(obj + 0x18) = 0x4000; - *(u16 *)(obj + 0xC) = (u16)e; - *(s16 *)(self + 2) = *(s16 *)(self + 2) + 1; - } -} - - -DEFINE_func_80144988() /* dedup: shared engine-core @0x80144988 (src/shared) */ - - -extern void (*D_8018EBB8[])(void); - -void func_801449C8(void *a0) { - D_8018EBB8[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80144A04() /* dedup: shared engine-core @0x80144A04 (src/shared) */ - - -extern void (*D_8018EBC0[])(void); - -void func_80144A2C(void *a0) { - D_8018EBC0[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80144A68() /* dedup: shared engine-core @0x80144A68 (src/shared) */ - -DEFINE_func_80144A90() /* dedup: shared engine-core @0x80144A90 (src/shared) */ - -DEFINE_func_80144A98() /* dedup: shared engine-core @0x80144A98 (src/shared) */ - -DEFINE_func_80144AEC() /* dedup: shared engine-core @0x80144AEC (src/shared) */ - - - -// @class: struct -// @stuck: none — MATCH - -DEFINE_func_80144B14() /* dedup: shared engine-core @0x80144B14 (src/shared) */ - - - diff --git a/src/ov_SC04_019/ov_SC04_019_jr_8015444C.c b/src/ov_SC04_019/ov_SC04_019_jr_8015444C.c deleted file mode 100644 index 7ea429c48..000000000 --- a/src/ov_SC04_019/ov_SC04_019_jr_8015444C.c +++ /dev/null @@ -1,1263 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -extern void func_801458E0(void); -extern s32 D_800AE6AC; -extern s32 D_800AE6B0; -extern s16 D_800B9A0A; -extern u8 D_80078E50; -extern void func_800D185C(u8 *a0); -extern void func_801458E8(void); -extern s32 func_80029504(void); -extern void func_80145B24(void); -extern u8 D_8018F74C; -extern u8 D_8018F6BC; -extern u8 D_8018F698; -extern u8 D_8018F674; -extern u8 D_8018F728; -extern u8 D_8018F704; -extern u8 D_8018F6E0; -extern u8 D_8018F650; -extern void func_80145934(void); -extern u8 D_8018F7DC; -extern u8 D_8018F7B8; -extern u8 D_8018F794; -extern u8 D_8018F770; -extern void func_80145A2C(void); -extern s32 func_800291DC(s32); -extern void func_800291C8(s32, s32); -extern void func_80162120(void); -extern void func_80029124(s32, s32); -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); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_80145BF8(void); -extern s32 func_800291B4(s32 arg); -extern void func_800291A0(s32, s32); -extern void func_80145C54(void); -extern s32 func_80145CEC(); -extern s32 func_80029178(s32 arg); -extern void func_80146014(s32 a0); -extern unsigned char D_8018EBD4[]; -extern unsigned char D_8018EC04[]; -extern unsigned char D_8018EC54[]; -extern unsigned char D_8018EC84[]; -extern unsigned char D_8018ECB4[]; -extern void func_80145EE8(s32 param_1); -extern void MoveImage(void *a0, s32 a1, s32 a2); -extern void func_80146074(void); -extern s32 func_80146128(void); -extern void func_80146360(void); -extern void func_801463A0(); -extern void func_8014607C(void); -extern s32 *D_80126B78; -extern u8 D_80078EC1; -extern s32 D_80078EC8; -extern s32 D_80126B9C; -extern s32 D_8011F730; -extern u16 D_801152B8; -extern u16 D_8012693A; -extern u8 D_80126BE0[]; -extern u8 D_801150F0[]; -extern void *memcpy(void *dst, const void *src, u32 n); -extern void func_80146FC4(s32 a0); -extern void func_80150A70(s32 a0); -extern void func_80147098(s32 *a0); -extern void func_8014A638(s32 arg0); -extern s32 func_80155458(s32 a0); -extern s32 func_80029104(void); -extern void func_80029344(void); -extern void func_8014ADE0(s32 a0); -extern void func_8014B350(s32 a0); -extern void func_8014B7A4(s16 *param_1); -extern s32 func_80161D58(s32 a0); -extern void func_80161A90(s32 a0); -extern void func_8014B504(u16 *a0); -extern void func_80149BEC(s32 a0); -extern void func_8014B5D0(s32 *a0); -extern void func_8014C99C(u8 *a0); -extern void func_8014B190(s32 s0); -extern void func_80148648(s32 a0, s32 a1); -extern s32 func_80149228(s32 a0); -extern void func_8014A59C(s32 a0); -extern void func_8016F14C(void *a0); -extern void func_80154418(void *a0); -extern void func_80154BE4(s32 a0); -extern void func_80165694(s32 arg0); -extern void func_801654A8(s32 a0); -extern void func_8014A680(s32 a0); -extern void func_8014A6A8(s32 a0); -extern void func_8014A71C(s32 a0); -extern void func_80172588(s32 *a0); -extern void func_801473DC(s32 *a0); -extern void func_80015978(s32 a0, s32 *a1); -extern void (*D_8018ED04[])(void *); -extern u8 D_80126BA4; -extern s32 D_80127098; -extern s32 D_80127094; -extern s32 D_80127090; -extern void func_80146534(void); -extern void func_8001D074(s32 a0, s32 a1); -extern void func_80146554(void); -extern void func_80146578(void); -extern void func_8001CFDC(s32, s32); -extern void func_8014659C(void); -extern void func_8001D074(s32, s32); -extern void func_801465C0(void); -extern void func_801465E4(void); -extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); -extern s32 D_8011F9D0; -extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); -extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 D_8011F750; -extern s32 D_8011F754; -extern u8 * func_801468C8(s32 arg0, u8 arg1); -extern s32 D_8011D030; -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); -extern s32 func_80146B9C(void *a0); -extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); -extern u16 D_8011DA28; -extern s32 func_80146B9C(void * arg0); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80146CA0(void *a0); -extern void func_80146CB4(void *a0); -extern void func_80146CC8(s32 a0); -extern void func_80146D30(s32 a0); -extern void func_80146D80(s32 *a0); -extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80146D90(s32 a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); -extern void func_80146E90(s32 *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80015954(s32 a0, s32 a1); -extern void func_80149374(s32 a0, s32 a1); -extern void func_80146F58(s32 a0, s32 a1); -extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 func_8012A68C(void); -extern s16 func_8012A758(void); -extern void func_8004978C(s16 *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern u8 D_80126DB0[]; -extern u16 D_80126DB6; -extern void func_8014704C(s32 *a0); -extern s32 func_80147054(void *a0); -extern void func_80147060(u8 * a0); -extern void func_8014706C(void *arg0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80147084(s32 *a0); -extern void func_8014708C(void *arg0); -extern s32 func_801470A0(void *a0); -extern void func_801470AC(s32 *a0); -extern void func_801470B4(s32 arg0); -extern void func_801470C0(s32 a0); -extern void func_80147118(s32 a0); -extern s16 D_80126BB8; -extern s16 D_80126BBA; -extern s16 D_80126BBC; -extern void func_80147264(s32 a0); -extern void func_80147290(void); -extern void func_801472B4(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void *D_8012707C; -extern void func_801472DC(void); -extern void func_801472F0(void *a0); -extern void func_80147364(u16, s32); -extern void func_80147300(u16 arg0); -extern void func_80147324(s32 arg0); -extern void func_801473EC(s32 *a0); -extern void func_80147460(s32 a0); -extern void func_80147514(); -extern void func_80147628(s32 a0); -extern void func_80147478(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); -extern s32 func_800129CC(s32 a0, s32 a1); -extern void func_80147514(s32 arg0); -extern void func_80013F3C(s32 a0); -extern void func_80012558(s32 a0, s32 a1); -extern void func_800126C4(s32 a0, s32 a1); -extern void func_800123F0(s32 a0, s32 a1); -extern void func_80147718(s32 a0); -extern void func_80147788(void *a0, s32 a1); -extern void func_801477A8(void *a0, s32 a1); -extern void func_801477C8(void *a0, s32 a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80147814(s32 a0, s32 a1); -extern void func_80147928(int a0, int a1); -extern void func_8014799C(int a0, int a1); -extern void func_80147A10(int a0, int a1); -extern void func_80147860(int a0, int a1, int a2, int a3); -extern void func_80147948(s32 a0, s32 a1, s32 a2); -extern void func_801479BC(s32 a0, s32 a1, s32 a2); -extern void func_80147A30(s32 a0, s32 a1, s32 a2); -extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147948(int a0, int a1, int a2); -extern void func_801479BC(int a0, int a1, int a2); -extern void func_80147A30(int a0, int a1, int a2); -extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147A84(s32 arg0); -extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147AAC(s32 arg0); -extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80147B5C(s32 a0, void *a1); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern void func_80147B18(s32 a0); -extern void func_80147B5C(s32 arg0, void *arg1); -extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147DC0(s32 a0, s32 a1); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147F50(s32 arg0); -extern void func_80148038(s32 a0, s32 a1); -extern s32 ratan2(s32 a0, s32 a1); -extern s32 csqrt(s32 a0); -extern s32 func_80012A60(s32 a0, s32 a1); -extern void func_80148094(int param_1, short *param_2, int *param_3); -extern void func_801485B8(s32 a0, s32 a1, s32 a2); -extern void func_801484B0(s32 a0, s32 a1); -extern s32 func_80154358(void *a0); -extern void func_801484E8(s32 a0, s32 a1); -extern void func_80148534(s32 a0, s32 a1); -extern void func_8014856C(s32 a0, s32 a1); -extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); -extern void func_80148634(void *a0); -extern u8 D_800B9A64; -extern s32 func_80014DC0(); -extern s32 func_80014D68(); -extern s32 func_80014D94(); -extern s32 func_80014CF8(); -extern void func_800120DC(); -extern s32 func_800CF8B4(); -extern u16 func_801487F4(s32 *a0); -extern u16 func_80148800(s32 *a0); -extern u8 func_8014880C(s32 *a0); -extern u16 func_80148818(s32 *a0); -extern s32 func_80047D3C(s32 a0); -extern s32 func_80148824(void *arg0); -extern s32 func_801488A8(u8 *a0); -extern s32 func_8014891C(s32 a0); -extern s32 func_80148980(u8 *a0); -extern s32 func_801489E8(s32 a0); -extern s32 func_80148A48(s32 a0); -extern int func_80148AFC(void *a0); -extern void func_80148AAC(u8 *a0); -extern s32 func_80148C18(void); -extern s32 func_80148C20(s32 a0, s16 a1); -extern s32 func_80148C34(s32 a0, s32 a1); -extern s32 func_80148C4C(s32 a0, s32 a1); -extern s32 func_80148C64(s32 a0, s32 a1); -extern s32 func_80148C7C(void); -extern s32 func_80148C84(s32 a0, s32 a1); -extern s32 func_80148C9C(s32 a0, s32 a1); -extern s32 func_80148CB4(s32 a0, s32 a1); -extern s32 func_80148CCC(s32 a0, s32 a1); -extern s32 func_80148CE4(void); -extern s32 func_80148CEC(void); -extern s32 func_80148CF4(s32 a0, s32 a1); -extern s32 func_80148D0C(s32 a0, s32 a1); -extern s32 func_80148D24(void *a0, int a1); -extern s32 func_80148D3C(void); -extern s32 func_80148F60(void); -extern s32 func_80148F68(s32 a0); -extern s32 func_80148F74(s32 a0); -extern s32 func_80148F80(s32 a0); -extern s32 func_80148F8C(s32 a0); -extern s32 func_80148F98(void); -extern s32 func_80148FA0(s32 a0); -extern s32 func_80148FAC(s32 a0); -extern s32 func_80148FB8(s32 a0); -extern s32 func_80148FC4(s32 a0); -extern s32 func_80148FD0(void); -extern s32 func_80148FD8(void); -extern s32 func_80148FE0(s32 a0); -extern s32 func_80148FEC(s32 a0); -extern s32 func_80148FF8(s32 a0); -extern s32 func_80149004(void); -extern void func_8014900C(s32 *a0); -extern void func_80149020(s32 *a0); -extern void func_80149034(s32 *a0); -extern void func_80149048(s32 *a0); -extern void func_8014905C(u8 *a0); -extern void func_801490E0(s32 *a0, s16 a1); -extern void func_801490E8(s32 *a0, s16 a1); -extern void func_801490F0(s32 *a0, s16 a1); -extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); -extern void func_801490F8(s32 a0, s32 a1); -extern s32 func_801491C4(s32 a0); -extern s32 func_80149184(s32 a0); -extern s32 D_801151D4; -extern void func_80149204(s32 *a0); -extern void func_80149210(s32 a0, s32 a1); -extern s32 func_80149284(s32 *a0, s32 a1); -extern void func_80149350(s32 arg0); -extern void func_80149290(s32 a0); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_80149374(s32 arg0, s32 arg1); -extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8014942C(s32 arg0); -extern void func_8012EF70(s32 a0, s32 a1); -extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012EFB8(s32 a0); -extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); -extern void func_8014964C(s32 param_1, s32 param_2); -extern s32 func_801496D4(void *a0); -extern void func_8015AD08(); -extern void func_80149704(void); -extern void func_8015ACC4(); -extern void func_80149724(void); -extern u8 D_80078EBF; -extern s32 func_80149744(struct S_80149744 *a0); -extern void func_8015F7A0(); -extern void func_80149788(void); -extern void func_801653B8(); -extern void func_80149864(void); -extern s16 currentLocationId; -extern s32 func_8016F1AC(void); -extern s32 func_80149884(void); -extern void func_80160B00(); -extern void func_801498C0(void); -extern s32 func_80149AA8(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern void func_80146750(void *a0); -extern s32 func_801498E0(s32 *a0); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_80147364(u16 a0, s32 a1); -extern s32 func_800CCF28(s32 a0); -extern u8 D_80126B5C; -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_8015DAC4(s32 *a0); -extern void func_8015554C(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern void func_80149B14(s32 *a0); -extern u8 func_8014BEF8(void); -extern s32 func_80149B54(s32 * arg0); -extern void func_8015DE24(s32 *a0); -extern void func_80157510(s32 *a0); -extern void func_80149BAC(s32 *a0); -extern s32 func_80029178(s32 a0); -extern s32 func_80149C08(s32 arg0); -extern void func_801577C8(); -extern void func_80149C94(void); -extern void func_80157D20(void); -extern void func_80149CB4(void); -extern s32 func_80149CD4(s32 a0); -extern u8 func_8014B5B8(s32 *a0); -extern s32 func_80149D10(s32 a0); -extern s32 func_80149E94(s32 a0); -extern s32 func_80149DD8(s32 a0); -extern s32 func_80149D9C(s32 a0); -extern u8 D_801202A0[]; -extern s32 func_80149F2C(s32 a0, s32 a1); -extern s32 func_80149E94(s32 arg0); -extern void func_80149FA8(void); -extern s32 D_8018EDCC[]; -extern u8 D_80078E78[]; -extern s32 func_80149FB0(s32 a0); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern void func_8014A1B0(s32 a0, s32 a1); -extern s32 func_8014A048(s32 param_1); -extern u16 func_80156370(u16 a0); -extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); -extern void func_8015D4B4(); -extern void func_8014A218(void); -extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); -extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); -extern s32 func_8014A238(s32 arg0); -extern s32 func_8014A2E4(s32 a0); -extern void func_8014A380(s32 a0, s32 a1); -extern s16 D_801152B0; -extern s16 D_801152B4; -extern s32 func_8014A3E0(struct S_8014A3E0 *a0); -extern s32 func_8014A454(s32 a0); -extern s32 func_8014A4B4(void *a0); -extern void func_8015EDD4(); -extern void func_8014A4FC(void); -extern s32 func_8014A674(s32 *a0); -extern s32 func_8014A69C(s32 *a0); -extern s32 func_8014A6C4(s32 a0); -extern void func_8015E184(); -extern void func_8014A830(void); -extern s32 func_80029AF4(void); -extern s32 func_8014A850(s32 param_1); -extern void func_8014AA04(s32 a0); -extern void func_801599A4(void *a0); -extern void func_80159B3C(void *a0); -extern s32 func_80165A20(s32 a0); -extern void func_8014AB7C(); -extern void func_8014AC10(); -extern void func_8014AA28(void); -extern void func_8014AB5C(void); -extern void func_80162CCC(void); -extern void func_8014AB7C(s32 arg0); -extern void func_8014ABF0(void); -extern void func_80016714(void *a0, s32 a1); -extern void func_8014AC10(s32 arg0); -extern void func_8014ACC0(s32 a0, s32 a1); -extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); -extern void func_8014ACE8(void *a0, s32 a1, s32 a2); -extern void func_80146AFC(void *a0); -extern void func_8014ADA8(s32 a0, s32 a1); -extern void func_8014AD7C(s32 a0); -extern s32 D_80078E8C; -extern void func_8014B034(s32 arg0); -extern void func_8014B00C(s32 arg0); -extern void func_8014B084(void); -extern s16 D_80078E90; -extern void func_8014B034(s32 a0); -extern u16 D_80078EAC; -extern u8 D_80078EBA; -extern void func_800D10EC(void); -extern void func_8002AC98(void); -extern s32 func_8014B154(s32 *a0); -extern void func_8014B12C(void); -extern void func_8014B2F8(void); -extern void func_8014B4C4(void); -extern void func_8014B160(s32 a0); -extern s32 func_8016F1C4(void); -extern s16 D_80078E96; -extern s16 D_80078EB8; -extern u16 D_80078EA6; -extern void func_8014B2A8(void); -extern void func_8014B310(void); -extern void func_8014B2D0(void); -extern s32 D_80078E94; -extern s32 D_80078ECC; -extern void func_8014B33C(void); -extern u8 D_80062BF4[]; -extern void func_8014BC80(s32 a0, s32 a1); -extern void func_80019064(void *a0); -extern s32 D_80078E98; -extern void func_80166244(); -extern void func_8014B4D4(void *a0); -extern s16 D_80078E9A; -extern u8 D_80126D1C; -extern s32 D_80126D74; -extern void func_8014B598(s32 a0, s32 a1); -extern void func_8014B5B0(s32 *a0); -extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); -extern void func_8014B5D8(s32 s1); -extern s32 D_80078E9C; -extern s32 D_80078ED0; -extern void func_8014B6F0(s32 a0, s32 a1); -extern void func_8014B768(s32 a0, s32 a1); -extern void func_8014B944(s32 a0, s32 a1, s32 a2); -extern s32 D_80078EA4; -extern u16 D_80078EB2; -extern s16 D_80078EB4; -extern void func_8014BB0C(void); -extern void func_8014BB24(s32 a0, s32 a1, s32 a2); -extern void func_8014BC0C(s32 a0, s32 a1); -extern void func_8014BC44(s32 a0, s32 a1); -extern u8 D_800B9A17; -extern void func_8014BCC0(s32 a0, s32 a1); -extern u16 D_80078EB6; -extern s32 func_8014BCEC(s32 a0, s32 a1); -extern void func_8014BD24(s32 a0, s32 a1); -extern void func_8014BD60(s32 param_1, s32 param_2); -extern void func_8014BD98(s32 a0, u16 a1); -extern void func_8014BDC8(void); -extern void func_8014BDE0(void); -extern s32 func_8017267C(s32 *a0); -extern s32 func_80013294(void *a0, void *a1); -extern void func_80029ED4(s32 a0); -extern void func_8014BDE8(s32 a0); -extern void func_8014BE78(void); -extern void func_8014BE9C(void); -extern void func_80029124(s32 a0, s32 a1); -extern void func_8014BEC0(void); -extern void func_8014BF18(s32 a0); -extern void func_8014BF48(void); -extern u8 func_8014BF6C(void); -extern void func_8014BF8C(u8 arg0); -extern void func_8014BFB0(void); -extern u8 func_8014BFD4(void); -extern void func_8014BFF4(s32 a0, s32 a1); -extern void func_8014C010(s32 a0, s32 a1); -extern s32 func_8014C050(s32 a0, s32 a1); -extern s32 func_8014C088(s32 a0, s32 a1); -extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); -extern s32 func_8014C118(void * a0, s32 a1, s32 a2); -extern s32 func_8014C168(s32 * param_1, s32 param_2); -extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); -extern u8 D_8018EE54[]; -extern void func_8014C1A0(s32 arg0, s32 arg1); -extern s32 func_80013328(s32 a0, s32 a1); -extern s32 func_8014C59C(void *a0, void *a1); -extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); -extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); -extern s32 ratan2(s32 dx, s32 dy); -extern u8 D_8018EE5C; -extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); -extern s16 func_8014C5D0(s32 a0, s32 a1); -extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); -extern u8 D_80126D17; -extern void func_8014C6AC(void); -extern void func_8014C6C0(void); -extern u8 D_80126D1E; -extern void func_8014C6D0(void); -extern void func_8014C6E0(void); -extern s32 func_8014C860(s32 a0, s32 a1); -extern void func_8014C8C8(s32 a0, s32 *a1); -extern void func_8014C88C(s32 a0); -extern void func_8014C8C8(s32 dst, s32 * src); -extern void func_8014C8F0(s32 arg0); -extern u8 D_801151F0[]; -extern s32 func_8014C918(s32 a0, s32 a1); -extern s32 D_80126B50; -extern void func_8014C968(void); -extern void func_8014C978(void); -extern s32 func_8014C98C(void); -extern void func_80139914(s32 a0); -extern s32 func_8014CA00(s32 a0); -extern u16 func_8014CA70(s32 a0, s32 a1); -extern s32 func_8014CA14(s32 a0, s32 a1); -extern u16 func_8014CAE4(s32 *a0, s32 a1); -extern s32 func_8014CA88(s32 *a0, s32 a1); -extern s32 func_8014CAFC(void); -extern s32 func_8014CB0C(void); -extern s32 func_8014CB1C(void); -extern u8 D_80126D1F; -extern s32 func_8014CB2C(void); -extern s32 func_8014CB58(void); -extern u8 D_80126D1D; -extern void func_8014CB68(void); -extern s32 func_8014CB7C(void); -extern s32 func_8014CB8C(void); -extern struct Packed8 D_80126C98; -extern short D_80126C9E; -extern void func_8014CB9C(struct Packed8 *a0); -extern s32 D_80126CDC; -extern void func_8014CBD8(void); -extern s16 D_80126CC4; -extern void func_8014CBE8(void); -extern void func_8014CBF8(void *a0); -extern void func_8014D3E0(s32 a0); -extern void func_8014D04C(void); -extern void func_8014CCB4(void); -extern void func_8014CC28(s32 a0); -extern void func_8014CD0C(u8 *a0); -extern s32 func_8014CF04(s32 a0, s32 a1, void *a2); -extern void func_8014CD80(s32 a0, void *a1, void *a2); -extern void func_8014D0A4(s32 a0); -extern s32 func_8014D2A0(s32 a0, void *a1, void *a2); -extern s32 func_8014D12C(s32 a0, void *a1, void *a2); -extern void func_8014D438(s32 a0); -extern void func_8014D3E0(s32 _arg0); -extern void func_8014D610(s32 a0, void *a1, void *a2); -extern s32 func_8014D4C0(s32 a0, void *a1, void *a2); -extern void func_8014D790(s32 a0); -extern void func_8014D738(void); -extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); -extern s32 func_8014D820(s32 a0, u16 *a1, u16 *a2); -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); -extern void func_8014DF94(s32 arg0); -extern void func_8014DF3C(void); -extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ -extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ -extern s16 D_801152AC; -extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); -extern void func_8014E48C(s32 a0); -extern void func_8014E434(void); -extern void func_8014E5B4(s32 a0, void *a1, void *a2); -extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); -extern void func_8014E6F8(struct SubE6F8 *a0); -extern void func_8014E6A0(void); -extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); -extern void func_8014E934(s32 _arg0); -extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); -extern s32 func_8014E98C(void *a0); -extern u16 D_800B99DA; -extern s32 D_801150D8; -extern s16 D_801152AA; -extern u8 D_80126720[]; -extern s16 D_80126724; -extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); -extern s32 func_8014ED80(struct SubED80 *a0); -extern int D_801E5BA8; -extern void func_8014ED28(s32 _arg0); -extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F24C(struct SubF24C *a0); -extern void func_8014F1F4(void); -extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F4C0(); -extern s32 func_8014F468(void); -extern int func_8014F74C(); -extern int func_8014F6F4(void); -extern u8 D_800D3918[]; -extern u8 D_801152A8[]; -extern s32 D_801152BC; -extern int func_8014F74C(s32 arg0); -extern s32 func_8014FA70(s32 a0); -extern s32 D_801E5BAC; -extern void func_8014FA04(s32 a0); -extern s32 func_8014FBC0(); -extern s32 func_8014FC18(u8 *self); -extern int func_8014FD54(int param_1); -extern void func_8014FCFC(void); -extern void func_80150170(void *a0); -extern s32 func_8014FE60(void *a0); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_8014FE60(void *e); -extern s32 func_80134510(s32 arg); -extern s32 func_80150150(s32 a, s32 b); -extern s32 func_80150460(s32 a, s32 b); -extern void func_801504D8(u16 *a0); -extern s32 func_80150480(s32 _arg0); -extern s32 func_80150528(void *a0, void *a1, void *a2); -extern s32 func_80150528(void *arg0, void *arg1, void *arg2); -extern s32 func_801506A4(s32 a0, s32 a1); -extern s32 func_801505FC(s32 a0); -extern s32 func_801506A4(s32 arg0, s32 arg1); -extern void func_80150820(s32 a0, s32 a1); -extern void func_8015086C(int param_1); -extern s32 func_801508B4(s32 a0); -extern s32 func_8015094C(s32 a0); -extern short func_801508F8(s32 a0); -extern s32 D_8018EE8C; -extern s32 D_80126990; -extern s32 D_80126994; -extern u8 D_80126948[]; -extern s32 func_80021174(s32 a0, s32 a1); -extern s32 func_8015094C(s32 param_1); -extern void func_80150B9C(void); -extern s32 func_80151184(s32 a0, s32 a1, s32 a2); -extern s32 func_80150BA4(s32 a0); -extern s32 func_801619D0(void *a0); -extern void func_80150BC8(s32 *a0); -extern s32 func_80150480(s32 a0); -extern u16 D_800AE6DC; -extern void func_80150C48(s32 a0); -extern int func_80151184(int arg, int a1, int a2); -extern int func_80150CA0(int arg); -extern void func_80150EC4(s32 a, s32 b); -extern void func_80150CC4(s32 a); -extern void func_80150CE4(s32 a); -extern void func_80150D04(s32 a); -extern void func_80150D24(s32 a); -extern void func_80150D44(s32 a); -extern void func_80150D64(s32 a); -extern void func_80150D84(s32 a); -extern void func_80150DA4(s32 a); -extern void func_80150DC4(s32 a); -extern void func_80150DE4(s32 a); -extern void func_80150E04(s32 a); -extern void func_80150E24(s32 a); -extern void func_80150E44(s32 a); -extern void func_80150EC4(s32 a0, s32 a1); -extern void func_80150E64(s32 a0); -extern void func_80150E84(s32 a0); -extern void func_80150EA4(s32 a0); -extern u8 D_800AE6C0; -extern s16 D_800AE6C8; -extern s16 D_800AE6CA; -extern s16 D_800AE6CC; -extern s32 D_800AE6C4; -extern s16 D_800AE6CE; -extern u8 D_800AE6BE; -extern u8 D_801201F8[]; -extern void func_80150F78(void); -extern void func_80150F80(s32 a0); -extern int func_80150FB4(int arg); -extern void func_80150FD8(s32 a0); -extern int func_80151014(int arg); -extern void func_80151038(s32 a0); -extern int func_80151070(int arg); -extern int func_80151094(int arg); -extern void func_801510B8(void); -extern void func_801510C0(void); -extern int func_801510C8(int arg); -extern int func_801510EC(int arg); -extern s32 func_8012DB84(void); -extern s32 func_80151110(void); -extern void func_80151130(void); -extern int func_80151138(int arg); -extern void func_8015115C(s32 *a0, s16 a1); -extern s32 func_80151164(s32 a0, s32 a1); -extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); -extern void func_801511A8(u8 *a0); -extern void func_801511C4(u8 *a0); -extern int func_80151204(int arg, int a1); -extern int func_801511E0(int arg); -extern int func_80151204(int a0, int a1); -extern void func_80151238(void *a0); -extern void func_8015126C(u16 *p); -extern void func_80151780(s32 a0); -extern void func_801516F0(s32 *a0); -extern void func_8015173C(s32 *a0); -extern s16 D_8011DB1A; -extern s32 D_80127518; -extern s32 D_801151FC; -extern s32 func_801725CC(u8 *a0); -extern s32 func_80029D3C(void); -extern void func_80151878(void); -extern void func_80153B58(s32 *a0); -extern s32 func_80151880(s32 a0); -extern s32 func_801518D8(s32 a0); -extern s32 func_80151944(void); -extern s32 func_80151924(void); -extern void func_8014E934(s32 a0); -extern s32 func_8014F3E8(s32 a0); -extern void func_801519C8(s32 a0); -extern void func_80151980(s32 a0); -extern M2C_UNK D_800D5880; -extern s32 D_800D58AC; -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801519C8(s32 arg0); -extern void func_80151C54(s32 a0); -extern void func_801542DC(s32 *a0, s32 a1); -extern void func_8015BDD0(s32 *a0); -extern void func_80165718(s32 a0); -extern u8 D_800D46E4[]; -extern void func_80151AE4(s32 arg0); -extern void (*D_8018EF34[])(void); -extern void func_80151D24(void *a0); -extern void func_80151DB0(s32 a0); -extern void func_80151D60(void *a0); -extern s32 func_80172630(u8 *a0); -extern s32 D_80062C14; -extern void func_80151DB0(s32 param_1); -extern void func_80151E78(s32 *a0); -extern void func_80151ECC(struct S80151ECC *a0); -extern void func_80151FB4(s32 a0); -extern void func_80151F38(s32 *a0); -extern void func_801553C0(s32 a0); -extern void func_80153C18(); -extern void (*D_8018EF58[])(void); -extern void func_80152058(void *a0); -extern void func_801520DC(s32 a0); -extern void func_80152094(s32 a0); -extern void func_80147324(s32 a0); -extern u8 D_80062C04[]; -extern M2C_UNK D_8018EF48; -extern void func_801520DC(s32 arg0); -extern void func_801470B4(s32 a0); -extern void func_8015369C(s32 a0); -extern void func_80152194(s32 *a0); -extern s32 func_801536DC(s32 a0); -extern void func_8015220C(s32 a0); -extern s32 func_80153800(s32 a0); -extern void func_801522CC(s32 a0); -extern void func_80152254(s32 *a0); -extern void (*D_8018EF6C[])(void); -extern void func_80152370(void *a0); -extern void func_801523F4(s32 a0); -extern void func_801523AC(s32 a0); -extern void func_8001382C(s32 a0, void *a1, void *a2); -extern u8 D_8018EF78[]; -extern void func_801523F4(s32 arg0); -extern void func_801525F4(int); -extern s32 func_801535F4(void *arg0); -extern void func_8015BF48(s32 *a0); -extern void func_80152500(int param_1); -extern void func_801525F4(s32 a0); -extern void (*D_8018EF88[])(void); -extern void func_80152698(void *a0); -extern void func_80152714(s32 a0); -extern void func_801526D4(s32 a0); -extern void func_80152790(s32 a0); -extern void (*D_8018EFA0[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018EF90; -extern void func_801528B0(s32 arg0); -extern void func_8015294C(s32 a0); -extern void func_80152A08(s32 a0); -extern void func_80152AC8(s32 a0); -extern void func_80152A50(s32 *a0); -extern void (*D_8018EFB4[])(void); -extern void func_80152B6C(void *a0); -extern void func_80152BF0(s32 a0); -extern void func_80152BA8(s32 a0); -extern void func_80152C80(s32 *a0); -extern void func_80152C40(s32 *a0); -extern void (*D_8018EFD0[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018EFC0; -extern void func_80152DA8(s32 arg0); -extern void func_80152E4C(s32 a0); -extern void func_80152EFC(s32 a0); -extern void func_80152FBC(s32 a0); -extern void func_80152F44(s32 *a0); -extern void (*D_8018EFE4[])(void); -extern void func_80153060(void *a0); -extern void func_801530E4(s32 a0); -extern void func_8015309C(s32 a0); -extern void func_80155440(s32 *a0); -extern void func_801530E4(s32 arg0); -extern void func_80153150(struct S80153150 *a0); -extern void func_801531BC(s32 a0); -extern void func_8015327C(s32 a0); -extern void func_80153204(s32 *a0); -extern void (*D_8018EFF8[])(void); -extern void func_80153320(void *a0); -extern void func_801533A4(s32 a0); -extern void func_8015335C(s32 a0); -extern void func_80153410(s32 *a0); -extern void func_80153490(s32 a0); -extern void func_80153550(s32 a0); -extern void func_801534D8(s32 *a0); -extern void (*D_8011DB28)(s32 a0); -extern s32 func_801536DC(s32 param_1); -extern void func_800139C8(s32 a0, void *a1, void *a2); -extern s32 func_80153978(s32 a0, u16 *src); -extern s32 func_80133784(s32 a0, void *src, s32 dst); -extern s32 func_801539F8(s32 a0, void *a1); -extern s32 func_801539F8(s32 a0, void * a1); -extern s32 func_8016DA04(s32 a0); -extern s32 func_80153BD8(s32 a0); -extern s32 func_80153BF0(s32 a0); -extern void func_80153C18(void); -extern u16 D_8011F748; -extern void func_80153C30(void); -extern void func_80153C74(s16 a0, s16 a1); -extern s16 D_8011DB18; -extern void func_80153C44(int a0, int a1, s16 a2); -extern s16 D_8011DB0C; -extern s32 D_80115210; -extern void func_80153C8C(void); -extern void func_80153C9C(void); -extern s32 func_80153CBC(void); -extern s32 D_8018F00C; -extern void (*D_8018F034[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018F014; -extern void func_80153D7C(s32 param_1); -extern void func_8015410C(void); -extern void func_80153E00(s32 param_1); -extern void func_80151664(void); -extern void func_80154134(u8 *a0); -extern void func_80154190(u8 *a0, s32 a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154218(u8 *a0, s32 a1, s32 a2); -extern void func_801541D8(u8 *a0, s32 a1, s32 a2); -extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); -extern void func_801542A4(); -extern void func_801542A4(s32 *a0, s32 a1); -extern void func_8015430C(); -extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); -extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); -extern s32 func_80154358(void * arg0); -/* ==== end §8b carried decl layer ==== */ - -/* func_8015444C — ov_SC01_077 exemplar of a ~134-member per-location family. - * 363-ins jump-table bytecode interpreter over arg0->unkB4 (s32 command words indexed - * by the u8 program counter at 0xBC), self-recursing to chain commands. 27-case switch - * (cases 4/11/12 share the +2 tail) + cross-jump-merged tail epilogues. - * - * Key structural facts (vs the m2c seed): - * - Every case spells its FULL tail inline (unkB8=1; pc adjust; recurse) — gcc jump2 - * cross-jumping re-merges the identical suffixes, reproducing the target's shared - * blocks WITH per-case arg copies. m2c's goto-sharing under-counts by ~22 ins. - * - p = arg0->unk20 held in a variable (lives in $a0): cases 23/24/default store - * p->unk20 (target `sw $v0,0x20($a0)`), NOT arg0->unk20 (m2c misread). - * - entry timer test is a byte read (lbu 0xB8) via *(u8*)&unkB8. - * - TU-ambient decls: canonical sig void(void*,s32*,s32*,s32*); no `struct Actor` - * tag (ambient one exists); callees 549F8/54A74/553C0/55440 come from ambient - * decls (1-arg call to 3-arg-canon func_801549F8 via fn-ptr cast). - * - cases 23/24/default merged tail (.L80154998): direct in-place statements, - * B8=BA store FIRST, then unkBC++/unkBD++/unkDC++. No shared nc/nd/ne temps — - * shared temps span 3 blocks -> global-alloc pseudos -> no local-alloc tie -> - * `addiu aN,vN,1` into separate regs. Block-local chains tie in place - * (`addiu vN,vN,1`) and the B8-first statement order reproduces the scheduler - * tie-break (loads BC,BD,DC,BA / adds x3 / stores B8,BC,BD,DC). - * - * rtu_match: MATCH (363 ins). PIN-FREE (no register-asm pins, no dead-reads). - * - * match_one: MATCH (363 ins), self-contained. The four callee externs below - * (549F8/54A74/553C0/55440) were previously supplied by the TU-ambient decls and are - * now spelled explicitly, verbatim from the canonical set in src/ov_SC03_099/... — - * the file compiles standalone AND still reconciles for the x134 family sweep. - * - * JTBL VERIFIED (§8a): target jtbl_801D8934, bounds `sltiu $v1,0x1B` = 27 entries. - * Our .rodata emits exactly 27 R_MIPS_32 .text relocs; every entry's (vram - 0x8015444C) - * offset equals ours, incl. the 4/11/12 three-way share at +0x454 and default at +0x4E8. - */ - - -extern void StoreImage(s32, void *); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_80155440(s32 *a0); -extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); -extern void func_80154B4C(u8 *a0, s32 a1); -extern s32 func_80155394(s32 *a0); -extern void func_801553A8(s32 *a0); -extern u8 D_80126738; -extern u8 D_80126748; -extern u8 D_80126838; -extern u8 D_80126848; - -void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x) { - Actor4C *arg0 = a0v; - s32 *arg1 = arg1x; - s32 *arg2 = arg2x; - s32 *arg3 = arg3x; - Actor4C *p = arg0->unk20; - u8 t; - s32 t2; - u32 op; - s32 temp; - s32 nb4; - s32 nbc; - s32 w; - u8 *img; - - if (p != NULL) { - t = *(u8 *)&arg0->unkB8; - if (t != 0) { - if (*arg1 == 0) { - arg0->unkB8 = t; - *arg1 += 1; - } - t2 = (u16)arg0->unkB8 - 1; - arg0->unkB8 = t2; - if (!(t2 & 0xFF)) { - op = arg0->unkB4[arg0->unkBC]; - switch (op) { - case 0: - arg0->unkB8 = 0; - *arg2 |= 0x8000; - arg0->unkBA = 0; - arg0->unkBC = 0; - arg0->unkBD = 0; - break; - case 1: - arg0->unkB8 = 1; - *arg2 |= 0x8000; - arg0->unkBC = 0; - arg0->unkBD = 0; - arg0->unkDC = 0; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 2: - arg0->unkB8 = 0; - arg0->unkBC = arg0->unkBC + 1; - *arg2 |= 0x8000; - break; - case 3: - temp = arg0->unkB4[arg0->unkBC + 1]; - arg0->unkB8 = 1; - arg0->unkBC = arg0->unkBC + 2; - arg0->unkBA = temp; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 5: - nb4 = arg0->unkB4[arg0->unkBC + 1]; - nbc = arg0->unkB4[arg0->unkBC + 2]; - arg0->unkB8 = 1; - arg0->unkDC = 0; - arg0->unkBC = nbc; - arg0->unkB4 = (s32 *)nb4; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 6: - arg0->unkBC = arg0->unkB4[arg0->unkBC + 1]; - arg0->unkB8 = 1; - arg0->unkDC = ((s32 (*)(s32))func_801549F8)((s32)arg0); - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 7: - arg0->unkB8 = 1; - *arg2 |= 0x4000; - arg0->unkBC = arg0->unkBC + 1; - arg0->unkBD = arg0->unkBD + 1; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 8: - arg0->unkB8 = 1; - *arg2 |= 0x2000; - arg0->unkBC = arg0->unkBC + 1; - arg0->unkBD = arg0->unkBD + 1; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 9: - arg0->unkB8 = 1; - *arg2 |= 0x1000; - arg0->unkBC = arg0->unkBC + 1; - arg0->unkBD = arg0->unkBD + 1; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 10: - arg0->unkB8 = 1; - *arg2 |= 0x800; - arg0->unkBC = arg0->unkBC + 1; - arg0->unkBD = arg0->unkBD + 1; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 13: - arg0->unkB8 = 1; - arg0->unkBC = arg0->unkBC + 1; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 14: - if (*arg3 == 0) { - func_80154B4C((u8 *)arg0, arg0->unkB4[arg0->unkBC + 1]); - } - arg0->unkB8 = 1; - arg0->unkBC = arg0->unkBC + 2; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 15: - if (*arg3 == 0) { - func_80154A74((s32)arg0, arg0->unkB4[arg0->unkBC + 1]); - } - arg0->unkB8 = 1; - arg0->unkBC = arg0->unkBC + 2; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 16: - if (*arg3 == 0) { - func_801553C0((s32)arg0); - } - arg0->unkB8 = 1; - arg0->unkBC = arg0->unkBC + 1; - arg0->unkBD = arg0->unkBD + 1; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 17: - if (*arg3 == 0) { - func_80155440((s32 *)arg0); - } - arg0->unkB8 = 1; - arg0->unkBC = arg0->unkBC + 1; - arg0->unkBD = arg0->unkBD + 1; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 18: - if (*arg3 == 0) { - func_80155394((s32 *)arg0); - } - arg0->unkB8 = 1; - arg0->unkBC = arg0->unkBC + 1; - arg0->unkBD = arg0->unkBD + 1; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 19: - if (*arg3 == 0) { - func_801553A8((s32 *)arg0); - } - arg0->unkB8 = 1; - arg0->unkBC = arg0->unkBC + 1; - arg0->unkBD = arg0->unkBD + 1; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 20: - if (*arg3 == 0) { - arg0->unk1A8 ^= 1; - } - arg0->unkB8 = 1; - arg0->unkBC = arg0->unkBC + 1; - arg0->unkBD = arg0->unkBD + 1; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 21: - if (*arg3 == 0) { - w = arg0->unkB4[arg0->unkBC + 1]; - img = &D_80126738; - StoreImage(w, img); - } - arg0->unkB8 = 1; - arg0->unkBC = arg0->unkBC + 2; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 22: - if (*arg3 == 0) { - w = arg0->unkB4[arg0->unkBC + 1]; - img = &D_80126838; - StoreImage(w, img); - } - arg0->unkB8 = 1; - arg0->unkBC = arg0->unkBC + 2; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 4: - case 11: - case 12: - arg0->unkB8 = 1; - arg0->unkBC = arg0->unkBC + 2; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 23: - if (*arg3 == 0) { - p->unk20 = (Actor4C *)&D_80126748; - } - arg0->unkB8 = (u16)arg0->unkBA; - arg0->unkBC++; - arg0->unkBD++; - arg0->unkDC++; - break; - case 24: - if (*arg3 == 0) { - p->unk20 = (Actor4C *)&D_80126848; - } - arg0->unkB8 = (u16)arg0->unkBA; - arg0->unkBC++; - arg0->unkBD++; - arg0->unkDC++; - break; - case 25: - if (*arg3 == 0) { - arg0->unk44 = arg0->unk44 & 0xFFFDFFFF; - } - arg0->unkB8 = 1; - arg0->unkBC = arg0->unkBC + 1; - arg0->unkBD = arg0->unkBD + 1; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 26: - if (*arg3 == 0) { - arg0->unk44 = arg0->unk44 | 0x20000; - } - arg0->unkB8 = 1; - arg0->unkBC = arg0->unkBC + 1; - arg0->unkBD = arg0->unkBD + 1; - func_8015444C(arg0, arg1, arg2, arg3); - break; - default: - p->unk20 = (Actor4C *)(op + 0x10); - arg0->unkB8 = (u16)arg0->unkBA; - arg0->unkBC++; - arg0->unkBD++; - arg0->unkDC++; - break; - } - } - arg0->unkB8 = (u16)arg0->unkB8 | *arg2; - } - } -} - - - - -/* - * func_801549F8 — scan param->b4[] (s32[], length = the u8 at param->bc), - * stepping the index by 1 or 2 per entry via the 27-entry jump table - * jtbl_801D89A4; count the default/out-of-range entries. Returns (u8) count. - * - * REDRAFT NOTE (the decay fix, 2 levers — both required, both source-level): - * - * 1. `u8 n` (NOT `s32 n`) — THE fix for the stored draft's 3-off residual. - * The stored draft's whole residual was the position of the loop-bound - * keep-alive copy `addu $a3,$v0,$zero` among the three preheader insns: - * draft emitted [lw base][copy][lui/addiu jtbl], target wants - * [lw base][lui/addiu jtbl][copy]. The loop-invariant jtbl address is - * moved by loop.c and lands AFTER every preheader source statement, so as - * long as the copy is an ordinary preheader statement it can never follow - * the hoist. Making `n` a u8 changes the RTL for `n = *(u8*)(p+0xBC)`: - * cse1 no longer converts it into a plain reg-reg copy in place, and the - * copy that ultimately feeds the exit test is emitted at loop_start AFTER - * move_movables (post-loop pass), i.e. after the hoisted lui/addiu — the - * target order. Nothing else in the function changes. - * - * 2. The `j = i` / `i = j + k` index form BLOCKS strength reduction, which - * is what the stored draft's `register s32 i __asm__("$3")` pin was for. - * Unblocked, -O2 turns base[i] into a walking pointer (2nd biv, 33 ins); - * the target keeps the INDEX form (sll $v0,$v1,2; addu $v0,$v0,$a0; lw). - * `j` is a mult=1/add=0 giv of the biv `i`, so SR declines and i/j get - * coalesced into $v1 — no extra insn. This replaces the hard-register - * pin, so the match is pin-free and safe to travel to sibling overlays. - * (The pinned form — keep `register s32 i __asm__("$3")` + `i += 1/2` and - * just change `n` to u8 — also MATCHes, 31 ins, if a pin is ever wanted.) - * - * OPT LEVEL: plain -O2. The unfilled load-delay nops are this psx gcc's - * default, not an -O1 tell. - * - * VERIFIED: python3 tools/match_one.py func_801549F8 --c .run/uc/func_801549F8.c - * --asm-subdir asm/ov_SC01_077/nonmatchings/ov_SC01_077_jr_8015444C - * -> MATCH (31 ins) - */ -s32 func_801549F8(s32 param_1, s32 _arg1, s32 _arg2) -{ - s32 i, j; - u8 n; - u8 count; - s32 *base; - - count = 0; - i = 0; - if (*(u8 *)(param_1 + 0xBC) != 0) { - base = *(s32 **)(param_1 + 0xB4); - n = *(u8 *)(param_1 + 0xBC); - do { - j = i; - switch (base[j]) { - case 0: case 2: case 7: case 8: case 9: case 10: - case 0xd: case 0x10: case 0x11: case 0x12: case 0x13: - case 0x14: case 0x19: case 0x1a: - i = j + 1; - break; - case 3: case 4: case 5: case 6: case 0xb: case 0xc: - case 0xe: case 0xf: case 0x15: case 0x16: - i = j + 2; - break; - default: - i = j + 1; - count += 1; - break; - } - } while (i != n); - } - return count; -} - -DEFINE_func_80154A74() /* dedup: shared engine-core @0x80154A74 (src/shared) */ - -DEFINE_func_80154AB4() /* dedup: shared engine-core @0x80154AB4 (src/shared) */ - -DEFINE_func_80154AE0() /* dedup: shared engine-core @0x80154AE0 (src/shared) */ - -DEFINE_func_80154B20() /* dedup: shared engine-core @0x80154B20 (src/shared) */ - -DEFINE_func_80154B4C() /* dedup: shared engine-core @0x80154B4C (src/shared) */ - -DEFINE_func_80154B7C() /* dedup: shared engine-core @0x80154B7C (src/shared) */ - -DEFINE_func_80154B98() /* dedup: shared engine-core @0x80154B98 (src/shared) */ - -DEFINE_func_80154BC8() /* dedup: shared engine-core @0x80154BC8 (src/shared) */ - -DEFINE_func_80154BE4() /* dedup: shared engine-core @0x80154BE4 (src/shared) */ diff --git a/src/ov_SC04_019/ov_SC04_019_jr_80154C24.c b/src/ov_SC04_019/ov_SC04_019_jr_80154C24.c deleted file mode 100644 index 30c9c90d3..000000000 --- a/src/ov_SC04_019/ov_SC04_019_jr_80154C24.c +++ /dev/null @@ -1,1799 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -extern void func_801458E0(void); -extern s32 D_800AE6AC; -extern s32 D_800AE6B0; -extern s16 D_800B9A0A; -extern u8 D_80078E50; -extern void func_800D185C(u8 *a0); -extern void func_801458E8(void); -extern s32 func_80029504(void); -extern void func_80145B24(void); -extern u8 D_8018F74C; -extern u8 D_8018F6BC; -extern u8 D_8018F698; -extern u8 D_8018F674; -extern u8 D_8018F728; -extern u8 D_8018F704; -extern u8 D_8018F6E0; -extern u8 D_8018F650; -extern void func_80145934(void); -extern u8 D_8018F7DC; -extern u8 D_8018F7B8; -extern u8 D_8018F794; -extern u8 D_8018F770; -extern void func_80145A2C(void); -extern s32 func_800291DC(s32); -extern void func_800291C8(s32, s32); -extern void func_80162120(void); -extern void func_80029124(s32, s32); -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); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_80145BF8(void); -extern s32 func_800291B4(s32 arg); -extern void func_800291A0(s32, s32); -extern void func_80145C54(void); -extern s32 func_80145CEC(); -extern s32 func_80029178(s32 arg); -extern void func_80146014(s32 a0); -extern unsigned char D_8018EBD4[]; -extern unsigned char D_8018EC04[]; -extern unsigned char D_8018EC54[]; -extern unsigned char D_8018EC84[]; -extern unsigned char D_8018ECB4[]; -extern void func_80145EE8(s32 param_1); -extern void MoveImage(void *a0, s32 a1, s32 a2); -extern void func_80146074(void); -extern s32 func_80146128(void); -extern void func_80146360(void); -extern void func_801463A0(); -extern void func_8014607C(void); -extern s32 *D_80126B78; -extern u8 D_80078EC1; -extern s32 D_80078EC8; -extern s32 D_80126B9C; -extern s32 D_8011F730; -extern u16 D_801152B8; -extern u16 D_8012693A; -extern u8 D_80126BE0[]; -extern u8 D_801150F0[]; -extern void *memcpy(void *dst, const void *src, u32 n); -extern void func_80146FC4(s32 a0); -extern void func_80150A70(s32 a0); -extern void func_80147098(s32 *a0); -extern void func_8014A638(s32 arg0); -extern s32 func_80155458(s32 a0); -extern s32 func_80029104(void); -extern void func_80029344(void); -extern void func_8014ADE0(s32 a0); -extern void func_8014B350(s32 a0); -extern void func_8014B7A4(s16 *param_1); -extern s32 func_80161D58(s32 a0); -extern void func_80161A90(s32 a0); -extern void func_8014B504(u16 *a0); -extern void func_80149BEC(s32 a0); -extern void func_8014B5D0(s32 *a0); -extern void func_8014C99C(u8 *a0); -extern void func_8014B190(s32 s0); -extern void func_80148648(s32 a0, s32 a1); -extern s32 func_80149228(s32 a0); -extern void func_8014A59C(s32 a0); -extern void func_8016F14C(void *a0); -extern void func_80154418(void *a0); -extern void func_80154BE4(s32 a0); -extern void func_80165694(s32 arg0); -extern void func_801654A8(s32 a0); -extern void func_8014A680(s32 a0); -extern void func_8014A6A8(s32 a0); -extern void func_8014A71C(s32 a0); -extern void func_80172588(s32 *a0); -extern void func_801473DC(s32 *a0); -extern void func_80015978(s32 a0, s32 *a1); -extern void (*D_8018ED04[])(void *); -extern u8 D_80126BA4; -extern s32 D_80127098; -extern s32 D_80127094; -extern s32 D_80127090; -extern void func_80146534(void); -extern void func_8001D074(s32 a0, s32 a1); -extern void func_80146554(void); -extern void func_80146578(void); -extern void func_8001CFDC(s32, s32); -extern void func_8014659C(void); -extern void func_8001D074(s32, s32); -extern void func_801465C0(void); -extern void func_801465E4(void); -extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); -extern s32 D_8011F9D0; -extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); -extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 D_8011F750; -extern s32 D_8011F754; -extern u8 * func_801468C8(s32 arg0, u8 arg1); -extern s32 D_8011D030; -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); -extern s32 func_80146B9C(void *a0); -extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); -extern u16 D_8011DA28; -extern s32 func_80146B9C(void * arg0); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80146CA0(void *a0); -extern void func_80146CB4(void *a0); -extern void func_80146CC8(s32 a0); -extern void func_80146D30(s32 a0); -extern void func_80146D80(s32 *a0); -extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80146D90(s32 a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); -extern void func_80146E90(s32 *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80015954(s32 a0, s32 a1); -extern void func_80149374(s32 a0, s32 a1); -extern void func_80146F58(s32 a0, s32 a1); -extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 func_8012A68C(void); -extern s16 func_8012A758(void); -extern void func_8004978C(s16 *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern u8 D_80126DB0[]; -extern u16 D_80126DB6; -extern void func_8014704C(s32 *a0); -extern s32 func_80147054(void *a0); -extern void func_80147060(u8 * a0); -extern void func_8014706C(void *arg0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80147084(s32 *a0); -extern void func_8014708C(void *arg0); -extern s32 func_801470A0(void *a0); -extern void func_801470AC(s32 *a0); -extern void func_801470B4(s32 arg0); -extern void func_801470C0(s32 a0); -extern void func_80147118(s32 a0); -extern s16 D_80126BB8; -extern s16 D_80126BBA; -extern s16 D_80126BBC; -extern void func_80147264(s32 a0); -extern void func_80147290(void); -extern void func_801472B4(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void *D_8012707C; -extern void func_801472DC(void); -extern void func_801472F0(void *a0); -extern void func_80147364(u16, s32); -extern void func_80147300(u16 arg0); -extern void func_80147324(s32 arg0); -extern void func_801473EC(s32 *a0); -extern void func_80147460(s32 a0); -extern void func_80147514(); -extern void func_80147628(s32 a0); -extern void func_80147478(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); -extern s32 func_800129CC(s32 a0, s32 a1); -extern void func_80147514(s32 arg0); -extern void func_80013F3C(s32 a0); -extern void func_80012558(s32 a0, s32 a1); -extern void func_800126C4(s32 a0, s32 a1); -extern void func_800123F0(s32 a0, s32 a1); -extern void func_80147718(s32 a0); -extern void func_80147788(void *a0, s32 a1); -extern void func_801477A8(void *a0, s32 a1); -extern void func_801477C8(void *a0, s32 a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80147814(s32 a0, s32 a1); -extern void func_80147928(int a0, int a1); -extern void func_8014799C(int a0, int a1); -extern void func_80147A10(int a0, int a1); -extern void func_80147860(int a0, int a1, int a2, int a3); -extern void func_80147948(s32 a0, s32 a1, s32 a2); -extern void func_801479BC(s32 a0, s32 a1, s32 a2); -extern void func_80147A30(s32 a0, s32 a1, s32 a2); -extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147948(int a0, int a1, int a2); -extern void func_801479BC(int a0, int a1, int a2); -extern void func_80147A30(int a0, int a1, int a2); -extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147A84(s32 arg0); -extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147AAC(s32 arg0); -extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80147B5C(s32 a0, void *a1); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern void func_80147B18(s32 a0); -extern void func_80147B5C(s32 arg0, void *arg1); -extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147DC0(s32 a0, s32 a1); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147F50(s32 arg0); -extern void func_80148038(s32 a0, s32 a1); -extern s32 ratan2(s32 a0, s32 a1); -extern s32 csqrt(s32 a0); -extern s32 func_80012A60(s32 a0, s32 a1); -extern void func_80148094(int param_1, short *param_2, int *param_3); -extern void func_801485B8(s32 a0, s32 a1, s32 a2); -extern void func_801484B0(s32 a0, s32 a1); -extern s32 func_80154358(void *a0); -extern void func_801484E8(s32 a0, s32 a1); -extern void func_80148534(s32 a0, s32 a1); -extern void func_8014856C(s32 a0, s32 a1); -extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); -extern void func_80148634(void *a0); -extern u8 D_800B9A64; -extern s32 func_80014DC0(); -extern s32 func_80014D68(); -extern s32 func_80014D94(); -extern s32 func_80014CF8(); -extern void func_800120DC(); -extern s32 func_800CF8B4(); -extern u16 func_801487F4(s32 *a0); -extern u16 func_80148800(s32 *a0); -extern u8 func_8014880C(s32 *a0); -extern u16 func_80148818(s32 *a0); -extern s32 func_80047D3C(s32 a0); -extern s32 func_80148824(void *arg0); -extern s32 func_801488A8(u8 *a0); -extern s32 func_8014891C(s32 a0); -extern s32 func_80148980(u8 *a0); -extern s32 func_801489E8(s32 a0); -extern s32 func_80148A48(s32 a0); -extern int func_80148AFC(void *a0); -extern void func_80148AAC(u8 *a0); -extern s32 func_80148C18(void); -extern s32 func_80148C20(s32 a0, s16 a1); -extern s32 func_80148C34(s32 a0, s32 a1); -extern s32 func_80148C4C(s32 a0, s32 a1); -extern s32 func_80148C64(s32 a0, s32 a1); -extern s32 func_80148C7C(void); -extern s32 func_80148C84(s32 a0, s32 a1); -extern s32 func_80148C9C(s32 a0, s32 a1); -extern s32 func_80148CB4(s32 a0, s32 a1); -extern s32 func_80148CCC(s32 a0, s32 a1); -extern s32 func_80148CE4(void); -extern s32 func_80148CEC(void); -extern s32 func_80148CF4(s32 a0, s32 a1); -extern s32 func_80148D0C(s32 a0, s32 a1); -extern s32 func_80148D24(void *a0, int a1); -extern s32 func_80148D3C(void); -extern s32 func_80148F60(void); -extern s32 func_80148F68(s32 a0); -extern s32 func_80148F74(s32 a0); -extern s32 func_80148F80(s32 a0); -extern s32 func_80148F8C(s32 a0); -extern s32 func_80148F98(void); -extern s32 func_80148FA0(s32 a0); -extern s32 func_80148FAC(s32 a0); -extern s32 func_80148FB8(s32 a0); -extern s32 func_80148FC4(s32 a0); -extern s32 func_80148FD0(void); -extern s32 func_80148FD8(void); -extern s32 func_80148FE0(s32 a0); -extern s32 func_80148FEC(s32 a0); -extern s32 func_80148FF8(s32 a0); -extern s32 func_80149004(void); -extern void func_8014900C(s32 *a0); -extern void func_80149020(s32 *a0); -extern void func_80149034(s32 *a0); -extern void func_80149048(s32 *a0); -extern void func_8014905C(u8 *a0); -extern void func_801490E0(s32 *a0, s16 a1); -extern void func_801490E8(s32 *a0, s16 a1); -extern void func_801490F0(s32 *a0, s16 a1); -extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); -extern void func_801490F8(s32 a0, s32 a1); -extern s32 func_801491C4(s32 a0); -extern s32 func_80149184(s32 a0); -extern s32 D_801151D4; -extern void func_80149204(s32 *a0); -extern void func_80149210(s32 a0, s32 a1); -extern s32 func_80149284(s32 *a0, s32 a1); -extern void func_80149350(s32 arg0); -extern void func_80149290(s32 a0); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_80149374(s32 arg0, s32 arg1); -extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8014942C(s32 arg0); -extern void func_8012EF70(s32 a0, s32 a1); -extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012EFB8(s32 a0); -extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); -extern void func_8014964C(s32 param_1, s32 param_2); -extern s32 func_801496D4(void *a0); -extern void func_8015AD08(); -extern void func_80149704(void); -extern void func_8015ACC4(); -extern void func_80149724(void); -extern u8 D_80078EBF; -extern s32 func_80149744(struct S_80149744 *a0); -extern void func_8015F7A0(); -extern void func_80149788(void); -extern void func_801653B8(); -extern void func_80149864(void); -extern s16 currentLocationId; -extern s32 func_8016F1AC(void); -extern s32 func_80149884(void); -extern void func_80160B00(); -extern void func_801498C0(void); -extern s32 func_80149AA8(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern void func_80146750(void *a0); -extern s32 func_801498E0(s32 *a0); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_80147364(u16 a0, s32 a1); -extern s32 func_800CCF28(s32 a0); -extern u8 D_80126B5C; -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_8015DAC4(s32 *a0); -extern void func_8015554C(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern void func_80149B14(s32 *a0); -extern u8 func_8014BEF8(void); -extern s32 func_80149B54(s32 * arg0); -extern void func_8015DE24(s32 *a0); -extern void func_80157510(s32 *a0); -extern void func_80149BAC(s32 *a0); -extern s32 func_80029178(s32 a0); -extern s32 func_80149C08(s32 arg0); -extern void func_801577C8(); -extern void func_80149C94(void); -extern void func_80157D20(void); -extern void func_80149CB4(void); -extern s32 func_80149CD4(s32 a0); -extern u8 func_8014B5B8(s32 *a0); -extern s32 func_80149D10(s32 a0); -extern s32 func_80149E94(s32 a0); -extern s32 func_80149DD8(s32 a0); -extern s32 func_80149D9C(s32 a0); -extern u8 D_801202A0[]; -extern s32 func_80149F2C(s32 a0, s32 a1); -extern s32 func_80149E94(s32 arg0); -extern void func_80149FA8(void); -extern s32 D_8018EDCC[]; -extern u8 D_80078E78[]; -extern s32 func_80149FB0(s32 a0); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern void func_8014A1B0(s32 a0, s32 a1); -extern s32 func_8014A048(s32 param_1); -extern u16 func_80156370(u16 a0); -extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); -extern void func_8015D4B4(); -extern void func_8014A218(void); -extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); -extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); -extern s32 func_8014A238(s32 arg0); -extern s32 func_8014A2E4(s32 a0); -extern void func_8014A380(s32 a0, s32 a1); -extern s16 D_801152B0; -extern s16 D_801152B4; -extern s32 func_8014A3E0(struct S_8014A3E0 *a0); -extern s32 func_8014A454(s32 a0); -extern s32 func_8014A4B4(void *a0); -extern void func_8015EDD4(); -extern void func_8014A4FC(void); -extern s32 func_8014A674(s32 *a0); -extern s32 func_8014A69C(s32 *a0); -extern s32 func_8014A6C4(s32 a0); -extern void func_8015E184(); -extern void func_8014A830(void); -extern s32 func_80029AF4(void); -extern s32 func_8014A850(s32 param_1); -extern void func_8014AA04(s32 a0); -extern void func_801599A4(void *a0); -extern void func_80159B3C(void *a0); -extern s32 func_80165A20(s32 a0); -extern void func_8014AB7C(); -extern void func_8014AC10(); -extern void func_8014AA28(void); -extern void func_8014AB5C(void); -extern void func_80162CCC(void); -extern void func_8014AB7C(s32 arg0); -extern void func_8014ABF0(void); -extern void func_80016714(void *a0, s32 a1); -extern void func_8014AC10(s32 arg0); -extern void func_8014ACC0(s32 a0, s32 a1); -extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); -extern void func_8014ACE8(void *a0, s32 a1, s32 a2); -extern void func_80146AFC(void *a0); -extern void func_8014ADA8(s32 a0, s32 a1); -extern void func_8014AD7C(s32 a0); -extern s32 D_80078E8C; -extern void func_8014B034(s32 arg0); -extern void func_8014B00C(s32 arg0); -extern void func_8014B084(void); -extern s16 D_80078E90; -extern void func_8014B034(s32 a0); -extern u16 D_80078EAC; -extern u8 D_80078EBA; -extern void func_800D10EC(void); -extern void func_8002AC98(void); -extern s32 func_8014B154(s32 *a0); -extern void func_8014B12C(void); -extern void func_8014B2F8(void); -extern void func_8014B4C4(void); -extern void func_8014B160(s32 a0); -extern s32 func_8016F1C4(void); -extern s16 D_80078E96; -extern s16 D_80078EB8; -extern u16 D_80078EA6; -extern void func_8014B2A8(void); -extern void func_8014B310(void); -extern void func_8014B2D0(void); -extern s32 D_80078E94; -extern s32 D_80078ECC; -extern void func_8014B33C(void); -extern u8 D_80062BF4[]; -extern void func_8014BC80(s32 a0, s32 a1); -extern void func_80019064(void *a0); -extern s32 D_80078E98; -extern void func_80166244(); -extern void func_8014B4D4(void *a0); -extern s16 D_80078E9A; -extern u8 D_80126D1C; -extern s32 D_80126D74; -extern void func_8014B598(s32 a0, s32 a1); -extern void func_8014B5B0(s32 *a0); -extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); -extern void func_8014B5D8(s32 s1); -extern s32 D_80078E9C; -extern s32 D_80078ED0; -extern void func_8014B6F0(s32 a0, s32 a1); -extern void func_8014B768(s32 a0, s32 a1); -extern void func_8014B944(s32 a0, s32 a1, s32 a2); -extern s32 D_80078EA4; -extern u16 D_80078EB2; -extern s16 D_80078EB4; -extern void func_8014BB0C(void); -extern void func_8014BB24(s32 a0, s32 a1, s32 a2); -extern void func_8014BC0C(s32 a0, s32 a1); -extern void func_8014BC44(s32 a0, s32 a1); -extern u8 D_800B9A17; -extern void func_8014BCC0(s32 a0, s32 a1); -extern u16 D_80078EB6; -extern s32 func_8014BCEC(s32 a0, s32 a1); -extern void func_8014BD24(s32 a0, s32 a1); -extern void func_8014BD60(s32 param_1, s32 param_2); -extern void func_8014BD98(s32 a0, u16 a1); -extern void func_8014BDC8(void); -extern void func_8014BDE0(void); -extern s32 func_8017267C(s32 *a0); -extern s32 func_80013294(void *a0, void *a1); -extern void func_80029ED4(s32 a0); -extern void func_8014BDE8(s32 a0); -extern void func_8014BE78(void); -extern void func_8014BE9C(void); -extern void func_80029124(s32 a0, s32 a1); -extern void func_8014BEC0(void); -extern void func_8014BF18(s32 a0); -extern void func_8014BF48(void); -extern u8 func_8014BF6C(void); -extern void func_8014BF8C(u8 arg0); -extern void func_8014BFB0(void); -extern u8 func_8014BFD4(void); -extern void func_8014BFF4(s32 a0, s32 a1); -extern void func_8014C010(s32 a0, s32 a1); -extern s32 func_8014C050(s32 a0, s32 a1); -extern s32 func_8014C088(s32 a0, s32 a1); -extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); -extern s32 func_8014C118(void * a0, s32 a1, s32 a2); -extern s32 func_8014C168(s32 * param_1, s32 param_2); -extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); -extern u8 D_8018EE54[]; -extern void func_8014C1A0(s32 arg0, s32 arg1); -extern s32 func_80013328(s32 a0, s32 a1); -extern s32 func_8014C59C(void *a0, void *a1); -extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); -extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); -extern s32 ratan2(s32 dx, s32 dy); -extern u8 D_8018EE5C; -extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); -extern s16 func_8014C5D0(s32 a0, s32 a1); -extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); -extern u8 D_80126D17; -extern void func_8014C6AC(void); -extern void func_8014C6C0(void); -extern u8 D_80126D1E; -extern void func_8014C6D0(void); -extern void func_8014C6E0(void); -extern s32 func_8014C860(s32 a0, s32 a1); -extern void func_8014C8C8(s32 a0, s32 *a1); -extern void func_8014C88C(s32 a0); -extern void func_8014C8C8(s32 dst, s32 * src); -extern void func_8014C8F0(s32 arg0); -extern u8 D_801151F0[]; -extern s32 func_8014C918(s32 a0, s32 a1); -extern s32 D_80126B50; -extern void func_8014C968(void); -extern void func_8014C978(void); -extern s32 func_8014C98C(void); -extern void func_80139914(s32 a0); -extern s32 func_8014CA00(s32 a0); -extern u16 func_8014CA70(s32 a0, s32 a1); -extern s32 func_8014CA14(s32 a0, s32 a1); -extern u16 func_8014CAE4(s32 *a0, s32 a1); -extern s32 func_8014CA88(s32 *a0, s32 a1); -extern s32 func_8014CAFC(void); -extern s32 func_8014CB0C(void); -extern s32 func_8014CB1C(void); -extern u8 D_80126D1F; -extern s32 func_8014CB2C(void); -extern s32 func_8014CB58(void); -extern u8 D_80126D1D; -extern void func_8014CB68(void); -extern s32 func_8014CB7C(void); -extern s32 func_8014CB8C(void); -extern struct Packed8 D_80126C98; -extern short D_80126C9E; -extern void func_8014CB9C(struct Packed8 *a0); -extern s32 D_80126CDC; -extern void func_8014CBD8(void); -extern s16 D_80126CC4; -extern void func_8014CBE8(void); -extern void func_8014CBF8(void *a0); -extern void func_8014D3E0(s32 a0); -extern void func_8014D04C(void); -extern void func_8014CCB4(void); -extern void func_8014CC28(s32 a0); -extern void func_8014CD0C(u8 *a0); -extern s32 func_8014CF04(s32 a0, s32 a1, void *a2); -extern void func_8014CD80(s32 a0, void *a1, void *a2); -extern void func_8014D0A4(s32 a0); -extern s32 func_8014D2A0(s32 a0, void *a1, void *a2); -extern s32 func_8014D12C(s32 a0, void *a1, void *a2); -extern void func_8014D438(s32 a0); -extern void func_8014D3E0(s32 _arg0); -extern void func_8014D610(s32 a0, void *a1, void *a2); -extern s32 func_8014D4C0(s32 a0, void *a1, void *a2); -extern void func_8014D790(s32 a0); -extern void func_8014D738(void); -extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); -extern s32 func_8014D820(s32 a0, u16 *a1, u16 *a2); -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); -extern void func_8014DF94(s32 arg0); -extern void func_8014DF3C(void); -extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ -extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ -extern s16 D_801152AC; -extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); -extern void func_8014E48C(s32 a0); -extern void func_8014E434(void); -extern void func_8014E5B4(s32 a0, void *a1, void *a2); -extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); -extern void func_8014E6F8(struct SubE6F8 *a0); -extern void func_8014E6A0(void); -extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); -extern void func_8014E934(s32 _arg0); -extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); -extern s32 func_8014E98C(void *a0); -extern u16 D_800B99DA; -extern s32 D_801150D8; -extern s16 D_801152AA; -extern u8 D_80126720[]; -extern s16 D_80126724; -extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); -extern s32 func_8014ED80(struct SubED80 *a0); -extern int D_801E5BA8; -extern void func_8014ED28(s32 _arg0); -extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F24C(struct SubF24C *a0); -extern void func_8014F1F4(void); -extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F4C0(); -extern s32 func_8014F468(void); -extern int func_8014F74C(); -extern int func_8014F6F4(void); -extern u8 D_800D3918[]; -extern u8 D_801152A8[]; -extern s32 D_801152BC; -extern int func_8014F74C(s32 arg0); -extern s32 func_8014FA70(s32 a0); -extern s32 D_801E5BAC; -extern void func_8014FA04(s32 a0); -extern s32 func_8014FBC0(); -extern s32 func_8014FC18(u8 *self); -extern int func_8014FD54(int param_1); -extern void func_8014FCFC(void); -extern void func_80150170(void *a0); -extern s32 func_8014FE60(void *a0); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_8014FE60(void *e); -extern s32 func_80134510(s32 arg); -extern s32 func_80150150(s32 a, s32 b); -extern s32 func_80150460(s32 a, s32 b); -extern void func_801504D8(u16 *a0); -extern s32 func_80150480(s32 _arg0); -extern s32 func_80150528(void *a0, void *a1, void *a2); -extern s32 func_80150528(void *arg0, void *arg1, void *arg2); -extern s32 func_801506A4(s32 a0, s32 a1); -extern s32 func_801505FC(s32 a0); -extern s32 func_801506A4(s32 arg0, s32 arg1); -extern void func_80150820(s32 a0, s32 a1); -extern void func_8015086C(int param_1); -extern s32 func_801508B4(s32 a0); -extern s32 func_8015094C(s32 a0); -extern short func_801508F8(s32 a0); -extern s32 D_8018EE8C; -extern s32 D_80126990; -extern s32 D_80126994; -extern u8 D_80126948[]; -extern s32 func_80021174(s32 a0, s32 a1); -extern s32 func_8015094C(s32 param_1); -extern void func_80150B9C(void); -extern s32 func_80151184(s32 a0, s32 a1, s32 a2); -extern s32 func_80150BA4(s32 a0); -extern s32 func_801619D0(void *a0); -extern void func_80150BC8(s32 *a0); -extern s32 func_80150480(s32 a0); -extern u16 D_800AE6DC; -extern void func_80150C48(s32 a0); -extern int func_80151184(int arg, int a1, int a2); -extern int func_80150CA0(int arg); -extern void func_80150EC4(s32 a, s32 b); -extern void func_80150CC4(s32 a); -extern void func_80150CE4(s32 a); -extern void func_80150D04(s32 a); -extern void func_80150D24(s32 a); -extern void func_80150D44(s32 a); -extern void func_80150D64(s32 a); -extern void func_80150D84(s32 a); -extern void func_80150DA4(s32 a); -extern void func_80150DC4(s32 a); -extern void func_80150DE4(s32 a); -extern void func_80150E04(s32 a); -extern void func_80150E24(s32 a); -extern void func_80150E44(s32 a); -extern void func_80150EC4(s32 a0, s32 a1); -extern void func_80150E64(s32 a0); -extern void func_80150E84(s32 a0); -extern void func_80150EA4(s32 a0); -extern u8 D_800AE6C0; -extern s16 D_800AE6C8; -extern s16 D_800AE6CA; -extern s16 D_800AE6CC; -extern s32 D_800AE6C4; -extern s16 D_800AE6CE; -extern u8 D_800AE6BE; -extern u8 D_801201F8[]; -extern void func_80150F78(void); -extern void func_80150F80(s32 a0); -extern int func_80150FB4(int arg); -extern void func_80150FD8(s32 a0); -extern int func_80151014(int arg); -extern void func_80151038(s32 a0); -extern int func_80151070(int arg); -extern int func_80151094(int arg); -extern void func_801510B8(void); -extern void func_801510C0(void); -extern int func_801510C8(int arg); -extern int func_801510EC(int arg); -extern s32 func_8012DB84(void); -extern s32 func_80151110(void); -extern void func_80151130(void); -extern int func_80151138(int arg); -extern void func_8015115C(s32 *a0, s16 a1); -extern s32 func_80151164(s32 a0, s32 a1); -extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); -extern void func_801511A8(u8 *a0); -extern void func_801511C4(u8 *a0); -extern int func_80151204(int arg, int a1); -extern int func_801511E0(int arg); -extern int func_80151204(int a0, int a1); -extern void func_80151238(void *a0); -extern void func_8015126C(u16 *p); -extern void func_80151780(s32 a0); -extern void func_801516F0(s32 *a0); -extern void func_8015173C(s32 *a0); -extern s16 D_8011DB1A; -extern s32 D_80127518; -extern s32 D_801151FC; -extern s32 func_801725CC(u8 *a0); -extern s32 func_80029D3C(void); -extern void func_80151878(void); -extern void func_80153B58(s32 *a0); -extern s32 func_80151880(s32 a0); -extern s32 func_801518D8(s32 a0); -extern s32 func_80151944(void); -extern s32 func_80151924(void); -extern void func_8014E934(s32 a0); -extern s32 func_8014F3E8(s32 a0); -extern void func_801519C8(s32 a0); -extern void func_80151980(s32 a0); -extern M2C_UNK D_800D5880; -extern s32 D_800D58AC; -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801519C8(s32 arg0); -extern void func_80151C54(s32 a0); -extern void func_801542DC(s32 *a0, s32 a1); -extern void func_8015BDD0(s32 *a0); -extern void func_80165718(s32 a0); -extern u8 D_800D46E4[]; -extern void func_80151AE4(s32 arg0); -extern void (*D_8018EF34[])(void); -extern void func_80151D24(void *a0); -extern void func_80151DB0(s32 a0); -extern void func_80151D60(void *a0); -extern s32 func_80172630(u8 *a0); -extern s32 D_80062C14; -extern void func_80151DB0(s32 param_1); -extern void func_80151E78(s32 *a0); -extern void func_80151ECC(struct S80151ECC *a0); -extern void func_80151FB4(s32 a0); -extern void func_80151F38(s32 *a0); -extern void func_801553C0(s32 a0); -extern void func_80153C18(); -extern void (*D_8018EF58[])(void); -extern void func_80152058(void *a0); -extern void func_801520DC(s32 a0); -extern void func_80152094(s32 a0); -extern void func_80147324(s32 a0); -extern u8 D_80062C04[]; -extern M2C_UNK D_8018EF48; -extern void func_801520DC(s32 arg0); -extern void func_801470B4(s32 a0); -extern void func_8015369C(s32 a0); -extern void func_80152194(s32 *a0); -extern s32 func_801536DC(s32 a0); -extern void func_8015220C(s32 a0); -extern s32 func_80153800(s32 a0); -extern void func_801522CC(s32 a0); -extern void func_80152254(s32 *a0); -extern void (*D_8018EF6C[])(void); -extern void func_80152370(void *a0); -extern void func_801523F4(s32 a0); -extern void func_801523AC(s32 a0); -extern void func_8001382C(s32 a0, void *a1, void *a2); -extern u8 D_8018EF78[]; -extern void func_801523F4(s32 arg0); -extern void func_801525F4(int); -extern s32 func_801535F4(void *arg0); -extern void func_8015BF48(s32 *a0); -extern void func_80152500(int param_1); -extern void func_801525F4(s32 a0); -extern void (*D_8018EF88[])(void); -extern void func_80152698(void *a0); -extern void func_80152714(s32 a0); -extern void func_801526D4(s32 a0); -extern void func_80152790(s32 a0); -extern void (*D_8018EFA0[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018EF90; -extern void func_801528B0(s32 arg0); -extern void func_8015294C(s32 a0); -extern void func_80152A08(s32 a0); -extern void func_80152AC8(s32 a0); -extern void func_80152A50(s32 *a0); -extern void (*D_8018EFB4[])(void); -extern void func_80152B6C(void *a0); -extern void func_80152BF0(s32 a0); -extern void func_80152BA8(s32 a0); -extern void func_80152C80(s32 *a0); -extern void func_80152C40(s32 *a0); -extern void (*D_8018EFD0[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018EFC0; -extern void func_80152DA8(s32 arg0); -extern void func_80152E4C(s32 a0); -extern void func_80152EFC(s32 a0); -extern void func_80152FBC(s32 a0); -extern void func_80152F44(s32 *a0); -extern void (*D_8018EFE4[])(void); -extern void func_80153060(void *a0); -extern void func_801530E4(s32 a0); -extern void func_8015309C(s32 a0); -extern void func_80155440(s32 *a0); -extern void func_801530E4(s32 arg0); -extern void func_80153150(struct S80153150 *a0); -extern void func_801531BC(s32 a0); -extern void func_8015327C(s32 a0); -extern void func_80153204(s32 *a0); -extern void (*D_8018EFF8[])(void); -extern void func_80153320(void *a0); -extern void func_801533A4(s32 a0); -extern void func_8015335C(s32 a0); -extern void func_80153410(s32 *a0); -extern void func_80153490(s32 a0); -extern void func_80153550(s32 a0); -extern void func_801534D8(s32 *a0); -extern void (*D_8011DB28)(s32 a0); -extern s32 func_801536DC(s32 param_1); -extern void func_800139C8(s32 a0, void *a1, void *a2); -extern s32 func_80153978(s32 a0, u16 *src); -extern s32 func_80133784(s32 a0, void *src, s32 dst); -extern s32 func_801539F8(s32 a0, void *a1); -extern s32 func_801539F8(s32 a0, void * a1); -extern s32 func_8016DA04(s32 a0); -extern s32 func_80153BD8(s32 a0); -extern s32 func_80153BF0(s32 a0); -extern void func_80153C18(void); -extern u16 D_8011F748; -extern void func_80153C30(void); -extern void func_80153C74(s16 a0, s16 a1); -extern s16 D_8011DB18; -extern void func_80153C44(int a0, int a1, s16 a2); -extern s16 D_8011DB0C; -extern s32 D_80115210; -extern void func_80153C8C(void); -extern void func_80153C9C(void); -extern s32 func_80153CBC(void); -extern s32 D_8018F00C; -extern void (*D_8018F034[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018F014; -extern void func_80153D7C(s32 param_1); -extern void func_8015410C(void); -extern void func_80153E00(s32 param_1); -extern void func_80151664(void); -extern void func_80154134(u8 *a0); -extern void func_80154190(u8 *a0, s32 a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154218(u8 *a0, s32 a1, s32 a2); -extern void func_801541D8(u8 *a0, s32 a1, s32 a2); -extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); -extern void func_801542A4(); -extern void func_801542A4(s32 *a0, s32 a1); -extern void func_8015430C(); -extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); -extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); -extern s32 func_80154358(void * arg0); -extern void StoreImage(s32, void *); -extern void func_80154B4C(u8 *a0, s32 a1); -extern s32 func_80155394(s32 *a0); -extern void func_801553A8(s32 *a0); -extern u8 D_80126738; -extern u8 D_80126748; -extern u8 D_80126838; -extern u8 D_80126848; -extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); -extern void func_80154AB4(s32 a0, s32 a1); -extern void func_80154B20(s32 a0, s32 a1, s32 a2); -extern void func_80154AE0(s32 a0, s32 a1, s32 a2); -extern void func_80154B7C(u8 *a0, s32 a1); -extern void func_80154BC8(void *a0, s32 a1, s32 a2); -extern void func_80154B98(void *a0, s32 a1, s32 a2); -/* ==== end §8b carried decl layer ==== */ - -extern void func_80154ED8(s32 a0, s32 a1); - -void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3) { - u16 uVar2; - s32 iVar3; - s32 uVar5; - s32 uVar6; - - if (*(u8 *)(param_1 + 0xd4) == 0) { - return; - } - if (*param_2 == 0) { - *(u16 *)(param_1 + 0xd4) = (u16)*(u8 *)(param_1 + 0xd4); - *param_2 = *param_2 + 1; - } - uVar2 = *(u16 *)(param_1 + 0xd4) - 1; - *(u16 *)(param_1 + 0xd4) = uVar2; - if ((uVar2 & 0xff) != 0) { - goto LAB_80154e6c; - } - switch (*(s32 *)((u32)*(u8 *)(param_1 + 0xd8) * 4 + *(s32 *)(param_1 + 0xd0))) { - case 0: - *(u16 *)(param_1 + 0xd4) = 0; - *param_3 = *param_3 | 0x8000; - *(u16 *)(param_1 + 0xd6) = 0; - *(u8 *)(param_1 + 0xd8) = 0; - *(u8 *)(param_1 + 0xd9) = 0; - break; - case 1: - *(u16 *)(param_1 + 0xd4) = 1; - *param_3 = *param_3 | 0x8000; - *(u8 *)(param_1 + 0xd8) = 0; - *(u8 *)(param_1 + 0xd9) = 0; - func_80154C24(param_1, param_2, param_3); - break; - case 2: - *(u16 *)(param_1 + 0xd4) = 0; - *(s8 *)(param_1 + 0xd8) = *(s8 *)(param_1 + 0xd8) + 1; - goto LAB_80154e9c; - case 3: - uVar5 = *(s32 *)((u32)*(u8 *)(param_1 + 0xd8) * 4 + *(s32 *)(param_1 + 0xd0) + 4); - *(u16 *)(param_1 + 0xd4) = 1; - *(s8 *)(param_1 + 0xd8) = *(s8 *)(param_1 + 0xd8) + 2; - *(s16 *)(param_1 + 0xd6) = (s16)uVar5; - func_80154C24(param_1, param_2, param_3); - break; - case 5: - iVar3 = (u32)*(u8 *)(param_1 + 0xd8) * 4 + *(s32 *)(param_1 + 0xd0); - uVar5 = *(s32 *)(iVar3 + 4); - uVar6 = *(s32 *)(iVar3 + 8); - *(u16 *)(param_1 + 0xd4) = 1; - *(s8 *)(param_1 + 0xd8) = (s8)uVar6; - *(s32 *)(param_1 + 0xd0) = uVar5; - func_80154C24(param_1, param_2, param_3); - break; - case 6: - uVar6 = *(s32 *)((u32)*(u8 *)(param_1 + 0xd8) * 4 + *(s32 *)(param_1 + 0xd0) + 4); - *(u16 *)(param_1 + 0xd4) = 1; - *(s8 *)(param_1 + 0xd8) = (s8)uVar6; - func_80154C24(param_1, param_2, param_3); - break; - case 7: - *(u16 *)(param_1 + 0xd4) = *(u16 *)(param_1 + 0xd6); - *param_3 = *param_3 | 0x4000; - *(s8 *)(param_1 + 0xd8) = *(s8 *)(param_1 + 0xd8) + 1; - *(s8 *)(param_1 + 0xd9) = *(s8 *)(param_1 + 0xd9) + 1; - func_80154C24(param_1, param_2, param_3); - break; - case 8: - *(u16 *)(param_1 + 0xd4) = *(u16 *)(param_1 + 0xd6); - *param_3 = *param_3 | 0x2000; - *(s8 *)(param_1 + 0xd8) = *(s8 *)(param_1 + 0xd8) + 1; - *(s8 *)(param_1 + 0xd9) = *(s8 *)(param_1 + 0xd9) + 1; - func_80154C24(param_1, param_2, param_3); - break; - default: - func_80154ED8(param_1, *(s32 *)((u32)*(u8 *)(param_1 + 0xd8) * 4 + *(s32 *)(param_1 + 0xd0))); - *(u16 *)(param_1 + 0xd4) = *(u16 *)(param_1 + 0xd6); - *(s8 *)(param_1 + 0xd8) = *(s8 *)(param_1 + 0xd8) + 1; - break; - } - goto LAB_80154eac; - -LAB_80154e6c: - if (uVar2 != 1) { - goto LAB_80154eac; - } - if (*(s32 *)((u32)*(u8 *)(param_1 + 0xd8) * 4 + *(s32 *)(param_1 + 0xd0)) != 0) { - goto LAB_80154eac; - } -LAB_80154e9c: - *param_3 = *param_3 | 0x8000; -LAB_80154eac: - *(u16 *)(param_1 + 0xd4) = *(u16 *)(param_1 + 0xd4) | *param_3; - return; -} - - -DEFINE_func_80154ED8() /* dedup: shared engine-core @0x80154ED8 (src/shared) */ - -DEFINE_func_80154F9C() /* dedup: shared engine-core @0x80154F9C (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (array-of-struct stride-8 base materialize + addu, %lo folded into addiu) - -extern void MoveImage(void *a0, s32 a1, s32 a2); -extern void func_800183E0(s32 a0); - -extern ImgRect8 D_8018F040[]; - -void func_801550FC(s32 arg0) -{ - if (arg0 & 0x40000000) { - MoveImage(&D_8018F040[arg0 & 0xFF], 0x200, 0x100); - } else { - ((void (*)(void))func_800183E0)(); - } -} - - -DEFINE_func_80155150() /* dedup: shared engine-core @0x80155150 (src/shared) */ - -DEFINE_func_801552F4() /* dedup: shared engine-core @0x801552F4 (src/shared) */ - -DEFINE_func_80155344() /* dedup: shared engine-core @0x80155344 (src/shared) */ - -DEFINE_func_80155394() /* dedup: shared engine-core @0x80155394 (src/shared) */ - -DEFINE_func_801553A8() /* dedup: shared engine-core @0x801553A8 (src/shared) */ - -DEFINE_func_801553C0() /* dedup: shared engine-core @0x801553C0 (src/shared) */ - -DEFINE_func_80155440() /* dedup: shared engine-core @0x80155440 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH expected; decrement persists as separate addiu in delay slot - -extern int (*D_8018F080[])(void); - -s32 func_80155458(s32 param_1) -{ - int idx; - - idx = *(unsigned char *)(param_1 + 0x4e); - if (idx != 0) { - idx = idx - 1; - if ((*D_8018F080[idx])() == 0) { - *(unsigned char *)(param_1 + 0x4e) = 0; - } - } - return *(unsigned char *)(param_1 + 0x4e); -} - - -DEFINE_func_801554B8() /* dedup: shared engine-core @0x801554B8 (src/shared) */ - -DEFINE_func_80155518() /* dedup: shared engine-core @0x80155518 (src/shared) */ - -DEFINE_func_8015554C() /* dedup: shared engine-core @0x8015554C (src/shared) */ - - -extern void (*D_8018F084[])(void); - -void func_80155580(void *a0) { - D_8018F084[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_801555BC() /* dedup: shared engine-core @0x801555BC (src/shared) */ - - - -void func_801555F4(void *param_1) -{ - extern void func_80156648(int *a0); - extern int D_800D4C94; - extern int D_800D4CE4; - extern int D_800D4D38; - extern int D_800D4D88; - extern int D_800D4E10; - extern int D_800D4E6C; - - - int uVar1; - unsigned char bVar3; - int s1; - unsigned short uVar4; - - ((void(*)(int, int))func_80154A74)(((int)param_1), 0x15); - if ((*(unsigned int *)(((int)param_1) + 0x44) & 0x200) == 0) { - if (*(int *)(((int)param_1) + 0x2c) == -0xb0000) { - uVar1 = ((int(*)(int))func_80029178)(0x82); - if ((uVar1 & 0xff) != 0) { - uVar1 = 7; - goto L_648; - } - } - } else { - uVar1 = 5; -L_648: - *(unsigned char *)(((int)param_1) + 0x1aa) = uVar1; - } - switch (*(unsigned char *)(((int)param_1) + 0x1aa)) { - case 0: - case 1: - bVar3 = *(unsigned char *)(((int)param_1) + 0x1ab) ^ 1; - *(unsigned char *)(((int)param_1) + 0x1ab) = bVar3; - if (bVar3 != 0) - *(unsigned char *)(((int)param_1) + 0x1aa) = 0; - else - *(unsigned char *)(((int)param_1) + 0x1aa) = 1; - ((void(*)(int *, int))func_80154274)((int *)((int)param_1), (int)&D_800D4C94); - ((void(*)(int))func_80147324)(0x400); - ((void(*)(unsigned short))func_80147300)(0x5f3); - s1 = 0; - D_8011F730 |= 3; - func_80146CA0((void *)((int)param_1)); - goto L_7b8; - case 2: - ((void(*)(int *, int))func_80154274)((int *)((int)param_1), (int)&D_800D4CE4); - ((void(*)(int))func_80147324)(0x446); - ((void(*)(unsigned short))func_80147300)(0x5f3); - s1 = 1; - goto L_575c; - case 3: - ((void(*)(int *, int))func_80154274)((int *)((int)param_1), (int)&D_800D4D38); - ((void(*)(int))func_80147324)(0x400); - ((void(*)(unsigned short))func_80147300)(0x5f3); - s1 = 2; - goto L_575c; - case 4: - ((void(*)(int *, int))func_80154274)((int *)((int)param_1), (int)&D_800D4D88); - ((void(*)(unsigned short))func_80147300)(0x5f6); - s1 = 3; - func_80146CA0((void *)((int)param_1)); -L_575c: - func_80146CA0((void *)((int)param_1)); - goto L_7b8; - case 5: - ((void(*)(int *, int))func_80154274)((int *)((int)param_1), (int)&D_800D4E10); - s1 = 4; - uVar4 = 7; - goto L_7b0; - case 7: - ((void(*)(int))func_80147324)(0x7f); - ((void(*)(unsigned short))func_80147300)(0x5f4); - ((void(*)(int *, int))func_80154274)((int *)((int)param_1), (int)&D_800D4E6C); - s1 = 6; - uVar4 = 8; -L_7b0: - *(unsigned short *)(((int)param_1) + 2) = uVar4; - goto L_7b8; - default: - ; - } -L_7b8: - ((void(*)(int *, int))func_80146E90)((int *)((int)param_1), 0); - func_80156648((int *)((int)param_1)); - if (s1 >= 0) { - ((int(*)(int, int, int, int))func_80146994)(4, ((int)param_1), s1, 0); - } - ((void(*)(int *))func_801553A8)((int *)((int)param_1)); -} - - -DEFINE_func_80155800() /* dedup: shared engine-core @0x80155800 (src/shared) */ - - -DEFINE_func_80155A44() /* dedup: shared engine-core @0x80155A44 (src/shared) */ - -DEFINE_func_80155B20() /* dedup: shared engine-core @0x80155B20 (src/shared) */ - -DEFINE_func_80155B9C() /* dedup: shared engine-core @0x80155B9C (src/shared) */ - -DEFINE_func_80155C0C() /* dedup: shared engine-core @0x80155C0C (src/shared) */ - -DEFINE_func_80155C64() /* dedup: shared engine-core @0x80155C64 (src/shared) */ - -DEFINE_func_80155D70() /* dedup: shared engine-core @0x80155D70 (src/shared) */ - -DEFINE_func_80155E30() /* dedup: shared engine-core @0x80155E30 (src/shared) */ - -DEFINE_func_80155EA4() /* dedup: shared engine-core @0x80155EA4 (src/shared) */ - -DEFINE_func_80155F58() /* dedup: shared engine-core @0x80155F58 (src/shared) */ - -DEFINE_func_80155F60() /* dedup: shared engine-core @0x80155F60 (src/shared) */ - -DEFINE_func_80155F80() /* dedup: shared engine-core @0x80155F80 (src/shared) */ - -DEFINE_func_80155FB0() /* dedup: shared engine-core @0x80155FB0 (src/shared) */ - -DEFINE_func_80155FD4() /* dedup: shared engine-core @0x80155FD4 (src/shared) */ - -DEFINE_func_80155FF8() /* dedup: shared engine-core @0x80155FF8 (src/shared) */ - - -void func_80156044(int param_1, int param_2) { - extern u32 func_8015616C(s32 a0, u16 a1); - extern void func_80156670(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); - extern void func_801567BC(s32 a0); - extern void func_80156848(s32 a0, s32 a1, s32 a2); - extern void func_80156A88(s32 a0, s32 a1); - extern s32 func_801565C0(s32 a0); - extern u8 D_8018F23C; - extern u8 D_8018F250; - extern u8 D_8018F0D4; - - register s32 puVar2 __asm__("$2"); - register s32 iVar3 __asm__("$3"); - u8 *puVar4; - s32 uVar1; - - if (((u32)param_2) & 0x10000) { - iVar3 = (((u32)param_2) & 0xffff) * 0x14; - puVar2 = (s32)&D_8018F23C; - } else if (((u32)param_2) & 0x20000) { - iVar3 = (((u32)param_2) & 0xffff) * 0x14; - puVar2 = (s32)&D_8018F250; - } else { - iVar3 = (((u32)param_2) & 0xffff) * 0x14; - puVar2 = (s32)&D_8018F0D4; - } - puVar4 = (u8 *)(iVar3 + puVar2); - uVar1 = func_8015616C(((s32)param_1), *(u16 *)puVar4) & 0xffff; - if (*(u8 *)(((s32)param_1) + 0x1a8) != 0) { - func_80156670(((s32)param_1), *(s32 *)puVar4, uVar1, *(s32 *)(puVar4 + 4), - *(u8 *)(puVar4 + 0xA), *(u16 *)(puVar4 + 0x12)); - if (*(u8 *)(puVar4 + 0x10) != 0) { - func_801567BC(((s32)param_1)); - } - func_80156848(((s32)param_1), (s32)puVar4, uVar1); - func_80156A88(((s32)param_1), (s32)puVar4); - if (func_801565C0(((s32)param_1)) != 0) { - *(u8 *)(((s32)param_1) + 0x1c0) = 1; - } - } -} - - -DEFINE_func_8015616C() /* dedup: shared engine-core @0x8015616C (src/shared) */ - -DEFINE_func_80156370() /* dedup: shared engine-core @0x80156370 (src/shared) */ - - - -extern S801563EC D_8018F278[]; - -S801563EC *func_801563EC(u16 idx) { - return &D_8018F278[idx]; -} - - -DEFINE_func_8015640C() /* dedup: shared engine-core @0x8015640C (src/shared) */ - -DEFINE_func_801564B0() /* dedup: shared engine-core @0x801564B0 (src/shared) */ - -DEFINE_func_801565C0() /* dedup: shared engine-core @0x801565C0 (src/shared) */ - - -// @class: MATCH (18 ins) — match_one, asm-subdir asm/ov_SC01_077/nonmatchings/ov_SC01_077_jr_80154C24 -// -// RECONCILE (uc2 -> uc3). The body is UNCHANGED and still MATCHes; only the declaration -// environment moved. -// -// Gate error: `conflicting types for func_80156600 || previous declaration`. The conflicting -// symbol is func_80156600 ITSELF. ov_SC01_077_jr_80154C24.c:1747 instantiates -// DEFINE_func_80157EA4(), whose macro body (src/shared/engine_core.h:11395) carries -// extern s32 func_80156600(void *a0); -// and calls it at engine_core.h:11409 as `v1 = (s32 *)func_80156600(a0);`. -// The byte-true body is NULLARY — the target zeroes $a0 at entry and uses it as the loop -// counter — so `s32 (void)` vs the header's `s32 (void *)` is a PARAM/ARITY disagreement on -// our own definition. Neither declaration can be changed: the header decl is fleet-shared -// (137 siblings instantiate the same macro), and adding a phantom `void *` parameter to the -// definition perturbs the $a0 allocation. -// -// Escape: §37/§124 ASM-LABEL ALIAS. The definition is given the private C name aF80156600 -// and the assembler label "func_80156600", so it never collides with the canonical -// declaration while still emitting the required symbol for the macro's call site. Zero -// header edits, zero codegen change (verified: cc1 on the real spliced TU is diagnostic-free, -// and match_one still prints MATCH). This declaration MUST travel with the body. -// -// Everything else is as in uc2: externs at BLOCK scope (rule D — keeps the bank travellable to -// the 137 siblings; the sibling func_80156670 declares the same two symbols at function scope -// in the same TU at :1427/:1432), and D_80126AF0 typed as plain u8[] because the body only -// ever does pointer arithmetic on it (+8/entry) — the file-scope `extern S8 D_80126AF0[];` -// form needs engine_types.h, which common.h does not pull in. -// -// Codegen shape: a counter in $a0, a byte cursor $a1 walking D_80126AF0 by 8, a word cursor -// $v1 walking D_801151E0 by 4; the `addu $v0,$a1,$zero` return value sits in the bnez delay -// slot, and the loop fallthrough re-zeroes $v0 for the not-found return. -s32 aF80156600(void) __asm__("func_80156600"); - -DEFINE_func_80156600() /* dedup: shared engine-core @0x80156600 (src/shared) */ - - -DEFINE_func_80156648() /* dedup: shared engine-core @0x80156648 (src/shared) */ - -DEFINE_func_80156670() /* dedup: shared engine-core @0x80156670 (src/shared) */ - - -DEFINE_func_801567BC() /* dedup: shared engine-core @0x801567BC (src/shared) */ - -DEFINE_func_80156848() /* dedup: shared engine-core @0x80156848 (src/shared) */ - -DEFINE_func_80156A14() /* dedup: shared engine-core @0x80156A14 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH expected; D_8011520C indexed by param_2 (byte) folds %lo; D_8018F4E8 indexed halfword folds %lo -extern unsigned char D_8011520C[]; -extern unsigned short D_8018F4E8[]; -extern void func_80147324(s32 arg0); - -void func_80156A1C(s32 param_1, s32 param_2) -{ - if (*(unsigned char *)(param_1 + 0xDA) == 0) { - func_80147324(D_8018F4E8[D_8011520C[param_2]]); - *(unsigned char *)(param_1 + 0xDA) = *(unsigned char *)(param_1 + 0xDA) + 1; - } -} - - -DEFINE_func_80156A88() /* dedup: shared engine-core @0x80156A88 (src/shared) */ - -DEFINE_func_80156B74() /* dedup: shared engine-core @0x80156B74 (src/shared) */ - -DEFINE_func_80156ECC() /* dedup: shared engine-core @0x80156ECC (src/shared) */ - -DEFINE_func_80156FA8() /* dedup: shared engine-core @0x80156FA8 (src/shared) */ - - -DEFINE_func_80157158() /* dedup: shared engine-core @0x80157158 (src/shared) */ - - -DEFINE_func_801571C4() /* dedup: shared engine-core @0x801571C4 (src/shared) */ - -DEFINE_func_801574DC() /* dedup: shared engine-core @0x801574DC (src/shared) */ - -DEFINE_func_80157510() /* dedup: shared engine-core @0x80157510 (src/shared) */ - - -extern void (*D_8018F4F8[])(void); - -void func_80157544(void *a0) { - D_8018F4F8[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80157580() /* dedup: shared engine-core @0x80157580 (src/shared) */ - -DEFINE_func_801575E4() /* dedup: shared engine-core @0x801575E4 (src/shared) */ - -DEFINE_func_801576A8() /* dedup: shared engine-core @0x801576A8 (src/shared) */ - -DEFINE_func_8015771C() /* dedup: shared engine-core @0x8015771C (src/shared) */ - -DEFINE_func_8015773C() /* dedup: shared engine-core @0x8015773C (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH expected (scalar global store + two sequential calls, param_1 saved across) - -extern int D_801E5BE0; -extern void func_80147078(s32 *a0, s16 a1); -extern void func_801578C0(s32 a0); - -void func_80157788(int param_1) -{ - D_801E5BE0 = 300; - ((void (*)(int, int))func_80147078)(param_1, 7); - func_801578C0(param_1); -} - - - - - -void func_801577C8(s32 arg0) { - D_801E5BE0 = 0x12C; - func_80147078(arg0, 7); - func_80157808(arg0); -} - - - -// @class: struct -// @stuck: none — MATCH expected (fnptr-table %lo-fold via extern array + global counter decrement + two saved-param calls) - -extern void (*D_8018F520[])(void); -extern int D_801E5BE0; -extern void func_801599A4(void *a0); -extern void func_80159B3C(void *a0); - -void func_80157808(void *param_1) -{ - D_8018F520[*(unsigned short *)((char *)param_1 + 2)](); - D_801E5BE0 = D_801E5BE0 - 1; - if (D_801E5BE0 == -1) { - func_801599A4(param_1); - func_80159B3C(param_1); - } -} - - -DEFINE_func_80157880() /* dedup: shared engine-core @0x80157880 (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH (expected); STUB: param_1 held in $s0 across calls, u8 store of 9 before func_80154274 - -extern void func_80156648(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_80147324(s32 arg0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80146CA0(void *a0); -extern s32 func_801725A4(u8 *a0); -extern u8 D_800D5128; -extern u8 D_8018F500; - -void func_801578C0(s32 param_1) -{ - ((void (*)(void))func_80156648)(); - *(u8 *)(param_1 + 0x1AA) = 9; - func_80154274((s32 *)param_1, (s32)&D_800D5128); - ((void (*)(s32 *, s32))func_80154A74)((s32 *)param_1, 0x15); - func_80147324(0xC20); - ((void (*)(s32 *, s32))func_80146DB8)((s32 *)param_1, (s32)&D_8018F500); - ((void (*)(s32, s32 *, s32, s32))func_80146994)(4, (s32 *)param_1, 7, 0); - ((void (*)(s32, s32 *, s32, s32))func_80146994)(5, (s32 *)param_1, 9, 0); - ((void (*)(s32 *))func_80146CA0)((s32 *)param_1); - ((void (*)(s32 *))func_801725A4)((s32 *)param_1); -} - - - - -// @class: other -// @stuck: none — MATCH (76 ins). Body is byte-identical with a plain transcription; the only -// delta was frame size: target frame is 0x30 (saves at 0x20/0x24/0x28), not 0x20. Target reserves -// a 16-byte UNREFERENCED stack local (no sp refs anywhere in the body) — gcc-2.7.2 does NOT -// dead-strip an aggregate local even at -O2, so a dead `int frame_pad[4]` reproduces vars=16 -// (.frame $sp,48: vars=16, regs=3, args=16) with zero body footprint. match_one => MATCH. - -extern void func_80147A10(int a0, int a1); -extern void func_80147A84(int); -extern void func_801473EC(s32 *a0); -extern void func_80148038(int, int); -extern void func_80147460(int); -extern void func_8014ED28(s32 _arg0); -extern void func_80146D90(int); -extern void func_80161450(void *a0); -extern void func_80157A8C(int); -extern void func_80146E90(s32 *a0, s32 a1); -extern void func_80146CA0(void *a0); -extern int func_80155FF8(int arg, int a1); -extern void func_80154A74(int, int); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern s32 func_801725A4(u8 *a0); - -extern unsigned char D_800D5178; -extern unsigned char D_8018F510; - -void func_8015795C(int param_1) -{ - int frame_pad[4]; /* dead 16-byte local: forces target's 0x30 frame (vars=16); never referenced */ - int iVar1; - unsigned int uVar2; - - *(unsigned int *)(param_1 + 0x44) = *(unsigned int *)(param_1 + 0x44) | 2; - ((int (*)(int, int))func_80147A10)(param_1, 0x400); - if (*(int *)(param_1 + 0x2c) >= 0) { - *(int *)(param_1 + 0x2c) = 0; - } - func_80147A84(param_1); - ((void (*)(int))func_801473EC)(param_1); - func_80148038(param_1, 0x1a000); - func_80147460(param_1); - iVar1 = ((int (*)(int))func_8014ED28)(param_1); - if (iVar1 != 0) { - func_80146D90(param_1); - } - uVar2 = ((int (*)(int))func_80161450)(param_1); - if ((uVar2 & 5) != 0) { - func_80157A8C(param_1); - ((void (*)(int, int))func_80146E90)(param_1, 8); - ((void (*)(int))func_80146CA0)(param_1); - } - if (uVar2 == 0) { - ((void (*)(int, int))func_80155FF8)(param_1, *(unsigned char *)(param_1 + 0x1aa)); - if (*(unsigned char *)(param_1 + 0x1c0) != 0) { - func_80154A74(param_1, 0x17); - ((void (*)(int, void *))func_80154274)(param_1, &D_800D5178); - ((void (*)(int, void *))func_80146DB8)(param_1, &D_8018F510); - ((void (*)(int, int))func_801477E8)(param_1, 0xfff40000); - *(short *)(param_1 + 2) = 4; - } - ((void (*)(int))func_801725A4)(param_1); - } - return; -} - - -DEFINE_func_80157A8C() /* dedup: shared engine-core @0x80157A8C (src/shared) */ - -DEFINE_func_80157AC8() /* dedup: shared engine-core @0x80157AC8 (src/shared) */ - -DEFINE_func_80157B74() /* dedup: shared engine-core @0x80157B74 (src/shared) */ - -DEFINE_func_80157BC8() /* dedup: shared engine-core @0x80157BC8 (src/shared) */ - -DEFINE_func_80157CCC() /* dedup: shared engine-core @0x80157CCC (src/shared) */ - - -/* func_80157D20 — 21-ins plumbing shim (×138 overlays). - * - * §71 sibling-first: the immediate neighbour func_801578C0 in this very TU - * (src/ov_SC01_077/ov_SC01_077_jr_80154C24.c L1592) already matches with - * `((void (*)(void))func_80156648)();` — the zero-argument call form. The - * target likewise sets up NO argument registers before `jal func_80156648` - * ($a0/$a1 still carry this function's own incoming args), so the call is - * argument-less here too. - * - * The `lhu %lo(D_8018F550)($at)` with `sll $s0,$s0,1` => a plain u16 array - * indexed by the second parameter, NOT hoisted into a pointer (§20: a pointer - * var would keep one address register live across the call; the target rebuilds - * the %hi/%lo pair inline after the call returns). - * - * §73 PARAMS axis / §42 lever 6 — the fleet canon for this symbol is - * `extern void func_80157D20(void);` (this TU's carried decl layer, L399, and - * every sibling overlay's). A 2-param definition hard-errors with - * `conflicting types` in the real TU (rtu_match, byte-verified), and the canon - * cannot be widened from a draft (that is an R22 fleet edit). So keep the - * `(void)` signature and capture $a0/$a1 with register pins copied into NORMAL - * pseudos — the copies are live across `jal func_80156648`, so they get the - * callee-saved homes the target uses ($s1 = a0, $s0 = a1). A direct - * `register` use would leave the values in call-clobbered $a0/$a1. - */ - -extern void func_80156648(s32 *a0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80157D74(u16 *a0); - -void func_80157D20(void) -{ - - extern u16 D_8018F550[]; - register void *a0v __asm__("$4"); - register s32 a1v __asm__("$5"); - void *param_1 = a0v; - s32 param_2 = a1v; - - ((void (*)(void))func_80156648)(); - ((void (*)(void *, s32))func_80147078)(param_1, D_8018F550[param_2]); - ((void (*)(void *))func_80157D74)(param_1); -} - - -DEFINE_func_80157D74() /* dedup: shared engine-core @0x80157D74 (src/shared) */ - - -extern void (*D_8018F560[])(void); - -void func_80157DC4(void *a0) { - D_8018F560[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80157E00() /* dedup: shared engine-core @0x80157E00 (src/shared) */ - -DEFINE_func_80157E38() /* dedup: shared engine-core @0x80157E38 (src/shared) */ - -DEFINE_func_80157EA4() /* dedup: shared engine-core @0x80157EA4 (src/shared) */ - -DEFINE_func_80157F64() /* dedup: shared engine-core @0x80157F64 (src/shared) */ - - -extern void (*D_8018F568[])(void); - -void func_80157FC4(void *a0) { - D_8018F568[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80158000() /* dedup: shared engine-core @0x80158000 (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH (expected); straight-line call sequence with two stores scheduled into jal delay slots - -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147324(s32 arg0); -extern void func_80146CA0(void *a0); - -extern s32 D_800D51E0; -extern s32 D_8018F534; - -void func_80158038(void * param) -{ - *(u8 *)(param + 0x1aa) = 0xe; - func_80154274((s32 *)param, (s32)&D_800D51E0); - func_80154A74(param, 0x15); - func_80146DB8((s32 *)param, &D_8018F534); - *(s32 *)(param + 0x234) = 0; - func_80146994(5, param, 0xc, 0); - func_80147324(0x455); - func_80146CA0((void *)param); -} - - -DEFINE_func_801580B4() /* dedup: shared engine-core @0x801580B4 (src/shared) */ - -DEFINE_func_801581AC() /* dedup: shared engine-core @0x801581AC (src/shared) */ - - -extern void (*D_8018F574[])(void); - -void func_8015824C(void *a0) { - D_8018F574[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80158288() /* dedup: shared engine-core @0x80158288 (src/shared) */ - -DEFINE_func_801582C0() /* dedup: shared engine-core @0x801582C0 (src/shared) */ - -DEFINE_func_80158344() /* dedup: shared engine-core @0x80158344 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (branch-polarity invert on both dispatch ifs + goto block-order to put the v1!=0/L508 paths as fallthrough; phantom 0x10 frame via address-taken frame_pad[4] + (void)& — zero code) - -extern void func_8014CBF8(void *a0); -extern void func_801474EC(s32 *a0); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80148038(s32 a0, s32 a1); -extern void func_80147460(s32 a0); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801473EC(s32 *a0); -extern s32 func_801615C4(void *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80146CA0(void *a0); -extern int func_80155FF8(int arg, int a1); - -extern u8 D_8018F544; -extern u8 D_800D533C; - -void func_80158434(s32 param_1) -{ - u32 uVar1; - u32 uVar2; - s32 frame_pad[4]; - (void)&frame_pad; - - *(u32 *)(param_1 + 0x44) = *(u32 *)(param_1 + 0x44) | 2; - if ((*(u16 *)(param_1 + 0xB8) & 0x4000) != 0) { - *(s32 *)(param_1 + 0x234) = *(s32 *)(param_1 + 0x234) + 1; - ((s32 (*)(void))func_8014CBF8)(); - ((void (*)(s32))func_801474EC)(param_1); - ((void (*)(s32, s32))func_801477E8)(param_1, 0xFFFA0000); - ((void (*)(s32, s32))func_80146DB8)(param_1, (s32)&D_8018F544); - } - if (*(s32 *)(param_1 + 0x234) != 0) { - func_80148038(param_1, 0x10000); - func_80147460(param_1); - func_80147AD4(param_1, 0, 0, 0); - ((void (*)(s32))func_801473EC)(param_1); - } - uVar1 = ((s32 (*)(s32, s32))func_801615C4)(param_1, 0); - if (uVar1 != 0) { - if (uVar1 == 1) goto LAB_80158508; - uVar2 = uVar1 & 0x2000; - } else { - uVar2 = func_80146E98(param_1); - } - if (uVar2 == 0) goto LAB_80158528; -LAB_80158508: - ((void (*)(s32, s32))func_80154274)(param_1, (s32)&D_800D533C); - ((void (*)(s32))func_80146CA0)(param_1); - return; -LAB_80158528: - ((void (*)(s32, s32))func_80155FF8)(param_1, *(u8 *)(param_1 + 0x1AA)); -} - - -DEFINE_func_80158548() /* dedup: shared engine-core @0x80158548 (src/shared) */ - -DEFINE_func_801585A4() /* dedup: shared engine-core @0x801585A4 (src/shared) */ - -DEFINE_func_801585AC() /* dedup: shared engine-core @0x801585AC (src/shared) */ - -DEFINE_func_801585EC() /* dedup: shared engine-core @0x801585EC (src/shared) */ - - -// @class: loose-typing -// @stuck: none — MATCH (87 ins, match_one) + symcheck SYMS-OK (17 symbols agree); same file also -// MATCHes verbatim against ov_SC03_099 and ov_SC06_008 (sibling asm bodies are identical) - -/* func_80158638 @ 0x80158638 — ov_SC01_077 / ov_SC01_077_jr_80154C24 (87 ins). - * - * TWO decl-ROBUSTNESS choices in the BODY, deliberate — these are the only two things the gate's - * decl ladder (cast_call_sites/reconcile_tu/sig_unify) CANNOT repair, because they change codegen, - * not plumbing. Both are load-bearing for templating this exemplar onto its 138 h_seq siblings, - * where each overlay TU carries its own spelling of these decls: - * - * 1) `*(u16 *)&D_80078EB4` — the target loads it with `lhu`. The ov_SC01_077 TU already carries - * `extern s16 D_80078EB4;` (line 504), and a plain `D_80078EB4 != 0` read through an s16 decl - * compiles to `lh` => WIDTH/lh!=lhu, closeness 1. A `(u16)` cast does NOT fix it (gcc-2.7.2 - * folds the zero_extend away for a !=0 test and keeps `lh`); the pointer pun does, and it is - * correct under EITHER declared signedness. - * 2) `(s16)func_80159464(...)` with the fleet-canonical `extern s32 func_80159464();` decl. - * The target truncates the return to 16 bits at BOTH call sites (`sll 16` + `blez`, then - * `sll 16`/`sra 16`/`slti 6`). Declaring the callee `s16` also matches, but the fleet's carried - * decl layer spells it `extern s32 func_80159464(void);` in 1600 places — if reconcile_tu wins - * that conflict the truncation vanishes and the match dies. The explicit cast makes the body - * independent of which decl survives. - * - * Symbols verified present in build/ov_SC01_077/undefined_syms_auto.txt: - * D_80078EB4=0x80078EB4 D_800B9A17=0x800B9A17 D_800B9A64=0x800B9A64 D_80110EC0=0x80110EC0 - */ - -DEFINE_func_80158638() /* dedup: shared engine-core @0x80158638 (src/shared) */ - - -DEFINE_func_80158794() /* dedup: shared engine-core @0x80158794 (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH expected (3 scalar global stores + byte store + 6 calls, source order) -extern s32 D_801E5BE8; -extern s32 D_801E5BF4; -extern s32 D_801E5BF8; - -extern void func_80147084(s32 *a0); -extern void func_80147098(s32 *a0); -extern void func_801470AC(s32 *a0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80158880(s32 *param); - -void func_8015879C(s32 param_1) { - D_801E5BE8 = 0; - D_801E5BF4 = 1; - D_801E5BF8 = 0; - *(u8 *)(param_1 + 0xa8) = 0; - ((void (*)(void))func_80147084)(); - ((void (*)(s32))func_80147098)(param_1); - ((void (*)(s32))func_801470AC)(param_1); - ((void (*)(s32, s32))func_80147078)(param_1, 0x1a); - ((void (*)(s32, s32))func_80146C98)(param_1, 1); - ((void (*)(s32))func_80158880)(param_1); -} - - - - -// @class: plumbing -// @stuck: none — MATCH (STUB: 3 global stores + byte store + 5 calls in source order) -extern s32 D_801E5BE8; -extern s32 D_801E5BF4; -extern s32 D_801E5BF8; - -extern void func_80147084(s32 *a0); -extern void func_80147098(s32 *a0); -extern void func_801470AC(s32 *a0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80158880(s32 *param); - -void func_80158814(void *arg0) { - D_801E5BE8 = 0; - D_801E5BF4 = 1; - D_801E5BF8 = 0; - *(s8 *)((s32)arg0 + 0xA8) = 0; - ((void (*)(void))func_80147084)(); - ((void (*)(void *))func_80147098)(arg0); - ((void (*)(void *))func_801470AC)(arg0); - ((void (*)(void *, s32))func_80147078)(arg0, 0x1A); - ((void (*)(void *))func_80158880)(arg0); -} - - - -extern void func_80149020(s32 *a0); -extern void (*D_8018F5B0[])(s32 *); - -void func_80158880(s32 *param) { - func_80149020(param); - D_8018F5B0[*(u8 *)((s32)param + 0x4F)](param); -} diff --git a/src/ov_SC04_019/ov_SC04_019_jr_801588CC.c b/src/ov_SC04_019/ov_SC04_019_jr_801588CC.c deleted file mode 100644 index 5fb9439f0..000000000 --- a/src/ov_SC04_019/ov_SC04_019_jr_801588CC.c +++ /dev/null @@ -1,1635 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -extern void func_801458E0(void); -extern s32 D_800AE6AC; -extern s32 D_800AE6B0; -extern s16 D_800B9A0A; -extern u8 D_80078E50; -extern void func_800D185C(u8 *a0); -extern void func_801458E8(void); -extern s32 func_80029504(void); -extern void func_80145B24(void); -extern u8 D_8018F74C; -extern u8 D_8018F6BC; -extern u8 D_8018F698; -extern u8 D_8018F674; -extern u8 D_8018F728; -extern u8 D_8018F704; -extern u8 D_8018F6E0; -extern u8 D_8018F650; -extern void func_80145934(void); -extern u8 D_8018F7DC; -extern u8 D_8018F7B8; -extern u8 D_8018F794; -extern u8 D_8018F770; -extern void func_80145A2C(void); -extern s32 func_800291DC(s32); -extern void func_800291C8(s32, s32); -extern void func_80162120(void); -extern void func_80029124(s32, s32); -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); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_80145BF8(void); -extern s32 func_800291B4(s32 arg); -extern void func_800291A0(s32, s32); -extern void func_80145C54(void); -extern s32 func_80145CEC(); -extern s32 func_80029178(s32 arg); -extern void func_80146014(s32 a0); -extern unsigned char D_8018EBD4[]; -extern unsigned char D_8018EC04[]; -extern unsigned char D_8018EC54[]; -extern unsigned char D_8018EC84[]; -extern unsigned char D_8018ECB4[]; -extern void func_80145EE8(s32 param_1); -extern void MoveImage(void *a0, s32 a1, s32 a2); -extern void func_80146074(void); -extern s32 func_80146128(void); -extern void func_80146360(void); -extern void func_801463A0(); -extern void func_8014607C(void); -extern s32 *D_80126B78; -extern u8 D_80078EC1; -extern s32 D_80078EC8; -extern s32 D_80126B9C; -extern s32 D_8011F730; -extern u16 D_801152B8; -extern u16 D_8012693A; -extern u8 D_80126BE0[]; -extern u8 D_801150F0[]; -extern void *memcpy(void *dst, const void *src, u32 n); -extern void func_80146FC4(s32 a0); -extern void func_80150A70(s32 a0); -extern void func_80147098(s32 *a0); -extern void func_8014A638(s32 arg0); -extern s32 func_80155458(s32 a0); -extern s32 func_80029104(void); -extern void func_80029344(void); -extern void func_8014ADE0(s32 a0); -extern void func_8014B350(s32 a0); -extern void func_8014B7A4(s16 *param_1); -extern s32 func_80161D58(s32 a0); -extern void func_80161A90(s32 a0); -extern void func_8014B504(u16 *a0); -extern void func_80149BEC(s32 a0); -extern void func_8014B5D0(s32 *a0); -extern void func_8014C99C(u8 *a0); -extern void func_8014B190(s32 s0); -extern void func_80148648(s32 a0, s32 a1); -extern s32 func_80149228(s32 a0); -extern void func_8014A59C(s32 a0); -extern void func_8016F14C(void *a0); -extern void func_80154418(void *a0); -extern void func_80154BE4(s32 a0); -extern void func_80165694(s32 arg0); -extern void func_801654A8(s32 a0); -extern void func_8014A680(s32 a0); -extern void func_8014A6A8(s32 a0); -extern void func_8014A71C(s32 a0); -extern void func_80172588(s32 *a0); -extern void func_801473DC(s32 *a0); -extern void func_80015978(s32 a0, s32 *a1); -extern void (*D_8018ED04[])(void *); -extern u8 D_80126BA4; -extern s32 D_80127098; -extern s32 D_80127094; -extern s32 D_80127090; -extern void func_80146534(void); -extern void func_8001D074(s32 a0, s32 a1); -extern void func_80146554(void); -extern void func_80146578(void); -extern void func_8001CFDC(s32, s32); -extern void func_8014659C(void); -extern void func_8001D074(s32, s32); -extern void func_801465C0(void); -extern void func_801465E4(void); -extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); -extern s32 D_8011F9D0; -extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); -extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 D_8011F750; -extern s32 D_8011F754; -extern u8 * func_801468C8(s32 arg0, u8 arg1); -extern s32 D_8011D030; -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); -extern s32 func_80146B9C(void *a0); -extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); -extern u16 D_8011DA28; -extern s32 func_80146B9C(void * arg0); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80146CA0(void *a0); -extern void func_80146CB4(void *a0); -extern void func_80146CC8(s32 a0); -extern void func_80146D30(s32 a0); -extern void func_80146D80(s32 *a0); -extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80146D90(s32 a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); -extern void func_80146E90(s32 *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80015954(s32 a0, s32 a1); -extern void func_80149374(s32 a0, s32 a1); -extern void func_80146F58(s32 a0, s32 a1); -extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 func_8012A68C(void); -extern s16 func_8012A758(void); -extern void func_8004978C(s16 *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern u8 D_80126DB0[]; -extern u16 D_80126DB6; -extern void func_8014704C(s32 *a0); -extern s32 func_80147054(void *a0); -extern void func_80147060(u8 * a0); -extern void func_8014706C(void *arg0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80147084(s32 *a0); -extern void func_8014708C(void *arg0); -extern s32 func_801470A0(void *a0); -extern void func_801470AC(s32 *a0); -extern void func_801470B4(s32 arg0); -extern void func_801470C0(s32 a0); -extern void func_80147118(s32 a0); -extern s16 D_80126BB8; -extern s16 D_80126BBA; -extern s16 D_80126BBC; -extern void func_80147264(s32 a0); -extern void func_80147290(void); -extern void func_801472B4(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void *D_8012707C; -extern void func_801472DC(void); -extern void func_801472F0(void *a0); -extern void func_80147364(u16, s32); -extern void func_80147300(u16 arg0); -extern void func_80147324(s32 arg0); -extern void func_801473EC(s32 *a0); -extern void func_80147460(s32 a0); -extern void func_80147514(); -extern void func_80147628(s32 a0); -extern void func_80147478(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); -extern s32 func_800129CC(s32 a0, s32 a1); -extern void func_80147514(s32 arg0); -extern void func_80013F3C(s32 a0); -extern void func_80012558(s32 a0, s32 a1); -extern void func_800126C4(s32 a0, s32 a1); -extern void func_800123F0(s32 a0, s32 a1); -extern void func_80147718(s32 a0); -extern void func_80147788(void *a0, s32 a1); -extern void func_801477A8(void *a0, s32 a1); -extern void func_801477C8(void *a0, s32 a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80147814(s32 a0, s32 a1); -extern void func_80147928(int a0, int a1); -extern void func_8014799C(int a0, int a1); -extern void func_80147A10(int a0, int a1); -extern void func_80147860(int a0, int a1, int a2, int a3); -extern void func_80147948(s32 a0, s32 a1, s32 a2); -extern void func_801479BC(s32 a0, s32 a1, s32 a2); -extern void func_80147A30(s32 a0, s32 a1, s32 a2); -extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147948(int a0, int a1, int a2); -extern void func_801479BC(int a0, int a1, int a2); -extern void func_80147A30(int a0, int a1, int a2); -extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147A84(s32 arg0); -extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147AAC(s32 arg0); -extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80147B5C(s32 a0, void *a1); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern void func_80147B18(s32 a0); -extern void func_80147B5C(s32 arg0, void *arg1); -extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147DC0(s32 a0, s32 a1); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147F50(s32 arg0); -extern void func_80148038(s32 a0, s32 a1); -extern s32 ratan2(s32 a0, s32 a1); -extern s32 csqrt(s32 a0); -extern s32 func_80012A60(s32 a0, s32 a1); -extern void func_80148094(int param_1, short *param_2, int *param_3); -extern void func_801485B8(s32 a0, s32 a1, s32 a2); -extern void func_801484B0(s32 a0, s32 a1); -extern s32 func_80154358(void *a0); -extern void func_801484E8(s32 a0, s32 a1); -extern void func_80148534(s32 a0, s32 a1); -extern void func_8014856C(s32 a0, s32 a1); -extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); -extern void func_80148634(void *a0); -extern u8 D_800B9A64; -extern s32 func_80014DC0(); -extern s32 func_80014D68(); -extern s32 func_80014D94(); -extern s32 func_80014CF8(); -extern void func_800120DC(); -extern s32 func_800CF8B4(); -extern u16 func_801487F4(s32 *a0); -extern u16 func_80148800(s32 *a0); -extern u8 func_8014880C(s32 *a0); -extern u16 func_80148818(s32 *a0); -extern s32 func_80047D3C(s32 a0); -extern s32 func_80148824(void *arg0); -extern s32 func_801488A8(u8 *a0); -extern s32 func_8014891C(s32 a0); -extern s32 func_80148980(u8 *a0); -extern s32 func_801489E8(s32 a0); -extern s32 func_80148A48(s32 a0); -extern int func_80148AFC(void *a0); -extern void func_80148AAC(u8 *a0); -extern s32 func_80148C18(void); -extern s32 func_80148C20(s32 a0, s16 a1); -extern s32 func_80148C34(s32 a0, s32 a1); -extern s32 func_80148C4C(s32 a0, s32 a1); -extern s32 func_80148C64(s32 a0, s32 a1); -extern s32 func_80148C7C(void); -extern s32 func_80148C84(s32 a0, s32 a1); -extern s32 func_80148C9C(s32 a0, s32 a1); -extern s32 func_80148CB4(s32 a0, s32 a1); -extern s32 func_80148CCC(s32 a0, s32 a1); -extern s32 func_80148CE4(void); -extern s32 func_80148CEC(void); -extern s32 func_80148CF4(s32 a0, s32 a1); -extern s32 func_80148D0C(s32 a0, s32 a1); -extern s32 func_80148D24(void *a0, int a1); -extern s32 func_80148D3C(void); -extern s32 func_80148F60(void); -extern s32 func_80148F68(s32 a0); -extern s32 func_80148F74(s32 a0); -extern s32 func_80148F80(s32 a0); -extern s32 func_80148F8C(s32 a0); -extern s32 func_80148F98(void); -extern s32 func_80148FA0(s32 a0); -extern s32 func_80148FAC(s32 a0); -extern s32 func_80148FB8(s32 a0); -extern s32 func_80148FC4(s32 a0); -extern s32 func_80148FD0(void); -extern s32 func_80148FD8(void); -extern s32 func_80148FE0(s32 a0); -extern s32 func_80148FEC(s32 a0); -extern s32 func_80148FF8(s32 a0); -extern s32 func_80149004(void); -extern void func_8014900C(s32 *a0); -extern void func_80149020(s32 *a0); -extern void func_80149034(s32 *a0); -extern void func_80149048(s32 *a0); -extern void func_8014905C(u8 *a0); -extern void func_801490E0(s32 *a0, s16 a1); -extern void func_801490E8(s32 *a0, s16 a1); -extern void func_801490F0(s32 *a0, s16 a1); -extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); -extern void func_801490F8(s32 a0, s32 a1); -extern s32 func_801491C4(s32 a0); -extern s32 func_80149184(s32 a0); -extern s32 D_801151D4; -extern void func_80149204(s32 *a0); -extern void func_80149210(s32 a0, s32 a1); -extern s32 func_80149284(s32 *a0, s32 a1); -extern void func_80149350(s32 arg0); -extern void func_80149290(s32 a0); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_80149374(s32 arg0, s32 arg1); -extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8014942C(s32 arg0); -extern void func_8012EF70(s32 a0, s32 a1); -extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012EFB8(s32 a0); -extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); -extern void func_8014964C(s32 param_1, s32 param_2); -extern s32 func_801496D4(void *a0); -extern void func_8015AD08(); -extern void func_80149704(void); -extern void func_8015ACC4(); -extern void func_80149724(void); -extern u8 D_80078EBF; -extern s32 func_80149744(struct S_80149744 *a0); -extern void func_8015F7A0(); -extern void func_80149788(void); -extern void func_801653B8(); -extern void func_80149864(void); -extern s16 currentLocationId; -extern s32 func_8016F1AC(void); -extern s32 func_80149884(void); -extern void func_80160B00(); -extern void func_801498C0(void); -extern s32 func_80149AA8(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern void func_80146750(void *a0); -extern s32 func_801498E0(s32 *a0); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_80147364(u16 a0, s32 a1); -extern s32 func_800CCF28(s32 a0); -extern u8 D_80126B5C; -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_8015DAC4(s32 *a0); -extern void func_8015554C(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern void func_80149B14(s32 *a0); -extern u8 func_8014BEF8(void); -extern s32 func_80149B54(s32 * arg0); -extern void func_8015DE24(s32 *a0); -extern void func_80157510(s32 *a0); -extern void func_80149BAC(s32 *a0); -extern s32 func_80029178(s32 a0); -extern s32 func_80149C08(s32 arg0); -extern void func_801577C8(); -extern void func_80149C94(void); -extern void func_80157D20(void); -extern void func_80149CB4(void); -extern s32 func_80149CD4(s32 a0); -extern u8 func_8014B5B8(s32 *a0); -extern s32 func_80149D10(s32 a0); -extern s32 func_80149E94(s32 a0); -extern s32 func_80149DD8(s32 a0); -extern s32 func_80149D9C(s32 a0); -extern u8 D_801202A0[]; -extern s32 func_80149F2C(s32 a0, s32 a1); -extern s32 func_80149E94(s32 arg0); -extern void func_80149FA8(void); -extern s32 D_8018EDCC[]; -extern u8 D_80078E78[]; -extern s32 func_80149FB0(s32 a0); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern void func_8014A1B0(s32 a0, s32 a1); -extern s32 func_8014A048(s32 param_1); -extern u16 func_80156370(u16 a0); -extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); -extern void func_8015D4B4(); -extern void func_8014A218(void); -extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); -extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); -extern s32 func_8014A238(s32 arg0); -extern s32 func_8014A2E4(s32 a0); -extern void func_8014A380(s32 a0, s32 a1); -extern s16 D_801152B0; -extern s16 D_801152B4; -extern s32 func_8014A3E0(struct S_8014A3E0 *a0); -extern s32 func_8014A454(s32 a0); -extern s32 func_8014A4B4(void *a0); -extern void func_8015EDD4(); -extern void func_8014A4FC(void); -extern s32 func_8014A674(s32 *a0); -extern s32 func_8014A69C(s32 *a0); -extern s32 func_8014A6C4(s32 a0); -extern void func_8015E184(); -extern void func_8014A830(void); -extern s32 func_80029AF4(void); -extern s32 func_8014A850(s32 param_1); -extern void func_8014AA04(s32 a0); -extern void func_801599A4(void *a0); -extern void func_80159B3C(void *a0); -extern s32 func_80165A20(s32 a0); -extern void func_8014AB7C(); -extern void func_8014AC10(); -extern void func_8014AA28(void); -extern void func_8014AB5C(void); -extern void func_80162CCC(void); -extern void func_8014AB7C(s32 arg0); -extern void func_8014ABF0(void); -extern void func_80016714(void *a0, s32 a1); -extern void func_8014AC10(s32 arg0); -extern void func_8014ACC0(s32 a0, s32 a1); -extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); -extern void func_8014ACE8(void *a0, s32 a1, s32 a2); -extern void func_80146AFC(void *a0); -extern void func_8014ADA8(s32 a0, s32 a1); -extern void func_8014AD7C(s32 a0); -extern s32 D_80078E8C; -extern void func_8014B034(s32 arg0); -extern void func_8014B00C(s32 arg0); -extern void func_8014B084(void); -extern s16 D_80078E90; -extern void func_8014B034(s32 a0); -extern u16 D_80078EAC; -extern u8 D_80078EBA; -extern void func_800D10EC(void); -extern void func_8002AC98(void); -extern s32 func_8014B154(s32 *a0); -extern void func_8014B12C(void); -extern void func_8014B2F8(void); -extern void func_8014B4C4(void); -extern void func_8014B160(s32 a0); -extern s32 func_8016F1C4(void); -extern s16 D_80078E96; -extern s16 D_80078EB8; -extern u16 D_80078EA6; -extern void func_8014B2A8(void); -extern void func_8014B310(void); -extern void func_8014B2D0(void); -extern s32 D_80078E94; -extern s32 D_80078ECC; -extern void func_8014B33C(void); -extern u8 D_80062BF4[]; -extern void func_8014BC80(s32 a0, s32 a1); -extern void func_80019064(void *a0); -extern s32 D_80078E98; -extern void func_80166244(); -extern void func_8014B4D4(void *a0); -extern s16 D_80078E9A; -extern u8 D_80126D1C; -extern s32 D_80126D74; -extern void func_8014B598(s32 a0, s32 a1); -extern void func_8014B5B0(s32 *a0); -extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); -extern void func_8014B5D8(s32 s1); -extern s32 D_80078E9C; -extern s32 D_80078ED0; -extern void func_8014B6F0(s32 a0, s32 a1); -extern void func_8014B768(s32 a0, s32 a1); -extern void func_8014B944(s32 a0, s32 a1, s32 a2); -extern s32 D_80078EA4; -extern u16 D_80078EB2; -extern s16 D_80078EB4; -extern void func_8014BB0C(void); -extern void func_8014BB24(s32 a0, s32 a1, s32 a2); -extern void func_8014BC0C(s32 a0, s32 a1); -extern void func_8014BC44(s32 a0, s32 a1); -extern u8 D_800B9A17; -extern void func_8014BCC0(s32 a0, s32 a1); -extern u16 D_80078EB6; -extern s32 func_8014BCEC(s32 a0, s32 a1); -extern void func_8014BD24(s32 a0, s32 a1); -extern void func_8014BD60(s32 param_1, s32 param_2); -extern void func_8014BD98(s32 a0, u16 a1); -extern void func_8014BDC8(void); -extern void func_8014BDE0(void); -extern s32 func_8017267C(s32 *a0); -extern s32 func_80013294(void *a0, void *a1); -extern void func_80029ED4(s32 a0); -extern void func_8014BDE8(s32 a0); -extern void func_8014BE78(void); -extern void func_8014BE9C(void); -extern void func_80029124(s32 a0, s32 a1); -extern void func_8014BEC0(void); -extern void func_8014BF18(s32 a0); -extern void func_8014BF48(void); -extern u8 func_8014BF6C(void); -extern void func_8014BF8C(u8 arg0); -extern void func_8014BFB0(void); -extern u8 func_8014BFD4(void); -extern void func_8014BFF4(s32 a0, s32 a1); -extern void func_8014C010(s32 a0, s32 a1); -extern s32 func_8014C050(s32 a0, s32 a1); -extern s32 func_8014C088(s32 a0, s32 a1); -extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); -extern s32 func_8014C118(void * a0, s32 a1, s32 a2); -extern s32 func_8014C168(s32 * param_1, s32 param_2); -extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); -extern u8 D_8018EE54[]; -extern void func_8014C1A0(s32 arg0, s32 arg1); -extern s32 func_80013328(s32 a0, s32 a1); -extern s32 func_8014C59C(void *a0, void *a1); -extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); -extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); -extern s32 ratan2(s32 dx, s32 dy); -extern u8 D_8018EE5C; -extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); -extern s16 func_8014C5D0(s32 a0, s32 a1); -extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); -extern u8 D_80126D17; -extern void func_8014C6AC(void); -extern void func_8014C6C0(void); -extern u8 D_80126D1E; -extern void func_8014C6D0(void); -extern void func_8014C6E0(void); -extern s32 func_8014C860(s32 a0, s32 a1); -extern void func_8014C8C8(s32 a0, s32 *a1); -extern void func_8014C88C(s32 a0); -extern void func_8014C8C8(s32 dst, s32 * src); -extern void func_8014C8F0(s32 arg0); -extern u8 D_801151F0[]; -extern s32 func_8014C918(s32 a0, s32 a1); -extern s32 D_80126B50; -extern void func_8014C968(void); -extern void func_8014C978(void); -extern s32 func_8014C98C(void); -extern void func_80139914(s32 a0); -extern s32 func_8014CA00(s32 a0); -extern u16 func_8014CA70(s32 a0, s32 a1); -extern s32 func_8014CA14(s32 a0, s32 a1); -extern u16 func_8014CAE4(s32 *a0, s32 a1); -extern s32 func_8014CA88(s32 *a0, s32 a1); -extern s32 func_8014CAFC(void); -extern s32 func_8014CB0C(void); -extern s32 func_8014CB1C(void); -extern u8 D_80126D1F; -extern s32 func_8014CB2C(void); -extern s32 func_8014CB58(void); -extern u8 D_80126D1D; -extern void func_8014CB68(void); -extern s32 func_8014CB7C(void); -extern s32 func_8014CB8C(void); -extern struct Packed8 D_80126C98; -extern short D_80126C9E; -extern void func_8014CB9C(struct Packed8 *a0); -extern s32 D_80126CDC; -extern void func_8014CBD8(void); -extern s16 D_80126CC4; -extern void func_8014CBE8(void); -extern void func_8014CBF8(void *a0); -extern void func_8014D3E0(s32 a0); -extern void func_8014D04C(void); -extern void func_8014CCB4(void); -extern void func_8014CC28(s32 a0); -extern void func_8014CD0C(u8 *a0); -extern s32 func_8014CF04(s32 a0, s32 a1, void *a2); -extern void func_8014CD80(s32 a0, void *a1, void *a2); -extern void func_8014D0A4(s32 a0); -extern s32 func_8014D2A0(s32 a0, void *a1, void *a2); -extern s32 func_8014D12C(s32 a0, void *a1, void *a2); -extern void func_8014D438(s32 a0); -extern void func_8014D3E0(s32 _arg0); -extern void func_8014D610(s32 a0, void *a1, void *a2); -extern s32 func_8014D4C0(s32 a0, void *a1, void *a2); -extern void func_8014D790(s32 a0); -extern void func_8014D738(void); -extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); -extern s32 func_8014D820(s32 a0, u16 *a1, u16 *a2); -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); -extern void func_8014DF94(s32 arg0); -extern void func_8014DF3C(void); -extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ -extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ -extern s16 D_801152AC; -extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); -extern void func_8014E48C(s32 a0); -extern void func_8014E434(void); -extern void func_8014E5B4(s32 a0, void *a1, void *a2); -extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); -extern void func_8014E6F8(struct SubE6F8 *a0); -extern void func_8014E6A0(void); -extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); -extern void func_8014E934(s32 _arg0); -extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); -extern s32 func_8014E98C(void *a0); -extern u16 D_800B99DA; -extern s32 D_801150D8; -extern s16 D_801152AA; -extern u8 D_80126720[]; -extern s16 D_80126724; -extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); -extern s32 func_8014ED80(struct SubED80 *a0); -extern int D_801E5BA8; -extern void func_8014ED28(s32 _arg0); -extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F24C(struct SubF24C *a0); -extern void func_8014F1F4(void); -extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F4C0(); -extern s32 func_8014F468(void); -extern int func_8014F74C(); -extern int func_8014F6F4(void); -extern u8 D_800D3918[]; -extern u8 D_801152A8[]; -extern s32 D_801152BC; -extern int func_8014F74C(s32 arg0); -extern s32 func_8014FA70(s32 a0); -extern s32 D_801E5BAC; -extern void func_8014FA04(s32 a0); -extern s32 func_8014FBC0(); -extern s32 func_8014FC18(u8 *self); -extern int func_8014FD54(int param_1); -extern void func_8014FCFC(void); -extern void func_80150170(void *a0); -extern s32 func_8014FE60(void *a0); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_8014FE60(void *e); -extern s32 func_80134510(s32 arg); -extern s32 func_80150150(s32 a, s32 b); -extern s32 func_80150460(s32 a, s32 b); -extern void func_801504D8(u16 *a0); -extern s32 func_80150480(s32 _arg0); -extern s32 func_80150528(void *a0, void *a1, void *a2); -extern s32 func_80150528(void *arg0, void *arg1, void *arg2); -extern s32 func_801506A4(s32 a0, s32 a1); -extern s32 func_801505FC(s32 a0); -extern s32 func_801506A4(s32 arg0, s32 arg1); -extern void func_80150820(s32 a0, s32 a1); -extern void func_8015086C(int param_1); -extern s32 func_801508B4(s32 a0); -extern s32 func_8015094C(s32 a0); -extern short func_801508F8(s32 a0); -extern s32 D_8018EE8C; -extern s32 D_80126990; -extern s32 D_80126994; -extern u8 D_80126948[]; -extern s32 func_80021174(s32 a0, s32 a1); -extern s32 func_8015094C(s32 param_1); -extern void func_80150B9C(void); -extern s32 func_80151184(s32 a0, s32 a1, s32 a2); -extern s32 func_80150BA4(s32 a0); -extern s32 func_801619D0(void *a0); -extern void func_80150BC8(s32 *a0); -extern s32 func_80150480(s32 a0); -extern u16 D_800AE6DC; -extern void func_80150C48(s32 a0); -extern int func_80151184(int arg, int a1, int a2); -extern int func_80150CA0(int arg); -extern void func_80150EC4(s32 a, s32 b); -extern void func_80150CC4(s32 a); -extern void func_80150CE4(s32 a); -extern void func_80150D04(s32 a); -extern void func_80150D24(s32 a); -extern void func_80150D44(s32 a); -extern void func_80150D64(s32 a); -extern void func_80150D84(s32 a); -extern void func_80150DA4(s32 a); -extern void func_80150DC4(s32 a); -extern void func_80150DE4(s32 a); -extern void func_80150E04(s32 a); -extern void func_80150E24(s32 a); -extern void func_80150E44(s32 a); -extern void func_80150EC4(s32 a0, s32 a1); -extern void func_80150E64(s32 a0); -extern void func_80150E84(s32 a0); -extern void func_80150EA4(s32 a0); -extern u8 D_800AE6C0; -extern s16 D_800AE6C8; -extern s16 D_800AE6CA; -extern s16 D_800AE6CC; -extern s32 D_800AE6C4; -extern s16 D_800AE6CE; -extern u8 D_800AE6BE; -extern u8 D_801201F8[]; -extern void func_80150F78(void); -extern void func_80150F80(s32 a0); -extern int func_80150FB4(int arg); -extern void func_80150FD8(s32 a0); -extern int func_80151014(int arg); -extern void func_80151038(s32 a0); -extern int func_80151070(int arg); -extern int func_80151094(int arg); -extern void func_801510B8(void); -extern void func_801510C0(void); -extern int func_801510C8(int arg); -extern int func_801510EC(int arg); -extern s32 func_8012DB84(void); -extern s32 func_80151110(void); -extern void func_80151130(void); -extern int func_80151138(int arg); -extern void func_8015115C(s32 *a0, s16 a1); -extern s32 func_80151164(s32 a0, s32 a1); -extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); -extern void func_801511A8(u8 *a0); -extern void func_801511C4(u8 *a0); -extern int func_80151204(int arg, int a1); -extern int func_801511E0(int arg); -extern int func_80151204(int a0, int a1); -extern void func_80151238(void *a0); -extern void func_8015126C(u16 *p); -extern void func_80151780(s32 a0); -extern void func_801516F0(s32 *a0); -extern void func_8015173C(s32 *a0); -extern s16 D_8011DB1A; -extern s32 D_80127518; -extern s32 D_801151FC; -extern s32 func_801725CC(u8 *a0); -extern s32 func_80029D3C(void); -extern void func_80151878(void); -extern void func_80153B58(s32 *a0); -extern s32 func_80151880(s32 a0); -extern s32 func_801518D8(s32 a0); -extern s32 func_80151944(void); -extern s32 func_80151924(void); -extern void func_8014E934(s32 a0); -extern s32 func_8014F3E8(s32 a0); -extern void func_801519C8(s32 a0); -extern void func_80151980(s32 a0); -extern M2C_UNK D_800D5880; -extern s32 D_800D58AC; -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801519C8(s32 arg0); -extern void func_80151C54(s32 a0); -extern void func_801542DC(s32 *a0, s32 a1); -extern void func_8015BDD0(s32 *a0); -extern void func_80165718(s32 a0); -extern u8 D_800D46E4[]; -extern void func_80151AE4(s32 arg0); -extern void (*D_8018EF34[])(void); -extern void func_80151D24(void *a0); -extern void func_80151DB0(s32 a0); -extern void func_80151D60(void *a0); -extern s32 func_80172630(u8 *a0); -extern s32 D_80062C14; -extern void func_80151DB0(s32 param_1); -extern void func_80151E78(s32 *a0); -extern void func_80151ECC(struct S80151ECC *a0); -extern void func_80151FB4(s32 a0); -extern void func_80151F38(s32 *a0); -extern void func_801553C0(s32 a0); -extern void func_80153C18(); -extern void (*D_8018EF58[])(void); -extern void func_80152058(void *a0); -extern void func_801520DC(s32 a0); -extern void func_80152094(s32 a0); -extern void func_80147324(s32 a0); -extern u8 D_80062C04[]; -extern M2C_UNK D_8018EF48; -extern void func_801520DC(s32 arg0); -extern void func_801470B4(s32 a0); -extern void func_8015369C(s32 a0); -extern void func_80152194(s32 *a0); -extern s32 func_801536DC(s32 a0); -extern void func_8015220C(s32 a0); -extern s32 func_80153800(s32 a0); -extern void func_801522CC(s32 a0); -extern void func_80152254(s32 *a0); -extern void (*D_8018EF6C[])(void); -extern void func_80152370(void *a0); -extern void func_801523F4(s32 a0); -extern void func_801523AC(s32 a0); -extern void func_8001382C(s32 a0, void *a1, void *a2); -extern u8 D_8018EF78[]; -extern void func_801523F4(s32 arg0); -extern void func_801525F4(int); -extern s32 func_801535F4(void *arg0); -extern void func_8015BF48(s32 *a0); -extern void func_80152500(int param_1); -extern void func_801525F4(s32 a0); -extern void (*D_8018EF88[])(void); -extern void func_80152698(void *a0); -extern void func_80152714(s32 a0); -extern void func_801526D4(s32 a0); -extern void func_80152790(s32 a0); -extern void (*D_8018EFA0[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018EF90; -extern void func_801528B0(s32 arg0); -extern void func_8015294C(s32 a0); -extern void func_80152A08(s32 a0); -extern void func_80152AC8(s32 a0); -extern void func_80152A50(s32 *a0); -extern void (*D_8018EFB4[])(void); -extern void func_80152B6C(void *a0); -extern void func_80152BF0(s32 a0); -extern void func_80152BA8(s32 a0); -extern void func_80152C80(s32 *a0); -extern void func_80152C40(s32 *a0); -extern void (*D_8018EFD0[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018EFC0; -extern void func_80152DA8(s32 arg0); -extern void func_80152E4C(s32 a0); -extern void func_80152EFC(s32 a0); -extern void func_80152FBC(s32 a0); -extern void func_80152F44(s32 *a0); -extern void (*D_8018EFE4[])(void); -extern void func_80153060(void *a0); -extern void func_801530E4(s32 a0); -extern void func_8015309C(s32 a0); -extern void func_80155440(s32 *a0); -extern void func_801530E4(s32 arg0); -extern void func_80153150(struct S80153150 *a0); -extern void func_801531BC(s32 a0); -extern void func_8015327C(s32 a0); -extern void func_80153204(s32 *a0); -extern void (*D_8018EFF8[])(void); -extern void func_80153320(void *a0); -extern void func_801533A4(s32 a0); -extern void func_8015335C(s32 a0); -extern void func_80153410(s32 *a0); -extern void func_80153490(s32 a0); -extern void func_80153550(s32 a0); -extern void func_801534D8(s32 *a0); -extern void (*D_8011DB28)(s32 a0); -extern s32 func_801536DC(s32 param_1); -extern void func_800139C8(s32 a0, void *a1, void *a2); -extern s32 func_80153978(s32 a0, u16 *src); -extern s32 func_80133784(s32 a0, void *src, s32 dst); -extern s32 func_801539F8(s32 a0, void *a1); -extern s32 func_801539F8(s32 a0, void * a1); -extern s32 func_8016DA04(s32 a0); -extern s32 func_80153BD8(s32 a0); -extern s32 func_80153BF0(s32 a0); -extern void func_80153C18(void); -extern u16 D_8011F748; -extern void func_80153C30(void); -extern void func_80153C74(s16 a0, s16 a1); -extern s16 D_8011DB18; -extern void func_80153C44(int a0, int a1, s16 a2); -extern s16 D_8011DB0C; -extern s32 D_80115210; -extern void func_80153C8C(void); -extern void func_80153C9C(void); -extern s32 func_80153CBC(void); -extern s32 D_8018F00C; -extern void (*D_8018F034[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018F014; -extern void func_80153D7C(s32 param_1); -extern void func_8015410C(void); -extern void func_80153E00(s32 param_1); -extern void func_80151664(void); -extern void func_80154134(u8 *a0); -extern void func_80154190(u8 *a0, s32 a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154218(u8 *a0, s32 a1, s32 a2); -extern void func_801541D8(u8 *a0, s32 a1, s32 a2); -extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); -extern void func_801542A4(); -extern void func_801542A4(s32 *a0, s32 a1); -extern void func_8015430C(); -extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); -extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); -extern s32 func_80154358(void * arg0); -extern void StoreImage(s32, void *); -extern void func_80154B4C(u8 *a0, s32 a1); -extern s32 func_80155394(s32 *a0); -extern void func_801553A8(s32 *a0); -extern u8 D_80126738; -extern u8 D_80126748; -extern u8 D_80126838; -extern u8 D_80126848; -extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); -extern void func_80154AB4(s32 a0, s32 a1); -extern void func_80154B20(s32 a0, s32 a1, s32 a2); -extern void func_80154AE0(s32 a0, s32 a1, s32 a2); -extern void func_80154B7C(u8 *a0, s32 a1); -extern void func_80154BC8(void *a0, s32 a1, s32 a2); -extern void func_80154B98(void *a0, s32 a1, s32 a2); -extern void func_80154ED8(s32 a0, s32 a1); -extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); -extern u8 D_800D8D10[]; -extern s16 D_80078E9E; -extern void func_801550FC(s32 a0); -extern void func_80154F9C(s32 a0); -extern void func_800183E0(s32 a0); -extern ImgRect8 D_8018F040[]; -extern void func_801550FC(s32 arg0); -extern void func_8001D150(s32, s32); -extern void func_8001D130(int, int); -extern void func_80155150(int param_1); -extern s32 D_800DE2A4[]; -extern void func_801552F4(s32 a0); -extern void func_80155344(s32 a0); -extern s32 func_80029178(s32); -extern int (*D_8018F080[])(void); -extern s32 func_80155458(s32 param_1); -extern s32 func_801659DC(u8 *a0); -extern s32 func_801554B8(void *arg0); -extern void func_801555F4(void *a0); -extern void func_80155518(s32 *a0); -extern void func_80155580(void *a0); -extern void (*D_8018F084[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern S801563EC *func_801563EC(u16 idx); -extern s32 func_80029B4C(s32 a0, s32 a1); -extern s32 func_80029BC8(s32 a0, s32 a1); -extern s32 func_80029C44(s32 a0, s32 a1); -extern s32 func_8015640C(s32 a0, s32 a1); -extern s32 rand(void); -extern u32 func_8015616C(s32 param_1, u16 param_2); -extern u16 func_80156370(u16 param_1); -extern S801563EC D_8018F278[]; -extern S801563EC * func_801563EC(u16 idx); -extern s32 func_801564B0(s32 a0); -extern s32 func_8002A1B4(void); -extern s32 func_8002A400(void); -extern s32 func_8002A670(void); -extern s32 func_8002A8E0(void); -extern s32 D_801151E0[]; -extern s32 func_801565C0(void); -extern void func_80156A14(s32 *a0); -extern void func_80156648(s32 *a0); -extern u8 D_8011DAD8[]; -extern s32 func_8014C568(s16 *a0, s16 *a1); -extern void func_801567BC(s32 a0); -extern B8 D_80128120[]; -extern B8 D_80128138[]; -extern S8 D_80126AF0[]; -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018F4E8[]; -extern void func_80156A1C(s32 param_1, s32 param_2); -extern s32 D_801150E0[]; -extern void func_80156A88(s32 a0, s32 a1); -extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); -extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); -extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); -extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern s32 func_80135004(s32 a0, void *a1, s32 a2); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801575E4(void *a0); -extern void func_801574DC(s32 *a0); -extern void func_80157544(void *a0); -extern void (*D_8018F4F8[])(void); -extern void func_8014CC28(s32 a0); /* defined */ -extern s32 func_8014F3E8(s32 a0); /* declared */ -extern void func_8015BDD0(s32 *a0); /* defined */ -extern void func_801575E4(void *a0); /* defined */ -extern void func_80157580(s32 arg0); -extern u8 D_800D4F14[]; -extern void func_801576A8(void *arg0); -extern s32 func_8015773C(u8 *a0); -extern s32 func_8015771C(u8 *a0); -extern s32 func_8015773C(u8 * arg0); -extern int D_801E5BE0; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018F520[])(void); -extern void func_80157808(void *param_1); -extern void func_80157880(s32 a0); -extern s32 func_801725A4(u8 *a0); -extern u8 D_800D5128; -extern u8 D_8018F500; -extern void func_801578C0(s32 param_1); -extern void func_80147A84(int); -extern void func_80148038(int, int); -extern void func_80147460(int); -extern void func_80146D90(int); -extern void func_80161450(void *a0); -extern void func_80157A8C(int); -extern void func_80154A74(int, int); -extern unsigned char D_800D5178; -extern unsigned char D_8018F510; -extern void func_8015795C(int param_1); -extern void func_80161D20(s32 a0, s32 a1); -extern void func_80157A8C(s32 a0); -extern void func_8016706C(s32 a0); -extern u8 D_800D51AC[]; -extern void func_80157AC8(s32 param_1); -extern void func_80157B74(int param_1); -extern void func_8016158C(void *a0); -extern void func_8015BE04(s32 *a0); -extern void func_80157BC8(s32 a0); -extern void func_80157CCC(s32 a0); -extern void func_80157DC4(void *a0); -extern void func_80157FC4(void *a0); -extern void func_80157D74(u16 *a0); -extern void (*D_8018F560[])(void); -extern void func_80157E38(void *); -extern void func_80157E00(void *a0); -extern void func_80157E38(void * a0); -extern s32 func_80157F64(s32 *a0); -extern s32 func_80156600(void *a0); -extern void func_80157EA4(void *a0); -extern void (*D_8018F568[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018F534; -extern void func_80158038(void * param); -extern u8 D_800D524C[]; -extern void func_80161418(void *a0); -extern void func_801580B4(s32 a0); -extern void func_801581AC(s32 a0); -extern void (*D_8018F574[])(void); -extern void func_8015824C(void *a0); -extern void func_801582C0(void *); -extern void func_80158288(void *a0); -extern u8 D_800D52A8[]; -extern void func_801585A4(s32 *a0); -extern void func_801582C0(void *a0); -extern s32 func_801585AC(s32 *a0); -extern u8 D_800D52E8[]; -extern void func_80158344(s32 *a0); -extern s32 func_801615C4(void *a0, s32 a1); -extern u8 D_8018F544; -extern u8 D_800D533C; -extern void func_80158434(s32 param_1); -extern void func_80158548(s32 param_1); -extern void func_801585EC(u8 *a0); -extern void func_80158794(void); -extern s32 D_801E5BE8; -extern s32 D_801E5BF4; -extern s32 D_801E5BF8; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018F5B0[])(s32 *); -/* ==== end §8b carried decl layer ==== */ - - -extern int D_801E5BE8; -extern int D_801E5BF4; -extern int D_801E5BF8; - -extern int func_800D0CA0(int); -extern int func_8001AAA0(int); -extern int SsGetMute(void); -extern s32 func_80159464(void); - -void func_801588CC(int param_1) { - - extern void (*D_8018F5B4[])(void); - extern int D_801E5BEC; - extern int D_801E5BF0; - short sVar1; - - D_8018F5B4[*(unsigned short *)(param_1 + 2)](); - switch (D_801E5BE8) { - case 0: - break; - case 1: - func_800D0CA0(2); - D_801E5BF0 = 0; - D_801E5BEC = 0x46; - D_801E5BE8 += 1; - break; - case 2: - if (D_801E5BEC == 0) { - if (SsGetMute() == 0) { - D_801E5BE8 += 1; - } - } else { - D_801E5BEC -= 1; - } - break; - case 3: - if (func_8001AAA0(0x83) != 0) { - D_801E5BE8 += 1; - } - break; - case 4: - D_801E5BF4 = 0; - sVar1 = ((int (*)(int))func_80159464)(param_1); - if (sVar1 != 0) { - D_801E5BEC = 0xd2; - } else { - D_801E5BEC = 1; - } - break; - case 5: - D_801E5BEC -= 1; - if (D_801E5BEC == -1 || D_801E5BF8 != 0) { - D_801E5BEC = 0; - D_801E5BE8 += 1; - } - break; - case 6: - func_800D0CA0(1); - D_801E5BEC = 0x28; - D_801E5BE8 += 1; - break; - case 7: - if (D_801E5BEC == 0) { - if (SsGetMute() == 0) { - D_801E5BE8 += 1; - } - } else { - D_801E5BEC -= 1; - } - break; - case 8: - D_801E5BF0 = 1; - break; - } -} - - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801E5BE8; - -void func_80158BB0(void *arg0) { - if (D_801E5BE8 == 0) { - D_801E5BE8 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801E5BF4; -extern s32 D_8018F584[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801E5BF4; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018F584[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801E5BF8; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801E5BF8 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801E5BE8; -extern s32 D_801E5BF0; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801E5BE8 == 4) { - D_801E5BE8 = 5; - } - if (D_801E5BF0 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_8018F5EC[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_8018F5EC; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -extern u8 D_80078E78[]; - - -extern void func_80175454(void); -extern s32 func_80029178(s32); -extern s32 func_800291B4(s32); -extern void func_80029274(void); -extern void func_80029044(void); -extern void func_8002906C(void); -extern void func_80029094(void); -extern void func_8002941C(void); -extern void func_80029124(s32, s32); -extern void func_800291A0(s32, s32); -extern void func_8014BEC0(void); -extern void func_8002AB64(void); -extern void func_80029514(s32); -extern void func_800D185C(u8 *); -extern void func_800CF804(void); -extern void func_800D1F90(void); - -void func_801594E8(s32 param_1, s32 param_2) -{ - - extern s32 D_80128150; - extern u8 D_800D3A44[]; - extern u8 D_800D39FC[]; - extern u8 D_800D3A20[]; - u8 *p = D_80078E78; - - func_80175454(); - switch (param_2) { - case -1: { - struct { u8 a, b, c; u8 pad[5]; u8 d, e; } t; - s32 saved; - t.a = func_80029178(0xB); - t.b = func_80029178(0xC); - t.c = func_80029178(0xD); - t.d = func_800291B4(0x2C); - t.e = func_800291B4(0x2D); - saved = *(s32 *)(p + 0x4); - func_80029274(); - func_80029044(); - func_8002906C(); - func_80029094(); - func_8002941C(); - func_80029124(0xB, t.a); - func_80029124(0xC, t.b); - func_80029124(0xD, t.c); - func_800291A0(0x2C, t.d); - func_800291A0(0x2D, t.e); - *(s32 *)(p + 0x4) = saved; - ((void (*)(s32))func_8014BEC0)(param_1); - func_8002AB64(); - func_80029514(2); - func_800D185C(D_800D3A44); - func_800CF804(); - break; - } - case 1: - *(s16 *)(p + 0x3C) = 0x96; - *(s16 *)(p + 0x40) = 0x96; - *(s32 *)(p + 0x14) = D_80128150; - break; - case 2: - case 3: - case 4: - func_800D1F90(); - break; - case 5: - func_800D1F90(); - func_800D185C(D_800D39FC); - func_80029514(0x636); - break; - case 6: - func_800D1F90(); - func_800D185C(D_800D3A20); - func_80029514(0x636); - break; - } -} - - - -extern void (*D_8018F800[])(void); - -void func_80159698(void *a0) { - D_8018F800[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_8018F620)); - func_80028620(1, &(*(u8 *)&D_8018F620) + 0x10); - func_80028620(2, &(*(u8 *)&D_8018F620) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_8018F8A4[])(void); - -void func_80159968(void *a0) { - D_8018F8A4[*(u8 *)((s32)a0 + 0x4D)](); -} - - - - -void func_801599A4(void *a0) { - - extern void (*D_8018F8B0[])(void); - D_8018F8B0[*(u16 *)((s32)a0 + 0x0)](); -} - - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - - -// @class: struct -// Redraft of the DECAYED backlog draft. The stored seed took `void *param_1` and then -// dereferenced it (`param_1[0xdd]`) — gcc-2.7.2 rejects that ("void value not ignored -// as it ought to be"), so the seed no longer compiles at all. Fix: retype the parameter -// as `unsigned char *`, which keeps every pointer offset byte-scaled (as void* arith did) -// while making the byte load legal. -// Structure preserved from the seed: the two return-tests are kept STRUCTURALLY -// DIFFERENT (positive `if(==) goto mask;` per branch, not `if(!=) return;`) so gcc's -// cross-jump pass cannot tail-merge them; and the outer test is inverted (`if(d != 1)`) -// so the ==4/return path is the inline fall-through and the d==1 / p[2] path becomes the -// forward beq-target block — matching the target block order. -// Typedefs are BLOCK-SCOPE so the match travels to the sibling overlays. - -extern void (*D_8018F954[])(unsigned char *); - -extern void func_80150B28(int param_1); -extern void func_80158638(unsigned char *); -extern void func_8015126C(unsigned short *); -extern void func_8014900C(int *a0); - -void func_80159A20(unsigned char *param_1) -{ - typedef unsigned short u16; - typedef unsigned int u32; - typedef int s32; - typedef unsigned char u8; - - ((s32 (*)(void))func_80150B28)(); - func_80158638(param_1); - ((void (*)(u8 *))func_8015126C)(param_1); - ((void (*)(u8 *))func_8014900C)(param_1); - D_8018F954[*(u16 *)param_1 & 0x7fff](param_1); - *(u32 *)(param_1 + 0x44) |= 0x8000000; - switch (*(u16 *)param_1) { - case 2: - case 3: - case 0xb: - case 0xc: - goto mask; - default: - return; - case 0x19: - if (param_1[0xdd] != 1) { - if (param_1[0xdd] == 4) { - goto mask; - } - return; - } - if (*(u16 *)(param_1 + 2) == 3) { - goto mask; - } - return; - } -mask: - *(u32 *)(param_1 + 0x44) &= 0xf7ffffff; -} - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_8018F9F8[])(void); - -void func_80159B70(void *a0) { - D_8018F9F8[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_8018F814; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018F814); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - - diff --git a/src/ov_SC04_019/ov_SC04_019_jr_80159C84.c b/src/ov_SC04_019/ov_SC04_019_jr_80159C84.c deleted file mode 100644 index 50ad4f4a7..000000000 --- a/src/ov_SC04_019/ov_SC04_019_jr_80159C84.c +++ /dev/null @@ -1,1440 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -extern void func_801458E0(void); -extern s32 D_800AE6AC; -extern s32 D_800AE6B0; -extern s16 D_800B9A0A; -extern u8 D_80078E50; -extern void func_800D185C(u8 *a0); -extern void func_801458E8(void); -extern s32 func_80029504(void); -extern void func_80145B24(void); -extern u8 D_8018F74C; -extern u8 D_8018F6BC; -extern u8 D_8018F698; -extern u8 D_8018F674; -extern u8 D_8018F728; -extern u8 D_8018F704; -extern u8 D_8018F6E0; -extern u8 D_8018F650; -extern void func_80145934(void); -extern u8 D_8018F7DC; -extern u8 D_8018F7B8; -extern u8 D_8018F794; -extern u8 D_8018F770; -extern void func_80145A2C(void); -extern s32 func_800291DC(s32); -extern void func_800291C8(s32, s32); -extern void func_80162120(void); -extern void func_80029124(s32, s32); -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); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_80145BF8(void); -extern s32 func_800291B4(s32 arg); -extern void func_800291A0(s32, s32); -extern void func_80145C54(void); -extern s32 func_80145CEC(); -extern s32 func_80029178(s32 arg); -extern void func_80146014(s32 a0); -extern unsigned char D_8018EBD4[]; -extern unsigned char D_8018EC04[]; -extern unsigned char D_8018EC54[]; -extern unsigned char D_8018EC84[]; -extern unsigned char D_8018ECB4[]; -extern void func_80145EE8(s32 param_1); -extern void MoveImage(void *a0, s32 a1, s32 a2); -extern void func_80146074(void); -extern s32 func_80146128(void); -extern void func_80146360(void); -extern void func_801463A0(); -extern void func_8014607C(void); -extern s32 *D_80126B78; -extern u8 D_80078EC1; -extern s32 D_80078EC8; -extern s32 D_80126B9C; -extern s32 D_8011F730; -extern u16 D_801152B8; -extern u16 D_8012693A; -extern u8 D_80126BE0[]; -extern u8 D_801150F0[]; -extern void *memcpy(void *dst, const void *src, u32 n); -extern void func_80146FC4(s32 a0); -extern void func_80150A70(s32 a0); -extern void func_80147098(s32 *a0); -extern void func_8014A638(s32 arg0); -extern s32 func_80155458(s32 a0); -extern s32 func_80029104(void); -extern void func_80029344(void); -extern void func_8014ADE0(s32 a0); -extern void func_8014B350(s32 a0); -extern void func_8014B7A4(s16 *param_1); -extern s32 func_80161D58(s32 a0); -extern void func_80161A90(s32 a0); -extern void func_8014B504(u16 *a0); -extern void func_80149BEC(s32 a0); -extern void func_8014B5D0(s32 *a0); -extern void func_8014C99C(u8 *a0); -extern void func_8014B190(s32 s0); -extern void func_80148648(s32 a0, s32 a1); -extern s32 func_80149228(s32 a0); -extern void func_8014A59C(s32 a0); -extern void func_8016F14C(void *a0); -extern void func_80154418(void *a0); -extern void func_80154BE4(s32 a0); -extern void func_80165694(s32 arg0); -extern void func_801654A8(s32 a0); -extern void func_8014A680(s32 a0); -extern void func_8014A6A8(s32 a0); -extern void func_8014A71C(s32 a0); -extern void func_80172588(s32 *a0); -extern void func_801473DC(s32 *a0); -extern void func_80015978(s32 a0, s32 *a1); -extern void (*D_8018ED04[])(void *); -extern u8 D_80126BA4; -extern s32 D_80127098; -extern s32 D_80127094; -extern s32 D_80127090; -extern void func_80146534(void); -extern void func_8001D074(s32 a0, s32 a1); -extern void func_80146554(void); -extern void func_80146578(void); -extern void func_8001CFDC(s32, s32); -extern void func_8014659C(void); -extern void func_8001D074(s32, s32); -extern void func_801465C0(void); -extern void func_801465E4(void); -extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); -extern s32 D_8011F9D0; -extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); -extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 D_8011F750; -extern s32 D_8011F754; -extern u8 * func_801468C8(s32 arg0, u8 arg1); -extern s32 D_8011D030; -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); -extern s32 func_80146B9C(void *a0); -extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); -extern u16 D_8011DA28; -extern s32 func_80146B9C(void * arg0); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80146CA0(void *a0); -extern void func_80146CB4(void *a0); -extern void func_80146CC8(s32 a0); -extern void func_80146D30(s32 a0); -extern void func_80146D80(s32 *a0); -extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80146D90(s32 a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); -extern void func_80146E90(s32 *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80015954(s32 a0, s32 a1); -extern void func_80149374(s32 a0, s32 a1); -extern void func_80146F58(s32 a0, s32 a1); -extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 func_8012A68C(void); -extern s16 func_8012A758(void); -extern void func_8004978C(s16 *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern u8 D_80126DB0[]; -extern u16 D_80126DB6; -extern void func_8014704C(s32 *a0); -extern s32 func_80147054(void *a0); -extern void func_80147060(u8 * a0); -extern void func_8014706C(void *arg0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80147084(s32 *a0); -extern void func_8014708C(void *arg0); -extern s32 func_801470A0(void *a0); -extern void func_801470AC(s32 *a0); -extern void func_801470B4(s32 arg0); -extern void func_801470C0(s32 a0); -extern void func_80147118(s32 a0); -extern s16 D_80126BB8; -extern s16 D_80126BBA; -extern s16 D_80126BBC; -extern void func_80147264(s32 a0); -extern void func_80147290(void); -extern void func_801472B4(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void *D_8012707C; -extern void func_801472DC(void); -extern void func_801472F0(void *a0); -extern void func_80147364(u16, s32); -extern void func_80147300(u16 arg0); -extern void func_80147324(s32 arg0); -extern void func_801473EC(s32 *a0); -extern void func_80147460(s32 a0); -extern void func_80147514(); -extern void func_80147628(s32 a0); -extern void func_80147478(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); -extern s32 func_800129CC(s32 a0, s32 a1); -extern void func_80147514(s32 arg0); -extern void func_80013F3C(s32 a0); -extern void func_80012558(s32 a0, s32 a1); -extern void func_800126C4(s32 a0, s32 a1); -extern void func_800123F0(s32 a0, s32 a1); -extern void func_80147718(s32 a0); -extern void func_80147788(void *a0, s32 a1); -extern void func_801477A8(void *a0, s32 a1); -extern void func_801477C8(void *a0, s32 a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80147814(s32 a0, s32 a1); -extern void func_80147928(int a0, int a1); -extern void func_8014799C(int a0, int a1); -extern void func_80147A10(int a0, int a1); -extern void func_80147860(int a0, int a1, int a2, int a3); -extern void func_80147948(s32 a0, s32 a1, s32 a2); -extern void func_801479BC(s32 a0, s32 a1, s32 a2); -extern void func_80147A30(s32 a0, s32 a1, s32 a2); -extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147948(int a0, int a1, int a2); -extern void func_801479BC(int a0, int a1, int a2); -extern void func_80147A30(int a0, int a1, int a2); -extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147A84(s32 arg0); -extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147AAC(s32 arg0); -extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80147B5C(s32 a0, void *a1); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern void func_80147B18(s32 a0); -extern void func_80147B5C(s32 arg0, void *arg1); -extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147DC0(s32 a0, s32 a1); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147F50(s32 arg0); -extern void func_80148038(s32 a0, s32 a1); -extern s32 ratan2(s32 a0, s32 a1); -extern s32 csqrt(s32 a0); -extern s32 func_80012A60(s32 a0, s32 a1); -extern void func_80148094(int param_1, short *param_2, int *param_3); -extern void func_801485B8(s32 a0, s32 a1, s32 a2); -extern void func_801484B0(s32 a0, s32 a1); -extern s32 func_80154358(void *a0); -extern void func_801484E8(s32 a0, s32 a1); -extern void func_80148534(s32 a0, s32 a1); -extern void func_8014856C(s32 a0, s32 a1); -extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); -extern void func_80148634(void *a0); -extern u8 D_800B9A64; -extern s32 func_80014DC0(); -extern s32 func_80014D68(); -extern s32 func_80014D94(); -extern s32 func_80014CF8(); -extern void func_800120DC(); -extern s32 func_800CF8B4(); -extern u16 func_801487F4(s32 *a0); -extern u16 func_80148800(s32 *a0); -extern u8 func_8014880C(s32 *a0); -extern u16 func_80148818(s32 *a0); -extern s32 func_80047D3C(s32 a0); -extern s32 func_80148824(void *arg0); -extern s32 func_801488A8(u8 *a0); -extern s32 func_8014891C(s32 a0); -extern s32 func_80148980(u8 *a0); -extern s32 func_801489E8(s32 a0); -extern s32 func_80148A48(s32 a0); -extern int func_80148AFC(void *a0); -extern void func_80148AAC(u8 *a0); -extern s32 func_80148C18(void); -extern s32 func_80148C20(s32 a0, s16 a1); -extern s32 func_80148C34(s32 a0, s32 a1); -extern s32 func_80148C4C(s32 a0, s32 a1); -extern s32 func_80148C64(s32 a0, s32 a1); -extern s32 func_80148C7C(void); -extern s32 func_80148C84(s32 a0, s32 a1); -extern s32 func_80148C9C(s32 a0, s32 a1); -extern s32 func_80148CB4(s32 a0, s32 a1); -extern s32 func_80148CCC(s32 a0, s32 a1); -extern s32 func_80148CE4(void); -extern s32 func_80148CEC(void); -extern s32 func_80148CF4(s32 a0, s32 a1); -extern s32 func_80148D0C(s32 a0, s32 a1); -extern s32 func_80148D24(void *a0, int a1); -extern s32 func_80148D3C(void); -extern s32 func_80148F60(void); -extern s32 func_80148F68(s32 a0); -extern s32 func_80148F74(s32 a0); -extern s32 func_80148F80(s32 a0); -extern s32 func_80148F8C(s32 a0); -extern s32 func_80148F98(void); -extern s32 func_80148FA0(s32 a0); -extern s32 func_80148FAC(s32 a0); -extern s32 func_80148FB8(s32 a0); -extern s32 func_80148FC4(s32 a0); -extern s32 func_80148FD0(void); -extern s32 func_80148FD8(void); -extern s32 func_80148FE0(s32 a0); -extern s32 func_80148FEC(s32 a0); -extern s32 func_80148FF8(s32 a0); -extern s32 func_80149004(void); -extern void func_8014900C(s32 *a0); -extern void func_80149020(s32 *a0); -extern void func_80149034(s32 *a0); -extern void func_80149048(s32 *a0); -extern void func_8014905C(u8 *a0); -extern void func_801490E0(s32 *a0, s16 a1); -extern void func_801490E8(s32 *a0, s16 a1); -extern void func_801490F0(s32 *a0, s16 a1); -extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); -extern void func_801490F8(s32 a0, s32 a1); -extern s32 func_801491C4(s32 a0); -extern s32 func_80149184(s32 a0); -extern s32 D_801151D4; -extern void func_80149204(s32 *a0); -extern void func_80149210(s32 a0, s32 a1); -extern s32 func_80149284(s32 *a0, s32 a1); -extern void func_80149350(s32 arg0); -extern void func_80149290(s32 a0); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_80149374(s32 arg0, s32 arg1); -extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8014942C(s32 arg0); -extern void func_8012EF70(s32 a0, s32 a1); -extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012EFB8(s32 a0); -extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); -extern void func_8014964C(s32 param_1, s32 param_2); -extern s32 func_801496D4(void *a0); -extern void func_8015AD08(); -extern void func_80149704(void); -extern void func_8015ACC4(); -extern void func_80149724(void); -extern u8 D_80078EBF; -extern s32 func_80149744(struct S_80149744 *a0); -extern void func_8015F7A0(); -extern void func_80149788(void); -extern void func_801653B8(); -extern void func_80149864(void); -extern s16 currentLocationId; -extern s32 func_8016F1AC(void); -extern s32 func_80149884(void); -extern void func_80160B00(); -extern void func_801498C0(void); -extern s32 func_80149AA8(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern void func_80146750(void *a0); -extern s32 func_801498E0(s32 *a0); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_80147364(u16 a0, s32 a1); -extern s32 func_800CCF28(s32 a0); -extern u8 D_80126B5C; -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_8015DAC4(s32 *a0); -extern void func_8015554C(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern void func_80149B14(s32 *a0); -extern u8 func_8014BEF8(void); -extern s32 func_80149B54(s32 * arg0); -extern void func_8015DE24(s32 *a0); -extern void func_80157510(s32 *a0); -extern void func_80149BAC(s32 *a0); -extern s32 func_80029178(s32 a0); -extern s32 func_80149C08(s32 arg0); -extern void func_801577C8(); -extern void func_80149C94(void); -extern void func_80157D20(void); -extern void func_80149CB4(void); -extern s32 func_80149CD4(s32 a0); -extern u8 func_8014B5B8(s32 *a0); -extern s32 func_80149D10(s32 a0); -extern s32 func_80149E94(s32 a0); -extern s32 func_80149DD8(s32 a0); -extern s32 func_80149D9C(s32 a0); -extern u8 D_801202A0[]; -extern s32 func_80149F2C(s32 a0, s32 a1); -extern s32 func_80149E94(s32 arg0); -extern void func_80149FA8(void); -extern s32 D_8018EDCC[]; -extern u8 D_80078E78[]; -extern s32 func_80149FB0(s32 a0); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern void func_8014A1B0(s32 a0, s32 a1); -extern s32 func_8014A048(s32 param_1); -extern u16 func_80156370(u16 a0); -extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); -extern void func_8015D4B4(); -extern void func_8014A218(void); -extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); -extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); -extern s32 func_8014A238(s32 arg0); -extern s32 func_8014A2E4(s32 a0); -extern void func_8014A380(s32 a0, s32 a1); -extern s16 D_801152B0; -extern s16 D_801152B4; -extern s32 func_8014A3E0(struct S_8014A3E0 *a0); -extern s32 func_8014A454(s32 a0); -extern s32 func_8014A4B4(void *a0); -extern void func_8015EDD4(); -extern void func_8014A4FC(void); -extern s32 func_8014A674(s32 *a0); -extern s32 func_8014A69C(s32 *a0); -extern s32 func_8014A6C4(s32 a0); -extern void func_8015E184(); -extern void func_8014A830(void); -extern s32 func_80029AF4(void); -extern s32 func_8014A850(s32 param_1); -extern void func_8014AA04(s32 a0); -extern void func_801599A4(void *a0); -extern void func_80159B3C(void *a0); -extern s32 func_80165A20(s32 a0); -extern void func_8014AB7C(); -extern void func_8014AC10(); -extern void func_8014AA28(void); -extern void func_8014AB5C(void); -extern void func_80162CCC(void); -extern void func_8014AB7C(s32 arg0); -extern void func_8014ABF0(void); -extern void func_80016714(void *a0, s32 a1); -extern void func_8014AC10(s32 arg0); -extern void func_8014ACC0(s32 a0, s32 a1); -extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); -extern void func_8014ACE8(void *a0, s32 a1, s32 a2); -extern void func_80146AFC(void *a0); -extern void func_8014ADA8(s32 a0, s32 a1); -extern void func_8014AD7C(s32 a0); -extern s32 D_80078E8C; -extern void func_8014B034(s32 arg0); -extern void func_8014B00C(s32 arg0); -extern void func_8014B084(void); -extern s16 D_80078E90; -extern void func_8014B034(s32 a0); -extern u16 D_80078EAC; -extern u8 D_80078EBA; -extern void func_800D10EC(void); -extern void func_8002AC98(void); -extern s32 func_8014B154(s32 *a0); -extern void func_8014B12C(void); -extern void func_8014B2F8(void); -extern void func_8014B4C4(void); -extern void func_8014B160(s32 a0); -extern s32 func_8016F1C4(void); -extern s16 D_80078E96; -extern s16 D_80078EB8; -extern u16 D_80078EA6; -extern void func_8014B2A8(void); -extern void func_8014B310(void); -extern void func_8014B2D0(void); -extern s32 D_80078E94; -extern s32 D_80078ECC; -extern void func_8014B33C(void); -extern u8 D_80062BF4[]; -extern void func_8014BC80(s32 a0, s32 a1); -extern void func_80019064(void *a0); -extern s32 D_80078E98; -extern void func_80166244(); -extern void func_8014B4D4(void *a0); -extern s16 D_80078E9A; -extern u8 D_80126D1C; -extern s32 D_80126D74; -extern void func_8014B598(s32 a0, s32 a1); -extern void func_8014B5B0(s32 *a0); -extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); -extern void func_8014B5D8(s32 s1); -extern s32 D_80078E9C; -extern s32 D_80078ED0; -extern void func_8014B6F0(s32 a0, s32 a1); -extern void func_8014B768(s32 a0, s32 a1); -extern void func_8014B944(s32 a0, s32 a1, s32 a2); -extern s32 D_80078EA4; -extern u16 D_80078EB2; -extern s16 D_80078EB4; -extern void func_8014BB0C(void); -extern void func_8014BB24(s32 a0, s32 a1, s32 a2); -extern void func_8014BC0C(s32 a0, s32 a1); -extern void func_8014BC44(s32 a0, s32 a1); -extern u8 D_800B9A17; -extern void func_8014BCC0(s32 a0, s32 a1); -extern u16 D_80078EB6; -extern s32 func_8014BCEC(s32 a0, s32 a1); -extern void func_8014BD24(s32 a0, s32 a1); -extern void func_8014BD60(s32 param_1, s32 param_2); -extern void func_8014BD98(s32 a0, u16 a1); -extern void func_8014BDC8(void); -extern void func_8014BDE0(void); -extern s32 func_8017267C(s32 *a0); -extern s32 func_80013294(void *a0, void *a1); -extern void func_80029ED4(s32 a0); -extern void func_8014BDE8(s32 a0); -extern void func_8014BE78(void); -extern void func_8014BE9C(void); -extern void func_80029124(s32 a0, s32 a1); -extern void func_8014BEC0(void); -extern void func_8014BF18(s32 a0); -extern void func_8014BF48(void); -extern u8 func_8014BF6C(void); -extern void func_8014BF8C(u8 arg0); -extern void func_8014BFB0(void); -extern u8 func_8014BFD4(void); -extern void func_8014BFF4(s32 a0, s32 a1); -extern void func_8014C010(s32 a0, s32 a1); -extern s32 func_8014C050(s32 a0, s32 a1); -extern s32 func_8014C088(s32 a0, s32 a1); -extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); -extern s32 func_8014C118(void * a0, s32 a1, s32 a2); -extern s32 func_8014C168(s32 * param_1, s32 param_2); -extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); -extern u8 D_8018EE54[]; -extern void func_8014C1A0(s32 arg0, s32 arg1); -extern s32 func_80013328(s32 a0, s32 a1); -extern s32 func_8014C59C(void *a0, void *a1); -extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); -extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); -extern s32 ratan2(s32 dx, s32 dy); -extern u8 D_8018EE5C; -extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); -extern s16 func_8014C5D0(s32 a0, s32 a1); -extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); -extern u8 D_80126D17; -extern void func_8014C6AC(void); -extern void func_8014C6C0(void); -extern u8 D_80126D1E; -extern void func_8014C6D0(void); -extern void func_8014C6E0(void); -extern s32 func_8014C860(s32 a0, s32 a1); -extern void func_8014C8C8(s32 a0, s32 *a1); -extern void func_8014C88C(s32 a0); -extern void func_8014C8C8(s32 dst, s32 * src); -extern void func_8014C8F0(s32 arg0); -extern u8 D_801151F0[]; -extern s32 func_8014C918(s32 a0, s32 a1); -extern s32 D_80126B50; -extern void func_8014C968(void); -extern void func_8014C978(void); -extern s32 func_8014C98C(void); -extern void func_80139914(s32 a0); -extern s32 func_8014CA00(s32 a0); -extern u16 func_8014CA70(s32 a0, s32 a1); -extern s32 func_8014CA14(s32 a0, s32 a1); -extern u16 func_8014CAE4(s32 *a0, s32 a1); -extern s32 func_8014CA88(s32 *a0, s32 a1); -extern s32 func_8014CAFC(void); -extern s32 func_8014CB0C(void); -extern s32 func_8014CB1C(void); -extern u8 D_80126D1F; -extern s32 func_8014CB2C(void); -extern s32 func_8014CB58(void); -extern u8 D_80126D1D; -extern void func_8014CB68(void); -extern s32 func_8014CB7C(void); -extern s32 func_8014CB8C(void); -extern struct Packed8 D_80126C98; -extern short D_80126C9E; -extern void func_8014CB9C(struct Packed8 *a0); -extern s32 D_80126CDC; -extern void func_8014CBD8(void); -extern s16 D_80126CC4; -extern void func_8014CBE8(void); -extern void func_8014CBF8(void *a0); -extern void func_8014D3E0(s32 a0); -extern void func_8014D04C(void); -extern void func_8014CCB4(void); -extern void func_8014CC28(s32 a0); -extern void func_8014CD0C(u8 *a0); -extern s32 func_8014CF04(s32 a0, s32 a1, void *a2); -extern void func_8014CD80(s32 a0, void *a1, void *a2); -extern void func_8014D0A4(s32 a0); -extern s32 func_8014D2A0(s32 a0, void *a1, void *a2); -extern s32 func_8014D12C(s32 a0, void *a1, void *a2); -extern void func_8014D438(s32 a0); -extern void func_8014D3E0(s32 _arg0); -extern void func_8014D610(s32 a0, void *a1, void *a2); -extern s32 func_8014D4C0(s32 a0, void *a1, void *a2); -extern void func_8014D790(s32 a0); -extern void func_8014D738(void); -extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); -extern s32 func_8014D820(s32 a0, u16 *a1, u16 *a2); -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); -extern void func_8014DF94(s32 arg0); -extern void func_8014DF3C(void); -extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ -extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ -extern s16 D_801152AC; -extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); -extern void func_8014E48C(s32 a0); -extern void func_8014E434(void); -extern void func_8014E5B4(s32 a0, void *a1, void *a2); -extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); -extern void func_8014E6F8(struct SubE6F8 *a0); -extern void func_8014E6A0(void); -extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); -extern void func_8014E934(s32 _arg0); -extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); -extern s32 func_8014E98C(void *a0); -extern u16 D_800B99DA; -extern s32 D_801150D8; -extern s16 D_801152AA; -extern u8 D_80126720[]; -extern s16 D_80126724; -extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); -extern s32 func_8014ED80(struct SubED80 *a0); -extern int D_801E5BA8; -extern void func_8014ED28(s32 _arg0); -extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F24C(struct SubF24C *a0); -extern void func_8014F1F4(void); -extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F4C0(); -extern s32 func_8014F468(void); -extern int func_8014F74C(); -extern int func_8014F6F4(void); -extern u8 D_800D3918[]; -extern u8 D_801152A8[]; -extern s32 D_801152BC; -extern int func_8014F74C(s32 arg0); -extern s32 func_8014FA70(s32 a0); -extern s32 D_801E5BAC; -extern void func_8014FA04(s32 a0); -extern s32 func_8014FBC0(); -extern s32 func_8014FC18(u8 *self); -extern int func_8014FD54(int param_1); -extern void func_8014FCFC(void); -extern void func_80150170(void *a0); -extern s32 func_8014FE60(void *a0); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_8014FE60(void *e); -extern s32 func_80134510(s32 arg); -extern s32 func_80150150(s32 a, s32 b); -extern s32 func_80150460(s32 a, s32 b); -extern void func_801504D8(u16 *a0); -extern s32 func_80150480(s32 _arg0); -extern s32 func_80150528(void *a0, void *a1, void *a2); -extern s32 func_80150528(void *arg0, void *arg1, void *arg2); -extern s32 func_801506A4(s32 a0, s32 a1); -extern s32 func_801505FC(s32 a0); -extern s32 func_801506A4(s32 arg0, s32 arg1); -extern void func_80150820(s32 a0, s32 a1); -extern void func_8015086C(int param_1); -extern s32 func_801508B4(s32 a0); -extern s32 func_8015094C(s32 a0); -extern short func_801508F8(s32 a0); -extern s32 D_8018EE8C; -extern s32 D_80126990; -extern s32 D_80126994; -extern u8 D_80126948[]; -extern s32 func_80021174(s32 a0, s32 a1); -extern s32 func_8015094C(s32 param_1); -extern void func_80150B9C(void); -extern s32 func_80151184(s32 a0, s32 a1, s32 a2); -extern s32 func_80150BA4(s32 a0); -extern s32 func_801619D0(void *a0); -extern void func_80150BC8(s32 *a0); -extern s32 func_80150480(s32 a0); -extern u16 D_800AE6DC; -extern void func_80150C48(s32 a0); -extern int func_80151184(int arg, int a1, int a2); -extern int func_80150CA0(int arg); -extern void func_80150EC4(s32 a, s32 b); -extern void func_80150CC4(s32 a); -extern void func_80150CE4(s32 a); -extern void func_80150D04(s32 a); -extern void func_80150D24(s32 a); -extern void func_80150D44(s32 a); -extern void func_80150D64(s32 a); -extern void func_80150D84(s32 a); -extern void func_80150DA4(s32 a); -extern void func_80150DC4(s32 a); -extern void func_80150DE4(s32 a); -extern void func_80150E04(s32 a); -extern void func_80150E24(s32 a); -extern void func_80150E44(s32 a); -extern void func_80150EC4(s32 a0, s32 a1); -extern void func_80150E64(s32 a0); -extern void func_80150E84(s32 a0); -extern void func_80150EA4(s32 a0); -extern u8 D_800AE6C0; -extern s16 D_800AE6C8; -extern s16 D_800AE6CA; -extern s16 D_800AE6CC; -extern s32 D_800AE6C4; -extern s16 D_800AE6CE; -extern u8 D_800AE6BE; -extern u8 D_801201F8[]; -extern void func_80150F78(void); -extern void func_80150F80(s32 a0); -extern int func_80150FB4(int arg); -extern void func_80150FD8(s32 a0); -extern int func_80151014(int arg); -extern void func_80151038(s32 a0); -extern int func_80151070(int arg); -extern int func_80151094(int arg); -extern void func_801510B8(void); -extern void func_801510C0(void); -extern int func_801510C8(int arg); -extern int func_801510EC(int arg); -extern s32 func_8012DB84(void); -extern s32 func_80151110(void); -extern void func_80151130(void); -extern int func_80151138(int arg); -extern void func_8015115C(s32 *a0, s16 a1); -extern s32 func_80151164(s32 a0, s32 a1); -extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); -extern void func_801511A8(u8 *a0); -extern void func_801511C4(u8 *a0); -extern int func_80151204(int arg, int a1); -extern int func_801511E0(int arg); -extern int func_80151204(int a0, int a1); -extern void func_80151238(void *a0); -extern void func_8015126C(u16 *p); -extern void func_80151780(s32 a0); -extern void func_801516F0(s32 *a0); -extern void func_8015173C(s32 *a0); -extern s16 D_8011DB1A; -extern s32 D_80127518; -extern s32 D_801151FC; -extern s32 func_801725CC(u8 *a0); -extern s32 func_80029D3C(void); -extern void func_80151878(void); -extern void func_80153B58(s32 *a0); -extern s32 func_80151880(s32 a0); -extern s32 func_801518D8(s32 a0); -extern s32 func_80151944(void); -extern s32 func_80151924(void); -extern void func_8014E934(s32 a0); -extern s32 func_8014F3E8(s32 a0); -extern void func_801519C8(s32 a0); -extern void func_80151980(s32 a0); -extern M2C_UNK D_800D5880; -extern s32 D_800D58AC; -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801519C8(s32 arg0); -extern void func_80151C54(s32 a0); -extern void func_801542DC(s32 *a0, s32 a1); -extern void func_8015BDD0(s32 *a0); -extern void func_80165718(s32 a0); -extern u8 D_800D46E4[]; -extern void func_80151AE4(s32 arg0); -extern void (*D_8018EF34[])(void); -extern void func_80151D24(void *a0); -extern void func_80151DB0(s32 a0); -extern void func_80151D60(void *a0); -extern s32 func_80172630(u8 *a0); -extern s32 D_80062C14; -extern void func_80151DB0(s32 param_1); -extern void func_80151E78(s32 *a0); -extern void func_80151ECC(struct S80151ECC *a0); -extern void func_80151FB4(s32 a0); -extern void func_80151F38(s32 *a0); -extern void func_801553C0(s32 a0); -extern void func_80153C18(); -extern void (*D_8018EF58[])(void); -extern void func_80152058(void *a0); -extern void func_801520DC(s32 a0); -extern void func_80152094(s32 a0); -extern void func_80147324(s32 a0); -extern u8 D_80062C04[]; -extern M2C_UNK D_8018EF48; -extern void func_801520DC(s32 arg0); -extern void func_801470B4(s32 a0); -extern void func_8015369C(s32 a0); -extern void func_80152194(s32 *a0); -extern s32 func_801536DC(s32 a0); -extern void func_8015220C(s32 a0); -extern s32 func_80153800(s32 a0); -extern void func_801522CC(s32 a0); -extern void func_80152254(s32 *a0); -extern void (*D_8018EF6C[])(void); -extern void func_80152370(void *a0); -extern void func_801523F4(s32 a0); -extern void func_801523AC(s32 a0); -extern void func_8001382C(s32 a0, void *a1, void *a2); -extern u8 D_8018EF78[]; -extern void func_801523F4(s32 arg0); -extern void func_801525F4(int); -extern s32 func_801535F4(void *arg0); -extern void func_8015BF48(s32 *a0); -extern void func_80152500(int param_1); -extern void func_801525F4(s32 a0); -extern void (*D_8018EF88[])(void); -extern void func_80152698(void *a0); -extern void func_80152714(s32 a0); -extern void func_801526D4(s32 a0); -extern void func_80152790(s32 a0); -extern void (*D_8018EFA0[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018EF90; -extern void func_801528B0(s32 arg0); -extern void func_8015294C(s32 a0); -extern void func_80152A08(s32 a0); -extern void func_80152AC8(s32 a0); -extern void func_80152A50(s32 *a0); -extern void (*D_8018EFB4[])(void); -extern void func_80152B6C(void *a0); -extern void func_80152BF0(s32 a0); -extern void func_80152BA8(s32 a0); -extern void func_80152C80(s32 *a0); -extern void func_80152C40(s32 *a0); -extern void (*D_8018EFD0[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018EFC0; -extern void func_80152DA8(s32 arg0); -extern void func_80152E4C(s32 a0); -extern void func_80152EFC(s32 a0); -extern void func_80152FBC(s32 a0); -extern void func_80152F44(s32 *a0); -extern void (*D_8018EFE4[])(void); -extern void func_80153060(void *a0); -extern void func_801530E4(s32 a0); -extern void func_8015309C(s32 a0); -extern void func_80155440(s32 *a0); -extern void func_801530E4(s32 arg0); -extern void func_80153150(struct S80153150 *a0); -extern void func_801531BC(s32 a0); -extern void func_8015327C(s32 a0); -extern void func_80153204(s32 *a0); -extern void (*D_8018EFF8[])(void); -extern void func_80153320(void *a0); -extern void func_801533A4(s32 a0); -extern void func_8015335C(s32 a0); -extern void func_80153410(s32 *a0); -extern void func_80153490(s32 a0); -extern void func_80153550(s32 a0); -extern void func_801534D8(s32 *a0); -extern void (*D_8011DB28)(s32 a0); -extern s32 func_801536DC(s32 param_1); -extern void func_800139C8(s32 a0, void *a1, void *a2); -extern s32 func_80153978(s32 a0, u16 *src); -extern s32 func_80133784(s32 a0, void *src, s32 dst); -extern s32 func_801539F8(s32 a0, void *a1); -extern s32 func_801539F8(s32 a0, void * a1); -extern s32 func_8016DA04(s32 a0); -extern s32 func_80153BD8(s32 a0); -extern s32 func_80153BF0(s32 a0); -extern void func_80153C18(void); -extern u16 D_8011F748; -extern void func_80153C30(void); -extern void func_80153C74(s16 a0, s16 a1); -extern s16 D_8011DB18; -extern void func_80153C44(int a0, int a1, s16 a2); -extern s16 D_8011DB0C; -extern s32 D_80115210; -extern void func_80153C8C(void); -extern void func_80153C9C(void); -extern s32 func_80153CBC(void); -extern s32 D_8018F00C; -extern void (*D_8018F034[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018F014; -extern void func_80153D7C(s32 param_1); -extern void func_8015410C(void); -extern void func_80153E00(s32 param_1); -extern void func_80151664(void); -extern void func_80154134(u8 *a0); -extern void func_80154190(u8 *a0, s32 a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154218(u8 *a0, s32 a1, s32 a2); -extern void func_801541D8(u8 *a0, s32 a1, s32 a2); -extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); -extern void func_801542A4(); -extern void func_801542A4(s32 *a0, s32 a1); -extern void func_8015430C(); -extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); -extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); -extern s32 func_80154358(void * arg0); -extern void StoreImage(s32, void *); -extern void func_80154B4C(u8 *a0, s32 a1); -extern s32 func_80155394(s32 *a0); -extern void func_801553A8(s32 *a0); -extern u8 D_80126738; -extern u8 D_80126748; -extern u8 D_80126838; -extern u8 D_80126848; -extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); -extern void func_80154AB4(s32 a0, s32 a1); -extern void func_80154B20(s32 a0, s32 a1, s32 a2); -extern void func_80154AE0(s32 a0, s32 a1, s32 a2); -extern void func_80154B7C(u8 *a0, s32 a1); -extern void func_80154BC8(void *a0, s32 a1, s32 a2); -extern void func_80154B98(void *a0, s32 a1, s32 a2); -extern u8 D_800D8D10[]; -extern s16 D_80078E9E; -extern void func_801550FC(s32 a0); -extern void func_80154ED8(s32 a0, s32 a1); -extern void func_80154F9C(s32 a0); -extern void func_800183E0(s32 a0); -extern ImgRect8 D_8018F040[]; -extern void func_801550FC(s32 arg0); -extern void func_8001D150(s32, s32); -extern void func_8001D130(int, int); -extern void func_80155150(int param_1); -extern s32 D_800DE2A4[]; -extern void func_801552F4(s32 a0); -extern void func_80155344(s32 a0); -extern s32 func_80029178(s32); -extern int (*D_8018F080[])(void); -extern s32 func_80155458(s32 param_1); -extern s32 func_801659DC(u8 *a0); -extern s32 func_801554B8(void *arg0); -extern void func_801555F4(void *a0); -extern void func_80155518(s32 *a0); -extern void func_80155580(void *a0); -extern void (*D_8018F084[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern S801563EC *func_801563EC(u16 idx); -extern s32 func_80029B4C(s32 a0, s32 a1); -extern s32 func_80029BC8(s32 a0, s32 a1); -extern s32 func_80029C44(s32 a0, s32 a1); -extern s32 func_8015640C(s32 a0, s32 a1); -extern s32 rand(void); -extern u32 func_8015616C(s32 param_1, u16 param_2); -extern u16 func_80156370(u16 param_1); -extern S801563EC D_8018F278[]; -extern S801563EC * func_801563EC(u16 idx); -extern s32 func_801564B0(s32 a0); -extern s32 func_8002A1B4(void); -extern s32 func_8002A400(void); -extern s32 func_8002A670(void); -extern s32 func_8002A8E0(void); -extern s32 D_801151E0[]; -extern s32 func_801565C0(void); -extern void func_80156A14(s32 *a0); -extern void func_80156648(s32 *a0); -extern u8 D_8011DAD8[]; -extern s32 func_8014C568(s16 *a0, s16 *a1); -extern void func_801567BC(s32 a0); -extern B8 D_80128120[]; -extern B8 D_80128138[]; -extern S8 D_80126AF0[]; -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018F4E8[]; -extern void func_80156A1C(s32 param_1, s32 param_2); -extern s32 D_801150E0[]; -extern void func_80156A88(s32 a0, s32 a1); -extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); -extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); -extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); -extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern s32 func_80135004(s32 a0, void *a1, s32 a2); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801575E4(void *a0); -extern void func_801574DC(s32 *a0); -extern void func_80157544(void *a0); -extern void (*D_8018F4F8[])(void); -extern void func_8014CC28(s32 a0); /* defined */ -extern s32 func_8014F3E8(s32 a0); /* declared */ -extern void func_8015BDD0(s32 *a0); /* defined */ -extern void func_801575E4(void *a0); /* defined */ -extern void func_80157580(s32 arg0); -extern u8 D_800D4F14[]; -extern void func_801576A8(void *arg0); -extern s32 func_8015773C(u8 *a0); -extern s32 func_8015771C(u8 *a0); -extern s32 func_8015773C(u8 * arg0); -extern int D_801E5BE0; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018F520[])(void); -extern void func_80157808(void *param_1); -extern void func_80157880(s32 a0); -extern s32 func_801725A4(u8 *a0); -extern u8 D_800D5128; -extern u8 D_8018F500; -extern void func_801578C0(s32 param_1); -extern void func_80147A84(int); -extern void func_80148038(int, int); -extern void func_80147460(int); -extern void func_80146D90(int); -extern void func_80161450(void *a0); -extern void func_80157A8C(int); -extern void func_80154A74(int, int); -extern unsigned char D_800D5178; -extern unsigned char D_8018F510; -extern void func_8015795C(int param_1); -extern void func_80161D20(s32 a0, s32 a1); -extern void func_80157A8C(s32 a0); -extern void func_8016706C(s32 a0); -extern u8 D_800D51AC[]; -extern void func_80157AC8(s32 param_1); -extern void func_80157B74(int param_1); -extern void func_8016158C(void *a0); -extern void func_8015BE04(s32 *a0); -extern void func_80157BC8(s32 a0); -extern void func_80157CCC(s32 a0); -extern void func_80157DC4(void *a0); -extern void func_80157FC4(void *a0); -extern void func_80157D74(u16 *a0); -extern void (*D_8018F560[])(void); -extern void func_80157E38(void *); -extern void func_80157E00(void *a0); -extern void func_80157E38(void * a0); -extern s32 func_80157F64(s32 *a0); -extern s32 func_80156600(void *a0); -extern void func_80157EA4(void *a0); -extern void (*D_8018F568[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018F534; -extern void func_80158038(void * param); -extern u8 D_800D524C[]; -extern void func_80161418(void *a0); -extern void func_801580B4(s32 a0); -extern void func_801581AC(s32 a0); -extern void (*D_8018F574[])(void); -extern void func_8015824C(void *a0); -extern void func_801582C0(void *); -extern void func_80158288(void *a0); -extern u8 D_800D52A8[]; -extern void func_801585A4(s32 *a0); -extern void func_801582C0(void *a0); -extern s32 func_801585AC(s32 *a0); -extern u8 D_800D52E8[]; -extern void func_80158344(s32 *a0); -extern s32 func_801615C4(void *a0, s32 a1); -extern u8 D_8018F544; -extern u8 D_800D533C; -extern void func_80158434(s32 param_1); -extern void func_80158548(s32 param_1); -extern void func_801585EC(u8 *a0); -extern void func_80158794(void); -extern s32 D_801E5BE8; -extern s32 D_801E5BF4; -extern s32 D_801E5BF8; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018F5B0[])(s32 *); -extern void func_80158AE4(void *a0); -extern void func_80158AB4(void *a0); -extern void func_8016F264(void); -extern void func_80165840(void); -extern void func_801658DC(void); -extern void func_80165A78(s32); -extern void func_80158AE4(void * a0); -extern M2C_UNK D_800D58D8; -extern void func_80158BB0(void *arg0); -extern s32 func_80159404(s32 a0, s32 a1); -extern void func_80158C40(s32 *a0); -extern void func_80158CD8(s32 *a0); -extern s32 func_80159434(s32 a0, s32 a1); -extern void func_80158D60(s32 a0); -extern M2C_UNK D_800D5904; -extern void func_80158E24(s32 *a0); -extern s32 D_8018F584[]; -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80158F00(int param_1); -extern u8 D_80110C3C[]; -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80158FA4(s32 param_1); -extern s32 func_801399F0(s32 a0); -extern u8 D_80110C94[]; -extern u8 D_80110CD4[]; -extern void func_80159070(void *a0); -extern s32 func_80029A94(s32); -extern void func_80175454(void); -extern void func_800298BC(void *); -extern void func_8002992C(s32); -extern void func_800CF804(void); -extern void func_800CF818(void); -extern u8 D_80110D0C[]; -extern void func_80159120(s32 a0); -extern void func_801592CC(s32 *a0); -extern u8 D_800AE6BD; -extern s32 D_801E5BF0; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern Entry D_8018F5EC[]; -extern void (*D_8018F800[])(void); -extern void func_80159698(void *a0); -extern s32 func_801596D4(void *a0); -extern void func_80174B6C(void); -extern void func_80129248(s16 a0); -extern void func_8013C938(void); -extern void func_8013CB20(void); -extern void func_8013C98C(void); -extern void func_8002850C(s32, s32, s32); -extern void func_80028620(s32, void *); -extern s16 D_800B9AAC[]; -extern s16 D_800B9B00; -extern u16 D_801270C0; -extern u32 D_800AFAE8[]; -extern char D_8018F620[]; -extern s32 func_801596F0(s32 param_1); -extern s32 func_80159874(void); -extern void func_800167B8(s32 a0); -extern s32 func_8015987C(s32 a0); -extern int func_800167F0(int arg); -extern int func_801598BC(void); -extern void func_80159968(void *a0); -extern void func_801598E0(u8 *a0); -extern void (*D_8018F8A4[])(void); -extern void func_80159A20(void *a0); -extern void func_801599E0(void *a0); -extern void func_80159A18(void); -extern void func_80159BE4(s32); -extern void func_80159B08(s32 *a0); -extern void func_80159B70(void *a0); -extern void func_80159B3C(void * a0); -extern void (*D_8018F9F8[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018F814; -extern void func_80159BE4(s32 arg0); -/* ==== end §8b carried decl layer ==== */ - - -// @class: other -// @stuck: none — MATCH - -/* scalar typedefs stripped for in-TU splice (§8e) */ -extern unsigned char D_8018F814; /* canonical; address-only use */ - -extern u16 D_800B99DA; - -extern s32 rand(void); - -/* canonical sigs (engine_core.h); arity-mismatched call sites use a fn-ptr cast (§17a-1) */ -extern s32 func_80149D9C(s32 a0); -extern void func_80149FA8(void); -extern s32 func_80149FB0(s32 a0); /* canonical */ -extern s32 func_80161B18(void *a0); -extern s32 func_80161B84(void *a0); -extern int func_80161BE0(void *a0); -extern s32 func_801496D4(void *a0); -extern void func_80149704(void); -extern s32 func_801619A4(s32 *a0); -extern s32 func_80149AA8(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern s32 func_8014A738(u8 *a0); -extern void func_8014A830(void); -extern void func_80149BAC(s32 *a0); -extern s32 func_801498E0(s32 *a0); -extern s32 func_80149954(s32 a0); -extern s32 func_80149A64(s32 *a0); -extern void func_800CCCC0(u8 *a0); -extern s32 func_80149CD4(s32 a0); -extern void func_8015E880(s32 *a0); -extern s32 func_801488A8(u8 *a0); -extern void func_8015A230(s32 *a0); -extern void func_80154B4C(u8 *a0, s32 a1); -extern s32 func_8016F1AC(void); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154190(u8 *a0, s32 a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80147324(s32 a0); -extern void func_80155440(s32 *a0); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_80147A84(s32 a0); -extern void func_801473EC(s32 *a0); -extern void func_8014C010(s32 a0, s32 a1); -extern s32 func_80161208(); -extern void func_801483E8(void); -extern s32 func_80172590(u8 *a0); - -void func_80159C84(u8 *p) { - - extern void (*D_8018F8B0[])(void *); /* canonical */ - extern s32 D_800D5F04; - extern s32 D_800D5F14; - extern s32 D_800D5F34; - extern s32 D_800D5F44; - extern s32 D_800D49F4; - s32 t; - - if (((s32 (*)(void))func_80149D9C)() != 0) { - D_8018F8B0[*(u16 *)p](p); - ((void (*)(u8 *))func_80149FA8)(p); - return; - } - - func_80149FB0((s32)p); - if (func_80161B18(p) != 0) { - return; - } - if (func_80161B84(p) != 0) { - return; - } - if (func_80161BE0(p) != 0) { - return; - } - if (func_801496D4(p) != 0) { - D_8018F8B0[*(u16 *)p](p); - ((void (*)(u8 *))func_80149704)(p); - return; - } - - switch (func_801619A4((s32 *)p)) { - case 0: - case 1: - case 2: - case 6: - if (func_80149AA8((s32 *)p) != 0) { - D_8018F8B0[*(u16 *)p](p); - func_80149AD4((s32 *)p); - return; - } - if (func_80149B54((s32 *)p) != 0) { - D_8018F8B0[*(u16 *)p](p); - if (func_8014A738(p) != 0) { - ((void (*)(u8 *))func_8014A830)(p); - return; - } - func_80149BAC((s32 *)p); - return; - } - break; - case 3: - func_801498E0((s32 *)p); - break; - case 4: - func_80149954((s32)p); - break; - case 5: - if (func_80149A64((s32 *)p) != 0) { - D_8018F8B0[*(u16 *)p](p); - func_800CCCC0(p); - return; - } - break; - } - - if (func_80149CD4((s32)p) != 0) { - D_8018F8B0[*(u16 *)p](p); - func_8015E880((s32 *)p); - return; - } - if (func_801488A8(p) != 0) { - D_8018F8B0[*(u16 *)p](p); - func_8015A230((s32 *)p); - return; - } - - if ((*(u32 *)(p + 0x44) & 0x200) == 0 && *(u16 *)(p + 0xD4) == 0x8000) { - if (*(s32 *)(p + 0x234) >= 3) { - t = (s32)&D_800D5F44; - if (*(s32 *)(p + 0xD0) == t) { - func_80154B4C(p, (s32)&D_800D5F34); - goto after_b4c; - } - } else { - t = (s32)&D_800D5F14; - if (*(s32 *)(p + 0xD0) == t) { - func_80154B4C(p, (s32)&D_800D5F04); - goto after_b4c; - } - } - if ((rand() & 0xF) == 0) { - func_80154B4C(p, t); - } - } -after_b4c: - - if (*(u16 *)(p + 0xB8) & 0x8000) { - if ((*(u32 *)(p + 0x44) & 0x200) == 0) { - if (func_8016F1AC() != 0) { - *(s32 *)(p + 0x234) = 0; - *(s32 *)(p + 0x238) = 0; - } - switch (*(s32 *)(p + 0x234)) { - case 0: - if ((*(s32 *)(p + 0x238))++ >= 4) { - *(s32 *)(p + 0x238) = 0; - *(s32 *)(p + 0x234) = *(s32 *)(p + 0x234) + 1; - func_80154150((s32)p, 1); - break; - } - func_80146DB8((s32 *)p, (s32 *)&D_8018F814); - func_80154190(p, 0); - break; - case 1: - *(s32 *)(p + 0x238) = 0; - *(s32 *)(p + 0x234) = *(s32 *)(p + 0x234) + 1; - func_80154150((s32)p, 0); - break; - case 2: - if ((*(s32 *)(p + 0x238))++ >= 2) { - if ((*(u32 *)(p + 0x44) & 4) != 0) { - *(s32 *)(p + 0x234) = 0; - *(s32 *)(p + 0x238) = 0; - func_80154150((s32)p, 0); - break; - } - *(s32 *)(p + 0x238) = 0; - *(s32 *)(p + 0x234) = *(s32 *)(p + 0x234) + 1; - func_80154150((s32)p, 2); - break; - } - func_80154190(p, 0); - break; - case 3: - func_80147324(0x445); - *(s32 *)(p + 0x234) = *(s32 *)(p + 0x234) + 1; - func_80155440((s32 *)p); - func_80154150((s32)p, 3); - func_80154A74((s32)p, 0x13); - break; - case 4: - break; - default: - break; - } - } else { - func_80146DB8((s32 *)p, (s32 *)&D_8018F814); - func_80154150((s32)p, 5); - func_80154A74((s32)p, 0x1C); - } - } - - if (*(s32 *)(p + 0xB4) == (s32)&D_800D49F4) { - func_80147A84((s32)p); - func_801473EC((s32 *)p); - if ((D_800B99DA & 3) == 0) { - func_8014C010((s32)p, 1); - } - } - if (((s32 (*)(s32))func_80161208)((s32)p) == 0) { /* §17a-1 */ - ((void (*)(u8 *))func_801483E8)(p); - func_80172590(p); - } -} - - -DEFINE_func_8015A1C8() /* dedup: shared engine-core @0x8015A1C8 (src/shared) */ - -DEFINE_func_8015A1FC() /* dedup: shared engine-core @0x8015A1FC (src/shared) */ - -DEFINE_func_8015A230() /* dedup: shared engine-core @0x8015A230 (src/shared) */ - - -extern void (*D_8018FA00[])(void); - -void func_8015A264(void *a0) { - D_8018FA00[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015A2A0() /* dedup: shared engine-core @0x8015A2A0 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (60 ins). switch() gives signed slti pivot; per-case duplicated call gives per-case a0 setup + nop jal delay - -extern int D_8018F824; - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_8014C010(s32 a0, s32 a1); -extern void func_801553A8(s32 *a0); -extern s32 func_80172608(u8 *a0); -extern void func_80146CA0(void *a0); - -void func_8015A2D8(s32 param_1) -{ - unsigned char bVar1; - - ((void (*)(int, int *))func_80146DB8)(param_1, &D_8018F824); - if ((*(unsigned int *)(param_1 + 0x44) & 0x200) != 0) { - func_80154150(param_1, 10); - func_80154A74(param_1, 0x1c); - *(int *)(param_1 + 0x2c) = 0xfffc0000; - goto LAB_8015a38c; - } - bVar1 = *(unsigned char *)(param_1 + 0xa9); - switch (bVar1) { - case 0x41: - func_80154150(param_1, 7); - break; - case 0x53: - case 0x73: - func_80154150(param_1, 6); - break; - default: - *(int *)(param_1 + 0x23c) = 0; - goto LAB_8015a390; - } - func_80154A74(param_1, 0x21); -LAB_8015a38c: - *(int *)(param_1 + 0x23c) = 0; -LAB_8015a390: - func_8014C010(param_1, 2); - ((void (*)(int))func_801553A8)(param_1); - ((void (*)(int))func_80172608)(param_1); - ((void (*)(int))func_80146CA0)(param_1); - return; -} - diff --git a/src/ov_SC04_019/ov_SC04_019_jr_8015A3C8.c b/src/ov_SC04_019/ov_SC04_019_jr_8015A3C8.c deleted file mode 100644 index 2943cd8fa..000000000 --- a/src/ov_SC04_019/ov_SC04_019_jr_8015A3C8.c +++ /dev/null @@ -1,1471 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -extern void func_801458E0(void); -extern s32 D_800AE6AC; -extern s32 D_800AE6B0; -extern s16 D_800B9A0A; -extern u8 D_80078E50; -extern void func_800D185C(u8 *a0); -extern void func_801458E8(void); -extern s32 func_80029504(void); -extern void func_80145B24(void); -extern u8 D_8018F74C; -extern u8 D_8018F6BC; -extern u8 D_8018F698; -extern u8 D_8018F674; -extern u8 D_8018F728; -extern u8 D_8018F704; -extern u8 D_8018F6E0; -extern u8 D_8018F650; -extern void func_80145934(void); -extern u8 D_8018F7DC; -extern u8 D_8018F7B8; -extern u8 D_8018F794; -extern u8 D_8018F770; -extern void func_80145A2C(void); -extern s32 func_800291DC(s32); -extern void func_800291C8(s32, s32); -extern void func_80162120(void); -extern void func_80029124(s32, s32); -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); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_80145BF8(void); -extern s32 func_800291B4(s32 arg); -extern void func_800291A0(s32, s32); -extern void func_80145C54(void); -extern s32 func_80145CEC(); -extern s32 func_80029178(s32 arg); -extern void func_80146014(s32 a0); -extern unsigned char D_8018EBD4[]; -extern unsigned char D_8018EC04[]; -extern unsigned char D_8018EC54[]; -extern unsigned char D_8018EC84[]; -extern unsigned char D_8018ECB4[]; -extern void func_80145EE8(s32 param_1); -extern void MoveImage(void *a0, s32 a1, s32 a2); -extern void func_80146074(void); -extern s32 func_80146128(void); -extern void func_80146360(void); -extern void func_801463A0(); -extern void func_8014607C(void); -extern s32 *D_80126B78; -extern u8 D_80078EC1; -extern s32 D_80078EC8; -extern s32 D_80126B9C; -extern s32 D_8011F730; -extern u16 D_801152B8; -extern u16 D_8012693A; -extern u8 D_80126BE0[]; -extern u8 D_801150F0[]; -extern void *memcpy(void *dst, const void *src, u32 n); -extern void func_80146FC4(s32 a0); -extern void func_80150A70(s32 a0); -extern void func_80147098(s32 *a0); -extern void func_8014A638(s32 arg0); -extern s32 func_80155458(s32 a0); -extern s32 func_80029104(void); -extern void func_80029344(void); -extern void func_8014ADE0(s32 a0); -extern void func_8014B350(s32 a0); -extern void func_8014B7A4(s16 *param_1); -extern s32 func_80161D58(s32 a0); -extern void func_80161A90(s32 a0); -extern void func_8014B504(u16 *a0); -extern void func_80149BEC(s32 a0); -extern void func_8014B5D0(s32 *a0); -extern void func_8014C99C(u8 *a0); -extern void func_8014B190(s32 s0); -extern void func_80148648(s32 a0, s32 a1); -extern s32 func_80149228(s32 a0); -extern void func_8014A59C(s32 a0); -extern void func_8016F14C(void *a0); -extern void func_80154418(void *a0); -extern void func_80154BE4(s32 a0); -extern void func_80165694(s32 arg0); -extern void func_801654A8(s32 a0); -extern void func_8014A680(s32 a0); -extern void func_8014A6A8(s32 a0); -extern void func_8014A71C(s32 a0); -extern void func_80172588(s32 *a0); -extern void func_801473DC(s32 *a0); -extern void func_80015978(s32 a0, s32 *a1); -extern void (*D_8018ED04[])(void *); -extern u8 D_80126BA4; -extern s32 D_80127098; -extern s32 D_80127094; -extern s32 D_80127090; -extern void func_80146534(void); -extern void func_8001D074(s32 a0, s32 a1); -extern void func_80146554(void); -extern void func_80146578(void); -extern void func_8001CFDC(s32, s32); -extern void func_8014659C(void); -extern void func_8001D074(s32, s32); -extern void func_801465C0(void); -extern void func_801465E4(void); -extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); -extern s32 D_8011F9D0; -extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); -extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 D_8011F750; -extern s32 D_8011F754; -extern u8 * func_801468C8(s32 arg0, u8 arg1); -extern s32 D_8011D030; -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); -extern s32 func_80146B9C(void *a0); -extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); -extern u16 D_8011DA28; -extern s32 func_80146B9C(void * arg0); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80146CA0(void *a0); -extern void func_80146CB4(void *a0); -extern void func_80146CC8(s32 a0); -extern void func_80146D30(s32 a0); -extern void func_80146D80(s32 *a0); -extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80146D90(s32 a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); -extern void func_80146E90(s32 *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80015954(s32 a0, s32 a1); -extern void func_80149374(s32 a0, s32 a1); -extern void func_80146F58(s32 a0, s32 a1); -extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 func_8012A68C(void); -extern s16 func_8012A758(void); -extern void func_8004978C(s16 *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern u8 D_80126DB0[]; -extern u16 D_80126DB6; -extern void func_8014704C(s32 *a0); -extern s32 func_80147054(void *a0); -extern void func_80147060(u8 * a0); -extern void func_8014706C(void *arg0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80147084(s32 *a0); -extern void func_8014708C(void *arg0); -extern s32 func_801470A0(void *a0); -extern void func_801470AC(s32 *a0); -extern void func_801470B4(s32 arg0); -extern void func_801470C0(s32 a0); -extern void func_80147118(s32 a0); -extern s16 D_80126BB8; -extern s16 D_80126BBA; -extern s16 D_80126BBC; -extern void func_80147264(s32 a0); -extern void func_80147290(void); -extern void func_801472B4(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void *D_8012707C; -extern void func_801472DC(void); -extern void func_801472F0(void *a0); -extern void func_80147364(u16, s32); -extern void func_80147300(u16 arg0); -extern void func_80147324(s32 arg0); -extern void func_801473EC(s32 *a0); -extern void func_80147460(s32 a0); -extern void func_80147514(); -extern void func_80147628(s32 a0); -extern void func_80147478(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); -extern s32 func_800129CC(s32 a0, s32 a1); -extern void func_80147514(s32 arg0); -extern void func_80013F3C(s32 a0); -extern void func_80012558(s32 a0, s32 a1); -extern void func_800126C4(s32 a0, s32 a1); -extern void func_800123F0(s32 a0, s32 a1); -extern void func_80147718(s32 a0); -extern void func_80147788(void *a0, s32 a1); -extern void func_801477A8(void *a0, s32 a1); -extern void func_801477C8(void *a0, s32 a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80147814(s32 a0, s32 a1); -extern void func_80147928(int a0, int a1); -extern void func_8014799C(int a0, int a1); -extern void func_80147A10(int a0, int a1); -extern void func_80147860(int a0, int a1, int a2, int a3); -extern void func_80147948(s32 a0, s32 a1, s32 a2); -extern void func_801479BC(s32 a0, s32 a1, s32 a2); -extern void func_80147A30(s32 a0, s32 a1, s32 a2); -extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147948(int a0, int a1, int a2); -extern void func_801479BC(int a0, int a1, int a2); -extern void func_80147A30(int a0, int a1, int a2); -extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147A84(s32 arg0); -extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147AAC(s32 arg0); -extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80147B5C(s32 a0, void *a1); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern void func_80147B18(s32 a0); -extern void func_80147B5C(s32 arg0, void *arg1); -extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147DC0(s32 a0, s32 a1); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147F50(s32 arg0); -extern void func_80148038(s32 a0, s32 a1); -extern s32 ratan2(s32 a0, s32 a1); -extern s32 csqrt(s32 a0); -extern s32 func_80012A60(s32 a0, s32 a1); -extern void func_80148094(int param_1, short *param_2, int *param_3); -extern void func_801485B8(s32 a0, s32 a1, s32 a2); -extern void func_801484B0(s32 a0, s32 a1); -extern s32 func_80154358(void *a0); -extern void func_801484E8(s32 a0, s32 a1); -extern void func_80148534(s32 a0, s32 a1); -extern void func_8014856C(s32 a0, s32 a1); -extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); -extern void func_80148634(void *a0); -extern u8 D_800B9A64; -extern s32 func_80014DC0(); -extern s32 func_80014D68(); -extern s32 func_80014D94(); -extern s32 func_80014CF8(); -extern void func_800120DC(); -extern s32 func_800CF8B4(); -extern u16 func_801487F4(s32 *a0); -extern u16 func_80148800(s32 *a0); -extern u8 func_8014880C(s32 *a0); -extern u16 func_80148818(s32 *a0); -extern s32 func_80047D3C(s32 a0); -extern s32 func_80148824(void *arg0); -extern s32 func_801488A8(u8 *a0); -extern s32 func_8014891C(s32 a0); -extern s32 func_80148980(u8 *a0); -extern s32 func_801489E8(s32 a0); -extern s32 func_80148A48(s32 a0); -extern int func_80148AFC(void *a0); -extern void func_80148AAC(u8 *a0); -extern s32 func_80148C18(void); -extern s32 func_80148C20(s32 a0, s16 a1); -extern s32 func_80148C34(s32 a0, s32 a1); -extern s32 func_80148C4C(s32 a0, s32 a1); -extern s32 func_80148C64(s32 a0, s32 a1); -extern s32 func_80148C7C(void); -extern s32 func_80148C84(s32 a0, s32 a1); -extern s32 func_80148C9C(s32 a0, s32 a1); -extern s32 func_80148CB4(s32 a0, s32 a1); -extern s32 func_80148CCC(s32 a0, s32 a1); -extern s32 func_80148CE4(void); -extern s32 func_80148CEC(void); -extern s32 func_80148CF4(s32 a0, s32 a1); -extern s32 func_80148D0C(s32 a0, s32 a1); -extern s32 func_80148D24(void *a0, int a1); -extern s32 func_80148D3C(void); -extern s32 func_80148F60(void); -extern s32 func_80148F68(s32 a0); -extern s32 func_80148F74(s32 a0); -extern s32 func_80148F80(s32 a0); -extern s32 func_80148F8C(s32 a0); -extern s32 func_80148F98(void); -extern s32 func_80148FA0(s32 a0); -extern s32 func_80148FAC(s32 a0); -extern s32 func_80148FB8(s32 a0); -extern s32 func_80148FC4(s32 a0); -extern s32 func_80148FD0(void); -extern s32 func_80148FD8(void); -extern s32 func_80148FE0(s32 a0); -extern s32 func_80148FEC(s32 a0); -extern s32 func_80148FF8(s32 a0); -extern s32 func_80149004(void); -extern void func_8014900C(s32 *a0); -extern void func_80149020(s32 *a0); -extern void func_80149034(s32 *a0); -extern void func_80149048(s32 *a0); -extern void func_8014905C(u8 *a0); -extern void func_801490E0(s32 *a0, s16 a1); -extern void func_801490E8(s32 *a0, s16 a1); -extern void func_801490F0(s32 *a0, s16 a1); -extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); -extern void func_801490F8(s32 a0, s32 a1); -extern s32 func_801491C4(s32 a0); -extern s32 func_80149184(s32 a0); -extern s32 D_801151D4; -extern void func_80149204(s32 *a0); -extern void func_80149210(s32 a0, s32 a1); -extern s32 func_80149284(s32 *a0, s32 a1); -extern void func_80149350(s32 arg0); -extern void func_80149290(s32 a0); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_80149374(s32 arg0, s32 arg1); -extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8014942C(s32 arg0); -extern void func_8012EF70(s32 a0, s32 a1); -extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012EFB8(s32 a0); -extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); -extern void func_8014964C(s32 param_1, s32 param_2); -extern s32 func_801496D4(void *a0); -extern void func_8015AD08(); -extern void func_80149704(void); -extern void func_8015ACC4(); -extern void func_80149724(void); -extern u8 D_80078EBF; -extern s32 func_80149744(struct S_80149744 *a0); -extern void func_8015F7A0(); -extern void func_80149788(void); -extern void func_801653B8(); -extern void func_80149864(void); -extern s16 currentLocationId; -extern s32 func_8016F1AC(void); -extern s32 func_80149884(void); -extern void func_80160B00(); -extern void func_801498C0(void); -extern s32 func_80149AA8(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern void func_80146750(void *a0); -extern s32 func_801498E0(s32 *a0); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_80147364(u16 a0, s32 a1); -extern s32 func_800CCF28(s32 a0); -extern u8 D_80126B5C; -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_8015DAC4(s32 *a0); -extern void func_8015554C(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern void func_80149B14(s32 *a0); -extern u8 func_8014BEF8(void); -extern s32 func_80149B54(s32 * arg0); -extern void func_8015DE24(s32 *a0); -extern void func_80157510(s32 *a0); -extern void func_80149BAC(s32 *a0); -extern s32 func_80029178(s32 a0); -extern s32 func_80149C08(s32 arg0); -extern void func_801577C8(); -extern void func_80149C94(void); -extern void func_80157D20(void); -extern void func_80149CB4(void); -extern s32 func_80149CD4(s32 a0); -extern u8 func_8014B5B8(s32 *a0); -extern s32 func_80149D10(s32 a0); -extern s32 func_80149E94(s32 a0); -extern s32 func_80149DD8(s32 a0); -extern s32 func_80149D9C(s32 a0); -extern u8 D_801202A0[]; -extern s32 func_80149F2C(s32 a0, s32 a1); -extern s32 func_80149E94(s32 arg0); -extern void func_80149FA8(void); -extern s32 D_8018EDCC[]; -extern u8 D_80078E78[]; -extern s32 func_80149FB0(s32 a0); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern void func_8014A1B0(s32 a0, s32 a1); -extern s32 func_8014A048(s32 param_1); -extern u16 func_80156370(u16 a0); -extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); -extern void func_8015D4B4(); -extern void func_8014A218(void); -extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); -extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); -extern s32 func_8014A238(s32 arg0); -extern s32 func_8014A2E4(s32 a0); -extern void func_8014A380(s32 a0, s32 a1); -extern s16 D_801152B0; -extern s16 D_801152B4; -extern s32 func_8014A3E0(struct S_8014A3E0 *a0); -extern s32 func_8014A454(s32 a0); -extern s32 func_8014A4B4(void *a0); -extern void func_8015EDD4(); -extern void func_8014A4FC(void); -extern s32 func_8014A674(s32 *a0); -extern s32 func_8014A69C(s32 *a0); -extern s32 func_8014A6C4(s32 a0); -extern void func_8015E184(); -extern void func_8014A830(void); -extern s32 func_80029AF4(void); -extern s32 func_8014A850(s32 param_1); -extern void func_8014AA04(s32 a0); -extern void func_801599A4(void *a0); -extern void func_80159B3C(void *a0); -extern s32 func_80165A20(s32 a0); -extern void func_8014AB7C(); -extern void func_8014AC10(); -extern void func_8014AA28(void); -extern void func_8014AB5C(void); -extern void func_80162CCC(void); -extern void func_8014AB7C(s32 arg0); -extern void func_8014ABF0(void); -extern void func_80016714(void *a0, s32 a1); -extern void func_8014AC10(s32 arg0); -extern void func_8014ACC0(s32 a0, s32 a1); -extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); -extern void func_8014ACE8(void *a0, s32 a1, s32 a2); -extern void func_80146AFC(void *a0); -extern void func_8014ADA8(s32 a0, s32 a1); -extern void func_8014AD7C(s32 a0); -extern s32 D_80078E8C; -extern void func_8014B034(s32 arg0); -extern void func_8014B00C(s32 arg0); -extern void func_8014B084(void); -extern s16 D_80078E90; -extern void func_8014B034(s32 a0); -extern u16 D_80078EAC; -extern u8 D_80078EBA; -extern void func_800D10EC(void); -extern void func_8002AC98(void); -extern s32 func_8014B154(s32 *a0); -extern void func_8014B12C(void); -extern void func_8014B2F8(void); -extern void func_8014B4C4(void); -extern void func_8014B160(s32 a0); -extern s32 func_8016F1C4(void); -extern s16 D_80078E96; -extern s16 D_80078EB8; -extern u16 D_80078EA6; -extern void func_8014B2A8(void); -extern void func_8014B310(void); -extern void func_8014B2D0(void); -extern s32 D_80078E94; -extern s32 D_80078ECC; -extern void func_8014B33C(void); -extern u8 D_80062BF4[]; -extern void func_8014BC80(s32 a0, s32 a1); -extern void func_80019064(void *a0); -extern s32 D_80078E98; -extern void func_80166244(); -extern void func_8014B4D4(void *a0); -extern s16 D_80078E9A; -extern u8 D_80126D1C; -extern s32 D_80126D74; -extern void func_8014B598(s32 a0, s32 a1); -extern void func_8014B5B0(s32 *a0); -extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); -extern void func_8014B5D8(s32 s1); -extern s32 D_80078E9C; -extern s32 D_80078ED0; -extern void func_8014B6F0(s32 a0, s32 a1); -extern void func_8014B768(s32 a0, s32 a1); -extern void func_8014B944(s32 a0, s32 a1, s32 a2); -extern s32 D_80078EA4; -extern u16 D_80078EB2; -extern s16 D_80078EB4; -extern void func_8014BB0C(void); -extern void func_8014BB24(s32 a0, s32 a1, s32 a2); -extern void func_8014BC0C(s32 a0, s32 a1); -extern void func_8014BC44(s32 a0, s32 a1); -extern u8 D_800B9A17; -extern void func_8014BCC0(s32 a0, s32 a1); -extern u16 D_80078EB6; -extern s32 func_8014BCEC(s32 a0, s32 a1); -extern void func_8014BD24(s32 a0, s32 a1); -extern void func_8014BD60(s32 param_1, s32 param_2); -extern void func_8014BD98(s32 a0, u16 a1); -extern void func_8014BDC8(void); -extern void func_8014BDE0(void); -extern s32 func_8017267C(s32 *a0); -extern s32 func_80013294(void *a0, void *a1); -extern void func_80029ED4(s32 a0); -extern void func_8014BDE8(s32 a0); -extern void func_8014BE78(void); -extern void func_8014BE9C(void); -extern void func_80029124(s32 a0, s32 a1); -extern void func_8014BEC0(void); -extern void func_8014BF18(s32 a0); -extern void func_8014BF48(void); -extern u8 func_8014BF6C(void); -extern void func_8014BF8C(u8 arg0); -extern void func_8014BFB0(void); -extern u8 func_8014BFD4(void); -extern void func_8014BFF4(s32 a0, s32 a1); -extern void func_8014C010(s32 a0, s32 a1); -extern s32 func_8014C050(s32 a0, s32 a1); -extern s32 func_8014C088(s32 a0, s32 a1); -extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); -extern s32 func_8014C118(void * a0, s32 a1, s32 a2); -extern s32 func_8014C168(s32 * param_1, s32 param_2); -extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); -extern u8 D_8018EE54[]; -extern void func_8014C1A0(s32 arg0, s32 arg1); -extern s32 func_80013328(s32 a0, s32 a1); -extern s32 func_8014C59C(void *a0, void *a1); -extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); -extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); -extern s32 ratan2(s32 dx, s32 dy); -extern u8 D_8018EE5C; -extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); -extern s16 func_8014C5D0(s32 a0, s32 a1); -extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); -extern u8 D_80126D17; -extern void func_8014C6AC(void); -extern void func_8014C6C0(void); -extern u8 D_80126D1E; -extern void func_8014C6D0(void); -extern void func_8014C6E0(void); -extern s32 func_8014C860(s32 a0, s32 a1); -extern void func_8014C8C8(s32 a0, s32 *a1); -extern void func_8014C88C(s32 a0); -extern void func_8014C8C8(s32 dst, s32 * src); -extern void func_8014C8F0(s32 arg0); -extern u8 D_801151F0[]; -extern s32 func_8014C918(s32 a0, s32 a1); -extern s32 D_80126B50; -extern void func_8014C968(void); -extern void func_8014C978(void); -extern s32 func_8014C98C(void); -extern void func_80139914(s32 a0); -extern s32 func_8014CA00(s32 a0); -extern u16 func_8014CA70(s32 a0, s32 a1); -extern s32 func_8014CA14(s32 a0, s32 a1); -extern u16 func_8014CAE4(s32 *a0, s32 a1); -extern s32 func_8014CA88(s32 *a0, s32 a1); -extern s32 func_8014CAFC(void); -extern s32 func_8014CB0C(void); -extern s32 func_8014CB1C(void); -extern u8 D_80126D1F; -extern s32 func_8014CB2C(void); -extern s32 func_8014CB58(void); -extern u8 D_80126D1D; -extern void func_8014CB68(void); -extern s32 func_8014CB7C(void); -extern s32 func_8014CB8C(void); -extern struct Packed8 D_80126C98; -extern short D_80126C9E; -extern void func_8014CB9C(struct Packed8 *a0); -extern s32 D_80126CDC; -extern void func_8014CBD8(void); -extern s16 D_80126CC4; -extern void func_8014CBE8(void); -extern void func_8014CBF8(void *a0); -extern void func_8014D3E0(s32 a0); -extern void func_8014D04C(void); -extern void func_8014CCB4(void); -extern void func_8014CC28(s32 a0); -extern void func_8014CD0C(u8 *a0); -extern s32 func_8014CF04(s32 a0, s32 a1, void *a2); -extern void func_8014CD80(s32 a0, void *a1, void *a2); -extern void func_8014D0A4(s32 a0); -extern s32 func_8014D2A0(s32 a0, void *a1, void *a2); -extern s32 func_8014D12C(s32 a0, void *a1, void *a2); -extern void func_8014D438(s32 a0); -extern void func_8014D3E0(s32 _arg0); -extern void func_8014D610(s32 a0, void *a1, void *a2); -extern s32 func_8014D4C0(s32 a0, void *a1, void *a2); -extern void func_8014D790(s32 a0); -extern void func_8014D738(void); -extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); -extern s32 func_8014D820(s32 a0, u16 *a1, u16 *a2); -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); -extern void func_8014DF94(s32 arg0); -extern void func_8014DF3C(void); -extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ -extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ -extern s16 D_801152AC; -extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); -extern void func_8014E48C(s32 a0); -extern void func_8014E434(void); -extern void func_8014E5B4(s32 a0, void *a1, void *a2); -extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); -extern void func_8014E6F8(struct SubE6F8 *a0); -extern void func_8014E6A0(void); -extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); -extern void func_8014E934(s32 _arg0); -extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); -extern s32 func_8014E98C(void *a0); -extern u16 D_800B99DA; -extern s32 D_801150D8; -extern s16 D_801152AA; -extern u8 D_80126720[]; -extern s16 D_80126724; -extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); -extern s32 func_8014ED80(struct SubED80 *a0); -extern int D_801E5BA8; -extern void func_8014ED28(s32 _arg0); -extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F24C(struct SubF24C *a0); -extern void func_8014F1F4(void); -extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F4C0(); -extern s32 func_8014F468(void); -extern int func_8014F74C(); -extern int func_8014F6F4(void); -extern u8 D_800D3918[]; -extern u8 D_801152A8[]; -extern s32 D_801152BC; -extern int func_8014F74C(s32 arg0); -extern s32 func_8014FA70(s32 a0); -extern s32 D_801E5BAC; -extern void func_8014FA04(s32 a0); -extern s32 func_8014FBC0(); -extern s32 func_8014FC18(u8 *self); -extern int func_8014FD54(int param_1); -extern void func_8014FCFC(void); -extern void func_80150170(void *a0); -extern s32 func_8014FE60(void *a0); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_8014FE60(void *e); -extern s32 func_80134510(s32 arg); -extern s32 func_80150150(s32 a, s32 b); -extern s32 func_80150460(s32 a, s32 b); -extern void func_801504D8(u16 *a0); -extern s32 func_80150480(s32 _arg0); -extern s32 func_80150528(void *a0, void *a1, void *a2); -extern s32 func_80150528(void *arg0, void *arg1, void *arg2); -extern s32 func_801506A4(s32 a0, s32 a1); -extern s32 func_801505FC(s32 a0); -extern s32 func_801506A4(s32 arg0, s32 arg1); -extern void func_80150820(s32 a0, s32 a1); -extern void func_8015086C(int param_1); -extern s32 func_801508B4(s32 a0); -extern s32 func_8015094C(s32 a0); -extern short func_801508F8(s32 a0); -extern s32 D_8018EE8C; -extern s32 D_80126990; -extern s32 D_80126994; -extern u8 D_80126948[]; -extern s32 func_80021174(s32 a0, s32 a1); -extern s32 func_8015094C(s32 param_1); -extern void func_80150B9C(void); -extern s32 func_80151184(s32 a0, s32 a1, s32 a2); -extern s32 func_80150BA4(s32 a0); -extern s32 func_801619D0(void *a0); -extern void func_80150BC8(s32 *a0); -extern s32 func_80150480(s32 a0); -extern u16 D_800AE6DC; -extern void func_80150C48(s32 a0); -extern int func_80151184(int arg, int a1, int a2); -extern int func_80150CA0(int arg); -extern void func_80150EC4(s32 a, s32 b); -extern void func_80150CC4(s32 a); -extern void func_80150CE4(s32 a); -extern void func_80150D04(s32 a); -extern void func_80150D24(s32 a); -extern void func_80150D44(s32 a); -extern void func_80150D64(s32 a); -extern void func_80150D84(s32 a); -extern void func_80150DA4(s32 a); -extern void func_80150DC4(s32 a); -extern void func_80150DE4(s32 a); -extern void func_80150E04(s32 a); -extern void func_80150E24(s32 a); -extern void func_80150E44(s32 a); -extern void func_80150EC4(s32 a0, s32 a1); -extern void func_80150E64(s32 a0); -extern void func_80150E84(s32 a0); -extern void func_80150EA4(s32 a0); -extern u8 D_800AE6C0; -extern s16 D_800AE6C8; -extern s16 D_800AE6CA; -extern s16 D_800AE6CC; -extern s32 D_800AE6C4; -extern s16 D_800AE6CE; -extern u8 D_800AE6BE; -extern u8 D_801201F8[]; -extern void func_80150F78(void); -extern void func_80150F80(s32 a0); -extern int func_80150FB4(int arg); -extern void func_80150FD8(s32 a0); -extern int func_80151014(int arg); -extern void func_80151038(s32 a0); -extern int func_80151070(int arg); -extern int func_80151094(int arg); -extern void func_801510B8(void); -extern void func_801510C0(void); -extern int func_801510C8(int arg); -extern int func_801510EC(int arg); -extern s32 func_8012DB84(void); -extern s32 func_80151110(void); -extern void func_80151130(void); -extern int func_80151138(int arg); -extern void func_8015115C(s32 *a0, s16 a1); -extern s32 func_80151164(s32 a0, s32 a1); -extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); -extern void func_801511A8(u8 *a0); -extern void func_801511C4(u8 *a0); -extern int func_80151204(int arg, int a1); -extern int func_801511E0(int arg); -extern int func_80151204(int a0, int a1); -extern void func_80151238(void *a0); -extern void func_8015126C(u16 *p); -extern void func_80151780(s32 a0); -extern void func_801516F0(s32 *a0); -extern void func_8015173C(s32 *a0); -extern s16 D_8011DB1A; -extern s32 D_80127518; -extern s32 D_801151FC; -extern s32 func_801725CC(u8 *a0); -extern s32 func_80029D3C(void); -extern void func_80151878(void); -extern void func_80153B58(s32 *a0); -extern s32 func_80151880(s32 a0); -extern s32 func_801518D8(s32 a0); -extern s32 func_80151944(void); -extern s32 func_80151924(void); -extern void func_8014E934(s32 a0); -extern s32 func_8014F3E8(s32 a0); -extern void func_801519C8(s32 a0); -extern void func_80151980(s32 a0); -extern M2C_UNK D_800D5880; -extern s32 D_800D58AC; -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801519C8(s32 arg0); -extern void func_80151C54(s32 a0); -extern void func_801542DC(s32 *a0, s32 a1); -extern void func_8015BDD0(s32 *a0); -extern void func_80165718(s32 a0); -extern u8 D_800D46E4[]; -extern void func_80151AE4(s32 arg0); -extern void (*D_8018EF34[])(void); -extern void func_80151D24(void *a0); -extern void func_80151DB0(s32 a0); -extern void func_80151D60(void *a0); -extern s32 func_80172630(u8 *a0); -extern s32 D_80062C14; -extern void func_80151DB0(s32 param_1); -extern void func_80151E78(s32 *a0); -extern void func_80151ECC(struct S80151ECC *a0); -extern void func_80151FB4(s32 a0); -extern void func_80151F38(s32 *a0); -extern void func_801553C0(s32 a0); -extern void func_80153C18(); -extern void (*D_8018EF58[])(void); -extern void func_80152058(void *a0); -extern void func_801520DC(s32 a0); -extern void func_80152094(s32 a0); -extern void func_80147324(s32 a0); -extern u8 D_80062C04[]; -extern M2C_UNK D_8018EF48; -extern void func_801520DC(s32 arg0); -extern void func_801470B4(s32 a0); -extern void func_8015369C(s32 a0); -extern void func_80152194(s32 *a0); -extern s32 func_801536DC(s32 a0); -extern void func_8015220C(s32 a0); -extern s32 func_80153800(s32 a0); -extern void func_801522CC(s32 a0); -extern void func_80152254(s32 *a0); -extern void (*D_8018EF6C[])(void); -extern void func_80152370(void *a0); -extern void func_801523F4(s32 a0); -extern void func_801523AC(s32 a0); -extern void func_8001382C(s32 a0, void *a1, void *a2); -extern u8 D_8018EF78[]; -extern void func_801523F4(s32 arg0); -extern void func_801525F4(int); -extern s32 func_801535F4(void *arg0); -extern void func_8015BF48(s32 *a0); -extern void func_80152500(int param_1); -extern void func_801525F4(s32 a0); -extern void (*D_8018EF88[])(void); -extern void func_80152698(void *a0); -extern void func_80152714(s32 a0); -extern void func_801526D4(s32 a0); -extern void func_80152790(s32 a0); -extern void (*D_8018EFA0[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018EF90; -extern void func_801528B0(s32 arg0); -extern void func_8015294C(s32 a0); -extern void func_80152A08(s32 a0); -extern void func_80152AC8(s32 a0); -extern void func_80152A50(s32 *a0); -extern void (*D_8018EFB4[])(void); -extern void func_80152B6C(void *a0); -extern void func_80152BF0(s32 a0); -extern void func_80152BA8(s32 a0); -extern void func_80152C80(s32 *a0); -extern void func_80152C40(s32 *a0); -extern void (*D_8018EFD0[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018EFC0; -extern void func_80152DA8(s32 arg0); -extern void func_80152E4C(s32 a0); -extern void func_80152EFC(s32 a0); -extern void func_80152FBC(s32 a0); -extern void func_80152F44(s32 *a0); -extern void (*D_8018EFE4[])(void); -extern void func_80153060(void *a0); -extern void func_801530E4(s32 a0); -extern void func_8015309C(s32 a0); -extern void func_80155440(s32 *a0); -extern void func_801530E4(s32 arg0); -extern void func_80153150(struct S80153150 *a0); -extern void func_801531BC(s32 a0); -extern void func_8015327C(s32 a0); -extern void func_80153204(s32 *a0); -extern void (*D_8018EFF8[])(void); -extern void func_80153320(void *a0); -extern void func_801533A4(s32 a0); -extern void func_8015335C(s32 a0); -extern void func_80153410(s32 *a0); -extern void func_80153490(s32 a0); -extern void func_80153550(s32 a0); -extern void func_801534D8(s32 *a0); -extern void (*D_8011DB28)(s32 a0); -extern s32 func_801536DC(s32 param_1); -extern void func_800139C8(s32 a0, void *a1, void *a2); -extern s32 func_80153978(s32 a0, u16 *src); -extern s32 func_80133784(s32 a0, void *src, s32 dst); -extern s32 func_801539F8(s32 a0, void *a1); -extern s32 func_801539F8(s32 a0, void * a1); -extern s32 func_8016DA04(s32 a0); -extern s32 func_80153BD8(s32 a0); -extern s32 func_80153BF0(s32 a0); -extern void func_80153C18(void); -extern u16 D_8011F748; -extern void func_80153C30(void); -extern void func_80153C74(s16 a0, s16 a1); -extern s16 D_8011DB18; -extern void func_80153C44(int a0, int a1, s16 a2); -extern s16 D_8011DB0C; -extern s32 D_80115210; -extern void func_80153C8C(void); -extern void func_80153C9C(void); -extern s32 func_80153CBC(void); -extern s32 D_8018F00C; -extern void (*D_8018F034[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018F014; -extern void func_80153D7C(s32 param_1); -extern void func_8015410C(void); -extern void func_80153E00(s32 param_1); -extern void func_80151664(void); -extern void func_80154134(u8 *a0); -extern void func_80154190(u8 *a0, s32 a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154218(u8 *a0, s32 a1, s32 a2); -extern void func_801541D8(u8 *a0, s32 a1, s32 a2); -extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); -extern void func_801542A4(); -extern void func_801542A4(s32 *a0, s32 a1); -extern void func_8015430C(); -extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); -extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); -extern s32 func_80154358(void * arg0); -extern void func_80154AB4(s32 a0, s32 a1); -extern void func_80154B20(s32 a0, s32 a1, s32 a2); -extern void func_80154AE0(s32 a0, s32 a1, s32 a2); -extern void func_80154B7C(u8 *a0, s32 a1); -extern void func_80154B4C(u8 *a0, s32 a1); -extern void func_80154BC8(void *a0, s32 a1, s32 a2); -extern void func_80154B98(void *a0, s32 a1, s32 a2); -extern u8 D_800D8D10[]; -extern s16 D_80078E9E; -extern void func_801550FC(s32 a0); -extern void func_80154ED8(s32 a0, s32 a1); -extern void func_80154F9C(s32 a0); -extern void func_800183E0(s32 a0); -extern void func_801550FC(s32 arg0); -extern void func_8001D150(s32, s32); -extern void func_8001D130(int, int); -extern void func_80155150(int param_1); -extern s32 D_800DE2A4[]; -extern void func_801552F4(s32 a0); -extern void func_80155344(s32 a0); -extern s32 func_80155394(s32 *a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80029178(s32); -extern int (*D_8018F080[])(void); -extern s32 func_80155458(s32 param_1); -extern s32 func_801659DC(u8 *a0); -extern s32 func_801554B8(void *arg0); -extern void func_801555F4(void *a0); -extern void func_80155518(s32 *a0); -extern void func_80155580(void *a0); -extern void (*D_8018F084[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern S801563EC *func_801563EC(u16 idx); -extern s32 func_80029B4C(s32 a0, s32 a1); -extern s32 func_80029BC8(s32 a0, s32 a1); -extern s32 func_80029C44(s32 a0, s32 a1); -extern s32 func_8015640C(s32 a0, s32 a1); -extern s32 rand(void); -extern u32 func_8015616C(s32 param_1, u16 param_2); -extern u16 func_80156370(u16 param_1); -extern S801563EC * func_801563EC(u16 idx); -extern s32 func_801564B0(s32 a0); -extern s32 func_8002A1B4(void); -extern s32 func_8002A400(void); -extern s32 func_8002A670(void); -extern s32 func_8002A8E0(void); -extern s32 D_801151E0[]; -extern s32 func_801565C0(void); -extern void func_80156A14(s32 *a0); -extern void func_80156648(s32 *a0); -extern u8 D_8011DAD8[]; -extern s32 func_8014C568(s16 *a0, s16 *a1); -extern void func_801567BC(s32 a0); -extern B8 D_80128120[]; -extern B8 D_80128138[]; -extern S8 D_80126AF0[]; -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018F4E8[]; -extern void func_80156A1C(s32 param_1, s32 param_2); -extern s32 D_801150E0[]; -extern void func_80156A88(s32 a0, s32 a1); -extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); -extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); -extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); -extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern s32 func_80135004(s32 a0, void *a1, s32 a2); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801575E4(void *a0); -extern void func_801574DC(s32 *a0); -extern void func_80157544(void *a0); -extern void (*D_8018F4F8[])(void); -extern void func_8014CC28(s32 a0); /* defined */ -extern s32 func_8014F3E8(s32 a0); /* declared */ -extern void func_8015BDD0(s32 *a0); /* defined */ -extern void func_801575E4(void *a0); /* defined */ -extern void func_80157580(s32 arg0); -extern u8 D_800D4F14[]; -extern void func_801576A8(void *arg0); -extern s32 func_8015773C(u8 *a0); -extern s32 func_8015771C(u8 *a0); -extern s32 func_8015773C(u8 * arg0); -extern int D_801E5BE0; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018F520[])(void); -extern void func_80157808(void *param_1); -extern void func_80157880(s32 a0); -extern s32 func_801725A4(u8 *a0); -extern u8 D_800D5128; -extern u8 D_8018F500; -extern void func_801578C0(s32 param_1); -extern void func_80147A84(int); -extern void func_80148038(int, int); -extern void func_80147460(int); -extern void func_80146D90(int); -extern void func_80161450(void *a0); -extern void func_80157A8C(int); -extern void func_80154A74(int, int); -extern unsigned char D_800D5178; -extern unsigned char D_8018F510; -extern void func_8015795C(int param_1); -extern void func_80161D20(s32 a0, s32 a1); -extern void func_80157A8C(s32 a0); -extern void func_8016706C(s32 a0); -extern u8 D_800D51AC[]; -extern void func_80157AC8(s32 param_1); -extern void func_80157B74(int param_1); -extern void func_8016158C(void *a0); -extern void func_8015BE04(s32 *a0); -extern void func_80157BC8(s32 a0); -extern void func_80157CCC(s32 a0); -extern void func_80157DC4(void *a0); -extern void func_80157FC4(void *a0); -extern void func_80157D74(u16 *a0); -extern void (*D_8018F560[])(void); -extern void func_80157E38(void *); -extern void func_80157E00(void *a0); -extern void func_80157E38(void * a0); -extern s32 func_80157F64(s32 *a0); -extern s32 func_80156600(void *a0); -extern void func_80157EA4(void *a0); -extern void (*D_8018F568[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018F534; -extern void func_80158038(void * param); -extern u8 D_800D524C[]; -extern void func_80161418(void *a0); -extern void func_801580B4(s32 a0); -extern void func_801581AC(s32 a0); -extern void (*D_8018F574[])(void); -extern void func_8015824C(void *a0); -extern void func_801582C0(void *); -extern void func_80158288(void *a0); -extern u8 D_800D52A8[]; -extern void func_801585A4(s32 *a0); -extern void func_801582C0(void *a0); -extern s32 func_801585AC(s32 *a0); -extern u8 D_800D52E8[]; -extern void func_80158344(s32 *a0); -extern s32 func_801615C4(void *a0, s32 a1); -extern u8 D_8018F544; -extern u8 D_800D533C; -extern void func_80158434(s32 param_1); -extern void func_80158548(s32 param_1); -extern void func_801585EC(u8 *a0); -extern void func_80158794(void); -extern s32 D_801E5BE8; -extern s32 D_801E5BF4; -extern s32 D_801E5BF8; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018F5B0[])(s32 *); -extern void func_80158AE4(void *a0); -extern void func_80158AB4(void *a0); -extern void func_8016F264(void); -extern void func_80165840(void); -extern void func_801658DC(void); -extern void func_80165A78(s32); -extern void func_80158AE4(void * a0); -extern M2C_UNK D_800D58D8; -extern void func_80158BB0(void *arg0); -extern s32 func_80159404(s32 a0, s32 a1); -extern void func_80158C40(s32 *a0); -extern void func_80158CD8(s32 *a0); -extern s32 func_80159434(s32 a0, s32 a1); -extern void func_80158D60(s32 a0); -extern M2C_UNK D_800D5904; -extern void func_80158E24(s32 *a0); -extern s32 D_8018F584[]; -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80158F00(int param_1); -extern u8 D_80110C3C[]; -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80158FA4(s32 param_1); -extern s32 func_801399F0(s32 a0); -extern u8 D_80110C94[]; -extern u8 D_80110CD4[]; -extern void func_80159070(void *a0); -extern s32 func_80029A94(s32); -extern void func_80175454(void); -extern void func_800298BC(void *); -extern void func_8002992C(s32); -extern void func_800CF804(void); -extern void func_800CF818(void); -extern u8 D_80110D0C[]; -extern void func_80159120(s32 a0); -extern void func_801592CC(s32 *a0); -extern u8 D_800AE6BD; -extern s32 D_801E5BF0; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018F800[])(void); -extern void func_80159698(void *a0); -extern s32 func_801596D4(void *a0); -extern void func_80174B6C(void); -extern void func_80129248(s16 a0); -extern void func_8013C938(void); -extern void func_8013CB20(void); -extern void func_8013C98C(void); -extern void func_8002850C(s32, s32, s32); -extern void func_80028620(s32, void *); -extern s16 D_800B9AAC[]; -extern s16 D_800B9B00; -extern u16 D_801270C0; -extern u32 D_800AFAE8[]; -extern char D_8018F620[]; -extern s32 func_801596F0(s32 param_1); -extern s32 func_80159874(void); -extern void func_800167B8(s32 a0); -extern s32 func_8015987C(s32 a0); -extern int func_800167F0(int arg); -extern int func_801598BC(void); -extern void func_80159968(void *a0); -extern void func_801598E0(u8 *a0); -extern void (*D_8018F8A4[])(void); -extern void func_80159A20(void *a0); -extern void func_801599E0(void *a0); -extern void func_80159A18(void); -extern void func_80159BE4(s32); -extern void func_80159B08(s32 *a0); -extern void func_80159B70(void *a0); -extern void func_80159B3C(void * a0); -extern void (*D_8018F9F8[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018F814; -extern void func_80159BE4(s32 arg0); -extern void func_8015A1C8(s32 a0); -extern void func_8015A2D8(s32); -extern void func_8015A1FC(s32 *a0); -extern void func_8015A264(void *a0); -extern void func_8015A230(s32 *a0); -extern void (*D_8018FA00[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018F824; -extern s32 func_80172608(u8 *a0); -extern void func_8015A2D8(s32 param_1); -/* ==== end §8b carried decl layer ==== */ - - -/* func_8015A3C8 (ov_SC01_077_after, 493 ins, jtbl_801D8B34) — Phase 26 crack - * Entity air/fall update: 7-case switch (0/1/2/6 shared, 3/4/5 own, no default block), - * then a big velocity-clamp tail with a nested char switch (0x41 / 0x53+0x73). - * PIN-FREE. Offset-pure (s32 arg0 + raw offsets) — x134 template-safe. - */ -extern u8 D_80078E78[]; -extern s16 currentLocationId; - -extern s32 func_80149D9C(s32 a0); -extern void func_80149FA8(void); -extern s32 func_80149FB0(s32 a0); -extern s32 func_80161B84(void *a0); -extern s32 func_80161B18(void *a0); -extern s32 func_8014A048(s32 a0); -extern void func_8014A218(void); -extern int func_80161BE0(void *param_1); -extern s32 func_801619A4(s32 *a0); -extern s32 func_80149AA8(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern s32 func_80149B54(s32 * arg0); -extern void func_80149BAC(s32 *a0); -extern s32 func_801498E0(s32 *a0); -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_800CCCC0(s32 a0); -extern s32 func_80149CD4(s32 a0); -extern void func_8015E880(s32 *a0); -extern s32 func_801496D4(void *a0); -extern void func_80149704(void); -extern s32 func_801488A8(u8 *a0); -extern void func_8014C010(s32 a0, s32 a1); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern s32 func_8015ABD4(s32 a0, s32 a1, s32 a2); -extern void func_8015AC48(s32 a0); -extern int func_80148AFC(void *a0); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern u16 func_801487F4(s32 *a0); -extern s32 func_8016F1C4(void); -extern s32 func_8015AB7C(s32 a0); -extern void func_801541D8(u8 *a0, s32 a1, s32 a2); -extern s32 func_80148824(void *arg0); -extern void func_80147A84(s32 a0); -extern void func_801473EC(s32 *a0); -extern void func_8014D738(void); -extern void func_8015C6E0(s32 *a0); -extern void func_8014E934(s32 _arg0); -extern void func_80155440(s32 *a0); -extern void func_801553C0(s32 a0); -extern void func_80161278(void *a0); -extern void func_80161C24(s32 a0, s32 a1); -extern s32 func_80172608(u8 *a0); -extern void func_801483E8(void); - -s32 func_8015A3C8(arg0) -s32 arg0; -{ - - extern void (*D_8018F8B0[])(void *); - extern u16 D_800B99DA; - extern s32 D_800D5428; - extern M2C_UNK D_8018F834; - s32 min; - s32 grav; - s32 hi; - s32 t; - s32 lo1; - s32 lo2; - s32 sv; - u8 *p; - - p = D_80078E78; - if (currentLocationId == 0x302A) { - min = -0xC0000; - grav = -0x4000; - hi = 0; - } else { - min = -0xB0000; - grav = -0x1000; - hi = 0; - } - - if (func_80149D9C(arg0) != 0) { - D_8018F8B0[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_80149FA8)(arg0); - return; - } - ((void (*)(s32))func_80149FB0)(arg0); - if (((s32 (*)(s32))func_80161B84)(arg0) != 0) { - return; - } - if (((s32 (*)(s32))func_80161B18)(arg0) != 0) { - return; - } - if (*(s32 *)(arg0 + 0xB4) == (s32)&D_800D5428) { - if (func_8014A048(arg0) != 0) { - D_8018F8B0[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_8014A218)(arg0); - return; - } - } - if (((s32 (*)(s32))func_80161BE0)(arg0) != 0) { - return; - } - switch (((s32 (*)(s32))func_801619A4)(arg0)) { - case 0: - case 1: - case 2: - case 6: - if (((s32 (*)(s32))func_80149AA8)(arg0) != 0) { - D_8018F8B0[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_80149AD4)(arg0); - return; - } - if (((s32 (*)(s32))func_80149B54)(arg0) != 0) { - D_8018F8B0[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_80149BAC)(arg0); - return; - } - break; - case 3: - ((void (*)(s32))func_801498E0)(arg0); - break; - case 4: - ((void (*)(s32))func_80149954)(arg0); - break; - case 5: - if (((s32 (*)(s32))func_80149A64)(arg0) != 0) { - D_8018F8B0[*(u16 *)arg0]((void *)arg0); - func_800CCCC0(arg0); - return; - } - break; - } - - if (func_80149CD4(arg0) != 0) { - D_8018F8B0[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_8015E880)(arg0); - return; - } - if (((s32 (*)(s32))func_801496D4)(arg0) != 0) { - D_8018F8B0[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_80149704)(arg0); - return; - } - if (((s32 (*)(s32))func_801488A8)(arg0) == 0) { - sv = *(s32 *)(arg0 + 0x2C); - D_8018F8B0[*(u16 *)arg0]((void *)arg0); - func_8014C010(arg0, 1); - ((void (*)(s32, s32))func_80147078)(arg0, 0); - ((void (*)(s32))func_80159B70)(arg0); - if (func_8015ABD4(arg0, sv, min) != 0) { - func_8015AC48(arg0); - } - return; - } - - ((void (*)(s32))func_80148AFC)(arg0); - if (*(u32 *)(arg0 + 0x44) & 0x200) { - if (*(s32 *)(arg0 + 0x23C) == 0) { - func_80154150(arg0, 0xA); - func_80154A74(arg0, 0x1C); - } - ((void (*)(s32, s32))func_80146DB8)(arg0, (s32)&(*(s32 *)&D_8018F834)); - func_80147AD4(arg0, 0, 0, 0); - } else { - switch (*(u8 *)(arg0 + 0xA9)) { - case 0x41: - func_80147AD4(arg0, 0, 0, grav); - if (*(s32 *)(arg0 + 0x23C) == 0) { - if (((s32 (*)(s32))func_801487F4)(arg0) & 4) { - if (*(s32 *)(arg0 + 0x2C) < -0x40000) { - *(s32 *)(arg0 + 0x2C) = -0x40000; - } - } else if (func_8016F1C4() == 0) { - if ((*(s16 *)(p + 0x26) < 0x20) || (*(s16 *)(p + 0x2E) < 0x20)) { - if (*(s32 *)(arg0 + 0x2C) < -0x40000) { - *(s32 *)(arg0 + 0x2C) = -0x40000; - } - } else if ((*(s16 *)(p + 0x26) < 0x40) || (*(s16 *)(p + 0x2E) < 0x30)) { - if (*(s32 *)(arg0 + 0x2C) < -0x80000) { - *(s32 *)(arg0 + 0x2C) = -0x80000; - } - } - } - if (*(s32 *)(arg0 + 0x2C) < min) { - *(s32 *)(arg0 + 0x2C) = min; - } - if (*(s32 *)(arg0 + 0x2C) >= hi) { - *(s32 *)(arg0 + 0x2C) = hi; - } - lo1 = -0x94000; - t = *(s32 *)(arg0 + 0x2C); - if (t < lo1) { - func_80154150(arg0, 8); - } else if (t < -0x70000) { - ((void (*)(s32, s32, s32))func_801541D8)(arg0, 7, func_8015AB7C(arg0) & 0xFFFF); - } else { - func_80154150(arg0, 6); - } - } - break; - case 0x53: - case 0x73: - *(s32 *)(arg0 + 0x2C) = (min * (((s32 (*)(s32))func_80148824)(arg0) & 0xFF)) / 127; - if (func_8016F1C4() == 0) { - if ((*(s16 *)(p + 0x26) < 0x40) || (*(s16 *)(p + 0x2E) < 0x30)) { - if (*(s32 *)(arg0 + 0x2C) < -0x80000) { - *(s32 *)(arg0 + 0x2C) = -0x80000; - } - } - if ((*(s16 *)(p + 0x26) < 0x20) || (*(s16 *)(p + 0x2E) < 0x20)) { - if (*(s32 *)(arg0 + 0x2C) < -0x40000) { - *(s32 *)(arg0 + 0x2C) = -0x40000; - } - } - } - if (*(s32 *)(arg0 + 0x2C) < min) { - *(s32 *)(arg0 + 0x2C) = min; - } - if (*(s32 *)(arg0 + 0x2C) >= hi) { - *(s32 *)(arg0 + 0x2C) = hi; - } - func_80147A84(arg0); - if (*(s32 *)(arg0 + 0x23C) == 0) { - lo2 = -0x94000; - t = *(s32 *)(arg0 + 0x2C); - if (t < lo2) { - func_80154150(arg0, 8); - } else if (t < -0x70000) { - ((void (*)(s32, s32, s32))func_801541D8)(arg0, 7, func_8015AB7C(arg0) & 0xFFFF); - } else { - func_80154150(arg0, 6); - } - } - break; - } - } - - ((void (*)(s32))func_801473EC)(arg0); - if ((min >= *(s32 *)(arg0 + 0x2C)) && !(D_800B99DA & 7)) { - func_8014C010(arg0, 2); - } - if (((s32 (*)(s32))func_8014D738)(arg0) != 0) { - D_8018F8B0[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_8015C6E0)(arg0); - return; - } - if (((s32 (*)(s32))func_8014E934)(arg0) != 0) { - ((void (*)(s32))func_80155440)(arg0); - func_80154150(arg0, 0x12); - func_80154A74(arg0, 0x17); - *(s32 *)(arg0 + 0x23C) = 1; - } else { - if (*(s32 *)(arg0 + 0x23C) != 0) { - func_801553C0(arg0); - func_80154150(arg0, 6); - func_80154A74(arg0, 0x21); - } - *(s32 *)(arg0 + 0x23C) = 0; - } - if (((s32 (*)(s32))func_80161278)(arg0) == 0) { - if (*(u16 *)(arg0 + 0xB8) & 0x2000) { - func_80161C24(arg0, *(u16 *)(arg0 + 0x16E)); - } - ((void (*)(s32))func_80172608)(arg0); - ((void (*)(s32))func_801483E8)(arg0); - } -} - - -DEFINE_func_8015AB7C() /* dedup: shared engine-core @0x8015AB7C (src/shared) */ - -DEFINE_func_8015ABD4() /* dedup: shared engine-core @0x8015ABD4 (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH (param held in $s0 across 3 calls; lhu 0x16E; &D_8018F844 arg) -extern void func_80154150(s32 a0, s32 a1); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern s32 func_80161CD0(s32 a0, s32 a1); -extern M2C_UNK D_8018F844; - -void func_8015AC48(s32 arg0) -{ - func_80154150(arg0, 9); - func_80146DB8((s32 *)arg0, &D_8018F844); - func_80161CD0(arg0, M2C_FIELD(arg0, u16 *, 0x16E)); -} - - -DEFINE_func_8015AC90() /* dedup: shared engine-core @0x8015AC90 (src/shared) */ - -DEFINE_func_8015ACC4() /* dedup: shared engine-core @0x8015ACC4 (src/shared) */ - -DEFINE_func_8015AD08() /* dedup: shared engine-core @0x8015AD08 (src/shared) */ - - -extern void (*D_8018FA08[])(void); - -void func_8015AD3C(void *a0) { - D_8018FA08[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015AD78() /* dedup: shared engine-core @0x8015AD78 (src/shared) */ - -DEFINE_func_8015ADB0() /* dedup: shared engine-core @0x8015ADB0 (src/shared) */ - diff --git a/src/ov_SC04_019/ov_SC04_019_jr_8015AE2C.c b/src/ov_SC04_019/ov_SC04_019_jr_8015AE2C.c deleted file mode 100644 index baf328224..000000000 --- a/src/ov_SC04_019/ov_SC04_019_jr_8015AE2C.c +++ /dev/null @@ -1,1879 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -extern void func_801458E0(void); -extern s32 D_800AE6AC; -extern s32 D_800AE6B0; -extern s16 D_800B9A0A; -extern u8 D_80078E50; -extern void func_800D185C(u8 *a0); -extern void func_801458E8(void); -extern s32 func_80029504(void); -extern void func_80145B24(void); -extern u8 D_8018F74C; -extern u8 D_8018F6BC; -extern u8 D_8018F698; -extern u8 D_8018F674; -extern u8 D_8018F728; -extern u8 D_8018F704; -extern u8 D_8018F6E0; -extern u8 D_8018F650; -extern void func_80145934(void); -extern u8 D_8018F7DC; -extern u8 D_8018F7B8; -extern u8 D_8018F794; -extern u8 D_8018F770; -extern void func_80145A2C(void); -extern s32 func_800291DC(s32); -extern void func_800291C8(s32, s32); -extern void func_80162120(void); -extern void func_80029124(s32, s32); -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); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_80145BF8(void); -extern s32 func_800291B4(s32 arg); -extern void func_800291A0(s32, s32); -extern void func_80145C54(void); -extern s32 func_80145CEC(); -extern s32 func_80029178(s32 arg); -extern void func_80146014(s32 a0); -extern unsigned char D_8018EBD4[]; -extern unsigned char D_8018EC04[]; -extern unsigned char D_8018EC54[]; -extern unsigned char D_8018EC84[]; -extern unsigned char D_8018ECB4[]; -extern void func_80145EE8(s32 param_1); -extern void MoveImage(void *a0, s32 a1, s32 a2); -extern void func_80146074(void); -extern s32 func_80146128(void); -extern void func_80146360(void); -extern void func_801463A0(); -extern void func_8014607C(void); -extern s32 *D_80126B78; -extern u8 D_80078EC1; -extern s32 D_80078EC8; -extern s32 D_80126B9C; -extern s32 D_8011F730; -extern u16 D_801152B8; -extern u16 D_8012693A; -extern u8 D_80126BE0[]; -extern u8 D_801150F0[]; -extern void *memcpy(void *dst, const void *src, u32 n); -extern void func_80146FC4(s32 a0); -extern void func_80150A70(s32 a0); -extern void func_80147098(s32 *a0); -extern void func_8014A638(s32 arg0); -extern s32 func_80155458(s32 a0); -extern s32 func_80029104(void); -extern void func_80029344(void); -extern void func_8014ADE0(s32 a0); -extern void func_8014B350(s32 a0); -extern void func_8014B7A4(s16 *param_1); -extern s32 func_80161D58(s32 a0); -extern void func_80161A90(s32 a0); -extern void func_8014B504(u16 *a0); -extern void func_80149BEC(s32 a0); -extern void func_8014B5D0(s32 *a0); -extern void func_8014C99C(u8 *a0); -extern void func_8014B190(s32 s0); -extern void func_80148648(s32 a0, s32 a1); -extern s32 func_80149228(s32 a0); -extern void func_8014A59C(s32 a0); -extern void func_8016F14C(void *a0); -extern void func_80154418(void *a0); -extern void func_80154BE4(s32 a0); -extern void func_80165694(s32 arg0); -extern void func_801654A8(s32 a0); -extern void func_8014A680(s32 a0); -extern void func_8014A6A8(s32 a0); -extern void func_8014A71C(s32 a0); -extern void func_80172588(s32 *a0); -extern void func_801473DC(s32 *a0); -extern void func_80015978(s32 a0, s32 *a1); -extern void (*D_8018ED04[])(void *); -extern u8 D_80126BA4; -extern s32 D_80127098; -extern s32 D_80127094; -extern s32 D_80127090; -extern void func_80146534(void); -extern void func_8001D074(s32 a0, s32 a1); -extern void func_80146554(void); -extern void func_80146578(void); -extern void func_8001CFDC(s32, s32); -extern void func_8014659C(void); -extern void func_8001D074(s32, s32); -extern void func_801465C0(void); -extern void func_801465E4(void); -extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); -extern s32 D_8011F9D0; -extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); -extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 D_8011F750; -extern s32 D_8011F754; -extern u8 * func_801468C8(s32 arg0, u8 arg1); -extern s32 D_8011D030; -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); -extern s32 func_80146B9C(void *a0); -extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); -extern u16 D_8011DA28; -extern s32 func_80146B9C(void * arg0); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80146CA0(void *a0); -extern void func_80146CB4(void *a0); -extern void func_80146CC8(s32 a0); -extern void func_80146D30(s32 a0); -extern void func_80146D80(s32 *a0); -extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80146D90(s32 a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); -extern void func_80146E90(s32 *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80015954(s32 a0, s32 a1); -extern void func_80149374(s32 a0, s32 a1); -extern void func_80146F58(s32 a0, s32 a1); -extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 func_8012A68C(void); -extern s16 func_8012A758(void); -extern void func_8004978C(s16 *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern u8 D_80126DB0[]; -extern u16 D_80126DB6; -extern void func_8014704C(s32 *a0); -extern s32 func_80147054(void *a0); -extern void func_80147060(u8 * a0); -extern void func_8014706C(void *arg0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80147084(s32 *a0); -extern void func_8014708C(void *arg0); -extern s32 func_801470A0(void *a0); -extern void func_801470AC(s32 *a0); -extern void func_801470B4(s32 arg0); -extern void func_801470C0(s32 a0); -extern void func_80147118(s32 a0); -extern s16 D_80126BB8; -extern s16 D_80126BBA; -extern s16 D_80126BBC; -extern void func_80147264(s32 a0); -extern void func_80147290(void); -extern void func_801472B4(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void *D_8012707C; -extern void func_801472DC(void); -extern void func_801472F0(void *a0); -extern void func_80147364(u16, s32); -extern void func_80147300(u16 arg0); -extern void func_80147324(s32 arg0); -extern void func_801473EC(s32 *a0); -extern void func_80147460(s32 a0); -extern void func_80147514(); -extern void func_80147628(s32 a0); -extern void func_80147478(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); -extern s32 func_800129CC(s32 a0, s32 a1); -extern void func_80147514(s32 arg0); -extern void func_80013F3C(s32 a0); -extern void func_80012558(s32 a0, s32 a1); -extern void func_800126C4(s32 a0, s32 a1); -extern void func_800123F0(s32 a0, s32 a1); -extern void func_80147718(s32 a0); -extern void func_80147788(void *a0, s32 a1); -extern void func_801477A8(void *a0, s32 a1); -extern void func_801477C8(void *a0, s32 a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80147814(s32 a0, s32 a1); -extern void func_80147928(int a0, int a1); -extern void func_8014799C(int a0, int a1); -extern void func_80147A10(int a0, int a1); -extern void func_80147860(int a0, int a1, int a2, int a3); -extern void func_80147948(s32 a0, s32 a1, s32 a2); -extern void func_801479BC(s32 a0, s32 a1, s32 a2); -extern void func_80147A30(s32 a0, s32 a1, s32 a2); -extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147948(int a0, int a1, int a2); -extern void func_801479BC(int a0, int a1, int a2); -extern void func_80147A30(int a0, int a1, int a2); -extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147A84(s32 arg0); -extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147AAC(s32 arg0); -extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80147B5C(s32 a0, void *a1); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern void func_80147B18(s32 a0); -extern void func_80147B5C(s32 arg0, void *arg1); -extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147DC0(s32 a0, s32 a1); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147F50(s32 arg0); -extern void func_80148038(s32 a0, s32 a1); -extern s32 ratan2(s32 a0, s32 a1); -extern s32 csqrt(s32 a0); -extern s32 func_80012A60(s32 a0, s32 a1); -extern void func_80148094(int param_1, short *param_2, int *param_3); -extern void func_801485B8(s32 a0, s32 a1, s32 a2); -extern void func_801484B0(s32 a0, s32 a1); -extern s32 func_80154358(void *a0); -extern void func_801484E8(s32 a0, s32 a1); -extern void func_80148534(s32 a0, s32 a1); -extern void func_8014856C(s32 a0, s32 a1); -extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); -extern void func_80148634(void *a0); -extern u8 D_800B9A64; -extern s32 func_80014DC0(); -extern s32 func_80014D68(); -extern s32 func_80014D94(); -extern s32 func_80014CF8(); -extern void func_800120DC(); -extern s32 func_800CF8B4(); -extern u16 func_801487F4(s32 *a0); -extern u16 func_80148800(s32 *a0); -extern u8 func_8014880C(s32 *a0); -extern u16 func_80148818(s32 *a0); -extern s32 func_80047D3C(s32 a0); -extern s32 func_80148824(void *arg0); -extern s32 func_801488A8(u8 *a0); -extern s32 func_8014891C(s32 a0); -extern s32 func_80148980(u8 *a0); -extern s32 func_801489E8(s32 a0); -extern s32 func_80148A48(s32 a0); -extern int func_80148AFC(void *a0); -extern void func_80148AAC(u8 *a0); -extern s32 func_80148C18(void); -extern s32 func_80148C20(s32 a0, s16 a1); -extern s32 func_80148C34(s32 a0, s32 a1); -extern s32 func_80148C4C(s32 a0, s32 a1); -extern s32 func_80148C64(s32 a0, s32 a1); -extern s32 func_80148C7C(void); -extern s32 func_80148C84(s32 a0, s32 a1); -extern s32 func_80148C9C(s32 a0, s32 a1); -extern s32 func_80148CB4(s32 a0, s32 a1); -extern s32 func_80148CCC(s32 a0, s32 a1); -extern s32 func_80148CE4(void); -extern s32 func_80148CEC(void); -extern s32 func_80148CF4(s32 a0, s32 a1); -extern s32 func_80148D0C(s32 a0, s32 a1); -extern s32 func_80148D24(void *a0, int a1); -extern s32 func_80148D3C(void); -extern s32 func_80148F60(void); -extern s32 func_80148F68(s32 a0); -extern s32 func_80148F74(s32 a0); -extern s32 func_80148F80(s32 a0); -extern s32 func_80148F8C(s32 a0); -extern s32 func_80148F98(void); -extern s32 func_80148FA0(s32 a0); -extern s32 func_80148FAC(s32 a0); -extern s32 func_80148FB8(s32 a0); -extern s32 func_80148FC4(s32 a0); -extern s32 func_80148FD0(void); -extern s32 func_80148FD8(void); -extern s32 func_80148FE0(s32 a0); -extern s32 func_80148FEC(s32 a0); -extern s32 func_80148FF8(s32 a0); -extern s32 func_80149004(void); -extern void func_8014900C(s32 *a0); -extern void func_80149020(s32 *a0); -extern void func_80149034(s32 *a0); -extern void func_80149048(s32 *a0); -extern void func_8014905C(u8 *a0); -extern void func_801490E0(s32 *a0, s16 a1); -extern void func_801490E8(s32 *a0, s16 a1); -extern void func_801490F0(s32 *a0, s16 a1); -extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); -extern void func_801490F8(s32 a0, s32 a1); -extern s32 func_801491C4(s32 a0); -extern s32 func_80149184(s32 a0); -extern s32 D_801151D4; -extern void func_80149204(s32 *a0); -extern void func_80149210(s32 a0, s32 a1); -extern s32 func_80149284(s32 *a0, s32 a1); -extern void func_80149350(s32 arg0); -extern void func_80149290(s32 a0); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_80149374(s32 arg0, s32 arg1); -extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8014942C(s32 arg0); -extern void func_8012EF70(s32 a0, s32 a1); -extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012EFB8(s32 a0); -extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); -extern void func_8014964C(s32 param_1, s32 param_2); -extern s32 func_801496D4(void *a0); -extern void func_8015AD08(); -extern void func_80149704(void); -extern void func_8015ACC4(); -extern void func_80149724(void); -extern u8 D_80078EBF; -extern s32 func_80149744(struct S_80149744 *a0); -extern void func_8015F7A0(); -extern void func_80149788(void); -extern void func_801653B8(); -extern void func_80149864(void); -extern s16 currentLocationId; -extern s32 func_8016F1AC(void); -extern s32 func_80149884(void); -extern void func_80160B00(); -extern void func_801498C0(void); -extern s32 func_80149AA8(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern void func_80146750(void *a0); -extern s32 func_801498E0(s32 *a0); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_80147364(u16 a0, s32 a1); -extern s32 func_800CCF28(s32 a0); -extern u8 D_80126B5C; -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_8015DAC4(s32 *a0); -extern void func_8015554C(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern void func_80149B14(s32 *a0); -extern u8 func_8014BEF8(void); -extern s32 func_80149B54(s32 * arg0); -extern void func_8015DE24(s32 *a0); -extern void func_80157510(s32 *a0); -extern void func_80149BAC(s32 *a0); -extern s32 func_80029178(s32 a0); -extern s32 func_80149C08(s32 arg0); -extern void func_801577C8(); -extern void func_80149C94(void); -extern void func_80157D20(void); -extern void func_80149CB4(void); -extern s32 func_80149CD4(s32 a0); -extern u8 func_8014B5B8(s32 *a0); -extern s32 func_80149D10(s32 a0); -extern s32 func_80149E94(s32 a0); -extern s32 func_80149DD8(s32 a0); -extern s32 func_80149D9C(s32 a0); -extern u8 D_801202A0[]; -extern s32 func_80149F2C(s32 a0, s32 a1); -extern s32 func_80149E94(s32 arg0); -extern void func_80149FA8(void); -extern s32 D_8018EDCC[]; -extern u8 D_80078E78[]; -extern s32 func_80149FB0(s32 a0); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern void func_8014A1B0(s32 a0, s32 a1); -extern s32 func_8014A048(s32 param_1); -extern u16 func_80156370(u16 a0); -extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); -extern void func_8015D4B4(); -extern void func_8014A218(void); -extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); -extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); -extern s32 func_8014A238(s32 arg0); -extern s32 func_8014A2E4(s32 a0); -extern void func_8014A380(s32 a0, s32 a1); -extern s16 D_801152B0; -extern s16 D_801152B4; -extern s32 func_8014A3E0(struct S_8014A3E0 *a0); -extern s32 func_8014A454(s32 a0); -extern s32 func_8014A4B4(void *a0); -extern void func_8015EDD4(); -extern void func_8014A4FC(void); -extern s32 func_8014A674(s32 *a0); -extern s32 func_8014A69C(s32 *a0); -extern s32 func_8014A6C4(s32 a0); -extern void func_8015E184(); -extern void func_8014A830(void); -extern s32 func_80029AF4(void); -extern s32 func_8014A850(s32 param_1); -extern void func_8014AA04(s32 a0); -extern void func_801599A4(void *a0); -extern void func_80159B3C(void *a0); -extern s32 func_80165A20(s32 a0); -extern void func_8014AB7C(); -extern void func_8014AC10(); -extern void func_8014AA28(void); -extern void func_8014AB5C(void); -extern void func_80162CCC(void); -extern void func_8014AB7C(s32 arg0); -extern void func_8014ABF0(void); -extern void func_80016714(void *a0, s32 a1); -extern void func_8014AC10(s32 arg0); -extern void func_8014ACC0(s32 a0, s32 a1); -extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); -extern void func_8014ACE8(void *a0, s32 a1, s32 a2); -extern void func_80146AFC(void *a0); -extern void func_8014ADA8(s32 a0, s32 a1); -extern void func_8014AD7C(s32 a0); -extern s32 D_80078E8C; -extern void func_8014B034(s32 arg0); -extern void func_8014B00C(s32 arg0); -extern void func_8014B084(void); -extern s16 D_80078E90; -extern void func_8014B034(s32 a0); -extern u16 D_80078EAC; -extern u8 D_80078EBA; -extern void func_800D10EC(void); -extern void func_8002AC98(void); -extern s32 func_8014B154(s32 *a0); -extern void func_8014B12C(void); -extern void func_8014B2F8(void); -extern void func_8014B4C4(void); -extern void func_8014B160(s32 a0); -extern s32 func_8016F1C4(void); -extern s16 D_80078E96; -extern s16 D_80078EB8; -extern u16 D_80078EA6; -extern void func_8014B2A8(void); -extern void func_8014B310(void); -extern void func_8014B2D0(void); -extern s32 D_80078E94; -extern s32 D_80078ECC; -extern void func_8014B33C(void); -extern u8 D_80062BF4[]; -extern void func_8014BC80(s32 a0, s32 a1); -extern void func_80019064(void *a0); -extern s32 D_80078E98; -extern void func_80166244(); -extern void func_8014B4D4(void *a0); -extern s16 D_80078E9A; -extern u8 D_80126D1C; -extern s32 D_80126D74; -extern void func_8014B598(s32 a0, s32 a1); -extern void func_8014B5B0(s32 *a0); -extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); -extern void func_8014B5D8(s32 s1); -extern s32 D_80078E9C; -extern s32 D_80078ED0; -extern void func_8014B6F0(s32 a0, s32 a1); -extern void func_8014B768(s32 a0, s32 a1); -extern void func_8014B944(s32 a0, s32 a1, s32 a2); -extern s32 D_80078EA4; -extern u16 D_80078EB2; -extern s16 D_80078EB4; -extern void func_8014BB0C(void); -extern void func_8014BB24(s32 a0, s32 a1, s32 a2); -extern void func_8014BC0C(s32 a0, s32 a1); -extern void func_8014BC44(s32 a0, s32 a1); -extern u8 D_800B9A17; -extern void func_8014BCC0(s32 a0, s32 a1); -extern u16 D_80078EB6; -extern s32 func_8014BCEC(s32 a0, s32 a1); -extern void func_8014BD24(s32 a0, s32 a1); -extern void func_8014BD60(s32 param_1, s32 param_2); -extern void func_8014BD98(s32 a0, u16 a1); -extern void func_8014BDC8(void); -extern void func_8014BDE0(void); -extern s32 func_8017267C(s32 *a0); -extern s32 func_80013294(void *a0, void *a1); -extern void func_80029ED4(s32 a0); -extern void func_8014BDE8(s32 a0); -extern void func_8014BE78(void); -extern void func_8014BE9C(void); -extern void func_80029124(s32 a0, s32 a1); -extern void func_8014BEC0(void); -extern void func_8014BF18(s32 a0); -extern void func_8014BF48(void); -extern u8 func_8014BF6C(void); -extern void func_8014BF8C(u8 arg0); -extern void func_8014BFB0(void); -extern u8 func_8014BFD4(void); -extern void func_8014BFF4(s32 a0, s32 a1); -extern void func_8014C010(s32 a0, s32 a1); -extern s32 func_8014C050(s32 a0, s32 a1); -extern s32 func_8014C088(s32 a0, s32 a1); -extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); -extern s32 func_8014C118(void * a0, s32 a1, s32 a2); -extern s32 func_8014C168(s32 * param_1, s32 param_2); -extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); -extern u8 D_8018EE54[]; -extern void func_8014C1A0(s32 arg0, s32 arg1); -extern s32 func_80013328(s32 a0, s32 a1); -extern s32 func_8014C59C(void *a0, void *a1); -extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); -extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); -extern s32 ratan2(s32 dx, s32 dy); -extern u8 D_8018EE5C; -extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); -extern s16 func_8014C5D0(s32 a0, s32 a1); -extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); -extern u8 D_80126D17; -extern void func_8014C6AC(void); -extern void func_8014C6C0(void); -extern u8 D_80126D1E; -extern void func_8014C6D0(void); -extern void func_8014C6E0(void); -extern s32 func_8014C860(s32 a0, s32 a1); -extern void func_8014C8C8(s32 a0, s32 *a1); -extern void func_8014C88C(s32 a0); -extern void func_8014C8C8(s32 dst, s32 * src); -extern void func_8014C8F0(s32 arg0); -extern u8 D_801151F0[]; -extern s32 func_8014C918(s32 a0, s32 a1); -extern s32 D_80126B50; -extern void func_8014C968(void); -extern void func_8014C978(void); -extern s32 func_8014C98C(void); -extern void func_80139914(s32 a0); -extern s32 func_8014CA00(s32 a0); -extern u16 func_8014CA70(s32 a0, s32 a1); -extern s32 func_8014CA14(s32 a0, s32 a1); -extern u16 func_8014CAE4(s32 *a0, s32 a1); -extern s32 func_8014CA88(s32 *a0, s32 a1); -extern s32 func_8014CAFC(void); -extern s32 func_8014CB0C(void); -extern s32 func_8014CB1C(void); -extern u8 D_80126D1F; -extern s32 func_8014CB2C(void); -extern s32 func_8014CB58(void); -extern u8 D_80126D1D; -extern void func_8014CB68(void); -extern s32 func_8014CB7C(void); -extern s32 func_8014CB8C(void); -extern struct Packed8 D_80126C98; -extern short D_80126C9E; -extern void func_8014CB9C(struct Packed8 *a0); -extern s32 D_80126CDC; -extern void func_8014CBD8(void); -extern s16 D_80126CC4; -extern void func_8014CBE8(void); -extern void func_8014CBF8(void *a0); -extern void func_8014D3E0(s32 a0); -extern void func_8014D04C(void); -extern void func_8014CCB4(void); -extern void func_8014CC28(s32 a0); -extern void func_8014CD0C(u8 *a0); -extern s32 func_8014CF04(s32 a0, s32 a1, void *a2); -extern void func_8014CD80(s32 a0, void *a1, void *a2); -extern void func_8014D0A4(s32 a0); -extern s32 func_8014D2A0(s32 a0, void *a1, void *a2); -extern s32 func_8014D12C(s32 a0, void *a1, void *a2); -extern void func_8014D438(s32 a0); -extern void func_8014D3E0(s32 _arg0); -extern void func_8014D610(s32 a0, void *a1, void *a2); -extern s32 func_8014D4C0(s32 a0, void *a1, void *a2); -extern void func_8014D790(s32 a0); -extern void func_8014D738(void); -extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); -extern s32 func_8014D820(s32 a0, u16 *a1, u16 *a2); -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); -extern void func_8014DF94(s32 arg0); -extern void func_8014DF3C(void); -extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ -extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ -extern s16 D_801152AC; -extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); -extern void func_8014E48C(s32 a0); -extern void func_8014E434(void); -extern void func_8014E5B4(s32 a0, void *a1, void *a2); -extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); -extern void func_8014E6F8(struct SubE6F8 *a0); -extern void func_8014E6A0(void); -extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); -extern void func_8014E934(s32 _arg0); -extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); -extern s32 func_8014E98C(void *a0); -extern u16 D_800B99DA; -extern s32 D_801150D8; -extern s16 D_801152AA; -extern u8 D_80126720[]; -extern s16 D_80126724; -extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); -extern s32 func_8014ED80(struct SubED80 *a0); -extern int D_801E5BA8; -extern void func_8014ED28(s32 _arg0); -extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F24C(struct SubF24C *a0); -extern void func_8014F1F4(void); -extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F4C0(); -extern s32 func_8014F468(void); -extern int func_8014F74C(); -extern int func_8014F6F4(void); -extern u8 D_800D3918[]; -extern u8 D_801152A8[]; -extern s32 D_801152BC; -extern int func_8014F74C(s32 arg0); -extern s32 func_8014FA70(s32 a0); -extern s32 D_801E5BAC; -extern void func_8014FA04(s32 a0); -extern s32 func_8014FBC0(); -extern s32 func_8014FC18(u8 *self); -extern int func_8014FD54(int param_1); -extern void func_8014FCFC(void); -extern void func_80150170(void *a0); -extern s32 func_8014FE60(void *a0); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_8014FE60(void *e); -extern s32 func_80134510(s32 arg); -extern s32 func_80150150(s32 a, s32 b); -extern s32 func_80150460(s32 a, s32 b); -extern void func_801504D8(u16 *a0); -extern s32 func_80150480(s32 _arg0); -extern s32 func_80150528(void *a0, void *a1, void *a2); -extern s32 func_80150528(void *arg0, void *arg1, void *arg2); -extern s32 func_801506A4(s32 a0, s32 a1); -extern s32 func_801505FC(s32 a0); -extern s32 func_801506A4(s32 arg0, s32 arg1); -extern void func_80150820(s32 a0, s32 a1); -extern void func_8015086C(int param_1); -extern s32 func_801508B4(s32 a0); -extern s32 func_8015094C(s32 a0); -extern short func_801508F8(s32 a0); -extern s32 D_8018EE8C; -extern s32 D_80126990; -extern s32 D_80126994; -extern u8 D_80126948[]; -extern s32 func_80021174(s32 a0, s32 a1); -extern s32 func_8015094C(s32 param_1); -extern void func_80150B9C(void); -extern s32 func_80151184(s32 a0, s32 a1, s32 a2); -extern s32 func_80150BA4(s32 a0); -extern s32 func_801619D0(void *a0); -extern void func_80150BC8(s32 *a0); -extern s32 func_80150480(s32 a0); -extern u16 D_800AE6DC; -extern void func_80150C48(s32 a0); -extern int func_80151184(int arg, int a1, int a2); -extern int func_80150CA0(int arg); -extern void func_80150EC4(s32 a, s32 b); -extern void func_80150CC4(s32 a); -extern void func_80150CE4(s32 a); -extern void func_80150D04(s32 a); -extern void func_80150D24(s32 a); -extern void func_80150D44(s32 a); -extern void func_80150D64(s32 a); -extern void func_80150D84(s32 a); -extern void func_80150DA4(s32 a); -extern void func_80150DC4(s32 a); -extern void func_80150DE4(s32 a); -extern void func_80150E04(s32 a); -extern void func_80150E24(s32 a); -extern void func_80150E44(s32 a); -extern void func_80150EC4(s32 a0, s32 a1); -extern void func_80150E64(s32 a0); -extern void func_80150E84(s32 a0); -extern void func_80150EA4(s32 a0); -extern u8 D_800AE6C0; -extern s16 D_800AE6C8; -extern s16 D_800AE6CA; -extern s16 D_800AE6CC; -extern s32 D_800AE6C4; -extern s16 D_800AE6CE; -extern u8 D_800AE6BE; -extern u8 D_801201F8[]; -extern void func_80150F78(void); -extern void func_80150F80(s32 a0); -extern int func_80150FB4(int arg); -extern void func_80150FD8(s32 a0); -extern int func_80151014(int arg); -extern void func_80151038(s32 a0); -extern int func_80151070(int arg); -extern int func_80151094(int arg); -extern void func_801510B8(void); -extern void func_801510C0(void); -extern int func_801510C8(int arg); -extern int func_801510EC(int arg); -extern s32 func_8012DB84(void); -extern s32 func_80151110(void); -extern void func_80151130(void); -extern int func_80151138(int arg); -extern void func_8015115C(s32 *a0, s16 a1); -extern s32 func_80151164(s32 a0, s32 a1); -extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); -extern void func_801511A8(u8 *a0); -extern void func_801511C4(u8 *a0); -extern int func_80151204(int arg, int a1); -extern int func_801511E0(int arg); -extern int func_80151204(int a0, int a1); -extern void func_80151238(void *a0); -extern void func_8015126C(u16 *p); -extern void func_80151780(s32 a0); -extern void func_801516F0(s32 *a0); -extern void func_8015173C(s32 *a0); -extern s16 D_8011DB1A; -extern s32 D_80127518; -extern s32 D_801151FC; -extern s32 func_801725CC(u8 *a0); -extern s32 func_80029D3C(void); -extern void func_80151878(void); -extern void func_80153B58(s32 *a0); -extern s32 func_80151880(s32 a0); -extern s32 func_801518D8(s32 a0); -extern s32 func_80151944(void); -extern s32 func_80151924(void); -extern void func_8014E934(s32 a0); -extern s32 func_8014F3E8(s32 a0); -extern void func_801519C8(s32 a0); -extern void func_80151980(s32 a0); -extern M2C_UNK D_800D5880; -extern s32 D_800D58AC; -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801519C8(s32 arg0); -extern void func_80151C54(s32 a0); -extern void func_801542DC(s32 *a0, s32 a1); -extern void func_8015BDD0(s32 *a0); -extern void func_80165718(s32 a0); -extern u8 D_800D46E4[]; -extern void func_80151AE4(s32 arg0); -extern void (*D_8018EF34[])(void); -extern void func_80151D24(void *a0); -extern void func_80151DB0(s32 a0); -extern void func_80151D60(void *a0); -extern s32 func_80172630(u8 *a0); -extern s32 D_80062C14; -extern void func_80151DB0(s32 param_1); -extern void func_80151E78(s32 *a0); -extern void func_80151ECC(struct S80151ECC *a0); -extern void func_80151FB4(s32 a0); -extern void func_80151F38(s32 *a0); -extern void func_801553C0(s32 a0); -extern void func_80153C18(); -extern void (*D_8018EF58[])(void); -extern void func_80152058(void *a0); -extern void func_801520DC(s32 a0); -extern void func_80152094(s32 a0); -extern void func_80147324(s32 a0); -extern u8 D_80062C04[]; -extern M2C_UNK D_8018EF48; -extern void func_801520DC(s32 arg0); -extern void func_801470B4(s32 a0); -extern void func_8015369C(s32 a0); -extern void func_80152194(s32 *a0); -extern s32 func_801536DC(s32 a0); -extern void func_8015220C(s32 a0); -extern s32 func_80153800(s32 a0); -extern void func_801522CC(s32 a0); -extern void func_80152254(s32 *a0); -extern void (*D_8018EF6C[])(void); -extern void func_80152370(void *a0); -extern void func_801523F4(s32 a0); -extern void func_801523AC(s32 a0); -extern void func_8001382C(s32 a0, void *a1, void *a2); -extern u8 D_8018EF78[]; -extern void func_801523F4(s32 arg0); -extern void func_801525F4(int); -extern s32 func_801535F4(void *arg0); -extern void func_8015BF48(s32 *a0); -extern void func_80152500(int param_1); -extern void func_801525F4(s32 a0); -extern void (*D_8018EF88[])(void); -extern void func_80152698(void *a0); -extern void func_80152714(s32 a0); -extern void func_801526D4(s32 a0); -extern void func_80152790(s32 a0); -extern void (*D_8018EFA0[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018EF90; -extern void func_801528B0(s32 arg0); -extern void func_8015294C(s32 a0); -extern void func_80152A08(s32 a0); -extern void func_80152AC8(s32 a0); -extern void func_80152A50(s32 *a0); -extern void (*D_8018EFB4[])(void); -extern void func_80152B6C(void *a0); -extern void func_80152BF0(s32 a0); -extern void func_80152BA8(s32 a0); -extern void func_80152C80(s32 *a0); -extern void func_80152C40(s32 *a0); -extern void (*D_8018EFD0[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018EFC0; -extern void func_80152DA8(s32 arg0); -extern void func_80152E4C(s32 a0); -extern void func_80152EFC(s32 a0); -extern void func_80152FBC(s32 a0); -extern void func_80152F44(s32 *a0); -extern void (*D_8018EFE4[])(void); -extern void func_80153060(void *a0); -extern void func_801530E4(s32 a0); -extern void func_8015309C(s32 a0); -extern void func_80155440(s32 *a0); -extern void func_801530E4(s32 arg0); -extern void func_80153150(struct S80153150 *a0); -extern void func_801531BC(s32 a0); -extern void func_8015327C(s32 a0); -extern void func_80153204(s32 *a0); -extern void (*D_8018EFF8[])(void); -extern void func_80153320(void *a0); -extern void func_801533A4(s32 a0); -extern void func_8015335C(s32 a0); -extern void func_80153410(s32 *a0); -extern void func_80153490(s32 a0); -extern void func_80153550(s32 a0); -extern void func_801534D8(s32 *a0); -extern void (*D_8011DB28)(s32 a0); -extern s32 func_801536DC(s32 param_1); -extern void func_800139C8(s32 a0, void *a1, void *a2); -extern s32 func_80153978(s32 a0, u16 *src); -extern s32 func_80133784(s32 a0, void *src, s32 dst); -extern s32 func_801539F8(s32 a0, void *a1); -extern s32 func_801539F8(s32 a0, void * a1); -extern s32 func_8016DA04(s32 a0); -extern s32 func_80153BD8(s32 a0); -extern s32 func_80153BF0(s32 a0); -extern void func_80153C18(void); -extern u16 D_8011F748; -extern void func_80153C30(void); -extern void func_80153C74(s16 a0, s16 a1); -extern s16 D_8011DB18; -extern void func_80153C44(int a0, int a1, s16 a2); -extern s16 D_8011DB0C; -extern s32 D_80115210; -extern void func_80153C8C(void); -extern void func_80153C9C(void); -extern s32 func_80153CBC(void); -extern s32 D_8018F00C; -extern void (*D_8018F034[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018F014; -extern void func_80153D7C(s32 param_1); -extern void func_8015410C(void); -extern void func_80153E00(s32 param_1); -extern void func_80151664(void); -extern void func_80154134(u8 *a0); -extern void func_80154190(u8 *a0, s32 a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154218(u8 *a0, s32 a1, s32 a2); -extern void func_801541D8(u8 *a0, s32 a1, s32 a2); -extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); -extern void func_801542A4(); -extern void func_801542A4(s32 *a0, s32 a1); -extern void func_8015430C(); -extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); -extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); -extern s32 func_80154358(void * arg0); -extern void func_80154AB4(s32 a0, s32 a1); -extern void func_80154B20(s32 a0, s32 a1, s32 a2); -extern void func_80154AE0(s32 a0, s32 a1, s32 a2); -extern void func_80154B7C(u8 *a0, s32 a1); -extern void func_80154B4C(u8 *a0, s32 a1); -extern void func_80154BC8(void *a0, s32 a1, s32 a2); -extern void func_80154B98(void *a0, s32 a1, s32 a2); -extern u8 D_800D8D10[]; -extern s16 D_80078E9E; -extern void func_801550FC(s32 a0); -extern void func_80154ED8(s32 a0, s32 a1); -extern void func_80154F9C(s32 a0); -extern void func_800183E0(s32 a0); -extern void func_801550FC(s32 arg0); -extern void func_8001D150(s32, s32); -extern void func_8001D130(int, int); -extern void func_80155150(int param_1); -extern s32 D_800DE2A4[]; -extern void func_801552F4(s32 a0); -extern void func_80155344(s32 a0); -extern s32 func_80155394(s32 *a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80029178(s32); -extern int (*D_8018F080[])(void); -extern s32 func_80155458(s32 param_1); -extern s32 func_801659DC(u8 *a0); -extern s32 func_801554B8(void *arg0); -extern void func_801555F4(void *a0); -extern void func_80155518(s32 *a0); -extern void func_80155580(void *a0); -extern void (*D_8018F084[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern S801563EC *func_801563EC(u16 idx); -extern s32 func_80029B4C(s32 a0, s32 a1); -extern s32 func_80029BC8(s32 a0, s32 a1); -extern s32 func_80029C44(s32 a0, s32 a1); -extern s32 func_8015640C(s32 a0, s32 a1); -extern s32 rand(void); -extern u32 func_8015616C(s32 param_1, u16 param_2); -extern u16 func_80156370(u16 param_1); -extern S801563EC * func_801563EC(u16 idx); -extern s32 func_801564B0(s32 a0); -extern s32 func_8002A1B4(void); -extern s32 func_8002A400(void); -extern s32 func_8002A670(void); -extern s32 func_8002A8E0(void); -extern s32 D_801151E0[]; -extern s32 func_801565C0(void); -extern void func_80156A14(s32 *a0); -extern void func_80156648(s32 *a0); -extern u8 D_8011DAD8[]; -extern s32 func_8014C568(s16 *a0, s16 *a1); -extern void func_801567BC(s32 a0); -extern B8 D_80128120[]; -extern B8 D_80128138[]; -extern S8 D_80126AF0[]; -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018F4E8[]; -extern void func_80156A1C(s32 param_1, s32 param_2); -extern s32 D_801150E0[]; -extern void func_80156A88(s32 a0, s32 a1); -extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); -extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); -extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); -extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern s32 func_80135004(s32 a0, void *a1, s32 a2); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801575E4(void *a0); -extern void func_801574DC(s32 *a0); -extern void func_80157544(void *a0); -extern void (*D_8018F4F8[])(void); -extern void func_8014CC28(s32 a0); /* defined */ -extern s32 func_8014F3E8(s32 a0); /* declared */ -extern void func_8015BDD0(s32 *a0); /* defined */ -extern void func_801575E4(void *a0); /* defined */ -extern void func_80157580(s32 arg0); -extern u8 D_800D4F14[]; -extern void func_801576A8(void *arg0); -extern s32 func_8015773C(u8 *a0); -extern s32 func_8015771C(u8 *a0); -extern s32 func_8015773C(u8 * arg0); -extern int D_801E5BE0; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018F520[])(void); -extern void func_80157808(void *param_1); -extern void func_80157880(s32 a0); -extern s32 func_801725A4(u8 *a0); -extern u8 D_800D5128; -extern u8 D_8018F500; -extern void func_801578C0(s32 param_1); -extern void func_80147A84(int); -extern void func_80148038(int, int); -extern void func_80147460(int); -extern void func_80146D90(int); -extern void func_80161450(void *a0); -extern void func_80157A8C(int); -extern void func_80154A74(int, int); -extern unsigned char D_800D5178; -extern unsigned char D_8018F510; -extern void func_8015795C(int param_1); -extern void func_80161D20(s32 a0, s32 a1); -extern void func_80157A8C(s32 a0); -extern void func_8016706C(s32 a0); -extern u8 D_800D51AC[]; -extern void func_80157AC8(s32 param_1); -extern void func_80157B74(int param_1); -extern void func_8016158C(void *a0); -extern void func_8015BE04(s32 *a0); -extern void func_80157BC8(s32 a0); -extern void func_80157CCC(s32 a0); -extern void func_80157DC4(void *a0); -extern void func_80157FC4(void *a0); -extern void func_80157D74(u16 *a0); -extern void (*D_8018F560[])(void); -extern void func_80157E38(void *); -extern void func_80157E00(void *a0); -extern void func_80157E38(void * a0); -extern s32 func_80157F64(s32 *a0); -extern s32 func_80156600(void *a0); -extern void func_80157EA4(void *a0); -extern void (*D_8018F568[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018F534; -extern void func_80158038(void * param); -extern u8 D_800D524C[]; -extern void func_80161418(void *a0); -extern void func_801580B4(s32 a0); -extern void func_801581AC(s32 a0); -extern void (*D_8018F574[])(void); -extern void func_8015824C(void *a0); -extern void func_801582C0(void *); -extern void func_80158288(void *a0); -extern u8 D_800D52A8[]; -extern void func_801585A4(s32 *a0); -extern void func_801582C0(void *a0); -extern s32 func_801585AC(s32 *a0); -extern u8 D_800D52E8[]; -extern void func_80158344(s32 *a0); -extern s32 func_801615C4(void *a0, s32 a1); -extern u8 D_8018F544; -extern u8 D_800D533C; -extern void func_80158434(s32 param_1); -extern void func_80158548(s32 param_1); -extern void func_801585EC(u8 *a0); -extern void func_80158794(void); -extern s32 D_801E5BE8; -extern s32 D_801E5BF4; -extern s32 D_801E5BF8; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018F5B0[])(s32 *); -extern void func_80158AE4(void *a0); -extern void func_80158AB4(void *a0); -extern void func_8016F264(void); -extern void func_80165840(void); -extern void func_801658DC(void); -extern void func_80165A78(s32); -extern void func_80158AE4(void * a0); -extern M2C_UNK D_800D58D8; -extern void func_80158BB0(void *arg0); -extern s32 func_80159404(s32 a0, s32 a1); -extern void func_80158C40(s32 *a0); -extern void func_80158CD8(s32 *a0); -extern s32 func_80159434(s32 a0, s32 a1); -extern void func_80158D60(s32 a0); -extern M2C_UNK D_800D5904; -extern void func_80158E24(s32 *a0); -extern s32 D_8018F584[]; -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80158F00(int param_1); -extern u8 D_80110C3C[]; -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80158FA4(s32 param_1); -extern s32 func_801399F0(s32 a0); -extern u8 D_80110C94[]; -extern u8 D_80110CD4[]; -extern void func_80159070(void *a0); -extern s32 func_80029A94(s32); -extern void func_80175454(void); -extern void func_800298BC(void *); -extern void func_8002992C(s32); -extern void func_800CF804(void); -extern void func_800CF818(void); -extern u8 D_80110D0C[]; -extern void func_80159120(s32 a0); -extern void func_801592CC(s32 *a0); -extern u8 D_800AE6BD; -extern s32 D_801E5BF0; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018F800[])(void); -extern void func_80159698(void *a0); -extern s32 func_801596D4(void *a0); -extern void func_80174B6C(void); -extern void func_80129248(s16 a0); -extern void func_8013C938(void); -extern void func_8013CB20(void); -extern void func_8013C98C(void); -extern void func_8002850C(s32, s32, s32); -extern void func_80028620(s32, void *); -extern s16 D_800B9AAC[]; -extern s16 D_800B9B00; -extern u16 D_801270C0; -extern u32 D_800AFAE8[]; -extern char D_8018F620[]; -extern s32 func_801596F0(s32 param_1); -extern s32 func_80159874(void); -extern void func_800167B8(s32 a0); -extern s32 func_8015987C(s32 a0); -extern int func_800167F0(int arg); -extern int func_801598BC(void); -extern void func_80159968(void *a0); -extern void func_801598E0(u8 *a0); -extern void (*D_8018F8A4[])(void); -extern void func_80159A20(void *a0); -extern void func_801599E0(void *a0); -extern void func_80159A18(void); -extern void func_80159BE4(s32); -extern void func_80159B08(s32 *a0); -extern void func_80159B70(void *a0); -extern void func_80159B3C(void * a0); -extern void (*D_8018F9F8[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018F814; -extern void func_80159BE4(s32 arg0); -extern void func_8015A1C8(s32 a0); -extern void func_8015A2D8(s32); -extern void func_8015A1FC(s32 *a0); -extern void func_8015A264(void *a0); -extern void func_8015A230(s32 *a0); -extern void (*D_8018FA00[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018F824; -extern s32 func_80172608(u8 *a0); -extern void func_8015A2D8(s32 param_1); -extern u8 D_800D48DC; -extern s32 func_8015AB7C(s32 a0); -extern s32 D_8011F9C4; -extern s32 func_8015ABD4(s32 a0, s32 a1, s32 a2); -extern s32 func_80161CD0(s32 a0, s32 a1); -extern M2C_UNK D_8018F844; -extern void func_8015AC48(s32 arg0); -extern void func_8015AC90(s32 a0); -extern void func_8015ADB0(s32 a0); -extern void func_8015ACC4(s32 *arg0); -extern void func_8015AD3C(void *a0); -extern void func_8015AD08(void *arg0); -extern void (*D_8018FA08[])(void); -extern void func_8015ADB0(s32); -extern void func_8015AD78(s32 a0); -extern void func_8015ADB0(s32 arg0); -/* ==== end §8b carried decl layer ==== */ - - -/* func_8015AE2C (ov_SC01_077_after, 562 ins, jtbl_801D8B54) — Phase 26 crack - * Entity main-update dispatcher: 7-case switch (0/1/2/6 shared, 3/4/5 own, no default - * block — out-of-range falls to the after-switch join), then movement/clamp/decay tail. - * PIN-FREE. Offset-pure (s32 arg0 + raw offsets) — ×134 template-safe. - * - * match_one: MATCH (562 ins). rtu_match (whole-TU): MATCH (562 ins) — see func_8015AE2C.md - * for the two TU-side prerequisites (engine_core.h DEFINE_func_8015BEC4 extern must drop its - * `(void)` prototype, and the def must stay K&R) plus the jtbl_carve trailing-pad-word note. - * - * Signature: `s32` return + K&R def are REQUIRED by the TU, byte-neutral vs void/ANSI here - * (both verified MATCH 562): engine_core.h's thunk DEFINE_func_8015BEC4 does - * `return func_8015AE2C();` (s32, zero-arg call) — only an unprototyped K&R def coexists - * with that call. §41d does not bite on this body (it has early `return;`s). - * - * jtbl_801D8B54 = 7 entries [0,1,2,6]->0x8015AEE4 [3]->0x8015AFE0 [4]->0x8015AFF0 - * [5]->0x8015B000, bound `sltiu 7`, default(out-of-range) -> 0x8015B044 (after-switch). - * The raw dlabel's 8th word 0x00000000 is NOT a table entry: it is the original TU's - * intra-TU `.align 3` pad between consecutive jtbls (B34/B54/B74 chain) — the compiled - * object emits exactly 28 B; the pad must stay in the raw post-carve data piece. - */ -extern s32 func_80161A60(s32 a0); -extern u16 func_801487F4(s32 *a0); -extern s32 func_80149FB0(s32 a0); -extern s32 func_801619A4(s32 *a0); -extern s32 func_80149C08(s32 a0); -extern void func_801577C8(); -extern s32 func_8015B6F4(s32 a0); -extern s32 func_8015B7B4(s32 a0); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_8015B8F8(s32 *a0); -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_801498E0(s32 *a0); -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_800CCCC0(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 func_8015B858(u8 *a0); -extern void func_80148038(s32 a0, s32 a1); -extern void func_80147460(s32 a0); -extern void func_80147814(s32 a0, s32 a1); -extern s32 func_800CF8B4(void); -extern s32 func_801491C4(s32 a0); -extern int func_80148AFC(void *a0); -extern s32 func_80149184(s32 a0); -extern void func_80146E90(s32 *a0, s32 a1); -extern void func_80147A30(s32 a0, s32 a1, s32 a2); -extern s32 func_80146E98(s32 a0); -extern void func_80146D90(s32 a0); -extern void func_80147A84(s32 a0); -extern void func_801473EC(s32 *a0); -extern s32 func_80172644(u8 *a0); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801541D8(u8 *a0, s32 a1, s32 a2); -extern s32 func_8014C050(s32 a0, s32 a1); -extern void func_800CCB78(s32 a0); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154274(s32 *a0, s32 a1); -extern s32 func_80161488(void *a0); -extern void func_80146CA0(void *a0); -extern s32 func_8014A674(s32 *a0); -extern void func_8014E434(void); -extern void func_8015CC40(s32 *a0); -extern s32 func_8014A69C(s32 *a0); -extern void func_8014E6A0(void); -extern void func_8015CF8C(s32 *a0); -extern s32 func_801725A4(u8 *a0); - -s32 func_8015AE2C(arg0) -s32 arg0; -{ - extern void (*D_8018F8B0[])(void *); - extern s16 D_801152A0; - extern u8 D_800D4BE0[]; - extern s32 D_800D4E94; - extern s32 D_800D4ED4; - extern u8 D_800D4F8C[]; - extern s32 D_800D4A9C; - extern s32 D_800D4B48; - - s32 flag; - s32 r; - s32 lim; - s32 doit; - s32 t; - - flag = 0; - if ((func_80161A60(arg0) != 0) && (((s32 (*)(s32))func_801487F4)(arg0) & 0x40) && (*(s32 *)(arg0 + 0x34) >= 0)) { - flag = 1; - if (*(s32 *)(arg0 + 0x5C) == 0) { - *(s32 *)(arg0 + 0x58) = 0; - *(s32 *)(arg0 + 0x54) = 0; - *(s32 *)(arg0 + 0x50) = 0; - } - *(s32 *)(arg0 + 0x5C) = 1; - } else { - *(s32 *)(arg0 + 0x5C) = 0; - } - ((void (*)(s32))func_80149FB0)(arg0); - if (*(s32 *)(arg0 + 0x1B0) == 0) { - switch (((s32 (*)(s32))func_801619A4)(arg0)) { - case 0: - case 1: - case 2: - case 6: - if (*(s32 *)(arg0 + 0xB4) == (s32)&(*(s32 *)&D_800D4BE0)) { - if (func_80149C08(arg0) != 0) { - D_8018F8B0[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_801577C8)(arg0); - return; - } - } - if ((*(s32 *)(arg0 + 0xB4) != (s32)&D_800D4E94) && - (*(s32 *)(arg0 + 0xB4) != (s32)&D_800D4ED4) && - (*(s32 *)(arg0 + 0xB4) != (s32)&(*(s32 *)&D_800D4F8C))) { - if (func_8015B6F4(arg0) == 0) { - ((void (*)(s32))func_8015B7B4)(arg0); - } - } else { - if (*(u16 *)(arg0 + 0xB8) == 0x8000) { - func_80154A74(arg0, 0x22); - ((void (*)(s32))func_8015B8F8)(arg0); - *(u32 *)(arg0 + 0x44) &= ~2; - if (flag != 0) { - ((void (*)(s32, s32, s32, s32))func_80146994)(0x3B, arg0, 0, 0); - } - } - } - break; - case 3: - ((void (*)(s32))func_801498E0)(arg0); - break; - case 4: - ((void (*)(s32))func_80149954)(arg0); - break; - case 5: - if (((s32 (*)(s32))func_80149A64)(arg0) != 0) { - D_8018F8B0[*(u16 *)arg0]((void *)arg0); - func_800CCCC0(arg0); - return; - } - break; - } - } - if (*(u32 *)(arg0 + 0x44) & 2) { - ((void (*)(s32, s32))func_80155FF8)(arg0, *(u8 *)(arg0 + 0x1AA)); - } else { - if ((*(s32 *)(arg0 + 0x240) == 0) && (((s32 (*)(s32))func_8015B858)(arg0) != 0)) { - *(s32 *)(arg0 + 0x240) += 1; - } - if ((*(s32 *)(arg0 + 0xB4) == (s32)&(*(s32 *)&D_800D4BE0)) && (*(u16 *)(arg0 + 0xB8) & 0x8000)) { - ((void (*)(s32))func_8015B8F8)(arg0); - } else if ((*(s32 *)(arg0 + 0xB4) == (s32)&D_800D4A9C) || - (*(s32 *)(arg0 + 0xB4) == (s32)&D_800D4B48)) { - if (*(u16 *)(arg0 + 0xB8) & 0x8000) { - if (*(s32 *)(arg0 + 0x34) >= 0) { - *(u16 *)(arg0 + 0xB8) += 1; - } - } - } - } - if (*(u8 *)(arg0 + 0x1C6) != 0) { - if (((s32 (*)(s32))func_801487F4)(arg0) & 0x40) { - func_80148038(arg0, 0xFFFE6000); - } else { - func_80148038(arg0, 0x1A000); - } - lim = 0x40000; - if ((*(s32 *)(arg0 + 0xB4) != (s32)&D_800D4E94) && - (*(s32 *)(arg0 + 0xB4) != (s32)&D_800D4ED4) && - (*(s32 *)(arg0 + 0xB4) != (s32)&(*(s32 *)&D_800D4F8C))) { - lim = 0xC0000; - } - if (*(s32 *)(arg0 + 0x34) < -lim) { - *(s32 *)(arg0 + 0x34) = -lim; - } else if (lim < *(s32 *)(arg0 + 0x34)) { - *(s32 *)(arg0 + 0x34) = lim; - } - func_80147460(arg0); - } else { - if (*(s32 *)(arg0 + 0x34) < 0) { - if (((s32 (*)(s32))func_801487F4)(arg0) & 0x40) { - func_80147814(arg0, 0xFFFF0000); - } - func_80147814(arg0, 0x10000); - } - } - if (func_800CF8B4() != 0) { - *(u16 *)(*(s32 *)(arg0 + 0x20) + 0x12) = ((*(u16 *)&D_801152A0) + func_801491C4(arg0)) & 0xFFF; - } - if (flag == 0) { - if ((u8)((s32 (*)(s32))func_80148AFC)(arg0)) { - (*(u16 *)&D_801152A0) = func_80149184(arg0); - ((void (*)(s32, s32))func_80146E90)(arg0, 4); - if (*(s32 *)(arg0 + 0x2C) > -0x80000) { - *(s32 *)(arg0 + 0x2C) = -0x80000; - func_80147A30(arg0, -0x10000, 0xBA000); - } else { - func_80147A30(arg0, -0x1000, 0xBA000); - } - } else { - if (func_80146E98(arg0) != 0) { - func_80146D90(arg0); - } - } - func_80147A84(arg0); - ((void (*)(s32))func_801473EC)(arg0); - if (*(u8 *)(arg0 + 0x1C6) == 0) { - func_80148038(arg0, 0x1A000); - func_80147460(arg0); - } - } else { - ((void (*)(s32))func_80172644)(arg0); - if ((u8)((s32 (*)(s32))func_80148AFC)(arg0)) { - (*(u16 *)&D_801152A0) = func_80149184(arg0); - func_80146D90(arg0); - func_80147AD4(arg0, 0, 0, 0xFFFF4000); - *(s32 *)(arg0 + 0x50) += *(s32 *)(arg0 + 0x10); - *(s32 *)(arg0 + 0x54) += *(s32 *)(arg0 + 0x14); - *(s32 *)(arg0 + 0x58) += *(s32 *)(arg0 + 0x18); - if (*(s32 *)(arg0 + 0x50) > 0xBA000) { - *(s32 *)(arg0 + 0x50) = 0xBA000; - } else if (*(s32 *)(arg0 + 0x50) < -0xBA000) { - *(s32 *)(arg0 + 0x50) = -0xBA000; - } - if (*(s32 *)(arg0 + 0x54) > 0xBA000) { - *(s32 *)(arg0 + 0x54) = 0xBA000; - } else if (*(s32 *)(arg0 + 0x54) < -0xBA000) { - *(s32 *)(arg0 + 0x54) = -0xBA000; - } - if (*(s32 *)(arg0 + 0x58) > 0xBA000) { - *(s32 *)(arg0 + 0x58) = 0xBA000; - } else if (*(s32 *)(arg0 + 0x58) < -0xBA000) { - *(s32 *)(arg0 + 0x58) = -0xBA000; - } - *(s32 *)(arg0 + 0x10) = *(s32 *)(arg0 + 0x50); - *(s32 *)(arg0 + 0x14) = *(s32 *)(arg0 + 0x54); - *(s32 *)(arg0 + 0x18) = *(s32 *)(arg0 + 0x58); - ((void (*)(s32))func_801473EC)(arg0); - } else { - doit = 0; - if (*(s32 *)(arg0 + 0x50) != 0) { - doit = 1; - if (*(s32 *)(arg0 + 0x50) >= 0) { - *(s32 *)(arg0 + 0x50) -= 0x8000; - if (*(s32 *)(arg0 + 0x50) < 0) { - *(s32 *)(arg0 + 0x50) = 0; - } - } else { - *(s32 *)(arg0 + 0x50) += 0x8000; - if (*(s32 *)(arg0 + 0x50) >= 0) { - *(s32 *)(arg0 + 0x50) = 0; - } - } - } - if (*(s32 *)(arg0 + 0x54) != 0) { - doit = 1; - if (*(s32 *)(arg0 + 0x54) >= 0) { - *(s32 *)(arg0 + 0x54) -= 0x8000; - if (*(s32 *)(arg0 + 0x54) < 0) { - *(s32 *)(arg0 + 0x54) = 0; - } - } else { - *(s32 *)(arg0 + 0x54) += 0x8000; - if (*(s32 *)(arg0 + 0x54) >= 0) { - *(s32 *)(arg0 + 0x54) = 0; - } - } - } - if (*(s32 *)(arg0 + 0x58) != 0) { - doit = 1; - if (*(s32 *)(arg0 + 0x58) >= 0) { - *(s32 *)(arg0 + 0x58) -= 0x8000; - if (*(s32 *)(arg0 + 0x58) < 0) { - *(s32 *)(arg0 + 0x58) = 0; - } - } else { - *(s32 *)(arg0 + 0x58) += 0x8000; - if (*(s32 *)(arg0 + 0x58) >= 0) { - *(s32 *)(arg0 + 0x58) = 0; - } - } - } - if (doit != 0) { - *(s32 *)(arg0 + 0x10) = *(s32 *)(arg0 + 0x50); - *(s32 *)(arg0 + 0x14) = *(s32 *)(arg0 + 0x54); - *(s32 *)(arg0 + 0x18) = *(s32 *)(arg0 + 0x58); - ((void (*)(s32))func_801473EC)(arg0); - } - if (!(*(u32 *)(arg0 + 0x44) & 2)) { - ((void (*)(s32, s32, s32))func_801541D8)(arg0, 0xF, 0x12); - } - } - t = func_8014C050(arg0, 0x3B); - if (t != 0) { - func_800CCB78(t); - } - if ((*(u16 *)(arg0 + 0x1C8) & 0x1F) == 0) { - ((void (*)(s32, s32, s32, s32))func_80146994)(0x3C, arg0, 0, 0); - } - } - if (*(s32 *)(arg0 + 0x1B0) != 0) { - if (*(s32 *)(arg0 + 0x1B0) == 1) { - func_80154A74(arg0, 0x22); - func_80154150(arg0, 0xF); - } else { - ((void (*)(s32, s32))func_80154274)(arg0, *(s32 *)(arg0 + 0x1B4)); - } - } - r = ((s32 (*)(s32))func_80161488)(arg0); - if (r & 5) { - *(u32 *)(arg0 + 0x44) &= ~2; - if (*(s32 *)(arg0 + 0xB4) == (s32)&D_800D4A9C) { - func_80154150(arg0, 0xE); - } else { - func_80154150(arg0, 0x10); - } - ((void (*)(s32))func_80146CA0)(arg0); - } - if (r == 0) { - if ((((s32 (*)(s32))func_8014A674)(arg0) != 0) && (((s32 (*)(s32))func_8014E434)(arg0) != 0)) { - D_8018F8B0[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_8015CC40)(arg0); - } else if ((((s32 (*)(s32))func_8014A69C)(arg0) != 0) && (((s32 (*)(s32))func_8014E6A0)(arg0) != 0)) { - D_8018F8B0[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_8015CF8C)(arg0); - } else { - ((void (*)(s32))func_801725A4)(arg0); - } - } -} - -DEFINE_func_8015B6F4() /* dedup: shared engine-core @0x8015B6F4 (src/shared) */ - -DEFINE_func_8015B7B4() /* dedup: shared engine-core @0x8015B7B4 (src/shared) */ - -DEFINE_func_8015B858() /* dedup: shared engine-core @0x8015B858 (src/shared) */ - -DEFINE_func_8015B8F8() /* dedup: shared engine-core @0x8015B8F8 (src/shared) */ - -extern s32 func_8015AE2C(); - -// @class: plumbing -// @stuck: none — MATCH (271/271, pin-free, zero asm). The ONLY residual is DEF-SIDE plumbing, and it is now named exactly: the in-TU instantiation `DEFINE_func_8015BEE4()` (engine_core.h:1851-1855) expands to `extern s32 func_8015B950(void);` INSIDE ov_SC01_077_jr_8015AE2C.c, ~14 lines BELOW this definition, so the 1-param def collides with a `(void)` prototype -> `conflicting types for func_8015B950` (.run/bank_func_8015B950.log). §73 PARAMS axis / T0. Surgical fix = §65b de-macroize that ONE instantiation (blast radius: this TU); the fleet-wide `(void)`->`()` header edit is §63 and must be R22-validated. -/* func_8015B950 (ov_SC01_077_jr_8015AE2C, 271 ins, jtbl_801D8B74) — SESSION-21 re-verified - * - * ── ROUND-2 INDEPENDENT RE-VERIFICATION (2026-07-27, fresh agent, §88e discipline) ───────────── - * match_one : MATCH (271 ins) against the CURRENT tree — §87 staleness re-checked today. - * .text size: compiled .text = 0x43C = 1084 B = 271 ins, EXACTLY the target's declared 0x43C - * ("nonmatching func_8015B950, 0x43C"). So this is NOT a §83a length drift hiding - * behind a zero count — the count is over equal-length streams. - * jtbl : RE-DECODED MECHANICALLY, not inherited. Compiled .rodata = 0x1C = 28 B = 7 words, - * 7x R_MIPS_32 -> .text with implicit addends [58,58,58,E0,F0,100,58]; +0x8015B950 - * = [8015B9A8, 8015B9A8, 8015B9A8, 8015BA30, 8015BA40, 8015BA50, 8015B9A8]. - * Diffed word-for-word against asm/ov_SC01_077/data/tail14.data.s:15-23 — 7/7 identical. - * symcheck : SYMS-DIFF target=35 draft=34, sole MISSING = jtbl_801D8B74. This is the §81 jr - * FALSE POSITIVE, re-confirmed here by reading the relocs: gcc emits its OWN table and - * references it with R_MIPS_HI16/LO16 against the SECTION `.rodata` (t.o +0x40/+0x48), - * so the splat's dlabel NAME can never appear in the draft object's relocation set. - * Nothing is dropped and nothing is invented: the draft's other 34 symbols are exactly - * the target's other 34. - * FAMILY : the x138 remap is clean and §84-safe. Every sibling is 271 ins with an IDENTICAL - * callee set; only THREE names vary per overlay — the two data labels and the jtbl: - * ov_SC01_077 D_8018F844 / D_8018F8B0 / jtbl_801D8B74 - * ov_SC03_099 D_80185A50 / D_80185ABC / jtbl_801BD898 - * ov_SC06_008 D_80187E44 / D_80187EB0 / jtbl_801A8734 - * The pair is always +0x6C apart, and NO literal in this draft encodes that distance - * (both labels are referenced by name), so there is no §84 derived-offset hazard. - * D_8011F9C4 is fleet-constant (main-EXE data) and must NOT be remapped. - * - * match_one: MATCH (271 ins) against the CURRENT tree (§87 staleness re-checked, 2026-07-27). - * PIN-FREE, zero asm, offset-pure (s32 arg0 + raw offsets) — x138 template-safe. - * Provenance: this is the Phase-26 crack (.run/phase26-cracks/func_8015B950.c) re-gated verbatim, - * with ONE deliberate change: the definition's return type void -> s32. - * - `void func_8015B950(s32 arg0)` : MATCH (271 ins) [the Phase-26 form] - * - `s32 func_8015B950(s32 arg0)` : MATCH (271 ins) [shipped — §3a-1 void->s32 is byte-neutral] - * The fleet/engine_core.h canonical decl is `extern s32 func_8015B950(void);` (engine_core.h:1852), - * and the last bank attempt (.run/bank_func_8015B950.log) died on `conflicting types for - * func_8015B950`. Shipping the s32 return kills the §73 RETURN axis for free and leaves only the - * cheap T0 PARAMS axis for the ladder (fix_header_decl.py / --fix-def-sig / cast_call_sites). - * Both forms are byte-identical, so the orchestrator may swap the return type back at zero cost. - * - * SYMBOLS (§58 rules 1/2 — all splat spellings, all verified present): - * D_8018F8B0 asm/ov_SC01_077/data/tail.data.s:4355 (the state-handler vtable) - * D_8018F844 asm/ov_SC01_077/data/tail.data.s:4293 - * D_8011F9C4 main-EXE data; spelled `extern s32 D_8011F9C4;` in 5+ already-banked TUs - * jtbl_801D8B74 asm/ov_SC01_077/data/tail14.data.s:15 (compiler jump table — not named in C) - * - * JTBL VERIFIED (§8a gate): compiled .rodata = exactly 0x1C B / 7 words, 7x R_MIPS_32 .text with - * addends [0x58,0x58,0x58,0xE0,0xF0,0x100,0x58] -> +0x8015B950 = [B9A8,B9A8,B9A8,BA30,BA40,BA50, - * B9A8] == the original words at 0x801D8B74..0x801D8B8C. Bound `sltiu $v0,$v1,0x7` matches. - * The raw dlabel's 8th word 0x00000000 is NOT an entry — it is the intra-TU `.align 3` pad of the - * B34/B54/B74 jtbl chain; the object can never emit it (maspsx drops .align), so it must stay in - * the post-carve RAW data piece (the §53/§62/§81 carve chain applies at bank time). - * - * Same family as the TU's own already-matched func_8015AE2C: 7-case switch on ((s32 (*)(s32))func_801619A4)() - * (0/1/2/6 shared, 3/4/5 own, no default block — out-of-range and every `break` fall to the - * after-switch join), then a chain of "state handler" tests, each dispatching - * D_8018F8B0[*(u16*)arg0](arg0) and returning. - * - * THREE LEVERS (draft -> MATCH in 3 compiles): - * - * 1. PROLOGUE CONSTANT = an INITIALIZED LOCAL, not a literal in the compare. - * Target opens with `lui $s2, 0xFFF5` in the *prologue*, used once ~200 ins later in - * `slt $v0,$s2,$s1`. No gcc-2.7.2 pass hoists a (set reg const_int) across basic blocks - * (loop.c needs a loop; cse/combine/sched never move insns between BBs) — so the insn must - * have been EMITTED in the first BB, i.e. the constant is a local initialized at the top of - * the function. cse then cannot fold it back into the compare: the `slt` operand predicate is - * `arith_operand`, which rejects a CONST_INT wider than 16 bits, so validate_change fails and - * the pseudo survives. Its live range spans every call -> global.c gives it a callee-saved reg. - * Writing `z > -0xB0000` inline instead emits the `lui` into the branch delay slot next to the - * compare (caller-saved $v0) and the function is 1 insn short. => `s32 lim = -0xB0000;` at top. - * - * 2. `lh` vs `lhu`: a short->short copy is a pure HImode move and gcc emits `lhu`. The target's - * `lh $v0,0x26($s0)` means the value passed through an SImode (int) temp: expand makes - * (set (reg:SI) (sign_extend (mem:HI))) + (set (mem:HI) (subreg:HI ...)), and combine cannot - * merge them (the merged form is mem<-mem, which no movhi accepts) so the sign-extending load - * survives. => route both halfword copies through the `s32 t` temp. - * - * 3. THE `goto` LAYOUT — dodging jump.c's store-flag conversion (jump.c:1005-1065). - * An if/else chain writing 0/1 into `doit` makes gcc collapse the last pair into - * `sltiu $v0,$v0,1`. jump.c fires that conversion when the insn immediately after a - * conditional jump is a lone `SET pseudo, CONST_INT` whose following simplejump targets the - * SAME label as the branch (jump.c:1038 `reallabelprev == temp || ... JUMP_LABEL(temp4) == - * JUMP_LABEL(insn)`) — exactly the shape of `if (c) x=0; else x=1;`. - * The target instead cross-jumps ALL the `doit=0` exits into ONE shared block placed after the - * `doit=1` fall-through; reorg's fill_slots_from_thread then COPIES that single set into all - * three branch delay slots and redirects each branch past it (which is why `addu $v0,$zero, - * $zero` appears 3x in delay slots and the shared block vanishes). A `goto zero;` / `goto one;` - * chain expresses that layout directly, and each conditional jump is then followed by a - * compare/call rather than a lone const set, so the store-flag conversion never triggers. - * GENERAL RULE: multiple predicates that all assign the SAME constant to one flag => write - * them as `goto` to a shared assignment, never as an if/else ladder. - */ -extern s32 D_8011F9C4; -extern s32 D_8018F844; - -extern s32 func_80161B18(void); -extern s32 func_801619A4(s32*); -extern s32 func_80149AA8(s32*); -extern void func_80149AD4(s32*); -extern s32 func_80149B54(s32*); -extern void func_80149BAC(s32*); -extern s32 func_801498E0(s32*); -extern s32 func_80149954(s32); -extern s32 func_80149A64(s32*); -extern void func_800CCCC0(s32 a0); -extern s32 func_80149CD4(s32 a0); -extern void func_8015E880(s32*); -extern s32 func_80149744(struct S_80149744*); -extern void func_80149788(void); -extern s32 func_801496D4(void*); -extern void func_80149704(void); -extern int func_80148AFC(void*); -extern void func_80146D90(s32 a0); -extern void func_80154150(s32 a0, s32 a1); -extern void func_801541D8(u8*, s32, s32); -extern s32 func_801488A8(u8*); -extern void func_80147078(s32*, s16); -extern void func_8015A264(void*); -extern s32 func_80013294(void*, void*); -extern void func_80159B70(void*); -extern s32 func_8016F1AC(void); -extern s32 func_80029178(s32 a0); -extern void func_80146DB8(s32*, s32*); -extern s32 func_80161CD0(s32, s32); -extern s32 func_80161208(s32 a0); -extern s32 func_801725A4(u8*); - -s32 func_8015B950(s32 arg0) -{ - - extern void (*D_8018F8B0[])(void *); - s16 sp10[4]; - s16 sp18[4]; - s32 t; - s32 z; - s32 doit; - s32 lim = -0xB0000; - - if (func_80161B18() != 0) { - return; - } - switch (((s32 (*)(s32))func_801619A4)(arg0)) { - case 0: - case 1: - case 2: - case 6: - if (((s32 (*)(s32))func_80149AA8)(arg0) != 0) { - D_8018F8B0[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_80149AD4)(arg0); - return; - } - if (((s32 (*)(s32))func_80149B54)(arg0) != 0) { - D_8018F8B0[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_80149BAC)(arg0); - return; - } - break; - case 3: - ((void (*)(s32))func_801498E0)(arg0); - break; - case 4: - ((void (*)(s32))func_80149954)(arg0); - break; - case 5: - if (((s32 (*)(s32))func_80149A64)(arg0) != 0) { - D_8018F8B0[*(u16 *)arg0]((void *)arg0); - func_800CCCC0(arg0); - return; - } - break; - } - if (func_80149CD4(arg0) != 0) { - D_8018F8B0[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_8015E880)(arg0); - return; - } - if (((s32 (*)(s32))func_80149744)(arg0) != 0) { - D_8018F8B0[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_80149788)(arg0); - return; - } - if (((s32 (*)(s32))func_801496D4)(arg0) != 0) { - D_8018F8B0[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_80149704)(arg0); - if (((u8)((s32 (*)(s32))func_80148AFC)(arg0)) == 0) { - func_80146D90(arg0); - } - if ((*(s32 *)(arg0 + 0x24) | *(s32 *)(arg0 + 0x2C)) != 0) { - func_80154150(arg0, 0xF); - } else { - ((void (*)(s32, s32, s32))func_801541D8)(arg0, 0xD, 6); - } - *(s32 *)(arg0 + 0x238) = 1; - return; - } - if (((s32 (*)(s32))func_801488A8)(arg0) != 0) { - sp10[0] = 0; - sp10[1] = 0; - sp10[2] = 0; - t = *(s16 *)(arg0 + 0x26); - sp18[0] = t; - sp18[1] = 0; - t = *(s16 *)(arg0 + 0x2E); - sp18[2] = t; - D_8018F8B0[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32, s32))func_80147078)(arg0, 1); - ((void (*)(s32))func_8015A264)(arg0); - t = -(((s32 (*)(s16 *, s16 *))func_80013294)(sp10, sp18) << 0x10); - if (t < *(s32 *)(arg0 + 0x2C)) { - *(s32 *)(arg0 + 0x2C) = t; - } - return; - } - if (*(u16 *)(arg0 + 0xB8) == 0x8000) { - D_8018F8B0[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32, s32))func_80147078)(arg0, 0); - ((void (*)(s32))func_80159B70)(arg0); - return; - } - z = *(s32 *)(arg0 + 0x2C); - if (func_8016F1AC() != 0) { - goto zero; - } - if (z <= lim) { - goto one; - } - if (D_8011F9C4 == 0) { - goto zero; - } - if (((u8)func_80029178(0x21)) != 0) { - goto zero; - } -one: - doit = 1; - goto join; -zero: - doit = 0; -join: - if (doit != 0) { - D_8018F8B0[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32, s32))func_80147078)(arg0, 0); - ((void (*)(s32))func_80159B70)(arg0); - func_80154150(arg0, 9); - ((void (*)(s32, s32 *))func_80146DB8)(arg0, &D_8018F844); - ((void (*)(s32, s32))func_80161CD0)(arg0, *(u16 *)(arg0 + 0x16E)); - return; - } - if (func_80161208(arg0) == 0) { - ((void (*)(s32))func_801725A4)(arg0); - } -} - -DEFINE_func_8015BD8C() /* dedup: shared engine-core @0x8015BD8C (src/shared) */ - -DEFINE_func_8015BDD0() /* dedup: shared engine-core @0x8015BDD0 (src/shared) */ - -DEFINE_func_8015BE04() /* dedup: shared engine-core @0x8015BE04 (src/shared) */ - - - -void func_8015BE38(struct Obj *a0) { - - extern void (*D_8018FA24[])(void); - D_8018FA24[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015BE74() /* dedup: shared engine-core @0x8015BE74 (src/shared) */ - -DEFINE_func_8015BE94() /* dedup: shared engine-core @0x8015BE94 (src/shared) */ - -DEFINE_func_8015BEC4() /* dedup: shared engine-core @0x8015BEC4 (src/shared) */ - -DEFINE_func_8015BEE4() /* dedup: shared engine-core @0x8015BEE4 (src/shared) */ - -DEFINE_func_8015BF04() /* dedup: shared engine-core @0x8015BF04 (src/shared) */ - -DEFINE_func_8015BF48() /* dedup: shared engine-core @0x8015BF48 (src/shared) */ - -DEFINE_func_8015BF7C() /* dedup: shared engine-core @0x8015BF7C (src/shared) */ - -DEFINE_func_8015BFB0() /* dedup: shared engine-core @0x8015BFB0 (src/shared) */ - - -extern void (*D_8018FA30[])(void); - -void func_8015BFF4(void *a0) { - D_8018FA30[*(u16 *)((s32)a0 + 0x2)](); -} - - - -/* §71 sibling-first: this is DEFINE_func_8015C0C4 (src/shared/engine_core.h L8919) - * with the two globals replaced by the second parameter and <<6 -> <<7. - * The explicit temporary `t` keeps the first lh ahead of the 0x238 store. - * - * Signature is the fleet canon `(s32 *a0, s32 a1)` declared by - * DEFINE_func_8015BFB0 (engine_core.h L16218) — a private `(s32, s16 *)` - * definition also match_one-MATCHes but breaks the real TU with - * `conflicting types`. The s16 reads are cast at the use site. */ - -DEFINE_func_8015C030() /* dedup: shared engine-core @0x8015C030 (src/shared) */ - - -DEFINE_func_8015C08C() /* dedup: shared engine-core @0x8015C08C (src/shared) */ - -DEFINE_func_8015C0C4() /* dedup: shared engine-core @0x8015C0C4 (src/shared) */ - -#include "common.h" - - - -s32 func_8015C128(s32 param_1) { - extern void func_8015C6E0(int); - extern void (*D_8018F8B0[])(int); - - int sp10[3]; - int sp20[3]; - int temp_s0; - int temp_v0; - - ((void(*)())func_80149FB0)(); - if (((int(*)(int))func_80148AFC)(((int)param_1)) & 0xFF) { - sp10[0] = 0; - sp10[1] = 0; - sp10[2] = -0x4000; - ((void(*)(int, int *, int *))func_8001382C)(*(short *)(*(int *)(((int)param_1) + 0x20) + 0x12), sp10, sp20); - *(int *)(((int)param_1) + 0x234) += sp20[0]; - *(int *)(((int)param_1) + 0x238) += sp20[1]; - *(int *)(((int)param_1) + 0x23C) += sp20[2]; - } - ((void(*)(int, int *, int *))func_8001382C)((short)(-*(unsigned short *)(*(int *)(((int)param_1) + 0x20) + 0x12)), - (int *)(((int)param_1) + 0x234), sp20); - ((void(*)(int, int *))func_80146DB8)(((int)param_1), sp20); - func_80147A84(((int)param_1)); - ((void(*)(int))func_801473EC)(((int)param_1)); - if (!(D_800B99DA & 3)) { - ((void(*)(int, int))func_8014C010)(((int)param_1), 1); - ((void(*)(int))func_80147324)(0x65F); - } - if (((int(*)(int))func_8014D738)(((int)param_1)) != 0) { - D_8018F8B0[*(u16 *)((int)param_1)](((int)param_1)); - func_8015C6E0(((int)param_1)); - return; - } - temp_s0 = ((int(*)(int))func_8014CC28)(((int)param_1)); - temp_v0 = ((int(*)(int))func_8014F3E8)(((int)param_1)); - if (temp_v0 != 0) { - if ((temp_v0 & 0xFF00) != 0x4000) { - ((void(*)(int, int))func_80146E90)(((int)param_1), 6); - ((void(*)(int))func_80146CA0)(((int)param_1)); - return; - } - if ((temp_v0 & 0x4000) && ((int(*)(int))func_80146E98)(((int)param_1)) != 0) { - ((void(*)(int, int))func_80147078)(((int)param_1), 4); - ((void(*)(int))func_8015C0C4)(((int)param_1)); - } - } else if (temp_s0 == 0) { - D_8018F8B0[*(u16 *)((int)param_1)](((int)param_1)); - ((void(*)(int, int))func_80147078)(((int)param_1), 3); - ((void(*)(int))func_8015BE94)(((int)param_1)); - } -} diff --git a/src/ov_SC04_019/ov_SC04_019_jr_8015C32C.c b/src/ov_SC04_019/ov_SC04_019_jr_8015C32C.c deleted file mode 100644 index 6e38cc2f4..000000000 --- a/src/ov_SC04_019/ov_SC04_019_jr_8015C32C.c +++ /dev/null @@ -1,6275 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -extern void func_801458E0(void); -extern s32 D_800AE6AC; -extern s32 D_800AE6B0; -extern s16 D_800B9A0A; -extern u8 D_80078E50; -extern void func_800D185C(u8 *a0); -extern void func_801458E8(void); -extern s32 func_80029504(void); -extern void func_80145B24(void); -extern u8 D_8018F74C; -extern u8 D_8018F6BC; -extern u8 D_8018F698; -extern u8 D_8018F674; -extern u8 D_8018F728; -extern u8 D_8018F704; -extern u8 D_8018F6E0; -extern u8 D_8018F650; -extern void func_80145934(void); -extern u8 D_8018F7DC; -extern u8 D_8018F7B8; -extern u8 D_8018F794; -extern u8 D_8018F770; -extern void func_80145A2C(void); -extern s32 func_800291DC(s32); -extern void func_800291C8(s32, s32); -extern void func_80162120(void); -extern void func_80029124(s32, s32); -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); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_80145BF8(void); -extern s32 func_800291B4(s32 arg); -extern void func_800291A0(s32, s32); -extern void func_80145C54(void); -extern s32 func_80145CEC(); -extern s32 func_80029178(s32 arg); -extern void func_80146014(s32 a0); -extern unsigned char D_8018EBD4[]; -extern unsigned char D_8018EC04[]; -extern unsigned char D_8018EC54[]; -extern unsigned char D_8018EC84[]; -extern unsigned char D_8018ECB4[]; -extern void func_80145EE8(s32 param_1); -extern void MoveImage(void *a0, s32 a1, s32 a2); -extern void func_80146074(void); -extern s32 func_80146128(void); -extern void func_80146360(void); -extern void func_801463A0(); -extern void func_8014607C(void); -extern s32 *D_80126B78; -extern u8 D_80078EC1; -extern s32 D_80078EC8; -extern s32 D_80126B9C; -extern s32 D_8011F730; -extern u16 D_801152B8; -extern u16 D_8012693A; -extern u8 D_80126BE0[]; -extern u8 D_801150F0[]; -extern void *memcpy(void *dst, const void *src, u32 n); -extern void func_80146FC4(s32 a0); -extern void func_80150A70(s32 a0); -extern void func_80147098(s32 *a0); -extern void func_8014A638(s32 arg0); -extern s32 func_80155458(s32 a0); -extern s32 func_80029104(void); -extern void func_80029344(void); -extern void func_8014ADE0(s32 a0); -extern void func_8014B350(s32 a0); -extern void func_8014B7A4(s16 *param_1); -extern s32 func_80161D58(s32 a0); -extern void func_80161A90(s32 a0); -extern void func_8014B504(u16 *a0); -extern void func_80149BEC(s32 a0); -extern void func_8014B5D0(s32 *a0); -extern void func_8014C99C(u8 *a0); -extern void func_8014B190(s32 s0); -extern void func_80148648(s32 a0, s32 a1); -extern s32 func_80149228(s32 a0); -extern void func_8014A59C(s32 a0); -extern void func_8016F14C(void *a0); -extern void func_80154418(void *a0); -extern void func_80154BE4(s32 a0); -extern void func_80165694(s32 arg0); -extern void func_801654A8(s32 a0); -extern void func_8014A680(s32 a0); -extern void func_8014A6A8(s32 a0); -extern void func_8014A71C(s32 a0); -extern void func_80172588(s32 *a0); -extern void func_801473DC(s32 *a0); -extern void func_80015978(s32 a0, s32 *a1); -extern void (*D_8018ED04[])(void *); -extern u8 D_80126BA4; -extern s32 D_80127098; -extern s32 D_80127094; -extern s32 D_80127090; -extern void func_80146534(void); -extern void func_8001D074(s32 a0, s32 a1); -extern void func_80146554(void); -extern void func_80146578(void); -extern void func_8001CFDC(s32, s32); -extern void func_8014659C(void); -extern void func_8001D074(s32, s32); -extern void func_801465C0(void); -extern void func_801465E4(void); -extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); -extern s32 D_8011F9D0; -extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); -extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 D_8011F754; -extern u8 * func_801468C8(s32 arg0, u8 arg1); -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); -extern s32 func_80146B9C(void *a0); -extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); -extern u16 D_8011DA28; -extern s32 func_80146B9C(void * arg0); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80146CA0(void *a0); -extern void func_80146CB4(void *a0); -extern void func_80146CC8(s32 a0); -extern void func_80146D30(s32 a0); -extern void func_80146D80(s32 *a0); -extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80146D90(s32 a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); -extern void func_80146E90(s32 *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80015954(s32 a0, s32 a1); -extern void func_80149374(s32 a0, s32 a1); -extern void func_80146F58(s32 a0, s32 a1); -extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 func_8012A68C(void); -extern s16 func_8012A758(void); -extern void func_8004978C(s16 *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern u8 D_80126DB0[]; -extern u16 D_80126DB6; -extern void func_8014704C(s32 *a0); -extern s32 func_80147054(void *a0); -extern void func_80147060(u8 * a0); -extern void func_8014706C(void *arg0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80147084(s32 *a0); -extern void func_8014708C(void *arg0); -extern s32 func_801470A0(void *a0); -extern void func_801470AC(s32 *a0); -extern void func_801470B4(s32 arg0); -extern void func_801470C0(s32 a0); -extern void func_80147118(s32 a0); -extern s16 D_80126BB8; -extern s16 D_80126BBA; -extern s16 D_80126BBC; -extern void func_80147264(s32 a0); -extern void func_80147290(void); -extern void func_801472B4(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void *D_8012707C; -extern void func_801472DC(void); -extern void func_801472F0(void *a0); -extern void func_80147364(u16, s32); -extern void func_80147300(u16 arg0); -extern void func_80147324(s32 arg0); -extern void func_801473EC(s32 *a0); -extern void func_80147460(s32 a0); -extern void func_80147514(); -extern void func_80147628(s32 a0); -extern void func_80147478(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); -extern s32 func_800129CC(s32 a0, s32 a1); -extern void func_80147514(s32 arg0); -extern void func_80013F3C(s32 a0); -extern void func_80012558(s32 a0, s32 a1); -extern void func_800126C4(s32 a0, s32 a1); -extern void func_800123F0(s32 a0, s32 a1); -extern void func_80147718(s32 a0); -extern void func_80147788(void *a0, s32 a1); -extern void func_801477A8(void *a0, s32 a1); -extern void func_801477C8(void *a0, s32 a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80147814(s32 a0, s32 a1); -extern void func_80147928(int a0, int a1); -extern void func_8014799C(int a0, int a1); -extern void func_80147A10(int a0, int a1); -extern void func_80147860(int a0, int a1, int a2, int a3); -extern void func_80147948(s32 a0, s32 a1, s32 a2); -extern void func_801479BC(s32 a0, s32 a1, s32 a2); -extern void func_80147A30(s32 a0, s32 a1, s32 a2); -extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147948(int a0, int a1, int a2); -extern void func_801479BC(int a0, int a1, int a2); -extern void func_80147A30(int a0, int a1, int a2); -extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147A84(s32 arg0); -extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147AAC(s32 arg0); -extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80147B5C(s32 a0, void *a1); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern void func_80147B18(s32 a0); -extern void func_80147B5C(s32 arg0, void *arg1); -extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147DC0(s32 a0, s32 a1); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147F50(s32 arg0); -extern void func_80148038(s32 a0, s32 a1); -extern s32 ratan2(s32 a0, s32 a1); -extern s32 csqrt(s32 a0); -extern s32 func_80012A60(s32 a0, s32 a1); -extern void func_80148094(int param_1, short *param_2, int *param_3); -extern void func_801485B8(s32 a0, s32 a1, s32 a2); -extern void func_801484B0(s32 a0, s32 a1); -extern s32 func_80154358(void *a0); -extern void func_801484E8(s32 a0, s32 a1); -extern void func_80148534(s32 a0, s32 a1); -extern void func_8014856C(s32 a0, s32 a1); -extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); -extern void func_80148634(void *a0); -extern u8 D_800B9A64; -extern s32 func_80014DC0(); -extern s32 func_80014D68(); -extern s32 func_80014D94(); -extern s32 func_80014CF8(); -extern void func_800120DC(); -extern s32 func_800CF8B4(); -extern u16 func_801487F4(s32 *a0); -extern u16 func_80148800(s32 *a0); -extern u8 func_8014880C(s32 *a0); -extern u16 func_80148818(s32 *a0); -extern s32 func_80047D3C(s32 a0); -extern s32 func_80148824(void *arg0); -extern s32 func_801488A8(u8 *a0); -extern s32 func_8014891C(s32 a0); -extern s32 func_80148980(u8 *a0); -extern s32 func_801489E8(s32 a0); -extern s32 func_80148A48(s32 a0); -extern int func_80148AFC(void *a0); -extern void func_80148AAC(u8 *a0); -extern s32 func_80148C18(void); -extern s32 func_80148C20(s32 a0, s16 a1); -extern s32 func_80148C34(s32 a0, s32 a1); -extern s32 func_80148C4C(s32 a0, s32 a1); -extern s32 func_80148C64(s32 a0, s32 a1); -extern s32 func_80148C7C(void); -extern s32 func_80148C84(s32 a0, s32 a1); -extern s32 func_80148C9C(s32 a0, s32 a1); -extern s32 func_80148CB4(s32 a0, s32 a1); -extern s32 func_80148CCC(s32 a0, s32 a1); -extern s32 func_80148CE4(void); -extern s32 func_80148CEC(void); -extern s32 func_80148CF4(s32 a0, s32 a1); -extern s32 func_80148D0C(s32 a0, s32 a1); -extern s32 func_80148D24(void *a0, int a1); -extern s32 func_80148D3C(void); -extern s32 func_80148F60(void); -extern s32 func_80148F68(s32 a0); -extern s32 func_80148F74(s32 a0); -extern s32 func_80148F80(s32 a0); -extern s32 func_80148F8C(s32 a0); -extern s32 func_80148F98(void); -extern s32 func_80148FA0(s32 a0); -extern s32 func_80148FAC(s32 a0); -extern s32 func_80148FB8(s32 a0); -extern s32 func_80148FC4(s32 a0); -extern s32 func_80148FD0(void); -extern s32 func_80148FD8(void); -extern s32 func_80148FE0(s32 a0); -extern s32 func_80148FEC(s32 a0); -extern s32 func_80148FF8(s32 a0); -extern s32 func_80149004(void); -extern void func_8014900C(s32 *a0); -extern void func_80149020(s32 *a0); -extern void func_80149034(s32 *a0); -extern void func_80149048(s32 *a0); -extern void func_8014905C(u8 *a0); -extern void func_801490E0(s32 *a0, s16 a1); -extern void func_801490E8(s32 *a0, s16 a1); -extern void func_801490F0(s32 *a0, s16 a1); -extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); -extern void func_801490F8(s32 a0, s32 a1); -extern s32 func_801491C4(s32 a0); -extern s32 func_80149184(s32 a0); -extern s32 D_801151D4; -extern void func_80149204(s32 *a0); -extern void func_80149210(s32 a0, s32 a1); -extern s32 func_80149284(s32 *a0, s32 a1); -extern void func_80149350(s32 arg0); -extern void func_80149290(s32 a0); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_80149374(s32 arg0, s32 arg1); -extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8014942C(s32 arg0); -extern void func_8012EF70(s32 a0, s32 a1); -extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012EFB8(s32 a0); -extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); -extern void func_8014964C(s32 param_1, s32 param_2); -extern s32 func_801496D4(void *a0); -extern void func_8015AD08(); -extern void func_80149704(void); -extern void func_8015ACC4(); -extern void func_80149724(void); -extern u8 D_80078EBF; -extern s32 func_80149744(struct S_80149744 *a0); -extern void func_8015F7A0(); -extern void func_80149788(void); -extern void func_801653B8(); -extern void func_80149864(void); -extern s16 currentLocationId; -extern s32 func_8016F1AC(void); -extern s32 func_80149884(void); -extern void func_80160B00(); -extern void func_801498C0(void); -extern s32 func_80149AA8(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern void func_80146750(void *a0); -extern s32 func_801498E0(s32 *a0); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_80147364(u16 a0, s32 a1); -extern s32 func_800CCF28(s32 a0); -extern u8 D_80126B5C; -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_8015DAC4(s32 *a0); -extern void func_8015554C(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern void func_80149B14(s32 *a0); -extern u8 func_8014BEF8(void); -extern s32 func_80149B54(s32 * arg0); -extern void func_8015DE24(s32 *a0); -extern void func_80157510(s32 *a0); -extern void func_80149BAC(s32 *a0); -extern s32 func_80029178(s32 a0); -extern s32 func_80149C08(s32 arg0); -extern void func_801577C8(); -extern void func_80149C94(void); -extern void func_80157D20(void); -extern void func_80149CB4(void); -extern s32 func_80149CD4(s32 a0); -extern u8 func_8014B5B8(s32 *a0); -extern s32 func_80149D10(s32 a0); -extern s32 func_80149E94(s32 a0); -extern s32 func_80149DD8(s32 a0); -extern s32 func_80149D9C(s32 a0); -extern s32 func_80149F2C(s32 a0, s32 a1); -extern s32 func_80149E94(s32 arg0); -extern void func_80149FA8(void); -extern s32 D_8018EDCC[]; -extern u8 D_80078E78[]; -extern s32 func_80149FB0(s32 a0); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern void func_8014A1B0(s32 a0, s32 a1); -extern s32 func_8014A048(s32 param_1); -extern u16 func_80156370(u16 a0); -extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); -extern void func_8015D4B4(); -extern void func_8014A218(void); -extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); -extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); -extern s32 func_8014A238(s32 arg0); -extern s32 func_8014A2E4(s32 a0); -extern void func_8014A380(s32 a0, s32 a1); -extern s32 func_8014A3E0(struct S_8014A3E0 *a0); -extern s32 func_8014A454(s32 a0); -extern s32 func_8014A4B4(void *a0); -extern void func_8015EDD4(); -extern void func_8014A4FC(void); -extern s32 func_8014A674(s32 *a0); -extern s32 func_8014A69C(s32 *a0); -extern s32 func_8014A6C4(s32 a0); -extern void func_8015E184(); -extern void func_8014A830(void); -extern s32 func_80029AF4(void); -extern s32 func_8014A850(s32 param_1); -extern void func_8014AA04(s32 a0); -extern void func_801599A4(void *a0); -extern void func_80159B3C(void *a0); -extern s32 func_80165A20(s32 a0); -extern void func_8014AB7C(); -extern void func_8014AC10(); -extern void func_8014AA28(void); -extern void func_8014AB5C(void); -extern void func_80162CCC(void); -extern void func_8014AB7C(s32 arg0); -extern void func_8014ABF0(void); -extern void func_80016714(void *a0, s32 a1); -extern void func_8014AC10(s32 arg0); -extern void func_8014ACC0(s32 a0, s32 a1); -extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); -extern void func_8014ACE8(void *a0, s32 a1, s32 a2); -extern void func_80146AFC(void *a0); -extern void func_8014ADA8(s32 a0, s32 a1); -extern void func_8014AD7C(s32 a0); -extern s32 D_80078E8C; -extern void func_8014B034(s32 arg0); -extern void func_8014B00C(s32 arg0); -extern void func_8014B084(void); -extern s16 D_80078E90; -extern void func_8014B034(s32 a0); -extern u16 D_80078EAC; -extern u8 D_80078EBA; -extern void func_800D10EC(void); -extern void func_8002AC98(void); -extern s32 func_8014B154(s32 *a0); -extern void func_8014B12C(void); -extern void func_8014B2F8(void); -extern void func_8014B4C4(void); -extern void func_8014B160(s32 a0); -extern s32 func_8016F1C4(void); -extern s16 D_80078E96; -extern s16 D_80078EB8; -extern u16 D_80078EA6; -extern void func_8014B2A8(void); -extern void func_8014B310(void); -extern void func_8014B2D0(void); -extern s32 D_80078E94; -extern s32 D_80078ECC; -extern void func_8014B33C(void); -extern u8 D_80062BF4[]; -extern void func_8014BC80(s32 a0, s32 a1); -extern void func_80019064(void *a0); -extern s32 D_80078E98; -extern void func_80166244(); -extern void func_8014B4D4(void *a0); -extern s16 D_80078E9A; -extern u8 D_80126D1C; -extern s32 D_80126D74; -extern void func_8014B598(s32 a0, s32 a1); -extern void func_8014B5B0(s32 *a0); -extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); -extern void func_8014B5D8(s32 s1); -extern s32 D_80078E9C; -extern s32 D_80078ED0; -extern void func_8014B6F0(s32 a0, s32 a1); -extern void func_8014B768(s32 a0, s32 a1); -extern void func_8014B944(s32 a0, s32 a1, s32 a2); -extern s32 D_80078EA4; -extern u16 D_80078EB2; -extern s16 D_80078EB4; -extern void func_8014BB0C(void); -extern void func_8014BB24(s32 a0, s32 a1, s32 a2); -extern void func_8014BC0C(s32 a0, s32 a1); -extern void func_8014BC44(s32 a0, s32 a1); -extern void func_8014BCC0(s32 a0, s32 a1); -extern u16 D_80078EB6; -extern s32 func_8014BCEC(s32 a0, s32 a1); -extern void func_8014BD24(s32 a0, s32 a1); -extern void func_8014BD60(s32 param_1, s32 param_2); -extern void func_8014BD98(s32 a0, u16 a1); -extern void func_8014BDC8(void); -extern void func_8014BDE0(void); -extern s32 func_8017267C(s32 *a0); -extern s32 func_80013294(void *a0, void *a1); -extern void func_80029ED4(s32 a0); -extern void func_8014BDE8(s32 a0); -extern void func_8014BE78(void); -extern void func_8014BE9C(void); -extern void func_80029124(s32 a0, s32 a1); -extern void func_8014BEC0(void); -extern void func_8014BF18(s32 a0); -extern void func_8014BF48(void); -extern u8 func_8014BF6C(void); -extern void func_8014BF8C(u8 arg0); -extern void func_8014BFB0(void); -extern u8 func_8014BFD4(void); -extern void func_8014BFF4(s32 a0, s32 a1); -extern void func_8014C010(s32 a0, s32 a1); -extern s32 func_8014C050(s32 a0, s32 a1); -extern s32 func_8014C088(s32 a0, s32 a1); -extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); -extern s32 func_8014C118(void * a0, s32 a1, s32 a2); -extern s32 func_8014C168(s32 * param_1, s32 param_2); -extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); -extern u8 D_8018EE54[]; -extern void func_8014C1A0(s32 arg0, s32 arg1); -extern s32 func_80013328(s32 a0, s32 a1); -extern s32 func_8014C59C(void *a0, void *a1); -extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); -extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); -extern s32 ratan2(s32 dx, s32 dy); -extern u8 D_8018EE5C; -extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); -extern s16 func_8014C5D0(s32 a0, s32 a1); -extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); -extern u8 D_80126D17; -extern void func_8014C6AC(void); -extern void func_8014C6C0(void); -extern u8 D_80126D1E; -extern void func_8014C6D0(void); -extern void func_8014C6E0(void); -extern s32 func_8014C860(s32 a0, s32 a1); -extern void func_8014C8C8(s32 a0, s32 *a1); -extern void func_8014C88C(s32 a0); -extern void func_8014C8C8(s32 dst, s32 * src); -extern void func_8014C8F0(s32 arg0); -extern u8 D_801151F0[]; -extern s32 func_8014C918(s32 a0, s32 a1); -extern s32 D_80126B50; -extern void func_8014C968(void); -extern void func_8014C978(void); -extern s32 func_8014C98C(void); -extern void func_80139914(s32 a0); -extern s32 func_8014CA00(s32 a0); -extern u16 func_8014CA70(s32 a0, s32 a1); -extern s32 func_8014CA14(s32 a0, s32 a1); -extern u16 func_8014CAE4(s32 *a0, s32 a1); -extern s32 func_8014CA88(s32 *a0, s32 a1); -extern s32 func_8014CAFC(void); -extern s32 func_8014CB0C(void); -extern s32 func_8014CB1C(void); -extern u8 D_80126D1F; -extern s32 func_8014CB2C(void); -extern s32 func_8014CB58(void); -extern u8 D_80126D1D; -extern void func_8014CB68(void); -extern s32 func_8014CB7C(void); -extern s32 func_8014CB8C(void); -extern struct Packed8 D_80126C98; -extern short D_80126C9E; -extern void func_8014CB9C(struct Packed8 *a0); -extern s32 D_80126CDC; -extern void func_8014CBD8(void); -extern s16 D_80126CC4; -extern void func_8014CBE8(void); -extern void func_8014CBF8(void *a0); -extern void func_8014D3E0(s32 a0); -extern void func_8014D04C(void); -extern void func_8014CCB4(void); -extern void func_8014CC28(s32 a0); -extern void func_8014CD0C(u8 *a0); -extern s32 func_8014CF04(s32 a0, s32 a1, void *a2); -extern void func_8014CD80(s32 a0, void *a1, void *a2); -extern void func_8014D0A4(s32 a0); -extern s32 func_8014D2A0(s32 a0, void *a1, void *a2); -extern s32 func_8014D12C(s32 a0, void *a1, void *a2); -extern void func_8014D438(s32 a0); -extern void func_8014D3E0(s32 _arg0); -extern void func_8014D610(s32 a0, void *a1, void *a2); -extern s32 func_8014D4C0(s32 a0, void *a1, void *a2); -extern void func_8014D790(s32 a0); -extern void func_8014D738(void); -extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); -extern s32 func_8014D820(s32 a0, u16 *a1, u16 *a2); -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); -extern void func_8014DF94(s32 arg0); -extern void func_8014DF3C(void); -extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ -extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ -extern s16 D_801152AC; -extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); -extern void func_8014E48C(s32 a0); -extern void func_8014E434(void); -extern void func_8014E5B4(s32 a0, void *a1, void *a2); -extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); -extern void func_8014E6F8(struct SubE6F8 *a0); -extern void func_8014E6A0(void); -extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); -extern void func_8014E934(s32 _arg0); -extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); -extern s32 func_8014E98C(void *a0); -extern u16 D_800B99DA; -extern s32 D_801150D8; -extern s16 D_801152AA; -extern u8 D_80126720[]; -extern s16 D_80126724; -extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); -extern s32 func_8014ED80(struct SubED80 *a0); -extern int D_801E5BA8; -extern void func_8014ED28(s32 _arg0); -extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F24C(struct SubF24C *a0); -extern void func_8014F1F4(void); -extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F4C0(); -extern s32 func_8014F468(void); -extern int func_8014F74C(); -extern int func_8014F6F4(void); -extern u8 D_800D3918[]; -extern u8 D_801152A8[]; -extern int func_8014F74C(s32 arg0); -extern s32 func_8014FA70(s32 a0); -extern s32 D_801E5BAC; -extern void func_8014FA04(s32 a0); -extern s32 func_8014FBC0(); -extern s32 func_8014FC18(u8 *self); -extern int func_8014FD54(int param_1); -extern void func_8014FCFC(void); -extern void func_80150170(void *a0); -extern s32 func_8014FE60(void *a0); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_8014FE60(void *e); -extern s32 func_80134510(s32 arg); -extern s32 func_80150150(s32 a, s32 b); -extern s32 func_80150460(s32 a, s32 b); -extern void func_801504D8(u16 *a0); -extern s32 func_80150480(s32 _arg0); -extern s32 func_80150528(void *a0, void *a1, void *a2); -extern s32 func_80150528(void *arg0, void *arg1, void *arg2); -extern s32 func_801506A4(s32 a0, s32 a1); -extern s32 func_801505FC(s32 a0); -extern s32 func_801506A4(s32 arg0, s32 arg1); -extern void func_80150820(s32 a0, s32 a1); -extern void func_8015086C(int param_1); -extern s32 func_801508B4(s32 a0); -extern s32 func_8015094C(s32 a0); -extern short func_801508F8(s32 a0); -extern s32 D_8018EE8C; -extern s32 D_80126990; -extern s32 D_80126994; -extern u8 D_80126948[]; -extern s32 func_80021174(s32 a0, s32 a1); -extern s32 func_8015094C(s32 param_1); -extern void func_80150B9C(void); -extern s32 func_80151184(s32 a0, s32 a1, s32 a2); -extern s32 func_80150BA4(s32 a0); -extern s32 func_801619D0(void *a0); -extern void func_80150BC8(s32 *a0); -extern s32 func_80150480(s32 a0); -extern u16 D_800AE6DC; -extern void func_80150C48(s32 a0); -extern int func_80151184(int arg, int a1, int a2); -extern int func_80150CA0(int arg); -extern void func_80150EC4(s32 a, s32 b); -extern void func_80150CC4(s32 a); -extern void func_80150CE4(s32 a); -extern void func_80150D04(s32 a); -extern void func_80150D24(s32 a); -extern void func_80150D44(s32 a); -extern void func_80150D64(s32 a); -extern void func_80150D84(s32 a); -extern void func_80150DA4(s32 a); -extern void func_80150DC4(s32 a); -extern void func_80150DE4(s32 a); -extern void func_80150E04(s32 a); -extern void func_80150E24(s32 a); -extern void func_80150E44(s32 a); -extern void func_80150EC4(s32 a0, s32 a1); -extern void func_80150E64(s32 a0); -extern void func_80150E84(s32 a0); -extern void func_80150EA4(s32 a0); -extern u8 D_800AE6C0; -extern s16 D_800AE6C8; -extern s16 D_800AE6CA; -extern s16 D_800AE6CC; -extern s32 D_800AE6C4; -extern s16 D_800AE6CE; -extern u8 D_800AE6BE; -extern u8 D_801201F8[]; -extern void func_80150F78(void); -extern void func_80150F80(s32 a0); -extern int func_80150FB4(int arg); -extern void func_80150FD8(s32 a0); -extern int func_80151014(int arg); -extern void func_80151038(s32 a0); -extern int func_80151070(int arg); -extern int func_80151094(int arg); -extern void func_801510B8(void); -extern void func_801510C0(void); -extern int func_801510C8(int arg); -extern int func_801510EC(int arg); -extern s32 func_8012DB84(void); -extern s32 func_80151110(void); -extern void func_80151130(void); -extern int func_80151138(int arg); -extern void func_8015115C(s32 *a0, s16 a1); -extern s32 func_80151164(s32 a0, s32 a1); -extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); -extern void func_801511A8(u8 *a0); -extern void func_801511C4(u8 *a0); -extern int func_80151204(int arg, int a1); -extern int func_801511E0(int arg); -extern int func_80151204(int a0, int a1); -extern void func_80151238(void *a0); -extern void func_8015126C(u16 *p); -extern void func_80151780(s32 a0); -extern void func_801516F0(s32 *a0); -extern void func_8015173C(s32 *a0); -extern s16 D_8011DB1A; -extern s32 D_80127518; -extern s32 D_801151FC; -extern s32 func_801725CC(u8 *a0); -extern s32 func_80029D3C(void); -extern void func_80151878(void); -extern void func_80153B58(s32 *a0); -extern s32 func_80151880(s32 a0); -extern s32 func_801518D8(s32 a0); -extern s32 func_80151944(void); -extern s32 func_80151924(void); -extern void func_8014E934(s32 a0); -extern s32 func_8014F3E8(s32 a0); -extern void func_801519C8(s32 a0); -extern void func_80151980(s32 a0); -extern M2C_UNK D_800D5880; -extern s32 D_800D58AC; -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801519C8(s32 arg0); -extern void func_80151C54(s32 a0); -extern void func_801542DC(s32 *a0, s32 a1); -extern void func_8015BDD0(s32 *a0); -extern void func_80165718(s32 a0); -extern u8 D_800D46E4[]; -extern void func_80151AE4(s32 arg0); -extern void (*D_8018EF34[])(void); -extern void func_80151D24(void *a0); -extern void func_80151DB0(s32 a0); -extern void func_80151D60(void *a0); -extern s32 func_80172630(u8 *a0); -extern s32 D_80062C14; -extern void func_80151DB0(s32 param_1); -extern void func_80151E78(s32 *a0); -extern void func_80151ECC(struct S80151ECC *a0); -extern void func_80151FB4(s32 a0); -extern void func_80151F38(s32 *a0); -extern void func_801553C0(s32 a0); -extern void func_80153C18(); -extern void (*D_8018EF58[])(void); -extern void func_80152058(void *a0); -extern void func_801520DC(s32 a0); -extern void func_80152094(s32 a0); -extern void func_80147324(s32 a0); -extern u8 D_80062C04[]; -extern M2C_UNK D_8018EF48; -extern void func_801520DC(s32 arg0); -extern void func_801470B4(s32 a0); -extern void func_8015369C(s32 a0); -extern void func_80152194(s32 *a0); -extern s32 func_801536DC(s32 a0); -extern void func_8015220C(s32 a0); -extern s32 func_80153800(s32 a0); -extern void func_801522CC(s32 a0); -extern void func_80152254(s32 *a0); -extern void (*D_8018EF6C[])(void); -extern void func_80152370(void *a0); -extern void func_801523F4(s32 a0); -extern void func_801523AC(s32 a0); -extern void func_8001382C(s32 a0, void *a1, void *a2); -extern u8 D_8018EF78[]; -extern void func_801523F4(s32 arg0); -extern void func_801525F4(int); -extern s32 func_801535F4(void *arg0); -extern void func_8015BF48(s32 *a0); -extern void func_80152500(int param_1); -extern void func_801525F4(s32 a0); -extern void (*D_8018EF88[])(void); -extern void func_80152698(void *a0); -extern void func_80152714(s32 a0); -extern void func_801526D4(s32 a0); -extern void func_80152790(s32 a0); -extern void (*D_8018EFA0[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018EF90; -extern void func_801528B0(s32 arg0); -extern void func_8015294C(s32 a0); -extern void func_80152A08(s32 a0); -extern void func_80152AC8(s32 a0); -extern void func_80152A50(s32 *a0); -extern void (*D_8018EFB4[])(void); -extern void func_80152B6C(void *a0); -extern void func_80152BF0(s32 a0); -extern void func_80152BA8(s32 a0); -extern void func_80152C80(s32 *a0); -extern void func_80152C40(s32 *a0); -extern void (*D_8018EFD0[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018EFC0; -extern void func_80152DA8(s32 arg0); -extern void func_80152E4C(s32 a0); -extern void func_80152EFC(s32 a0); -extern void func_80152FBC(s32 a0); -extern void func_80152F44(s32 *a0); -extern void (*D_8018EFE4[])(void); -extern void func_80153060(void *a0); -extern void func_801530E4(s32 a0); -extern void func_8015309C(s32 a0); -extern void func_80155440(s32 *a0); -extern void func_801530E4(s32 arg0); -extern void func_80153150(struct S80153150 *a0); -extern void func_801531BC(s32 a0); -extern void func_8015327C(s32 a0); -extern void func_80153204(s32 *a0); -extern void (*D_8018EFF8[])(void); -extern void func_80153320(void *a0); -extern void func_801533A4(s32 a0); -extern void func_8015335C(s32 a0); -extern void func_80153410(s32 *a0); -extern void func_80153490(s32 a0); -extern void func_80153550(s32 a0); -extern void func_801534D8(s32 *a0); -extern void (*D_8011DB28)(s32 a0); -extern s32 func_801536DC(s32 param_1); -extern void func_800139C8(s32 a0, void *a1, void *a2); -extern s32 func_80153978(s32 a0, u16 *src); -extern s32 func_80133784(s32 a0, void *src, s32 dst); -extern s32 func_801539F8(s32 a0, void *a1); -extern s32 func_801539F8(s32 a0, void * a1); -extern s32 func_8016DA04(s32 a0); -extern s32 func_80153BD8(s32 a0); -extern s32 func_80153BF0(s32 a0); -extern void func_80153C18(void); -extern u16 D_8011F748; -extern void func_80153C30(void); -extern void func_80153C74(s16 a0, s16 a1); -extern s16 D_8011DB18; -extern void func_80153C44(int a0, int a1, s16 a2); -extern s16 D_8011DB0C; -extern s32 D_80115210; -extern void func_80153C8C(void); -extern void func_80153C9C(void); -extern s32 func_80153CBC(void); -extern s32 D_8018F00C; -extern void (*D_8018F034[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018F014; -extern void func_80153D7C(s32 param_1); -extern void func_8015410C(void); -extern void func_80153E00(s32 param_1); -extern void func_80151664(void); -extern void func_80154134(u8 *a0); -extern void func_80154190(u8 *a0, s32 a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154218(u8 *a0, s32 a1, s32 a2); -extern void func_801541D8(u8 *a0, s32 a1, s32 a2); -extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); -extern void func_801542A4(); -extern void func_801542A4(s32 *a0, s32 a1); -extern void func_8015430C(); -extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); -extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); -extern s32 func_80154358(void * arg0); -extern void func_80154AB4(s32 a0, s32 a1); -extern void func_80154B20(s32 a0, s32 a1, s32 a2); -extern void func_80154AE0(s32 a0, s32 a1, s32 a2); -extern void func_80154B7C(u8 *a0, s32 a1); -extern void func_80154B4C(u8 *a0, s32 a1); -extern void func_80154BC8(void *a0, s32 a1, s32 a2); -extern void func_80154B98(void *a0, s32 a1, s32 a2); -extern u8 D_800D8D10[]; -extern s16 D_80078E9E; -extern void func_801550FC(s32 a0); -extern void func_80154ED8(s32 a0, s32 a1); -extern void func_80154F9C(s32 a0); -extern void func_800183E0(s32 a0); -extern void func_801550FC(s32 arg0); -extern void func_8001D150(s32, s32); -extern void func_8001D130(int, int); -extern void func_80155150(int param_1); -extern s32 D_800DE2A4[]; -extern void func_801552F4(s32 a0); -extern void func_80155344(s32 a0); -extern s32 func_80155394(s32 *a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80029178(s32); -extern int (*D_8018F080[])(void); -extern s32 func_80155458(s32 param_1); -extern s32 func_801659DC(u8 *a0); -extern s32 func_801554B8(void *arg0); -extern void func_801555F4(void *a0); -extern void func_80155518(s32 *a0); -extern void func_80155580(void *a0); -extern void (*D_8018F084[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern S801563EC *func_801563EC(u16 idx); -extern s32 func_80029B4C(s32 a0, s32 a1); -extern s32 func_80029BC8(s32 a0, s32 a1); -extern s32 func_80029C44(s32 a0, s32 a1); -extern s32 func_8015640C(s32 a0, s32 a1); -extern s32 rand(void); -extern u32 func_8015616C(s32 param_1, u16 param_2); -extern u16 func_80156370(u16 param_1); -extern S801563EC * func_801563EC(u16 idx); -extern s32 func_801564B0(s32 a0); -extern s32 func_8002A1B4(void); -extern s32 func_8002A400(void); -extern s32 func_8002A670(void); -extern s32 func_8002A8E0(void); -extern s32 D_801151E0[]; -extern s32 func_801565C0(void); -extern void func_80156A14(s32 *a0); -extern void func_80156648(s32 *a0); -extern u8 D_8011DAD8[]; -extern s32 func_8014C568(s16 *a0, s16 *a1); -extern void func_801567BC(s32 a0); -extern B8 D_80128120[]; -extern B8 D_80128138[]; -extern S8 D_80126AF0[]; -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018F4E8[]; -extern void func_80156A1C(s32 param_1, s32 param_2); -extern s32 D_801150E0[]; -extern void func_80156A88(s32 a0, s32 a1); -extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); -extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); -extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); -extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern s32 func_80135004(s32 a0, void *a1, s32 a2); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801575E4(void *a0); -extern void func_801574DC(s32 *a0); -extern void func_80157544(void *a0); -extern void (*D_8018F4F8[])(void); -extern void func_8014CC28(s32 a0); /* defined */ -extern s32 func_8014F3E8(s32 a0); /* declared */ -extern void func_8015BDD0(s32 *a0); /* defined */ -extern void func_801575E4(void *a0); /* defined */ -extern void func_80157580(s32 arg0); -extern u8 D_800D4F14[]; -extern void func_801576A8(void *arg0); -extern s32 func_8015773C(u8 *a0); -extern s32 func_8015771C(u8 *a0); -extern s32 func_8015773C(u8 * arg0); -extern int D_801E5BE0; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018F520[])(void); -extern void func_80157808(void *param_1); -extern void func_80157880(s32 a0); -extern s32 func_801725A4(u8 *a0); -extern u8 D_800D5128; -extern u8 D_8018F500; -extern void func_801578C0(s32 param_1); -extern void func_80147A84(int); -extern void func_80148038(int, int); -extern void func_80147460(int); -extern void func_80146D90(int); -extern void func_80161450(void *a0); -extern void func_80157A8C(int); -extern void func_80154A74(int, int); -extern unsigned char D_800D5178; -extern unsigned char D_8018F510; -extern void func_8015795C(int param_1); -extern void func_80161D20(int param_1, u32 param_2); -extern void func_80157A8C(s32 a0); -extern void func_8016706C(s32 a0); -extern u8 D_800D51AC[]; -extern void func_80157AC8(s32 param_1); -extern void func_80157B74(int param_1); -extern void func_8016158C(void *a0); -extern void func_8015BE04(s32 *a0); -extern void func_80157BC8(s32 a0); -extern void func_80157CCC(s32 a0); -extern void func_80157DC4(void *a0); -extern void func_80157FC4(void *a0); -extern void func_80157D74(u16 *a0); -extern void (*D_8018F560[])(void); -extern void func_80157E38(void *); -extern void func_80157E00(void *a0); -extern void func_80157E38(void * a0); -extern s32 func_80157F64(s32 *a0); -extern s32 func_80156600(void *a0); -extern void func_80157EA4(void *a0); -extern void (*D_8018F568[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018F534; -extern void func_80158038(void * param); -extern u8 D_800D524C[]; -extern void func_80161418(void *a0); -extern void func_801580B4(s32 a0); -extern void func_801581AC(s32 a0); -extern void (*D_8018F574[])(void); -extern void func_8015824C(void *a0); -extern void func_801582C0(void *); -extern void func_80158288(void *a0); -extern u8 D_800D52A8[]; -extern void func_801585A4(s32 *a0); -extern void func_801582C0(void *a0); -extern s32 func_801585AC(s32 *a0); -extern u8 D_800D52E8[]; -extern void func_80158344(s32 *a0); -extern s32 func_801615C4(void *a0, s32 a1); -extern u8 D_8018F544; -extern u8 D_800D533C; -extern void func_80158434(s32 param_1); -extern void func_80158548(s32 param_1); -extern void func_801585EC(u8 *a0); -extern void func_80158794(void); -extern s32 D_801E5BE8; -extern s32 D_801E5BF4; -extern s32 D_801E5BF8; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018F5B0[])(s32 *); -extern void func_80158AE4(void *a0); -extern void func_80158AB4(void *a0); -extern void func_8016F264(void); -extern void func_80165840(void); -extern void func_801658DC(void); -extern void func_80165A78(s32); -extern void func_80158AE4(void * a0); -extern M2C_UNK D_800D58D8; -extern void func_80158BB0(void *arg0); -extern s32 func_80159404(s32 a0, s32 a1); -extern void func_80158C40(s32 *a0); -extern void func_80158CD8(s32 *a0); -extern s32 func_80159434(s32 a0, s32 a1); -extern void func_80158D60(s32 a0); -extern M2C_UNK D_800D5904; -extern void func_80158E24(s32 *a0); -extern s32 D_8018F584[]; -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80158F00(int param_1); -extern u8 D_80110C3C[]; -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80158FA4(s32 param_1); -extern s32 func_801399F0(s32 a0); -extern u8 D_80110C94[]; -extern u8 D_80110CD4[]; -extern void func_80159070(void *a0); -extern s32 func_80029A94(s32); -extern void func_80175454(void); -extern void func_800298BC(void *); -extern void func_8002992C(s32); -extern void func_800CF804(void); -extern void func_800CF818(void); -extern u8 D_80110D0C[]; -extern void func_80159120(s32 a0); -extern void func_801592CC(s32 *a0); -extern u8 D_800AE6BD; -extern s32 D_801E5BF0; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018F800[])(void); -extern void func_80159698(void *a0); -extern s32 func_801596D4(void *a0); -extern void func_80174B6C(void); -extern void func_80129248(s16 a0); -extern void func_8013C938(void); -extern void func_8013CB20(void); -extern void func_8013C98C(void); -extern void func_8002850C(s32, s32, s32); -extern void func_80028620(s32, void *); -extern s16 D_800B9AAC[]; -extern s16 D_800B9B00; -extern u16 D_801270C0; -extern u32 D_800AFAE8[]; -extern char D_8018F620[]; -extern s32 func_801596F0(s32 param_1); -extern s32 func_80159874(void); -extern void func_800167B8(s32 a0); -extern s32 func_8015987C(s32 a0); -extern int func_800167F0(int arg); -extern int func_801598BC(void); -extern void func_80159968(void *a0); -extern void func_801598E0(u8 *a0); -extern void (*D_8018F8A4[])(void); -extern void func_80159A20(void *a0); -extern void func_801599E0(void *a0); -extern void func_80159A18(void); -extern void func_80159BE4(s32); -extern void func_80159B08(s32 *a0); -extern void func_80159B70(void *a0); -extern void func_80159B3C(void * a0); -extern void (*D_8018F9F8[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018F814; -extern void func_80159BE4(s32 arg0); -extern void func_8015A1C8(s32 a0); -extern void func_8015A2D8(s32); -extern void func_8015A1FC(s32 *a0); -extern void func_8015A264(void *a0); -extern void func_8015A230(s32 *a0); -extern void (*D_8018FA00[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018F824; -extern s32 func_80172608(u8 *a0); -extern void func_8015A2D8(s32 param_1); -extern u8 D_800D48DC; -extern s32 func_8015AB7C(s32 a0); -extern s32 D_8011F9C4; -extern s32 func_8015ABD4(s32 a0, s32 a1, s32 a2); -extern s32 func_80161CD0(s32 a0, s32 a1); -extern M2C_UNK D_8018F844; -extern void func_8015AC48(s32 arg0); -extern void func_8015AC90(s32 a0); -extern void func_8015ADB0(s32 a0); -extern void func_8015ACC4(s32 *arg0); -extern void func_8015AD3C(void *a0); -extern void func_8015AD08(void *arg0); -extern void (*D_8018FA08[])(void); -extern void func_8015ADB0(s32); -extern void func_8015AD78(s32 a0); -extern void func_8015ADB0(s32 arg0); -extern s32 func_80161A60(s32 a0); -extern s32 func_801619A4(s32 *a0); -extern s32 func_80149C08(s32 a0); -extern s32 func_8015B6F4(s32 a0); -extern s32 func_8015B7B4(s32 a0); -extern void func_8015B8F8(s32 *a0); -extern void func_800CCCC0(s32 a0); -extern s32 func_8015B858(u8 *a0); -extern s32 func_800CF8B4(void); -extern void func_80147A84(s32 a0); -extern s32 func_80172644(u8 *a0); -extern void func_800CCB78(s32 a0); -extern s32 func_80161488(void *a0); -extern void func_8015CC40(s32 *a0); -extern void func_8015CF8C(s32 *a0); -extern s32 func_8015AE2C(); -extern s32 D_800D4A9C; -extern int func_8015B6F4(int param_1); -extern u8 D_800D4F8C[]; -extern u8 D_800D4BE0[]; -extern s32 func_8014A51C(void); -extern s32 D_800D4B48; -extern void func_8015BD8C(s32 *a0); -extern s32 func_8015BE94(); -extern void func_8015BE38(struct Obj *a0); -extern s32 func_8015BE74(void); -extern void func_80161124(void *a0); -extern s32 func_8015BE94(s32 *a0); -extern s32 func_8015BEC4(void); -extern s32 func_8015B950(s32 arg0); -extern s32 func_8015BEE4(void); -extern void func_8015BF04(s32 *a0); -extern void func_8015C0C4(s32 a0); -extern void func_8015BFF4(void *a0); -extern void func_8015BF7C(s32 *a0); -extern void func_8015C030(s32 *a0, s32 a1); -extern void func_8015BFB0(s32 *a0, s32 a1); -extern void (*D_8018FA30[])(void); -extern void func_8015C0C4(s32); -extern void func_8015C08C(s32 a0); -extern s32 func_8015C128(s32 param_1); -/* ==== end §8b carried decl layer ==== */ - - - - -extern u16 D_800B99DA; - -extern s32 func_80149FB0(s32 a0); -extern s32 func_801496D4(void*); -extern void func_80149704(void); -extern s32 func_801619A4(s32*); -extern s32 func_80149AA8(s32*); -extern void func_80149AD4(s32*); -extern s32 func_80149B54(s32*); -extern void func_80149BAC(s32*); -extern s32 func_801498E0(s32*); -extern s32 func_80149954(s32); -extern s32 func_80149A64(s32*); -extern void func_800CCCC0(s32 a0); -extern int func_80148AFC(void *a0); -extern void func_8001382C(s32 a0, void *a1, void *a2); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80147A84(s32 a0); -extern void func_801473EC(s32*); -extern void func_8014C010(s32 a0, s32 a1); -extern void func_80147324(s32 a0); -extern void func_8014D738(void); -extern void func_8014CC28(s32); -extern s32 func_8014F3E8(s32); -extern s32 func_80146E98(s32 a0); -extern void func_80147078(s32 *a0, s16 a1); -extern s32 func_8015BE94(); -extern void func_80159BE4(s32 a0); -extern void func_8015C0C4(s32 a0); -extern void func_8015C6E0(s32*); - -void func_8015C32C(s32 arg0) { - - extern void (*D_8018F8B0[])(void *); - s32 iVar2; - u32 uVar4; - s32 vin[4]; - s32 vout[4]; - - func_80149FB0(arg0); - if (((s32 (*)(s32))func_801496D4)(arg0) != 0) { - D_8018F8B0[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_80149704)(arg0); - return; - } - switch (((s32 (*)(s32))func_801619A4)(arg0)) { - case 0: - case 1: - case 6: - if (((s32 (*)(s32))func_80149AA8)(arg0) != 0) { - D_8018F8B0[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_80149AD4)(arg0); - return; - } - if (((s32 (*)(s32))func_80149B54)(arg0) != 0) { - D_8018F8B0[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_80149BAC)(arg0); - return; - } - break; - case 3: - ((void (*)(s32))func_801498E0)(arg0); - break; - case 4: - ((void (*)(s32))func_80149954)(arg0); - break; - case 5: - if (((s32 (*)(s32))func_80149A64)(arg0) != 0) { - D_8018F8B0[*(u16 *)arg0]((void *)arg0); - func_800CCCC0(arg0); - return; - } - } - if ((func_80148AFC((void *)arg0) & 0xff) != 0) { - vin[0] = 0; - vin[1] = 0; - vin[2] = -0x4000; - func_8001382C((s32)*(s16 *)(*(s32 *)(arg0 + 0x20) + 0x12), vin, vout); - *(s32 *)(arg0 + 0x234) += vout[0]; - *(s32 *)(arg0 + 0x238) += vout[1]; - *(s32 *)(arg0 + 0x23c) += vout[2]; - } - func_8001382C((s16)-*(u16 *)(*(s32 *)(arg0 + 0x20) + 0x12), (void *)(arg0 + 0x234), vout); - func_80146DB8((s32 *)arg0, vout); - func_80147A84(arg0); - ((void (*)(s32))func_801473EC)(arg0); - if ((D_800B99DA & 3) == 0) { - func_8014C010(arg0, 1); - func_80147324(0x65f); - } - if (((s32 (*)(s32))func_8014D738)(arg0) != 0) { - D_8018F8B0[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_8015C6E0)(arg0); - return; - } - iVar2 = ((s32 (*)(s32))func_8014CC28)(arg0); - uVar4 = ((u32 (*)(s32))func_8014F3E8)(arg0); - if (uVar4 != 0) { - if ((uVar4 & 0x4000) == 0) { - if (func_80146E98(arg0) != 0) { - D_8018F8B0[*(u16 *)arg0]((void *)arg0); - func_80147078((s32 *)arg0, 0); - func_80159BE4(arg0); - } - } else { - func_80147078((s32 *)arg0, 4); - func_8015C0C4(arg0); - } - } else { - if (iVar2 == 0) { - D_8018F8B0[*(u16 *)arg0]((void *)arg0); - func_80147078((s32 *)arg0, 3); - ((void (*)(s32))func_8015BE94)(arg0); - } - } -} - - -DEFINE_func_8015C6A4() /* dedup: shared engine-core @0x8015C6A4 (src/shared) */ - -DEFINE_func_8015C6AC() /* dedup: shared engine-core @0x8015C6AC (src/shared) */ - -DEFINE_func_8015C6E0() /* dedup: shared engine-core @0x8015C6E0 (src/shared) */ - - -extern void (*D_8018FA3C[])(void); - -void func_8015C714(void *a0) { - D_8018FA3C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015C750() /* dedup: shared engine-core @0x8015C750 (src/shared) */ - -DEFINE_func_8015C788() /* dedup: shared engine-core @0x8015C788 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (match_one 88/88); fn-ptr-array dispatch, top-level if/else needed branch-polarity invert (small block falls through, big block at L854) - -extern s32 func_80161B18(void *a0); -extern s32 func_80161B84(void *a0); -extern s32 func_801496D4(void *a0); -extern u16 func_801487F4(s32 *a0); -extern s32 func_801488A8(u8 *a0); -extern void func_80161240(void *a0); -extern s32 func_80146E98(s32 a0); -extern void func_80149704(void); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern void func_80148AAC(u8 *a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146E90(s32 *a0, s32 a1); -extern void func_80146CA0(void *a0); -extern void func_80161C24(s32, s32); -extern void func_8014C010(s32 a0, s32 a1); - - -void func_8015C7E4(u16 *param_1) -{ - - extern void (*D_8018F8B0[])(void*); - extern int D_8018F854; - s32 iVar1; - u32 uVar2; - - iVar1 = ((s32 (*)(u16 *))func_80161B18)(param_1); - if ((iVar1 == 0) && (iVar1 = ((s32 (*)(u16 *))func_80161B84)(param_1), iVar1 == 0)) { - iVar1 = ((s32 (*)(u16 *))func_801496D4)(param_1); - if (iVar1 != 0) { - ((void (**)(u16*))D_8018F8B0)[*param_1](param_1); - ((void (*)(u16 *))func_80149704)(param_1); - } else { - uVar2 = ((s32 (*)(u16 *))func_801487F4)(param_1); - if (((uVar2 & 0x80) == 0) && (iVar1 = ((s32 (*)(u16 *))func_801488A8)(param_1), iVar1 == 0)) { - ((void (**)(u16*))D_8018F8B0)[*param_1](param_1); - ((void (*)(u16 *, s32))func_80147078)(param_1, 0); - ((void (*)(u16 *))func_80159B70)(param_1); - } else { - iVar1 = ((s32 (*)(u16 *))func_80161240)(param_1); - if (iVar1 == 0) { - iVar1 = ((s32 (*)(u16 *))func_80146E98)(param_1); - if (iVar1 != 0) { - ((void (*)(u16 *))func_80148AAC)(param_1); - ((void (*)(u16 *, void *))func_80146DB8)(param_1, &D_8018F854); - ((void (*)(u16 *, s32))func_80146E90)(param_1, 0x14); - ((void (*)(u16 *))func_80146CA0)(param_1); - } - if ((param_1[0x5c] & 0x2000) != 0) { - ((void (*)(u16 *, s32))func_80161C24)(param_1, param_1[0xb7]); - ((void (*)(u16 *, s32))func_8014C010)(param_1, 2); - } - } - } - } - } - return; -} - - - - -// @class: struct -// @stuck: none — dispatch + control flow on a single callee-saved param; expect MATCH - -extern s32 func_80149FB0(s32 a0); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801473EC(s32 *a0); -extern void func_8014D738(void); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern void func_80161240(void *a0); -extern s32 func_80146E98(s32 a0); -extern void func_80146CA0(void *a0); -extern void func_80161C24(s32, s32); - - -void func_8015C944(int param_1) { - - extern void (*D_8018F8B0[])(); - func_80149FB0(param_1); - func_80147AD4(param_1, 0, 0, 0); - ((void (*)(int))func_801473EC)(param_1); - ((void (*)(int))func_8014D738)(param_1); - if (*(int *)(param_1 + 0x170) == 0) { - (*D_8018F8B0[*(unsigned short *)param_1])(param_1); - ((void (*)(int, int))func_80147078)(param_1, 0); - ((void (*)(int))func_80159B70)(param_1); - } else { - if (((int (*)(int))func_80161240)(param_1) == 0) { - if (func_80146E98(param_1) != 0) { - ((void (*)(int))func_80146CA0)(param_1); - } - if ((*(unsigned short *)(param_1 + 0xb8) & 0x2000) != 0) { - func_80161C24(param_1, *(unsigned short *)(param_1 + 0x16e)); - } - } - } -} - - - -// @class: schedule -// @stuck: none — MATCH (goto forces the func_80161240 block to the function tail; bnez-to-end layout vs early-return fall-through) - - -extern s32 func_80149FB0(s32 a0); -extern s32 func_80161B18(void *a0); -extern s32 func_80161B84(void *a0); -extern s32 func_801496D4(void *a0); -extern u16 func_801487F4(s32 *a0); -extern s32 func_801488A8(u8 *a0); -extern void func_80148AAC(u8 *a0); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801473EC(s32 *a0); -extern void func_8014D738(void); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146E90(s32 *a0, s32 a1); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80161240(void *a0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern void func_80149704(void); - - -void func_8015CA28(u16 *param_1) { - - extern void (*D_8018F8B0[])(void*); - extern int D_8018F854; - ((void (*)(void))func_80149FB0)(); - if (((int (*)(u16 *))func_80161B18)(param_1) != 0) return; - if (((int (*)(u16 *))func_80161B84)(param_1) != 0) return; - if (((int (*)(u16 *))func_801496D4)(param_1) != 0) { - ((void (**)(u16*))D_8018F8B0)[*param_1](param_1); - ((void (*)(u16 *))func_80149704)(param_1); - return; - } - if ((((u32 (*)(u16 *))func_801487F4)(param_1) & 0x80) != 0 || ((int (*)(u16 *))func_801488A8)(param_1) != 0) { - if ((((int (*)(u16 *))func_80148AAC)(param_1) & 0xff) != 0) { - ((void (*)(u16 *, int, int, int))func_80147AD4)(param_1, 0, 0, 0); - ((void (*)(u16 *))func_801473EC)(param_1); - } - if (((int (*)(u16 *))func_8014D738)(param_1) != 0) { - ((void (*)(u16 *, void *))func_80146DB8)(param_1, &D_8018F854); - ((void (*)(u16 *, int))func_80146E90)(param_1, 0x14); - ((void (*)(u16 *, int))func_80146C98)(param_1, 2); - } - if (*(int *)(param_1 + 0xb8) != 0) - goto do161240; - } - ((void (**)(u16*))D_8018F8B0)[*param_1](param_1); - ((void (*)(u16 *, int))func_80147078)(param_1, 0); - ((void (*)(u16 *))func_80159B70)(param_1); - return; -do161240: - ((void (*)(u16 *))func_80161240)(param_1); -} - - -DEFINE_func_8015CB94() /* dedup: shared engine-core @0x8015CB94 (src/shared) */ - -DEFINE_func_8015CBCC() /* dedup: shared engine-core @0x8015CBCC (src/shared) */ - -DEFINE_func_8015CBD4() /* dedup: shared engine-core @0x8015CBD4 (src/shared) */ - -DEFINE_func_8015CBDC() /* dedup: shared engine-core @0x8015CBDC (src/shared) */ - -DEFINE_func_8015CBE4() /* dedup: shared engine-core @0x8015CBE4 (src/shared) */ - -DEFINE_func_8015CBEC() /* dedup: shared engine-core @0x8015CBEC (src/shared) */ - -DEFINE_func_8015CBF4() /* dedup: shared engine-core @0x8015CBF4 (src/shared) */ - -DEFINE_func_8015CBFC() /* dedup: shared engine-core @0x8015CBFC (src/shared) */ - -DEFINE_func_8015CC04() /* dedup: shared engine-core @0x8015CC04 (src/shared) */ - -DEFINE_func_8015CC0C() /* dedup: shared engine-core @0x8015CC0C (src/shared) */ - -DEFINE_func_8015CC40() /* dedup: shared engine-core @0x8015CC40 (src/shared) */ - - - -void func_8015CC74(s32 *a0) { - - extern void (*D_8018FA4C[])(void); - D_8018FA4C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015CCB0() /* dedup: shared engine-core @0x8015CCB0 (src/shared) */ - -DEFINE_func_8015CCD0() /* dedup: shared engine-core @0x8015CCD0 (src/shared) */ - -#define NULL 0 - - - - - -s32 func_8015CD20(s32 arg0) { - extern void (*D_8018F8B0[])(struct Ent_8015CD20 *); - extern u8 D_8018F864; - extern u8 D_8018FA54; - extern u8 D_8018FA64; - - s32 temp_v0; - s32 var_v0; - struct Sub_8015CD20 *sp; - - ((void(*)())func_80149FB0)(); - if (((s32(*)(struct Ent_8015CD20 *))func_801496D4)(((struct Ent_8015CD20 *)arg0)) != 0) { - D_8018F8B0[((struct Ent_8015CD20 *)arg0)->unk0](((struct Ent_8015CD20 *)arg0)); - ((struct Ent_8015CD20 *)arg0)->unk1BC = 0xA; - ((s32(*)(struct Ent_8015CD20 *))func_80149724)(((struct Ent_8015CD20 *)arg0)); - if (((s32(*)(struct Ent_8015CD20 *))func_80148AFC)(((struct Ent_8015CD20 *)arg0)) & 0xFF) { - ((void(*)(struct Ent_8015CD20 *, u8 *))func_80146DB8)(((struct Ent_8015CD20 *)arg0), &D_8018F864); - } else { - ((void(*)(struct Ent_8015CD20 *))func_80146D90)(((struct Ent_8015CD20 *)arg0)); - } - return; - } - temp_v0 = ((struct Ent_8015CD20 *)arg0)->unk234; - if (temp_v0 == 0) { - if (((s32(*)(struct Ent_8015CD20 *))func_80148980)(((struct Ent_8015CD20 *)arg0)) != 0) { - ((void(*)(struct Ent_8015CD20 *, u8 *))func_80146DB8)(((struct Ent_8015CD20 *)arg0), &D_8018FA54); - ((void(*)(struct Ent_8015CD20 *))func_80147A84)(((struct Ent_8015CD20 *)arg0)); - ((void(*)(struct Ent_8015CD20 *))func_801473EC)(((struct Ent_8015CD20 *)arg0)); - ((void(*)(struct Ent_8015CD20 *, s32))func_80154150)(((struct Ent_8015CD20 *)arg0), 0x15); - sp = ((struct Ent_8015CD20 *)arg0)->unk20; - var_v0 = sp->unk12 - 0xAA; - goto block_13; - } - if (((s32(*)(struct Ent_8015CD20 *))func_8014891C)(((struct Ent_8015CD20 *)arg0)) != 0) { - ((void(*)(struct Ent_8015CD20 *, u8 *))func_80146DB8)(((struct Ent_8015CD20 *)arg0), &D_8018FA64); - ((void(*)(struct Ent_8015CD20 *))func_80147A84)(((struct Ent_8015CD20 *)arg0)); - ((void(*)(struct Ent_8015CD20 *))func_801473EC)(((struct Ent_8015CD20 *)arg0)); - ((void(*)(struct Ent_8015CD20 *, s32))func_80154150)(((struct Ent_8015CD20 *)arg0), 0x14); - ((struct Ent_8015CD20 *)arg0)->unkB8 = 1; - } - if (((s32(*)(struct Ent_8015CD20 *))func_801489E8)(((struct Ent_8015CD20 *)arg0)) != 0) { - sp = ((struct Ent_8015CD20 *)arg0)->unk20; - var_v0 = sp->unk12 + 0x71; - goto block_13; - } - if (((s32(*)(struct Ent_8015CD20 *))func_80148A48)(((struct Ent_8015CD20 *)arg0)) != 0) { - sp = ((struct Ent_8015CD20 *)arg0)->unk20; - var_v0 = sp->unk12 - 0x71; -block_13: - sp->unk12 = var_v0 & 0xFFF; - } - } else { - ((struct Ent_8015CD20 *)arg0)->unk234 = temp_v0 - 1; - } - ((void(*)(struct Ent_8015CD20 *))func_8014FA04)(((struct Ent_8015CD20 *)arg0)); - if (((s32(*)(struct Ent_8015CD20 *))func_8014E434)(((struct Ent_8015CD20 *)arg0)) == 0) { - D_8018F8B0[((struct Ent_8015CD20 *)arg0)->unk0](((struct Ent_8015CD20 *)arg0)); - ((void(*)(struct Ent_8015CD20 *, s32))func_80147078)(((struct Ent_8015CD20 *)arg0), 0); - ((void(*)(struct Ent_8015CD20 *))func_80159B70)(((struct Ent_8015CD20 *)arg0)); - } else { - ((void(*)(struct Ent_8015CD20 *))func_801725E0)(((struct Ent_8015CD20 *)arg0)); - } -} - - - -DEFINE_func_8015CF24() /* dedup: shared engine-core @0x8015CF24 (src/shared) */ - -DEFINE_func_8015CF58() /* dedup: shared engine-core @0x8015CF58 (src/shared) */ - -DEFINE_func_8015CF8C() /* dedup: shared engine-core @0x8015CF8C (src/shared) */ - - - -void func_8015CFC0(s32 *a0) { - - extern void (*D_8018FA84[])(void); - D_8018FA84[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015CFFC() /* dedup: shared engine-core @0x8015CFFC (src/shared) */ - -// @class: regalloc-order -// @stuck: none — MATCH (uVar1 pinned $s3, uVar5 pinned $s1; param_1->s2, iVar4->s0 fall out) - - -void func_8015D01C(int param_1) { - extern s32 func_801725F4(u8 *a0); - extern int D_800D550C; - extern int D_8018FA74; - - int iVar4; - register unsigned short uVar1 __asm__("$19"); - register unsigned short uVar5 __asm__("$17"); - short sVar2; - short sVar3; - - ((void (*)(int, void *))func_80154274)(param_1, &D_800D550C); - *(short *)(*(int *)(param_1 + 0x20) + 0x10) = 0; - iVar4 = *(short *)(*(int *)(param_1 + 0x20) + 0x12); - uVar1 = *(unsigned short *)(*(int *)(*(int *)(param_1 + 0x180) + 0x20) + 0x12); - uVar5 = (uVar1 + 0x800) & 0xfff; - sVar2 = func_80012A60(iVar4, (short)uVar1); - sVar3 = func_80012A60(iVar4, uVar5); - if (sVar2 < sVar3) { - *(short *)(*(int *)(param_1 + 0x20) + 0x12) = uVar1; - } else { - *(unsigned short *)(*(int *)(param_1 + 0x20) + 0x12) = uVar5; - } - *(int *)(param_1 + 0x38) = (int)&D_8018FA74 | 0x40000000; - ((void (*)(int))func_801725F4)(param_1); - ((void (*)(int))func_80146CA0)(param_1); -} - - - - - -// @class: struct -// @stuck: none — MATCH (pending gate) - -extern s32 func_80149FB0(s32 a0); -extern void func_8014FA04(s32 a0); -extern void func_8014E6A0(void); -extern void (*D_8018F8B0[])(void *); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern s32 func_801725F4(u8 *a0); -extern void func_80146CA0(void *a0); - -void func_8015D104(void *arg0) { - ((void (*)(void))func_80149FB0)(); - ((void (*)(void *))func_8014FA04)(arg0); - if (((s32 (*)(void *))func_8014E6A0)(arg0) == 0) { - D_8018F8B0[*(u16 *)arg0](arg0); - ((void (*)(void *, s16))func_80147078)(arg0, 0); - func_80159B70(arg0); - } else { - ((void (*)(void *))func_801725F4)(arg0); - *(s32 *)((u8 *)arg0 + 0x234) = 0xFF1D0000; - *(u16 *)(*(s32 *)((u8 *)arg0 + 0x20) + 0x10) = 0x600; - *(u16 *)((u8 *)arg0 + 0x244) = *(u16 *)(*(s32 *)((u8 *)arg0 + 0x20) + 0x10); - func_80146CA0(arg0); - } -} - - - -extern s32 func_80149FB0(s32); -extern void func_80147324(s32 a0); -extern u16 func_80148800(s32 *a0); -extern void func_80149724(void); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80146E90(s32 *a0, s32 a1); -extern void func_80146DB8(s32*, s32*); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_8014FA04(s32); -extern void func_8014E6A0(void); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void*); -extern void func_8015D380(s32); -extern s32 func_801725F4(u8 *a0); - -extern void (*D_8018F8B0[])(void*); - -void func_8015D1B8(s32 *a0) -{ - - extern s32 D_8018FA90; - extern s32 D_8018FA94; - extern s32 D_8018FAD8; - extern s32 D_800D4C14; - s32 sum; - s32 keep; - s32 obj; - s16 cur; - s16 prev; - s16 d; - s32 off; - s32 *p; - s32 dummy[2]; /* L1: dead, but its stack slot is what makes the frame 0x38 */ - - ((void (*)(void))func_80149FB0)(); - obj = *(s32 *)((u8 *)a0 + 0x20); - sum = *(u16 *)(obj + 0x10) + *(u16 *)((u8 *)a0 + 0x236); - *(u16 *)(obj + 0x10) = sum & 0xFFF; - keep = sum; /* L2: AFTER the store — this is what keeps the $s0 copy alive */ - - cur = *(s16 *)(*(s32 *)((u8 *)a0 + 0x20) + 0x10); - prev = *(s16 *)((u8 *)a0 + 0x244); - if (cur - prev >= 0) { - d = cur - prev; - } else { - d = prev - cur; - } - if (d > 0x800) { - func_80147324(0x5E9); - } - *(u16 *)((u8 *)a0 + 0x244) = *(u16 *)(*(s32 *)((u8 *)a0 + 0x20) + 0x10); - - if (func_80148800(a0) & 0x40) { - ((void (**)(s32*))D_8018F8B0)[*(u16 *)a0](a0); - ((void (*)(s32 *))func_80149724)(a0); - func_80154274(a0, (s32)&D_800D4C14); - func_80146E90(a0, 0x10); - { - u32 t = keep & 0xFFF; /* L3: unsigned value, signed guard -> bgez + srl */ - if ((s32)t < 0) { - t += 0x1FF; - } - p = &D_8018FAD8; /* L4 + scheduling: the `la` must precede the srl/sll pair */ - off = (t >> 9) * 8; - } - *p = *(s32 *)((u8 *)&D_8018FA90 + off); - ((void (*)(s32 *, s32))func_80146DB8)(a0, (s32)(p - 2)); /* 0x801893D8 == &D_8018FAD8[-2] (no label there) */ - func_801477E8(a0, *(s32 *)((u8 *)&D_8018FA94 + off)); - func_80147324(0x5EA); - } else { - ((void (*)(s32 *))func_8014FA04)(a0); - if (((s32 (*)(s32 *))func_8014E6A0)(a0) == 0) { - ((void (**)(s32*))D_8018F8B0)[*(u16 *)a0](a0); - func_80147078(a0, 0); - ((void (*)(s32 *))func_80159B70)(a0); - } else { - ((void (*)(s32 *))func_8015D380)(a0); - func_801725F4(a0); - } - } -} - - - -// @class: regalloc-order -// @stuck: pinning a0->$s1 and buffer-ptr->$s0; body copy already matches -extern void func_80013F3C(s32 a0); -extern void func_80012558(s32 a0, s32 a1); -extern void func_800126C4(s32 a0, s32 a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern void *memcpy(void *dst, const void *src, u32 n); - -extern s32 D_8018FAE0; - -void func_8015D380(s32 a0) { - s16 out[4]; - s32 buf[8]; - register s32 s1 __asm__("$17") = a0; - register s32 *s0 __asm__("$16") = buf; - ((void (*)(void *))func_80013F3C)((void *)s0); - ((void (*)(void *, s32))func_80012558)((void *)s0, *(s16 *)(*(s32 *)(s1 + 0x20) + 0x12)); - ((void (*)(void *, s32))func_800126C4)((void *)s0, *(s16 *)(*(s32 *)(s1 + 0x20) + 0x10)); - ApplyMatrixSV((void *)s0, (void *)&D_8018FAE0, (void *)out); - memcpy((void *)(s1 + 0x138), (void *)out, 8); -} - - - - -// @class: plumbing -// @stuck: none — MATCH - -extern unsigned char D_8018EBC4[]; - -extern void func_801553C0(s32 a0); -extern void func_80154A74(s32 a0, s32 a1); - -void func_8015D414(int param_1) -{ - *(unsigned char *)(param_1 + 0x1bd) = 8; - *(unsigned char **)(param_1 + 0x38) = D_8018EBC4; - *(short *)(param_1 + 0x138) = 0; - *(short *)(param_1 + 0x13a) = 0; - *(short *)(param_1 + 0x13c) = 0; - *(short *)(param_1 + 0x13e) = 0; - *(short *)(param_1 + 0xA) = *(short *)(param_1 + 0xA) + 0x48; - *(short *)(*(int *)(param_1 + 0x20) + 0x10) = 0; - ((void (*)(void))func_801553C0)(); - func_80154A74(param_1, 0x11); -} - - -DEFINE_func_8015D480() /* dedup: shared engine-core @0x8015D480 (src/shared) */ - -DEFINE_func_8015D4B4() /* dedup: shared engine-core @0x8015D4B4 (src/shared) */ - - - -s32 func_8015D4E8(s16 *a0) { - - extern void (*D_8018FAE8[])(void); - D_8018FAE8[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015D524() /* dedup: shared engine-core @0x8015D524 (src/shared) */ - -DEFINE_func_8015D544() /* dedup: shared engine-core @0x8015D544 (src/shared) */ - -DEFINE_func_8015D57C() /* dedup: shared engine-core @0x8015D57C (src/shared) */ - - -// @class: loose-typing -// @stuck: none — MATCH (field 0xb8 compared as u16 == 0x8000, not s16 == -0x8000) - -extern s32 func_80161B18(void *a0); -extern s32 func_80161B84(void *a0); -extern void func_80154A74(int, int); -extern s32 func_80161208(); -extern void func_80154150(int, int); -extern void func_80146CA0(void *a0); -extern void func_80149374(int, int); - -extern unsigned char D_8018FAF4[]; - -void func_8015D5E8(int param_1) -{ - int iVar1; - int iVar2; - - if (((int (*)(void))func_80161B18)() != 0) - return; - if (((int (*)(int))func_80161B84)(param_1) != 0) - return; - if ((*(unsigned short *)(param_1 + 0xb8) & 0x4000) != 0) - func_80154A74(param_1, 0x17); - if (((int (*)(int))func_80161208)(param_1) != 0) - return; - if (*(unsigned short *)(param_1 + 0xb8) == 0x8000) { - *(int *)(param_1 + 0x234) = *(int *)(param_1 + 0x234) + -3; - func_80154150(param_1, 0x1a); - ((void (*)(int))func_80146CA0)(param_1); - } else { - iVar1 = *(int *)(param_1 + 0x178); - if (iVar1 != 0) { - iVar2 = *(int *)(param_1 + 0x234); - *(int *)(param_1 + 0x234) = iVar2 + 1; - *(short *)(iVar1 + 6) = - (short)((signed char)D_8018FAF4[iVar2] + - *(unsigned short *)(*(int *)(iVar1 + 0x78) + 0xc)); - iVar2 = *(int *)(param_1 + 0x234); - *(int *)(param_1 + 0x234) = iVar2 + 1; - *(short *)(iVar1 + 10) = - (short)((signed char)D_8018FAF4[iVar2] + - *(unsigned short *)(*(int *)(iVar1 + 0x78) + 0xe)); - iVar2 = *(int *)(param_1 + 0x234); - *(int *)(param_1 + 0x234) = iVar2 + 1; - *(short *)(iVar1 + 0xe) = - (short)((signed char)D_8018FAF4[iVar2] + - *(unsigned short *)(*(int *)(iVar1 + 0x78) + 0x10)); - func_80149374(param_1, iVar1 + 4); - } - } -} - - - -extern int func_80148AFC(void*); -extern s32 func_80161B18(void *); -extern s32 func_80161B84(void *); -extern u16 func_80148800(s32*); -extern u8 func_8014BEF8(void); -extern s32 func_80165624(s32); -extern s32 func_801488A8(u8*); -extern void func_8014D738(void); -extern s32 func_80161208(); -extern void func_80154A74(s32, s32); -extern void func_8015DAC4(s32*); -extern void func_8015DE24(s32*); -extern void func_8015DA5C(s32); -extern void func_8015F948(s32*); -extern void func_800CAF14(void *); -extern void func_80154150(s32, s32); -extern void func_80146DB8(s32*, s32*); -extern void func_80147A84(s32); -extern void func_801473EC(s32*); -extern void func_80149374(s32, s32); -extern void func_80147078(s32*, s16); -extern void func_80159B70(void *); -extern void func_8015C714(void *); -extern void func_801483E8(void); - -extern void (*D_8018F8B0[])(void *); -extern u8 D_80078E78[]; -extern u8 D_8018FAF4[]; - -void func_8015D738(void *arg0) { - - extern u8 D_8018F874[]; - extern u8 D_8018F884[]; - u8 *p = D_80078E78; - s32 s1; - ((void (*)(void))func_80148AFC)(); - if (func_80161B18(arg0) != 0) return; - if (func_80161B84(arg0) != 0) return; - s1 = *(s32 *)((char *)arg0 + 0x178); - if (s1 != 0) { - if (*(u16 *)s1 == 0x360) goto block_808; - } - __asm__ __volatile__(""); - if (s1 != 0) { - if (*(u16 *)s1 != 0) goto block_7F4; - } - D_8018F8B0[*(u16 *)arg0](arg0); - ((void (*)(void *, s32))func_80147078)(arg0, 0); - func_80159B70(arg0); - return; -block_7F4: - if (((s32 (*)(void *))func_80148800)(arg0) & 0x80) { - block_808: - ((void (*)(void *, s32))func_80154A74)(arg0, 0x11); - ((void (*)(void *))func_8015DAC4)(arg0); - return; - } - if ((((s32 (*)(void *))func_80148800)(arg0) & 0x10) && ((s32 (*)(void *))func_8014BEF8)(arg0) != 0) { - ((void (*)(void *, s32))func_80154A74)(arg0, 0x11); - ((void (*)(void *))func_8015DE24)(arg0); - return; - } - if ((((s32 (*)(void *))func_80148800)(arg0) & 0x20) && p[0x49] == 0xA) { - if (((s32 (*)(void *))func_80165624)(arg0) != 0) { - ((void (*)(void *))func_8015DA5C)(arg0); - ((void (*)(void *))func_8015F948)(arg0); - return; - } - ((void (*)(void *, s32))func_80154A74)(arg0, 0x11); - func_800CAF14(arg0); - return; - } - if (((s32 (*)(void *))func_801488A8)(arg0) != 0 && *(u16 *)(*(s32 *)((char *)arg0 + 0x178)) != 0x82) { - ((void (*)(void *, s32))func_80154150)(arg0, 0x1B); - ((void (*)(void *, void *))func_80146DB8)(arg0, &D_8018F874); - } else { - ((void (*)(void *, s32))func_80154150)(arg0, 0x1A); - ((void (*)(void *, void *))func_80146DB8)(arg0, &D_8018F884); - } - ((void (*)(void *))func_80147A84)(arg0); - ((void (*)(void *))func_801473EC)(arg0); - s1 = *(s32 *)((char *)arg0 + 0x178); - *(s16 *)(s1 + 6) = (s16)((s8)D_8018FAF4[*(s32 *)((char *)arg0 + 0x234)] + *(u16 *)(*(s32 *)(s1 + 0x78) + 0xc)); - *(s16 *)(s1 + 0xa) = (s16)((s8)D_8018FAF4[*(s32 *)((char *)arg0 + 0x234) + 1] + *(u16 *)(*(s32 *)(s1 + 0x78) + 0xe)); - *(s16 *)(s1 + 0xe) = (s16)((s8)D_8018FAF4[*(s32 *)((char *)arg0 + 0x234) + 2] + *(u16 *)(*(s32 *)(s1 + 0x78) + 0x10)); - ((void (*)(void *, void *))func_80149374)(arg0, (void *)(s1 + 4)); - *(s16 *)(*(s32 *)(s1 + 0x20) + 0x12) = (*(u16 *)(*(s32 *)((char *)arg0 + 0x20) + 0x12) + 0x800) & 0xFFF; - if (((s32 (*)(void *))func_8014D738)(arg0) != 0) { - D_8018F8B0[*(u16 *)arg0](arg0); - ((void (*)(void *, s32))func_80147078)(arg0, 9); - func_8015C714(arg0); - return; - } - if (func_80161208(arg0) != 0) return; - ((void (*)(void *))func_801483E8)(arg0); -} - - -DEFINE_func_8015DA5C() /* dedup: shared engine-core @0x8015DA5C (src/shared) */ - -DEFINE_func_8015DA90() /* dedup: shared engine-core @0x8015DA90 (src/shared) */ - -DEFINE_func_8015DAC4() /* dedup: shared engine-core @0x8015DAC4 (src/shared) */ - - - -void func_8015DAF8(s32 *a0) { - - extern void (*D_8018FB28[])(void); - D_8018FB28[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015DB34() /* dedup: shared engine-core @0x8015DB34 (src/shared) */ - -DEFINE_func_8015DB6C() /* dedup: shared engine-core @0x8015DB6C (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (mirrors byte-matched func_8015F89C/func_8015F9A4 in same overlay) - -extern void (*D_8018F8B0[])(void *); -extern int func_8015DD74(int); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern s32 func_80161208(); -extern void func_8015DCB8(s32 a0); - -void func_8015DBD4(void *arg0) { - if (*(u16 *)((u8 *)arg0 + 0xB8) & 0x4000) { - ((void (*)(void))func_8015DD74)(); - } - if (*(u16 *)((u8 *)arg0 + 0xB8) == 0x8000) { - D_8018F8B0[*(u16 *)arg0](arg0); - ((void (*)(void *, s16))func_80147078)(arg0, 0); - func_80159B70(arg0); - } else { - if (*(s32 *)((u8 *)arg0 + 0x178) != 0) { - ((void (*)(void *))func_8015DCB8)(arg0); - } - ((s32 (*)(void *))func_80161208)(arg0); - } -} - - -DEFINE_func_8015DC84() /* dedup: shared engine-core @0x8015DC84 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (proxy gate) - -extern s8 D_8018FB30[]; -extern void func_80149374(s32 a0, s32 a1); - -void func_8015DCB8(s32 param_1) { - s32 iVar1; - s32 iVar2; - - iVar2 = *(s32 *)(param_1 + 0x178); - - iVar1 = *(s32 *)(param_1 + 0x234); - *(s32 *)(param_1 + 0x234) = iVar1 + 1; - *(s16 *)(iVar2 + 6) = (s16)D_8018FB30[iVar1] + *(s16 *)(*(s32 *)(iVar2 + 0x78) + 0xc); - - iVar1 = *(s32 *)(param_1 + 0x234); - *(s32 *)(param_1 + 0x234) = iVar1 + 1; - *(s16 *)(iVar2 + 10) = (s16)D_8018FB30[iVar1] + *(s16 *)(*(s32 *)(iVar2 + 0x78) + 0xe); - - iVar1 = *(s32 *)(param_1 + 0x234); - *(s32 *)(param_1 + 0x234) = iVar1 + 1; - *(s16 *)(iVar2 + 0xe) = (s16)D_8018FB30[iVar1] + *(s16 *)(*(s32 *)(iVar2 + 0x78) + 0x10); - - func_80149374(param_1, iVar2 + 4); -} - - -DEFINE_func_8015DD74() /* dedup: shared engine-core @0x8015DD74 (src/shared) */ - -DEFINE_func_8015DDF0() /* dedup: shared engine-core @0x8015DDF0 (src/shared) */ - -DEFINE_func_8015DE24() /* dedup: shared engine-core @0x8015DE24 (src/shared) */ - - - -void func_8015DE58(s32 *a0) { - - extern void (*D_8018FB48[])(void); - D_8018FB48[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015DE94() /* dedup: shared engine-core @0x8015DE94 (src/shared) */ - -DEFINE_func_8015DECC() /* dedup: shared engine-core @0x8015DECC (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (mirrors byte-matched func_8015F89C/func_8015F9A4 in same overlay) - -extern void (*D_8018F8B0[])(void *); -extern int func_8015E0D4(int); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern s32 func_80161208(); -extern void func_8015E018(s32 a0); - -void func_8015DF34(void *arg0) { - if (*(u16 *)((u8 *)arg0 + 0xB8) & 0x4000) { - ((void (*)(void))func_8015E0D4)(); - } - if (*(u16 *)((u8 *)arg0 + 0xB8) == 0x8000) { - D_8018F8B0[*(u16 *)arg0](arg0); - ((void (*)(void *, s16))func_80147078)(arg0, 0); - func_80159B70(arg0); - } else { - if (*(s32 *)((u8 *)arg0 + 0x178) != 0) { - ((void (*)(void *))func_8015E018)(arg0); - } - ((s32 (*)(void *))func_80161208)(arg0); - } -} - - -DEFINE_func_8015DFE4() /* dedup: shared engine-core @0x8015DFE4 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (proxy gate) - -extern s8 D_8018FB30[]; -extern void func_80149374(s32 a0, s32 a1); - -void func_8015E018(s32 param_1) { - s32 iVar1; - s32 iVar2; - - iVar2 = *(s32 *)(param_1 + 0x178); - - iVar1 = *(s32 *)(param_1 + 0x234); - *(s32 *)(param_1 + 0x234) = iVar1 + 1; - *(s16 *)(iVar2 + 6) = (s16)D_8018FB30[iVar1] + *(s16 *)(*(s32 *)(iVar2 + 0x78) + 0xc); - - iVar1 = *(s32 *)(param_1 + 0x234); - *(s32 *)(param_1 + 0x234) = iVar1 + 1; - *(s16 *)(iVar2 + 10) = (s16)D_8018FB30[iVar1] + *(s16 *)(*(s32 *)(iVar2 + 0x78) + 0xe); - - iVar1 = *(s32 *)(param_1 + 0x234); - *(s32 *)(param_1 + 0x234) = iVar1 + 1; - *(s16 *)(iVar2 + 0xe) = (s16)D_8018FB30[iVar1] + *(s16 *)(*(s32 *)(iVar2 + 0x78) + 0x10); - - func_80149374(param_1, iVar2 + 4); -} - - -DEFINE_func_8015E0D4() /* dedup: shared engine-core @0x8015E0D4 (src/shared) */ - -DEFINE_func_8015E150() /* dedup: shared engine-core @0x8015E150 (src/shared) */ - -DEFINE_func_8015E184() /* dedup: shared engine-core @0x8015E184 (src/shared) */ - - - -s32 func_8015E1B8(s32 a0) { - - extern void (*D_8018FB68[])(void); - D_8018FB68[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015E1F4() /* dedup: shared engine-core @0x8015E1F4 (src/shared) */ - -DEFINE_func_8015E22C() /* dedup: shared engine-core @0x8015E22C (src/shared) */ - -DEFINE_func_8015E288() /* dedup: shared engine-core @0x8015E288 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (pending whole-binary gate); fn-ptr table folds %lo via extern array, 0x234 single word store - - -extern void func_8015E40C(s32 a0); -extern s32 func_80161B18(void *a0); -extern s32 func_80161B84(void *a0); -extern s32 func_80161208(); -extern void func_8015E5B0(u8*); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159BE4(s32 arg0); - -extern void (*D_8018F8B0[])(void*); - -void func_8015E344(u16 *param_1) -{ - ((s32 (*)(void))func_8015E40C)(); - if (((s32 (*)(u16 *))func_80161B18)(param_1) == 0 && - ((s32 (*)(u16 *))func_80161B84)(param_1) == 0 && - ((s32 (*)(u16 *))func_80161208)(param_1) == 0) { - if ((param_1[0x5c] & 0x4000) != 0) { - ((void (*)(u16 *))func_8015E5B0)(param_1); - *(s32 *)((char *)param_1 + 0x234) = 1; - } - if ((param_1[0x5c] & 0x8000) != 0) { - ((void (**)(u16*))D_8018F8B0)[param_1[0]](param_1); - ((s32 (*)(u16 *, s32))func_80147078)(param_1, 0); - ((s32 (*)(u16 *))func_80159BE4)(param_1); - } - } -} - - -DEFINE_func_8015E40C() /* dedup: shared engine-core @0x8015E40C (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (pending whole-binary gate); s16 v[3] array forces all 3 locals addressable (reload-from-stack), u16* psVar1 → lhu null/flag check - - -extern u16 D_8018FB78; -extern u16 D_8018FB7A; -extern u16 D_8018FB7C; -extern s32 D_8018FB80; - -extern void func_80149350(s32 arg0); -extern void func_80013E94(void *a0, void *a1); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); - -void func_8015E4B0(s32 param_1) -{ - u16 *psVar1; - s16 v[3]; - s32 local_10; - - psVar1 = *(u16 **)(param_1 + 0x18c); - if ((psVar1 != (u16 *)0) && (*psVar1 != 0)) { - v[0] = D_8018FB78 + *(u16 *)(*(s32 *)(psVar1 + 0x3c) + 0xc); - v[1] = D_8018FB7A + *(s16 *)(*(s32 *)(psVar1 + 0x3c) + 0xe) * 2; - v[2] = D_8018FB7C + *(u16 *)(*(s32 *)(psVar1 + 0x3c) + 0x10); - ((s32 (*)(s32, s16 *, s16 *))func_80149350)(param_1, &v[0], &v[0]); - ((s32 (*)(s32 *, s32 *))func_80013E94)(&D_8018FB80, &local_10); - ((s32 (*)(s32, s32, s32, s32, s32, s32, s32))func_80146A6C)(0x1f, param_1, v[0], v[1], v[2], local_10, 0); - } - return; -} - - - - -extern void func_8013C9C4(void *a0); -extern s32 D_8018FB88; - -void func_8015E588(void) { - func_8013C9C4(&D_8018FB88); -} - - -DEFINE_func_8015E5B0() /* dedup: shared engine-core @0x8015E5B0 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (clean -O2 reconstruction; table-of-fnptr indexed by param_1[0]) - - -extern s32 func_80161208(); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159BE4(s32 arg0); - -/* function-pointer dispatch table */ -extern void (*D_8018F8B0[])(void*); - -void func_8015E698(u16 *param_1) -{ - if (func_80161208() == 0 && (param_1[0x5c] & 0x8000) != 0) { - ((void (**)(u16*))D_8018F8B0)[param_1[0]](param_1); - ((void (*)(u16 *, s32))func_80147078)(param_1, 0); - ((void (*)(u16 *))func_80159BE4)(param_1); - } -} - - -DEFINE_func_8015E714() /* dedup: shared engine-core @0x8015E714 (src/shared) */ - -DEFINE_func_8015E84C() /* dedup: shared engine-core @0x8015E84C (src/shared) */ - -DEFINE_func_8015E880() /* dedup: shared engine-core @0x8015E880 (src/shared) */ - -DEFINE_func_8015E8B4() /* dedup: shared engine-core @0x8015E8B4 (src/shared) */ - - - -void func_8015E8E8(s32 *a0) { - - extern void (*D_8018FB9C[])(void); - D_8018FB9C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015E924() /* dedup: shared engine-core @0x8015E924 (src/shared) */ - -DEFINE_func_8015E95C() /* dedup: shared engine-core @0x8015E95C (src/shared) */ - -DEFINE_func_8015E9B8() /* dedup: shared engine-core @0x8015E9B8 (src/shared) */ - - -extern u16 func_801487F4(s32*); -extern void func_80147078(s32*, s16); -extern void func_80159B70(void *a0); -extern s32 func_80149D10(s32); -extern void func_80175150(void *a0); -extern void func_8016EE40(s32 a0, s32 a1); -extern s32 func_80149744(struct S_80149744*); -extern void func_80149788(void); -extern s32 func_80161B84(void *a0); -extern s32 func_8014A4B4(void *a0); -extern void func_8014A4FC(void); -extern s32 func_80149AA8(s32*); -extern void func_80149AD4(s32*); -extern s32 func_80149B54(s32*); -extern void func_80149BAC(s32*); -extern s32 func_800CF8B4(void); -extern s32 func_801491C4(s32); -extern s32 func_80148E54(void *a0); -extern void func_8001382C(s32 a0, void *a1, void *a2); -extern void func_80146DB8(s32*, s32*); -extern void func_80147A84(s32); -extern void func_801473EC(s32*); -extern void func_80154150(s32, s32); -extern void func_8014D738(void); -extern void func_8015C714(void *a0); -extern s32 func_80161208(); /* canonical no-proto (§17a-1) */ -extern void func_801483E8(void); - -extern void (*D_8018F8B0[])(void *); - -void func_8015EA3C(void *arg0) { - - extern s16 D_801152A0; - s32 invec[4]; - s32 outbuf[4]; - s32 temp; - s32 r; - - if (!(((s32 (*)(void))func_801487F4)() & 8)) { - D_8018F8B0[*(u16 *)arg0](arg0); - ((void (*)(void *, s16))func_80147078)(arg0, 0); - func_80159B70(arg0); - return; - } - r = ((s32 (*)(void *))func_80149D10)(arg0); - if (r == 1) goto Lcase1; - if (r < 2) goto Ldefault; - if (r == 2) goto Lcase2; - goto Ldefault; -Lcase1: - D_8018F8B0[*(u16 *)arg0](arg0); - func_80175150(arg0); - return; -Lcase2: - func_8016EE40(*(s32 *)((u8 *)arg0 + 0x21C), 0x01000000); - return; -Ldefault: - if (((s32 (*)(void *))func_80149744)(arg0) != 0) { - D_8018F8B0[*(u16 *)arg0](arg0); - ((void (*)(void *))func_80149788)(arg0); - return; - } - if (func_80161B84(arg0) != 0) { - return; - } - if (func_8014A4B4(arg0) != 0) { - D_8018F8B0[*(u16 *)arg0](arg0); - ((void (*)(void *))func_8014A4FC)(arg0); - return; - } - if (((s32 (*)(void *))func_80149AA8)(arg0) != 0) { - D_8018F8B0[*(u16 *)arg0](arg0); - ((void (*)(void *))func_80149AD4)(arg0); - return; - } - if (((s32 (*)(void *))func_80149B54)(arg0) != 0) { - D_8018F8B0[*(u16 *)arg0](arg0); - ((void (*)(void *))func_80149BAC)(arg0); - return; - } - if (func_800CF8B4() != 0) { - *(u16 *)(*(s32 *)((u8 *)arg0 + 0x20) + 0x12) = - ((*(u16 *)&D_801152A0) + ((s32 (*)(void *))func_801491C4)(arg0)) & 0xFFF; - } - temp = func_80148E54(arg0); - if ((s16)temp >= 0) { - s32 d = temp - *(u16 *)(*(s32 *)((u8 *)arg0 + 0x20) + 0x12); - invec[0] = 0; - invec[1] = 0; - invec[2] = 0xFFFC0000; - func_8001382C((s16)d, invec, outbuf); - ((void (*)(void *, void *))func_80146DB8)(arg0, outbuf); - ((void (*)(void *))func_80147A84)(arg0); - ((void (*)(void *))func_801473EC)(arg0); - ((void (*)(void *, s32))func_80154150)(arg0, 0x1E); - } else { - ((void (*)(void *, s32))func_80154150)(arg0, 0x1D); - } - if (((s32 (*)(void *))func_8014D738)(arg0) != 0) { - D_8018F8B0[*(u16 *)arg0](arg0); - ((void (*)(void *, s16))func_80147078)(arg0, 9); - func_8015C714(arg0); - return; - } - if (((s32 (*)(s32))func_80161208)(arg0) == 0) { /* §17a-1 */ - ((void (*)(void *))func_801483E8)(arg0); - } -} - - -DEFINE_func_8015ED6C() /* dedup: shared engine-core @0x8015ED6C (src/shared) */ - -DEFINE_func_8015EDA0() /* dedup: shared engine-core @0x8015EDA0 (src/shared) */ - -DEFINE_func_8015EDD4() /* dedup: shared engine-core @0x8015EDD4 (src/shared) */ - - - -s32 func_8015EE08(s32 a0) { - - extern void (*D_8018FBA4[])(void); - D_8018FBA4[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015EE44() /* dedup: shared engine-core @0x8015EE44 (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH (straight STUB call sequence; param saved to $s0 across calls) - -extern void func_8014CBF8(void *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80146CA0(void *a0); - -extern int D_800D4C48; -extern int D_8018F894; - -void func_8015EE7C(s32 param_1) -{ - ((int (*)(void))func_8014CBF8)(); - ((int (*)(int))func_801474EC)(param_1); - ((int (*)(int, void *))func_80154274)(param_1, &D_800D4C48); - ((int (*)(int, void *))func_80146DB8)(param_1, &D_8018F894); - ((int (*)(int, int))func_801477E8)(param_1, 0xFFF40000); - ((int (*)(int))func_80146CA0)(param_1); -} - - - -extern void (*D_8018F8B0[])(void *); - -extern void func_80148038(s32 a0, s32 a1); -extern void func_80147460(s32 a0); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801473EC(s32 *a0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern void func_80161418(void *a0); -extern s32 func_801725A4(u8 *a0); - -void func_8015EEE0(void *arg0) -{ - ((void (*)(void *, s32))func_80148038)(arg0, 0x10000); - ((void (*)(void *))func_80147460)(arg0); - ((void (*)(void *, s32, s32, s32))func_80147AD4)(arg0, 0, 0, 0x1000); - ((void (*)(void *))func_801473EC)(arg0); - if (*(u16 *)((u8 *)arg0 + 0xB8) & 0x8000) { - D_8018F8B0[*(u16 *)arg0](arg0); - ((void (*)(void *, s32))func_80147078)(arg0, 0); - func_80159B70(arg0); - } else { - if (((s32 (*)(void *))func_80161418)(arg0) == 0) { - ((void (*)(void *))func_801725A4)(arg0); - } - } -} - - -DEFINE_func_8015EF9C() /* dedup: shared engine-core @0x8015EF9C (src/shared) */ - -DEFINE_func_8015EFA4() /* dedup: shared engine-core @0x8015EFA4 (src/shared) */ - -DEFINE_func_8015EFD8() /* dedup: shared engine-core @0x8015EFD8 (src/shared) */ - - - -void func_8015F00C(s32 *a0) { - - extern void (*D_8018FBAC[])(void); - D_8018FBAC[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015F048() /* dedup: shared engine-core @0x8015F048 (src/shared) */ - -DEFINE_func_8015F080() /* dedup: shared engine-core @0x8015F080 (src/shared) */ - -extern s32 D_80062BE8; -extern void (*D_8018F8B0[])(void *); -extern void func_801466F0(s32, s32, s32, s32, s32, s32, s32, s32); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_8014AB5C(void); -extern void func_80159B70(void *a0); -extern void func_80019064(void *a0); -extern void func_80147324(s32 a0); -extern s32 func_80161208(void); -extern int func_80155FF8(int arg, int a1); - -void func_8015F118(void *a0) { - u16 flag; - - *(s32 *)((u8 *)a0 + 0x44) = *(s32 *)((u8 *)a0 + 0x44) | 2; - flag = *(u16 *)((u8 *)a0 + 0xB8); - if (flag == 0x8000) { - (*D_8018F8B0[*(u16 *)a0])(a0); - ((void (*)(void *, s32))func_80147078)(a0, 0); - func_80159B70(a0); - } else { - if (flag & 0x4000) { - ((void (*)(s32))func_8014AB5C)(0x19); - ((void (*)(s32))func_8014AB5C)(0x1D); - func_801466F0(0x19, (s32)a0, 0, 0, 0, 0, 0, 1); - func_801466F0(0x19, (s32)a0, 0, 0, 0, 1, 0, 1); - func_801466F0(0x1D, (s32)a0, 0, 0, 0, 0, 0, 1); - func_80019064(&D_80062BE8); - func_80147324(0x9DA); - } - if (((s32 (*)(s32 *))func_80161208)(a0) == 0) { - func_80155FF8((int)a0, *(u8 *)((u8 *)a0 + 0x1AA)); - } - } -} - - -DEFINE_func_8015F260() /* dedup: shared engine-core @0x8015F260 (src/shared) */ - -DEFINE_func_8015F2BC() /* dedup: shared engine-core @0x8015F2BC (src/shared) */ - -DEFINE_func_8015F2F0() /* dedup: shared engine-core @0x8015F2F0 (src/shared) */ - - - -void func_8015F324(s32 *a0) { - - extern void (*D_8018FBB4[])(void); - D_8018FBB4[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015F360() /* dedup: shared engine-core @0x8015F360 (src/shared) */ - -DEFINE_func_8015F380() /* dedup: shared engine-core @0x8015F380 (src/shared) */ - - -extern void (*D_8018F8B0[])(void *); - -extern s32 func_80149884(void); -extern s32 func_801496D4(void*); -extern void func_80149724(void); -extern void func_801477E8(s32*, s32); -extern u16 func_80148800(s32*); -extern s32 func_80148980(u8*); -extern void func_8014F1F4(void); -extern void func_8014FCFC(void); -extern s32 func_80146A6C(s32, void*, s32, s32, s32, s32, s32); -extern void func_80147A84(s32 a0); -extern void func_801473EC(s32*); -extern void func_80146DB8(s32*, s32*); -extern void func_80146E90(s32*, s32); -extern void func_8014ED28(s32 a0); -extern void func_8014FA04(s32 a0); -extern s32 func_801725B8(u8*); -extern void func_80147324(s32 a0); -extern void func_80019064(void*); -extern void func_801484B0(s32, s32); -extern void func_80148534(s32, s32); - -void func_8015F448(s32 arg0) { - - extern u8 D_80062BD0; - extern s32 D_8018FBBC; - extern s32 D_8018FBCC; - extern s32 D_8018FBDC; - s32 sp20[2]; - s32 sp28[2]; - - if (((*(u32 *)(arg0 + 0x44) & 0x100) && (func_80149884() != 0)) || - (((s32 (*)(s32))func_801496D4)(arg0) != 0)) { - D_8018F8B0[*(u16 *)arg0]((void *)arg0); - *(u8 *)(arg0 + 0x1BE) = 0xA; - ((void (*)(s32))func_80149724)(arg0); - ((void (*)(s32, s32))func_801477E8)(arg0, 0); - return; - } - - if (*(u8 *)(arg0 + 0x245) == 0) { - if (*(u8 *)(arg0 + 0x244) == 0) { - if (((s32 (*)(s32))func_80148800)(arg0) & 0x10) { - *(u8 *)(arg0 + 0x244) = 1; - *(u8 *)(arg0 + 0x245) = 1; - } - } else if (((s32 (*)(s32))func_80148800)(arg0) & 0x80) { - *(u8 *)(arg0 + 0x244) = 0; - *(u8 *)(arg0 + 0x245) = 1; - } - } - - if (*(u16 *)(arg0 + 0xB8) & 0x3000) { - if (*(u16 *)(arg0 + 0xB8) & 0x2000) { - ((void (*)(void *, void *))func_801484B0)(sp20, sp28); - func_80147324(0x56D); - } else { - ((void (*)(void *, void *))func_80148534)(sp20, sp28); - func_80147324(0x56E); - } - ((void (*)(s32 *))func_80019064)(&(*(s32 *)&D_80062BD0)); - ((void (*)(s32, s32, s32, s32, s32, s32, s32))func_80146A6C)(0x25, arg0, *(s16 *)(arg0 + 6), - (s16)(*(u16 *)(arg0 + 0xA) - 0x14), - *(s16 *)(arg0 + 0xE), 0, 0); - ((void (*)(s32, s32, s32, s32, s32, s32, s32))func_80146A6C)(0x25, arg0, *(s16 *)(arg0 + 6), - (s16)(*(u16 *)(arg0 + 0xA) - 0x14), - *(s16 *)(arg0 + 0xE), 1, 0); - } - - if (*(u16 *)(arg0 + 0xB8) & 0x8000) { - if (*(u8 *)(arg0 + 0x245) != 0) { - *(u8 *)(arg0 + 0x245) = 0; - *(u16 *)(arg0 + 0xB8) = *(u16 *)(arg0 + 0xBA); - if (((s32 (*)(s32))func_80148980)(arg0) != 0) { - ((void (*)(s32, s32 *))func_80146DB8)(arg0, &D_8018FBBC); - } else { - ((void (*)(s32, s32 *))func_80146DB8)(arg0, &D_8018FBCC); - } - } - } else { - *(u16 *)(arg0 + 0x246) = *(u16 *)(arg0 + 6); - *(u16 *)(arg0 + 0x248) = *(u16 *)(arg0 + 0xA); - *(u16 *)(arg0 + 0x24A) = *(u16 *)(arg0 + 0xE); - func_80147A84(arg0); - ((void (*)(s32))func_801473EC)(arg0); - if (((s32 (*)(s32))func_8014F1F4)(arg0) != 0) { - *(u16 *)(arg0 + 6) = *(u16 *)(arg0 + 0x246); - *(u16 *)(arg0 + 0xA) = *(u16 *)(arg0 + 0x248); - *(u16 *)(arg0 + 0xE) = *(u16 *)(arg0 + 0x24A); - } - } - - if (((s32 (*)(s32))func_8014FCFC)(arg0) == 0) { - D_8018F8B0[*(u16 *)arg0]((void *)arg0); - *(u8 *)(arg0 + 0x1BE) = 0xA; - ((void (*)(s32))func_80149724)(arg0); - ((void (*)(s32, s32))func_801477E8)(arg0, 0xFFE80000); - ((void (*)(s32, s32 *))func_80146DB8)(arg0, &D_8018FBDC); - ((void (*)(s32, s32))func_80146E90)(arg0, 0x10); - return; - } - - func_8014ED28(arg0); - func_8014FA04(arg0); - ((void (*)(s32))func_801725B8)(arg0); -} - - -DEFINE_func_8015F738() /* dedup: shared engine-core @0x8015F738 (src/shared) */ - -DEFINE_func_8015F76C() /* dedup: shared engine-core @0x8015F76C (src/shared) */ - -DEFINE_func_8015F7A0() /* dedup: shared engine-core @0x8015F7A0 (src/shared) */ - - - -s32 func_8015F7D4(s32 a0) { - - extern void (*D_8018FBEC[])(void); - D_8018FBEC[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015F810() /* dedup: shared engine-core @0x8015F810 (src/shared) */ - -DEFINE_func_8015F848() /* dedup: shared engine-core @0x8015F848 (src/shared) */ - - -extern void (*D_8018F8B0[])(void *); -extern void func_801466F0(s32, s32, s32, s32, s32, s32, s32, s32); -extern void func_80147078(s32 *, s16); -extern void func_80159B70(void *); -extern s32 func_80161208(void); - -void func_8015F89C(void *arg0) { - u16 flags = *(u16 *)((u8 *)arg0 + 0xB8); - if (!(flags & 0x4000)) { - if (flags & 0x8000) { - D_8018F8B0[*(u16 *)arg0](arg0); - func_80147078(arg0, 0); - func_80159B70(arg0); - return; - } - } else { - func_801466F0(1, arg0, 0, -0x1E, 0, 0, 0, 0); - } - ((s32 (*)(void *))func_80161208)(arg0); -} - - -DEFINE_func_8015F948() /* dedup: shared engine-core @0x8015F948 (src/shared) */ - - -extern void (*D_8018F8B0[])(void *); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern s32 func_80161208(void); - -void func_8015F9A4(void *arg0) { - if (*(u16 *)((u8 *)arg0 + 0xB8) & 0x8000) { - D_8018F8B0[*(u16 *)arg0](arg0); - func_80147078(arg0, 0); - func_80159B70(arg0); - } else { - ((s32 (*)(void *))func_80161208)(arg0); - } -} - - -DEFINE_func_8015FA24() /* dedup: shared engine-core @0x8015FA24 (src/shared) */ - -DEFINE_func_8015FA44() /* dedup: shared engine-core @0x8015FA44 (src/shared) */ - -DEFINE_func_8015FA78() /* dedup: shared engine-core @0x8015FA78 (src/shared) */ - - - -void func_8015FAAC(s32 *a0) { - - extern void (*D_8018FBF8[])(void); - D_8018FBF8[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern s32 func_801612B8(void *a0, s32 a1); -extern void func_8016007C(s32 a0); -extern void (*D_8018F8B0[])(void *); -extern void func_80147078(s32 *a0, s16 a1); -extern s32 func_8015BE94(); -extern void func_8015C0C4(s32 a0); -extern void func_8015FBE0(s32 *a0); - -void func_8015FAE8(void *arg0) { - s32 v; - - v = func_801612B8(arg0, 0); - if (v == 0 || v == 0x8000) { - ((void (*)(void *))func_8016007C)(arg0); - *(u32 *)((u8 *)arg0 + 0x184) |= 0x80000000; - D_8018F8B0[*(u16 *)arg0](arg0); - ((void (*)(void *, s16))func_80147078)(arg0, 3); - ((void (*)(void *))func_8015BE94)(arg0); - } else if ((v & 0x4000) != 0) { - ((void (*)(void *))func_8016007C)(arg0); - *(u32 *)((u8 *)arg0 + 0x184) |= 0x80000000; - D_8018F8B0[*(u16 *)arg0](arg0); - ((void (*)(void *, s16))func_80147078)(arg0, 4); - ((void (*)(void *))func_8015C0C4)(arg0); - } else { - ((void (*)(void *))func_8015FBE0)(arg0); - } -} - - - -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern s32 func_80146A6C(s32, void*, s32, s32, s32, s32, s32); -extern void func_80147324(s32 a0); -extern void func_801553A8(s32 *a0); -extern void func_801553C0(s32 a0); -extern void func_80146CA0(void *a0); - - -void func_8015FBE0(s32 *param_1) -{ - - extern u8 D_800B9A17; - if (param_1[0x61] < 0) { - ((void (**)())D_8018F8B0)[*(u16 *)param_1](); - ((void (*)(s32 *, s16))func_80147078)(param_1, 0); - ((void (*)(s32 *))func_80159B70)(param_1); - } else { - __asm__ __volatile__(""); - D_80078EC1 = 0; - ((void (*)(s32 *, s32))func_80154150)(param_1, 0x20); - ((void (*)(s32 *, s32))func_80154A74)(param_1, 0x18); - ((void (*)(s32, s32 *, s32, s32, s32, s32, s32))func_80146A6C)(0x16, param_1, 0, 0, 0, 0, 0); - func_80147324(0x44F); - ((void (*)(s32 *))func_801553A8)(param_1); - ((void (*)(s32 *))func_801553C0)(param_1); - D_801270C0 = 2; - D_800B9A17 = 0; - ((void (*)(s32 *))func_80146CA0)(param_1); - } -} - - -extern void func_801599A4(void *a0); - -// @class: struct -// @stuck: none — MATCH (indexed fn-ptr table call + byte-offset struct stores; mirrors sibling func_801599A4 idiom) - -extern s32 D_800AE6B0; -extern void (*D_8018F8B0[])(void *); - -extern void func_8016007C(s32 a0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern void func_8014BFF4(s32 a0, s32 a1); -extern void func_80146CA0(void *a0); - -void func_8015FCC8(void *param_1) { - if ((D_800AE6B0 & 0x80FFFFFF) != 0) { - ((void (*)(void))func_8016007C)(); - D_8018F8B0[*(u16 *)param_1](param_1); - ((void (*)(void *, s32))func_80147078)(param_1, 0); - func_80159B70(param_1); - } else { - *(u8 *)((s32)param_1 + 0x197) = 0; - *(u8 *)((s32)param_1 + 0xBE) = 0; - *(u8 *)((s32)param_1 + 0xBF) = 0; - *(u8 *)((s32)param_1 + 0x1A0) = (u8)*(s32 *)((s32)param_1 + 0x184); - ((s32 (*)(void *, s32))func_8014BFF4)(param_1, 1); - func_80146CA0(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH expected; simple 3-call sequence with global table index - -extern unsigned int D_8018FC0C[]; - -extern void func_80147324(s32 arg0); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_8015FD74(int param_1) -{ - ((int (*)(int))func_80147324)(0x18); - *(int *)(param_1 + 0x198) = func_8013767C(D_8018FC0C[*(unsigned char *)(param_1 + 0x1a0)]); - ((int (*)(int))func_80146CA0)(param_1); -} - - -DEFINE_func_8015FDCC() /* dedup: shared engine-core @0x8015FDCC (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH expected (fn-ptr-table dispatch + ushort struct fields) - - -extern void (*D_8018F8B0[])(void*); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern void func_80154A74(s32 a0, s32 a1); -extern s32 func_80161208(); - -void func_8015FE70(u16 *param_1) -{ - if ((param_1[0x5c] & 0x8000) != 0) { - if (param_1[0x5d] == 0) { - ((void (**)())D_8018F8B0)[param_1[0]](); - ((void (*)(u16 *, s16))func_80147078)(param_1, 0); - ((void (*)(u16 *))func_80159B70)(param_1); - return; - } - param_1[0x5c] = param_1[0x5d]; - } - if ((param_1[0x5c] & 0x4000) != 0) { - ((void (*)(u16 *, s16))func_80154A74)(param_1, 0x11); - } - ((void (*)(u16 *))func_80161208)(param_1); -} - - - -extern s32 D_800AE6B0; -extern void (*D_8018F8B0[])(void *); -extern u8 D_80078EC1; -extern u8 D_80078EC2; -extern u16 D_801270C0; - -extern void func_8016007C(s32 a0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern u8 func_801656E8(s32 a0, s32 a1); -extern void func_80150820(s32 a0, s32 a1); -extern void func_8014BFF4(s32 a0, s32 a1); -extern void func_80165670(s32 a0, s32 a1); -extern void func_80165840(void); -extern void func_801658DC(void); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_8016004C(s32 a0); - -void func_8015FF20(void *param_1) { - s32 v2; - u8 cur; - - if ((D_800AE6B0 & 0x80FFFFFF) != 0) { - ((void (*)(void))func_8016007C)(); - D_8018F8B0[*(u16 *)param_1](param_1); - ((void (*)(void *, s16))func_80147078)(param_1, 0); - func_80159B70(param_1); - return; - } - - v2 = *(s32 *)((s32)param_1 + 0x184); - if (v2 < 0) { - func_80150820((s32)param_1, func_801656E8((s32)param_1, v2 & 0xFF) & 0xFF); - } else { - if (*(u8 *)((s32)param_1 + 0x1A0) != *(u8 *)((s32)param_1 + 0x196)) { - *(u8 *)((s32)param_1 + 0x1A0) = (u8)v2; - *(u8 *)((s32)param_1 + 0x197) = 0; - *(u8 *)((s32)param_1 + 0xBE) = 0; - *(u8 *)((s32)param_1 + 0xBF) = 0; - func_8014BFF4((s32)param_1, 1); - } - - cur = *(u8 *)((s32)param_1 + 0x1A0); - D_80078EC1 = cur; - D_80078EC2 = cur; - func_80165670((s32)param_1, cur); - ((void (*)(void *))func_80165840)(param_1); - ((void (*)(void *))func_801658DC)(param_1); - func_80154A74((s32)param_1, 0x11); - D_801270C0 = 1; - } - - ((void (*)(void *))func_8016004C)(param_1); -} - - -DEFINE_func_8016004C() /* dedup: shared engine-core @0x8016004C (src/shared) */ - -DEFINE_func_8016007C() /* dedup: shared engine-core @0x8016007C (src/shared) */ - -DEFINE_func_801600D0() /* dedup: shared engine-core @0x801600D0 (src/shared) */ - -DEFINE_func_80160104() /* dedup: shared engine-core @0x80160104 (src/shared) */ - - - -void func_80160138(s32 *a0) { - - extern void (*D_8018FC88[])(void); - D_8018FC88[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80160174() /* dedup: shared engine-core @0x80160174 (src/shared) */ - -DEFINE_func_801601AC() /* dedup: shared engine-core @0x801601AC (src/shared) */ - -DEFINE_func_801601E4() /* dedup: shared engine-core @0x801601E4 (src/shared) */ - -DEFINE_func_80160244() /* dedup: shared engine-core @0x80160244 (src/shared) */ - - -extern void (*D_8018F8B0[])(void*); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern s32 func_80161208(); - -void func_801602A4(s32 *a0) { - if (*(u16 *)((u8 *)a0 + 0xB8) == 0x8000) { - ((void (**)())D_8018F8B0)[*(u16 *)a0](); - func_80154A74((s32)a0, 0x11); - ((void (*)(s32, s32))func_80147078)((s32)a0, 0); - func_80159B70(a0); - } else { - ((s32 (*)(s32 *))func_80161208)(a0); - } -} - - -DEFINE_func_8016032C() /* dedup: shared engine-core @0x8016032C (src/shared) */ - -DEFINE_func_80160334() /* dedup: shared engine-core @0x80160334 (src/shared) */ - -DEFINE_func_80160368() /* dedup: shared engine-core @0x80160368 (src/shared) */ - - - -void func_8016039C(s32 *a0) { - - extern void (*D_8018FC98[])(void); - D_8018FC98[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_801603D8() /* dedup: shared engine-core @0x801603D8 (src/shared) */ - -DEFINE_func_80160410() /* dedup: shared engine-core @0x80160410 (src/shared) */ - - - - - - - -/* data */ -extern u8 D_80078EC0; -extern u8 D_80078EBF; -extern void (*D_8018F8B0[])(void *); - -/* callees (engine_core.h canonical sigs) */ -extern void func_80149020(s32 *a0); -extern void func_80149034(s32 *a0); -extern u16 func_80148800(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern void func_80149BAC(s32 *a0); -extern s32 func_80149AA8(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern s32 func_80146E98(s32 a0); -extern u16 func_801487F4(s32 *a0); -extern void func_8015E9B8(s32 *a0); -extern void func_80159B70(void *a0); -extern s32 func_800CF8B4(); -extern s32 func_801491C4(s32 a0); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801473EC(s32 *a0); -extern void func_8014D738(void); -extern void func_8015C714(void *a0); -extern s32 func_80161208(); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_8015F00C(s32 *a0); - -void func_80160534(u8 *p) { - - extern s16 D_801152A0; - func_80149020((s32 *)p); - func_80149034((s32 *)p); - if ((D_80078EC0 & 0x7F) != 0 && (func_80148800((s32 *)p) & 0x90) != 0) { - if (D_80078EBF == 0x80) { - D_8018F8B0[*(u16 *)p](p); - func_80147078((s32 *)p, 0x13); - func_8015F00C((s32 *)p); - return; - } - if (func_80149B54((s32 *)p) != 0) { - D_8018F8B0[*(u16 *)p](p); - func_80149BAC((s32 *)p); - return; - } - } - if (func_80149AA8((s32 *)p) != 0) { - D_8018F8B0[*(u16 *)p](p); - func_80149AD4((s32 *)p); - return; - } - if (func_80146E98((s32)p) != 0) { - if ((func_801487F4((s32 *)p) & 8) != 0) { - D_8018F8B0[*(u16 *)p](p); - func_80147078((s32 *)p, 0x11); - func_8015E9B8((s32 *)p); - } else { - D_8018F8B0[*(u16 *)p](p); - func_80147078((s32 *)p, 0); - func_80159B70(p); - } - return; - } - if (func_800CF8B4() != 0) { - *(u16 *)(*(s32 *)(p + 0x20) + 0x12) = - ((*(u16 *)&D_801152A0) + func_801491C4((s32)p)) & 0xFFF; - } - func_80147AD4((s32)p, *(s32 *)(p + 0x234), *(s32 *)(p + 0x238), - *(s32 *)(p + 0x23C)); - func_801473EC((s32 *)p); - if (((s32 (*)(s32 *))func_8014D738)((s32 *)p) != 0) { - D_8018F8B0[*(u16 *)p](p); - func_80147078((s32 *)p, 9); - func_8015C714(p); - } else { - ((s32 (*)(void *))func_80161208)(p); - } -} - - -DEFINE_func_801607B8() /* dedup: shared engine-core @0x801607B8 (src/shared) */ - -DEFINE_func_801607E4() /* dedup: shared engine-core @0x801607E4 (src/shared) */ - -DEFINE_func_80160818() /* dedup: shared engine-core @0x80160818 (src/shared) */ - - - -void func_8016084C(s32 *a0) { - - extern void (*D_8018FCA0[])(void); - D_8018FCA0[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80160888() /* dedup: shared engine-core @0x80160888 (src/shared) */ - -DEFINE_func_801608C0() /* dedup: shared engine-core @0x801608C0 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (function-pointer table folds %lo via extern array indexed by halfword) - - -extern void (*D_8018F8B0[])(void*); - -extern u16 func_801487F4(s32 *a0); -extern s32 func_80161208(); -extern void func_80160A74(s32 *a0); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80146CA0(void *a0); - -void func_80160920(unsigned short *param_1) -{ - if ((((int (*)(void))func_801487F4)() & 8) == 0) { - ((code *)D_8018F8B0)[*param_1](param_1); - ((void (*)(unsigned short *))func_80160A74)(param_1); - } else { - if (((int (*)(unsigned short *))func_80161208)(param_1) == 0 && param_1[0x5c] == 0x8000) { - ((void (*)(unsigned short *, int))func_80154150)(param_1, 0x25); - ((void (*)(unsigned short *))func_80146CA0)(param_1); - } - } - return; -} - - - - -// @class: struct -// @stuck: none — MATCH (pending byte-gate); function-pointer table %lo-fold via extern array - - -extern u16 func_801487F4(s32 *a0); -extern void func_80160A74(s32 *a0); -extern s32 func_80161208(); - -/* function-pointer dispatch table; indexed by *param_1 (×4 = ptr size) */ -extern void (*D_8018F8B0[])(void*); - -void func_801609B8(u16 *param_1) { - if ((((u32 (*)(void))func_801487F4)() & 8) == 0) { - ((void (**)(u16*))D_8018F8B0)[*param_1](param_1); - ((void (*)(u16 *))func_80160A74)(param_1); - } else { - ((void (*)(u16 *))func_80161208)(param_1); - } -} - - -DEFINE_func_80160A28() /* dedup: shared engine-core @0x80160A28 (src/shared) */ - -DEFINE_func_80160A74() /* dedup: shared engine-core @0x80160A74 (src/shared) */ - -DEFINE_func_80160ACC() /* dedup: shared engine-core @0x80160ACC (src/shared) */ - -DEFINE_func_80160B00() /* dedup: shared engine-core @0x80160B00 (src/shared) */ - - - -s32 func_80160B34(s32 a0) { - - extern void (*D_8018FCAC[])(void); - D_8018FCAC[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80160B70() /* dedup: shared engine-core @0x80160B70 (src/shared) */ - -DEFINE_func_80160BB4() /* dedup: shared engine-core @0x80160BB4 (src/shared) */ - -DEFINE_func_80160C28() /* dedup: shared engine-core @0x80160C28 (src/shared) */ - -DEFINE_func_80160CB4() /* dedup: shared engine-core @0x80160CB4 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (mirrors byte-matched func_8015DBD4 in same overlay; dispatch via D_8018F8B0 + func_80147078/func_80159B70 tail, func_80161208 else) - -extern void (*D_8018F8B0[])(void *); -extern u16 func_80148800(s32 *a0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern s32 func_80161208(); - -void func_80160D10(void *arg0) { - if (*(u32 *)((u8 *)arg0 + 0x44) & 0x10) { - D_8018F8B0[*(u16 *)arg0](arg0); - } else { - if (*(s32 *)((u8 *)arg0 + 0x1AC) == 0) { - if ((((s32 (*)(void *))func_80148800)(arg0) & 0xF0) == 0) { - goto dd0; - } - } else { - s32 t = *(s32 *)((u8 *)arg0 + 0x1AC) - 0xAAA8; - *(s32 *)((u8 *)arg0 + 0x1AC) = t; - if (t >= 0) { - goto dd0; - } - } - D_8018F8B0[*(u16 *)arg0](arg0); - } - ((void (*)(void *, s16))func_80147078)(arg0, 0); - func_80159B70(arg0); - return; -dd0: - ((s32 (*)(void *))func_80161208)(arg0); -} - - -DEFINE_func_80160DEC() /* dedup: shared engine-core @0x80160DEC (src/shared) */ - -DEFINE_func_80160E3C() /* dedup: shared engine-core @0x80160E3C (src/shared) */ - -DEFINE_func_80160E70() /* dedup: shared engine-core @0x80160E70 (src/shared) */ - - -extern void (*D_8018FCBC[])(void); - -void func_80160EA4(void *a0) { - D_8018FCBC[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80160EE0() /* dedup: shared engine-core @0x80160EE0 (src/shared) */ - -DEFINE_func_80160F00() /* dedup: shared engine-core @0x80160F00 (src/shared) */ - -DEFINE_func_80160F70() /* dedup: shared engine-core @0x80160F70 (src/shared) */ - -DEFINE_func_80160FE0() /* dedup: shared engine-core @0x80160FE0 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH - -extern void func_80149020(s32 *a0); -extern void (*D_8018F8B0[])(void *); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); - -void func_80161034(void *a0) -{ - func_80149020(a0); - D_8018F8B0[*(u16 *)a0](a0); - func_80147078(a0, 0); - func_80159B70(a0); -} - - -DEFINE_func_80161094() /* dedup: shared engine-core @0x80161094 (src/shared) */ - -DEFINE_func_801610FC() /* dedup: shared engine-core @0x801610FC (src/shared) */ - -DEFINE_func_80161104() /* dedup: shared engine-core @0x80161104 (src/shared) */ - -DEFINE_func_80161124() /* dedup: shared engine-core @0x80161124 (src/shared) */ - -extern s32 func_801612B8(void *a0, s32 a1); -extern void func_8016130C(void*, s32); -void aF80161208(void *a0) __asm__("func_80161208"); -void aF80161208(void *a0) -{ - ((s32 (*)(s32, u32))func_8016130C)(a0, func_801612B8(a0, 0)); -} - - -DEFINE_func_80161240() /* dedup: shared engine-core @0x80161240 (src/shared) */ - -DEFINE_func_80161278() /* dedup: shared engine-core @0x80161278 (src/shared) */ - -DEFINE_func_801612B8() /* dedup: shared engine-core @0x801612B8 (src/shared) */ - -extern void func_80161240(void *a0); -extern s32 func_801612B8(void * a0, s32 a1); -#define SHB(x) __asm__ __volatile__("" : "=r"(x) : "0"(x)) -#define SHB(x) __asm__("" : "=r"(x) : "0"(x)) - -extern void func_801599A4(void*); -extern void func_8015BDD0(s32*); -extern void func_8015BF48(s32*); - -/* REDRAFT (decay axis: RETURN TYPE). The stored draft had been flipped to - * `void` to fit the fleet header decl in src/shared/engine_core.h, while the - * body still `return 1; / return 0;`. gcc-2.7.2 silently drops the $v0 sets in - * that situation, costing the three `addiu $v0, $zero, 1` / `addu $v0,$zero,$zero` - * instructions the ASM plainly has. Restored to s32 (§109/§85 — the single call - * site `func_8016130C(a0, func_801612B8(a0, 1));` discards the result, so the - * void->s32 widen is caller-neutral and must be fixed on the HEADER side). */ - -/* RECONCILE (§37/§124 asm-label alias — zero header touch). - * Gate error: jr_8015C32C.c:3501 conflicting types for `func_8016130C' - * :3479 previous declaration. - * TU line 3479 is `DEFINE_func_80161240()`, whose expansion (engine_core.h:3781) - * declares `extern void func_8016130C(void *a0, s32 a1);` — a RETURN-TYPE - * disagreement with this draft's required `s32`. The third line the gate quoted - * (:5228 "location of previous definition") is unrelated noise: it is the - * pre-existing `#define SHB(x)` redefinition *warning* between TU lines 5227 and - * 5538, present with or without this draft. - * Fix: the C identifier becomes aF8016130C, so it never collides with the - * canonical `void func_8016130C` declaration, while the GNU asm label makes the - * EMITTED symbol `func_8016130C`. The macro's caller func_80161240 keeps calling - * the `extern void` spelling and is byte-unaffected (it discards the return). - * Codegen for this function is untouched — match_one still MATCH. - * (Alternative, house style, NOT taken here per the no-header-edit rule: widen - * src/shared/engine_core.h:3781 to `extern s32 func_8016130C(void *a0, s32 a1);` - * and rename back to the plain name — byte-identical either way.) */ - -s32 aF8016130C(void *a0, s32 a1) __asm__("func_8016130C"); - -s32 aF8016130C(void *a0, s32 a1) -{ - if ((a1 == 0) || (a1 == 0x8000)) { - func_801599A4(a0); - ((void (*)(void *))func_8015BDD0)(a0); - return 1; - } - if ((a1 & 0x4000) != 0) { - func_801599A4(a0); - ((void (*)(void *))func_8015BF48)(a0); - return 1; - } - return 0; -} - - - -// @class: schedule -// @stuck: none — MATCH - - -DEFINE_func_80161374() /* dedup: shared engine-core @0x80161374 (src/shared) */ - - -DEFINE_func_80161418() /* dedup: shared engine-core @0x80161418 (src/shared) */ - -DEFINE_func_80161450() /* dedup: shared engine-core @0x80161450 (src/shared) */ - -DEFINE_func_80161488() /* dedup: shared engine-core @0x80161488 (src/shared) */ - -DEFINE_func_801614E4() /* dedup: shared engine-core @0x801614E4 (src/shared) */ - -DEFINE_func_8016151C() /* dedup: shared engine-core @0x8016151C (src/shared) */ - -DEFINE_func_80161554() /* dedup: shared engine-core @0x80161554 (src/shared) */ - -DEFINE_func_8016158C() /* dedup: shared engine-core @0x8016158C (src/shared) */ - -DEFINE_func_801615C4() /* dedup: shared engine-core @0x801615C4 (src/shared) */ - - - -// @class: other -// @stuck: first draft — plain if-chain over the flag bits -extern void func_801599A4(void *a0); -extern void func_80159B3C(void *a0); -extern void func_8015BF48(s32 *a0); -extern void func_8015F2F0(s32 *a0); -extern void func_8014C010(s32 a0, s32 a1); -extern void func_80161D20(int param_1, u32 param_2); -extern s32 func_8014A6C4(s32 a0); -extern s32 ratan2(s32 a0, s32 a1); - -s32 func_8016163C(s32 arg0, u32 arg1) { - - extern s16 D_801152B0; - extern s16 D_801152B4; - if (arg1 & 1) { - func_801599A4((void *)arg0); - func_80159B3C((void *)arg0); - func_8014C010(arg0, 1); - ((void (*)(s32, s32))func_80161D20)(arg0, *(u16 *)(arg0 + 0x16E)); - return 1; - } - if (arg1 & 0x4000) { - func_801599A4((void *)arg0); - func_8015BF48((s32 *)arg0); - func_8014C010(arg0, 1); - ((void (*)(s32, s32))func_80161D20)(arg0, *(u16 *)(arg0 + 0x16E)); - return 2; - } - if (arg1 & 0x2000) { - func_801599A4((void *)arg0); - func_80159B3C((void *)arg0); - func_8014C010(arg0, 1); - ((void (*)(s32, s32))func_80161D20)(arg0, *(u16 *)(arg0 + 0x16E)); - return 4; - } - if (arg1 & 0x8000) { - if (*(u16 *)(arg0 + 0x16C) != 0x15) { - return 0; - } - if (func_8014A6C4(arg0) != 0) { - func_801599A4((void *)arg0); - func_8015F2F0((s32 *)arg0); - *(s16 *)(*(s32 *)(arg0 + 0x20) + 0x12) = ratan2(D_801152B0, D_801152B4); - return 8; - } - } - return 0; -} - - - -extern void func_8014C010(s32 a0, s32 a1); -extern void func_80161D20(int param_1, u32 param_2); -extern void func_801599A4(void *a0); -extern void func_8015BF48(s32 *a0); -extern s32 func_8014A6C4(s32 a0); -extern void func_8015F2F0(s32*); -extern s32 ratan2(s32 x, s32 y); - -s32 func_80161774(int param_1, u32 param_2) { - - extern s16 D_801152B0; - extern s16 D_801152B4; - - if ((param_2 & 1) != 0) { - func_8014C010(param_1, 1); - ((void (*)(s32, s32))func_80161D20)(param_1, *(unsigned short *)(param_1 + 0x16e)); - return 1; - } - if ((param_2 & 0x4000) != 0) { - ((void (*)(int))func_801599A4)(param_1); - ((void (*)(int))func_8015BF48)(param_1); - func_8014C010(param_1, 1); - ((void (*)(s32, s32))func_80161D20)(param_1, *(unsigned short *)(param_1 + 0x16e)); - return 2; - } - if ((param_2 & 0x2000) != 0) { - func_8014C010(param_1, 1); - ((void (*)(s32, s32))func_80161D20)(param_1, *(unsigned short *)(param_1 + 0x16e)); - return 4; - } - if ((param_2 & 0x8000) != 0) { - if (*(unsigned short *)(param_1 + 0x16c) != 0x15) { - return 0; - } - if (func_8014A6C4(param_1) != 0) { - ((void (*)(int))func_801599A4)(param_1); - ((void (*)(int))func_8015F2F0)(param_1); - *(short *)(*(int *)(param_1 + 0x20) + 0x12) = ratan2(D_801152B0, D_801152B4); - return 8; - } - } - return 0; -} - - - -// @class: schedule -// @stuck: none — MATCH - -DEFINE_func_80161888() /* dedup: shared engine-core @0x80161888 (src/shared) */ - - -DEFINE_func_8016191C() /* dedup: shared engine-core @0x8016191C (src/shared) */ - - -DEFINE_func_8016197C() /* dedup: shared engine-core @0x8016197C (src/shared) */ - -DEFINE_func_801619A4() /* dedup: shared engine-core @0x801619A4 (src/shared) */ - -DEFINE_func_801619D0() /* dedup: shared engine-core @0x801619D0 (src/shared) */ - -DEFINE_func_80161A00() /* dedup: shared engine-core @0x80161A00 (src/shared) */ - -DEFINE_func_80161A30() /* dedup: shared engine-core @0x80161A30 (src/shared) */ - -DEFINE_func_80161A60() /* dedup: shared engine-core @0x80161A60 (src/shared) */ - - -DEFINE_func_80161A90() /* dedup: shared engine-core @0x80161A90 (src/shared) */ - - -DEFINE_func_80161B18() /* dedup: shared engine-core @0x80161B18 (src/shared) */ - -DEFINE_func_80161B84() /* dedup: shared engine-core @0x80161B84 (src/shared) */ - -DEFINE_func_80161BE0() /* dedup: shared engine-core @0x80161BE0 (src/shared) */ - - -extern void func_80147324(); - -/* RECONCILE (§17a-1/§20): the TU already declares - * extern void func_80161C24(s32, s32); (jr_8015C32C.c:1474 / :1417) - * so the definition must use (int, int); the unsigned semantics of param_2 - * are restored by a cast at each use (codegen-neutral: sltiu + index math). */ -void func_80161C24(int param_1, int param_2) -{ - - extern unsigned short D_8018FCCC[]; - extern unsigned short D_8018FCCE[]; - - if ((unsigned int)param_2 < 8) { - if (*(u8 *)(param_1 + 0xDA) != 0) { - func_80147324(D_8018FCCC[(unsigned int)param_2 * 2]); - *(u8 *)(param_1 + 0xDA) = 0; - } else { - func_80147324(D_8018FCCE[(unsigned int)param_2 * 2]); - *(u8 *)(param_1 + 0xDA) = 1; - } - } -} - - - -// @class: struct -// @stuck: none — MATCH (indexed-global %lo-fold via extern u16 array, §18) - -extern u16 D_8018FCEC[]; -extern void func_80147324(s32 arg0); - -void func_80161C98(int param_1, u32 param_2) -{ - if (param_2 < 8) { - func_80147324(D_8018FCEC[param_2]); - } - return; -} - - - -// @class: plumbing -// @stuck: none — MATCH (20 ins) -// DECAY AXIS: return type. The stored draft declared `s32 func_80161CD0(...)` with no -// return statement. That kept $v0 live-out at the epilogue, so gcc-2.7.2's delayed-branch -// pass refused to speculatively fill the second `beqz $v0` delay slot from the fall-through -// with `sll $v0, $s0, 1` — costing one extra nop (21 vs 20 ins) and shifting both branch -// displacements. Declaring the function `void` makes $v0 dead at the return and the fill -// happens. Same return-type axis as the wave, opposite direction (s32 -> void). -// param_2 must be UNSIGNED: the guard assembles as `sltiu $v0, $s0, 0x8`. -// -// RECONCILE (§37/§124 asm-label alias) — the ONLY change vs the uc2 draft; the body is -// byte-identical and untouched. -// The real TU src/ov_SC01_077/ov_SC01_077_jr_8015C32C.c already carries the m2c canonical -// declaration -// :23 extern s32 func_80161CD0(s32 a0, s32 a1); /* match-first, arity 2 */ -// :1207 extern s32 func_80161CD0(s32 a0, s32 a1); -// so a plain `void func_80161CD0(int, unsigned int)` definition dies with -// conflicting types for `func_80161CD0' / previous declaration ... (rtu_match CC1 FAIL). -// This is the RETURN axis (s32 vs void) plus the param-2 signedness axis, and BOTH spellings -// are load-bearing for the 20-instruction codegen — conforming the definition to the -// declaration (escape #1) would perturb bytes, so it is not available here. -// The alias fixes it at T0: the C identifier is aF80161CD0 (no declaration to collide with) -// while the EMITTED SYMBOL is func_80161CD0. In-TU callers keep using the `extern s32` -// spelling and are byte-unaffected (they discard the return). Zero tracked files touched; -// no header edit is even possible/needed — grep shows func_80161CD0 has NO declaration in -// include/ or src/shared/, the conflict is purely TU-local m2c boilerplate. -// Exactly the pattern already banked at src/ov_SC03_099/ov_SC03_099_jr_8015C32C.c:3503 -// for the sibling func_8016191C. -// -// NOTE on the third gate diagnostic (`:5223 note: location of previous definition`): that is -// a RED HERRING, unrelated to this function. It is the pre-existing CPP note paired with -// `:5533 warning: "SHB" redefined` — the TU defines the SHB scheduling-barrier macro twice -// (post-splice :5222 with __volatile__, :5533 without). It is a warning, present with or -// without this draft, and it does not fail cc1. - -extern int func_800CF8B4(); -extern void func_80147324(int arg0); - -void aF80161CD0(int param_1, unsigned int param_2) __asm__("func_80161CD0"); - -void aF80161CD0(int param_1, unsigned int param_2) -{ - - extern unsigned short D_8018FCFC; - if (param_2 < 8) { - if (func_800CF8B4() != 0) { - func_80147324((&D_8018FCFC)[param_2]); - } - } -} - - - -// @class: struct -// @stuck: none — MATCH (indexed-global %lo-fold via extern u16 array, §18) - -extern void func_80147324(s32 arg0); - -void func_80161D20(int param_1, u32 param_2) -{ - - extern u16 D_8018FD0C[]; - if (param_2 < 8) { - func_80147324(D_8018FD0C[param_2]); - } - return; -} - - -DEFINE_func_80161D58() /* dedup: shared engine-core @0x80161D58 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (short-circuit && chain; reused 0x80FFFFFF mask const, andi-0xFF on callee ret) - -extern s32 D_800AE6B0; -extern s32 D_800AE6A8; -extern s32 func_80029178(s32 arg); -extern void func_80029124(s32, s32); -extern void func_800D1734(void *); -extern s32 D_8018FD50; - -void func_80161D88(void) { - if ((D_800AE6B0 & 0x80FFFFFF) == 0 && (D_800AE6A8 & 0x80FFFFFF) == 0 && - (func_80029178(0x141) & 0xFF) != 0) { - func_80029124(0x141, 0); - func_80029124(0x95, 1); - func_800D1734(&D_8018FD50); - } -} - - -// @class: regalloc-order -// @stuck: none — MATCH (175 ins, relocation-masked). Giant, 3 similar guarded blocks. base=&D_800AF630 -// hoisted to $s2 (referenced only to build the 3 stored pointers base+0x65A8/0x65E0/0x6618 -> $s1); -// guard reads (D_800B5BD8/C10/C48) + the "=1" + coord stores use direct symbols. Coord idiom: -// -(s32)(u16)D_800AF7BC/2 + K (negu;srl31;addu;sra1). a2=func_800291DC(8) survives in $s3 for the -// final (a2&0x7FFF)==(s16)D_80078EB0 test. KEY RESIDUAL (cracked): target computes each pointer into -// scratch $v0 then `addu $s1,$v0` (dead-intermediate copy) and stores $s1 — natural C ALWAYS coalesces -// that copy into a direct `addiu $s1,$s2,off` (172 ins, 3 short). Forcing the un-coalesced copy needs -// an explicit `move` inline-asm (an empty "=r"/"0" re-tie is only a barrier, won't emit the copy). -#include "common.h" - - - - - - - -void func_80161E08(s32 param_1) { - extern void func_80024054(void *a0, void *a1); - extern void func_8001CE28(void *a0, void *a1); - extern void func_800242D0(s32 a0, void *a1, s32 a2); - extern void func_8001CE68(void *a0, void *a1); - extern int func_801620C4(void); - extern void func_801622C4(void); - extern u16 D_800AF7BC; - extern u16 D_800AF7BE; - extern s16 D_80078EB0; - extern u16 D_800B5BD8; - extern s16 D_800B5C04; - extern u8 D_800B5BFF; - extern s16 D_800B5BE0; - extern s16 D_800B5BE2; - extern u16 D_800B5C10; - extern s16 D_800B5C3C; - extern u8 D_800B5C37; - extern s16 D_800B5C18; - extern s16 D_800B5C1A; - extern u16 D_800B5C48; - extern s16 D_800B5C74; - extern s16 D_800B5C50; - extern s16 D_800B5C52; - extern u8 * D_801E5C00[]; - extern u8 D_8018FD1C[]; - extern u8 D_8018FD3C[]; - extern u8 D_801E5C0C[]; - extern u8 D_801E5C34[]; - extern u8 D_801E5C4C[]; - - u8 *base = &(*(u8 *)&D_800AF630); - u8 *p; - s32 a2; - - if (*((u16 *)param_1) != 0x1A && - currentLocationId != 0x3012 && - currentLocationId != 0x3054 && - currentLocationId != 0x3079 && - currentLocationId != 0x3096 && - ((a2 = func_800291DC(8)) & 0x8000) != 0) { - - if (D_800B5BD8 == 0) { - __asm__("move %0,%1" : "=r"(p) : "r"(base + 0x65A8)); - D_801E5C00[0] = p; - func_80024054(&D_8018FD1C, &D_801E5C0C); - func_8001CE28(p, &D_801E5C0C); - D_800B5C04 = 1; - D_800B5BFF = 1; - D_800B5BE0 = -(s32)(u16)D_800AF7BC / 2 + 0xD0; - D_800B5BE2 = -(s32)(u16)D_800AF7BE / 2 + 0x28; - } - - if (D_800B5C10 == 0) { - __asm__("move %0,%1" : "=r"(p) : "r"(base + 0x65E0)); - D_801E5C00[1] = p; - func_80024054(&D_8018FD3C, &D_801E5C34); - func_8001CE28(p, &D_801E5C34); - D_800B5C3C = 1; - D_800B5C37 = 1; - D_800B5C18 = -(s32)(u16)D_800AF7BC / 2 + 0xD0; - D_800B5C1A = -(s32)(u16)D_800AF7BE / 2 + 0x30; - } - - if (D_800B5C48 == 0) { - __asm__("move %0,%1" : "=r"(p) : "r"(base + 0x6618)); - D_801E5C00[2] = p; - func_800242D0((s16)func_801620C4(), &D_801E5C4C, 0x84); - func_8001CE68(p, &D_801E5C4C); - D_800B5C74 = 1; - D_800B5C50 = -(s32)(u16)D_800AF7BC / 2 + 0xD0; - D_800B5C52 = -(s32)(u16)D_800AF7BE / 2 + 0x10; - } - - func_800242D0((s16)func_801620C4(), &D_801E5C4C, 0x84); - if ((a2 & 0x7FFF) == (s32)D_80078EB0) { - func_801622C4(); - } - } -} - - - -DEFINE_func_801620C4() /* dedup: shared engine-core @0x801620C4 (src/shared) */ - -DEFINE_func_80162120() /* dedup: shared engine-core @0x80162120 (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (do-while scan over 3-entry global; increments placed AFTER the call so p++ schedules between load and jal, i++ into the delay slot) - -extern void func_800291C8(s32, s32); -extern void func_80016714(void *a0, s32 a1); - -extern int D_801E5C00[]; - -void func_8016216C(void) -{ - int *p; - int i; - - func_800291C8(8, 0); - i = 0; - p = D_801E5C00; - do { - int v = *p; - ((void (*)(int, int))func_80016714)(v, 0x38); - p = p + 1; - i = i + 1; - } while (i < 3); -} - - - -extern s32 func_800291DC(s32); -extern u8 D_80078E78[]; -extern u8 D_80078EB0; -extern u8 D_80078EB1; -extern s32 D_8018FD50; - -s32 func_801621CC(s32 arg0) { - register s32 s0 __asm__("$16") = arg0; /* $s0: arg0, crosses the call */ - register u8 *s1 __asm__("$17") = D_80078E78; /* $s1: base, hoisted for the loop */ - register s32 i __asm__("$5"); /* $a1: counter (pin fixes the i/d swap) */ - u32 a2; - s32 d; /* $a0: natural alloc; load via $v0 temp */ - s32 v, last, hi, lo; - char pad[8]; /* phantom 8B local -> frame 0x28 (vars=8) */ - - a2 = func_800291DC(8); - if ((a2 & 0x8000) == 0) { - return 0; - } - a2 &= 0x7FFF; - if (((a2 >> 8) == D_80078EB1) && ((a2 & 0xFF) <= (u32)D_80078EB0)) { - return (s32)&D_8018FD50; - } - d = s1[0x39] - 1; - i = 0; - if (s0 <= 0) { - return 0; - } - hi = (a2 >> 8) & 0xFF; - last = s0 - 1; - lo = a2 & 0xFF; - do { - if ((s8)d < 0) { - d = 0x17; - } - v = (s8)d; - if (hi == v) { - if (i != last) { - return (s32)&D_8018FD50; - } - i++; - if ((u32)s1[0x38] < (u32)lo) { - return (s32)&D_8018FD50; - } - goto bot; - } - i++; - bot: - d--; - } while (i < s0); - return 0; -} - - - - -// @class: schedule -// @stuck: none — MATCH -extern void func_80029124(s32, s32); -extern void func_800291C8(s32, s32); -extern void func_80016714(void *a0, s32 a1); -extern int D_801E5C00[]; - -void func_801622C4(void) -{ - int *p; - int i; - - ((int (*)(int, int))func_80029124)(0x141, 1); - ((int (*)(int, int))func_800291C8)(8, 0); - i = 0; - p = &D_801E5C00; - do { - ((int (*)(int, int))func_80016714)(*p, 0x38); - p = p + 1; - i = i + 1; - } while (i < 3); -} - - - -extern void (*D_8018FD74[])(void); - -void func_80162330(void *a0) { - D_8018FD74[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_8016236C() /* dedup: shared engine-core @0x8016236C (src/shared) */ - -DEFINE_func_801623B8() /* dedup: shared engine-core @0x801623B8 (src/shared) */ - -DEFINE_func_80162414() /* dedup: shared engine-core @0x80162414 (src/shared) */ - -// @class: regalloc-order -// @stuck: none — MATCH (160 ins, relocation-masked). Keys: (1) base=&D_800AF630 hoisted, pinned $s2; -// uVar2 UNPINNED (a $s3 pin forced the final `uVar2 & 0x7FFF` in-place+early, breaking the lh delay -// slot). (2) item pinned $s1, dest INLINED (D_801D96Dx in both call args) so it lands $s0 AFTER a0. -// (3) base assigned BEFORE the func_800291DC call so the return-copy `addu $s3,$v0` schedules after -// the base lui/addiu. (4) THE MOVE: each block's `addu $s1,$v0,$zero` = compute `base+off` into a -// $v0-PINNED temp `t`, then `item = t`. Two distinct hard regs ($v0 vs $s1) can't coalesce, forcing -// the exact `addiu $v0,$s2,off ; addu $s1,$v0` pair the target emits (plain `item=base+off` coalesces -// into one `addiu $s1` — 3 ins short). (5) store D_801E5C58[i] via `extern int D_801E5C58[]` (folds -// %lo, consistent with func_80162760). Coord = (s16)(-D_800AF7Bx / 2 + K) (negu; srl 31; addu; sra 1). - -#include "common.h" - - - - - - - - -s32 func_80162438(s32 _unused0) { - extern void func_80024054(void *, void *); - extern void func_8001CE28(void *, void *); - extern void func_8001CE68(void *, void *); - extern void func_800242D0(s32, void *, s32); - extern s32 func_801626B8(void); - extern void func_80162760(void); - extern u8 D_8018FD80[]; - extern s32 D_8018FD98; - extern u8 D_801E5C64[]; - extern u8 D_801E5C8C[]; - extern u8 D_801E5CA8[]; - extern int D_801E5C58[]; - extern u16 D_800B5BD8; - extern u16 D_800B5C10; - extern u16 D_800B5C48; - extern u16 D_800AF7BC; - extern u16 D_800AF7BE; - extern s16 D_800B5BE0; - extern s16 D_800B5BE2; - extern s16 D_800B5C04; - extern u8 D_800B5BFF; - extern s16 D_800B5C18; - extern s16 D_800B5C1A; - extern s16 D_800B5C3C; - extern u8 D_800B5C37; - extern s16 D_800B5C50; - extern s16 D_800B5C52; - extern s16 D_800B5C74; - - u32 uVar2; - register u8 *base __asm__("$18"); - register u8 *item __asm__("$17"); - - base = &(*(u8 *)&D_800AF630); - uVar2 = func_800291DC(0x12); - if ((uVar2 & 0x8000) != 0) { - if (D_800B5BD8 == 0) { - register u8 *t __asm__("$2") = base + 0x65A8; - item = t; - D_801E5C58[0] = (s32)item; - func_80024054(D_8018FD80, D_801E5C64); - func_8001CE28(item, D_801E5C64); - D_800B5C04 = 1; - D_800B5BFF = 1; - D_800B5BE0 = -D_800AF7BC / 2 + 0xD0; - D_800B5BE2 = -D_800AF7BE / 2 + 0x28; - } - if (D_800B5C10 == 0) { - register u8 *t __asm__("$2") = base + 0x65E0; - item = t; - D_801E5C58[1] = (s32)item; - func_80024054(((u8 *)&D_8018FD98), D_801E5C8C); - func_8001CE28(item, D_801E5C8C); - D_800B5C3C = 1; - D_800B5C37 = 1; - D_800B5C18 = -D_800AF7BC / 2 + 0xD0; - D_800B5C1A = -D_800AF7BE / 2 + 0x30; - } - if (D_800B5C48 == 0) { - register u8 *t __asm__("$2") = base + 0x6618; - item = t; - D_801E5C58[2] = (s32)item; - func_800242D0((s16)func_801626B8(), D_801E5CA8, 0x84); - func_8001CE68(item, D_801E5CA8); - D_800B5C74 = 1; - D_800B5C50 = -D_800AF7BC / 2 + 0xD0; - D_800B5C52 = -D_800AF7BE / 2 + 0x10; - } - func_800242D0((s16)func_801626B8(), D_801E5CA8, 0x84); - if ((uVar2 & 0x7FFF) == (s32)(*(s16 *)&D_80078EB0)) { - func_80162760(); - } - } -} - - - -DEFINE_func_801626B8() /* dedup: shared engine-core @0x801626B8 (src/shared) */ - -DEFINE_func_80162714() /* dedup: shared engine-core @0x80162714 (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (24 ins). do-while; load+call first, then p++ and i++ AFTER the call so gcc schedules p++/arg ahead of jal and i++ into the delay slot. - -extern void func_800291C8(s32, s32); -extern void func_80016714(void *a0, s32 a1); - -extern int D_801E5C58[]; - -void func_80162760(void) -{ - int *p; - int i; - - func_800291C8(0x12, 0); - i = 0; - p = D_801E5C58; - do { - int v = *p; - ((void (*)(int, int))func_80016714)(v, 0x38); - p = p + 1; - i = i + 1; - } while (i < 3); -} - - -DEFINE_func_801627C0() /* dedup: shared engine-core @0x801627C0 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (19 ins, relocation-masked) -// -// Tiny dispatcher: byte count at D_8011F750 (offset 0 of a 0x58-byte ctl struct; -// cf. func_801627C0 which calls func_80016714(&D_8011F750, 0x58)). If nonzero, -// call D_8018FDB8[count - 1]() through a word-stride fn-pointer table. -// -// Two idioms combined to match gcc-2.7.2 -O2: -// 1. The target MATERIALIZES &D_8011F750 (lui;addiu %lo) into $a0 before the lbu -// instead of folding %lo into the load. A direct global byte read always -// %lo-folds (lui;lbu %lo), so force the full-address materialization with the -// §21 re-tie barrier __asm__ __volatile__("":"=r"(p):"0"(p)) and pin the -// pointer to $a0 with register __asm__("$4") to get the exact register. -// 2. Writing `idx = idx - 1;` as its OWN statement (not inline D_8018FDB8[count-1]) -// keeps the array index/decrement separate so %lo(D_8018FDB8) folds into the -// dispatch load (lw %lo(...)($at)) — the inline form instead constant-folds the -// -1*4 into a -4 load offset and drops the %lo fold (1 ins short, schedule off). - - -void func_801627E8(void) -{ - - extern s32 D_8011F750; /* canonical: engine_core.h `extern s32 D_8011F750;` (read here as a byte) */ - extern void (*D_8018FDB8[])(void); /* word-stride table of dispatch fn pointers */ - register u8 *p __asm__("$4") = (u8 *)&D_8011F750; - s32 idx; - - __asm__ __volatile__("" : "=r"(p) : "0"(p)); /* materialize &D_8011F750 into $a0 (defeat %lo-fold of the lbu) */ - idx = *p; - if (idx != 0) { - idx = idx - 1; - D_8018FDB8[idx](); - } -} - - - -extern void (*D_8018FDBC[])(void); - -void func_80162834(void *a0) { - D_8018FDBC[*(u8 *)((s32)a0 + 0x1)](); -} - - - -// @class: plumbing -// @stuck: none — MATCH (stub: alloc + global init + two calls; $s0 holds param_1 across calls) - -extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80162968(s32 a0); -extern s32 func_80162ACC(u8 *a0); - -extern u8 D_800B5CB8; -extern s32 D_8018FDAC; -extern s32 D_800B5CBC; -extern u8 D_800B5CDF; -extern s32 D_800B5CEC; - -void func_80162870(s32 param_1) { - *(s32 *)(param_1 + 8) = (s32)&D_800B5CB8; - func_8001CB6C(&D_800B5CB8, (s32)&D_8018FDAC, 0x250, 0x1A0); - D_800B5CEC = param_1 + 0xC; - D_800B5CDF = 0x14; - D_800B5CBC |= 0x60000000; - func_80162968(param_1); - func_80162ACC((u8 *)param_1); -} - - -DEFINE_func_801628F4() /* dedup: shared engine-core @0x801628F4 (src/shared) */ - -DEFINE_func_80162968() /* dedup: shared engine-core @0x80162968 (src/shared) */ - -DEFINE_func_80162AC0() /* dedup: shared engine-core @0x80162AC0 (src/shared) */ - -DEFINE_func_80162ACC() /* dedup: shared engine-core @0x80162ACC (src/shared) */ - -DEFINE_func_80162AE0() /* dedup: shared engine-core @0x80162AE0 (src/shared) */ - -DEFINE_func_80162AF4() /* dedup: shared engine-core @0x80162AF4 (src/shared) */ - -DEFINE_func_80162B1C() /* dedup: shared engine-core @0x80162B1C (src/shared) */ - -DEFINE_func_80162CC4() /* dedup: shared engine-core @0x80162CC4 (src/shared) */ - -extern void func_80016714(void *a0, s32 a1); -void aF80162CCC(u8 *a0) __asm__("func_80162CCC"); -DEFINE_func_80162CCC() /* dedup: shared engine-core @0x80162CCC (src/shared) */ - - -DEFINE_func_80162D28() /* dedup: shared engine-core @0x80162D28 (src/shared) */ - -DEFINE_func_80162D88() /* dedup: shared engine-core @0x80162D88 (src/shared) */ - -DEFINE_func_80162DE8() /* dedup: shared engine-core @0x80162DE8 (src/shared) */ - -DEFINE_func_80162E48() /* dedup: shared engine-core @0x80162E48 (src/shared) */ - -DEFINE_func_80162EA8() /* dedup: shared engine-core @0x80162EA8 (src/shared) */ - -DEFINE_func_80162F08() /* dedup: shared engine-core @0x80162F08 (src/shared) */ - -DEFINE_func_80162F60() /* dedup: shared engine-core @0x80162F60 (src/shared) */ - -DEFINE_func_80162F80() /* dedup: shared engine-core @0x80162F80 (src/shared) */ - -DEFINE_func_80162FA0() /* dedup: shared engine-core @0x80162FA0 (src/shared) */ - -DEFINE_func_80162FC0() /* dedup: shared engine-core @0x80162FC0 (src/shared) */ - -DEFINE_func_80162FF4() /* dedup: shared engine-core @0x80162FF4 (src/shared) */ - -DEFINE_func_801630C4() /* dedup: shared engine-core @0x801630C4 (src/shared) */ - -DEFINE_func_80163194() /* dedup: shared engine-core @0x80163194 (src/shared) */ - -DEFINE_func_80163234() /* dedup: shared engine-core @0x80163234 (src/shared) */ - -DEFINE_func_8016325C() /* dedup: shared engine-core @0x8016325C (src/shared) */ - -DEFINE_func_801632E0() /* dedup: shared engine-core @0x801632E0 (src/shared) */ - -DEFINE_func_801632F0() /* dedup: shared engine-core @0x801632F0 (src/shared) */ - -DEFINE_func_80163328() /* dedup: shared engine-core @0x80163328 (src/shared) */ - -DEFINE_func_801633A8() /* dedup: shared engine-core @0x801633A8 (src/shared) */ - -// @class: struct -// @stuck: none — MATCH (21 ins, relocation-masked) - - -s32 func_80163408(s32 param_1, s32 param_2, s32 param_3, s32 param_4) { - extern int func_8016345C(int, unsigned short, int, unsigned short, void *); - extern unsigned char D_801E5054[8]; - - unsigned char sp18[8]; - memcpy(sp18, D_801E5054, 8); - return func_8016345C(((int)param_1), ((int)param_2), ((int)param_3), ((int)param_4), sp18); -} - - - -DEFINE_func_8016345C() /* dedup: shared engine-core @0x8016345C (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (unaligned 8-byte memcpy from global into stack buffer, then forward to callee) - -extern char D_801E5054[8]; - -extern void *memcpy(void *dst, const void *src, unsigned int n); -extern void func_80163534(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, u16 * a5); - -void func_801634D8(s32 param_1, u16 param_2, u16 param_3, s32 param_4, u16 param_5) -{ - char buf[8]; - - memcpy(buf, D_801E5054, 8); - ((void (*)(s32, u16, u16, s32, u16, s32))func_80163534)(param_1, param_2, param_3, param_4, param_5, (s32)buf); -} - - -DEFINE_func_80163534() /* dedup: shared engine-core @0x80163534 (src/shared) */ - - -DEFINE_func_80163664() /* dedup: shared engine-core @0x80163664 (src/shared) */ - -DEFINE_func_801636D0() /* dedup: shared engine-core @0x801636D0 (src/shared) */ - - -DEFINE_func_80163764() /* dedup: shared engine-core @0x80163764 (src/shared) */ - - -DEFINE_func_8016380C() /* dedup: shared engine-core @0x8016380C (src/shared) */ - -DEFINE_func_801638A0() /* dedup: shared engine-core @0x801638A0 (src/shared) */ - -DEFINE_func_80163950() /* dedup: shared engine-core @0x80163950 (src/shared) */ - - -extern void (*D_8018FDC4[])(void); - -void func_80163A58(void *a0) { - D_8018FDC4[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80163A94() /* dedup: shared engine-core @0x80163A94 (src/shared) */ - -DEFINE_func_80163C2C() /* dedup: shared engine-core @0x80163C2C (src/shared) */ - - -void func_80163EC8(s32 param_1) { - extern Blk8 D_801E505C; - extern u16 D_800B99DA; - extern u8 func_801656D0(s32 a0, s32 a1); - extern s32 func_80012F74(s32 a0, s32 a1, s32 a2, s32 a3); - extern void func_80015978(s32 a0, s32 *a1); - extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); - - Blk8 in; - u16 out[4]; - s16 buf[4]; - s32 psVar6; - s32 iVar8; - s32 iVar7; - register s32 uVar5 __asm__("$2"); /* PIN (flagged): uVar5 -> $v0 */ - u16 uVar4; - u8 uVar3; - - in = D_801E505C; - psVar6 = *(s32 *)(param_1 + 0x4c); - iVar8 = *(s32 *)(param_1 + 0x20); - func_80162D88((s32 *)param_1); - - if (*(s32 *)(psVar6 + 0x184) == 0) { - uVar5 = *(s32 *)(psVar6 + 0x44); - *(s16 *)(psVar6 + 0x18a) = 0; - *(s16 *)(psVar6 + 0x188) = 0; - *(s32 *)(psVar6 + 0x44) = uVar5 & ~0x20; - func_80146CA0((void *)param_1); - func_80146CA0((void *)param_1); - return; - } - if (*(s16 *)(*(s32 *)(psVar6 + 0x184) + 0x36) == *(u16 *)(psVar6 + 0x194)) { - goto LAB_matched; - } - *(s32 *)(psVar6 + 0x184) = 0; - uVar5 = *(s32 *)(psVar6 + 0x44); - *(s16 *)(psVar6 + 0x18a) = 0; - *(s16 *)(psVar6 + 0x188) = 0; - *(s32 *)(psVar6 + 0x44) = uVar5 & ~0x20; - func_80146CA0((void *)param_1); - func_80146CA0((void *)param_1); - return; - -LAB_matched: - *(s16 *)(psVar6 + 0x18a) = *(u16 *)(psVar6 + 0x18a) + 1; - if ((D_800B99DA & 3) == 0) { - if (*(s16 *)(psVar6 + 0x188) >= *(u8 *)(param_1 + 0x67)) { - *(s16 *)(psVar6 + 0x188) = *(s16 *)(psVar6 + 0x188) - *(u8 *)(param_1 + 0x67); - } else { - *(s16 *)(psVar6 + 0x188) = 0; - } - if (*(s16 *)(psVar6 + 0x188) < 0) { - *(s16 *)(psVar6 + 0x188) = 0; - } - } - - *(s16 *)(param_1 + 0x66) = *(u16 *)(param_1 + 0x66) + 0x40; - uVar5 = func_80148800((s32 *)psVar6); - if ((uVar5 & 0x80) != 0) { - *(s16 *)(param_1 + 0x66) = 0; - uVar3 = func_801656D0(psVar6, func_8014CA00(*(s32 *)(psVar6 + 0x184)) & 0xff); - *(s16 *)(psVar6 + 0x188) = *(u16 *)(psVar6 + 0x188) + uVar3; - *(s16 *)(iVar8 + 0x1a) = 0x4000; - *(s16 *)(iVar8 + 0x18) = 0x4000; - *(s32 *)(iVar8 + 0x48) = *(s16 *)(param_1 + 0x58); - *(s32 *)(iVar8 + 0x4c) = *(s16 *)(param_1 + 0x5a); - *(s32 *)(iVar8 + 0x50) = *(s16 *)(param_1 + 0x5c); - ((void (*)(s32, s32, s32))func_80149350)(param_1, (s32)&in, (s32)out); - *(s16 *)(param_1 + 0x6) = out[0]; - *(s16 *)(param_1 + 0xa) = out[1]; - *(s16 *)(param_1 + 0xe) = out[2]; - } - - if (0x80 < *(s16 *)(psVar6 + 0x188)) { - *(s16 *)(psVar6 + 0x188) = 0x80; - } - if (*(s16 *)(psVar6 + 0x188) >= 0x80) { - iVar7 = *(s32 *)(psVar6 + 0x184); - if (iVar7 != 0) { - func_80015978(iVar7 + 4, (s32 *)buf); - buf[3] = 0; - uVar4 = func_80156370(0xe); - func_8014C4AC(iVar7, 0xe, uVar4, buf, *(s16 *)(iVar8 + 0x12)); - func_80146994(0x33, param_1, 0, iVar7); - } - } else { - if (*(s16 *)(psVar6 + 0x18a) < 0x80 && *(u16 *)psVar6 != 0x19) { - goto LAB_end; - } - iVar7 = *(s32 *)(psVar6 + 0x184); - if (iVar7 != 0) { - func_80015978(iVar7 + 4, (s32 *)buf); - buf[3] = 0; - uVar4 = func_80156370(0x21); - func_8014C4AC(iVar7, 0x21, uVar4, buf, *(s16 *)(iVar8 + 0x12)); - if ((*(s32 *)(iVar7 + 0xb4) & 0x40000) != 0) { - func_8014AD30(param_1, (u16 *)buf, 0, *(s16 *)(iVar7 + 0x60)); - } - } - } - - uVar5 = func_8014CA00(iVar7); - *(s32 *)(psVar6 + 0x184) = uVar5; - if (0x1e < (u32)uVar5) { - *(s32 *)(psVar6 + 0x184) = 0; - } - func_80146E90((s32 *)param_1, 0x20); - *(s32 *)(psVar6 + 0x44) = *(s32 *)(psVar6 + 0x44) & ~0x20; - func_80147324(0x449); - func_80146CA0((void *)param_1); - func_80146CA0((void *)param_1); - -LAB_end: - uVar4 = func_80012F74(*(s16 *)(iVar8 + 0x1a), 0x1800, 3, 1); - *(s16 *)(iVar8 + 0x1a) = uVar4; - *(s16 *)(iVar8 + 0x18) = uVar4; - uVar4 = func_80012F74(*(s16 *)(param_1 + 0x6), *(s16 *)(param_1 + 0x58), 8, 1); - *(s16 *)(param_1 + 0x6) = uVar4; - uVar4 = func_80012F74(*(s16 *)(param_1 + 0xa), *(s16 *)(param_1 + 0x5a), 8, 1); - *(s16 *)(param_1 + 0xa) = uVar4; - uVar4 = func_80012F74(*(s16 *)(param_1 + 0xe), *(s16 *)(param_1 + 0x5c), 8, 1); - *(s16 *)(param_1 + 0xe) = uVar4; -} - - -DEFINE_func_80164270() /* dedup: shared engine-core @0x80164270 (src/shared) */ - -DEFINE_func_801642AC() /* dedup: shared engine-core @0x801642AC (src/shared) */ - -DEFINE_func_8016432C() /* dedup: shared engine-core @0x8016432C (src/shared) */ - -DEFINE_func_80164410() /* dedup: shared engine-core @0x80164410 (src/shared) */ - -DEFINE_func_80164418() /* dedup: shared engine-core @0x80164418 (src/shared) */ - -DEFINE_func_80164530() /* dedup: shared engine-core @0x80164530 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH expected (fn-ptr table dispatch via u16 idx, $s0 holds *(s32*)(p+0x20) across the call) - -extern void (*D_8018FE18[])(void); -extern void func_80162D28(s32 *a0); - -void func_80164744(s32 param_1) -{ - s32 iVar1; - - iVar1 = *(s32 *)(param_1 + 0x20); - D_8018FE18[*(u16 *)(param_1 + 2)](); - if (iVar1 != 0) { - ((void (*)(s32))func_80162D28)(param_1); - } -} - - - - -// @class: other -// @stuck: none — MATCH (relocation-masked); key was `if (iVar1 != 0) { big } else { func_80164930 }` (non-zero case first → beqz, not bnez) - - -extern void func_8014659C(void); -extern void func_8001C810(s32 a0, s32 a1); -extern void func_80164A74(s32 *a0); -extern void func_80146CA0(void *a0); -extern void func_80164930(s32 a); - -extern u16 D_800DF2E0; -extern s32 D_8018FDE0; -extern s16 D_8018FE14; -extern s16 D_8018FE12; -extern s16 D_8018FE10; - -void func_801647A4(int param_1) { - s32 iVar1; - - iVar1 = ((s32 (*)(void))func_8014659C)(); - *(s32 *)(param_1 + 0x20) = iVar1; - if (iVar1 != 0) { - ((void (*)(s32, void *))func_8001C810)(iVar1, &D_800DF2E0); - *(s32 **)(iVar1 + 0x80) = &D_8018FDE0; - *(u32 *)(iVar1 + 4) = *(u32 *)(iVar1 + 4) | 0x50000000; - *(u16 *)(iVar1 + 0x2c) = *(u16 *)(iVar1 + 0x2c) | 0xb0; - D_8018FE14 = 0x80; - D_8018FE12 = 0x80; - D_8018FE10 = 0x80; - *(u16 *)(iVar1 + 0x1a) = 0; - *(u16 *)(param_1 + 0x60) = 0; - *(u16 *)(param_1 + 0x62) = 0x200; - ((s32 (*)(s32))func_80164A74)(param_1); - ((void (*)(s32))func_80146CA0)(param_1); - } else { - func_80164930(param_1); - } -} - - -DEFINE_func_80164864() /* dedup: shared engine-core @0x80164864 (src/shared) */ - -// @class: regalloc-order — wave-3 real-TU crack (§42a); cracked at Max. -// Fix: D_8018FE14 read needs direct-addressed `lhu` (u16). Cannot use `*(u16*)&D_8018FE14` -// (forces &sym into a held reg -> drift) NOR a block-scoped `extern u16` (conflicting-types -// ERROR vs the ambient s16, cc1 exit 33). Solution: flip the file-scope decl (5802) to u16 — -// byte-neutral to the only other user (func_801647A4 store-only) — and reference directly. - - -void func_80164930(s32 param_1) { - int iVar3 = *(int *)(((int)param_1) + 0x20); - if (*(int *)(((int)param_1) + 0x50) == 0) { - short sVar1 = *(u16 *)(iVar3 + 0x1c) + 0x100; - short nv; - *(short *)(iVar3 + 0x1c) = sVar1; - *(short *)(iVar3 + 0x18) = sVar1; - *(short *)(iVar3 + 0x12) = *(u16 *)(iVar3 + 0x12) + 0x71; - nv = D_8018FE14 - 8; - D_8018FE14 = nv; - D_8018FE12 = nv; - D_8018FE10 = nv; - if (nv < -0x80) { - int i, lim; - Ent_80164930_80164930 *p; - for (i = 0, lim = 0x19, p = ((Ent_80164930_80164930 *)&D_8011F9D0); i < 0x14; i++) { - if (p->f0 == lim && p->f50 != 0) { - ((void(*)(Ent_80164930_80164930 *))func_80162CCC)(p); - } - p++; - } - ((void(*)(Ent_80164930_80164930 *))func_80162CCC)((Ent_80164930_80164930 *)((int)param_1)); - } else { - ((void(*)(int))func_80164ACC)(((int)param_1)); - } - } else { - short sVar1 = *(u16 *)(iVar3 + 0x1c) + 0x40; - u16 uVar2; - *(short *)(iVar3 + 0x1c) = sVar1; - *(short *)(iVar3 + 0x18) = sVar1; - uVar2 = *(u16 *)(iVar3 + 0x1a) - 0x200; - *(u16 *)(iVar3 + 0x1a) = uVar2; - if ((int)((unsigned)uVar2 << 0x10) < 0) { - *(short *)(iVar3 + 0x1a) = 0; - } - *(short *)(iVar3 + 0x12) = *(u16 *)(iVar3 + 0x12) - 0x71; - } -} - - - -DEFINE_func_80164A74() /* dedup: shared engine-core @0x80164A74 (src/shared) */ - -DEFINE_func_80164ACC() /* dedup: shared engine-core @0x80164ACC (src/shared) */ - - -extern void (*D_8018FE24[])(void); - -void func_80164BA0(void *a0) { - D_8018FE24[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void func_80146578(void); -extern void func_8001CD50(s32 a0, s32 a1); -extern void func_800233CC(void *, unsigned short); -extern void func_80164DD0(s32 a0); -extern void func_80146CA0(void *a0); -extern void func_80164DB0(void); - -extern u8 D_801E5CB8; -extern u8 D_801E5CB9; -extern u8 D_801E5CBA; -extern u8 D_801E5CBB; -extern u8 D_801E5CBC; -extern u8 D_801E5CBD; -extern u8 D_801E5CBE; -extern u8 D_801E5CBF; - -void func_80164BDC(s32 param_1) -{ - register s32 p1 __asm__("$17"); /* $s1 */ - register s32 iVar1 __asm__("$16"); /* $s0 */ - register s32 base __asm__("$18"); /* $s2 */ - - p1 = param_1; - iVar1 = ((s32 (*)(void))func_80146578)(); - base = (s32)&D_801E5CB8; - *(s32 *)(p1 + 0x20) = iVar1; - if (iVar1 != 0) { - func_8001CD50(iVar1, base); - ((void (*)(s32, s32))func_800233CC)(base, 0x60); - *(u32 *)(iVar1 + 4) = *(u32 *)(iVar1 + 4) | 0x50000000; - D_801E5CB9 = 0xf0; - *(u8 *)base = 0xf0; - D_801E5CBA = 0xc0; - D_801E5CBE = 0; - D_801E5CBD = 0; - D_801E5CBC = 0; - D_801E5CBF = 0; - D_801E5CBB = 0; - *(s16 *)(iVar1 + 0x1e) = 0xccc; - *(s16 *)(iVar1 + 0x10) = 0x400; - *(s16 *)(p1 + 0x60) = 0x700; - *(s16 *)(p1 + 0x62) = -0x60; - func_80164DD0(p1); - ((void (*)(s32))func_80146CA0)(p1); - } else { - ((void (*)(s32))func_80164DB0)(p1); - } -} - - -DEFINE_func_80164CD4() /* dedup: shared engine-core @0x80164CD4 (src/shared) */ - -DEFINE_func_80164D4C() /* dedup: shared engine-core @0x80164D4C (src/shared) */ - -DEFINE_func_80164DB0() /* dedup: shared engine-core @0x80164DB0 (src/shared) */ - -DEFINE_func_80164DD0() /* dedup: shared engine-core @0x80164DD0 (src/shared) */ - - - - - -extern u8 D_801E5CB8; -extern u8 D_801E5CB9; -extern u8 D_801E5CBA; - -s32 func_80164E40(void) { - u8 *p = &D_801E5CB8; - if (*p != 0) { - *p -= 0x10; - } - if (D_801E5CB9 != 0) { - D_801E5CB9 -= 0x10; - } - if (D_801E5CBA != 0) { - D_801E5CBA -= 0x10; - } - return *(s32 *)p == 0; -} - - - -extern void (*D_8018FE34[])(void); - -void func_80164EA4(void *a0) { - D_8018FE34[*(u16 *)((s32)a0 + 0x2)](); -} - - - -// @class: struct -// @stuck: none — MATCH - - /* stride 0x10 */ -extern DStruct D_801E5D04[]; - -extern void func_80165124(void *a0); -extern void func_80146CA0(void *a0); - -void func_80164EE0(int param_1) -{ - int i; - - for (i = 7; i >= 0; i--) { - D_801E5D04[i].f0 = 0; - } - *(short *)(param_1 + 0x2e) = 0x4000; - *(short *)(param_1 + 0x2c) = 0x4000; - *(short *)(param_1 + 0x60) = 0; - *(short *)(param_1 + 0x62) = 0; - ((void (*)(int))func_80165124)(param_1); - *(short *)(param_1 + 0x66) = 0; - ((void (*)(int))func_80146CA0)(param_1); -} - - -DEFINE_func_80164F44() /* dedup: shared engine-core @0x80164F44 (src/shared) */ - -DEFINE_func_80165024() /* dedup: shared engine-core @0x80165024 (src/shared) */ - -DEFINE_func_80165064() /* dedup: shared engine-core @0x80165064 (src/shared) */ - -DEFINE_func_801650C4() /* dedup: shared engine-core @0x801650C4 (src/shared) */ - -DEFINE_func_80165124() /* dedup: shared engine-core @0x80165124 (src/shared) */ - -// @class: struct -// @stuck: none — MATCH (30 ins) -// -// Unaligned slot-fill: loop over 8 slots (0x10 stride) of a global table, -// fill the first free one (field @0xC == 0). Two unaligned block copies from -// param_1 (packed struct assigns -> lwl/lwr/swl/swr). Key: recompute -// p = &D_801E5CF8[i] each iteration (NOT p++) so gcc reduces base+i*0x10 into -// a SINGLE pointer IV with immediate offsets 0/8/0xC. Hand-incrementing p makes -// combine_givs split the field offsets into a second pointer IV (+2 ins). - - - - -s32 func_80165140(s32 param_1) { - extern Slot_80165140 D_801E5CF8[8]; - - int i; - Slot_80165140 *p; - for (i = 0; i < 8; i++) { - p = &D_801E5CF8[i]; - if (p->used == 0) { - p->used = 8; - p->a = *(B8_80165140 *)(((u8 *)param_1) + 0x2c); - p->b = *(B4_80165140 *)(((u8 *)param_1) + 0x50); - return; - } - } -} - - - - -// @class: schedule -// @stuck: none — MATCH (pins $s2/$s1/$s0 + zero-code barrier hoists $a0 copy into beqz delay slot) - -extern void func_80165240(void *param_1, void *param_2, void *param_3); -extern s32 D_801E5CF8; - -void func_801651B8(void * param_1) -{ - register s32 *puVar1 __asm__("$16"); /* $s0 */ - register s32 iVar2 __asm__("$17"); /* $s1 */ - register s32 p __asm__("$18"); /* $s2 */ - - p = param_1; - ((s32 (*)(s32, s32, s32))func_80165240)(p, p + 0x2c, p + 0x50); - iVar2 = 0; - puVar1 = &D_801E5CF8; - do { - if (puVar1[3] != 0) { - s32 a0v = p; - __asm__ __volatile__("" : "=r"(a0v) : "0"(a0v)); - ((s32 (*)(s32, s32, s32))func_80165240)(a0v, (s32)puVar1, (s32)(puVar1 + 2)); - puVar1[3] = puVar1[3] + -1; - } - iVar2 = iVar2 + 1; - puVar1 = puVar1 + 4; - } while (iVar2 < 8); -} - - -extern void func_80016ED4(void *a0); -extern s32 func_80017DC4(void *a0, void *a1); - -void func_80165240(void *param_1, void *param_2, void *param_3) -{ - - extern u8 D_8018FE48[]; - extern u32 D_8018FE68, D_8018FE6C, D_8018FE70, D_8018FE74; - extern u32 D_8018FE68, D_8018FE6C, D_8018FE70, D_8018FE74; - extern u32 D_8018FE68, D_8018FE6C, D_8018FE70, D_8018FE74; - extern u32 D_8018FE68, D_8018FE6C, D_8018FE70, D_8018FE74; - u8 prim[0x40]; /* $sp+0x10 .. 0x50 */ - u8 mat[0x20]; /* $sp+0x50 .. 0x70 */ - u8 *p = prim; - - func_80017DC4(param_2, mat); - ApplyMatrixSV(mat, &D_8018FE48[0x00], p); - ApplyMatrixSV(mat, &D_8018FE48[0x08], prim + 0x08); - ApplyMatrixSV(mat, &D_8018FE48[0x10], prim + 0x10); - ApplyMatrixSV(mat, &D_8018FE48[0x18], prim + 0x18); - - *(s16 *)(prim + 0x04) = 3; - prim[0x38] = 0x2c; - *(u32 *)(prim + 0x20) = D_8018FE70; - *(u32 *)(prim + 0x24) = D_8018FE68; - *(u32 *)(prim + 0x28) = D_8018FE74; - *(u32 *)(prim + 0x2c) = D_8018FE6C; - *(struct W4 *)(prim + 0x30) = *(struct W4 *)param_3; - *(u32 *)(prim + 0x34) = 0x50000000; - - func_80016ED4(p); -} - - -DEFINE_func_8016533C() /* dedup: shared engine-core @0x8016533C (src/shared) */ - -DEFINE_func_80165374() /* dedup: shared engine-core @0x80165374 (src/shared) */ - -DEFINE_func_801653B8() /* dedup: shared engine-core @0x801653B8 (src/shared) */ - -DEFINE_func_801653F4() /* dedup: shared engine-core @0x801653F4 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (54 ins) - -extern u8 D_80078E78[]; -extern u8 D_80078EC1; -extern void (*D_8018FE78[])(void); -extern u8 func_80165658(s32 a0, s32 a1); -extern void func_800CAE0C(s32 a0); - -void func_801654A8(s32 arg0) -{ - u8 *s1 = D_80078E78; - - if (*(u16 *)arg0 == 0x16) { - return; - } - if (*(u16 *)arg0 != 0x1A) { - if ((*(s32 *)(arg0 + 0x1F8) & 0x80FFFFFF) == 0) { - if (func_80165658(arg0, D_80078EC1) & 0x80) { - ((void (*)(s32))D_8018FE78[D_80078EC1 & 0x7F])(arg0); - } - } - } - if (*(u16 *)arg0 == 0x16) { - return; - } - if (*(u16 *)arg0 == 0x1A) { - return; - } - if (s1[0x49] == 0x19) { - func_800CAE0C(arg0); - } -} - - - -// @class: struct -// @stuck: none — MATCH (function-pointer-array dispatch; & 0x80 branch + & 0x7f index fold) - -extern u8 D_80078EC5; -extern u8 D_80078EC1; -extern void (*D_8018FE78[])(void); -extern void func_80165B28(void *a0); - -void func_80165580(s32 _arg0) -{ - if (D_80078EC5 & 0x80) { - ((void (*)(void))func_80165B28)(); - } else { - D_8018FE78[D_80078EC1 & 0x7F](); - } -} - - -DEFINE_func_801655E4() /* dedup: shared engine-core @0x801655E4 (src/shared) */ - -DEFINE_func_80165624() /* dedup: shared engine-core @0x80165624 (src/shared) */ - - -extern u8 D_8018FEF4[]; - -u8 func_80165658(s32 a0, s32 a1) { - return D_8018FEF4[a1 & 0x7F]; -} - - - -extern s32 D_8018FF14[]; -extern s32 D_80078EC8; - -void func_80165670(s32 a0, s32 a1) { - D_80078EC8 = D_8018FF14[a1 & 0x7F]; -} - - -DEFINE_func_80165694() /* dedup: shared engine-core @0x80165694 (src/shared) */ - - -extern u8 D_8018FF90[]; - -u8 func_801656D0(s32 a0, s32 a1) { - return D_8018FF90[a1 & 0x7F]; -} - - - -extern u8 D_8018FFB0[]; - -u8 func_801656E8(s32 a0, s32 a1) { - return D_8018FFB0[a1 & 0x7F]; -} - - - -extern u8 D_8018FFD0[]; - -u8 func_80165700(s32 a0, s32 a1) { - return D_8018FFD0[a1 & 0x7F]; -} - - -DEFINE_func_80165718() /* dedup: shared engine-core @0x80165718 (src/shared) */ - -DEFINE_func_80165770() /* dedup: shared engine-core @0x80165770 (src/shared) */ - -DEFINE_func_801657A0() /* dedup: shared engine-core @0x801657A0 (src/shared) */ - -DEFINE_func_801657D8() /* dedup: shared engine-core @0x801657D8 (src/shared) */ - -DEFINE_func_80165840() /* dedup: shared engine-core @0x80165840 (src/shared) */ - -DEFINE_func_80165874() /* dedup: shared engine-core @0x80165874 (src/shared) */ - -DEFINE_func_801658DC() /* dedup: shared engine-core @0x801658DC (src/shared) */ - -DEFINE_func_801658EC() /* dedup: shared engine-core @0x801658EC (src/shared) */ - -DEFINE_func_80165900() /* dedup: shared engine-core @0x80165900 (src/shared) */ - -DEFINE_func_80165910() /* dedup: shared engine-core @0x80165910 (src/shared) */ - -DEFINE_func_80165938() /* dedup: shared engine-core @0x80165938 (src/shared) */ - -DEFINE_func_80165958() /* dedup: shared engine-core @0x80165958 (src/shared) */ - -DEFINE_func_80165978() /* dedup: shared engine-core @0x80165978 (src/shared) */ - -DEFINE_func_80165988() /* dedup: shared engine-core @0x80165988 (src/shared) */ - -DEFINE_func_801659A8() /* dedup: shared engine-core @0x801659A8 (src/shared) */ - -DEFINE_func_801659B8() /* dedup: shared engine-core @0x801659B8 (src/shared) */ - -DEFINE_func_801659CC() /* dedup: shared engine-core @0x801659CC (src/shared) */ - - - -s32 func_801659DC(u8 *a0) { - - extern void (*D_8018FFF0[])(void); - D_8018FFF0[*(u8 *)((s32)a0 + 0x1A0)](); -} - - -DEFINE_func_80165A18() /* dedup: shared engine-core @0x80165A18 (src/shared) */ - -DEFINE_func_80165A20() /* dedup: shared engine-core @0x80165A20 (src/shared) */ - -DEFINE_func_80165A50() /* dedup: shared engine-core @0x80165A50 (src/shared) */ - -DEFINE_func_80165A78() /* dedup: shared engine-core @0x80165A78 (src/shared) */ - - -extern u8 D_80078EC1; -extern void (*D_8019006C[])(void); - -void func_80165AC8(void) { - D_8019006C[D_80078EC1 & 0x7F](); -} - - -DEFINE_func_80165B08() /* dedup: shared engine-core @0x80165B08 (src/shared) */ - -DEFINE_func_80165B10() /* dedup: shared engine-core @0x80165B10 (src/shared) */ - -DEFINE_func_80165B18() /* dedup: shared engine-core @0x80165B18 (src/shared) */ - -DEFINE_func_80165B20() /* dedup: shared engine-core @0x80165B20 (src/shared) */ - - -extern void (*D_801900E8[])(void); - -void func_80165B28(void *a0) { - *(u32 *)((s32)a0 + 0x44) |= 8; - D_801900E8[*(u8 *)((s32)a0 + 0x197)](); -} - - -DEFINE_func_80165B6C() /* dedup: shared engine-core @0x80165B6C (src/shared) */ - -DEFINE_func_80165BB4() /* dedup: shared engine-core @0x80165BB4 (src/shared) */ - -DEFINE_func_80165BFC() /* dedup: shared engine-core @0x80165BFC (src/shared) */ - -DEFINE_func_80165C58() /* dedup: shared engine-core @0x80165C58 (src/shared) */ - -DEFINE_func_80165C78() /* dedup: shared engine-core @0x80165C78 (src/shared) */ - -DEFINE_func_80165CA0() /* dedup: shared engine-core @0x80165ca0 (src/shared) */ - - -extern M2C_UNK D_801E5064; - -void func_80165E2C(u16 *arg0) { - func_8001534C(0, &D_801E5064, 0x80, 0x80, 0, 0); - func_800153CC(1, *arg0, 0xA8, 0x80, 0x40, 0); -} - - -DEFINE_func_80165E90() /* dedup: shared engine-core @0x80165E90 (src/shared) */ - -DEFINE_func_80165FA4() /* dedup: shared engine-core @0x80165FA4 (src/shared) */ - - -extern void (*D_801900F4[])(void); - -void func_80166018(void *a0) { - D_801900F4[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80166054() /* dedup: shared engine-core @0x80166054 (src/shared) */ - -DEFINE_func_801661CC() /* dedup: shared engine-core @0x801661CC (src/shared) */ - -DEFINE_func_80166244() /* dedup: shared engine-core @0x80166244 (src/shared) */ - -DEFINE_func_8016629C() /* dedup: shared engine-core @0x8016629C (src/shared) */ - -DEFINE_func_801662F4() /* dedup: shared engine-core @0x801662F4 (src/shared) */ - -DEFINE_func_8016634C() /* dedup: shared engine-core @0x8016634C (src/shared) */ - -DEFINE_func_801663A4() /* dedup: shared engine-core @0x801663A4 (src/shared) */ - - -extern void (*D_801900FC[])(void); - -void func_801663FC(void *a0) { - D_801900FC[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80166438() /* dedup: shared engine-core @0x80166438 (src/shared) */ - -DEFINE_func_801665B4() /* dedup: shared engine-core @0x801665B4 (src/shared) */ - - -extern void (*D_801901C4[])(void); - -void func_80166618(void *a0) { - D_801901C4[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_801901D4[])(void); - -void func_80166654(void *a0) { - D_801901D4[*(u16 *)((s32)a0 + 0x2)](); -} - - -#include "common.h" - - /* 12-byte sub-table record (stride 0xC) */ - - - -s32 func_80166690(s32 param_1, s32 param_2) -{ - extern s32 func_80017758(void *a0, void *a1); - extern Blk20 D_800AE620; - extern u8 D_801E5D78[]; - - Frame_80166690_80166690 c; - Blk20 blk; - Rec_80166690_80166690 *sub; - Rec_80166690_80166690 *pv; - u8 *rec; - int i6; - int lt2; - int p2; - unsigned int uVar7, uVar8, uVar9; - int iVar3; - unsigned int w9, w7, w, t, w3b; - int w3; - short sVar10; - register unsigned int zr __asm__("$0"); - - blk = D_800AE620; - i6 = (short)param_1; - c.tag = 0x50000000; - rec = &D_801E5D78[i6 * 0xC4]; - sVar10 = 0; - if (rec[0] == 0) { - return 0; - } - sub = (Rec_80166690_80166690 *)(rec + 4); - uVar9 = rec[1]; - uVar8 = rec[3]; - uVar7 = uVar8 >> 1; - iVar3 = rec[2]; - w3 = iVar3 - 1; - iVar3 = w3 + zr; - if (w3 != -1) { - lt2 = i6 < 2; - p2 = (short)param_2; - do { - pv = &sub[(short)uVar9]; - c.v0 = pv->h[0]; - c.v1 = pv->h[1]; - c.v2 = pv->h[2]; - c.w0 = pv->h[3]; - c.w1 = pv->h[4]; - c.w2 = pv->h[5]; - sVar10 = sVar10 + 1; - - if (lt2) { - if (p2 == 0) { - t = uVar8 + zr; - c.c12 = t; c.c02 = t; - t = uVar7 + zr; - } else { - w = ((int)(uVar8 << 16) >> 17) + ((int)(uVar8 << 16) >> 19); - uVar7 = w + zr; - c.c12 = w; c.c02 = w; - t = uVar8 + zr; - } - c.c11 = t; c.c01 = t; c.c10 = t; c.c00 = t; - } else { - t = uVar8 + zr; - c.c10 = t; c.c00 = t; - t = uVar7 + zr; - c.c12 = t; c.c02 = t; c.c11 = t; c.c01 = t; - } - - w9 = uVar9 - 1; - uVar9 = w9 + zr; - if ((int)(w9 << 16) < 0) { - uVar9 = 0xF; - } - pv = &sub[(short)uVar9]; - c.v3 = pv->h[0]; - c.v4 = pv->h[1]; - c.v5 = pv->h[2]; - c.w3 = pv->h[3]; - c.w4 = pv->h[4]; - uVar8 = uVar8 - 0x10; - w7 = uVar7 - 0x10; - uVar7 = w7 + zr; - c.w5 = pv->h[5]; - if ((int)(w7 << 16) < 0) { - uVar7 = 0; - } - - if (lt2) { - if (p2 == 0) { - t = uVar8 + zr; - c.c32 = t; c.c22 = t; - t = uVar7 + zr; - } else { - t = uVar7 + zr; - c.c32 = t; c.c22 = t; - t = uVar8 + zr; - } - c.c31 = t; c.c21 = t; c.c30 = t; c.c20 = t; - } else { - t = uVar8 + zr; - c.c30 = t; c.c20 = t; - t = uVar7 + zr; - c.c32 = t; c.c22 = t; c.c31 = t; c.c21 = t; - } - - __asm__ __volatile__("" :: "r"(iVar3)); - func_80017758(&c, &blk); - w3b = iVar3 - 1; - iVar3 = w3b + zr; - } while ((short)w3b != -1); - } - return (short)sVar10; -} - - - - -/* func_80166994 — trail/afterimage ring recorder (0xC4-stride Trail records at D_801E5D78). - * param_2: 0=init, 1=advance(record), 2=fadeout; param_3: trail index (s16); param_4: divisor (s16). - * - * K&R definition: true s16 params => callee-side lazy per-use narrow/extend with raw pseudos - * (s3/t0/s4 hold raw a1/a2/a3; first-use extension allocates IN PLACE into the arg reg), while - * the promoted K&R type (int x4) stays compatible with the canon-sig s32 prototype in the TU. - * Returns s32 (v0=1 when the fadeout completes, else 0) => the //@EDIT above flips the split's - * canon-sig prototype return type, AND engine_core.h needs the once-global ec_edit (all 5 sites, - * byte-neutral: every caller discards the result): - * ec_edit old: "extern void func_80166994(s32 a0, s32 a1, s32 a2, s32 a3); \" - * ec_edit new: "extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3); \" - * Without the ec_edit, cc1 hard-errors (conflicting types vs the void decls in DEFINE_ macros). - * - * Fully block-scoped (typedefs + externs inside the body) so the crack propagates ×134 via - * family_remap with zero file-scope footprint. No register pins. - */ -s32 func_80166994(param_1, param_2, param_3, param_4) - s32 param_1; - s16 param_2; - s16 param_3; - s16 param_4; -{ - extern u8 D_801E5D78[]; - extern void RotTransSV(void *a0, void *a1, void *a2); - extern s32 VectorNormalSS(void *a0, void *a1); - - Trail *p = &((Trail *)D_801E5D78)[param_3]; - s32 uVar6 = *(s32 *)(param_1 + 0x34); - s16 v10[4]; - s16 v18[4]; - s16 v20[4]; - s16 v28[4]; - s16 out[4]; - s32 c; - - switch (param_2) { - case 0: - p->flag = 1; - p->count = 0; - p->idx = 0; - p->timer = 0xf4; - break; - case 1: - v20[0] = p->e[p->idx].f0; - v20[1] = p->e[p->idx].f1; - v20[2] = p->e[p->idx].f2; - v28[0] = p->e[p->idx].f3; - v28[1] = p->e[p->idx].f4; - v28[2] = p->e[p->idx].f5; - c = p->idx; - p->idx = c + 1; - if ((u8)(c + 1) > 0xf) { - p->idx = 0; - } - if (p->count < 0xf) { - p->count = p->count + 1; - } - break; - case 2: { - u8 bVar3 = p->timer - 0x10; - p->timer = bVar3; - if (bVar3 < 0x10) { - p->flag = 0; - return 1; - } - { - u8 bVar1 = p->count; - if (bVar1 >= 2 && (bVar3 >> 4) < bVar1) { - p->count = bVar1 - 1; - } - } - return 0; - } - } - - if (param_3 < 2) { - func_801484B0((s32)v10, (s32)v18); - } else { - func_80148534((s32)v10, (s32)v18); - } - func_80165FA4(uVar6, (s32)v10, (s32)v18); - ((void (*)(s32, s32, s32))func_80149350)(uVar6, (s32)v10, (s32)v10); - RotTransSV(v18, v18, out); - - if (param_2 != 0) { - v20[0] = (v10[0] + v20[0]) >> 1; - v20[1] = (v10[1] + v20[1]) >> 1; - v20[2] = (v10[2] + v20[2]) >> 1; - v28[0] = (v18[0] + v28[0]) >> 1; - v28[1] = (v18[1] + v28[1]) >> 1; - v28[2] = (v18[2] + v28[2]) >> 1; - v20[0] = v20[0] - v28[0]; - v20[1] = v20[1] - v28[1]; - v20[2] = v20[2] - v28[2]; - VectorNormalSS(v20, v20); - v20[0] = v28[0] + v20[0] / param_4; - v20[1] = v28[1] + v20[1] / param_4; - v20[2] = v28[2] + v20[2] / param_4; - p->e[p->idx].f0 = v20[0]; - p->e[p->idx].f1 = v20[1]; - p->e[p->idx].f2 = v20[2]; - p->e[p->idx].f3 = v28[0]; - p->e[p->idx].f4 = v28[1]; - p->e[p->idx].f5 = v28[2]; - c = p->idx; - p->idx = c + 1; - if ((u8)(c + 1) > 0xf) { - p->idx = 0; - } - if (p->count < 0xf) { - p->count = p->count + 1; - } - } - - p->e[p->idx].f0 = v10[0]; - p->e[p->idx].f1 = v10[1]; - p->e[p->idx].f2 = v10[2]; - p->e[p->idx].f3 = v18[0]; - p->e[p->idx].f4 = v18[1]; - p->e[p->idx].f5 = v18[2]; - return 0; -} - - -// @class: regalloc-order -// @stuck: none — MATCH (69 ins). Pins $s4/$s1 for param_2/param_3 + a1/a2-pinned temps -// with non-volatile SHB barriers force the sign-ext move-form; short iVar2 (unpinned) -// gives the temp-form counter increment that fills the skip-branch delay slots; -// loop-invariant eq=(p2==p3) hoisted; SHB(p2) after the move serializes param_2 before -// param_3's sign-ext (last ordering swap); param_1/param_4 left natural (arg-order saves). - - -#define SHB(x) __asm__("" : "=r"(x) : "0"(x)) - -s32 func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4) -{ - /* [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_8011D030; - extern unsigned char D_801E5D78[]; - - register int p2 __asm__("$20"); /* $s4 */ - register int p3 __asm__("$17"); /* $s1 */ - register int t2 __asm__("$5"); /* a1 */ - register int t3 __asm__("$6"); /* a2 */ - unsigned short *puVar1; - short iVar2; - int eq; - - iVar2 = 0; - puVar1 = ((unsigned short *)&D_8011D030); - t2 = ((short)param_2); SHB(t2); p2 = t2; SHB(p2); - t3 = ((short)param_3); SHB(t3); p3 = t3; - eq = (p2 == p3); - do { - if ((puVar1 != ((unsigned short *)param_1)) && - ((unsigned int)*puVar1 == p2 || (unsigned int)*puVar1 == p3) && - (!eq || - *(int *)(puVar1 + 0x16) == *(int *)(((unsigned short *)param_1) + 0x16))) { - ((void(*)(unsigned short *))func_80146C3C)(puVar1); - } - iVar2 = iVar2 + 1; - puVar1 = puVar1 + 0x2c; - } while (iVar2 < 0x1e); - ((void(*)(void *, int))func_80016714)(&D_801E5D78[((short)param_4) * 0xc4], 0xc4); -} - - - - - -DEFINE_func_8016706C() /* dedup: shared engine-core @0x8016706C (src/shared) */ - - - -// @class: schedule -// @stuck: 16/279 masked. 3 runs, ONE residual class: gcc's list-scheduler puts `la $s2` (p=DATA) + `addu $s4,$zero,$zero` (i=0) BEFORE the callee-arg address setup (addiu $a1,$sp,0x10 / addu $a2,$a1,$zero); the target emits them AFTER. Inert to ~40 statement-order permutations + pin/barrier combos (sched priority dominates the LUID tie-break, sched.c rank_for_schedule). Runs: 19-24 (blk1), 111-114 (region-B cx-load rotation), 177-182 (blk3). Permuter fuel. - - - - -extern void func_80149350(s32); -extern void func_800D20C0(void *a0, void *a1, s32 a2); -extern void func_80017E68(void *a0, void *a1); -extern void func_800D23D0(void *a0); -extern void RotMatrixYXZ(void *a0, void *a1); -extern s32 func_80017758(void *a0, void *a1); -extern s32 func_80017DC4(void *a0, void *a1); -extern void func_80048EAC(void *a0, void *a1); - - -s32 func_801670E4(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { - - extern u8 D_80190118[]; - extern u8 D_80190104[]; - extern u8 D_8019012C[]; - extern s32 D_801269A4; - extern s32 D_801269A8; - extern s32 D_801269AC; - extern u16 D_80126CE0; - Fr_801670E4 f; - register u8 *p __asm__("$18"); /* $s2 */ - register s32 ent __asm__("$19"); /* $s3 */ - s16 i; - s32 d; - s32 node; - u16 c; - u8 cv; - u8 cv2; - register s32 gA __asm__("$2"); - register s32 cxv __asm__("$4"); - register s32 czv __asm__("$5"); - u8 *vc; - u8 *ap; - u8 *mp; - u8 *va; - u8 *vb; - - ent = arg0; - node = *(s32 *)(ent + 0x34); - f.v[1].z = 0; - f.v[1].y = 0; - f.v[1].x = 0; - f.v[3].z = 0; - f.v[2].z = 0; - f.v[0].z = 0; - f.col[1].b = 0x70; - cv = *(u8 *)(ent + 0x12); - f.cx = arg1; - __asm__ __volatile__(""); - va = (u8 *)&f.cx; - __asm__ __volatile__("" : "=r"(va) : "0"(va)); - f.cy = arg2; - vb = va; - __asm__ __volatile__("" : "=r"(vb) : "0"(vb)); - p = D_80190118; - i = 0; - f.col[0].b = 0; - f.col[0].g = 0; - f.col[0].r = 0; - f.col[2].b = 0; - f.col[2].g = 0; - f.col[2].r = 0; - f.col[3].b = 0; - f.col[3].g = 0; - f.col[3].r = 0; - f.code = 0x50000000; - f.cz = arg3; - f.col[1].r = cv; - f.col[1].g = cv; - ((void (*)(s32, void *, void *))func_80149350)(node, va, vb); - - c = f.cx; - *(s16 *)(ent + 0x06) = c; - *(s32 *)(ent + 0x4C) = (s16)c; - c = f.cy; - *(s16 *)(ent + 0x0A) = c; - *(s32 *)(ent + 0x50) = (s16)c; - c = f.cz; - *(s16 *)(ent + 0x0E) = c; - *(s32 *)(ent + 0x54) = (s16)c; - func_800D20C0(&f.cx, f.a8, 7); - func_80017E68(&f.cx, f.m1); - func_800D23D0(f.a8); - RotMatrixYXZ(f.a8, f.m1); - - do { - f.v[0].x = (s8)*p++; - f.v[0].y = (s8)*p++; - f.v[2].x = (s8)*p++; - f.v[2].y = (s8)*p++; - f.v[3].x = (s8)*p++; - f.v[3].y = (s8)*p--; - func_80017758(f.v, f.m1); - } while ((i = i + 1) < 4); - - p = D_80190104; - gA = 0xA0; - cxv = (s16)f.cx; - f.col[1].g = gA; - gA = D_801269A4; - czv = (s16)f.cz; - f.col[1].b = 0x10; - f.col[1].r = 0x10; - f.pos[0] = gA - cxv; - i = 0; - f.v[3].y = 0; - f.v[2].y = 0; - f.v[0].y = 0; - f.pos[1] = D_801269A8 - (s16)f.cy; - f.pos[2] = D_801269AC - czv; - - do { - f.v[0].x = (s8)*p++; - f.v[0].z = (s8)*p++; - f.v[2].x = (s8)*p++; - f.v[2].z = (s8)*p++; - f.v[3].x = (s8)*p++; - f.v[3].z = (s8)*p--; - func_80017758(f.v, (void *)(ent + 0x38)); - } while ((i = i + 1) < 4); - - if (*(s32 *)(ent + 0x30) > 0) { - vc = (u8 *)&f.cx; - __asm__ __volatile__("" : "=r"(vc) : "0"(vc)); - mp = f.m1; - ap = mp; - __asm__ __volatile__("" : "=r"(ap) : "0"(ap)); - p = D_8019012C; - i = 0; - d = (s16)f.a8[0] >> 6; - f.cx += d; - f.cy += d; - f.cz += d; - func_80017E68(vc, ap); - f.cx = f.cy = f.cz = ((u32)*(s32 *)(ent + 0x30) >> 1) + D_80126CE0 * 0x20; - func_80017DC4(&f.cx, f.m2); - func_80048EAC(f.m2, mp); - f.v[3].z = 0; - f.v[2].z = 0; - f.v[0].z = 0; - cv2 = *(u8 *)(ent + 0x12); - f.col[1].b = 0x20; - f.col[1].r = 0x20; - f.col[3].b = 0; - f.col[3].r = 0; - f.col[2].b = 0; - f.col[2].r = 0; - f.col[0].b = 0; - f.col[0].r = 0; - f.col[3].g = 0; - f.col[2].g = 0; - f.col[0].g = 0; - f.col[1].g = cv2 + 0x60; - do { - f.v[0].x = (s8)*p++; - f.v[0].y = (s8)*p++; - f.v[2].x = (s8)*p++; - f.v[2].y = (s8)*p++; - f.v[3].x = (s8)*p++; - f.v[3].y = (s8)*p--; - func_80017758(f.v, f.m1); - } while ((i = i + 1) < 8); - } -} - - - - /* 0x20 bytes */ - - - - - - -s32 func_80167540(s32 arg0) { - - struct Node_80167540 *node; - struct Entity_80167540 *ent; - s32 v; - - node = ((struct Entity_80167540 *)arg0)->unk34; - if (node->unk0 == 1) { - if (((struct Entity_80167540 *)arg0)->unk12 > ((struct Entity_80167540 *)arg0)->unk10) { - if (((struct Entity_80167540 *)arg0)->unk1C > 0) { - ((struct Entity_80167540 *)arg0)->unk10 = (s16) (rand() & 0x30); - v = -0x30; - goto shared; - } - } else if (((struct Entity_80167540 *)arg0)->unk1C < 0) { - ((struct Entity_80167540 *)arg0)->unk10 = (s16) ((rand() & 0x30) + 0x40); - v = 0x30; -shared: - ((struct Entity_80167540 *)arg0)->unk1C = v; - } - ((struct Entity_80167540 *)arg0)->unk12 = (s16) (((struct Entity_80167540 *)arg0)->unk12 + ((struct Entity_80167540 *)arg0)->unk1C); - ((struct Entity_80167540 *)arg0)->mat = node->unk20->mat; - ((void (*)(struct Entity_80167540 *, s32, s32, s32))func_801670E4)(((struct Entity_80167540 *)arg0), 0, 0, 0); - ent = ((struct Entity_80167540 *(*)(s32, struct Entity_80167540 *, s16, s16, s32, s32, s32))func_80146A6C)(0xE, ((struct Entity_80167540 *)arg0), node->unk6, node->unkA, node->unkE, 0, 0); - if (ent != 0) { - ent->mat = node->unk20->mat; - } - if (((struct Entity_80167540 *)arg0)->unk34->unk4C->unk44 & 0x20) { - ((struct Entity_80167540 *)arg0)->unk30 = 0x600; - ((struct Entity_80167540 *)arg0)->unk2 = (u16) (((struct Entity_80167540 *)arg0)->unk2 + 1); - } - } else { - ((void(*)(struct Entity_80167540 *))func_80146C3C)(((struct Entity_80167540 *)arg0)); - } -} - - - -DEFINE_func_80167714() /* dedup: shared engine-core @0x80167714 (src/shared) */ - - -extern void (*D_801901E4[])(void); - -void func_801678B4(void *a0) { - D_801901E4[*(u16 *)((s32)a0 + 0x2)](); -} - - - -DEFINE_func_801678F0() /* dedup: shared engine-core @0x801678F0 (src/shared) */ - - - -extern void (*D_801901F0[])(void); - -void func_80167A9C(void *a0) { - D_801901F0[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80167AD8() /* dedup: shared engine-core @0x80167AD8 (src/shared) */ - -// @class: regalloc-order -// @stuck: none — MATCH expected; mirrors already-matched sibling func_8016A290 (same 3-loop tail), swapping the inline matrix-setup for a func_80168070 call + constant color block. - -#include "common.h" - - - - - -s32 func_80167AE0(s32 param_1, s32 param_2, s32 param_3) { - extern void func_80168070(s32 param_1, s16 *param_2, s16 *param_3, void *param_4); - extern s32 func_80017758(void *a0, void *a1); - extern u8 D_801902FC; - extern u8 D_80190310[]; - - struct Fr_80167AE0 fr; - u8 *p; - s32 i; - register s32 t __asm__("$2"); - register s32 zr __asm__("$0"); - s32 flags; - - func_80168070(param_1, ((s16 *)param_2), ((s16 *)param_3), fr.matrix); - - fr.v[3].z = 0; - fr.v[2].z = 0; - fr.v[0].z = 0; - fr.v[1].z = 0; - fr.v[1].y = 0; - fr.v[1].x = 0; - flags = D_800B99DA; - if (flags & 1) { - fr.col[1].r = 0xa0; - } else if (flags & 2) { - fr.col[1].r = 0xc0; - } else { - fr.col[1].r = 0x80; - } - - p = ((u8 *)&D_801902FC); - fr.col[0].b = 0; - fr.col[0].g = 0; - fr.col[0].r = 0; - fr.col[2].b = 0; - fr.col[2].g = 0; - fr.col[2].r = 0; - fr.col[3].b = 0; - fr.col[3].g = 0; - fr.col[3].r = 0; - fr.code = 0x50000000; - fr.col[1].b = fr.col[1].r >> 2; - fr.col[1].g = fr.col[1].r >> 2; - i = 0; -L1: - fr.v[0].x = (s8)*p++; - fr.v[0].y = (s8)*p++; - fr.v[2].x = (s8)*p++; - fr.v[2].y = (s8)*p++; - fr.v[3].x = (s8)*p++; - fr.v[3].y = (s8)*p--; - func_80017758(fr.v, fr.matrix); - t = i + 1; - i = t + zr; - if ((s16)t < 4) goto L1; - - fr.v[3].y = 0; - fr.v[2].y = 0; - fr.v[0].y = 0; - fr.v[1].y = 0; - fr.v[1].x = 0; - fr.v[1].z = -0x20; - p = D_80190310; - i = 0; -L2: - fr.v[0].x = (s8)*p++; - fr.v[0].z = (s8)*p++; - fr.v[2].x = (s8)*p++; - fr.v[2].z = (s8)*p++; - fr.v[3].x = (s8)*p++; - fr.v[3].z = (s8)*p--; - func_80017758(fr.v, fr.matrix); - if ((s16)i == 1) { - fr.v[1].z = 0x20; - p += 2; - } - t = i + 1; - i = t + zr; - if ((s16)t < 4) goto L2; - - p += 2; - fr.v[0].x = 0; - fr.v[0].z = -0x20; - fr.col[0].r = fr.col[1].r; - fr.col[0].b = fr.col[1].g; - fr.col[0].g = fr.col[1].g; - i = 0; -L3: - fr.v[2].x = (s8)*p++; - fr.v[2].z = (s8)*p++; - fr.v[3].x = (s8)*p++; - fr.v[3].z = (s8)*p++; - func_80017758(fr.v, fr.matrix); - t = i + 1; - i = t + zr; - if ((s16)t < 2) goto L3; -} - - - - -// @class: schedule -// @stuck: none — MATCH. The between-loops f1/f2 store-swap (0x55/0x56) is fixed by writing f2's assign first, then the chained `buf[0x44] = buf[0x45] = buf[0x45] << 1;` — the chain keeps f1's read first (read order fixed by -0x12 in $v0) while emitting f2's store (0x56) ahead of the f1/f0 pair (0x55,0x54). 173/173. - -extern void func_80168070(s32 a0, s16 *a1, s16 *a2, void *a3); -extern u16 D_800B99DA; -extern u8 D_80190150[]; -extern u8 D_80190164[]; - -s32 func_80167DBC(s32 arg0, s32 arg1, s32 arg2) { - u8 buf[0x54]; - u8 *p; - s16 i; - - func_80168070(arg0, ((s16 *)arg1), ((s16 *)arg2), buf); - - *(s16 *)(buf + 0x3C) = 0; - *(s16 *)(buf + 0x34) = 0; - *(s16 *)(buf + 0x24) = 0; - *(s16 *)(buf + 0x2C) = 0; - *(s16 *)(buf + 0x2A) = 0; - *(s16 *)(buf + 0x28) = 0; - if (D_800B99DA & 1) { - buf[0x46] = 0x58; - } else { - buf[0x46] = 0x48; - } - buf[0x45] = buf[0x46] >> 2; - buf[0x44] = buf[0x45]; - if (((u8 (*)(s32))func_80029178)(0x81) != 0) { - buf[0x45] = buf[0x45] << 2; - buf[0x46] = buf[0x46] >> 1; - } - - p = D_80190150; - buf[0x42] = 0; - buf[0x41] = 0; - buf[0x40] = 0; - buf[0x4A] = 0; - buf[0x49] = 0; - buf[0x48] = 0; - buf[0x4E] = 0; - buf[0x4D] = 0; - buf[0x4C] = 0; - *(s32 *)(buf + 0x50) = 0x50000000; - - for (i = 0; i < 4; i++) { - *(s16 *)(buf + 0x20) = (s8)*p++; - *(s16 *)(buf + 0x22) = (s8)*p++; - *(s16 *)(buf + 0x30) = (s8)*p++; - *(s16 *)(buf + 0x32) = (s8)*p++; - *(s16 *)(buf + 0x38) = (s8)*p++; - *(s16 *)(buf + 0x3A) = (s8)*p--; - func_80017758(buf + 0x20, buf); - } - - p = D_80190164; - *(s16 *)(buf + 0x2C) = -0x12; - *(s16 *)(buf + 0x3A) = 0; - *(s16 *)(buf + 0x32) = 0; - *(s16 *)(buf + 0x22) = 0; - *(s16 *)(buf + 0x2A) = 0; - *(s16 *)(buf + 0x28) = 0; - buf[0x46] = buf[0x46] << 1; - buf[0x44] = buf[0x45] = buf[0x45] << 1; - - for (i = 0; i < 4; i++) { - *(s16 *)(buf + 0x20) = (s8)*p++; - *(s16 *)(buf + 0x24) = (s8)*p++; - *(s16 *)(buf + 0x30) = (s8)*p++; - *(s16 *)(buf + 0x34) = (s8)*p++; - *(s16 *)(buf + 0x38) = (s8)*p++; - *(s16 *)(buf + 0x3C) = (s8)*p--; - if (i == 2) { - buf[0x4E] = buf[0x46]; - buf[0x4D] = buf[0x44]; - buf[0x4C] = buf[0x4D]; - } else if (i == 3) { - buf[0x4E] = 0; - buf[0x4D] = 0; - buf[0x4C] = buf[0x4D]; - buf[0x42] = buf[0x46]; - buf[0x41] = buf[0x44]; - buf[0x40] = buf[0x44]; - } - func_80017758(buf + 0x20, buf); - } -} - - -DEFINE_func_80168070() /* dedup: shared engine-core @0x80168070 (src/shared) */ - - -extern s32 func_80029178(s32 arg); -extern s32 func_80166F58(s32, s32, s32, s32); - -void func_801681FC(s32 param_1) { - - extern u8 D_801901A8[]; - extern u8 D_80190178[]; - extern u8 D_80190179[]; - s32 iVar3; - s32 a3; - - *(s16 *)(param_1 + 0x28) = func_80029178(0x81) & 0xFF; - *(s32 *)(param_1 + 0x30) = D_801901A8[*(s32 *)(param_1 + 0x2C)]; - iVar3 = (*(s32 *)(param_1 + 0x2C) << 0x11) >> 0x10; - *(s16 *)(param_1 + 0x2A) = D_80190178[iVar3]; - *(s32 *)(param_1 + 0x1C) = D_80190179[iVar3]; - a3 = *(s32 *)(param_1 + 0x2C) & 1; - *(s32 *)(param_1 + 0x2C) = a3; - ((void (*)(s32, s32, s32, s32))func_80166F58)(param_1, 4, 4, a3); - *(s16 *)(param_1 + 2) = *(s16 *)(param_1 + 2) + 1; -} - - -DEFINE_func_8016829C() /* dedup: shared engine-core @0x8016829C (src/shared) */ - -DEFINE_func_80168328() /* dedup: shared engine-core @0x80168328 (src/shared) */ - -DEFINE_func_801683D8() /* dedup: shared engine-core @0x801683D8 (src/shared) */ - - -extern s32 func_80166F58(s32, s32, s32, s32); - -void func_80168430(s32 param_1) { - - extern u8 D_801901B4[]; - extern u8 D_8019018C[]; - extern u8 D_8019018D[]; - s32 iVar1; - - *(s32 *)(param_1 + 0x30) = D_801901B4[*(s32 *)(param_1 + 0x2C)]; - iVar1 = (*(s32 *)(param_1 + 0x2C) << 0x11) >> 0x10; - *(s16 *)(param_1 + 0x2A) = D_8019018C[iVar1]; - *(s32 *)(param_1 + 0x1C) = D_8019018D[iVar1]; - ((void (*)(s32, s32, s32, s32))func_80166F58)(param_1, 5, 0x3B, 2); - *(s16 *)(param_1 + 2) = *(s16 *)(param_1 + 2) + 1; -} - - -DEFINE_func_801684B4() /* dedup: shared engine-core @0x801684B4 (src/shared) */ - -DEFINE_func_80168540() /* dedup: shared engine-core @0x80168540 (src/shared) */ - -DEFINE_func_801685EC() /* dedup: shared engine-core @0x801685EC (src/shared) */ - -DEFINE_func_80168640() /* dedup: shared engine-core @0x80168640 (src/shared) */ - -DEFINE_func_80168664() /* dedup: shared engine-core @0x80168664 (src/shared) */ - - -extern void (*D_80190208[])(void); - -void func_80168744(void *a0) { - D_80190208[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80168780() /* dedup: shared engine-core @0x80168780 (src/shared) */ - -DEFINE_func_801687CC() /* dedup: shared engine-core @0x801687CC (src/shared) */ - -// @class: decl-conflict (reconcile) — MATCH (108 ins), real-TU verified via rtu_match -// @crack: The wave-2 "8-residual SCHEDULE" note was a STALE-OBJECT / isolation phantom (§42b): -// in the real TU the draft NOCOMPILEs — DEFINE_func_801687CC() (split line ~6757) expands -// `extern void func_80168828(void);` right before the def, so `void func_80168828(s32 param_1)` -// is a HARD `conflicting types` error (cc1 exit 33). RECONCILE-FIRST fix (sweep-safe, lives -// entirely in the def — no //@EDIT, no macro edit): declare the fn `(void)` and capture a0 via -// register s32 a0v __asm__("$4"); s32 param_1 = a0v; -// The register-var binds incoming $a0; copying it into a NORMAL pseudo (live across the calls) -// makes gcc allocate param_1 to a callee-saved reg, emitting the target's `addu $s1,$a0,$zero` -// at idx2. NOTE: a DIRECT `register s32 param_1 __asm__("$4")` FAILS (param_1 stays in the -// call-clobbered $a0 → 100-off). With this reconcile, gcc's natural schedule places the CSE'd -// `li $v1,0x40` at idx15 with ZERO extra levers — the §42a lever-4 consumer-block reorder was -// never needed. The $v1 pin (register c40 __asm__("$3")) is still load-bearing (else 0x40 folds -// to a $v0 immediate). 134-overlay family exemplar: only D_801901F8 differs -> banks x134. -#include "common.h" - - - -void func_80168828() -{ - extern s32 func_80017DC4(void *a0, void *a1); - extern void func_80049CAC(s32 a0, s32 a1); - extern void func_800173BC(void *a0, void *a1); - extern u16 D_801901F8[]; - - - register s32 a0v __asm__("$4"); - s32 param_1 = a0v; - Thing_80168828_80168828 thing; - s16 matA[16]; - s16 matB[16]; - s16 svec[4]; - u16 *p; - short i; - register s32 c40 __asm__("$3"); /* $v1: hold the CSE'd 0x40 (else gcc folds to $v0 immediate) */ - - c40 = 0x40; - thing.f04 = 2; - thing.f0c = 0x24; - thing.f14 = 0x28; - thing.f08 = -3; - thing.f10 = 3; - thing.f02 = 0; - thing.f00 = 0; - thing.f12 = 0; - thing.f0a = 0; - thing.f18 = c40; - thing.f19 = c40; - thing.f22 = c40; - thing.f1e = c40; - thing.f1a = 0x10; - thing.f20 = 0xff; - thing.f1c = 0xff; - thing.f21 = 0xc0; - thing.f1d = 0xc0; - thing.f24 = 0x50000000; - - svec[0] = *(u16 *)(param_1 + 6); - svec[1] = *(u16 *)(param_1 + 0xA); - svec[2] = *(u16 *)(param_1 + 0xE); - func_80017E68(svec, matA); - - svec[0] = svec[1] = svec[2] = (*(s32 *)(param_1 + 0x1C) << 11) + 0x1000; - ((void (*)(void *, void *))func_80017DC4)(svec, matA); - - svec[0] = *(u16 *)(param_1 + 0x12); - svec[1] = *(u16 *)(param_1 + 0x16); - svec[2] = *(u16 *)(param_1 + 0x1A); - RotMatrixYXZ(svec, matB); - - func_80048EAC(matA, matB); - - svec[1] = 0; - p = D_801901F8; - for (i = 0; i < 4; i++) { - svec[0] = *p++; - svec[2] = *p++; - ((void (*)(void *, void *))func_80049CAC)(svec, matA); - func_80048EAC(matB, matA); - func_800173BC(&thing, matA); - } -} - - - - -extern void (*D_80190210[])(void); - -void func_801689D8(void *a0) { - D_80190210[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80168A14() /* dedup: shared engine-core @0x80168A14 (src/shared) */ - -DEFINE_func_80168A88() /* dedup: shared engine-core @0x80168A88 (src/shared) */ - - -extern void (*D_80190218[])(void); - -void func_80168AA8(void *a0) { - D_80190218[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80168AE4() /* dedup: shared engine-core @0x80168AE4 (src/shared) */ - - -extern void func_80168BDC(s32 a0, s32 a1, s32 a2, s32 a3); -/* Conform to the TU's canonical decl (jr_8015C32C.c:5546 `extern void func_80146C3C(void);`) - * and cast at the use site — same escape the TU already uses at :6388. Codegen-neutral. */ -extern void func_80146C3C(void); - -void func_80168B70(s32 a0) { - s32 *p = (s32 *)a0; - if (--p[0x1C / 4] != -1) { - func_80168BDC(a0, 9, 3, 1); - } else { - func_80168BDC(a0, 9, 2, 1); - ((void (*)(s32))func_80146C3C)(a0); - } -} - - -DEFINE_func_80168BDC() /* dedup: shared engine-core @0x80168BDC (src/shared) */ - - -extern void (*D_80190220[])(void); - -void func_80168D58(void *a0) { - D_80190220[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80168D94() /* dedup: shared engine-core @0x80168D94 (src/shared) */ - -DEFINE_func_80168EC4() /* dedup: shared engine-core @0x80168EC4 (src/shared) */ - -DEFINE_func_80168F40() /* dedup: shared engine-core @0x80168F40 (src/shared) */ - - -extern void (*D_80190228[])(void); - -void func_8016901C(void *a0) { - D_80190228[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80169058() /* dedup: shared engine-core @0x80169058 (src/shared) */ - -DEFINE_func_801691B8() /* dedup: shared engine-core @0x801691B8 (src/shared) */ - -DEFINE_func_80169228() /* dedup: shared engine-core @0x80169228 (src/shared) */ - - -extern void (*D_80190230[])(void); - -void func_801693CC(void *a0) { - D_80190230[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80169408() /* dedup: shared engine-core @0x80169408 (src/shared) */ - -DEFINE_func_8016951C() /* dedup: shared engine-core @0x8016951C (src/shared) */ - -DEFINE_func_80169584() /* dedup: shared engine-core @0x80169584 (src/shared) */ - -DEFINE_func_801696D8() /* dedup: shared engine-core @0x801696D8 (src/shared) */ - - -extern void (*D_80190238[])(void); - -void func_80169830(void *a0) { - D_80190238[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8016986C() /* dedup: shared engine-core @0x8016986C (src/shared) */ - -DEFINE_func_801699D0() /* dedup: shared engine-core @0x801699D0 (src/shared) */ - -DEFINE_func_80169A4C() /* dedup: shared engine-core @0x80169A4C (src/shared) */ - - -extern void (*D_801902EC[])(void); - -void func_80169B80(void *a0) { - D_801902EC[*(u16 *)((s32)a0 + 0x2)](); -} - - - - -extern void func_800D2318(void); -extern void RotMatrixYXZ(void *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_800D222C(void *a0, void *a1, s32 a2); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern s32 ratan2(s32 a0, s32 a1); -extern void func_80048D9C(void *a0, void *a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern void func_80146C3C(void); - -void func_80169BBC(s32 arg0) { - - extern s32 D_801269A4; - extern s32 D_801269A8; - extern s32 D_801269AC; - extern u16 D_80190240[]; - extern u8 D_801902B0[]; - extern u8 D_801902E0[]; - extern u8 D_801E79B8[]; - u16 rot[4]; - s16 vec[4]; - s32 pos[4]; - s16 mtx[16]; - s32 p1; - s32 s2; - - func_800D2318(); - rot[0] = *(u16 *)(arg0 + 0x12); - rot[1] = *(u16 *)(arg0 + 0x16); - rot[2] = 0; - RotMatrixYXZ(rot, mtx); - vec[0] = 0; - vec[1] = -2; - vec[2] = -0x14; - ApplyMatrixSV(mtx, vec, vec); - *(u16 *)(arg0 + 6) = *(u16 *)(arg0 + 6) + (u16)vec[0]; - *(u16 *)(arg0 + 0xA) = *(u16 *)(arg0 + 0xA) + (u16)vec[1]; - *(u16 *)(arg0 + 0xE) = *(u16 *)(arg0 + 0xE) + (u16)vec[2]; - p1 = func_80146A6C(9, (void *)arg0, *(s16 *)(arg0 + 6), *(s16 *)(arg0 + 0xA), - *(s16 *)(arg0 + 0xE), 0, 0); - if (p1 != 0) { - *(u16 *)(p1 + 0x12) = rot[0]; - *(u16 *)(p1 + 0x16) = rot[1]; - *(u16 *)(p1 + 0x1A) = rot[2]; - } - func_80146A6C(0xC, (void *)arg0, *(s16 *)(arg0 + 6), *(s16 *)(arg0 + 0xA), - *(s16 *)(arg0 + 0xE), 0, 0); - s2 = func_800D222C((void *)arg0, D_801902E0, 0x17); - if (s2 != 0) { - *(s32 *)(arg0 + 0x20) = s2; - rot[0] = rot[0] + D_80190240[*(s32 *)(arg0 + 0x30)]; - rot[1] = rot[1] - 0x400; - RotMatrixYXZ(rot, mtx); - pos[0] = D_801269A4 - *(s16 *)(arg0 + 6); - pos[1] = D_801269A8 - *(s16 *)(arg0 + 0xA); - pos[2] = D_801269AC - *(s16 *)(arg0 + 0xE); - ApplyTransposeMatrixLV(mtx, pos, pos); - rot[2] = -ratan2(pos[0], pos[1]); - vec[0] = 0x400; - vec[1] = -0x400; - vec[2] = 0; - RotMatrixYXZ(vec, mtx); - *(s32 *)(s2 + 0x34) = (s32)D_801E79B8; - RotMatrixYXZ(rot, D_801E79B8); - func_80048D9C(D_801E79B8, mtx); - *(u16 *)(s2 + 0x18) = 0x5000; - *(u16 *)(s2 + 0x1A) = 0x2000; - *(s32 *)(s2 + 4) = *(s32 *)(s2 + 4) | 0xC000140; - func_80128EA8(s2, arg0 + 0x24, (s32)D_801902B0); - *(u16 *)(arg0 + 2) = *(u16 *)(arg0 + 2) + 1; - } else { - ((void (*)(s32))func_80146C3C)(arg0); - } -} - - -DEFINE_func_80169E44() /* dedup: shared engine-core @0x80169E44 (src/shared) */ - - -extern void (*D_801902F4[])(void); - -void func_80169F00(void *a0) { - D_801902F4[*(u16 *)((s32)a0 + 0x2)](); -} - - - -// @class: plumbing -// @stuck: none — MATCH (expected; simple straight-line + single branch, one call-crossing local in $s0) - -extern void func_800D1FC8(s32 a0, s32 a1); -extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern void func_80146C3C(void); - -extern char D_801902A4[]; -extern char D_80190264[]; - -void func_80169F3C(int param_1) -{ - int iVar1; - - ((int (*)(int, int))func_800D1FC8)(param_1, 6); - iVar1 = func_800D21C4(param_1, D_801902A4, 0x16); - if (iVar1 != 0) { - *(int *)(param_1 + 0x20) = iVar1; - *(short *)(iVar1 + 0x1a) = 0x2000; - *(short *)(iVar1 + 0x18) = 0x2000; - *(char *)(iVar1 + 0x26) = 0x60; - *(char *)(iVar1 + 0x25) = 0x60; - *(char *)(iVar1 + 0x24) = 0x60; - *(unsigned int *)(iVar1 + 4) = *(unsigned int *)(iVar1 + 4) | 0x50000000; - ((void (*)(int, int, void *))func_80128EA8)(iVar1, param_1 + 0x24, D_80190264); - *(short *)(param_1 + 2) = *(short *)(param_1 + 2) + 1; - } else { - ((void (*)(int))func_80146C3C)(param_1); - } -} - - -DEFINE_func_80169FE0() /* dedup: shared engine-core @0x80169FE0 (src/shared) */ - - -extern void (*D_8019032C[])(void); - -void func_8016A020(void *a0) { - D_8019032C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8016A05C() /* dedup: shared engine-core @0x8016A05C (src/shared) */ - -DEFINE_func_8016A08C() /* dedup: shared engine-core @0x8016A08C (src/shared) */ - -DEFINE_func_8016A1CC() /* dedup: shared engine-core @0x8016A1CC (src/shared) */ - -// @class: regalloc-order -// @stuck: none — MATCH (284 ins). Loop-counter biv update: pinned $v0 temp + $0-add opaque copy (i = t + zr) forces the target's 2-insn `addiu v0,s1,1; addu s1,v0,zero` and keeps CSE from rewriting the (s16)t test to read s1. - -#include "common.h" - - - - - -void func_8016A290(s32 param_1, void *param_2, void *param_3) { - extern u8 D_801902FC; - extern u8 D_80190310[]; - - struct Fr_8016A290 fr; - u8 *p; - s32 i; - register s32 t __asm__("$2"); - register s32 zr __asm__("$0"); - s32 flags; - s32 iVar3; - - iVar3 = *(s32 *)(param_1 + 0x34); - - fr.center.x = (*((s16 *)param_2) + *((s16 *)param_3)) >> 1; - fr.center.y = (((s16 *)param_2)[1] + ((s16 *)param_3)[1]) >> 1; - fr.center.z = (((s16 *)param_2)[2] + ((s16 *)param_3)[2]) >> 1; - ((void(*)(s32, void *, void *))func_80149350)(iVar3, &fr.center, &fr.center); - - *(u16 *)(param_1 + 0x6) = *(u16 *)&fr.center.x; - *(u16 *)(param_1 + 0xA) = *(u16 *)&fr.center.y; - *(u16 *)(param_1 + 0xE) = *(u16 *)&fr.center.z; - func_800D20C0(&fr.center, &fr.diff, 8); - func_80017E68(&fr.center, fr.mtx); - - fr.diff.x = *(u16 *)((s16 *)param_3) - *(u16 *)((s16 *)param_2); - fr.diff.y = *(u16 *)(((s16 *)param_3) + 1) - *(u16 *)(((s16 *)param_2) + 1); - fr.diff.z = *(u16 *)(((s16 *)param_3) + 2) - *(u16 *)(((s16 *)param_2) + 2); - ((void(*)(s32, void *, void *))ApplyMatrixSV)(*(s32 *)(iVar3 + 0x20) + 0x34, &fr.diff, &fr.diff); - func_800D23D0(&fr.diff); - RotMatrixYXZ(&fr.diff, fr.mtx); - - fr.pos[0] = D_801269A4 - fr.center.x; - fr.pos[1] = D_801269A8 - fr.center.y; - fr.pos[2] = D_801269AC - fr.center.z; - ApplyTransposeMatrixLV(fr.mtx, fr.pos, fr.pos); - fr.diff.z = -ratan2(fr.pos[0], fr.pos[1]); - RotMatrixYXZ(&fr.diff, fr.mtx); - - fr.v[3].z = 0; - fr.v[2].z = 0; - fr.v[0].z = 0; - fr.v[1].z = 0; - fr.v[1].y = 0; - fr.v[1].x = 0; - flags = D_800B99DA; - if (flags & 1) { - fr.col[1].r = *(s32 *)(param_1 + 0x30) + 0x20; - } else if (flags & 2) { - fr.col[1].r = *(s32 *)(param_1 + 0x30) + 0x40; - } else { - fr.col[1].r = *(s32 *)(param_1 + 0x30); - } - - p = ((u8 *)&D_801902FC); - fr.col[0].b = 0; - fr.col[0].g = 0; - fr.col[0].r = 0; - fr.col[2].b = 0; - fr.col[2].g = 0; - fr.col[2].r = 0; - fr.col[3].b = 0; - fr.col[3].g = 0; - fr.col[3].r = 0; - fr.code = 0x50000000; - fr.col[1].b = fr.col[1].r >> 3; - fr.col[1].g = fr.col[1].r >> 3; - i = 0; -L1: - fr.v[0].x = (s8)*p++; - fr.v[0].y = (s8)*p++; - fr.v[2].x = (s8)*p++; - fr.v[2].y = (s8)*p++; - fr.v[3].x = (s8)*p++; - fr.v[3].y = (s8)*p--; - func_80017758(fr.v, fr.mtx); - t = i + 1; - i = t + zr; - if ((s16)t < 4) goto L1; - - fr.v[3].y = 0; - fr.v[2].y = 0; - fr.v[0].y = 0; - fr.v[1].y = 0; - fr.v[1].x = 0; - fr.v[1].z = -0x20; - p = D_80190310; - i = 0; -L2: - fr.v[0].x = (s8)*p++; - fr.v[0].z = (s8)*p++; - fr.v[2].x = (s8)*p++; - fr.v[2].z = (s8)*p++; - fr.v[3].x = (s8)*p++; - fr.v[3].z = (s8)*p--; - func_80017758(fr.v, fr.mtx); - if ((s16)i == 1) { - fr.v[1].z = 0x20; - p += 2; - } - t = i + 1; - i = t + zr; - if ((s16)t < 4) goto L2; - - p += 2; - fr.v[0].x = 0; - fr.v[0].z = -0x20; - fr.col[0].r = fr.col[1].r; - fr.col[0].b = fr.col[1].g; - fr.col[0].g = fr.col[1].g; - i = 0; -L3: - fr.v[2].x = (s8)*p++; - fr.v[2].z = (s8)*p++; - fr.v[3].x = (s8)*p++; - fr.v[3].z = (s8)*p++; - func_80017758(fr.v, fr.mtx); - t = i + 1; - i = t + zr; - if ((s16)t < 2) goto L3; -} - - - - -extern void (*D_80190338[])(void); - -void func_8016A700(void *a0) { - D_80190338[*(u16 *)((s32)a0 + 0x2)](); -} - - -// Seed for func_8016A73C (ov_SC01_077 exemplar). Overlay-local struct guessed. - - - - - -s32 func_8016A73C(s32 arg0) { - int sp10[8]; - short v[3]; /* sp30, sp32, sp34 */ - int r; - short tmp; - - r = ((int(*)())rand)(); - v[1] = ((r & 0x7F) << 4) + 0x400; - v[0] = ((unsigned)(r & 0x7F00) >> 5) - 0x300; - v[2] = 0; - ((void(*)(short *, void *))RotMatrixYXZ)(v, sp10); - ((void(*)(int, void *))func_80048EAC)(((Obj_8016A73C *)arg0)->unk34->unk34->unk20 + 0x34, sp10); - v[0] = 0; - v[1] = 0; - v[2] = -0x50; - ((int(*)(void *, short *, short *))ApplyMatrixSV)(sp10, v, v); - - ((Obj_8016A73C *)arg0)->mat = (*(Mat_8016A73C*)&D_800AE620); - - tmp = ((Obj_8016A73C *)arg0)->unk6 + v[0]; - ((Obj_8016A73C *)arg0)->unk6 = tmp; - ((Obj_8016A73C *)arg0)->mat.w[5] = tmp; - tmp = ((Obj_8016A73C *)arg0)->unkA + v[1]; - ((Obj_8016A73C *)arg0)->unkA = tmp; - ((Obj_8016A73C *)arg0)->mat.w[6] = tmp; - tmp = ((Obj_8016A73C *)arg0)->unkE + v[2]; - ((Obj_8016A73C *)arg0)->unkE = tmp; - ((Obj_8016A73C *)arg0)->unk2 = ((Obj_8016A73C *)arg0)->unk2 + 1; - ((Obj_8016A73C *)arg0)->mat.w[7] = tmp; -} - - - -DEFINE_func_8016A890() /* dedup: shared engine-core @0x8016A890 (src/shared) */ - - -// @class: struct -// @stuck: none — expect MATCH (single-call leaf, stack-struct prim build + averaging writeback) - -DEFINE_func_8016A8FC() /* dedup: shared engine-core @0x8016A8FC (src/shared) */ - - -DEFINE_func_8016AA50() /* dedup: shared engine-core @0x8016AA50 (src/shared) */ - - -extern void (*D_80190380[])(void); - -void func_8016AB30(void *a0) { - D_80190380[*(u16 *)((s32)a0 + 0x2)](); -} - diff --git a/src/ov_SC04_019/ov_SC04_019_jr_8016AB6C.c b/src/ov_SC04_019/ov_SC04_019_jr_8016AB6C.c deleted file mode 100644 index 0fbe0b911..000000000 --- a/src/ov_SC04_019/ov_SC04_019_jr_8016AB6C.c +++ /dev/null @@ -1,4449 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ - /* 12-byte sub-table record (stride 0xC) */ - /* 0x20 bytes */ -extern void func_801458E0(void); -extern s32 D_800AE6AC; -extern s32 D_800AE6B0; -extern s16 D_800B9A0A; -extern u8 D_80078E50; -extern void func_800D185C(u8 *a0); -extern void func_801458E8(void); -extern s32 func_80029504(void); -extern void func_80145B24(void); -extern u8 D_8018F74C; -extern u8 D_8018F6BC; -extern u8 D_8018F698; -extern u8 D_8018F674; -extern u8 D_8018F728; -extern u8 D_8018F704; -extern u8 D_8018F6E0; -extern u8 D_8018F650; -extern void func_80145934(void); -extern u8 D_8018F7DC; -extern u8 D_8018F7B8; -extern u8 D_8018F794; -extern u8 D_8018F770; -extern void func_80145A2C(void); -extern s32 func_800291DC(s32); -extern void func_800291C8(s32, s32); -extern void func_80162120(void); -extern void func_80029124(s32, s32); -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); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_80145BF8(void); -extern s32 func_800291B4(s32 arg); -extern void func_800291A0(s32, s32); -extern void func_80145C54(void); -extern s32 func_80145CEC(); -extern s32 func_80029178(s32 arg); -extern void func_80146014(s32 a0); -extern unsigned char D_8018EBD4[]; -extern unsigned char D_8018EC04[]; -extern unsigned char D_8018EC54[]; -extern unsigned char D_8018EC84[]; -extern unsigned char D_8018ECB4[]; -extern void func_80145EE8(s32 param_1); -extern void MoveImage(void *a0, s32 a1, s32 a2); -extern void func_80146074(void); -extern s32 func_80146128(void); -extern void func_80146360(void); -extern void func_801463A0(); -extern void func_8014607C(void); -extern s32 *D_80126B78; -extern u8 D_80078EC1; -extern s32 D_80078EC8; -extern s32 D_80126B9C; -extern s32 D_8011F730; -extern u16 D_801152B8; -extern u16 D_8012693A; -extern u8 D_80126BE0[]; -extern u8 D_801150F0[]; -extern void *memcpy(void *dst, const void *src, u32 n); -extern void func_80146FC4(s32 a0); -extern void func_80150A70(s32 a0); -extern void func_80147098(s32 *a0); -extern void func_8014A638(s32 arg0); -extern s32 func_80155458(s32 a0); -extern s32 func_80029104(void); -extern void func_80029344(void); -extern void func_8014ADE0(s32 a0); -extern void func_8014B350(s32 a0); -extern void func_8014B7A4(s16 *param_1); -extern s32 func_80161D58(s32 a0); -extern void func_80161A90(s32 a0); -extern void func_8014B504(u16 *a0); -extern void func_80149BEC(s32 a0); -extern void func_8014B5D0(s32 *a0); -extern void func_8014C99C(u8 *a0); -extern void func_8014B190(s32 s0); -extern void func_80148648(s32 a0, s32 a1); -extern s32 func_80149228(s32 a0); -extern void func_8014A59C(s32 a0); -extern void func_8016F14C(void *a0); -extern void func_80154418(void *a0); -extern void func_80154BE4(s32 a0); -extern void func_80165694(s32 arg0); -extern void func_801654A8(s32 a0); -extern void func_8014A680(s32 a0); -extern void func_8014A6A8(s32 a0); -extern void func_8014A71C(s32 a0); -extern void func_80172588(s32 *a0); -extern void func_801473DC(s32 *a0); -extern void func_80015978(s32 a0, s32 *a1); -extern void (*D_8018ED04[])(void *); -extern u8 D_80126BA4; -extern s32 D_80127098; -extern s32 D_80127094; -extern s32 D_80127090; -extern void func_80146534(void); -extern void func_8001D074(s32 a0, s32 a1); -extern void func_80146554(void); -extern void func_80146578(void); -extern void func_8001CFDC(s32, s32); -extern void func_8014659C(void); -extern void func_8001D074(s32, s32); -extern void func_801465C0(void); -extern void func_801465E4(void); -extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); -extern s32 D_8011F9D0; -extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); -extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 D_8011F750; -extern s32 D_8011F754; -extern u8 * func_801468C8(s32 arg0, u8 arg1); -extern s32 D_8011D030; -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); -extern s32 func_80146B9C(void *a0); -extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); -extern u16 D_8011DA28; -extern s32 func_80146B9C(void * arg0); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80146CA0(void *a0); -extern void func_80146CB4(void *a0); -extern void func_80146CC8(s32 a0); -extern void func_80146D30(s32 a0); -extern void func_80146D80(s32 *a0); -extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80146D90(s32 a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); -extern void func_80146E90(s32 *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80015954(s32 a0, s32 a1); -extern void func_80149374(s32 a0, s32 a1); -extern void func_80146F58(s32 a0, s32 a1); -extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 func_8012A68C(void); -extern s16 func_8012A758(void); -extern void func_8004978C(s16 *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern u8 D_80126DB0[]; -extern u16 D_80126DB6; -extern void func_8014704C(s32 *a0); -extern s32 func_80147054(void *a0); -extern void func_80147060(u8 * a0); -extern void func_8014706C(void *arg0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80147084(s32 *a0); -extern void func_8014708C(void *arg0); -extern s32 func_801470A0(void *a0); -extern void func_801470AC(s32 *a0); -extern void func_801470B4(s32 arg0); -extern void func_801470C0(s32 a0); -extern void func_80147118(s32 a0); -extern s16 D_80126BB8; -extern s16 D_80126BBA; -extern s16 D_80126BBC; -extern void func_80147264(s32 a0); -extern void func_80147290(void); -extern void func_801472B4(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void *D_8012707C; -extern void func_801472DC(void); -extern void func_801472F0(void *a0); -extern void func_80147364(u16, s32); -extern void func_80147300(u16 arg0); -extern void func_80147324(s32 arg0); -extern void func_801473EC(s32 *a0); -extern void func_80147460(s32 a0); -extern void func_80147514(); -extern void func_80147628(s32 a0); -extern void func_80147478(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); -extern s32 func_800129CC(s32 a0, s32 a1); -extern void func_80147514(s32 arg0); -extern void func_80013F3C(s32 a0); -extern void func_80012558(s32 a0, s32 a1); -extern void func_800126C4(s32 a0, s32 a1); -extern void func_800123F0(s32 a0, s32 a1); -extern void func_80147718(s32 a0); -extern void func_80147788(void *a0, s32 a1); -extern void func_801477A8(void *a0, s32 a1); -extern void func_801477C8(void *a0, s32 a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80147814(s32 a0, s32 a1); -extern void func_80147928(int a0, int a1); -extern void func_8014799C(int a0, int a1); -extern void func_80147A10(int a0, int a1); -extern void func_80147860(int a0, int a1, int a2, int a3); -extern void func_80147948(s32 a0, s32 a1, s32 a2); -extern void func_801479BC(s32 a0, s32 a1, s32 a2); -extern void func_80147A30(s32 a0, s32 a1, s32 a2); -extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147948(int a0, int a1, int a2); -extern void func_801479BC(int a0, int a1, int a2); -extern void func_80147A30(int a0, int a1, int a2); -extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147A84(s32 arg0); -extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147AAC(s32 arg0); -extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80147B5C(s32 a0, void *a1); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern void func_80147B18(s32 a0); -extern void func_80147B5C(s32 arg0, void *arg1); -extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147DC0(s32 a0, s32 a1); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147F50(s32 arg0); -extern void func_80148038(s32 a0, s32 a1); -extern s32 ratan2(s32 a0, s32 a1); -extern s32 csqrt(s32 a0); -extern s32 func_80012A60(s32 a0, s32 a1); -extern void func_80148094(int param_1, short *param_2, int *param_3); -extern void func_801485B8(s32 a0, s32 a1, s32 a2); -extern void func_801484B0(s32 a0, s32 a1); -extern s32 func_80154358(void *a0); -extern void func_801484E8(s32 a0, s32 a1); -extern void func_80148534(s32 a0, s32 a1); -extern void func_8014856C(s32 a0, s32 a1); -extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); -extern void func_80148634(void *a0); -extern u8 D_800B9A64; -extern s32 func_80014DC0(); -extern s32 func_80014D68(); -extern s32 func_80014D94(); -extern s32 func_80014CF8(); -extern void func_800120DC(); -extern s32 func_800CF8B4(); -extern u16 func_801487F4(s32 *a0); -extern u16 func_80148800(s32 *a0); -extern u8 func_8014880C(s32 *a0); -extern u16 func_80148818(s32 *a0); -extern s32 func_80047D3C(s32 a0); -extern s32 func_80148824(void *arg0); -extern s32 func_801488A8(u8 *a0); -extern s32 func_8014891C(s32 a0); -extern s32 func_80148980(u8 *a0); -extern s32 func_801489E8(s32 a0); -extern s32 func_80148A48(s32 a0); -extern int func_80148AFC(void *a0); -extern void func_80148AAC(u8 *a0); -extern s32 func_80148C18(void); -extern s32 func_80148C20(s32 a0, s16 a1); -extern s32 func_80148C34(s32 a0, s32 a1); -extern s32 func_80148C4C(s32 a0, s32 a1); -extern s32 func_80148C64(s32 a0, s32 a1); -extern s32 func_80148C7C(void); -extern s32 func_80148C84(s32 a0, s32 a1); -extern s32 func_80148C9C(s32 a0, s32 a1); -extern s32 func_80148CB4(s32 a0, s32 a1); -extern s32 func_80148CCC(s32 a0, s32 a1); -extern s32 func_80148CE4(void); -extern s32 func_80148CEC(void); -extern s32 func_80148CF4(s32 a0, s32 a1); -extern s32 func_80148D0C(s32 a0, s32 a1); -extern s32 func_80148D24(void *a0, int a1); -extern s32 func_80148D3C(void); -extern s32 func_80148F60(void); -extern s32 func_80148F68(s32 a0); -extern s32 func_80148F74(s32 a0); -extern s32 func_80148F80(s32 a0); -extern s32 func_80148F8C(s32 a0); -extern s32 func_80148F98(void); -extern s32 func_80148FA0(s32 a0); -extern s32 func_80148FAC(s32 a0); -extern s32 func_80148FB8(s32 a0); -extern s32 func_80148FC4(s32 a0); -extern s32 func_80148FD0(void); -extern s32 func_80148FD8(void); -extern s32 func_80148FE0(s32 a0); -extern s32 func_80148FEC(s32 a0); -extern s32 func_80148FF8(s32 a0); -extern s32 func_80149004(void); -extern void func_8014900C(s32 *a0); -extern void func_80149020(s32 *a0); -extern void func_80149034(s32 *a0); -extern void func_80149048(s32 *a0); -extern void func_8014905C(u8 *a0); -extern void func_801490E0(s32 *a0, s16 a1); -extern void func_801490E8(s32 *a0, s16 a1); -extern void func_801490F0(s32 *a0, s16 a1); -extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); -extern void func_801490F8(s32 a0, s32 a1); -extern s32 func_801491C4(s32 a0); -extern s32 func_80149184(s32 a0); -extern s32 D_801151D4; -extern void func_80149204(s32 *a0); -extern void func_80149210(s32 a0, s32 a1); -extern s32 func_80149284(s32 *a0, s32 a1); -extern void func_80149350(s32 arg0); -extern void func_80149290(s32 a0); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_80149374(s32 arg0, s32 arg1); -extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8014942C(s32 arg0); -extern void func_8012EF70(s32 a0, s32 a1); -extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012EFB8(s32 a0); -extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); -extern void func_8014964C(s32 param_1, s32 param_2); -extern s32 func_801496D4(void *a0); -extern void func_8015AD08(); -extern void func_80149704(void); -extern void func_8015ACC4(); -extern void func_80149724(void); -extern u8 D_80078EBF; -extern s32 func_80149744(struct S_80149744 *a0); -extern void func_8015F7A0(); -extern void func_80149788(void); -extern void func_801653B8(); -extern void func_80149864(void); -extern s16 currentLocationId; -extern s32 func_8016F1AC(void); -extern s32 func_80149884(void); -extern void func_80160B00(); -extern void func_801498C0(void); -extern s32 func_80149AA8(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern void func_80146750(void *a0); -extern s32 func_801498E0(s32 *a0); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_80147364(u16 a0, s32 a1); -extern s32 func_800CCF28(s32 a0); -extern u8 D_80126B5C; -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_8015DAC4(s32 *a0); -extern void func_8015554C(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern void func_80149B14(s32 *a0); -extern u8 func_8014BEF8(void); -extern s32 func_80149B54(s32 * arg0); -extern void func_8015DE24(s32 *a0); -extern void func_80157510(s32 *a0); -extern void func_80149BAC(s32 *a0); -extern s32 func_80029178(s32 a0); -extern s32 func_80149C08(s32 arg0); -extern void func_801577C8(); -extern void func_80149C94(void); -extern void func_80157D20(void); -extern void func_80149CB4(void); -extern s32 func_80149CD4(s32 a0); -extern u8 func_8014B5B8(s32 *a0); -extern s32 func_80149D10(s32 a0); -extern s32 func_80149E94(s32 a0); -extern s32 func_80149DD8(s32 a0); -extern s32 func_80149D9C(s32 a0); -extern u8 D_801202A0[]; -extern s32 func_80149F2C(s32 a0, s32 a1); -extern s32 func_80149E94(s32 arg0); -extern void func_80149FA8(void); -extern s32 D_8018EDCC[]; -extern u8 D_80078E78[]; -extern s32 func_80149FB0(s32 a0); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern void func_8014A1B0(s32 a0, s32 a1); -extern s32 func_8014A048(s32 param_1); -extern u16 func_80156370(u16 a0); -extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); -extern void func_8015D4B4(); -extern void func_8014A218(void); -extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); -extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); -extern s32 func_8014A238(s32 arg0); -extern s32 func_8014A2E4(s32 a0); -extern void func_8014A380(s32 a0, s32 a1); -extern s16 D_801152B0; -extern s16 D_801152B4; -extern s32 func_8014A3E0(struct S_8014A3E0 *a0); -extern s32 func_8014A454(s32 a0); -extern s32 func_8014A4B4(void *a0); -extern void func_8015EDD4(); -extern void func_8014A4FC(void); -extern s32 func_8014A674(s32 *a0); -extern s32 func_8014A69C(s32 *a0); -extern s32 func_8014A6C4(s32 a0); -extern void func_8015E184(); -extern void func_8014A830(void); -extern s32 func_80029AF4(void); -extern s32 func_8014A850(s32 param_1); -extern void func_8014AA04(s32 a0); -extern void func_801599A4(void *a0); -extern void func_80159B3C(void *a0); -extern s32 func_80165A20(s32 a0); -extern void func_8014AB7C(); -extern void func_8014AC10(); -extern void func_8014AA28(void); -extern void func_8014AB5C(void); -extern void func_80162CCC(void); -extern void func_8014AB7C(s32 arg0); -extern void func_8014ABF0(void); -extern void func_80016714(void *a0, s32 a1); -extern void func_8014AC10(s32 arg0); -extern void func_8014ACC0(s32 a0, s32 a1); -extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); -extern void func_8014ACE8(void *a0, s32 a1, s32 a2); -extern void func_80146AFC(void *a0); -extern void func_8014ADA8(s32 a0, s32 a1); -extern void func_8014AD7C(s32 a0); -extern s32 D_80078E8C; -extern void func_8014B034(s32 arg0); -extern void func_8014B00C(s32 arg0); -extern void func_8014B084(void); -extern s16 D_80078E90; -extern void func_8014B034(s32 a0); -extern u16 D_80078EAC; -extern u8 D_80078EBA; -extern void func_800D10EC(void); -extern void func_8002AC98(void); -extern s32 func_8014B154(s32 *a0); -extern void func_8014B12C(void); -extern void func_8014B2F8(void); -extern void func_8014B4C4(void); -extern void func_8014B160(s32 a0); -extern s32 func_8016F1C4(void); -extern s16 D_80078E96; -extern s16 D_80078EB8; -extern u16 D_80078EA6; -extern void func_8014B2A8(void); -extern void func_8014B310(void); -extern void func_8014B2D0(void); -extern s32 D_80078E94; -extern s32 D_80078ECC; -extern void func_8014B33C(void); -extern u8 D_80062BF4[]; -extern void func_8014BC80(s32 a0, s32 a1); -extern void func_80019064(void *a0); -extern s32 D_80078E98; -extern void func_80166244(); -extern void func_8014B4D4(void *a0); -extern s16 D_80078E9A; -extern u8 D_80126D1C; -extern s32 D_80126D74; -extern void func_8014B598(s32 a0, s32 a1); -extern void func_8014B5B0(s32 *a0); -extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); -extern void func_8014B5D8(s32 s1); -extern s32 D_80078E9C; -extern s32 D_80078ED0; -extern void func_8014B6F0(s32 a0, s32 a1); -extern void func_8014B768(s32 a0, s32 a1); -extern void func_8014B944(s32 a0, s32 a1, s32 a2); -extern s32 D_80078EA4; -extern u16 D_80078EB2; -extern void func_8014BB0C(void); -extern void func_8014BB24(s32 a0, s32 a1, s32 a2); -extern void func_8014BC0C(s32 a0, s32 a1); -extern void func_8014BC44(s32 a0, s32 a1); -extern void func_8014BCC0(s32 a0, s32 a1); -extern u16 D_80078EB6; -extern s32 func_8014BCEC(s32 a0, s32 a1); -extern void func_8014BD24(s32 a0, s32 a1); -extern void func_8014BD60(s32 param_1, s32 param_2); -extern void func_8014BD98(s32 a0, u16 a1); -extern void func_8014BDC8(void); -extern void func_8014BDE0(void); -extern s32 func_8017267C(s32 *a0); -extern s32 func_80013294(void *a0, void *a1); -extern void func_80029ED4(s32 a0); -extern void func_8014BDE8(s32 a0); -extern void func_8014BE78(void); -extern void func_8014BE9C(void); -extern void func_80029124(s32 a0, s32 a1); -extern void func_8014BEC0(void); -extern void func_8014BF18(s32 a0); -extern void func_8014BF48(void); -extern u8 func_8014BF6C(void); -extern void func_8014BF8C(u8 arg0); -extern void func_8014BFB0(void); -extern u8 func_8014BFD4(void); -extern void func_8014BFF4(s32 a0, s32 a1); -extern void func_8014C010(s32 a0, s32 a1); -extern s32 func_8014C050(s32 a0, s32 a1); -extern s32 func_8014C088(s32 a0, s32 a1); -extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); -extern s32 func_8014C118(void * a0, s32 a1, s32 a2); -extern s32 func_8014C168(s32 * param_1, s32 param_2); -extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); -extern u8 D_8018EE54[]; -extern void func_8014C1A0(s32 arg0, s32 arg1); -extern s32 func_80013328(s32 a0, s32 a1); -extern s32 func_8014C59C(void *a0, void *a1); -extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); -extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); -extern s32 ratan2(s32 dx, s32 dy); -extern u8 D_8018EE5C; -extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); -extern s16 func_8014C5D0(s32 a0, s32 a1); -extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); -extern u8 D_80126D17; -extern void func_8014C6AC(void); -extern void func_8014C6C0(void); -extern u8 D_80126D1E; -extern void func_8014C6D0(void); -extern void func_8014C6E0(void); -extern s32 func_8014C860(s32 a0, s32 a1); -extern void func_8014C8C8(s32 a0, s32 *a1); -extern void func_8014C88C(s32 a0); -extern void func_8014C8C8(s32 dst, s32 * src); -extern void func_8014C8F0(s32 arg0); -extern u8 D_801151F0[]; -extern s32 func_8014C918(s32 a0, s32 a1); -extern s32 D_80126B50; -extern void func_8014C968(void); -extern void func_8014C978(void); -extern s32 func_8014C98C(void); -extern void func_80139914(s32 a0); -extern s32 func_8014CA00(s32 a0); -extern u16 func_8014CA70(s32 a0, s32 a1); -extern s32 func_8014CA14(s32 a0, s32 a1); -extern u16 func_8014CAE4(s32 *a0, s32 a1); -extern s32 func_8014CA88(s32 *a0, s32 a1); -extern s32 func_8014CAFC(void); -extern s32 func_8014CB0C(void); -extern s32 func_8014CB1C(void); -extern u8 D_80126D1F; -extern s32 func_8014CB2C(void); -extern s32 func_8014CB58(void); -extern u8 D_80126D1D; -extern void func_8014CB68(void); -extern s32 func_8014CB7C(void); -extern s32 func_8014CB8C(void); -extern short D_80126C9E; -extern void func_8014CB9C(struct Packed8 *a0); -extern s32 D_80126CDC; -extern void func_8014CBD8(void); -extern s16 D_80126CC4; -extern void func_8014CBE8(void); -extern void func_8014CBF8(void *a0); -extern void func_8014D3E0(s32 a0); -extern void func_8014D04C(void); -extern void func_8014CCB4(void); -extern void func_8014CC28(s32 a0); -extern void func_8014CD0C(u8 *a0); -extern s32 func_8014CF04(s32 a0, s32 a1, void *a2); -extern void func_8014CD80(s32 a0, void *a1, void *a2); -extern void func_8014D0A4(s32 a0); -extern s32 func_8014D2A0(s32 a0, void *a1, void *a2); -extern s32 func_8014D12C(s32 a0, void *a1, void *a2); -extern void func_8014D438(s32 a0); -extern void func_8014D3E0(s32 _arg0); -extern void func_8014D610(s32 a0, void *a1, void *a2); -extern s32 func_8014D4C0(s32 a0, void *a1, void *a2); -extern void func_8014D790(s32 a0); -extern void func_8014D738(void); -extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); -extern s32 func_8014D820(s32 a0, u16 *a1, u16 *a2); -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); -extern void func_8014DF94(s32 arg0); -extern void func_8014DF3C(void); -extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ -extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ -extern s16 D_801152AC; -extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); -extern void func_8014E48C(s32 a0); -extern void func_8014E434(void); -extern void func_8014E5B4(s32 a0, void *a1, void *a2); -extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); -extern void func_8014E6F8(struct SubE6F8 *a0); -extern void func_8014E6A0(void); -extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); -extern void func_8014E934(s32 _arg0); -extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); -extern s32 func_8014E98C(void *a0); -extern u16 D_800B99DA; -extern s32 D_801150D8; -extern s16 D_801152AA; -extern u8 D_80126720[]; -extern s16 D_80126724; -extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); -extern s32 func_8014ED80(struct SubED80 *a0); -extern int D_801E5BA8; -extern void func_8014ED28(s32 _arg0); -extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F24C(struct SubF24C *a0); -extern void func_8014F1F4(void); -extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F4C0(); -extern s32 func_8014F468(void); -extern int func_8014F74C(); -extern int func_8014F6F4(void); -extern u8 D_800D3918[]; -extern u8 D_801152A8[]; -extern s32 D_801152BC; -extern int func_8014F74C(s32 arg0); -extern s32 func_8014FA70(s32 a0); -extern s32 D_801E5BAC; -extern void func_8014FA04(s32 a0); -extern s32 func_8014FBC0(); -extern s32 func_8014FC18(u8 *self); -extern int func_8014FD54(int param_1); -extern void func_8014FCFC(void); -extern void func_80150170(void *a0); -extern s32 func_8014FE60(void *a0); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_8014FE60(void *e); -extern s32 func_80134510(s32 arg); -extern s32 func_80150150(s32 a, s32 b); -extern s32 func_80150460(s32 a, s32 b); -extern void func_801504D8(u16 *a0); -extern s32 func_80150480(s32 _arg0); -extern s32 func_80150528(void *a0, void *a1, void *a2); -extern s32 func_80150528(void *arg0, void *arg1, void *arg2); -extern s32 func_801506A4(s32 a0, s32 a1); -extern s32 func_801505FC(s32 a0); -extern s32 func_801506A4(s32 arg0, s32 arg1); -extern void func_80150820(s32 a0, s32 a1); -extern void func_8015086C(int param_1); -extern s32 func_801508B4(s32 a0); -extern s32 func_8015094C(s32 a0); -extern short func_801508F8(s32 a0); -extern s32 D_8018EE8C; -extern s32 D_80126990; -extern s32 D_80126994; -extern u8 D_80126948[]; -extern s32 func_80021174(s32 a0, s32 a1); -extern s32 func_8015094C(s32 param_1); -extern void func_80150B9C(void); -extern s32 func_80151184(s32 a0, s32 a1, s32 a2); -extern s32 func_80150BA4(s32 a0); -extern s32 func_801619D0(void *a0); -extern void func_80150BC8(s32 *a0); -extern s32 func_80150480(s32 a0); -extern u16 D_800AE6DC; -extern void func_80150C48(s32 a0); -extern int func_80151184(int arg, int a1, int a2); -extern int func_80150CA0(int arg); -extern void func_80150EC4(s32 a, s32 b); -extern void func_80150CC4(s32 a); -extern void func_80150CE4(s32 a); -extern void func_80150D04(s32 a); -extern void func_80150D24(s32 a); -extern void func_80150D44(s32 a); -extern void func_80150D64(s32 a); -extern void func_80150D84(s32 a); -extern void func_80150DA4(s32 a); -extern void func_80150DC4(s32 a); -extern void func_80150DE4(s32 a); -extern void func_80150E04(s32 a); -extern void func_80150E24(s32 a); -extern void func_80150E44(s32 a); -extern void func_80150EC4(s32 a0, s32 a1); -extern void func_80150E64(s32 a0); -extern void func_80150E84(s32 a0); -extern void func_80150EA4(s32 a0); -extern u8 D_800AE6C0; -extern s16 D_800AE6C8; -extern s16 D_800AE6CA; -extern s16 D_800AE6CC; -extern s32 D_800AE6C4; -extern s16 D_800AE6CE; -extern u8 D_800AE6BE; -extern u8 D_801201F8[]; -extern void func_80150F78(void); -extern void func_80150F80(s32 a0); -extern int func_80150FB4(int arg); -extern void func_80150FD8(s32 a0); -extern int func_80151014(int arg); -extern void func_80151038(s32 a0); -extern int func_80151070(int arg); -extern int func_80151094(int arg); -extern void func_801510B8(void); -extern void func_801510C0(void); -extern int func_801510C8(int arg); -extern int func_801510EC(int arg); -extern s32 func_8012DB84(void); -extern s32 func_80151110(void); -extern void func_80151130(void); -extern int func_80151138(int arg); -extern void func_8015115C(s32 *a0, s16 a1); -extern s32 func_80151164(s32 a0, s32 a1); -extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); -extern void func_801511A8(u8 *a0); -extern void func_801511C4(u8 *a0); -extern int func_80151204(int arg, int a1); -extern int func_801511E0(int arg); -extern int func_80151204(int a0, int a1); -extern void func_80151238(void *a0); -extern void func_8015126C(u16 *p); -extern void func_80151780(s32 a0); -extern void func_801516F0(s32 *a0); -extern void func_8015173C(s32 *a0); -extern s16 D_8011DB1A; -extern s32 D_80127518; -extern s32 D_801151FC; -extern s32 func_801725CC(u8 *a0); -extern s32 func_80029D3C(void); -extern void func_80151878(void); -extern void func_80153B58(s32 *a0); -extern s32 func_80151880(s32 a0); -extern s32 func_801518D8(s32 a0); -extern s32 func_80151944(void); -extern s32 func_80151924(void); -extern void func_8014E934(s32 a0); -extern s32 func_8014F3E8(s32 a0); -extern void func_801519C8(s32 a0); -extern void func_80151980(s32 a0); -extern M2C_UNK D_800D5880; -extern s32 D_800D58AC; -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801519C8(s32 arg0); -extern void func_80151C54(s32 a0); -extern void func_801542DC(s32 *a0, s32 a1); -extern void func_8015BDD0(s32 *a0); -extern void func_80165718(s32 a0); -extern u8 D_800D46E4[]; -extern void func_80151AE4(s32 arg0); -extern void (*D_8018EF34[])(void); -extern void func_80151D24(void *a0); -extern void func_80151DB0(s32 a0); -extern void func_80151D60(void *a0); -extern s32 func_80172630(u8 *a0); -extern s32 D_80062C14; -extern void func_80151DB0(s32 param_1); -extern void func_80151E78(s32 *a0); -extern void func_80151ECC(struct S80151ECC *a0); -extern void func_80151FB4(s32 a0); -extern void func_80151F38(s32 *a0); -extern void func_801553C0(s32 a0); -extern void func_80153C18(); -extern void (*D_8018EF58[])(void); -extern void func_80152058(void *a0); -extern void func_801520DC(s32 a0); -extern void func_80152094(s32 a0); -extern void func_80147324(s32 a0); -extern u8 D_80062C04[]; -extern M2C_UNK D_8018EF48; -extern void func_801520DC(s32 arg0); -extern void func_801470B4(s32 a0); -extern void func_8015369C(s32 a0); -extern void func_80152194(s32 *a0); -extern s32 func_801536DC(s32 a0); -extern void func_8015220C(s32 a0); -extern s32 func_80153800(s32 a0); -extern void func_801522CC(s32 a0); -extern void func_80152254(s32 *a0); -extern void (*D_8018EF6C[])(void); -extern void func_80152370(void *a0); -extern void func_801523F4(s32 a0); -extern void func_801523AC(s32 a0); -extern void func_8001382C(s32 a0, void *a1, void *a2); -extern u8 D_8018EF78[]; -extern void func_801523F4(s32 arg0); -extern void func_801525F4(int); -extern s32 func_801535F4(void *arg0); -extern void func_8015BF48(s32 *a0); -extern void func_80152500(int param_1); -extern void func_801525F4(s32 a0); -extern void (*D_8018EF88[])(void); -extern void func_80152698(void *a0); -extern void func_80152714(s32 a0); -extern void func_801526D4(s32 a0); -extern void func_80152790(s32 a0); -extern void (*D_8018EFA0[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018EF90; -extern void func_801528B0(s32 arg0); -extern void func_8015294C(s32 a0); -extern void func_80152A08(s32 a0); -extern void func_80152AC8(s32 a0); -extern void func_80152A50(s32 *a0); -extern void (*D_8018EFB4[])(void); -extern void func_80152B6C(void *a0); -extern void func_80152BF0(s32 a0); -extern void func_80152BA8(s32 a0); -extern void func_80152C80(s32 *a0); -extern void func_80152C40(s32 *a0); -extern void (*D_8018EFD0[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018EFC0; -extern void func_80152DA8(s32 arg0); -extern void func_80152E4C(s32 a0); -extern void func_80152EFC(s32 a0); -extern void func_80152FBC(s32 a0); -extern void func_80152F44(s32 *a0); -extern void (*D_8018EFE4[])(void); -extern void func_80153060(void *a0); -extern void func_801530E4(s32 a0); -extern void func_8015309C(s32 a0); -extern void func_80155440(s32 *a0); -extern void func_801530E4(s32 arg0); -extern void func_80153150(struct S80153150 *a0); -extern void func_801531BC(s32 a0); -extern void func_8015327C(s32 a0); -extern void func_80153204(s32 *a0); -extern void (*D_8018EFF8[])(void); -extern void func_80153320(void *a0); -extern void func_801533A4(s32 a0); -extern void func_8015335C(s32 a0); -extern void func_80153410(s32 *a0); -extern void func_80153490(s32 a0); -extern void func_80153550(s32 a0); -extern void func_801534D8(s32 *a0); -extern void (*D_8011DB28)(s32 a0); -extern s32 func_801536DC(s32 param_1); -extern void func_800139C8(s32 a0, void *a1, void *a2); -extern s32 func_80153978(s32 a0, u16 *src); -extern s32 func_80133784(s32 a0, void *src, s32 dst); -extern s32 func_801539F8(s32 a0, void *a1); -extern s32 func_801539F8(s32 a0, void * a1); -extern s32 func_8016DA04(s32 a0); -extern s32 func_80153BD8(s32 a0); -extern s32 func_80153BF0(s32 a0); -extern void func_80153C18(void); -extern u16 D_8011F748; -extern void func_80153C30(void); -extern void func_80153C74(s16 a0, s16 a1); -extern s16 D_8011DB18; -extern void func_80153C44(int a0, int a1, s16 a2); -extern s16 D_8011DB0C; -extern s32 D_80115210; -extern void func_80153C8C(void); -extern void func_80153C9C(void); -extern s32 func_80153CBC(void); -extern s32 D_8018F00C; -extern void (*D_8018F034[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018F014; -extern void func_80153D7C(s32 param_1); -extern void func_8015410C(void); -extern void func_80153E00(s32 param_1); -extern void func_80151664(void); -extern void func_80154134(u8 *a0); -extern void func_80154190(u8 *a0, s32 a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154218(u8 *a0, s32 a1, s32 a2); -extern void func_801541D8(u8 *a0, s32 a1, s32 a2); -extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); -extern void func_801542A4(); -extern void func_801542A4(s32 *a0, s32 a1); -extern void func_8015430C(); -extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); -extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); -extern s32 func_80154358(void * arg0); -extern void func_80154AB4(s32 a0, s32 a1); -extern void func_80154B20(s32 a0, s32 a1, s32 a2); -extern void func_80154AE0(s32 a0, s32 a1, s32 a2); -extern void func_80154B7C(u8 *a0, s32 a1); -extern void func_80154B4C(u8 *a0, s32 a1); -extern void func_80154BC8(void *a0, s32 a1, s32 a2); -extern void func_80154B98(void *a0, s32 a1, s32 a2); -extern u8 D_800D8D10[]; -extern s16 D_80078E9E; -extern void func_801550FC(s32 a0); -extern void func_80154ED8(s32 a0, s32 a1); -extern void func_80154F9C(s32 a0); -extern void func_800183E0(s32 a0); -extern void func_801550FC(s32 arg0); -extern void func_8001D150(s32, s32); -extern void func_8001D130(int, int); -extern void func_80155150(int param_1); -extern s32 D_800DE2A4[]; -extern void func_801552F4(s32 a0); -extern void func_80155344(s32 a0); -extern s32 func_80155394(s32 *a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80029178(s32); -extern int (*D_8018F080[])(void); -extern s32 func_80155458(s32 param_1); -extern s32 func_801659DC(u8 *a0); -extern s32 func_801554B8(void *arg0); -extern void func_801555F4(void *a0); -extern void func_80155518(s32 *a0); -extern void func_80155580(void *a0); -extern void (*D_8018F084[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern s32 func_80029B4C(s32 a0, s32 a1); -extern s32 func_80029BC8(s32 a0, s32 a1); -extern s32 func_80029C44(s32 a0, s32 a1); -extern s32 func_8015640C(s32 a0, s32 a1); -extern s32 rand(void); -extern u32 func_8015616C(s32 param_1, u16 param_2); -extern u16 func_80156370(u16 param_1); -extern s32 func_801564B0(s32 a0); -extern s32 func_8002A1B4(void); -extern s32 func_8002A400(void); -extern s32 func_8002A670(void); -extern s32 func_8002A8E0(void); -extern s32 D_801151E0[]; -extern s32 func_801565C0(void); -extern void func_80156A14(s32 *a0); -extern void func_80156648(s32 *a0); -extern u8 D_8011DAD8[]; -extern s32 func_8014C568(s16 *a0, s16 *a1); -extern void func_801567BC(s32 a0); -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018F4E8[]; -extern void func_80156A1C(s32 param_1, s32 param_2); -extern s32 D_801150E0[]; -extern void func_80156A88(s32 a0, s32 a1); -extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); -extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); -extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); -extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern s32 func_80135004(s32 a0, void *a1, s32 a2); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801575E4(void *a0); -extern void func_801574DC(s32 *a0); -extern void func_80157544(void *a0); -extern void (*D_8018F4F8[])(void); -extern void func_8014CC28(s32 a0); /* defined */ -extern s32 func_8014F3E8(s32 a0); /* declared */ -extern void func_8015BDD0(s32 *a0); /* defined */ -extern void func_801575E4(void *a0); /* defined */ -extern void func_80157580(s32 arg0); -extern u8 D_800D4F14[]; -extern void func_801576A8(void *arg0); -extern s32 func_8015773C(u8 *a0); -extern s32 func_8015771C(u8 *a0); -extern s32 func_8015773C(u8 * arg0); -extern int D_801E5BE0; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018F520[])(void); -extern void func_80157808(void *param_1); -extern void func_80157880(s32 a0); -extern s32 func_801725A4(u8 *a0); -extern u8 D_800D5128; -extern u8 D_8018F500; -extern void func_801578C0(s32 param_1); -extern void func_80147A84(int); -extern void func_80148038(int, int); -extern void func_80147460(int); -extern void func_80146D90(int); -extern void func_80161450(void *a0); -extern void func_80157A8C(int); -extern void func_80154A74(int, int); -extern unsigned char D_800D5178; -extern unsigned char D_8018F510; -extern void func_8015795C(int param_1); -extern void func_80161D20(s32 a0, s32 a1); -extern void func_80157A8C(s32 a0); -extern void func_8016706C(s32 a0); -extern u8 D_800D51AC[]; -extern void func_80157AC8(s32 param_1); -extern void func_80157B74(int param_1); -extern void func_8016158C(void *a0); -extern void func_8015BE04(s32 *a0); -extern void func_80157BC8(s32 a0); -extern void func_80157CCC(s32 a0); -extern void func_80157DC4(void *a0); -extern void func_80157FC4(void *a0); -extern void func_80157D74(u16 *a0); -extern void (*D_8018F560[])(void); -extern void func_80157E38(void *); -extern void func_80157E00(void *a0); -extern void func_80157E38(void * a0); -extern s32 func_80157F64(s32 *a0); -extern s32 func_80156600(void *a0); -extern void func_80157EA4(void *a0); -extern void (*D_8018F568[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018F534; -extern void func_80158038(void * param); -extern u8 D_800D524C[]; -extern void func_80161418(void *a0); -extern void func_801580B4(s32 a0); -extern void func_801581AC(s32 a0); -extern void (*D_8018F574[])(void); -extern void func_8015824C(void *a0); -extern void func_801582C0(void *); -extern void func_80158288(void *a0); -extern u8 D_800D52A8[]; -extern void func_801585A4(s32 *a0); -extern void func_801582C0(void *a0); -extern s32 func_801585AC(s32 *a0); -extern u8 D_800D52E8[]; -extern void func_80158344(s32 *a0); -extern s32 func_801615C4(void *a0, s32 a1); -extern u8 D_8018F544; -extern u8 D_800D533C; -extern void func_80158434(s32 param_1); -extern void func_80158548(s32 param_1); -extern void func_801585EC(u8 *a0); -extern void func_80158794(void); -extern s32 D_801E5BE8; -extern s32 D_801E5BF4; -extern s32 D_801E5BF8; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018F5B0[])(s32 *); -extern void func_80158AE4(void *a0); -extern void func_80158AB4(void *a0); -extern void func_8016F264(void); -extern void func_80165840(void); -extern void func_801658DC(void); -extern void func_80165A78(s32); -extern void func_80158AE4(void * a0); -extern M2C_UNK D_800D58D8; -extern void func_80158BB0(void *arg0); -extern s32 func_80159404(s32 a0, s32 a1); -extern void func_80158C40(s32 *a0); -extern void func_80158CD8(s32 *a0); -extern s32 func_80159434(s32 a0, s32 a1); -extern void func_80158D60(s32 a0); -extern M2C_UNK D_800D5904; -extern void func_80158E24(s32 *a0); -extern s32 D_8018F584[]; -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80158F00(int param_1); -extern u8 D_80110C3C[]; -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80158FA4(s32 param_1); -extern s32 func_801399F0(s32 a0); -extern u8 D_80110C94[]; -extern u8 D_80110CD4[]; -extern void func_80159070(void *a0); -extern s32 func_80029A94(s32); -extern void func_80175454(void); -extern void func_800298BC(void *); -extern void func_8002992C(s32); -extern void func_800CF804(void); -extern void func_800CF818(void); -extern u8 D_80110D0C[]; -extern void func_80159120(s32 a0); -extern void func_801592CC(s32 *a0); -extern u8 D_800AE6BD; -extern s32 D_801E5BF0; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018F800[])(void); -extern void func_80159698(void *a0); -extern s32 func_801596D4(void *a0); -extern void func_80174B6C(void); -extern void func_80129248(s16 a0); -extern void func_8013C938(void); -extern void func_8013CB20(void); -extern void func_8013C98C(void); -extern void func_8002850C(s32, s32, s32); -extern void func_80028620(s32, void *); -extern s16 D_800B9AAC[]; -extern s16 D_800B9B00; -extern u16 D_801270C0; -extern u32 D_800AFAE8[]; -extern char D_8018F620[]; -extern s32 func_801596F0(s32 param_1); -extern s32 func_80159874(void); -extern void func_800167B8(s32 a0); -extern s32 func_8015987C(s32 a0); -extern int func_800167F0(int arg); -extern int func_801598BC(void); -extern void func_80159968(void *a0); -extern void func_801598E0(u8 *a0); -extern void (*D_8018F8A4[])(void); -extern void func_80159A20(void *a0); -extern void func_801599E0(void *a0); -extern void func_80159A18(void); -extern void func_80159BE4(s32); -extern void func_80159B08(s32 *a0); -extern void func_80159B70(void *a0); -extern void func_80159B3C(void * a0); -extern void (*D_8018F9F8[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018F814; -extern void func_80159BE4(s32 arg0); -extern void func_8015A1C8(s32 a0); -extern void func_8015A2D8(s32); -extern void func_8015A1FC(s32 *a0); -extern void func_8015A264(void *a0); -extern void func_8015A230(s32 *a0); -extern void (*D_8018FA00[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018F824; -extern s32 func_80172608(u8 *a0); -extern void func_8015A2D8(s32 param_1); -extern u8 D_800D48DC; -extern s32 func_8015AB7C(s32 a0); -extern s32 D_8011F9C4; -extern s32 func_8015ABD4(s32 a0, s32 a1, s32 a2); -extern s32 func_80161CD0(s32 a0, s32 a1); -extern M2C_UNK D_8018F844; -extern void func_8015AC48(s32 arg0); -extern void func_8015AC90(s32 a0); -extern void func_8015ADB0(s32 a0); -extern void func_8015ACC4(s32 *arg0); -extern void func_8015AD3C(void *a0); -extern void func_8015AD08(void *arg0); -extern void (*D_8018FA08[])(void); -extern void func_8015ADB0(s32); -extern void func_8015AD78(s32 a0); -extern void func_8015ADB0(s32 arg0); -extern s32 func_80161A60(s32 a0); -extern s32 func_801619A4(s32 *a0); -extern s32 func_80149C08(s32 a0); -extern s32 func_8015B6F4(s32 a0); -extern s32 func_8015B7B4(s32 a0); -extern void func_8015B8F8(s32 *a0); -extern void func_800CCCC0(s32 a0); -extern s32 func_8015B858(u8 *a0); -extern s32 func_800CF8B4(void); -extern void func_80147A84(s32 a0); -extern s32 func_80172644(u8 *a0); -extern void func_800CCB78(s32 a0); -extern s32 func_80161488(void *a0); -extern void func_8015CC40(s32 *a0); -extern void func_8015CF8C(s32 *a0); -extern s32 func_8015AE2C(); -extern s32 D_800D4A9C; -extern int func_8015B6F4(int param_1); -extern u8 D_800D4F8C[]; -extern u8 D_800D4BE0[]; -extern s32 func_8014A51C(void); -extern s32 D_800D4B48; -extern void func_8015BD8C(s32 *a0); -extern s32 func_8015BE94(); -extern void func_8015BE38(struct Obj *a0); -extern s32 func_8015BE74(void); -extern void func_80161124(void *a0); -extern s32 func_8015BE94(s32 *a0); -extern s32 func_8015BEC4(void); -extern s32 func_8015B950(s32 arg0); -extern s32 func_8015BEE4(void); -extern void func_8015BF04(s32 *a0); -extern void func_8015C0C4(s32 a0); -extern void func_8015BFF4(void *a0); -extern void func_8015BF7C(s32 *a0); -extern void func_8015C030(s32 *a0, s32 a1); -extern void func_8015BFB0(s32 *a0, s32 a1); -extern void (*D_8018FA30[])(void); -extern void func_8015C0C4(s32); -extern void func_8015C08C(s32 a0); -extern s32 func_8015C128(s32 param_1); -extern void func_8015C6A4(void); -extern void func_8015C788(s32 a0); -extern void func_8015C6AC(s32 *a0); -extern void func_8015C714(void *a0); -extern void func_8015C6E0(s32 *a0); -extern void (*D_8018FA3C[])(void); -extern void func_8015C788(s32); -extern void func_8015C750(s32 a0); -extern void func_8015CB94(s32 a0); -extern void func_8015CBCC(void); -extern void func_8015CBD4(void); -extern void func_8015CBDC(void); -extern void func_8015CBE4(void); -extern void func_8015CBEC(void); -extern void func_8015CBF4(void); -extern void func_8015CBFC(void); -extern void func_8015CC04(void); -extern void func_8015CC0C(s32 *param_1); -extern void func_8015CC74(s32 *a0); -extern s32 func_8015CCD0(); -extern s32 func_8015CCB0(void); -extern s32 func_801725E0(u8 *a0); -extern s32 func_8015CCD0(s32 param_1); -extern s32 func_8015CD20(s32 arg0); -extern void func_8015CF24(s32 a0); -extern void func_8015D01C(); -extern void func_8015CF58(s32 *param_1); -extern void func_8015CFC0(s32 *a0); -extern void func_8015CFFC(void); -extern void func_8015D01C(int param_1); -extern void (*D_8018F8B0[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018FAE0; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018EBC4[]; -extern void func_8015D414(int param_1); -extern void func_8015D57C(s32); -extern void func_8015D480(s32 *a0); -extern s32 func_8015D4E8(s16 *a0); -extern void func_8015D4B4(s16 *a0); -extern void func_8015D524(s32 arg0); -extern void func_8015D544(s32 a0); -extern void func_801746DC(void); -extern void func_8015D57C(s32 arg0); -extern s32 func_80161B18(void *a0); -extern s32 func_80161B84(void *a0); -extern void func_80154150(int, int); -extern void func_80149374(int, int); -extern unsigned char D_8018FAF4[]; -extern void func_8015D5E8(int param_1); -extern int func_8015E0D4(int); -extern void func_8015DA5C(s32 a0); -extern void func_8015DB6C(s32 a0); -extern void func_8015DA90(s32 *a0); -extern void func_8015DAF8(s32 *a0); -extern void func_8015DB6C(s32); -extern void func_8015DB34(s32 a0); -extern void func_8015DCB8(s32 a0); -extern void func_8014BD60(s32 a0, s32 a1); -extern int func_8015DD74(int); -extern void func_8015DBD4(void *arg0); -extern int func_8015DC84(int a0); -extern s8 D_8018FB30[]; -extern void func_8015DCB8(s32 param_1); -extern int func_8015DD74(int arg0); -extern void func_8015DECC(s32 a0); -extern void func_8015DDF0(s32 *a0); -extern void func_8015DE58(s32 *a0); -extern void func_8015DECC(s32); -extern void func_8015DE94(s32 a0); -extern void func_8015E018(s32 a0); -extern void func_8015DF34(void *arg0); -extern int func_8015DFE4(int a0); -extern void func_8015E018(s32 param_1); -extern int func_8015E0D4(int a0); -extern void func_8015E22C(s32 a0); -extern void func_8015E150(s32 *a0); -extern s32 func_8015E1B8(s32 a0); -extern void func_8015E184(s32 *arg0); -extern void func_8015E22C(s32); -extern void func_8015E1F4(s32 a0); -extern u8 D_800D4FF4[]; -extern u8 D_800D5098[]; -extern u8 D_800D5060[]; -extern s32 func_8014A850(s32 a0); -extern void func_8015E40C(s32 a0); -extern void func_8015E588(void); -extern void func_8015E4B0(s32 a0); -extern void func_8015E288(s32 a0); -extern u16 D_8018FB78; -extern u16 D_8018FB7A; -extern u16 D_8018FB7C; -extern s32 D_8018FB80; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -extern void func_8013C9C4(void *a0); -extern s32 D_8018FB88; -extern void func_8015E5B0(u8 *self); -extern void func_8015E714(s32 *a0); -extern void func_8015E95C(s32); -extern void func_8015E84C(s32 *a0); -extern void func_8015E8E8(s32 *a0); -extern void func_8015E9B8(s32 *a0); -extern void func_8015E8B4(s32 *a0); -extern void func_8015E924(s32 a0); -extern void func_8015E95C(s32 a0); -extern s16 D_801152A0; -extern void func_80160818(s32 *a0); -extern void func_8015ED6C(s32 *a0); -extern void func_8015EE7C(s32); -extern void func_8015EDA0(s32 *a0); -extern s32 func_8015EE08(s32 a0); -extern void func_8015EDD4(s32 *arg0); -extern void func_8015EE44(s32 a0); -extern int D_800D4C48; -extern int D_8018F894; -extern void func_8015EE7C(s32 param_1); -extern void func_8015EEE0(void *arg0); -extern void func_8015EF9C(void); -extern void func_8015F080(s32); -extern void func_8015EFA4(s32 *a0); -extern void func_8015F00C(s32 *a0); -extern void func_8015EFD8(s32 *a0); -extern void func_8015F048(s32 a0); -extern void func_8015F080(s32 a0); -extern s32 D_80062BE8; -extern void func_801466F0(s32, s32, s32, s32, s32, s32, s32, s32); -extern s32 func_80161208(void); -extern void func_8015F118(void *a0); -extern void func_8015F260(s32 *a0); -extern void func_8015F380(); -extern void func_8015F2BC(s32 *a0); -extern void func_8015F324(s32 *a0); -extern void func_8015F2F0(s32 *a0); -extern void func_8015F360(void); -extern s32 func_801725B8(u8 *a0); -extern void func_8015F380(void* arg0); -extern void func_8015F738(s32 *a0); -extern void func_8015F848(s32 *a0); -extern void func_8015F76C(s32 *a0); -extern s32 func_8015F7D4(s32 a0); -extern void func_8015F7A0(s32 *arg0); -extern void func_8015F810(s32 *a0); -extern void func_80147078(s32 *, s16); -extern void func_80159B70(void *); -extern void func_8015F89C(void *arg0); -extern void func_8015F948(s32 *param_1); -extern void func_8015F9A4(void *arg0); -extern void func_8015FA24(s32 arg0); -extern void func_8015FBE0(s32 *a0); -extern void func_8015FA44(s32 *a0); -extern void func_8015FAAC(s32 *a0); -extern void func_8015FA78(s32 *a0); -extern s32 func_801612B8(void *a0, s32 a1); -extern void func_8016007C(s32 a0); -extern void func_8015FAE8(void *arg0); -extern void func_8015FCC8(void *param_1); -extern unsigned int D_8018FC0C[]; -extern void func_8015FD74(int param_1); -extern s32 func_80028DE0(void); -extern u8 func_80165700(s32 a0, s32 a1); -extern void func_8015FDCC(s32 a0); -extern u8 D_80078EC2; -extern u8 func_801656E8(s32 a0, s32 a1); -extern void func_80165670(s32 a0, s32 a1); -extern void func_8016004C(s32 a0); -extern void func_8015FF20(void *param_1); -extern void func_801601AC(s32 *a0); -extern void func_801600D0(s32 *a0); -extern void func_80160138(s32 *a0); -extern void func_80160104(s32 *a0); -extern void func_80160174(s32 *a0); -extern void func_801601E4(s32 *a0); -extern void func_80160244(s32 *a0); -extern void func_8016032C(void); -extern void func_80160410(s32 *a0); -extern void func_80160334(s32 *a0); -extern void func_8016039C(s32 *a0); -extern void func_80160368(s32 *a0); -extern void func_801603D8(s32 *a0); -extern u8 D_80062BD0; -extern void func_80160410(s32 * a0); -extern void func_801607B8(s32 *a0); -extern void func_801608C0(s32 *a0); -extern void func_801607E4(s32 *a0); -extern void func_8016084C(s32 *a0); -extern void func_80160888(s32 *a0); -extern void func_80160A28(s32 a0); -extern void func_80160A74(s32 *a0); -extern void func_80160BB4(s32 *a0); -extern void func_80160ACC(s32 *a0); -extern s32 func_80160B34(s32 a0); -extern void func_80160B00(s32 *arg0); -extern void func_80160B70(s32 a0); -extern void func_80160C28(void *arg0); -extern void func_80160CB4(s32 *a0); -extern void func_80160D10(void *arg0); -extern void func_80160DEC(u8 *a0); -extern void func_80160F00(); -extern void func_80160E3C(s32 *a0); -extern void func_80160EA4(); -extern void func_80160E70(s32 *a0); -extern void (*D_8018FCBC[])(void); -extern void func_80160EA4(void *a0); -extern void func_80160EE0(void); -extern void func_80160F00(void* arg0); -extern void func_800D0F4C(s32 a0); -extern u8 D_80110EC0; -extern void func_80160F70(s32 a0); -extern void func_80160FE0(s32 *a0); -extern void func_80161034(void *a0); -extern void func_80161094(s32 a0); -extern void func_801610FC(void); -extern void func_801483E8(void); -extern void func_8016130C(void *a0, s32 a1); -extern void func_80161240(void *a0); -extern void func_80161374(void *a0, s32 a1); -extern void func_80161278(void *a0); -extern s32 func_801612B8(void * a0, s32 a1); -extern void func_8016163C(void *a0, s32 a1); -extern void func_80161774(void *a0, s32 a1); -extern s32 func_8016197C(s32 a0, s32 a1); -extern void func_80161888(void *a0, s32 a1); -extern void func_801614E4(void *a0); -extern void func_8016191C(void *a0, s32 a1); -extern void func_8016151C(void *a0); -extern void func_80161554(void *a0); -extern s32 func_801615C4(void * arg0, s32 arg1); -extern s32 func_80161A00(s32 a0); -extern s32 func_80161A30(s32 a0); -extern int func_801497A8(void); -extern int func_80161BE0(void *param_1); -extern u16 D_8018FCEC[]; -extern void func_80161C98(int param_1, u32 param_2); -extern void func_80161E08(s32); -extern s32 func_80162438(s32); -extern s32 D_800AE6A8; -extern void func_800D1734(void *); -extern s32 D_8018FD50; -extern void func_80161D88(void); -extern void func_80161E08(s32 param_1); -extern int func_800291DC(int); -extern int func_800D0E30(void *a0); -extern int func_801620C4(void); -extern s32 func_800D0D7C(s32, s32); -extern int D_801E5C00[]; -extern void func_8016216C(void); -extern u8 D_80078EB0; -extern u8 D_80078EB1; -extern s32 func_801621CC(s32 arg0); -extern void func_801622C4(void); -extern void (*D_8018FD74[])(void); -extern void func_80162330(void *a0); -extern void func_8014706C(void *a0); -extern s32 func_8016236C(u8 *a0); -extern void func_800D0C48(s32 a0); -extern s32 func_801623B8(s32 *a0); -extern s32 func_800167F0(s32 a0); -extern s32 func_80162414(void); -extern s32 func_80162438(s32 _unused0); -extern int func_801626B8(void); -extern void func_80162714(void); -extern int D_801E5C58[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018FDBC[])(void); -extern void func_80162834(void *a0); -extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80162968(s32 a0); -extern s32 func_80162ACC(u8 *a0); -extern u8 D_800B5CB8; -extern s32 D_8018FDAC; -extern s32 D_800B5CBC; -extern u8 D_800B5CDF; -extern s32 D_800B5CEC; -extern void func_80162870(s32 param_1); -extern void func_801628F4(s32 *a0); -extern void func_80162968(s32 param_1); -extern void func_80162AC0(s32 *a0, s8 a1); -extern s32 func_80162AE0(u8 *a0); -extern void func_80162AF4(void); -extern void func_80162CC4(void); -extern s32 D_80126D40; -extern void func_80162B1C(void); -extern void func_80162D28(s32 *a0); -extern void func_80162D88(s32 *a0); -extern void func_80162DE8(s32 *a0); -extern void func_80162E48(s32 *a0); -extern void func_80162EA8(s32 *a0); -extern void func_80162F60(s32 arg0, s32 arg1); -extern void func_80162F80(s32 arg0, s32 arg1); -extern void func_80162FA0(s32 arg0, s32 arg1); -extern void func_80162F08(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80162FC0(s32 *a0); -extern void func_80162FF4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801630C4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163194(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg4); -extern void func_8016325C(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163234(s32 a0); -extern s32 D_80115100; -extern s32 func_801632E0(void); -extern s32 D_80115200; -extern s32 func_801632F0(void); -extern u16 D_80126B18[]; -extern void func_80163328(void); -extern s32 func_801633A8(void); -extern s32 func_80163408(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void func_80163534(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, u16 * a5); -extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); -extern char D_801E5054[8]; -extern void *memcpy(void *dst, const void *src, unsigned int n); -extern void func_801634D8(s32 param_1, u16 param_2, u16 param_3, s32 param_4, u16 param_5); -extern void func_80157158(); -extern void func_80163664(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801636D0(s32 a0, s32 a1); -extern s32 func_8016380C(struct S8016380C *a0, s32 a1); -extern void *memcpy(void *dst, void *src, s32 n); -extern s32 func_801638A0(u8 *a0, s32 a1); -extern s32 func_80163950(s32 a0); -extern void (*D_8018FDC4[])(void); -extern void func_80163A58(void *a0); -extern void func_80163A94(s32 param_1); -extern void func_80163C2C(s32 param_1); -extern void func_80163EC8(s32 param_1); -extern void func_80164270(s32 *a0); -extern void func_80164418(void); -extern void func_80163764(s32 a0); -extern void func_801642AC(s32 a0); -extern void func_8016432C(s32 a0); -extern void func_80164410(void); -extern s32 func_80012DBC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164530(s32 arg0); -extern void (*D_8018FE18[])(void); -extern void func_80164744(s32 param_1); -extern void func_8001C810(s32 a0, s32 a1); -extern void func_80164A74(s32 *a0); -extern void func_80164930(s32 a); -extern u16 D_800DF2E0; -extern s32 D_8018FDE0; -extern s16 D_8018FE14; -extern s16 D_8018FE12; -extern s16 D_8018FE10; -extern void func_801647A4(int param_1); -extern void func_80164ACC(); -extern void func_80164864(void *a0); -extern void func_80164930(s32 param_1); -extern s32 func_8014C308(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164ACC(s32 a0); -extern void (*D_8018FE24[])(void); -extern void func_80164BA0(void *a0); -extern void func_8001CD50(s32 a0, s32 a1); -extern void func_800233CC(void *, unsigned short); -extern void func_80164DD0(s32 a0); -extern void func_80164DB0(void); -extern u8 D_801E5CB8; -extern u8 D_801E5CB9; -extern u8 D_801E5CBA; -extern u8 D_801E5CBB; -extern u8 D_801E5CBC; -extern u8 D_801E5CBD; -extern u8 D_801E5CBE; -extern u8 D_801E5CBF; -extern void func_80164BDC(s32 param_1); -extern void func_80164E40(void); -extern void func_80164CD4(u8 *a0); -extern void func_80164D4C(void *arg0); -extern void (*D_8018FE34[])(void); -extern void func_80164EA4(void *a0); -extern void func_80165124(void *a0); -extern void func_80164EE0(int param_1); -extern s32 func_80165140(s32 a0); -extern void func_801651B8(void *a0); -extern void func_80164F44(void *arg0); -extern void func_80165024(void *a0); -extern void func_80165064(s32 *a0); -extern void func_801650C4(s32 *a0); -extern s32 func_80165140(s32 param_1); -extern s32 func_80165240(s32 a0, s32 a1, s32 a2); -extern s32 D_801E5CF8; -extern void func_801651B8(void * param_1); -extern u8 D_80126CF8; -extern void func_8016533C(void); -extern void func_801653F4(s32 a0); -extern void func_80165580(s32 a0); -extern void func_80165374(s32 a0); -extern void func_80165580(s32 _arg0); -extern void func_801653B8(s32 *a0); -extern s32 func_80165624(s32 a0); -extern u8 D_80078EC5; -extern void (*D_8018FE78[])(void); -extern u8 func_80165658(s32 a0, s32 a1); -extern void func_800CAE0C(s32 a0); -extern void func_801654A8(s32 arg0); -extern void func_80165B28(void *a0); -extern void func_801655E4(s32 a0); -extern u8 D_8018FEF4[]; -extern s32 D_8018FF14[]; -extern u8 D_8018FF90[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018FFB0[]; -extern u8 D_8018FFD0[]; -extern void func_800CAF6C(void); -extern void func_80165770(void); -extern void func_801657D8(void); -extern u8 D_80078EC3; -extern void func_801657A0(void); -extern s32 D_80078EA0; -extern s32 D_80078EA8; -extern u8 D_80078EBB; -extern s32 D_80078ED4; -extern s32 D_80078ED8; -extern s32 D_80078EDC; -extern u8 D_80078EE0; -extern void func_80165874(void); -extern s8 D_80078EC4; -extern void func_801658EC(void); -extern s32 func_80165900(void); -extern s32 func_80165910(void); -extern s32 D_8012672C; -extern s32 D_8012811C; -extern s32 D_80126B08; -extern void func_80165938(void); -extern void func_80165958(void); -extern s32 func_80165978(void); -extern void func_80165988(void); -extern s32 func_801659A8(void); -extern void func_801659B8(void); -extern s32 func_801659CC(void); -extern void func_80165A18(void); -extern s32 func_80165A50(s32 _arg0); -extern void func_80165AC8(void); -extern void func_80165A78(s32 arg0); -extern void (*D_8019006C[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_801900E8[])(void); -extern void func_80165BB4(u8 *a0); -extern void func_80165B6C(u8 *a0); -extern void func_80165C58(s32 arg0); -extern void func_80165BFC(void *a0); -extern void func_80165C78(void); -extern M2C_UNK D_801E5064; -extern void func_80165E2C(u16 *arg0); -extern s32 func_80165FA4(s32 a0, s32 a1, s32 a2); -extern s32 func_80167DBC(s32 a0, s32 a1, s32 a2); -extern s32 func_80167AE0(s32 a0, s32 a1, s32 a2); -extern void func_80165E90(void); -extern void func_80020F34(s32 a0, s32 a1); -extern s32 func_80165FA4(s32 arg0, s32 arg1, s32 arg2); -extern void (*D_801900F4[])(void); -extern void func_80166018(void *a0); -extern void func_80166054(s32 arg0); -extern void func_801661CC(s32 param_1); -extern void func_80166244(void* arg0); -extern void func_8016629C(void *a0); -extern void func_801662F4(void *a0); -extern void func_8016634C(void *a0); -extern void func_801663A4(void *a0); -extern void (*D_801900FC[])(void); -extern void func_801663FC(void *a0); -extern u8 D_800D387C[]; -extern u8 D_800D3888[]; -extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); -extern void func_800D1FC8(s32 a0, s32 a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern void func_801665B4(); -extern void func_80146C3C(); -extern void func_80166438(u8 *a0); -extern s32 func_80128ED8(s32 param_1, s32 *param_2); -extern void func_800D22E4(s32 a0); -extern void func_801665B4(s32 *a0); -extern void (*D_801901C4[])(void); -extern void func_80166618(void *a0); -extern void (*D_801901D4[])(void); -extern void func_80166654(void *a0); -extern s32 func_80166690(s32 param_1, s32 param_2); -extern s32 func_80166994(); -extern s32 func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern s32 func_80167540(s32 arg0); -extern void (*D_801901E4[])(void); -extern void func_801678B4(void *a0); -extern void RotMatrixYXZ(void *a0, void *a1); -extern void func_80048EAC(void *a0, void *a1); -extern s32 func_801670E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80146C3C(void); -extern void func_801678F0(s32 a0); -extern void (*D_801901F0[])(void); -extern void func_80167A9C(void *a0); -extern void func_80167AD8(void); -extern s32 func_80167AE0(s32 param_1, s32 param_2, s32 param_3); -extern void func_80168070(s32 a0, s16 *a1, s16 *a2, void *a3); -extern u8 D_80190150[]; -extern u8 D_80190164[]; -extern s32 func_80167DBC(s32 arg0, s32 arg1, s32 arg2); -extern void func_800D20C0(void *a0, void *a1, s32 a2); -extern void func_80017E68(void *a0, void *a1); -extern void func_800D23D0(void *a0); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern s32 D_801269A4; -extern s32 D_801269A8; -extern s32 D_801269AC; -extern void func_80168070(s32 param_1, s16 *param_2, s16 *param_3, void *param_4); -extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_8016829C(s32 a0); -extern s32 func_80166690(s32 a0, s32 a1); -extern void func_80168328(s32 arg0); -extern void func_801683D8(s32 a0); -extern void func_801684B4(s32 a0); -extern void func_80168540(s32 a0); -extern void func_801685EC(s32 a0); -extern void func_80168640(s32 a0); -extern Blk20 D_800AE620; -extern s32 RotMatrixX(s32 a0, void *a1); -extern void func_80168664(void *arg0); -extern void (*D_80190208[])(void); -extern void func_80168744(void *a0); -extern void func_80168BDC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801687CC(s32 a0); -extern void func_80168780(s32 a0); -extern void func_80168828(void); -extern void func_801687CC(s32 param_1); -extern void func_80168828(); -extern void (*D_80190210[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_80190218[])(void); -extern void func_80168AA8(void *a0); -extern void func_80168AE4(s32 a0); -extern void func_800D2318(void); -extern void func_80168BDC(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void (*D_80190220[])(void); -extern void func_80168D58(void *a0); -extern void func_80168D94(int a0); -extern void func_80168F40(); -extern void func_80168EC4(s32 a0); -extern void func_80168F40(void *arg0); -extern void (*D_80190228[])(void); -extern void func_8016901C(void *a0); -extern void func_80169058(s32 a0); -extern s32 func_80169228(void); -extern void func_801691B8(void *a0); -extern void (*D_80190230[])(void); -extern void func_801693CC(void *a0); -extern void func_80169584(s32 param_1); -extern void func_80169408(s32 a0); -extern void func_8016951C(int param_1); -extern s32 func_80017758(void *a0, void *a1); -extern s32 func_80017DC4(void *a0, void *a1); -extern void func_801696D8(s32 a0, s32 a1); -extern void (*D_80190238[])(void); -extern void func_80169830(void *a0); -extern void func_8016986C(s32 a0); -extern s32 func_80169A4C(s32 a0, s32 a1); -extern void func_801699D0(void *arg0); -extern void (*D_801902EC[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_801902F4[])(void); -extern void func_80169F00(void *a0); -extern char D_801902A4[]; -extern char D_80190264[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8019032C[])(void); -extern void func_8016A020(void *a0); -extern void func_8016A05C(void *a0); -extern void func_8016A290(s32 a, void *b, void *c); -extern void func_8016A08C(s32 param_1); -extern void func_8016A1CC(int param_1); -extern void func_8016A290(s32 param_1, void *param_2, void *param_3); -extern void (*D_80190338[])(void); -extern void func_8016A700(void *a0); -extern s32 func_8016A73C(s32 arg0); -extern s32 func_8016A8FC(s32 a0); -extern void func_8016A890(s32 arg0); -extern s32 func_80016A5C(); -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern void func_8016AA50(s32 param_1, s32 param_2); -extern void (*D_80190380[])(void); -extern void func_8016AB30(void *a0); -/* ==== end §8b carried decl layer ==== */ - - -/* func_8016AB6C (ov_SC01_077 jr family, 188 ins, jtbl_801D8BC8) — Phase 26 crack - * PIN-FREE. Status: **MATCH (188 ins)**, jtbl VERIFIED exact. - * - * jtbl_801D8BC8 = 8 entries, bound `sltiu $v0,$v1,8`, default -> after-switch join. - * case 0->+0x88 1->+0xA8 2->+0x110 3->+0x130 4->+0x110 5->+0xA8 6->+0x178 7->+0x178 - * My .rodata relocs (8x R_MIPS_32 vs .text) are byte-identical to that: - * 88 a8 110 130 110 a8 178 178 (objdump -r/-s -j .rodata .run/match/func_8016AB6C/t.o) - * - * ============================================================================ - * LEVER 9 — THE CALL-SINK (the last 2 ins; NEW, generalizable). See cookbook §48-B. - * ============================================================================ - * FINAL RESIDUAL was 2 ins (idx 141/143): both present and byte-correct, only transposed - * around `jal func_8001CE28`: - * mine : addu $a1,$s0,$zero ; jal ; [delay] addu $a0,$s2,$zero - * target: addu $a0,$s2,$zero ; jal ; [delay] addu $a1,$s0,$zero - * - * It was NOT a scheduling residual (sched1 already emitted a0-then-a1, per calls.c:1878 - * which loads arg regs in ASCENDING arg order). It was a REGALLOC residual: - * - * The old shape `f(A,LIT); p = LIT;` created TWO pseudos: a block-local arg pseudo - * (reg145/150, holding the symbol) and a GLOBAL allocno `p` (reg79) fed by a copy at the - * end of each arm. greg dump said: `;; 79 preferences: 5 16`. - * - $5 copy-pref <- the join's arg move (set (reg:SI 5 a1) (reg 79)) - * - $16 copy-pref <- the arms' copies (set (reg 79) (reg145)) ... because - * set_preference (global.c:1535) applies reg_renumber[], so a LOCALLY-allocated - * pseudo counts as its hard reg. - * find_reg's copy-preference override (global.c:~1000) scans hard regs `for (i = 0; i < - * FIRST_PSEUDO_REGISTER; i++)` — plain ASCENDING regno, NOT reg_alloc_order. So $5 beats - * $16, deterministically. The ONLY way $16 wins is if $5 is already in `used` when that - * scan runs, and the only reachable way to do that is - * allocno_calls_crossed[p] > 0 -> find_reg sets used1 = call_used_reg_set (global.c:906) - * -> AND_COMPL(hard_reg_copy_preferences, used) strips $5 -> $16 is all that's left. - * reg79 crossed NO call (def after func_80024054, last use before func_8001CE28), so $5 won. - * p in $a1 => the arms' copies became `move $5,$16`, cross_jump merged them to the top of - * the join (ahead of the a0 move), and reorg then slotted the a0 move. - * - * THE FIX — SINK THE CALL INTO THE ARMS (byte-proven, close=2 -> MATCH): - * BEFORE AFTER - * if (c) { s3 = f(A1,P1)+3; p = P1; } if (c) { s3 = f(A1,P1)+3; g(obj,P1); } - - * else { s3 = f(A2,P2)+9; p = P2; } else { s3 = f(A2,P2)+9; g(obj,P2); } - * g(obj, p); // no join copy, no `p` at all - * Duplicating the call kills the cross-block pseudo `p` entirely. The pointer is now a - * BLOCK-LOCAL pseudo per arm (lreg: "Register 144 used 3 times across 12 insns in block 13; - * crosses 1 call; pointer") -> LOCAL-alloc, crosses a call -> $s0, exactly as before, so the - * load-bearing "$16 occupant" that pushes arg0 off $s0 onto $s1 (lever 3) is PRESERVED. - * greg goes from "9 regs to allocate: ... 79 ..." to "8 regs to allocate:" (79 gone), and - * dispositions are unchanged: arg0=$s1, obj=$s2, var_s3=$s3, var_s0=$s0. - * The duplicated `[addu $a0,$s2][addu $a1,$s0][jal g]` tail is IDENTICAL in both arms after - * reload (same hard regs!), so jump2's cross_jump re-merges it into a single join block — - * ZERO extra bytes — and dbr then fills the jal slot with the nearest insn above it, which - * is now the a1 move. Target shape, exactly. - * - * GENERAL RULE: when a value is defined in both arms of an if/else and consumed only by a - * call in the join, gcc's join-copy makes it a global allocno whose ascending-scan copy-pref - * hands it the ARG register. If the target instead keeps it in a callee-saved reg, DUPLICATE - * THE CALL INTO BOTH ARMS — cross_jump gives the bytes back for free, and the value demotes to - * a call-crossing block-local, which local-alloc parks in $s0. (Inverse of §48-A1: A1 sinks an - * INIT to shorten a live range; this sinks the CONSUMER to delete the allocno outright.) - * - * LEVERS PROVEN HERE (see the report / cookbook): - * 1. LOOP ROTATION (§46 L1, exact trigger): stmt.c:2255 expand_end_loop scans forward from the - * loop start label and stops at the FIRST CODE_LABEL, but sets last_test_insn on any - * unconditional `jump end_label` — which is exactly what `break` emits. So `break` out of - * the first test rotates the loop (peels the test into a preheader). `goto lout;` jumps to a - * USER label, not end_label, so last_test_insn stays 0 and the loop is NOT rotated. - * (`do{}while()` alone does NOT help: expand_exit_loop_if_false ends with a CODE_LABEL, so - * expand_end_loop's "already ends in a bare condjump" guard never fires.) - * Bonus: the unrotated loop is what keeps the s16 re-sign-extension INSIDE the loop - * (sll16/sra16 for the AND, and `sra 20` reusing that same `sll 16` for the >>4). - * 2. `var_v1 = -0x1000;` AFTER the call, not before -> it no longer crosses the call -> $v1 - * instead of a callee-saved reg. - * 3. THE $s0/$s1 DIAL (new): `f(A,B); p = B;` (literal args, then assign p from the SAME - * literal AFTER the call) makes cse rewrite `p = B` as a COPY of the call's arg pseudo. - * That arg pseudo is then live across the call yet stays BLOCK-LOCAL -> local_alloc gives it - * $s0 -> every global allocno live there now conflicts with hard reg $16 -> the big pointer - * (arg0) is pushed off $s0 onto $s1 and the whole allocation flips. Writing `p = B; f(A,p);` - * instead merges them into ONE global allocno, no local, and arg0 takes $s0. (99 -> 54.) - * 4. §46 L2 refinement: a SAME-mode copy always dies (cse canon_reg/qty_first_reg). A - * DIFFERENT-mode copy `(set (reg:QI x) (subreg:QI (reg:SI y)))` is not a plain reg-reg copy, - * so cse cannot merge the qtys and the copy insn SURVIVES. That is how `var_c2 = var_s0;` - * materialises the target's `addu $v0,$s0,$zero`. (187 -> 188 ins.) - * 5. ANTI-DEP PINS A COPY EARLY: sched deterministically SINKS a copy to just before its - * consumers. Reusing the SAME local (var_s0) as the if/else scratch, copying it out, then - * redefining var_s0 creates a WAR dep that pins the copy ahead of the redefinition — which - * also removes the live-range overlap so both share $s0. (54 -> 22.) - * 6. `t = x+1; x = t+1;` is folded by cse to `x = x+2`. `t = x+1; x = t; x++;` keeps - * `addiu t,x,1 ; addiu x,t,1`. (22 -> 21.) - * 7. STORE-SINK: to get "compute chain A first, store A last", put A's store FIRST in the - * source — the backward list scheduler sinks a store (no dependents) but keeps the compute - * order. (21 -> 8.) - * 8. DELAY SLOT = source order: reorg takes the closest eligible insn before the jal, and the - * backward scheduler puts the HIGHEST-LUID (latest in source) of the tied independents - * nearest the call. `var_s0 = 3;` written AFTER the call statement (sched still hoists it - * above the call — pseudos may cross calls at sched1) puts `addiu $s0,$zero,3` in the delay - * slot instead of the a1=0 arg move. (8 -> 2.) - */ - - - - - -s32 func_8016AB6C(s32 arg0) { - extern s32 func_801783D0(s32 a0, s32 a1); - extern s32 func_80024054(u8 *a0, u8 *a1); - extern void func_8001CE28(Obj_8016AB6C *a0, u8 *a1); - extern u8 D_80190340[]; - extern u8 D_80190350[]; - extern u8 D_801E5FC8[]; - extern u8 D_801E5FF0[]; - - SVec_8016AB6C sp10; - SVec_8016AB6C sp18; - s16 var_s0; - s16 var_v1; - s16 var_s3; - s16 tmp; - s32 temp_v0; - u32 r; - u8 var_c2; - Obj_8016AB6C *obj; - - temp_v0 = func_801783D0(((Ent_8016AB6C *)arg0)->unk30, 0); - var_s0 = 3; - var_v1 = -0x1000; - ((Ent_8016AB6C *)arg0)->unk30 = temp_v0; - do { - if (temp_v0 & var_v1) { - goto lout; - } - var_s0--; - var_v1 >>= 4; - } while (var_s0 >= 0); -lout: - switch (((Ent_8016AB6C *)arg0)->unk2C) { - case 0: - ((Ent_8016AB6C *)arg0)->unk26 = 1; - ((Ent_8016AB6C *)arg0)->unk24 = 0x60; - ((Ent_8016AB6C *)arg0)->unkA -= 0x20; - break; - case 1: - case 5: - ((Ent_8016AB6C *)arg0)->unk14 = 0xFFF60000; - r = ((u32(*)())rand)(); - tmp = var_s0 + 1; - var_s0 = tmp; - ((Ent_8016AB6C *)arg0)->unk10 = (r & 0xF) - 8 << 0xF; - ((Ent_8016AB6C *)arg0)->unk18 = ((r >> 4) & 0xF) - 8 << 0xF; - ((Ent_8016AB6C *)arg0)->unk26 = 4; - ((Ent_8016AB6C *)arg0)->unk24 = 0x80; - ((Ent_8016AB6C *)arg0)->unk30 |= 0xA << (tmp * 4); - break; - case 2: - case 4: - ((Ent_8016AB6C *)arg0)->unk26 = 4; - ((Ent_8016AB6C *)arg0)->unk24 = 0x80; - ((Ent_8016AB6C *)arg0)->unkA -= 0x18; - break; - case 3: - tmp = var_s0 + 1; - var_s0 = tmp; - var_s0++; - ((Ent_8016AB6C *)arg0)->unk26 = 4; - ((Ent_8016AB6C *)arg0)->unk24 = 0x80; - ((Ent_8016AB6C *)arg0)->unkA -= 0x18; - ((Ent_8016AB6C *)arg0)->unk30 = (((Ent_8016AB6C *)arg0)->unk30 | (0xF << (tmp * 4))) * 0x10; - break; - case 6: - case 7: - obj = ((Obj_8016AB6C *(*)(s32))func_801465C0)(temp_v0); - if (obj == 0) { - ((void(*)(Ent_8016AB6C *))func_80146C3C)(((Ent_8016AB6C *)arg0)); - return; - } - sp10.vx = ((Ent_8016AB6C *)arg0)->unk6; - sp10.vy = ((Ent_8016AB6C *)arg0)->unkA - 0x18; - sp10.vz = ((Ent_8016AB6C *)arg0)->unkE; - ((void(*)(SVec_8016AB6C *, SVec_8016AB6C *, s32))func_800D20C0)(&sp10, &sp18, 6); - ((Ent_8016AB6C *)arg0)->unk6 = sp10.vx; - ((Ent_8016AB6C *)arg0)->unkA = sp10.vy; - ((Ent_8016AB6C *)arg0)->unkE = sp10.vz; - if (((Ent_8016AB6C *)arg0)->unk2C == 6) { - var_s3 = func_80024054(D_80190340, D_801E5FC8) + 3; - func_8001CE28(obj, D_801E5FC8); - } else { - var_s3 = func_80024054(D_80190350, D_801E5FF0) + 9; - func_8001CE28(obj, D_801E5FF0); - } - obj->unkE = var_s3; - obj->unk4 |= 0x04000000; - if (((Ent_8016AB6C *)arg0)->unk2C == 6) { - obj->unk27 = 0xB5; - var_s0 = 0x70; - } else { - obj->unk27 = 0xAE; - var_s0 = 0xB0; - } - var_c2 = var_s0; - var_s0 = var_s3 >> 2; - obj->unk2E = -8; - obj->unk30 = 0; - obj->unk26 = var_c2; - obj->unk25 = var_c2; - obj->unk24 = var_c2; - ((Ent_8016AB6C *)arg0)->unk20 = obj; - break; - } - ((Ent_8016AB6C *)arg0)->unk2A = 4 - (var_s0 * 4); - ((Ent_8016AB6C *)arg0)->unk28 = var_s0; - ((Ent_8016AB6C *)arg0)->unk1C = 0xB; - ((Ent_8016AB6C *)arg0)->unk2++; -} - - - -extern void func_8016B234(); -extern void func_800D22E4(s32 a0); - -void func_8016AE5C(s32 param_1) { - s32 sp; - - sp = *(s32 *)(param_1 + 0x20); - if (*(u32 *)(param_1 + 0x2C) < 6) { - func_8016B234(); - } - switch (*(u32 *)(param_1 + 0x2C)) { - case 0: - *(s16 *)(param_1 + 0xA) -= *(s32 *)(param_1 + 0x1C); - *(s32 *)(param_1 + 0x1C) = *(s32 *)(param_1 + 0x1C) - 1; - if (*(s32 *)(param_1 + 0x1C) != 0) { - if ((*(s32 *)(param_1 + 0x1C) & 3) == 1) { - *(s16 *)(param_1 + 0x26) += 1; - } - return; - } - *(s16 *)(param_1 + 0x24) = 0xFF; - *(s32 *)(param_1 + 0x1C) = 8; - *(s16 *)(param_1 + 2) += 1; - return; - case 1: - case 5: - func_800D22E4(param_1); - *(s32 *)(param_1 + 0x14) += 0x18000; - case 2: - case 3: - case 4: - case 6: - case 7: - *(s16 *)(param_1 + 0xA) -= *(s32 *)(param_1 + 0x1C); - *(s32 *)(param_1 + 0x1C) = *(s32 *)(param_1 + 0x1C) - 1; - if (*(s32 *)(param_1 + 0x1C) == 0) { - if (*(u32 *)(param_1 + 0x2C) < 6) { - *(s16 *)(param_1 + 0x24) = 0xC0; - *(s32 *)(param_1 + 0x1C) = 8; - } else { - *(u8 *)(sp + 0x26) = 0xC0; - *(u8 *)(sp + 0x25) = 0xC0; - *(u8 *)(sp + 0x24) = 0xC0; - *(s32 *)(param_1 + 0x1C) = 0xC; - } - *(s16 *)(param_1 + 2) += 1; - } - break; - } -} - -DEFINE_func_8016AFB0() /* dedup: shared engine-core @0x8016AFB0 (src/shared) */ - -DEFINE_func_8016B114() /* dedup: shared engine-core @0x8016B114 (src/shared) */ - - - -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_80016ED4(void *a0); - - -void func_8016B234(s32 param_1) { - - extern u8 D_800AF648; - extern u8 D_80190378; - short input[3]; - Prim_B234 prim; - struct { s16 xy[2]; s32 sp1c; s32 flag; } out; - void *dp; - u32 uVar1; - s16 iVar2; - s32 X, Y0, Y1, base, ni; - register s32 sy __asm__("$16"); - register s16 xtmp __asm__("$4"); - register s32 sxy __asm__("$3"); - - dp = &D_800AF648; - func_8004914C(dp); - func_800491AC(dp); - input[0] = *(u16 *)(param_1 + 6); - input[1] = *(u16 *)(param_1 + 0xA); - input[2] = *(u16 *)(param_1 + 0xE); - RotTransPers((s32)input, (s32)out.xy, &out.sp1c, &out.flag); - if ((out.flag & 0xffffefff) == 0) { - sxy = *(s32 *)out.xy; - prim.a04 = 0x10; - X = *(u16 *)(param_1 + 0x2a) + sxy; - sy = (u16)out.xy[1]; - prim.ax = prim.cx = X; - prim.bx = prim.dx = X + 8; - Y0 = sy - *(u16 *)(param_1 + 0x26); - prim.ay = prim.by = Y0; - sxy = *(u16 *)(param_1 + 0x26); - prim.v0 = prim.v1 = 0x1d0; - prim.v2 = prim.v3 = 0x1d8; - sxy = sy + sxy; - prim.cy = prim.dy = sxy; - __asm__ __volatile__("" : : "r"(sy)); - prim.r = prim.g = prim.b = *(u8 *)(param_1 + 0x24); - prim.code = (&D_80190378)[*(s32 *)(param_1 + 0x2c)]; - if (*(s16 *)(param_1 + 0x26) < 5) { - prim.tag = 0; - } else { - prim.tag = 0x50000000; - } - uVar1 = *(u16 *)(param_1 + 0x30); - iVar2 = 0; - if (0 < *(s16 *)(param_1 + 0x28) + 1) { - do { - base = ((uVar1 + 1) & 0xf) << 3; - prim.u0 = prim.u2 = base + 0x620; - prim.u1 = prim.u3 = base + 0x628; - func_80016ED4(&prim); - uVar1 = (s32)(uVar1 << 0x10) >> 0x14; - iVar2 = iVar2 + 1; - __asm__ __volatile__(""); - xtmp = prim.ax; - prim.cx = prim.ax = xtmp - 8; - prim.bx = prim.dx = xtmp; - } while ((s16)iVar2 < *(s16 *)(param_1 + 0x28) + 1); - } - } -} - - -DEFINE_func_8016B3F4() /* dedup: shared engine-core @0x8016B3F4 (src/shared) */ - -DEFINE_func_8016B428() /* dedup: shared engine-core @0x8016B428 (src/shared) */ - -DEFINE_func_8016B448() /* dedup: shared engine-core @0x8016B448 (src/shared) */ - - -extern void (*D_801903FC[])(void); - -void func_8016B4BC(void *a0) { - D_801903FC[*(u16 *)((s32)a0 + 0x2)](); -} - - - -// @class: struct -// @stuck: none — MATCH - -extern void func_80015978(s32 a0, s32 *a1); -extern int func_8016B9F8(int); -extern int func_8016B834(int, int); -extern void func_8016B984(void *a0); -extern void func_8016B91C(int); -extern int D_801E6018; - -void func_8016B4F8(int param_1) -{ - int iVar1; - int uVar2; - volatile int buf[2]; - - ((void (*)(int, void *))func_80015978)(param_1 + 4, &D_801E6018); - if (func_8016B9F8(param_1) == 0) { - *(int *)(param_1 + 0x18) = 0; - *(int *)(param_1 + 0x14) = 0; - *(int *)(param_1 + 0x10) = 0; - iVar1 = func_8016B834(param_1, 0); - *(int *)(param_1 + 0x10) = iVar1; - if (iVar1 != 0) { - iVar1 = func_8016B834(param_1, 1); - *(int *)(param_1 + 0x14) = iVar1; - if (iVar1 != 0) { - iVar1 = func_8016B834(param_1, 2); - *(int *)(param_1 + 0x18) = iVar1; - if (iVar1 != 0) goto success; - } - } - } - ((void (*)(int))func_8016B984)(param_1); - return; -success: - func_8016B91C(param_1); - uVar2 = *(int *)(param_1 + 0x2c); - if (uVar2 == 0) { - uVar2 = 0xf0; - } else { - uVar2 = 0x2d0; - } - *(int *)(param_1 + 0x1c) = uVar2; - uVar2 = *(unsigned short *)(param_1 + 2); - uVar2 = uVar2 + 1; - *(unsigned short *)(param_1 + 2) = uVar2; -} - - - -// @class: schedule -// @stuck: none — MATCH - - -extern s32 func_8016B9F8(s32 param_1); -extern void func_8016B984(void *a0); -extern void func_8016B6BC(s32, s32, s32, s32); -extern void func_8016B91C(s32); - -extern s16 D_801903F0[]; - -void func_8016B5C0(s32 param_1) { - s32 iVar4; - s32 iVar2; - s32 iVar5; - s16 sVar1; - s16 *psVar5; - s32 i; - - iVar4 = *(s32 *)(param_1 + 0x18); - if (((s32 (*)(void))func_8016B9F8)() != 0) { - goto L984; - } - sVar1 = *(s16 *)(iVar4 + 0x1a) + 0x200; - *(s16 *)(iVar4 + 0x1a) = sVar1; - *(s16 *)(iVar4 + 0x18) = sVar1; - if (*(s32 *)(param_1 + 0x2c) == 0) { - iVar2 = *(s32 *)(param_1 + 0x1c); - } else { - iVar2 = *(s32 *)(param_1 + 0x1c) / 3; - } - iVar5 = *(s32 *)(param_1 + 0x1c) + -0x20; - *(s32 *)(param_1 + 0x1c) = iVar5; - if (iVar5 >= 0) { - goto LOOP; - } -L984: - ((void (*)(s32))func_8016B984)(param_1); - return; -LOOP: - i = 0; - psVar5 = D_801903F0; - do { - func_8016B6BC(param_1, iVar2, (s32)*psVar5, (s32)(s16)i); - psVar5 = psVar5 + 1; - i = i + 1; - } while (i < 6); - func_8016B91C(param_1); - return; -} - - - -// @class: schedule -// @stuck: none — MATCH (94/94 ins, match_one relocation-masked) -// -// Exemplar of the 138-member h_seq family. The whole crack was ONE statement-order -// lever in the tail: the target's post-func_80015978 fix-up runs -// v[2].x += off.x; v[2].y += off.y; v[0].c = 3; -// (the `c = 3` store LAST). Writing `c = 3` between the two v[2] RMWs — the order the -// Ghidra-C literally prints, and what every prior draft copied — costs 12 mismatches: -// gcc hoists the `li 3` into the load-delay window, which pushes v[2].x into $v1 and -// the off.x temp into $a0, and then the `addu $a0,$s1,$zero` arg copy can no longer be -// scheduled early enough to become the base register of the v[2]/v[0].c stores. -// With `c = 3` last, the arg copy births at the v[2].x/v[2].y boundary (idx 76) exactly -// as the target does, and the mixed $s1-load / $a0-store addressing falls out for free. -// (§67-adjacent: the copy PLACEMENT was the root cause — but here plain statement order -// reaches it, no `__asm__` launder and no register pin needed. Prior notes calling this a -// regalloc tie-break and pinning $a0 were chasing the consequence, not the cause.) -// -// Everything else follows the Ghidra-C: `Prim *p = &prim` (one alias only — a second -// pointer name splits the pseudo and breaks the $s1 base), the `q++` post-increment -// running pointer over the 8-byte table rows, and the ((param_4 << 16) >> 14) byte-offset -// index into D_801903D8 (sll 16 / sra 14). - - - /* 0x28 */ - - - /* the 8-byte D_801903D8[] row */ - -extern void func_80013CFC(s32 a0, s32 a1, void *a2); -extern void func_80015978(s32 a0, s32 *a1); -extern void func_8001739C(void *a0); - -/* Def sig is deliberately (s32,s32,s32,s32) — byte-identical to the (int,unsigned,short,int) - * spelling, and IDENTICAL to this TU's own caller decl `extern void func_8016B6BC(s32,s32,s32,s32);` - * (ov_SC01_077_jr_8016AB6C.c), so there is no §73/§57 def-side self-decl conflict to reconcile. */ -void func_8016B6BC(s32 param_1, s32 param_2, s32 param_3, s32 param_4) { - - extern int D_801903D8; - int iVar1; - M8_8016B6BC *q; - Prim_8016B6BC prim; - Prim_8016B6BC *p = &prim; - DVec_8016B6BC off; - unsigned int v; - unsigned int c; - - q = (M8_8016B6BC *)*(int *)((int)&D_801903D8 + ((param_4 << 0x10) >> 0xe)); - p->color = 0x50000000; - c = (unsigned int)param_2; - v = 0x20; - if (c < 0x20) { - v = c; - } - if (*(int *)(param_1 + 0x2c) == 0) { - c = c | (v << 0x10 | v << 8); - } else { - c = c << 8 | v << 0x10 | v; - } - p->combined = c; - iVar1 = (int)(short)param_3; - p->z1c = 0; - p->z20 = 0; - func_80013CFC(iVar1, (int)q++, &p->v[0]); - func_80013CFC(iVar1, (int)q++, &p->v[1]); - func_80013CFC(iVar1, (int)q, &p->v[2]); - func_80015978(param_1 + 4, (s32 *)&off); - p->v[0].x += off.x; - p->v[0].y += off.y; - p->v[1].x += off.x; - p->v[1].y += off.y; - p->v[2].x += off.x; - p->v[2].y += off.y; - p->v[0].c = 3; - func_8001739C(p); -} - - - -// @class: schedule -// @stuck: none — MATCH (statement order: compute puVar2 base before puVar3 table lookup so param*0x40+base schedule into prologue, leaving the 0x2c load-delay nop) -extern void func_801465C0(void); -extern void func_8001CD9C(int, void *); -extern void func_800233CC(void *, unsigned short); - -extern int *D_80190434[]; -extern unsigned short D_8019043C[]; -extern unsigned short D_80190444[]; -extern unsigned char D_801E6020[]; - -int func_8016B834(int param_1, int param_2) { - int *puVar3; - int *puVar2; - int iVar1; - - puVar2 = (int *)(D_801E6020 + param_2 * 0x40); - puVar3 = D_80190434[*(int *)(param_1 + 0x2c)]; - iVar1 = ((int (*)(void))func_801465C0)(); - if (iVar1 != 0) { - func_8001CD9C(iVar1, puVar2); - func_800233CC(puVar2, D_8019043C[param_2]); - puVar2[0] = *(int *)((int)puVar3 + param_2 * 8); - puVar2[1] = *(int *)((int)puVar3 + param_2 * 8 + 4); - *(unsigned int *)(iVar1 + 4) = *(unsigned int *)(iVar1 + 4) | 0x50040000; - *(short *)(iVar1 + 0x1e) = D_80190444[param_2]; - } - return iVar1; -} - - -DEFINE_func_8016B91C() /* dedup: shared engine-core @0x8016B91C (src/shared) */ - -DEFINE_func_8016B964() /* dedup: shared engine-core @0x8016B964 (src/shared) */ - -DEFINE_func_8016B984() /* dedup: shared engine-core @0x8016B984 (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (result is func_8012EFB8's return saved in $s0 across the func_80015954 call; the save-move fills the 2nd call's delay slot. func_80015954's return is discarded.) - - -extern s32 D_801E6018; -extern void func_8012EFB8(s32 a0); -extern void func_80015954(s32 a0, s32 a1); - -s32 func_8016B9F8(s32 param_1) -{ - s32 buf[2]; - u32 v; - - v = ((u32 (*)(s32 *, s32 *))func_8012EFB8)(&D_801E6018, buf); - ((void (*)(s32 *, s32 *))func_80015954)(buf, (s32 *)(param_1 + 4)); - return (v & 0xffffefff) != 0; -} - - -DEFINE_func_8016BA48() /* dedup: shared engine-core @0x8016BA48 (src/shared) */ - -DEFINE_func_8016BA68() /* dedup: shared engine-core @0x8016ba68 (src/shared) */ - - -DEFINE_func_8016BADC() /* dedup: shared engine-core @0x8016BADC (src/shared) */ - - -extern void (*D_8019044C[])(void); - -void func_8016BBA4(void *a0) { - D_8019044C[*(u16 *)((s32)a0 + 0x2)](); -} - - -// @class: plumbing -// @stuck: none — MATCH (56 ins, match_one relocation-masked) - - - - -s32 func_8016BBE0(s32 param_1) { - extern void func_8016BF34(void *a0); - extern void func_8016BF50(s32); - extern void func_8001CF00(s32); - extern M2C_UNK D_801E6154; - extern u8 D_801E6155; - extern u8 D_801E6156; - extern M2C_UNK D_801E6158; - extern u8 D_801E6159; - extern u8 D_801E615A; - - int iVar1; - int temp; - - iVar1 = ((s32 (*)(void))func_801465C0)(); - *(int *)(((int)param_1) + 0x20) = iVar1; - if (iVar1 != 0) { - ((void (*)(s32))func_8016BF34)(((int)param_1)); - func_8016BF50(((int)param_1)); - func_8001CF00(iVar1); - *(s16 *)(iVar1 + 0x10) = 0; - temp = *(int *)(((int)param_1) + 0x2c); - *(s16 *)(iVar1 + 0x14) = 0; - *(s16 *)(iVar1 + 0x1a) = 0; - *(s16 *)(iVar1 + 0x18) = 0; - *(s16 *)(iVar1 + 0x12) = temp * 0x555; - *(s16 *)(((int)param_1) + 0x10) = 0; - *(s16 *)(((int)param_1) + 0x14) = 0; - (*(u8 *)&D_801E6154) = 0x20; - D_801E6155 = 0x20; - D_801E6156 = 0; - (*(u8 *)&D_801E6158) = 0xc0; - D_801E6159 = 0xc0; - D_801E615A = 0; - *(u16 *)(((int)param_1) + 2) += 1; - } else { - ((void (*)(s32))func_80146C3C)(((int)param_1)); - } -} - - - -extern void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3); -extern M2C_UNK D_801E6154; -extern M2C_UNK D_801E6158; - -void func_8016BCC0(void *arg0) { - u16 temp_a2; - u16 temp_v0; - void *temp_s0; - - temp_s0 = M2C_FIELD(arg0, void **, 0x20); - func_8016BF50(); - temp_a2 = M2C_FIELD(arg0, u16 *, 0x10) + 0x60; - M2C_FIELD(arg0, u16 *, 0x10) = temp_a2; - temp_v0 = M2C_FIELD(temp_s0, u16 *, 0x1A) + temp_a2; - M2C_FIELD(temp_s0, u16 *, 0x1A) = temp_v0; - M2C_FIELD(temp_s0, u16 *, 0x18) = temp_v0; - M2C_FIELD(temp_s0, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_s0, u16 *, 0x12) + 0x71) & 0xFFF); - func_8016BFA8(arg0, &D_801E6154, &D_801E6158, temp_s0 + 0x18); - if ((s16) M2C_FIELD(temp_s0, u16 *, 0x1A) >= 0x1001) { - M2C_FIELD(temp_s0, u16 *, 0x18) = 0x1000U; - M2C_FIELD(temp_s0, u16 *, 0x1A) = 0x1000U; - func_80146E90(arg0, M2C_FIELD(arg0, s32 *, 0x30)); - M2C_FIELD(arg0, u16 *, 2) = (u16) (M2C_FIELD(arg0, u16 *, 2) + 1); - } -} - - -// @class: struct -// @stuck: none — MATCH (74 ins, relocation-masked) - - - - -s32 func_8016BD78(s32 param_1) -{ - extern void func_8016BF50(void); - extern u8 D_801E6155; - extern u8 D_801E6156; - extern u8 D_801E6159; - extern u8 D_801E615A; - - s32 iVar2; - u16 uVar1; - u8 *p1; - u8 *p2; - - iVar2 = *(s32 *)(param_1 + 0x20); - func_8016BF50(); - - p1 = &(*(u8 *)&D_801E6154); - if (*p1 != 0) *p1 -= 4; - if (D_801E6155 != 0) D_801E6155 -= 4; - if (D_801E6156 != 0) D_801E6156 -= 4; - p2 = &(*(u8 *)&D_801E6158); - if (*p2 != 0) *p2 -= 4; - if (D_801E6159 != 0) D_801E6159 -= 4; - if (D_801E615A != 0) D_801E615A -= 4; - - uVar1 = *(u16 *)(iVar2 + 0x18) - 0x80; - *(u16 *)(iVar2 + 0x18) = uVar1; - if ((s32)((unsigned int)uVar1 << 0x10) < 0) { - *(u16 *)(iVar2 + 0x18) = 0; - *(s16 *)(param_1 + 2) = *(s16 *)(param_1 + 2) + 1; - } - *(u16 *)(iVar2 + 0x12) = (*(u16 *)(iVar2 + 0x12) + 0x22) & 0xfff; - - ((void (*)(s32, u8 *, u8 *, s32))func_8016BFA8)(param_1, p1, p2, iVar2 + 0x18); -} - - - -// @class: plumbing -// @stuck: none — MATCH - -s32 func_8016BEA0(s32 param_1) -{ - extern void func_8016BF50(void); - - int iVar2; - unsigned short uVar1; - - iVar2 = *(int *)(((int)param_1) + 0x20); - func_8016BF50(); - uVar1 = *(unsigned short *)(((int)param_1) + 0x10) - 0x18; - *(unsigned short *)(((int)param_1) + 0x10) = uVar1; - *(unsigned short *)(iVar2 + 0x1a) = *(unsigned short *)(iVar2 + 0x1a) + uVar1; - *(unsigned short *)(iVar2 + 0x12) = (*(unsigned short *)(iVar2 + 0x12) + 0x22) & 0xfff; - ((void (*)(int, void *, void *, int))func_8016BFA8)(((int)param_1), &(*(int *)&D_801E6154), &(*(int *)&D_801E6158), iVar2 + 0x18); - if (*(short *)(iVar2 + 0x1a) < 0) { - ((void (*)(int))func_80146C3C)(((int)param_1)); - } -} - - - -DEFINE_func_8016BF34() /* dedup: shared engine-core @0x8016BF34 (src/shared) */ - - -/* §71 sibling-first: this is the head of the already-matched func_8016C2C4 - * (src/ov_SC03_099/ov_SC03_099_jr_8016AB6C.c L2707) lifted into its own leaf. */ - -DEFINE_func_8016BF50() /* dedup: shared engine-core @0x8016BF50 (src/shared) */ - - - -extern void func_8016BFD0(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern s32 D_801E60E0; - -void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3) { - func_8016BFD0(a0, a1, a2, a3, &D_801E60E0); -} - - -// @class: struct -// @stuck: none — MATCH (95 ins). Keys: (1) 4-byte unaligned copies via `struct{char b[4];}` -// assignment -> lwl/lwr/swl/swr with reload; (2) 0x40-byte stack buffer `buf` (Mtx_8016BFD0 padded to -// 0x40, not 0x20) sets the frame to 0x70 and lands v1/v2 at sp+0x50/0x58; (3) func_80017714(a4) -// takes param_5 as an arg -> gcc materializes `addu $a0,$s0,$zero` and stores the 4 zeros via $a0. - - - - -void func_8016BFD0(s32 a0, s32 a1, s32 a2, s32 a3, void *a4) { - extern void func_80017714(); - extern s32 D_8019045C; - extern s32 D_80190464; - extern s32 D_8019046C; - extern s32 D_80190474; - - Mtx_8016BFD0 buf; - Vec3_8016BFD0 v1; - Vec3_8016BFD0 v2; - s32 iVar5 = *(s32 *)(a0 + 0x20); - - *(u32 *)((s32)a4 + 0x30) = 0x50000000; - *(W_8016BFD0 *)((s32)a4 + 0x20) = *(W_8016BFD0 *)a1; - *(W_8016BFD0 *)((s32)a4 + 0x24) = *(W_8016BFD0 *)a1; - *(W_8016BFD0 *)((s32)a4 + 0x28) = *(W_8016BFD0 *)a2; - *(W_8016BFD0 *)((s32)a4 + 0x2c) = *(W_8016BFD0 *)a2; - - v1.x = *(u16 *)(a0 + 6); - v1.y = *(u16 *)(a0 + 0xa); - v1.z = *(u16 *)(a0 + 0xe); - ((void(*)())func_8012EFB8)(&v1, &v1); - ((void(*)())func_80013F3C)(&buf); - ((void(*)())func_800123F0)(&buf, (s32)*(s16 *)(iVar5 + 0x12)); - - v2.x = *(u16 *)(a3 + 0); - v2.y = *(u16 *)(a3 + 2); - v2.z = *(u16 *)(a3 + 4); - ((void(*)())func_80020F34)(&buf, &v2); - - buf.t[0] = v1.x; - buf.t[1] = v1.y; - buf.t[2] = v1.z; - ((void(*)())func_8012F14C)(&buf, &D_8019045C, (s32)a4); - ((void(*)())func_8012F14C)(&buf, &D_80190464, (s32)a4 + 8); - ((void(*)())func_8012F14C)(&buf, &D_8019046C, (s32)a4 + 0x10); - ((void(*)())func_8012F14C)(&buf, &D_80190474, (s32)a4 + 0x18); - - *(s16 *)((s32)a4 + 4) = 0; - *(s16 *)((s32)a4 + 0xc) = 0; - *(s16 *)((s32)a4 + 0x14) = 0; - *(s16 *)((s32)a4 + 0x1c) = 0; - func_80017714(a4); -} - - - - -extern void (*D_8019047C[])(void); - -void func_8016C14C(void *a0) { - D_8019047C[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern void func_801465C0(void); -extern void func_80149350(s32 arg0); - -void func_8016C188(s32 param) -{ - register s32 s1 __asm__("$17"); - register s32 s2 __asm__("$18"); - register u8 *s0 __asm__("$16"); - u16 buf[3]; - s16 *pBCC; - s16 *pBD4; - s32 t34; - - extern void func_80015954(s32, s32); - extern s32 func_8016C374(s32, s32, s32, s32); - extern void func_80146C3C(void); - extern void func_8001CD9C(s32, void *); - extern void func_800233CC(void *, unsigned short); - extern u8 D_801E6114[]; - extern s16 D_801E615C; - extern s16 D_801E615E; - extern s16 D_801E6160; - extern s16 D_801E6164; - extern s16 D_801E6166; - extern s16 D_801E6168; - - s1 = param; - s2 = ((s32 (*)(void))func_801465C0)(); - *(s32 *)(s1 + 0x20) = s2; - if (s2 != 0) { - *(u16 *)(s1 + 0x12) = *(u16 *)(s1 + 0x6); - *(u16 *)(s1 + 0x16) = *(u16 *)(s1 + 0xA); - *(u16 *)(s1 + 0x1A) = *(u16 *)(s1 + 0xE); - t34 = *(s32 *)(s1 + 0x34); - buf[0] = *(u16 *)(s1 + 0x12); - buf[1] = *(u16 *)(s1 + 0x16); - buf[2] = *(u16 *)(s1 + 0x1A); - ((void (*)(s32, void *, void *))func_80149350)(t34, buf, buf); - ((void (*)(void *, s32))func_80015954)(buf, s1 + 4); - s0 = D_801E6114; - ((void (*)(s32, void *))func_8001CD9C)(s2, s0); - *(s16 *)(s2 + 0x1E) = 0xCCC; - *(s32 *)(s2 + 4) = *(s32 *)(s2 + 4) | 0x50000000; - ((void (*)(void *, s32))func_800233CC)(s0, 0x80); - *(s16 *)(s2 + 0x1A) = 0; - *(s16 *)(s2 + 0x18) = 0; - *(s16 *)(s1 + 0x10) = 0; - pBCC = &D_801E615C; - pBD4 = &D_801E6164; - *pBCC = 0x20; - D_801E615E = 0x20; - D_801E6160 = 0; - *pBD4 = 0xC0; - D_801E6166 = 0xC0; - D_801E6168 = 0; - ((s32 (*)(s32, void *, void *, void *))func_8016C374)(s1, pBCC, pBD4, s0); - *(u16 *)(s1 + 2) = *(u16 *)(s1 + 2) + 1; - } else { - ((void (*)(s32))func_80146C3C)(s1); - } -} - - - -// @class: schedule -// @stuck: none — MATCH (44 ins; pins $s0/$s1 + hoist call-arg into a temp so its load fills the buf-store delay slot) - - -extern void func_80149350(s32 arg0); -extern void func_80015954(s32 a0, s32 a1); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80146C3C(void); - -extern u8 D_801E615C[]; -extern u8 D_801E6164[]; -extern u8 D_801E6114[]; - -void func_8016C2C4(s32 param) -{ - register s32 s1 __asm__("$17"); - register s32 s0 __asm__("$16"); - u16 buf[3]; - s16 v; - s32 r; - s32 arg; - - s1 = param; - s0 = *(s32 *)(s1 + 0x20); - arg = *(s32 *)(s1 + 0x34); - buf[0] = *(u16 *)(s1 + 0x12); - buf[1] = *(u16 *)(s1 + 0x16); - buf[2] = *(u16 *)(s1 + 0x1a); - ((void (*)(s32, void *, void *))func_80149350)(arg, buf, buf); - ((void (*)(void *, s32))func_80015954)(buf, s1 + 4); - v = *(s16 *)(s1 + 0x10) + 0x10; - *(s16 *)(s1 + 0x10) = v; - v = *(s16 *)(s0 + 0x1a) + v; - *(s16 *)(s0 + 0x1a) = v; - *(s16 *)(s0 + 0x18) = v; - r = ((s32 (*)(s32, void *, void *, void *))func_8016C374)(s1, D_801E615C, D_801E6164, D_801E6114); - if (r == 0) { - ((void (*)(s32))func_80146C3C)(s1); - } -} - - -DEFINE_func_8016C374() /* dedup: shared engine-core @0x8016C374 (src/shared) */ - -// @class: regalloc-order -// @stuck: none — MATCH (172/172, relocation-masked) - - - -s32 func_8016C49C(s32 param_1_arg) { - extern s32 VectorNormalSS(void *, void *); - extern void func_8001CD9C(s32, void *); - extern void func_8016CF04(s32, s32); - extern u8 D_801E6170[]; - extern u8 D_801E6230; - - register u16 *param_1 __asm__("$17") = ((u16 *)param_1_arg); - int iVar5; - int iVar6; - u16 sv[4]; - s32 mat[8]; - short sVar1; - - iVar5 = *(int *)(param_1 + 0x18); - iVar6 = *(int *)(param_1 + 0x1a); - param_1[0x14] = *(u16 *)(iVar5 + 0x36); - if ((*(u32 *)(param_1 + 0x16) & 0x8000) == 0) { - short iVar4 = 0; - u16 *psVar3 = (u16 *)&D_8011D030; - do { - if (psVar3 != param_1 && *psVar3 == 0x30) { - ((void(*)(void *))func_80146C3C)(psVar3); - } - iVar4 = iVar4 + 1; - psVar3 = psVar3 + 0x2c; - } while (iVar4 < 0x1e); - D_801E6170[1] = 0xff; - D_801E6170[2] = 0x10; - D_801E6170[0] = 0x10; - D_801E6170[6] = 0; - D_801E6170[5] = 0; - D_801E6170[4] = 0; - ((void(*)(void *, s32))func_800233CC)(D_801E6170, 10); - sv[0] = *(u16 *)(iVar5 + 6) - *(u16 *)(iVar6 + 6); - { - int t = *(u16 *)(iVar6 + 0xa) + 0x28; - sv[1] = *(u16 *)(iVar5 + 0xa) - t; - } - sv[2] = *(u16 *)(iVar5 + 0xe) - *(u16 *)(iVar6 + 0xe); - VectorNormalSS(sv, sv); - param_1[3] = *(u16 *)(iVar5 + 6) + ((s16)sv[0] >> 9); - param_1[5] = *(u16 *)(iVar5 + 0xa) + (((s16)sv[1] >> 9) - 0x28); - param_1[7] = *(u16 *)(iVar5 + 0xe) + ((s16)sv[2] >> 9); - ((void(*)(void *))func_800D23D0)(sv); - sv[0] = 0; - ((void(*)(void *, void *))RotMatrixYXZ)(sv, param_1 + 0x1c); - ((void(*)(void *, s32))func_80016714)(&D_801E6230, 0x620); - ((s32(*)(s32, void *, s32, s32, s32, s32, s32))func_80146A6C)(0x32, param_1, 0, 0, 0, 0, *(int *)(param_1 + 0x18)); - sVar1 = 5; - } else { - int iVar5b = ((s32(*)())func_801465C0)(); - u32 uVar2; - if (iVar5b == 0) { - return; - } - func_8001CD9C(iVar5b, D_801E6170); - *(u32 *)(iVar5b + 4) |= 0x50000000; - uVar2 = ((int(*)())rand)(); - sv[0] = (uVar2 & 0x7f) * 8 - 0x80; - sv[1] = ((uVar2 & 0x7f00) >> 4) - 0x400; - sv[2] = 0; - ((void(*)(void *, void *))RotMatrixYXZ)(sv, mat); - ((void(*)(void *, void *))func_80048EAC)(param_1 + 0x1c, mat); - sv[1] = 0; - sv[0] = 0; - sv[2] = 0xb; - ((void(*)(void *, void *, void *))ApplyMatrixSV)(mat, sv, sv); - param_1[9] = sv[0]; - param_1[0xb] = sv[1]; - param_1[0xd] = sv[2]; - *(int *)(param_1 + 0x10) = iVar5b; - *(int *)(param_1 + 0xe) = 8; - func_8016CF04((s32)param_1, 0); - *(int *)(param_1 + 0x16) = 0; - sVar1 = param_1[1] + 1; - } - param_1[1] = sVar1; -} - - - -DEFINE_func_8016C74C() /* dedup: shared engine-core @0x8016C74C (src/shared) */ - -DEFINE_func_8016C83C() /* dedup: shared engine-core @0x8016C83C (src/shared) */ - - -extern short func_8016CBC0(void); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 D_80126B9C; - - -void func_8016C998(s32 param_1) -{ - - extern s16 D_80126CE0; - u16 *psVar7; - s32 r; - short i; - extern Slot_998 D_801E6230[]; - - psVar7 = *(u16 **)(param_1 + 0x34); - if (*psVar7 != 1) { - *(s16 *)(param_1 + 2) = 6; - } - func_8016CBC0(); - if (*(s16 *)(param_1 + 0x28) != *(s16 *)(*(s32 *)(param_1 + 0x30) + 0x36)) { - return; - } - if ((D_80126B9C & 0x20) == 0) { - return; - } - if ((*(s32 *)(param_1 + 0x1c) == 0) || - (*(s16 *)(param_1 + 0x12) < D_80126CE0)) { - *(s16 *)(param_1 + 0x12) = D_80126CE0; - i = 0; - do { - if (D_801E6230[i].f0 == 0) { - goto found; - } - i++; - } while (i < 8); - found: - if (i >= 8) { - return; - } - r = func_80146A6C(0x30, psVar7, 0, 0, 0, 0x8000, *(s32 *)(param_1 + 0x30)); - if (r == 0) { - return; - } - D_801E6230[i].f0 = 1; - *(Blk32_998 *)(r + 0x38) = *(Blk32_998 *)(param_1 + 0x38); - *(s16 *)(r + 0x2a) = i; - *(s16 *)(r + 6) = *(s16 *)(param_1 + 6); - *(s16 *)(r + 0xa) = *(s16 *)(param_1 + 0xa); - *(s16 *)(r + 0xe) = *(s16 *)(param_1 + 0xe); - *(s32 *)(param_1 + 0x1c) = 0x10; - } else { - *(s32 *)(param_1 + 0x1c) = *(s32 *)(param_1 + 0x1c) - 1; - } -} - - - -extern void (*D_80190484[])(void); - -void func_8016CB84(void *a0) { - D_80190484[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern s32 func_80017758(void *a0, void *a1); -extern Blk20 D_800AE620; -short func_8016CBC0(void) -{ - - extern Blk_8016CBC0 D_801E6230[]; - Poly_8016CBC0 p0; - Poly_8016CBC0 p1; - Mtx8_8016CBC0 mtx; - Blk_8016CBC0 *blk; - Rec_8016CBC0 *sub; - Rec_8016CBC0 *pv; - unsigned int uVar9; - unsigned int w9; - unsigned int uc; - unsigned int a2; - int col; - int iVar3; - int w3; - unsigned int w3b; - short count; - short i; -register unsigned int zr __asm__("$0"); - mtx = (*(Mtx8_8016CBC0 *)&D_800AE620); - count = 0; - p1.tag = 0x50000000; - p0.tag = 0x50000000; - p1.col[3].b = 0; - p1.col[3].g = 0; - p1.col[3].r = 0; - p1.col[1].b = 0; - p1.col[1].g = 0; - p1.col[1].r = 0; - p0.col[2].b = 0; - p0.col[2].g = 0; - p0.col[2].r = 0; - p0.col[0].b = 0; - p0.col[0].g = 0; - p0.col[0].r = 0; - for (i = 0; i < 8; i++) - { - blk = &D_801E6230[i]; - if (blk->f0 != 0) - { - sub = blk->ent; - uVar9 = blk->f1; - iVar3 = blk->f2; - col = blk->f3; - count = count + 1; - w3 = iVar3 - 1; - iVar3 = w3 + zr; - if (w3 != (-1)) - { - do - { - pv = &sub[(short) uVar9]; - { - unsigned int a = pv->h[0]; - unsigned int b; - p0.v[0].x = a; - b = pv->h[3]; - p1.v[1].x = b; - p0.v[1].x = (p1.v[0].x = ((unsigned) (((s16) a) + ((s16) b))) >> 1); - } - { - unsigned int a = pv->h[1]; - unsigned int b; - p0.v[0].y = a; - b = pv->h[4]; - uc = ((unsigned) (col & 0xFF)) >> 3; - p1.v[1].y = b; - p0.v[1].y = (p1.v[0].y = ((unsigned) (((s16) a) + ((s16) b))) >> 1); - w9 = uVar9 - 1; - uVar9 = w9 + zr; - } - { - unsigned int a = pv->h[2]; - unsigned int b; - p0.v[0].z = a; - b = pv->h[5]; - p1.col[0].g = col; - p0.col[1].g = col; - p1.col[0].b = uc; - p0.col[1].b = uc; - p1.col[0].r = uc; - p0.col[1].r = uc; - p1.v[1].z = b; - p0.v[1].z = (p1.v[0].z = ((unsigned) (((s16) a) + ((s16) b))) >> 1); - } - if (((int) (w9 << 16)) < 0) - { - uVar9 = 0xF; - } - pv = &sub[(short) uVar9]; - col = col - 0xF; - a2 = (unsigned) (col & 0xFF); - a2 = a2 >> 3; - { - unsigned int a = pv->h[0]; - unsigned int b; - p0.v[2].x = a; - b = pv->h[3]; - p1.v[3].x = b; - p0.v[3].x = (p1.v[2].x = ((unsigned) (((s16) a) + ((s16) b))) >> 1); - } - { - unsigned int a = pv->h[1]; - unsigned int b; - p0.v[2].y = a; - b = pv->h[4]; - p1.v[3].y = b; - p0.v[3].y = (p1.v[2].y = ((unsigned) (((s16) a) + ((s16) b))) >> 1); - } - { - unsigned int a = pv->h[2]; - unsigned int b; - p0.v[2].z = a; - b = pv->h[5]; - p1.col[2].g = col; - p0.col[3].g = col; - p1.col[2].b = a2; - p0.col[3].b = a2; - p1.col[2].r = a2; - p0.col[3].r = a2; - p1.v[3].z = b; - p0.v[3].z = (p1.v[2].z = ((unsigned) (((s16) a) + ((s16) b))) >> 1); - } - func_80017758(&p0, &mtx); - func_80017758(&p1, &mtx); - uc = iVar3 - 1; - w3b = uc; - iVar3 = w3b + zr; - } - while (((short) w3b) != (-1)); - } - } - } - - return count; -} - - -/* func_8016CF04 returns short (case 2: 1 if the decremented f2 hit 0, else 0; all other - * paths return 0 via the addu $v0,$zero,$zero at 0x8016D154). The TU/engine_core.h declare - * it `void` in 4 DEFINE_ macros + one block-scope decl in func_8016C49C; the real apply is the - * byte-neutral engine_core.h void->short flip (every caller discards or ptr-casts the return, - * cf. func_8016D5EC's `(s16)(...)` cast). The //@EDIT lines above are the rtu_match proxy for - * that flip. Body verified 166/166 in isolation AND in a whole-TU compile w/ the reconciled hdr. */ - /* 4 + 16*12 = 0xC4 stride */ - -short func_8016CF04(s32 param_1, s32 param_2) { - extern Blk_8016CF04_8016CF04 D_801E6230[]; - - - Blk_8016CF04_8016CF04 *p = &D_801E6230[*(short *)(((int)param_1) + 0x2a)]; - u16 rot[4]; - u16 out[4]; - s32 mtx[8]; - - switch (((short)param_2)) { - case 0: - p->f2 = 0; - p->f1 = 0; - p->f3 = 0xf0; - break; - case 1: - p->f1 = p->f1 + 1; - if ((u8)p->f1 >= 0x10) - p->f1 = 0; - if ((u8)p->f2 < 0xf) - p->f2 = p->f2 + 1; - break; - case 2: { - u8 c = p->f2 - 1; - p->f2 = c; - if (c == 0) { - p->f0 = 0; - return 1; - } - p->f3 = p->f3 - 0xf; - return 0; - } - } - - rot[0] = *(s32 *)(((int)param_1) + 0x10) >> 12; - rot[1] = *(s32 *)(((int)param_1) + 0x14) >> 12; - rot[2] = *(s32 *)(((int)param_1) + 0x18) >> 12; - func_800D23D0(rot); - RotMatrixYXZ(rot, mtx); - rot[0] = 9; - rot[1] = 0; - rot[2] = 0; - ApplyMatrixSV(mtx, rot, out); - p->ent[(u8)p->f1].a = *(u16 *)(((int)param_1) + 6) + out[0]; - p->ent[(u8)p->f1].b = *(u16 *)(((int)param_1) + 0xa) + out[1]; - p->ent[(u8)p->f1].c = *(u16 *)(((int)param_1) + 0xe) + out[2]; - rot[0] = -rot[0]; - rot[1] = -rot[1]; - ApplyMatrixSV(mtx, rot, out); - p->ent[(u8)p->f1].d = *(u16 *)(((int)param_1) + 6) + out[0]; - p->ent[(u8)p->f1].e = *(u16 *)(((int)param_1) + 0xa) + out[1]; - p->ent[(u8)p->f1].g = *(u16 *)(((int)param_1) + 0xe) + out[2]; - return 0; -} - - - - -extern void (*D_801904A0[])(void); - -void func_8016D19C(void *a0) { - D_801904A0[*(u16 *)((s32)a0 + 0x2)](); -} - - - - - - - - /* 8 bytes */ - /* 32 bytes */ - - -extern void func_801465C0(void); -extern void func_800233CC(void*, unsigned short); -extern void func_8001CD9C(int, void*); -extern void func_80147324(int a); -extern int rand(void); -extern void RotMatrixYXZ(void *a, void *b); -extern void ApplyMatrixSV(void *a, void *b, void *c); - -void func_8016D1D8(int param_1) { - - extern u8 D_801E61B0[]; - extern u8 D_801E61F0[]; - int iVar5; - int iVar2; - u16 uVar1; - unsigned int uVar3; - short sVar4; - SVEC_L1 sv; - MTX_L1 mtx; - - iVar5 = *(int *)(param_1 + 0x34); - if (*(int *)(param_1 + 0x2c) == 0) { - D_801E61B0[1] = 0xE0; - D_801E61B0[2] = 0xE0; - D_801E61B0[0] = 0xE0; - D_801E61B0[6] = 0; - D_801E61B0[5] = 0; - D_801E61B0[4] = 0; - iVar5 = ((int (*)(void))func_801465C0)(); - if (iVar5 != 0) { - int pp; - *(int *)(param_1 + 0x20) = iVar5; - ((void (*)(void *, int))func_800233CC)(D_801E61B0, 0x28); - ((void (*)(void *, void *))func_8001CD9C)((void *)iVar5, D_801E61B0); - *(short *)(iVar5 + 0x1a) = 0x1400; - *(u32 *)(iVar5 + 4) |= 0x50000000; - pp = *(int *)(param_1 + 0x30); - *(u16 *)(param_1 + 0x28) = *(u16 *)(pp + 0x36); - *(u16 *)(param_1 + 0x12) = *(u16 *)(pp + 6); - *(short *)(param_1 + 0x16) = *(u16 *)(pp + 0xa) - 0x28; - uVar1 = *(u16 *)(pp + 0xe); - *(u16 *)(param_1 + 2) = *(u16 *)(param_1 + 2) + 1; - *(u16 *)(param_1 + 0x1a) = uVar1; - } - *(int *)(param_1 + 0x1c) = 8; - func_80147324(0x647); - } else { - D_801E61F0[1] = 0xE0; - D_801E61F0[2] = 0x20; - D_801E61F0[0] = 0x20; - D_801E61F0[5] = 0; - D_801E61F0[6] = 0; - D_801E61F0[4] = 0; - iVar2 = ((int (*)(void))func_801465C0)(); - if (iVar2 != 0) { - *(int *)(param_1 + 0x20) = iVar2; - ((void (*)(void *, int))func_800233CC)(D_801E61F0, 0x18); - ((void (*)(void *, void *))func_8001CD9C)((void *)iVar2, D_801E61F0); - *(u32 *)(iVar2 + 4) |= 0x50000000; - *(u16 *)(param_1 + 6) = *(u16 *)(iVar5 + 6); - *(u16 *)(param_1 + 0xa) = *(u16 *)(iVar5 + 0xa); - *(u16 *)(param_1 + 0xe) = *(u16 *)(iVar5 + 0xe); - uVar3 = rand(); - sv.vx = ((uVar3 & 0x7F) * 8) - 0x80; - sv.vy = (uVar3 & 0x7F00) >> 3; - sv.vz = 0; - RotMatrixYXZ(&sv, &mtx); - sv.vy = 0; - sv.vx = 0; - sv.vz = 0x240; - ApplyMatrixSV(&mtx, &sv, &sv); - *(int *)(param_1 + 0x10) = (int)sv.vx << 0xc; - *(int *)(param_1 + 0x14) = (int)sv.vy << 0xc; - sVar4 = (uVar3 & 0x3F0) + 0x200; - *(int *)(param_1 + 0x18) = (int)sv.vz << 0xc; - *(short *)(iVar2 + 0x1a) = sVar4; - *(short *)(iVar2 + 0x18) = sVar4; - *(int *)(param_1 + 0x1c) = 0x10; - *(short *)(param_1 + 2) = 2; - } - } -} - - - -extern void (*D_801904A8[])(void); - -void func_8016D428(void *a0) { - D_801904A8[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8016D464() /* dedup: shared engine-core @0x8016D464 (src/shared) */ - -DEFINE_func_8016D4DC() /* dedup: shared engine-core @0x8016D4DC (src/shared) */ - -DEFINE_func_8016D5EC() /* dedup: shared engine-core @0x8016D5EC (src/shared) */ - -DEFINE_func_8016D64C() /* dedup: shared engine-core @0x8016D64C (src/shared) */ - - -extern void func_801465C0(void); -extern void func_800233CC(void*, unsigned short); -extern void func_8001CD9C(int, void *); - -void func_8016D688(int param_1) -{ - - extern unsigned char D_801E61B0[]; - int iVar2; - int iVar3; - - D_801E61B0[1] = 0xe0; - D_801E61B0[2] = 0xe0; - D_801E61B0[0] = 0xe0; - D_801E61B0[6] = 0; - D_801E61B0[5] = 0; - D_801E61B0[4] = 0; - iVar2 = ((int (*)(void))func_801465C0)(); - if (iVar2 != 0) { - *(int *)(param_1 + 0x20) = iVar2; - ((void (*)(void *, int))func_800233CC)(D_801E61B0, 0x28); - func_8001CD9C(iVar2, D_801E61B0); - *(unsigned short *)(iVar2 + 0x1a) = 0x1400; - *(unsigned int *)(iVar2 + 4) = *(unsigned int *)(iVar2 + 4) | 0x50000000; - iVar3 = *(int *)(param_1 + 0x30); - *(unsigned short *)(param_1 + 0x28) = *(unsigned short *)(iVar3 + 0x36); - *(unsigned short *)(param_1 + 0x12) = *(unsigned short *)(iVar3 + 6); - *(short *)(param_1 + 0x16) = *(unsigned short *)(iVar3 + 0xa) - 0x28; - *(unsigned short *)(param_1 + 0x1a) = *(unsigned short *)(iVar3 + 0xe); - *(short *)(param_1 + 2) = *(short *)(param_1 + 2) + 1; - } - return; -} - - -DEFINE_func_8016D778() /* dedup: shared engine-core @0x8016D778 (src/shared) */ - -DEFINE_func_8016D848() /* dedup: shared engine-core @0x8016D848 (src/shared) */ - -DEFINE_func_8016D984() /* dedup: shared engine-core @0x8016D984 (src/shared) */ - -DEFINE_func_8016DA04() /* dedup: shared engine-core @0x8016DA04 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH expected; param_1 survives jal in $s0, table fp-call with %lo-fold -extern void func_8016DBD8(u8 *a0); -extern void (*D_80190510[])(int); - -void func_8016DA30(int param_1) -{ - ((void (*)(void))func_8016DBD8)(); - D_80190510[*(unsigned short *)(param_1 + 2)](param_1); -} - - - - -// @class: plumbing -// @stuck: none — MATCH (clean if/else, one call-crossing local; bnez polarity = if(iVar1==0) fall-through) - -extern void func_801465C0(void); -extern void func_80146C3C(void); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); - -extern u8 D_801904B4; -extern u8 D_801904C0; - -void func_8016DA7C(s32 param_1) -{ - s32 iVar1; - - iVar1 = ((s32 (*)(void))func_801465C0)(); - if (iVar1 == 0) { - ((void (*)(s32))func_80146C3C)(param_1); - } else { - *(s32 *)(param_1 + 0x20) = iVar1; - ((void (*)(s32, s32, s32, s32))func_8001CC3C)(iVar1, (s32)&D_801904B4, 0x250, 0x100); - *(u8 *)(iVar1 + 0x27) = 0x90; - *(u16 *)(iVar1 + 0x18) = 0x3000; - *(u16 *)(iVar1 + 0x1a) = 0x4000; - *(u32 *)(iVar1 + 4) = *(u32 *)(iVar1 + 4) | 0x50000000; - func_80128EA8(iVar1, param_1 + 0x24, (s32)&D_801904C0); - *(s32 *)(param_1 + 0x10) = 0; - *(s32 *)(param_1 + 0x14) = 0xfff40000; - *(s16 *)(param_1 + 2) = *(s16 *)(param_1 + 2) + 1; - } -} - - -DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ - -DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ - - -extern s32 D_8011D030; - -extern void func_80149374(s32 a0, s32 a1); -extern s32 func_801619D0(void *a0); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_800D20C0(void *a0, void *a1, s32 a2); -extern void func_800D23D0(void *a0); -extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); -extern void func_800D1FC8(s32 a0, s32 a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern s32 func_80128ED8(s32 param_1, s32 *param_2); -extern void func_80146C3C(void); - -void func_8016DC20(s16 *param_1) { - - extern s16 D_801E6850; - extern s16 D_801E6854; - extern u8 D_80190518[]; - extern u8 D_80190524[]; - u16 *psVar1; - s32 iVar2; - s32 iVar3; - s32 iVar4; - s16 i; - s16 sp[6]; - - i = 0; - psVar1 = (u16 *)&D_8011D030; - iVar4 = *(s32 *)((u8 *)param_1 + 0x34); - do { - if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; - i = i + 1; - psVar1 = psVar1 + 0x2c; - } while (i < 0x1e); - func_80149374(iVar4, (s32)param_1 + 4); - iVar2 = func_801619D0((void *)iVar4); - i = 0; - if (iVar2 == 0) goto ddb0; - psVar1 = (u16 *)&D_8011D030; - do { - if (*psVar1 == 0x11) goto ddb0; - i = i + 1; - psVar1 = psVar1 + 0x2c; - } while (i < 0x1e); - func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), - (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), - *(s16 *)((u8 *)param_1 + 0xe), 0, 0); - sp[0] = *(u16 *)((u8 *)param_1 + 6); - sp[1] = *(u16 *)((u8 *)param_1 + 0xa); - sp[2] = *(u16 *)((u8 *)param_1 + 0xe); - func_800D20C0(&sp[0], &sp[4], 0); - sp[5] = 0; - func_800D23D0(&sp[4]); - i = 0; - do { - iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), - *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), - i, 0); - if (iVar3 != 0) { - *(u16 *)(iVar3 + 0x12) = sp[4]; - *(u16 *)(iVar3 + 0x16) = sp[5]; - *(u16 *)(iVar3 + 0x1a) = 0; - } - i = i + 2; - } while (i < 3); - goto end; -ddb0: - if (((D_801E6850 != *(s16 *)(iVar4 + 6)) || (D_801E6854 != *(s16 *)(iVar4 + 0xe))) && - (iVar2 = func_800D21C4((s32)param_1, D_80190518, 0x18), iVar2 != 0)) { - D_801E6850 = *(u16 *)(iVar4 + 6); - D_801E6854 = *(u16 *)(iVar4 + 0xe); - func_800D1FC8((s32)param_1, 7); - *(s32 *)((u8 *)param_1 + 0x20) = iVar2; - *(u16 *)(iVar2 + 0x1a) = 0x3000; - *(u16 *)(iVar2 + 0x18) = 0x3000; - *(u8 *)(iVar2 + 0x26) = 0xff; - *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; - func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80190524); - func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); - *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; - return; - } -end: - ((void (*)(s16 *))func_80146C3C)(param_1); -} - - - -extern void (*D_80190544[])(void); - -void func_8016DEA4(void *a0) { - D_80190544[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8016DEE0() /* dedup: shared engine-core @0x8016DEE0 (src/shared) */ - - -extern void (*D_8019054C[])(void); - -void func_8016DF20(void *a0) { - D_8019054C[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern Blk20 D_800AE620; -extern s32 D_8011D030; -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern void func_8001CD50(s32 a0, s32 a1); -extern void func_800233CC(void *, unsigned short); -extern void func_801465C0(void); -extern void func_80146C3C(void); - - - - -void func_8016DF5C(s32 param_1) -{ - extern void func_8016E3CC(void *a0); - extern void RotMatrixY(s32 a0, void *a1); - extern u8 D_801E6858; - extern u8 D_801E6859; - extern u8 D_801E685A; - extern u8 D_801E685C; - extern u8 D_801E685D; - extern u8 D_801E685E; - - s32 iVar8; - short sVar1; - - iVar8 = *(s32 *)((u8 *)((void *)param_1) + 0x34); - if ((*(u32 *)((u8 *)((void *)param_1) + 0x2c) & 0x8000) == 0) { - unsigned short uVar7 = 0; - u16 *psVar6 = (u16 *)&D_8011D030; - register s32 iNew __asm__("$17"); - s32 base; - do { - if (psVar6 != (u16 *)((void *)param_1) && (*psVar6 == 0x41 || *psVar6 == 0x48)) { - ((void (*)(void *))func_80146C3C)(psVar6); - } - uVar7++; - psVar6 += 0x2c; - } while (uVar7 < 0x1e); - iNew = ((s32(*)())func_801465C0)(); - if (iNew == 0) { - return; - } - base = (s32)&D_801E6858; - D_801E685A = 0xc0; - *(u8 *)base = 0xc0; - D_801E6859 = 0; - D_801E685E = 0; - D_801E685D = 0; - D_801E685C = 0; - ((void(*)(void *, unsigned short))func_800233CC)((void *)base, 0x40); - func_8001CD50(iNew, base); - *(s32 *)(iNew + 0x34) = (s32)((u8 *)((void *)param_1) + 0x38); - *(s16 *)(iNew + 0x1a) = 0; - *(s16 *)(iNew + 0x18) = 0; - *(u32 *)(iNew + 4) = *(u32 *)(iNew + 4) | 0x50000000; - func_8016E3CC(((void *)param_1)); - { - register s32 t10 __asm__("$3"); - t10 = 0x10; - *(s32 *)((u8 *)((void *)param_1) + 0x20) = iNew; - *(s32 *)((u8 *)((void *)param_1) + 0x1c) = t10; - } - sVar1 = *(u16 *)((u8 *)((void *)param_1) + 2) + 1; - } else { - short asStack_60[20]; - Blk20_8016DF5C localMatrix; - s32 uVar2; - - asStack_60[0] = 0; - asStack_60[1] = 0; - asStack_60[2] = 0x20; - localMatrix = (*(Blk20_8016DF5C*)&D_800AE620); - uVar2 = ((s32(*)())rand)(); - RotMatrixY((uVar2 & 0x7f00) >> 3, &localMatrix); - ApplyMatrixSV(&localMatrix, asStack_60, asStack_60); - *(s16 *)((u8 *)((void *)param_1) + 6) = D_80126B5E + asStack_60[0]; - *(s16 *)((u8 *)((void *)param_1) + 0xa) = D_80126B62 - ((u16)uVar2 & 0x3f); - *(s16 *)((u8 *)((void *)param_1) + 0xe) = D_80126B66 + asStack_60[2]; - *(Blk20_8016DF5C *)((u8 *)((void *)param_1) + 0x38) = *(Blk20_8016DF5C *)((u8 *)iVar8 + 0x38); - *(s32 *)((u8 *)((void *)param_1) + 0x2c) = 0x1000; - *(s32 *)((u8 *)((void *)param_1) + 0x30) = 0xff; - *(s32 *)((u8 *)((void *)param_1) + 0x1c) = 0x10; - __asm__ __volatile__("" ::: "memory"); - sVar1 = 4; - } - *(s16 *)((u8 *)((void *)param_1) + 2) = sVar1; -} - - -DEFINE_func_8016E1CC() /* dedup: shared engine-core @0x8016E1CC (src/shared) */ - -DEFINE_func_8016E26C() /* dedup: shared engine-core @0x8016E26C (src/shared) */ - -DEFINE_func_8016E2E8() /* dedup: shared engine-core @0x8016E2E8 (src/shared) */ - -DEFINE_func_8016E358() /* dedup: shared engine-core @0x8016E358 (src/shared) */ - -DEFINE_func_8016E3CC() /* dedup: shared engine-core @0x8016E3CC (src/shared) */ - -DEFINE_func_8016E460() /* dedup: shared engine-core @0x8016E460 (src/shared) */ - - -extern void (*D_801905A0[])(void); - -void func_8016E5B8(void *a0) { - D_801905A0[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8016E5F4() /* dedup: shared engine-core @0x8016E5F4 (src/shared) */ - -DEFINE_func_8016E688() /* dedup: shared engine-core @0x8016E688 (src/shared) */ - -DEFINE_func_8016E6E4() /* dedup: shared engine-core @0x8016E6E4 (src/shared) */ - -DEFINE_func_8016E728() /* dedup: shared engine-core @0x8016E728 (src/shared) */ - -DEFINE_func_8016E778() /* dedup: shared engine-core @0x8016E778 (src/shared) */ - -// @class: regalloc-order -// @stuck: none — MATCH (74 ins); register pin $s2 forces &prim into a saved reg (§17) - - /* 0x08 */ - /* 0x20 */ - -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8; - - -void func_8016E7C8(int param_1, short *param_2, unsigned int *param_3) -{ - extern void func_8004914C(void *a0); - extern void func_800491AC(void *a0); - extern void RotTransSV(void *a0, void *a1, void *a2); - extern void func_80016ED4(void *a0); - extern SVECTOR_8016E7C8 D_80190560[4]; - extern s32 D_80190580; - extern s32 D_80190588; - extern s32 D_80190590; - extern s32 D_80190598; - - Prim_8016E7C8 prim; - MATRIX_8016E7C8 m; - SVECTOR_8016E7C8 tmp; - register Prim_8016E7C8 *pp __asm__("$18"); /* $s2 — force &prim into a saved reg */ - - ((void (*)(void *, void *))func_80017DC4)(param_2, &m); - m.t[0] = *(short *)(param_1 + 6); - m.t[1] = *(short *)(param_1 + 10); - m.t[2] = *(short *)(param_1 + 14); - func_8004914C(&m); - func_800491AC(&m); - pp = &prim; - RotTransSV(&D_80190560[0], pp, &tmp); - RotTransSV(&D_80190560[1], &prim.v[1], &tmp); - RotTransSV(&D_80190560[2], &prim.v[2], &tmp); - RotTransSV(&D_80190560[3], &prim.v[3], &tmp); - prim.v[0].vz = 3; - prim.f5 = 0x50000000; - prim.f0 = D_80190580; - prim.f1 = D_80190588; - prim.f2 = D_80190590; - prim.f3 = D_80190598; - prim.f4 = *param_3; - prim.f6 = 0x27; - func_80016ED4(pp); -} - - - -DEFINE_func_8016E8F0() /* dedup: shared engine-core @0x8016E8F0 (src/shared) */ - -DEFINE_func_8016E918() /* dedup: shared engine-core @0x8016E918 (src/shared) */ - -// @class: struct -// @stuck: none — MATCH (36/36 ins, match_one relocation-masked) - - - -typedef void (*Handler)(struct Entry_8016E95C *); - - -s32 func_8016E95C() { - extern Handler D_801905E0[]; - - struct Entry_8016E95C *p; - for (p = ((struct Entry_8016E95C *)&D_80115218); p < &((struct Entry_8016E95C *)&D_80115218)[4]; p++) { - if (p->f0 != 0) { - D_801905E0[p->f1](p); - } - } -} - - - - -/* @class: regalloc (non-coalescing delay-slot copy) + sched (load-temp hoist) - * @stuck: none — MATCH (53/53 ins, match_one AND rtu_match in the real TU). - * - * Two levers, both from the cookbook: - * - * 1. §52a "non-coalescing delay-slot copy" + §17 zero-reg-copy (the load-bearing one). - * The target holds `p[0]-1` in TWO callee-saved regs: $s0 (the array index, later - * destroyed in place by `sll $s0,$s0,1`) and $s4 (the value stored to p[3]), created - * by `addu $s4,$s0,$zero` sitting in the DELAY SLOT of `jal func_800D2CA8`. A plain - * C `c = i;` is destroyed by cse.c canon_reg head-promotion (measured: 50 ins, -3), - * and every #APP-asm spelling of the copy is INELIGIBLE for a delay slot (measured: - * 51 ins, -2 — tried `__asm__("":"=r"(c):"0"(i))`, a real-opcode - * `__asm__("addu %0,%1,$0")`, and the §52b RC-7 post-copy second-set barrier - * `c=i; __asm__("":"=r"(c):"0"(c))`; all three collapse or lose the slot). - * Only the `$0`-add — `register u32 zr __asm__("$0"); c = i + zr;` — emits a bare - * `addu` with no asm insn, so reorg can sink it into the call's delay slot. - * NOTE for ×138 propagation: this is a ZERO-REGISTER pin, not an allocation pin — - * it constrains no real value. family_sweep's §42e "skip pinned exemplar" guard is - * documented over-conservative (§86; the SIGABRT was our own extract_unit macro-drop, - * fixed in Phase 27), so this exemplar should still sweep. - * - * 2. Free-floating load temp for a scheduler hoist (§52a-adjacent, idiom 7). - * With the p+6 store written as one statement the sched2 list scheduler hoists - * `lbu $v0,1($a0)` ahead of `sb $s4,3($a0)` and sinks the D_801905CC lui/addu/lhu - * chain (8 mismatched, same 53-ins multiset). Splitting the load into its own - * statement `h = D_801905CC[i];` placed BEFORE `p[2] = 0` (exactly what the Ghidra - * seed showed) puts the lhu chain right after `sh $v0,4($a0)` → 0. - * - * Data typing: D_801905B0 is a WORD array (`sll $v0,$s0,2`; its element is dereferenced - * as a buffer by func_80024054) => u8 *[]. D_801905C8 is byte-indexed (`lbu`, no shift) - * => u8[]. D_801905CC is halfword-indexed (`sll $s0,$s0,1` + `lhu`) => u16[]. - * `*(s16 *)(p + 4) = -0xD7` emits `addiu $v0,$zero,-0xD7`; 0xFF29 as a u16 would not. - */ - - -extern s32 func_800D2CA8(s32 a0, s32 a1); -extern void func_800D2D10(s32 a0, s32 a1, void *a2, s32 a3); -extern s32 func_80024054(void *a0, void *a1); -extern void func_8016EC0C(s32 a0, s32 a1); - -void func_8016E9EC(u8 *p) -{ - - extern u8 *D_801905B0[]; - extern u8 D_801905C8[]; - extern u16 D_801905CC[]; - register u32 zr __asm__("$0"); - int i; - int c; - u8 *buf; - u8 off; - u16 h; - s32 r; - - i = p[0] - 1; - off = D_801905C8[i]; - buf = D_801905B0[i]; - c = i + zr; - r = func_800D2CA8(p[3], 0x1C); - func_800D2D10(r, 1, buf + off, 0); - func_80024054(buf, p + 8); - p[3] = c; - *(s16 *)(p + 4) = -0xD7; - h = D_801905CC[i]; - p[2] = 0; - *(u16 *)(p + 6) = h; - p[1] = p[1] + 1; - ((void (*)(u8 *, s32))func_8016EC0C)(p, 0x80); -} - - - -// @class: struct -// @stuck: none — MATCH (31/31 ins, match_one verified) - -extern u16 D_801905D4[]; -extern void func_8016EC0C(s32 a0, s32 a1); - -void func_8016EAC0(Wave *param_1) -{ - unsigned char bVar1; - - param_1->f4 = param_1->f4 + D_801905D4[param_1->f2]; - ((void (*)(void *, int))func_8016EC0C)(param_1, 0x80); - bVar1 = param_1->f2 + 1; - param_1->f2 = bVar1; - if (5 < bVar1) { - param_1->f2 = 0x20; - param_1->f1 = param_1->f1 + 1; - } -} - - - -// @class: loose-typing -// @stuck: none — MATCH (u8 v + 0xFF emits addiu 0xFF; v-1 would emit -1/0xffff) - -extern u8 D_801905C4[]; -extern void func_8016EC0C(s32 a0, s32 a1); - -void func_8016EB3C(s32 p) { - u8 v; - - ((void (*)(s32, s32))func_8016EC0C)(p, D_801905C4[*(u8 *)(p + 2) & 3]); - - v = *(u8 *)(p + 2); - *(u8 *)(p + 2) = v + 0xFF; - if (v == 0) { - *(u8 *)(p + 2) = 5; - *(u8 *)(p + 1) = *(u8 *)(p + 1) + 1; - } -} - - - -// @class: struct -// @stuck: none — MATCH (25 ins). %lo-fold via extern u16 D_801905D4[]; predecrement emitted as +0xFF (u8 promote→sb low byte), not -1. - -extern u16 D_801905D4[]; - -extern void func_8016EC0C(s32 a0, s32 a1); - -void func_8016EBA8(u8 *param_1) -{ - u8 c; - - *(u16 *)(param_1 + 4) = - *(u16 *)(param_1 + 4) - D_801905D4[param_1[2]]; - ((void (*)(u8 *, int))func_8016EC0C)(param_1, 0x80); - c = param_1[2]; - param_1[2] = c + 0xFF; - if (c == 0) { - param_1[0] = 0; - } -} - - - -extern void func_80017B98(void *a0); -extern u8 D_801905C0[]; - -void func_8016EC0C(s32 a0, s32 a1) -{ - /* §100 draft-LOCAL type: a file-scope typedef is an EXEMPLAR-ONLY bank — extract_unit/ - remap_hseq carry only the BODY, so every sibling fails `T8016EC0C undeclared` - (measured on ov_SC01_000). Block scope travels with the body; byte-neutral. */ - /* 0x1C */ - T8016EC0C s; - u16 *p; - s32 x; - s32 y; - s32 v; - - s.r = s.g = s.b = a1; - s.u18 = D_801905C0[*(u8 *)(a0 + 3)]; - s.u0C = 0x640; - s.u0E = 0x1C8; - s.u14 = 0; - s.u08 = 0x28; - s.u0A = 8; - x = *(u16 *)(a0 + 4); - s.x = x + 0x10; - y = *(u16 *)(a0 + 6); - s.u04 = 0x10; - s.y = y; - func_80017B98(&s); - s.u08 = 8; - y += 0xA; - p = (u16 *)(a0 + 8); - while (*p != 0xFFFF) { - v = *p; - switch (v) { - case 0x1850: - case 0x1858: - s.x = x + 4; - s.y = y - 7; - break; - case 0x3872: - x += 2; - p++; - continue; - default: - s.x = x; - s.y = y; - x += 8; - break; - } - s.u0C = *(u8 *)p + 0x500; - s.u0E = (*p >> 8) + 0x100; - p++; - func_80017B98(&s); - } -} - - -DEFINE_func_8016ED6C() /* dedup: shared engine-core @0x8016ED6C (src/shared) */ - -DEFINE_func_8016ED8C() /* dedup: shared engine-core @0x8016ED8C (src/shared) */ - -DEFINE_func_8016EDBC() /* dedup: shared engine-core @0x8016EDBC (src/shared) */ - -DEFINE_func_8016EDEC() /* dedup: shared engine-core @0x8016EDEC (src/shared) */ - -DEFINE_func_8016EE40() /* dedup: shared engine-core @0x8016EE40 (src/shared) */ - -DEFINE_func_8016EE94() /* dedup: shared engine-core @0x8016EE94 (src/shared) */ - -DEFINE_func_8016EF78() /* dedup: shared engine-core @0x8016EF78 (src/shared) */ - -DEFINE_func_8016EFA8() /* dedup: shared engine-core @0x8016EFA8 (src/shared) */ - -DEFINE_func_8016EFC8() /* dedup: shared engine-core @0x8016EFC8 (src/shared) */ - -DEFINE_func_8016F094() /* dedup: shared engine-core @0x8016F094 (src/shared) */ - -// @class: plumbing -// @stuck: none — MATCH - -DEFINE_func_8016F0AC() /* dedup: shared engine-core @0x8016F0AC (src/shared) */ - - - - -/* RECONCILE NOTE (uc3) — the body is byte-unchanged from uc2; only the declaration - * environment moved. The gate error was - * jr_8016AB6C.c:4183 conflicting types for func_8016F0E4 || :4089 previous declaration - * :4089 was THIS definition; :4183 is the `extern void func_8016F0E4(void);` carried inside - * DEFINE_func_8016F4C4() (src/shared/engine_core.h:22579), which the host TU instantiates at - * ov_SC01_077_jr_8016AB6C.c:4136 — i.e. AFTER the definition, so it is a hard error, not the - * mere warning produced by the earlier block-scope decl in func_8016F0AC (TU:4047). - * Byte-true signature is `void (u8 *)`; the fleet canon is `void (void)` — a PARAM/ARITY - * disagreement on func_8016F0E4 ITSELF. - * - * ESCAPE TAKEN: §37/§124 ASM-LABEL ALIAS (escape 2, T0 draft-only, zero tracked-file edits). - * The C identifier is aF8016F0E4 so this TU declares func_8016F0E4 exactly once (the macro's - * own `extern void`), while the emitted SYMBOL is func_8016F0E4. Both existing callers already - * launder through a cast or take no args, so neither is perturbed: - * - func_8016F0AC (TU:4047-4049) casts: ((void (*)(void *))func_8016F0E4)(&D_80126B58); - * - DEFINE_func_8016F4C4 calls func_8016F0E4() with 0 args against its own (void) prototype. - * cc1-proven: preprocess+compile of the real TU with this body spliced in is free of any - * func_8016F0E4 diagnostic (the pre-existing unrelated warnings in the TU are unchanged). - * - * This SUPERSEDES uc2's //@EDIT de-macroize plan (§65b) and its T2 engine_core.h alternative - * (§75c) — neither is needed; nothing outside this unit changes, so the bank travels to the - * 137 siblings as a plain unit (carry the alias DECLARATION line with it — §124 trap 2). - */ - -DEFINE_func_8016F0E4() /* dedup: shared engine-core @0x8016F0E4 (src/shared) */ - - -DEFINE_func_8016F14C() /* dedup: shared engine-core @0x8016F14C (src/shared) */ - -DEFINE_func_8016F1AC() /* dedup: shared engine-core @0x8016F1AC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH - -extern s32 D_801905F0; -extern s32 D_80126B58; -extern s16 currentLocationId; - -s32 func_8016F1C4(void) { - s32 *p; - s32 cur; - s32 loc; - s32 v; - s32 *base = &D_80126B58; - - p = &D_801905F0; - cur = *p; - if (cur != 0) { - loc = currentLocationId; - p = p + 1; - for (;;) { - if (loc == cur) { - return 1; - } - cur = *p; - p = p + 1; - if (cur == 0) { - break; - } - } - } - v = base[0x7E]; - if (((v & 0x80FFFFFF) != 0) && ((v & 0x10000000) != 0)) { - return 0; - } - return base[0x7E] & 0x80FFFFFF; -} - - -DEFINE_func_8016F250() /* dedup: shared engine-core @0x8016F250 (src/shared) */ - -DEFINE_func_8016F264() /* dedup: shared engine-core @0x8016F264 (src/shared) */ - -DEFINE_func_8016F288() /* dedup: shared engine-core @0x8016F288 (src/shared) */ - -DEFINE_func_8016F2A8() /* dedup: shared engine-core @0x8016F2A8 (src/shared) */ - -DEFINE_func_8016F2C8() /* dedup: shared engine-core @0x8016F2C8 (src/shared) */ - -DEFINE_func_8016F2EC() /* dedup: shared engine-core @0x8016F2EC (src/shared) */ - -DEFINE_func_8016F30C() /* dedup: shared engine-core @0x8016F30C (src/shared) */ - -DEFINE_func_8016F330() /* dedup: shared engine-core @0x8016F330 (src/shared) */ - -DEFINE_func_8016F350() /* dedup: shared engine-core @0x8016F350 (src/shared) */ - -DEFINE_func_8016F374() /* dedup: shared engine-core @0x8016F374 (src/shared) */ - -DEFINE_func_8016F388() /* dedup: shared engine-core @0x8016F388 (src/shared) */ - -DEFINE_func_8016F398() /* dedup: shared engine-core @0x8016F398 (src/shared) */ - -DEFINE_func_8016F410() /* dedup: shared engine-core @0x8016F410 (src/shared) */ - -DEFINE_func_8016F44C() /* dedup: shared engine-core @0x8016F44C (src/shared) */ - -DEFINE_func_8016F470() /* dedup: shared engine-core @0x8016F470 (src/shared) */ - -DEFINE_func_8016F494() /* dedup: shared engine-core @0x8016F494 (src/shared) */ - -DEFINE_func_8016F4C4() /* dedup: shared engine-core @0x8016F4C4 (src/shared) */ - -DEFINE_func_8016F4F4() /* dedup: shared engine-core @0x8016F4F4 (src/shared) */ - -DEFINE_func_8016F4FC() /* dedup: shared engine-core @0x8016F4FC (src/shared) */ - -DEFINE_func_8016F540() /* dedup: shared engine-core @0x8016F540 (src/shared) */ - -DEFINE_func_8016F578() /* dedup: shared engine-core @0x8016F578 (src/shared) */ - -DEFINE_func_8016F5B0() /* dedup: shared engine-core @0x8016F5B0 (src/shared) */ - -DEFINE_func_8016F5E0() /* dedup: shared engine-core @0x8016F5E0 (src/shared) */ - -DEFINE_func_8016F610() /* dedup: shared engine-core @0x8016F610 (src/shared) */ - -DEFINE_func_8016F648() /* dedup: shared engine-core @0x8016F648 (src/shared) */ - -DEFINE_func_8016F680() /* dedup: shared engine-core @0x8016F680 (src/shared) */ - -DEFINE_func_8016F6B0() /* dedup: shared engine-core @0x8016F6B0 (src/shared) */ - - -extern void (*D_80190668[])(void); - -void func_8016F6E0(void *a0) { - D_80190668[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_8016F71C() /* dedup: shared engine-core @0x8016F71C (src/shared) */ - -DEFINE_func_8016F764() /* dedup: shared engine-core @0x8016F764 (src/shared) */ - - -extern void (*D_80190670[])(void); - -void func_8016F798(void *a0) { - D_80190670[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_8016F7D4() /* dedup: shared engine-core @0x8016F7D4 (src/shared) */ - -DEFINE_func_8016F804() /* dedup: shared engine-core @0x8016F804 (src/shared) */ - - -extern void (*D_80190678[])(void); - -void func_8016F834(void *a0) { - D_80190678[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_8016F870() /* dedup: shared engine-core @0x8016F870 (src/shared) */ - -DEFINE_func_8016F8AC() /* dedup: shared engine-core @0x8016F8AC (src/shared) */ - - -extern void (*D_80190680[])(void); - -void func_8016F8E4(void *a0) { - D_80190680[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_8016F920() /* dedup: shared engine-core @0x8016F920 (src/shared) */ - -DEFINE_func_8016F95C() /* dedup: shared engine-core @0x8016F95C (src/shared) */ - - -extern void (*D_80190688[])(void); - -void func_8016F9C4(void *a0) { - D_80190688[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_8016FA00() /* dedup: shared engine-core @0x8016FA00 (src/shared) */ - -DEFINE_func_8016FA44() /* dedup: shared engine-core @0x8016FA44 (src/shared) */ - - -extern void (*D_80190690[])(void); - -void func_8016FA84(void *a0) { - D_80190690[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_8016FAC0() /* dedup: shared engine-core @0x8016FAC0 (src/shared) */ - -DEFINE_func_8016FB10() /* dedup: shared engine-core @0x8016FB10 (src/shared) */ - -DEFINE_func_8016FB50() /* dedup: shared engine-core @0x8016FB50 (src/shared) */ - - -extern void (*D_8019069C[])(void); - -void func_8016FB7C(void *a0) { - D_8019069C[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_8016FBB8() /* dedup: shared engine-core @0x8016FBB8 (src/shared) */ - -DEFINE_func_8016FC24() /* dedup: shared engine-core @0x8016FC24 (src/shared) */ - -DEFINE_func_8016FC64() /* dedup: shared engine-core @0x8016FC64 (src/shared) */ - - -extern void (*D_801906A8[])(void); - -void func_8016FC90(void *a0) { - D_801906A8[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_8016FCCC() /* dedup: shared engine-core @0x8016FCCC (src/shared) */ - -DEFINE_func_8016FD08() /* dedup: shared engine-core @0x8016FD08 (src/shared) */ - -DEFINE_func_8016FD7C() /* dedup: shared engine-core @0x8016FD7C (src/shared) */ - - -extern void (*D_801906B4[])(void); - -void func_8016FDB4(void *a0) { - D_801906B4[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_8016FDF0() /* dedup: shared engine-core @0x8016FDF0 (src/shared) */ - -DEFINE_func_8016FE2C() /* dedup: shared engine-core @0x8016FE2C (src/shared) */ - -DEFINE_func_8016FE78() /* dedup: shared engine-core @0x8016FE78 (src/shared) */ - -DEFINE_func_8016FED0() /* dedup: shared engine-core @0x8016FED0 (src/shared) */ - - -extern void (*D_801906C4[])(void); - -void func_8016FF30(void *a0) { - D_801906C4[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_8016FF6C() /* dedup: shared engine-core @0x8016FF6C (src/shared) */ - -DEFINE_func_8016FFA8() /* dedup: shared engine-core @0x8016FFA8 (src/shared) */ - - -extern void (*D_801906D4[])(void); - -void func_8016FFDC(void *a0) { - D_801906D4[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_80170018() /* dedup: shared engine-core @0x80170018 (src/shared) */ - -DEFINE_func_80170068() /* dedup: shared engine-core @0x80170068 (src/shared) */ - -DEFINE_func_801700B8() /* dedup: shared engine-core @0x801700B8 (src/shared) */ - -DEFINE_func_80170100() /* dedup: shared engine-core @0x80170100 (src/shared) */ - - -extern void (*D_801906DC[])(void); - -void func_80170150(void *a0) { - D_801906DC[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_8017018C() /* dedup: shared engine-core @0x8017018C (src/shared) */ - -DEFINE_func_801701C8() /* dedup: shared engine-core @0x801701C8 (src/shared) */ - - -extern void (*D_801906E4[])(void); - -void func_80170240(void *a0) { - D_801906E4[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_8017027C() /* dedup: shared engine-core @0x8017027C (src/shared) */ - -DEFINE_func_801702B8() /* dedup: shared engine-core @0x801702B8 (src/shared) */ - - -extern void (*D_801906EC[])(void); - -void func_801702FC(void *a0) { - D_801906EC[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_80170338() /* dedup: shared engine-core @0x80170338 (src/shared) */ - -DEFINE_func_80170374() /* dedup: shared engine-core @0x80170374 (src/shared) */ - - -extern void (*D_801906F4[])(void); - -void func_801703E0(void *a0) { - D_801906F4[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_8017041C() /* dedup: shared engine-core @0x8017041C (src/shared) */ - -DEFINE_func_8017044C() /* dedup: shared engine-core @0x8017044C (src/shared) */ - - -extern void (*D_801906FC[])(void); - -void func_801704B0(void *a0) { - D_801906FC[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_801704EC() /* dedup: shared engine-core @0x801704EC (src/shared) */ - -DEFINE_func_8017051C() /* dedup: shared engine-core @0x8017051C (src/shared) */ - - -extern void (*D_80190704[])(void); - -void func_80170548(void *a0) { - D_80190704[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_80170584() /* dedup: shared engine-core @0x80170584 (src/shared) */ - -DEFINE_func_801705C0() /* dedup: shared engine-core @0x801705C0 (src/shared) */ - - -extern void (*D_8019070C[])(void); - -void func_801705F8(void *a0) { - D_8019070C[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_80170634() /* dedup: shared engine-core @0x80170634 (src/shared) */ - -DEFINE_func_80170670() /* dedup: shared engine-core @0x80170670 (src/shared) */ - - -extern void (*D_80190714[])(void); - -void func_801706AC(void *a0) { - D_80190714[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_801706E8() /* dedup: shared engine-core @0x801706E8 (src/shared) */ - -DEFINE_func_80170718() /* dedup: shared engine-core @0x80170718 (src/shared) */ - - -extern void (*D_8019071C[])(void); - -void func_80170748(void *a0) { - D_8019071C[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_80170784() /* dedup: shared engine-core @0x80170784 (src/shared) */ - -DEFINE_func_801707D4() /* dedup: shared engine-core @0x801707D4 (src/shared) */ - - -extern void (*D_80190724[])(void); - -void func_80170810(void *a0) { - D_80190724[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_8017084C() /* dedup: shared engine-core @0x8017084C (src/shared) */ - - -DEFINE_func_801708B0() /* dedup: shared engine-core @0x801708B0 (src/shared) */ - - -DEFINE_func_80170928() /* dedup: shared engine-core @0x80170928 (src/shared) */ - -DEFINE_func_80170970() /* dedup: shared engine-core @0x80170970 (src/shared) */ - -DEFINE_func_801709B8() /* dedup: shared engine-core @0x801709B8 (src/shared) */ - -DEFINE_func_80170A00() /* dedup: shared engine-core @0x80170A00 (src/shared) */ - -DEFINE_func_80170A48() /* dedup: shared engine-core @0x80170A48 (src/shared) */ - -DEFINE_func_80170A90() /* dedup: shared engine-core @0x80170A90 (src/shared) */ - - -extern void (*D_8019072C[])(void); - -void func_80170AD8(void *a0) { - D_8019072C[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_80170B14() /* dedup: shared engine-core @0x80170B14 (src/shared) */ - -DEFINE_func_80170B48() /* dedup: shared engine-core @0x80170B48 (src/shared) */ - -DEFINE_func_80170B90() /* dedup: shared engine-core @0x80170B90 (src/shared) */ - - -extern void (*D_80190734[])(void); - -void func_80170BD8(void *a0) { - D_80190734[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_80170C14() /* dedup: shared engine-core @0x80170C14 (src/shared) */ - -DEFINE_func_80170C44() /* dedup: shared engine-core @0x80170C44 (src/shared) */ - - -extern void (*D_8019073C[])(void); - -void func_80170C74(void *a0) { - D_8019073C[*(u8 *)((s32)a0 + 0x215)](); -} - - -DEFINE_func_80170CB0() /* dedup: shared engine-core @0x80170CB0 (src/shared) */ - - -DEFINE_func_80170CF0() /* dedup: shared engine-core @0x80170CF0 (src/shared) */ - - - -extern void (*D_80190744[])(void); - -void func_80170D68(void *a0) { - D_80190744[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_80170DA4() /* dedup: shared engine-core @0x80170DA4 (src/shared) */ - -DEFINE_func_80170DE0() /* dedup: shared engine-core @0x80170DE0 (src/shared) */ - - -extern void (*D_8019074C[])(void); - -void func_80170E34(void *a0) { - D_8019074C[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_80170E70() /* dedup: shared engine-core @0x80170E70 (src/shared) */ - -DEFINE_func_80170EAC() /* dedup: shared engine-core @0x80170EAC (src/shared) */ - - -extern void (*D_80190754[])(void); - -void func_80170EFC(void *a0) { - D_80190754[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_80170F38() /* dedup: shared engine-core @0x80170F38 (src/shared) */ - -DEFINE_func_80170F74() /* dedup: shared engine-core @0x80170F74 (src/shared) */ - - -extern void (*D_8019075C[])(void); - -void func_80170FB0(void *a0) { - D_8019075C[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_80170FEC() /* dedup: shared engine-core @0x80170FEC (src/shared) */ - -DEFINE_func_80171028() /* dedup: shared engine-core @0x80171028 (src/shared) */ - - -extern void (*D_80190764[])(void); - -void func_80171064(void *a0) { - D_80190764[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_801710A0() /* dedup: shared engine-core @0x801710A0 (src/shared) */ - -DEFINE_func_801710DC() /* dedup: shared engine-core @0x801710DC (src/shared) */ - - -extern void (*D_8019076C[])(void); - -void func_80171120(void *a0) { - D_8019076C[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_8017115C() /* dedup: shared engine-core @0x8017115C (src/shared) */ - -DEFINE_func_8017118C() /* dedup: shared engine-core @0x8017118C (src/shared) */ - - -extern void (*D_80190774[])(void); - -void func_801711C0(void *a0) { - D_80190774[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_801711FC() /* dedup: shared engine-core @0x801711FC (src/shared) */ - -DEFINE_func_80171238() /* dedup: shared engine-core @0x80171238 (src/shared) */ - - -extern void (*D_8019077C[])(void); - -void func_80171260(void *a0) { - D_8019077C[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_8017129C() /* dedup: shared engine-core @0x8017129C (src/shared) */ - -DEFINE_func_80171384() /* dedup: shared engine-core @0x80171384 (src/shared) */ - - -extern void (*D_80190784[])(void); - -void func_801714E4(void *a0) { - D_80190784[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_80171520() /* dedup: shared engine-core @0x80171520 (src/shared) */ - -DEFINE_func_8017162C() /* dedup: shared engine-core @0x8017162C (src/shared) */ - -DEFINE_func_801716AC() /* dedup: shared engine-core @0x801716AC (src/shared) */ - -DEFINE_func_801717A0() /* dedup: shared engine-core @0x801717A0 (src/shared) */ - -DEFINE_func_801717F4() /* dedup: shared engine-core @0x801717F4 (src/shared) */ - -DEFINE_func_80171824() /* dedup: shared engine-core @0x80171824 (src/shared) */ - -DEFINE_func_80171854() /* dedup: shared engine-core @0x80171854 (src/shared) */ - -DEFINE_func_80171884() /* dedup: shared engine-core @0x80171884 (src/shared) */ - -DEFINE_func_801718AC() /* dedup: shared engine-core @0x801718AC (src/shared) */ - -DEFINE_func_80171904() /* dedup: shared engine-core @0x80171904 (src/shared) */ - -DEFINE_func_80171928() /* dedup: shared engine-core @0x80171928 (src/shared) */ - -DEFINE_func_8017196C() /* dedup: shared engine-core @0x8017196C (src/shared) */ - -DEFINE_func_8017197C() /* dedup: shared engine-core @0x8017197C (src/shared) */ - -DEFINE_func_80171990() /* dedup: shared engine-core @0x80171990 (src/shared) */ - -DEFINE_func_801719A4() /* dedup: shared engine-core @0x801719A4 (src/shared) */ - -DEFINE_func_80171A04() /* dedup: shared engine-core @0x80171A04 (src/shared) */ - -DEFINE_func_80171A10() /* dedup: shared engine-core @0x80171A10 (src/shared) */ - -DEFINE_func_80171A1C() /* dedup: shared engine-core @0x80171A1C (src/shared) */ - -DEFINE_func_80171A34() /* dedup: shared engine-core @0x80171A34 (src/shared) */ - -DEFINE_func_80171A44() /* dedup: shared engine-core @0x80171A44 (src/shared) */ - -DEFINE_func_80171A58() /* dedup: shared engine-core @0x80171A58 (src/shared) */ - -DEFINE_func_80171A6C() /* dedup: shared engine-core @0x80171A6C (src/shared) */ - -DEFINE_func_80171A80() /* dedup: shared engine-core @0x80171A80 (src/shared) */ - -DEFINE_func_80171A88() /* dedup: shared engine-core @0x80171A88 (src/shared) */ - -DEFINE_func_80171AB0() /* dedup: shared engine-core @0x80171AB0 (src/shared) */ - -DEFINE_func_80171B10() /* dedup: shared engine-core @0x80171B10 (src/shared) */ - -DEFINE_func_80171B44() /* dedup: shared engine-core @0x80171B44 (src/shared) */ diff --git a/src/ov_SC04_019/ov_SC04_019_jr_80171B4C.c b/src/ov_SC04_019/ov_SC04_019_jr_80171B4C.c deleted file mode 100644 index 4322677ea..000000000 --- a/src/ov_SC04_019/ov_SC04_019_jr_80171B4C.c +++ /dev/null @@ -1,2547 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8; -typedef void (*Handler)(struct Entry_8016E95C *); -extern void func_801458E0(void); -extern s32 D_800AE6AC; -extern s32 D_800AE6B0; -extern s16 D_800B9A0A; -extern u8 D_80078E50; -extern void func_800D185C(u8 *a0); -extern void func_801458E8(void); -extern s32 func_80029504(void); -extern void func_80145B24(void); -extern u8 D_8018F74C; -extern u8 D_8018F6BC; -extern u8 D_8018F698; -extern u8 D_8018F674; -extern u8 D_8018F728; -extern u8 D_8018F704; -extern u8 D_8018F6E0; -extern u8 D_8018F650; -extern void func_80145934(void); -extern u8 D_8018F7DC; -extern u8 D_8018F7B8; -extern u8 D_8018F794; -extern u8 D_8018F770; -extern void func_80145A2C(void); -extern s32 func_800291DC(s32); -extern void func_800291C8(s32, s32); -extern void func_80162120(void); -extern void func_80029124(s32, s32); -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); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_80145BF8(void); -extern s32 func_800291B4(s32 arg); -extern void func_800291A0(s32, s32); -extern void func_80145C54(void); -extern s32 func_80145CEC(); -extern s32 func_80029178(s32 arg); -extern void func_80146014(s32 a0); -extern unsigned char D_8018EBD4[]; -extern unsigned char D_8018EC04[]; -extern unsigned char D_8018EC54[]; -extern unsigned char D_8018EC84[]; -extern unsigned char D_8018ECB4[]; -extern void func_80145EE8(s32 param_1); -extern void MoveImage(void *a0, s32 a1, s32 a2); -extern void func_80146074(void); -extern s32 func_80146128(void); -extern void func_80146360(void); -extern void func_801463A0(); -extern void func_8014607C(void); -extern s32 *D_80126B78; -extern u8 D_80078EC1; -extern s32 D_80078EC8; -extern s32 D_80126B9C; -extern s32 D_8011F730; -extern u16 D_801152B8; -extern u16 D_8012693A; -extern u8 D_80126BE0[]; -extern u8 D_801150F0[]; -extern void *memcpy(void *dst, const void *src, u32 n); -extern void func_80146FC4(s32 a0); -extern void func_80150A70(s32 a0); -extern void func_80147098(s32 *a0); -extern void func_8014A638(s32 arg0); -extern s32 func_80155458(s32 a0); -extern s32 func_80029104(void); -extern void func_80029344(void); -extern void func_8014ADE0(s32 a0); -extern void func_8014B350(s32 a0); -extern void func_8014B7A4(s16 *param_1); -extern s32 func_80161D58(s32 a0); -extern void func_80161A90(s32 a0); -extern void func_8014B504(u16 *a0); -extern void func_80149BEC(s32 a0); -extern void func_8014B5D0(s32 *a0); -extern void func_8014C99C(u8 *a0); -extern void func_8014B190(s32 s0); -extern void func_80148648(s32 a0, s32 a1); -extern s32 func_80149228(s32 a0); -extern void func_8014A59C(s32 a0); -extern void func_8016F14C(void *a0); -extern void func_80154418(void *a0); -extern void func_80154BE4(s32 a0); -extern void func_80165694(s32 arg0); -extern void func_801654A8(s32 a0); -extern void func_8014A680(s32 a0); -extern void func_8014A6A8(s32 a0); -extern void func_8014A71C(s32 a0); -extern void func_80172588(s32 *a0); -extern void func_801473DC(s32 *a0); -extern void func_80015978(s32 a0, s32 *a1); -extern void (*D_8018ED04[])(void *); -extern u8 D_80126BA4; -extern s32 D_80127098; -extern s32 D_80127094; -extern s32 D_80127090; -extern void func_80146534(void); -extern void func_8001D074(s32 a0, s32 a1); -extern void func_80146554(void); -extern void func_80146578(void); -extern void func_8001CFDC(s32, s32); -extern void func_8014659C(void); -extern void func_8001D074(s32, s32); -extern void func_801465C0(void); -extern void func_801465E4(void); -extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); -extern s32 D_8011F9D0; -extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); -extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 D_8011F750; -extern s32 D_8011F754; -extern u8 * func_801468C8(s32 arg0, u8 arg1); -extern s32 D_8011D030; -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); -extern s32 func_80146B9C(void *a0); -extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); -extern u16 D_8011DA28; -extern s32 func_80146B9C(void * arg0); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80146CA0(void *a0); -extern void func_80146CB4(void *a0); -extern void func_80146CC8(s32 a0); -extern void func_80146D30(s32 a0); -extern void func_80146D80(s32 *a0); -extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80146D90(s32 a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); -extern void func_80146E90(s32 *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80015954(s32 a0, s32 a1); -extern void func_80149374(s32 a0, s32 a1); -extern void func_80146F58(s32 a0, s32 a1); -extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 func_8012A68C(void); -extern s16 func_8012A758(void); -extern void func_8004978C(s16 *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern u8 D_80126DB0[]; -extern u16 D_80126DB6; -extern void func_8014704C(s32 *a0); -extern s32 func_80147054(void *a0); -extern void func_80147060(u8 * a0); -extern void func_8014706C(void *arg0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80147084(s32 *a0); -extern void func_8014708C(void *arg0); -extern s32 func_801470A0(void *a0); -extern void func_801470AC(s32 *a0); -extern void func_801470B4(s32 arg0); -extern void func_801470C0(s32 a0); -extern void func_80147118(s32 a0); -extern s16 D_80126BB8; -extern s16 D_80126BBA; -extern s16 D_80126BBC; -extern void func_80147264(s32 a0); -extern void func_80147290(void); -extern void func_801472B4(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void *D_8012707C; -extern void func_801472DC(void); -extern void func_801472F0(void *a0); -extern void func_80147364(u16, s32); -extern void func_80147300(u16 arg0); -extern void func_80147324(s32 arg0); -extern void func_801473EC(s32 *a0); -extern void func_80147460(s32 a0); -extern void func_80147514(); -extern void func_80147628(s32 a0); -extern void func_80147478(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); -extern s32 func_800129CC(s32 a0, s32 a1); -extern void func_80147514(s32 arg0); -extern void func_80013F3C(s32 a0); -extern void func_80012558(s32 a0, s32 a1); -extern void func_800126C4(s32 a0, s32 a1); -extern void func_800123F0(s32 a0, s32 a1); -extern void func_80147718(s32 a0); -extern void func_80147788(void *a0, s32 a1); -extern void func_801477A8(void *a0, s32 a1); -extern void func_801477C8(void *a0, s32 a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80147814(s32 a0, s32 a1); -extern void func_80147928(int a0, int a1); -extern void func_8014799C(int a0, int a1); -extern void func_80147A10(int a0, int a1); -extern void func_80147860(int a0, int a1, int a2, int a3); -extern void func_80147948(s32 a0, s32 a1, s32 a2); -extern void func_801479BC(s32 a0, s32 a1, s32 a2); -extern void func_80147A30(s32 a0, s32 a1, s32 a2); -extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147948(int a0, int a1, int a2); -extern void func_801479BC(int a0, int a1, int a2); -extern void func_80147A30(int a0, int a1, int a2); -extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147A84(s32 arg0); -extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147AAC(s32 arg0); -extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80147B5C(s32 a0, void *a1); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern void func_80147B18(s32 a0); -extern void func_80147B5C(s32 arg0, void *arg1); -extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147DC0(s32 a0, s32 a1); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147F50(s32 arg0); -extern void func_80148038(s32 a0, s32 a1); -extern s32 ratan2(s32 a0, s32 a1); -extern s32 csqrt(s32 a0); -extern s32 func_80012A60(s32 a0, s32 a1); -extern void func_80148094(int param_1, short *param_2, int *param_3); -extern void func_801485B8(s32 a0, s32 a1, s32 a2); -extern void func_801484B0(s32 a0, s32 a1); -extern s32 func_80154358(void *a0); -extern void func_801484E8(s32 a0, s32 a1); -extern void func_80148534(s32 a0, s32 a1); -extern void func_8014856C(s32 a0, s32 a1); -extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); -extern void func_80148634(void *a0); -extern u8 D_800B9A64; -extern s32 func_80014DC0(); -extern s32 func_80014D68(); -extern s32 func_80014D94(); -extern s32 func_80014CF8(); -extern void func_800120DC(); -extern s32 func_800CF8B4(); -extern u16 func_801487F4(s32 *a0); -extern u16 func_80148800(s32 *a0); -extern u8 func_8014880C(s32 *a0); -extern u16 func_80148818(s32 *a0); -extern s32 func_80047D3C(s32 a0); -extern s32 func_80148824(void *arg0); -extern s32 func_801488A8(u8 *a0); -extern s32 func_8014891C(s32 a0); -extern s32 func_80148980(u8 *a0); -extern s32 func_801489E8(s32 a0); -extern s32 func_80148A48(s32 a0); -extern int func_80148AFC(void *a0); -extern void func_80148AAC(u8 *a0); -extern s32 func_80148C18(void); -extern s32 func_80148C20(s32 a0, s16 a1); -extern s32 func_80148C34(s32 a0, s32 a1); -extern s32 func_80148C4C(s32 a0, s32 a1); -extern s32 func_80148C64(s32 a0, s32 a1); -extern s32 func_80148C7C(void); -extern s32 func_80148C84(s32 a0, s32 a1); -extern s32 func_80148C9C(s32 a0, s32 a1); -extern s32 func_80148CB4(s32 a0, s32 a1); -extern s32 func_80148CCC(s32 a0, s32 a1); -extern s32 func_80148CE4(void); -extern s32 func_80148CEC(void); -extern s32 func_80148CF4(s32 a0, s32 a1); -extern s32 func_80148D0C(s32 a0, s32 a1); -extern s32 func_80148D24(void *a0, int a1); -extern s32 func_80148D3C(void); -extern s32 func_80148F60(void); -extern s32 func_80148F68(s32 a0); -extern s32 func_80148F74(s32 a0); -extern s32 func_80148F80(s32 a0); -extern s32 func_80148F8C(s32 a0); -extern s32 func_80148F98(void); -extern s32 func_80148FA0(s32 a0); -extern s32 func_80148FAC(s32 a0); -extern s32 func_80148FB8(s32 a0); -extern s32 func_80148FC4(s32 a0); -extern s32 func_80148FD0(void); -extern s32 func_80148FD8(void); -extern s32 func_80148FE0(s32 a0); -extern s32 func_80148FEC(s32 a0); -extern s32 func_80148FF8(s32 a0); -extern s32 func_80149004(void); -extern void func_8014900C(s32 *a0); -extern void func_80149020(s32 *a0); -extern void func_80149034(s32 *a0); -extern void func_80149048(s32 *a0); -extern void func_8014905C(u8 *a0); -extern void func_801490E0(s32 *a0, s16 a1); -extern void func_801490E8(s32 *a0, s16 a1); -extern void func_801490F0(s32 *a0, s16 a1); -extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); -extern void func_801490F8(s32 a0, s32 a1); -extern s32 func_801491C4(s32 a0); -extern s32 func_80149184(s32 a0); -extern s32 D_801151D4; -extern void func_80149204(s32 *a0); -extern void func_80149210(s32 a0, s32 a1); -extern s32 func_80149284(s32 *a0, s32 a1); -extern void func_80149350(s32 arg0); -extern void func_80149290(s32 a0); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_80149374(s32 arg0, s32 arg1); -extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8014942C(s32 arg0); -extern void func_8012EF70(s32 a0, s32 a1); -extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012EFB8(s32 a0); -extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); -extern void func_8014964C(s32 param_1, s32 param_2); -extern s32 func_801496D4(void *a0); -extern void func_8015AD08(); -extern void func_80149704(void); -extern void func_8015ACC4(); -extern void func_80149724(void); -extern u8 D_80078EBF; -extern s32 func_80149744(struct S_80149744 *a0); -extern void func_8015F7A0(); -extern void func_80149788(void); -extern void func_801653B8(); -extern void func_80149864(void); -extern s16 currentLocationId; -extern s32 func_8016F1AC(void); -extern s32 func_80149884(void); -extern void func_80160B00(); -extern void func_801498C0(void); -extern s32 func_80149AA8(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern void func_80146750(void *a0); -extern s32 func_801498E0(s32 *a0); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_80147364(u16 a0, s32 a1); -extern s32 func_800CCF28(s32 a0); -extern u8 D_80126B5C; -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_8015DAC4(s32 *a0); -extern void func_8015554C(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern void func_80149B14(s32 *a0); -extern u8 func_8014BEF8(void); -extern s32 func_80149B54(s32 * arg0); -extern void func_8015DE24(s32 *a0); -extern void func_80157510(s32 *a0); -extern void func_80149BAC(s32 *a0); -extern s32 func_80029178(s32 a0); -extern s32 func_80149C08(s32 arg0); -extern void func_801577C8(); -extern void func_80149C94(void); -extern void func_80157D20(void); -extern void func_80149CB4(void); -extern s32 func_80149CD4(s32 a0); -extern u8 func_8014B5B8(s32 *a0); -extern s32 func_80149D10(s32 a0); -extern s32 func_80149E94(s32 a0); -extern s32 func_80149DD8(s32 a0); -extern s32 func_80149D9C(s32 a0); -extern u8 D_801202A0[]; -extern s32 func_80149F2C(s32 a0, s32 a1); -extern s32 func_80149E94(s32 arg0); -extern void func_80149FA8(void); -extern s32 D_8018EDCC[]; -extern u8 D_80078E78[]; -extern s32 func_80149FB0(s32 a0); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern void func_8014A1B0(s32 a0, s32 a1); -extern s32 func_8014A048(s32 param_1); -extern u16 func_80156370(u16 a0); -extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); -extern void func_8015D4B4(); -extern void func_8014A218(void); -extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); -extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); -extern s32 func_8014A238(s32 arg0); -extern s32 func_8014A2E4(s32 a0); -extern void func_8014A380(s32 a0, s32 a1); -extern s16 D_801152B0; -extern s16 D_801152B4; -extern s32 func_8014A3E0(struct S_8014A3E0 *a0); -extern s32 func_8014A454(s32 a0); -extern s32 func_8014A4B4(void *a0); -extern void func_8015EDD4(); -extern void func_8014A4FC(void); -extern s32 func_8014A674(s32 *a0); -extern s32 func_8014A69C(s32 *a0); -extern s32 func_8014A6C4(s32 a0); -extern void func_8015E184(); -extern void func_8014A830(void); -extern s32 func_80029AF4(void); -extern s32 func_8014A850(s32 param_1); -extern void func_8014AA04(s32 a0); -extern void func_801599A4(void *a0); -extern void func_80159B3C(void *a0); -extern s32 func_80165A20(s32 a0); -extern void func_8014AB7C(); -extern void func_8014AC10(); -extern void func_8014AA28(void); -extern void func_8014AB5C(void); -extern void func_80162CCC(void); -extern void func_8014AB7C(s32 arg0); -extern void func_8014ABF0(void); -extern void func_80016714(void *a0, s32 a1); -extern void func_8014AC10(s32 arg0); -extern void func_8014ACC0(s32 a0, s32 a1); -extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); -extern void func_8014ACE8(void *a0, s32 a1, s32 a2); -extern void func_80146AFC(void *a0); -extern void func_8014ADA8(s32 a0, s32 a1); -extern void func_8014AD7C(s32 a0); -extern s32 D_80078E8C; -extern void func_8014B034(s32 arg0); -extern void func_8014B00C(s32 arg0); -extern void func_8014B084(void); -extern s16 D_80078E90; -extern void func_8014B034(s32 a0); -extern u16 D_80078EAC; -extern u8 D_80078EBA; -extern void func_800D10EC(void); -extern void func_8002AC98(void); -extern s32 func_8014B154(s32 *a0); -extern void func_8014B12C(void); -extern void func_8014B2F8(void); -extern void func_8014B4C4(void); -extern void func_8014B160(s32 a0); -extern s32 func_8016F1C4(void); -extern s16 D_80078E96; -extern s16 D_80078EB8; -extern u16 D_80078EA6; -extern void func_8014B2A8(void); -extern void func_8014B310(void); -extern void func_8014B2D0(void); -extern s32 D_80078E94; -extern s32 D_80078ECC; -extern void func_8014B33C(void); -extern u8 D_80062BF4[]; -extern void func_8014BC80(s32 a0, s32 a1); -extern void func_80019064(void *a0); -extern s32 D_80078E98; -extern void func_80166244(); -extern void func_8014B4D4(void *a0); -extern s16 D_80078E9A; -extern u8 D_80126D1C; -extern s32 D_80126D74; -extern void func_8014B598(s32 a0, s32 a1); -extern void func_8014B5B0(s32 *a0); -extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); -extern void func_8014B5D8(s32 s1); -extern s32 D_80078E9C; -extern s32 D_80078ED0; -extern void func_8014B6F0(s32 a0, s32 a1); -extern void func_8014B768(s32 a0, s32 a1); -extern void func_8014B944(s32 a0, s32 a1, s32 a2); -extern s32 D_80078EA4; -extern u16 D_80078EB2; -extern s16 D_80078EB4; -extern void func_8014BB0C(void); -extern void func_8014BB24(s32 a0, s32 a1, s32 a2); -extern void func_8014BC0C(s32 a0, s32 a1); -extern void func_8014BC44(s32 a0, s32 a1); -extern u8 D_800B9A17; -extern void func_8014BCC0(s32 a0, s32 a1); -extern u16 D_80078EB6; -extern s32 func_8014BCEC(s32 a0, s32 a1); -extern void func_8014BD24(s32 a0, s32 a1); -extern void func_8014BD60(s32 param_1, s32 param_2); -extern void func_8014BD98(s32 a0, u16 a1); -extern void func_8014BDC8(void); -extern void func_8014BDE0(void); -extern s32 func_8017267C(s32 *a0); -extern s32 func_80013294(void *a0, void *a1); -extern void func_80029ED4(s32 a0); -extern void func_8014BDE8(s32 a0); -extern void func_8014BE78(void); -extern void func_8014BE9C(void); -extern void func_80029124(s32 a0, s32 a1); -extern void func_8014BEC0(void); -extern void func_8014BF18(s32 a0); -extern void func_8014BF48(void); -extern u8 func_8014BF6C(void); -extern void func_8014BF8C(u8 arg0); -extern void func_8014BFB0(void); -extern u8 func_8014BFD4(void); -extern void func_8014BFF4(s32 a0, s32 a1); -extern void func_8014C010(s32 a0, s32 a1); -extern s32 func_8014C050(s32 a0, s32 a1); -extern s32 func_8014C088(s32 a0, s32 a1); -extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); -extern s32 func_8014C118(void * a0, s32 a1, s32 a2); -extern s32 func_8014C168(s32 * param_1, s32 param_2); -extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); -extern u8 D_8018EE54[]; -extern void func_8014C1A0(s32 arg0, s32 arg1); -extern s32 func_80013328(s32 a0, s32 a1); -extern s32 func_8014C59C(void *a0, void *a1); -extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); -extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); -extern s32 ratan2(s32 dx, s32 dy); -extern u8 D_8018EE5C; -extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); -extern s16 func_8014C5D0(s32 a0, s32 a1); -extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); -extern u8 D_80126D17; -extern void func_8014C6AC(void); -extern void func_8014C6C0(void); -extern u8 D_80126D1E; -extern void func_8014C6D0(void); -extern void func_8014C6E0(void); -extern s32 func_8014C860(s32 a0, s32 a1); -extern void func_8014C8C8(s32 a0, s32 *a1); -extern void func_8014C88C(s32 a0); -extern void func_8014C8C8(s32 dst, s32 * src); -extern void func_8014C8F0(s32 arg0); -extern u8 D_801151F0[]; -extern s32 func_8014C918(s32 a0, s32 a1); -extern s32 D_80126B50; -extern void func_8014C968(void); -extern void func_8014C978(void); -extern s32 func_8014C98C(void); -extern void func_80139914(s32 a0); -extern s32 func_8014CA00(s32 a0); -extern u16 func_8014CA70(s32 a0, s32 a1); -extern s32 func_8014CA14(s32 a0, s32 a1); -extern u16 func_8014CAE4(s32 *a0, s32 a1); -extern s32 func_8014CA88(s32 *a0, s32 a1); -extern s32 func_8014CAFC(void); -extern s32 func_8014CB0C(void); -extern s32 func_8014CB1C(void); -extern u8 D_80126D1F; -extern s32 func_8014CB2C(void); -extern s32 func_8014CB58(void); -extern u8 D_80126D1D; -extern void func_8014CB68(void); -extern s32 func_8014CB7C(void); -extern s32 func_8014CB8C(void); -extern short D_80126C9E; -extern void func_8014CB9C(struct Packed8 *a0); -extern s32 D_80126CDC; -extern void func_8014CBD8(void); -extern s16 D_80126CC4; -extern void func_8014CBE8(void); -extern void func_8014CBF8(void *a0); -extern void func_8014D3E0(s32 a0); -extern void func_8014D04C(void); -extern void func_8014CCB4(void); -extern void func_8014CC28(s32 a0); -extern void func_8014CD0C(u8 *a0); -extern s32 func_8014CF04(s32 a0, s32 a1, void *a2); -extern void func_8014CD80(s32 a0, void *a1, void *a2); -extern void func_8014D0A4(s32 a0); -extern s32 func_8014D2A0(s32 a0, void *a1, void *a2); -extern s32 func_8014D12C(s32 a0, void *a1, void *a2); -extern void func_8014D438(s32 a0); -extern void func_8014D3E0(s32 _arg0); -extern void func_8014D610(s32 a0, void *a1, void *a2); -extern s32 func_8014D4C0(s32 a0, void *a1, void *a2); -extern void func_8014D790(s32 a0); -extern void func_8014D738(void); -extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); -extern s32 func_8014D820(s32 a0, u16 *a1, u16 *a2); -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); -extern void func_8014DF94(s32 arg0); -extern void func_8014DF3C(void); -extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ -extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ -extern s16 D_801152AC; -extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); -extern void func_8014E48C(s32 a0); -extern void func_8014E434(void); -extern void func_8014E5B4(s32 a0, void *a1, void *a2); -extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); -extern void func_8014E6F8(struct SubE6F8 *a0); -extern void func_8014E6A0(void); -extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); -extern void func_8014E934(s32 _arg0); -extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); -extern s32 func_8014E98C(void *a0); -extern u16 D_800B99DA; -extern s32 D_801150D8; -extern s16 D_801152AA; -extern u8 D_80126720[]; -extern s16 D_80126724; -extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); -extern s32 func_8014ED80(struct SubED80 *a0); -extern int D_801E5BA8; -extern void func_8014ED28(s32 _arg0); -extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F24C(struct SubF24C *a0); -extern void func_8014F1F4(void); -extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F4C0(); -extern s32 func_8014F468(void); -extern int func_8014F74C(); -extern int func_8014F6F4(void); -extern u8 D_800D3918[]; -extern u8 D_801152A8[]; -extern s32 D_801152BC; -extern int func_8014F74C(s32 arg0); -extern s32 func_8014FA70(s32 a0); -extern s32 D_801E5BAC; -extern void func_8014FA04(s32 a0); -extern s32 func_8014FBC0(); -extern s32 func_8014FC18(u8 *self); -extern int func_8014FD54(int param_1); -extern void func_8014FCFC(void); -extern void func_80150170(void *a0); -extern s32 func_8014FE60(void *a0); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_8014FE60(void *e); -extern s32 func_80134510(s32 arg); -extern s32 func_80150150(s32 a, s32 b); -extern s32 func_80150460(s32 a, s32 b); -extern void func_801504D8(u16 *a0); -extern s32 func_80150480(s32 _arg0); -extern s32 func_80150528(void *a0, void *a1, void *a2); -extern s32 func_80150528(void *arg0, void *arg1, void *arg2); -extern s32 func_801506A4(s32 a0, s32 a1); -extern s32 func_801505FC(s32 a0); -extern s32 func_801506A4(s32 arg0, s32 arg1); -extern void func_80150820(s32 a0, s32 a1); -extern void func_8015086C(int param_1); -extern s32 func_801508B4(s32 a0); -extern s32 func_8015094C(s32 a0); -extern short func_801508F8(s32 a0); -extern s32 D_8018EE8C; -extern s32 D_80126990; -extern s32 D_80126994; -extern u8 D_80126948[]; -extern s32 func_80021174(s32 a0, s32 a1); -extern s32 func_8015094C(s32 param_1); -extern void func_80150B9C(void); -extern s32 func_80151184(s32 a0, s32 a1, s32 a2); -extern s32 func_80150BA4(s32 a0); -extern s32 func_801619D0(void *a0); -extern void func_80150BC8(s32 *a0); -extern s32 func_80150480(s32 a0); -extern u16 D_800AE6DC; -extern void func_80150C48(s32 a0); -extern int func_80151184(int arg, int a1, int a2); -extern int func_80150CA0(int arg); -extern void func_80150EC4(s32 a, s32 b); -extern void func_80150CC4(s32 a); -extern void func_80150CE4(s32 a); -extern void func_80150D04(s32 a); -extern void func_80150D24(s32 a); -extern void func_80150D44(s32 a); -extern void func_80150D64(s32 a); -extern void func_80150D84(s32 a); -extern void func_80150DA4(s32 a); -extern void func_80150DC4(s32 a); -extern void func_80150DE4(s32 a); -extern void func_80150E04(s32 a); -extern void func_80150E24(s32 a); -extern void func_80150E44(s32 a); -extern void func_80150EC4(s32 a0, s32 a1); -extern void func_80150E64(s32 a0); -extern void func_80150E84(s32 a0); -extern void func_80150EA4(s32 a0); -extern u8 D_800AE6C0; -extern s16 D_800AE6C8; -extern s16 D_800AE6CA; -extern s16 D_800AE6CC; -extern s32 D_800AE6C4; -extern s16 D_800AE6CE; -extern u8 D_800AE6BE; -extern u8 D_801201F8[]; -extern void func_80150F78(void); -extern void func_80150F80(s32 a0); -extern int func_80150FB4(int arg); -extern void func_80150FD8(s32 a0); -extern int func_80151014(int arg); -extern void func_80151038(s32 a0); -extern int func_80151070(int arg); -extern int func_80151094(int arg); -extern void func_801510B8(void); -extern void func_801510C0(void); -extern int func_801510C8(int arg); -extern int func_801510EC(int arg); -extern s32 func_8012DB84(void); -extern s32 func_80151110(void); -extern void func_80151130(void); -extern int func_80151138(int arg); -extern void func_8015115C(s32 *a0, s16 a1); -extern s32 func_80151164(s32 a0, s32 a1); -extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); -extern void func_801511A8(u8 *a0); -extern void func_801511C4(u8 *a0); -extern int func_80151204(int arg, int a1); -extern int func_801511E0(int arg); -extern int func_80151204(int a0, int a1); -extern void func_80151238(void *a0); -extern void func_8015126C(u16 *p); -extern void func_80151780(s32 a0); -extern void func_801516F0(s32 *a0); -extern void func_8015173C(s32 *a0); -extern s16 D_8011DB1A; -extern s32 D_80127518; -extern s32 D_801151FC; -extern s32 func_801725CC(u8 *a0); -extern s32 func_80029D3C(void); -extern void func_80151878(void); -extern void func_80153B58(s32 *a0); -extern s32 func_80151880(s32 a0); -extern s32 func_801518D8(s32 a0); -extern s32 func_80151944(void); -extern s32 func_80151924(void); -extern void func_8014E934(s32 a0); -extern s32 func_8014F3E8(s32 a0); -extern void func_801519C8(s32 a0); -extern void func_80151980(s32 a0); -extern M2C_UNK D_800D5880; -extern s32 D_800D58AC; -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801519C8(s32 arg0); -extern void func_80151C54(s32 a0); -extern void func_801542DC(s32 *a0, s32 a1); -extern void func_8015BDD0(s32 *a0); -extern void func_80165718(s32 a0); -extern u8 D_800D46E4[]; -extern void func_80151AE4(s32 arg0); -extern void (*D_8018EF34[])(void); -extern void func_80151D24(void *a0); -extern void func_80151DB0(s32 a0); -extern void func_80151D60(void *a0); -extern s32 func_80172630(u8 *a0); -extern s32 D_80062C14; -extern void func_80151DB0(s32 param_1); -extern void func_80151E78(s32 *a0); -extern void func_80151ECC(struct S80151ECC *a0); -extern void func_80151FB4(s32 a0); -extern void func_80151F38(s32 *a0); -extern void func_801553C0(s32 a0); -extern void func_80153C18(); -extern void (*D_8018EF58[])(void); -extern void func_80152058(void *a0); -extern void func_801520DC(s32 a0); -extern void func_80152094(s32 a0); -extern void func_80147324(s32 a0); -extern u8 D_80062C04[]; -extern M2C_UNK D_8018EF48; -extern void func_801520DC(s32 arg0); -extern void func_801470B4(s32 a0); -extern void func_8015369C(s32 a0); -extern void func_80152194(s32 *a0); -extern s32 func_801536DC(s32 a0); -extern void func_8015220C(s32 a0); -extern s32 func_80153800(s32 a0); -extern void func_801522CC(s32 a0); -extern void func_80152254(s32 *a0); -extern void (*D_8018EF6C[])(void); -extern void func_80152370(void *a0); -extern void func_801523F4(s32 a0); -extern void func_801523AC(s32 a0); -extern void func_8001382C(s32 a0, void *a1, void *a2); -extern u8 D_8018EF78[]; -extern void func_801523F4(s32 arg0); -extern void func_801525F4(int); -extern s32 func_801535F4(void *arg0); -extern void func_8015BF48(s32 *a0); -extern void func_80152500(int param_1); -extern void func_801525F4(s32 a0); -extern void (*D_8018EF88[])(void); -extern void func_80152698(void *a0); -extern void func_80152714(s32 a0); -extern void func_801526D4(s32 a0); -extern void func_80152790(s32 a0); -extern void (*D_8018EFA0[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018EF90; -extern void func_801528B0(s32 arg0); -extern void func_8015294C(s32 a0); -extern void func_80152A08(s32 a0); -extern void func_80152AC8(s32 a0); -extern void func_80152A50(s32 *a0); -extern void (*D_8018EFB4[])(void); -extern void func_80152B6C(void *a0); -extern void func_80152BF0(s32 a0); -extern void func_80152BA8(s32 a0); -extern void func_80152C80(s32 *a0); -extern void func_80152C40(s32 *a0); -extern void (*D_8018EFD0[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018EFC0; -extern void func_80152DA8(s32 arg0); -extern void func_80152E4C(s32 a0); -extern void func_80152EFC(s32 a0); -extern void func_80152FBC(s32 a0); -extern void func_80152F44(s32 *a0); -extern void (*D_8018EFE4[])(void); -extern void func_80153060(void *a0); -extern void func_801530E4(s32 a0); -extern void func_8015309C(s32 a0); -extern void func_80155440(s32 *a0); -extern void func_801530E4(s32 arg0); -extern void func_80153150(struct S80153150 *a0); -extern void func_801531BC(s32 a0); -extern void func_8015327C(s32 a0); -extern void func_80153204(s32 *a0); -extern void (*D_8018EFF8[])(void); -extern void func_80153320(void *a0); -extern void func_801533A4(s32 a0); -extern void func_8015335C(s32 a0); -extern void func_80153410(s32 *a0); -extern void func_80153490(s32 a0); -extern void func_80153550(s32 a0); -extern void func_801534D8(s32 *a0); -extern void (*D_8011DB28)(s32 a0); -extern s32 func_801536DC(s32 param_1); -extern void func_800139C8(s32 a0, void *a1, void *a2); -extern s32 func_80153978(s32 a0, u16 *src); -extern s32 func_80133784(s32 a0, void *src, s32 dst); -extern s32 func_801539F8(s32 a0, void *a1); -extern s32 func_801539F8(s32 a0, void * a1); -extern s32 func_8016DA04(s32 a0); -extern s32 func_80153BD8(s32 a0); -extern s32 func_80153BF0(s32 a0); -extern void func_80153C18(void); -extern u16 D_8011F748; -extern void func_80153C30(void); -extern void func_80153C74(s16 a0, s16 a1); -extern s16 D_8011DB18; -extern void func_80153C44(int a0, int a1, s16 a2); -extern s16 D_8011DB0C; -extern s32 D_80115210; -extern void func_80153C8C(void); -extern void func_80153C9C(void); -extern s32 func_80153CBC(void); -extern s32 D_8018F00C; -extern void (*D_8018F034[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018F014; -extern void func_80153D7C(s32 param_1); -extern void func_8015410C(void); -extern void func_80153E00(s32 param_1); -extern void func_80151664(void); -extern void func_80154134(u8 *a0); -extern void func_80154190(u8 *a0, s32 a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154218(u8 *a0, s32 a1, s32 a2); -extern void func_801541D8(u8 *a0, s32 a1, s32 a2); -extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); -extern void func_801542A4(); -extern void func_801542A4(s32 *a0, s32 a1); -extern void func_8015430C(); -extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); -extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); -extern s32 func_80154358(void * arg0); -extern void func_80154AB4(s32 a0, s32 a1); -extern void func_80154B20(s32 a0, s32 a1, s32 a2); -extern void func_80154AE0(s32 a0, s32 a1, s32 a2); -extern void func_80154B7C(u8 *a0, s32 a1); -extern void func_80154B4C(u8 *a0, s32 a1); -extern void func_80154BC8(void *a0, s32 a1, s32 a2); -extern void func_80154B98(void *a0, s32 a1, s32 a2); -extern u8 D_800D8D10[]; -extern s16 D_80078E9E; -extern void func_801550FC(s32 a0); -extern void func_80154ED8(s32 a0, s32 a1); -extern void func_80154F9C(s32 a0); -extern void func_800183E0(s32 a0); -extern void func_801550FC(s32 arg0); -extern void func_8001D150(s32, s32); -extern void func_8001D130(int, int); -extern void func_80155150(int param_1); -extern s32 D_800DE2A4[]; -extern void func_801552F4(s32 a0); -extern void func_80155344(s32 a0); -extern s32 func_80155394(s32 *a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80029178(s32); -extern int (*D_8018F080[])(void); -extern s32 func_80155458(s32 param_1); -extern s32 func_801659DC(u8 *a0); -extern s32 func_801554B8(void *arg0); -extern void func_801555F4(void *a0); -extern void func_80155518(s32 *a0); -extern void func_80155580(void *a0); -extern void (*D_8018F084[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern s32 func_80029B4C(s32 a0, s32 a1); -extern s32 func_80029BC8(s32 a0, s32 a1); -extern s32 func_80029C44(s32 a0, s32 a1); -extern s32 func_8015640C(s32 a0, s32 a1); -extern s32 rand(void); -extern u32 func_8015616C(s32 param_1, u16 param_2); -extern u16 func_80156370(u16 param_1); -extern s32 func_801564B0(s32 a0); -extern s32 func_8002A1B4(void); -extern s32 func_8002A400(void); -extern s32 func_8002A670(void); -extern s32 func_8002A8E0(void); -extern s32 D_801151E0[]; -extern s32 func_801565C0(void); -extern void func_80156A14(s32 *a0); -extern void func_80156648(s32 *a0); -extern u8 D_8011DAD8[]; -extern s32 func_8014C568(s16 *a0, s16 *a1); -extern void func_801567BC(s32 a0); -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018F4E8[]; -extern void func_80156A1C(s32 param_1, s32 param_2); -extern s32 D_801150E0[]; -extern void func_80156A88(s32 a0, s32 a1); -extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); -extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); -extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); -extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern s32 func_80135004(s32 a0, void *a1, s32 a2); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801575E4(void *a0); -extern void func_801574DC(s32 *a0); -extern void func_80157544(void *a0); -extern void (*D_8018F4F8[])(void); -extern void func_8014CC28(s32 a0); /* defined */ -extern s32 func_8014F3E8(s32 a0); /* declared */ -extern void func_8015BDD0(s32 *a0); /* defined */ -extern void func_801575E4(void *a0); /* defined */ -extern void func_80157580(s32 arg0); -extern u8 D_800D4F14[]; -extern void func_801576A8(void *arg0); -extern s32 func_8015773C(u8 *a0); -extern s32 func_8015771C(u8 *a0); -extern s32 func_8015773C(u8 * arg0); -extern int D_801E5BE0; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018F520[])(void); -extern void func_80157808(void *param_1); -extern void func_80157880(s32 a0); -extern s32 func_801725A4(u8 *a0); -extern u8 D_800D5128; -extern u8 D_8018F500; -extern void func_801578C0(s32 param_1); -extern void func_80147A84(int); -extern void func_80148038(int, int); -extern void func_80147460(int); -extern void func_80146D90(int); -extern void func_80161450(void *a0); -extern void func_80157A8C(int); -extern void func_80154A74(int, int); -extern unsigned char D_800D5178; -extern unsigned char D_8018F510; -extern void func_8015795C(int param_1); -extern void func_80161D20(s32 a0, s32 a1); -extern void func_80157A8C(s32 a0); -extern void func_8016706C(s32 a0); -extern u8 D_800D51AC[]; -extern void func_80157AC8(s32 param_1); -extern void func_80157B74(int param_1); -extern void func_8016158C(void *a0); -extern void func_8015BE04(s32 *a0); -extern void func_80157BC8(s32 a0); -extern void func_80157CCC(s32 a0); -extern void func_80157DC4(void *a0); -extern void func_80157FC4(void *a0); -extern void func_80157D74(u16 *a0); -extern void (*D_8018F560[])(void); -extern void func_80157E38(void *); -extern void func_80157E00(void *a0); -extern void func_80157E38(void * a0); -extern s32 func_80157F64(s32 *a0); -extern s32 func_80156600(void *a0); -extern void func_80157EA4(void *a0); -extern void (*D_8018F568[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018F534; -extern void func_80158038(void * param); -extern u8 D_800D524C[]; -extern void func_80161418(void *a0); -extern void func_801580B4(s32 a0); -extern void func_801581AC(s32 a0); -extern void (*D_8018F574[])(void); -extern void func_8015824C(void *a0); -extern void func_801582C0(void *); -extern void func_80158288(void *a0); -extern u8 D_800D52A8[]; -extern void func_801585A4(s32 *a0); -extern void func_801582C0(void *a0); -extern s32 func_801585AC(s32 *a0); -extern u8 D_800D52E8[]; -extern void func_80158344(s32 *a0); -extern s32 func_801615C4(void *a0, s32 a1); -extern u8 D_8018F544; -extern u8 D_800D533C; -extern void func_80158434(s32 param_1); -extern void func_80158548(s32 param_1); -extern void func_801585EC(u8 *a0); -extern void func_80158794(void); -extern s32 D_801E5BE8; -extern s32 D_801E5BF4; -extern s32 D_801E5BF8; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018F5B0[])(s32 *); -extern void func_80158AE4(void *a0); -extern void func_80158AB4(void *a0); -extern void func_8016F264(void); -extern void func_80165840(void); -extern void func_801658DC(void); -extern void func_80165A78(s32); -extern void func_80158AE4(void * a0); -extern M2C_UNK D_800D58D8; -extern void func_80158BB0(void *arg0); -extern s32 func_80159404(s32 a0, s32 a1); -extern void func_80158C40(s32 *a0); -extern void func_80158CD8(s32 *a0); -extern s32 func_80159434(s32 a0, s32 a1); -extern void func_80158D60(s32 a0); -extern M2C_UNK D_800D5904; -extern void func_80158E24(s32 *a0); -extern s32 D_8018F584[]; -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80158F00(int param_1); -extern u8 D_80110C3C[]; -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80158FA4(s32 param_1); -extern s32 func_801399F0(s32 a0); -extern u8 D_80110C94[]; -extern u8 D_80110CD4[]; -extern void func_80159070(void *a0); -extern s32 func_80029A94(s32); -extern void func_80175454(void); -extern void func_800298BC(void *); -extern void func_8002992C(s32); -extern void func_800CF804(void); -extern void func_800CF818(void); -extern u8 D_80110D0C[]; -extern void func_80159120(s32 a0); -extern void func_801592CC(s32 *a0); -extern u8 D_800AE6BD; -extern s32 D_801E5BF0; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018F800[])(void); -extern void func_80159698(void *a0); -extern s32 func_801596D4(void *a0); -extern void func_80174B6C(void); -extern void func_80129248(s16 a0); -extern void func_8013C938(void); -extern void func_8013CB20(void); -extern void func_8013C98C(void); -extern void func_8002850C(s32, s32, s32); -extern void func_80028620(s32, void *); -extern s16 D_800B9AAC[]; -extern s16 D_800B9B00; -extern u16 D_801270C0; -extern u32 D_800AFAE8[]; -extern char D_8018F620[]; -extern s32 func_801596F0(s32 param_1); -extern s32 func_80159874(void); -extern void func_800167B8(s32 a0); -extern s32 func_8015987C(s32 a0); -extern int func_800167F0(int arg); -extern int func_801598BC(void); -extern void func_80159968(void *a0); -extern void func_801598E0(u8 *a0); -extern void (*D_8018F8A4[])(void); -extern void func_80159A20(void *a0); -extern void func_801599E0(void *a0); -extern void func_80159A18(void); -extern void func_80159BE4(s32); -extern void func_80159B08(s32 *a0); -extern void func_80159B70(void *a0); -extern void func_80159B3C(void * a0); -extern void (*D_8018F9F8[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018F814; -extern void func_80159BE4(s32 arg0); -extern void func_8015A1C8(s32 a0); -extern void func_8015A2D8(s32); -extern void func_8015A1FC(s32 *a0); -extern void func_8015A264(void *a0); -extern void func_8015A230(s32 *a0); -extern void (*D_8018FA00[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018F824; -extern s32 func_80172608(u8 *a0); -extern void func_8015A2D8(s32 param_1); -extern u8 D_800D48DC; -extern s32 func_8015AB7C(s32 a0); -extern s32 D_8011F9C4; -extern s32 func_8015ABD4(s32 a0, s32 a1, s32 a2); -extern s32 func_80161CD0(s32 a0, s32 a1); -extern M2C_UNK D_8018F844; -extern void func_8015AC48(s32 arg0); -extern void func_8015AC90(s32 a0); -extern void func_8015ADB0(s32 a0); -extern void func_8015ACC4(s32 *arg0); -extern void func_8015AD3C(void *a0); -extern void func_8015AD08(void *arg0); -extern void (*D_8018FA08[])(void); -extern void func_8015ADB0(s32); -extern void func_8015AD78(s32 a0); -extern void func_8015ADB0(s32 arg0); -extern s32 func_80161A60(s32 a0); -extern s32 func_801619A4(s32 *a0); -extern s32 func_80149C08(s32 a0); -extern s32 func_8015B6F4(s32 a0); -extern s32 func_8015B7B4(s32 a0); -extern void func_8015B8F8(s32 *a0); -extern void func_800CCCC0(s32 a0); -extern s32 func_8015B858(u8 *a0); -extern s32 func_800CF8B4(void); -extern void func_80147A84(s32 a0); -extern s32 func_80172644(u8 *a0); -extern void func_800CCB78(s32 a0); -extern s32 func_80161488(void *a0); -extern void func_8015CC40(s32 *a0); -extern void func_8015CF8C(s32 *a0); -extern s32 func_8015AE2C(); -extern s32 D_800D4A9C; -extern int func_8015B6F4(int param_1); -extern u8 D_800D4F8C[]; -extern u8 D_800D4BE0[]; -extern s32 func_8014A51C(void); -extern s32 D_800D4B48; -extern void func_8015BD8C(s32 *a0); -extern s32 func_8015BE94(); -extern void func_8015BE38(struct Obj *a0); -extern s32 func_8015BE74(void); -extern void func_80161124(void *a0); -extern s32 func_8015BE94(s32 *a0); -extern s32 func_8015BEC4(void); -extern s32 func_8015B950(s32 arg0); -extern s32 func_8015BEE4(void); -extern void func_8015BF04(s32 *a0); -extern void func_8015C0C4(s32 a0); -extern void func_8015BFF4(void *a0); -extern void func_8015BF7C(s32 *a0); -extern void func_8015C030(s32 *a0, s32 a1); -extern void func_8015BFB0(s32 *a0, s32 a1); -extern void (*D_8018FA30[])(void); -extern void func_8015C0C4(s32); -extern void func_8015C08C(s32 a0); -extern s32 func_8015C128(s32 param_1); -extern void func_8015C6A4(void); -extern void func_8015C788(s32 a0); -extern void func_8015C6AC(s32 *a0); -extern void func_8015C714(void *a0); -extern void func_8015C6E0(s32 *a0); -extern void (*D_8018FA3C[])(void); -extern void func_8015C788(s32); -extern void func_8015C750(s32 a0); -extern void func_8015CB94(s32 a0); -extern void func_8015CBCC(void); -extern void func_8015CBD4(void); -extern void func_8015CBDC(void); -extern void func_8015CBE4(void); -extern void func_8015CBEC(void); -extern void func_8015CBF4(void); -extern void func_8015CBFC(void); -extern void func_8015CC04(void); -extern void func_8015CC0C(s32 *param_1); -extern void func_8015CC74(s32 *a0); -extern s32 func_8015CCD0(); -extern s32 func_8015CCB0(void); -extern s32 func_801725E0(u8 *a0); -extern s32 func_8015CCD0(s32 param_1); -extern s32 func_8015CD20(s32 arg0); -extern void func_8015CF24(s32 a0); -extern void func_8015D01C(); -extern void func_8015CF58(s32 *param_1); -extern void func_8015CFC0(s32 *a0); -extern void func_8015CFFC(void); -extern void func_8015D01C(int param_1); -extern void (*D_8018F8B0[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018FAE0; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018EBC4[]; -extern void func_8015D414(int param_1); -extern void func_8015D57C(s32); -extern void func_8015D480(s32 *a0); -extern s32 func_8015D4E8(s16 *a0); -extern void func_8015D4B4(s16 *a0); -extern void func_8015D524(s32 arg0); -extern void func_8015D544(s32 a0); -extern void func_801746DC(void); -extern void func_8015D57C(s32 arg0); -extern s32 func_80161B18(void *a0); -extern s32 func_80161B84(void *a0); -extern void func_80154150(int, int); -extern void func_80149374(int, int); -extern unsigned char D_8018FAF4[]; -extern void func_8015D5E8(int param_1); -extern int func_8015E0D4(int); -extern void func_8015DA5C(s32 a0); -extern void func_8015DB6C(s32 a0); -extern void func_8015DA90(s32 *a0); -extern void func_8015DAF8(s32 *a0); -extern void func_8015DB6C(s32); -extern void func_8015DB34(s32 a0); -extern void func_8015DCB8(s32 a0); -extern void func_8014BD60(s32 a0, s32 a1); -extern int func_8015DD74(int); -extern void func_8015DBD4(void *arg0); -extern int func_8015DC84(int a0); -extern s8 D_8018FB30[]; -extern void func_8015DCB8(s32 param_1); -extern int func_8015DD74(int arg0); -extern void func_8015DECC(s32 a0); -extern void func_8015DDF0(s32 *a0); -extern void func_8015DE58(s32 *a0); -extern void func_8015DECC(s32); -extern void func_8015DE94(s32 a0); -extern void func_8015E018(s32 a0); -extern void func_8015DF34(void *arg0); -extern int func_8015DFE4(int a0); -extern void func_8015E018(s32 param_1); -extern int func_8015E0D4(int a0); -extern void func_8015E22C(s32 a0); -extern void func_8015E150(s32 *a0); -extern s32 func_8015E1B8(s32 a0); -extern void func_8015E184(s32 *arg0); -extern void func_8015E22C(s32); -extern void func_8015E1F4(s32 a0); -extern u8 D_800D4FF4[]; -extern u8 D_800D5098[]; -extern u8 D_800D5060[]; -extern s32 func_8014A850(s32 a0); -extern void func_8015E40C(s32 a0); -extern void func_8015E588(void); -extern void func_8015E4B0(s32 a0); -extern void func_8015E288(s32 a0); -extern u16 D_8018FB78; -extern u16 D_8018FB7A; -extern u16 D_8018FB7C; -extern s32 D_8018FB80; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -extern void func_8013C9C4(void *a0); -extern s32 D_8018FB88; -extern void func_8015E5B0(u8 *self); -extern void func_8015E714(s32 *a0); -extern void func_8015E95C(s32); -extern void func_8015E84C(s32 *a0); -extern void func_8015E8E8(s32 *a0); -extern void func_8015E9B8(s32 *a0); -extern void func_8015E8B4(s32 *a0); -extern void func_8015E924(s32 a0); -extern void func_8015E95C(s32 a0); -extern s16 D_801152A0; -extern void func_80160818(s32 *a0); -extern void func_8015ED6C(s32 *a0); -extern void func_8015EE7C(s32); -extern void func_8015EDA0(s32 *a0); -extern s32 func_8015EE08(s32 a0); -extern void func_8015EDD4(s32 *arg0); -extern void func_8015EE44(s32 a0); -extern int D_800D4C48; -extern int D_8018F894; -extern void func_8015EE7C(s32 param_1); -extern void func_8015EEE0(void *arg0); -extern void func_8015EF9C(void); -extern void func_8015F080(s32); -extern void func_8015EFA4(s32 *a0); -extern void func_8015F00C(s32 *a0); -extern void func_8015EFD8(s32 *a0); -extern void func_8015F048(s32 a0); -extern void func_8015F080(s32 a0); -extern s32 D_80062BE8; -extern void func_801466F0(s32, s32, s32, s32, s32, s32, s32, s32); -extern s32 func_80161208(void); -extern void func_8015F118(void *a0); -extern void func_8015F260(s32 *a0); -extern void func_8015F380(); -extern void func_8015F2BC(s32 *a0); -extern void func_8015F324(s32 *a0); -extern void func_8015F2F0(s32 *a0); -extern void func_8015F360(void); -extern s32 func_801725B8(u8 *a0); -extern void func_8015F380(void* arg0); -extern void func_8015F738(s32 *a0); -extern void func_8015F848(s32 *a0); -extern void func_8015F76C(s32 *a0); -extern s32 func_8015F7D4(s32 a0); -extern void func_8015F7A0(s32 *arg0); -extern void func_8015F810(s32 *a0); -extern void func_80147078(s32 *, s16); -extern void func_80159B70(void *); -extern void func_8015F89C(void *arg0); -extern void func_8015F948(s32 *param_1); -extern void func_8015F9A4(void *arg0); -extern void func_8015FA24(s32 arg0); -extern void func_8015FBE0(s32 *a0); -extern void func_8015FA44(s32 *a0); -extern void func_8015FAAC(s32 *a0); -extern void func_8015FA78(s32 *a0); -extern s32 func_801612B8(void *a0, s32 a1); -extern void func_8016007C(s32 a0); -extern void func_8015FAE8(void *arg0); -extern void func_8015FCC8(void *param_1); -extern unsigned int D_8018FC0C[]; -extern void func_8015FD74(int param_1); -extern s32 func_80028DE0(void); -extern u8 func_80165700(s32 a0, s32 a1); -extern void func_8015FDCC(s32 a0); -extern u8 D_80078EC2; -extern u8 func_801656E8(s32 a0, s32 a1); -extern void func_80165670(s32 a0, s32 a1); -extern void func_8016004C(s32 a0); -extern void func_8015FF20(void *param_1); -extern void func_801601AC(s32 *a0); -extern void func_801600D0(s32 *a0); -extern void func_80160138(s32 *a0); -extern void func_80160104(s32 *a0); -extern void func_80160174(s32 *a0); -extern void func_801601E4(s32 *a0); -extern void func_80160244(s32 *a0); -extern void func_8016032C(void); -extern void func_80160410(s32 *a0); -extern void func_80160334(s32 *a0); -extern void func_8016039C(s32 *a0); -extern void func_80160368(s32 *a0); -extern void func_801603D8(s32 *a0); -extern u8 D_80062BD0; -extern void func_80160410(s32 * a0); -extern void func_801607B8(s32 *a0); -extern void func_801608C0(s32 *a0); -extern void func_801607E4(s32 *a0); -extern void func_8016084C(s32 *a0); -extern void func_80160888(s32 *a0); -extern void func_80160A28(s32 a0); -extern void func_80160A74(s32 *a0); -extern void func_80160BB4(s32 *a0); -extern void func_80160ACC(s32 *a0); -extern s32 func_80160B34(s32 a0); -extern void func_80160B00(s32 *arg0); -extern void func_80160B70(s32 a0); -extern void func_80160C28(void *arg0); -extern void func_80160CB4(s32 *a0); -extern void func_80160D10(void *arg0); -extern void func_80160DEC(u8 *a0); -extern void func_80160F00(); -extern void func_80160E3C(s32 *a0); -extern void func_80160EA4(); -extern void func_80160E70(s32 *a0); -extern void (*D_8018FCBC[])(void); -extern void func_80160EA4(void *a0); -extern void func_80160EE0(void); -extern void func_80160F00(void* arg0); -extern void func_800D0F4C(s32 a0); -extern u8 D_80110EC0; -extern void func_80160F70(s32 a0); -extern void func_80160FE0(s32 *a0); -extern void func_80161034(void *a0); -extern void func_80161094(s32 a0); -extern void func_801610FC(void); -extern void func_801483E8(void); -extern void func_8016130C(void *a0, s32 a1); -extern void func_80161240(void *a0); -extern void func_80161374(void *a0, s32 a1); -extern void func_80161278(void *a0); -extern s32 func_801612B8(void * a0, s32 a1); -extern void func_8016163C(void *a0, s32 a1); -extern void func_80161774(void *a0, s32 a1); -extern s32 func_8016197C(s32 a0, s32 a1); -extern void func_80161888(void *a0, s32 a1); -extern void func_801614E4(void *a0); -extern void func_8016191C(void *a0, s32 a1); -extern void func_8016151C(void *a0); -extern void func_80161554(void *a0); -extern s32 func_801615C4(void * arg0, s32 arg1); -extern s32 func_80161A00(s32 a0); -extern s32 func_80161A30(s32 a0); -extern int func_801497A8(void); -extern int func_80161BE0(void *param_1); -extern u16 D_8018FCEC[]; -extern void func_80161C98(int param_1, u32 param_2); -extern void func_80161E08(s32); -extern s32 func_80162438(s32); -extern s32 D_800AE6A8; -extern void func_800D1734(void *); -extern s32 D_8018FD50; -extern void func_80161D88(void); -extern void func_80161E08(s32 param_1); -extern int func_800291DC(int); -extern int func_800D0E30(void *a0); -extern int func_801620C4(void); -extern s32 func_800D0D7C(s32, s32); -extern int D_801E5C00[]; -extern void func_8016216C(void); -extern u8 D_80078EB0; -extern u8 D_80078EB1; -extern s32 func_801621CC(s32 arg0); -extern void func_801622C4(void); -extern void (*D_8018FD74[])(void); -extern void func_80162330(void *a0); -extern void func_8014706C(void *a0); -extern s32 func_8016236C(u8 *a0); -extern void func_800D0C48(s32 a0); -extern s32 func_801623B8(s32 *a0); -extern s32 func_800167F0(s32 a0); -extern s32 func_80162414(void); -extern s32 func_80162438(s32 _unused0); -extern int func_801626B8(void); -extern void func_80162714(void); -extern int D_801E5C58[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018FDBC[])(void); -extern void func_80162834(void *a0); -extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80162968(s32 a0); -extern s32 func_80162ACC(u8 *a0); -extern u8 D_800B5CB8; -extern s32 D_8018FDAC; -extern s32 D_800B5CBC; -extern u8 D_800B5CDF; -extern s32 D_800B5CEC; -extern void func_80162870(s32 param_1); -extern void func_801628F4(s32 *a0); -extern void func_80162968(s32 param_1); -extern void func_80162AC0(s32 *a0, s8 a1); -extern s32 func_80162AE0(u8 *a0); -extern void func_80162AF4(void); -extern void func_80162CC4(void); -extern s32 D_80126D40; -extern void func_80162B1C(void); -extern void func_80162D28(s32 *a0); -extern void func_80162D88(s32 *a0); -extern void func_80162DE8(s32 *a0); -extern void func_80162E48(s32 *a0); -extern void func_80162EA8(s32 *a0); -extern void func_80162F60(s32 arg0, s32 arg1); -extern void func_80162F80(s32 arg0, s32 arg1); -extern void func_80162FA0(s32 arg0, s32 arg1); -extern void func_80162F08(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80162FC0(s32 *a0); -extern void func_80162FF4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801630C4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163194(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg4); -extern void func_8016325C(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163234(s32 a0); -extern s32 D_80115100; -extern s32 func_801632E0(void); -extern s32 D_80115200; -extern s32 func_801632F0(void); -extern u16 D_80126B18[]; -extern void func_80163328(void); -extern s32 func_801633A8(void); -extern s32 func_80163408(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void func_80163534(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, u16 * a5); -extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); -extern char D_801E5054[8]; -extern void *memcpy(void *dst, const void *src, unsigned int n); -extern void func_801634D8(s32 param_1, u16 param_2, u16 param_3, s32 param_4, u16 param_5); -extern void func_80157158(); -extern void func_80163664(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801636D0(s32 a0, s32 a1); -extern s32 func_8016380C(struct S8016380C *a0, s32 a1); -extern void *memcpy(void *dst, void *src, s32 n); -extern s32 func_801638A0(u8 *a0, s32 a1); -extern s32 func_80163950(s32 a0); -extern void (*D_8018FDC4[])(void); -extern void func_80163A58(void *a0); -extern void func_80163A94(s32 param_1); -extern void func_80163C2C(s32 param_1); -extern void func_80163EC8(s32 param_1); -extern void func_80164270(s32 *a0); -extern void func_80164418(void); -extern void func_80163764(s32 a0); -extern void func_801642AC(s32 a0); -extern void func_8016432C(s32 a0); -extern void func_80164410(void); -extern s32 func_80012DBC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164530(s32 arg0); -extern void (*D_8018FE18[])(void); -extern void func_80164744(s32 param_1); -extern void func_8001C810(s32 a0, s32 a1); -extern void func_80164A74(s32 *a0); -extern void func_80164930(s32 a); -extern u16 D_800DF2E0; -extern s32 D_8018FDE0; -extern s16 D_8018FE14; -extern s16 D_8018FE12; -extern s16 D_8018FE10; -extern void func_801647A4(int param_1); -extern void func_80164ACC(); -extern void func_80164864(void *a0); -extern void func_80164930(s32 param_1); -extern s32 func_8014C308(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164ACC(s32 a0); -extern void (*D_8018FE24[])(void); -extern void func_80164BA0(void *a0); -extern void func_8001CD50(s32 a0, s32 a1); -extern void func_800233CC(void *, unsigned short); -extern void func_80164DD0(s32 a0); -extern void func_80164DB0(void); -extern u8 D_801E5CB8; -extern u8 D_801E5CB9; -extern u8 D_801E5CBA; -extern u8 D_801E5CBB; -extern u8 D_801E5CBC; -extern u8 D_801E5CBD; -extern u8 D_801E5CBE; -extern u8 D_801E5CBF; -extern void func_80164BDC(s32 param_1); -extern void func_80164E40(void); -extern void func_80164CD4(u8 *a0); -extern void func_80164D4C(void *arg0); -extern void (*D_8018FE34[])(void); -extern void func_80164EA4(void *a0); -extern void func_80165124(void *a0); -extern void func_80164EE0(int param_1); -extern s32 func_80165140(s32 a0); -extern void func_801651B8(void *a0); -extern void func_80164F44(void *arg0); -extern void func_80165024(void *a0); -extern void func_80165064(s32 *a0); -extern void func_801650C4(s32 *a0); -extern s32 func_80165140(s32 param_1); -extern s32 func_80165240(s32 a0, s32 a1, s32 a2); -extern s32 D_801E5CF8; -extern void func_801651B8(void * param_1); -extern u8 D_80126CF8; -extern void func_8016533C(void); -extern void func_801653F4(s32 a0); -extern void func_80165580(s32 a0); -extern void func_80165374(s32 a0); -extern void func_80165580(s32 _arg0); -extern void func_801653B8(s32 *a0); -extern s32 func_80165624(s32 a0); -extern u8 D_80078EC5; -extern void (*D_8018FE78[])(void); -extern u8 func_80165658(s32 a0, s32 a1); -extern void func_800CAE0C(s32 a0); -extern void func_801654A8(s32 arg0); -extern void func_80165B28(void *a0); -extern void func_801655E4(s32 a0); -extern u8 D_8018FEF4[]; -extern s32 D_8018FF14[]; -extern u8 D_8018FF90[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018FFB0[]; -extern u8 D_8018FFD0[]; -extern void func_800CAF6C(void); -extern void func_80165770(void); -extern void func_801657D8(void); -extern u8 D_80078EC3; -extern void func_801657A0(void); -extern s32 D_80078EA0; -extern s32 D_80078EA8; -extern u8 D_80078EBB; -extern s32 D_80078ED4; -extern s32 D_80078ED8; -extern s32 D_80078EDC; -extern u8 D_80078EE0; -extern void func_80165874(void); -extern s8 D_80078EC4; -extern void func_801658EC(void); -extern s32 func_80165900(void); -extern s32 func_80165910(void); -extern s32 D_8012672C; -extern s32 D_8012811C; -extern s32 D_80126B08; -extern void func_80165938(void); -extern void func_80165958(void); -extern s32 func_80165978(void); -extern void func_80165988(void); -extern s32 func_801659A8(void); -extern void func_801659B8(void); -extern s32 func_801659CC(void); -extern void func_80165A18(void); -extern s32 func_80165A50(s32 _arg0); -extern void func_80165AC8(void); -extern void func_80165A78(s32 arg0); -extern void (*D_8019006C[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_801900E8[])(void); -extern void func_80165BB4(u8 *a0); -extern void func_80165B6C(u8 *a0); -extern void func_80165C58(s32 arg0); -extern void func_80165BFC(void *a0); -extern void func_80165C78(void); -extern M2C_UNK D_801E5064; -extern void func_80165E2C(u16 *arg0); -extern s32 func_80165FA4(s32 a0, s32 a1, s32 a2); -extern s32 func_80167DBC(s32 a0, s32 a1, s32 a2); -extern s32 func_80167AE0(s32 a0, s32 a1, s32 a2); -extern void func_80165E90(void); -extern void func_80020F34(s32 a0, s32 a1); -extern s32 func_80165FA4(s32 arg0, s32 arg1, s32 arg2); -extern void (*D_801900F4[])(void); -extern void func_80166018(void *a0); -extern void func_80166054(s32 arg0); -extern void func_801661CC(s32 param_1); -extern void func_80166244(void* arg0); -extern void func_8016629C(void *a0); -extern void func_801662F4(void *a0); -extern void func_8016634C(void *a0); -extern void func_801663A4(void *a0); -extern void (*D_801900FC[])(void); -extern void func_801663FC(void *a0); -extern u8 D_800D387C[]; -extern u8 D_800D3888[]; -extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); -extern void func_800D1FC8(s32 a0, s32 a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern void func_801665B4(); -extern void func_80146C3C(); -extern void func_80166438(u8 *a0); -extern s32 func_80128ED8(s32 param_1, s32 *param_2); -extern void func_800D22E4(s32 a0); -extern void func_801665B4(s32 *a0); -extern void (*D_801901C4[])(void); -extern void func_80166618(void *a0); -extern void (*D_801901D4[])(void); -extern void func_80166654(void *a0); -extern s32 func_80166690(s32 param_1, s32 param_2); -extern s32 func_80166994(); -extern s32 func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern s32 func_80167540(s32 arg0); -extern void (*D_801901E4[])(void); -extern void func_801678B4(void *a0); -extern void RotMatrixYXZ(void *a0, void *a1); -extern void func_80048EAC(void *a0, void *a1); -extern s32 func_801670E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80146C3C(void); -extern void func_801678F0(s32 a0); -extern void (*D_801901F0[])(void); -extern void func_80167A9C(void *a0); -extern void func_80167AD8(void); -extern s32 func_80167AE0(s32 param_1, s32 param_2, s32 param_3); -extern void func_80168070(s32 a0, s16 *a1, s16 *a2, void *a3); -extern u8 D_80190150[]; -extern u8 D_80190164[]; -extern s32 func_80167DBC(s32 arg0, s32 arg1, s32 arg2); -extern void func_800D20C0(void *a0, void *a1, s32 a2); -extern void func_80017E68(void *a0, void *a1); -extern void func_800D23D0(void *a0); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern s32 D_801269A4; -extern s32 D_801269A8; -extern s32 D_801269AC; -extern void func_80168070(s32 param_1, s16 *param_2, s16 *param_3, void *param_4); -extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_8016829C(s32 a0); -extern s32 func_80166690(s32 a0, s32 a1); -extern void func_80168328(s32 arg0); -extern void func_801683D8(s32 a0); -extern void func_801684B4(s32 a0); -extern void func_80168540(s32 a0); -extern void func_801685EC(s32 a0); -extern void func_80168640(s32 a0); -extern Blk20 D_800AE620; -extern s32 RotMatrixX(s32 a0, void *a1); -extern void func_80168664(void *arg0); -extern void (*D_80190208[])(void); -extern void func_80168744(void *a0); -extern void func_80168BDC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801687CC(s32 a0); -extern void func_80168780(s32 a0); -extern void func_80168828(void); -extern void func_801687CC(s32 param_1); -extern void func_80168828(); -extern void (*D_80190210[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_80190218[])(void); -extern void func_80168AA8(void *a0); -extern void func_80168AE4(s32 a0); -extern void func_800D2318(void); -extern void func_80168BDC(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void (*D_80190220[])(void); -extern void func_80168D58(void *a0); -extern void func_80168D94(int a0); -extern void func_80168F40(); -extern void func_80168EC4(s32 a0); -extern void func_80168F40(void *arg0); -extern void (*D_80190228[])(void); -extern void func_8016901C(void *a0); -extern void func_80169058(s32 a0); -extern s32 func_80169228(void); -extern void func_801691B8(void *a0); -extern void (*D_80190230[])(void); -extern void func_801693CC(void *a0); -extern void func_80169584(s32 param_1); -extern void func_80169408(s32 a0); -extern void func_8016951C(int param_1); -extern s32 func_80017758(void *a0, void *a1); -extern s32 func_80017DC4(void *a0, void *a1); -extern void func_801696D8(s32 a0, s32 a1); -extern void (*D_80190238[])(void); -extern void func_80169830(void *a0); -extern void func_8016986C(s32 a0); -extern s32 func_80169A4C(s32 a0, s32 a1); -extern void func_801699D0(void *arg0); -extern void (*D_801902EC[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_801902F4[])(void); -extern void func_80169F00(void *a0); -extern char D_801902A4[]; -extern char D_80190264[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8019032C[])(void); -extern void func_8016A020(void *a0); -extern void func_8016A05C(void *a0); -extern void func_8016A290(s32 a, void *b, void *c); -extern void func_8016A08C(s32 param_1); -extern void func_8016A1CC(int param_1); -extern void func_8016A290(s32 param_1, void *param_2, void *param_3); -extern void (*D_80190338[])(void); -extern void func_8016A700(void *a0); -extern s32 func_8016A73C(s32 arg0); -extern s32 func_8016A8FC(s32 a0); -extern void func_8016A890(s32 arg0); -extern s32 func_80016A5C(); -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern void func_8016AA50(s32 param_1, s32 param_2); -extern void (*D_80190380[])(void); -extern void func_8016AB30(void *a0); -extern s32 func_8016AB6C(s32 arg0); -extern void func_8016B234(); -extern void func_8016AE5C(s32 param_1); -extern void func_8016AFB0(s32 a0); -extern void func_8016B114(void *arg0); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_80016ED4(void *a0); -extern void func_8016B234(s32 param_1); -extern s32 func_8016B448(s32, s32); -extern s32 func_8016BA48(s32 a0); -extern void func_8016B3F4(s32 a0); -extern s32 func_8016B428(s32 a0); -extern void func_8016B984(void *a0); -extern s32 func_8016B448(s32 arg0, s32 arg1); -extern void (*D_801903FC[])(void); -extern void func_8016B4BC(void *a0); -extern int func_8016B9F8(int); -extern int func_8016B834(int, int); -extern void func_8016B91C(int); -extern int D_801E6018; -extern void func_8016B4F8(int param_1); -extern s32 func_8016B9F8(s32 param_1); -extern void func_8016B6BC(s32, s32, s32, s32); -extern void func_8016B91C(s32); -extern s16 D_801903F0[]; -extern void func_8016B5C0(s32 param_1); -extern void func_80013CFC(s32 a0, s32 a1, void *a2); -extern void func_8001739C(void *a0); -extern void func_8016B6BC(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void func_8001CD9C(int, void *); -extern int *D_80190434[]; -extern unsigned short D_8019043C[]; -extern unsigned short D_80190444[]; -extern unsigned char D_801E6020[]; -extern int func_8016B834(int param_1, int param_2); -extern void func_8016B964(SrcB964 *a0, DstB964 *a1); -extern void func_8016B91C(s32 arg0); -extern s32 D_801E6018; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8019044C[])(void); -extern void func_8016BBA4(void *a0); -extern s32 func_8016BBE0(s32 param_1); -extern void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3); -extern M2C_UNK D_801E6154; -extern M2C_UNK D_801E6158; -extern void func_8016BCC0(void *arg0); -extern s32 func_8016BD78(s32 param_1); -extern s32 func_8016BEA0(s32 param_1); -extern void func_8016BF34(void *a0); -extern void func_8016BFD0(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern s32 D_801E60E0; -extern void (*D_8019047C[])(void); -extern void func_8016C14C(void *a0); -extern void func_8016C188(s32 param); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801E615C[]; -extern u8 D_801E6164[]; -extern u8 D_801E6114[]; -extern void func_8016C2C4(s32 param); -extern s32 func_8016C49C(s32 param_1_arg); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_8016C74C(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern short func_8016CF04(); -extern void func_8016C83C(s32 a0); -extern short func_8016CBC0(void); -extern void func_8016C998(s32 param_1); -extern void (*D_80190484[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_801904A0[])(void); -extern void func_8016D19C(void *a0); -extern void func_800233CC(void*, unsigned short); -extern void func_8001CD9C(int, void*); -extern void func_80147324(int a); -extern void RotMatrixYXZ(void *a, void *b); -extern void ApplyMatrixSV(void *a, void *b, void *c); -extern void func_8016D1D8(int param_1); -extern void (*D_801904A8[])(void); -extern void func_8016D428(void *a0); -extern void func_8016D464(u8 *a0); -extern void func_8016D4DC(s32 a0); -extern void func_8016D5EC(s32 *a0); -extern void func_8016D64C(int param_1); -extern void func_8016D688(int param_1); -extern void func_8016D778(s32 a0); -extern void func_800D20C0(); -extern void func_8016D848(s32 *a0); -extern void func_8016D984(s32 *a0); -extern void func_8016DBD8(u8 *a0); -extern void (*D_80190510[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801904B4; -extern u8 D_801904C0; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void func_8016DC20(s16 *param_1); -extern void (*D_80190544[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8019054C[])(void); -extern void func_8016DF20(void *a0); -extern void func_8016DF5C(s32 param_1); -extern void func_8016E3CC(s32 a0); -extern void func_8016E1CC(s32 a0); -extern void func_8016E26C(s32 *a0); -extern void func_8016E2E8(void *a0); -extern void func_8016E460(void *a0, void *a1); -extern void func_8016E358(void *a0); -extern void func_8016E460(void *arg0, void *arg1); -extern void (*D_801905A0[])(void); -extern void func_8016E5B8(void *a0); -extern void func_8016E5F4(s32 arg0); -extern void func_8016E778(); -extern void func_8016E688(void *a0); -extern void func_8016E6E4(s32 a0); -extern void func_8016E728(u8 *a0); -extern void func_8016E7C8(int param_1, short *p1, unsigned int *p2); -extern void func_8016E778(int param_1); -extern void func_8016E7C8(int param_1, short *param_2, unsigned int *param_3); -extern s32 D_80115218; -extern void func_8016E8F0(void); -extern void func_8016E918(short param_1, short param_2); -extern s32 func_8016E95C(); -extern u16 D_801905D4[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_801905C4[]; -extern void func_8016EB3C(s32 p); -extern void func_8016EBA8(u8 *param_1); -extern void func_8016ED6C(void); -extern s32 D_80126D70; -extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); -extern void func_8016ED8C(s32 a0, s32 a1, s32 a2); -extern void func_8016EE40(s32 a0, s32 a1, s32 a2); -extern void func_8016EDBC(s32 a0, s32 a1, s32 a2); -extern void func_8016EE94(); -extern void func_8016EDEC(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_8016EF78(s32 a0); -extern void func_8016EE40(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_801726D0(void *a0); -extern s32 D_80126D50; -extern s32 D_80126D54; -extern u8 D_80126D6C; -extern u8 D_80126D6D; -extern u8 D_80126D6E; -extern s32 D_80126D5C; -extern s32 D_80126D60; -extern s16 D_80126D64; -extern s16 D_80126D66; -extern s16 D_80126D68; -extern s16 D_80126D6A; -extern u8 D_80126D1A; -extern s32 D_80127058; -extern s32 D_8012705C; -extern s32 D_80127060; -extern s32 D_80127064; -extern s32 D_80127068; -extern s32 D_8012706C; -extern s32 D_80127070; -extern s32 D_80127074; -extern s16 D_80126D20; -extern void func_8016EE94(s32 a0, s32 a1); -extern s32 func_8016EFC8(); -extern s32 func_8016EFA8(s32 a0); -extern s32 func_8016EFC8(s32 a0, s32 a1); -extern void func_8016F094(s32 *a0); -extern s32 func_8016F0AC(); -extern s32 D_801905F0; -extern void func_8016F250(void); -extern void func_8016F288(void); -extern void func_8016F2A8(void); -extern void func_8016F2C8(void); -extern void func_8016F2EC(void); -extern void func_8016F30C(void); -extern void func_8016F330(void); -extern void func_8016F350(void); -extern void func_8016F374(void); -extern void func_8016F388(void); -extern void func_8016F398(void); -extern s32 func_8016F44C(s32 a0); -extern void func_8016F470(s32 a0); -extern s32 func_8016F410(s32 a0); -extern void func_80175414(s32 _arg0); -extern s32 func_8016F4C4(s32); -extern s32 func_8016F494(s32 a0); -extern void func_8016F0E4(void); -extern s32 func_8016F4C4(s32 param_1); -extern void func_8016F4F4(void); -extern void func_801719A4(int a0, int a1); -extern void func_800D1724(s32 a0); -extern void func_80171928(void *a0); -extern void *D_8011F738; -extern void func_8016F4FC(void *a0); -extern void func_8014708C(void *a0); -extern void func_8016F540(void *a0); -extern void func_8016F578(s32 *a0); -extern void func_8016F5B0(void *a0); -extern void func_80147060(u8 *a0); -extern void func_8016F5E0(u8 *a0); -extern void func_8016F610(void *a0); -extern void func_8016F648(void *a0); -extern void func_8016F680(void *a0); -extern void func_8016F6B0(void *a0); -extern void (*D_80190668[])(void); -extern void func_8016F6E0(void *a0); -extern s32 func_80171990(u8 *a0); -extern void func_8016F764(void *a0); -extern void func_8016F71C(u8 *a0); -extern void (*D_80190670[])(void); -extern void func_8016F798(void *a0); -extern void func_8016F804(void *a0); -extern void func_8016F7D4(u8 *a0); -extern void func_80171928(void *); -extern void (*D_80190678[])(void); -extern void func_8016F834(void *a0); -extern void func_8016F8AC(u8 *a0); -extern void func_8016F870(u8 *a0); -extern void func_80172358(u8 *a0, u8 *a1); -extern void (*D_80190680[])(void); -extern void func_8016F8E4(void *a0); -extern void func_8016F95C(void *a0); -extern void func_8016F920(u8 *a0); -extern s32 func_80171CC4(void *a0, void *a1); -extern s32 func_80171D1C(void *a0, void *a1, s32 a2); -extern u16 D_8011F73E; -extern void (*D_80190688[])(void); -extern void func_8016F9C4(void *a0); -extern void func_80171B44(s32 *a0); -extern void func_8016FA44(s32 a0); -extern void func_8016FA00(s32 a0); -extern s32 func_80171C64(s32 a0, s32 a1); -extern void (*D_80190690[])(void); -extern void func_8016FA84(void *a0); -extern void func_8016FB10(void *a0); -extern void func_8016FAC0(u8 *a0); -extern void func_8016FB50(void *a0); -extern void (*D_8019069C[])(void); -extern void func_8016FB7C(void *a0); -extern void func_8016FC24(); -extern void func_8016FBB8(s32 a0); -extern s32 func_80171B4C(s32 a0, s32 a1); -extern void func_8016FC24(s32 a0); -extern void func_8016FC64(void *a0); -extern void (*D_801906A8[])(void); -extern void func_8016FC90(void *a0); -extern void func_8016FD08(u8 *a0); -extern void func_8016FCCC(u8 *a0); -extern s32 func_80172658(s32 *a0); -extern void func_8016FD08(u8 *s0); -extern void func_8016FD7C(s32 *a0); -extern void (*D_801906B4[])(void); -extern void func_8016FDB4(void *a0); -extern void func_8016FE2C(u8 *a0); -extern void func_8016FDF0(u8 *a0); -extern void func_8016FE2C(u8 * a0); -extern s32 func_8016FE78(s32 *a0); -extern s32 func_80172664(s32 *a0); -extern void func_8016FED0(s32 *a0); -extern void (*D_801906C4[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_801906D4[])(void); -extern void func_8016FFDC(void *a0); -extern void func_80170068(u8 *a0); -extern void func_80170018(u8 *a0); -extern void func_801700B8(u8 *a0); -extern void func_80170100(u8 *a0); -extern void (*D_801906DC[])(void); -extern void func_80170150(void *a0); -extern void func_801701C8(u8 *a0); -extern void func_8017018C(u8 *a0); -extern void func_801701C8(u8 * a0); -extern void (*D_801906E4[])(void); -extern void func_80170240(void *a0); -extern void func_801702B8(s32 a0); -extern void func_8017027C(u8 *a0); -extern s16 func_80171AB0(s32 a0, void *a1); -extern void (*D_801906EC[])(void); -extern void func_801702FC(void *a0); -extern void func_80170374(u8 *a0); -extern void func_80170338(u8 *a0); -extern s32 func_8014C168(s32 *a0, s32 a1); -extern void func_80170374(u8 * a0); -extern void (*D_801906F4[])(void); -extern void func_801703E0(void *a0); -extern void func_8017044C(u8 *a0); -extern void func_8017041C(u8 *a0); -extern void func_8017044C(u8 * a0); -extern void (*D_801906FC[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_80190704[])(void); -extern void func_80170548(void *a0); -extern void func_801705C0(u8 *a0); -extern void func_80170584(u8 *a0); -extern void func_801705C0(u8 * a0); -extern void (*D_8019070C[])(void); -extern void func_801705F8(void *a0); -extern void func_80170670(void *a0); -extern void func_80170634(u8 *a0); -extern void func_8012A568(void (*a0)(void)); -extern void (*D_80190714[])(void); -extern void func_801706AC(void *a0); -extern void func_80170718(void *a0); -extern void func_801706E8(u8 *a0); -extern void func_80129FF4(void); -extern void (*D_8019071C[])(void); -extern void func_80170748(void *a0); -extern void func_801707D4(void *a0); -extern void func_80170784(u8 *a0); -extern s32 func_80174ED4(void); -extern void (*D_80190724[])(void); -extern void func_80170810(void *a0); -extern void func_801708B0(void *a0); -extern u8 D_800D5DA8; -extern void func_8017084C(s32 a0); -extern u8 D_800D5A34[]; -extern void func_80170AD8(void *a0); -extern void func_80171904(s32 a0); -extern void func_80170B48(int a0); -extern void func_80170928(void); -extern u8 D_800D59EC[]; -extern void func_80170970(void); -extern u8 D_800D599C[]; -extern void func_801709B8(void); -extern u8 D_800D5934[]; -extern void func_80170A00(void); -extern void func_80170A48(void); -extern u8 D_800D5DC0[]; -extern void func_80170A90(void); -extern void (*D_8019072C[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_80190734[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8019073C[])(void); -extern void func_80170C74(void *a0); -extern s32 func_8017197C(u8 *a0); -extern void func_80170CF0(void *a0); -extern void func_80170CB0(u8 *a0); -extern void (*D_80190744[])(void); -extern void func_80170D68(void *a0); -extern void func_80170DE0(u8 *a0); -extern void func_80170DA4(u8 *a0); -extern s32 D_8011F73C; -extern s32 D_8011F740; -extern void func_801718AC(void *a0); -extern void func_80170DE0(u8 * _arg0); -extern void (*D_8019074C[])(void); -extern void func_80170E34(void *a0); -extern void func_80170EAC(u8 *a0); -extern void func_80170E70(u8 *a0); -extern int func_800D0F8C(int a0); -extern void func_80170EAC(u8 * _arg0); -extern void (*D_80190754[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8019075C[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_80190764[])(void); -extern void func_80171064(void *a0); -extern void func_801710DC(u8 *a0); -extern void func_801710A0(u8 *a0); -extern u16 D_8011F73A; -extern void func_801710DC(u8 * arg0); -extern void (*D_8019076C[])(void); -extern void func_80171120(void *a0); -extern void func_8017118C(u8 *a0); -extern void func_8017115C(u8 *a0); -extern void func_80142454(s32 a0); -extern void func_8017118C(u8 * a0); -extern void (*D_80190774[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8019077C[])(void); -extern void func_80171260(void *a0); -extern struct B16 D_800A5E88; -extern struct B16 D_800A5E98; -extern struct B16 D_800A5EA8; -extern void func_801719A4(int, int); -extern s32 func_80171990(u8*); -extern void func_80171384(void*); -extern void func_8017129C(int param_1); -extern s32 func_80012F74(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80171384(void *a0); -extern void (*D_80190784[])(void); -extern void func_801714E4(void *a0); -extern void func_8017162C(void *a0); -extern void func_80171520(s32 a0); -extern s32 func_801716AC(s32 a0, void *a1, s32 *a2); -extern s32 func_80012FC8(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_800A5E94; -extern u8 D_800A5E95; -extern u8 D_800A5E96; -extern s32 func_801716AC(s32 a0, void * a1, s32 * a2); -extern int func_800D0FE0(int a0); -extern void func_801717A0(void *a0); -extern void func_8013E588(void *a0); -extern void func_801717F4(void *a0); -extern void func_80171824(void *a0); -extern void func_80171854(void *a0); -extern void func_80171884(void); -extern void func_80171A1C(u8 *a0); -extern void func_80171928(void * a0); -extern void func_8017196C(s32 *a0, s8 a1); -extern void func_80171A04(s32 *a0); -extern void func_80171A10(s32 *a0); -extern void func_80171A34(s32 *a0, s8 a1); -extern s32 func_80171A44(u8 *a0); -extern s32 func_80171A58(u8 *a0); -extern s32 func_80171A6C(u8 *a0); -extern void func_80171A80(s32 *a0, s32 a1); -extern s32 func_80171A88(s32 a0); -extern s16 func_80171AB0(s32 param_1, void * _arg1); -extern void func_80171B10(void *a0); -/* ==== end §8b carried decl layer ==== */ - - -extern void func_80146D90(s32); -extern s32 ratan2(s32, s32); -extern s32 D_801151D4; - -s32 func_80171B4C(arg0, arg1) -s32 arg0; -u8 arg1; -{ - s32 p, ang, idx; - u8 c; - p = D_801151D4; - *(u8 *)(arg0 + 0xA9) = 0x41; - ang = ratan2(*(s32 *)(p + 0x68) - *(s32 *)(p + 0x5C), - *(s32 *)(p + 0x70) - *(s32 *)(p + 0x64)); - idx = ((*(s16 *)(*(s32 *)(arg0 + 0x20) + 0x12) - ((ang + 0x800) & 0xFFF)) + 0x100) & 0xE00; - switch (idx / 0x200) { - case 0: *(u16 *)(arg0 + 0xAA) = 0x1000; break; - case 1: *(u16 *)(arg0 + 0xAA) = 0x3000; break; - case 2: *(u16 *)(arg0 + 0xAA) = 0x2000; break; - case 3: *(u16 *)(arg0 + 0xAA) = 0x6000; break; - case 4: *(u16 *)(arg0 + 0xAA) = 0x4000; break; - case 5: *(u16 *)(arg0 + 0xAA) = 0xC000; break; - case 6: *(u16 *)(arg0 + 0xAA) = 0x8000; break; - case 7: *(u16 *)(arg0 + 0xAA) = 0x9000; break; - } - c = *(u8 *)(arg0 + 0x20C); - *(u8 *)(arg0 + 0x20C) = c + 1; - if (c != arg1) { - return 0; - } - func_80146D90(arg0); - return 1; -} - -DEFINE_func_80171C64() /* dedup: shared engine-core @0x80171C64 (src/shared) */ - -DEFINE_func_80171CC4() /* dedup: shared engine-core @0x80171CC4 (src/shared) */ - -DEFINE_func_80171D1C() /* dedup: shared engine-core @0x80171D1C (src/shared) */ - -DEFINE_func_80171D78() /* dedup: shared engine-core @0x80171D78 (src/shared) */ - -DEFINE_func_80171E08() /* dedup: shared engine-core @0x80171E08 (src/shared) */ - -DEFINE_func_80171EC8() /* dedup: shared engine-core @0x80171EC8 (src/shared) */ - - -DEFINE_func_80171FFC() /* dedup: shared engine-core @0x80171FFC (src/shared) */ - - -DEFINE_func_8017209C() /* dedup: shared engine-core @0x8017209C (src/shared) */ - -DEFINE_func_80172170() /* dedup: shared engine-core @0x80172170 (src/shared) */ - -DEFINE_func_801722CC() /* dedup: shared engine-core @0x801722CC (src/shared) */ - -DEFINE_func_80172304() /* dedup: shared engine-core @0x80172304 (src/shared) */ - -DEFINE_func_80172310() /* dedup: shared engine-core @0x80172310 (src/shared) */ - -DEFINE_func_80172358() /* dedup: shared engine-core @0x80172358 (src/shared) */ - -DEFINE_func_801723C4() /* dedup: shared engine-core @0x801723C4 (src/shared) */ - -DEFINE_func_80172414() /* dedup: shared engine-core @0x80172414 (src/shared) */ - -DEFINE_func_8017248C() /* dedup: shared engine-core @0x8017248C (src/shared) */ - -DEFINE_func_801724EC() /* dedup: shared engine-core @0x801724EC (src/shared) */ - -DEFINE_func_8017250C() /* dedup: shared engine-core @0x8017250C (src/shared) */ - -DEFINE_func_80172560() /* dedup: shared engine-core @0x80172560 (src/shared) */ - -DEFINE_func_80172588() /* dedup: shared engine-core @0x80172588 (src/shared) */ - -DEFINE_func_80172590() /* dedup: shared engine-core @0x80172590 (src/shared) */ - -DEFINE_func_801725A4() /* dedup: shared engine-core @0x801725A4 (src/shared) */ - -DEFINE_func_801725B8() /* dedup: shared engine-core @0x801725B8 (src/shared) */ - -DEFINE_func_801725CC() /* dedup: shared engine-core @0x801725CC (src/shared) */ - -DEFINE_func_801725E0() /* dedup: shared engine-core @0x801725E0 (src/shared) */ - -DEFINE_func_801725F4() /* dedup: shared engine-core @0x801725F4 (src/shared) */ - -DEFINE_func_80172608() /* dedup: shared engine-core @0x80172608 (src/shared) */ - -DEFINE_func_8017261C() /* dedup: shared engine-core @0x8017261C (src/shared) */ - -DEFINE_func_80172630() /* dedup: shared engine-core @0x80172630 (src/shared) */ - -DEFINE_func_80172644() /* dedup: shared engine-core @0x80172644 (src/shared) */ - -DEFINE_func_80172658() /* dedup: shared engine-core @0x80172658 (src/shared) */ - -DEFINE_func_80172664() /* dedup: shared engine-core @0x80172664 (src/shared) */ - -DEFINE_func_80172670() /* dedup: shared engine-core @0x80172670 (src/shared) */ - -DEFINE_func_8017267C() /* dedup: shared engine-core @0x8017267C (src/shared) */ - -DEFINE_func_80172688() /* dedup: shared engine-core @0x80172688 (src/shared) */ - -DEFINE_func_80172694() /* dedup: shared engine-core @0x80172694 (src/shared) */ - -DEFINE_func_801726A0() /* dedup: shared engine-core @0x801726A0 (src/shared) */ - -DEFINE_func_801726AC() /* dedup: shared engine-core @0x801726AC (src/shared) */ - -DEFINE_func_801726B8() /* dedup: shared engine-core @0x801726B8 (src/shared) */ - -DEFINE_func_801726C4() /* dedup: shared engine-core @0x801726C4 (src/shared) */ - -DEFINE_func_801726D0() /* dedup: shared engine-core @0x801726D0 (src/shared) */ - -DEFINE_func_80172710() /* dedup: shared engine-core @0x80172710 (src/shared) */ - -DEFINE_func_80172738() /* dedup: shared engine-core @0x80172738 (src/shared) */ - -DEFINE_func_80172760() /* dedup: shared engine-core @0x80172760 (src/shared) */ - -DEFINE_func_80172780() /* dedup: shared engine-core @0x80172780 (src/shared) */ - - - -s32 func_801727D0(void *a0) { - - extern void (*D_80190794[])(void); - D_80190794[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_8017280C() /* dedup: shared engine-core @0x8017280C (src/shared) */ - -DEFINE_func_80172844() /* dedup: shared engine-core @0x80172844 (src/shared) */ - -DEFINE_func_8017288C() /* dedup: shared engine-core @0x8017288C (src/shared) */ - -DEFINE_func_80172894() /* dedup: shared engine-core @0x80172894 (src/shared) */ - - - -s32 func_801728E4(void *a0) { - - extern void (*D_801907A0[])(void); - D_801907A0[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_80172920() /* dedup: shared engine-core @0x80172920 (src/shared) */ - -DEFINE_func_80172958() /* dedup: shared engine-core @0x80172958 (src/shared) */ - -DEFINE_func_801729A8() /* dedup: shared engine-core @0x801729A8 (src/shared) */ - -DEFINE_func_801729B0() /* dedup: shared engine-core @0x801729B0 (src/shared) */ - - - -s32 func_801729F0(void *a0) { - - extern void (*D_801907AC[])(void); - D_801907AC[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_80172A2C() /* dedup: shared engine-core @0x80172A2C (src/shared) */ - -DEFINE_func_80172A8C() /* dedup: shared engine-core @0x80172A8C (src/shared) */ - -DEFINE_func_80172ACC() /* dedup: shared engine-core @0x80172ACC (src/shared) */ - -DEFINE_func_80172B0C() /* dedup: shared engine-core @0x80172B0C (src/shared) */ - -DEFINE_func_80172B14() /* dedup: shared engine-core @0x80172B14 (src/shared) */ - - - -s32 func_80172B44(void *a0) { - - extern void (*D_801907BC[])(void); - D_801907BC[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_80172B80() /* dedup: shared engine-core @0x80172B80 (src/shared) */ - -DEFINE_func_80172BC8() /* dedup: shared engine-core @0x80172BC8 (src/shared) */ - -DEFINE_func_80172C48() /* dedup: shared engine-core @0x80172C48 (src/shared) */ - -DEFINE_func_80172C50() /* dedup: shared engine-core @0x80172C50 (src/shared) */ - - - -extern void (*D_801907C8[])(void); - -void func_80172CA0(void *a0) { - D_801907C8[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_80172CDC() /* dedup: shared engine-core @0x80172CDC (src/shared) */ - -DEFINE_func_80172D14() /* dedup: shared engine-core @0x80172D14 (src/shared) */ - -DEFINE_func_80172D60() /* dedup: shared engine-core @0x80172D60 (src/shared) */ - -DEFINE_func_80172D68() /* dedup: shared engine-core @0x80172D68 (src/shared) */ - - - -s32 func_80172DAC(void *a0) { - - extern void (*D_801907D4[])(void); - D_801907D4[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_80172DE8() /* dedup: shared engine-core @0x80172DE8 (src/shared) */ - -DEFINE_func_80172E20() /* dedup: shared engine-core @0x80172E20 (src/shared) */ - -DEFINE_func_80172E8C() /* dedup: shared engine-core @0x80172E8C (src/shared) */ - -DEFINE_func_80172E94() /* dedup: shared engine-core @0x80172E94 (src/shared) */ - -DEFINE_func_80172ED4() /* dedup: shared engine-core @0x80172ED4 (src/shared) */ - -DEFINE_func_80172EFC() /* dedup: shared engine-core @0x80172EFC (src/shared) */ - -DEFINE_func_80172F24() /* dedup: shared engine-core @0x80172F24 (src/shared) */ - -DEFINE_func_80172F4C() /* dedup: shared engine-core @0x80172F4C (src/shared) */ - -DEFINE_func_80172F9C() /* dedup: shared engine-core @0x80172F9C (src/shared) */ - -DEFINE_func_80172FEC() /* dedup: shared engine-core @0x80172FEC (src/shared) */ - -DEFINE_func_8017303C() /* dedup: shared engine-core @0x8017303C (src/shared) */ - - - -s32 func_80173078(void *a0) { - - extern void (*D_801907E0[])(void); - D_801907E0[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_801730B4() /* dedup: shared engine-core @0x801730B4 (src/shared) */ - -DEFINE_func_801730FC() /* dedup: shared engine-core @0x801730FC (src/shared) */ - -DEFINE_func_8017316C() /* dedup: shared engine-core @0x8017316C (src/shared) */ - -DEFINE_func_80173174() /* dedup: shared engine-core @0x80173174 (src/shared) */ - - - -s32 func_8017319C(void *a0) { - - extern void (*D_801907EC[])(void); - D_801907EC[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_801731D8() /* dedup: shared engine-core @0x801731D8 (src/shared) */ - - -extern void func_80019064(void *a0); -extern void func_80147324(s32 a0); -extern void func_80171A1C(u8 *a0); -extern s32 func_80174650(s32); -extern M2C_UNK D_8019078C; - -void func_80173220(void * arg0) -{ - if (M2C_FIELD(arg0, u16 *, 0xB8) & 0x4000) { - func_80147324(0x516); - func_80019064(&D_8019078C); - } - if (M2C_FIELD(arg0, u16 *, 0xB8) & 0x8000) { - func_80171A1C(arg0); - func_80174650(arg0); - } -} - - -DEFINE_func_80173294() /* dedup: shared engine-core @0x80173294 (src/shared) */ - -DEFINE_func_8017329C() /* dedup: shared engine-core @0x8017329C (src/shared) */ - -DEFINE_func_801732C4() /* dedup: shared engine-core @0x801732C4 (src/shared) */ - -DEFINE_func_801732F4() /* dedup: shared engine-core @0x801732F4 (src/shared) */ - -DEFINE_func_8017331C() /* dedup: shared engine-core @0x8017331C (src/shared) */ - -DEFINE_func_8017334C() /* dedup: shared engine-core @0x8017334C (src/shared) */ - -DEFINE_func_80173374() /* dedup: shared engine-core @0x80173374 (src/shared) */ - -DEFINE_func_801733A4() /* dedup: shared engine-core @0x801733A4 (src/shared) */ - -DEFINE_func_801733CC() /* dedup: shared engine-core @0x801733CC (src/shared) */ - - -DEFINE_func_801733FC() /* dedup: shared engine-core @0x801733FC (src/shared) */ - - -DEFINE_func_80173460() /* dedup: shared engine-core @0x80173460 (src/shared) */ - - diff --git a/src/ov_SC04_019/ov_SC04_019_jr_801734BC.c b/src/ov_SC04_019/ov_SC04_019_jr_801734BC.c deleted file mode 100644 index dc7e925e9..000000000 --- a/src/ov_SC04_019/ov_SC04_019_jr_801734BC.c +++ /dev/null @@ -1,3915 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ - /* 12-byte sub-table record (stride 0xC) */ - /* 0x20 bytes */ - /* 4 + 16*12 = 0xC4 stride */ - /* 0x08 */ - /* 0x20 */ -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8; -typedef void (*Handler)(struct Entry_8016E95C *); -extern void func_801458E0(void); -extern s32 D_800AE6AC; -extern s32 D_800AE6B0; -extern s16 D_800B9A0A; -extern u8 D_80078E50; -extern void func_800D185C(u8 *a0); -extern void func_801458E8(void); -extern s32 func_80029504(void); -extern void func_80145B24(void); -extern u8 D_8018F74C; -extern u8 D_8018F6BC; -extern u8 D_8018F698; -extern u8 D_8018F674; -extern u8 D_8018F728; -extern u8 D_8018F704; -extern u8 D_8018F6E0; -extern u8 D_8018F650; -extern void func_80145934(void); -extern u8 D_8018F7DC; -extern u8 D_8018F7B8; -extern u8 D_8018F794; -extern u8 D_8018F770; -extern void func_80145A2C(void); -extern s32 func_800291DC(s32); -extern void func_800291C8(s32, s32); -extern void func_80162120(void); -extern void func_80029124(s32, s32); -extern s32 func_80165A50(s32); -extern void func_80029514(s32); -extern u8 D_800AF630[]; -extern u8 D_80078EC0; -extern s32 func_80028FBC(void); -extern s32 func_80029000(void); -extern s32 func_80028D9C(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_80145BF8(void); -extern s32 func_800291B4(s32 arg); -extern void func_800291A0(s32, s32); -extern void func_80145C54(void); -extern s32 func_80145CEC(); -extern s32 func_80029178(s32 arg); -extern void func_80146014(s32 a0); -extern unsigned char D_8018EBD4[]; -extern unsigned char D_8018EC04[]; -extern unsigned char D_8018EC54[]; -extern unsigned char D_8018EC84[]; -extern unsigned char D_8018ECB4[]; -extern void func_80145EE8(s32 param_1); -extern void MoveImage(void *a0, s32 a1, s32 a2); -extern void func_80146074(void); -extern s32 func_80146128(void); -extern void func_80146360(void); -extern void func_801463A0(); -extern void func_8014607C(void); -extern s32 *D_80126B78; -extern u8 D_80078EC1; -extern s32 D_80078EC8; -extern s32 D_8011F730; -extern u16 D_801152B8; -extern u16 D_8012693A; -extern u8 D_80126BE0[]; -extern u8 D_801150F0[]; -extern void *memcpy(void *dst, const void *src, u32 n); -extern void func_80146FC4(s32 a0); -extern void func_80150A70(s32 a0); -extern void func_80147098(s32 *a0); -extern void func_8014A638(s32 arg0); -extern s32 func_80155458(s32 a0); -extern s32 func_80029104(void); -extern void func_80029344(void); -extern void func_8014ADE0(s32 a0); -extern void func_8014B350(s32 a0); -extern void func_8014B7A4(s16 *param_1); -extern s32 func_80161D58(s32 a0); -extern void func_80161A90(s32 a0); -extern void func_8014B504(u16 *a0); -extern void func_80149BEC(s32 a0); -extern void func_8014B5D0(s32 *a0); -extern void func_8014C99C(u8 *a0); -extern void func_8014B190(s32 s0); -extern void func_80148648(s32 a0, s32 a1); -extern s32 func_80149228(s32 a0); -extern void func_8014A59C(s32 a0); -extern void func_8016F14C(void *a0); -extern void func_80154418(void *a0); -extern void func_80154BE4(s32 a0); -extern void func_80165694(s32 arg0); -extern void func_801654A8(s32 a0); -extern void func_8014A680(s32 a0); -extern void func_8014A6A8(s32 a0); -extern void func_8014A71C(s32 a0); -extern void func_80172588(s32 *a0); -extern void func_801473DC(s32 *a0); -extern void func_80015978(s32 a0, s32 *a1); -extern void (*D_8018ED04[])(void *); -extern u8 D_80126BA4; -extern s32 D_80127098; -extern s32 D_80127094; -extern s32 D_80127090; -extern void func_80146534(void); -extern void func_8001D074(s32 a0, s32 a1); -extern void func_80146554(void); -extern void func_80146578(void); -extern void func_8001CFDC(s32, s32); -extern void func_8014659C(void); -extern void func_8001D074(s32, s32); -extern void func_801465C0(void); -extern void func_801465E4(void); -extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); -extern s32 D_8011F9D0; -extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); -extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 D_8011F750; -extern s32 D_8011F754; -extern u8 * func_801468C8(s32 arg0, u8 arg1); -extern s32 D_8011D030; -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); -extern s32 func_80146B9C(void *a0); -extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); -extern u16 D_8011DA28; -extern s32 func_80146B9C(void * arg0); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80146CA0(void *a0); -extern void func_80146CB4(void *a0); -extern void func_80146CC8(s32 a0); -extern void func_80146D30(s32 a0); -extern void func_80146D80(s32 *a0); -extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80146D90(s32 a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); -extern void func_80146E90(s32 *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80015954(s32 a0, s32 a1); -extern void func_80149374(s32 a0, s32 a1); -extern void func_80146F58(s32 a0, s32 a1); -extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 func_8012A68C(void); -extern s16 func_8012A758(void); -extern void func_8004978C(s16 *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern u8 D_80126DB0[]; -extern u16 D_80126DB6; -extern void func_8014704C(s32 *a0); -extern s32 func_80147054(void *a0); -extern void func_80147060(u8 * a0); -extern void func_8014706C(void *arg0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80147084(s32 *a0); -extern void func_8014708C(void *arg0); -extern s32 func_801470A0(void *a0); -extern void func_801470AC(s32 *a0); -extern void func_801470B4(s32 arg0); -extern void func_801470C0(s32 a0); -extern void func_80147118(s32 a0); -extern s16 D_80126BB8; -extern s16 D_80126BBA; -extern s16 D_80126BBC; -extern void func_80147264(s32 a0); -extern void func_80147290(void); -extern void func_801472B4(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void *D_8012707C; -extern void func_801472DC(void); -extern void func_801472F0(void *a0); -extern void func_80147364(u16, s32); -extern void func_80147300(u16 arg0); -extern void func_80147324(s32 arg0); -extern void func_801473EC(s32 *a0); -extern void func_80147460(s32 a0); -extern void func_80147514(); -extern void func_80147628(s32 a0); -extern void func_80147478(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); -extern s32 func_800129CC(s32 a0, s32 a1); -extern void func_80147514(s32 arg0); -extern void func_80013F3C(s32 a0); -extern void func_80012558(s32 a0, s32 a1); -extern void func_800126C4(s32 a0, s32 a1); -extern void func_800123F0(s32 a0, s32 a1); -extern void func_80147718(s32 a0); -extern void func_80147788(void *a0, s32 a1); -extern void func_801477A8(void *a0, s32 a1); -extern void func_801477C8(void *a0, s32 a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80147814(s32 a0, s32 a1); -extern void func_80147928(int a0, int a1); -extern void func_8014799C(int a0, int a1); -extern void func_80147A10(int a0, int a1); -extern void func_80147860(int a0, int a1, int a2, int a3); -extern void func_80147948(s32 a0, s32 a1, s32 a2); -extern void func_801479BC(s32 a0, s32 a1, s32 a2); -extern void func_80147A30(s32 a0, s32 a1, s32 a2); -extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147948(int a0, int a1, int a2); -extern void func_801479BC(int a0, int a1, int a2); -extern void func_80147A30(int a0, int a1, int a2); -extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147A84(s32 arg0); -extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147AAC(s32 arg0); -extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80147B5C(s32 a0, void *a1); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern void func_80147B18(s32 a0); -extern void func_80147B5C(s32 arg0, void *arg1); -extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147DC0(s32 a0, s32 a1); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147F50(s32 arg0); -extern void func_80148038(s32 a0, s32 a1); -extern s32 ratan2(s32 a0, s32 a1); -extern s32 csqrt(s32 a0); -extern s32 func_80012A60(s32 a0, s32 a1); -extern void func_80148094(int param_1, short *param_2, int *param_3); -extern void func_801485B8(s32 a0, s32 a1, s32 a2); -extern void func_801484B0(s32 a0, s32 a1); -extern s32 func_80154358(void *a0); -extern void func_801484E8(s32 a0, s32 a1); -extern void func_80148534(s32 a0, s32 a1); -extern void func_8014856C(s32 a0, s32 a1); -extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); -extern void func_80148634(void *a0); -extern u8 D_800B9A64; -extern s32 func_80014DC0(); -extern s32 func_80014D68(); -extern s32 func_80014D94(); -extern s32 func_80014CF8(); -extern void func_800120DC(); -extern s32 func_800CF8B4(); -extern u16 func_801487F4(s32 *a0); -extern u16 func_80148800(s32 *a0); -extern u8 func_8014880C(s32 *a0); -extern u16 func_80148818(s32 *a0); -extern s32 func_80047D3C(s32 a0); -extern s32 func_80148824(void *arg0); -extern s32 func_801488A8(u8 *a0); -extern s32 func_8014891C(s32 a0); -extern s32 func_80148980(u8 *a0); -extern s32 func_801489E8(s32 a0); -extern s32 func_80148A48(s32 a0); -extern int func_80148AFC(void *a0); -extern void func_80148AAC(u8 *a0); -extern s32 func_80148C18(void); -extern s32 func_80148C20(s32 a0, s16 a1); -extern s32 func_80148C34(s32 a0, s32 a1); -extern s32 func_80148C4C(s32 a0, s32 a1); -extern s32 func_80148C64(s32 a0, s32 a1); -extern s32 func_80148C7C(void); -extern s32 func_80148C84(s32 a0, s32 a1); -extern s32 func_80148C9C(s32 a0, s32 a1); -extern s32 func_80148CB4(s32 a0, s32 a1); -extern s32 func_80148CCC(s32 a0, s32 a1); -extern s32 func_80148CE4(void); -extern s32 func_80148CEC(void); -extern s32 func_80148CF4(s32 a0, s32 a1); -extern s32 func_80148D0C(s32 a0, s32 a1); -extern s32 func_80148D24(void *a0, int a1); -extern s32 func_80148D3C(void); -extern s32 func_80148F60(void); -extern s32 func_80148F68(s32 a0); -extern s32 func_80148F74(s32 a0); -extern s32 func_80148F80(s32 a0); -extern s32 func_80148F8C(s32 a0); -extern s32 func_80148F98(void); -extern s32 func_80148FA0(s32 a0); -extern s32 func_80148FAC(s32 a0); -extern s32 func_80148FB8(s32 a0); -extern s32 func_80148FC4(s32 a0); -extern s32 func_80148FD0(void); -extern s32 func_80148FD8(void); -extern s32 func_80148FE0(s32 a0); -extern s32 func_80148FEC(s32 a0); -extern s32 func_80148FF8(s32 a0); -extern s32 func_80149004(void); -extern void func_8014900C(s32 *a0); -extern void func_80149020(s32 *a0); -extern void func_80149034(s32 *a0); -extern void func_80149048(s32 *a0); -extern void func_8014905C(u8 *a0); -extern void func_801490E0(s32 *a0, s16 a1); -extern void func_801490E8(s32 *a0, s16 a1); -extern void func_801490F0(s32 *a0, s16 a1); -extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); -extern void func_801490F8(s32 a0, s32 a1); -extern s32 func_801491C4(s32 a0); -extern s32 func_80149184(s32 a0); -extern s32 D_801151D4; -extern void func_80149204(s32 *a0); -extern void func_80149210(s32 a0, s32 a1); -extern s32 func_80149284(s32 *a0, s32 a1); -extern void func_80149350(s32 arg0); -extern void func_80149290(s32 a0); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_80149374(s32 arg0, s32 arg1); -extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8014942C(s32 arg0); -extern void func_8012EF70(s32 a0, s32 a1); -extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012EFB8(s32 a0); -extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); -extern void func_8014964C(s32 param_1, s32 param_2); -extern s32 func_801496D4(void *a0); -extern void func_8015AD08(); -extern void func_80149704(void); -extern void func_8015ACC4(); -extern void func_80149724(void); -extern u8 D_80078EBF; -extern s32 func_80149744(struct S_80149744 *a0); -extern void func_8015F7A0(); -extern void func_80149788(void); -extern void func_801653B8(); -extern void func_80149864(void); -extern s16 currentLocationId; -extern s32 func_8016F1AC(void); -extern s32 func_80149884(void); -extern void func_80160B00(); -extern void func_801498C0(void); -extern s32 func_80149AA8(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern void func_80146750(void *a0); -extern s32 func_801498E0(s32 *a0); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_80147364(u16 a0, s32 a1); -extern s32 func_800CCF28(s32 a0); -extern u8 D_80126B5C; -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_8015DAC4(s32 *a0); -extern void func_8015554C(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern void func_80149B14(s32 *a0); -extern u8 func_8014BEF8(void); -extern s32 func_80149B54(s32 * arg0); -extern void func_8015DE24(s32 *a0); -extern void func_80157510(s32 *a0); -extern void func_80149BAC(s32 *a0); -extern s32 func_80029178(s32 a0); -extern s32 func_80149C08(s32 arg0); -extern void func_801577C8(); -extern void func_80149C94(void); -extern void func_80157D20(void); -extern void func_80149CB4(void); -extern s32 func_80149CD4(s32 a0); -extern u8 func_8014B5B8(s32 *a0); -extern s32 func_80149D10(s32 a0); -extern s32 func_80149E94(s32 a0); -extern s32 func_80149DD8(s32 a0); -extern s32 func_80149D9C(s32 a0); -extern u8 D_801202A0[]; -extern s32 func_80149F2C(s32 a0, s32 a1); -extern s32 func_80149E94(s32 arg0); -extern void func_80149FA8(void); -extern s32 D_8018EDCC[]; -extern s32 func_80149FB0(s32 a0); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern void func_8014A1B0(s32 a0, s32 a1); -extern s32 func_8014A048(s32 param_1); -extern u16 func_80156370(u16 a0); -extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); -extern void func_8015D4B4(); -extern void func_8014A218(void); -extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); -extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); -extern s32 func_8014A238(s32 arg0); -extern s32 func_8014A2E4(s32 a0); -extern void func_8014A380(s32 a0, s32 a1); -extern s16 D_801152B0; -extern s16 D_801152B4; -extern s32 func_8014A3E0(struct S_8014A3E0 *a0); -extern s32 func_8014A454(s32 a0); -extern s32 func_8014A4B4(void *a0); -extern void func_8015EDD4(); -extern void func_8014A4FC(void); -extern s32 func_8014A674(s32 *a0); -extern s32 func_8014A69C(s32 *a0); -extern s32 func_8014A6C4(s32 a0); -extern void func_8015E184(); -extern void func_8014A830(void); -extern s32 func_80029AF4(void); -extern s32 func_8014A850(s32 param_1); -extern void func_8014AA04(s32 a0); -extern void func_801599A4(void *a0); -extern void func_80159B3C(void *a0); -extern s32 func_80165A20(s32 a0); -extern void func_8014AB7C(); -extern void func_8014AC10(); -extern void func_8014AA28(void); -extern void func_8014AB5C(void); -extern void func_80162CCC(void); -extern void func_8014AB7C(s32 arg0); -extern void func_8014ABF0(void); -extern void func_80016714(void *a0, s32 a1); -extern void func_8014AC10(s32 arg0); -extern void func_8014ACC0(s32 a0, s32 a1); -extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); -extern void func_8014ACE8(void *a0, s32 a1, s32 a2); -extern void func_80146AFC(void *a0); -extern void func_8014ADA8(s32 a0, s32 a1); -extern void func_8014AD7C(s32 a0); -extern s32 D_80078E8C; -extern void func_8014B034(s32 arg0); -extern void func_8014B00C(s32 arg0); -extern void func_8014B084(void); -extern s16 D_80078E90; -extern void func_8014B034(s32 a0); -extern u16 D_80078EAC; -extern u8 D_80078EBA; -extern void func_800D10EC(void); -extern void func_8002AC98(void); -extern s32 func_8014B154(s32 *a0); -extern void func_8014B12C(void); -extern void func_8014B2F8(void); -extern void func_8014B4C4(void); -extern void func_8014B160(s32 a0); -extern s32 func_8016F1C4(void); -extern s16 D_80078E96; -extern s16 D_80078EB8; -extern u16 D_80078EA6; -extern void func_8014B2A8(void); -extern void func_8014B310(void); -extern void func_8014B2D0(void); -extern s32 D_80078E94; -extern s32 D_80078ECC; -extern void func_8014B33C(void); -extern u8 D_80062BF4[]; -extern void func_8014BC80(s32 a0, s32 a1); -extern void func_80019064(void *a0); -extern s32 D_80078E98; -extern void func_80166244(); -extern void func_8014B4D4(void *a0); -extern s16 D_80078E9A; -extern u8 D_80126D1C; -extern s32 D_80126D74; -extern void func_8014B598(s32 a0, s32 a1); -extern void func_8014B5B0(s32 *a0); -extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); -extern void func_8014B5D8(s32 s1); -extern s32 D_80078E9C; -extern s32 D_80078ED0; -extern void func_8014B6F0(s32 a0, s32 a1); -extern void func_8014B768(s32 a0, s32 a1); -extern void func_8014B944(s32 a0, s32 a1, s32 a2); -extern s32 D_80078EA4; -extern u16 D_80078EB2; -extern s16 D_80078EB4; -extern void func_8014BB0C(void); -extern void func_8014BB24(s32 a0, s32 a1, s32 a2); -extern void func_8014BC0C(s32 a0, s32 a1); -extern void func_8014BC44(s32 a0, s32 a1); -extern u8 D_800B9A17; -extern void func_8014BCC0(s32 a0, s32 a1); -extern u16 D_80078EB6; -extern s32 func_8014BCEC(s32 a0, s32 a1); -extern void func_8014BD24(s32 a0, s32 a1); -extern void func_8014BD60(s32 param_1, s32 param_2); -extern void func_8014BD98(s32 a0, u16 a1); -extern void func_8014BDC8(void); -extern void func_8014BDE0(void); -extern s32 func_8017267C(s32 *a0); -extern s32 func_80013294(void *a0, void *a1); -extern void func_80029ED4(s32 a0); -extern void func_8014BDE8(s32 a0); -extern void func_8014BE78(void); -extern void func_8014BE9C(void); -extern void func_80029124(s32 a0, s32 a1); -extern void func_8014BEC0(void); -extern void func_8014BF18(s32 a0); -extern void func_8014BF48(void); -extern u8 func_8014BF6C(void); -extern void func_8014BF8C(u8 arg0); -extern void func_8014BFB0(void); -extern u8 func_8014BFD4(void); -extern void func_8014BFF4(s32 a0, s32 a1); -extern void func_8014C010(s32 a0, s32 a1); -extern s32 func_8014C050(s32 a0, s32 a1); -extern s32 func_8014C088(s32 a0, s32 a1); -extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); -extern s32 func_8014C118(void * a0, s32 a1, s32 a2); -extern s32 func_8014C168(s32 * param_1, s32 param_2); -extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); -extern u8 D_8018EE54[]; -extern void func_8014C1A0(s32 arg0, s32 arg1); -extern s32 func_80013328(s32 a0, s32 a1); -extern s32 func_8014C59C(void *a0, void *a1); -extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); -extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); -extern s32 ratan2(s32 dx, s32 dy); -extern u8 D_8018EE5C; -extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); -extern s16 func_8014C5D0(s32 a0, s32 a1); -extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); -extern u8 D_80126D17; -extern void func_8014C6AC(void); -extern void func_8014C6C0(void); -extern u8 D_80126D1E; -extern void func_8014C6D0(void); -extern void func_8014C6E0(void); -extern s32 func_8014C860(s32 a0, s32 a1); -extern void func_8014C8C8(s32 a0, s32 *a1); -extern void func_8014C88C(s32 a0); -extern void func_8014C8C8(s32 dst, s32 * src); -extern void func_8014C8F0(s32 arg0); -extern u8 D_801151F0[]; -extern s32 func_8014C918(s32 a0, s32 a1); -extern s32 D_80126B50; -extern void func_8014C968(void); -extern void func_8014C978(void); -extern s32 func_8014C98C(void); -extern void func_80139914(s32 a0); -extern s32 func_8014CA00(s32 a0); -extern u16 func_8014CA70(s32 a0, s32 a1); -extern s32 func_8014CA14(s32 a0, s32 a1); -extern u16 func_8014CAE4(s32 *a0, s32 a1); -extern s32 func_8014CA88(s32 *a0, s32 a1); -extern s32 func_8014CAFC(void); -extern s32 func_8014CB0C(void); -extern s32 func_8014CB1C(void); -extern u8 D_80126D1F; -extern s32 func_8014CB2C(void); -extern s32 func_8014CB58(void); -extern u8 D_80126D1D; -extern void func_8014CB68(void); -extern s32 func_8014CB7C(void); -extern s32 func_8014CB8C(void); -extern struct Packed8 D_80126C98; -extern short D_80126C9E; -extern void func_8014CB9C(struct Packed8 *a0); -extern s32 D_80126CDC; -extern void func_8014CBD8(void); -extern s16 D_80126CC4; -extern void func_8014CBE8(void); -extern void func_8014CBF8(void *a0); -extern void func_8014D3E0(s32 a0); -extern void func_8014D04C(void); -extern void func_8014CCB4(void); -extern void func_8014CC28(s32 a0); -extern void func_8014CD0C(u8 *a0); -extern s32 func_8014CF04(s32 a0, s32 a1, void *a2); -extern void func_8014CD80(s32 a0, void *a1, void *a2); -extern void func_8014D0A4(s32 a0); -extern s32 func_8014D2A0(s32 a0, void *a1, void *a2); -extern s32 func_8014D12C(s32 a0, void *a1, void *a2); -extern void func_8014D438(s32 a0); -extern void func_8014D3E0(s32 _arg0); -extern void func_8014D610(s32 a0, void *a1, void *a2); -extern s32 func_8014D4C0(s32 a0, void *a1, void *a2); -extern void func_8014D790(s32 a0); -extern void func_8014D738(void); -extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); -extern s32 func_8014D820(s32 a0, u16 *a1, u16 *a2); -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); -extern void func_8014DF94(s32 arg0); -extern void func_8014DF3C(void); -extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ -extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ -extern s16 D_801152AC; -extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); -extern void func_8014E48C(s32 a0); -extern void func_8014E434(void); -extern void func_8014E5B4(s32 a0, void *a1, void *a2); -extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); -extern void func_8014E6F8(struct SubE6F8 *a0); -extern void func_8014E6A0(void); -extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); -extern void func_8014E934(s32 _arg0); -extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); -extern s32 func_8014E98C(void *a0); -extern u16 D_800B99DA; -extern s32 D_801150D8; -extern s16 D_801152AA; -extern u8 D_80126720[]; -extern s16 D_80126724; -extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); -extern s32 func_8014ED80(struct SubED80 *a0); -extern int D_801E5BA8; -extern void func_8014ED28(s32 _arg0); -extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F24C(struct SubF24C *a0); -extern void func_8014F1F4(void); -extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F4C0(); -extern s32 func_8014F468(void); -extern int func_8014F74C(); -extern int func_8014F6F4(void); -extern u8 D_800D3918[]; -extern u8 D_801152A8[]; -extern s32 D_801152BC; -extern int func_8014F74C(s32 arg0); -extern s32 func_8014FA70(s32 a0); -extern s32 D_801E5BAC; -extern void func_8014FA04(s32 a0); -extern s32 func_8014FBC0(); -extern s32 func_8014FC18(u8 *self); -extern int func_8014FD54(int param_1); -extern void func_8014FCFC(void); -extern void func_80150170(void *a0); -extern s32 func_8014FE60(void *a0); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_8014FE60(void *e); -extern s32 func_80134510(s32 arg); -extern s32 func_80150150(s32 a, s32 b); -extern s32 func_80150460(s32 a, s32 b); -extern void func_801504D8(u16 *a0); -extern s32 func_80150480(s32 _arg0); -extern s32 func_80150528(void *a0, void *a1, void *a2); -extern s32 func_80150528(void *arg0, void *arg1, void *arg2); -extern s32 func_801506A4(s32 a0, s32 a1); -extern s32 func_801505FC(s32 a0); -extern s32 func_801506A4(s32 arg0, s32 arg1); -extern void func_80150820(s32 a0, s32 a1); -extern void func_8015086C(int param_1); -extern s32 func_801508B4(s32 a0); -extern s32 func_8015094C(s32 a0); -extern short func_801508F8(s32 a0); -extern s32 D_8018EE8C; -extern s32 D_80126990; -extern s32 D_80126994; -extern u8 D_80126948[]; -extern s32 func_80021174(s32 a0, s32 a1); -extern s32 func_8015094C(s32 param_1); -extern void func_80150B9C(void); -extern s32 func_80151184(s32 a0, s32 a1, s32 a2); -extern s32 func_80150BA4(s32 a0); -extern s32 func_801619D0(void *a0); -extern void func_80150BC8(s32 *a0); -extern s32 func_80150480(s32 a0); -extern u16 D_800AE6DC; -extern void func_80150C48(s32 a0); -extern int func_80151184(int arg, int a1, int a2); -extern int func_80150CA0(int arg); -extern void func_80150EC4(s32 a, s32 b); -extern void func_80150CC4(s32 a); -extern void func_80150CE4(s32 a); -extern void func_80150D04(s32 a); -extern void func_80150D24(s32 a); -extern void func_80150D44(s32 a); -extern void func_80150D64(s32 a); -extern void func_80150D84(s32 a); -extern void func_80150DA4(s32 a); -extern void func_80150DC4(s32 a); -extern void func_80150DE4(s32 a); -extern void func_80150E04(s32 a); -extern void func_80150E24(s32 a); -extern void func_80150E44(s32 a); -extern void func_80150EC4(s32 a0, s32 a1); -extern void func_80150E64(s32 a0); -extern void func_80150E84(s32 a0); -extern void func_80150EA4(s32 a0); -extern u8 D_800AE6C0; -extern s16 D_800AE6C8; -extern s16 D_800AE6CA; -extern s16 D_800AE6CC; -extern s32 D_800AE6C4; -extern s16 D_800AE6CE; -extern u8 D_800AE6BE; -extern u8 D_801201F8[]; -extern void func_80150F78(void); -extern void func_80150F80(s32 a0); -extern int func_80150FB4(int arg); -extern void func_80150FD8(s32 a0); -extern int func_80151014(int arg); -extern void func_80151038(s32 a0); -extern int func_80151070(int arg); -extern int func_80151094(int arg); -extern void func_801510B8(void); -extern void func_801510C0(void); -extern int func_801510C8(int arg); -extern int func_801510EC(int arg); -extern s32 func_8012DB84(void); -extern s32 func_80151110(void); -extern void func_80151130(void); -extern int func_80151138(int arg); -extern void func_8015115C(s32 *a0, s16 a1); -extern s32 func_80151164(s32 a0, s32 a1); -extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); -extern void func_801511A8(u8 *a0); -extern void func_801511C4(u8 *a0); -extern int func_80151204(int arg, int a1); -extern int func_801511E0(int arg); -extern int func_80151204(int a0, int a1); -extern void func_80151238(void *a0); -extern void func_8015126C(u16 *p); -extern void func_80151780(s32 a0); -extern void func_801516F0(s32 *a0); -extern void func_8015173C(s32 *a0); -extern s16 D_8011DB1A; -extern s32 D_80127518; -extern s32 D_801151FC; -extern s32 func_801725CC(u8 *a0); -extern s32 func_80029D3C(void); -extern void func_80151878(void); -extern void func_80153B58(s32 *a0); -extern s32 func_80151880(s32 a0); -extern s32 func_801518D8(s32 a0); -extern s32 func_80151944(void); -extern s32 func_80151924(void); -extern void func_8014E934(s32 a0); -extern s32 func_8014F3E8(s32 a0); -extern void func_801519C8(s32 a0); -extern void func_80151980(s32 a0); -extern M2C_UNK D_800D5880; -extern s32 D_800D58AC; -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801519C8(s32 arg0); -extern void func_80151C54(s32 a0); -extern void func_801542DC(s32 *a0, s32 a1); -extern void func_8015BDD0(s32 *a0); -extern void func_80165718(s32 a0); -extern u8 D_800D46E4[]; -extern void func_80151AE4(s32 arg0); -extern void (*D_8018EF34[])(void); -extern void func_80151D24(void *a0); -extern void func_80151DB0(s32 a0); -extern void func_80151D60(void *a0); -extern s32 func_80172630(u8 *a0); -extern s32 D_80062C14; -extern void func_80151DB0(s32 param_1); -extern void func_80151E78(s32 *a0); -extern void func_80151ECC(struct S80151ECC *a0); -extern void func_80151FB4(s32 a0); -extern void func_80151F38(s32 *a0); -extern void func_801553C0(s32 a0); -extern void func_80153C18(); -extern void (*D_8018EF58[])(void); -extern void func_80152058(void *a0); -extern void func_801520DC(s32 a0); -extern void func_80152094(s32 a0); -extern void func_80147324(s32 a0); -extern u8 D_80062C04[]; -extern M2C_UNK D_8018EF48; -extern void func_801520DC(s32 arg0); -extern void func_801470B4(s32 a0); -extern void func_8015369C(s32 a0); -extern void func_80152194(s32 *a0); -extern s32 func_801536DC(s32 a0); -extern void func_8015220C(s32 a0); -extern s32 func_80153800(s32 a0); -extern void func_801522CC(s32 a0); -extern void func_80152254(s32 *a0); -extern void (*D_8018EF6C[])(void); -extern void func_80152370(void *a0); -extern void func_801523F4(s32 a0); -extern void func_801523AC(s32 a0); -extern void func_8001382C(s32 a0, void *a1, void *a2); -extern u8 D_8018EF78[]; -extern void func_801523F4(s32 arg0); -extern void func_801525F4(int); -extern s32 func_801535F4(void *arg0); -extern void func_8015BF48(s32 *a0); -extern void func_80152500(int param_1); -extern void func_801525F4(s32 a0); -extern void (*D_8018EF88[])(void); -extern void func_80152698(void *a0); -extern void func_80152714(s32 a0); -extern void func_801526D4(s32 a0); -extern void func_80152790(s32 a0); -extern void (*D_8018EFA0[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018EF90; -extern void func_801528B0(s32 arg0); -extern void func_8015294C(s32 a0); -extern void func_80152A08(s32 a0); -extern void func_80152AC8(s32 a0); -extern void func_80152A50(s32 *a0); -extern void (*D_8018EFB4[])(void); -extern void func_80152B6C(void *a0); -extern void func_80152BF0(s32 a0); -extern void func_80152BA8(s32 a0); -extern void func_80152C80(s32 *a0); -extern void func_80152C40(s32 *a0); -extern void (*D_8018EFD0[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018EFC0; -extern void func_80152DA8(s32 arg0); -extern void func_80152E4C(s32 a0); -extern void func_80152EFC(s32 a0); -extern void func_80152FBC(s32 a0); -extern void func_80152F44(s32 *a0); -extern void (*D_8018EFE4[])(void); -extern void func_80153060(void *a0); -extern void func_801530E4(s32 a0); -extern void func_8015309C(s32 a0); -extern void func_80155440(s32 *a0); -extern void func_801530E4(s32 arg0); -extern void func_80153150(struct S80153150 *a0); -extern void func_801531BC(s32 a0); -extern void func_8015327C(s32 a0); -extern void func_80153204(s32 *a0); -extern void (*D_8018EFF8[])(void); -extern void func_80153320(void *a0); -extern void func_801533A4(s32 a0); -extern void func_8015335C(s32 a0); -extern void func_80153410(s32 *a0); -extern void func_80153490(s32 a0); -extern void func_80153550(s32 a0); -extern void func_801534D8(s32 *a0); -extern void (*D_8011DB28)(s32 a0); -extern s32 func_801536DC(s32 param_1); -extern void func_800139C8(s32 a0, void *a1, void *a2); -extern s32 func_80153978(s32 a0, u16 *src); -extern s32 func_80133784(s32 a0, void *src, s32 dst); -extern s32 func_801539F8(s32 a0, void *a1); -extern s32 func_801539F8(s32 a0, void * a1); -extern s32 func_8016DA04(s32 a0); -extern s32 func_80153BD8(s32 a0); -extern s32 func_80153BF0(s32 a0); -extern void func_80153C18(void); -extern u16 D_8011F748; -extern void func_80153C30(void); -extern void func_80153C74(s16 a0, s16 a1); -extern s16 D_8011DB18; -extern void func_80153C44(int a0, int a1, s16 a2); -extern s16 D_8011DB0C; -extern s32 D_80115210; -extern void func_80153C8C(void); -extern void func_80153C9C(void); -extern s32 func_80153CBC(void); -extern s32 D_8018F00C; -extern void (*D_8018F034[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018F014; -extern void func_80153D7C(s32 param_1); -extern void func_8015410C(void); -extern void func_80153E00(s32 param_1); -extern void func_80151664(void); -extern void func_80154134(u8 *a0); -extern void func_80154190(u8 *a0, s32 a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154218(u8 *a0, s32 a1, s32 a2); -extern void func_801541D8(u8 *a0, s32 a1, s32 a2); -extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); -extern void func_801542A4(); -extern void func_801542A4(s32 *a0, s32 a1); -extern void func_8015430C(); -extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); -extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); -extern s32 func_80154358(void * arg0); -extern void func_80154AB4(s32 a0, s32 a1); -extern void func_80154B20(s32 a0, s32 a1, s32 a2); -extern void func_80154AE0(s32 a0, s32 a1, s32 a2); -extern void func_80154B7C(u8 *a0, s32 a1); -extern void func_80154B4C(u8 *a0, s32 a1); -extern void func_80154BC8(void *a0, s32 a1, s32 a2); -extern void func_80154B98(void *a0, s32 a1, s32 a2); -extern u8 D_800D8D10[]; -extern s16 D_80078E9E; -extern void func_801550FC(s32 a0); -extern void func_80154ED8(s32 a0, s32 a1); -extern void func_80154F9C(s32 a0); -extern void func_800183E0(s32 a0); -extern void func_801550FC(s32 arg0); -extern void func_8001D150(s32, s32); -extern void func_8001D130(int, int); -extern void func_80155150(int param_1); -extern s32 D_800DE2A4[]; -extern void func_801552F4(s32 a0); -extern void func_80155344(s32 a0); -extern s32 func_80155394(s32 *a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80029178(s32); -extern int (*D_8018F080[])(void); -extern s32 func_80155458(s32 param_1); -extern s32 func_801659DC(u8 *a0); -extern s32 func_801554B8(void *arg0); -extern void func_801555F4(void *a0); -extern void func_80155518(s32 *a0); -extern void func_80155580(void *a0); -extern void (*D_8018F084[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern S801563EC *func_801563EC(u16 idx); -extern s32 func_80029B4C(s32 a0, s32 a1); -extern s32 func_80029BC8(s32 a0, s32 a1); -extern s32 func_80029C44(s32 a0, s32 a1); -extern s32 func_8015640C(s32 a0, s32 a1); -extern s32 rand(void); -extern u32 func_8015616C(s32 param_1, u16 param_2); -extern u16 func_80156370(u16 param_1); -extern S801563EC * func_801563EC(u16 idx); -extern s32 func_801564B0(s32 a0); -extern s32 func_8002A1B4(void); -extern s32 func_8002A400(void); -extern s32 func_8002A670(void); -extern s32 func_8002A8E0(void); -extern s32 D_801151E0[]; -extern s32 func_801565C0(void); -extern void func_80156A14(s32 *a0); -extern void func_80156648(s32 *a0); -extern u8 D_8011DAD8[]; -extern s32 func_8014C568(s16 *a0, s16 *a1); -extern void func_801567BC(s32 a0); -extern B8 D_80128120[]; -extern B8 D_80128138[]; -extern S8 D_80126AF0[]; -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018F4E8[]; -extern void func_80156A1C(s32 param_1, s32 param_2); -extern s32 D_801150E0[]; -extern void func_80156A88(s32 a0, s32 a1); -extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); -extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); -extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); -extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern s32 func_80135004(s32 a0, void *a1, s32 a2); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801575E4(void *a0); -extern void func_801574DC(s32 *a0); -extern void func_80157544(void *a0); -extern void (*D_8018F4F8[])(void); -extern void func_8014CC28(s32 a0); /* defined */ -extern s32 func_8014F3E8(s32 a0); /* declared */ -extern void func_8015BDD0(s32 *a0); /* defined */ -extern void func_801575E4(void *a0); /* defined */ -extern void func_80157580(s32 arg0); -extern u8 D_800D4F14[]; -extern void func_801576A8(void *arg0); -extern s32 func_8015773C(u8 *a0); -extern s32 func_8015771C(u8 *a0); -extern s32 func_8015773C(u8 * arg0); -extern int D_801E5BE0; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018F520[])(void); -extern void func_80157808(void *param_1); -extern void func_80157880(s32 a0); -extern s32 func_801725A4(u8 *a0); -extern u8 D_800D5128; -extern u8 D_8018F500; -extern void func_801578C0(s32 param_1); -extern void func_80147A84(int); -extern void func_80148038(int, int); -extern void func_80147460(int); -extern void func_80146D90(int); -extern void func_80161450(void *a0); -extern void func_80157A8C(int); -extern void func_80154A74(int, int); -extern unsigned char D_800D5178; -extern unsigned char D_8018F510; -extern void func_8015795C(int param_1); -extern void func_80161D20(s32 a0, s32 a1); -extern void func_80157A8C(s32 a0); -extern void func_8016706C(s32 a0); -extern u8 D_800D51AC[]; -extern void func_80157AC8(s32 param_1); -extern void func_80157B74(int param_1); -extern void func_8016158C(void *a0); -extern void func_8015BE04(s32 *a0); -extern void func_80157BC8(s32 a0); -extern void func_80157CCC(s32 a0); -extern void func_80157DC4(void *a0); -extern void func_80157FC4(void *a0); -extern void func_80157D74(u16 *a0); -extern void (*D_8018F560[])(void); -extern void func_80157E38(void *); -extern void func_80157E00(void *a0); -extern void func_80157E38(void * a0); -extern s32 func_80157F64(s32 *a0); -extern s32 func_80156600(void *a0); -extern void func_80157EA4(void *a0); -extern void (*D_8018F568[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018F534; -extern void func_80158038(void * param); -extern u8 D_800D524C[]; -extern void func_80161418(void *a0); -extern void func_801580B4(s32 a0); -extern void func_801581AC(s32 a0); -extern void (*D_8018F574[])(void); -extern void func_8015824C(void *a0); -extern void func_801582C0(void *); -extern void func_80158288(void *a0); -extern u8 D_800D52A8[]; -extern void func_801585A4(s32 *a0); -extern void func_801582C0(void *a0); -extern s32 func_801585AC(s32 *a0); -extern u8 D_800D52E8[]; -extern void func_80158344(s32 *a0); -extern s32 func_801615C4(void *a0, s32 a1); -extern u8 D_8018F544; -extern u8 D_800D533C; -extern void func_80158434(s32 param_1); -extern void func_80158548(s32 param_1); -extern void func_801585EC(u8 *a0); -extern void func_80158794(void); -extern s32 D_801E5BE8; -extern s32 D_801E5BF4; -extern s32 D_801E5BF8; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018F5B0[])(s32 *); -extern void func_80158AE4(void *a0); -extern void func_80158AB4(void *a0); -extern void func_8016F264(void); -extern void func_80165840(void); -extern void func_801658DC(void); -extern void func_80165A78(s32); -extern void func_80158AE4(void * a0); -extern M2C_UNK D_800D58D8; -extern void func_80158BB0(void *arg0); -extern s32 func_80159404(s32 a0, s32 a1); -extern void func_80158C40(s32 *a0); -extern void func_80158CD8(s32 *a0); -extern s32 func_80159434(s32 a0, s32 a1); -extern void func_80158D60(s32 a0); -extern M2C_UNK D_800D5904; -extern void func_80158E24(s32 *a0); -extern s32 D_8018F584[]; -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80158F00(int param_1); -extern u8 D_80110C3C[]; -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80158FA4(s32 param_1); -extern s32 func_801399F0(s32 a0); -extern u8 D_80110C94[]; -extern u8 D_80110CD4[]; -extern void func_80159070(void *a0); -extern s32 func_80029A94(s32); -extern void func_80175454(void); -extern void func_800298BC(void *); -extern void func_8002992C(s32); -extern void func_800CF804(void); -extern void func_800CF818(void); -extern u8 D_80110D0C[]; -extern void func_80159120(s32 a0); -extern void func_801592CC(s32 *a0); -extern u8 D_800AE6BD; -extern s32 D_801E5BF0; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018F800[])(void); -extern void func_80159698(void *a0); -extern s32 func_801596D4(void *a0); -extern void func_80174B6C(void); -extern void func_80129248(s16 a0); -extern void func_8013C938(void); -extern void func_8013CB20(void); -extern void func_8013C98C(void); -extern void func_8002850C(s32, s32, s32); -extern void func_80028620(s32, void *); -extern s16 D_800B9AAC[]; -extern s16 D_800B9B00; -extern u16 D_801270C0; -extern u32 D_800AFAE8[]; -extern char D_8018F620[]; -extern s32 func_801596F0(s32 param_1); -extern s32 func_80159874(void); -extern void func_800167B8(s32 a0); -extern s32 func_8015987C(s32 a0); -extern int func_800167F0(int arg); -extern int func_801598BC(void); -extern void func_80159968(void *a0); -extern void func_801598E0(u8 *a0); -extern void (*D_8018F8A4[])(void); -extern void func_80159A20(void *a0); -extern void func_801599E0(void *a0); -extern void func_80159A18(void); -extern void func_80159BE4(s32); -extern void func_80159B08(s32 *a0); -extern void func_80159B70(void *a0); -extern void func_80159B3C(void * a0); -extern void (*D_8018F9F8[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018F814; -extern void func_80159BE4(s32 arg0); -extern void func_8015A1C8(s32 a0); -extern void func_8015A2D8(s32); -extern void func_8015A1FC(s32 *a0); -extern void func_8015A264(void *a0); -extern void func_8015A230(s32 *a0); -extern void (*D_8018FA00[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018F824; -extern s32 func_80172608(u8 *a0); -extern void func_8015A2D8(s32 param_1); -extern u8 D_800D48DC; -extern s32 func_8015AB7C(s32 a0); -extern s32 D_8011F9C4; -extern s32 func_8015ABD4(s32 a0, s32 a1, s32 a2); -extern s32 func_80161CD0(s32 a0, s32 a1); -extern M2C_UNK D_8018F844; -extern void func_8015AC48(s32 arg0); -extern void func_8015AC90(s32 a0); -extern void func_8015ADB0(s32 a0); -extern void func_8015ACC4(s32 *arg0); -extern void func_8015AD3C(void *a0); -extern void func_8015AD08(void *arg0); -extern void (*D_8018FA08[])(void); -extern void func_8015ADB0(s32); -extern void func_8015AD78(s32 a0); -extern void func_8015ADB0(s32 arg0); -extern s32 D_800D4A9C; -extern int func_8015B6F4(int param_1); -extern u8 D_800D4F8C[]; -extern s32 func_8015B7B4(s32 a0); -extern u8 D_800D4BE0[]; -extern s32 func_8014A51C(void); -extern s32 func_8015B858(u8 *a0); -extern s32 D_800D4B48; -extern void func_8015B8F8(s32 *a0); -extern void func_8015BD8C(s32 *a0); -extern s32 func_8015BE94(); -extern void func_8015BE38(struct Obj *a0); -extern s32 func_8015BE74(void); -extern void func_80161124(void *a0); -extern s32 func_8015BE94(s32 *a0); -extern s32 func_8015AE2C(); -extern s32 func_8015BEC4(void); -extern s32 func_8015B950(s32 arg0); -extern s32 func_8015BEE4(void); -extern void func_8015BF04(s32 *a0); -extern void func_8015C0C4(s32 a0); -extern void func_8015BFF4(void *a0); -extern void func_8015BF7C(s32 *a0); -extern void func_8015C030(s32 *a0, s32 a1); -extern void func_8015BFB0(s32 *a0, s32 a1); -extern void (*D_8018FA30[])(void); -extern void func_8015C0C4(s32); -extern void func_8015C08C(s32 a0); -extern s32 func_8015C128(s32 param_1); -extern void func_8015C6A4(void); -extern void func_8015C788(s32 a0); -extern void func_8015C6AC(s32 *a0); -extern void func_8015C714(void *a0); -extern void func_8015C6E0(s32 *a0); -extern void (*D_8018FA3C[])(void); -extern void func_8015C788(s32); -extern void func_8015C750(s32 a0); -extern void func_8015CB94(s32 a0); -extern void func_8015CBCC(void); -extern void func_8015CBD4(void); -extern void func_8015CBDC(void); -extern void func_8015CBE4(void); -extern void func_8015CBEC(void); -extern void func_8015CBF4(void); -extern void func_8015CBFC(void); -extern void func_8015CC04(void); -extern void func_8015CC0C(s32 *param_1); -extern void func_8015CC74(s32 *a0); -extern void func_8015CC40(s32 *a0); -extern s32 func_8015CCD0(); -extern s32 func_8015CCB0(void); -extern s32 func_801725E0(u8 *a0); -extern s32 func_8015CCD0(s32 param_1); -extern s32 func_8015CD20(s32 arg0); -extern void func_8015CF24(s32 a0); -extern void func_8015D01C(); -extern void func_8015CF58(s32 *param_1); -extern void func_8015CFC0(s32 *a0); -extern void func_8015CF8C(s32 *a0); -extern void func_8015CFFC(void); -extern void func_8015D01C(int param_1); -extern void (*D_8018F8B0[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018FAE0; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018EBC4[]; -extern void func_8015D414(int param_1); -extern void func_8015D57C(s32); -extern void func_8015D480(s32 *a0); -extern s32 func_8015D4E8(s16 *a0); -extern void func_8015D4B4(s16 *a0); -extern void func_8015D524(s32 arg0); -extern void func_8015D544(s32 a0); -extern void func_801746DC(void); -extern void func_8015D57C(s32 arg0); -extern s32 func_80161B18(void *a0); -extern s32 func_80161B84(void *a0); -extern void func_80154150(int, int); -extern void func_80149374(int, int); -extern unsigned char D_8018FAF4[]; -extern void func_8015D5E8(int param_1); -extern int func_8015E0D4(int); -extern void func_8015DA5C(s32 a0); -extern void func_8015DB6C(s32 a0); -extern void func_8015DA90(s32 *a0); -extern void func_8015DAF8(s32 *a0); -extern void func_8015DB6C(s32); -extern void func_8015DB34(s32 a0); -extern void func_8015DCB8(s32 a0); -extern void func_8014BD60(s32 a0, s32 a1); -extern int func_8015DD74(int); -extern void func_8015DBD4(void *arg0); -extern int func_8015DC84(int a0); -extern s8 D_8018FB30[]; -extern void func_8015DCB8(s32 param_1); -extern int func_8015DD74(int arg0); -extern void func_8015DECC(s32 a0); -extern void func_8015DDF0(s32 *a0); -extern void func_8015DE58(s32 *a0); -extern void func_8015DECC(s32); -extern void func_8015DE94(s32 a0); -extern void func_8015E018(s32 a0); -extern void func_8015DF34(void *arg0); -extern int func_8015DFE4(int a0); -extern void func_8015E018(s32 param_1); -extern int func_8015E0D4(int a0); -extern void func_8015E22C(s32 a0); -extern void func_8015E150(s32 *a0); -extern s32 func_8015E1B8(s32 a0); -extern void func_8015E184(s32 *arg0); -extern void func_8015E22C(s32); -extern void func_8015E1F4(s32 a0); -extern u8 D_800D4FF4[]; -extern u8 D_800D5098[]; -extern u8 D_800D5060[]; -extern s32 func_8014A850(s32 a0); -extern void func_8015E40C(s32 a0); -extern void func_8015E588(void); -extern void func_8015E4B0(s32 a0); -extern void func_8015E288(s32 a0); -extern u16 D_8018FB78; -extern u16 D_8018FB7A; -extern u16 D_8018FB7C; -extern s32 D_8018FB80; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -extern void func_8013C9C4(void *a0); -extern s32 D_8018FB88; -extern void func_8015E5B0(u8 *self); -extern void func_8015E714(s32 *a0); -extern void func_8015E95C(s32); -extern void func_8015E84C(s32 *a0); -extern void func_8015E8E8(s32 *a0); -extern void func_8015E9B8(s32 *a0); -extern void func_8015E8B4(s32 *a0); -extern void func_8015E924(s32 a0); -extern void func_8015E95C(s32 a0); -extern s16 D_801152A0; -extern void func_80160818(s32 *a0); -extern void func_8015ED6C(s32 *a0); -extern void func_8015EE7C(s32); -extern void func_8015EDA0(s32 *a0); -extern s32 func_8015EE08(s32 a0); -extern void func_8015EDD4(s32 *arg0); -extern void func_8015EE44(s32 a0); -extern int D_800D4C48; -extern int D_8018F894; -extern void func_8015EE7C(s32 param_1); -extern void func_8015EEE0(void *arg0); -extern void func_8015EF9C(void); -extern void func_8015F080(s32); -extern void func_8015EFA4(s32 *a0); -extern void func_8015F00C(s32 *a0); -extern void func_8015EFD8(s32 *a0); -extern void func_8015F048(s32 a0); -extern void func_8015F080(s32 a0); -extern s32 D_80062BE8; -extern void func_801466F0(s32, s32, s32, s32, s32, s32, s32, s32); -extern s32 func_80161208(void); -extern void func_8015F118(void *a0); -extern void func_8015F260(s32 *a0); -extern void func_8015F380(); -extern void func_8015F2BC(s32 *a0); -extern void func_8015F324(s32 *a0); -extern void func_8015F2F0(s32 *a0); -extern void func_8015F360(void); -extern s32 func_801725B8(u8 *a0); -extern void func_8015F380(void* arg0); -extern void func_8015F738(s32 *a0); -extern void func_8015F848(s32 *a0); -extern void func_8015F76C(s32 *a0); -extern s32 func_8015F7D4(s32 a0); -extern void func_8015F7A0(s32 *arg0); -extern void func_8015F810(s32 *a0); -extern void func_80147078(s32 *, s16); -extern void func_80159B70(void *); -extern void func_8015F89C(void *arg0); -extern void func_8015F948(s32 *param_1); -extern void func_8015F9A4(void *arg0); -extern void func_8015FA24(s32 arg0); -extern void func_8015FBE0(s32 *a0); -extern void func_8015FA44(s32 *a0); -extern void func_8015FAAC(s32 *a0); -extern void func_8015FA78(s32 *a0); -extern s32 func_801612B8(void *a0, s32 a1); -extern void func_8016007C(s32 a0); -extern void func_8015FAE8(void *arg0); -extern void func_8015FCC8(void *param_1); -extern unsigned int D_8018FC0C[]; -extern void func_8015FD74(int param_1); -extern s32 func_80028DE0(void); -extern u8 func_80165700(s32 a0, s32 a1); -extern void func_8015FDCC(s32 a0); -extern u8 D_80078EC2; -extern u8 func_801656E8(s32 a0, s32 a1); -extern void func_80165670(s32 a0, s32 a1); -extern void func_8016004C(s32 a0); -extern void func_8015FF20(void *param_1); -extern void func_801601AC(s32 *a0); -extern void func_801600D0(s32 *a0); -extern void func_80160138(s32 *a0); -extern void func_80160104(s32 *a0); -extern void func_80160174(s32 *a0); -extern void func_801601E4(s32 *a0); -extern void func_80160244(s32 *a0); -extern void func_8016032C(void); -extern void func_80160410(s32 *a0); -extern void func_80160334(s32 *a0); -extern void func_8016039C(s32 *a0); -extern void func_80160368(s32 *a0); -extern void func_801603D8(s32 *a0); -extern u8 D_80062BD0; -extern void func_80160410(s32 * a0); -extern void func_801607B8(s32 *a0); -extern void func_801608C0(s32 *a0); -extern void func_801607E4(s32 *a0); -extern void func_8016084C(s32 *a0); -extern void func_80160888(s32 *a0); -extern void func_80160A28(s32 a0); -extern void func_80160A74(s32 *a0); -extern void func_80160BB4(s32 *a0); -extern void func_80160ACC(s32 *a0); -extern s32 func_80160B34(s32 a0); -extern void func_80160B00(s32 *arg0); -extern void func_80160B70(s32 a0); -extern void func_80160C28(void *arg0); -extern void func_80160CB4(s32 *a0); -extern void func_80160D10(void *arg0); -extern void func_80160DEC(u8 *a0); -extern void func_80160F00(); -extern void func_80160E3C(s32 *a0); -extern void func_80160EA4(); -extern void func_80160E70(s32 *a0); -extern void (*D_8018FCBC[])(void); -extern void func_80160EA4(void *a0); -extern void func_80160EE0(void); -extern void func_80160F00(void* arg0); -extern void func_800D0F4C(s32 a0); -extern u8 D_80110EC0; -extern void func_80160F70(s32 a0); -extern void func_80160FE0(s32 *a0); -extern void func_80161034(void *a0); -extern void func_80161094(s32 a0); -extern void func_801610FC(void); -extern void func_801483E8(void); -extern s32 func_80161A60(s32 a0); -extern void func_8016130C(void *a0, s32 a1); -extern void func_80161240(void *a0); -extern void func_80161374(void *a0, s32 a1); -extern void func_80161278(void *a0); -extern s32 func_801612B8(void * a0, s32 a1); -extern void func_8016163C(void *a0, s32 a1); -extern void func_80161774(void *a0, s32 a1); -extern s32 func_8016197C(s32 a0, s32 a1); -extern s32 func_80161488(void *a0); -extern void func_80161888(void *a0, s32 a1); -extern void func_801614E4(void *a0); -extern void func_8016191C(void *a0, s32 a1); -extern void func_8016151C(void *a0); -extern void func_80161554(void *a0); -extern s32 func_801615C4(void * arg0, s32 arg1); -extern s32 func_801619A4(s32 *a0); -extern s32 func_80161A00(s32 a0); -extern s32 func_80161A30(s32 a0); -extern int func_801497A8(void); -extern int func_80161BE0(void *param_1); -extern u16 D_8018FCEC[]; -extern void func_80161C98(int param_1, u32 param_2); -extern void func_80161E08(s32); -extern s32 func_80162438(s32); -extern s32 D_800AE6A8; -extern void func_800D1734(void *); -extern s32 D_8018FD50; -extern void func_80161D88(void); -extern void func_80161E08(s32 param_1); -extern int func_800291DC(int); -extern int func_800D0E30(void *a0); -extern int func_801620C4(void); -extern s32 func_800D0D7C(s32, s32); -extern int D_801E5C00[]; -extern void func_8016216C(void); -extern u8 D_80078EB0; -extern u8 D_80078EB1; -extern s32 func_801621CC(s32 arg0); -extern void func_801622C4(void); -extern void (*D_8018FD74[])(void); -extern void func_80162330(void *a0); -extern void func_8014706C(void *a0); -extern s32 func_8016236C(u8 *a0); -extern void func_800D0C48(s32 a0); -extern s32 func_801623B8(s32 *a0); -extern s32 func_800167F0(s32 a0); -extern s32 func_80162414(void); -extern s32 func_80162438(s32 _unused0); -extern int func_801626B8(void); -extern void func_80162714(void); -extern int D_801E5C58[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018FDBC[])(void); -extern void func_80162834(void *a0); -extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80162968(s32 a0); -extern s32 func_80162ACC(u8 *a0); -extern u8 D_800B5CB8; -extern s32 D_8018FDAC; -extern s32 D_800B5CBC; -extern u8 D_800B5CDF; -extern s32 D_800B5CEC; -extern void func_80162870(s32 param_1); -extern void func_801628F4(s32 *a0); -extern void func_80162968(s32 param_1); -extern void func_80162AC0(s32 *a0, s8 a1); -extern s32 func_80162AE0(u8 *a0); -extern void func_80162AF4(void); -extern void func_80162CC4(void); -extern s32 D_80126D40; -extern void func_80162B1C(void); -extern void func_80162D28(s32 *a0); -extern void func_80162D88(s32 *a0); -extern void func_80162DE8(s32 *a0); -extern void func_80162E48(s32 *a0); -extern void func_80162EA8(s32 *a0); -extern void func_80162F60(s32 arg0, s32 arg1); -extern void func_80162F80(s32 arg0, s32 arg1); -extern void func_80162FA0(s32 arg0, s32 arg1); -extern void func_80162F08(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80162FC0(s32 *a0); -extern void func_80162FF4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801630C4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163194(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg4); -extern void func_8016325C(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163234(s32 a0); -extern s32 D_80115100; -extern s32 func_801632E0(void); -extern s32 D_80115200; -extern s32 func_801632F0(void); -extern u16 D_80126B18[]; -extern void func_80163328(void); -extern s32 func_801633A8(void); -extern s32 func_80163408(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void func_80163534(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, u16 * a5); -extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); -extern char D_801E5054[8]; -extern void *memcpy(void *dst, const void *src, unsigned int n); -extern void func_801634D8(s32 param_1, u16 param_2, u16 param_3, s32 param_4, u16 param_5); -extern void func_80157158(); -extern void func_80163664(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801636D0(s32 a0, s32 a1); -extern s32 func_8016380C(struct S8016380C *a0, s32 a1); -extern void *memcpy(void *dst, void *src, s32 n); -extern s32 func_801638A0(u8 *a0, s32 a1); -extern s32 func_80163950(s32 a0); -extern void (*D_8018FDC4[])(void); -extern void func_80163A58(void *a0); -extern void func_80163A94(s32 param_1); -extern void func_80163C2C(s32 param_1); -extern void func_80163EC8(s32 param_1); -extern void func_80164270(s32 *a0); -extern void func_80164418(void); -extern void func_80163764(s32 a0); -extern void func_801642AC(s32 a0); -extern void func_8016432C(s32 a0); -extern void func_80164410(void); -extern s32 func_80012DBC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164530(s32 arg0); -extern void (*D_8018FE18[])(void); -extern void func_80164744(s32 param_1); -extern void func_8001C810(s32 a0, s32 a1); -extern void func_80164A74(s32 *a0); -extern void func_80164930(s32 a); -extern u16 D_800DF2E0; -extern s32 D_8018FDE0; -extern s16 D_8018FE14; -extern s16 D_8018FE12; -extern s16 D_8018FE10; -extern void func_801647A4(int param_1); -extern void func_80164ACC(); -extern void func_80164864(void *a0); -extern void func_80164930(s32 param_1); -extern s32 func_8014C308(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164ACC(s32 a0); -extern void (*D_8018FE24[])(void); -extern void func_80164BA0(void *a0); -extern void func_8001CD50(s32 a0, s32 a1); -extern void func_800233CC(void *, unsigned short); -extern void func_80164DD0(s32 a0); -extern void func_80164DB0(void); -extern u8 D_801E5CB8; -extern u8 D_801E5CB9; -extern u8 D_801E5CBA; -extern u8 D_801E5CBB; -extern u8 D_801E5CBC; -extern u8 D_801E5CBD; -extern u8 D_801E5CBE; -extern u8 D_801E5CBF; -extern void func_80164BDC(s32 param_1); -extern void func_80164E40(void); -extern void func_80164CD4(u8 *a0); -extern void func_80164D4C(void *arg0); -extern void (*D_8018FE34[])(void); -extern void func_80164EA4(void *a0); -extern void func_80165124(void *a0); -extern void func_80164EE0(int param_1); -extern s32 func_80165140(s32 a0); -extern void func_801651B8(void *a0); -extern void func_80164F44(void *arg0); -extern void func_80165024(void *a0); -extern void func_80165064(s32 *a0); -extern void func_801650C4(s32 *a0); -extern s32 func_80165140(s32 param_1); -extern s32 func_80165240(s32 a0, s32 a1, s32 a2); -extern s32 D_801E5CF8; -extern void func_801651B8(void * param_1); -extern u8 D_80126CF8; -extern void func_8016533C(void); -extern void func_801653F4(s32 a0); -extern void func_80165580(s32 a0); -extern void func_80165374(s32 a0); -extern void func_80165580(s32 _arg0); -extern void func_801653B8(s32 *a0); -extern s32 func_80165624(s32 a0); -extern u8 D_80078EC5; -extern void (*D_8018FE78[])(void); -extern u8 func_80165658(s32 a0, s32 a1); -extern void func_800CAE0C(s32 a0); -extern void func_801654A8(s32 arg0); -extern void func_80165B28(void *a0); -extern void func_801655E4(s32 a0); -extern u8 D_8018FEF4[]; -extern s32 D_8018FF14[]; -extern u8 D_8018FF90[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018FFB0[]; -extern u8 D_8018FFD0[]; -extern void func_800CAF6C(void); -extern void func_80165770(void); -extern void func_801657D8(void); -extern u8 D_80078EC3; -extern void func_801657A0(void); -extern s32 D_80078EA0; -extern s32 D_80078EA8; -extern u8 D_80078EBB; -extern s32 D_80078ED4; -extern s32 D_80078ED8; -extern s32 D_80078EDC; -extern u8 D_80078EE0; -extern void func_80165874(void); -extern s8 D_80078EC4; -extern void func_801658EC(void); -extern s32 func_80165900(void); -extern s32 func_80165910(void); -extern s32 D_8012672C; -extern s32 D_8012811C; -extern s32 D_80126B08; -extern void func_80165938(void); -extern void func_80165958(void); -extern s32 func_80165978(void); -extern void func_80165988(void); -extern s32 func_801659A8(void); -extern void func_801659B8(void); -extern s32 func_801659CC(void); -extern void func_80165A18(void); -extern s32 func_80165A50(s32 _arg0); -extern void func_80165AC8(void); -extern void func_80165A78(s32 arg0); -extern void (*D_8019006C[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_801900E8[])(void); -extern void func_80165BB4(u8 *a0); -extern void func_80165B6C(u8 *a0); -extern void func_80165C58(s32 arg0); -extern void func_80165BFC(void *a0); -extern void func_80165C78(void); -extern M2C_UNK D_801E5064; -extern void func_80165E2C(u16 *arg0); -extern s32 func_80165FA4(s32 a0, s32 a1, s32 a2); -extern s32 func_80167DBC(s32 a0, s32 a1, s32 a2); -extern s32 func_80167AE0(s32 a0, s32 a1, s32 a2); -extern void func_80165E90(void); -extern void func_80020F34(s32 a0, s32 a1); -extern s32 func_80165FA4(s32 arg0, s32 arg1, s32 arg2); -extern void (*D_801900F4[])(void); -extern void func_80166018(void *a0); -extern void func_80166054(s32 arg0); -extern void func_801661CC(s32 param_1); -extern void func_80166244(void* arg0); -extern void func_8016629C(void *a0); -extern void func_801662F4(void *a0); -extern void func_8016634C(void *a0); -extern void func_801663A4(void *a0); -extern void (*D_801900FC[])(void); -extern void func_801663FC(void *a0); -extern u8 D_800D387C[]; -extern u8 D_800D3888[]; -extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); -extern void func_800D1FC8(s32 a0, s32 a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern void func_801665B4(); -extern void func_80146C3C(); -extern void func_80166438(u8 *a0); -extern s32 func_80128ED8(s32 param_1, s32 *param_2); -extern void func_800D22E4(s32 a0); -extern void func_801665B4(s32 *a0); -extern void (*D_801901C4[])(void); -extern void func_80166618(void *a0); -extern void (*D_801901D4[])(void); -extern void func_80166654(void *a0); -extern s32 func_80166690(s32 param_1, s32 param_2); -extern s32 func_80166994(); -extern s32 func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern s32 func_80167540(s32 arg0); -extern void (*D_801901E4[])(void); -extern void func_801678B4(void *a0); -extern void RotMatrixYXZ(void *a0, void *a1); -extern void func_80048EAC(void *a0, void *a1); -extern s32 func_801670E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80146C3C(void); -extern void func_801678F0(s32 a0); -extern void (*D_801901F0[])(void); -extern void func_80167A9C(void *a0); -extern void func_80167AD8(void); -extern s32 func_80167AE0(s32 param_1, s32 param_2, s32 param_3); -extern void func_80168070(s32 a0, s16 *a1, s16 *a2, void *a3); -extern u8 D_80190150[]; -extern u8 D_80190164[]; -extern s32 func_80167DBC(s32 arg0, s32 arg1, s32 arg2); -extern void func_800D20C0(void *a0, void *a1, s32 a2); -extern void func_80017E68(void *a0, void *a1); -extern void func_800D23D0(void *a0); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern s32 D_801269A4; -extern s32 D_801269A8; -extern s32 D_801269AC; -extern void func_80168070(s32 param_1, s16 *param_2, s16 *param_3, void *param_4); -extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_8016829C(s32 a0); -extern s32 func_80166690(s32 a0, s32 a1); -extern void func_80168328(s32 arg0); -extern void func_801683D8(s32 a0); -extern void func_801684B4(s32 a0); -extern void func_80168540(s32 a0); -extern void func_801685EC(s32 a0); -extern void func_80168640(s32 a0); -extern Blk20 D_800AE620; -extern s32 RotMatrixX(s32 a0, void *a1); -extern void func_80168664(void *arg0); -extern void (*D_80190208[])(void); -extern void func_80168744(void *a0); -extern void func_80168BDC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801687CC(s32 a0); -extern void func_80168780(s32 a0); -extern void func_80168828(void); -extern void func_801687CC(s32 param_1); -extern void func_80168828(); -extern void (*D_80190210[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_80190218[])(void); -extern void func_80168AA8(void *a0); -extern void func_80168AE4(s32 a0); -extern void func_800D2318(void); -extern void func_80168BDC(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void (*D_80190220[])(void); -extern void func_80168D58(void *a0); -extern void func_80168D94(int a0); -extern void func_80168F40(); -extern void func_80168EC4(s32 a0); -extern void func_80168F40(void *arg0); -extern void (*D_80190228[])(void); -extern void func_8016901C(void *a0); -extern void func_80169058(s32 a0); -extern s32 func_80169228(void); -extern void func_801691B8(void *a0); -extern void (*D_80190230[])(void); -extern void func_801693CC(void *a0); -extern void func_80169584(s32 param_1); -extern void func_80169408(s32 a0); -extern void func_8016951C(int param_1); -extern s32 func_80017758(void *a0, void *a1); -extern s32 func_80017DC4(void *a0, void *a1); -extern void func_801696D8(s32 a0, s32 a1); -extern void (*D_80190238[])(void); -extern void func_80169830(void *a0); -extern void func_8016986C(s32 a0); -extern s32 func_80169A4C(s32 a0, s32 a1); -extern void func_801699D0(void *arg0); -extern void (*D_801902EC[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_801902F4[])(void); -extern void func_80169F00(void *a0); -extern char D_801902A4[]; -extern char D_80190264[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8019032C[])(void); -extern void func_8016A020(void *a0); -extern void func_8016A05C(void *a0); -extern void func_8016A290(s32 a, void *b, void *c); -extern void func_8016A08C(s32 param_1); -extern void func_8016A1CC(int param_1); -extern void func_8016A290(s32 param_1, void *param_2, void *param_3); -extern void (*D_80190338[])(void); -extern void func_8016A700(void *a0); -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_80126B62; -extern u16 D_80126B66; -extern void func_8016AA50(s32 param_1, s32 param_2); -extern void (*D_80190380[])(void); -extern void func_8016AB30(void *a0); -extern void func_8016B234(void); -extern void func_8016AFB0(s32 a0); -extern void func_8016B114(void *arg0); -extern s32 func_8016B448(s32, s32); -extern s32 func_8016BA48(s32 a0); -extern void func_8016B3F4(s32 a0); -extern s32 func_8016B428(s32 a0); -extern void func_8016B984(void *a0); -extern s32 func_8016B448(s32 arg0, s32 arg1); -extern void (*D_801903FC[])(void); -extern void func_8016B4BC(void *a0); -extern int func_8016B9F8(int); -extern int func_8016B834(int, int); -extern void func_8016B91C(int); -extern int D_801E6018; -extern void func_8016B4F8(int param_1); -extern s32 func_8016B9F8(s32 param_1); -extern void func_8016B6BC(s32, s32, s32, s32); -extern void func_8016B91C(s32); -extern s16 D_801903F0[]; -extern void func_8016B5C0(s32 param_1); -extern void func_8001CD9C(int, void *); -extern int *D_80190434[]; -extern unsigned short D_8019043C[]; -extern unsigned short D_80190444[]; -extern unsigned char D_801E6020[]; -extern int func_8016B834(int param_1, int param_2); -extern void func_8016B964(SrcB964 *a0, DstB964 *a1); -extern void func_8016B91C(s32 arg0); -extern s32 D_801E6018; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8019044C[])(void); -extern void func_8016BBA4(void *a0); -extern s32 func_8016BBE0(s32 param_1); -extern void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3); -extern M2C_UNK D_801E6154; -extern M2C_UNK D_801E6158; -extern void func_8016BCC0(void *arg0); -extern s32 func_8016BD78(s32 param_1); -extern s32 func_8016BEA0(s32 param_1); -extern void func_8016BF34(void *a0); -extern void func_8016BFD0(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern s32 D_801E60E0; -extern void (*D_8019047C[])(void); -extern void func_8016C14C(void *a0); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801E615C[]; -extern u8 D_801E6164[]; -extern u8 D_801E6114[]; -extern void func_8016C2C4(s32 param); -extern s32 func_8016C49C(s32 param_1_arg); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_8016C74C(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern short func_8016CF04(s32 a0, s32 a1); -extern void func_8016C83C(s32 a0); -extern void (*D_80190484[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_801904A0[])(void); -extern void func_8016D19C(void *a0); -extern void (*D_801904A8[])(void); -extern void func_8016D428(void *a0); -extern void func_8016D464(u8 *a0); -extern void func_8016D4DC(s32 a0); -extern void func_8016D5EC(s32 *a0); -extern short func_8016CBC0(void); -extern void func_8016D64C(int param_1); -extern void func_8016D778(s32 a0); -extern void func_800D20C0(); -extern void func_8016D848(s32 *a0); -extern void func_8016D984(s32 *a0); -extern void func_8016DBD8(u8 *a0); -extern void (*D_80190510[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801904B4; -extern u8 D_801904C0; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void (*D_80190544[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8019054C[])(void); -extern void func_8016DF20(void *a0); -extern void func_8016E3CC(s32 a0); -extern void func_8016E1CC(s32 a0); -extern void func_8016E26C(s32 *a0); -extern void func_8016E2E8(void *a0); -extern void func_8016E460(void *a0, void *a1); -extern void func_8016E358(void *a0); -extern void func_8016E460(void *arg0, void *arg1); -extern void (*D_801905A0[])(void); -extern void func_8016E5B8(void *a0); -extern void func_8016E5F4(s32 arg0); -extern void func_8016E778(); -extern void func_8016E688(void *a0); -extern void func_8016E6E4(s32 a0); -extern void func_8016E728(u8 *a0); -extern void func_8016E7C8(int param_1, short *p1, unsigned int *p2); -extern void func_8016E778(int param_1); -extern void func_8016E7C8(int param_1, short *param_2, unsigned int *param_3); -extern s32 D_80115218; -extern void func_8016E8F0(void); -extern void func_8016E918(short param_1, short param_2); -extern s32 func_8016E95C(); -extern u16 D_801905D4[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_801905C4[]; -extern void func_8016EB3C(s32 p); -extern void func_8016EBA8(u8 *param_1); -extern void func_8016ED6C(void); -extern s32 D_80126D70; -extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); -extern void func_8016ED8C(s32 a0, s32 a1, s32 a2); -extern void func_8016EE40(s32 a0, s32 a1, s32 a2); -extern void func_8016EDBC(s32 a0, s32 a1, s32 a2); -extern void func_8016EE94(); -extern void func_8016EDEC(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_8016EF78(s32 a0); -extern void func_8016EE40(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_801726D0(void *a0); -extern s32 D_80126D50; -extern s32 D_80126D54; -extern u8 D_80126D6C; -extern u8 D_80126D6D; -extern u8 D_80126D6E; -extern s32 D_80126D5C; -extern s32 D_80126D60; -extern s16 D_80126D64; -extern s16 D_80126D66; -extern s16 D_80126D68; -extern s16 D_80126D6A; -extern u8 D_80126D1A; -extern s32 D_80127058; -extern s32 D_8012705C; -extern s32 D_80127060; -extern s32 D_80127064; -extern s32 D_80127068; -extern s32 D_8012706C; -extern s32 D_80127070; -extern s32 D_80127074; -extern void func_8016EE94(s32 a0, s32 a1); -extern s32 func_8016EFC8(s32); -extern s32 func_8016EFA8(s32 a0); -extern void func_8016F094(s32 *a0); -extern s32 func_8016F0AC(); -extern s32 D_801905F0; -extern void func_8016F250(void); -extern void func_8016F288(void); -extern void func_8016F2A8(void); -extern void func_8016F2C8(void); -extern void func_8016F2EC(void); -extern void func_8016F30C(void); -extern void func_8016F330(void); -extern void func_8016F350(void); -extern void func_8016F374(void); -extern void func_8016F388(void); -extern void func_8016F398(void); -extern s32 func_8016F44C(s32 a0); -extern void func_8016F470(s32 a0); -extern s32 func_8016F410(s32 a0); -extern void func_80175414(s32 _arg0); -extern s32 func_8016F4C4(s32); -extern s32 func_8016F494(s32 a0); -extern void func_8016F0E4(void); -extern s32 func_8016F4C4(s32 param_1); -extern void func_8016F4F4(void); -extern void func_801719A4(int a0, int a1); -extern void func_800D1724(s32 a0); -extern void func_80171928(void *a0); -extern void *D_8011F738; -extern void func_8016F4FC(void *a0); -extern void func_8014708C(void *a0); -extern void func_8016F540(void *a0); -extern void func_8016F578(s32 *a0); -extern void func_8016F5B0(void *a0); -extern void func_80147060(u8 *a0); -extern void func_8016F5E0(u8 *a0); -extern void func_8016F610(void *a0); -extern void func_8016F648(void *a0); -extern void func_8016F680(void *a0); -extern void func_8016F6B0(void *a0); -extern void (*D_80190668[])(void); -extern void func_8016F6E0(void *a0); -extern s32 func_80171990(u8 *a0); -extern void func_8016F764(void *a0); -extern void func_8016F71C(u8 *a0); -extern void (*D_80190670[])(void); -extern void func_8016F798(void *a0); -extern void func_8016F804(void *a0); -extern void func_8016F7D4(u8 *a0); -extern void func_80171928(void *); -extern void (*D_80190678[])(void); -extern void func_8016F834(void *a0); -extern void func_8016F8AC(u8 *a0); -extern void func_8016F870(u8 *a0); -extern void func_80172358(u8 *a0, u8 *a1); -extern void (*D_80190680[])(void); -extern void func_8016F8E4(void *a0); -extern void func_8016F95C(void *a0); -extern void func_8016F920(u8 *a0); -extern s32 func_80171CC4(void *a0, void *a1); -extern s32 func_80171D1C(void *a0, void *a1, s32 a2); -extern u16 D_8011F73E; -extern void (*D_80190688[])(void); -extern void func_8016F9C4(void *a0); -extern void func_80171B44(s32 *a0); -extern void func_8016FA44(s32 a0); -extern void func_8016FA00(s32 a0); -extern s32 func_80171C64(s32 a0, s32 a1); -extern void (*D_80190690[])(void); -extern void func_8016FA84(void *a0); -extern void func_8016FB10(void *a0); -extern void func_8016FAC0(u8 *a0); -extern void func_8016FB50(void *a0); -extern void (*D_8019069C[])(void); -extern void func_8016FB7C(void *a0); -extern void func_8016FC24(); -extern void func_8016FBB8(s32 a0); -extern s32 func_80171B4C(s32 a0, s32 a1); -extern void func_8016FC24(s32 a0); -extern void func_8016FC64(void *a0); -extern void (*D_801906A8[])(void); -extern void func_8016FC90(void *a0); -extern void func_8016FD08(u8 *a0); -extern void func_8016FCCC(u8 *a0); -extern s32 func_80172658(s32 *a0); -extern void func_8016FD08(u8 *s0); -extern void func_8016FD7C(s32 *a0); -extern void (*D_801906B4[])(void); -extern void func_8016FDB4(void *a0); -extern void func_8016FE2C(u8 *a0); -extern void func_8016FDF0(u8 *a0); -extern void func_8016FE2C(u8 * a0); -extern s32 func_8016FE78(s32 *a0); -extern s32 func_80172664(s32 *a0); -extern void func_8016FED0(s32 *a0); -extern void (*D_801906C4[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_801906D4[])(void); -extern void func_8016FFDC(void *a0); -extern void func_80170068(u8 *a0); -extern void func_80170018(u8 *a0); -extern void func_801700B8(u8 *a0); -extern void func_80170100(u8 *a0); -extern void (*D_801906DC[])(void); -extern void func_80170150(void *a0); -extern void func_801701C8(u8 *a0); -extern void func_8017018C(u8 *a0); -extern void func_801701C8(u8 * a0); -extern void (*D_801906E4[])(void); -extern void func_80170240(void *a0); -extern void func_801702B8(s32 a0); -extern void func_8017027C(u8 *a0); -extern s16 func_80171AB0(s32 a0, void *a1); -extern void (*D_801906EC[])(void); -extern void func_801702FC(void *a0); -extern void func_80170374(u8 *a0); -extern void func_80170338(u8 *a0); -extern s32 func_8014C168(s32 *a0, s32 a1); -extern void func_80170374(u8 * a0); -extern void (*D_801906F4[])(void); -extern void func_801703E0(void *a0); -extern void func_8017044C(u8 *a0); -extern void func_8017041C(u8 *a0); -extern void func_8017044C(u8 * a0); -extern void (*D_801906FC[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_80190704[])(void); -extern void func_80170548(void *a0); -extern void func_801705C0(u8 *a0); -extern void func_80170584(u8 *a0); -extern void func_801705C0(u8 * a0); -extern void (*D_8019070C[])(void); -extern void func_801705F8(void *a0); -extern void func_80170670(void *a0); -extern void func_80170634(u8 *a0); -extern void func_8012A568(void (*a0)(void)); -extern void (*D_80190714[])(void); -extern void func_801706AC(void *a0); -extern void func_80170718(void *a0); -extern void func_801706E8(u8 *a0); -extern void func_80129FF4(void); -extern void (*D_8019071C[])(void); -extern void func_80170748(void *a0); -extern void func_801707D4(void *a0); -extern void func_80170784(u8 *a0); -extern s32 func_80174ED4(void); -extern void (*D_80190724[])(void); -extern void func_80170810(void *a0); -extern void func_801708B0(void *a0); -extern u8 D_800D5DA8; -extern void func_8017084C(s32 a0); -extern u8 D_800D5A34[]; -extern void func_80170AD8(void *a0); -extern void func_80171904(s32 a0); -extern void func_80170B48(int a0); -extern void func_80170928(void); -extern u8 D_800D59EC[]; -extern void func_80170970(void); -extern u8 D_800D599C[]; -extern void func_801709B8(void); -extern u8 D_800D5934[]; -extern void func_80170A00(void); -extern void func_80170A48(void); -extern u8 D_800D5DC0[]; -extern void func_80170A90(void); -extern void (*D_8019072C[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_80190734[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8019073C[])(void); -extern void func_80170C74(void *a0); -extern s32 func_8017197C(u8 *a0); -extern void func_80170CF0(void *a0); -extern void func_80170CB0(u8 *a0); -extern void (*D_80190744[])(void); -extern void func_80170D68(void *a0); -extern void func_80170DE0(u8 *a0); -extern void func_80170DA4(u8 *a0); -extern s32 D_8011F73C; -extern s32 D_8011F740; -extern void func_801718AC(void *a0); -extern void func_80170DE0(u8 * _arg0); -extern void (*D_8019074C[])(void); -extern void func_80170E34(void *a0); -extern void func_80170EAC(u8 *a0); -extern void func_80170E70(u8 *a0); -extern int func_800D0F8C(int a0); -extern void func_80170EAC(u8 * _arg0); -extern void (*D_80190754[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8019075C[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_80190764[])(void); -extern void func_80171064(void *a0); -extern void func_801710DC(u8 *a0); -extern void func_801710A0(u8 *a0); -extern u16 D_8011F73A; -extern void func_801710DC(u8 * arg0); -extern void (*D_8019076C[])(void); -extern void func_80171120(void *a0); -extern void func_8017118C(u8 *a0); -extern void func_8017115C(u8 *a0); -extern void func_80142454(s32 a0); -extern void func_8017118C(u8 * a0); -extern void (*D_80190774[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8019077C[])(void); -extern void func_80171260(void *a0); -extern s32 func_80012F74(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80171384(void *a0); -extern void (*D_80190784[])(void); -extern void func_801714E4(void *a0); -extern struct B16 D_800A5E88; -extern struct B16 D_800A5E98; -extern struct B16 D_800A5EA8; -extern void func_8017162C(void *a0); -extern void func_80171520(s32 a0); -extern s32 func_801716AC(s32 a0, void *a1, s32 *a2); -extern s32 func_80012FC8(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_800A5E94; -extern u8 D_800A5E95; -extern u8 D_800A5E96; -extern s32 func_801716AC(s32 a0, void * a1, s32 * a2); -extern int func_800D0FE0(int a0); -extern void func_801717A0(void *a0); -extern void func_8013E588(void *a0); -extern void func_801717F4(void *a0); -extern void func_80171824(void *a0); -extern void func_80171854(void *a0); -extern void func_80171884(void); -extern void func_80171A1C(u8 *a0); -extern void func_80171928(void * a0); -extern void func_8017196C(s32 *a0, s8 a1); -extern void func_80171A04(s32 *a0); -extern void func_80171A10(s32 *a0); -extern void func_80171A34(s32 *a0, s8 a1); -extern s32 func_80171A44(u8 *a0); -extern s32 func_80171A58(u8 *a0); -extern s32 func_80171A6C(u8 *a0); -extern void func_80171A80(s32 *a0, s32 a1); -extern s32 func_80171A88(s32 a0); -extern s16 func_80171AB0(s32 param_1, void * _arg1); -extern void func_80171B10(void *a0); -extern void func_80171EC8(s32 a0); -extern s32 func_80171C64(s32 param_1, s32 param_2); -extern s32 func_80171D78(s32 a0, s32 a1); -extern int func_8017250C(short *a0, short *a1); -extern s32 func_80171CC4(void * a0, void * a1); -extern s32 func_80171FFC(short *a0, short *a1, s32 a2); -extern s32 func_80171D1C(void * a0, void * a1, s32 a2); -extern s32 func_8017248C(s32 a0, s32 a1); -extern s32 func_80171E08(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_80047948(s32 a0); -extern s32 func_8004787C(s32 a0); -extern void func_80172170(s32 a0, s32 a1); -extern s32 func_8017209C(void *arg0, void *arg1, s32 arg2, s32 arg3); -extern void func_801722CC(s32 *a0); -extern void func_80172304(s32 *a0); -extern void func_80172310(u8 *a0); -extern void func_801723C4(s32 param_1, s32 param_2); -extern void func_80161C24(s32, s32); -extern void func_80172414(s32 a0); -extern s32 func_801724EC(s32 a0); -extern s32 func_8017248C(s32 arg0, s32 arg1); -extern s32 func_80013450(s32); -extern s32 func_80172560(u8 *a0, u8 *a1); -extern s32 func_8017261C(u8 *a0); -extern s32 func_80172644(u8 *a0); -extern s32 func_80172670(s32 *a0); -extern s32 func_80172688(s32 *a0); -extern s32 func_80172694(s32 *a0); -extern s32 func_801726A0(s32 *a0); -extern s32 func_801726AC(s32 *a0); -extern s32 func_801726B8(s32 *a0); -extern s32 func_801726C4(s32 *a0); -extern s32 func_80172760(s32 a0); -extern s32 func_80174650(s32); -extern void (*D_80127088)(void); -extern s32 D_801270BC; -extern s16 D_80126B0C; -extern void func_801726D0(void * _arg0); -extern void func_80172710(void); -extern void func_80174684(void *); -extern void func_80172738(void); -extern s32 func_801727D0(void *a0); -extern void func_80172780(void *a0); -extern void func_80172844(u8 *a0); -extern void func_8017280C(u8 *a0); -extern void func_8017288C(void); -extern s32 func_801728E4(void *a0); -extern void func_80172894(void *a0); -extern void func_80172958(u8 *a0); -extern void func_80172920(u8 *a0); -extern s16 D_80126B36; -extern void func_80172958(u8 * a0); -extern void func_801729A8(void); -extern s32 func_801729F0(void *a0); -extern s16 D_80126B34; -extern s16 D_80126B32; -extern void func_801729B0(s32 a0); -extern void func_80172A8C(void *a0); -extern void func_80172A2C(int param_1); -extern void func_80172ACC(u8 *a0); -extern void func_80172B0C(void); -extern s32 func_80172B44(void *a0); -extern void func_80172B14(s16 a0); -extern s32 D_801150F8; -extern void func_80172BC8(void *a0); -extern void func_80172B80(u8 *a0); -extern void func_80172C48(void); -extern void (*D_801907C8[])(void); -extern void func_80172CA0(void *a0); -extern void func_80172D14(u8 *a0); -extern void func_80172CDC(u8 *a0); -extern void func_80172D14(u8 * a0); -extern void func_80172D60(void); -extern s32 func_80172DAC(void *a0); -extern void func_80172D68(s32 a0); -extern void func_80172E20(u8 *a0); -extern void func_80172DE8(u8 *a0); -extern void func_80172E20(u8 * a0); -extern void func_80172E8C(void); -extern void func_8017303C(void *); -extern void func_80172E94(void); -extern void func_80172ED4(void); -extern void func_80172EFC(void); -extern void func_80172F24(void); -extern u8 D_800D47F4[]; -extern void func_80172F4C(void); -extern void func_80172F9C(void); -extern u8 D_800D5C6C[]; -extern void func_80172FEC(void); -extern s32 func_80173078(void *a0); -extern void func_8017303C(void * a0); -extern void func_801730FC(struct S801730FC *a0); -extern void func_801730B4(s32 a0); -extern void func_8017316C(void); -extern s32 func_8017319C(void *a0); -extern void func_80173174(void); -extern u8 D_800D5AA0[]; -extern void func_80173220(void *a0); -extern void func_801731D8(s32 *a0); -extern M2C_UNK D_8019078C; -extern void func_80173220(void * arg0); -extern void func_80173294(void); -extern void func_801732C4(); -extern void func_8017329C(void); -extern void func_801732C4(s32 *a0); -extern void func_8017331C(); -extern void func_801732F4(void); -extern void func_8017331C(s32 *a0); -extern void func_80173374(); -extern void func_8017334C(void); -extern void func_80173374(s32 *a0); -extern void func_801733A4(void); -extern void func_801733CC(s32 a0); -extern void func_801734BC(s32 a0, s32 a1); -extern s16 D_80126B3E; -extern void func_80173460(s32 a0, s32 a1); -/* ==== end §8b carried decl layer ==== */ - - -void func_801734BC(s32 arg0, s32 _unused1) { - extern void func_80173544(void); - extern s16 D_80126B40; - - - s16 temp; - switch (((u32)arg0)) { - case 0: temp = -0x4; break; - case 1: temp = -0x8; break; - case 2: temp = -0x12; break; - case 3: temp = -0x18; break; - case 4: temp = -0x1C; break; - default: goto after; - } - D_80126B32 = temp; -after: - D_80126B3E = 0; - D_80126B40 = 0; - func_80174684(&func_80173544); -} - - -extern void (*D_801907F8[])(void); - -void func_80173544(void *a0) { - D_801907F8[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_80173580() /* dedup: shared engine-core @0x80173580 (src/shared) */ - -DEFINE_func_801735B8() /* dedup: shared engine-core @0x801735B8 (src/shared) */ - -DEFINE_func_801735EC() /* dedup: shared engine-core @0x801735EC (src/shared) */ - -DEFINE_func_80173648() /* dedup: shared engine-core @0x80173648 (src/shared) */ - -DEFINE_func_801736A8() /* dedup: shared engine-core @0x801736A8 (src/shared) */ - -DEFINE_func_801736B0() /* dedup: shared engine-core @0x801736B0 (src/shared) */ - - - -s32 func_801736FC(void *a0) { - - extern void (*D_8019080C[])(void); - D_8019080C[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_80173738() /* dedup: shared engine-core @0x80173738 (src/shared) */ - -DEFINE_func_80173770() /* dedup: shared engine-core @0x80173770 (src/shared) */ - -DEFINE_func_801737B0() /* dedup: shared engine-core @0x801737B0 (src/shared) */ - -DEFINE_func_801737B8() /* dedup: shared engine-core @0x801737B8 (src/shared) */ - - - -s32 func_801737E8(void *a0) { - - extern void (*D_80190818[])(void); - D_80190818[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_80173824() /* dedup: shared engine-core @0x80173824 (src/shared) */ - -DEFINE_func_8017385C() /* dedup: shared engine-core @0x8017385C (src/shared) */ - -DEFINE_func_801738D4() /* dedup: shared engine-core @0x801738D4 (src/shared) */ - -DEFINE_func_801738DC() /* dedup: shared engine-core @0x801738DC (src/shared) */ - - - -s32 func_8017390C(void *a0) { - - extern void (*D_80190824[])(void); - D_80190824[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_80173948() /* dedup: shared engine-core @0x80173948 (src/shared) */ - -DEFINE_func_80173980() /* dedup: shared engine-core @0x80173980 (src/shared) */ - -DEFINE_func_801739D8() /* dedup: shared engine-core @0x801739D8 (src/shared) */ - -DEFINE_func_80173A20() /* dedup: shared engine-core @0x80173A20 (src/shared) */ - -DEFINE_func_80173A28() /* dedup: shared engine-core @0x80173A28 (src/shared) */ - - -DEFINE_func_80173A60() /* dedup: shared engine-core @0x80173A60 (src/shared) */ - - - -extern void (*D_80190834[])(void); - -void func_80173B4C(void *a0) { - D_80190834[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_80173B88() /* dedup: shared engine-core @0x80173B88 (src/shared) */ - -DEFINE_func_80173BC0() /* dedup: shared engine-core @0x80173BC0 (src/shared) */ - -DEFINE_func_80173C64() /* dedup: shared engine-core @0x80173C64 (src/shared) */ - -DEFINE_func_80173CB4() /* dedup: shared engine-core @0x80173CB4 (src/shared) */ - -DEFINE_func_80173E1C() /* dedup: shared engine-core @0x80173E1C (src/shared) */ - -DEFINE_func_80173EF8() /* dedup: shared engine-core @0x80173EF8 (src/shared) */ - -DEFINE_func_80174158() /* dedup: shared engine-core @0x80174158 (src/shared) */ - -DEFINE_func_80174188() /* dedup: shared engine-core @0x80174188 (src/shared) */ - -DEFINE_func_801741A8() /* dedup: shared engine-core @0x801741A8 (src/shared) */ - -DEFINE_func_801741EC() /* dedup: shared engine-core @0x801741EC (src/shared) */ - -DEFINE_func_80174274() /* dedup: shared engine-core @0x80174274 (src/shared) */ - -DEFINE_func_8017427C() /* dedup: shared engine-core @0x8017427C (src/shared) */ - - - -s32 func_801742A4(void *a0) { - - extern void (*D_80190854[])(void); - D_80190854[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_801742E0() /* dedup: shared engine-core @0x801742E0 (src/shared) */ - -DEFINE_func_80174318() /* dedup: shared engine-core @0x80174318 (src/shared) */ - -DEFINE_func_80174354() /* dedup: shared engine-core @0x80174354 (src/shared) */ - -DEFINE_func_8017435C() /* dedup: shared engine-core @0x8017435C (src/shared) */ - - - -s32 func_80174384(void *a0) { - - extern void (*D_80190860[])(void); - D_80190860[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_801743C0() /* dedup: shared engine-core @0x801743C0 (src/shared) */ - -DEFINE_func_801743F0() /* dedup: shared engine-core @0x801743F0 (src/shared) */ - -DEFINE_func_80174430() /* dedup: shared engine-core @0x80174430 (src/shared) */ - -DEFINE_func_80174438() /* dedup: shared engine-core @0x80174438 (src/shared) */ - - - -s32 func_80174474(void *a0) { - - extern void (*D_8019086C[])(void); - D_8019086C[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_801744B0() /* dedup: shared engine-core @0x801744B0 (src/shared) */ - -DEFINE_func_801744E0() /* dedup: shared engine-core @0x801744E0 (src/shared) */ - -DEFINE_func_80174524() /* dedup: shared engine-core @0x80174524 (src/shared) */ - -DEFINE_func_8017452C() /* dedup: shared engine-core @0x8017452C (src/shared) */ - -DEFINE_func_80174554() /* dedup: shared engine-core @0x80174554 (src/shared) */ - -DEFINE_func_80174584() /* dedup: shared engine-core @0x80174584 (src/shared) */ - -DEFINE_func_801745AC() /* dedup: shared engine-core @0x801745AC (src/shared) */ - -DEFINE_func_801745DC() /* dedup: shared engine-core @0x801745DC (src/shared) */ - -DEFINE_func_80174604() /* dedup: shared engine-core @0x80174604 (src/shared) */ - -DEFINE_func_80174630() /* dedup: shared engine-core @0x80174630 (src/shared) */ - - -DEFINE_func_80174650() /* dedup: shared engine-core @0x80174650 (src/shared) */ - - -DEFINE_func_80174674() /* dedup: shared engine-core @0x80174674 (src/shared) */ - -DEFINE_func_80174684() /* dedup: shared engine-core @0x80174684 (src/shared) */ - -DEFINE_func_801746A4() /* dedup: shared engine-core @0x801746A4 (src/shared) */ - -DEFINE_func_801746DC() /* dedup: shared engine-core @0x801746DC (src/shared) */ - -DEFINE_func_80174714() /* dedup: shared engine-core @0x80174714 (src/shared) */ - -DEFINE_func_80174754() /* dedup: shared engine-core @0x80174754 (src/shared) */ - -DEFINE_func_80174764() /* dedup: shared engine-core @0x80174764 (src/shared) */ - -DEFINE_func_80174774() /* dedup: shared engine-core @0x80174774 (src/shared) */ - -DEFINE_func_80174784() /* dedup: shared engine-core @0x80174784 (src/shared) */ - -DEFINE_func_801747AC() /* dedup: shared engine-core @0x801747AC (src/shared) */ - - - -s32 func_801747CC(void *a0) { - - extern void (*D_80190878[])(void); - D_80190878[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_80174808() /* dedup: shared engine-core @0x80174808 (src/shared) */ - -DEFINE_func_8017481C() /* dedup: shared engine-core @0x8017481C (src/shared) */ - -DEFINE_func_80174824() /* dedup: shared engine-core @0x80174824 (src/shared) */ - -DEFINE_func_8017484C() /* dedup: shared engine-core @0x8017484C (src/shared) */ - - - -s32 func_80174888(void *a0) { - - extern void (*D_80190880[])(void); - D_80190880[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_801748C4() /* dedup: shared engine-core @0x801748C4 (src/shared) */ - -DEFINE_func_801748E4() /* dedup: shared engine-core @0x801748E4 (src/shared) */ - -DEFINE_func_801748EC() /* dedup: shared engine-core @0x801748EC (src/shared) */ - - - -s32 func_8017496C(void *a0) { - - extern void (*D_80190888[])(void); - D_80190888[*(u8 *)((s32)a0 + 0x4)](); -} - - -DEFINE_func_801749A8() /* dedup: shared engine-core @0x801749A8 (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (105 ins). Keys: (1) single-buffer struct for the func_80049CAC/func_8012F14C -// out-params (local_2c..local_14 are fields of ONE stack buffer, not separate scalars — else gcc -// DCEs the unread ones + overlaps the buffer -> wrong 0x40 frame); (2) $s2/$s1 pins for iVar5/iVar4 -// (call-crossing saved regs); (3) load D_80126B66 as RAW u16 (lhu) with (s16) sext at each USE — -// this defeats gcc's lhu+sext->lh combine fold so the target's lhu+sll+sra reappears; (4) inline -// `iVar5 = (s16)D_80126B5E` into the f48 expression so the f28 operand load schedules first. - -DEFINE_func_801749C8() /* dedup: shared engine-core @0x801749C8 (src/shared) */ - - -DEFINE_func_80174B6C() /* dedup: shared engine-core @0x80174B6C (src/shared) */ - -DEFINE_func_80174BBC() /* dedup: shared engine-core @0x80174BBC (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (27 ins) via func-ptr array fold extern void(*D_8019088C[])() - -extern void (*D_8019088C[])(); - -void func_80174BF4(void * arg0) -{ - M2C_FIELD(arg0, s32 *, 0xC) = 0x12C; - M2C_FIELD(arg0, s32 *, 0x14) = 0x12C; - M2C_FIELD(arg0, s16 *, 0x20) = 0x155; - M2C_FIELD(arg0, s16 *, 0x22) = 0x800; - M2C_FIELD(arg0, s16 *, 0x24) = 0; - M2C_FIELD(arg0, s16 *, 0x2E) = 0; - M2C_FIELD(arg0, s16 *, 0x30) = -0x28; - M2C_FIELD(arg0, s16 *, 0x32) = 0; - M2C_FIELD(arg0, s32 *, 0x54) = 0; - D_8019088C[M2C_FIELD(arg0, u8 *, 4)](); -} - - -DEFINE_func_80174C60() /* dedup: shared engine-core @0x80174C60 (src/shared) */ - -DEFINE_func_80174C80() /* dedup: shared engine-core @0x80174C80 (src/shared) */ - -DEFINE_func_80174CB0() /* dedup: shared engine-core @0x80174cb0 (src/shared) */ - - -DEFINE_func_80174E9C() /* dedup: shared engine-core @0x80174E9C (src/shared) */ - -DEFINE_func_80174ED4() /* dedup: shared engine-core @0x80174ED4 (src/shared) */ - -DEFINE_func_80174EF0() /* dedup: shared engine-core @0x80174EF0 (src/shared) */ - - - -s32 func_80174F28(void *a0) { - - extern void (*D_80190894[])(void); - D_80190894[*(u8 *)((s32)a0 + 0x4)](); -} - - -DEFINE_func_80174F64() /* dedup: shared engine-core @0x80174F64 (src/shared) */ - -DEFINE_func_80174FBC() /* dedup: shared engine-core @0x80174FBC (src/shared) */ - -DEFINE_func_80175014() /* dedup: shared engine-core @0x80175014 (src/shared) */ - -DEFINE_func_8017509C() /* dedup: shared engine-core @0x8017509C (src/shared) */ - -DEFINE_func_80175114() /* dedup: shared engine-core @0x80175114 (src/shared) */ - -DEFINE_func_80175150() /* dedup: shared engine-core @0x80175150 (src/shared) */ - - -extern void (*D_8019089C[])(void*); -extern s32 func_80175268(s32); - -void func_80175184(s32* arg0) { - u16 v1 = *(u16*)((u8*)arg0 + 2); - if (v1 < 2) { - D_8019089C[v1](arg0); - } else { - func_80175268((s32)arg0); - } -} - - -DEFINE_func_801751D8() /* dedup: shared engine-core @0x801751D8 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (fn-ptr table indexed by D_80078EC0-1; param preserved in $s0 across 1st call) - -extern u8 D_80078EC0; -extern void (*D_801908A4[])(s32); -extern void func_80146CA0(void *a0); - -s32 func_80175218(void * param_1) -{ - s32 i = D_80078EC0 - 1; - - D_801908A4[i](param_1); - ((void (*)(s32))func_80146CA0)(param_1); -} - - - -extern u8 D_80078EC0; - -s32 func_80175268(s32 param_1) -{ - - extern VoidFn D_801908BC[]; - *(u32 *)(param_1 + 0x44) |= 2; - (*(VoidFn *)((s32)D_801908BC + ((D_80078EC0 - 1) << 2)))(); -} - - -DEFINE_func_801752BC() /* dedup: shared engine-core @0x801752BC (src/shared) */ - -DEFINE_func_80175308() /* dedup: shared engine-core @0x80175308 (src/shared) */ - -DEFINE_func_80175414() /* dedup: shared engine-core @0x80175414 (src/shared) */ - -DEFINE_func_80175454() /* dedup: shared engine-core @0x80175454 (src/shared) */ - -DEFINE_func_80175494() /* dedup: shared engine-core @0x80175494 (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (37 ins, relocation-masked proxy) - - - -extern s32 func_80029504(void); - -void func_801754A8(void) { - - extern u8 D_8011F7A8; - extern unsigned char D_800B9A13; - extern s32 D_80126B9C; - extern DispatchFn D_80190A00[]; - u8 *p = &D_8011F7A8; - s32 r = func_80029504(); - s32 flag = 0; - - if (((D_800B9A13 == 0) && ((D_80126B9C & 0x80) == 0)) || - (0x4AF < (u32)(r - 10))) { - flag = 1; - } - p[9] = flag; - D_80190A00[p[0]]((void *)p); -} - - - -extern void (*D_80190A0C[])(); -extern s32 func_801758FC(void); -extern s32 func_80175820(void); -extern s32 func_801759D8(void); - -void func_8017553C(s32 *param) { - D_80190A0C[*(u8 *)((s32)param + 1)](); - ((void (*)(void))func_801758FC)(); - ((void (*)(void))func_80175820)(); - ((void (*)(void))func_801759D8)(); -} - - -DEFINE_func_80175590() /* dedup: shared engine-core @0x80175590 (src/shared) */ - -DEFINE_func_80175624() /* dedup: shared engine-core @0x80175624 (src/shared) */ - -DEFINE_func_80175668() /* dedup: shared engine-core @0x80175668 (src/shared) */ - - -extern void (*D_80190A18[])(); -extern s32 func_801758FC(void); -extern s32 func_80175820(void); -extern s32 func_801759D8(void); - -void func_80175690(s32 *param) { - D_80190A18[*(u8 *)((s32)param + 1)](); - ((void (*)(void))func_801758FC)(); - ((void (*)(void))func_80175820)(); - ((void (*)(void))func_801759D8)(); -} - - -DEFINE_func_801756E4() /* dedup: shared engine-core @0x801756E4 (src/shared) */ - -DEFINE_func_80175798() /* dedup: shared engine-core @0x80175798 (src/shared) */ - -DEFINE_func_801757A0() /* dedup: shared engine-core @0x801757A0 (src/shared) */ - -DEFINE_func_801757E0() /* dedup: shared engine-core @0x801757E0 (src/shared) */ - - -/* func_80175820 — twin of the byte-matched func_801759D8 / func_801758FC in this same TU - * (ov_SC01_077_jr_801734BC). Same three-part body, different slot: - * part 1 tag word = ptr[2] (0x8 vs 0x4 / 0xC) - * part 2 head ptr = D_8011F7A8+0x18 (== D_8011F7C0) - * part 3 tail ptr = D_8011F7A8+0x20 (== D_8011F7C8) - * The two __asm__ memory fences are what keep the three parts from CSE-ing their - * base addresses together (parts 1/2 stay absolute lui/%lo + idx*4; part 3 keeps the - * shared `la $v1,D_8011F7A8` + 0x18/0x20 displacements). - */ - - /* size 0x14 */ - /* size 0x0C */ - -DEFINE_func_80175820() /* dedup: shared engine-core @0x80175820 (src/shared) */ - - -DEFINE_func_801758FC() /* dedup: shared engine-core @0x801758FC (src/shared) */ - - - - /* size 0x14 */ - /* size 0x0C */ - -DEFINE_func_801759D8() /* dedup: shared engine-core @0x801759D8 (src/shared) */ - - - -void func_80175AB8(param_1) - s16 param_1; -{ - /* size 0x0C */ - extern S_AF634 D_800AF634[]; - extern S_AF634 D_800AF638[]; - - extern u8 D_8011F7F0; - extern u16 D_8011F7B4; - extern u16 D_8011F7B6; - extern s16 D_8011F7BC; - extern s16 D_8011F7BE; - extern s32 D_8011F804; - extern u16 D_8011F80A; - extern u16 D_8011F824; - extern u8 D_8011F832; - extern u8 D_8011F83A; - extern u8 *D_80190934[]; - - extern u32 *func_80176D94(void *param_1, u32 param_2, s16 param_3_); - extern u32 *func_801770E0(void *param_1, u32 param_2, s16 param_3_); - extern u32 func_801783D0(s32 a0, s32 a1); - extern u32 *func_80177EA4(u32 *param_1, s32 param_2, u32 param_3, s32 param_4); - extern u32 *func_80177B5C(u32 *a0, s32 a1, s32 a2, s32 a3, s32 a4); - extern void func_80177940(u32 *p, u32 a_, u32 b_, u32 c_); - extern u32 *func_80178298(u32 *param_1, u8 *param_2, short param_3, short param_4); - extern s32 func_80024054(u8*, u8*); - extern s32 func_8005A600(s32, s32, s32, s32, s32); - - u8 local[24]; - u8 *base; - u8 *arr; - u32 *slot; - u32 *p; - register u32 *a0v __asm__("$4"); - u32 uv; - s32 k; - s16 q; - s32 r1; - s32 a2v; - register s32 sum __asm__("$5"); - s32 r2; - s32 idx; - s16 sv; - - p = (u32 *)(D_800AF638[param_1].g0 + D_800AF634[param_1].g0 * 4); - __asm__("" : "=r"(base) : "0"(&D_8011F7F0)); /* L1 */ - arr = base - 0x48; - slot = (u32 *)(param_1 * 4 + (s32)arr); - *(volatile u32 *)&slot[6] = (u32)p; /* L2 */ - p = func_80176D94(p, (s16)(D_8011F7B4 - 0x71), (s16)(D_8011F7B6 + 0x51)); - p = func_801770E0(p, (s16)(D_8011F7B4 - 0x71), (s16)(D_8011F7B6 + 0x65)); - p = func_80177EA4(p, func_801783D0(D_8011F804, 0), - (s16)((*(u16 *)&D_8011F7BC) + 0x39), (s16)((*(u16 *)&D_8011F7BE) + 0x51)); - uv = D_8011F824; - k = 0x3E7; - if (uv < 1000) { - k = uv; - } - sv = (s16)func_801783D0(k, 4); - p = func_80177B5C(p, sv, D_8011F832, - (s16)(*(u16 *)(base - 0x34) + 0x39), - (s16)(*(u16 *)(base - 0x32) + 0x65)); - q = (s16)D_8011F80A / 15; - a2v = (q & 3) * 15; - r1 = func_801783D0((s32)(q << 16) >> 18, 8); - r2 = func_801783D0(a2v, 0); - a0v = p; /* L4 */ - sum = r1 + r2; /* L3 */ - p = ((u32 * (*)(u32 *, s32, s32, s32))func_80177940)( - a0v, (s16)sum, - (s16)(*(u16 *)(base - 0x34) + 0x76), - (s16)(*(u16 *)(base - 0x32) + 0x65)); - idx = D_8011F83A & 0x7F; - D_8011F83A = idx; - __asm__ __volatile__("" ::: "memory"); - ((void (*)(s32, u8 *))func_80024054)(((s32 *)D_80190934)[idx], local); - p = func_80178298(p, local, - (s16)(*(u16 *)(base - 0x34) + 0x39), - (s16)(*(u16 *)(base - 0x32) + 0x5B)); - func_8005A600((s32)p, 0, 0, 0x15, 0); - *p = (((u32)p - 0x14) & 0xFFFFFF) | 0x2000000; - slot[8] = (u32)p; - p += 5; - D_800AF634[param_1].g0 += ((s32)p - (s32)slot[6]) >> 2; -} - - - - /* size 0x0C */ -extern u32 *func_8017742C(u32 *a0, s32 a1, s32 a2); -extern s32 func_8005A600(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_800183E0(s32 a0); - - /* 0x14 */ - -void func_80175DA8(param_1) - u16 param_1; -{ - - extern u8 D_8011F7F0; - extern u8 D_800B9A13; - extern S_AF634 D_800AF634[]; - extern S_AF634 D_800AF638[]; - extern u16 D_801908D4[]; - extern u16 D_80190924[]; - extern u16 D_80190930; - extern u8 D_801909B0[]; - extern u8 D_801909C4[]; - extern s32 D_801909DC[]; - extern u8 D_800D43D4; - extern u8 D_800D4414; - extern u8 D_800D45D4; - - u8 *base = &D_8011F7F0; - u8 *s = base - 0x48; - u16 *src = D_801908D4; - Sp_80175DA8 *p; - s16 i; - s32 arg; - s32 t; - s32 fl; - u16 v; - - p = (Sp_80175DA8 *)(D_800AF638[(s16)param_1].g0 + D_800AF634[(s16)param_1].g0 * 4); - *(Sp_80175DA8 **)(s + (s16)param_1 * 4 + 0x28) = p; - i = 0; - do { - p->tag = ((u32)(p - 1) & 0xFFFFFF) | 0x4000000; - p->code = *(u32 *)src; - src += 2; - if (i < 2) { - p->x = *src++ + *(u16 *)(s + 0xC); - p->y = *src++ + *(u16 *)(s + 0xE); - } else if (i == 2) { - p->x = *src++ + *(u16 *)(s + 0x10); - p->y = *src++ + *(u16 *)(s + 0x12); - } else { - p->x = *src++ + *(u16 *)(s + 0x14); - p->y = *src++ + *(u16 *)(s + 0x16); - } - p->uv = *(u32 *)src; - src += 2; - p->wh = *(u32 *)src; - src += 2; - p++; - i++; - } while (i < 5); - - *(u8 *)(s + 7) = D_800B9A13; - p = (Sp_80175DA8 *)func_8017742C((u32 *)p, - (s16)(*(u16 *)(s + 0x10) - 0x98), - (s16)(*(u16 *)(s + 0x12) + 9)); - func_8005A600((s32)p, 0, 0, 0x16, 0); - p->tag = ((u32)(p - 1) & 0xFFFFFF) | 0x2000000; - *(Sp_80175DA8 **)(s + (s16)param_1 * 4 + 0x30) = p; - p++; - { - s32 acc = D_800AF634[(s16)param_1].g0; - D_800AF634[(s16)param_1].g0 = - acc + (((s32)p - *(s32 *)(s + (s16)param_1 * 4 + 0x28)) >> 2); - } - - p = *(Sp_80175DA8 **)(s + (s16)param_1 * 4 + 0x28); - if (base[0x48] != 0) { - *((u8 *)p + 0xD) = 0; - } else { - *((u8 *)p + 0xD) = 0xA0; - } - - { - u8 *q1 = *(u8 **)(s + (s16)param_1 * 4 + 0x28); - *(u16 *)(q1 + 0x22) = 0x6CD6; - if (base[0x48] & 0x80) { - *(u16 *)(q1 + 0x20) = D_80190930; - arg = (s32)&D_800D45D4; - } else { - u16 *tt = D_80190924; - s32 k = base[0x48]; - if (k != 0) { - k--; - tt += k; - } - *(u16 *)(q1 + 0x20) = *tt; - arg = D_801909DC[base[0x48]]; - } - } - func_800183E0(arg); - - { - u8 *q2 = *(u8 **)(s + (s16)param_1 * 4 + 0x28); - t = (s32)(*(u16 *)(base + 0x2E) << 16); - if (t != 0) { - q2[0x49] = D_801909C4[t >> 20]; - } else { - q2[0x49] = 0xA0; - } - } - - { - u8 *q3 = *(u8 **)(s + (s16)param_1 * 4 + 0x28); - v = *(u16 *)(base + 0x40); - if (v < 100) { - q3[0x5D] = D_801909B0[v / 5]; - } else { - q3[0x5D] = 0; - } - } - - fl = *(s16 *)(base + 0x1E) & 0x8000; - /* §5a zero-byte sched fence: without it sched1 hoists the `la D_800D43D4` - into the lh's load-delay slot, dropping the target's nop (-1 ins). */ - __asm__(""); - arg = (s32)&D_800D43D4; - if (fl != 0) { - arg = (s32)&D_800D4414; - } - func_800183E0(arg); -} - - - -/* func_80176144 — RECONCILED variant of .run/uc/func_80176144.c - * - * GATE BLOCKER (whole-binary build, NOT match_one): - * src/ov_SC01_077/ov_SC01_077_jr_801734BC.c:3476: conflicting types for `D_800AF634' - * || previous declaration at :3296 - * - * ROOT CAUSE — a HOISTED file-scope typedef, not a bad signature: - * That TU hoists, at FILE scope, for func_80175DA8: - * :3295 typedef struct { s32 g0; s32 pad[2]; } S_AF634_80176144; - * :3296 extern S_AF634_80176144 D_800AF634[]; - * :3297 extern S_AF634_80176144 D_800AF638[]; - * The stored draft re-declares the SAME struct shape as a BLOCK-scope typedef - * (rule D — it must travel to the 137 sibling overlays, which have no such - * preamble). A block-scope `typedef struct {...} S_AF634_80176144;` is a DISTINCT type - * from the file-scope one (C has no structural typing), so the block-scope - * `extern S_AF634_80176144 D_800AF634[];` re-declares the symbol incompatibly with the - * in-scope file-scope decl -> hard error. - * Note the earlier block-scope copies in the same TU (:3080 func_80175820, - * :3123 func_801759D8) do NOT error: they precede :3296, so no file-scope decl - * of D_800AF634 is in scope there. Anything AFTER :3296 collides. Our - * definition lands at :3476. That is why only this one fired. - * - * FIX — §37/§124 ASM-LABEL ALIAS applied to the DATA symbols (cookbook §2516: - * "asm-label alias for sibling-decl signedness/proto conflicts ... beats - * reconcile's *(u16*)&D_x cast whose address-of PERTURBS regalloc"): - * the two objects are reached through PRIVATE C identifiers aAF634 / aAF638 - * carrying __asm__("D_800AF634") / __asm__("D_800AF638"). The emitted - * %hi/%lo relocations are against the same symbols, so codegen is unchanged, - * while the C names can never collide with ANY sibling TU's declaration — - * whether hoisted, block-scope, or absent. No header edit; no src/ edit. - * Strictly better than deleting the local decls (which would bind this - * exemplar to the one TU that happens to hoist them). - * - * The s32 parameter + explicit (s16) narrowing is retained from the stored draft - * (canonical decl in engine_core.h:18985/:4587 is `void func_80176144(s32)`; - * the K&R short param would itself be a conflicting-types error). The (s16) - * narrowing IS the entry `sll $s0,$a0,16 / sra $s0,$s0,16` pair. - * - * Verified: python3 tools/match_one.py func_80176144 --c .run/uc2/func_80176144.c - * --asm-subdir ov_SC01_077/nonmatchings/ov_SC01_077_jr_801734BC -> MATCH (53 ins) - */ - -DEFINE_func_80176144() /* dedup: shared engine-core @0x80176144 (src/shared) */ - - - -// @class: regalloc-order -// @stuck: none — MATCH (327/327 ins, match_one MATCH; symcheck SYMS-OK 18 symbols) -// -// STRUCTURE (byte-derived, all verified against the .s): -// $s3=st=&D_8011F7A8 (int base), $s1=st+0x48 (cach), $s2=st+0xE0 (flag), $s5=&(*(u8 *)D_80078E78) (src), $s4=param. -// 6 HUD fields synced src->cach with a chg-flag at [flag]: pairs 0x3A/0x3C and 0x3E/0x40, then 0x14(s32), -// 0x34(u16)+0x42(u8), 0x1A(s16), 0x4A(u8). Each: `if (cach==src) { if(!chg) goto skip; chg=0; } else {adjust}` + draw. -// KEY FINDINGS (reusable): -// * Base MUST be `s32`, and the index expr written OFFSET-FIRST (`((p<<16)>>14) + st + 0x18`) — a `u8*` base -// yields `addu rd,st,off`; the target is `addu rd,off,st`. Matches Ghidra's `(...>>0xe) + -0x7fee0840`. -// * buf is 24 bytes, NOT Ghidra's 32: MIPS STARTING_FRAME_OFFSET = outgoing_args_size(20), so get_frame_size() -// counts the 4-byte args-alignment gap. var=MIPS_STACK_ALIGN(4+24)=32 -> 32+24+28 -> 0x58. buf[32] gives 0x60. -// * Block 1 uses RAW GLOBALS (D_8011F82C...) -> absolute lui/%lo; the ne-block uses `st+0x82`/`st+0x11C` -// ($s3-relative) — both byte-confirmed; cse blocks end at labels so each region picks its own form. -// * `ne` pinned to $v0 (+6 aligned). -// -// THE TWO LEVERS THAT CLOSED IT (SESSION-21, both byte-proven here; 18 -> 7 -> 3 -> 1 -> 0): -// (L1) BLOCK-5 STORE DUPLICATED INTO BOTH ARMS (`if (f&1) *(e+0x32A)=0x200; else *(e+0x32A)=...+0x65;`) -// instead of computing a phi `sv` and storing once after the merge. Reason: sched1 is a BACKWARD list -// scheduler and a store is a memory-unit user, so `potential_hazard` floats it to the FRONT of the -// backward ready list => it is EMITTED ~8 insns late, which stretches the `sv`/`e` live ranges over -// $v0/$v1/$a0/$a1 and pushes them out to $a2/$a3. Writing the store in both arms lets cross_jump -// merge the common tail, so the store lands first at the merge label, `sv`->$v0 and `e`->$a0, and the -// `lui $a0` anti-dependence then PINS the schedule. (18 mismatches -> 7.) -// (L2) THE COMMUTATIVE-ADD OPERAND SWAP. Target is `addu $a1,$s0,$v0` = plus(ret1, ret2) into a FRESH -// non-call-crossing quantity that inherits the $a1 arg copy-suggestion. Plain `sum = i6 + i4` lets -// local_alloc TIE the dest to the dying `i6` (which crosses call2) => the whole chain is forced -// call-saved => `addu $s0,$s0,$v0` (3 mismatched). Accumulating (`i4 = i6 + i4`) frees $a1 but -// expand_binop SWAPS a commutative op when target==op1, printing `addu $a1,$v0,$s0` (1 mismatched). -// Fix: route the second call's value through a copy temp first — -// sum = i4; i4 = i6 + sum; -// target(i4) != op1(sum) at EXPAND time so no swap; cse then folds sum back and deletes the copy. -// => `addu $a1,$s0,$v0`. MATCH. -extern u16 D_80078EB2; -extern s16 D_80078EB4; -/* cur base ($s5) */ - -extern void func_80176FF4(s32); -extern void func_80177340(s32); -extern u32 func_801783D0(s32, s32); -extern void func_80177F84(s32, s32); -extern void func_80177DA8(u8 * p, u32 v, s32 idx); -extern void func_80177AD4(int, unsigned int); -extern s32 func_80024054(u8 *, u8 *); -extern u32 *func_80178298(u32*, u8*, short, short); -extern s32 func_8005A600(s32, s32, s32, s32, s32); - -void func_80176218(s32 param_1) -{ - /* [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 u8 D_80078E78[]; - - extern u16 D_8011F82A; - extern u16 D_8011F82C; - extern u16 D_8011F8C4; - extern u8 D_8011F7A8; /* st base ($s3) */ - extern u8 D_801909B0[]; - extern u8 *D_80190934[]; - s32 st = (s32)&D_8011F7A8; /* $s3 */ - s32 cach = st + 0x48; /* $s1 */ - s32 flag = st + 0xE0; /* $s2 */ - s32 cur = (s32)&(*(u8 *)D_80078E78); /* $s5 */ - u8 buf[24]; - s32 ne; - s32 t; - u16 sA; - - /* ---- block 1: raw-global pair 0x3A/0x3C ---- */ - sA = D_80078EB2; - t = (sA != D_8011F82A); - if (D_8011F82C == (*(u16 *)&D_80078EB4)) { - ne = t; - if (ne == 0 && D_8011F8C4 == 0) goto L340; - } else { - s32 d = (s16)(D_8011F82C - (*(u16 *)&D_80078EB4)); - u16 nv; - if (d < 0) { - if (d < -10) nv = D_8011F82C + 2; - else nv = D_8011F82C + 1; - } else { - if (d > 10) nv = D_8011F82C - 2; - else nv = D_8011F82C - 1; - } - D_8011F82C = nv; - *(u16 *)(flag + 0x3C) = 1; - *(u16 *)(cach + 0x3A) = *(u16 *)(cur + 0x3A); - goto L328; - } - if (ne) { - *(u16 *)(st + 0x82) = sA; - *(u16 *)(st + 0x11C) = 1; - } else { - *(u16 *)(st + 0x11C) = 0; - } -L328: - func_80176FF4(*(s32 *)(((param_1 << 16) >> 14) + st + 0x18)); -L340: - - /* ---- block 2: pair 0x3E/0x40 ---- */ - sA = *(u16 *)(cur + 0x3E); - t = (sA != *(u16 *)(cach + 0x3E)); - if (*(u16 *)(cach + 0x40) == *(u16 *)(cur + 0x40)) { - ne = t; - if (ne == 0 && *(u16 *)(flag + 0x40) == 0) goto L444; - } else { - s32 d = (s16)(*(u16 *)(cach + 0x40) - *(u16 *)(cur + 0x40)); - u16 nc; - if (d < 0) { - if (d < -10) nc = *(u16 *)(cach + 0x40) + 2; - else nc = *(u16 *)(cach + 0x40) + 1; - } else { - if (d > 10) nc = *(u16 *)(cach + 0x40) - 2; - else nc = *(u16 *)(cach + 0x40) - 1; - } - *(u16 *)(cach + 0x40) = nc; - *(u16 *)(flag + 0x40) = 1; - *(u16 *)(cach + 0x3E) = *(u16 *)(cur + 0x3E); - goto L3E8; - } - if (ne) { - *(u16 *)(cach + 0x3E) = sA; - *(u16 *)(flag + 0x40) = 1; - } else { - *(u16 *)(flag + 0x40) = 0; - } -L3E8: - { - s32 s0b = ((param_1 << 16) >> 14) + st; - u16 cc; - s32 pp; - func_80177340(*(s32 *)(s0b + 0x18) + 0x104); - cc = *(u16 *)(cach + 0x40); - pp = *(s32 *)(s0b + 0x28); - if (cc < 100) - *(u8 *)(pp + 0x5D) = D_801909B0[cc / 5]; - else - *(u8 *)(pp + 0x5D) = 0; - } -L444: - - /* ---- block 3: field 0x14 (s32) ---- */ - if (*(s32 *)(cach + 0x14) == *(s32 *)(cur + 0x14)) { - if (*(s32 *)(flag + 0x14) == 0) goto L4D0; - *(s32 *)(flag + 0x14) = 0; - goto L4A8; - } else { - s32 d = *(s32 *)(cur + 0x14) - *(s32 *)(cach + 0x14); - s32 nd; - if (d > 0) { - if (d < 10) nd = *(s32 *)(cach + 0x14) + 1; - else nd = *(s32 *)(cach + 0x14) + 10; - } else { - if (d < -9) nd = *(s32 *)(cach + 0x14) - 10; - else nd = *(s32 *)(cach + 0x14) - 1; - } - *(s32 *)(cach + 0x14) = nd; - *(s32 *)(flag + 0x14) = 1; - } -L4A8: - { - u32 r = func_801783D0(*(s32 *)(cach + 0x14), 0); - func_80177F84(*(s32 *)(((param_1 << 16) >> 14) + st + 0x18) + 0x208, r); - } -L4D0: - - /* ---- block 4: field 0x34 (u16) + 0x42 (u8) ---- */ - if (*(u16 *)(cur + 0x34) != *(u16 *)(cach + 0x34)) { - *(u16 *)(cach + 0x34) = *(u16 *)(cur + 0x34); - *(u16 *)(flag + 0x34) = 1; - *(u8 *)(cach + 0x42) = *(u8 *)(cur + 0x42); - } else { - if (*(u16 *)(flag + 0x34) == 0) goto L558; - *(u16 *)(flag + 0x34) = 0; - } - { - u16 e = 999; - s16 r; - if (*(u16 *)(cach + 0x34) < 1000) e = *(u16 *)(cach + 0x34); - r = (s16)func_801783D0((s16)e, 4); - func_80177DA8(*(s32 *)(((param_1 << 16) >> 14) + st + 0x18) + 0x294, - (s32)r, *(u8 *)(cach + 0x42)); - } -L558: - - /* ---- block 5: field 0x1A (s16) ---- */ - if (*(s16 *)(cach + 0x1A) != *(s16 *)(cur + 0x1A)) { - *(s16 *)(cach + 0x1A) = *(s16 *)(cur + 0x1A); - *(s16 *)(flag + 0x1A) = 1; - } else { - if (*(s16 *)(flag + 0x1A) == 0) goto L63C; - *(s16 *)(flag + 0x1A) = 0; - } - { - u16 f = *(u16 *)(cach + 0x1A); - s32 e = *(s32 *)(((param_1 << 16) >> 14) + st + 0x18); - s32 i6, i4, sum; - /* L1: the store is written into BOTH arms so cross_jump merges the tail (see header). */ - if (f & 1) *(s16 *)(e + 0x32A) = 0x200; - else *(s16 *)(e + 0x32A) = *(u16 *)(st + 0x16) + 0x65; - { - s32 t = (((s16)f / 15) & 3) * 15; - i6 = func_801783D0(((s16)f / 15) * 0x10000 >> 0x12, 8); - i4 = func_801783D0((t * 0x10000) >> 16, 0); - } - /* L2: copy temp defeats expand_binop's commutative swap; cse folds it back (see header). */ - sum = i4; - i4 = i6 + sum; - ((void (*)(s32, s32))func_80177AD4)(*(s32 *)(((param_1 << 16) >> 14) + st + 0x18) + 800, - i4 * 0x10000 >> 0x10); - } -L63C: - - /* ---- block 6: field 0x4A (u8) ---- */ - if (*(u8 *)(cur + 0x4A) != *(u8 *)(cach + 0x4A)) { - *(u8 *)(cach + 0x4A) = *(u8 *)(cur + 0x4A) & 0x7F; - *(u8 *)(flag + 0x4A) = 1; - } else { - if (*(u8 *)(flag + 0x4A) == 0) return; - *(u8 *)(flag + 0x4A) = 0; - } - { - s32 s0b = ((param_1 << 16) >> 14) + st; - u8 *arg = D_80190934[*(u8 *)(cach + 0x4A)]; - u32 *p = (u32 *)(*(s32 *)(s0b + 0x18) + 900); - func_80024054(arg, buf); - p = ((u32 * (*)(u32 *, u8 *, s32, s32))func_80178298)(p, buf, - (s16)(*(u16 *)(st + 0x14) + 0x39), - (s16)(*(u16 *)(st + 0x16) + 0x5B)); - func_8005A600((s32)p, 0, 0, 0x15, 0); - *p = ((u32)((u8 *)p - 0x14) & 0xffffff) | 0x2000000; - *(u32 **)(s0b + 0x20) = p; - } -} - - - -void func_80176734(s32 param_1) -{ - extern u8 D_8011F7A8; /* st base ($s3) */ - extern u8 D_80078E78[]; /* cur base ($s4) */ - extern s16 D_801152BA; - extern u8 D_8011F7B0; /* == *(u8 *)(st + 8), read absolutely (mixed addressing) */ - extern u8 D_80115214; - extern u8 D_801909D0[]; - extern u16 D_80190922[]; - extern u16 D_80190930; - extern u8 D_801909C4[]; - extern s32 D_801909DC[]; - extern u8 D_800D43D4; - extern u8 D_800D4414; - extern u8 D_800D45D4; - extern u8 D_800B9A13; - extern s16 D_80126CE0; - extern s16 D_80126D20; - extern s32 D_80126B58; - extern void func_800183E0(s32 a0); - extern s32 func_801619D0(void *a0); - extern s32 func_80161A00(s32 a0); - extern s32 func_80161A30(s32 a0); - extern s32 func_80161A60(s32 a0); - extern void func_801775E0(s32 param_1, s32 param_2); - - s32 st, cach, flag, cur; - register s32 chg __asm__("$21"); /* L7 */ - register s32 chg2 __asm__("$16"); /* L7 */ - s32 amp; /* $s0, disjoint from chg2 */ - register u16 tgt __asm__("$5"); /* L7 */ - s32 pv; /* L6: the param copy that owns $s6 */ - s32 ix; /* L6: block A's index, hoisted out of the block */ - u8 dum[8]; /* L5: dead frame slot (target .frame vars=8) */ - - st = (s32)&D_8011F7A8; - ix = ((param_1 << 16) >> 14) + st; - pv = param_1; - cach = st + 0x48; - flag = st + 0xE0; - cur = (s32)&(*(u8 *)D_80078E78); - - /* ---- block A: pulse byte ---- */ - { - register s32 p __asm__("$5"); /* L7 */ - u8 *q; - p = *(s32 *)(ix + 0x28); - q = (u8 *)(p + 0x3C); /* L2: must live in the entry BB */ - if (D_801152BA != 0) { - u8 b = D_8011F7B0; /* L1 */ - u8 v; - if (b < 0x80) v = b - 0x80; - else v = ~b - 0x80; - q[4] = v; - *(u8 *)(p + 4) = v; - *(u8 *)(st + 8) = *(u8 *)(st + 8) + D_80115214; - } else { - *(u8 *)(p + 0x40) = 0x80; - *(u8 *)(p + 4) = 0x80; - } - } - - /* ---- block B: 0x48 animation already running ---- */ - if (*(u8 *)(flag + 0x48) != 0) { - register s32 pp __asm__("$5"); /* L7 */ - pp = *(s32 *)(((pv << 16) >> 14) + st + 0x28); - *(u8 *)(pp + 0xD) = D_801909D0[*(u8 *)(flag + 0x48)]; - if (*(u8 *)(flag + 0x48) < 4) { - *(u8 *)(flag + 0x48) = *(u8 *)(flag + 0x48) + 1; - } else { - u8 c = *(u8 *)(cach + 0x48); - s32 q = *(s32 *)(((pv << 16) >> 14) + st + 0x28); - s32 arg; - if (c & 0x80) { - *(u16 *)(q + 0x20) = D_80190930; - arg = (s32)&D_800D45D4; - } else if (c != 0) { - *(u16 *)(q + 0x20) = D_80190922[c]; - arg = D_801909DC[*(u8 *)(cach + 0x48)]; - } else { - goto Lskip; - } - func_800183E0(arg); - Lskip: - if (*(u8 *)(flag + 0x48) == 5) { - if (*(u8 *)(cach + 0x48) == 0) *(u8 *)(flag + 0x48) = 0; - else *(u8 *)(flag + 0x48) = *(u8 *)(flag + 0x48) + 1; - } else if (*(u8 *)(flag + 0x48) == 10) { - *(u8 *)(flag + 0x48) = 0; - } else { - *(u8 *)(flag + 0x48) = *(u8 *)(flag + 0x48) + 1; - } - } - /* ---- block C: 0x48 changed -> start the animation ---- */ - } else if (*(u8 *)(cach + 0x48) != *(u8 *)(cur + 0x48)) { - register s32 pp __asm__("$5"); /* L7 */ - u8 k; /* L1: gives the `andi $v1,$v1,0xFF` index mask */ - if (*(u8 *)(cach + 0x48) == 0 && *(u8 *)(cur + 0x48) != 0) - *(u8 *)(flag + 0x48) = 5; - else - *(u8 *)(flag + 0x48) = 0; - *(u8 *)(cach + 0x48) = *(u8 *)(cur + 0x48); - pp = *(s32 *)(((pv << 16) >> 14) + st + 0x28); - k = *(u8 *)(flag + 0x48); - *(u8 *)(flag + 0x48) = k + 1; - *(u8 *)(pp + 0xD) = D_801909D0[k]; - } - - /* ---- block D: field 0x2E (equality-first: the ne-arm must be out of line) ---- */ - if (*(s16 *)(cach + 0x2E) == *(s16 *)(cur + 0x2E)) { - if (*(s16 *)(flag + 0x2E) == 0) goto L9C0; - *(s16 *)(flag + 0x2E) = 0; - } else { - *(s16 *)(cach + 0x2E) = *(s16 *)(cur + 0x2E); - *(s16 *)(flag + 0x2E) = 1; - } - { - s32 pp = *(s32 *)(((pv << 16) >> 14) + st + 0x28); - s32 t = (s32)(*(u16 *)(cach + 0x2E) << 16); - if (t != 0) *(u8 *)(pp + 0x49) = D_801909C4[t >> 20]; - else *(u8 *)(pp + 0x49) = 0xA0; - } -L9C0: - - /* ---- block E: field 0x1E sign flip ---- */ - { - s32 fa = *(s16 *)(cach + 0x1E) & 0x8000; - s32 fb = *(s16 *)(cur + 0x1E) & 0x8000; - if (fa != fb) { - s32 arg; - if (fa != 0) { - *(s16 *)(cach + 0x1E) = 0; - arg = (s32)&D_800D43D4; - } else { - *(s16 *)(cach + 0x1E) = -0x8000; - arg = (s32)&D_800D4414; - } - func_800183E0(arg); - } - } - - /* ---- block F: mode byte -> chg ---- */ - { - u8 m = D_800B9A13; /* L1 */ - if (m != 3) { /* inverted: `chg = 0` belongs out of line */ - register s32 t __asm__("$2"); /* L3a: pin + 2 uses keeps `chg = t` alive */ - t = (*(u8 *)(st + 7) != m); - chg = t; - if (t != 0) *(u8 *)(st + 7) = m; - } else { - chg = 0; - } - } - - /* ---- block G: switch on cur[0x48] (cases 3/4/5 cross-jump onto one tail) ---- */ - amp = 0; - switch (*(u8 *)(cur + 0x48)) { - case 3: - if (func_801619D0(&D_80126B58) != 0) amp = 0xFF; - break; - case 4: - if (func_80161A00((s32)&D_80126B58) != 0) amp = 0xFF; - break; - case 5: - if (func_80161A30((s32)&D_80126B58) != 0) amp = 0xFF; - break; - case 6: - if (func_80161A60((s32)&D_80126B58) != 0) amp = 0xBA; - break; - } - - /* ---- block H: amp != 0 short-circuit ---- */ - { - s32 av; - av = amp; - __asm__("" : "=r"(av) : "0"(av)); /* L3b: keeps the `move $v0,$s0` at the merge */ - if (av != 0) { - *(u8 *)(flag + 0x47) = 1; - *(u8 *)(cach + 0x4B) = *(u8 *)(cur + 0x48) | 0xF0; - *(u8 *)(cach + 0x47) = ((s32)D_80126D20 << 7) / av; - goto Ltail; - } - } - - if (*(u8 *)(cach + 0x4B) >= 0xF0) *(u8 *)(cach + 0x4B) = 0; - - /* ---- block I: target level + change flag. The lhu is unconditional (target loads - both the signed and the unsigned view of D_80126CE0 up front). ---- */ - tgt = *(u16 *)&D_80126CE0; - if (D_80126CE0 != 0) { - u16 v; /* dies at the mask -> destructive `andi $v1,$v1` */ - register s32 t __asm__("$2"); - v = tgt; - *(u8 *)(cach + 0x4B) = v; - t = (*(u8 *)(cach + 0x47) != (v & 0xFF)); - __asm__("" : "=r"(t) : "0"(t)); /* L3b */ - chg2 = t; - } else { - u32 cv = *(u8 *)(cach + 0x47); /* L8: one load, two compares, no re-mask */ - tgt = *(u8 *)(cur + 0x47); - chg2 = 0; - if (cv != tgt || cv == 0x80) chg2 = 1; - if (*(u8 *)(cur + 0x47) != 0 && *(u8 *)(cach + 0x4B) != 0) { - *(u8 *)(cach + 0x4B) = 0; - *(u8 *)(cach + 0x47) = *(u8 *)(cur + 0x47); - } - } - - /* ---- block J: nothing-changed fast path. The target re-tests chg after the flag load; - the fence below is what stops cse from folding that second test away. ---- */ - { - register s32 c __asm__("$3"); - c = chg; - if (chg2 != 0) goto Lbig; - if (c != 0) goto Lbig; - if (*(u8 *)(flag + 0x47) == 0) goto Ltail; - __asm__("" : "=r"(c) : "0"(c)); /* L3b */ - if (c == 0) goto Lzero; - } -Lbig: - /* ---- block K: slew cach[0x47] toward tgt ---- */ - { - u32 c = *(u8 *)(cach + 0x47); - s32 sv = (s16)tgt; /* L8 */ - if ((s32)c < sv) { - *(u8 *)(cach + 0x47) = tgt; - } else { - if (sv != 0) *(u8 *)(cach + 0x47) = c - 3; /* L4: store in BOTH arms */ - else *(u8 *)(cach + 0x47) = c - 8; - c = *(u8 *)(cach + 0x47); /* stays a real lbu because of L4 */ - if (c == 0 || c > 0x80) { - *(u8 *)(cach + 0x47) = 0; - *(u8 *)(cach + 0x4B) = 0; - } else if ((s32)c < (s16)tgt) { /* fresh EBB -> the sll/sra is recomputed */ - *(u8 *)(cach + 0x47) = tgt; - } - } - *(u8 *)(flag + 0x47) = 1; - } - goto Ltail; -Lzero: - *(u8 *)(flag + 0x47) = 0; -Ltail: - - /* ---- block L: tail. m+5 / m+9 are separate temps: `lhu + (m+5)`, not `(lhu + m) + 5`. ---- */ - { - s32 b = ((pv << 16) >> 14) + st; - s32 m = (*(u8 *)(st + 7) != 0) << 8; - s32 m5 = m + 5; - s32 m9 = m + 9; - *(u16 *)(*(s32 *)(b + 0x28) + 0x32) = *(u16 *)(st + 0x12) + m5; - func_801775E0(*(s32 *)(b + 0x28) + 0x64, (s16)(*(u16 *)(st + 0x12) + m9)); - } -} - - -DEFINE_func_80176D00() /* dedup: shared engine-core @0x80176D00 (src/shared) */ - -DEFINE_func_80176D94() /* dedup: shared engine-core @0x80176D94 (src/shared) */ - -DEFINE_func_80176FF4() /* dedup: shared engine-core @0x80176FF4 (src/shared) */ - -DEFINE_func_801770E0() /* dedup: shared engine-core @0x801770E0 (src/shared) */ - -DEFINE_func_80177340() /* dedup: shared engine-core @0x80177340 (src/shared) */ - -DEFINE_func_8017742C() /* dedup: shared engine-core @0x8017742C (src/shared) */ - -DEFINE_func_801775E0() /* dedup: shared engine-core @0x801775E0 (src/shared) */ - - -DEFINE_func_801776EC() /* dedup: shared engine-core @0x801776EC (src/shared) */ - -DEFINE_func_80177784() /* dedup: shared engine-core @0x80177784 (src/shared) */ - -DEFINE_func_801777BC() /* dedup: shared engine-core @0x801777BC (src/shared) */ - - - -// @class: regalloc-order -// @stuck: none — MATCH -DEFINE_func_801778A8() /* dedup: shared engine-core @0x801778A8 (src/shared) */ - - -DEFINE_func_80177940() /* dedup: shared engine-core @0x80177940 (src/shared) */ - -DEFINE_func_80177AD4() /* dedup: shared engine-core @0x80177AD4 (src/shared) */ - - -/* func_80177B5C - MATCH (147/147 ins), wave23. - * - * Seed: .run/near6/func_80177B5C_ils.c (permuter-improved, closeness 7). - * Two residual clusters remained; both cracked, each by a sourced gcc-2.7.2 mechanism. - * - * CLUSTER C (idx 86-89) - the "cl | ((n*8+8) | 0x4000)" re-association. - * NOT a cse fold. It happens in the FRONT END: fold-const.c fold(), the `associate:` - * arm at :3685. For `A | (X | C)`, split_tree(arg1) (:3759, decomposer at :882) splits - * arg1 into var=X / con=C because TREE_CONSTANT(op1) holds, then rebuilds it as - * `(A | C) | X` at :3785. Verified in the FIRST RTL dump (t.i.rtl insn 215 already - * reads `(ior v1 16384)`), so no RTL-level lever (the cse if/else diamond, tie or - * volatile barriers, operand swap, shift-vs-multiply) can ever reach it. - * ANTIDOTE: hoist the inner IOR into its own statement. The outer arg1 is then a - * VAR_DECL, split_tree returns 0, and the associate arm is skipped. (This function - * already proved the shape at `tt = uv | 0x1000; p[3] = cl | tt;`, which matched.) - * - * That exposed a REGALLOC residual: the chain landed in $a3 (`sll a3,a3,3`) instead - * of $v0. Cause: `n` was pinned to a HARD reg, and local-alloc.c combine_regs():1798 - * unconditionally records a dying hard-reg SOURCE in qty_phys_sugg[] for the dest - * pseudo, so the shift dest inherited $a3. A *pseudo* source cannot do that - :1763 - * bails when reg_qty[ureg] < 0 (i.e. not block-local), and the target's `n` crosses - * the join, so it is exactly such a pseudo. - * ANTIDOTE: move the pin off `n` (which dies into the shift) onto `nn` (the tested - * value). `nn` pinned to $2 keeps the two distinct so the `addu $a3,$v0,$zero` copy - * survives (combine_regs :1841 refuses to tie when the DEST is non-block-local), - * while `n` stays a pseudo and the shift chain gets an ordinary local quantity -> - * $v0 - which also restores the target schedule, because the $v0 anti-dependence on - * `sw $v0,-0x4($a1)` is what stops sched2 hoisting the chain above the store. - * [7 -> 8 -> 3] - * - * CLUSTER B (idx 24-27) - `lui $t0,0x300` two slots early. - * Pure sched1 LUID tie-break, read straight off the -da trace (t.i.sched, T-36): - * ready = { 58 (7f000001), 72 (7f000001), ... } - insn 58 (lui $t0) IS birthing- - * boosted (sched.c birthing_insn_p:2469 works on hard regs too; reg_n_sets[$t0]==1), - * so 58/71/72 all tie at max_priority and rank_for_schedule:2427 falls through to - * DESCENDING LUID. Source order put `ca = 0x3000000;` before the mask, so - * LUID(58) < LUID(72) and the lui was placed first. - * (The companion mask 0xFFFFFF correctly stays at idx 6-7 because lui+ori is TWO - * sets of $t1 -> reg_n_sets==2 -> no boost -> it sinks to the block head. Same - * mechanism, opposite sign - the model predicts both.) - * ANTIDOTE: split the mask into its own statement (`gg`) and materialise the - * constant BETWEEN it and the OR, so expand emits addiu, and, lui, or in that order - * and LUID(58) > LUID(72). Sweeping the plain statement position of `ca = ...` was - * inert (all 11 slots scored 3) - only interposing the temp moves the LUID past the - * AND. [3 -> 0] - * - * Dead ends measured, not guessed: pin nv to $2 = 27; reuse tt = 24; reuse uv = 29; - * two-step |= = 15; unpin n = 84 (146 ins, the copy coalesces away); unpin ca = 139; - * ca as a bare literal = 139 (145 ins - cse merges it with the loop copy, so the hard - * pin is what keeps the pre-loop and in-loop constants separate); both literal = 143; - * `(ca = 0x3000000)` as an assignment-EXPRESSION = 114 (148 ins, extra move); reusing - * the existing `g` for the mask temp instead of a fresh one = 8 (g has a 2nd set later). - */ -u32 *func_80177B5C(p, bits, tbli, x, y) -u32 *p; -u32 bits; -s32 tbli; -s32 x; -s32 y; -{ - - extern u8 D_801909F8[]; -register u32 bb __asm__("$14"); - u32 *q; -register u32 v __asm__("$25"); -register u32 cl __asm__("$3"); -register u32 cs __asm__("$5"); -register u32 ca __asm__("$8"); - s16 i; - u32 mk1; - u32 cc1; - u32 flag; -register u32 nn __asm__("$2"); - u32 n; -register u32 t __asm__("$13"); - u32 col; - u32 uv; - u32 tt; - u32 nv; - u32 x1; - u32 x2; - u32 w; - u32 g; - u32 gg; - u32 w3; -register u32 yr __asm__("$16"); -register u32 yt __asm__("$4"); -register u32 tr __asm__("$21"); -register u32 xr __asm__("$17"); -register u32 c3 __asm__("$18"); -register s32 ff __asm__("$19"); -register s32 two __asm__("$20"); - yt = y; - tr = tbli; -__asm__("" : "=r"(tr) : "0"(tr)); - xr = x; -__asm__("" : "=r"(xr) : "0"(xr)); - mk1 = 0xFFFFFF; - cc1 = 0x74808080; - bb = bits; - t = x + 0xE; - flag = 0x1000000; - i = 0; - two = 2; - ff = 255; - ; - v = D_801909F8[(s16) tbli]; - gg = ((u32) (p - 5)) & mk1; - ca = 0x3000000; - p[0] = gg | ca; - x1 = (x - 3) & 0xFFFF; - x2 = (x + 5) & 0xFFFF; - p[1] = cc1; - yr = yt; -__asm__("" : "=r"(yr) : "0"(yr)); - yt = (s16) yt; - cs = (yt + 1) << 16; - w = cs | x1; -__asm__("" : "=r"(w) : "0"(w)); - cl = ((v << 6) | 0x4016) << 16; - p[2] = w; - p[3] = cl | 0x1800; - p += 5; - p[0] = (((u32) (p - 5)) & mk1) | ca; - p[1] = cc1; - p[2] = cs | x2; - p[3] = cl | 0x1808; - p += 5; - q = p; - yt = yt << 16; - { - for (; i < 3; i++) - { - nn = ((bb << 16) >> 18) >> 10; - n = nn; - if (((nn != 0) || (i == two)) || (i == ff)) - { - flag = 0; - } - q[0] = (((u32) (q - 5)) & 0xFFFFFF) | 0x3000000; - q[2] = (yt | (t & 0xFFFF)) | flag; - col = 0x74808080; - q[1] = col; - nv = ((n * 8) + 8) | 0x4000; - q[3] = cl | nv; - q += 5; - t += 8; - bb <<= 4; - } - - } - p = q; -__asm__("" : "=r"(v) : "0"(v)); - g = (((u32) (p - 5)) & 0xFFFFFF) | 0x3000000; -__asm__ __volatile__(""); - cs = yr << 16; - p[0] = g; - w3 = cs | ((xr + 0x2A) & 0xFFFF); -__asm__ __volatile__(""); - cl = ((v << 6) | 0x4016) << 16; - uv = ((s16) tr) << 4; - p[2] = w3; - tt = uv | 0x1000; - p[1] = col; - p[3] = cl | tt; - p += 5; - p[0] = (((u32) (p - 5)) & 0xFFFFFF) | 0x3000000; -__asm__ __volatile__(""); - cs = cs | ((xr + 0x32) & 0xFFFF); - uv = uv | 0x1008; - cl = cl | uv; - p[1] = col; - p[2] = cs; - p[3] = cl; - p += 5; -__asm__("" :: "r"(tr), "r"(xr)); - return p; -} - - - - -void func_80177DA8(p, v, idx) -u8 *p; -u32 v; -s16 idx; -{ - - extern u8 D_801909F8[]; - u8 *r; - u16 c; - u16 flag; - u32 n; - u8 m; - s16 i; - u8 t; - u32 x; - u32 uv; - u32 w1; - u32 w2; - - flag = 0x100; - i = 0; - t = D_801909F8[idx]; - c = (t << 6) | 0x4016; - *(u16 *)(p + 0xE) = c; - p += 0x14; - *(u16 *)(p + 0xE) = c; - p += 0x14; - r = p; - do { - n = (v << 16) >> 28; - m = n; - if (n != 0 || i == 2 || i == 0xFF) { - flag = 0; - } - v <<= 4; - i++; - *(s16 *)(r + 0xA) = flag | (*(s16 *)(r + 0xA) & ~0x100); - *(u8 *)(r + 0xC) = m * 8 + 8; - r += 0x14; - } while (i < 3); - *(u16 *)(p + 0xE) = c; - p += 0x14; - *(u16 *)(p + 0xE) = c; - p += 0x14; - *(u16 *)(p + 0xE) = c; - p += 0x14; - x = ((t << 6) | 0x4016) << 16; - uv = idx << 4; - w1 = uv | 0x1000; - *(u32 *)(p + 0xC) = x | w1; - w2 = uv | 0x1008; - *(u32 *)(p + 0x20) = x | w2; -} - - - -// @class: regalloc-order -// @stuck: none — MATCH - -DEFINE_func_80177EA4() /* dedup: shared engine-core @0x80177EA4 (src/shared) */ - - -DEFINE_func_80177F84() /* dedup: shared engine-core @0x80177F84 (src/shared) */ - - - -DEFINE_func_80178004() /* dedup: shared engine-core @0x80178004 (src/shared) */ - - -DEFINE_func_80178298() /* dedup: shared engine-core @0x80178298 (src/shared) */ - -DEFINE_func_801783D0() /* dedup: shared engine-core @0x801783D0 (src/shared) */ - -extern M2C_UNK D_801E52AC; - -void func_80178438(u16 *arg0) { - func_8001534C(2, &D_801E52AC, 0x80, 0x88, 0, 0); - func_800153CC(3, *arg0, 0xA8, 0x88, 0x40, 0); -} - - -DEFINE_func_8017849C() /* dedup: shared engine-core @0x8017849C (src/shared) */ - -DEFINE_func_80178608() /* dedup: shared engine-core @0x80178608 (src/shared) */ - -DEFINE_func_8017869C() /* dedup: shared engine-core @0x8017869C (src/shared) */ - -DEFINE_func_80178744() /* dedup: shared engine-core @0x80178744 (src/shared) */ - -DEFINE_func_801787D4() /* dedup: shared engine-core @0x801787D4 (src/shared) */ - - -// @class: regalloc-order -// @stuck: sll $v0,$s1,2 must be recomputed AFTER the call (target nops the delay slot) - -extern void func_80019064(void *a0); -extern void func_80131E00(struct S80131E00 *a0, s32 a1); - - -void func_80178840(int param_1) { - - extern int D_80190A58; - extern int D_80190A64[]; - register int p __asm__("$16"); - register int s1byte __asm__("$17"); - p = param_1; - if ((*(unsigned short *)(p + 0x5c) & 1) != 0) { - s1byte = *(unsigned char *)(p + 0x5e); - if (s1byte == 0xc) { - ((void (*)(int))func_80019064)((int)&D_80190A58); - } - ((void (*)(int, int))func_80131E00)(p, D_80190A64[s1byte]); - } -} - - -DEFINE_func_801788B8() /* dedup: shared engine-core @0x801788B8 (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (result pinned to $v0 forces call-result copy to $v1 + delay-slot zero) - -extern s32 func_801789AC(s32 arg0); -extern s16 D_801E7AB0; - -int func_80178970(void) -{ - register int r __asm__("$2"); - int v; - - v = ((s32 (*)(void))func_801789AC)(); - r = 0; - if (v != 0) - r = D_801E7AB0 == 0; - return r; -} diff --git a/src/ov_SC04_019/ov_SC04_019_jr_801789AC.c b/src/ov_SC04_019/ov_SC04_019_jr_801789AC.c deleted file mode 100644 index 2ee636ba5..000000000 --- a/src/ov_SC04_019/ov_SC04_019_jr_801789AC.c +++ /dev/null @@ -1,2774 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8; -typedef void (*Handler)(struct Entry_8016E95C *); -extern void func_801458E0(void); -extern s32 D_800AE6AC; -extern s32 D_800AE6B0; -extern s16 D_800B9A0A; -extern u8 D_80078E50; -extern void func_800D185C(u8 *a0); -extern void func_801458E8(void); -extern s32 func_80029504(void); -extern void func_80145B24(void); -extern u8 D_8018F74C; -extern u8 D_8018F6BC; -extern u8 D_8018F698; -extern u8 D_8018F674; -extern u8 D_8018F728; -extern u8 D_8018F704; -extern u8 D_8018F6E0; -extern u8 D_8018F650; -extern void func_80145934(void); -extern u8 D_8018F7DC; -extern u8 D_8018F7B8; -extern u8 D_8018F794; -extern u8 D_8018F770; -extern void func_80145A2C(void); -extern s32 func_800291DC(s32); -extern void func_800291C8(s32, s32); -extern void func_80162120(void); -extern void func_80029124(s32, s32); -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); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_80145BF8(void); -extern s32 func_800291B4(s32 arg); -extern void func_800291A0(s32, s32); -extern void func_80145C54(void); -extern s32 func_80145CEC(); -extern s32 func_80029178(s32 arg); -extern void func_80146014(s32 a0); -extern unsigned char D_8018EBD4[]; -extern unsigned char D_8018EC04[]; -extern unsigned char D_8018EC54[]; -extern unsigned char D_8018EC84[]; -extern unsigned char D_8018ECB4[]; -extern void func_80145EE8(s32 param_1); -extern void MoveImage(void *a0, s32 a1, s32 a2); -extern void func_80146074(void); -extern s32 func_80146128(void); -extern void func_80146360(void); -extern void func_801463A0(); -extern void func_8014607C(void); -extern s32 *D_80126B78; -extern u8 D_80078EC1; -extern s32 D_80078EC8; -extern s32 D_80126B9C; -extern s32 D_8011F730; -extern u16 D_801152B8; -extern u16 D_8012693A; -extern u8 D_80126BE0[]; -extern u8 D_801150F0[]; -extern void *memcpy(void *dst, const void *src, u32 n); -extern void func_80146FC4(s32 a0); -extern void func_80150A70(s32 a0); -extern void func_80147098(s32 *a0); -extern void func_8014A638(s32 arg0); -extern s32 func_80155458(s32 a0); -extern s32 func_80029104(void); -extern void func_80029344(void); -extern void func_8014ADE0(s32 a0); -extern void func_8014B350(s32 a0); -extern void func_8014B7A4(s16 *param_1); -extern s32 func_80161D58(s32 a0); -extern void func_80161A90(s32 a0); -extern void func_8014B504(u16 *a0); -extern void func_80149BEC(s32 a0); -extern void func_8014B5D0(s32 *a0); -extern void func_8014C99C(u8 *a0); -extern void func_8014B190(s32 s0); -extern void func_80148648(s32 a0, s32 a1); -extern s32 func_80149228(s32 a0); -extern void func_8014A59C(s32 a0); -extern void func_8016F14C(void *a0); -extern void func_80154418(void *a0); -extern void func_80154BE4(s32 a0); -extern void func_80165694(s32 arg0); -extern void func_801654A8(s32 a0); -extern void func_8014A680(s32 a0); -extern void func_8014A6A8(s32 a0); -extern void func_8014A71C(s32 a0); -extern void func_80172588(s32 *a0); -extern void func_801473DC(s32 *a0); -extern void func_80015978(s32 a0, s32 *a1); -extern void (*D_8018ED04[])(void *); -extern u8 D_80126BA4; -extern s32 D_80127098; -extern s32 D_80127094; -extern s32 D_80127090; -extern void func_80146534(void); -extern void func_8001D074(s32 a0, s32 a1); -extern void func_80146554(void); -extern void func_80146578(void); -extern void func_8001CFDC(s32, s32); -extern void func_8014659C(void); -extern void func_8001D074(s32, s32); -extern void func_801465C0(void); -extern void func_801465E4(void); -extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); -extern s32 D_8011F9D0; -extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); -extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 D_8011F750; -extern s32 D_8011F754; -extern u8 * func_801468C8(s32 arg0, u8 arg1); -extern s32 D_8011D030; -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); -extern s32 func_80146B9C(void *a0); -extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); -extern u16 D_8011DA28; -extern s32 func_80146B9C(void * arg0); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80146CA0(void *a0); -extern void func_80146CB4(void *a0); -extern void func_80146CC8(s32 a0); -extern void func_80146D30(s32 a0); -extern void func_80146D80(s32 *a0); -extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80146D90(s32 a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); -extern void func_80146E90(s32 *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80015954(s32 a0, s32 a1); -extern void func_80149374(s32 a0, s32 a1); -extern void func_80146F58(s32 a0, s32 a1); -extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 func_8012A68C(void); -extern s16 func_8012A758(void); -extern void func_8004978C(s16 *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern u8 D_80126DB0[]; -extern u16 D_80126DB6; -extern void func_8014704C(s32 *a0); -extern s32 func_80147054(void *a0); -extern void func_80147060(u8 * a0); -extern void func_8014706C(void *arg0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80147084(s32 *a0); -extern void func_8014708C(void *arg0); -extern s32 func_801470A0(void *a0); -extern void func_801470AC(s32 *a0); -extern void func_801470B4(s32 arg0); -extern void func_801470C0(s32 a0); -extern void func_80147118(s32 a0); -extern s16 D_80126BB8; -extern s16 D_80126BBA; -extern s16 D_80126BBC; -extern void func_80147264(s32 a0); -extern void func_80147290(void); -extern void func_801472B4(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void *D_8012707C; -extern void func_801472DC(void); -extern void func_801472F0(void *a0); -extern void func_80147364(u16, s32); -extern void func_80147300(u16 arg0); -extern void func_80147324(s32 arg0); -extern void func_801473EC(s32 *a0); -extern void func_80147460(s32 a0); -extern void func_80147514(); -extern void func_80147628(s32 a0); -extern void func_80147478(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); -extern s32 func_800129CC(s32 a0, s32 a1); -extern void func_80147514(s32 arg0); -extern void func_80013F3C(s32 a0); -extern void func_80012558(s32 a0, s32 a1); -extern void func_800126C4(s32 a0, s32 a1); -extern void func_800123F0(s32 a0, s32 a1); -extern void func_80147718(s32 a0); -extern void func_80147788(void *a0, s32 a1); -extern void func_801477A8(void *a0, s32 a1); -extern void func_801477C8(void *a0, s32 a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80147814(s32 a0, s32 a1); -extern void func_80147928(int a0, int a1); -extern void func_8014799C(int a0, int a1); -extern void func_80147A10(int a0, int a1); -extern void func_80147860(int a0, int a1, int a2, int a3); -extern void func_80147948(s32 a0, s32 a1, s32 a2); -extern void func_801479BC(s32 a0, s32 a1, s32 a2); -extern void func_80147A30(s32 a0, s32 a1, s32 a2); -extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147948(int a0, int a1, int a2); -extern void func_801479BC(int a0, int a1, int a2); -extern void func_80147A30(int a0, int a1, int a2); -extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147A84(s32 arg0); -extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147AAC(s32 arg0); -extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80147B5C(s32 a0, void *a1); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern void func_80147B18(s32 a0); -extern void func_80147B5C(s32 arg0, void *arg1); -extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147DC0(s32 a0, s32 a1); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147F50(s32 arg0); -extern void func_80148038(s32 a0, s32 a1); -extern s32 ratan2(s32 a0, s32 a1); -extern s32 csqrt(s32 a0); -extern s32 func_80012A60(s32 a0, s32 a1); -extern void func_80148094(int param_1, short *param_2, int *param_3); -extern void func_801485B8(s32 a0, s32 a1, s32 a2); -extern void func_801484B0(s32 a0, s32 a1); -extern s32 func_80154358(void *a0); -extern void func_801484E8(s32 a0, s32 a1); -extern void func_80148534(s32 a0, s32 a1); -extern void func_8014856C(s32 a0, s32 a1); -extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); -extern void func_80148634(void *a0); -extern u8 D_800B9A64; -extern s32 func_80014DC0(); -extern s32 func_80014D68(); -extern s32 func_80014D94(); -extern s32 func_80014CF8(); -extern void func_800120DC(); -extern s32 func_800CF8B4(); -extern u16 func_801487F4(s32 *a0); -extern u16 func_80148800(s32 *a0); -extern u8 func_8014880C(s32 *a0); -extern u16 func_80148818(s32 *a0); -extern s32 func_80047D3C(s32 a0); -extern s32 func_80148824(void *arg0); -extern s32 func_801488A8(u8 *a0); -extern s32 func_8014891C(s32 a0); -extern s32 func_80148980(u8 *a0); -extern s32 func_801489E8(s32 a0); -extern s32 func_80148A48(s32 a0); -extern int func_80148AFC(void *a0); -extern void func_80148AAC(u8 *a0); -extern s32 func_80148C18(void); -extern s32 func_80148C20(s32 a0, s16 a1); -extern s32 func_80148C34(s32 a0, s32 a1); -extern s32 func_80148C4C(s32 a0, s32 a1); -extern s32 func_80148C64(s32 a0, s32 a1); -extern s32 func_80148C7C(void); -extern s32 func_80148C84(s32 a0, s32 a1); -extern s32 func_80148C9C(s32 a0, s32 a1); -extern s32 func_80148CB4(s32 a0, s32 a1); -extern s32 func_80148CCC(s32 a0, s32 a1); -extern s32 func_80148CE4(void); -extern s32 func_80148CEC(void); -extern s32 func_80148CF4(s32 a0, s32 a1); -extern s32 func_80148D0C(s32 a0, s32 a1); -extern s32 func_80148D24(void *a0, int a1); -extern s32 func_80148D3C(void); -extern s32 func_80148F60(void); -extern s32 func_80148F68(s32 a0); -extern s32 func_80148F74(s32 a0); -extern s32 func_80148F80(s32 a0); -extern s32 func_80148F8C(s32 a0); -extern s32 func_80148F98(void); -extern s32 func_80148FA0(s32 a0); -extern s32 func_80148FAC(s32 a0); -extern s32 func_80148FB8(s32 a0); -extern s32 func_80148FC4(s32 a0); -extern s32 func_80148FD0(void); -extern s32 func_80148FD8(void); -extern s32 func_80148FE0(s32 a0); -extern s32 func_80148FEC(s32 a0); -extern s32 func_80148FF8(s32 a0); -extern s32 func_80149004(void); -extern void func_8014900C(s32 *a0); -extern void func_80149020(s32 *a0); -extern void func_80149034(s32 *a0); -extern void func_80149048(s32 *a0); -extern void func_8014905C(u8 *a0); -extern void func_801490E0(s32 *a0, s16 a1); -extern void func_801490E8(s32 *a0, s16 a1); -extern void func_801490F0(s32 *a0, s16 a1); -extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); -extern void func_801490F8(s32 a0, s32 a1); -extern s32 func_801491C4(s32 a0); -extern s32 func_80149184(s32 a0); -extern s32 D_801151D4; -extern void func_80149204(s32 *a0); -extern void func_80149210(s32 a0, s32 a1); -extern s32 func_80149284(s32 *a0, s32 a1); -extern void func_80149350(s32 arg0); -extern void func_80149290(s32 a0); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_80149374(s32 arg0, s32 arg1); -extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8014942C(s32 arg0); -extern void func_8012EF70(s32 a0, s32 a1); -extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012EFB8(s32 a0); -extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); -extern void func_8014964C(s32 param_1, s32 param_2); -extern s32 func_801496D4(void *a0); -extern void func_8015AD08(); -extern void func_80149704(void); -extern void func_8015ACC4(); -extern void func_80149724(void); -extern u8 D_80078EBF; -extern s32 func_80149744(struct S_80149744 *a0); -extern void func_8015F7A0(); -extern void func_80149788(void); -extern void func_801653B8(); -extern void func_80149864(void); -extern s16 currentLocationId; -extern s32 func_8016F1AC(void); -extern s32 func_80149884(void); -extern void func_80160B00(); -extern void func_801498C0(void); -extern s32 func_80149AA8(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern void func_80146750(void *a0); -extern s32 func_801498E0(s32 *a0); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_80147364(u16 a0, s32 a1); -extern s32 func_800CCF28(s32 a0); -extern u8 D_80126B5C; -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_8015DAC4(s32 *a0); -extern void func_8015554C(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern void func_80149B14(s32 *a0); -extern u8 func_8014BEF8(void); -extern s32 func_80149B54(s32 * arg0); -extern void func_8015DE24(s32 *a0); -extern void func_80157510(s32 *a0); -extern void func_80149BAC(s32 *a0); -extern s32 func_80029178(s32 a0); -extern s32 func_80149C08(s32 arg0); -extern void func_801577C8(); -extern void func_80149C94(void); -extern void func_80157D20(void); -extern void func_80149CB4(void); -extern s32 func_80149CD4(s32 a0); -extern u8 func_8014B5B8(s32 *a0); -extern s32 func_80149D10(s32 a0); -extern s32 func_80149E94(s32 a0); -extern s32 func_80149DD8(s32 a0); -extern s32 func_80149D9C(s32 a0); -extern u8 D_801202A0[]; -extern s32 func_80149F2C(s32 a0, s32 a1); -extern s32 func_80149E94(s32 arg0); -extern void func_80149FA8(void); -extern s32 D_8018EDCC[]; -extern u8 D_80078E78[]; -extern s32 func_80149FB0(s32 a0); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern void func_8014A1B0(s32 a0, s32 a1); -extern s32 func_8014A048(s32 param_1); -extern u16 func_80156370(u16 a0); -extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); -extern void func_8015D4B4(); -extern void func_8014A218(void); -extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); -extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); -extern s32 func_8014A238(s32 arg0); -extern s32 func_8014A2E4(s32 a0); -extern void func_8014A380(s32 a0, s32 a1); -extern s16 D_801152B0; -extern s16 D_801152B4; -extern s32 func_8014A3E0(struct S_8014A3E0 *a0); -extern s32 func_8014A454(s32 a0); -extern s32 func_8014A4B4(void *a0); -extern void func_8015EDD4(); -extern void func_8014A4FC(void); -extern s32 func_8014A674(s32 *a0); -extern s32 func_8014A69C(s32 *a0); -extern s32 func_8014A6C4(s32 a0); -extern void func_8015E184(); -extern void func_8014A830(void); -extern s32 func_80029AF4(void); -extern s32 func_8014A850(s32 param_1); -extern void func_8014AA04(s32 a0); -extern void func_801599A4(void *a0); -extern void func_80159B3C(void *a0); -extern s32 func_80165A20(s32 a0); -extern void func_8014AB7C(); -extern void func_8014AC10(); -extern void func_8014AA28(void); -extern void func_8014AB5C(void); -extern void func_80162CCC(void); -extern void func_8014AB7C(s32 arg0); -extern void func_8014ABF0(void); -extern void func_80016714(void *a0, s32 a1); -extern void func_8014AC10(s32 arg0); -extern void func_8014ACC0(s32 a0, s32 a1); -extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); -extern void func_8014ACE8(void *a0, s32 a1, s32 a2); -extern void func_80146AFC(void *a0); -extern void func_8014ADA8(s32 a0, s32 a1); -extern void func_8014AD7C(s32 a0); -extern s32 D_80078E8C; -extern void func_8014B034(s32 arg0); -extern void func_8014B00C(s32 arg0); -extern void func_8014B084(void); -extern s16 D_80078E90; -extern void func_8014B034(s32 a0); -extern u16 D_80078EAC; -extern u8 D_80078EBA; -extern void func_800D10EC(void); -extern void func_8002AC98(void); -extern s32 func_8014B154(s32 *a0); -extern void func_8014B12C(void); -extern void func_8014B2F8(void); -extern void func_8014B4C4(void); -extern void func_8014B160(s32 a0); -extern s32 func_8016F1C4(void); -extern s16 D_80078E96; -extern s16 D_80078EB8; -extern u16 D_80078EA6; -extern void func_8014B2A8(void); -extern void func_8014B310(void); -extern void func_8014B2D0(void); -extern s32 D_80078E94; -extern s32 D_80078ECC; -extern void func_8014B33C(void); -extern u8 D_80062BF4[]; -extern void func_8014BC80(s32 a0, s32 a1); -extern void func_80019064(void *a0); -extern s32 D_80078E98; -extern void func_80166244(); -extern void func_8014B4D4(void *a0); -extern s16 D_80078E9A; -extern u8 D_80126D1C; -extern s32 D_80126D74; -extern void func_8014B598(s32 a0, s32 a1); -extern void func_8014B5B0(s32 *a0); -extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); -extern void func_8014B5D8(s32 s1); -extern s32 D_80078E9C; -extern s32 D_80078ED0; -extern void func_8014B6F0(s32 a0, s32 a1); -extern void func_8014B768(s32 a0, s32 a1); -extern void func_8014B944(s32 a0, s32 a1, s32 a2); -extern s32 D_80078EA4; -extern u16 D_80078EB2; -extern s16 D_80078EB4; -extern void func_8014BB0C(void); -extern void func_8014BB24(s32 a0, s32 a1, s32 a2); -extern void func_8014BC0C(s32 a0, s32 a1); -extern void func_8014BC44(s32 a0, s32 a1); -extern u8 D_800B9A17; -extern void func_8014BCC0(s32 a0, s32 a1); -extern u16 D_80078EB6; -extern s32 func_8014BCEC(s32 a0, s32 a1); -extern void func_8014BD24(s32 a0, s32 a1); -extern void func_8014BD60(s32 param_1, s32 param_2); -extern void func_8014BD98(s32 a0, u16 a1); -extern void func_8014BDC8(void); -extern void func_8014BDE0(void); -extern s32 func_8017267C(s32 *a0); -extern s32 func_80013294(void *a0, void *a1); -extern void func_80029ED4(s32 a0); -extern void func_8014BDE8(s32 a0); -extern void func_8014BE78(void); -extern void func_8014BE9C(void); -extern void func_80029124(s32 a0, s32 a1); -extern void func_8014BEC0(void); -extern void func_8014BF18(s32 a0); -extern void func_8014BF48(void); -extern u8 func_8014BF6C(void); -extern void func_8014BF8C(u8 arg0); -extern void func_8014BFB0(void); -extern u8 func_8014BFD4(void); -extern void func_8014BFF4(s32 a0, s32 a1); -extern void func_8014C010(s32 a0, s32 a1); -extern s32 func_8014C050(s32 a0, s32 a1); -extern s32 func_8014C088(s32 a0, s32 a1); -extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); -extern s32 func_8014C118(void * a0, s32 a1, s32 a2); -extern s32 func_8014C168(s32 * param_1, s32 param_2); -extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); -extern u8 D_8018EE54[]; -extern void func_8014C1A0(s32 arg0, s32 arg1); -extern s32 func_80013328(s32 a0, s32 a1); -extern s32 func_8014C59C(void *a0, void *a1); -extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); -extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); -extern s32 ratan2(s32 dx, s32 dy); -extern u8 D_8018EE5C; -extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); -extern s16 func_8014C5D0(s32 a0, s32 a1); -extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); -extern u8 D_80126D17; -extern void func_8014C6AC(void); -extern void func_8014C6C0(void); -extern u8 D_80126D1E; -extern void func_8014C6D0(void); -extern void func_8014C6E0(void); -extern s32 func_8014C860(s32 a0, s32 a1); -extern void func_8014C8C8(s32 a0, s32 *a1); -extern void func_8014C88C(s32 a0); -extern void func_8014C8C8(s32 dst, s32 * src); -extern void func_8014C8F0(s32 arg0); -extern u8 D_801151F0[]; -extern s32 func_8014C918(s32 a0, s32 a1); -extern s32 D_80126B50; -extern void func_8014C968(void); -extern void func_8014C978(void); -extern s32 func_8014C98C(void); -extern void func_80139914(s32 a0); -extern s32 func_8014CA00(s32 a0); -extern u16 func_8014CA70(s32 a0, s32 a1); -extern s32 func_8014CA14(s32 a0, s32 a1); -extern u16 func_8014CAE4(s32 *a0, s32 a1); -extern s32 func_8014CA88(s32 *a0, s32 a1); -extern s32 func_8014CAFC(void); -extern s32 func_8014CB0C(void); -extern s32 func_8014CB1C(void); -extern u8 D_80126D1F; -extern s32 func_8014CB2C(void); -extern s32 func_8014CB58(void); -extern u8 D_80126D1D; -extern void func_8014CB68(void); -extern s32 func_8014CB7C(void); -extern s32 func_8014CB8C(void); -extern struct Packed8 D_80126C98; -extern short D_80126C9E; -extern void func_8014CB9C(struct Packed8 *a0); -extern s32 D_80126CDC; -extern void func_8014CBD8(void); -extern s16 D_80126CC4; -extern void func_8014CBE8(void); -extern void func_8014CBF8(void *a0); -extern void func_8014D3E0(s32 a0); -extern void func_8014D04C(void); -extern void func_8014CCB4(void); -extern void func_8014CC28(s32 a0); -extern void func_8014CD0C(u8 *a0); -extern s32 func_8014CF04(s32 a0, s32 a1, void *a2); -extern void func_8014CD80(s32 a0, void *a1, void *a2); -extern void func_8014D0A4(s32 a0); -extern s32 func_8014D2A0(s32 a0, void *a1, void *a2); -extern s32 func_8014D12C(s32 a0, void *a1, void *a2); -extern void func_8014D438(s32 a0); -extern void func_8014D3E0(s32 _arg0); -extern void func_8014D610(s32 a0, void *a1, void *a2); -extern s32 func_8014D4C0(s32 a0, void *a1, void *a2); -extern void func_8014D790(s32 a0); -extern void func_8014D738(void); -extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); -extern s32 func_8014D820(s32 a0, u16 *a1, u16 *a2); -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); -extern void func_8014DF94(s32 arg0); -extern void func_8014DF3C(void); -extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ -extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ -extern s16 D_801152AC; -extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); -extern void func_8014E48C(s32 a0); -extern void func_8014E434(void); -extern void func_8014E5B4(s32 a0, void *a1, void *a2); -extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); -extern void func_8014E6F8(struct SubE6F8 *a0); -extern void func_8014E6A0(void); -extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); -extern void func_8014E934(s32 _arg0); -extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); -extern s32 func_8014E98C(void *a0); -extern u16 D_800B99DA; -extern s32 D_801150D8; -extern s16 D_801152AA; -extern u8 D_80126720[]; -extern s16 D_80126724; -extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); -extern s32 func_8014ED80(struct SubED80 *a0); -extern int D_801E5BA8; -extern void func_8014ED28(s32 _arg0); -extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F24C(struct SubF24C *a0); -extern void func_8014F1F4(void); -extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F4C0(); -extern s32 func_8014F468(void); -extern int func_8014F74C(); -extern int func_8014F6F4(void); -extern u8 D_800D3918[]; -extern u8 D_801152A8[]; -extern s32 D_801152BC; -extern int func_8014F74C(s32 arg0); -extern s32 func_8014FA70(s32 a0); -extern s32 D_801E5BAC; -extern void func_8014FA04(s32 a0); -extern s32 func_8014FBC0(); -extern s32 func_8014FC18(u8 *self); -extern int func_8014FD54(int param_1); -extern void func_8014FCFC(void); -extern void func_80150170(void *a0); -extern s32 func_8014FE60(void *a0); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_8014FE60(void *e); -extern s32 func_80134510(s32 arg); -extern s32 func_80150150(s32 a, s32 b); -extern s32 func_80150460(s32 a, s32 b); -extern void func_801504D8(u16 *a0); -extern s32 func_80150480(s32 _arg0); -extern s32 func_80150528(void *a0, void *a1, void *a2); -extern s32 func_80150528(void *arg0, void *arg1, void *arg2); -extern s32 func_801506A4(s32 a0, s32 a1); -extern s32 func_801505FC(s32 a0); -extern s32 func_801506A4(s32 arg0, s32 arg1); -extern void func_80150820(s32 a0, s32 a1); -extern void func_8015086C(int param_1); -extern s32 func_801508B4(s32 a0); -extern s32 func_8015094C(s32 a0); -extern short func_801508F8(s32 a0); -extern s32 D_8018EE8C; -extern s32 D_80126990; -extern s32 D_80126994; -extern u8 D_80126948[]; -extern s32 func_80021174(s32 a0, s32 a1); -extern s32 func_8015094C(s32 param_1); -extern void func_80150B9C(void); -extern s32 func_80151184(s32 a0, s32 a1, s32 a2); -extern s32 func_80150BA4(s32 a0); -extern s32 func_801619D0(void *a0); -extern void func_80150BC8(s32 *a0); -extern s32 func_80150480(s32 a0); -extern u16 D_800AE6DC; -extern void func_80150C48(s32 a0); -extern int func_80151184(int arg, int a1, int a2); -extern int func_80150CA0(int arg); -extern void func_80150EC4(s32 a, s32 b); -extern void func_80150CC4(s32 a); -extern void func_80150CE4(s32 a); -extern void func_80150D04(s32 a); -extern void func_80150D24(s32 a); -extern void func_80150D44(s32 a); -extern void func_80150D64(s32 a); -extern void func_80150D84(s32 a); -extern void func_80150DA4(s32 a); -extern void func_80150DC4(s32 a); -extern void func_80150DE4(s32 a); -extern void func_80150E04(s32 a); -extern void func_80150E24(s32 a); -extern void func_80150E44(s32 a); -extern void func_80150EC4(s32 a0, s32 a1); -extern void func_80150E64(s32 a0); -extern void func_80150E84(s32 a0); -extern void func_80150EA4(s32 a0); -extern u8 D_800AE6C0; -extern s16 D_800AE6C8; -extern s16 D_800AE6CA; -extern s16 D_800AE6CC; -extern s32 D_800AE6C4; -extern s16 D_800AE6CE; -extern u8 D_800AE6BE; -extern u8 D_801201F8[]; -extern void func_80150F78(void); -extern void func_80150F80(s32 a0); -extern int func_80150FB4(int arg); -extern void func_80150FD8(s32 a0); -extern int func_80151014(int arg); -extern void func_80151038(s32 a0); -extern int func_80151070(int arg); -extern int func_80151094(int arg); -extern void func_801510B8(void); -extern void func_801510C0(void); -extern int func_801510C8(int arg); -extern int func_801510EC(int arg); -extern s32 func_8012DB84(void); -extern s32 func_80151110(void); -extern void func_80151130(void); -extern int func_80151138(int arg); -extern void func_8015115C(s32 *a0, s16 a1); -extern s32 func_80151164(s32 a0, s32 a1); -extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); -extern void func_801511A8(u8 *a0); -extern void func_801511C4(u8 *a0); -extern int func_80151204(int arg, int a1); -extern int func_801511E0(int arg); -extern int func_80151204(int a0, int a1); -extern void func_80151238(void *a0); -extern void func_8015126C(u16 *p); -extern void func_80151780(s32 a0); -extern void func_801516F0(s32 *a0); -extern void func_8015173C(s32 *a0); -extern s16 D_8011DB1A; -extern s32 D_80127518; -extern s32 D_801151FC; -extern s32 func_801725CC(u8 *a0); -extern s32 func_80029D3C(void); -extern void func_80151878(void); -extern void func_80153B58(s32 *a0); -extern s32 func_80151880(s32 a0); -extern s32 func_801518D8(s32 a0); -extern s32 func_80151944(void); -extern s32 func_80151924(void); -extern void func_8014E934(s32 a0); -extern s32 func_8014F3E8(s32 a0); -extern void func_801519C8(s32 a0); -extern void func_80151980(s32 a0); -extern M2C_UNK D_800D5880; -extern s32 D_800D58AC; -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801519C8(s32 arg0); -extern void func_80151C54(s32 a0); -extern void func_801542DC(s32 *a0, s32 a1); -extern void func_8015BDD0(s32 *a0); -extern void func_80165718(s32 a0); -extern u8 D_800D46E4[]; -extern void func_80151AE4(s32 arg0); -extern void (*D_8018EF34[])(void); -extern void func_80151D24(void *a0); -extern void func_80151DB0(s32 a0); -extern void func_80151D60(void *a0); -extern s32 func_80172630(u8 *a0); -extern s32 D_80062C14; -extern void func_80151DB0(s32 param_1); -extern void func_80151E78(s32 *a0); -extern void func_80151ECC(struct S80151ECC *a0); -extern void func_80151FB4(s32 a0); -extern void func_80151F38(s32 *a0); -extern void func_801553C0(s32 a0); -extern void func_80153C18(); -extern void (*D_8018EF58[])(void); -extern void func_80152058(void *a0); -extern void func_801520DC(s32 a0); -extern void func_80152094(s32 a0); -extern void func_80147324(s32 a0); -extern u8 D_80062C04[]; -extern M2C_UNK D_8018EF48; -extern void func_801520DC(s32 arg0); -extern void func_801470B4(s32 a0); -extern void func_8015369C(s32 a0); -extern void func_80152194(s32 *a0); -extern s32 func_801536DC(s32 a0); -extern void func_8015220C(s32 a0); -extern s32 func_80153800(s32 a0); -extern void func_801522CC(s32 a0); -extern void func_80152254(s32 *a0); -extern void (*D_8018EF6C[])(void); -extern void func_80152370(void *a0); -extern void func_801523F4(s32 a0); -extern void func_801523AC(s32 a0); -extern void func_8001382C(s32 a0, void *a1, void *a2); -extern u8 D_8018EF78[]; -extern void func_801523F4(s32 arg0); -extern void func_801525F4(int); -extern s32 func_801535F4(void *arg0); -extern void func_8015BF48(s32 *a0); -extern void func_80152500(int param_1); -extern void func_801525F4(s32 a0); -extern void (*D_8018EF88[])(void); -extern void func_80152698(void *a0); -extern void func_80152714(s32 a0); -extern void func_801526D4(s32 a0); -extern void func_80152790(s32 a0); -extern void (*D_8018EFA0[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018EF90; -extern void func_801528B0(s32 arg0); -extern void func_8015294C(s32 a0); -extern void func_80152A08(s32 a0); -extern void func_80152AC8(s32 a0); -extern void func_80152A50(s32 *a0); -extern void (*D_8018EFB4[])(void); -extern void func_80152B6C(void *a0); -extern void func_80152BF0(s32 a0); -extern void func_80152BA8(s32 a0); -extern void func_80152C80(s32 *a0); -extern void func_80152C40(s32 *a0); -extern void (*D_8018EFD0[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018EFC0; -extern void func_80152DA8(s32 arg0); -extern void func_80152E4C(s32 a0); -extern void func_80152EFC(s32 a0); -extern void func_80152FBC(s32 a0); -extern void func_80152F44(s32 *a0); -extern void (*D_8018EFE4[])(void); -extern void func_80153060(void *a0); -extern void func_801530E4(s32 a0); -extern void func_8015309C(s32 a0); -extern void func_80155440(s32 *a0); -extern void func_801530E4(s32 arg0); -extern void func_80153150(struct S80153150 *a0); -extern void func_801531BC(s32 a0); -extern void func_8015327C(s32 a0); -extern void func_80153204(s32 *a0); -extern void (*D_8018EFF8[])(void); -extern void func_80153320(void *a0); -extern void func_801533A4(s32 a0); -extern void func_8015335C(s32 a0); -extern void func_80153410(s32 *a0); -extern void func_80153490(s32 a0); -extern void func_80153550(s32 a0); -extern void func_801534D8(s32 *a0); -extern void (*D_8011DB28)(s32 a0); -extern s32 func_801536DC(s32 param_1); -extern void func_800139C8(s32 a0, void *a1, void *a2); -extern s32 func_80153978(s32 a0, u16 *src); -extern s32 func_80133784(s32 a0, void *src, s32 dst); -extern s32 func_801539F8(s32 a0, void *a1); -extern s32 func_801539F8(s32 a0, void * a1); -extern s32 func_8016DA04(s32 a0); -extern s32 func_80153BD8(s32 a0); -extern s32 func_80153BF0(s32 a0); -extern void func_80153C18(void); -extern u16 D_8011F748; -extern void func_80153C30(void); -extern void func_80153C74(s16 a0, s16 a1); -extern s16 D_8011DB18; -extern void func_80153C44(int a0, int a1, s16 a2); -extern s16 D_8011DB0C; -extern s32 D_80115210; -extern void func_80153C8C(void); -extern void func_80153C9C(void); -extern s32 func_80153CBC(void); -extern s32 D_8018F00C; -extern void (*D_8018F034[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018F014; -extern void func_80153D7C(s32 param_1); -extern void func_8015410C(void); -extern void func_80153E00(s32 param_1); -extern void func_80151664(void); -extern void func_80154134(u8 *a0); -extern void func_80154190(u8 *a0, s32 a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154218(u8 *a0, s32 a1, s32 a2); -extern void func_801541D8(u8 *a0, s32 a1, s32 a2); -extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); -extern void func_801542A4(); -extern void func_801542A4(s32 *a0, s32 a1); -extern void func_8015430C(); -extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); -extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); -extern s32 func_80154358(void * arg0); -extern void func_80154AB4(s32 a0, s32 a1); -extern void func_80154B20(s32 a0, s32 a1, s32 a2); -extern void func_80154AE0(s32 a0, s32 a1, s32 a2); -extern void func_80154B7C(u8 *a0, s32 a1); -extern void func_80154B4C(u8 *a0, s32 a1); -extern void func_80154BC8(void *a0, s32 a1, s32 a2); -extern void func_80154B98(void *a0, s32 a1, s32 a2); -extern u8 D_800D8D10[]; -extern s16 D_80078E9E; -extern void func_801550FC(s32 a0); -extern void func_80154ED8(s32 a0, s32 a1); -extern void func_80154F9C(s32 a0); -extern void func_800183E0(s32 a0); -extern void func_801550FC(s32 arg0); -extern void func_8001D150(s32, s32); -extern void func_8001D130(int, int); -extern void func_80155150(int param_1); -extern s32 D_800DE2A4[]; -extern void func_801552F4(s32 a0); -extern void func_80155344(s32 a0); -extern s32 func_80155394(s32 *a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80029178(s32); -extern int (*D_8018F080[])(void); -extern s32 func_80155458(s32 param_1); -extern s32 func_801659DC(u8 *a0); -extern s32 func_801554B8(void *arg0); -extern void func_801555F4(void *a0); -extern void func_80155518(s32 *a0); -extern void func_80155580(void *a0); -extern void (*D_8018F084[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern S801563EC *func_801563EC(u16 idx); -extern s32 func_80029B4C(s32 a0, s32 a1); -extern s32 func_80029BC8(s32 a0, s32 a1); -extern s32 func_80029C44(s32 a0, s32 a1); -extern s32 func_8015640C(s32 a0, s32 a1); -extern s32 rand(void); -extern u32 func_8015616C(s32 param_1, u16 param_2); -extern u16 func_80156370(u16 param_1); -extern S801563EC * func_801563EC(u16 idx); -extern s32 func_801564B0(s32 a0); -extern s32 func_8002A1B4(void); -extern s32 func_8002A400(void); -extern s32 func_8002A670(void); -extern s32 func_8002A8E0(void); -extern s32 D_801151E0[]; -extern s32 func_801565C0(void); -extern void func_80156A14(s32 *a0); -extern void func_80156648(s32 *a0); -extern u8 D_8011DAD8[]; -extern s32 func_8014C568(s16 *a0, s16 *a1); -extern void func_801567BC(s32 a0); -extern B8 D_80128120[]; -extern B8 D_80128138[]; -extern S8 D_80126AF0[]; -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018F4E8[]; -extern void func_80156A1C(s32 param_1, s32 param_2); -extern s32 D_801150E0[]; -extern void func_80156A88(s32 a0, s32 a1); -extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); -extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); -extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); -extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern s32 func_80135004(s32 a0, void *a1, s32 a2); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801575E4(void *a0); -extern void func_801574DC(s32 *a0); -extern void func_80157544(void *a0); -extern void (*D_8018F4F8[])(void); -extern void func_8014CC28(s32 a0); /* defined */ -extern s32 func_8014F3E8(s32 a0); /* declared */ -extern void func_8015BDD0(s32 *a0); /* defined */ -extern void func_801575E4(void *a0); /* defined */ -extern void func_80157580(s32 arg0); -extern u8 D_800D4F14[]; -extern void func_801576A8(void *arg0); -extern s32 func_8015773C(u8 *a0); -extern s32 func_8015771C(u8 *a0); -extern s32 func_8015773C(u8 * arg0); -extern int D_801E5BE0; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018F520[])(void); -extern void func_80157808(void *param_1); -extern void func_80157880(s32 a0); -extern s32 func_801725A4(u8 *a0); -extern u8 D_800D5128; -extern u8 D_8018F500; -extern void func_801578C0(s32 param_1); -extern void func_80147A84(int); -extern void func_80148038(int, int); -extern void func_80147460(int); -extern void func_80146D90(int); -extern void func_80161450(void *a0); -extern void func_80157A8C(int); -extern void func_80154A74(int, int); -extern unsigned char D_800D5178; -extern unsigned char D_8018F510; -extern void func_8015795C(int param_1); -extern void func_80161D20(s32 a0, s32 a1); -extern void func_80157A8C(s32 a0); -extern void func_8016706C(s32 a0); -extern u8 D_800D51AC[]; -extern void func_80157AC8(s32 param_1); -extern void func_80157B74(int param_1); -extern void func_8016158C(void *a0); -extern void func_8015BE04(s32 *a0); -extern void func_80157BC8(s32 a0); -extern void func_80157CCC(s32 a0); -extern void func_80157DC4(void *a0); -extern void func_80157FC4(void *a0); -extern void func_80157D74(u16 *a0); -extern void (*D_8018F560[])(void); -extern void func_80157E38(void *); -extern void func_80157E00(void *a0); -extern void func_80157E38(void * a0); -extern s32 func_80157F64(s32 *a0); -extern s32 func_80156600(void *a0); -extern void func_80157EA4(void *a0); -extern void (*D_8018F568[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018F534; -extern void func_80158038(void * param); -extern u8 D_800D524C[]; -extern void func_80161418(void *a0); -extern void func_801580B4(s32 a0); -extern void func_801581AC(s32 a0); -extern void (*D_8018F574[])(void); -extern void func_8015824C(void *a0); -extern void func_801582C0(void *); -extern void func_80158288(void *a0); -extern u8 D_800D52A8[]; -extern void func_801585A4(s32 *a0); -extern void func_801582C0(void *a0); -extern s32 func_801585AC(s32 *a0); -extern u8 D_800D52E8[]; -extern void func_80158344(s32 *a0); -extern s32 func_801615C4(void *a0, s32 a1); -extern u8 D_8018F544; -extern u8 D_800D533C; -extern void func_80158434(s32 param_1); -extern void func_80158548(s32 param_1); -extern void func_801585EC(u8 *a0); -extern void func_80158794(void); -extern s32 D_801E5BE8; -extern s32 D_801E5BF4; -extern s32 D_801E5BF8; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018F5B0[])(s32 *); -extern void func_80158AE4(void *a0); -extern void func_80158AB4(void *a0); -extern void func_8016F264(void); -extern void func_80165840(void); -extern void func_801658DC(void); -extern void func_80165A78(s32); -extern void func_80158AE4(void * a0); -extern M2C_UNK D_800D58D8; -extern void func_80158BB0(void *arg0); -extern s32 func_80159404(s32 a0, s32 a1); -extern void func_80158C40(s32 *a0); -extern void func_80158CD8(s32 *a0); -extern s32 func_80159434(s32 a0, s32 a1); -extern void func_80158D60(s32 a0); -extern M2C_UNK D_800D5904; -extern void func_80158E24(s32 *a0); -extern s32 D_8018F584[]; -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80158F00(int param_1); -extern u8 D_80110C3C[]; -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80158FA4(s32 param_1); -extern s32 func_801399F0(s32 a0); -extern u8 D_80110C94[]; -extern u8 D_80110CD4[]; -extern void func_80159070(void *a0); -extern s32 func_80029A94(s32); -extern void func_80175454(void); -extern void func_800298BC(void *); -extern void func_8002992C(s32); -extern void func_800CF804(void); -extern void func_800CF818(void); -extern u8 D_80110D0C[]; -extern void func_80159120(s32 a0); -extern void func_801592CC(s32 *a0); -extern u8 D_800AE6BD; -extern s32 D_801E5BF0; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018F800[])(void); -extern void func_80159698(void *a0); -extern s32 func_801596D4(void *a0); -extern void func_80174B6C(void); -extern void func_80129248(s16 a0); -extern void func_8013C938(void); -extern void func_8013CB20(void); -extern void func_8013C98C(void); -extern void func_8002850C(s32, s32, s32); -extern void func_80028620(s32, void *); -extern s16 D_800B9AAC[]; -extern s16 D_800B9B00; -extern u16 D_801270C0; -extern u32 D_800AFAE8[]; -extern char D_8018F620[]; -extern s32 func_801596F0(s32 param_1); -extern s32 func_80159874(void); -extern void func_800167B8(s32 a0); -extern s32 func_8015987C(s32 a0); -extern int func_800167F0(int arg); -extern int func_801598BC(void); -extern void func_80159968(void *a0); -extern void func_801598E0(u8 *a0); -extern void (*D_8018F8A4[])(void); -extern void func_80159A20(void *a0); -extern void func_801599E0(void *a0); -extern void func_80159A18(void); -extern void func_80159BE4(s32); -extern void func_80159B08(s32 *a0); -extern void func_80159B70(void *a0); -extern void func_80159B3C(void * a0); -extern void (*D_8018F9F8[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018F814; -extern void func_80159BE4(s32 arg0); -extern void func_8015A1C8(s32 a0); -extern void func_8015A2D8(s32); -extern void func_8015A1FC(s32 *a0); -extern void func_8015A264(void *a0); -extern void func_8015A230(s32 *a0); -extern void (*D_8018FA00[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018F824; -extern s32 func_80172608(u8 *a0); -extern void func_8015A2D8(s32 param_1); -extern u8 D_800D48DC; -extern s32 func_8015AB7C(s32 a0); -extern s32 D_8011F9C4; -extern s32 func_8015ABD4(s32 a0, s32 a1, s32 a2); -extern s32 func_80161CD0(s32 a0, s32 a1); -extern M2C_UNK D_8018F844; -extern void func_8015AC48(s32 arg0); -extern void func_8015AC90(s32 a0); -extern void func_8015ADB0(s32 a0); -extern void func_8015ACC4(s32 *arg0); -extern void func_8015AD3C(void *a0); -extern void func_8015AD08(void *arg0); -extern void (*D_8018FA08[])(void); -extern void func_8015ADB0(s32); -extern void func_8015AD78(s32 a0); -extern void func_8015ADB0(s32 arg0); -extern s32 D_800D4A9C; -extern int func_8015B6F4(int param_1); -extern u8 D_800D4F8C[]; -extern s32 func_8015B7B4(s32 a0); -extern u8 D_800D4BE0[]; -extern s32 func_8014A51C(void); -extern s32 func_8015B858(u8 *a0); -extern s32 D_800D4B48; -extern void func_8015B8F8(s32 *a0); -extern void func_8015BD8C(s32 *a0); -extern s32 func_8015BE94(); -extern void func_8015BE38(struct Obj *a0); -extern s32 func_8015BE74(void); -extern void func_80161124(void *a0); -extern s32 func_8015BE94(s32 *a0); -extern s32 func_8015AE2C(); -extern s32 func_8015BEC4(void); -extern s32 func_8015B950(s32 arg0); -extern s32 func_8015BEE4(void); -extern void func_8015BF04(s32 *a0); -extern void func_8015C0C4(s32 a0); -extern void func_8015BFF4(void *a0); -extern void func_8015BF7C(s32 *a0); -extern void func_8015C030(s32 *a0, s32 a1); -extern void func_8015BFB0(s32 *a0, s32 a1); -extern void (*D_8018FA30[])(void); -extern void func_8015C0C4(s32); -extern void func_8015C08C(s32 a0); -extern s32 func_8015C128(s32 param_1); -extern void func_8015C6A4(void); -extern void func_8015C788(s32 a0); -extern void func_8015C6AC(s32 *a0); -extern void func_8015C714(void *a0); -extern void func_8015C6E0(s32 *a0); -extern void (*D_8018FA3C[])(void); -extern void func_8015C788(s32); -extern void func_8015C750(s32 a0); -extern void func_8015CB94(s32 a0); -extern void func_8015CBCC(void); -extern void func_8015CBD4(void); -extern void func_8015CBDC(void); -extern void func_8015CBE4(void); -extern void func_8015CBEC(void); -extern void func_8015CBF4(void); -extern void func_8015CBFC(void); -extern void func_8015CC04(void); -extern void func_8015CC0C(s32 *param_1); -extern void func_8015CC74(s32 *a0); -extern void func_8015CC40(s32 *a0); -extern s32 func_8015CCD0(); -extern s32 func_8015CCB0(void); -extern s32 func_801725E0(u8 *a0); -extern s32 func_8015CCD0(s32 param_1); -extern s32 func_8015CD20(s32 arg0); -extern void func_8015CF24(s32 a0); -extern void func_8015D01C(); -extern void func_8015CF58(s32 *param_1); -extern void func_8015CFC0(s32 *a0); -extern void func_8015CF8C(s32 *a0); -extern void func_8015CFFC(void); -extern void func_8015D01C(int param_1); -extern void (*D_8018F8B0[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018FAE0; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018EBC4[]; -extern void func_8015D414(int param_1); -extern void func_8015D57C(s32); -extern void func_8015D480(s32 *a0); -extern s32 func_8015D4E8(s16 *a0); -extern void func_8015D4B4(s16 *a0); -extern void func_8015D524(s32 arg0); -extern void func_8015D544(s32 a0); -extern void func_801746DC(void); -extern void func_8015D57C(s32 arg0); -extern s32 func_80161B18(void *a0); -extern s32 func_80161B84(void *a0); -extern void func_80154150(int, int); -extern void func_80149374(int, int); -extern unsigned char D_8018FAF4[]; -extern void func_8015D5E8(int param_1); -extern int func_8015E0D4(int); -extern void func_8015DA5C(s32 a0); -extern void func_8015DB6C(s32 a0); -extern void func_8015DA90(s32 *a0); -extern void func_8015DAF8(s32 *a0); -extern void func_8015DB6C(s32); -extern void func_8015DB34(s32 a0); -extern void func_8015DCB8(s32 a0); -extern void func_8014BD60(s32 a0, s32 a1); -extern int func_8015DD74(int); -extern void func_8015DBD4(void *arg0); -extern int func_8015DC84(int a0); -extern s8 D_8018FB30[]; -extern void func_8015DCB8(s32 param_1); -extern int func_8015DD74(int arg0); -extern void func_8015DECC(s32 a0); -extern void func_8015DDF0(s32 *a0); -extern void func_8015DE58(s32 *a0); -extern void func_8015DECC(s32); -extern void func_8015DE94(s32 a0); -extern void func_8015E018(s32 a0); -extern void func_8015DF34(void *arg0); -extern int func_8015DFE4(int a0); -extern void func_8015E018(s32 param_1); -extern int func_8015E0D4(int a0); -extern void func_8015E22C(s32 a0); -extern void func_8015E150(s32 *a0); -extern s32 func_8015E1B8(s32 a0); -extern void func_8015E184(s32 *arg0); -extern void func_8015E22C(s32); -extern void func_8015E1F4(s32 a0); -extern u8 D_800D4FF4[]; -extern u8 D_800D5098[]; -extern u8 D_800D5060[]; -extern s32 func_8014A850(s32 a0); -extern void func_8015E40C(s32 a0); -extern void func_8015E588(void); -extern void func_8015E4B0(s32 a0); -extern void func_8015E288(s32 a0); -extern u16 D_8018FB78; -extern u16 D_8018FB7A; -extern u16 D_8018FB7C; -extern s32 D_8018FB80; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -extern void func_8013C9C4(void *a0); -extern s32 D_8018FB88; -extern void func_8015E5B0(u8 *self); -extern void func_8015E714(s32 *a0); -extern void func_8015E95C(s32); -extern void func_8015E84C(s32 *a0); -extern void func_8015E8E8(s32 *a0); -extern void func_8015E9B8(s32 *a0); -extern void func_8015E8B4(s32 *a0); -extern void func_8015E924(s32 a0); -extern void func_8015E95C(s32 a0); -extern s16 D_801152A0; -extern void func_80160818(s32 *a0); -extern void func_8015ED6C(s32 *a0); -extern void func_8015EE7C(s32); -extern void func_8015EDA0(s32 *a0); -extern s32 func_8015EE08(s32 a0); -extern void func_8015EDD4(s32 *arg0); -extern void func_8015EE44(s32 a0); -extern int D_800D4C48; -extern int D_8018F894; -extern void func_8015EE7C(s32 param_1); -extern void func_8015EEE0(void *arg0); -extern void func_8015EF9C(void); -extern void func_8015F080(s32); -extern void func_8015EFA4(s32 *a0); -extern void func_8015F00C(s32 *a0); -extern void func_8015EFD8(s32 *a0); -extern void func_8015F048(s32 a0); -extern void func_8015F080(s32 a0); -extern s32 D_80062BE8; -extern void func_801466F0(s32, s32, s32, s32, s32, s32, s32, s32); -extern s32 func_80161208(void); -extern void func_8015F118(void *a0); -extern void func_8015F260(s32 *a0); -extern void func_8015F380(); -extern void func_8015F2BC(s32 *a0); -extern void func_8015F324(s32 *a0); -extern void func_8015F2F0(s32 *a0); -extern void func_8015F360(void); -extern s32 func_801725B8(u8 *a0); -extern void func_8015F380(void* arg0); -extern void func_8015F738(s32 *a0); -extern void func_8015F848(s32 *a0); -extern void func_8015F76C(s32 *a0); -extern s32 func_8015F7D4(s32 a0); -extern void func_8015F7A0(s32 *arg0); -extern void func_8015F810(s32 *a0); -extern void func_80147078(s32 *, s16); -extern void func_80159B70(void *); -extern void func_8015F89C(void *arg0); -extern void func_8015F948(s32 *param_1); -extern void func_8015F9A4(void *arg0); -extern void func_8015FA24(s32 arg0); -extern void func_8015FBE0(s32 *a0); -extern void func_8015FA44(s32 *a0); -extern void func_8015FAAC(s32 *a0); -extern void func_8015FA78(s32 *a0); -extern s32 func_801612B8(void *a0, s32 a1); -extern void func_8016007C(s32 a0); -extern void func_8015FAE8(void *arg0); -extern void func_8015FCC8(void *param_1); -extern unsigned int D_8018FC0C[]; -extern void func_8015FD74(int param_1); -extern s32 func_80028DE0(void); -extern u8 func_80165700(s32 a0, s32 a1); -extern void func_8015FDCC(s32 a0); -extern u8 D_80078EC2; -extern u8 func_801656E8(s32 a0, s32 a1); -extern void func_80165670(s32 a0, s32 a1); -extern void func_8016004C(s32 a0); -extern void func_8015FF20(void *param_1); -extern void func_801601AC(s32 *a0); -extern void func_801600D0(s32 *a0); -extern void func_80160138(s32 *a0); -extern void func_80160104(s32 *a0); -extern void func_80160174(s32 *a0); -extern void func_801601E4(s32 *a0); -extern void func_80160244(s32 *a0); -extern void func_8016032C(void); -extern void func_80160410(s32 *a0); -extern void func_80160334(s32 *a0); -extern void func_8016039C(s32 *a0); -extern void func_80160368(s32 *a0); -extern void func_801603D8(s32 *a0); -extern u8 D_80062BD0; -extern void func_80160410(s32 * a0); -extern void func_801607B8(s32 *a0); -extern void func_801608C0(s32 *a0); -extern void func_801607E4(s32 *a0); -extern void func_8016084C(s32 *a0); -extern void func_80160888(s32 *a0); -extern void func_80160A28(s32 a0); -extern void func_80160A74(s32 *a0); -extern void func_80160BB4(s32 *a0); -extern void func_80160ACC(s32 *a0); -extern s32 func_80160B34(s32 a0); -extern void func_80160B00(s32 *arg0); -extern void func_80160B70(s32 a0); -extern void func_80160C28(void *arg0); -extern void func_80160CB4(s32 *a0); -extern void func_80160D10(void *arg0); -extern void func_80160DEC(u8 *a0); -extern void func_80160F00(); -extern void func_80160E3C(s32 *a0); -extern void func_80160EA4(); -extern void func_80160E70(s32 *a0); -extern void (*D_8018FCBC[])(void); -extern void func_80160EA4(void *a0); -extern void func_80160EE0(void); -extern void func_80160F00(void* arg0); -extern void func_800D0F4C(s32 a0); -extern u8 D_80110EC0; -extern void func_80160F70(s32 a0); -extern void func_80160FE0(s32 *a0); -extern void func_80161034(void *a0); -extern void func_80161094(s32 a0); -extern void func_801610FC(void); -extern void func_801483E8(void); -extern s32 func_80161A60(s32 a0); -extern void func_8016130C(void *a0, s32 a1); -extern void func_80161240(void *a0); -extern void func_80161374(void *a0, s32 a1); -extern void func_80161278(void *a0); -extern s32 func_801612B8(void * a0, s32 a1); -extern void func_8016163C(void *a0, s32 a1); -extern void func_80161774(void *a0, s32 a1); -extern s32 func_8016197C(s32 a0, s32 a1); -extern s32 func_80161488(void *a0); -extern void func_80161888(void *a0, s32 a1); -extern void func_801614E4(void *a0); -extern void func_8016191C(void *a0, s32 a1); -extern void func_8016151C(void *a0); -extern void func_80161554(void *a0); -extern s32 func_801615C4(void * arg0, s32 arg1); -extern s32 func_801619A4(s32 *a0); -extern s32 func_80161A00(s32 a0); -extern s32 func_80161A30(s32 a0); -extern int func_801497A8(void); -extern int func_80161BE0(void *param_1); -extern u16 D_8018FCEC[]; -extern void func_80161C98(int param_1, u32 param_2); -extern void func_80161E08(s32); -extern s32 func_80162438(s32); -extern s32 D_800AE6A8; -extern void func_800D1734(void *); -extern s32 D_8018FD50; -extern void func_80161D88(void); -extern void func_80161E08(s32 param_1); -extern int func_800291DC(int); -extern int func_800D0E30(void *a0); -extern int func_801620C4(void); -extern s32 func_800D0D7C(s32, s32); -extern int D_801E5C00[]; -extern void func_8016216C(void); -extern u8 D_80078EB0; -extern u8 D_80078EB1; -extern s32 func_801621CC(s32 arg0); -extern void func_801622C4(void); -extern void (*D_8018FD74[])(void); -extern void func_80162330(void *a0); -extern void func_8014706C(void *a0); -extern s32 func_8016236C(u8 *a0); -extern void func_800D0C48(s32 a0); -extern s32 func_801623B8(s32 *a0); -extern s32 func_800167F0(s32 a0); -extern s32 func_80162414(void); -extern s32 func_80162438(s32 _unused0); -extern int func_801626B8(void); -extern void func_80162714(void); -extern int D_801E5C58[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018FDBC[])(void); -extern void func_80162834(void *a0); -extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80162968(s32 a0); -extern s32 func_80162ACC(u8 *a0); -extern u8 D_800B5CB8; -extern s32 D_8018FDAC; -extern s32 D_800B5CBC; -extern u8 D_800B5CDF; -extern s32 D_800B5CEC; -extern void func_80162870(s32 param_1); -extern void func_801628F4(s32 *a0); -extern void func_80162968(s32 param_1); -extern void func_80162AC0(s32 *a0, s8 a1); -extern s32 func_80162AE0(u8 *a0); -extern void func_80162AF4(void); -extern void func_80162CC4(void); -extern s32 D_80126D40; -extern void func_80162B1C(void); -extern void func_80162D28(s32 *a0); -extern void func_80162D88(s32 *a0); -extern void func_80162DE8(s32 *a0); -extern void func_80162E48(s32 *a0); -extern void func_80162EA8(s32 *a0); -extern void func_80162F60(s32 arg0, s32 arg1); -extern void func_80162F80(s32 arg0, s32 arg1); -extern void func_80162FA0(s32 arg0, s32 arg1); -extern void func_80162F08(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80162FC0(s32 *a0); -extern void func_80162FF4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801630C4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163194(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg4); -extern void func_8016325C(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163234(s32 a0); -extern s32 D_80115100; -extern s32 func_801632E0(void); -extern s32 D_80115200; -extern s32 func_801632F0(void); -extern u16 D_80126B18[]; -extern void func_80163328(void); -extern s32 func_801633A8(void); -extern s32 func_80163408(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void func_80163534(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, u16 * a5); -extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); -extern char D_801E5054[8]; -extern void *memcpy(void *dst, const void *src, unsigned int n); -extern void func_801634D8(s32 param_1, u16 param_2, u16 param_3, s32 param_4, u16 param_5); -extern void func_80157158(); -extern void func_80163664(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801636D0(s32 a0, s32 a1); -extern s32 func_8016380C(struct S8016380C *a0, s32 a1); -extern void *memcpy(void *dst, void *src, s32 n); -extern s32 func_801638A0(u8 *a0, s32 a1); -extern s32 func_80163950(s32 a0); -extern void (*D_8018FDC4[])(void); -extern void func_80163A58(void *a0); -extern void func_80163A94(s32 param_1); -extern void func_80163C2C(s32 param_1); -extern void func_80163EC8(s32 param_1); -extern void func_80164270(s32 *a0); -extern void func_80164418(void); -extern void func_80163764(s32 a0); -extern void func_801642AC(s32 a0); -extern void func_8016432C(s32 a0); -extern void func_80164410(void); -extern s32 func_80012DBC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164530(s32 arg0); -extern void (*D_8018FE18[])(void); -extern void func_80164744(s32 param_1); -extern void func_8001C810(s32 a0, s32 a1); -extern void func_80164A74(s32 *a0); -extern void func_80164930(s32 a); -extern u16 D_800DF2E0; -extern s32 D_8018FDE0; -extern s16 D_8018FE14; -extern s16 D_8018FE12; -extern s16 D_8018FE10; -extern void func_801647A4(int param_1); -extern void func_80164ACC(); -extern void func_80164864(void *a0); -extern void func_80164930(s32 param_1); -extern s32 func_8014C308(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164ACC(s32 a0); -extern void (*D_8018FE24[])(void); -extern void func_80164BA0(void *a0); -extern void func_8001CD50(s32 a0, s32 a1); -extern void func_800233CC(void *, unsigned short); -extern void func_80164DD0(s32 a0); -extern void func_80164DB0(void); -extern u8 D_801E5CB8; -extern u8 D_801E5CB9; -extern u8 D_801E5CBA; -extern u8 D_801E5CBB; -extern u8 D_801E5CBC; -extern u8 D_801E5CBD; -extern u8 D_801E5CBE; -extern u8 D_801E5CBF; -extern void func_80164BDC(s32 param_1); -extern void func_80164E40(void); -extern void func_80164CD4(u8 *a0); -extern void func_80164D4C(void *arg0); -extern void (*D_8018FE34[])(void); -extern void func_80164EA4(void *a0); -extern void func_80165124(void *a0); -extern void func_80164EE0(int param_1); -extern s32 func_80165140(s32 a0); -extern void func_801651B8(void *a0); -extern void func_80164F44(void *arg0); -extern void func_80165024(void *a0); -extern void func_80165064(s32 *a0); -extern void func_801650C4(s32 *a0); -extern s32 func_80165140(s32 param_1); -extern s32 func_80165240(s32 a0, s32 a1, s32 a2); -extern s32 D_801E5CF8; -extern void func_801651B8(void * param_1); -extern u8 D_80126CF8; -extern void func_8016533C(void); -extern void func_801653F4(s32 a0); -extern void func_80165580(s32 a0); -extern void func_80165374(s32 a0); -extern void func_80165580(s32 _arg0); -extern void func_801653B8(s32 *a0); -extern s32 func_80165624(s32 a0); -extern u8 D_80078EC5; -extern void (*D_8018FE78[])(void); -extern u8 func_80165658(s32 a0, s32 a1); -extern void func_800CAE0C(s32 a0); -extern void func_801654A8(s32 arg0); -extern void func_80165B28(void *a0); -extern void func_801655E4(s32 a0); -extern u8 D_8018FEF4[]; -extern s32 D_8018FF14[]; -extern u8 D_8018FF90[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018FFB0[]; -extern u8 D_8018FFD0[]; -extern void func_800CAF6C(void); -extern void func_80165770(void); -extern void func_801657D8(void); -extern u8 D_80078EC3; -extern void func_801657A0(void); -extern s32 D_80078EA0; -extern s32 D_80078EA8; -extern u8 D_80078EBB; -extern s32 D_80078ED4; -extern s32 D_80078ED8; -extern s32 D_80078EDC; -extern u8 D_80078EE0; -extern void func_80165874(void); -extern s8 D_80078EC4; -extern void func_801658EC(void); -extern s32 func_80165900(void); -extern s32 func_80165910(void); -extern s32 D_8012672C; -extern s32 D_8012811C; -extern s32 D_80126B08; -extern void func_80165938(void); -extern void func_80165958(void); -extern s32 func_80165978(void); -extern void func_80165988(void); -extern s32 func_801659A8(void); -extern void func_801659B8(void); -extern s32 func_801659CC(void); -extern void func_80165A18(void); -extern s32 func_80165A50(s32 _arg0); -extern void func_80165AC8(void); -extern void func_80165A78(s32 arg0); -extern void (*D_8019006C[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_801900E8[])(void); -extern void func_80165BB4(u8 *a0); -extern void func_80165B6C(u8 *a0); -extern void func_80165C58(s32 arg0); -extern void func_80165BFC(void *a0); -extern void func_80165C78(void); -extern M2C_UNK D_801E5064; -extern void func_80165E2C(u16 *arg0); -extern s32 func_80165FA4(s32 a0, s32 a1, s32 a2); -extern s32 func_80167DBC(s32 a0, s32 a1, s32 a2); -extern s32 func_80167AE0(s32 a0, s32 a1, s32 a2); -extern void func_80165E90(void); -extern void func_80020F34(s32 a0, s32 a1); -extern s32 func_80165FA4(s32 arg0, s32 arg1, s32 arg2); -extern void (*D_801900F4[])(void); -extern void func_80166018(void *a0); -extern void func_80166054(s32 arg0); -extern void func_801661CC(s32 param_1); -extern void func_80166244(void* arg0); -extern void func_8016629C(void *a0); -extern void func_801662F4(void *a0); -extern void func_8016634C(void *a0); -extern void func_801663A4(void *a0); -extern void (*D_801900FC[])(void); -extern void func_801663FC(void *a0); -extern u8 D_800D387C[]; -extern u8 D_800D3888[]; -extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); -extern void func_800D1FC8(s32 a0, s32 a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern void func_801665B4(); -extern void func_80146C3C(); -extern void func_80166438(u8 *a0); -extern s32 func_80128ED8(s32 param_1, s32 *param_2); -extern void func_800D22E4(s32 a0); -extern void func_801665B4(s32 *a0); -extern void (*D_801901C4[])(void); -extern void func_80166618(void *a0); -extern void (*D_801901D4[])(void); -extern void func_80166654(void *a0); -extern s32 func_80166690(s32 param_1, s32 param_2); -extern s32 func_80166994(); -extern s32 func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern s32 func_80167540(s32 arg0); -extern void (*D_801901E4[])(void); -extern void func_801678B4(void *a0); -extern void RotMatrixYXZ(void *a0, void *a1); -extern void func_80048EAC(void *a0, void *a1); -extern s32 func_801670E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80146C3C(void); -extern void func_801678F0(s32 a0); -extern void (*D_801901F0[])(void); -extern void func_80167A9C(void *a0); -extern void func_80167AD8(void); -extern s32 func_80167AE0(s32 param_1, s32 param_2, s32 param_3); -extern void func_80168070(s32 a0, s16 *a1, s16 *a2, void *a3); -extern u8 D_80190150[]; -extern u8 D_80190164[]; -extern s32 func_80167DBC(s32 arg0, s32 arg1, s32 arg2); -extern void func_800D20C0(void *a0, void *a1, s32 a2); -extern void func_80017E68(void *a0, void *a1); -extern void func_800D23D0(void *a0); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern s32 D_801269A4; -extern s32 D_801269A8; -extern s32 D_801269AC; -extern void func_80168070(s32 param_1, s16 *param_2, s16 *param_3, void *param_4); -extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_8016829C(s32 a0); -extern s32 func_80166690(s32 a0, s32 a1); -extern void func_80168328(s32 arg0); -extern void func_801683D8(s32 a0); -extern void func_801684B4(s32 a0); -extern void func_80168540(s32 a0); -extern void func_801685EC(s32 a0); -extern void func_80168640(s32 a0); -extern Blk20 D_800AE620; -extern s32 RotMatrixX(s32 a0, void *a1); -extern void func_80168664(void *arg0); -extern void (*D_80190208[])(void); -extern void func_80168744(void *a0); -extern void func_80168BDC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801687CC(s32 a0); -extern void func_80168780(s32 a0); -extern void func_80168828(void); -extern void func_801687CC(s32 param_1); -extern void func_80168828(); -extern void (*D_80190210[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_80190218[])(void); -extern void func_80168AA8(void *a0); -extern void func_80168AE4(s32 a0); -extern void func_800D2318(void); -extern void func_80168BDC(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void (*D_80190220[])(void); -extern void func_80168D58(void *a0); -extern void func_80168D94(int a0); -extern void func_80168F40(); -extern void func_80168EC4(s32 a0); -extern void func_80168F40(void *arg0); -extern void (*D_80190228[])(void); -extern void func_8016901C(void *a0); -extern void func_80169058(s32 a0); -extern s32 func_80169228(void); -extern void func_801691B8(void *a0); -extern void (*D_80190230[])(void); -extern void func_801693CC(void *a0); -extern void func_80169584(s32 param_1); -extern void func_80169408(s32 a0); -extern void func_8016951C(int param_1); -extern s32 func_80017758(void *a0, void *a1); -extern s32 func_80017DC4(void *a0, void *a1); -extern void func_801696D8(s32 a0, s32 a1); -extern void (*D_80190238[])(void); -extern void func_80169830(void *a0); -extern void func_8016986C(s32 a0); -extern s32 func_80169A4C(s32 a0, s32 a1); -extern void func_801699D0(void *arg0); -extern void (*D_801902EC[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_801902F4[])(void); -extern void func_80169F00(void *a0); -extern char D_801902A4[]; -extern char D_80190264[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8019032C[])(void); -extern void func_8016A020(void *a0); -extern void func_8016A05C(void *a0); -extern void func_8016A290(s32 a, void *b, void *c); -extern void func_8016A08C(s32 param_1); -extern void func_8016A1CC(int param_1); -extern void func_8016A290(s32 param_1, void *param_2, void *param_3); -extern void (*D_80190338[])(void); -extern void func_8016A700(void *a0); -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_80126B62; -extern u16 D_80126B66; -extern void func_8016AA50(s32 param_1, s32 param_2); -extern void (*D_80190380[])(void); -extern void func_8016AB30(void *a0); -extern void func_8016B234(void); -extern void func_8016AFB0(s32 a0); -extern void func_8016B114(void *arg0); -extern s32 func_8016B448(s32, s32); -extern s32 func_8016BA48(s32 a0); -extern void func_8016B3F4(s32 a0); -extern s32 func_8016B428(s32 a0); -extern void func_8016B984(void *a0); -extern s32 func_8016B448(s32 arg0, s32 arg1); -extern void (*D_801903FC[])(void); -extern void func_8016B4BC(void *a0); -extern int func_8016B9F8(int); -extern int func_8016B834(int, int); -extern void func_8016B91C(int); -extern int D_801E6018; -extern void func_8016B4F8(int param_1); -extern s32 func_8016B9F8(s32 param_1); -extern void func_8016B6BC(s32, s32, s32, s32); -extern void func_8016B91C(s32); -extern s16 D_801903F0[]; -extern void func_8016B5C0(s32 param_1); -extern void func_8001CD9C(int, void *); -extern int *D_80190434[]; -extern unsigned short D_8019043C[]; -extern unsigned short D_80190444[]; -extern unsigned char D_801E6020[]; -extern int func_8016B834(int param_1, int param_2); -extern void func_8016B964(SrcB964 *a0, DstB964 *a1); -extern void func_8016B91C(s32 arg0); -extern s32 D_801E6018; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8019044C[])(void); -extern void func_8016BBA4(void *a0); -extern s32 func_8016BBE0(s32 param_1); -extern void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3); -extern M2C_UNK D_801E6154; -extern M2C_UNK D_801E6158; -extern void func_8016BCC0(void *arg0); -extern s32 func_8016BD78(s32 param_1); -extern s32 func_8016BEA0(s32 param_1); -extern void func_8016BF34(void *a0); -extern void func_8016BFD0(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern s32 D_801E60E0; -extern void (*D_8019047C[])(void); -extern void func_8016C14C(void *a0); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801E615C[]; -extern u8 D_801E6164[]; -extern u8 D_801E6114[]; -extern void func_8016C2C4(s32 param); -extern s32 func_8016C49C(s32 param_1_arg); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_8016C74C(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern short func_8016CF04(s32 a0, s32 a1); -extern void func_8016C83C(s32 a0); -extern void (*D_80190484[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_801904A0[])(void); -extern void func_8016D19C(void *a0); -extern void (*D_801904A8[])(void); -extern void func_8016D428(void *a0); -extern void func_8016D464(u8 *a0); -extern void func_8016D4DC(s32 a0); -extern void func_8016D5EC(s32 *a0); -extern short func_8016CBC0(void); -extern void func_8016D64C(int param_1); -extern void func_8016D778(s32 a0); -extern void func_800D20C0(); -extern void func_8016D848(s32 *a0); -extern void func_8016D984(s32 *a0); -extern void func_8016DBD8(u8 *a0); -extern void (*D_80190510[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801904B4; -extern u8 D_801904C0; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void (*D_80190544[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8019054C[])(void); -extern void func_8016DF20(void *a0); -extern void func_8016E3CC(s32 a0); -extern void func_8016E1CC(s32 a0); -extern void func_8016E26C(s32 *a0); -extern void func_8016E2E8(void *a0); -extern void func_8016E460(void *a0, void *a1); -extern void func_8016E358(void *a0); -extern void func_8016E460(void *arg0, void *arg1); -extern void (*D_801905A0[])(void); -extern void func_8016E5B8(void *a0); -extern void func_8016E5F4(s32 arg0); -extern void func_8016E778(); -extern void func_8016E688(void *a0); -extern void func_8016E6E4(s32 a0); -extern void func_8016E728(u8 *a0); -extern void func_8016E7C8(int param_1, short *p1, unsigned int *p2); -extern void func_8016E778(int param_1); -extern void func_8016E7C8(int param_1, short *param_2, unsigned int *param_3); -extern s32 D_80115218; -extern void func_8016E8F0(void); -extern void func_8016E918(short param_1, short param_2); -extern s32 func_8016E95C(); -extern u16 D_801905D4[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_801905C4[]; -extern void func_8016EB3C(s32 p); -extern void func_8016EBA8(u8 *param_1); -extern void func_8016ED6C(void); -extern s32 D_80126D70; -extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); -extern void func_8016ED8C(s32 a0, s32 a1, s32 a2); -extern void func_8016EE40(s32 a0, s32 a1, s32 a2); -extern void func_8016EDBC(s32 a0, s32 a1, s32 a2); -extern void func_8016EE94(); -extern void func_8016EDEC(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_8016EF78(s32 a0); -extern void func_8016EE40(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_801726D0(void *a0); -extern s32 D_80126D50; -extern s32 D_80126D54; -extern u8 D_80126D6C; -extern u8 D_80126D6D; -extern u8 D_80126D6E; -extern s32 D_80126D5C; -extern s32 D_80126D60; -extern s16 D_80126D64; -extern s16 D_80126D66; -extern s16 D_80126D68; -extern s16 D_80126D6A; -extern u8 D_80126D1A; -extern s32 D_80127058; -extern s32 D_8012705C; -extern s32 D_80127060; -extern s32 D_80127064; -extern s32 D_80127068; -extern s32 D_8012706C; -extern s32 D_80127070; -extern s32 D_80127074; -extern s16 D_80126D20; -extern void func_8016EE94(s32 a0, s32 a1); -extern s32 func_8016EFC8(s32); -extern s32 func_8016EFA8(s32 a0); -extern void func_8016F094(s32 *a0); -extern s32 func_8016F0AC(); -extern s32 D_801905F0; -extern void func_8016F250(void); -extern void func_8016F288(void); -extern void func_8016F2A8(void); -extern void func_8016F2C8(void); -extern void func_8016F2EC(void); -extern void func_8016F30C(void); -extern void func_8016F330(void); -extern void func_8016F350(void); -extern void func_8016F374(void); -extern void func_8016F388(void); -extern void func_8016F398(void); -extern s32 func_8016F44C(s32 a0); -extern void func_8016F470(s32 a0); -extern s32 func_8016F410(s32 a0); -extern void func_80175414(s32 _arg0); -extern s32 func_8016F4C4(s32); -extern s32 func_8016F494(s32 a0); -extern void func_8016F0E4(void); -extern s32 func_8016F4C4(s32 param_1); -extern void func_8016F4F4(void); -extern void func_801719A4(int a0, int a1); -extern void func_800D1724(s32 a0); -extern void func_80171928(void *a0); -extern void *D_8011F738; -extern void func_8016F4FC(void *a0); -extern void func_8014708C(void *a0); -extern void func_8016F540(void *a0); -extern void func_8016F578(s32 *a0); -extern void func_8016F5B0(void *a0); -extern void func_80147060(u8 *a0); -extern void func_8016F5E0(u8 *a0); -extern void func_8016F610(void *a0); -extern void func_8016F648(void *a0); -extern void func_8016F680(void *a0); -extern void func_8016F6B0(void *a0); -extern void (*D_80190668[])(void); -extern void func_8016F6E0(void *a0); -extern s32 func_80171990(u8 *a0); -extern void func_8016F764(void *a0); -extern void func_8016F71C(u8 *a0); -extern void (*D_80190670[])(void); -extern void func_8016F798(void *a0); -extern void func_8016F804(void *a0); -extern void func_8016F7D4(u8 *a0); -extern void func_80171928(void *); -extern void (*D_80190678[])(void); -extern void func_8016F834(void *a0); -extern void func_8016F8AC(u8 *a0); -extern void func_8016F870(u8 *a0); -extern void func_80172358(u8 *a0, u8 *a1); -extern void (*D_80190680[])(void); -extern void func_8016F8E4(void *a0); -extern void func_8016F95C(void *a0); -extern void func_8016F920(u8 *a0); -extern s32 func_80171CC4(void *a0, void *a1); -extern s32 func_80171D1C(void *a0, void *a1, s32 a2); -extern u16 D_8011F73E; -extern void (*D_80190688[])(void); -extern void func_8016F9C4(void *a0); -extern void func_80171B44(s32 *a0); -extern void func_8016FA44(s32 a0); -extern void func_8016FA00(s32 a0); -extern s32 func_80171C64(s32 a0, s32 a1); -extern void (*D_80190690[])(void); -extern void func_8016FA84(void *a0); -extern void func_8016FB10(void *a0); -extern void func_8016FAC0(u8 *a0); -extern void func_8016FB50(void *a0); -extern void (*D_8019069C[])(void); -extern void func_8016FB7C(void *a0); -extern void func_8016FC24(); -extern void func_8016FBB8(s32 a0); -extern s32 func_80171B4C(s32 a0, s32 a1); -extern void func_8016FC24(s32 a0); -extern void func_8016FC64(void *a0); -extern void (*D_801906A8[])(void); -extern void func_8016FC90(void *a0); -extern void func_8016FD08(u8 *a0); -extern void func_8016FCCC(u8 *a0); -extern s32 func_80172658(s32 *a0); -extern void func_8016FD08(u8 *s0); -extern void func_8016FD7C(s32 *a0); -extern void (*D_801906B4[])(void); -extern void func_8016FDB4(void *a0); -extern void func_8016FE2C(u8 *a0); -extern void func_8016FDF0(u8 *a0); -extern void func_8016FE2C(u8 * a0); -extern s32 func_8016FE78(s32 *a0); -extern s32 func_80172664(s32 *a0); -extern void func_8016FED0(s32 *a0); -extern void (*D_801906C4[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_801906D4[])(void); -extern void func_8016FFDC(void *a0); -extern void func_80170068(u8 *a0); -extern void func_80170018(u8 *a0); -extern void func_801700B8(u8 *a0); -extern void func_80170100(u8 *a0); -extern void (*D_801906DC[])(void); -extern void func_80170150(void *a0); -extern void func_801701C8(u8 *a0); -extern void func_8017018C(u8 *a0); -extern void func_801701C8(u8 * a0); -extern void (*D_801906E4[])(void); -extern void func_80170240(void *a0); -extern void func_801702B8(s32 a0); -extern void func_8017027C(u8 *a0); -extern s16 func_80171AB0(s32 a0, void *a1); -extern void (*D_801906EC[])(void); -extern void func_801702FC(void *a0); -extern void func_80170374(u8 *a0); -extern void func_80170338(u8 *a0); -extern s32 func_8014C168(s32 *a0, s32 a1); -extern void func_80170374(u8 * a0); -extern void (*D_801906F4[])(void); -extern void func_801703E0(void *a0); -extern void func_8017044C(u8 *a0); -extern void func_8017041C(u8 *a0); -extern void func_8017044C(u8 * a0); -extern void (*D_801906FC[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_80190704[])(void); -extern void func_80170548(void *a0); -extern void func_801705C0(u8 *a0); -extern void func_80170584(u8 *a0); -extern void func_801705C0(u8 * a0); -extern void (*D_8019070C[])(void); -extern void func_801705F8(void *a0); -extern void func_80170670(void *a0); -extern void func_80170634(u8 *a0); -extern void func_8012A568(void (*a0)(void)); -extern void (*D_80190714[])(void); -extern void func_801706AC(void *a0); -extern void func_80170718(void *a0); -extern void func_801706E8(u8 *a0); -extern void func_80129FF4(void); -extern void (*D_8019071C[])(void); -extern void func_80170748(void *a0); -extern void func_801707D4(void *a0); -extern void func_80170784(u8 *a0); -extern s32 func_80174ED4(void); -extern void (*D_80190724[])(void); -extern void func_80170810(void *a0); -extern void func_801708B0(void *a0); -extern u8 D_800D5DA8; -extern void func_8017084C(s32 a0); -extern u8 D_800D5A34[]; -extern void func_80170AD8(void *a0); -extern void func_80171904(s32 a0); -extern void func_80170B48(int a0); -extern void func_80170928(void); -extern u8 D_800D59EC[]; -extern void func_80170970(void); -extern u8 D_800D599C[]; -extern void func_801709B8(void); -extern u8 D_800D5934[]; -extern void func_80170A00(void); -extern void func_80170A48(void); -extern u8 D_800D5DC0[]; -extern void func_80170A90(void); -extern void (*D_8019072C[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_80190734[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8019073C[])(void); -extern void func_80170C74(void *a0); -extern s32 func_8017197C(u8 *a0); -extern void func_80170CF0(void *a0); -extern void func_80170CB0(u8 *a0); -extern void (*D_80190744[])(void); -extern void func_80170D68(void *a0); -extern void func_80170DE0(u8 *a0); -extern void func_80170DA4(u8 *a0); -extern s32 D_8011F73C; -extern s32 D_8011F740; -extern void func_801718AC(void *a0); -extern void func_80170DE0(u8 * _arg0); -extern void (*D_8019074C[])(void); -extern void func_80170E34(void *a0); -extern void func_80170EAC(u8 *a0); -extern void func_80170E70(u8 *a0); -extern int func_800D0F8C(int a0); -extern void func_80170EAC(u8 * _arg0); -extern void (*D_80190754[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8019075C[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_80190764[])(void); -extern void func_80171064(void *a0); -extern void func_801710DC(u8 *a0); -extern void func_801710A0(u8 *a0); -extern u16 D_8011F73A; -extern void func_801710DC(u8 * arg0); -extern void (*D_8019076C[])(void); -extern void func_80171120(void *a0); -extern void func_8017118C(u8 *a0); -extern void func_8017115C(u8 *a0); -extern void func_80142454(s32 a0); -extern void func_8017118C(u8 * a0); -extern void (*D_80190774[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8019077C[])(void); -extern void func_80171260(void *a0); -extern s32 func_80012F74(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80171384(void *a0); -extern void (*D_80190784[])(void); -extern void func_801714E4(void *a0); -extern struct B16 D_800A5E88; -extern struct B16 D_800A5E98; -extern struct B16 D_800A5EA8; -extern void func_8017162C(void *a0); -extern void func_80171520(s32 a0); -extern s32 func_801716AC(s32 a0, void *a1, s32 *a2); -extern s32 func_80012FC8(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_800A5E94; -extern u8 D_800A5E95; -extern u8 D_800A5E96; -extern s32 func_801716AC(s32 a0, void * a1, s32 * a2); -extern int func_800D0FE0(int a0); -extern void func_801717A0(void *a0); -extern void func_8013E588(void *a0); -extern void func_801717F4(void *a0); -extern void func_80171824(void *a0); -extern void func_80171854(void *a0); -extern void func_80171884(void); -extern void func_80171A1C(u8 *a0); -extern void func_80171928(void * a0); -extern void func_8017196C(s32 *a0, s8 a1); -extern void func_80171A04(s32 *a0); -extern void func_80171A10(s32 *a0); -extern void func_80171A34(s32 *a0, s8 a1); -extern s32 func_80171A44(u8 *a0); -extern s32 func_80171A58(u8 *a0); -extern s32 func_80171A6C(u8 *a0); -extern void func_80171A80(s32 *a0, s32 a1); -extern s32 func_80171A88(s32 a0); -extern s16 func_80171AB0(s32 param_1, void * _arg1); -extern void func_80171B10(void *a0); -extern void func_80171EC8(s32 a0); -extern s32 func_80171C64(s32 param_1, s32 param_2); -extern s32 func_80171D78(s32 a0, s32 a1); -extern int func_8017250C(short *a0, short *a1); -extern s32 func_80171CC4(void * a0, void * a1); -extern s32 func_80171FFC(short *a0, short *a1, s32 a2); -extern s32 func_80171D1C(void * a0, void * a1, s32 a2); -extern s32 func_8017248C(s32 a0, s32 a1); -extern s32 func_80171E08(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_80047948(s32 a0); -extern s32 func_8004787C(s32 a0); -extern void func_80172170(s32 a0, s32 a1); -extern s32 func_8017209C(void *arg0, void *arg1, s32 arg2, s32 arg3); -extern void func_801722CC(s32 *a0); -extern void func_80172304(s32 *a0); -extern void func_80172310(u8 *a0); -extern void func_801723C4(s32 param_1, s32 param_2); -extern void func_80161C24(s32, s32); -extern void func_80172414(s32 a0); -extern s32 func_801724EC(s32 a0); -extern s32 func_8017248C(s32 arg0, s32 arg1); -extern s32 func_80013450(s32); -extern s32 func_80172560(u8 *a0, u8 *a1); -extern s32 func_8017261C(u8 *a0); -extern s32 func_80172644(u8 *a0); -extern s32 func_80172670(s32 *a0); -extern s32 func_80172688(s32 *a0); -extern s32 func_80172694(s32 *a0); -extern s32 func_801726A0(s32 *a0); -extern s32 func_801726AC(s32 *a0); -extern s32 func_801726B8(s32 *a0); -extern s32 func_801726C4(s32 *a0); -extern s32 func_80172760(s32 a0); -extern s32 func_80174650(s32); -extern void (*D_80127088)(void); -extern s32 D_801270BC; -extern s16 D_80126B0C; -extern void func_801726D0(void * _arg0); -extern void func_80172710(void); -extern void func_80174684(void *); -extern void func_80172738(void); -extern s16 D_80126B30; -extern s32 func_801727D0(void *a0); -extern void func_80172780(void *a0); -extern void func_80172844(u8 *a0); -extern void func_8017280C(u8 *a0); -extern void func_8017288C(void); -extern s32 func_801728E4(void *a0); -extern void func_80172894(void *a0); -extern void func_80172958(u8 *a0); -extern void func_80172920(u8 *a0); -extern s16 D_80126B36; -extern void func_80172958(u8 * a0); -extern void func_801729A8(void); -extern s32 func_801729F0(void *a0); -extern s16 D_80126B34; -extern s16 D_80126B32; -extern void func_801729B0(s32 a0); -extern void func_80172A8C(void *a0); -extern void func_80172A2C(int param_1); -extern void func_80172ACC(u8 *a0); -extern void func_80172B0C(void); -extern s32 func_80172B44(void *a0); -extern void func_80172B14(s16 a0); -extern s32 D_801150F8; -extern void func_80172BC8(void *a0); -extern void func_80172B80(u8 *a0); -extern void func_80172C48(void); -extern void (*D_801907C8[])(void); -extern void func_80172CA0(void *a0); -extern void func_80172D14(u8 *a0); -extern void func_80172CDC(u8 *a0); -extern void func_80172D14(u8 * a0); -extern void func_80172D60(void); -extern s32 D_80127508; -extern s32 func_80172DAC(void *a0); -extern void func_80172D68(s32 a0); -extern void func_80172E20(u8 *a0); -extern void func_80172DE8(u8 *a0); -extern void func_80172E20(u8 * a0); -extern void func_80172E8C(void); -extern void func_8017303C(void *); -extern void func_80172E94(void); -extern void func_80172ED4(void); -extern void func_80172EFC(void); -extern void func_80172F24(void); -extern u8 D_800D47F4[]; -extern void func_80172F4C(void); -extern void func_80172F9C(void); -extern u8 D_800D5C6C[]; -extern void func_80172FEC(void); -extern s32 func_80173078(void *a0); -extern void func_8017303C(void * a0); -extern void func_801730FC(struct S801730FC *a0); -extern void func_801730B4(s32 a0); -extern void func_8017316C(void); -extern s32 func_8017319C(void *a0); -extern void func_80173174(void); -extern u8 D_800D5AA0[]; -extern void func_80173220(void *a0); -extern void func_801731D8(s32 *a0); -extern M2C_UNK D_8019078C; -extern void func_80173220(void * arg0); -extern void func_80173294(void); -extern void func_801732C4(); -extern void func_8017329C(void); -extern void func_801732C4(s32 *a0); -extern void func_8017331C(); -extern void func_801732F4(void); -extern void func_8017331C(s32 *a0); -extern void func_80173374(); -extern void func_8017334C(void); -extern void func_80173374(s32 *a0); -extern void func_801733A4(void); -extern void func_801733CC(s32 a0); -extern void func_801734BC(s32 a0, s32 a1); -extern struct S80126B38 D_80126B38; -extern s16 D_80126B3E; -extern void func_80173460(s32 a0, s32 a1); -extern void func_801734BC(s32 arg0, s32 _unused1); -extern void (*D_801907F8[])(void); -extern void func_80173544(void *a0); -extern void func_801735B8(u8 *a0); -extern void func_80173580(u8 *a0); -extern s16 D_80126B40; -extern void func_801735EC(void *a0); -extern void func_80173648(u8 *a0); -extern void func_801736A8(void); -extern s32 func_8014C118(void *a0, s32 a1, s32 a2); -extern s32 func_801736FC(void *a0); -extern void func_801736B0(s32 a0, s32 a1); -extern void func_80173770(u8 *a0); -extern void func_80173738(u8 *a0); -extern void func_801723C4(s32 a0, s32 a1); -extern void func_801737B0(void); -extern s32 func_801737E8(void *a0); -extern void func_801737B8(s16 a0); -extern void func_8017385C(u8 *a0); -extern void func_80173824(u8 *a0); -extern void func_801738D4(void); -extern s32 func_8017390C(void *a0); -extern void func_801738DC(s16 a0); -extern void func_80173980(u8 *a0); -extern void func_80173948(u8 *a0); -extern void func_801739D8(u8 *a0); -extern void func_80173A20(void); -extern s32 D_8012750C; -extern void func_80173A60(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80173A28(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void (*D_80190834[])(void); -extern void func_80173B4C(void *a0); -extern void func_80173BC0(u8 *a0); -extern void func_80173B88(u8 *a0); -extern s16 D_80126B3A; -extern s16 D_8011F9C8; -extern s32 func_800D0EC4(void); -extern void func_8013E588(void*); -extern void func_80173BC0(u8* a0); -extern void func_80173C64(u8 *a0); -extern u8 D_800D5DB8; -extern void func_80173CB4(s32 a0); -extern void func_80173E1C(s32 a0); -extern s16 D_80126938; -extern void func_800D128C(s32, s32); -extern void func_80174158(s32 a0); -extern void func_8002A088(s32); -extern void func_8002A2D4(s32); -extern void func_8002A544(s32); -extern void func_8002A7B4(s32); -extern s32 func_80174188(s32 a0); -extern void func_801741A8(s32 a0); -extern void func_800D0F0C(s32, s32); -extern void func_80145EE8(s32); -extern void func_80173EF8(void *param_1); -extern s32 func_8014BCEC(s32, s32); -extern void func_801741A8(s32 _arg0); -extern s16 D_80126B3C; -extern void func_801741EC(u8 *a0); -extern void func_80174274(void); -extern s32 func_801742A4(void *a0); -extern void func_8017427C(void); -extern void func_80174318(u8 *a0); -extern void func_801742E0(u8 *a0); -extern void func_80174354(void); -extern s32 func_80174384(void *a0); -extern void func_8017435C(void); -extern void func_801743F0(u8 *a0); -extern void func_801743C0(u8 *a0); -extern void func_801743F0(u8 * a0); -extern void func_80174430(void); -extern s32 func_80174474(void *a0); -extern void func_80174438(s32 a0); -extern void func_801744E0(u8 *a0); -extern void func_801744B0(u8 *a0); -extern void func_80174524(void); -extern void func_80174554(); -extern void func_8017452C(void); -extern void func_80174554(s32 arg0); -extern void func_801745AC(); -extern void func_80174584(void); -extern void func_801745AC(s32 *a0); -extern void func_80174604(void); -extern void func_801745DC(void); -extern void func_80174630(void); -extern s32 func_80174650(s32 _arg0); -extern void func_80174674(void); -extern void func_80174684(void* a0); -extern void func_801746A4(void); -extern s32 func_800CF8CC(void); -extern void func_80174714(void); -extern s32 func_80174754(void); -extern s16 func_80174764(void); -extern s16 func_80174774(void); -extern s32 func_801747CC(void *a0); -extern void func_80174784(void); -extern s32 func_801747AC(s32 a0); -extern s32 func_80174808(u8 *a0); -extern void func_8017481C(void); -extern s32 func_80174888(void *a0); -extern void func_80174824(void); -extern void func_8017484C(s32 a0); -extern void func_801748C4(s32 a0); -extern void func_801748E4(void); -extern void func_8012A018(s32 a, s32 b); -extern s32 func_8017496C(void *a0); -extern s32 D_80126954; -extern s32 D_80126950; -extern s32 D_8012695C; -extern s16 D_80126968; -extern s16 D_8012696A; -extern s16 D_8012696C; -extern s16 D_80126976; -extern s16 D_80126978; -extern s16 D_8012697A; -extern void func_801748EC(void); -extern s32 func_801749C8(); -extern s32 func_801749A8(s32 a0); -extern s32 func_80012ABC(s32, s32, s32); -extern void func_80049CAC(s32 a0, s32 a1); -extern s32 func_801749C8(s32 param_1); -extern void func_80174BBC(void *a0); -extern void func_8012A0E0(void); -extern void func_80174BF4(void *a0); -extern void (*D_8019088C[])(); -extern void func_80174BF4(void * arg0); -extern s32 func_80174CB0(); -extern s32 func_80174C60(s32 a0); -extern void func_80174C80(s32 a0); -extern s16 D_80126940; -extern s16 D_80126942; -extern s16 D_80126944; -extern s32 func_80012ABC(s32 a0, s32 a1, s32 a2); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern s32 func_80174CB0(s32 param_1, s32 param_2); -extern s32 D_8012697C; -extern u16 D_80126980; -extern s32 func_80174F28(void *a0); -extern void func_80174E9C(s32 a0); -extern void func_80174EF0(s32 a0, s16 a1); -extern s32 func_80175014(u8 *a0, u8 *a1, s32 a2); -extern void func_80174F64(u8 *a0); -extern void func_80174FBC(u8 *a0); -extern s32 func_8017509C(u8 *a0, s32 a1, u8 *a2, u8 *a3); -extern void func_80175184(s32 *a0); -extern void func_80175114(s32 *a0); -extern void func_80175184(); -extern void func_80175150(s32 *a0); -extern void (*D_8019089C[])(void*); -extern s32 func_80175268(s32); -extern void func_80175184(s32* arg0); -extern s32 func_80175218(void *a0); -extern void func_801751D8(void *a0); -extern void (*D_801908A4[])(s32); -extern s32 func_80175218(void * param_1); -extern s32 func_80175268(s32 param_1); -extern void func_801752BC(s32 *a0); -extern u8 D_8011F7A8; -extern u8 D_8011F7A9; -extern u8 D_8011F7AE; -extern u16 D_8011F7B4; -extern u16 D_8011F7B6; -extern s16 D_8011F7B8; -extern s16 D_8011F7BA; -extern s16 D_8011F7BC; -extern s16 D_8011F7BE; -extern s16 D_800B9A02; -extern void func_80016714(void *, s32); -extern void func_801757A0(s32); -extern void func_800596F4(s32); -extern void func_80175308(void); -extern u8 D_8011F7AD; -extern void func_80175414(s32 _arg0); -extern void func_80175494(void); -extern void (*D_80190A0C[])(); -extern s32 func_801758FC(void); -extern s32 func_80175820(void); -extern s32 func_801759D8(void); -extern void func_8017553C(s32 *param); -extern void func_801757A0(s32 a0); -extern short D_800B9A02; -extern void func_80175590(void *arg0); -extern void func_80175624(void *a0); -extern void func_801757E0(int); -extern void func_80175668(void); -extern void (*D_80190A18[])(); -extern void func_80175690(s32 *param); -extern void func_80175DA8(s32 a0); -extern void func_80175AB8(s32 a0); -extern void func_80176144(s32 a0); -extern void func_801756E4(s32 arg0); -extern void func_80175798(void); -extern void func_80176734(s32 a0); -extern void func_80176218(s32 a0); -extern void func_80176D00(s32 a0); -extern void func_801757E0(s32 a0); -extern u8 D_80078E78[]; /* cur base ($s5) */ -extern void func_80176FF4(s32); -extern void func_80177340(s32); -extern u32 func_801783D0(s32, s32); -extern void func_80177F84(s32, s32); -extern void func_80177DA8(u8 * p, u32 v, s32 idx); -extern void func_80177AD4(int, unsigned int); -extern s32 func_80024054(u8 *, u8 *); -extern u32 *func_80178298(u32*, u8*, short, short); -extern s32 func_8005A600(s32, s32, s32, s32, s32); -extern void func_80176218(s32 param_1); -extern s32 func_80178004(s32 a0, s32 a1, s32 a2); -extern u8 D_8011F7B1; -extern s16 D_8011F81E; -extern void *func_80177784(void *a0, s32 a1, s32 a2, s32 a3); -extern u32 func_801783D0(s32 a0, s32 a1); -extern void *func_801777BC(); -extern u16 D_8011F82C; -extern u16 D_8011F82A; -extern u32 * func_80176D94(void *param_1, u32 param_2, s16 param_3_); -extern void func_801778A8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80176FF4(s32 a0); -extern u16 D_8011F830; -extern u16 D_8011F82E; -extern u32 * func_801770E0(void *param_1, u32 param_2, s16 param_3_); -extern void func_80177340(s32 a0); -extern u8 D_8011F837; -extern u8 D_8011F7F0; -extern u8 D_8011F7AB; -extern u32 * func_8017742C(u32 *param_1, s32 param_2, s32 param_3); -extern u8 D_8011F83B; -extern void func_801776EC(u8 *a0); -extern void func_801775E0(s32 param_1, s32 param_2); -extern void * func_80177784(void *a0, s32 a1, s32 a2, s32 a3); -extern void * func_801777BC(void *a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_80177940(u32 *p, u32 a_, u32 b_, u32 c_); -extern void func_80177AD4(int param_1, unsigned int param_2); -extern uint * func_80177EA4(uint *param_1, int param_2, uint param_3, int param_4); -extern void func_80177F84(s32 param_1, s32 param_2); -extern u32 * func_80178298(u32 *param_1, u8 *param_2, short param_3, short param_4); -extern M2C_UNK D_801E52AC; -extern void func_80178438(u16 *arg0); -extern void func_801787D4(void); -extern void func_8012A908(void); -extern void func_8017869C(s32 a0); -extern void func_80130D0C(s32 a0); -extern void func_8013E370(void); -extern s32 D_8011DB08; -extern void func_8017849C(void); -extern void func_8013E4B4(void); -extern s16 D_801270C4; -extern s32 D_801274D8; -extern s16 D_801270C2; -extern u8 D_801270C6; -extern u8 D_801270C7; -extern s32 D_801274DC; -extern s32 D_801274E0; -extern void func_80178608(void); -extern void func_80178744(s32 a0, s32 a1); -extern void func_80178840(); -extern void func_80131E00(struct S80131E00 *a0, s32 a1); -extern void func_80178840(int param_1); -extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern s32 func_801788B8(s32 arg0, s32 arg1); -extern s32 func_801789AC(s32 arg0); -extern s16 D_801E7AB0; -extern int func_80178970(void); -/* ==== end §8b carried decl layer ==== */ - - - -extern void func_8017BC38(int a0); -extern void func_8017A4AC(void); -extern void func_8017AE2C(s32 a0); -extern s32 func_801399F0(s32 a0); -extern void func_80178CBC(s32 a0, s32 a1); - -extern short D_801E7B24; -extern s32 D_801E6CB0; -extern s32 D_801E79A0; -extern s32 D_801E689C; -extern s32 D_801E6CDC; -extern s32 D_801E6898; - -s32 func_801789AC(s32 arg0) -{ - s32 ret; - - func_8017BC38(arg0); - func_8017A4AC(); - func_8017AE2C(arg0); - - switch ((s16)(D_801E7B24 - 1)) { - case 0: - ret = func_801399F0(D_801E6CB0); - D_801E79A0 = ret; - if (ret == 0) { - break; - } - func_80178CBC(arg0, D_801E6898); - break; - case 1: - ret = func_801399F0(D_801E6CB0); - D_801E79A0 = ret; - if (ret == 0) { - break; - } - func_80178CBC(arg0, D_801E6898); - break; - case 2: - func_80178CBC(arg0, D_801E6898); - break; - case 3: - if (--D_801E689C > 0) { - break; - } - func_80178CBC(arg0, D_801E6898); - break; - case 4: - ret = ((s32 (*)(s32))D_801E6CDC)(arg0); - if (ret == 0) { - break; - } - func_80178CBC(arg0, D_801E6898); - break; - case 5: - switch (D_801E79A0) { - case -1: - case 1: - return 1; - case 2: - return 2; - case 3: - return 3; - } - break; - } - return 0; -} - -// @class: struct -// @stuck: none — MATCH (pointer var forces &(*(int *)&D_80190B50) into $s0, reused for store + arg-0xC) - - - -s32 func_80178B18(s32 param_1, s32 param_2) -{ - extern void func_80178BF8(void); - extern void func_80178CBC(s32 arg0, s32 arg1); - extern u16 D_80190B50; - - int *p = &(*(int *)&D_80190B50); - *p = ((int)param_2); - func_80178BF8(); - func_801746A4(); - func_8017435C(); - ((void (*)(int, void *))func_80178CBC)(((int)param_1), (char *)p - 0xC); -} - - - -// @class: regalloc-order -// @stuck: none — MATCH (pending verify) - -s32 func_80178B70(s32 param_1, s32 param_2) -{ - extern void func_80178BF8(); - extern void func_80178CBC(); - extern int D_80190B50; - - int *p = &D_80190B50; - *p = ((int)param_2); - func_80178BF8(); - func_80178CBC(((int)param_1), p - 3); -} - - - -DEFINE_func_80178BB8() /* dedup: shared engine-core @0x80178BB8 (src/shared) */ - -// @class: other -// @stuck: none — MATCH (49 ins). Key: init loop pointers via &D_SYMBOL (not (T*)0x801da788 raw int, which emits lui+ori instead of lui%hi+addiu%lo). - - - -s32 func_80178BF8() -{ - extern void func_8017B1D8(void); - extern short D_801E7B24; - extern int D_801E6CB0; - extern short D_801E6CC0; - extern short D_801E6CBC; - extern short D_801E6CB8; - extern short D_801E6CB4; - extern int D_801E79A0; - extern int D_801E6CC8; - extern s16 D_801E6CA8; - extern short D_801E6CA0; - extern short D_801E6CA4; - extern int D_801E7A68; - extern unsigned int D_801E6D18; - extern unsigned short D_801E6C9E; - - unsigned short *puVar1; - int iVar2; - unsigned int *puVar3; - - iVar2 = 9; - puVar3 = &D_801E6D18; - D_801E7B24 = 0; - D_801E6CB0 = 0; - D_801E6CC0 = 0; - D_801E6CBC = 0; - D_801E6CB8 = 0; - D_801E6CB4 = 0; - D_801E79A0 = 1; - D_801E6CC8 = 0; - (*(short *)&D_801E6CA8) = 0; - do { - *puVar3 = 0; - iVar2 = iVar2 + -1; - puVar3 = puVar3 + -1; - } while (-1 < iVar2); - iVar2 = 0x1ff; - puVar1 = &D_801E6C9E; - do { - *puVar1 = 0; - iVar2 = iVar2 + -1; - puVar1 = puVar1 + -1; - } while (-1 < iVar2); - D_801E6CA0 = 0; - D_801E6CA4 = 0; - ((void (*)(int *, int))func_80016714)(&D_801E7A68, 0x14); - func_8017B1D8(); -} - - - -extern s32 D_801E6898; -extern short D_801E7B24; - -void func_80178CBC(s32 arg0, s32 arg1) { - D_801E6898 = arg1; - do { - func_80178D40(arg0, D_801E6898); - } while (D_801E7B24 == 3); -} - - - -extern short D_801E7B24; -extern void func_80174714(void); - -void func_80178D18(void) { - D_801E7B24 = 0; - func_80174714(); -} - diff --git a/src/ov_SC04_019/ov_SC04_019_jr_80178D40.c b/src/ov_SC04_019/ov_SC04_019_jr_80178D40.c deleted file mode 100644 index 1568c8c00..000000000 --- a/src/ov_SC04_019/ov_SC04_019_jr_80178D40.c +++ /dev/null @@ -1,3522 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ - /* 12-byte sub-table record (stride 0xC) */ - /* 0x20 bytes */ - /* 4 + 16*12 = 0xC4 stride */ - /* 0x08 */ - /* 0x20 */ -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8; -typedef void (*Handler)(struct Entry_8016E95C *); -extern void func_801458E0(void); -extern s32 D_800AE6AC; -extern s32 D_800AE6B0; -extern s16 D_800B9A0A; -extern u8 D_80078E50; -extern void func_800D185C(u8 *a0); -extern void func_801458E8(void); -extern s32 func_80029504(void); -extern void func_80145B24(void); -extern u8 D_8018F74C; -extern u8 D_8018F6BC; -extern u8 D_8018F698; -extern u8 D_8018F674; -extern u8 D_8018F728; -extern u8 D_8018F704; -extern u8 D_8018F6E0; -extern u8 D_8018F650; -extern void func_80145934(void); -extern u8 D_8018F7DC; -extern u8 D_8018F7B8; -extern u8 D_8018F794; -extern u8 D_8018F770; -extern void func_80145A2C(void); -extern s32 func_800291DC(s32); -extern void func_800291C8(s32, s32); -extern void func_80162120(void); -extern void func_80029124(s32, s32); -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); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_80145BF8(void); -extern s32 func_800291B4(s32 arg); -extern void func_800291A0(s32, s32); -extern void func_80145C54(void); -extern s32 func_80145CEC(); -extern s32 func_80029178(s32 arg); -extern void func_80146014(s32 a0); -extern unsigned char D_8018EBD4[]; -extern unsigned char D_8018EC04[]; -extern unsigned char D_8018EC54[]; -extern unsigned char D_8018EC84[]; -extern unsigned char D_8018ECB4[]; -extern void func_80145EE8(s32 param_1); -extern void MoveImage(void *a0, s32 a1, s32 a2); -extern void func_80146074(void); -extern s32 func_80146128(void); -extern void func_80146360(void); -extern void func_801463A0(); -extern void func_8014607C(void); -extern s32 *D_80126B78; -extern u8 D_80078EC1; -extern s32 D_80078EC8; -extern s32 D_80126B9C; -extern s32 D_8011F730; -extern u16 D_801152B8; -extern u16 D_8012693A; -extern u8 D_80126BE0[]; -extern u8 D_801150F0[]; -extern void *memcpy(void *dst, const void *src, u32 n); -extern void func_80146FC4(s32 a0); -extern void func_80150A70(s32 a0); -extern void func_80147098(s32 *a0); -extern void func_8014A638(s32 arg0); -extern s32 func_80155458(s32 a0); -extern s32 func_80029104(void); -extern void func_80029344(void); -extern void func_8014ADE0(s32 a0); -extern void func_8014B350(s32 a0); -extern void func_8014B7A4(s16 *param_1); -extern s32 func_80161D58(s32 a0); -extern void func_80161A90(s32 a0); -extern void func_8014B504(u16 *a0); -extern void func_80149BEC(s32 a0); -extern void func_8014B5D0(s32 *a0); -extern void func_8014C99C(u8 *a0); -extern void func_8014B190(s32 s0); -extern void func_80148648(s32 a0, s32 a1); -extern s32 func_80149228(s32 a0); -extern void func_8014A59C(s32 a0); -extern void func_8016F14C(void *a0); -extern void func_80154418(void *a0); -extern void func_80154BE4(s32 a0); -extern void func_80165694(s32 arg0); -extern void func_801654A8(s32 a0); -extern void func_8014A680(s32 a0); -extern void func_8014A6A8(s32 a0); -extern void func_8014A71C(s32 a0); -extern void func_80172588(s32 *a0); -extern void func_801473DC(s32 *a0); -extern void func_80015978(s32 a0, s32 *a1); -extern void (*D_8018ED04[])(void *); -extern u8 D_80126BA4; -extern s32 D_80127098; -extern s32 D_80127094; -extern s32 D_80127090; -extern void func_80146534(void); -extern void func_8001D074(s32 a0, s32 a1); -extern void func_80146554(void); -extern void func_80146578(void); -extern void func_8001CFDC(s32, s32); -extern void func_8014659C(void); -extern void func_8001D074(s32, s32); -extern void func_801465C0(void); -extern void func_801465E4(void); -extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); -extern s32 D_8011F9D0; -extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); -extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 D_8011F750; -extern s32 D_8011F754; -extern u8 * func_801468C8(s32 arg0, u8 arg1); -extern s32 D_8011D030; -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); -extern s32 func_80146B9C(void *a0); -extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); -extern u16 D_8011DA28; -extern s32 func_80146B9C(void * arg0); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80146CA0(void *a0); -extern void func_80146CB4(void *a0); -extern void func_80146CC8(s32 a0); -extern void func_80146D30(s32 a0); -extern void func_80146D80(s32 *a0); -extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80146D90(s32 a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); -extern void func_80146E90(s32 *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80015954(s32 a0, s32 a1); -extern void func_80149374(s32 a0, s32 a1); -extern void func_80146F58(s32 a0, s32 a1); -extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 func_8012A68C(void); -extern s16 func_8012A758(void); -extern void func_8004978C(s16 *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern u8 D_80126DB0[]; -extern u16 D_80126DB6; -extern void func_8014704C(s32 *a0); -extern s32 func_80147054(void *a0); -extern void func_80147060(u8 * a0); -extern void func_8014706C(void *arg0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80147084(s32 *a0); -extern void func_8014708C(void *arg0); -extern s32 func_801470A0(void *a0); -extern void func_801470AC(s32 *a0); -extern void func_801470B4(s32 arg0); -extern void func_801470C0(s32 a0); -extern void func_80147118(s32 a0); -extern s16 D_80126BB8; -extern s16 D_80126BBA; -extern s16 D_80126BBC; -extern void func_80147264(s32 a0); -extern void func_80147290(void); -extern void func_801472B4(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void *D_8012707C; -extern void func_801472DC(void); -extern void func_801472F0(void *a0); -extern void func_80147364(u16, s32); -extern void func_80147300(u16 arg0); -extern void func_80147324(s32 arg0); -extern void func_801473EC(s32 *a0); -extern void func_80147460(s32 a0); -extern void func_80147514(); -extern void func_80147628(s32 a0); -extern void func_80147478(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); -extern s32 func_800129CC(s32 a0, s32 a1); -extern void func_80147514(s32 arg0); -extern void func_80013F3C(s32 a0); -extern void func_80012558(s32 a0, s32 a1); -extern void func_800126C4(s32 a0, s32 a1); -extern void func_800123F0(s32 a0, s32 a1); -extern void func_80147718(s32 a0); -extern void func_80147788(void *a0, s32 a1); -extern void func_801477A8(void *a0, s32 a1); -extern void func_801477C8(void *a0, s32 a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80147814(s32 a0, s32 a1); -extern void func_80147928(int a0, int a1); -extern void func_8014799C(int a0, int a1); -extern void func_80147A10(int a0, int a1); -extern void func_80147860(int a0, int a1, int a2, int a3); -extern void func_80147948(s32 a0, s32 a1, s32 a2); -extern void func_801479BC(s32 a0, s32 a1, s32 a2); -extern void func_80147A30(s32 a0, s32 a1, s32 a2); -extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147948(int a0, int a1, int a2); -extern void func_801479BC(int a0, int a1, int a2); -extern void func_80147A30(int a0, int a1, int a2); -extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147A84(s32 arg0); -extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147AAC(s32 arg0); -extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80147B5C(s32 a0, void *a1); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern void func_80147B18(s32 a0); -extern void func_80147B5C(s32 arg0, void *arg1); -extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147DC0(s32 a0, s32 a1); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147F50(s32 arg0); -extern void func_80148038(s32 a0, s32 a1); -extern s32 ratan2(s32 a0, s32 a1); -extern s32 csqrt(s32 a0); -extern s32 func_80012A60(s32 a0, s32 a1); -extern void func_80148094(int param_1, short *param_2, int *param_3); -extern void func_801485B8(s32 a0, s32 a1, s32 a2); -extern void func_801484B0(s32 a0, s32 a1); -extern s32 func_80154358(void *a0); -extern void func_801484E8(s32 a0, s32 a1); -extern void func_80148534(s32 a0, s32 a1); -extern void func_8014856C(s32 a0, s32 a1); -extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); -extern void func_80148634(void *a0); -extern u8 D_800B9A64; -extern s32 func_80014DC0(); -extern s32 func_80014D68(); -extern s32 func_80014D94(); -extern s32 func_80014CF8(); -extern void func_800120DC(); -extern s32 func_800CF8B4(); -extern u16 func_801487F4(s32 *a0); -extern u16 func_80148800(s32 *a0); -extern u8 func_8014880C(s32 *a0); -extern u16 func_80148818(s32 *a0); -extern s32 func_80047D3C(s32 a0); -extern s32 func_80148824(void *arg0); -extern s32 func_801488A8(u8 *a0); -extern s32 func_8014891C(s32 a0); -extern s32 func_80148980(u8 *a0); -extern s32 func_801489E8(s32 a0); -extern s32 func_80148A48(s32 a0); -extern int func_80148AFC(void *a0); -extern void func_80148AAC(u8 *a0); -extern s32 func_80148C18(void); -extern s32 func_80148C20(s32 a0, s16 a1); -extern s32 func_80148C34(s32 a0, s32 a1); -extern s32 func_80148C4C(s32 a0, s32 a1); -extern s32 func_80148C64(s32 a0, s32 a1); -extern s32 func_80148C7C(void); -extern s32 func_80148C84(s32 a0, s32 a1); -extern s32 func_80148C9C(s32 a0, s32 a1); -extern s32 func_80148CB4(s32 a0, s32 a1); -extern s32 func_80148CCC(s32 a0, s32 a1); -extern s32 func_80148CE4(void); -extern s32 func_80148CEC(void); -extern s32 func_80148CF4(s32 a0, s32 a1); -extern s32 func_80148D0C(s32 a0, s32 a1); -extern s32 func_80148D24(void *a0, int a1); -extern s32 func_80148D3C(void); -extern s32 func_80148F60(void); -extern s32 func_80148F68(s32 a0); -extern s32 func_80148F74(s32 a0); -extern s32 func_80148F80(s32 a0); -extern s32 func_80148F8C(s32 a0); -extern s32 func_80148F98(void); -extern s32 func_80148FA0(s32 a0); -extern s32 func_80148FAC(s32 a0); -extern s32 func_80148FB8(s32 a0); -extern s32 func_80148FC4(s32 a0); -extern s32 func_80148FD0(void); -extern s32 func_80148FD8(void); -extern s32 func_80148FE0(s32 a0); -extern s32 func_80148FEC(s32 a0); -extern s32 func_80148FF8(s32 a0); -extern s32 func_80149004(void); -extern void func_8014900C(s32 *a0); -extern void func_80149020(s32 *a0); -extern void func_80149034(s32 *a0); -extern void func_80149048(s32 *a0); -extern void func_8014905C(u8 *a0); -extern void func_801490E0(s32 *a0, s16 a1); -extern void func_801490E8(s32 *a0, s16 a1); -extern void func_801490F0(s32 *a0, s16 a1); -extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); -extern void func_801490F8(s32 a0, s32 a1); -extern s32 func_801491C4(s32 a0); -extern s32 func_80149184(s32 a0); -extern s32 D_801151D4; -extern void func_80149204(s32 *a0); -extern void func_80149210(s32 a0, s32 a1); -extern s32 func_80149284(s32 *a0, s32 a1); -extern void func_80149350(s32 arg0); -extern void func_80149290(s32 a0); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_80149374(s32 arg0, s32 arg1); -extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8014942C(s32 arg0); -extern void func_8012EF70(s32 a0, s32 a1); -extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012EFB8(s32 a0); -extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); -extern void func_8014964C(s32 param_1, s32 param_2); -extern s32 func_801496D4(void *a0); -extern void func_8015AD08(); -extern void func_80149704(void); -extern void func_8015ACC4(); -extern void func_80149724(void); -extern u8 D_80078EBF; -extern s32 func_80149744(struct S_80149744 *a0); -extern void func_8015F7A0(); -extern void func_80149788(void); -extern void func_801653B8(); -extern void func_80149864(void); -extern s16 currentLocationId; -extern s32 func_8016F1AC(void); -extern s32 func_80149884(void); -extern void func_80160B00(); -extern void func_801498C0(void); -extern s32 func_80149AA8(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern void func_80146750(void *a0); -extern s32 func_801498E0(s32 *a0); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_80147364(u16 a0, s32 a1); -extern s32 func_800CCF28(s32 a0); -extern u8 D_80126B5C; -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_8015DAC4(s32 *a0); -extern void func_8015554C(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern void func_80149B14(s32 *a0); -extern u8 func_8014BEF8(void); -extern s32 func_80149B54(s32 * arg0); -extern void func_8015DE24(s32 *a0); -extern void func_80157510(s32 *a0); -extern void func_80149BAC(s32 *a0); -extern s32 func_80029178(s32 a0); -extern s32 func_80149C08(s32 arg0); -extern void func_801577C8(); -extern void func_80149C94(void); -extern void func_80157D20(void); -extern void func_80149CB4(void); -extern s32 func_80149CD4(s32 a0); -extern u8 func_8014B5B8(s32 *a0); -extern s32 func_80149D10(s32 a0); -extern s32 func_80149E94(s32 a0); -extern s32 func_80149DD8(s32 a0); -extern s32 func_80149D9C(s32 a0); -extern u8 D_801202A0[]; -extern s32 func_80149F2C(s32 a0, s32 a1); -extern s32 func_80149E94(s32 arg0); -extern void func_80149FA8(void); -extern s32 D_8018EDCC[]; -extern u8 D_80078E78[]; -extern s32 func_80149FB0(s32 a0); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern void func_8014A1B0(s32 a0, s32 a1); -extern s32 func_8014A048(s32 param_1); -extern u16 func_80156370(u16 a0); -extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); -extern void func_8015D4B4(); -extern void func_8014A218(void); -extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); -extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); -extern s32 func_8014A238(s32 arg0); -extern s32 func_8014A2E4(s32 a0); -extern void func_8014A380(s32 a0, s32 a1); -extern s16 D_801152B0; -extern s16 D_801152B4; -extern s32 func_8014A3E0(struct S_8014A3E0 *a0); -extern s32 func_8014A454(s32 a0); -extern s32 func_8014A4B4(void *a0); -extern void func_8015EDD4(); -extern void func_8014A4FC(void); -extern s32 func_8014A674(s32 *a0); -extern s32 func_8014A69C(s32 *a0); -extern s32 func_8014A6C4(s32 a0); -extern void func_8015E184(); -extern void func_8014A830(void); -extern s32 func_80029AF4(void); -extern s32 func_8014A850(s32 param_1); -extern void func_8014AA04(s32 a0); -extern void func_801599A4(void *a0); -extern void func_80159B3C(void *a0); -extern s32 func_80165A20(s32 a0); -extern void func_8014AB7C(); -extern void func_8014AC10(); -extern void func_8014AA28(void); -extern void func_8014AB5C(void); -extern void func_80162CCC(void); -extern void func_8014AB7C(s32 arg0); -extern void func_8014ABF0(void); -extern void func_80016714(void *a0, s32 a1); -extern void func_8014AC10(s32 arg0); -extern void func_8014ACC0(s32 a0, s32 a1); -extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); -extern void func_8014ACE8(void *a0, s32 a1, s32 a2); -extern void func_80146AFC(void *a0); -extern void func_8014ADA8(s32 a0, s32 a1); -extern void func_8014AD7C(s32 a0); -extern s32 D_80078E8C; -extern void func_8014B034(s32 arg0); -extern void func_8014B00C(s32 arg0); -extern void func_8014B084(void); -extern s16 D_80078E90; -extern void func_8014B034(s32 a0); -extern u16 D_80078EAC; -extern u8 D_80078EBA; -extern void func_800D10EC(void); -extern void func_8002AC98(void); -extern s32 func_8014B154(s32 *a0); -extern void func_8014B12C(void); -extern void func_8014B2F8(void); -extern void func_8014B4C4(void); -extern void func_8014B160(s32 a0); -extern s32 func_8016F1C4(void); -extern s16 D_80078E96; -extern s16 D_80078EB8; -extern u16 D_80078EA6; -extern void func_8014B2A8(void); -extern void func_8014B310(void); -extern void func_8014B2D0(void); -extern s32 D_80078E94; -extern s32 D_80078ECC; -extern void func_8014B33C(void); -extern u8 D_80062BF4[]; -extern void func_8014BC80(s32 a0, s32 a1); -extern void func_80019064(void *a0); -extern s32 D_80078E98; -extern void func_80166244(); -extern void func_8014B4D4(void *a0); -extern s16 D_80078E9A; -extern u8 D_80126D1C; -extern s32 D_80126D74; -extern void func_8014B598(s32 a0, s32 a1); -extern void func_8014B5B0(s32 *a0); -extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); -extern void func_8014B5D8(s32 s1); -extern s32 D_80078E9C; -extern s32 D_80078ED0; -extern void func_8014B6F0(s32 a0, s32 a1); -extern void func_8014B768(s32 a0, s32 a1); -extern void func_8014B944(s32 a0, s32 a1, s32 a2); -extern s32 D_80078EA4; -extern u16 D_80078EB2; -extern s16 D_80078EB4; -extern void func_8014BB0C(void); -extern void func_8014BB24(s32 a0, s32 a1, s32 a2); -extern void func_8014BC0C(s32 a0, s32 a1); -extern void func_8014BC44(s32 a0, s32 a1); -extern u8 D_800B9A17; -extern void func_8014BCC0(s32 a0, s32 a1); -extern u16 D_80078EB6; -extern s32 func_8014BCEC(s32 a0, s32 a1); -extern void func_8014BD24(s32 a0, s32 a1); -extern void func_8014BD60(s32 param_1, s32 param_2); -extern void func_8014BD98(s32 a0, u16 a1); -extern void func_8014BDC8(void); -extern void func_8014BDE0(void); -extern s32 func_8017267C(s32 *a0); -extern s32 func_80013294(void *a0, void *a1); -extern void func_80029ED4(s32 a0); -extern void func_8014BDE8(s32 a0); -extern void func_8014BE78(void); -extern void func_8014BE9C(void); -extern void func_80029124(s32 a0, s32 a1); -extern void func_8014BEC0(void); -extern void func_8014BF18(s32 a0); -extern void func_8014BF48(void); -extern u8 func_8014BF6C(void); -extern void func_8014BF8C(u8 arg0); -extern void func_8014BFB0(void); -extern u8 func_8014BFD4(void); -extern void func_8014BFF4(s32 a0, s32 a1); -extern void func_8014C010(s32 a0, s32 a1); -extern s32 func_8014C050(s32 a0, s32 a1); -extern s32 func_8014C088(s32 a0, s32 a1); -extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); -extern s32 func_8014C118(void * a0, s32 a1, s32 a2); -extern s32 func_8014C168(s32 * param_1, s32 param_2); -extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); -extern u8 D_8018EE54[]; -extern void func_8014C1A0(s32 arg0, s32 arg1); -extern s32 func_80013328(s32 a0, s32 a1); -extern s32 func_8014C59C(void *a0, void *a1); -extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); -extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); -extern s32 ratan2(s32 dx, s32 dy); -extern u8 D_8018EE5C; -extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); -extern s16 func_8014C5D0(s32 a0, s32 a1); -extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); -extern u8 D_80126D17; -extern void func_8014C6AC(void); -extern void func_8014C6C0(void); -extern u8 D_80126D1E; -extern void func_8014C6D0(void); -extern void func_8014C6E0(void); -extern s32 func_8014C860(s32 a0, s32 a1); -extern void func_8014C8C8(s32 a0, s32 *a1); -extern void func_8014C88C(s32 a0); -extern void func_8014C8C8(s32 dst, s32 * src); -extern void func_8014C8F0(s32 arg0); -extern u8 D_801151F0[]; -extern s32 func_8014C918(s32 a0, s32 a1); -extern s32 D_80126B50; -extern void func_8014C968(void); -extern void func_8014C978(void); -extern s32 func_8014C98C(void); -extern void func_80139914(s32 a0); -extern s32 func_8014CA00(s32 a0); -extern u16 func_8014CA70(s32 a0, s32 a1); -extern s32 func_8014CA14(s32 a0, s32 a1); -extern u16 func_8014CAE4(s32 *a0, s32 a1); -extern s32 func_8014CA88(s32 *a0, s32 a1); -extern s32 func_8014CAFC(void); -extern s32 func_8014CB0C(void); -extern s32 func_8014CB1C(void); -extern u8 D_80126D1F; -extern s32 func_8014CB2C(void); -extern s32 func_8014CB58(void); -extern u8 D_80126D1D; -extern void func_8014CB68(void); -extern s32 func_8014CB7C(void); -extern s32 func_8014CB8C(void); -extern short D_80126C9E; -extern void func_8014CB9C(struct Packed8 *a0); -extern s32 D_80126CDC; -extern void func_8014CBD8(void); -extern s16 D_80126CC4; -extern void func_8014CBE8(void); -extern void func_8014CBF8(void *a0); -extern void func_8014D3E0(s32 a0); -extern void func_8014D04C(void); -extern void func_8014CCB4(void); -extern void func_8014CC28(s32 a0); -extern void func_8014CD0C(u8 *a0); -extern s32 func_8014CF04(s32 a0, s32 a1, void *a2); -extern void func_8014CD80(s32 a0, void *a1, void *a2); -extern void func_8014D0A4(s32 a0); -extern s32 func_8014D2A0(s32 a0, void *a1, void *a2); -extern s32 func_8014D12C(s32 a0, void *a1, void *a2); -extern void func_8014D438(s32 a0); -extern void func_8014D3E0(s32 _arg0); -extern void func_8014D610(s32 a0, void *a1, void *a2); -extern s32 func_8014D4C0(s32 a0, void *a1, void *a2); -extern void func_8014D790(s32 a0); -extern void func_8014D738(void); -extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); -extern s32 func_8014D820(s32 a0, u16 *a1, u16 *a2); -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); -extern void func_8014DF94(s32 arg0); -extern void func_8014DF3C(void); -extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ -extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ -extern s16 D_801152AC; -extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); -extern void func_8014E48C(s32 a0); -extern void func_8014E434(void); -extern void func_8014E5B4(s32 a0, void *a1, void *a2); -extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); -extern void func_8014E6F8(struct SubE6F8 *a0); -extern void func_8014E6A0(void); -extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); -extern void func_8014E934(s32 _arg0); -extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); -extern s32 func_8014E98C(void *a0); -extern u16 D_800B99DA; -extern s32 D_801150D8; -extern s16 D_801152AA; -extern u8 D_80126720[]; -extern s16 D_80126724; -extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); -extern s32 func_8014ED80(struct SubED80 *a0); -extern int D_801E5BA8; -extern void func_8014ED28(s32 _arg0); -extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F24C(struct SubF24C *a0); -extern void func_8014F1F4(void); -extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F4C0(); -extern s32 func_8014F468(void); -extern int func_8014F74C(); -extern int func_8014F6F4(void); -extern u8 D_800D3918[]; -extern u8 D_801152A8[]; -extern s32 D_801152BC; -extern int func_8014F74C(s32 arg0); -extern s32 func_8014FA70(s32 a0); -extern s32 D_801E5BAC; -extern void func_8014FA04(s32 a0); -extern s32 func_8014FBC0(); -extern s32 func_8014FC18(u8 *self); -extern int func_8014FD54(int param_1); -extern void func_8014FCFC(void); -extern void func_80150170(void *a0); -extern s32 func_8014FE60(void *a0); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_8014FE60(void *e); -extern s32 func_80134510(s32 arg); -extern s32 func_80150150(s32 a, s32 b); -extern s32 func_80150460(s32 a, s32 b); -extern void func_801504D8(u16 *a0); -extern s32 func_80150480(s32 _arg0); -extern s32 func_80150528(void *a0, void *a1, void *a2); -extern s32 func_80150528(void *arg0, void *arg1, void *arg2); -extern s32 func_801506A4(s32 a0, s32 a1); -extern s32 func_801505FC(s32 a0); -extern s32 func_801506A4(s32 arg0, s32 arg1); -extern void func_80150820(s32 a0, s32 a1); -extern void func_8015086C(int param_1); -extern s32 func_801508B4(s32 a0); -extern s32 func_8015094C(s32 a0); -extern short func_801508F8(s32 a0); -extern s32 D_8018EE8C; -extern s32 D_80126990; -extern s32 D_80126994; -extern u8 D_80126948[]; -extern s32 func_80021174(s32 a0, s32 a1); -extern s32 func_8015094C(s32 param_1); -extern void func_80150B9C(void); -extern s32 func_80151184(s32 a0, s32 a1, s32 a2); -extern s32 func_80150BA4(s32 a0); -extern s32 func_801619D0(void *a0); -extern void func_80150BC8(s32 *a0); -extern s32 func_80150480(s32 a0); -extern u16 D_800AE6DC; -extern void func_80150C48(s32 a0); -extern int func_80151184(int arg, int a1, int a2); -extern int func_80150CA0(int arg); -extern void func_80150EC4(s32 a, s32 b); -extern void func_80150CC4(s32 a); -extern void func_80150CE4(s32 a); -extern void func_80150D04(s32 a); -extern void func_80150D24(s32 a); -extern void func_80150D44(s32 a); -extern void func_80150D64(s32 a); -extern void func_80150D84(s32 a); -extern void func_80150DA4(s32 a); -extern void func_80150DC4(s32 a); -extern void func_80150DE4(s32 a); -extern void func_80150E04(s32 a); -extern void func_80150E24(s32 a); -extern void func_80150E44(s32 a); -extern void func_80150EC4(s32 a0, s32 a1); -extern void func_80150E64(s32 a0); -extern void func_80150E84(s32 a0); -extern void func_80150EA4(s32 a0); -extern u8 D_800AE6C0; -extern s16 D_800AE6C8; -extern s16 D_800AE6CA; -extern s16 D_800AE6CC; -extern s32 D_800AE6C4; -extern s16 D_800AE6CE; -extern u8 D_800AE6BE; -extern u8 D_801201F8[]; -extern void func_80150F78(void); -extern void func_80150F80(s32 a0); -extern int func_80150FB4(int arg); -extern void func_80150FD8(s32 a0); -extern int func_80151014(int arg); -extern void func_80151038(s32 a0); -extern int func_80151070(int arg); -extern int func_80151094(int arg); -extern void func_801510B8(void); -extern void func_801510C0(void); -extern int func_801510C8(int arg); -extern int func_801510EC(int arg); -extern s32 func_8012DB84(void); -extern s32 func_80151110(void); -extern void func_80151130(void); -extern int func_80151138(int arg); -extern void func_8015115C(s32 *a0, s16 a1); -extern s32 func_80151164(s32 a0, s32 a1); -extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); -extern void func_801511A8(u8 *a0); -extern void func_801511C4(u8 *a0); -extern int func_80151204(int arg, int a1); -extern int func_801511E0(int arg); -extern int func_80151204(int a0, int a1); -extern void func_80151238(void *a0); -extern void func_8015126C(u16 *p); -extern void func_80151780(s32 a0); -extern void func_801516F0(s32 *a0); -extern void func_8015173C(s32 *a0); -extern s16 D_8011DB1A; -extern s32 D_80127518; -extern s32 D_801151FC; -extern s32 func_801725CC(u8 *a0); -extern s32 func_80029D3C(void); -extern void func_80151878(void); -extern void func_80153B58(s32 *a0); -extern s32 func_80151880(s32 a0); -extern s32 func_801518D8(s32 a0); -extern s32 func_80151944(void); -extern s32 func_80151924(void); -extern void func_8014E934(s32 a0); -extern s32 func_8014F3E8(s32 a0); -extern void func_801519C8(s32 a0); -extern void func_80151980(s32 a0); -extern M2C_UNK D_800D5880; -extern s32 D_800D58AC; -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801519C8(s32 arg0); -extern void func_80151C54(s32 a0); -extern void func_801542DC(s32 *a0, s32 a1); -extern void func_8015BDD0(s32 *a0); -extern void func_80165718(s32 a0); -extern u8 D_800D46E4[]; -extern void func_80151AE4(s32 arg0); -extern void (*D_8018EF34[])(void); -extern void func_80151D24(void *a0); -extern void func_80151DB0(s32 a0); -extern void func_80151D60(void *a0); -extern s32 func_80172630(u8 *a0); -extern s32 D_80062C14; -extern void func_80151DB0(s32 param_1); -extern void func_80151E78(s32 *a0); -extern void func_80151ECC(struct S80151ECC *a0); -extern void func_80151FB4(s32 a0); -extern void func_80151F38(s32 *a0); -extern void func_801553C0(s32 a0); -extern void func_80153C18(); -extern void (*D_8018EF58[])(void); -extern void func_80152058(void *a0); -extern void func_801520DC(s32 a0); -extern void func_80152094(s32 a0); -extern void func_80147324(s32 a0); -extern u8 D_80062C04[]; -extern M2C_UNK D_8018EF48; -extern void func_801520DC(s32 arg0); -extern void func_801470B4(s32 a0); -extern void func_8015369C(s32 a0); -extern void func_80152194(s32 *a0); -extern s32 func_801536DC(s32 a0); -extern void func_8015220C(s32 a0); -extern s32 func_80153800(s32 a0); -extern void func_801522CC(s32 a0); -extern void func_80152254(s32 *a0); -extern void (*D_8018EF6C[])(void); -extern void func_80152370(void *a0); -extern void func_801523F4(s32 a0); -extern void func_801523AC(s32 a0); -extern void func_8001382C(s32 a0, void *a1, void *a2); -extern u8 D_8018EF78[]; -extern void func_801523F4(s32 arg0); -extern void func_801525F4(int); -extern s32 func_801535F4(void *arg0); -extern void func_8015BF48(s32 *a0); -extern void func_80152500(int param_1); -extern void func_801525F4(s32 a0); -extern void (*D_8018EF88[])(void); -extern void func_80152698(void *a0); -extern void func_80152714(s32 a0); -extern void func_801526D4(s32 a0); -extern void func_80152790(s32 a0); -extern void (*D_8018EFA0[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018EF90; -extern void func_801528B0(s32 arg0); -extern void func_8015294C(s32 a0); -extern void func_80152A08(s32 a0); -extern void func_80152AC8(s32 a0); -extern void func_80152A50(s32 *a0); -extern void (*D_8018EFB4[])(void); -extern void func_80152B6C(void *a0); -extern void func_80152BF0(s32 a0); -extern void func_80152BA8(s32 a0); -extern void func_80152C80(s32 *a0); -extern void func_80152C40(s32 *a0); -extern void (*D_8018EFD0[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018EFC0; -extern void func_80152DA8(s32 arg0); -extern void func_80152E4C(s32 a0); -extern void func_80152EFC(s32 a0); -extern void func_80152FBC(s32 a0); -extern void func_80152F44(s32 *a0); -extern void (*D_8018EFE4[])(void); -extern void func_80153060(void *a0); -extern void func_801530E4(s32 a0); -extern void func_8015309C(s32 a0); -extern void func_80155440(s32 *a0); -extern void func_801530E4(s32 arg0); -extern void func_80153150(struct S80153150 *a0); -extern void func_801531BC(s32 a0); -extern void func_8015327C(s32 a0); -extern void func_80153204(s32 *a0); -extern void (*D_8018EFF8[])(void); -extern void func_80153320(void *a0); -extern void func_801533A4(s32 a0); -extern void func_8015335C(s32 a0); -extern void func_80153410(s32 *a0); -extern void func_80153490(s32 a0); -extern void func_80153550(s32 a0); -extern void func_801534D8(s32 *a0); -extern void (*D_8011DB28)(s32 a0); -extern s32 func_801536DC(s32 param_1); -extern void func_800139C8(s32 a0, void *a1, void *a2); -extern s32 func_80153978(s32 a0, u16 *src); -extern s32 func_80133784(s32 a0, void *src, s32 dst); -extern s32 func_801539F8(s32 a0, void *a1); -extern s32 func_801539F8(s32 a0, void * a1); -extern s32 func_8016DA04(s32 a0); -extern s32 func_80153BD8(s32 a0); -extern s32 func_80153BF0(s32 a0); -extern void func_80153C18(void); -extern u16 D_8011F748; -extern void func_80153C30(void); -extern void func_80153C74(s16 a0, s16 a1); -extern s16 D_8011DB18; -extern void func_80153C44(int a0, int a1, s16 a2); -extern s16 D_8011DB0C; -extern s32 D_80115210; -extern void func_80153C8C(void); -extern void func_80153C9C(void); -extern s32 func_80153CBC(void); -extern s32 D_8018F00C; -extern void (*D_8018F034[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018F014; -extern void func_80153D7C(s32 param_1); -extern void func_8015410C(void); -extern void func_80153E00(s32 param_1); -extern void func_80151664(void); -extern void func_80154134(u8 *a0); -extern void func_80154190(u8 *a0, s32 a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154218(u8 *a0, s32 a1, s32 a2); -extern void func_801541D8(u8 *a0, s32 a1, s32 a2); -extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); -extern void func_801542A4(); -extern void func_801542A4(s32 *a0, s32 a1); -extern void func_8015430C(); -extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); -extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); -extern s32 func_80154358(void * arg0); -extern void func_80154AB4(s32 a0, s32 a1); -extern void func_80154B20(s32 a0, s32 a1, s32 a2); -extern void func_80154AE0(s32 a0, s32 a1, s32 a2); -extern void func_80154B7C(u8 *a0, s32 a1); -extern void func_80154B4C(u8 *a0, s32 a1); -extern void func_80154BC8(void *a0, s32 a1, s32 a2); -extern void func_80154B98(void *a0, s32 a1, s32 a2); -extern u8 D_800D8D10[]; -extern s16 D_80078E9E; -extern void func_801550FC(s32 a0); -extern void func_80154ED8(s32 a0, s32 a1); -extern void func_80154F9C(s32 a0); -extern void func_800183E0(s32 a0); -extern void func_801550FC(s32 arg0); -extern void func_8001D150(s32, s32); -extern void func_8001D130(int, int); -extern void func_80155150(int param_1); -extern s32 D_800DE2A4[]; -extern void func_801552F4(s32 a0); -extern void func_80155344(s32 a0); -extern s32 func_80155394(s32 *a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80029178(s32); -extern int (*D_8018F080[])(void); -extern s32 func_80155458(s32 param_1); -extern s32 func_801659DC(u8 *a0); -extern s32 func_801554B8(void *arg0); -extern void func_801555F4(void *a0); -extern void func_80155518(s32 *a0); -extern void func_80155580(void *a0); -extern void (*D_8018F084[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern s32 func_80029B4C(s32 a0, s32 a1); -extern s32 func_80029BC8(s32 a0, s32 a1); -extern s32 func_80029C44(s32 a0, s32 a1); -extern s32 func_8015640C(s32 a0, s32 a1); -extern s32 rand(void); -extern u32 func_8015616C(s32 param_1, u16 param_2); -extern u16 func_80156370(u16 param_1); -extern s32 func_801564B0(s32 a0); -extern s32 func_8002A1B4(void); -extern s32 func_8002A400(void); -extern s32 func_8002A670(void); -extern s32 func_8002A8E0(void); -extern s32 D_801151E0[]; -extern s32 func_801565C0(void); -extern void func_80156A14(s32 *a0); -extern void func_80156648(s32 *a0); -extern u8 D_8011DAD8[]; -extern s32 func_8014C568(s16 *a0, s16 *a1); -extern void func_801567BC(s32 a0); -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018F4E8[]; -extern void func_80156A1C(s32 param_1, s32 param_2); -extern s32 D_801150E0[]; -extern void func_80156A88(s32 a0, s32 a1); -extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); -extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); -extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); -extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern s32 func_80135004(s32 a0, void *a1, s32 a2); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801575E4(void *a0); -extern void func_801574DC(s32 *a0); -extern void func_80157544(void *a0); -extern void (*D_8018F4F8[])(void); -extern void func_8014CC28(s32 a0); /* defined */ -extern s32 func_8014F3E8(s32 a0); /* declared */ -extern void func_8015BDD0(s32 *a0); /* defined */ -extern void func_801575E4(void *a0); /* defined */ -extern void func_80157580(s32 arg0); -extern u8 D_800D4F14[]; -extern void func_801576A8(void *arg0); -extern s32 func_8015773C(u8 *a0); -extern s32 func_8015771C(u8 *a0); -extern s32 func_8015773C(u8 * arg0); -extern int D_801E5BE0; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018F520[])(void); -extern void func_80157808(void *param_1); -extern void func_80157880(s32 a0); -extern s32 func_801725A4(u8 *a0); -extern u8 D_800D5128; -extern u8 D_8018F500; -extern void func_801578C0(s32 param_1); -extern void func_80147A84(int); -extern void func_80148038(int, int); -extern void func_80147460(int); -extern void func_80146D90(int); -extern void func_80161450(void *a0); -extern void func_80157A8C(int); -extern void func_80154A74(int, int); -extern unsigned char D_800D5178; -extern unsigned char D_8018F510; -extern void func_8015795C(int param_1); -extern void func_80161D20(s32 a0, s32 a1); -extern void func_80157A8C(s32 a0); -extern void func_8016706C(s32 a0); -extern u8 D_800D51AC[]; -extern void func_80157AC8(s32 param_1); -extern void func_80157B74(int param_1); -extern void func_8016158C(void *a0); -extern void func_8015BE04(s32 *a0); -extern void func_80157BC8(s32 a0); -extern void func_80157CCC(s32 a0); -extern void func_80157DC4(void *a0); -extern void func_80157FC4(void *a0); -extern void func_80157D74(u16 *a0); -extern void (*D_8018F560[])(void); -extern void func_80157E38(void *); -extern void func_80157E00(void *a0); -extern void func_80157E38(void * a0); -extern s32 func_80157F64(s32 *a0); -extern s32 func_80156600(void *a0); -extern void func_80157EA4(void *a0); -extern void (*D_8018F568[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018F534; -extern void func_80158038(void * param); -extern u8 D_800D524C[]; -extern void func_80161418(void *a0); -extern void func_801580B4(s32 a0); -extern void func_801581AC(s32 a0); -extern void (*D_8018F574[])(void); -extern void func_8015824C(void *a0); -extern void func_801582C0(void *); -extern void func_80158288(void *a0); -extern u8 D_800D52A8[]; -extern void func_801585A4(s32 *a0); -extern void func_801582C0(void *a0); -extern s32 func_801585AC(s32 *a0); -extern u8 D_800D52E8[]; -extern void func_80158344(s32 *a0); -extern s32 func_801615C4(void *a0, s32 a1); -extern u8 D_8018F544; -extern u8 D_800D533C; -extern void func_80158434(s32 param_1); -extern void func_80158548(s32 param_1); -extern void func_801585EC(u8 *a0); -extern void func_80158794(void); -extern s32 D_801E5BE8; -extern s32 D_801E5BF4; -extern s32 D_801E5BF8; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018F5B0[])(s32 *); -extern void func_80158AE4(void *a0); -extern void func_80158AB4(void *a0); -extern void func_8016F264(void); -extern void func_80165840(void); -extern void func_801658DC(void); -extern void func_80165A78(s32); -extern void func_80158AE4(void * a0); -extern M2C_UNK D_800D58D8; -extern void func_80158BB0(void *arg0); -extern s32 func_80159404(s32 a0, s32 a1); -extern void func_80158C40(s32 *a0); -extern void func_80158CD8(s32 *a0); -extern s32 func_80159434(s32 a0, s32 a1); -extern void func_80158D60(s32 a0); -extern M2C_UNK D_800D5904; -extern void func_80158E24(s32 *a0); -extern s32 D_8018F584[]; -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80158F00(int param_1); -extern u8 D_80110C3C[]; -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80158FA4(s32 param_1); -extern s32 func_801399F0(s32 a0); -extern u8 D_80110C94[]; -extern u8 D_80110CD4[]; -extern void func_80159070(void *a0); -extern s32 func_80029A94(s32); -extern void func_80175454(void); -extern void func_800298BC(void *); -extern void func_8002992C(s32); -extern void func_800CF804(void); -extern void func_800CF818(void); -extern u8 D_80110D0C[]; -extern void func_80159120(s32 a0); -extern void func_801592CC(s32 *a0); -extern u8 D_800AE6BD; -extern s32 D_801E5BF0; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018F800[])(void); -extern void func_80159698(void *a0); -extern s32 func_801596D4(void *a0); -extern void func_80174B6C(void); -extern void func_80129248(s16 a0); -extern void func_8013C938(void); -extern void func_8013CB20(void); -extern void func_8013C98C(void); -extern void func_8002850C(s32, s32, s32); -extern void func_80028620(s32, void *); -extern s16 D_800B9AAC[]; -extern s16 D_800B9B00; -extern u16 D_801270C0; -extern u32 D_800AFAE8[]; -extern char D_8018F620[]; -extern s32 func_801596F0(s32 param_1); -extern s32 func_80159874(void); -extern void func_800167B8(s32 a0); -extern s32 func_8015987C(s32 a0); -extern int func_800167F0(int arg); -extern int func_801598BC(void); -extern void func_80159968(void *a0); -extern void func_801598E0(u8 *a0); -extern void (*D_8018F8A4[])(void); -extern void func_80159A20(void *a0); -extern void func_801599E0(void *a0); -extern void func_80159A18(void); -extern void func_80159BE4(s32); -extern void func_80159B08(s32 *a0); -extern void func_80159B70(void *a0); -extern void func_80159B3C(void * a0); -extern void (*D_8018F9F8[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018F814; -extern void func_80159BE4(s32 arg0); -extern void func_8015A1C8(s32 a0); -extern void func_8015A2D8(s32); -extern void func_8015A1FC(s32 *a0); -extern void func_8015A264(void *a0); -extern void func_8015A230(s32 *a0); -extern void (*D_8018FA00[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018F824; -extern s32 func_80172608(u8 *a0); -extern void func_8015A2D8(s32 param_1); -extern u8 D_800D48DC; -extern s32 func_8015AB7C(s32 a0); -extern s32 D_8011F9C4; -extern s32 func_8015ABD4(s32 a0, s32 a1, s32 a2); -extern s32 func_80161CD0(s32 a0, s32 a1); -extern M2C_UNK D_8018F844; -extern void func_8015AC48(s32 arg0); -extern void func_8015AC90(s32 a0); -extern void func_8015ADB0(s32 a0); -extern void func_8015ACC4(s32 *arg0); -extern void func_8015AD3C(void *a0); -extern void func_8015AD08(void *arg0); -extern void (*D_8018FA08[])(void); -extern void func_8015ADB0(s32); -extern void func_8015AD78(s32 a0); -extern void func_8015ADB0(s32 arg0); -extern s32 D_800D4A9C; -extern int func_8015B6F4(int param_1); -extern u8 D_800D4F8C[]; -extern s32 func_8015B7B4(s32 a0); -extern u8 D_800D4BE0[]; -extern s32 func_8014A51C(void); -extern s32 func_8015B858(u8 *a0); -extern s32 D_800D4B48; -extern void func_8015B8F8(s32 *a0); -extern void func_8015BD8C(s32 *a0); -extern s32 func_8015BE94(); -extern void func_8015BE38(struct Obj *a0); -extern s32 func_8015BE74(void); -extern void func_80161124(void *a0); -extern s32 func_8015BE94(s32 *a0); -extern s32 func_8015AE2C(); -extern s32 func_8015BEC4(void); -extern s32 func_8015B950(s32 arg0); -extern s32 func_8015BEE4(void); -extern void func_8015BF04(s32 *a0); -extern void func_8015C0C4(s32 a0); -extern void func_8015BFF4(void *a0); -extern void func_8015BF7C(s32 *a0); -extern void func_8015C030(s32 *a0, s32 a1); -extern void func_8015BFB0(s32 *a0, s32 a1); -extern void (*D_8018FA30[])(void); -extern void func_8015C0C4(s32); -extern void func_8015C08C(s32 a0); -extern s32 func_8015C128(s32 param_1); -extern void func_8015C6A4(void); -extern void func_8015C788(s32 a0); -extern void func_8015C6AC(s32 *a0); -extern void func_8015C714(void *a0); -extern void func_8015C6E0(s32 *a0); -extern void (*D_8018FA3C[])(void); -extern void func_8015C788(s32); -extern void func_8015C750(s32 a0); -extern void func_8015CB94(s32 a0); -extern void func_8015CBCC(void); -extern void func_8015CBD4(void); -extern void func_8015CBDC(void); -extern void func_8015CBE4(void); -extern void func_8015CBEC(void); -extern void func_8015CBF4(void); -extern void func_8015CBFC(void); -extern void func_8015CC04(void); -extern void func_8015CC0C(s32 *param_1); -extern void func_8015CC74(s32 *a0); -extern void func_8015CC40(s32 *a0); -extern s32 func_8015CCD0(); -extern s32 func_8015CCB0(void); -extern s32 func_801725E0(u8 *a0); -extern s32 func_8015CCD0(s32 param_1); -extern s32 func_8015CD20(s32 arg0); -extern void func_8015CF24(s32 a0); -extern void func_8015D01C(); -extern void func_8015CF58(s32 *param_1); -extern void func_8015CFC0(s32 *a0); -extern void func_8015CF8C(s32 *a0); -extern void func_8015CFFC(void); -extern void func_8015D01C(int param_1); -extern void (*D_8018F8B0[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018FAE0; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018EBC4[]; -extern void func_8015D414(int param_1); -extern void func_8015D57C(s32); -extern void func_8015D480(s32 *a0); -extern s32 func_8015D4E8(s16 *a0); -extern void func_8015D4B4(s16 *a0); -extern void func_8015D524(s32 arg0); -extern void func_8015D544(s32 a0); -extern void func_801746DC(void); -extern void func_8015D57C(s32 arg0); -extern s32 func_80161B18(void *a0); -extern s32 func_80161B84(void *a0); -extern void func_80154150(int, int); -extern void func_80149374(int, int); -extern unsigned char D_8018FAF4[]; -extern void func_8015D5E8(int param_1); -extern int func_8015E0D4(int); -extern void func_8015DA5C(s32 a0); -extern void func_8015DB6C(s32 a0); -extern void func_8015DA90(s32 *a0); -extern void func_8015DAF8(s32 *a0); -extern void func_8015DB6C(s32); -extern void func_8015DB34(s32 a0); -extern void func_8015DCB8(s32 a0); -extern void func_8014BD60(s32 a0, s32 a1); -extern int func_8015DD74(int); -extern void func_8015DBD4(void *arg0); -extern int func_8015DC84(int a0); -extern s8 D_8018FB30[]; -extern void func_8015DCB8(s32 param_1); -extern int func_8015DD74(int arg0); -extern void func_8015DECC(s32 a0); -extern void func_8015DDF0(s32 *a0); -extern void func_8015DE58(s32 *a0); -extern void func_8015DECC(s32); -extern void func_8015DE94(s32 a0); -extern void func_8015E018(s32 a0); -extern void func_8015DF34(void *arg0); -extern int func_8015DFE4(int a0); -extern void func_8015E018(s32 param_1); -extern int func_8015E0D4(int a0); -extern void func_8015E22C(s32 a0); -extern void func_8015E150(s32 *a0); -extern s32 func_8015E1B8(s32 a0); -extern void func_8015E184(s32 *arg0); -extern void func_8015E22C(s32); -extern void func_8015E1F4(s32 a0); -extern u8 D_800D4FF4[]; -extern u8 D_800D5098[]; -extern u8 D_800D5060[]; -extern s32 func_8014A850(s32 a0); -extern void func_8015E40C(s32 a0); -extern void func_8015E588(void); -extern void func_8015E4B0(s32 a0); -extern void func_8015E288(s32 a0); -extern u16 D_8018FB78; -extern u16 D_8018FB7A; -extern u16 D_8018FB7C; -extern s32 D_8018FB80; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -extern void func_8013C9C4(void *a0); -extern s32 D_8018FB88; -extern void func_8015E5B0(u8 *self); -extern void func_8015E714(s32 *a0); -extern void func_8015E95C(s32); -extern void func_8015E84C(s32 *a0); -extern void func_8015E8E8(s32 *a0); -extern void func_8015E9B8(s32 *a0); -extern void func_8015E8B4(s32 *a0); -extern void func_8015E924(s32 a0); -extern void func_8015E95C(s32 a0); -extern s16 D_801152A0; -extern void func_80160818(s32 *a0); -extern void func_8015ED6C(s32 *a0); -extern void func_8015EE7C(s32); -extern void func_8015EDA0(s32 *a0); -extern s32 func_8015EE08(s32 a0); -extern void func_8015EDD4(s32 *arg0); -extern void func_8015EE44(s32 a0); -extern int D_800D4C48; -extern int D_8018F894; -extern void func_8015EE7C(s32 param_1); -extern void func_8015EEE0(void *arg0); -extern void func_8015EF9C(void); -extern void func_8015F080(s32); -extern void func_8015EFA4(s32 *a0); -extern void func_8015F00C(s32 *a0); -extern void func_8015EFD8(s32 *a0); -extern void func_8015F048(s32 a0); -extern void func_8015F080(s32 a0); -extern s32 D_80062BE8; -extern void func_801466F0(s32, s32, s32, s32, s32, s32, s32, s32); -extern s32 func_80161208(void); -extern void func_8015F118(void *a0); -extern void func_8015F260(s32 *a0); -extern void func_8015F380(); -extern void func_8015F2BC(s32 *a0); -extern void func_8015F324(s32 *a0); -extern void func_8015F2F0(s32 *a0); -extern void func_8015F360(void); -extern s32 func_801725B8(u8 *a0); -extern void func_8015F380(void* arg0); -extern void func_8015F738(s32 *a0); -extern void func_8015F848(s32 *a0); -extern void func_8015F76C(s32 *a0); -extern s32 func_8015F7D4(s32 a0); -extern void func_8015F7A0(s32 *arg0); -extern void func_8015F810(s32 *a0); -extern void func_80147078(s32 *, s16); -extern void func_80159B70(void *); -extern void func_8015F89C(void *arg0); -extern void func_8015F948(s32 *param_1); -extern void func_8015F9A4(void *arg0); -extern void func_8015FA24(s32 arg0); -extern void func_8015FBE0(s32 *a0); -extern void func_8015FA44(s32 *a0); -extern void func_8015FAAC(s32 *a0); -extern void func_8015FA78(s32 *a0); -extern s32 func_801612B8(void *a0, s32 a1); -extern void func_8016007C(s32 a0); -extern void func_8015FAE8(void *arg0); -extern void func_8015FCC8(void *param_1); -extern unsigned int D_8018FC0C[]; -extern void func_8015FD74(int param_1); -extern s32 func_80028DE0(void); -extern u8 func_80165700(s32 a0, s32 a1); -extern void func_8015FDCC(s32 a0); -extern u8 D_80078EC2; -extern u8 func_801656E8(s32 a0, s32 a1); -extern void func_80165670(s32 a0, s32 a1); -extern void func_8016004C(s32 a0); -extern void func_8015FF20(void *param_1); -extern void func_801601AC(s32 *a0); -extern void func_801600D0(s32 *a0); -extern void func_80160138(s32 *a0); -extern void func_80160104(s32 *a0); -extern void func_80160174(s32 *a0); -extern void func_801601E4(s32 *a0); -extern void func_80160244(s32 *a0); -extern void func_8016032C(void); -extern void func_80160410(s32 *a0); -extern void func_80160334(s32 *a0); -extern void func_8016039C(s32 *a0); -extern void func_80160368(s32 *a0); -extern void func_801603D8(s32 *a0); -extern u8 D_80062BD0; -extern void func_80160410(s32 * a0); -extern void func_801607B8(s32 *a0); -extern void func_801608C0(s32 *a0); -extern void func_801607E4(s32 *a0); -extern void func_8016084C(s32 *a0); -extern void func_80160888(s32 *a0); -extern void func_80160A28(s32 a0); -extern void func_80160A74(s32 *a0); -extern void func_80160BB4(s32 *a0); -extern void func_80160ACC(s32 *a0); -extern s32 func_80160B34(s32 a0); -extern void func_80160B00(s32 *arg0); -extern void func_80160B70(s32 a0); -extern void func_80160C28(void *arg0); -extern void func_80160CB4(s32 *a0); -extern void func_80160D10(void *arg0); -extern void func_80160DEC(u8 *a0); -extern void func_80160F00(); -extern void func_80160E3C(s32 *a0); -extern void func_80160EA4(); -extern void func_80160E70(s32 *a0); -extern void (*D_8018FCBC[])(void); -extern void func_80160EA4(void *a0); -extern void func_80160EE0(void); -extern void func_80160F00(void* arg0); -extern void func_800D0F4C(s32 a0); -extern u8 D_80110EC0; -extern void func_80160F70(s32 a0); -extern void func_80160FE0(s32 *a0); -extern void func_80161034(void *a0); -extern void func_80161094(s32 a0); -extern void func_801610FC(void); -extern void func_801483E8(void); -extern s32 func_80161A60(s32 a0); -extern void func_8016130C(void *a0, s32 a1); -extern void func_80161240(void *a0); -extern void func_80161374(void *a0, s32 a1); -extern void func_80161278(void *a0); -extern s32 func_801612B8(void * a0, s32 a1); -extern void func_8016163C(void *a0, s32 a1); -extern void func_80161774(void *a0, s32 a1); -extern s32 func_8016197C(s32 a0, s32 a1); -extern s32 func_80161488(void *a0); -extern void func_80161888(void *a0, s32 a1); -extern void func_801614E4(void *a0); -extern void func_8016191C(void *a0, s32 a1); -extern void func_8016151C(void *a0); -extern void func_80161554(void *a0); -extern s32 func_801615C4(void * arg0, s32 arg1); -extern s32 func_801619A4(s32 *a0); -extern s32 func_80161A00(s32 a0); -extern s32 func_80161A30(s32 a0); -extern int func_801497A8(void); -extern int func_80161BE0(void *param_1); -extern u16 D_8018FCEC[]; -extern void func_80161C98(int param_1, u32 param_2); -extern void func_80161E08(s32); -extern s32 func_80162438(s32); -extern s32 D_800AE6A8; -extern void func_800D1734(void *); -extern s32 D_8018FD50; -extern void func_80161D88(void); -extern void func_80161E08(s32 param_1); -extern int func_800291DC(int); -extern int func_800D0E30(void *a0); -extern int func_801620C4(void); -extern s32 func_800D0D7C(s32, s32); -extern int D_801E5C00[]; -extern void func_8016216C(void); -extern u8 D_80078EB0; -extern u8 D_80078EB1; -extern s32 func_801621CC(s32 arg0); -extern void func_801622C4(void); -extern void (*D_8018FD74[])(void); -extern void func_80162330(void *a0); -extern void func_8014706C(void *a0); -extern s32 func_8016236C(u8 *a0); -extern void func_800D0C48(s32 a0); -extern s32 func_801623B8(s32 *a0); -extern s32 func_800167F0(s32 a0); -extern s32 func_80162414(void); -extern s32 func_80162438(s32 _unused0); -extern int func_801626B8(void); -extern void func_80162714(void); -extern int D_801E5C58[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018FDBC[])(void); -extern void func_80162834(void *a0); -extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80162968(s32 a0); -extern s32 func_80162ACC(u8 *a0); -extern u8 D_800B5CB8; -extern s32 D_8018FDAC; -extern s32 D_800B5CBC; -extern u8 D_800B5CDF; -extern s32 D_800B5CEC; -extern void func_80162870(s32 param_1); -extern void func_801628F4(s32 *a0); -extern void func_80162968(s32 param_1); -extern void func_80162AC0(s32 *a0, s8 a1); -extern s32 func_80162AE0(u8 *a0); -extern void func_80162AF4(void); -extern void func_80162CC4(void); -extern s32 D_80126D40; -extern void func_80162B1C(void); -extern void func_80162D28(s32 *a0); -extern void func_80162D88(s32 *a0); -extern void func_80162DE8(s32 *a0); -extern void func_80162E48(s32 *a0); -extern void func_80162EA8(s32 *a0); -extern void func_80162F60(s32 arg0, s32 arg1); -extern void func_80162F80(s32 arg0, s32 arg1); -extern void func_80162FA0(s32 arg0, s32 arg1); -extern void func_80162F08(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80162FC0(s32 *a0); -extern void func_80162FF4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801630C4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163194(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg4); -extern void func_8016325C(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163234(s32 a0); -extern s32 D_80115100; -extern s32 func_801632E0(void); -extern s32 D_80115200; -extern s32 func_801632F0(void); -extern u16 D_80126B18[]; -extern void func_80163328(void); -extern s32 func_801633A8(void); -extern s32 func_80163408(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void func_80163534(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, u16 * a5); -extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); -extern char D_801E5054[8]; -extern void *memcpy(void *dst, const void *src, unsigned int n); -extern void func_801634D8(s32 param_1, u16 param_2, u16 param_3, s32 param_4, u16 param_5); -extern void func_80157158(); -extern void func_80163664(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801636D0(s32 a0, s32 a1); -extern s32 func_8016380C(struct S8016380C *a0, s32 a1); -extern void *memcpy(void *dst, void *src, s32 n); -extern s32 func_801638A0(u8 *a0, s32 a1); -extern s32 func_80163950(s32 a0); -extern void (*D_8018FDC4[])(void); -extern void func_80163A58(void *a0); -extern void func_80163A94(s32 param_1); -extern void func_80163C2C(s32 param_1); -extern void func_80163EC8(s32 param_1); -extern void func_80164270(s32 *a0); -extern void func_80164418(void); -extern void func_80163764(s32 a0); -extern void func_801642AC(s32 a0); -extern void func_8016432C(s32 a0); -extern void func_80164410(void); -extern s32 func_80012DBC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164530(s32 arg0); -extern void (*D_8018FE18[])(void); -extern void func_80164744(s32 param_1); -extern void func_8001C810(s32 a0, s32 a1); -extern void func_80164A74(s32 *a0); -extern void func_80164930(s32 a); -extern u16 D_800DF2E0; -extern s32 D_8018FDE0; -extern s16 D_8018FE14; -extern s16 D_8018FE12; -extern s16 D_8018FE10; -extern void func_801647A4(int param_1); -extern void func_80164ACC(); -extern void func_80164864(void *a0); -extern void func_80164930(s32 param_1); -extern s32 func_8014C308(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164ACC(s32 a0); -extern void (*D_8018FE24[])(void); -extern void func_80164BA0(void *a0); -extern void func_8001CD50(s32 a0, s32 a1); -extern void func_800233CC(void *, unsigned short); -extern void func_80164DD0(s32 a0); -extern void func_80164DB0(void); -extern u8 D_801E5CB8; -extern u8 D_801E5CB9; -extern u8 D_801E5CBA; -extern u8 D_801E5CBB; -extern u8 D_801E5CBC; -extern u8 D_801E5CBD; -extern u8 D_801E5CBE; -extern u8 D_801E5CBF; -extern void func_80164BDC(s32 param_1); -extern void func_80164E40(void); -extern void func_80164CD4(u8 *a0); -extern void func_80164D4C(void *arg0); -extern void (*D_8018FE34[])(void); -extern void func_80164EA4(void *a0); -extern void func_80165124(void *a0); -extern void func_80164EE0(int param_1); -extern s32 func_80165140(s32 a0); -extern void func_801651B8(void *a0); -extern void func_80164F44(void *arg0); -extern void func_80165024(void *a0); -extern void func_80165064(s32 *a0); -extern void func_801650C4(s32 *a0); -extern s32 func_80165140(s32 param_1); -extern s32 func_80165240(s32 a0, s32 a1, s32 a2); -extern s32 D_801E5CF8; -extern void func_801651B8(void * param_1); -extern u8 D_80126CF8; -extern void func_8016533C(void); -extern void func_801653F4(s32 a0); -extern void func_80165580(s32 a0); -extern void func_80165374(s32 a0); -extern void func_80165580(s32 _arg0); -extern void func_801653B8(s32 *a0); -extern s32 func_80165624(s32 a0); -extern u8 D_80078EC5; -extern void (*D_8018FE78[])(void); -extern u8 func_80165658(s32 a0, s32 a1); -extern void func_800CAE0C(s32 a0); -extern void func_801654A8(s32 arg0); -extern void func_80165B28(void *a0); -extern void func_801655E4(s32 a0); -extern u8 D_8018FEF4[]; -extern s32 D_8018FF14[]; -extern u8 D_8018FF90[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018FFB0[]; -extern u8 D_8018FFD0[]; -extern void func_800CAF6C(void); -extern void func_80165770(void); -extern void func_801657D8(void); -extern u8 D_80078EC3; -extern void func_801657A0(void); -extern s32 D_80078EA0; -extern s32 D_80078EA8; -extern u8 D_80078EBB; -extern s32 D_80078ED4; -extern s32 D_80078ED8; -extern s32 D_80078EDC; -extern u8 D_80078EE0; -extern void func_80165874(void); -extern s8 D_80078EC4; -extern void func_801658EC(void); -extern s32 func_80165900(void); -extern s32 func_80165910(void); -extern s32 D_8012672C; -extern s32 D_8012811C; -extern s32 D_80126B08; -extern void func_80165938(void); -extern void func_80165958(void); -extern s32 func_80165978(void); -extern void func_80165988(void); -extern s32 func_801659A8(void); -extern void func_801659B8(void); -extern s32 func_801659CC(void); -extern void func_80165A18(void); -extern s32 func_80165A50(s32 _arg0); -extern void func_80165AC8(void); -extern void func_80165A78(s32 arg0); -extern void (*D_8019006C[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_801900E8[])(void); -extern void func_80165BB4(u8 *a0); -extern void func_80165B6C(u8 *a0); -extern void func_80165C58(s32 arg0); -extern void func_80165BFC(void *a0); -extern void func_80165C78(void); -extern M2C_UNK D_801E5064; -extern void func_80165E2C(u16 *arg0); -extern s32 func_80165FA4(s32 a0, s32 a1, s32 a2); -extern s32 func_80167DBC(s32 a0, s32 a1, s32 a2); -extern s32 func_80167AE0(s32 a0, s32 a1, s32 a2); -extern void func_80165E90(void); -extern void func_80020F34(s32 a0, s32 a1); -extern s32 func_80165FA4(s32 arg0, s32 arg1, s32 arg2); -extern void (*D_801900F4[])(void); -extern void func_80166018(void *a0); -extern void func_80166054(s32 arg0); -extern void func_801661CC(s32 param_1); -extern void func_80166244(void* arg0); -extern void func_8016629C(void *a0); -extern void func_801662F4(void *a0); -extern void func_8016634C(void *a0); -extern void func_801663A4(void *a0); -extern void (*D_801900FC[])(void); -extern void func_801663FC(void *a0); -extern u8 D_800D387C[]; -extern u8 D_800D3888[]; -extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); -extern void func_800D1FC8(s32 a0, s32 a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern void func_801665B4(); -extern void func_80146C3C(); -extern void func_80166438(u8 *a0); -extern s32 func_80128ED8(s32 param_1, s32 *param_2); -extern void func_800D22E4(s32 a0); -extern void func_801665B4(s32 *a0); -extern void (*D_801901C4[])(void); -extern void func_80166618(void *a0); -extern void (*D_801901D4[])(void); -extern void func_80166654(void *a0); -extern s32 func_80166690(s32 param_1, s32 param_2); -extern s32 func_80166994(); -extern s32 func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern s32 func_80167540(s32 arg0); -extern void (*D_801901E4[])(void); -extern void func_801678B4(void *a0); -extern void RotMatrixYXZ(void *a0, void *a1); -extern void func_80048EAC(void *a0, void *a1); -extern s32 func_801670E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80146C3C(void); -extern void func_801678F0(s32 a0); -extern void (*D_801901F0[])(void); -extern void func_80167A9C(void *a0); -extern void func_80167AD8(void); -extern s32 func_80167AE0(s32 param_1, s32 param_2, s32 param_3); -extern void func_80168070(s32 a0, s16 *a1, s16 *a2, void *a3); -extern u8 D_80190150[]; -extern u8 D_80190164[]; -extern s32 func_80167DBC(s32 arg0, s32 arg1, s32 arg2); -extern void func_800D20C0(void *a0, void *a1, s32 a2); -extern void func_80017E68(void *a0, void *a1); -extern void func_800D23D0(void *a0); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern s32 D_801269A4; -extern s32 D_801269A8; -extern s32 D_801269AC; -extern void func_80168070(s32 param_1, s16 *param_2, s16 *param_3, void *param_4); -extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_8016829C(s32 a0); -extern s32 func_80166690(s32 a0, s32 a1); -extern void func_80168328(s32 arg0); -extern void func_801683D8(s32 a0); -extern void func_801684B4(s32 a0); -extern void func_80168540(s32 a0); -extern void func_801685EC(s32 a0); -extern void func_80168640(s32 a0); -extern s32 RotMatrixX(s32 a0, void *a1); -extern void func_80168664(void *arg0); -extern void (*D_80190208[])(void); -extern void func_80168744(void *a0); -extern void func_80168BDC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801687CC(s32 a0); -extern void func_80168780(s32 a0); -extern void func_80168828(void); -extern void func_801687CC(s32 param_1); -extern void func_80168828(); -extern void (*D_80190210[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_80190218[])(void); -extern void func_80168AA8(void *a0); -extern void func_80168AE4(s32 a0); -extern void func_800D2318(void); -extern void func_80168BDC(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void (*D_80190220[])(void); -extern void func_80168D58(void *a0); -extern void func_80168D94(int a0); -extern void func_80168F40(); -extern void func_80168EC4(s32 a0); -extern void func_80168F40(void *arg0); -extern void (*D_80190228[])(void); -extern void func_8016901C(void *a0); -extern void func_80169058(s32 a0); -extern s32 func_80169228(void); -extern void func_801691B8(void *a0); -extern void (*D_80190230[])(void); -extern void func_801693CC(void *a0); -extern void func_80169584(s32 param_1); -extern void func_80169408(s32 a0); -extern void func_8016951C(int param_1); -extern s32 func_80017758(void *a0, void *a1); -extern s32 func_80017DC4(void *a0, void *a1); -extern void func_801696D8(s32 a0, s32 a1); -extern void (*D_80190238[])(void); -extern void func_80169830(void *a0); -extern void func_8016986C(s32 a0); -extern s32 func_80169A4C(s32 a0, s32 a1); -extern void func_801699D0(void *arg0); -extern void (*D_801902EC[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_801902F4[])(void); -extern void func_80169F00(void *a0); -extern char D_801902A4[]; -extern char D_80190264[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8019032C[])(void); -extern void func_8016A020(void *a0); -extern void func_8016A05C(void *a0); -extern void func_8016A290(s32 a, void *b, void *c); -extern void func_8016A08C(s32 param_1); -extern void func_8016A1CC(int param_1); -extern void func_8016A290(s32 param_1, void *param_2, void *param_3); -extern void (*D_80190338[])(void); -extern void func_8016A700(void *a0); -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_80126B62; -extern u16 D_80126B66; -extern void func_8016AA50(s32 param_1, s32 param_2); -extern void (*D_80190380[])(void); -extern void func_8016AB30(void *a0); -extern void func_8016B234(void); -extern void func_8016AFB0(s32 a0); -extern void func_8016B114(void *arg0); -extern s32 func_8016B448(s32, s32); -extern s32 func_8016BA48(s32 a0); -extern void func_8016B3F4(s32 a0); -extern s32 func_8016B428(s32 a0); -extern void func_8016B984(void *a0); -extern s32 func_8016B448(s32 arg0, s32 arg1); -extern void (*D_801903FC[])(void); -extern void func_8016B4BC(void *a0); -extern int func_8016B9F8(int); -extern int func_8016B834(int, int); -extern void func_8016B91C(int); -extern int D_801E6018; -extern void func_8016B4F8(int param_1); -extern s32 func_8016B9F8(s32 param_1); -extern void func_8016B6BC(s32, s32, s32, s32); -extern void func_8016B91C(s32); -extern s16 D_801903F0[]; -extern void func_8016B5C0(s32 param_1); -extern void func_8001CD9C(int, void *); -extern int *D_80190434[]; -extern unsigned short D_8019043C[]; -extern unsigned short D_80190444[]; -extern unsigned char D_801E6020[]; -extern int func_8016B834(int param_1, int param_2); -extern void func_8016B964(SrcB964 *a0, DstB964 *a1); -extern void func_8016B91C(s32 arg0); -extern s32 D_801E6018; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8019044C[])(void); -extern void func_8016BBA4(void *a0); -extern s32 func_8016BBE0(s32 param_1); -extern void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3); -extern M2C_UNK D_801E6154; -extern M2C_UNK D_801E6158; -extern void func_8016BCC0(void *arg0); -extern s32 func_8016BD78(s32 param_1); -extern s32 func_8016BEA0(s32 param_1); -extern void func_8016BF34(void *a0); -extern void func_8016BFD0(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern s32 D_801E60E0; -extern void (*D_8019047C[])(void); -extern void func_8016C14C(void *a0); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801E615C[]; -extern u8 D_801E6164[]; -extern u8 D_801E6114[]; -extern void func_8016C2C4(s32 param); -extern s32 func_8016C49C(s32 param_1_arg); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_8016C74C(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern short func_8016CF04(s32 a0, s32 a1); -extern void func_8016C83C(s32 a0); -extern void (*D_80190484[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_801904A0[])(void); -extern void func_8016D19C(void *a0); -extern void (*D_801904A8[])(void); -extern void func_8016D428(void *a0); -extern void func_8016D464(u8 *a0); -extern void func_8016D4DC(s32 a0); -extern void func_8016D5EC(s32 *a0); -extern short func_8016CBC0(void); -extern void func_8016D64C(int param_1); -extern void func_8016D778(s32 a0); -extern void func_800D20C0(); -extern void func_8016D848(s32 *a0); -extern void func_8016D984(s32 *a0); -extern void func_8016DBD8(u8 *a0); -extern void (*D_80190510[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801904B4; -extern u8 D_801904C0; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void (*D_80190544[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8019054C[])(void); -extern void func_8016DF20(void *a0); -extern void func_8016E3CC(s32 a0); -extern void func_8016E1CC(s32 a0); -extern void func_8016E26C(s32 *a0); -extern void func_8016E2E8(void *a0); -extern void func_8016E460(void *a0, void *a1); -extern void func_8016E358(void *a0); -extern void func_8016E460(void *arg0, void *arg1); -extern void (*D_801905A0[])(void); -extern void func_8016E5B8(void *a0); -extern void func_8016E5F4(s32 arg0); -extern void func_8016E778(); -extern void func_8016E688(void *a0); -extern void func_8016E6E4(s32 a0); -extern void func_8016E728(u8 *a0); -extern void func_8016E7C8(int param_1, short *p1, unsigned int *p2); -extern void func_8016E778(int param_1); -extern void func_8016E7C8(int param_1, short *param_2, unsigned int *param_3); -extern s32 D_80115218; -extern void func_8016E8F0(void); -extern void func_8016E918(short param_1, short param_2); -extern s32 func_8016E95C(); -extern u16 D_801905D4[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_801905C4[]; -extern void func_8016EB3C(s32 p); -extern void func_8016EBA8(u8 *param_1); -extern void func_8016ED6C(void); -extern s32 D_80126D70; -extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); -extern void func_8016ED8C(s32 a0, s32 a1, s32 a2); -extern void func_8016EE40(s32 a0, s32 a1, s32 a2); -extern void func_8016EDBC(s32 a0, s32 a1, s32 a2); -extern void func_8016EE94(); -extern void func_8016EDEC(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_8016EF78(s32 a0); -extern void func_8016EE40(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_801726D0(void *a0); -extern s32 D_80126D50; -extern s32 D_80126D54; -extern u8 D_80126D6C; -extern u8 D_80126D6D; -extern u8 D_80126D6E; -extern s32 D_80126D5C; -extern s32 D_80126D60; -extern s16 D_80126D64; -extern s16 D_80126D66; -extern s16 D_80126D68; -extern s16 D_80126D6A; -extern u8 D_80126D1A; -extern s32 D_80127058; -extern s32 D_8012705C; -extern s32 D_80127060; -extern s32 D_80127064; -extern s32 D_80127068; -extern s32 D_8012706C; -extern s32 D_80127070; -extern s32 D_80127074; -extern s16 D_80126D20; -extern void func_8016EE94(s32 a0, s32 a1); -extern s32 func_8016EFC8(s32); -extern s32 func_8016EFA8(s32 a0); -extern void func_8016F094(s32 *a0); -extern s32 func_8016F0AC(); -extern s32 D_801905F0; -extern void func_8016F250(void); -extern void func_8016F288(void); -extern void func_8016F2A8(void); -extern void func_8016F2C8(void); -extern void func_8016F2EC(void); -extern void func_8016F30C(void); -extern void func_8016F330(void); -extern void func_8016F350(void); -extern void func_8016F374(void); -extern void func_8016F388(void); -extern void func_8016F398(void); -extern s32 func_8016F44C(s32 a0); -extern void func_8016F470(s32 a0); -extern s32 func_8016F410(s32 a0); -extern void func_80175414(s32 _arg0); -extern s32 func_8016F4C4(s32); -extern s32 func_8016F494(s32 a0); -extern void func_8016F0E4(void); -extern s32 func_8016F4C4(s32 param_1); -extern void func_8016F4F4(void); -extern void func_801719A4(int a0, int a1); -extern void func_800D1724(s32 a0); -extern void func_80171928(void *a0); -extern void *D_8011F738; -extern void func_8016F4FC(void *a0); -extern void func_8014708C(void *a0); -extern void func_8016F540(void *a0); -extern void func_8016F578(s32 *a0); -extern void func_8016F5B0(void *a0); -extern void func_80147060(u8 *a0); -extern void func_8016F5E0(u8 *a0); -extern void func_8016F610(void *a0); -extern void func_8016F648(void *a0); -extern void func_8016F680(void *a0); -extern void func_8016F6B0(void *a0); -extern void (*D_80190668[])(void); -extern void func_8016F6E0(void *a0); -extern s32 func_80171990(u8 *a0); -extern void func_8016F764(void *a0); -extern void func_8016F71C(u8 *a0); -extern void (*D_80190670[])(void); -extern void func_8016F798(void *a0); -extern void func_8016F804(void *a0); -extern void func_8016F7D4(u8 *a0); -extern void func_80171928(void *); -extern void (*D_80190678[])(void); -extern void func_8016F834(void *a0); -extern void func_8016F8AC(u8 *a0); -extern void func_8016F870(u8 *a0); -extern void func_80172358(u8 *a0, u8 *a1); -extern void (*D_80190680[])(void); -extern void func_8016F8E4(void *a0); -extern void func_8016F95C(void *a0); -extern void func_8016F920(u8 *a0); -extern s32 func_80171CC4(void *a0, void *a1); -extern s32 func_80171D1C(void *a0, void *a1, s32 a2); -extern u16 D_8011F73E; -extern void (*D_80190688[])(void); -extern void func_8016F9C4(void *a0); -extern void func_80171B44(s32 *a0); -extern void func_8016FA44(s32 a0); -extern void func_8016FA00(s32 a0); -extern s32 func_80171C64(s32 a0, s32 a1); -extern void (*D_80190690[])(void); -extern void func_8016FA84(void *a0); -extern void func_8016FB10(void *a0); -extern void func_8016FAC0(u8 *a0); -extern void func_8016FB50(void *a0); -extern void (*D_8019069C[])(void); -extern void func_8016FB7C(void *a0); -extern void func_8016FC24(); -extern void func_8016FBB8(s32 a0); -extern s32 func_80171B4C(s32 a0, s32 a1); -extern void func_8016FC24(s32 a0); -extern void func_8016FC64(void *a0); -extern void (*D_801906A8[])(void); -extern void func_8016FC90(void *a0); -extern void func_8016FD08(u8 *a0); -extern void func_8016FCCC(u8 *a0); -extern s32 func_80172658(s32 *a0); -extern void func_8016FD08(u8 *s0); -extern void func_8016FD7C(s32 *a0); -extern void (*D_801906B4[])(void); -extern void func_8016FDB4(void *a0); -extern void func_8016FE2C(u8 *a0); -extern void func_8016FDF0(u8 *a0); -extern void func_8016FE2C(u8 * a0); -extern s32 func_8016FE78(s32 *a0); -extern s32 func_80172664(s32 *a0); -extern void func_8016FED0(s32 *a0); -extern void (*D_801906C4[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_801906D4[])(void); -extern void func_8016FFDC(void *a0); -extern void func_80170068(u8 *a0); -extern void func_80170018(u8 *a0); -extern void func_801700B8(u8 *a0); -extern void func_80170100(u8 *a0); -extern void (*D_801906DC[])(void); -extern void func_80170150(void *a0); -extern void func_801701C8(u8 *a0); -extern void func_8017018C(u8 *a0); -extern void func_801701C8(u8 * a0); -extern void (*D_801906E4[])(void); -extern void func_80170240(void *a0); -extern void func_801702B8(s32 a0); -extern void func_8017027C(u8 *a0); -extern s16 func_80171AB0(s32 a0, void *a1); -extern void (*D_801906EC[])(void); -extern void func_801702FC(void *a0); -extern void func_80170374(u8 *a0); -extern void func_80170338(u8 *a0); -extern s32 func_8014C168(s32 *a0, s32 a1); -extern void func_80170374(u8 * a0); -extern void (*D_801906F4[])(void); -extern void func_801703E0(void *a0); -extern void func_8017044C(u8 *a0); -extern void func_8017041C(u8 *a0); -extern void func_8017044C(u8 * a0); -extern void (*D_801906FC[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_80190704[])(void); -extern void func_80170548(void *a0); -extern void func_801705C0(u8 *a0); -extern void func_80170584(u8 *a0); -extern void func_801705C0(u8 * a0); -extern void (*D_8019070C[])(void); -extern void func_801705F8(void *a0); -extern void func_80170670(void *a0); -extern void func_80170634(u8 *a0); -extern void func_8012A568(void (*a0)(void)); -extern void (*D_80190714[])(void); -extern void func_801706AC(void *a0); -extern void func_80170718(void *a0); -extern void func_801706E8(u8 *a0); -extern void func_80129FF4(void); -extern void (*D_8019071C[])(void); -extern void func_80170748(void *a0); -extern void func_801707D4(void *a0); -extern void func_80170784(u8 *a0); -extern s32 func_80174ED4(void); -extern void (*D_80190724[])(void); -extern void func_80170810(void *a0); -extern void func_801708B0(void *a0); -extern u8 D_800D5DA8; -extern void func_8017084C(s32 a0); -extern u8 D_800D5A34[]; -extern void func_80170AD8(void *a0); -extern void func_80171904(s32 a0); -extern void func_80170B48(int a0); -extern void func_80170928(void); -extern u8 D_800D59EC[]; -extern void func_80170970(void); -extern u8 D_800D599C[]; -extern void func_801709B8(void); -extern u8 D_800D5934[]; -extern void func_80170A00(void); -extern void func_80170A48(void); -extern u8 D_800D5DC0[]; -extern void func_80170A90(void); -extern void (*D_8019072C[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_80190734[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8019073C[])(void); -extern void func_80170C74(void *a0); -extern s32 func_8017197C(u8 *a0); -extern void func_80170CF0(void *a0); -extern void func_80170CB0(u8 *a0); -extern void (*D_80190744[])(void); -extern void func_80170D68(void *a0); -extern void func_80170DE0(u8 *a0); -extern void func_80170DA4(u8 *a0); -extern s32 D_8011F73C; -extern s32 D_8011F740; -extern void func_801718AC(void *a0); -extern void func_80170DE0(u8 * _arg0); -extern void (*D_8019074C[])(void); -extern void func_80170E34(void *a0); -extern void func_80170EAC(u8 *a0); -extern void func_80170E70(u8 *a0); -extern int func_800D0F8C(int a0); -extern void func_80170EAC(u8 * _arg0); -extern void (*D_80190754[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8019075C[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_80190764[])(void); -extern void func_80171064(void *a0); -extern void func_801710DC(u8 *a0); -extern void func_801710A0(u8 *a0); -extern u16 D_8011F73A; -extern void func_801710DC(u8 * arg0); -extern void (*D_8019076C[])(void); -extern void func_80171120(void *a0); -extern void func_8017118C(u8 *a0); -extern void func_8017115C(u8 *a0); -extern void func_80142454(s32 a0); -extern void func_8017118C(u8 * a0); -extern void (*D_80190774[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8019077C[])(void); -extern void func_80171260(void *a0); -extern s32 func_80012F74(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80171384(void *a0); -extern void (*D_80190784[])(void); -extern void func_801714E4(void *a0); -extern void func_8017162C(void *a0); -extern void func_80171520(s32 a0); -extern s32 func_801716AC(s32 a0, void *a1, s32 *a2); -extern s32 func_80012FC8(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_800A5E94; -extern u8 D_800A5E95; -extern u8 D_800A5E96; -extern s32 func_801716AC(s32 a0, void * a1, s32 * a2); -extern int func_800D0FE0(int a0); -extern void func_801717A0(void *a0); -extern void func_8013E588(void *a0); -extern void func_801717F4(void *a0); -extern void func_80171824(void *a0); -extern void func_80171854(void *a0); -extern void func_80171884(void); -extern void func_80171A1C(u8 *a0); -extern void func_80171928(void * a0); -extern void func_8017196C(s32 *a0, s8 a1); -extern void func_80171A04(s32 *a0); -extern void func_80171A10(s32 *a0); -extern void func_80171A34(s32 *a0, s8 a1); -extern s32 func_80171A44(u8 *a0); -extern s32 func_80171A58(u8 *a0); -extern s32 func_80171A6C(u8 *a0); -extern void func_80171A80(s32 *a0, s32 a1); -extern s32 func_80171A88(s32 a0); -extern s16 func_80171AB0(s32 param_1, void * _arg1); -extern void func_80171B10(void *a0); -extern void func_80171EC8(s32 a0); -extern s32 func_80171C64(s32 param_1, s32 param_2); -extern s32 func_80171D78(s32 a0, s32 a1); -extern int func_8017250C(short *a0, short *a1); -extern s32 func_80171CC4(void * a0, void * a1); -extern s32 func_80171FFC(short *a0, short *a1, s32 a2); -extern s32 func_80171D1C(void * a0, void * a1, s32 a2); -extern s32 func_8017248C(s32 a0, s32 a1); -extern s32 func_80171E08(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_80047948(s32 a0); -extern s32 func_8004787C(s32 a0); -extern void func_80172170(s32 a0, s32 a1); -extern s32 func_8017209C(void *arg0, void *arg1, s32 arg2, s32 arg3); -extern void func_801722CC(s32 *a0); -extern void func_80172304(s32 *a0); -extern void func_80172310(u8 *a0); -extern void func_801723C4(s32 param_1, s32 param_2); -extern void func_80161C24(s32, s32); -extern void func_80172414(s32 a0); -extern s32 func_801724EC(s32 a0); -extern s32 func_8017248C(s32 arg0, s32 arg1); -extern s32 func_80013450(s32); -extern s32 func_80172560(u8 *a0, u8 *a1); -extern s32 func_8017261C(u8 *a0); -extern s32 func_80172644(u8 *a0); -extern s32 func_80172670(s32 *a0); -extern s32 func_80172688(s32 *a0); -extern s32 func_80172694(s32 *a0); -extern s32 func_801726A0(s32 *a0); -extern s32 func_801726AC(s32 *a0); -extern s32 func_801726B8(s32 *a0); -extern s32 func_801726C4(s32 *a0); -extern s32 func_80172760(s32 a0); -extern s32 func_80174650(s32); -extern void (*D_80127088)(void); -extern s32 D_801270BC; -extern s16 D_80126B0C; -extern void func_801726D0(void * _arg0); -extern void func_80172710(void); -extern void func_80174684(void *); -extern void func_80172738(void); -extern s16 D_80126B30; -extern s32 func_801727D0(void *a0); -extern void func_80172780(void *a0); -extern void func_80172844(u8 *a0); -extern void func_8017280C(u8 *a0); -extern void func_8017288C(void); -extern s32 func_801728E4(void *a0); -extern void func_80172894(void *a0); -extern void func_80172958(u8 *a0); -extern void func_80172920(u8 *a0); -extern s16 D_80126B36; -extern void func_80172958(u8 * a0); -extern void func_801729A8(void); -extern s32 func_801729F0(void *a0); -extern s16 D_80126B34; -extern s16 D_80126B32; -extern void func_801729B0(s32 a0); -extern void func_80172A8C(void *a0); -extern void func_80172A2C(int param_1); -extern void func_80172ACC(u8 *a0); -extern void func_80172B0C(void); -extern s32 func_80172B44(void *a0); -extern void func_80172B14(s16 a0); -extern s32 D_801150F8; -extern void func_80172BC8(void *a0); -extern void func_80172B80(u8 *a0); -extern void func_80172C48(void); -extern void (*D_801907C8[])(void); -extern void func_80172CA0(void *a0); -extern void func_80172D14(u8 *a0); -extern void func_80172CDC(u8 *a0); -extern void func_80172D14(u8 * a0); -extern void func_80172D60(void); -extern s32 D_80127508; -extern s32 func_80172DAC(void *a0); -extern void func_80172D68(s32 a0); -extern void func_80172E20(u8 *a0); -extern void func_80172DE8(u8 *a0); -extern void func_80172E20(u8 * a0); -extern void func_80172E8C(void); -extern void func_8017303C(void *); -extern void func_80172E94(void); -extern void func_80172ED4(void); -extern void func_80172EFC(void); -extern void func_80172F24(void); -extern u8 D_800D47F4[]; -extern void func_80172F4C(void); -extern void func_80172F9C(void); -extern u8 D_800D5C6C[]; -extern void func_80172FEC(void); -extern s32 func_80173078(void *a0); -extern void func_8017303C(void * a0); -extern void func_801730FC(struct S801730FC *a0); -extern void func_801730B4(s32 a0); -extern void func_8017316C(void); -extern s32 func_8017319C(void *a0); -extern void func_80173174(void); -extern u8 D_800D5AA0[]; -extern void func_80173220(void *a0); -extern void func_801731D8(s32 *a0); -extern M2C_UNK D_8019078C; -extern void func_80173220(void * arg0); -extern void func_80173294(void); -extern void func_801732C4(); -extern void func_8017329C(void); -extern void func_801732C4(s32 *a0); -extern void func_8017331C(); -extern void func_801732F4(void); -extern void func_8017331C(s32 *a0); -extern void func_80173374(); -extern void func_8017334C(void); -extern void func_80173374(s32 *a0); -extern void func_801733A4(void); -extern void func_801733CC(s32 a0); -extern void func_801734BC(s32 a0, s32 a1); -extern s16 D_80126B3E; -extern void func_80173460(s32 a0, s32 a1); -extern void func_801734BC(s32 arg0, s32 _unused1); -extern void (*D_801907F8[])(void); -extern void func_80173544(void *a0); -extern void func_801735B8(u8 *a0); -extern void func_80173580(u8 *a0); -extern s16 D_80126B40; -extern void func_801735EC(void *a0); -extern void func_80173648(u8 *a0); -extern void func_801736A8(void); -extern s32 func_8014C118(void *a0, s32 a1, s32 a2); -extern s32 func_801736FC(void *a0); -extern void func_801736B0(s32 a0, s32 a1); -extern void func_80173770(u8 *a0); -extern void func_80173738(u8 *a0); -extern void func_801723C4(s32 a0, s32 a1); -extern void func_801737B0(void); -extern s32 func_801737E8(void *a0); -extern void func_801737B8(s16 a0); -extern void func_8017385C(u8 *a0); -extern void func_80173824(u8 *a0); -extern void func_801738D4(void); -extern s32 func_8017390C(void *a0); -extern void func_801738DC(s16 a0); -extern void func_80173980(u8 *a0); -extern void func_80173948(u8 *a0); -extern void func_801739D8(u8 *a0); -extern void func_80173A20(void); -extern s32 D_8012750C; -extern void func_80173A60(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80173A28(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void (*D_80190834[])(void); -extern void func_80173B4C(void *a0); -extern void func_80173BC0(u8 *a0); -extern void func_80173B88(u8 *a0); -extern void func_80173C64(u8 *a0); -extern void func_80173E1C(s32 a0); -extern s16 D_80126938; -extern s16 D_80126B3A; -extern void func_800D128C(s32, s32); -extern void func_80174158(s32 a0); -extern void func_8002A088(s32); -extern void func_8002A2D4(s32); -extern void func_8002A544(s32); -extern void func_8002A7B4(s32); -extern s32 func_80174188(s32 a0); -extern void func_801741A8(s32 a0); -extern s32 func_800D0EC4(void); -extern void func_800D0F0C(s32, s32); -extern void func_80145EE8(s32); -extern void func_80173EF8(void *param_1); -extern s32 func_8014BCEC(s32, s32); -extern void func_801741A8(s32 _arg0); -extern s16 D_80126B3C; -extern s16 D_8011F9C8; -extern void func_801741EC(u8 *a0); -extern void func_80174274(void); -extern s32 func_801742A4(void *a0); -extern void func_8017427C(void); -extern void func_80174318(u8 *a0); -extern void func_801742E0(u8 *a0); -extern void func_80174354(void); -extern s32 func_80174384(void *a0); -extern void func_8017435C(void); -extern void func_801743F0(u8 *a0); -extern void func_801743C0(u8 *a0); -extern void func_801743F0(u8 * a0); -extern void func_80174430(void); -extern s32 func_80174474(void *a0); -extern void func_80174438(s32 a0); -extern void func_801744E0(u8 *a0); -extern void func_801744B0(u8 *a0); -extern void func_80174524(void); -extern void func_80174554(); -extern void func_8017452C(void); -extern void func_80174554(s32 arg0); -extern void func_801745AC(); -extern void func_80174584(void); -extern void func_801745AC(s32 *a0); -extern void func_80174604(void); -extern void func_801745DC(void); -extern void func_80174630(void); -extern s32 func_80174650(s32 _arg0); -extern void func_80174674(void); -extern void func_801746A4(void); -extern s32 func_800CF8CC(void); -extern void func_80174714(void); -extern s32 func_80174754(void); -extern s16 func_80174764(void); -extern s16 func_80174774(void); -extern s32 func_801747CC(void *a0); -extern void func_80174784(void); -extern s32 func_801747AC(s32 a0); -extern s32 func_80174808(u8 *a0); -extern void func_8017481C(void); -extern s32 func_80174888(void *a0); -extern void func_80174824(void); -extern void func_8017484C(s32 a0); -extern void func_801748C4(s32 a0); -extern void func_801748E4(void); -extern void func_8012A018(s32 a, s32 b); -extern s32 func_8017496C(void *a0); -extern s32 D_80126954; -extern s32 D_80126950; -extern s32 D_8012695C; -extern s16 D_80126968; -extern s16 D_8012696A; -extern s16 D_8012696C; -extern s16 D_80126976; -extern s16 D_80126978; -extern s16 D_8012697A; -extern void func_801748EC(void); -extern s32 func_801749C8(); -extern s32 func_801749A8(s32 a0); -extern void func_80174BBC(void *a0); -extern void func_8012A0E0(void); -extern void func_80174BF4(void *a0); -extern void (*D_8019088C[])(); -extern void func_80174BF4(void * arg0); -extern s32 func_80174CB0(s32, s32); -extern s32 func_80174C60(s32 a0); -extern void func_80174C80(s32 a0); -extern s32 D_8012697C; -extern u16 D_80126980; -extern s32 func_80174F28(void *a0); -extern void func_80174E9C(s32 a0); -extern void func_80174EF0(s32 a0, s16 a1); -extern s32 func_80175014(u8 *a0, u8 *a1, s32 a2); -extern void func_80174F64(u8 *a0); -extern void func_80174FBC(u8 *a0); -extern s32 func_8017509C(u8 *a0, s32 a1, u8 *a2, u8 *a3); -extern void func_80175184(s32 *a0); -extern void func_80175114(s32 *a0); -extern void func_80175184(); -extern void func_80175150(s32 *a0); -extern void (*D_8019089C[])(void*); -extern s32 func_80175268(s32); -extern void func_80175184(s32* arg0); -extern s32 func_80175218(void *a0); -extern void func_801751D8(void *a0); -extern void (*D_801908A4[])(s32); -extern s32 func_80175218(void * param_1); -extern void func_801752BC(s32 *a0); -extern u8 D_8011F7A8; -extern u8 D_8011F7A9; -extern u8 D_8011F7AD; -extern u8 D_8011F7AE; -extern void func_80175414(s32 _arg0); -extern void func_80175494(void); -extern void (*D_80190A0C[])(); -extern s32 func_801758FC(void); -extern s32 func_80175820(void); -extern s32 func_801759D8(void); -extern void func_8017553C(s32 *param); -extern void func_801757A0(s32 a0); -extern short D_800B9A02; -extern void func_80175590(void *arg0); -extern s16 D_800B9A02; -extern void func_801757A0(s32); -extern void func_80175624(void *a0); -extern void func_801757E0(int); -extern void func_80175668(void); -extern void (*D_80190A18[])(); -extern void func_80175690(s32 *param); -extern void func_80175DA8(s32 a0); -extern void func_80175AB8(s32 a0); -extern void func_80176144(s32 a0); -extern void func_801756E4(s32 arg0); -extern void func_80175798(void); -extern void func_80176734(s32 a0); -extern void func_80176218(s32 a0); -extern void func_80176D00(s32 a0); -extern void func_801757E0(s32 a0); -extern s32 func_80178004(s32 a0, s32 a1, s32 a2); -extern u8 D_8011F7B1; -extern u16 D_8011F7B4; -extern u16 D_8011F7B6; -extern s16 D_8011F81E; -extern void *func_80177784(void *a0, s32 a1, s32 a2, s32 a3); -extern u32 func_801783D0(s32 a0, s32 a1); -extern void *func_801777BC(void *a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern u16 D_8011F82C; -extern u16 D_8011F82A; -extern u32 * func_80176D94(void *param_1, u32 param_2, s16 param_3_); -extern void func_801778A8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80176FF4(s32 a0); -extern u16 D_8011F830; -extern u16 D_8011F82E; -extern u32 * func_801770E0(void *param_1, u32 param_2, s16 param_3_); -extern void func_80177340(s32 a0); -extern u8 D_8011F837; -extern u8 D_8011F7F0; -extern u8 D_8011F7AB; -extern u32 * func_8017742C(u32 *param_1, s32 param_2, s32 param_3); -extern void func_801776EC(u8 *a0); -extern void * func_80177784(void *a0, s32 a1, s32 a2, s32 a3); -extern uint * func_80177EA4(uint *param_1, int param_2, uint param_3, int param_4); -extern void func_80177F84(s32 param_1, s32 param_2); -extern u32 * func_80178298(u32 *param_1, u8 *param_2, short param_3, short param_4); -extern M2C_UNK D_801E52AC; -extern void func_80178438(u16 *arg0); -extern void func_801787D4(void); -extern void func_8012A908(void); -extern void func_8017869C(s32 a0); -extern void func_80130D0C(s32 a0); -extern void func_8013E370(void); -extern s32 D_8011DB08; -extern void func_8017849C(void); -extern void func_8013E4B4(void); -extern s16 D_801270C4; -extern s32 D_801274D8; -extern s16 D_801270C2; -extern u8 D_801270C6; -extern u8 D_801270C7; -extern s32 D_801274DC; -extern s32 D_801274E0; -extern void func_80178608(void); -extern void func_80178744(s32 a0, s32 a1); -extern void func_80178840(); -extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern s32 func_801788B8(s32 arg0, s32 arg1); -extern s32 func_801789AC(s32 arg0); -extern s16 D_801E7AB0; -extern int func_80178970(void); -extern s32 func_80178B18(s32 param_1, s32 param_2); -extern s32 func_80178B70(s32 param_1, s32 param_2); -extern void func_80178BB8(s32 a0, s32 a1); -extern s32 func_80178BF8(); -extern s32 D_801E6898; -extern short D_801E7B24; -extern void func_80178CBC(s32 arg0, s32 arg1); -extern void func_80178D18(void); -/* ==== end §8b carried decl layer ==== */ - - -/* func_80178D40 - 890 ins, 94-case jr switch (jtbl_801D8E24). - * STATUS: **MATCH** -- 890/890 ins, byte-exact (masked). PIN-FREE (this body is - * templated across 134 overlays; a pinned body would crash the sibling TUs). - * python3 tools/match_one.py func_80178D40 --c .run/phase26-cracks/func_80178D40.c \ - * --asm-subdir asm/ov_SC01_077/nonmatchings/ov_SC01_077_jr_801734BC - * => MATCH (890 ins) - * Jump table VERIFIED: 94 entries (= the sltiu 0x5E bound, no trailing zero pad), - * 93 unique blocks, cases 0xF/0x3F share one block; my case->block sequence is - * identical to jtbl_801D8E24's. - * - * Byte-derived structure (the levers that cracked it): - * 1. NO status variable. Every case stores `(*(s16*)&D_801E7B24) = K` DIRECTLY. The shared - * `sh $v0, (*(s16*)&D_801E7B24)` at .L80179AEC is a jump2 CROSS-JUMP merge of those stores: - * find_cross_jump's FIRST call (minimum=1, vs the code before the target label) - * matches that 1 insn, and because it succeeds the jump_chain loop (minimum=2) is - * SKIPPED -- which is what BLOCKS the deeper, wrong 3-insn merges of the identical - * func_80137614 tails (cases 0/0x45/0x32). reorg then steals the `li K` back into - * each `j` delay slot, so it looks un-merged. A `status` pseudo instead of direct - * stores loses that block and costs 6 insns. - * 2. after-switch = `D_801E6898 += 8;` (.L80179AF4) -> the out-of-range default lands - * there with NO explicit `default:` label. - * 3. arg0/arg1/pv are STRUCT pointers. gcc-2.7.2 sched alias (sched.c true_dependence) - * only lets a MEM_IN_STRUCT varying-address load hoist above a non-MEM_IN_STRUCT - * fixed-address store (the (*(s16*)&D_801E7B24) store). Raw `*(T *)(int + off)` casts get - * MEM_IN_STRUCT_P = 0 and block that hoist -> stray nops. - * 4. g = &D_801E7A68 stays a plain `s16 *` (NOT a struct ptr) so its varying, - * non-in-struct stores keep their order w.r.t. the loads. - * 5. Statement order inside the D_801E7A68 cases is load-bearing (sched LUID/priority): - * g[0],g[2],g[1] in 0x25/0x48/0x26; g[7],g[8],g[1],g[3] in 0x4F/0x28. - * 6. Cases 0x5B/0x5C: the loops "found" bodies are emitted BEFORE the case label -> - * source-level labels placed between cases + `goto`. - * 7. Per-case temporaries are BLOCK-LOCAL (local-alloc), not function-scope. - * 8. stack locals declared in slot order (0x10,0x18,0x20,0x28,0x30,0x38,0x40,0x48, - * 0x50,0x58,0x60) -> frame 0x78. - * - * Case 0x5C -- the last 39 residuals. Four levers, all generalizable: - * - * 9. NO-PEEL: a `break` out of a do-while whose target COINCIDES with the loop's own - * natural fall-through exit makes NOTE_INSN_LOOP_BEG be followed by an - * unconditional jump -> jump.c `duplicate_loop_exit_test` (jump.c:599/2131) rotates - * the loop and peels iteration 1 (here `i` was provably 0, so the peeled `i++` - * const-folded to `li $a2,1` and dragged an extra lui/addiu/lw address block with - * it). Writing `goto L5D;` instead of `break;` -- SAME destination, different - * construct -- keeps the loop a plain do-while and the peel disappears. - * RULE: never let a loop's `break` land on the loop's own fall-through label. - * - * 10. SURVIVING REG-REG COPY (residual #1, `addu $v1,$v0,$zero`). A source-level - * `fp = q;` copy ALWAYS dies: cse.c `canon_reg` rewrites every later use of `fp` - * to `q` (qty_first_reg keeps the older reg) and flow deletes the now-dead set. - * To make a copy SURVIVE, its def and its uses must sit in different extended basic - * blocks -- cse resets its hash table at a label with >1 predecessor (a loop top). - * So: TEST THE MEM DIRECTLY, then assign the variable inside the branch body: - * if (arg1->a.w != 0) { fp5c = arg1->a.w; ... do { ... fp5c ... } while (); } - * cse folds the redundant 2nd load into `fp5c = ` (a copy) in the guard - * block, but CANNOT propagate it into the loop body -> the copy is emitted. - * (Assigning `fp5c` BEFORE the test gives one pseudo and no copy -- what we had.) - * - * 11. CROSS-JUMP-MERGED `(*(s16*)&D_801E7B24) = 3` (residual #2). `if (i != 10) { (*(s16*)&D_801E7B24) = 3; - * break; }` lets jump2 tail-merge the `lui/sh` into the shared .L80179AEC tail and - * reorg steal the `li 3` into the `bne` delay slot. Storing it unconditionally - * BEFORE the `if` blocks the merge and costs 3 inline insns. - * - * 12. THE UN-COALESCED LOOP COPY (residual #3, `addu $v1,$a0,$zero` + `addiu $a0,$v1,4`). - * This is loop.c's NON-REPLACEABLE DEST_REG GIV, not a source-level copy (see #10: - * those always die). Recipe -- BOTH halves are needed: - * a) make the pointer an INDEX GIV: `p5c = &D_801E6CF4[i5c];` (a DEST_REG giv) - * b) make it NON-replaceable so loop.c emits `emit_insn_after(move dest,new_reg)` - * (loop.c:3945): record_giv (loop.c:4437) needs the giv used OUTSIDE the loop - * -- so the "found" body goes AFTER the loop and stores through `p5c`. - * c) put the BIV increment (`i5c++`) LAST in the body. loop.c inserts the reduced - * giv's `addiu` immediately BEFORE the biv's increment insn, so `i5c++` at the - * bottom puts `addiu $a0,$v1,4` in the loop-back delay slot. With `i5c++` at - * the TOP the giv-add lands at the top, nothing is left to fill the delay slot, - * and reorg STEALS the loop-top `move` into it (duplicating it: +1 insn). - * - * 13. Loop3 needs its OWN pointer pseudo (`r5c`, not `q5c`). `q5c` is loop1's pointer, - * and in loop1 $v1 is held by `fp5c` -> q5c is forced to $a0, and loop3 inherits it. - * Both "found" bodies then read $a0, become identical, and jump2 CROSS-JUMPS them - * into one block (-2 insns). A distinct pseudo frees loop3 into $v1, so found3 - * (`sw $zero,0($v1)`) differs from found2 (`sw $zero,0($a0)`) and they stay separate. - * RULE: two structurally identical loops must differ in REGISTER, or cross_jump - * merges their tails. - */ - - - - - - -s32 func_80178D40(s32 arg0, s32 arg1) -{ - extern void func_80179B28(s32); - extern s32 func_80137614(s32, s32, s32); - extern void func_8012F214(void *, void *, void *); - extern void func_8012F40C(void *, void *); - extern void func_80179D30(void *); - extern void func_80179D78(void *); - extern void func_80179EA0(void *); - extern void func_80179DCC(s32); - extern void func_80179DF8(void); - extern void func_80179E1C(s32); - extern void func_80179E48(s32); - extern void func_80179E74(s32); - extern void func_80179EE8(s32); - extern void func_80179F14(s32, s32); - extern void func_80179F44(void); - extern void func_80179F6C(s32); - extern void func_80179F98(s32); - extern void func_80179FEC(s32); - extern void func_8017A040(s32); - extern void func_8017A094(s32); - extern void func_8017A0C4(s32); - extern void func_8017A0F4(void); - extern void func_8017A11C(void); - extern void func_8017A144(s32); - extern void func_8017A180(void); - extern void func_8017A1A8(void); - extern void func_8017A1D0(void); - extern void func_8017A1F8(void); - extern void func_8017A220(void); - extern void func_8017A248(void); - extern void func_8017A270(void); - extern void func_8017A298(void); - extern void func_8017A2C0(void); - extern void func_8017A2E8(void); - extern void func_8017A310(void); - extern void func_8017A338(void); - extern void func_8017A360(void); - extern void func_8017A388(void); - extern void func_8017A3B0(void); - extern void func_8017A3D8(void); - extern void func_8017AD0C(s32); - extern void func_8017B238(void *, s32); - extern void func_8017B614(void *, s32); - extern void func_8017B7A8(void *); - extern void func_8017B824(void); - extern void func_8017B880(void); - extern void func_8017B940(void *); - extern void func_8017BA3C(void *, s32); - extern void func_8017BB34(void *, s32); - extern void func_8012A828(void *, s32); - extern s32 func_8012B8A4(void *); - extern void func_8012E88C(void *); - extern void func_8012E8A8(void *); - extern void func_8001AAD0(s32, s32); - extern s32 D_801E689C; - extern s32 D_801E6CB0; - extern s16 D_801E6CB4; - extern s16 D_801E6CB8; - extern s16 D_801E6CBC; - extern s16 D_801E6CC0; - extern s32 D_801E6CC8; - extern s32 D_801E6CCC; - extern s32 D_801E6CDC; - extern s16 D_801E6CE0; - extern s16 D_801E6CE4; - extern s32 D_801E6CE8; - extern s32 D_801E6CF0; - extern s32 D_801E6CF4[10]; - extern s32 D_801E7998; - extern s16 D_801E7A68; - extern s32 D_801E7AAC; - - - SV3_80178D40 v10, v18, v20, v28, v30, v38, v40, v48; - s32 out50[2]; - SV3_80178D40 v58, v60; - Actor_80178D40 *pv = &(*(Actor_80178D40*)&D_80126B58); - s32 i5b, i5c, fp5b, fp5c; - s32 *q5b, *q5c, *p5c, *r5c; - s16 *g = &D_801E7A68; - - switch (((Cmd_80178D40 *)arg1)->op) { - case 1: - func_80179B28(D_801E6CB0); - D_801E6CB0 = func_80137614(((Cmd_80178D40 *)arg1)->a.w, D_801E6CBC, D_801E6CC0 ? 0x48 : 0x40); - (*(s16*)&D_801E7B24) = 2; - break; - case 0: - func_80179B28(D_801E6CB0); - D_801E6CB0 = func_80137614(((Cmd_80178D40 *)arg1)->a.w, D_801E6CB4, D_801E6CB8 ? 0x48 : 0x40); - (*(s16*)&D_801E7B24) = 1; - break; - case 0x45: - ((void (*)(s32))((Cmd_80178D40 *)arg1)->a.w)(((Actor_80178D40 *)arg0)); - if (D_801E7998 != 0) { - func_80179B28(D_801E6CB0); - D_801E6CB0 = func_80137614(((Actor_80178D40 *)arg0)->unkDC[1], D_801E6CB4, D_801E6CB8 ? 0x48 : 0x40); - (*(s16*)&D_801E7B24) = 1; - } else { - (*(s16*)&D_801E7B24) = 3; - } - break; - case 0x32: - func_80179B28(D_801E6CB0); - D_801E6CB0 = func_80137614(((Actor_80178D40 *)arg0)->unkDC[((Cmd_80178D40 *)arg1)->a.w], D_801E6CB4, - D_801E6CB8 ? 0x48 : 0x40); - (*(s16*)&D_801E7B24) = 1; - break; - case 2: - func_80179B28(D_801E6CB0); - if (D_801E6CC8 != 0) { - D_801E6898 = D_801E6CC8; - D_801E6CC8 = 0; - (*(s16*)&D_801E7B24) = 3; - return; - } - (*(s16*)&D_801E7B24) = 6; - break; - case 6: - func_80179DF8(); - (*(s16*)&D_801E7B24) = 3; - break; - case 3: - v10.vx = ((Cmd_80178D40 *)arg1)->a.uh[0]; - v10.vy = 0; - v10.vz = ((Cmd_80178D40 *)arg1)->a.uh[1]; - func_80179D30(&v10); - (*(s16*)&D_801E7B24) = 3; - break; - case 4: - v10.vx = ((Cmd_80178D40 *)arg1)->a.uh[0]; - v10.vy = 0; - v10.vz = ((Cmd_80178D40 *)arg1)->a.uh[1]; - func_8012F214(((Actor_80178D40 *)arg0), &v10, &v18); - func_80179D30(&v18); - (*(s16*)&D_801E7B24) = 3; - break; - case 0x4C: - func_80179D78((void *)((Cmd_80178D40 *)arg1)->a.w); - (*(s16*)&D_801E7B24) = 3; - break; - case 0x4D: - v10.vx = ((Blk_80178D40 *)((Cmd_80178D40 *)arg1)->a.p)->f0; - v10.vy = 0; - v10.vz = ((Blk_80178D40 *)((Cmd_80178D40 *)arg1)->a.p)->f4; - func_8012F214(((Actor_80178D40 *)arg0), &v10, &v18); - v18.pad = ((Blk_80178D40 *)((Cmd_80178D40 *)arg1)->a.p)->f6; - func_80179D78(&v18); - (*(s16*)&D_801E7B24) = 3; - break; - case 0x15: - v10.vx = ((Cmd_80178D40 *)arg1)->a.uh[0]; - v10.vy = 0; - v10.vz = ((Cmd_80178D40 *)arg1)->a.uh[1]; - func_8012F214(((Actor_80178D40 *)arg0)->unkD4, &v10, &v18); - func_80179D30(&v18); - (*(s16*)&D_801E7B24) = 3; - break; - case 5: - func_80179DCC(((Cmd_80178D40 *)arg1)->a.h[0]); - (*(s16*)&D_801E7B24) = 3; - break; - case 7: - func_80179E1C(((Cmd_80178D40 *)arg1)->a.h[0]); - (*(s16*)&D_801E7B24) = 3; - break; - case 8: - func_80179E74(((Cmd_80178D40 *)arg1)->a.h[0]); - (*(s16*)&D_801E7B24) = 3; - break; - case 9: - v10.vx = ((Cmd_80178D40 *)arg1)->a.uh[0]; - v10.vy = 0; - v10.vz = ((Cmd_80178D40 *)arg1)->a.uh[1]; - func_80179EA0(&v10); - (*(s16*)&D_801E7B24) = 3; - break; - case 0xA: - v10.vx = ((Actor_80178D40 *)arg0)->unk6; - v10.vy = ((Actor_80178D40 *)arg0)->unkA; - v10.vz = ((Actor_80178D40 *)arg0)->unkE; - func_80179EA0(&v10); - (*(s16*)&D_801E7B24) = 3; - break; - case 0x16: { - Actor_80178D40 *p = ((Actor_80178D40 *)arg0)->unkD4; - v10.vx = p->unk6; - v10.vy = p->unkA; - v10.vz = p->unkE; - func_80179EA0(&v10); - (*(s16*)&D_801E7B24) = 3; - break; - } - case 0xB: - func_8017A0F4(); - (*(s16*)&D_801E7B24) = 3; - break; - case 0xC: - func_8017A11C(); - (*(s16*)&D_801E7B24) = 3; - break; - case 0xD: - func_8017A180(); - (*(s16*)&D_801E7B24) = 3; - break; - case 0xE: - func_8017A1A8(); - (*(s16*)&D_801E7B24) = 3; - break; - case 0x10: - func_8017A1D0(); - (*(s16*)&D_801E7B24) = 3; - break; - case 0x46: - func_8017A1F8(); - (*(s16*)&D_801E7B24) = 3; - break; - case 0x59: - func_8017A220(); - (*(s16*)&D_801E7B24) = 3; - break; - case 0x5A: - func_8017A248(); - (*(s16*)&D_801E7B24) = 3; - break; - case 0x49: - func_8017A144(((Cmd_80178D40 *)arg1)->a.w); - (*(s16*)&D_801E7B24) = 3; - break; - case 0x47: - func_8017A270(); - (*(s16*)&D_801E7B24) = 3; - break; - case 0x17: - func_80179EE8(((Cmd_80178D40 *)arg1)->a.h[0]); - (*(s16*)&D_801E7B24) = 3; - break; - case 0x18: - func_80179F14(((Cmd_80178D40 *)arg1)->a.h[0], ((Cmd_80178D40 *)arg1)->a.h[1]); - (*(s16*)&D_801E7B24) = 3; - break; - case 0x19: - func_80179F6C(((Cmd_80178D40 *)arg1)->a.h[0]); - (*(s16*)&D_801E7B24) = 3; - break; - case 0x1A: - func_80179F98(((Cmd_80178D40 *)arg1)->a.w); - (*(s16*)&D_801E7B24) = 3; - break; - case 0x51: - func_8017A040(((Cmd_80178D40 *)arg1)->a.w); - (*(s16*)&D_801E7B24) = 3; - break; - case 0x1B: - D_801E6CE8 = ((Cmd_80178D40 *)arg1)->a.w; - func_80179F44(); - (*(s16*)&D_801E7B24) = 3; - break; - case 0x1C: - func_8017A338(); - (*(s16*)&D_801E7B24) = 3; - break; - case 0x52: - func_8017A360(); - (*(s16*)&D_801E7B24) = 3; - break; - case 0x1D: - func_8017A388(); - (*(s16*)&D_801E7B24) = 3; - break; - case 0x3B: - func_8017A094(((Cmd_80178D40 *)arg1)->a.w); - (*(s16*)&D_801E7B24) = 3; - break; - case 0x3C: - func_8017A0C4(((Cmd_80178D40 *)arg1)->a.w); - (*(s16*)&D_801E7B24) = 3; - break; - case 0xF: - case 0x3F: - (*(s16*)&D_801E7B24) = 4; - D_801E689C = ((Cmd_80178D40 *)arg1)->a.w; - break; - case 0x3E: - (*(s16*)&D_801E7B24) = 5; - D_801E6CDC = ((Cmd_80178D40 *)arg1)->a.w; - break; - case 0x40: - D_801E6CDC = (s32)func_8017A3B0; - (*(s16*)&D_801E7B24) = 5; - break; - case 0x23: - func_8012A828(((Actor_80178D40 *)arg0), ((Cmd_80178D40 *)arg1)->a.w); - (*(s16*)&D_801E7B24) = 3; - break; - case 0x31: - func_8012A828(((Actor_80178D40 *)arg0), ((Actor_80178D40 *)arg0)->unkDC[((Cmd_80178D40 *)arg1)->a.w]); - (*(s16*)&D_801E7B24) = 3; - break; - case 0x24: - (*(s16*)&D_801E7B24) = 3; - ((Actor_80178D40 *)arg0)->unk20->unk12 = ((Cmd_80178D40 *)arg1)->a.w; - break; - case 0x25: - g[0] = 1; - g[2] = ((Actor_80178D40 *)arg0)->unk20->unk12 + ((Cmd_80178D40 *)arg1)->a.uh[0]; - g[1] = 0x1E; - (*(s16*)&D_801E7B24) = 3; - g[3] = ((Cmd_80178D40 *)arg1)->a.uh[1]; - break; - case 0x48: - g[0] = 1; - g[2] = ((Cmd_80178D40 *)arg1)->a.uh[0]; - g[1] = 0x1E; - (*(s16*)&D_801E7B24) = 3; - g[3] = ((Cmd_80178D40 *)arg1)->a.uh[1]; - break; - case 0x26: - g[0] = 1; - g[2] = func_8012B8A4(((Actor_80178D40 *)arg0)); - g[1] = 0x1E; - (*(s16*)&D_801E7B24) = 3; - g[3] = ((Cmd_80178D40 *)arg1)->a.w; - break; - case 0x3D: - ((void(*)(void *, s32))func_8012E8E0)(((Actor_80178D40 *)arg0), ((Cmd_80178D40 *)arg1)->a.w); - (*(s16*)&D_801E7B24) = 3; - break; - case 0x27: - g[0] = 2; - g[4] = ((Cmd_80178D40 *)arg1)->a.uh[0]; - (*(s16*)&D_801E7B24) = 3; - g[1] = ((Cmd_80178D40 *)arg1)->a.uh[1]; - break; - case 0x4F: - g[5] = 1; - g[0] = 3; - g[6] = ((Cmd_80178D40 *)arg1)->a.uh[0]; - (*(s16*)&D_801E7B24) = 3; - g[7] = ((Actor_80178D40 *)arg0)->unkA; - g[8] = ((Cmd_80178D40 *)arg1)->a.uh[1]; - g[1] = 0x10; - g[3] = 4; - /* fallthrough */ - case 0x28: - g[5] = 0; - g[0] = 3; - g[6] = ((Cmd_80178D40 *)arg1)->a.uh[0]; - (*(s16*)&D_801E7B24) = 3; - g[7] = ((Actor_80178D40 *)arg0)->unkA; - g[8] = ((Cmd_80178D40 *)arg1)->a.uh[1]; - g[1] = 0x10; - g[3] = 4; - break; - case 0x29: - v20.vx = ((Cmd_80178D40 *)arg1)->a.uh[0]; - v20.vy = ((Actor_80178D40 *)arg0)->unkA; - v20.vz = ((Cmd_80178D40 *)arg1)->a.uh[1]; - func_8012F214(((Actor_80178D40 *)arg0), &v20, &v28); - g[5] = 0; - g[0] = 3; - *(SV3_80178D40 *)(g + 6) = v28; - g[1] = 0x10; - g[3] = 4; - (*(s16*)&D_801E7B24) = 3; - break; - case 0x50: - v30.vx = ((Cmd_80178D40 *)arg1)->a.uh[0]; - v30.vy = ((Actor_80178D40 *)arg0)->unkA; - v30.vz = ((Cmd_80178D40 *)arg1)->a.uh[1]; - func_8012F214(((Actor_80178D40 *)arg0), &v30, &v38); - g[5] = 1; - g[0] = 3; - *(SV3_80178D40 *)(g + 6) = v38; - g[1] = 0x10; - g[3] = 4; - (*(s16*)&D_801E7B24) = 3; - break; - case 0x2A: - g[0] = 4; - (*(s16*)&D_801E7B24) = 3; - g[1] = ((Cmd_80178D40 *)arg1)->a.w; - break; - case 0x1E: - func_8017B238(((Actor_80178D40 *)arg0), ((Cmd_80178D40 *)arg1)->a.w); - (*(s16*)&D_801E7B24) = 3; - break; - case 0x21: - func_8017BA3C(((Actor_80178D40 *)arg0), ((Cmd_80178D40 *)arg1)->a.w); - func_8017B238(((Actor_80178D40 *)arg0), (s32)&D_801E6CCC); - (*(s16*)&D_801E7B24) = 3; - break; - case 0x54: - func_8017BB34(((Actor_80178D40 *)arg0), ((Cmd_80178D40 *)arg1)->a.w); - func_8017B238(((Actor_80178D40 *)arg0), (s32)&D_801E6CCC); - (*(s16*)&D_801E7B24) = 3; - break; - case 0x1F: - func_8017B614(((Actor_80178D40 *)arg0), ((Cmd_80178D40 *)arg1)->a.w); - (*(s16*)&D_801E7B24) = 3; - break; - case 0x22: - func_8017BA3C(((Actor_80178D40 *)arg0), ((Cmd_80178D40 *)arg1)->a.w); - func_8017B614(((Actor_80178D40 *)arg0), (s32)&D_801E6CCC); - (*(s16*)&D_801E7B24) = 3; - break; - case 0x55: - func_8017BB34(((Actor_80178D40 *)arg0), ((Cmd_80178D40 *)arg1)->a.w); - func_8017B614(((Actor_80178D40 *)arg0), (s32)&D_801E6CCC); - (*(s16*)&D_801E7B24) = 3; - break; - case 0x20: - func_8017B7A8(((Actor_80178D40 *)arg0)); - (*(s16*)&D_801E7B24) = 3; - break; - case 0x4E: - D_801E6CF0 = ((Cmd_80178D40 *)arg1)->a.w; - func_8017B940(((Actor_80178D40 *)arg0)); - (*(s16*)&D_801E7B24) = 3; - break; - case 0x57: - func_8017B824(); - (*(s16*)&D_801E7B24) = 3; - break; - case 0x58: - func_8017B880(); - (*(s16*)&D_801E7B24) = 3; - break; - case 0x2B: - (*(s16*)&D_801E7B24) = 3; - ((Actor_80178D40 *)arg0)->unk2 = ((Cmd_80178D40 *)arg1)->a.w; - break; - case 0x2C: - (*(s16*)&D_801E7B24) = 3; - ((Actor_80178D40 *)arg0)->unk34 = ((Cmd_80178D40 *)arg1)->a.w; - break; - case 0x2D: - (*(s16*)&D_801E7B24) = 3; - ((Actor_80178D40 *)arg0)->unkD8 = ((Cmd_80178D40 *)arg1)->a.w; - break; - case 0x2F: - (*(s16*)&D_801E7B24) = 3; - ((Actor_80178D40 *)arg0)->unk10A = ((Cmd_80178D40 *)arg1)->a.w; - break; - case 0x2E: - (*(s16*)&D_801E7B24) = 3; - ((Actor_80178D40 *)arg0)->unkF8 = ((Cmd_80178D40 *)arg1)->a.w; - break; - case 0x11: - func_8017A298(); - (*(s16*)&D_801E7B24) = 3; - break; - case 0x12: - func_8017A2C0(); - (*(s16*)&D_801E7B24) = 3; - break; - case 0x13: - func_8017A2E8(); - (*(s16*)&D_801E7B24) = 3; - break; - case 0x14: - func_8017A310(); - (*(s16*)&D_801E7B24) = 3; - break; - case 0x33: { - void (*f)(Actor_80178D40 *) = (void (*)(Actor_80178D40 *))((Cmd_80178D40 *)arg1)->a.w; - D_801E7AAC = (s32)&((Cmd_80178D40 *)arg1)[1]; - f(((Actor_80178D40 *)arg0)); - (*(s16*)&D_801E7B24) = 3; - break; - } - case 0x30: - if (((Cmd_80178D40 *)arg1)->a.w == 0) { - func_8012E8A8(((Actor_80178D40 *)arg0)); - (*(s16*)&D_801E7B24) = 3; - } else { - func_8012E88C(((Actor_80178D40 *)arg0)); - (*(s16*)&D_801E7B24) = 3; - } - break; - case 0x4A: - ((void(*)())func_80175414)(); - (*(s16*)&D_801E7B24) = 3; - break; - case 0x4B: - func_80175454(); - (*(s16*)&D_801E7B24) = 3; - break; - case 0x34: - (*(s16*)&D_801E7B24) = 3; - D_801E6898 = ((Cmd_80178D40 *)arg1)->a.w; - return; - case 0x35: - D_801E6CC8 = (s32)&((Cmd_80178D40 *)arg1)[1]; - (*(s16*)&D_801E7B24) = 3; - D_801E6898 = ((Cmd_80178D40 *)arg1)->a.w; - return; - case 0x36: - (*(s16*)&D_801E7B24) = 3; - D_801E6898 += 8; - if (((s32 (*)(s32))((Cmd_80178D40 *)arg1)->a.w)(((Actor_80178D40 *)arg0)) == 0) { - break; - } - D_801E6898 = *(s32 *)(D_801E6898 + 4); - return; - case 0x37: - (*(s16*)&D_801E7B24) = 3; - D_801E6CB4 = ((Cmd_80178D40 *)arg1)->a.uh[0]; - D_801E6CB8 = ((Cmd_80178D40 *)arg1)->a.uh[1]; - break; - case 0x38: - (*(s16*)&D_801E7B24) = 3; - D_801E6CBC = ((Cmd_80178D40 *)arg1)->a.uh[0]; - D_801E6CC0 = ((Cmd_80178D40 *)arg1)->a.uh[1]; - break; - case 0x39: { - s32 w1, w2; - v40.vx = ((Actor_80178D40 *)arg0)->unk6; - v40.vy = ((Actor_80178D40 *)arg0)->unkA; - v40.vz = ((Actor_80178D40 *)arg0)->unkE; - v48.vx = pv->unk6; - v48.vy = pv->unkA; - v48.vz = pv->unkE; - func_8012F40C(out50, &v40); - w1 = out50[0]; - func_8012F40C(out50, &v48); - w2 = out50[0]; - (*(s16*)&D_801E7B24) = 3; - D_801E6CB4 = w1; - D_801E6CB8 = (s16)w1 >= (s16)w2; - break; - } - case 0x3A: { - s32 w1, w2; - v58.vx = ((Actor_80178D40 *)arg0)->unk6; - v58.vy = ((Actor_80178D40 *)arg0)->unkA; - v58.vz = ((Actor_80178D40 *)arg0)->unkE; - v60.vx = pv->unk6; - v60.vy = pv->unkA; - v60.vz = pv->unkE; - func_8012F40C(out50, &v58); - w1 = out50[0]; - func_8012F40C(out50, &v60); - w2 = out50[0]; - (*(s16*)&D_801E7B24) = 3; - D_801E6CBC = w2; - D_801E6CC0 = (s16)w1 < (s16)w2; - break; - } - case 0x41: - ((void(*)(s32, s32))func_8002D4C8)(((Cmd_80178D40 *)arg1)->a.uh[0], ((Cmd_80178D40 *)arg1)->a.uh[1]); - (*(s16*)&D_801E7B24) = 3; - break; - case 0x42: - func_8017AD0C(((Cmd_80178D40 *)arg1)->a.w); - (*(s16*)&D_801E7B24) = 3; - break; - case 0x43: - D_801E6CDC = (s32)func_8017A3D8; - D_801E6CE4 = 0; - (*(s16*)&D_801E7B24) = 5; - D_801E6CE0 = ((Cmd_80178D40 *)arg1)->a.w; - break; - case 0x44: - func_8001AAD0(((Cmd_80178D40 *)arg1)->a.h[0], ((Cmd_80178D40 *)arg1)->a.h[1]); - (*(s16*)&D_801E7B24) = 3; - break; - case 0x53: - func_80179E48(((Cmd_80178D40 *)arg1)->a.h[0]); - (*(s16*)&D_801E7B24) = 3; - break; - case 0x56: - func_80179FEC(((Cmd_80178D40 *)arg1)->a.w); - (*(s16*)&D_801E7B24) = 3; - break; - L5B_found: - fp5b = ((Cmd_80178D40 *)arg1)->a.w; - *q5b = fp5b; - ((void (*)(Actor_80178D40 *))fp5b)(((Actor_80178D40 *)arg0)); - (*(s16*)&D_801E7B24) = 3; - break; - case 0x5B: - i5b = 0; - q5b = D_801E6CF4; - do { - i5b++; - if (*q5b == 0) { - goto L5B_found; - } - q5b++; - } while (i5b < 10); - (*(s16*)&D_801E7B24) = 3; - break; - L5C_found1: - *q5c = 0; - goto L5C_join; - case 0x5C: - i5c = 0; - if (((Cmd_80178D40 *)arg1)->a.w != 0) { - fp5c = ((Cmd_80178D40 *)arg1)->a.w; - q5c = D_801E6CF4; - do { - if (*q5c == fp5c) { - goto L5C_found1; - } - i5c++; - q5c++; - } while (i5c < 10); - L5C_join: - if (i5c != 10) { - (*(s16*)&D_801E7B24) = 3; - break; - } - i5c = 0; - do { - p5c = &D_801E6CF4[i5c]; - if (*p5c != 0) { - goto L5C_found2; - } - i5c++; - } while (i5c < 10); - (*(s16*)&D_801E7B24) = 3; - break; - L5C_found2: - *p5c = 0; - goto L5D; - } - r5c = D_801E6CF4; - do { - i5c++; - if (*r5c != 0) { - *r5c = 0; - goto L5D; - } - r5c++; - } while (i5c < 10); - /* fallthrough */ - case 0x5D: - L5D: - (*(s16*)&D_801E7B24) = 3; - break; - default: - break; - } -Lend: - D_801E6898 += 8; -} - - -DEFINE_func_80179B28() /* dedup: shared engine-core @0x80179B28 (src/shared) */ - -extern short D_801DA710; -extern void func_8017A4AC(void); - -// @class: schedule -// @stuck: none — MATCH (111 ins). symcheck: data syms CLEAN (D_801E68A0/D_801E6CA4, 0 INVENTED); its lone MISSING is jtbl_801D8F9C, the COMPILER-emitted table ($L17 -> .rdata) — banking needs the §8a/§8e rodata-island flip (35 entries, .align 3), not a source-side ref. -/* func_80179B74 (ov_SC01_077) — command-queue WRITER: copies the opcode + its - * operand halfwords from *p into the 0x200-entry ring D_801E68A0 at write index - * D_801E6CA4. Mirror of the reader func_8017A4AC (same ring, read index D_801DA710). - * - * Three levers were needed on top of the obvious shape (each byte-proven here): - * 1. jtbl SPAN — the target's table is 35 entries (0..0x22) with NO `addiu a0,a0,-1` - * bias and `sltiu v0,a0,0x23`, so the source must contain an empty `case 0:` and - * an empty `case 0x22:`; without them gcc biases by -1 and emits sltiu 0x20. - * 2. SCHEDULE — the operand push must route through a NAMED block-scoped temp - * (`{ s16 t = *p++; ring[idx] = t; ... }`). Written as the anonymous - * `ring[idx] = *p++;` the sched1 pass puts the `lh D_801E6CA4` ahead of the - * `lhu 0(a1)` in exactly the two blocks that also carry a live `addiu a1,a1,2` - * (cases {1,5} and {0x17,0x1c,0x1d,0x20}) — 6 of the 8 residual mismatches. - * The temp gives the loaded value its own pseudo and flips those two blocks. - * 3. FRAME — the target reserves 0x80 with NO saves and NO spills; gcc's own - * (unused) area for this body is 0x58, so +0x28 of address-taken local is - * required: `s32 pad[10]; (void)&pad;` (cookbook §17 phantom-frame INDUCE - * lever). 10 words exactly; 8 -> 0x78 and 12 -> 0x88 both miss. - * - * Case-block ORDER in the source is the emitted block order: {1,5} then {0x13} - * then {2,3,4,6,0x12,0x14,0x1f} then {0x17,0x1c,0x1d,0x20}. The 3-/2-/1-push - * tails are then cross-jump merged (no calls, so §88 does not block it) into the - * shared .L80179CE4 / .L80179D08 tail that sits after the last case block. - * - * Symbols are the splat spellings and match the sibling TU ov_SC01_077_jr_8017A4AC.c - * (`extern u16 D_801E68A0[0x200];` / `extern s16 D_801E6CA4;`) so the whole-binary - * link and any one-big-TU build see one consistent type. - */ - -extern u16 D_801E68A0[0x200]; -extern s16 D_801E6CA4; - -void func_80179B74(u16 *p) { - s32 pad[10]; - s16 c; - - (void)&pad; - c = *p++; - D_801E68A0[D_801E6CA4] = c; - D_801E6CA4 = (D_801E6CA4 + 1) & 0x1FF; - switch (c) { - case 0: - break; - case 1: - case 5: - { s16 t = *p++; D_801E68A0[D_801E6CA4] = t; D_801E6CA4 = (D_801E6CA4 + 1) & 0x1FF; } - { s16 t = *p++; D_801E68A0[D_801E6CA4] = t; D_801E6CA4 = (D_801E6CA4 + 1) & 0x1FF; } - { s16 t = *p++; D_801E68A0[D_801E6CA4] = t; D_801E6CA4 = (D_801E6CA4 + 1) & 0x1FF; } - break; - case 0x13: - { s16 t = *p++; D_801E68A0[D_801E6CA4] = t; D_801E6CA4 = (D_801E6CA4 + 1) & 0x1FF; } - { s16 t = *p++; D_801E68A0[D_801E6CA4] = t; D_801E6CA4 = (D_801E6CA4 + 1) & 0x1FF; } - break; - case 2: - case 3: - case 4: - case 6: - case 0x12: - case 0x14: - case 0x1F: - { s16 t = *p++; D_801E68A0[D_801E6CA4] = t; D_801E6CA4 = (D_801E6CA4 + 1) & 0x1FF; } - break; - case 0x17: - case 0x1C: - case 0x1D: - case 0x20: - { s16 t = *p++; D_801E68A0[D_801E6CA4] = t; D_801E6CA4 = (D_801E6CA4 + 1) & 0x1FF; } - { s16 t = *p++; D_801E68A0[D_801E6CA4] = t; D_801E6CA4 = (D_801E6CA4 + 1) & 0x1FF; } - { s16 t = *p++; D_801E68A0[D_801E6CA4] = t; D_801E6CA4 = (D_801E6CA4 + 1) & 0x1FF; } - { s16 t = *p++; D_801E68A0[D_801E6CA4] = t; D_801E6CA4 = (D_801E6CA4 + 1) & 0x1FF; } - break; - case 0x22: - break; - } -} - -DEFINE_func_80179D30() /* dedup: shared engine-core @0x80179D30 (src/shared) */ - -DEFINE_func_80179D78() /* dedup: shared engine-core @0x80179D78 (src/shared) */ - -DEFINE_func_80179DCC() /* dedup: shared engine-core @0x80179DCC (src/shared) */ - -DEFINE_func_80179DF8() /* dedup: shared engine-core @0x80179DF8 (src/shared) */ - -DEFINE_func_80179E1C() /* dedup: shared engine-core @0x80179E1C (src/shared) */ - -DEFINE_func_80179E48() /* dedup: shared engine-core @0x80179E48 (src/shared) */ - -DEFINE_func_80179E74() /* dedup: shared engine-core @0x80179E74 (src/shared) */ - -DEFINE_func_80179EA0() /* dedup: shared engine-core @0x80179EA0 (src/shared) */ - -DEFINE_func_80179EE8() /* dedup: shared engine-core @0x80179EE8 (src/shared) */ - -DEFINE_func_80179F14() /* dedup: shared engine-core @0x80179F14 (src/shared) */ - -DEFINE_func_80179F44() /* dedup: shared engine-core @0x80179F44 (src/shared) */ - -DEFINE_func_80179F6C() /* dedup: shared engine-core @0x80179F6C (src/shared) */ - -DEFINE_func_80179F98() /* dedup: shared engine-core @0x80179F98 (src/shared) */ - -DEFINE_func_80179FEC() /* dedup: shared engine-core @0x80179FEC (src/shared) */ - -DEFINE_func_8017A040() /* dedup: shared engine-core @0x8017A040 (src/shared) */ - - -extern void func_80179B74(u16 *p); -extern s32 D_801E6CC4; - -void func_8017A094(s32 arg0) { - s16 sp10; - - D_801E6CC4 = arg0; - sp10 = 0x15; - func_80179B74(&sp10); -} - - - -extern void func_80179B74(u16 *p); -extern s32 D_801E6CC4; - -void func_8017A0C4(s32 arg0) { - s16 sp10; - - D_801E6CC4 = arg0; - sp10 = 0x16; - func_80179B74(&sp10); -} - - -DEFINE_func_8017A0F4() /* dedup: shared engine-core @0x8017A0F4 (src/shared) */ - -DEFINE_func_8017A11C() /* dedup: shared engine-core @0x8017A11C (src/shared) */ - - -extern s32 D_801E6CEC; -extern void func_80179B74(u16 *p); - -void func_8017A144(s32 a0) { - s16 sp10; - sp10 = 0x1B; - func_80179B74(&sp10); - D_801E6CEC = a0; -} - - -DEFINE_func_8017A180() /* dedup: shared engine-core @0x8017A180 (src/shared) */ - -DEFINE_func_8017A1A8() /* dedup: shared engine-core @0x8017A1A8 (src/shared) */ - -DEFINE_func_8017A1D0() /* dedup: shared engine-core @0x8017A1D0 (src/shared) */ - -DEFINE_func_8017A1F8() /* dedup: shared engine-core @0x8017A1F8 (src/shared) */ - -DEFINE_func_8017A220() /* dedup: shared engine-core @0x8017A220 (src/shared) */ - -DEFINE_func_8017A248() /* dedup: shared engine-core @0x8017A248 (src/shared) */ - -DEFINE_func_8017A270() /* dedup: shared engine-core @0x8017A270 (src/shared) */ - -DEFINE_func_8017A298() /* dedup: shared engine-core @0x8017A298 (src/shared) */ - -DEFINE_func_8017A2C0() /* dedup: shared engine-core @0x8017A2C0 (src/shared) */ - -DEFINE_func_8017A2E8() /* dedup: shared engine-core @0x8017A2E8 (src/shared) */ - -DEFINE_func_8017A310() /* dedup: shared engine-core @0x8017A310 (src/shared) */ - -DEFINE_func_8017A338() /* dedup: shared engine-core @0x8017A338 (src/shared) */ - -DEFINE_func_8017A360() /* dedup: shared engine-core @0x8017A360 (src/shared) */ - -DEFINE_func_8017A388() /* dedup: shared engine-core @0x8017A388 (src/shared) */ - - -extern s16 D_801E6CA8; - -s32 func_8017A3B0(void) { - switch (D_801E6CA8) { - case 0: - return 1; - case 1: - return 0; - default: - return 1; - } -} - - - -// @class: regalloc-order -// @stuck: none — MATCH - -extern short D_801E6CE4; -extern short D_801E6CE0; - -extern int func_800D0CA0(int); -extern int func_8001AAA0(void); -extern int func_800D0CE0(void); - -int func_8017A3D8(void) -{ - switch (D_801E6CE4) { - case 0: - func_800D0CA0(1); - D_801E6CE4 = D_801E6CE4 + 1; - return 0; - case 100: - { - register int a __asm__("$4"); - a = D_801E6CE0; - if (a != -1) { - return func_8001AAA0() != 0; - } - return func_800D0CE0() == 1; - } - default: - D_801E6CE4 = D_801E6CE4 + 1; - if (D_801E6CE4 < 0x1E) { - return 0; - } - D_801E6CE4 = 100; - return 0; - } -} diff --git a/src/ov_SC04_019/ov_SC04_019_jr_8017A4AC.c b/src/ov_SC04_019/ov_SC04_019_jr_8017A4AC.c deleted file mode 100644 index e5debdda7..000000000 --- a/src/ov_SC04_019/ov_SC04_019_jr_8017A4AC.c +++ /dev/null @@ -1,2780 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ - /* 12-byte sub-table record (stride 0xC) */ - /* 0x20 bytes */ - /* 4 + 16*12 = 0xC4 stride */ - /* 0x08 */ - /* 0x20 */ -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8; -typedef void (*Handler)(struct Entry_8016E95C *); -extern void func_801458E0(void); -extern s32 D_800AE6AC; -extern s32 D_800AE6B0; -extern s16 D_800B9A0A; -extern u8 D_80078E50; -extern void func_800D185C(u8 *a0); -extern void func_801458E8(void); -extern s32 func_80029504(void); -extern void func_80145B24(void); -extern u8 D_8018F74C; -extern u8 D_8018F6BC; -extern u8 D_8018F698; -extern u8 D_8018F674; -extern u8 D_8018F728; -extern u8 D_8018F704; -extern u8 D_8018F6E0; -extern u8 D_8018F650; -extern void func_80145934(void); -extern u8 D_8018F7DC; -extern u8 D_8018F7B8; -extern u8 D_8018F794; -extern u8 D_8018F770; -extern void func_80145A2C(void); -extern s32 func_800291DC(s32); -extern void func_800291C8(s32, s32); -extern void func_80162120(void); -extern void func_80029124(s32, s32); -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); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_80145BF8(void); -extern s32 func_800291B4(s32 arg); -extern void func_800291A0(s32, s32); -extern void func_80145C54(void); -extern s32 func_80145CEC(); -extern s32 func_80029178(s32 arg); -extern void func_80146014(s32 a0); -extern unsigned char D_8018EBD4[]; -extern unsigned char D_8018EC04[]; -extern unsigned char D_8018EC54[]; -extern unsigned char D_8018EC84[]; -extern unsigned char D_8018ECB4[]; -extern void func_80145EE8(s32 param_1); -extern void MoveImage(void *a0, s32 a1, s32 a2); -extern void func_80146074(void); -extern s32 func_80146128(void); -extern void func_80146360(void); -extern void func_801463A0(); -extern void func_8014607C(void); -extern s32 *D_80126B78; -extern u8 D_80078EC1; -extern s32 D_80078EC8; -extern s32 D_80126B9C; -extern s32 D_8011F730; -extern u16 D_801152B8; -extern u16 D_8012693A; -extern u8 D_80126BE0[]; -extern u8 D_801150F0[]; -extern void *memcpy(void *dst, const void *src, u32 n); -extern void func_80146FC4(s32 a0); -extern void func_80150A70(s32 a0); -extern void func_80147098(s32 *a0); -extern void func_8014A638(s32 arg0); -extern s32 func_80155458(s32 a0); -extern s32 func_80029104(void); -extern void func_80029344(void); -extern void func_8014ADE0(s32 a0); -extern void func_8014B350(s32 a0); -extern void func_8014B7A4(s16 *param_1); -extern s32 func_80161D58(s32 a0); -extern void func_80161A90(s32 a0); -extern void func_8014B504(u16 *a0); -extern void func_80149BEC(s32 a0); -extern void func_8014B5D0(s32 *a0); -extern void func_8014C99C(u8 *a0); -extern void func_8014B190(s32 s0); -extern void func_80148648(s32 a0, s32 a1); -extern s32 func_80149228(s32 a0); -extern void func_8014A59C(s32 a0); -extern void func_8016F14C(void *a0); -extern void func_80154418(void *a0); -extern void func_80154BE4(s32 a0); -extern void func_80165694(s32 arg0); -extern void func_801654A8(s32 a0); -extern void func_8014A680(s32 a0); -extern void func_8014A6A8(s32 a0); -extern void func_8014A71C(s32 a0); -extern void func_80172588(s32 *a0); -extern void func_801473DC(s32 *a0); -extern void func_80015978(s32 a0, s32 *a1); -extern void (*D_8018ED04[])(void *); -extern u8 D_80126BA4; -extern s32 D_80127098; -extern s32 D_80127094; -extern s32 D_80127090; -extern void func_80146534(void); -extern void func_8001D074(s32 a0, s32 a1); -extern void func_80146554(void); -extern void func_80146578(void); -extern void func_8001CFDC(s32, s32); -extern void func_8014659C(void); -extern void func_8001D074(s32, s32); -extern void func_801465C0(void); -extern void func_801465E4(void); -extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); -extern s32 D_8011F9D0; -extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); -extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 D_8011F750; -extern s32 D_8011F754; -extern u8 * func_801468C8(s32 arg0, u8 arg1); -extern s32 D_8011D030; -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); -extern s32 func_80146B9C(void *a0); -extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); -extern u16 D_8011DA28; -extern s32 func_80146B9C(void * arg0); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80146CA0(void *a0); -extern void func_80146CB4(void *a0); -extern void func_80146CC8(s32 a0); -extern void func_80146D30(s32 a0); -extern void func_80146D80(s32 *a0); -extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80146D90(s32 a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); -extern void func_80146E90(s32 *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80015954(s32 a0, s32 a1); -extern void func_80149374(s32 a0, s32 a1); -extern void func_80146F58(s32 a0, s32 a1); -extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 func_8012A68C(void); -extern s16 func_8012A758(void); -extern void func_8004978C(s16 *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern u8 D_80126DB0[]; -extern u16 D_80126DB6; -extern void func_8014704C(s32 *a0); -extern s32 func_80147054(void *a0); -extern void func_80147060(u8 * a0); -extern void func_8014706C(void *arg0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80147084(s32 *a0); -extern void func_8014708C(void *arg0); -extern s32 func_801470A0(void *a0); -extern void func_801470AC(s32 *a0); -extern void func_801470B4(s32 arg0); -extern void func_801470C0(s32 a0); -extern void func_80147118(s32 a0); -extern s16 D_80126BB8; -extern s16 D_80126BBA; -extern s16 D_80126BBC; -extern void func_80147264(s32 a0); -extern void func_80147290(void); -extern void func_801472B4(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void *D_8012707C; -extern void func_801472DC(void); -extern void func_801472F0(void *a0); -extern void func_80147364(u16, s32); -extern void func_80147300(u16 arg0); -extern void func_80147324(s32 arg0); -extern void func_801473EC(s32 *a0); -extern void func_80147460(s32 a0); -extern void func_80147514(); -extern void func_80147628(s32 a0); -extern void func_80147478(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); -extern s32 func_800129CC(s32 a0, s32 a1); -extern void func_80147514(s32 arg0); -extern void func_80013F3C(s32 a0); -extern void func_80012558(s32 a0, s32 a1); -extern void func_800126C4(s32 a0, s32 a1); -extern void func_800123F0(s32 a0, s32 a1); -extern void func_80147718(s32 a0); -extern void func_80147788(void *a0, s32 a1); -extern void func_801477A8(void *a0, s32 a1); -extern void func_801477C8(void *a0, s32 a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80147814(s32 a0, s32 a1); -extern void func_80147928(int a0, int a1); -extern void func_8014799C(int a0, int a1); -extern void func_80147A10(int a0, int a1); -extern void func_80147860(int a0, int a1, int a2, int a3); -extern void func_80147948(s32 a0, s32 a1, s32 a2); -extern void func_801479BC(s32 a0, s32 a1, s32 a2); -extern void func_80147A30(s32 a0, s32 a1, s32 a2); -extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147948(int a0, int a1, int a2); -extern void func_801479BC(int a0, int a1, int a2); -extern void func_80147A30(int a0, int a1, int a2); -extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147A84(s32 arg0); -extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147AAC(s32 arg0); -extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80147B5C(s32 a0, void *a1); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern void func_80147B18(s32 a0); -extern void func_80147B5C(s32 arg0, void *arg1); -extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147DC0(s32 a0, s32 a1); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147F50(s32 arg0); -extern void func_80148038(s32 a0, s32 a1); -extern s32 ratan2(s32 a0, s32 a1); -extern s32 csqrt(s32 a0); -extern s32 func_80012A60(s32 a0, s32 a1); -extern void func_80148094(int param_1, short *param_2, int *param_3); -extern void func_801485B8(s32 a0, s32 a1, s32 a2); -extern void func_801484B0(s32 a0, s32 a1); -extern s32 func_80154358(void *a0); -extern void func_801484E8(s32 a0, s32 a1); -extern void func_80148534(s32 a0, s32 a1); -extern void func_8014856C(s32 a0, s32 a1); -extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); -extern void func_80148634(void *a0); -extern u8 D_800B9A64; -extern s32 func_80014DC0(); -extern s32 func_80014D68(); -extern s32 func_80014D94(); -extern s32 func_80014CF8(); -extern void func_800120DC(); -extern s32 func_800CF8B4(); -extern u16 func_801487F4(s32 *a0); -extern u16 func_80148800(s32 *a0); -extern u8 func_8014880C(s32 *a0); -extern u16 func_80148818(s32 *a0); -extern s32 func_80047D3C(s32 a0); -extern s32 func_80148824(void *arg0); -extern s32 func_801488A8(u8 *a0); -extern s32 func_8014891C(s32 a0); -extern s32 func_80148980(u8 *a0); -extern s32 func_801489E8(s32 a0); -extern s32 func_80148A48(s32 a0); -extern int func_80148AFC(void *a0); -extern void func_80148AAC(u8 *a0); -extern s32 func_80148C18(void); -extern s32 func_80148C20(s32 a0, s16 a1); -extern s32 func_80148C34(s32 a0, s32 a1); -extern s32 func_80148C4C(s32 a0, s32 a1); -extern s32 func_80148C64(s32 a0, s32 a1); -extern s32 func_80148C7C(void); -extern s32 func_80148C84(s32 a0, s32 a1); -extern s32 func_80148C9C(s32 a0, s32 a1); -extern s32 func_80148CB4(s32 a0, s32 a1); -extern s32 func_80148CCC(s32 a0, s32 a1); -extern s32 func_80148CE4(void); -extern s32 func_80148CEC(void); -extern s32 func_80148CF4(s32 a0, s32 a1); -extern s32 func_80148D0C(s32 a0, s32 a1); -extern s32 func_80148D24(void *a0, int a1); -extern s32 func_80148D3C(void); -extern s32 func_80148F60(void); -extern s32 func_80148F68(s32 a0); -extern s32 func_80148F74(s32 a0); -extern s32 func_80148F80(s32 a0); -extern s32 func_80148F8C(s32 a0); -extern s32 func_80148F98(void); -extern s32 func_80148FA0(s32 a0); -extern s32 func_80148FAC(s32 a0); -extern s32 func_80148FB8(s32 a0); -extern s32 func_80148FC4(s32 a0); -extern s32 func_80148FD0(void); -extern s32 func_80148FD8(void); -extern s32 func_80148FE0(s32 a0); -extern s32 func_80148FEC(s32 a0); -extern s32 func_80148FF8(s32 a0); -extern s32 func_80149004(void); -extern void func_8014900C(s32 *a0); -extern void func_80149020(s32 *a0); -extern void func_80149034(s32 *a0); -extern void func_80149048(s32 *a0); -extern void func_8014905C(u8 *a0); -extern void func_801490E0(s32 *a0, s16 a1); -extern void func_801490E8(s32 *a0, s16 a1); -extern void func_801490F0(s32 *a0, s16 a1); -extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); -extern void func_801490F8(s32 a0, s32 a1); -extern s32 func_801491C4(s32 a0); -extern s32 func_80149184(s32 a0); -extern s32 D_801151D4; -extern void func_80149204(s32 *a0); -extern void func_80149210(s32 a0, s32 a1); -extern s32 func_80149284(s32 *a0, s32 a1); -extern void func_80149350(s32 arg0); -extern void func_80149290(s32 a0); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_80149374(s32 arg0, s32 arg1); -extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8014942C(s32 arg0); -extern void func_8012EF70(s32 a0, s32 a1); -extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012EFB8(s32 a0); -extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); -extern void func_8014964C(s32 param_1, s32 param_2); -extern s32 func_801496D4(void *a0); -extern void func_8015AD08(); -extern void func_80149704(void); -extern void func_8015ACC4(); -extern void func_80149724(void); -extern u8 D_80078EBF; -extern s32 func_80149744(struct S_80149744 *a0); -extern void func_8015F7A0(); -extern void func_80149788(void); -extern void func_801653B8(); -extern void func_80149864(void); -extern s16 currentLocationId; -extern s32 func_8016F1AC(void); -extern s32 func_80149884(void); -extern void func_80160B00(); -extern void func_801498C0(void); -extern s32 func_80149AA8(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern void func_80146750(void *a0); -extern s32 func_801498E0(s32 *a0); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_80147364(u16 a0, s32 a1); -extern s32 func_800CCF28(s32 a0); -extern u8 D_80126B5C; -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_8015DAC4(s32 *a0); -extern void func_8015554C(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern void func_80149B14(s32 *a0); -extern u8 func_8014BEF8(void); -extern s32 func_80149B54(s32 * arg0); -extern void func_8015DE24(s32 *a0); -extern void func_80157510(s32 *a0); -extern void func_80149BAC(s32 *a0); -extern s32 func_80029178(s32 a0); -extern s32 func_80149C08(s32 arg0); -extern void func_801577C8(); -extern void func_80149C94(void); -extern void func_80157D20(void); -extern void func_80149CB4(void); -extern s32 func_80149CD4(s32 a0); -extern u8 func_8014B5B8(s32 *a0); -extern s32 func_80149D10(s32 a0); -extern s32 func_80149E94(s32 a0); -extern s32 func_80149DD8(s32 a0); -extern s32 func_80149D9C(s32 a0); -extern u8 D_801202A0[]; -extern s32 func_80149F2C(s32 a0, s32 a1); -extern s32 func_80149E94(s32 arg0); -extern void func_80149FA8(void); -extern s32 D_8018EDCC[]; -extern u8 D_80078E78[]; -extern s32 func_80149FB0(s32 a0); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern void func_8014A1B0(s32 a0, s32 a1); -extern s32 func_8014A048(s32 param_1); -extern u16 func_80156370(u16 a0); -extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); -extern void func_8015D4B4(); -extern void func_8014A218(void); -extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); -extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); -extern s32 func_8014A238(s32 arg0); -extern s32 func_8014A2E4(s32 a0); -extern void func_8014A380(s32 a0, s32 a1); -extern s16 D_801152B0; -extern s16 D_801152B4; -extern s32 func_8014A3E0(struct S_8014A3E0 *a0); -extern s32 func_8014A454(s32 a0); -extern s32 func_8014A4B4(void *a0); -extern void func_8015EDD4(); -extern void func_8014A4FC(void); -extern s32 func_8014A674(s32 *a0); -extern s32 func_8014A69C(s32 *a0); -extern s32 func_8014A6C4(s32 a0); -extern void func_8015E184(); -extern void func_8014A830(void); -extern s32 func_80029AF4(void); -extern s32 func_8014A850(s32 param_1); -extern void func_8014AA04(s32 a0); -extern void func_801599A4(void *a0); -extern void func_80159B3C(void *a0); -extern s32 func_80165A20(s32 a0); -extern void func_8014AB7C(); -extern void func_8014AC10(); -extern void func_8014AA28(void); -extern void func_8014AB5C(void); -extern void func_80162CCC(void); -extern void func_8014AB7C(s32 arg0); -extern void func_8014ABF0(void); -extern void func_80016714(void *a0, s32 a1); -extern void func_8014AC10(s32 arg0); -extern void func_8014ACC0(s32 a0, s32 a1); -extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); -extern void func_8014ACE8(void *a0, s32 a1, s32 a2); -extern void func_80146AFC(void *a0); -extern void func_8014ADA8(s32 a0, s32 a1); -extern void func_8014AD7C(s32 a0); -extern s32 D_80078E8C; -extern void func_8014B034(s32 arg0); -extern void func_8014B00C(s32 arg0); -extern void func_8014B084(void); -extern s16 D_80078E90; -extern void func_8014B034(s32 a0); -extern u16 D_80078EAC; -extern u8 D_80078EBA; -extern void func_800D10EC(void); -extern void func_8002AC98(void); -extern s32 func_8014B154(s32 *a0); -extern void func_8014B12C(void); -extern void func_8014B2F8(void); -extern void func_8014B4C4(void); -extern void func_8014B160(s32 a0); -extern s32 func_8016F1C4(void); -extern s16 D_80078E96; -extern s16 D_80078EB8; -extern u16 D_80078EA6; -extern void func_8014B2A8(void); -extern void func_8014B310(void); -extern void func_8014B2D0(void); -extern s32 D_80078E94; -extern s32 D_80078ECC; -extern void func_8014B33C(void); -extern u8 D_80062BF4[]; -extern void func_8014BC80(s32 a0, s32 a1); -extern void func_80019064(void *a0); -extern s32 D_80078E98; -extern void func_80166244(); -extern void func_8014B4D4(void *a0); -extern s16 D_80078E9A; -extern u8 D_80126D1C; -extern s32 D_80126D74; -extern void func_8014B598(s32 a0, s32 a1); -extern void func_8014B5B0(s32 *a0); -extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); -extern void func_8014B5D8(s32 s1); -extern s32 D_80078E9C; -extern s32 D_80078ED0; -extern void func_8014B6F0(s32 a0, s32 a1); -extern void func_8014B768(s32 a0, s32 a1); -extern void func_8014B944(s32 a0, s32 a1, s32 a2); -extern s32 D_80078EA4; -extern u16 D_80078EB2; -extern s16 D_80078EB4; -extern void func_8014BB0C(void); -extern void func_8014BB24(s32 a0, s32 a1, s32 a2); -extern void func_8014BC0C(s32 a0, s32 a1); -extern void func_8014BC44(s32 a0, s32 a1); -extern u8 D_800B9A17; -extern void func_8014BCC0(s32 a0, s32 a1); -extern u16 D_80078EB6; -extern s32 func_8014BCEC(s32 a0, s32 a1); -extern void func_8014BD24(s32 a0, s32 a1); -extern void func_8014BD60(s32 param_1, s32 param_2); -extern void func_8014BD98(s32 a0, u16 a1); -extern void func_8014BDC8(void); -extern void func_8014BDE0(void); -extern s32 func_8017267C(s32 *a0); -extern s32 func_80013294(void *a0, void *a1); -extern void func_80029ED4(s32 a0); -extern void func_8014BDE8(s32 a0); -extern void func_8014BE78(void); -extern void func_8014BE9C(void); -extern void func_80029124(s32 a0, s32 a1); -extern void func_8014BEC0(void); -extern void func_8014BF18(s32 a0); -extern void func_8014BF48(void); -extern u8 func_8014BF6C(void); -extern void func_8014BF8C(u8 arg0); -extern void func_8014BFB0(void); -extern u8 func_8014BFD4(void); -extern void func_8014BFF4(s32 a0, s32 a1); -extern void func_8014C010(s32 a0, s32 a1); -extern s32 func_8014C050(s32 a0, s32 a1); -extern s32 func_8014C088(s32 a0, s32 a1); -extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); -extern s32 func_8014C118(void * a0, s32 a1, s32 a2); -extern s32 func_8014C168(s32 * param_1, s32 param_2); -extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); -extern u8 D_8018EE54[]; -extern void func_8014C1A0(s32 arg0, s32 arg1); -extern s32 func_80013328(s32 a0, s32 a1); -extern s32 func_8014C59C(void *a0, void *a1); -extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); -extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); -extern s32 ratan2(s32 dx, s32 dy); -extern u8 D_8018EE5C; -extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); -extern s16 func_8014C5D0(s32 a0, s32 a1); -extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); -extern u8 D_80126D17; -extern void func_8014C6AC(void); -extern void func_8014C6C0(void); -extern u8 D_80126D1E; -extern void func_8014C6D0(void); -extern void func_8014C6E0(void); -extern s32 func_8014C860(s32 a0, s32 a1); -extern void func_8014C8C8(s32 a0, s32 *a1); -extern void func_8014C88C(s32 a0); -extern void func_8014C8C8(s32 dst, s32 * src); -extern void func_8014C8F0(s32 arg0); -extern u8 D_801151F0[]; -extern s32 func_8014C918(s32 a0, s32 a1); -extern s32 D_80126B50; -extern void func_8014C968(void); -extern void func_8014C978(void); -extern s32 func_8014C98C(void); -extern void func_80139914(s32 a0); -extern s32 func_8014CA00(s32 a0); -extern u16 func_8014CA70(s32 a0, s32 a1); -extern s32 func_8014CA14(s32 a0, s32 a1); -extern u16 func_8014CAE4(s32 *a0, s32 a1); -extern s32 func_8014CA88(s32 *a0, s32 a1); -extern s32 func_8014CAFC(void); -extern s32 func_8014CB0C(void); -extern s32 func_8014CB1C(void); -extern u8 D_80126D1F; -extern s32 func_8014CB2C(void); -extern s32 func_8014CB58(void); -extern u8 D_80126D1D; -extern void func_8014CB68(void); -extern s32 func_8014CB7C(void); -extern s32 func_8014CB8C(void); -extern short D_80126C9E; -extern void func_8014CB9C(struct Packed8 *a0); -extern s32 D_80126CDC; -extern void func_8014CBD8(void); -extern s16 D_80126CC4; -extern void func_8014CBE8(void); -extern void func_8014CBF8(void *a0); -extern void func_8014D3E0(s32 a0); -extern void func_8014D04C(void); -extern void func_8014CCB4(void); -extern void func_8014CC28(s32 a0); -extern void func_8014CD0C(u8 *a0); -extern s32 func_8014CF04(s32 a0, s32 a1, void *a2); -extern void func_8014CD80(s32 a0, void *a1, void *a2); -extern void func_8014D0A4(s32 a0); -extern s32 func_8014D2A0(s32 a0, void *a1, void *a2); -extern s32 func_8014D12C(s32 a0, void *a1, void *a2); -extern void func_8014D438(s32 a0); -extern void func_8014D3E0(s32 _arg0); -extern void func_8014D610(s32 a0, void *a1, void *a2); -extern s32 func_8014D4C0(s32 a0, void *a1, void *a2); -extern void func_8014D790(s32 a0); -extern void func_8014D738(void); -extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); -extern s32 func_8014D820(s32 a0, u16 *a1, u16 *a2); -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); -extern void func_8014DF94(s32 arg0); -extern void func_8014DF3C(void); -extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ -extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ -extern s16 D_801152AC; -extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); -extern void func_8014E48C(s32 a0); -extern void func_8014E434(void); -extern void func_8014E5B4(s32 a0, void *a1, void *a2); -extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); -extern void func_8014E6F8(struct SubE6F8 *a0); -extern void func_8014E6A0(void); -extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); -extern void func_8014E934(s32 _arg0); -extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); -extern s32 func_8014E98C(void *a0); -extern u16 D_800B99DA; -extern s32 D_801150D8; -extern s16 D_801152AA; -extern u8 D_80126720[]; -extern s16 D_80126724; -extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); -extern s32 func_8014ED80(struct SubED80 *a0); -extern int D_801E5BA8; -extern void func_8014ED28(s32 _arg0); -extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F24C(struct SubF24C *a0); -extern void func_8014F1F4(void); -extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F4C0(); -extern s32 func_8014F468(void); -extern int func_8014F74C(); -extern int func_8014F6F4(void); -extern u8 D_800D3918[]; -extern u8 D_801152A8[]; -extern s32 D_801152BC; -extern int func_8014F74C(s32 arg0); -extern s32 func_8014FA70(s32 a0); -extern s32 D_801E5BAC; -extern void func_8014FA04(s32 a0); -extern s32 func_8014FBC0(); -extern s32 func_8014FC18(u8 *self); -extern int func_8014FD54(int param_1); -extern void func_8014FCFC(void); -extern void func_80150170(void *a0); -extern s32 func_8014FE60(void *a0); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_8014FE60(void *e); -extern s32 func_80134510(s32 arg); -extern s32 func_80150150(s32 a, s32 b); -extern s32 func_80150460(s32 a, s32 b); -extern void func_801504D8(u16 *a0); -extern s32 func_80150480(s32 _arg0); -extern s32 func_80150528(void *a0, void *a1, void *a2); -extern s32 func_80150528(void *arg0, void *arg1, void *arg2); -extern s32 func_801506A4(s32 a0, s32 a1); -extern s32 func_801505FC(s32 a0); -extern s32 func_801506A4(s32 arg0, s32 arg1); -extern void func_80150820(s32 a0, s32 a1); -extern void func_8015086C(int param_1); -extern s32 func_801508B4(s32 a0); -extern s32 func_8015094C(s32 a0); -extern short func_801508F8(s32 a0); -extern s32 D_8018EE8C; -extern s32 D_80126990; -extern s32 D_80126994; -extern u8 D_80126948[]; -extern s32 func_80021174(s32 a0, s32 a1); -extern s32 func_8015094C(s32 param_1); -extern void func_80150B9C(void); -extern s32 func_80151184(s32 a0, s32 a1, s32 a2); -extern s32 func_80150BA4(s32 a0); -extern s32 func_801619D0(void *a0); -extern void func_80150BC8(s32 *a0); -extern s32 func_80150480(s32 a0); -extern u16 D_800AE6DC; -extern void func_80150C48(s32 a0); -extern int func_80151184(int arg, int a1, int a2); -extern int func_80150CA0(int arg); -extern void func_80150EC4(s32 a, s32 b); -extern void func_80150CC4(s32 a); -extern void func_80150CE4(s32 a); -extern void func_80150D04(s32 a); -extern void func_80150D24(s32 a); -extern void func_80150D44(s32 a); -extern void func_80150D64(s32 a); -extern void func_80150D84(s32 a); -extern void func_80150DA4(s32 a); -extern void func_80150DC4(s32 a); -extern void func_80150DE4(s32 a); -extern void func_80150E04(s32 a); -extern void func_80150E24(s32 a); -extern void func_80150E44(s32 a); -extern void func_80150EC4(s32 a0, s32 a1); -extern void func_80150E64(s32 a0); -extern void func_80150E84(s32 a0); -extern void func_80150EA4(s32 a0); -extern u8 D_800AE6C0; -extern s16 D_800AE6C8; -extern s16 D_800AE6CA; -extern s16 D_800AE6CC; -extern s32 D_800AE6C4; -extern s16 D_800AE6CE; -extern u8 D_800AE6BE; -extern u8 D_801201F8[]; -extern void func_80150F78(void); -extern void func_80150F80(s32 a0); -extern int func_80150FB4(int arg); -extern void func_80150FD8(s32 a0); -extern int func_80151014(int arg); -extern void func_80151038(s32 a0); -extern int func_80151070(int arg); -extern int func_80151094(int arg); -extern void func_801510B8(void); -extern void func_801510C0(void); -extern int func_801510C8(int arg); -extern int func_801510EC(int arg); -extern s32 func_8012DB84(void); -extern s32 func_80151110(void); -extern void func_80151130(void); -extern int func_80151138(int arg); -extern void func_8015115C(s32 *a0, s16 a1); -extern s32 func_80151164(s32 a0, s32 a1); -extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); -extern void func_801511A8(u8 *a0); -extern void func_801511C4(u8 *a0); -extern int func_80151204(int arg, int a1); -extern int func_801511E0(int arg); -extern int func_80151204(int a0, int a1); -extern void func_80151238(void *a0); -extern void func_8015126C(u16 *p); -extern void func_80151780(s32 a0); -extern void func_801516F0(s32 *a0); -extern void func_8015173C(s32 *a0); -extern s16 D_8011DB1A; -extern s32 D_80127518; -extern s32 D_801151FC; -extern s32 func_801725CC(u8 *a0); -extern s32 func_80029D3C(void); -extern void func_80151878(void); -extern void func_80153B58(s32 *a0); -extern s32 func_80151880(s32 a0); -extern s32 func_801518D8(s32 a0); -extern s32 func_80151944(void); -extern s32 func_80151924(void); -extern void func_8014E934(s32 a0); -extern s32 func_8014F3E8(s32 a0); -extern void func_801519C8(s32 a0); -extern void func_80151980(s32 a0); -extern M2C_UNK D_800D5880; -extern s32 D_800D58AC; -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801519C8(s32 arg0); -extern void func_80151C54(s32 a0); -extern void func_801542DC(s32 *a0, s32 a1); -extern void func_8015BDD0(s32 *a0); -extern void func_80165718(s32 a0); -extern u8 D_800D46E4[]; -extern void func_80151AE4(s32 arg0); -extern void (*D_8018EF34[])(void); -extern void func_80151D24(void *a0); -extern void func_80151DB0(s32 a0); -extern void func_80151D60(void *a0); -extern s32 func_80172630(u8 *a0); -extern s32 D_80062C14; -extern void func_80151DB0(s32 param_1); -extern void func_80151E78(s32 *a0); -extern void func_80151ECC(struct S80151ECC *a0); -extern void func_80151FB4(s32 a0); -extern void func_80151F38(s32 *a0); -extern void func_801553C0(s32 a0); -extern void func_80153C18(); -extern void (*D_8018EF58[])(void); -extern void func_80152058(void *a0); -extern void func_801520DC(s32 a0); -extern void func_80152094(s32 a0); -extern void func_80147324(s32 a0); -extern u8 D_80062C04[]; -extern M2C_UNK D_8018EF48; -extern void func_801520DC(s32 arg0); -extern void func_801470B4(s32 a0); -extern void func_8015369C(s32 a0); -extern void func_80152194(s32 *a0); -extern s32 func_801536DC(s32 a0); -extern void func_8015220C(s32 a0); -extern s32 func_80153800(s32 a0); -extern void func_801522CC(s32 a0); -extern void func_80152254(s32 *a0); -extern void (*D_8018EF6C[])(void); -extern void func_80152370(void *a0); -extern void func_801523F4(s32 a0); -extern void func_801523AC(s32 a0); -extern void func_8001382C(s32 a0, void *a1, void *a2); -extern u8 D_8018EF78[]; -extern void func_801523F4(s32 arg0); -extern void func_801525F4(int); -extern s32 func_801535F4(void *arg0); -extern void func_8015BF48(s32 *a0); -extern void func_80152500(int param_1); -extern void func_801525F4(s32 a0); -extern void (*D_8018EF88[])(void); -extern void func_80152698(void *a0); -extern void func_80152714(s32 a0); -extern void func_801526D4(s32 a0); -extern void func_80152790(s32 a0); -extern void (*D_8018EFA0[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018EF90; -extern void func_801528B0(s32 arg0); -extern void func_8015294C(s32 a0); -extern void func_80152A08(s32 a0); -extern void func_80152AC8(s32 a0); -extern void func_80152A50(s32 *a0); -extern void (*D_8018EFB4[])(void); -extern void func_80152B6C(void *a0); -extern void func_80152BF0(s32 a0); -extern void func_80152BA8(s32 a0); -extern void func_80152C80(s32 *a0); -extern void func_80152C40(s32 *a0); -extern void (*D_8018EFD0[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018EFC0; -extern void func_80152DA8(s32 arg0); -extern void func_80152E4C(s32 a0); -extern void func_80152EFC(s32 a0); -extern void func_80152FBC(s32 a0); -extern void func_80152F44(s32 *a0); -extern void (*D_8018EFE4[])(void); -extern void func_80153060(void *a0); -extern void func_801530E4(s32 a0); -extern void func_8015309C(s32 a0); -extern void func_80155440(s32 *a0); -extern void func_801530E4(s32 arg0); -extern void func_80153150(struct S80153150 *a0); -extern void func_801531BC(s32 a0); -extern void func_8015327C(s32 a0); -extern void func_80153204(s32 *a0); -extern void (*D_8018EFF8[])(void); -extern void func_80153320(void *a0); -extern void func_801533A4(s32 a0); -extern void func_8015335C(s32 a0); -extern void func_80153410(s32 *a0); -extern void func_80153490(s32 a0); -extern void func_80153550(s32 a0); -extern void func_801534D8(s32 *a0); -extern void (*D_8011DB28)(s32 a0); -extern s32 func_801536DC(s32 param_1); -extern void func_800139C8(s32 a0, void *a1, void *a2); -extern s32 func_80153978(s32 a0, u16 *src); -extern s32 func_80133784(s32 a0, void *src, s32 dst); -extern s32 func_801539F8(s32 a0, void *a1); -extern s32 func_801539F8(s32 a0, void * a1); -extern s32 func_8016DA04(s32 a0); -extern s32 func_80153BD8(s32 a0); -extern s32 func_80153BF0(s32 a0); -extern void func_80153C18(void); -extern u16 D_8011F748; -extern void func_80153C30(void); -extern void func_80153C74(s16 a0, s16 a1); -extern s16 D_8011DB18; -extern void func_80153C44(int a0, int a1, s16 a2); -extern s16 D_8011DB0C; -extern s32 D_80115210; -extern void func_80153C8C(void); -extern void func_80153C9C(void); -extern s32 func_80153CBC(void); -extern s32 D_8018F00C; -extern void (*D_8018F034[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018F014; -extern void func_80153D7C(s32 param_1); -extern void func_8015410C(void); -extern void func_80153E00(s32 param_1); -extern void func_80151664(void); -extern void func_80154134(u8 *a0); -extern void func_80154190(u8 *a0, s32 a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154218(u8 *a0, s32 a1, s32 a2); -extern void func_801541D8(u8 *a0, s32 a1, s32 a2); -extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); -extern void func_801542A4(); -extern void func_801542A4(s32 *a0, s32 a1); -extern void func_8015430C(); -extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); -extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); -extern s32 func_80154358(void * arg0); -extern void func_80154AB4(s32 a0, s32 a1); -extern void func_80154B20(s32 a0, s32 a1, s32 a2); -extern void func_80154AE0(s32 a0, s32 a1, s32 a2); -extern void func_80154B7C(u8 *a0, s32 a1); -extern void func_80154B4C(u8 *a0, s32 a1); -extern void func_80154BC8(void *a0, s32 a1, s32 a2); -extern void func_80154B98(void *a0, s32 a1, s32 a2); -extern u8 D_800D8D10[]; -extern s16 D_80078E9E; -extern void func_801550FC(s32 a0); -extern void func_80154ED8(s32 a0, s32 a1); -extern void func_80154F9C(s32 a0); -extern void func_800183E0(s32 a0); -extern void func_801550FC(s32 arg0); -extern void func_8001D150(s32, s32); -extern void func_8001D130(int, int); -extern void func_80155150(int param_1); -extern s32 D_800DE2A4[]; -extern void func_801552F4(s32 a0); -extern void func_80155344(s32 a0); -extern s32 func_80155394(s32 *a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80029178(s32); -extern int (*D_8018F080[])(void); -extern s32 func_80155458(s32 param_1); -extern s32 func_801659DC(u8 *a0); -extern s32 func_801554B8(void *arg0); -extern void func_801555F4(void *a0); -extern void func_80155518(s32 *a0); -extern void func_80155580(void *a0); -extern void (*D_8018F084[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern s32 func_80029B4C(s32 a0, s32 a1); -extern s32 func_80029BC8(s32 a0, s32 a1); -extern s32 func_80029C44(s32 a0, s32 a1); -extern s32 func_8015640C(s32 a0, s32 a1); -extern s32 rand(void); -extern u32 func_8015616C(s32 param_1, u16 param_2); -extern u16 func_80156370(u16 param_1); -extern s32 func_801564B0(s32 a0); -extern s32 func_8002A1B4(void); -extern s32 func_8002A400(void); -extern s32 func_8002A670(void); -extern s32 func_8002A8E0(void); -extern s32 D_801151E0[]; -extern s32 func_801565C0(void); -extern void func_80156A14(s32 *a0); -extern void func_80156648(s32 *a0); -extern u8 D_8011DAD8[]; -extern s32 func_8014C568(s16 *a0, s16 *a1); -extern void func_801567BC(s32 a0); -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018F4E8[]; -extern void func_80156A1C(s32 param_1, s32 param_2); -extern s32 D_801150E0[]; -extern void func_80156A88(s32 a0, s32 a1); -extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); -extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); -extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); -extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern s32 func_80135004(s32 a0, void *a1, s32 a2); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801575E4(void *a0); -extern void func_801574DC(s32 *a0); -extern void func_80157544(void *a0); -extern void (*D_8018F4F8[])(void); -extern void func_8014CC28(s32 a0); /* defined */ -extern s32 func_8014F3E8(s32 a0); /* declared */ -extern void func_8015BDD0(s32 *a0); /* defined */ -extern void func_801575E4(void *a0); /* defined */ -extern void func_80157580(s32 arg0); -extern u8 D_800D4F14[]; -extern void func_801576A8(void *arg0); -extern s32 func_8015773C(u8 *a0); -extern s32 func_8015771C(u8 *a0); -extern s32 func_8015773C(u8 * arg0); -extern int D_801E5BE0; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018F520[])(void); -extern void func_80157808(void *param_1); -extern void func_80157880(s32 a0); -extern s32 func_801725A4(u8 *a0); -extern u8 D_800D5128; -extern u8 D_8018F500; -extern void func_801578C0(s32 param_1); -extern void func_80147A84(int); -extern void func_80148038(int, int); -extern void func_80147460(int); -extern void func_80146D90(int); -extern void func_80161450(void *a0); -extern void func_80157A8C(int); -extern void func_80154A74(int, int); -extern unsigned char D_800D5178; -extern unsigned char D_8018F510; -extern void func_8015795C(int param_1); -extern void func_80161D20(s32 a0, s32 a1); -extern void func_80157A8C(s32 a0); -extern void func_8016706C(s32 a0); -extern u8 D_800D51AC[]; -extern void func_80157AC8(s32 param_1); -extern void func_80157B74(int param_1); -extern void func_8016158C(void *a0); -extern void func_8015BE04(s32 *a0); -extern void func_80157BC8(s32 a0); -extern void func_80157CCC(s32 a0); -extern void func_80157DC4(void *a0); -extern void func_80157FC4(void *a0); -extern void func_80157D74(u16 *a0); -extern void (*D_8018F560[])(void); -extern void func_80157E38(void *); -extern void func_80157E00(void *a0); -extern void func_80157E38(void * a0); -extern s32 func_80157F64(s32 *a0); -extern s32 func_80156600(void *a0); -extern void func_80157EA4(void *a0); -extern void (*D_8018F568[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018F534; -extern void func_80158038(void * param); -extern u8 D_800D524C[]; -extern void func_80161418(void *a0); -extern void func_801580B4(s32 a0); -extern void func_801581AC(s32 a0); -extern void (*D_8018F574[])(void); -extern void func_8015824C(void *a0); -extern void func_801582C0(void *); -extern void func_80158288(void *a0); -extern u8 D_800D52A8[]; -extern void func_801585A4(s32 *a0); -extern void func_801582C0(void *a0); -extern s32 func_801585AC(s32 *a0); -extern u8 D_800D52E8[]; -extern void func_80158344(s32 *a0); -extern s32 func_801615C4(void *a0, s32 a1); -extern u8 D_8018F544; -extern u8 D_800D533C; -extern void func_80158434(s32 param_1); -extern void func_80158548(s32 param_1); -extern void func_801585EC(u8 *a0); -extern void func_80158794(void); -extern s32 D_801E5BE8; -extern s32 D_801E5BF4; -extern s32 D_801E5BF8; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018F5B0[])(s32 *); -extern void func_80158AE4(void *a0); -extern void func_80158AB4(void *a0); -extern void func_8016F264(void); -extern void func_80165840(void); -extern void func_801658DC(void); -extern void func_80165A78(s32); -extern void func_80158AE4(void * a0); -extern M2C_UNK D_800D58D8; -extern void func_80158BB0(void *arg0); -extern s32 func_80159404(s32 a0, s32 a1); -extern void func_80158C40(s32 *a0); -extern void func_80158CD8(s32 *a0); -extern s32 func_80159434(s32 a0, s32 a1); -extern void func_80158D60(s32 a0); -extern M2C_UNK D_800D5904; -extern void func_80158E24(s32 *a0); -extern s32 D_8018F584[]; -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80158F00(int param_1); -extern u8 D_80110C3C[]; -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80158FA4(s32 param_1); -extern s32 func_801399F0(s32 a0); -extern u8 D_80110C94[]; -extern u8 D_80110CD4[]; -extern void func_80159070(void *a0); -extern s32 func_80029A94(s32); -extern void func_80175454(void); -extern void func_800298BC(void *); -extern void func_8002992C(s32); -extern void func_800CF804(void); -extern void func_800CF818(void); -extern u8 D_80110D0C[]; -extern void func_80159120(s32 a0); -extern void func_801592CC(s32 *a0); -extern u8 D_800AE6BD; -extern s32 D_801E5BF0; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018F800[])(void); -extern void func_80159698(void *a0); -extern s32 func_801596D4(void *a0); -extern void func_80174B6C(void); -extern void func_80129248(s16 a0); -extern void func_8013C938(void); -extern void func_8013CB20(void); -extern void func_8013C98C(void); -extern void func_8002850C(s32, s32, s32); -extern void func_80028620(s32, void *); -extern s16 D_800B9AAC[]; -extern s16 D_800B9B00; -extern u16 D_801270C0; -extern u32 D_800AFAE8[]; -extern char D_8018F620[]; -extern s32 func_801596F0(s32 param_1); -extern s32 func_80159874(void); -extern void func_800167B8(s32 a0); -extern s32 func_8015987C(s32 a0); -extern int func_800167F0(int arg); -extern int func_801598BC(void); -extern void func_80159968(void *a0); -extern void func_801598E0(u8 *a0); -extern void (*D_8018F8A4[])(void); -extern void func_80159A20(void *a0); -extern void func_801599E0(void *a0); -extern void func_80159A18(void); -extern void func_80159BE4(s32); -extern void func_80159B08(s32 *a0); -extern void func_80159B70(void *a0); -extern void func_80159B3C(void * a0); -extern void (*D_8018F9F8[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018F814; -extern void func_80159BE4(s32 arg0); -extern void func_8015A1C8(s32 a0); -extern void func_8015A2D8(s32); -extern void func_8015A1FC(s32 *a0); -extern void func_8015A264(void *a0); -extern void func_8015A230(s32 *a0); -extern void (*D_8018FA00[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018F824; -extern s32 func_80172608(u8 *a0); -extern void func_8015A2D8(s32 param_1); -extern u8 D_800D48DC; -extern s32 func_8015AB7C(s32 a0); -extern s32 D_8011F9C4; -extern s32 func_8015ABD4(s32 a0, s32 a1, s32 a2); -extern s32 func_80161CD0(s32 a0, s32 a1); -extern M2C_UNK D_8018F844; -extern void func_8015AC48(s32 arg0); -extern void func_8015AC90(s32 a0); -extern void func_8015ADB0(s32 a0); -extern void func_8015ACC4(s32 *arg0); -extern void func_8015AD3C(void *a0); -extern void func_8015AD08(void *arg0); -extern void (*D_8018FA08[])(void); -extern void func_8015ADB0(s32); -extern void func_8015AD78(s32 a0); -extern void func_8015ADB0(s32 arg0); -extern s32 D_800D4A9C; -extern int func_8015B6F4(int param_1); -extern u8 D_800D4F8C[]; -extern s32 func_8015B7B4(s32 a0); -extern u8 D_800D4BE0[]; -extern s32 func_8014A51C(void); -extern s32 func_8015B858(u8 *a0); -extern s32 D_800D4B48; -extern void func_8015B8F8(s32 *a0); -extern void func_8015BD8C(s32 *a0); -extern s32 func_8015BE94(); -extern void func_8015BE38(struct Obj *a0); -extern s32 func_8015BE74(void); -extern void func_80161124(void *a0); -extern s32 func_8015BE94(s32 *a0); -extern s32 func_8015AE2C(); -extern s32 func_8015BEC4(void); -extern s32 func_8015B950(s32 arg0); -extern s32 func_8015BEE4(void); -extern void func_8015BF04(s32 *a0); -extern void func_8015C0C4(s32 a0); -extern void func_8015BFF4(void *a0); -extern void func_8015BF7C(s32 *a0); -extern void func_8015C030(s32 *a0, s32 a1); -extern void func_8015BFB0(s32 *a0, s32 a1); -extern void (*D_8018FA30[])(void); -extern void func_8015C0C4(s32); -extern void func_8015C08C(s32 a0); -extern s32 func_8015C128(s32 param_1); -extern void func_8015C6A4(void); -extern void func_8015C788(s32 a0); -extern void func_8015C6AC(s32 *a0); -extern void func_8015C714(void *a0); -extern void func_8015C6E0(s32 *a0); -extern void (*D_8018FA3C[])(void); -extern void func_8015C788(s32); -extern void func_8015C750(s32 a0); -extern void func_8015CB94(s32 a0); -extern void func_8015CBCC(void); -extern void func_8015CBD4(void); -extern void func_8015CBDC(void); -extern void func_8015CBE4(void); -extern void func_8015CBEC(void); -extern void func_8015CBF4(void); -extern void func_8015CBFC(void); -extern void func_8015CC04(void); -extern void func_8015CC0C(s32 *param_1); -extern void func_8015CC74(s32 *a0); -extern void func_8015CC40(s32 *a0); -extern s32 func_8015CCD0(); -extern s32 func_8015CCB0(void); -extern s32 func_801725E0(u8 *a0); -extern s32 func_8015CCD0(s32 param_1); -extern s32 func_8015CD20(s32 arg0); -extern void func_8015CF24(s32 a0); -extern void func_8015D01C(); -extern void func_8015CF58(s32 *param_1); -extern void func_8015CFC0(s32 *a0); -extern void func_8015CF8C(s32 *a0); -extern void func_8015CFFC(void); -extern void func_8015D01C(int param_1); -extern void (*D_8018F8B0[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018FAE0; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018EBC4[]; -extern void func_8015D414(int param_1); -extern void func_8015D57C(s32); -extern void func_8015D480(s32 *a0); -extern s32 func_8015D4E8(s16 *a0); -extern void func_8015D4B4(s16 *a0); -extern void func_8015D524(s32 arg0); -extern void func_8015D544(s32 a0); -extern void func_801746DC(void); -extern void func_8015D57C(s32 arg0); -extern s32 func_80161B18(void *a0); -extern s32 func_80161B84(void *a0); -extern void func_80154150(int, int); -extern void func_80149374(int, int); -extern unsigned char D_8018FAF4[]; -extern void func_8015D5E8(int param_1); -extern int func_8015E0D4(int); -extern void func_8015DA5C(s32 a0); -extern void func_8015DB6C(s32 a0); -extern void func_8015DA90(s32 *a0); -extern void func_8015DAF8(s32 *a0); -extern void func_8015DB6C(s32); -extern void func_8015DB34(s32 a0); -extern void func_8015DCB8(s32 a0); -extern void func_8014BD60(s32 a0, s32 a1); -extern int func_8015DD74(int); -extern void func_8015DBD4(void *arg0); -extern int func_8015DC84(int a0); -extern s8 D_8018FB30[]; -extern void func_8015DCB8(s32 param_1); -extern int func_8015DD74(int arg0); -extern void func_8015DECC(s32 a0); -extern void func_8015DDF0(s32 *a0); -extern void func_8015DE58(s32 *a0); -extern void func_8015DECC(s32); -extern void func_8015DE94(s32 a0); -extern void func_8015E018(s32 a0); -extern void func_8015DF34(void *arg0); -extern int func_8015DFE4(int a0); -extern void func_8015E018(s32 param_1); -extern int func_8015E0D4(int a0); -extern void func_8015E22C(s32 a0); -extern void func_8015E150(s32 *a0); -extern s32 func_8015E1B8(s32 a0); -extern void func_8015E184(s32 *arg0); -extern void func_8015E22C(s32); -extern void func_8015E1F4(s32 a0); -extern u8 D_800D4FF4[]; -extern u8 D_800D5098[]; -extern u8 D_800D5060[]; -extern s32 func_8014A850(s32 a0); -extern void func_8015E40C(s32 a0); -extern void func_8015E588(void); -extern void func_8015E4B0(s32 a0); -extern void func_8015E288(s32 a0); -extern u16 D_8018FB78; -extern u16 D_8018FB7A; -extern u16 D_8018FB7C; -extern s32 D_8018FB80; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -extern void func_8013C9C4(void *a0); -extern s32 D_8018FB88; -extern void func_8015E5B0(u8 *self); -extern void func_8015E714(s32 *a0); -extern void func_8015E95C(s32); -extern void func_8015E84C(s32 *a0); -extern void func_8015E8E8(s32 *a0); -extern void func_8015E9B8(s32 *a0); -extern void func_8015E8B4(s32 *a0); -extern void func_8015E924(s32 a0); -extern void func_8015E95C(s32 a0); -extern s16 D_801152A0; -extern void func_80160818(s32 *a0); -extern void func_8015ED6C(s32 *a0); -extern void func_8015EE7C(s32); -extern void func_8015EDA0(s32 *a0); -extern s32 func_8015EE08(s32 a0); -extern void func_8015EDD4(s32 *arg0); -extern void func_8015EE44(s32 a0); -extern int D_800D4C48; -extern int D_8018F894; -extern void func_8015EE7C(s32 param_1); -extern void func_8015EEE0(void *arg0); -extern void func_8015EF9C(void); -extern void func_8015F080(s32); -extern void func_8015EFA4(s32 *a0); -extern void func_8015F00C(s32 *a0); -extern void func_8015EFD8(s32 *a0); -extern void func_8015F048(s32 a0); -extern void func_8015F080(s32 a0); -extern s32 D_80062BE8; -extern void func_801466F0(s32, s32, s32, s32, s32, s32, s32, s32); -extern s32 func_80161208(void); -extern void func_8015F118(void *a0); -extern void func_8015F260(s32 *a0); -extern void func_8015F380(); -extern void func_8015F2BC(s32 *a0); -extern void func_8015F324(s32 *a0); -extern void func_8015F2F0(s32 *a0); -extern void func_8015F360(void); -extern s32 func_801725B8(u8 *a0); -extern void func_8015F380(void* arg0); -extern void func_8015F738(s32 *a0); -extern void func_8015F848(s32 *a0); -extern void func_8015F76C(s32 *a0); -extern s32 func_8015F7D4(s32 a0); -extern void func_8015F7A0(s32 *arg0); -extern void func_8015F810(s32 *a0); -extern void func_80147078(s32 *, s16); -extern void func_80159B70(void *); -extern void func_8015F89C(void *arg0); -extern void func_8015F948(s32 *param_1); -extern void func_8015F9A4(void *arg0); -extern void func_8015FA24(s32 arg0); -extern void func_8015FBE0(s32 *a0); -extern void func_8015FA44(s32 *a0); -extern void func_8015FAAC(s32 *a0); -extern void func_8015FA78(s32 *a0); -extern s32 func_801612B8(void *a0, s32 a1); -extern void func_8016007C(s32 a0); -extern void func_8015FAE8(void *arg0); -extern void func_8015FCC8(void *param_1); -extern unsigned int D_8018FC0C[]; -extern void func_8015FD74(int param_1); -extern s32 func_80028DE0(void); -extern u8 func_80165700(s32 a0, s32 a1); -extern void func_8015FDCC(s32 a0); -extern u8 D_80078EC2; -extern u8 func_801656E8(s32 a0, s32 a1); -extern void func_80165670(s32 a0, s32 a1); -extern void func_8016004C(s32 a0); -extern void func_8015FF20(void *param_1); -extern void func_801601AC(s32 *a0); -extern void func_801600D0(s32 *a0); -extern void func_80160138(s32 *a0); -extern void func_80160104(s32 *a0); -extern void func_80160174(s32 *a0); -extern void func_801601E4(s32 *a0); -extern void func_80160244(s32 *a0); -extern void func_8016032C(void); -extern void func_80160410(s32 *a0); -extern void func_80160334(s32 *a0); -extern void func_8016039C(s32 *a0); -extern void func_80160368(s32 *a0); -extern void func_801603D8(s32 *a0); -extern u8 D_80062BD0; -extern void func_80160410(s32 * a0); -extern void func_801607B8(s32 *a0); -extern void func_801608C0(s32 *a0); -extern void func_801607E4(s32 *a0); -extern void func_8016084C(s32 *a0); -extern void func_80160888(s32 *a0); -extern void func_80160A28(s32 a0); -extern void func_80160A74(s32 *a0); -extern void func_80160BB4(s32 *a0); -extern void func_80160ACC(s32 *a0); -extern s32 func_80160B34(s32 a0); -extern void func_80160B00(s32 *arg0); -extern void func_80160B70(s32 a0); -extern void func_80160C28(void *arg0); -extern void func_80160CB4(s32 *a0); -extern void func_80160D10(void *arg0); -extern void func_80160DEC(u8 *a0); -extern void func_80160F00(); -extern void func_80160E3C(s32 *a0); -extern void func_80160EA4(); -extern void func_80160E70(s32 *a0); -extern void (*D_8018FCBC[])(void); -extern void func_80160EA4(void *a0); -extern void func_80160EE0(void); -extern void func_80160F00(void* arg0); -extern void func_800D0F4C(s32 a0); -extern u8 D_80110EC0; -extern void func_80160F70(s32 a0); -extern void func_80160FE0(s32 *a0); -extern void func_80161034(void *a0); -extern void func_80161094(s32 a0); -extern void func_801610FC(void); -extern void func_801483E8(void); -extern s32 func_80161A60(s32 a0); -extern void func_8016130C(void *a0, s32 a1); -extern void func_80161240(void *a0); -extern void func_80161374(void *a0, s32 a1); -extern void func_80161278(void *a0); -extern s32 func_801612B8(void * a0, s32 a1); -extern void func_8016163C(void *a0, s32 a1); -extern void func_80161774(void *a0, s32 a1); -extern s32 func_8016197C(s32 a0, s32 a1); -extern s32 func_80161488(void *a0); -extern void func_80161888(void *a0, s32 a1); -extern void func_801614E4(void *a0); -extern void func_8016191C(void *a0, s32 a1); -extern void func_8016151C(void *a0); -extern void func_80161554(void *a0); -extern s32 func_801615C4(void * arg0, s32 arg1); -extern s32 func_801619A4(s32 *a0); -extern s32 func_80161A00(s32 a0); -extern s32 func_80161A30(s32 a0); -extern int func_801497A8(void); -extern int func_80161BE0(void *param_1); -extern u16 D_8018FCEC[]; -extern void func_80161C98(int param_1, u32 param_2); -extern void func_80161E08(s32); -extern s32 func_80162438(s32); -extern s32 D_800AE6A8; -extern void func_800D1734(void *); -extern s32 D_8018FD50; -extern void func_80161D88(void); -extern void func_80161E08(s32 param_1); -extern int func_800291DC(int); -extern int func_800D0E30(void *a0); -extern int func_801620C4(void); -extern s32 func_800D0D7C(s32, s32); -extern int D_801E5C00[]; -extern void func_8016216C(void); -extern u8 D_80078EB0; -extern u8 D_80078EB1; -extern s32 func_801621CC(s32 arg0); -extern void func_801622C4(void); -extern void (*D_8018FD74[])(void); -extern void func_80162330(void *a0); -extern void func_8014706C(void *a0); -extern s32 func_8016236C(u8 *a0); -extern void func_800D0C48(s32 a0); -extern s32 func_801623B8(s32 *a0); -extern s32 func_800167F0(s32 a0); -extern s32 func_80162414(void); -extern s32 func_80162438(s32 _unused0); -extern int func_801626B8(void); -extern void func_80162714(void); -extern int D_801E5C58[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018FDBC[])(void); -extern void func_80162834(void *a0); -extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80162968(s32 a0); -extern s32 func_80162ACC(u8 *a0); -extern u8 D_800B5CB8; -extern s32 D_8018FDAC; -extern s32 D_800B5CBC; -extern u8 D_800B5CDF; -extern s32 D_800B5CEC; -extern void func_80162870(s32 param_1); -extern void func_801628F4(s32 *a0); -extern void func_80162968(s32 param_1); -extern void func_80162AC0(s32 *a0, s8 a1); -extern s32 func_80162AE0(u8 *a0); -extern void func_80162AF4(void); -extern void func_80162CC4(void); -extern s32 D_80126D40; -extern void func_80162B1C(void); -extern void func_80162D28(s32 *a0); -extern void func_80162D88(s32 *a0); -extern void func_80162DE8(s32 *a0); -extern void func_80162E48(s32 *a0); -extern void func_80162EA8(s32 *a0); -extern void func_80162F60(s32 arg0, s32 arg1); -extern void func_80162F80(s32 arg0, s32 arg1); -extern void func_80162FA0(s32 arg0, s32 arg1); -extern void func_80162F08(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80162FC0(s32 *a0); -extern void func_80162FF4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801630C4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163194(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg4); -extern void func_8016325C(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163234(s32 a0); -extern s32 D_80115100; -extern s32 func_801632E0(void); -extern s32 D_80115200; -extern s32 func_801632F0(void); -extern u16 D_80126B18[]; -extern void func_80163328(void); -extern s32 func_801633A8(void); -extern s32 func_80163408(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void func_80163534(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, u16 * a5); -extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); -extern char D_801E5054[8]; -extern void *memcpy(void *dst, const void *src, unsigned int n); -extern void func_801634D8(s32 param_1, u16 param_2, u16 param_3, s32 param_4, u16 param_5); -extern void func_80157158(); -extern void func_80163664(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801636D0(s32 a0, s32 a1); -extern s32 func_8016380C(struct S8016380C *a0, s32 a1); -extern void *memcpy(void *dst, void *src, s32 n); -extern s32 func_801638A0(u8 *a0, s32 a1); -extern s32 func_80163950(s32 a0); -extern void (*D_8018FDC4[])(void); -extern void func_80163A58(void *a0); -extern void func_80163A94(s32 param_1); -extern void func_80163C2C(s32 param_1); -extern void func_80163EC8(s32 param_1); -extern void func_80164270(s32 *a0); -extern void func_80164418(void); -extern void func_80163764(s32 a0); -extern void func_801642AC(s32 a0); -extern void func_8016432C(s32 a0); -extern void func_80164410(void); -extern s32 func_80012DBC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164530(s32 arg0); -extern void (*D_8018FE18[])(void); -extern void func_80164744(s32 param_1); -extern void func_8001C810(s32 a0, s32 a1); -extern void func_80164A74(s32 *a0); -extern void func_80164930(s32 a); -extern u16 D_800DF2E0; -extern s32 D_8018FDE0; -extern s16 D_8018FE14; -extern s16 D_8018FE12; -extern s16 D_8018FE10; -extern void func_801647A4(int param_1); -extern void func_80164ACC(); -extern void func_80164864(void *a0); -extern void func_80164930(s32 param_1); -extern s32 func_8014C308(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164ACC(s32 a0); -extern void (*D_8018FE24[])(void); -extern void func_80164BA0(void *a0); -extern void func_8001CD50(s32 a0, s32 a1); -extern void func_800233CC(void *, unsigned short); -extern void func_80164DD0(s32 a0); -extern void func_80164DB0(void); -extern u8 D_801E5CB8; -extern u8 D_801E5CB9; -extern u8 D_801E5CBA; -extern u8 D_801E5CBB; -extern u8 D_801E5CBC; -extern u8 D_801E5CBD; -extern u8 D_801E5CBE; -extern u8 D_801E5CBF; -extern void func_80164BDC(s32 param_1); -extern void func_80164E40(void); -extern void func_80164CD4(u8 *a0); -extern void func_80164D4C(void *arg0); -extern void (*D_8018FE34[])(void); -extern void func_80164EA4(void *a0); -extern void func_80165124(void *a0); -extern void func_80164EE0(int param_1); -extern s32 func_80165140(s32 a0); -extern void func_801651B8(void *a0); -extern void func_80164F44(void *arg0); -extern void func_80165024(void *a0); -extern void func_80165064(s32 *a0); -extern void func_801650C4(s32 *a0); -extern s32 func_80165140(s32 param_1); -extern s32 func_80165240(s32 a0, s32 a1, s32 a2); -extern s32 D_801E5CF8; -extern void func_801651B8(void * param_1); -extern u8 D_80126CF8; -extern void func_8016533C(void); -extern void func_801653F4(s32 a0); -extern void func_80165580(s32 a0); -extern void func_80165374(s32 a0); -extern void func_80165580(s32 _arg0); -extern void func_801653B8(s32 *a0); -extern s32 func_80165624(s32 a0); -extern u8 D_80078EC5; -extern void (*D_8018FE78[])(void); -extern u8 func_80165658(s32 a0, s32 a1); -extern void func_800CAE0C(s32 a0); -extern void func_801654A8(s32 arg0); -extern void func_80165B28(void *a0); -extern void func_801655E4(s32 a0); -extern u8 D_8018FEF4[]; -extern s32 D_8018FF14[]; -extern u8 D_8018FF90[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018FFB0[]; -extern u8 D_8018FFD0[]; -extern void func_800CAF6C(void); -extern void func_80165770(void); -extern void func_801657D8(void); -extern u8 D_80078EC3; -extern void func_801657A0(void); -extern s32 D_80078EA0; -extern s32 D_80078EA8; -extern u8 D_80078EBB; -extern s32 D_80078ED4; -extern s32 D_80078ED8; -extern s32 D_80078EDC; -extern u8 D_80078EE0; -extern void func_80165874(void); -extern s8 D_80078EC4; -extern void func_801658EC(void); -extern s32 func_80165900(void); -extern s32 func_80165910(void); -extern s32 D_8012672C; -extern s32 D_8012811C; -extern s32 D_80126B08; -extern void func_80165938(void); -extern void func_80165958(void); -extern s32 func_80165978(void); -extern void func_80165988(void); -extern s32 func_801659A8(void); -extern void func_801659B8(void); -extern s32 func_801659CC(void); -extern void func_80165A18(void); -extern s32 func_80165A50(s32 _arg0); -extern void func_80165AC8(void); -extern void func_80165A78(s32 arg0); -extern void (*D_8019006C[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_801900E8[])(void); -extern void func_80165BB4(u8 *a0); -extern void func_80165B6C(u8 *a0); -extern void func_80165C58(s32 arg0); -extern void func_80165BFC(void *a0); -extern void func_80165C78(void); -extern M2C_UNK D_801E5064; -extern void func_80165E2C(u16 *arg0); -extern s32 func_80165FA4(s32 a0, s32 a1, s32 a2); -extern s32 func_80167DBC(s32 a0, s32 a1, s32 a2); -extern s32 func_80167AE0(s32 a0, s32 a1, s32 a2); -extern void func_80165E90(void); -extern void func_80020F34(s32 a0, s32 a1); -extern s32 func_80165FA4(s32 arg0, s32 arg1, s32 arg2); -extern void (*D_801900F4[])(void); -extern void func_80166018(void *a0); -extern void func_80166054(s32 arg0); -extern void func_801661CC(s32 param_1); -extern void func_80166244(void* arg0); -extern void func_8016629C(void *a0); -extern void func_801662F4(void *a0); -extern void func_8016634C(void *a0); -extern void func_801663A4(void *a0); -extern void (*D_801900FC[])(void); -extern void func_801663FC(void *a0); -extern u8 D_800D387C[]; -extern u8 D_800D3888[]; -extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); -extern void func_800D1FC8(s32 a0, s32 a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern void func_801665B4(); -extern void func_80146C3C(); -extern void func_80166438(u8 *a0); -extern s32 func_80128ED8(s32 param_1, s32 *param_2); -extern void func_800D22E4(s32 a0); -extern void func_801665B4(s32 *a0); -extern void (*D_801901C4[])(void); -extern void func_80166618(void *a0); -extern void (*D_801901D4[])(void); -extern void func_80166654(void *a0); -extern s32 func_80166690(s32 param_1, s32 param_2); -extern s32 func_80166994(); -extern s32 func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern s32 func_80167540(s32 arg0); -extern void (*D_801901E4[])(void); -extern void func_801678B4(void *a0); -extern void RotMatrixYXZ(void *a0, void *a1); -extern void func_80048EAC(void *a0, void *a1); -extern s32 func_801670E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80146C3C(void); -extern void func_801678F0(s32 a0); -extern void (*D_801901F0[])(void); -extern void func_80167A9C(void *a0); -extern void func_80167AD8(void); -extern s32 func_80167AE0(s32 param_1, s32 param_2, s32 param_3); -extern void func_80168070(s32 a0, s16 *a1, s16 *a2, void *a3); -extern u8 D_80190150[]; -extern u8 D_80190164[]; -extern s32 func_80167DBC(s32 arg0, s32 arg1, s32 arg2); -extern void func_800D20C0(void *a0, void *a1, s32 a2); -extern void func_80017E68(void *a0, void *a1); -extern void func_800D23D0(void *a0); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern s32 D_801269A4; -extern s32 D_801269A8; -extern s32 D_801269AC; -extern void func_80168070(s32 param_1, s16 *param_2, s16 *param_3, void *param_4); -extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_8016829C(s32 a0); -extern s32 func_80166690(s32 a0, s32 a1); -extern void func_80168328(s32 arg0); -extern void func_801683D8(s32 a0); -extern void func_801684B4(s32 a0); -extern void func_80168540(s32 a0); -extern void func_801685EC(s32 a0); -extern void func_80168640(s32 a0); -extern s32 RotMatrixX(s32 a0, void *a1); -extern void func_80168664(void *arg0); -extern void (*D_80190208[])(void); -extern void func_80168744(void *a0); -extern void func_80168BDC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801687CC(s32 a0); -extern void func_80168780(s32 a0); -extern void func_80168828(void); -extern void func_801687CC(s32 param_1); -extern void func_80168828(); -extern void (*D_80190210[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_80190218[])(void); -extern void func_80168AA8(void *a0); -extern void func_80168AE4(s32 a0); -extern void func_800D2318(void); -extern void func_80168BDC(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void (*D_80190220[])(void); -extern void func_80168D58(void *a0); -extern void func_80168D94(int a0); -extern void func_80168F40(); -extern void func_80168EC4(s32 a0); -extern void func_80168F40(void *arg0); -extern void (*D_80190228[])(void); -extern void func_8016901C(void *a0); -extern void func_80169058(s32 a0); -extern s32 func_80169228(void); -extern void func_801691B8(void *a0); -extern void (*D_80190230[])(void); -extern void func_801693CC(void *a0); -extern void func_80169584(s32 param_1); -extern void func_80169408(s32 a0); -extern void func_8016951C(int param_1); -extern s32 func_80017758(void *a0, void *a1); -extern s32 func_80017DC4(void *a0, void *a1); -extern void func_801696D8(s32 a0, s32 a1); -extern void (*D_80190238[])(void); -extern void func_80169830(void *a0); -extern void func_8016986C(s32 a0); -extern s32 func_80169A4C(s32 a0, s32 a1); -extern void func_801699D0(void *arg0); -extern void (*D_801902EC[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_801902F4[])(void); -extern void func_80169F00(void *a0); -extern char D_801902A4[]; -extern char D_80190264[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8019032C[])(void); -extern void func_8016A020(void *a0); -extern void func_8016A05C(void *a0); -extern void func_8016A290(s32 a, void *b, void *c); -extern void func_8016A08C(s32 param_1); -extern void func_8016A1CC(int param_1); -extern void func_8016A290(s32 param_1, void *param_2, void *param_3); -extern void (*D_80190338[])(void); -extern void func_8016A700(void *a0); -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_80126B62; -extern u16 D_80126B66; -extern void func_8016AA50(s32 param_1, s32 param_2); -extern void (*D_80190380[])(void); -extern void func_8016AB30(void *a0); -extern void func_8016B234(void); -extern void func_8016AFB0(s32 a0); -extern void func_8016B114(void *arg0); -extern s32 func_8016B448(s32, s32); -extern s32 func_8016BA48(s32 a0); -extern void func_8016B3F4(s32 a0); -extern s32 func_8016B428(s32 a0); -extern void func_8016B984(void *a0); -extern s32 func_8016B448(s32 arg0, s32 arg1); -extern void (*D_801903FC[])(void); -extern void func_8016B4BC(void *a0); -extern int func_8016B9F8(int); -extern int func_8016B834(int, int); -extern void func_8016B91C(int); -extern int D_801E6018; -extern void func_8016B4F8(int param_1); -extern s32 func_8016B9F8(s32 param_1); -extern void func_8016B6BC(s32, s32, s32, s32); -extern void func_8016B91C(s32); -extern s16 D_801903F0[]; -extern void func_8016B5C0(s32 param_1); -extern void func_8001CD9C(int, void *); -extern int *D_80190434[]; -extern unsigned short D_8019043C[]; -extern unsigned short D_80190444[]; -extern unsigned char D_801E6020[]; -extern int func_8016B834(int param_1, int param_2); -extern void func_8016B964(SrcB964 *a0, DstB964 *a1); -extern void func_8016B91C(s32 arg0); -extern s32 D_801E6018; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8019044C[])(void); -extern void func_8016BBA4(void *a0); -extern s32 func_8016BBE0(s32 param_1); -extern void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3); -extern M2C_UNK D_801E6154; -extern M2C_UNK D_801E6158; -extern void func_8016BCC0(void *arg0); -extern s32 func_8016BD78(s32 param_1); -extern s32 func_8016BEA0(s32 param_1); -extern void func_8016BF34(void *a0); -extern void func_8016BFD0(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern s32 D_801E60E0; -extern void (*D_8019047C[])(void); -extern void func_8016C14C(void *a0); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801E615C[]; -extern u8 D_801E6164[]; -extern u8 D_801E6114[]; -extern void func_8016C2C4(s32 param); -extern s32 func_8016C49C(s32 param_1_arg); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_8016C74C(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern short func_8016CF04(s32 a0, s32 a1); -extern void func_8016C83C(s32 a0); -extern void (*D_80190484[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_801904A0[])(void); -extern void func_8016D19C(void *a0); -extern void (*D_801904A8[])(void); -extern void func_8016D428(void *a0); -extern void func_8016D464(u8 *a0); -extern void func_8016D4DC(s32 a0); -extern void func_8016D5EC(s32 *a0); -extern short func_8016CBC0(void); -extern void func_8016D64C(int param_1); -extern void func_8016D778(s32 a0); -extern void func_800D20C0(); -extern void func_8016D848(s32 *a0); -extern void func_8016D984(s32 *a0); -extern void func_8016DBD8(u8 *a0); -extern void (*D_80190510[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801904B4; -extern u8 D_801904C0; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void (*D_80190544[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8019054C[])(void); -extern void func_8016DF20(void *a0); -extern void func_8016E3CC(s32 a0); -extern void func_8016E1CC(s32 a0); -extern void func_8016E26C(s32 *a0); -extern void func_8016E2E8(void *a0); -extern void func_8016E460(void *a0, void *a1); -extern void func_8016E358(void *a0); -extern void func_8016E460(void *arg0, void *arg1); -extern void (*D_801905A0[])(void); -extern void func_8016E5B8(void *a0); -extern void func_8016E5F4(s32 arg0); -extern void func_8016E778(); -extern void func_8016E688(void *a0); -extern void func_8016E6E4(s32 a0); -extern void func_8016E728(u8 *a0); -extern void func_8016E7C8(int param_1, short *p1, unsigned int *p2); -extern void func_8016E778(int param_1); -extern void func_8016E7C8(int param_1, short *param_2, unsigned int *param_3); -extern s32 D_80115218; -extern void func_8016E8F0(void); -extern void func_8016E918(short param_1, short param_2); -extern s32 func_8016E95C(); -extern u16 D_801905D4[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_801905C4[]; -extern void func_8016EB3C(s32 p); -extern void func_8016EBA8(u8 *param_1); -extern void func_8016ED6C(void); -extern s32 D_80126D70; -extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); -extern void func_8016ED8C(s32 a0, s32 a1, s32 a2); -extern void func_8016EE40(s32 a0, s32 a1, s32 a2); -extern void func_8016EDBC(s32 a0, s32 a1, s32 a2); -extern void func_8016EE94(); -extern void func_8016EDEC(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_8016EF78(s32 a0); -extern void func_8016EE40(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_801726D0(void *a0); -extern s32 D_80126D50; -extern s32 D_80126D54; -extern u8 D_80126D6C; -extern u8 D_80126D6D; -extern u8 D_80126D6E; -extern s32 D_80126D5C; -extern s32 D_80126D60; -extern s16 D_80126D64; -extern s16 D_80126D66; -extern s16 D_80126D68; -extern s16 D_80126D6A; -extern u8 D_80126D1A; -extern s32 D_80127058; -extern s32 D_8012705C; -extern s32 D_80127060; -extern s32 D_80127064; -extern s32 D_80127068; -extern s32 D_8012706C; -extern s32 D_80127070; -extern s32 D_80127074; -extern s16 D_80126D20; -extern void func_8016EE94(s32 a0, s32 a1); -extern s32 func_8016EFC8(s32); -extern s32 func_8016EFA8(s32 a0); -extern void func_8016F094(s32 *a0); -extern s32 func_8016F0AC(); -extern s32 D_801905F0; -extern void func_8016F250(void); -extern void func_8016F288(void); -extern void func_8016F2A8(void); -extern void func_8016F2C8(void); -extern void func_8016F2EC(void); -extern void func_8016F30C(void); -extern void func_8016F330(void); -extern void func_8016F350(void); -extern void func_8016F374(void); -extern void func_8016F388(void); -extern void func_8016F398(void); -extern s32 func_8016F44C(s32 a0); -extern void func_8016F470(s32 a0); -extern s32 func_8016F410(s32 a0); -extern void func_80175414(s32 _arg0); -extern s32 func_8016F4C4(s32); -extern s32 func_8016F494(s32 a0); -extern void func_8016F0E4(void); -extern s32 func_8016F4C4(s32 param_1); -extern void func_8016F4F4(void); -extern void func_801719A4(int a0, int a1); -extern void func_800D1724(s32 a0); -extern void func_80171928(void *a0); -extern void *D_8011F738; -extern void func_8016F4FC(void *a0); -extern void func_8014708C(void *a0); -extern void func_8016F540(void *a0); -extern void func_8016F578(s32 *a0); -extern void func_8016F5B0(void *a0); -extern void func_80147060(u8 *a0); -extern void func_8016F5E0(u8 *a0); -extern void func_8016F610(void *a0); -extern void func_8016F648(void *a0); -extern void func_8016F680(void *a0); -extern void func_8016F6B0(void *a0); -extern void (*D_80190668[])(void); -extern void func_8016F6E0(void *a0); -extern s32 func_80171990(u8 *a0); -extern void func_8016F764(void *a0); -extern void func_8016F71C(u8 *a0); -extern void (*D_80190670[])(void); -extern void func_8016F798(void *a0); -extern void func_8016F804(void *a0); -extern void func_8016F7D4(u8 *a0); -extern void func_80171928(void *); -extern void (*D_80190678[])(void); -extern void func_8016F834(void *a0); -extern void func_8016F8AC(u8 *a0); -extern void func_8016F870(u8 *a0); -extern void func_80172358(u8 *a0, u8 *a1); -extern void (*D_80190680[])(void); -extern void func_8016F8E4(void *a0); -extern void func_8016F95C(void *a0); -extern void func_8016F920(u8 *a0); -extern s32 func_80171CC4(void *a0, void *a1); -extern s32 func_80171D1C(void *a0, void *a1, s32 a2); -extern u16 D_8011F73E; -extern void (*D_80190688[])(void); -extern void func_8016F9C4(void *a0); -extern void func_80171B44(s32 *a0); -extern void func_8016FA44(s32 a0); -extern void func_8016FA00(s32 a0); -extern s32 func_80171C64(s32 a0, s32 a1); -extern void (*D_80190690[])(void); -extern void func_8016FA84(void *a0); -extern void func_8016FB10(void *a0); -extern void func_8016FAC0(u8 *a0); -extern void func_8016FB50(void *a0); -extern void (*D_8019069C[])(void); -extern void func_8016FB7C(void *a0); -extern void func_8016FC24(); -extern void func_8016FBB8(s32 a0); -extern s32 func_80171B4C(s32 a0, s32 a1); -extern void func_8016FC24(s32 a0); -extern void func_8016FC64(void *a0); -extern void (*D_801906A8[])(void); -extern void func_8016FC90(void *a0); -extern void func_8016FD08(u8 *a0); -extern void func_8016FCCC(u8 *a0); -extern s32 func_80172658(s32 *a0); -extern void func_8016FD08(u8 *s0); -extern void func_8016FD7C(s32 *a0); -extern void (*D_801906B4[])(void); -extern void func_8016FDB4(void *a0); -extern void func_8016FE2C(u8 *a0); -extern void func_8016FDF0(u8 *a0); -extern void func_8016FE2C(u8 * a0); -extern s32 func_8016FE78(s32 *a0); -extern s32 func_80172664(s32 *a0); -extern void func_8016FED0(s32 *a0); -extern void (*D_801906C4[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_801906D4[])(void); -extern void func_8016FFDC(void *a0); -extern void func_80170068(u8 *a0); -extern void func_80170018(u8 *a0); -extern void func_801700B8(u8 *a0); -extern void func_80170100(u8 *a0); -extern void (*D_801906DC[])(void); -extern void func_80170150(void *a0); -extern void func_801701C8(u8 *a0); -extern void func_8017018C(u8 *a0); -extern void func_801701C8(u8 * a0); -extern void (*D_801906E4[])(void); -extern void func_80170240(void *a0); -extern void func_801702B8(s32 a0); -extern void func_8017027C(u8 *a0); -extern s16 func_80171AB0(s32 a0, void *a1); -extern void (*D_801906EC[])(void); -extern void func_801702FC(void *a0); -extern void func_80170374(u8 *a0); -extern void func_80170338(u8 *a0); -extern s32 func_8014C168(s32 *a0, s32 a1); -extern void func_80170374(u8 * a0); -extern void (*D_801906F4[])(void); -extern void func_801703E0(void *a0); -extern void func_8017044C(u8 *a0); -extern void func_8017041C(u8 *a0); -extern void func_8017044C(u8 * a0); -extern void (*D_801906FC[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_80190704[])(void); -extern void func_80170548(void *a0); -extern void func_801705C0(u8 *a0); -extern void func_80170584(u8 *a0); -extern void func_801705C0(u8 * a0); -extern void (*D_8019070C[])(void); -extern void func_801705F8(void *a0); -extern void func_80170670(void *a0); -extern void func_80170634(u8 *a0); -extern void func_8012A568(void (*a0)(void)); -extern void (*D_80190714[])(void); -extern void func_801706AC(void *a0); -extern void func_80170718(void *a0); -extern void func_801706E8(u8 *a0); -extern void func_80129FF4(void); -extern void (*D_8019071C[])(void); -extern void func_80170748(void *a0); -extern void func_801707D4(void *a0); -extern void func_80170784(u8 *a0); -extern s32 func_80174ED4(void); -extern void (*D_80190724[])(void); -extern void func_80170810(void *a0); -extern void func_801708B0(void *a0); -extern u8 D_800D5DA8; -extern void func_8017084C(s32 a0); -extern u8 D_800D5A34[]; -extern void func_80170AD8(void *a0); -extern void func_80171904(s32 a0); -extern void func_80170B48(int a0); -extern void func_80170928(void); -extern u8 D_800D59EC[]; -extern void func_80170970(void); -extern u8 D_800D599C[]; -extern void func_801709B8(void); -extern u8 D_800D5934[]; -extern void func_80170A00(void); -extern void func_80170A48(void); -extern u8 D_800D5DC0[]; -extern void func_80170A90(void); -extern void (*D_8019072C[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_80190734[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8019073C[])(void); -extern void func_80170C74(void *a0); -extern s32 func_8017197C(u8 *a0); -extern void func_80170CF0(void *a0); -extern void func_80170CB0(u8 *a0); -extern void (*D_80190744[])(void); -extern void func_80170D68(void *a0); -extern void func_80170DE0(u8 *a0); -extern void func_80170DA4(u8 *a0); -extern s32 D_8011F73C; -extern s32 D_8011F740; -extern void func_801718AC(void *a0); -extern void func_80170DE0(u8 * _arg0); -extern void (*D_8019074C[])(void); -extern void func_80170E34(void *a0); -extern void func_80170EAC(u8 *a0); -extern void func_80170E70(u8 *a0); -extern int func_800D0F8C(int a0); -extern void func_80170EAC(u8 * _arg0); -extern void (*D_80190754[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8019075C[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_80190764[])(void); -extern void func_80171064(void *a0); -extern void func_801710DC(u8 *a0); -extern void func_801710A0(u8 *a0); -extern u16 D_8011F73A; -extern void func_801710DC(u8 * arg0); -extern void (*D_8019076C[])(void); -extern void func_80171120(void *a0); -extern void func_8017118C(u8 *a0); -extern void func_8017115C(u8 *a0); -extern void func_80142454(s32 a0); -extern void func_8017118C(u8 * a0); -extern void (*D_80190774[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8019077C[])(void); -extern void func_80171260(void *a0); -extern s32 func_80012F74(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80171384(void *a0); -extern void (*D_80190784[])(void); -extern void func_801714E4(void *a0); -extern void func_8017162C(void *a0); -extern void func_80171520(s32 a0); -extern s32 func_801716AC(s32 a0, void *a1, s32 *a2); -extern s32 func_80012FC8(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_800A5E94; -extern u8 D_800A5E95; -extern u8 D_800A5E96; -extern s32 func_801716AC(s32 a0, void * a1, s32 * a2); -extern int func_800D0FE0(int a0); -extern void func_801717A0(void *a0); -extern void func_8013E588(void *a0); -extern void func_801717F4(void *a0); -extern void func_80171824(void *a0); -extern void func_80171854(void *a0); -extern void func_80171884(void); -extern void func_80171A1C(u8 *a0); -extern void func_80171928(void * a0); -extern void func_8017196C(s32 *a0, s8 a1); -extern void func_80171A04(s32 *a0); -extern void func_80171A10(s32 *a0); -extern void func_80171A34(s32 *a0, s8 a1); -extern s32 func_80171A44(u8 *a0); -extern s32 func_80171A58(u8 *a0); -extern s32 func_80171A6C(u8 *a0); -extern void func_80171A80(s32 *a0, s32 a1); -extern s32 func_80171A88(s32 a0); -extern s16 func_80171AB0(s32 param_1, void * _arg1); -extern void func_80171B10(void *a0); -extern void func_80171EC8(s32 a0); -extern s32 func_80171C64(s32 param_1, s32 param_2); -extern s32 func_80171D78(s32 a0, s32 a1); -extern int func_8017250C(short *a0, short *a1); -extern s32 func_80171CC4(void * a0, void * a1); -extern s32 func_80171FFC(short *a0, short *a1, s32 a2); -extern s32 func_80171D1C(void * a0, void * a1, s32 a2); -extern s32 func_8017248C(s32 a0, s32 a1); -extern s32 func_80171E08(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_80047948(s32 a0); -extern s32 func_8004787C(s32 a0); -extern void func_80172170(s32 a0, s32 a1); -extern s32 func_8017209C(void *arg0, void *arg1, s32 arg2, s32 arg3); -extern void func_801722CC(s32 *a0); -extern void func_80172304(s32 *a0); -extern void func_80172310(u8 *a0); -extern void func_801723C4(s32 param_1, s32 param_2); -extern void func_80161C24(s32, s32); -extern void func_80172414(s32 a0); -extern s32 func_801724EC(s32 a0); -extern s32 func_8017248C(s32 arg0, s32 arg1); -extern s32 func_80013450(s32); -extern s32 func_80172560(u8 *a0, u8 *a1); -extern s32 func_8017261C(u8 *a0); -extern s32 func_80172644(u8 *a0); -extern s32 func_80172670(s32 *a0); -extern s32 func_80172688(s32 *a0); -extern s32 func_80172694(s32 *a0); -extern s32 func_801726A0(s32 *a0); -extern s32 func_801726AC(s32 *a0); -extern s32 func_801726B8(s32 *a0); -extern s32 func_801726C4(s32 *a0); -extern s32 func_80172760(s32 a0); -extern s32 func_80174650(s32); -extern void (*D_80127088)(void); -extern s32 D_801270BC; -extern s16 D_80126B0C; -extern void func_801726D0(void * _arg0); -extern void func_80172710(void); -extern void func_80174684(void *); -extern void func_80172738(void); -extern s16 D_80126B30; -extern s32 func_801727D0(void *a0); -extern void func_80172780(void *a0); -extern void func_80172844(u8 *a0); -extern void func_8017280C(u8 *a0); -extern void func_8017288C(void); -extern s32 func_801728E4(void *a0); -extern void func_80172894(void *a0); -extern void func_80172958(u8 *a0); -extern void func_80172920(u8 *a0); -extern s16 D_80126B36; -extern void func_80172958(u8 * a0); -extern void func_801729A8(void); -extern s32 func_801729F0(void *a0); -extern s16 D_80126B34; -extern s16 D_80126B32; -extern void func_801729B0(s32 a0); -extern void func_80172A8C(void *a0); -extern void func_80172A2C(int param_1); -extern void func_80172ACC(u8 *a0); -extern void func_80172B0C(void); -extern s32 func_80172B44(void *a0); -extern void func_80172B14(s16 a0); -extern s32 D_801150F8; -extern void func_80172BC8(void *a0); -extern void func_80172B80(u8 *a0); -extern void func_80172C48(void); -extern void (*D_801907C8[])(void); -extern void func_80172CA0(void *a0); -extern void func_80172D14(u8 *a0); -extern void func_80172CDC(u8 *a0); -extern void func_80172D14(u8 * a0); -extern void func_80172D60(void); -extern s32 D_80127508; -extern s32 func_80172DAC(void *a0); -extern void func_80172D68(s32 a0); -extern void func_80172E20(u8 *a0); -extern void func_80172DE8(u8 *a0); -extern void func_80172E20(u8 * a0); -extern void func_80172E8C(void); -extern void func_8017303C(void *); -extern void func_80172E94(void); -extern void func_80172ED4(void); -extern void func_80172EFC(void); -extern void func_80172F24(void); -extern u8 D_800D47F4[]; -extern void func_80172F4C(void); -extern void func_80172F9C(void); -extern u8 D_800D5C6C[]; -extern void func_80172FEC(void); -extern s32 func_80173078(void *a0); -extern void func_8017303C(void * a0); -extern void func_801730FC(struct S801730FC *a0); -extern void func_801730B4(s32 a0); -extern void func_8017316C(void); -extern s32 func_8017319C(void *a0); -extern void func_80173174(void); -extern u8 D_800D5AA0[]; -extern void func_80173220(void *a0); -extern void func_801731D8(s32 *a0); -extern M2C_UNK D_8019078C; -extern void func_80173220(void * arg0); -extern void func_80173294(void); -extern void func_801732C4(); -extern void func_8017329C(void); -extern void func_801732C4(s32 *a0); -extern void func_8017331C(); -extern void func_801732F4(void); -extern void func_8017331C(s32 *a0); -extern void func_80173374(); -extern void func_8017334C(void); -extern void func_80173374(s32 *a0); -extern void func_801733A4(void); -extern void func_801733CC(s32 a0); -extern void func_801734BC(s32 a0, s32 a1); -extern s16 D_80126B3E; -extern void func_80173460(s32 a0, s32 a1); -extern void func_801734BC(s32 arg0, s32 _unused1); -extern void (*D_801907F8[])(void); -extern void func_80173544(void *a0); -extern void func_801735B8(u8 *a0); -extern void func_80173580(u8 *a0); -extern s16 D_80126B40; -extern void func_801735EC(void *a0); -extern void func_80173648(u8 *a0); -extern void func_801736A8(void); -extern s32 func_8014C118(void *a0, s32 a1, s32 a2); -extern s32 func_801736FC(void *a0); -extern void func_801736B0(s32 a0, s32 a1); -extern void func_80173770(u8 *a0); -extern void func_80173738(u8 *a0); -extern void func_801723C4(s32 a0, s32 a1); -extern void func_801737B0(void); -extern s32 func_801737E8(void *a0); -extern void func_801737B8(s16 a0); -extern void func_8017385C(u8 *a0); -extern void func_80173824(u8 *a0); -extern void func_801738D4(void); -extern s32 func_8017390C(void *a0); -extern void func_801738DC(s16 a0); -extern void func_80173980(u8 *a0); -extern void func_80173948(u8 *a0); -extern void func_801739D8(u8 *a0); -extern void func_80173A20(void); -extern s32 D_8012750C; -extern void func_80173A60(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80173A28(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void (*D_80190834[])(void); -extern void func_80173B4C(void *a0); -extern void func_80173BC0(u8 *a0); -extern void func_80173B88(u8 *a0); -extern void func_80173C64(u8 *a0); -extern void func_80173E1C(s32 a0); -extern s16 D_80126938; -extern s16 D_80126B3A; -extern void func_800D128C(s32, s32); -extern void func_80174158(s32 a0); -extern void func_8002A088(s32); -extern void func_8002A2D4(s32); -extern void func_8002A544(s32); -extern void func_8002A7B4(s32); -extern s32 func_80174188(s32 a0); -extern void func_801741A8(s32 a0); -extern s32 func_800D0EC4(void); -extern void func_800D0F0C(s32, s32); -extern void func_80145EE8(s32); -extern void func_80173EF8(void *param_1); -extern s32 func_8014BCEC(s32, s32); -extern void func_801741A8(s32 _arg0); -extern s16 D_80126B3C; -extern s16 D_8011F9C8; -extern void func_801741EC(u8 *a0); -extern void func_80174274(void); -extern s32 func_801742A4(void *a0); -extern void func_8017427C(void); -extern void func_80174318(u8 *a0); -extern void func_801742E0(u8 *a0); -extern void func_80174354(void); -extern s32 func_80174384(void *a0); -extern void func_8017435C(void); -extern void func_801743F0(u8 *a0); -extern void func_801743C0(u8 *a0); -extern void func_801743F0(u8 * a0); -extern void func_80174430(void); -extern s32 func_80174474(void *a0); -extern void func_80174438(s32 a0); -extern void func_801744E0(u8 *a0); -extern void func_801744B0(u8 *a0); -extern void func_80174524(void); -extern void func_80174554(); -extern void func_8017452C(void); -extern void func_80174554(s32 arg0); -extern void func_801745AC(); -extern void func_80174584(void); -extern void func_801745AC(s32 *a0); -extern void func_80174604(void); -extern void func_801745DC(void); -extern void func_80174630(void); -extern s32 func_80174650(s32 _arg0); -extern void func_80174674(void); -extern void func_801746A4(void); -extern s32 func_800CF8CC(void); -extern void func_80174714(void); -extern s32 func_80174754(void); -extern s16 func_80174764(void); -extern s16 func_80174774(void); -extern s32 func_801747CC(void *a0); -extern void func_80174784(void); -extern s32 func_801747AC(s32 a0); -extern s32 func_80174808(u8 *a0); -extern void func_8017481C(void); -extern s32 func_80174888(void *a0); -extern void func_80174824(void); -extern void func_8017484C(s32 a0); -extern void func_801748C4(s32 a0); -extern void func_801748E4(void); -extern void func_8012A018(s32 a, s32 b); -extern s32 func_8017496C(void *a0); -extern s32 D_80126954; -extern s32 D_80126950; -extern s32 D_8012695C; -extern s16 D_80126968; -extern s16 D_8012696A; -extern s16 D_8012696C; -extern s16 D_80126976; -extern s16 D_80126978; -extern s16 D_8012697A; -extern void func_801748EC(void); -extern s32 func_801749C8(); -extern s32 func_801749A8(s32 a0); -extern void func_80174BBC(void *a0); -extern void func_8012A0E0(void); -extern void func_80174BF4(void *a0); -extern void (*D_8019088C[])(); -extern void func_80174BF4(void * arg0); -extern s32 func_80174CB0(s32, s32); -extern s32 func_80174C60(s32 a0); -extern void func_80174C80(s32 a0); -extern s32 D_8012697C; -extern u16 D_80126980; -extern s32 func_80174F28(void *a0); -extern void func_80174E9C(s32 a0); -extern void func_80174EF0(s32 a0, s16 a1); -extern s32 func_80175014(u8 *a0, u8 *a1, s32 a2); -extern void func_80174F64(u8 *a0); -extern void func_80174FBC(u8 *a0); -extern s32 func_8017509C(u8 *a0, s32 a1, u8 *a2, u8 *a3); -extern void func_80175184(s32 *a0); -extern void func_80175114(s32 *a0); -extern void func_80175184(); -extern void func_80175150(s32 *a0); -extern void (*D_8019089C[])(void*); -extern s32 func_80175268(s32); -extern void func_80175184(s32* arg0); -extern s32 func_80175218(void *a0); -extern void func_801751D8(void *a0); -extern void (*D_801908A4[])(s32); -extern s32 func_80175218(void * param_1); -extern void func_801752BC(s32 *a0); -extern u8 D_8011F7A8; -extern u8 D_8011F7A9; -extern u8 D_8011F7AD; -extern u8 D_8011F7AE; -extern void func_80175414(s32 _arg0); -extern void func_80175494(void); -extern void (*D_80190A0C[])(); -extern s32 func_801758FC(void); -extern s32 func_80175820(void); -extern s32 func_801759D8(void); -extern void func_8017553C(s32 *param); -extern void func_801757A0(s32 a0); -extern short D_800B9A02; -extern void func_80175590(void *arg0); -extern s16 D_800B9A02; -extern void func_801757A0(s32); -extern void func_80175624(void *a0); -extern void func_801757E0(int); -extern void func_80175668(void); -extern void (*D_80190A18[])(); -extern void func_80175690(s32 *param); -extern void func_80175DA8(s32 a0); -extern void func_80175AB8(s32 a0); -extern void func_80176144(s32 a0); -extern void func_801756E4(s32 arg0); -extern void func_80175798(void); -extern void func_80176734(s32 a0); -extern void func_80176218(s32 a0); -extern void func_80176D00(s32 a0); -extern void func_801757E0(s32 a0); -extern s32 func_80178004(s32 a0, s32 a1, s32 a2); -extern u8 D_8011F7B1; -extern u16 D_8011F7B4; -extern u16 D_8011F7B6; -extern s16 D_8011F81E; -extern void *func_80177784(void *a0, s32 a1, s32 a2, s32 a3); -extern u32 func_801783D0(s32 a0, s32 a1); -extern void *func_801777BC(void *a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern u16 D_8011F82C; -extern u16 D_8011F82A; -extern u32 * func_80176D94(void *param_1, u32 param_2, s16 param_3_); -extern void func_801778A8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80176FF4(s32 a0); -extern u16 D_8011F830; -extern u16 D_8011F82E; -extern u32 * func_801770E0(void *param_1, u32 param_2, s16 param_3_); -extern void func_80177340(s32 a0); -extern u8 D_8011F837; -extern u8 D_8011F7F0; -extern u8 D_8011F7AB; -extern u32 * func_8017742C(u32 *param_1, s32 param_2, s32 param_3); -extern void func_801776EC(u8 *a0); -extern void * func_80177784(void *a0, s32 a1, s32 a2, s32 a3); -extern uint * func_80177EA4(uint *param_1, int param_2, uint param_3, int param_4); -extern void func_80177F84(s32 param_1, s32 param_2); -extern u32 * func_80178298(u32 *param_1, u8 *param_2, short param_3, short param_4); -extern M2C_UNK D_801E52AC; -extern void func_80178438(u16 *arg0); -extern void func_801787D4(void); -extern void func_8012A908(void); -extern void func_8017869C(s32 a0); -extern void func_80130D0C(s32 a0); -extern void func_8013E370(void); -extern s32 D_8011DB08; -extern void func_8017849C(void); -extern void func_8013E4B4(void); -extern s16 D_801270C4; -extern s32 D_801274D8; -extern s16 D_801270C2; -extern u8 D_801270C6; -extern u8 D_801270C7; -extern s32 D_801274DC; -extern s32 D_801274E0; -extern void func_80178608(void); -extern void func_80178744(s32 a0, s32 a1); -extern void func_80178840(); -extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern s32 func_801788B8(s32 arg0, s32 arg1); -extern s32 func_801789AC(s32 arg0); -extern s16 D_801E7AB0; -extern int func_80178970(void); -extern s32 func_80178B18(s32 param_1, s32 param_2); -extern s32 func_80178B70(s32 param_1, s32 param_2); -extern void func_80178BB8(s32 a0, s32 a1); -extern s32 func_80178BF8(); -extern s32 D_801E6898; -extern short D_801E7B24; -extern void func_80178CBC(s32 arg0, s32 arg1); -extern void func_80178D18(void); -extern s32 func_80178D40(s32 arg0, s32 arg1); -extern void func_80179B28(s32 a0); -extern void func_80179B74(u16 *p); -extern void func_80179D30(u16 *a0); -extern void func_80179D78(u16 *a0); -extern void func_80179B74(u16 *p); -extern void func_80179DCC(short a0); -extern void func_80179DF8(void); -extern void func_80179E1C(short a0); -extern void func_80179E48(s16 a0); -extern void func_80179E74(s16 a0); -extern void func_80179EA0(u16 *a0); -extern void func_80179B74(u16 *p); -extern void func_80179EE8(short a0); -extern void func_80179F14(s16 a0, s16 a1); -extern void func_80179F44(void); -extern void func_80179F6C(short a0); -extern void func_80179F98(u16 *a0); -extern void func_80179FEC(u16 *a0); -extern void func_8017A040(u16 *a0); -extern s32 D_801E6CC4; -extern void func_8017A094(s32 arg0); -extern void func_8017A0C4(s32 arg0); -extern void func_8017A0F4(void); -extern void func_8017A11C(void); -extern s32 D_801E6CEC; -extern void func_8017A144(s32 a0); -extern void func_8017A180(void); -extern void func_8017A1A8(void); -extern void func_8017A1D0(void); -extern void func_8017A1F8(void); -extern void func_8017A220(void); -extern void func_8017A248(void); -extern void func_8017A270(void); -extern void func_8017A298(void); -extern void func_8017A2C0(void); -extern void func_8017A2E8(void); -extern void func_8017A310(void); -extern void func_8017A338(void); -extern void func_8017A360(void); -extern void func_8017A388(void); -extern s16 D_801E6CA8; -extern s32 func_8017A3B0(void); -extern short D_801E6CE4; -extern short D_801E6CE0; -extern int func_800D0CA0(int); -extern int func_8001AAA0(void); -extern int func_800D0CE0(void); -extern int func_8017A3D8(void); -/* ==== end §8b carried decl layer ==== */ - - -// func_8017A4AC (ov_SC01_077) — 536-ins command/bytecode interpreter, 35-case jtbl switch. - - - extern u16 D_801E68A0[0x200]; - extern s16 D_801E6CA0; - extern s16 D_801E6CA4; - extern s32 D_801E6CE8; - -extern s32 D_80126B58; -extern s16 D_801E6CA8; -extern s32 D_801E6CC4; -extern s32 D_801E6CEC; - -extern void func_80172310(u8*); -extern void func_80172738(void); -extern void func_80172780(void*); -extern void func_80172894(void*); -extern void func_801729B0(s32); -extern void func_80172B14(s16); -extern void func_80172C50(u16 *); -extern void func_80172D68(s32); -extern void func_80172E94(void); -extern void func_80172ED4(void); -extern void func_80172EFC(void); -extern void func_80172F24(void); -extern void func_80172F4C(void); -extern void func_80172F9C(void); -extern void func_80172FEC(void); -extern void func_80173174(void); -extern void func_8017329C(void); -extern void func_8017334C(void); -extern void func_801733A4(void); -extern void func_801733FC(s16, u16 *); -extern void func_80173460(s32, s32); -extern void func_801734BC(s32, s32); -extern void func_801736B0(s32, s32); -extern void func_801737B8(s16); -extern void func_801738DC(s16); -extern void func_80173A28(s32, s32, s32, s32, s32, s32); -extern void func_8017427C(void); -extern void func_80174438(s32); -extern void func_8017452C(void); -extern void func_80174584(void); -extern void func_801745DC(void); -extern s32 func_80174754(void); - -void func_8017A4AC(void) { - u16 sp18[4]; - u16 sp20[4]; - u16 sp28[4]; - u16 sp30[4]; - struct S126B58 *w = &(*(struct S126B58 *)&D_80126B58); - s16 cmd; - - if (D_801E6CA0 == D_801E6CA4) { - if (func_80174754() != 0) { - D_801E6CA8 = 0; - } else { - D_801E6CA8 = 1; - } - return; - } - D_801E6CA8 = 1; - if (func_80174754() == 0) { - return; - } - cmd = D_801E68A0[D_801E6CA0]; - D_801E6CA0 = (D_801E6CA0 + 1) & 0x1FF; - switch (cmd) { - case 0: - func_80172738(); - return; - case 1: - sp18[0] = D_801E68A0[D_801E6CA0]; D_801E6CA0 = (D_801E6CA0 + 1) & 0x1FF; - sp18[1] = D_801E68A0[D_801E6CA0]; D_801E6CA0 = (D_801E6CA0 + 1) & 0x1FF; - sp18[2] = D_801E68A0[D_801E6CA0]; D_801E6CA0 = (D_801E6CA0 + 1) & 0x1FF; - ((void (*)(u16 *))func_80172780)(sp18); - return; - case 28: - sp18[0] = D_801E68A0[D_801E6CA0]; D_801E6CA0 = (D_801E6CA0 + 1) & 0x1FF; - sp18[1] = D_801E68A0[D_801E6CA0]; D_801E6CA0 = (D_801E6CA0 + 1) & 0x1FF; - sp18[2] = D_801E68A0[D_801E6CA0]; D_801E6CA0 = (D_801E6CA0 + 1) & 0x1FF; - sp18[3] = D_801E68A0[D_801E6CA0]; D_801E6CA0 = (D_801E6CA0 + 1) & 0x1FF; - ((void (*)(u16 *))func_80172894)(sp18); - return; - case 2: - { s16 arg = D_801E68A0[D_801E6CA0]; D_801E6CA0 = (D_801E6CA0 + 1) & 0x1FF; - ((void (*)(s16))func_801729B0)(arg); - return; } - case 3: - { s16 arg = D_801E68A0[D_801E6CA0]; D_801E6CA0 = (D_801E6CA0 + 1) & 0x1FF; - func_80172B14(arg); - return; } - case 4: - { s16 arg = D_801E68A0[D_801E6CA0]; D_801E6CA0 = (D_801E6CA0 + 1) & 0x1FF; - { s32 t = w->unk20->unk12 + arg; - func_80172B14(t & 0xFFF); } - return; } - case 5: - sp18[0] = D_801E68A0[D_801E6CA0]; D_801E6CA0 = (D_801E6CA0 + 1) & 0x1FF; - sp18[1] = D_801E68A0[D_801E6CA0]; D_801E6CA0 = (D_801E6CA0 + 1) & 0x1FF; - sp18[2] = D_801E68A0[D_801E6CA0]; D_801E6CA0 = (D_801E6CA0 + 1) & 0x1FF; - func_80172C50(sp18); - return; - case 6: - { s16 arg = D_801E68A0[D_801E6CA0]; D_801E6CA0 = (D_801E6CA0 + 1) & 0x1FF; - ((void (*)(s16))func_80172D68)(arg); - return; } - case 7: func_80172E94(); return; - case 8: func_80172ED4(); return; - case 27: ((void (*)())D_801E6CEC)(); return; - case 9: func_80172EFC(); return; - case 10: func_80172F24(); return; - case 11: func_80173174(); return; - case 12: func_80172F4C(); return; - case 33: func_80172F9C(); return; - case 34: func_80172FEC(); return; - case 13: func_801745DC(); return; - case 14: - case 15: func_8017329C(); return; - case 16: func_8017334C(); return; - case 17: func_801733A4(); return; - case 18: - { s16 arg = D_801E68A0[D_801E6CA0]; D_801E6CA0 = (D_801E6CA0 + 1) & 0x1FF; - func_801738DC(arg); - return; } - case 19: { - s16 a, b; - s32 ea, eb; - a = D_801E68A0[D_801E6CA0]; D_801E6CA0 = (D_801E6CA0 + 1) & 0x1FF; ea = a; - b = D_801E68A0[D_801E6CA0]; D_801E6CA0 = (D_801E6CA0 + 1) & 0x1FF; eb = b; - func_801736B0(ea, eb); - return; - } - case 20: - { s16 arg = D_801E68A0[D_801E6CA0]; D_801E6CA0 = (D_801E6CA0 + 1) & 0x1FF; - ((void (*)(s16))func_801734BC)(arg); - return; } - case 23: - sp20[0] = D_801E68A0[D_801E6CA0]; D_801E6CA0 = (D_801E6CA0 + 1) & 0x1FF; - sp20[1] = D_801E68A0[D_801E6CA0]; D_801E6CA0 = (D_801E6CA0 + 1) & 0x1FF; - sp20[2] = D_801E68A0[D_801E6CA0]; D_801E6CA0 = (D_801E6CA0 + 1) & 0x1FF; - { s16 arg = D_801E68A0[D_801E6CA0]; D_801E6CA0 = (D_801E6CA0 + 1) & 0x1FF; - ((void (*)(s16, u16 *))func_80173460)(arg, sp20); - return; } - case 29: - sp28[0] = D_801E68A0[D_801E6CA0]; D_801E6CA0 = (D_801E6CA0 + 1) & 0x1FF; - sp28[1] = D_801E68A0[D_801E6CA0]; D_801E6CA0 = (D_801E6CA0 + 1) & 0x1FF; - sp28[2] = D_801E68A0[D_801E6CA0]; D_801E6CA0 = (D_801E6CA0 + 1) & 0x1FF; - { s16 arg = D_801E68A0[D_801E6CA0]; D_801E6CA0 = (D_801E6CA0 + 1) & 0x1FF; - func_801733FC(arg, sp28); - return; } - case 32: - sp30[0] = D_801E68A0[D_801E6CA0]; D_801E6CA0 = (D_801E6CA0 + 1) & 0x1FF; - sp30[1] = D_801E68A0[D_801E6CA0]; D_801E6CA0 = (D_801E6CA0 + 1) & 0x1FF; - sp30[2] = D_801E68A0[D_801E6CA0]; D_801E6CA0 = (D_801E6CA0 + 1) & 0x1FF; - sp30[3] = D_801E68A0[D_801E6CA0]; D_801E6CA0 = (D_801E6CA0 + 1) & 0x1FF; - ((void (*)(u16 *))func_80172310)(sp30); - return; - case 25: func_8017452C(); return; - case 30: func_80174584(); return; - case 26: func_8017427C(); return; - case 24: func_80174438(D_801E6CE8); return; - case 21: - ((void (*)(s32, s32, s32, s32, void *, s32))func_80173A28)((*(struct S734 * *)&D_801E6CC4)->unk0, (*(struct S734 * *)&D_801E6CC4)->unk4, (*(struct S734 * *)&D_801E6CC4)->unk8, - (*(struct S734 * *)&D_801E6CC4)->unkC, (*(struct S734 * *)&D_801E6CC4)->unk10, (*(struct S734 * *)&D_801E6CC4)->unk18); - return; - case 22: - (*(struct S734 * *)&D_801E6CC4)->unk1C((*(struct S734 * *)&D_801E6CC4)->unk4, (*(struct S734 * *)&D_801E6CC4)->unk10, (*(struct S734 * *)&D_801E6CC4)->unk18); - return; - case 31: - { s16 arg = D_801E68A0[D_801E6CA0]; D_801E6CA0 = (D_801E6CA0 + 1) & 0x1FF; - func_801737B8(arg); - return; } - } -} - - -DEFINE_func_8017AD0C() /* dedup: shared engine-core @0x8017AD0C (src/shared) */ - -DEFINE_func_8017ADE8() /* dedup: shared engine-core @0x8017ADE8 (src/shared) */ - -DEFINE_func_8017AE08() /* dedup: shared engine-core @0x8017AE08 (src/shared) */ diff --git a/src/ov_SC04_019/ov_SC04_019_jr_8017AE2C.c b/src/ov_SC04_019/ov_SC04_019_jr_8017AE2C.c deleted file mode 100644 index 8b71074df..000000000 --- a/src/ov_SC04_019/ov_SC04_019_jr_8017AE2C.c +++ /dev/null @@ -1,7108 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ - /* 12-byte sub-table record (stride 0xC) */ - /* 0x20 bytes */ - /* 4 + 16*12 = 0xC4 stride */ - /* 0x08 */ - /* 0x20 */ -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8; -typedef void (*Handler)(struct Entry_8016E95C *); -extern void func_801458E0(void); -extern s32 D_800AE6AC; -extern s32 D_800AE6B0; -extern u8 D_80078E50; -extern void func_800D185C(u8 *a0); -extern void func_801458E8(void); -extern s32 func_80029504(void); -extern void func_80145B24(void); -extern u8 D_8018F74C; -extern u8 D_8018F6BC; -extern u8 D_8018F698; -extern u8 D_8018F674; -extern u8 D_8018F728; -extern u8 D_8018F704; -extern u8 D_8018F6E0; -extern u8 D_8018F650; -extern void func_80145934(void); -extern u8 D_8018F7DC; -extern u8 D_8018F7B8; -extern u8 D_8018F794; -extern u8 D_8018F770; -extern void func_80145A2C(void); -extern s32 func_800291DC(s32); -extern void func_800291C8(s32, s32); -extern void func_80162120(void); -extern void func_80029124(s32, s32); -extern s32 func_80165A50(s32); -extern void func_80029514(s32); -extern u8 D_80078EC0; -extern s32 func_80028FBC(void); -extern s32 func_80029000(void); -extern s32 func_80028D9C(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_80145BF8(void); -extern s32 func_800291B4(s32 arg); -extern void func_800291A0(s32, s32); -extern void func_80145C54(void); -extern s32 func_80145CEC(); -extern s32 func_80029178(s32 arg); -extern void func_80146014(s32 a0); -extern unsigned char D_8018EBD4[]; -extern unsigned char D_8018EC04[]; -extern unsigned char D_8018EC54[]; -extern unsigned char D_8018EC84[]; -extern unsigned char D_8018ECB4[]; -extern void func_80145EE8(s32 param_1); -extern void MoveImage(void *a0, s32 a1, s32 a2); -extern void func_80146074(void); -extern s32 func_80146128(void); -extern void func_80146360(void); -extern void func_801463A0(); -extern void func_8014607C(void); -extern s32 *D_80126B78; -extern u8 D_80078EC1; -extern s32 D_80078EC8; -extern s32 D_80126B9C; -extern s32 D_8011F730; -extern u16 D_801152B8; -extern u16 D_8012693A; -extern u8 D_80126BE0[]; -extern u8 D_801150F0[]; -extern void *memcpy(void *dst, const void *src, u32 n); -extern void func_80146FC4(s32 a0); -extern void func_80150A70(s32 a0); -extern void func_80147098(s32 *a0); -extern void func_8014A638(s32 arg0); -extern s32 func_80155458(s32 a0); -extern s32 func_80029104(void); -extern void func_80029344(void); -extern void func_8014ADE0(s32 a0); -extern void func_8014B350(s32 a0); -extern void func_8014B7A4(s16 *param_1); -extern s32 func_80161D58(s32 a0); -extern void func_80161A90(s32 a0); -extern void func_8014B504(u16 *a0); -extern void func_80149BEC(s32 a0); -extern void func_8014B5D0(s32 *a0); -extern void func_8014C99C(u8 *a0); -extern void func_8014B190(s32 s0); -extern void func_80148648(s32 a0, s32 a1); -extern s32 func_80149228(s32 a0); -extern void func_8014A59C(s32 a0); -extern void func_8016F14C(void *a0); -extern void func_80154418(void *a0); -extern void func_80154BE4(s32 a0); -extern void func_80165694(s32 arg0); -extern void func_801654A8(s32 a0); -extern void func_8014A680(s32 a0); -extern void func_8014A6A8(s32 a0); -extern void func_8014A71C(s32 a0); -extern void func_80172588(s32 *a0); -extern void func_801473DC(s32 *a0); -extern void func_80015978(s32 a0, s32 *a1); -extern void (*D_8018ED04[])(void *); -extern u8 D_80126BA4; -extern s32 D_80127098; -extern s32 D_80127094; -extern s32 D_80127090; -extern void func_80146534(void); -extern void func_8001D074(s32 a0, s32 a1); -extern void func_80146554(void); -extern void func_80146578(void); -extern void func_8001CFDC(s32, s32); -extern void func_8014659C(void); -extern void func_8001D074(s32, s32); -extern void func_801465C0(void); -extern void func_801465E4(void); -extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); -extern s32 D_8011F9D0; -extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); -extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 D_8011F750; -extern s32 D_8011F754; -extern u8 * func_801468C8(s32 arg0, u8 arg1); -extern s32 D_8011D030; -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); -extern s32 func_80146B9C(void *a0); -extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); -extern u16 D_8011DA28; -extern s32 func_80146B9C(void * arg0); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80146CA0(void *a0); -extern void func_80146CB4(void *a0); -extern void func_80146CC8(s32 a0); -extern void func_80146D30(s32 a0); -extern void func_80146D80(s32 *a0); -extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80146D90(s32 a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); -extern void func_80146E90(s32 *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80015954(s32 a0, s32 a1); -extern void func_80149374(s32 a0, s32 a1); -extern void func_80146F58(s32 a0, s32 a1); -extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 func_8012A68C(void); -extern s16 func_8012A758(void); -extern void func_8004978C(s16 *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern u8 D_80126DB0[]; -extern u16 D_80126DB6; -extern void func_8014704C(s32 *a0); -extern s32 func_80147054(void *a0); -extern void func_80147060(u8 * a0); -extern void func_8014706C(void *arg0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80147084(s32 *a0); -extern void func_8014708C(void *arg0); -extern s32 func_801470A0(void *a0); -extern void func_801470AC(s32 *a0); -extern void func_801470B4(s32 arg0); -extern void func_801470C0(s32 a0); -extern void func_80147118(s32 a0); -extern s16 D_80126BB8; -extern s16 D_80126BBA; -extern s16 D_80126BBC; -extern void func_80147264(s32 a0); -extern void func_80147290(void); -extern void func_801472B4(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void *D_8012707C; -extern void func_801472DC(void); -extern void func_801472F0(void *a0); -extern void func_80147364(u16, s32); -extern void func_80147300(u16 arg0); -extern void func_80147324(s32 arg0); -extern void func_801473EC(s32 *a0); -extern void func_80147460(s32 a0); -extern void func_80147514(); -extern void func_80147628(s32 a0); -extern void func_80147478(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); -extern s32 func_800129CC(s32 a0, s32 a1); -extern void func_80147514(s32 arg0); -extern void func_80013F3C(s32 a0); -extern void func_80012558(s32 a0, s32 a1); -extern void func_800126C4(s32 a0, s32 a1); -extern void func_800123F0(s32 a0, s32 a1); -extern void func_80147718(s32 a0); -extern void func_80147788(void *a0, s32 a1); -extern void func_801477A8(void *a0, s32 a1); -extern void func_801477C8(void *a0, s32 a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80147814(s32 a0, s32 a1); -extern void func_80147928(int a0, int a1); -extern void func_8014799C(int a0, int a1); -extern void func_80147A10(int a0, int a1); -extern void func_80147860(int a0, int a1, int a2, int a3); -extern void func_80147948(s32 a0, s32 a1, s32 a2); -extern void func_801479BC(s32 a0, s32 a1, s32 a2); -extern void func_80147A30(s32 a0, s32 a1, s32 a2); -extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147948(int a0, int a1, int a2); -extern void func_801479BC(int a0, int a1, int a2); -extern void func_80147A30(int a0, int a1, int a2); -extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147A84(s32 arg0); -extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147AAC(s32 arg0); -extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80147B5C(s32 a0, void *a1); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern void func_80147B18(s32 a0); -extern void func_80147B5C(s32 arg0, void *arg1); -extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147DC0(s32 a0, s32 a1); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147F50(s32 arg0); -extern void func_80148038(s32 a0, s32 a1); -extern s32 ratan2(s32 a0, s32 a1); -extern s32 csqrt(s32 a0); -extern s32 func_80012A60(s32 a0, s32 a1); -extern void func_80148094(int param_1, short *param_2, int *param_3); -extern void func_801485B8(s32 a0, s32 a1, s32 a2); -extern void func_801484B0(s32 a0, s32 a1); -extern s32 func_80154358(void *a0); -extern void func_801484E8(s32 a0, s32 a1); -extern void func_80148534(s32 a0, s32 a1); -extern void func_8014856C(s32 a0, s32 a1); -extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); -extern void func_80148634(void *a0); -extern u8 D_800B9A64; -extern s32 func_80014DC0(); -extern s32 func_80014D68(); -extern s32 func_80014D94(); -extern s32 func_80014CF8(); -extern void func_800120DC(); -extern s32 func_800CF8B4(); -extern u16 func_801487F4(s32 *a0); -extern u16 func_80148800(s32 *a0); -extern u8 func_8014880C(s32 *a0); -extern u16 func_80148818(s32 *a0); -extern s32 func_80047D3C(s32 a0); -extern s32 func_80148824(void *arg0); -extern s32 func_801488A8(u8 *a0); -extern s32 func_8014891C(s32 a0); -extern s32 func_80148980(u8 *a0); -extern s32 func_801489E8(s32 a0); -extern s32 func_80148A48(s32 a0); -extern int func_80148AFC(void *a0); -extern void func_80148AAC(u8 *a0); -extern s32 func_80148C18(void); -extern s32 func_80148C20(s32 a0, s16 a1); -extern s32 func_80148C34(s32 a0, s32 a1); -extern s32 func_80148C4C(s32 a0, s32 a1); -extern s32 func_80148C64(s32 a0, s32 a1); -extern s32 func_80148C7C(void); -extern s32 func_80148C84(s32 a0, s32 a1); -extern s32 func_80148C9C(s32 a0, s32 a1); -extern s32 func_80148CB4(s32 a0, s32 a1); -extern s32 func_80148CCC(s32 a0, s32 a1); -extern s32 func_80148CE4(void); -extern s32 func_80148CEC(void); -extern s32 func_80148CF4(s32 a0, s32 a1); -extern s32 func_80148D0C(s32 a0, s32 a1); -extern s32 func_80148D24(void *a0, int a1); -extern s32 func_80148D3C(void); -extern s32 func_80148F60(void); -extern s32 func_80148F68(s32 a0); -extern s32 func_80148F74(s32 a0); -extern s32 func_80148F80(s32 a0); -extern s32 func_80148F8C(s32 a0); -extern s32 func_80148F98(void); -extern s32 func_80148FA0(s32 a0); -extern s32 func_80148FAC(s32 a0); -extern s32 func_80148FB8(s32 a0); -extern s32 func_80148FC4(s32 a0); -extern s32 func_80148FD0(void); -extern s32 func_80148FD8(void); -extern s32 func_80148FE0(s32 a0); -extern s32 func_80148FEC(s32 a0); -extern s32 func_80148FF8(s32 a0); -extern s32 func_80149004(void); -extern void func_8014900C(s32 *a0); -extern void func_80149020(s32 *a0); -extern void func_80149034(s32 *a0); -extern void func_80149048(s32 *a0); -extern void func_8014905C(u8 *a0); -extern void func_801490E0(s32 *a0, s16 a1); -extern void func_801490E8(s32 *a0, s16 a1); -extern void func_801490F0(s32 *a0, s16 a1); -extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); -extern void func_801490F8(s32 a0, s32 a1); -extern s32 func_801491C4(s32 a0); -extern s32 func_80149184(s32 a0); -extern void func_80149204(s32 *a0); -extern void func_80149210(s32 a0, s32 a1); -extern s32 func_80149284(s32 *a0, s32 a1); -extern void func_80149350(s32 arg0); -extern void func_80149290(s32 a0); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_80149374(s32 arg0, s32 arg1); -extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8014942C(s32 arg0); -extern void func_8012EF70(s32 a0, s32 a1); -extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012EFB8(s32 a0); -extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); -extern void func_8014964C(s32 param_1, s32 param_2); -extern s32 func_801496D4(void *a0); -extern void func_8015AD08(); -extern void func_80149704(void); -extern void func_8015ACC4(); -extern void func_80149724(void); -extern u8 D_80078EBF; -extern s32 func_80149744(struct S_80149744 *a0); -extern void func_8015F7A0(); -extern void func_80149788(void); -extern void func_801653B8(); -extern void func_80149864(void); -extern s16 currentLocationId; -extern s32 func_8016F1AC(void); -extern s32 func_80149884(void); -extern void func_80160B00(); -extern void func_801498C0(void); -extern s32 func_80149AA8(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern void func_80146750(void *a0); -extern s32 func_801498E0(s32 *a0); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_80147364(u16 a0, s32 a1); -extern s32 func_800CCF28(s32 a0); -extern u8 D_80126B5C; -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_8015DAC4(s32 *a0); -extern void func_8015554C(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern void func_80149B14(s32 *a0); -extern u8 func_8014BEF8(void); -extern s32 func_80149B54(s32 * arg0); -extern void func_8015DE24(s32 *a0); -extern void func_80157510(s32 *a0); -extern void func_80149BAC(s32 *a0); -extern s32 func_80029178(s32 a0); -extern s32 func_80149C08(s32 arg0); -extern void func_801577C8(); -extern void func_80149C94(void); -extern void func_80157D20(void); -extern void func_80149CB4(void); -extern s32 func_80149CD4(s32 a0); -extern u8 func_8014B5B8(s32 *a0); -extern s32 func_80149D10(s32 a0); -extern s32 func_80149E94(s32 a0); -extern s32 func_80149DD8(s32 a0); -extern s32 func_80149D9C(s32 a0); -extern s32 func_80149F2C(s32 a0, s32 a1); -extern s32 func_80149E94(s32 arg0); -extern void func_80149FA8(void); -extern s32 D_8018EDCC[]; -extern s32 func_80149FB0(s32 a0); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern void func_8014A1B0(s32 a0, s32 a1); -extern s32 func_8014A048(s32 param_1); -extern u16 func_80156370(u16 a0); -extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); -extern void func_8015D4B4(); -extern void func_8014A218(void); -extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); -extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); -extern s32 func_8014A238(s32 arg0); -extern s32 func_8014A2E4(s32 a0); -extern void func_8014A380(s32 a0, s32 a1); -extern s16 D_801152B0; -extern s16 D_801152B4; -extern s32 func_8014A3E0(struct S_8014A3E0 *a0); -extern s32 func_8014A454(s32 a0); -extern s32 func_8014A4B4(void *a0); -extern void func_8015EDD4(); -extern void func_8014A4FC(void); -extern s32 func_8014A674(s32 *a0); -extern s32 func_8014A69C(s32 *a0); -extern s32 func_8014A6C4(s32 a0); -extern void func_8015E184(); -extern void func_8014A830(void); -extern s32 func_80029AF4(void); -extern s32 func_8014A850(s32 param_1); -extern void func_8014AA04(s32 a0); -extern void func_801599A4(void *a0); -extern void func_80159B3C(void *a0); -extern s32 func_80165A20(s32 a0); -extern void func_8014AB7C(); -extern void func_8014AC10(); -extern void func_8014AA28(void); -extern void func_8014AB5C(void); -extern void func_80162CCC(void); -extern void func_8014AB7C(s32 arg0); -extern void func_8014ABF0(void); -extern void func_80016714(void *a0, s32 a1); -extern void func_8014AC10(s32 arg0); -extern void func_8014ACC0(s32 a0, s32 a1); -extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); -extern void func_8014ACE8(void *a0, s32 a1, s32 a2); -extern void func_80146AFC(void *a0); -extern void func_8014ADA8(s32 a0, s32 a1); -extern void func_8014AD7C(s32 a0); -extern s32 D_80078E8C; -extern void func_8014B034(s32 arg0); -extern void func_8014B00C(s32 arg0); -extern void func_8014B084(void); -extern s16 D_80078E90; -extern void func_8014B034(s32 a0); -extern u8 D_80078EBA; -extern void func_800D10EC(void); -extern void func_8002AC98(void); -extern s32 func_8014B154(s32 *a0); -extern void func_8014B12C(void); -extern void func_8014B2F8(void); -extern void func_8014B4C4(void); -extern void func_8014B160(s32 a0); -extern s32 func_8016F1C4(void); -extern s16 D_80078E96; -extern s16 D_80078EB8; -extern u16 D_80078EA6; -extern void func_8014B2A8(void); -extern void func_8014B310(void); -extern void func_8014B2D0(void); -extern s32 D_80078E94; -extern s32 D_80078ECC; -extern void func_8014B33C(void); -extern u8 D_80062BF4[]; -extern void func_8014BC80(s32 a0, s32 a1); -extern void func_80019064(void *a0); -extern s32 D_80078E98; -extern void func_80166244(); -extern void func_8014B4D4(void *a0); -extern s16 D_80078E9A; -extern u8 D_80126D1C; -extern s32 D_80126D74; -extern void func_8014B598(s32 a0, s32 a1); -extern void func_8014B5B0(s32 *a0); -extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); -extern void func_8014B5D8(s32 s1); -extern s32 D_80078E9C; -extern s32 D_80078ED0; -extern void func_8014B6F0(s32 a0, s32 a1); -extern void func_8014B768(s32 a0, s32 a1); -extern void func_8014B944(s32 a0, s32 a1, s32 a2); -extern s32 D_80078EA4; -extern u16 D_80078EB2; -extern s16 D_80078EB4; -extern void func_8014BB0C(void); -extern void func_8014BB24(s32 a0, s32 a1, s32 a2); -extern void func_8014BC0C(s32 a0, s32 a1); -extern void func_8014BC44(s32 a0, s32 a1); -extern u8 D_800B9A17; -extern void func_8014BCC0(s32 a0, s32 a1); -extern u16 D_80078EB6; -extern s32 func_8014BCEC(s32 a0, s32 a1); -extern void func_8014BD24(s32 a0, s32 a1); -extern void func_8014BD60(s32 param_1, s32 param_2); -extern void func_8014BD98(s32 a0, u16 a1); -extern void func_8014BDC8(void); -extern void func_8014BDE0(void); -extern s32 func_8017267C(s32 *a0); -extern s32 func_80013294(void *a0, void *a1); -extern void func_80029ED4(s32 a0); -extern void func_8014BDE8(s32 a0); -extern void func_8014BE78(void); -extern void func_8014BE9C(void); -extern void func_80029124(s32 a0, s32 a1); -extern void func_8014BEC0(void); -extern void func_8014BF18(s32 a0); -extern void func_8014BF48(void); -extern u8 func_8014BF6C(void); -extern void func_8014BF8C(u8 arg0); -extern void func_8014BFB0(void); -extern u8 func_8014BFD4(void); -extern void func_8014BFF4(s32 a0, s32 a1); -extern void func_8014C010(s32 a0, s32 a1); -extern s32 func_8014C050(s32 a0, s32 a1); -extern s32 func_8014C088(s32 a0, s32 a1); -extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); -extern s32 func_8014C118(void * a0, s32 a1, s32 a2); -extern s32 func_8014C168(s32 * param_1, s32 param_2); -extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); -extern u8 D_8018EE54[]; -extern void func_8014C1A0(s32 arg0, s32 arg1); -extern s32 func_80013328(s32 a0, s32 a1); -extern s32 func_8014C59C(void *a0, void *a1); -extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); -extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); -extern s32 ratan2(s32 dx, s32 dy); -extern u8 D_8018EE5C; -extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); -extern s16 func_8014C5D0(s32 a0, s32 a1); -extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); -extern u8 D_80126D17; -extern void func_8014C6AC(void); -extern void func_8014C6C0(void); -extern u8 D_80126D1E; -extern void func_8014C6D0(void); -extern void func_8014C6E0(void); -extern s32 func_8014C860(s32 a0, s32 a1); -extern void func_8014C8C8(s32 a0, s32 *a1); -extern void func_8014C88C(s32 a0); -extern void func_8014C8C8(s32 dst, s32 * src); -extern void func_8014C8F0(s32 arg0); -extern u8 D_801151F0[]; -extern s32 func_8014C918(s32 a0, s32 a1); -extern s32 D_80126B50; -extern void func_8014C968(void); -extern void func_8014C978(void); -extern s32 func_8014C98C(void); -extern void func_80139914(s32 a0); -extern s32 func_8014CA00(s32 a0); -extern u16 func_8014CA70(s32 a0, s32 a1); -extern s32 func_8014CA14(s32 a0, s32 a1); -extern u16 func_8014CAE4(s32 *a0, s32 a1); -extern s32 func_8014CA88(s32 *a0, s32 a1); -extern s32 func_8014CAFC(void); -extern s32 func_8014CB0C(void); -extern s32 func_8014CB1C(void); -extern u8 D_80126D1F; -extern s32 func_8014CB2C(void); -extern s32 func_8014CB58(void); -extern u8 D_80126D1D; -extern void func_8014CB68(void); -extern s32 func_8014CB7C(void); -extern s32 func_8014CB8C(void); -extern short D_80126C9E; -extern void func_8014CB9C(struct Packed8 *a0); -extern s32 D_80126CDC; -extern void func_8014CBD8(void); -extern s16 D_80126CC4; -extern void func_8014CBE8(void); -extern void func_8014CBF8(void *a0); -extern void func_8014D3E0(s32 a0); -extern void func_8014D04C(void); -extern void func_8014CCB4(void); -extern void func_8014CC28(s32 a0); -extern void func_8014CD0C(u8 *a0); -extern s32 func_8014CF04(s32 a0, s32 a1, void *a2); -extern void func_8014CD80(s32 a0, void *a1, void *a2); -extern void func_8014D0A4(s32 a0); -extern s32 func_8014D2A0(s32 a0, void *a1, void *a2); -extern s32 func_8014D12C(s32 a0, void *a1, void *a2); -extern void func_8014D438(s32 a0); -extern void func_8014D3E0(s32 _arg0); -extern void func_8014D610(s32 a0, void *a1, void *a2); -extern s32 func_8014D4C0(s32 a0, void *a1, void *a2); -extern void func_8014D790(s32 a0); -extern void func_8014D738(void); -extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); -extern s32 func_8014D820(s32 a0, u16 *a1, u16 *a2); -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); -extern void func_8014DF94(s32 arg0); -extern void func_8014DF3C(void); -extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ -extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ -extern s16 D_801152AC; -extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); -extern void func_8014E48C(s32 a0); -extern void func_8014E434(void); -extern void func_8014E5B4(s32 a0, void *a1, void *a2); -extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); -extern void func_8014E6F8(struct SubE6F8 *a0); -extern void func_8014E6A0(void); -extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); -extern void func_8014E934(s32 _arg0); -extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); -extern s32 func_8014E98C(void *a0); -extern u16 D_800B99DA; -extern s32 D_801150D8; -extern s16 D_801152AA; -extern u8 D_80126720[]; -extern s16 D_80126724; -extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); -extern s32 func_8014ED80(struct SubED80 *a0); -extern int D_801E5BA8; -extern void func_8014ED28(s32 _arg0); -extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F24C(struct SubF24C *a0); -extern void func_8014F1F4(void); -extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F4C0(); -extern s32 func_8014F468(void); -extern int func_8014F74C(); -extern int func_8014F6F4(void); -extern u8 D_800D3918[]; -extern u8 D_801152A8[]; -extern s32 D_801152BC; -extern int func_8014F74C(s32 arg0); -extern s32 func_8014FA70(s32 a0); -extern s32 D_801E5BAC; -extern void func_8014FA04(s32 a0); -extern s32 func_8014FBC0(); -extern s32 func_8014FC18(u8 *self); -extern int func_8014FD54(int param_1); -extern void func_8014FCFC(void); -extern void func_80150170(void *a0); -extern s32 func_8014FE60(void *a0); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_8014FE60(void *e); -extern s32 func_80134510(s32 arg); -extern s32 func_80150150(s32 a, s32 b); -extern s32 func_80150460(s32 a, s32 b); -extern void func_801504D8(u16 *a0); -extern s32 func_80150480(s32 _arg0); -extern s32 func_80150528(void *a0, void *a1, void *a2); -extern s32 func_80150528(void *arg0, void *arg1, void *arg2); -extern s32 func_801506A4(s32 a0, s32 a1); -extern s32 func_801505FC(s32 a0); -extern s32 func_801506A4(s32 arg0, s32 arg1); -extern void func_80150820(s32 a0, s32 a1); -extern void func_8015086C(int param_1); -extern s32 func_801508B4(s32 a0); -extern s32 func_8015094C(s32 a0); -extern short func_801508F8(s32 a0); -extern s32 D_8018EE8C; -extern s32 D_80126990; -extern s32 D_80126994; -extern s32 func_80021174(s32 a0, s32 a1); -extern s32 func_8015094C(s32 param_1); -extern void func_80150B9C(void); -extern s32 func_80151184(s32 a0, s32 a1, s32 a2); -extern s32 func_80150BA4(s32 a0); -extern s32 func_801619D0(void *a0); -extern void func_80150BC8(s32 *a0); -extern s32 func_80150480(s32 a0); -extern u16 D_800AE6DC; -extern void func_80150C48(s32 a0); -extern int func_80151184(int arg, int a1, int a2); -extern int func_80150CA0(int arg); -extern void func_80150EC4(s32 a, s32 b); -extern void func_80150CC4(s32 a); -extern void func_80150CE4(s32 a); -extern void func_80150D04(s32 a); -extern void func_80150D24(s32 a); -extern void func_80150D44(s32 a); -extern void func_80150D64(s32 a); -extern void func_80150D84(s32 a); -extern void func_80150DA4(s32 a); -extern void func_80150DC4(s32 a); -extern void func_80150DE4(s32 a); -extern void func_80150E04(s32 a); -extern void func_80150E24(s32 a); -extern void func_80150E44(s32 a); -extern void func_80150EC4(s32 a0, s32 a1); -extern void func_80150E64(s32 a0); -extern void func_80150E84(s32 a0); -extern void func_80150EA4(s32 a0); -extern u8 D_800AE6C0; -extern s16 D_800AE6C8; -extern s16 D_800AE6CA; -extern s16 D_800AE6CC; -extern s32 D_800AE6C4; -extern s16 D_800AE6CE; -extern u8 D_800AE6BE; -extern u8 D_801201F8[]; -extern void func_80150F78(void); -extern void func_80150F80(s32 a0); -extern int func_80150FB4(int arg); -extern void func_80150FD8(s32 a0); -extern int func_80151014(int arg); -extern void func_80151038(s32 a0); -extern int func_80151070(int arg); -extern int func_80151094(int arg); -extern void func_801510B8(void); -extern void func_801510C0(void); -extern int func_801510C8(int arg); -extern int func_801510EC(int arg); -extern s32 func_8012DB84(void); -extern s32 func_80151110(void); -extern void func_80151130(void); -extern int func_80151138(int arg); -extern void func_8015115C(s32 *a0, s16 a1); -extern s32 func_80151164(s32 a0, s32 a1); -extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); -extern void func_801511A8(u8 *a0); -extern void func_801511C4(u8 *a0); -extern int func_80151204(int arg, int a1); -extern int func_801511E0(int arg); -extern int func_80151204(int a0, int a1); -extern void func_80151238(void *a0); -extern void func_8015126C(u16 *p); -extern void func_80151780(s32 a0); -extern void func_801516F0(s32 *a0); -extern void func_8015173C(s32 *a0); -extern s16 D_8011DB1A; -extern s32 D_80127518; -extern s32 D_801151FC; -extern s32 func_801725CC(u8 *a0); -extern s32 func_80029D3C(void); -extern void func_80151878(void); -extern void func_80153B58(s32 *a0); -extern s32 func_80151880(s32 a0); -extern s32 func_801518D8(s32 a0); -extern s32 func_80151944(void); -extern s32 func_80151924(void); -extern void func_8014E934(s32 a0); -extern s32 func_8014F3E8(s32 a0); -extern void func_801519C8(s32 a0); -extern void func_80151980(s32 a0); -extern M2C_UNK D_800D5880; -extern s32 D_800D58AC; -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801519C8(s32 arg0); -extern void func_80151C54(s32 a0); -extern void func_801542DC(s32 *a0, s32 a1); -extern void func_8015BDD0(s32 *a0); -extern void func_80165718(s32 a0); -extern u8 D_800D46E4[]; -extern void func_80151AE4(s32 arg0); -extern void (*D_8018EF34[])(void); -extern void func_80151D24(void *a0); -extern void func_80151DB0(s32 a0); -extern void func_80151D60(void *a0); -extern s32 func_80172630(u8 *a0); -extern s32 D_80062C14; -extern void func_80151DB0(s32 param_1); -extern void func_80151E78(s32 *a0); -extern void func_80151ECC(struct S80151ECC *a0); -extern void func_80151FB4(s32 a0); -extern void func_80151F38(s32 *a0); -extern void func_801553C0(s32 a0); -extern void func_80153C18(); -extern void (*D_8018EF58[])(void); -extern void func_80152058(void *a0); -extern void func_801520DC(s32 a0); -extern void func_80152094(s32 a0); -extern void func_80147324(s32 a0); -extern u8 D_80062C04[]; -extern M2C_UNK D_8018EF48; -extern void func_801520DC(s32 arg0); -extern void func_801470B4(s32 a0); -extern void func_8015369C(s32 a0); -extern void func_80152194(s32 *a0); -extern s32 func_801536DC(s32 a0); -extern void func_8015220C(s32 a0); -extern s32 func_80153800(s32 a0); -extern void func_801522CC(s32 a0); -extern void func_80152254(s32 *a0); -extern void (*D_8018EF6C[])(void); -extern void func_80152370(void *a0); -extern void func_801523F4(s32 a0); -extern void func_801523AC(s32 a0); -extern void func_8001382C(s32 a0, void *a1, void *a2); -extern u8 D_8018EF78[]; -extern void func_801523F4(s32 arg0); -extern void func_801525F4(int); -extern s32 func_801535F4(void *arg0); -extern void func_8015BF48(s32 *a0); -extern void func_80152500(int param_1); -extern void func_801525F4(s32 a0); -extern void (*D_8018EF88[])(void); -extern void func_80152698(void *a0); -extern void func_80152714(s32 a0); -extern void func_801526D4(s32 a0); -extern void func_80152790(s32 a0); -extern void (*D_8018EFA0[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018EF90; -extern void func_801528B0(s32 arg0); -extern void func_8015294C(s32 a0); -extern void func_80152A08(s32 a0); -extern void func_80152AC8(s32 a0); -extern void func_80152A50(s32 *a0); -extern void (*D_8018EFB4[])(void); -extern void func_80152B6C(void *a0); -extern void func_80152BF0(s32 a0); -extern void func_80152BA8(s32 a0); -extern void func_80152C80(s32 *a0); -extern void func_80152C40(s32 *a0); -extern void (*D_8018EFD0[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018EFC0; -extern void func_80152DA8(s32 arg0); -extern void func_80152E4C(s32 a0); -extern void func_80152EFC(s32 a0); -extern void func_80152FBC(s32 a0); -extern void func_80152F44(s32 *a0); -extern void (*D_8018EFE4[])(void); -extern void func_80153060(void *a0); -extern void func_801530E4(s32 a0); -extern void func_8015309C(s32 a0); -extern void func_80155440(s32 *a0); -extern void func_801530E4(s32 arg0); -extern void func_80153150(struct S80153150 *a0); -extern void func_801531BC(s32 a0); -extern void func_8015327C(s32 a0); -extern void func_80153204(s32 *a0); -extern void (*D_8018EFF8[])(void); -extern void func_80153320(void *a0); -extern void func_801533A4(s32 a0); -extern void func_8015335C(s32 a0); -extern void func_80153410(s32 *a0); -extern void func_80153490(s32 a0); -extern void func_80153550(s32 a0); -extern void func_801534D8(s32 *a0); -extern void (*D_8011DB28)(s32 a0); -extern s32 func_801536DC(s32 param_1); -extern void func_800139C8(s32 a0, void *a1, void *a2); -extern s32 func_80153978(s32 a0, u16 *src); -extern s32 func_80133784(s32 a0, void *src, s32 dst); -extern s32 func_801539F8(s32 a0, void *a1); -extern s32 func_801539F8(s32 a0, void * a1); -extern s32 func_8016DA04(s32 a0); -extern s32 func_80153BD8(s32 a0); -extern s32 func_80153BF0(s32 a0); -extern void func_80153C18(void); -extern u16 D_8011F748; -extern void func_80153C30(void); -extern void func_80153C74(s16 a0, s16 a1); -extern s16 D_8011DB18; -extern void func_80153C44(int a0, int a1, s16 a2); -extern s16 D_8011DB0C; -extern s32 D_80115210; -extern void func_80153C8C(void); -extern void func_80153C9C(void); -extern s32 func_80153CBC(void); -extern s32 D_8018F00C; -extern void (*D_8018F034[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018F014; -extern void func_80153D7C(s32 param_1); -extern void func_8015410C(void); -extern void func_80153E00(s32 param_1); -extern void func_80151664(void); -extern void func_80154134(u8 *a0); -extern void func_80154190(u8 *a0, s32 a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154218(u8 *a0, s32 a1, s32 a2); -extern void func_801541D8(u8 *a0, s32 a1, s32 a2); -extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); -extern void func_801542A4(); -extern void func_801542A4(s32 *a0, s32 a1); -extern void func_8015430C(); -extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); -extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); -extern s32 func_80154358(void * arg0); -extern void func_80154AB4(s32 a0, s32 a1); -extern void func_80154B20(s32 a0, s32 a1, s32 a2); -extern void func_80154AE0(s32 a0, s32 a1, s32 a2); -extern void func_80154B7C(u8 *a0, s32 a1); -extern void func_80154B4C(u8 *a0, s32 a1); -extern void func_80154BC8(void *a0, s32 a1, s32 a2); -extern void func_80154B98(void *a0, s32 a1, s32 a2); -extern u8 D_800D8D10[]; -extern s16 D_80078E9E; -extern void func_801550FC(s32 a0); -extern void func_80154ED8(s32 a0, s32 a1); -extern void func_80154F9C(s32 a0); -extern void func_800183E0(s32 a0); -extern void func_801550FC(s32 arg0); -extern void func_8001D150(s32, s32); -extern void func_8001D130(int, int); -extern void func_80155150(int param_1); -extern s32 D_800DE2A4[]; -extern void func_801552F4(s32 a0); -extern void func_80155344(s32 a0); -extern s32 func_80155394(s32 *a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80029178(s32); -extern int (*D_8018F080[])(void); -extern s32 func_80155458(s32 param_1); -extern s32 func_801659DC(u8 *a0); -extern s32 func_801554B8(void *arg0); -extern void func_801555F4(void *a0); -extern void func_80155518(s32 *a0); -extern void func_80155580(void *a0); -extern void (*D_8018F084[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern s32 func_80029B4C(s32 a0, s32 a1); -extern s32 func_80029BC8(s32 a0, s32 a1); -extern s32 func_80029C44(s32 a0, s32 a1); -extern s32 func_8015640C(s32 a0, s32 a1); -extern s32 rand(void); -extern u32 func_8015616C(s32 param_1, u16 param_2); -extern u16 func_80156370(u16 param_1); -extern s32 func_801564B0(s32 a0); -extern s32 func_8002A1B4(void); -extern s32 func_8002A400(void); -extern s32 func_8002A670(void); -extern s32 func_8002A8E0(void); -extern s32 D_801151E0[]; -extern s32 func_801565C0(void); -extern void func_80156A14(s32 *a0); -extern void func_80156648(s32 *a0); -extern u8 D_8011DAD8[]; -extern s32 func_8014C568(s16 *a0, s16 *a1); -extern void func_801567BC(s32 a0); -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018F4E8[]; -extern void func_80156A1C(s32 param_1, s32 param_2); -extern s32 D_801150E0[]; -extern void func_80156A88(s32 a0, s32 a1); -extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); -extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); -extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); -extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern s32 func_80135004(s32 a0, void *a1, s32 a2); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801575E4(void *a0); -extern void func_801574DC(s32 *a0); -extern void func_80157544(void *a0); -extern void (*D_8018F4F8[])(void); -extern void func_8014CC28(s32 a0); /* defined */ -extern s32 func_8014F3E8(s32 a0); /* declared */ -extern void func_8015BDD0(s32 *a0); /* defined */ -extern void func_801575E4(void *a0); /* defined */ -extern void func_80157580(s32 arg0); -extern u8 D_800D4F14[]; -extern void func_801576A8(void *arg0); -extern s32 func_8015773C(u8 *a0); -extern s32 func_8015771C(u8 *a0); -extern s32 func_8015773C(u8 * arg0); -extern int D_801E5BE0; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018F520[])(void); -extern void func_80157808(void *param_1); -extern void func_80157880(s32 a0); -extern s32 func_801725A4(u8 *a0); -extern u8 D_800D5128; -extern u8 D_8018F500; -extern void func_801578C0(s32 param_1); -extern void func_80147A84(int); -extern void func_80148038(int, int); -extern void func_80147460(int); -extern void func_80146D90(int); -extern void func_80161450(void *a0); -extern void func_80157A8C(int); -extern void func_80154A74(int, int); -extern unsigned char D_800D5178; -extern unsigned char D_8018F510; -extern void func_8015795C(int param_1); -extern void func_80161D20(s32 a0, s32 a1); -extern void func_80157A8C(s32 a0); -extern void func_8016706C(s32 a0); -extern u8 D_800D51AC[]; -extern void func_80157AC8(s32 param_1); -extern void func_80157B74(int param_1); -extern void func_8016158C(void *a0); -extern void func_8015BE04(s32 *a0); -extern void func_80157BC8(s32 a0); -extern void func_80157CCC(s32 a0); -extern void func_80157DC4(void *a0); -extern void func_80157FC4(void *a0); -extern void func_80157D74(u16 *a0); -extern void (*D_8018F560[])(void); -extern void func_80157E38(void *); -extern void func_80157E00(void *a0); -extern void func_80157E38(void * a0); -extern s32 func_80157F64(s32 *a0); -extern s32 func_80156600(void *a0); -extern void func_80157EA4(void *a0); -extern void (*D_8018F568[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018F534; -extern void func_80158038(void * param); -extern u8 D_800D524C[]; -extern void func_80161418(void *a0); -extern void func_801580B4(s32 a0); -extern void func_801581AC(s32 a0); -extern void (*D_8018F574[])(void); -extern void func_8015824C(void *a0); -extern void func_801582C0(void *); -extern void func_80158288(void *a0); -extern u8 D_800D52A8[]; -extern void func_801585A4(s32 *a0); -extern void func_801582C0(void *a0); -extern s32 func_801585AC(s32 *a0); -extern u8 D_800D52E8[]; -extern void func_80158344(s32 *a0); -extern s32 func_801615C4(void *a0, s32 a1); -extern u8 D_8018F544; -extern u8 D_800D533C; -extern void func_80158434(s32 param_1); -extern void func_80158548(s32 param_1); -extern void func_801585EC(u8 *a0); -extern void func_80158794(void); -extern s32 D_801E5BE8; -extern s32 D_801E5BF4; -extern s32 D_801E5BF8; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018F5B0[])(s32 *); -extern void func_80158AE4(void *a0); -extern void func_80158AB4(void *a0); -extern void func_8016F264(void); -extern void func_80165840(void); -extern void func_801658DC(void); -extern void func_80165A78(s32); -extern void func_80158AE4(void * a0); -extern M2C_UNK D_800D58D8; -extern void func_80158BB0(void *arg0); -extern s32 func_80159404(s32 a0, s32 a1); -extern void func_80158C40(s32 *a0); -extern void func_80158CD8(s32 *a0); -extern s32 func_80159434(s32 a0, s32 a1); -extern void func_80158D60(s32 a0); -extern M2C_UNK D_800D5904; -extern void func_80158E24(s32 *a0); -extern s32 D_8018F584[]; -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80158F00(int param_1); -extern u8 D_80110C3C[]; -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80158FA4(s32 param_1); -extern s32 func_801399F0(s32 a0); -extern u8 D_80110C94[]; -extern u8 D_80110CD4[]; -extern void func_80159070(void *a0); -extern s32 func_80029A94(s32); -extern void func_80175454(void); -extern void func_800298BC(void *); -extern void func_8002992C(s32); -extern void func_800CF804(void); -extern void func_800CF818(void); -extern u8 D_80110D0C[]; -extern void func_80159120(s32 a0); -extern void func_801592CC(s32 *a0); -extern u8 D_800AE6BD; -extern s32 D_801E5BF0; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018F800[])(void); -extern void func_80159698(void *a0); -extern s32 func_801596D4(void *a0); -extern void func_80174B6C(void); -extern void func_80129248(s16 a0); -extern void func_8013C938(void); -extern void func_8013CB20(void); -extern void func_8013C98C(void); -extern void func_8002850C(s32, s32, s32); -extern void func_80028620(s32, void *); -extern s16 D_800B9AAC[]; -extern s16 D_800B9B00; -extern u16 D_801270C0; -extern u32 D_800AFAE8[]; -extern char D_8018F620[]; -extern s32 func_801596F0(s32 param_1); -extern s32 func_80159874(void); -extern void func_800167B8(s32 a0); -extern s32 func_8015987C(s32 a0); -extern int func_800167F0(int arg); -extern int func_801598BC(void); -extern void func_80159968(void *a0); -extern void func_801598E0(u8 *a0); -extern void (*D_8018F8A4[])(void); -extern void func_80159A20(void *a0); -extern void func_801599E0(void *a0); -extern void func_80159A18(void); -extern void func_80159BE4(s32); -extern void func_80159B08(s32 *a0); -extern void func_80159B70(void *a0); -extern void func_80159B3C(void * a0); -extern void (*D_8018F9F8[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018F814; -extern void func_80159BE4(s32 arg0); -extern void func_8015A1C8(s32 a0); -extern void func_8015A2D8(s32); -extern void func_8015A1FC(s32 *a0); -extern void func_8015A264(void *a0); -extern void func_8015A230(s32 *a0); -extern void (*D_8018FA00[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018F824; -extern s32 func_80172608(u8 *a0); -extern void func_8015A2D8(s32 param_1); -extern u8 D_800D48DC; -extern s32 func_8015AB7C(s32 a0); -extern s32 D_8011F9C4; -extern s32 func_8015ABD4(s32 a0, s32 a1, s32 a2); -extern s32 func_80161CD0(s32 a0, s32 a1); -extern M2C_UNK D_8018F844; -extern void func_8015AC48(s32 arg0); -extern void func_8015AC90(s32 a0); -extern void func_8015ADB0(s32 a0); -extern void func_8015ACC4(s32 *arg0); -extern void func_8015AD3C(void *a0); -extern void func_8015AD08(void *arg0); -extern void (*D_8018FA08[])(void); -extern void func_8015ADB0(s32); -extern void func_8015AD78(s32 a0); -extern void func_8015ADB0(s32 arg0); -extern s32 D_800D4A9C; -extern int func_8015B6F4(int param_1); -extern u8 D_800D4F8C[]; -extern s32 func_8015B7B4(s32 a0); -extern u8 D_800D4BE0[]; -extern s32 func_8014A51C(void); -extern s32 func_8015B858(u8 *a0); -extern s32 D_800D4B48; -extern void func_8015B8F8(s32 *a0); -extern void func_8015BD8C(s32 *a0); -extern s32 func_8015BE94(); -extern void func_8015BE38(struct Obj *a0); -extern s32 func_8015BE74(void); -extern void func_80161124(void *a0); -extern s32 func_8015BE94(s32 *a0); -extern s32 func_8015AE2C(); -extern s32 func_8015BEC4(void); -extern s32 func_8015B950(s32 arg0); -extern s32 func_8015BEE4(void); -extern void func_8015BF04(s32 *a0); -extern void func_8015C0C4(s32 a0); -extern void func_8015BFF4(void *a0); -extern void func_8015BF7C(s32 *a0); -extern void func_8015C030(s32 *a0, s32 a1); -extern void func_8015BFB0(s32 *a0, s32 a1); -extern void (*D_8018FA30[])(void); -extern void func_8015C0C4(s32); -extern void func_8015C08C(s32 a0); -extern s32 func_8015C128(s32 param_1); -extern void func_8015C6A4(void); -extern void func_8015C788(s32 a0); -extern void func_8015C6AC(s32 *a0); -extern void func_8015C714(void *a0); -extern void func_8015C6E0(s32 *a0); -extern void (*D_8018FA3C[])(void); -extern void func_8015C788(s32); -extern void func_8015C750(s32 a0); -extern void func_8015CB94(s32 a0); -extern void func_8015CBCC(void); -extern void func_8015CBD4(void); -extern void func_8015CBDC(void); -extern void func_8015CBE4(void); -extern void func_8015CBEC(void); -extern void func_8015CBF4(void); -extern void func_8015CBFC(void); -extern void func_8015CC04(void); -extern void func_8015CC0C(s32 *param_1); -extern void func_8015CC74(s32 *a0); -extern void func_8015CC40(s32 *a0); -extern s32 func_8015CCD0(); -extern s32 func_8015CCB0(void); -extern s32 func_801725E0(u8 *a0); -extern s32 func_8015CCD0(s32 param_1); -extern s32 func_8015CD20(s32 arg0); -extern void func_8015CF24(s32 a0); -extern void func_8015D01C(); -extern void func_8015CF58(s32 *param_1); -extern void func_8015CFC0(s32 *a0); -extern void func_8015CF8C(s32 *a0); -extern void func_8015CFFC(void); -extern void func_8015D01C(int param_1); -extern void (*D_8018F8B0[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018FAE0; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018EBC4[]; -extern void func_8015D414(int param_1); -extern void func_8015D57C(s32); -extern void func_8015D480(s32 *a0); -extern s32 func_8015D4E8(s16 *a0); -extern void func_8015D4B4(s16 *a0); -extern void func_8015D524(s32 arg0); -extern void func_8015D544(s32 a0); -extern void func_801746DC(void); -extern void func_8015D57C(s32 arg0); -extern s32 func_80161B18(void *a0); -extern s32 func_80161B84(void *a0); -extern void func_80154150(int, int); -extern void func_80149374(int, int); -extern unsigned char D_8018FAF4[]; -extern void func_8015D5E8(int param_1); -extern int func_8015E0D4(int); -extern void func_8015DA5C(s32 a0); -extern void func_8015DB6C(s32 a0); -extern void func_8015DA90(s32 *a0); -extern void func_8015DAF8(s32 *a0); -extern void func_8015DB6C(s32); -extern void func_8015DB34(s32 a0); -extern void func_8015DCB8(s32 a0); -extern void func_8014BD60(s32 a0, s32 a1); -extern int func_8015DD74(int); -extern void func_8015DBD4(void *arg0); -extern int func_8015DC84(int a0); -extern s8 D_8018FB30[]; -extern void func_8015DCB8(s32 param_1); -extern int func_8015DD74(int arg0); -extern void func_8015DECC(s32 a0); -extern void func_8015DDF0(s32 *a0); -extern void func_8015DE58(s32 *a0); -extern void func_8015DECC(s32); -extern void func_8015DE94(s32 a0); -extern void func_8015E018(s32 a0); -extern void func_8015DF34(void *arg0); -extern int func_8015DFE4(int a0); -extern void func_8015E018(s32 param_1); -extern int func_8015E0D4(int a0); -extern void func_8015E22C(s32 a0); -extern void func_8015E150(s32 *a0); -extern s32 func_8015E1B8(s32 a0); -extern void func_8015E184(s32 *arg0); -extern void func_8015E22C(s32); -extern void func_8015E1F4(s32 a0); -extern u8 D_800D4FF4[]; -extern u8 D_800D5098[]; -extern u8 D_800D5060[]; -extern s32 func_8014A850(s32 a0); -extern void func_8015E40C(s32 a0); -extern void func_8015E588(void); -extern void func_8015E4B0(s32 a0); -extern void func_8015E288(s32 a0); -extern u16 D_8018FB78; -extern u16 D_8018FB7A; -extern u16 D_8018FB7C; -extern s32 D_8018FB80; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -extern void func_8013C9C4(void *a0); -extern s32 D_8018FB88; -extern void func_8015E5B0(u8 *self); -extern void func_8015E714(s32 *a0); -extern void func_8015E95C(s32); -extern void func_8015E84C(s32 *a0); -extern void func_8015E8E8(s32 *a0); -extern void func_8015E9B8(s32 *a0); -extern void func_8015E8B4(s32 *a0); -extern void func_8015E924(s32 a0); -extern void func_8015E95C(s32 a0); -extern s16 D_801152A0; -extern void func_80160818(s32 *a0); -extern void func_8015ED6C(s32 *a0); -extern void func_8015EE7C(s32); -extern void func_8015EDA0(s32 *a0); -extern s32 func_8015EE08(s32 a0); -extern void func_8015EDD4(s32 *arg0); -extern void func_8015EE44(s32 a0); -extern int D_800D4C48; -extern int D_8018F894; -extern void func_8015EE7C(s32 param_1); -extern void func_8015EEE0(void *arg0); -extern void func_8015EF9C(void); -extern void func_8015F080(s32); -extern void func_8015EFA4(s32 *a0); -extern void func_8015F00C(s32 *a0); -extern void func_8015EFD8(s32 *a0); -extern void func_8015F048(s32 a0); -extern void func_8015F080(s32 a0); -extern s32 D_80062BE8; -extern void func_801466F0(s32, s32, s32, s32, s32, s32, s32, s32); -extern s32 func_80161208(void); -extern void func_8015F118(void *a0); -extern void func_8015F260(s32 *a0); -extern void func_8015F380(); -extern void func_8015F2BC(s32 *a0); -extern void func_8015F324(s32 *a0); -extern void func_8015F2F0(s32 *a0); -extern void func_8015F360(void); -extern s32 func_801725B8(u8 *a0); -extern void func_8015F380(void* arg0); -extern void func_8015F738(s32 *a0); -extern void func_8015F848(s32 *a0); -extern void func_8015F76C(s32 *a0); -extern s32 func_8015F7D4(s32 a0); -extern void func_8015F7A0(s32 *arg0); -extern void func_8015F810(s32 *a0); -extern void func_80147078(s32 *, s16); -extern void func_80159B70(void *); -extern void func_8015F89C(void *arg0); -extern void func_8015F948(s32 *param_1); -extern void func_8015F9A4(void *arg0); -extern void func_8015FA24(s32 arg0); -extern void func_8015FBE0(s32 *a0); -extern void func_8015FA44(s32 *a0); -extern void func_8015FAAC(s32 *a0); -extern void func_8015FA78(s32 *a0); -extern s32 func_801612B8(void *a0, s32 a1); -extern void func_8016007C(s32 a0); -extern void func_8015FAE8(void *arg0); -extern void func_8015FCC8(void *param_1); -extern unsigned int D_8018FC0C[]; -extern void func_8015FD74(int param_1); -extern s32 func_80028DE0(void); -extern u8 func_80165700(s32 a0, s32 a1); -extern void func_8015FDCC(s32 a0); -extern u8 D_80078EC2; -extern u8 func_801656E8(s32 a0, s32 a1); -extern void func_80165670(s32 a0, s32 a1); -extern void func_8016004C(s32 a0); -extern void func_8015FF20(void *param_1); -extern void func_801601AC(s32 *a0); -extern void func_801600D0(s32 *a0); -extern void func_80160138(s32 *a0); -extern void func_80160104(s32 *a0); -extern void func_80160174(s32 *a0); -extern void func_801601E4(s32 *a0); -extern void func_80160244(s32 *a0); -extern void func_8016032C(void); -extern void func_80160410(s32 *a0); -extern void func_80160334(s32 *a0); -extern void func_8016039C(s32 *a0); -extern void func_80160368(s32 *a0); -extern void func_801603D8(s32 *a0); -extern u8 D_80062BD0; -extern void func_80160410(s32 * a0); -extern void func_801607B8(s32 *a0); -extern void func_801608C0(s32 *a0); -extern void func_801607E4(s32 *a0); -extern void func_8016084C(s32 *a0); -extern void func_80160888(s32 *a0); -extern void func_80160A28(s32 a0); -extern void func_80160A74(s32 *a0); -extern void func_80160BB4(s32 *a0); -extern void func_80160ACC(s32 *a0); -extern s32 func_80160B34(s32 a0); -extern void func_80160B00(s32 *arg0); -extern void func_80160B70(s32 a0); -extern void func_80160C28(void *arg0); -extern void func_80160CB4(s32 *a0); -extern void func_80160D10(void *arg0); -extern void func_80160DEC(u8 *a0); -extern void func_80160F00(); -extern void func_80160E3C(s32 *a0); -extern void func_80160EA4(); -extern void func_80160E70(s32 *a0); -extern void (*D_8018FCBC[])(void); -extern void func_80160EA4(void *a0); -extern void func_80160EE0(void); -extern void func_80160F00(void* arg0); -extern void func_800D0F4C(s32 a0); -extern u8 D_80110EC0; -extern void func_80160F70(s32 a0); -extern void func_80160FE0(s32 *a0); -extern void func_80161034(void *a0); -extern void func_80161094(s32 a0); -extern void func_801610FC(void); -extern void func_801483E8(void); -extern s32 func_80161A60(s32 a0); -extern void func_8016130C(void *a0, s32 a1); -extern void func_80161240(void *a0); -extern void func_80161374(void *a0, s32 a1); -extern void func_80161278(void *a0); -extern s32 func_801612B8(void * a0, s32 a1); -extern void func_8016163C(void *a0, s32 a1); -extern void func_80161774(void *a0, s32 a1); -extern s32 func_8016197C(s32 a0, s32 a1); -extern s32 func_80161488(void *a0); -extern void func_80161888(void *a0, s32 a1); -extern void func_801614E4(void *a0); -extern void func_8016191C(void *a0, s32 a1); -extern void func_8016151C(void *a0); -extern void func_80161554(void *a0); -extern s32 func_801615C4(void * arg0, s32 arg1); -extern s32 func_801619A4(s32 *a0); -extern s32 func_80161A00(s32 a0); -extern s32 func_80161A30(s32 a0); -extern int func_801497A8(void); -extern int func_80161BE0(void *param_1); -extern u16 D_8018FCEC[]; -extern void func_80161C98(int param_1, u32 param_2); -extern void func_80161E08(s32); -extern s32 func_80162438(s32); -extern s32 D_800AE6A8; -extern void func_800D1734(void *); -extern s32 D_8018FD50; -extern void func_80161D88(void); -extern void func_80161E08(s32 param_1); -extern int func_800291DC(int); -extern int func_800D0E30(void *a0); -extern int func_801620C4(void); -extern s32 func_800D0D7C(s32, s32); -extern int D_801E5C00[]; -extern void func_8016216C(void); -extern s32 func_801621CC(s32 arg0); -extern void func_801622C4(void); -extern void (*D_8018FD74[])(void); -extern void func_80162330(void *a0); -extern void func_8014706C(void *a0); -extern s32 func_8016236C(u8 *a0); -extern void func_800D0C48(s32 a0); -extern s32 func_801623B8(s32 *a0); -extern s32 func_800167F0(s32 a0); -extern s32 func_80162414(void); -extern s32 func_80162438(s32 _unused0); -extern int func_801626B8(void); -extern void func_80162714(void); -extern int D_801E5C58[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018FDBC[])(void); -extern void func_80162834(void *a0); -extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80162968(s32 a0); -extern s32 func_80162ACC(u8 *a0); -extern u8 D_800B5CB8; -extern s32 D_8018FDAC; -extern s32 D_800B5CBC; -extern u8 D_800B5CDF; -extern s32 D_800B5CEC; -extern void func_80162870(s32 param_1); -extern void func_801628F4(s32 *a0); -extern void func_80162968(s32 param_1); -extern void func_80162AC0(s32 *a0, s8 a1); -extern s32 func_80162AE0(u8 *a0); -extern void func_80162AF4(void); -extern void func_80162CC4(void); -extern s32 D_80126D40; -extern void func_80162B1C(void); -extern void func_80162D28(s32 *a0); -extern void func_80162D88(s32 *a0); -extern void func_80162DE8(s32 *a0); -extern void func_80162E48(s32 *a0); -extern void func_80162EA8(s32 *a0); -extern void func_80162F60(s32 arg0, s32 arg1); -extern void func_80162F80(s32 arg0, s32 arg1); -extern void func_80162FA0(s32 arg0, s32 arg1); -extern void func_80162F08(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80162FC0(s32 *a0); -extern void func_80162FF4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801630C4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163194(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg4); -extern void func_8016325C(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163234(s32 a0); -extern s32 D_80115100; -extern s32 func_801632E0(void); -extern s32 D_80115200; -extern s32 func_801632F0(void); -extern u16 D_80126B18[]; -extern void func_80163328(void); -extern s32 func_801633A8(void); -extern s32 func_80163408(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void func_80163534(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, u16 * a5); -extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); -extern char D_801E5054[8]; -extern void *memcpy(void *dst, const void *src, unsigned int n); -extern void func_801634D8(s32 param_1, u16 param_2, u16 param_3, s32 param_4, u16 param_5); -extern void func_80157158(); -extern void func_80163664(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801636D0(s32 a0, s32 a1); -extern s32 func_8016380C(struct S8016380C *a0, s32 a1); -extern void *memcpy(void *dst, void *src, s32 n); -extern s32 func_801638A0(u8 *a0, s32 a1); -extern s32 func_80163950(s32 a0); -extern void (*D_8018FDC4[])(void); -extern void func_80163A58(void *a0); -extern void func_80163A94(s32 param_1); -extern void func_80163C2C(s32 param_1); -extern void func_80163EC8(s32 param_1); -extern void func_80164270(s32 *a0); -extern void func_80164418(void); -extern void func_80163764(s32 a0); -extern void func_801642AC(s32 a0); -extern void func_8016432C(s32 a0); -extern void func_80164410(void); -extern s32 func_80012DBC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164530(s32 arg0); -extern void (*D_8018FE18[])(void); -extern void func_80164744(s32 param_1); -extern void func_8001C810(s32 a0, s32 a1); -extern void func_80164A74(s32 *a0); -extern void func_80164930(s32 a); -extern u16 D_800DF2E0; -extern s32 D_8018FDE0; -extern s16 D_8018FE14; -extern s16 D_8018FE12; -extern s16 D_8018FE10; -extern void func_801647A4(int param_1); -extern void func_80164ACC(); -extern void func_80164864(void *a0); -extern void func_80164930(s32 param_1); -extern s32 func_8014C308(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164ACC(s32 a0); -extern void (*D_8018FE24[])(void); -extern void func_80164BA0(void *a0); -extern void func_8001CD50(s32 a0, s32 a1); -extern void func_800233CC(void *, unsigned short); -extern void func_80164DD0(s32 a0); -extern void func_80164DB0(void); -extern u8 D_801E5CB8; -extern u8 D_801E5CB9; -extern u8 D_801E5CBA; -extern u8 D_801E5CBB; -extern u8 D_801E5CBC; -extern u8 D_801E5CBD; -extern u8 D_801E5CBE; -extern u8 D_801E5CBF; -extern void func_80164BDC(s32 param_1); -extern void func_80164E40(void); -extern void func_80164CD4(u8 *a0); -extern void func_80164D4C(void *arg0); -extern void (*D_8018FE34[])(void); -extern void func_80164EA4(void *a0); -extern void func_80165124(void *a0); -extern void func_80164EE0(int param_1); -extern s32 func_80165140(s32 a0); -extern void func_801651B8(void *a0); -extern void func_80164F44(void *arg0); -extern void func_80165024(void *a0); -extern void func_80165064(s32 *a0); -extern void func_801650C4(s32 *a0); -extern s32 func_80165140(s32 param_1); -extern s32 func_80165240(s32 a0, s32 a1, s32 a2); -extern s32 D_801E5CF8; -extern void func_801651B8(void * param_1); -extern u8 D_80126CF8; -extern void func_8016533C(void); -extern void func_801653F4(s32 a0); -extern void func_80165580(s32 a0); -extern void func_80165374(s32 a0); -extern void func_80165580(s32 _arg0); -extern void func_801653B8(s32 *a0); -extern s32 func_80165624(s32 a0); -extern u8 D_80078EC5; -extern void (*D_8018FE78[])(void); -extern u8 func_80165658(s32 a0, s32 a1); -extern void func_800CAE0C(s32 a0); -extern void func_801654A8(s32 arg0); -extern void func_80165B28(void *a0); -extern void func_801655E4(s32 a0); -extern u8 D_8018FEF4[]; -extern s32 D_8018FF14[]; -extern u8 D_8018FF90[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018FFB0[]; -extern u8 D_8018FFD0[]; -extern void func_800CAF6C(void); -extern void func_80165770(void); -extern void func_801657D8(void); -extern u8 D_80078EC3; -extern void func_801657A0(void); -extern s32 D_80078EA0; -extern s32 D_80078EA8; -extern u8 D_80078EBB; -extern s32 D_80078ED4; -extern s32 D_80078ED8; -extern s32 D_80078EDC; -extern u8 D_80078EE0; -extern void func_80165874(void); -extern s8 D_80078EC4; -extern void func_801658EC(void); -extern s32 func_80165900(void); -extern s32 func_80165910(void); -extern s32 D_8012672C; -extern s32 D_8012811C; -extern s32 D_80126B08; -extern void func_80165938(void); -extern void func_80165958(void); -extern s32 func_80165978(void); -extern void func_80165988(void); -extern s32 func_801659A8(void); -extern void func_801659B8(void); -extern s32 func_801659CC(void); -extern void func_80165A18(void); -extern s32 func_80165A50(s32 _arg0); -extern void func_80165AC8(void); -extern void func_80165A78(s32 arg0); -extern void (*D_8019006C[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_801900E8[])(void); -extern void func_80165BB4(u8 *a0); -extern void func_80165B6C(u8 *a0); -extern void func_80165C58(s32 arg0); -extern void func_80165BFC(void *a0); -extern void func_80165C78(void); -extern M2C_UNK D_801E5064; -extern void func_80165E2C(u16 *arg0); -extern s32 func_80165FA4(s32 a0, s32 a1, s32 a2); -extern s32 func_80167DBC(s32 a0, s32 a1, s32 a2); -extern s32 func_80167AE0(s32 a0, s32 a1, s32 a2); -extern void func_80165E90(void); -extern void func_80020F34(s32 a0, s32 a1); -extern s32 func_80165FA4(s32 arg0, s32 arg1, s32 arg2); -extern void (*D_801900F4[])(void); -extern void func_80166018(void *a0); -extern void func_80166054(s32 arg0); -extern void func_801661CC(s32 param_1); -extern void func_80166244(void* arg0); -extern void func_8016629C(void *a0); -extern void func_801662F4(void *a0); -extern void func_8016634C(void *a0); -extern void func_801663A4(void *a0); -extern void (*D_801900FC[])(void); -extern void func_801663FC(void *a0); -extern u8 D_800D387C[]; -extern u8 D_800D3888[]; -extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); -extern void func_800D1FC8(s32 a0, s32 a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern void func_801665B4(); -extern void func_80146C3C(); -extern void func_80166438(u8 *a0); -extern s32 func_80128ED8(s32 param_1, s32 *param_2); -extern void func_800D22E4(s32 a0); -extern void func_801665B4(s32 *a0); -extern void (*D_801901C4[])(void); -extern void func_80166618(void *a0); -extern void (*D_801901D4[])(void); -extern void func_80166654(void *a0); -extern s32 func_80166690(s32 param_1, s32 param_2); -extern s32 func_80166994(); -extern s32 func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern s32 func_80167540(s32 arg0); -extern void (*D_801901E4[])(void); -extern void func_801678B4(void *a0); -extern void RotMatrixYXZ(void *a0, void *a1); -extern void func_80048EAC(void *a0, void *a1); -extern s32 func_801670E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80146C3C(void); -extern void func_801678F0(s32 a0); -extern void (*D_801901F0[])(void); -extern void func_80167A9C(void *a0); -extern void func_80167AD8(void); -extern s32 func_80167AE0(s32 param_1, s32 param_2, s32 param_3); -extern void func_80168070(s32 a0, s16 *a1, s16 *a2, void *a3); -extern u8 D_80190150[]; -extern u8 D_80190164[]; -extern s32 func_80167DBC(s32 arg0, s32 arg1, s32 arg2); -extern void func_800D20C0(void *a0, void *a1, s32 a2); -extern void func_80017E68(void *a0, void *a1); -extern void func_800D23D0(void *a0); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern s32 D_801269A4; -extern s32 D_801269A8; -extern s32 D_801269AC; -extern void func_80168070(s32 param_1, s16 *param_2, s16 *param_3, void *param_4); -extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_8016829C(s32 a0); -extern s32 func_80166690(s32 a0, s32 a1); -extern void func_80168328(s32 arg0); -extern void func_801683D8(s32 a0); -extern void func_801684B4(s32 a0); -extern void func_80168540(s32 a0); -extern void func_801685EC(s32 a0); -extern void func_80168640(s32 a0); -extern s32 RotMatrixX(s32 a0, void *a1); -extern void func_80168664(void *arg0); -extern void (*D_80190208[])(void); -extern void func_80168744(void *a0); -extern void func_80168BDC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801687CC(s32 a0); -extern void func_80168780(s32 a0); -extern void func_80168828(void); -extern void func_801687CC(s32 param_1); -extern void func_80168828(); -extern void (*D_80190210[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_80190218[])(void); -extern void func_80168AA8(void *a0); -extern void func_80168AE4(s32 a0); -extern void func_800D2318(void); -extern void func_80168BDC(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void (*D_80190220[])(void); -extern void func_80168D58(void *a0); -extern void func_80168D94(int a0); -extern void func_80168F40(); -extern void func_80168EC4(s32 a0); -extern void func_80168F40(void *arg0); -extern void (*D_80190228[])(void); -extern void func_8016901C(void *a0); -extern void func_80169058(s32 a0); -extern s32 func_80169228(void); -extern void func_801691B8(void *a0); -extern void (*D_80190230[])(void); -extern void func_801693CC(void *a0); -extern void func_80169584(s32 param_1); -extern void func_80169408(s32 a0); -extern void func_8016951C(int param_1); -extern s32 func_80017758(void *a0, void *a1); -extern s32 func_80017DC4(void *a0, void *a1); -extern void func_801696D8(s32 a0, s32 a1); -extern void (*D_80190238[])(void); -extern void func_80169830(void *a0); -extern void func_8016986C(s32 a0); -extern s32 func_80169A4C(s32 a0, s32 a1); -extern void func_801699D0(void *arg0); -extern void (*D_801902EC[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_801902F4[])(void); -extern void func_80169F00(void *a0); -extern char D_801902A4[]; -extern char D_80190264[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8019032C[])(void); -extern void func_8016A020(void *a0); -extern void func_8016A05C(void *a0); -extern void func_8016A290(s32 a, void *b, void *c); -extern void func_8016A08C(s32 param_1); -extern void func_8016A1CC(int param_1); -extern void func_8016A290(s32 param_1, void *param_2, void *param_3); -extern void (*D_80190338[])(void); -extern void func_8016A700(void *a0); -extern s32 func_8016A73C(s32 arg0); -extern s32 func_8016A8FC(s32 a0); -extern void func_8016A890(s32 arg0); -extern void func_8016AA50(s32 param_1, s32 param_2); -extern void (*D_80190380[])(void); -extern void func_8016AB30(void *a0); -extern void func_8016B234(void); -extern void func_8016AFB0(s32 a0); -extern void func_8016B114(void *arg0); -extern s32 func_8016B448(s32, s32); -extern s32 func_8016BA48(s32 a0); -extern void func_8016B3F4(s32 a0); -extern s32 func_8016B428(s32 a0); -extern void func_8016B984(void *a0); -extern s32 func_8016B448(s32 arg0, s32 arg1); -extern void (*D_801903FC[])(void); -extern void func_8016B4BC(void *a0); -extern int func_8016B9F8(int); -extern int func_8016B834(int, int); -extern void func_8016B91C(int); -extern int D_801E6018; -extern void func_8016B4F8(int param_1); -extern s32 func_8016B9F8(s32 param_1); -extern void func_8016B6BC(s32, s32, s32, s32); -extern void func_8016B91C(s32); -extern s16 D_801903F0[]; -extern void func_8016B5C0(s32 param_1); -extern void func_8001CD9C(int, void *); -extern int *D_80190434[]; -extern unsigned short D_8019043C[]; -extern unsigned short D_80190444[]; -extern unsigned char D_801E6020[]; -extern int func_8016B834(int param_1, int param_2); -extern void func_8016B964(SrcB964 *a0, DstB964 *a1); -extern void func_8016B91C(s32 arg0); -extern s32 D_801E6018; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8019044C[])(void); -extern void func_8016BBA4(void *a0); -extern s32 func_8016BBE0(s32 param_1); -extern void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3); -extern M2C_UNK D_801E6154; -extern M2C_UNK D_801E6158; -extern void func_8016BCC0(void *arg0); -extern s32 func_8016BD78(s32 param_1); -extern s32 func_8016BEA0(s32 param_1); -extern void func_8016BF34(void *a0); -extern void func_8016BFD0(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern s32 D_801E60E0; -extern void (*D_8019047C[])(void); -extern void func_8016C14C(void *a0); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801E615C[]; -extern u8 D_801E6164[]; -extern u8 D_801E6114[]; -extern void func_8016C2C4(s32 param); -extern s32 func_8016C49C(s32 param_1_arg); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_8016C74C(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern short func_8016CF04(s32 a0, s32 a1); -extern void func_8016C83C(s32 a0); -extern void (*D_80190484[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_801904A0[])(void); -extern void func_8016D19C(void *a0); -extern void (*D_801904A8[])(void); -extern void func_8016D428(void *a0); -extern void func_8016D464(u8 *a0); -extern void func_8016D4DC(s32 a0); -extern void func_8016D5EC(s32 *a0); -extern short func_8016CBC0(void); -extern void func_8016D64C(int param_1); -extern void func_8016D778(s32 a0); -extern void func_800D20C0(); -extern void func_8016D848(s32 *a0); -extern void func_8016D984(s32 *a0); -extern void func_8016DBD8(u8 *a0); -extern void (*D_80190510[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801904B4; -extern u8 D_801904C0; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void (*D_80190544[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8019054C[])(void); -extern void func_8016DF20(void *a0); -extern void func_8016E3CC(s32 a0); -extern void func_8016E1CC(s32 a0); -extern void func_8016E26C(s32 *a0); -extern void func_8016E2E8(void *a0); -extern void func_8016E460(void *a0, void *a1); -extern void func_8016E358(void *a0); -extern void func_8016E460(void *arg0, void *arg1); -extern void (*D_801905A0[])(void); -extern void func_8016E5B8(void *a0); -extern void func_8016E5F4(s32 arg0); -extern void func_8016E778(); -extern void func_8016E688(void *a0); -extern void func_8016E6E4(s32 a0); -extern void func_8016E728(u8 *a0); -extern void func_8016E7C8(int param_1, short *p1, unsigned int *p2); -extern void func_8016E778(int param_1); -extern void func_8016E7C8(int param_1, short *param_2, unsigned int *param_3); -extern s32 D_80115218; -extern void func_8016E8F0(void); -extern void func_8016E918(short param_1, short param_2); -extern s32 func_8016E95C(); -extern u16 D_801905D4[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_801905C4[]; -extern void func_8016EB3C(s32 p); -extern void func_8016EBA8(u8 *param_1); -extern void func_8016ED6C(void); -extern s32 D_80126D70; -extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); -extern void func_8016ED8C(s32 a0, s32 a1, s32 a2); -extern void func_8016EE40(s32 a0, s32 a1, s32 a2); -extern void func_8016EDBC(s32 a0, s32 a1, s32 a2); -extern void func_8016EE94(); -extern void func_8016EDEC(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_8016EF78(s32 a0); -extern void func_8016EE40(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_801726D0(void *a0); -extern s32 D_80126D50; -extern s32 D_80126D54; -extern u8 D_80126D6C; -extern u8 D_80126D6D; -extern u8 D_80126D6E; -extern s32 D_80126D5C; -extern s32 D_80126D60; -extern s16 D_80126D64; -extern s16 D_80126D66; -extern s16 D_80126D68; -extern s16 D_80126D6A; -extern u8 D_80126D1A; -extern s32 D_80127058; -extern s32 D_8012705C; -extern s32 D_80127060; -extern s32 D_80127064; -extern s32 D_80127068; -extern s32 D_8012706C; -extern s32 D_80127070; -extern s32 D_80127074; -extern s16 D_80126D20; -extern void func_8016EE94(s32 a0, s32 a1); -extern s32 func_8016EFC8(s32); -extern s32 func_8016EFA8(s32 a0); -extern void func_8016F094(s32 *a0); -extern s32 func_8016F0AC(); -extern s32 D_801905F0; -extern void func_8016F250(void); -extern void func_8016F288(void); -extern void func_8016F2A8(void); -extern void func_8016F2C8(void); -extern void func_8016F2EC(void); -extern void func_8016F30C(void); -extern void func_8016F330(void); -extern void func_8016F350(void); -extern void func_8016F374(void); -extern void func_8016F388(void); -extern void func_8016F398(void); -extern s32 func_8016F44C(s32 a0); -extern void func_8016F470(s32 a0); -extern s32 func_8016F410(s32 a0); -extern void func_80175414(s32 _arg0); -extern s32 func_8016F4C4(s32); -extern s32 func_8016F494(s32 a0); -extern void func_8016F0E4(void); -extern s32 func_8016F4C4(s32 param_1); -extern void func_8016F4F4(void); -extern void func_801719A4(int a0, int a1); -extern void func_800D1724(s32 a0); -extern void func_80171928(void *a0); -extern void *D_8011F738; -extern void func_8016F4FC(void *a0); -extern void func_8014708C(void *a0); -extern void func_8016F540(void *a0); -extern void func_8016F578(s32 *a0); -extern void func_8016F5B0(void *a0); -extern void func_80147060(u8 *a0); -extern void func_8016F5E0(u8 *a0); -extern void func_8016F610(void *a0); -extern void func_8016F648(void *a0); -extern void func_8016F680(void *a0); -extern void func_8016F6B0(void *a0); -extern void (*D_80190668[])(void); -extern void func_8016F6E0(void *a0); -extern s32 func_80171990(u8 *a0); -extern void func_8016F764(void *a0); -extern void func_8016F71C(u8 *a0); -extern void (*D_80190670[])(void); -extern void func_8016F798(void *a0); -extern void func_8016F804(void *a0); -extern void func_8016F7D4(u8 *a0); -extern void func_80171928(void *); -extern void (*D_80190678[])(void); -extern void func_8016F834(void *a0); -extern void func_8016F8AC(u8 *a0); -extern void func_8016F870(u8 *a0); -extern void func_80172358(u8 *a0, u8 *a1); -extern void (*D_80190680[])(void); -extern void func_8016F8E4(void *a0); -extern void func_8016F95C(void *a0); -extern void func_8016F920(u8 *a0); -extern s32 func_80171CC4(void *a0, void *a1); -extern s32 func_80171D1C(void *a0, void *a1, s32 a2); -extern u16 D_8011F73E; -extern void (*D_80190688[])(void); -extern void func_8016F9C4(void *a0); -extern void func_80171B44(s32 *a0); -extern void func_8016FA44(s32 a0); -extern void func_8016FA00(s32 a0); -extern s32 func_80171C64(s32 a0, s32 a1); -extern void (*D_80190690[])(void); -extern void func_8016FA84(void *a0); -extern void func_8016FB10(void *a0); -extern void func_8016FAC0(u8 *a0); -extern void func_8016FB50(void *a0); -extern void (*D_8019069C[])(void); -extern void func_8016FB7C(void *a0); -extern void func_8016FC24(); -extern void func_8016FBB8(s32 a0); -extern s32 func_80171B4C(s32 a0, s32 a1); -extern void func_8016FC24(s32 a0); -extern void func_8016FC64(void *a0); -extern void (*D_801906A8[])(void); -extern void func_8016FC90(void *a0); -extern void func_8016FD08(u8 *a0); -extern void func_8016FCCC(u8 *a0); -extern s32 func_80172658(s32 *a0); -extern void func_8016FD08(u8 *s0); -extern void func_8016FD7C(s32 *a0); -extern void (*D_801906B4[])(void); -extern void func_8016FDB4(void *a0); -extern void func_8016FE2C(u8 *a0); -extern void func_8016FDF0(u8 *a0); -extern void func_8016FE2C(u8 * a0); -extern s32 func_8016FE78(s32 *a0); -extern s32 func_80172664(s32 *a0); -extern void func_8016FED0(s32 *a0); -extern void (*D_801906C4[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_801906D4[])(void); -extern void func_8016FFDC(void *a0); -extern void func_80170068(u8 *a0); -extern void func_80170018(u8 *a0); -extern void func_801700B8(u8 *a0); -extern void func_80170100(u8 *a0); -extern void (*D_801906DC[])(void); -extern void func_80170150(void *a0); -extern void func_801701C8(u8 *a0); -extern void func_8017018C(u8 *a0); -extern void func_801701C8(u8 * a0); -extern void (*D_801906E4[])(void); -extern void func_80170240(void *a0); -extern void func_801702B8(s32 a0); -extern void func_8017027C(u8 *a0); -extern s16 func_80171AB0(s32 a0, void *a1); -extern void (*D_801906EC[])(void); -extern void func_801702FC(void *a0); -extern void func_80170374(u8 *a0); -extern void func_80170338(u8 *a0); -extern s32 func_8014C168(s32 *a0, s32 a1); -extern void func_80170374(u8 * a0); -extern void (*D_801906F4[])(void); -extern void func_801703E0(void *a0); -extern void func_8017044C(u8 *a0); -extern void func_8017041C(u8 *a0); -extern void func_8017044C(u8 * a0); -extern void (*D_801906FC[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_80190704[])(void); -extern void func_80170548(void *a0); -extern void func_801705C0(u8 *a0); -extern void func_80170584(u8 *a0); -extern void func_801705C0(u8 * a0); -extern void (*D_8019070C[])(void); -extern void func_801705F8(void *a0); -extern void func_80170670(void *a0); -extern void func_80170634(u8 *a0); -extern void func_8012A568(void (*a0)(void)); -extern void (*D_80190714[])(void); -extern void func_801706AC(void *a0); -extern void func_80170718(void *a0); -extern void func_801706E8(u8 *a0); -extern void func_80129FF4(void); -extern void (*D_8019071C[])(void); -extern void func_80170748(void *a0); -extern void func_801707D4(void *a0); -extern void func_80170784(u8 *a0); -extern s32 func_80174ED4(void); -extern void (*D_80190724[])(void); -extern void func_80170810(void *a0); -extern void func_801708B0(void *a0); -extern u8 D_800D5DA8; -extern void func_8017084C(s32 a0); -extern u8 D_800D5A34[]; -extern void func_80170AD8(void *a0); -extern void func_80171904(s32 a0); -extern void func_80170B48(int a0); -extern void func_80170928(void); -extern u8 D_800D59EC[]; -extern void func_80170970(void); -extern u8 D_800D599C[]; -extern void func_801709B8(void); -extern u8 D_800D5934[]; -extern void func_80170A00(void); -extern void func_80170A48(void); -extern u8 D_800D5DC0[]; -extern void func_80170A90(void); -extern void (*D_8019072C[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_80190734[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8019073C[])(void); -extern void func_80170C74(void *a0); -extern s32 func_8017197C(u8 *a0); -extern void func_80170CF0(void *a0); -extern void func_80170CB0(u8 *a0); -extern void (*D_80190744[])(void); -extern void func_80170D68(void *a0); -extern void func_80170DE0(u8 *a0); -extern void func_80170DA4(u8 *a0); -extern s32 D_8011F73C; -extern s32 D_8011F740; -extern void func_801718AC(void *a0); -extern void func_80170DE0(u8 * _arg0); -extern void (*D_8019074C[])(void); -extern void func_80170E34(void *a0); -extern void func_80170EAC(u8 *a0); -extern void func_80170E70(u8 *a0); -extern int func_800D0F8C(int a0); -extern void func_80170EAC(u8 * _arg0); -extern void (*D_80190754[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8019075C[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_80190764[])(void); -extern void func_80171064(void *a0); -extern void func_801710DC(u8 *a0); -extern void func_801710A0(u8 *a0); -extern u16 D_8011F73A; -extern void func_801710DC(u8 * arg0); -extern void (*D_8019076C[])(void); -extern void func_80171120(void *a0); -extern void func_8017118C(u8 *a0); -extern void func_8017115C(u8 *a0); -extern void func_80142454(s32 a0); -extern void func_8017118C(u8 * a0); -extern void (*D_80190774[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8019077C[])(void); -extern void func_80171260(void *a0); -extern s32 func_80012F74(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80171384(void *a0); -extern void (*D_80190784[])(void); -extern void func_801714E4(void *a0); -extern void func_8017162C(void *a0); -extern void func_80171520(s32 a0); -extern s32 func_801716AC(s32 a0, void *a1, s32 *a2); -extern s32 func_80012FC8(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_800A5E94; -extern u8 D_800A5E95; -extern u8 D_800A5E96; -extern s32 func_801716AC(s32 a0, void * a1, s32 * a2); -extern int func_800D0FE0(int a0); -extern void func_801717A0(void *a0); -extern void func_8013E588(void *a0); -extern void func_801717F4(void *a0); -extern void func_80171824(void *a0); -extern void func_80171854(void *a0); -extern void func_80171884(void); -extern void func_80171A1C(u8 *a0); -extern void func_80171928(void * a0); -extern void func_8017196C(s32 *a0, s8 a1); -extern void func_80171A04(s32 *a0); -extern void func_80171A10(s32 *a0); -extern void func_80171A34(s32 *a0, s8 a1); -extern s32 func_80171A44(u8 *a0); -extern s32 func_80171A58(u8 *a0); -extern s32 func_80171A6C(u8 *a0); -extern void func_80171A80(s32 *a0, s32 a1); -extern s32 func_80171A88(s32 a0); -extern s16 func_80171AB0(s32 param_1, void * _arg1); -extern void func_80171B10(void *a0); -extern void func_80171EC8(s32 a0); -extern s32 func_80171C64(s32 param_1, s32 param_2); -extern s32 func_80171D78(s32 a0, s32 a1); -extern int func_8017250C(short *a0, short *a1); -extern s32 func_80171CC4(void * a0, void * a1); -extern s32 func_80171FFC(short *a0, short *a1, s32 a2); -extern s32 func_80171D1C(void * a0, void * a1, s32 a2); -extern s32 func_8017248C(s32 a0, s32 a1); -extern s32 func_80171E08(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_80047948(s32 a0); -extern s32 func_8004787C(s32 a0); -extern void func_80172170(s32 a0, s32 a1); -extern s32 func_8017209C(void *arg0, void *arg1, s32 arg2, s32 arg3); -extern void func_801722CC(s32 *a0); -extern void func_80172304(s32 *a0); -extern void func_80172310(u8 *a0); -extern void func_801723C4(s32 param_1, s32 param_2); -extern void func_80161C24(s32, s32); -extern void func_80172414(s32 a0); -extern s32 func_801724EC(s32 a0); -extern s32 func_8017248C(s32 arg0, s32 arg1); -extern s32 func_80013450(s32); -extern s32 func_80172560(u8 *a0, u8 *a1); -extern s32 func_8017261C(u8 *a0); -extern s32 func_80172644(u8 *a0); -extern s32 func_80172670(s32 *a0); -extern s32 func_80172688(s32 *a0); -extern s32 func_80172694(s32 *a0); -extern s32 func_801726A0(s32 *a0); -extern s32 func_801726AC(s32 *a0); -extern s32 func_801726B8(s32 *a0); -extern s32 func_801726C4(s32 *a0); -extern s32 func_80172760(s32 a0); -extern s32 func_80174650(s32); -extern void (*D_80127088)(void); -extern s32 D_801270BC; -extern s16 D_80126B0C; -extern void func_801726D0(void * _arg0); -extern void func_80172710(void); -extern void func_80174684(void *); -extern void func_80172738(void); -extern s16 D_80126B30; -extern s32 func_801727D0(void *a0); -extern void func_80172780(void *a0); -extern void func_80172844(u8 *a0); -extern void func_8017280C(u8 *a0); -extern void func_8017288C(void); -extern s32 func_801728E4(void *a0); -extern void func_80172894(void *a0); -extern void func_80172958(u8 *a0); -extern void func_80172920(u8 *a0); -extern s16 D_80126B36; -extern void func_80172958(u8 * a0); -extern void func_801729A8(void); -extern s32 func_801729F0(void *a0); -extern s16 D_80126B34; -extern s16 D_80126B32; -extern void func_801729B0(s32 a0); -extern void func_80172A8C(void *a0); -extern void func_80172A2C(int param_1); -extern void func_80172ACC(u8 *a0); -extern void func_80172B0C(void); -extern s32 func_80172B44(void *a0); -extern void func_80172B14(s16 a0); -extern s32 D_801150F8; -extern void func_80172BC8(void *a0); -extern void func_80172B80(u8 *a0); -extern void func_80172C48(void); -extern void (*D_801907C8[])(void); -extern void func_80172CA0(void *a0); -extern void func_80172D14(u8 *a0); -extern void func_80172CDC(u8 *a0); -extern void func_80172D14(u8 * a0); -extern void func_80172D60(void); -extern s32 D_80127508; -extern s32 func_80172DAC(void *a0); -extern void func_80172D68(s32 a0); -extern void func_80172E20(u8 *a0); -extern void func_80172DE8(u8 *a0); -extern void func_80172E20(u8 * a0); -extern void func_80172E8C(void); -extern void func_8017303C(void *); -extern void func_80172E94(void); -extern void func_80172ED4(void); -extern void func_80172EFC(void); -extern void func_80172F24(void); -extern u8 D_800D47F4[]; -extern void func_80172F4C(void); -extern void func_80172F9C(void); -extern u8 D_800D5C6C[]; -extern void func_80172FEC(void); -extern s32 func_80173078(void *a0); -extern void func_8017303C(void * a0); -extern void func_801730FC(struct S801730FC *a0); -extern void func_801730B4(s32 a0); -extern void func_8017316C(void); -extern s32 func_8017319C(void *a0); -extern void func_80173174(void); -extern u8 D_800D5AA0[]; -extern void func_80173220(void *a0); -extern void func_801731D8(s32 *a0); -extern M2C_UNK D_8019078C; -extern void func_80173220(void * arg0); -extern void func_80173294(void); -extern void func_801732C4(); -extern void func_8017329C(void); -extern void func_801732C4(s32 *a0); -extern void func_8017331C(); -extern void func_801732F4(void); -extern void func_8017331C(s32 *a0); -extern void func_80173374(); -extern void func_8017334C(void); -extern void func_80173374(s32 *a0); -extern void func_801733A4(void); -extern void func_801733CC(s32 a0); -extern void func_801734BC(s32 a0, s32 a1); -extern s16 D_80126B3E; -extern void func_80173460(s32 a0, s32 a1); -extern void func_801734BC(s32 arg0, s32 _unused1); -extern void (*D_801907F8[])(void); -extern void func_80173544(void *a0); -extern void func_801735B8(u8 *a0); -extern void func_80173580(u8 *a0); -extern s16 D_80126B40; -extern void func_801735EC(void *a0); -extern void func_80173648(u8 *a0); -extern void func_801736A8(void); -extern s32 func_8014C118(void *a0, s32 a1, s32 a2); -extern s32 func_801736FC(void *a0); -extern void func_801736B0(s32 a0, s32 a1); -extern void func_80173770(u8 *a0); -extern void func_80173738(u8 *a0); -extern void func_801723C4(s32 a0, s32 a1); -extern void func_801737B0(void); -extern s32 func_801737E8(void *a0); -extern void func_801737B8(s16 a0); -extern void func_8017385C(u8 *a0); -extern void func_80173824(u8 *a0); -extern void func_801738D4(void); -extern s32 func_8017390C(void *a0); -extern void func_801738DC(s16 a0); -extern void func_80173980(u8 *a0); -extern void func_80173948(u8 *a0); -extern void func_801739D8(u8 *a0); -extern void func_80173A20(void); -extern s32 D_8012750C; -extern void func_80173A60(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80173A28(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void (*D_80190834[])(void); -extern void func_80173B4C(void *a0); -extern void func_80173BC0(u8 *a0); -extern void func_80173B88(u8 *a0); -extern void func_80173C64(u8 *a0); -extern void func_80173E1C(s32 a0); -extern s16 D_80126938; -extern s16 D_80126B3A; -extern void func_800D128C(s32, s32); -extern void func_80174158(s32 a0); -extern void func_8002A088(s32); -extern void func_8002A2D4(s32); -extern void func_8002A544(s32); -extern void func_8002A7B4(s32); -extern s32 func_80174188(s32 a0); -extern void func_801741A8(s32 a0); -extern s32 func_800D0EC4(void); -extern void func_800D0F0C(s32, s32); -extern void func_80145EE8(s32); -extern void func_80173EF8(void *param_1); -extern s32 func_8014BCEC(s32, s32); -extern void func_801741A8(s32 _arg0); -extern s16 D_80126B3C; -extern s16 D_8011F9C8; -extern void func_801741EC(u8 *a0); -extern void func_80174274(void); -extern s32 func_801742A4(void *a0); -extern void func_8017427C(void); -extern void func_80174318(u8 *a0); -extern void func_801742E0(u8 *a0); -extern void func_80174354(void); -extern s32 func_80174384(void *a0); -extern void func_8017435C(void); -extern void func_801743F0(u8 *a0); -extern void func_801743C0(u8 *a0); -extern void func_801743F0(u8 * a0); -extern void func_80174430(void); -extern s32 func_80174474(void *a0); -extern void func_80174438(s32 a0); -extern void func_801744E0(u8 *a0); -extern void func_801744B0(u8 *a0); -extern void func_80174524(void); -extern void func_80174554(); -extern void func_8017452C(void); -extern void func_80174554(s32 arg0); -extern void func_801745AC(); -extern void func_80174584(void); -extern void func_801745AC(s32 *a0); -extern void func_80174604(void); -extern void func_801745DC(void); -extern void func_80174630(void); -extern s32 func_80174650(s32 _arg0); -extern void func_80174674(void); -extern void func_801746A4(void); -extern s32 func_800CF8CC(void); -extern void func_80174714(void); -extern s32 func_80174754(void); -extern s16 func_80174764(void); -extern s16 func_80174774(void); -extern s32 func_801747CC(void *a0); -extern void func_80174784(void); -extern s32 func_801747AC(s32 a0); -extern s32 func_80174808(u8 *a0); -extern void func_8017481C(void); -extern s32 func_80174888(void *a0); -extern void func_80174824(void); -extern void func_8017484C(s32 a0); -extern void func_801748C4(s32 a0); -extern void func_801748E4(void); -extern void func_8012A018(s32 a, s32 b); -extern s32 func_8017496C(void *a0); -extern void func_801748EC(void); -extern s32 func_801749C8(); -extern s32 func_801749A8(s32 a0); -extern void func_80174BBC(void *a0); -extern void func_8012A0E0(void); -extern void func_80174BF4(void *a0); -extern void (*D_8019088C[])(); -extern void func_80174BF4(void * arg0); -extern s32 func_80174CB0(s32, s32); -extern s32 func_80174C60(s32 a0); -extern void func_80174C80(s32 a0); -extern s32 D_8012697C; -extern u16 D_80126980; -extern s32 func_80174F28(void *a0); -extern void func_80174E9C(s32 a0); -extern void func_80174EF0(s32 a0, s16 a1); -extern s32 func_80175014(u8 *a0, u8 *a1, s32 a2); -extern void func_80174F64(u8 *a0); -extern void func_80174FBC(u8 *a0); -extern s32 func_8017509C(u8 *a0, s32 a1, u8 *a2, u8 *a3); -extern void func_80175184(s32 *a0); -extern void func_80175114(s32 *a0); -extern void func_80175184(); -extern void func_80175150(s32 *a0); -extern void (*D_8019089C[])(void*); -extern s32 func_80175268(s32); -extern void func_80175184(s32* arg0); -extern s32 func_80175218(void *a0); -extern void func_801751D8(void *a0); -extern void (*D_801908A4[])(s32); -extern s32 func_80175218(void * param_1); -extern void func_801752BC(s32 *a0); -extern u8 D_8011F7A8; -extern u8 D_8011F7A9; -extern u8 D_8011F7AD; -extern u8 D_8011F7AE; -extern void func_80175414(s32 _arg0); -extern void func_80175494(void); -extern void (*D_80190A0C[])(); -extern s32 func_801758FC(void); -extern s32 func_80175820(void); -extern s32 func_801759D8(void); -extern void func_8017553C(s32 *param); -extern void func_801757A0(s32 a0); -extern short D_800B9A02; -extern void func_80175590(void *arg0); -extern s16 D_800B9A02; -extern void func_801757A0(s32); -extern void func_80175624(void *a0); -extern void func_801757E0(int); -extern void func_80175668(void); -extern void (*D_80190A18[])(); -extern void func_80175690(s32 *param); -extern void func_80175DA8(s32 a0); -extern void func_80175AB8(s32 a0); -extern void func_80176144(s32 a0); -extern void func_801756E4(s32 arg0); -extern void func_80175798(void); -extern void func_80176734(s32 a0); -extern void func_80176218(s32 a0); -extern void func_80176D00(s32 a0); -extern void func_801757E0(s32 a0); -extern s32 func_80178004(s32 a0, s32 a1, s32 a2); -extern u8 D_8011F7B1; -extern u16 D_8011F7B4; -extern u16 D_8011F7B6; -extern s16 D_8011F81E; -extern void *func_80177784(void *a0, s32 a1, s32 a2, s32 a3); -extern u32 func_801783D0(s32 a0, s32 a1); -extern void *func_801777BC(void *a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern u16 D_8011F82C; -extern u16 D_8011F82A; -extern u32 * func_80176D94(void *param_1, u32 param_2, s16 param_3_); -extern void func_801778A8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80176FF4(s32 a0); -extern u16 D_8011F830; -extern u16 D_8011F82E; -extern u32 * func_801770E0(void *param_1, u32 param_2, s16 param_3_); -extern void func_80177340(s32 a0); -extern u8 D_8011F837; -extern u8 D_8011F7F0; -extern u8 D_8011F7AB; -extern u32 * func_8017742C(u32 *param_1, s32 param_2, s32 param_3); -extern void func_801776EC(u8 *a0); -extern void * func_80177784(void *a0, s32 a1, s32 a2, s32 a3); -extern uint * func_80177EA4(uint *param_1, int param_2, uint param_3, int param_4); -extern void func_80177F84(s32 param_1, s32 param_2); -extern u32 * func_80178298(u32 *param_1, u8 *param_2, short param_3, short param_4); -extern M2C_UNK D_801E52AC; -extern void func_80178438(u16 *arg0); -extern void func_801787D4(void); -extern void func_8012A908(void); -extern void func_8017869C(s32 a0); -extern void func_80130D0C(s32 a0); -extern void func_8013E370(void); -extern s32 D_8011DB08; -extern void func_8017849C(void); -extern void func_8013E4B4(void); -extern s16 D_801270C4; -extern s32 D_801274D8; -extern s16 D_801270C2; -extern u8 D_801270C6; -extern u8 D_801270C7; -extern s32 D_801274DC; -extern s32 D_801274E0; -extern void func_80178608(void); -extern void func_80178744(s32 a0, s32 a1); -extern void func_80178840(); -extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern s32 func_801788B8(s32 arg0, s32 arg1); -extern s32 func_801789AC(s32 arg0); -extern s16 D_801E7AB0; -extern int func_80178970(void); -extern s32 func_80178B18(s32 param_1, s32 param_2); -extern s32 func_80178B70(s32 param_1, s32 param_2); -extern void func_80178BB8(s32 a0, s32 a1); -extern s32 func_80178BF8(); -extern s32 D_801E6898; -extern short D_801E7B24; -extern void func_80178CBC(s32 arg0, s32 arg1); -extern void func_80178D18(void); -extern s32 func_80178D40(s32 arg0, s32 arg1); -extern void func_80179B28(s32 a0); -extern void func_80179B74(u16 *p); -extern void func_80179D30(u16 *a0); -extern void func_80179D78(u16 *a0); -extern void func_80179B74(u16 *p); -extern void func_80179DCC(short a0); -extern void func_80179DF8(void); -extern void func_80179E1C(short a0); -extern void func_80179E48(s16 a0); -extern void func_80179E74(s16 a0); -extern void func_80179EA0(u16 *a0); -extern void func_80179B74(u16 *p); -extern void func_80179EE8(short a0); -extern void func_80179F14(s16 a0, s16 a1); -extern void func_80179F44(void); -extern void func_80179F6C(short a0); -extern void func_80179F98(u16 *a0); -extern void func_80179FEC(u16 *a0); -extern void func_8017A040(u16 *a0); -extern s32 D_801E6CC4; -extern void func_8017A094(s32 arg0); -extern void func_8017A0C4(s32 arg0); -extern void func_8017A0F4(void); -extern void func_8017A11C(void); -extern s32 D_801E6CEC; -extern void func_8017A144(s32 a0); -extern void func_8017A180(void); -extern void func_8017A1A8(void); -extern void func_8017A1D0(void); -extern void func_8017A1F8(void); -extern void func_8017A220(void); -extern void func_8017A248(void); -extern void func_8017A270(void); -extern void func_8017A298(void); -extern void func_8017A2C0(void); -extern void func_8017A2E8(void); -extern void func_8017A310(void); -extern void func_8017A338(void); -extern void func_8017A360(void); -extern void func_8017A388(void); -extern s16 D_801E6CA8; -extern s32 func_8017A3B0(void); -extern short D_801E6CE4; -extern short D_801E6CE0; -extern int func_800D0CA0(int); -extern int func_8001AAA0(void); -extern int func_800D0CE0(void); -extern int func_8017A3D8(void); -extern void func_80172310(u8*); -extern void func_80172780(void*); -extern void func_80172894(void*); -extern void func_801729B0(s32); -extern void func_80172B14(s16); -extern void func_80172C50(u16 *); -extern void func_80172D68(s32); -extern void func_801733FC(s16, u16 *); -extern void func_80173460(s32, s32); -extern void func_801734BC(s32, s32); -extern void func_801736B0(s32, s32); -extern void func_801737B8(s16); -extern void func_801738DC(s16); -extern void func_80173A28(s32, s32, s32, s32, s32, s32); -extern void func_80174438(s32); -extern void func_8017A4AC(void); -extern s32 func_8017AD0C(s32 arg0); -extern s32 func_8017AD0C(s32); -extern s32 func_8017ADE8(s32 a0); -extern s32 func_8017AE08(void); -/* ==== end §8b carried decl layer ==== */ - - -extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); -extern void func_8012B178(s32 a0, s32 a1); -extern void func_8012AD80(s32 a0); -extern s32 func_8012B030(u8 *a0); -extern s32 func_8012B744(void *a0, void *a1); -extern s32 func_8012BE98(s32 a0, u16 *a1); -extern s32 func_80012A60(s32 a0, s32 a1); - -extern s16 D_801E7A68; -extern s16 D_801E7A6A; -extern s16 D_801E7A74; - -void func_8017AE2C(s32 param_1) { - register s32 pv __asm__("$16") = param_1; - register s16 *g __asm__("$17") = &D_801E7A68; - - switch (g[0]) { - case 0: - default: - return; - case 1: - g[1] = (u16)g[1] - 1; - if (g[1] <= 0) { - *(u16 *)(*(s32 *)(pv + 0x20) + 0x12) = (u16)g[2]; - goto reset_both; - } - { - s32 r = func_8012B608(*(s16 *)(*(s32 *)(pv + 0x20) + 0x12), g[2], 6); - *(u16 *)(*(s32 *)(pv + 0x20) + 0x12) = - *(u16 *)(*(s32 *)(pv + 0x20) + 0x12) + r; - } - return; - case 2: - func_8012B178(pv, (s32)g[4] << 8); - func_8012AD80(pv); - *(u16 *)(pv + 0xA) -= 8; - func_8012B030((u8 *)pv); - break; - case 3: - if (g[1] != 0) { - if (g[5] != 0) { - void *p = (void *)(pv + 4); - if ((s16)func_80012A60(*(s16 *)(*(s32 *)(pv + 0x20) + 0x12), - (s16)func_8012B744(p, &g[6])) < 0x100) { - g[1] = 0; - } - *(s16 *)(*(s32 *)(pv + 0x20) + 0x12) = - func_8012B744(p, &D_801E7A74); - func_8012B178(pv, 0xFFFA0000); - func_8012AD80(pv); - *(u16 *)(pv + 0xA) -= 8; - func_8012B030((u8 *)pv); - /* &D_801E7A68+0xC == &D_801E7A74; distinct rtx defeats gcc's address-CSE - so BE98's arg rematerializes instead of sharing the store's reg (byte-gate). */ - if (func_8012BE98(pv, (u16 *)((s32)&D_801E7A68 + 0xC)) < 0x101) { - D_801E7A68 = 0; - D_801E7A6A = 0; - } - } - { - s32 t = func_8012B744((void *)(pv + 4), &g[6]); - s32 r = func_8012B608(*(s16 *)(*(s32 *)(pv + 0x20) + 0x12), t, g[3]); - *(u16 *)(*(s32 *)(pv + 0x20) + 0x12) = - *(u16 *)(*(s32 *)(pv + 0x20) + 0x12) + r; - } - g[1] = (u16)g[1] - 1; - if (g[1] > 0) { - return; - } - g[1] = 0; - return; - } - *(s16 *)(*(s32 *)(pv + 0x20) + 0x12) = - func_8012B744((void *)(pv + 4), &D_801E7A74); - func_8012B178(pv, 0xFFFA0000); - func_8012AD80(pv); - *(u16 *)(pv + 0xA) -= 8; - func_8012B030((u8 *)pv); - /* see note above: distinct rtx for the same address defeats address-CSE. */ - if (func_8012BE98(pv, (u16 *)((s32)&D_801E7A68 + 0xC)) < 0x101) { - D_801E7A68 = 0; - D_801E7A6A = 0; - } - return; - case 4: - func_8012AD80(pv); - } - g[1] = (u16)g[1] - 1; - if (g[1] > 0) { - return; - } -reset_both: - g[0] = 0; - g[1] = 0; - return; -} - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801E6D24; - extern s16 D_801E6D26; - extern s16 D_801E6D28; - extern s16 D_801E6D1C; - extern s16 D_801E6D1E; - extern s16 D_801E6D20; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801E6D24, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801E6D26, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801E6D28, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801E6D1C, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801E6D1E, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801E6D20, (s32)((s16)param_2)); -} - - - -extern s16 D_801E6CAC; -extern u16 D_801E6D2C; -extern u16 D_801E6D2E; -extern u16 D_801E6D30; -extern s16 D_801E7AB0; - -void func_8017B1D8(void) { - /* [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 u16 D_80126B5E; - extern u16 D_80126B66; - /* [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 u16 D_80126B62; - func_8012A418(); - D_801E7AB0 = 0; - D_801E6CAC = 0; - D_801E6D2C = D_80126B5E; - D_801E6D2E = D_80126B62; - D_801E6D30 = D_80126B66; -} - - -// @class: regalloc-order — simplified sibling of matched func_8017B614. -// @stuck: none. Block-moves are align-1 struct-assigns (u8[8]) -> emit_block_move -// (unaligned lwl/lwr/swl/swr), ZERO memcpy-symbol reference, so the TU's `extern memcpy` -// (which turned the old draft's memcpy into a CALL -> DIFF 64) can't drift this. -// $16 pin + in-place re-tie keeps param_2 in $a1 until the >=0xB branch, then $s0 for loads. - - -s32 func_8017B238(s32 param_1, s32 param_2) -{ - extern void func_8012F214(s32 a0, s32 a1, s32 a2); - extern s32 func_8017BE60(void *a0); - extern u8 D_80190B54[]; - extern s16 D_801E6D24; - extern s16 D_801E6D1C; - extern u8 D_8012694C; - - - u8 buf[16]; - - if (((u32)param_2) >= 0xB) { - register u8 *src __asm__("$16"); - __asm__ __volatile__("" : "=r"(src) : "0"((u8 *)((u32)param_2))); - *(Blk8_8017B238_8017B238 *)&buf[0] = *(Blk8_8017B238_8017B238 *)src; - *(Blk8_8017B238_8017B238 *)&buf[8] = *(Blk8_8017B238_8017B238 *)(src + 8); - } else { - s32 a1addr = (s32)&D_80190B54[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80190B54[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801E6D24; - s16 *p78C = &D_801E6D1C; - *(Blk8_8017B238_8017B238 *)p794 = *(Blk8_8017B238_8017B238 *)&buf[0]; - *(Blk8_8017B238_8017B238 *)p78C = *(Blk8_8017B238_8017B238 *)&buf[8]; - func_8012A018((s32)func_8017BE60, 0); - D_8012694C = 0; - D_801E7AB0 = 1; - D_801E6CAC = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - - /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ - /* 16-byte stride array element */ - - - -s32 func_8017B368(s32 param) -{ - extern void func_8017BA3C(s32 param_1, s32 param_2); - extern void func_8012F214(s32 a0, s32 a1, s32 a2); - extern SV4_8017B368 D_801E6CCC; - extern SV4_8017B368 D_801E6CD4; - extern s16 D_801E6D24; - extern s16 D_801E6D1C; - extern u16 D_80190B54; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801E6CCC; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801E6CD4; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_80190B54)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_80190B54)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801E6D24) = loc0; - (*(SV4_8017B368 *)&D_801E6D1C) = loc1; - D_801E7AB0 = 1; - D_801E6CAC = 0; -} - - - - - -s32 func_8017B490(s32 param) -{ - extern void func_8017BA3C(s32 param_1, s32 param_2); - extern void func_8012F214(s32 a0, s32 a1, s32 a2); - extern SV4_8017B368 D_801E6CCC; - extern SV4_8017B368 D_801E6CD4; - extern s16 D_801E6D24; - extern s16 D_801E6D1C; - extern u16 D_80190B54; - extern s16 D_801E6CAC; - extern s16 D_801E7AB0; - extern s32 D_80126984; - extern s32 D_80126988; - extern s32 D_8012698C; - extern s32 D_80126990; - extern s32 D_80126994; - extern s32 D_80126998; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801E6CCC; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801E6CD4; - } else { - s32 ax = (s32)&((Pair16 *)&D_80190B54)[n].x; - s32 ay = (s32)&((Pair16 *)&D_80190B54)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801E6D24) = loc0; - (*(SV4_8017B368 *)&D_801E6D1C) = loc1; - D_801E7AB0 = 1; - D_801E6CAC = 0x1E; - D_80126990 = (*(SV4_8017B368 *)&D_801E6D24).a; - D_80126994 = (*(SV4_8017B368 *)&D_801E6D24).b; - D_80126998 = (*(SV4_8017B368 *)&D_801E6D24).c; - D_80126984 = (*(SV4_8017B368 *)&D_801E6D1C).a; - D_80126988 = (*(SV4_8017B368 *)&D_801E6D1C).b; - D_8012698C = (*(SV4_8017B368 *)&D_801E6D1C).c; -} - - -// @class: regalloc-order + T1 memcpy-builtin→call re-crack -// @stuck: 0 (iso). Register lever = $16 pin + in-place re-tie on the memcpy-branch src (keeps -// param_2 in $a1 until the branch, then $s0 for the loads). Block-moves are align-1 struct-assigns -// (u8[8]) so they lower via emit_block_move (movstrsi/move_by_pieces) with ZERO memcpy-symbol -// reference — TU-independent, so the sibling TU's `extern memcpy` (which disables the builtin and -// turned the old inlined block-move into a CALL) can no longer drift this. - - - - -s32 func_8017B614(s32 param_1, s32 param_2) -{ - extern void func_8012F214(s32 a0, s32 a1, s32 a2); - extern void func_80129CF8(void); - extern s32 func_8017BE60(void *a0); - extern u8 D_80190B54[]; - extern s16 D_801E6D24; - extern s16 D_801E6D26; - extern s16 D_801E6D28; - extern s16 D_801E6D1C; - extern s16 D_801E6D1E; - extern s16 D_801E6D20; - extern u8 D_8012694C; - extern s32 D_80126998; - extern s32 D_80126984; - extern s32 D_80126988; - extern s32 D_8012698C; - - u8 buf[16]; - - if (((u32)param_2) >= 0xB) { - register u8 *src __asm__("$16"); - __asm__ __volatile__("" : "=r"(src) : "0"((u8 *)((u32)param_2))); - *(Blk8_8017B614 *)&buf[0] = *(Blk8_8017B614 *)src; - *(Blk8_8017B614 *)&buf[8] = *(Blk8_8017B614 *)(src + 8); - } else { - s32 a1addr = (s32)&D_80190B54[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_80190B54[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801E6D24; - s16 *p78C = &D_801E6D1C; - *(Blk8_8017B614 *)p794 = *(Blk8_8017B614 *)&buf[0]; - *(Blk8_8017B614 *)p78C = *(Blk8_8017B614 *)&buf[8]; - ((void(*)(s32, s32))func_8012A018)((s32)func_8017BE60, 0); - { - s32 v794, v796, v798, v78C, v78E, v790; - D_8012694C = 0; - v794 = *p794; - v796 = D_801E6D26; - v798 = D_801E6D28; - v78C = *p78C; - v78E = D_801E6D1E; - v790 = D_801E6D20; - __asm__ __volatile__(""); - D_801E7AB0 = 1; - D_801E6CAC = 0x1E; - D_80126990 = v794; - D_80126994 = v796; - D_80126998 = v798; - D_80126984 = v78C; - D_80126988 = v78E; - D_8012698C = v790; - } - func_80129CF8(); - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH - -extern s32 D_80114F30; -extern s32 D_80114F34; -extern s32 D_80114F38; -extern s32 D_80114F24; -extern s32 D_80114F28; -extern s32 D_80114F2C; - -extern u8 D_8012694C; -extern s16 D_801E6CAC; -extern s16 D_801E6D24; -extern s16 D_801E6D26; -extern s16 D_801E6D28; -extern s16 D_801E6D1C; -extern s16 D_801E6D1E; -extern s16 D_801E6D20; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801E6CAC = 0; - D_801E6D24 = (s16) D_80114F30; - D_801E6D26 = (s16) D_80114F34; - D_801E6D28 = (s16) D_80114F38; - D_801E6D1C = (s16) D_80114F24; - D_801E6D1E = (s16) D_80114F28; - D_801E6D20 = (s16) D_80114F2C; -} - - - - -extern s16 D_801E6D3C; -extern s16 D_801E6D3E; -extern s16 D_801E6D40; -extern s16 D_801E6D44; -extern s16 D_801E6D46; -extern s16 D_801E6D48; - -void func_8017B824(void) { - /* [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_801151D4; - D_801E6D3C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801E6D3E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801E6D40 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801E6D44 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801E6D46 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801E6D48 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801E6D3C; -extern s16 D_801E6D3E; -extern s16 D_801E6D40; -extern s16 D_801E6D44; -extern s16 D_801E6D46; -extern s16 D_801E6D48; - -extern s32 D_80114F30; -extern s32 D_80114F34; -extern s32 D_80114F38; -extern s32 D_80114F24; -extern s32 D_80114F28; -extern s32 D_80114F2C; - -void func_8017B880(void) -{ - D_80114F30 = D_801E6D3C; - D_80114F34 = D_801E6D3E; - D_80114F38 = D_801E6D40; - D_80114F24 = D_801E6D44; - D_80114F28 = D_801E6D46; - D_80114F2C = D_801E6D48; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801E6D24), src[8..15] -> (*(S8_8017B8E8 *)&D_801E6D1C) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801E6D24) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801E6D1C) = ((S8_8017B8E8 *)src)[1]; -} - - - - -// @class: struct -// @stuck: none — MATCH (63 ins) - -extern u16 D_801E6D2C; -extern u16 D_801E6D2E; -extern u16 D_801E6D30; - -extern s32 D_80114F30; -extern s32 D_80114F34; -extern s32 D_80114F38; -extern s32 D_80114F24; -extern s32 D_80114F28; -extern s32 D_80114F2C; - -extern u8 D_8012694C; -extern s16 D_801E6CAC; -extern short D_801E6D34; -extern short D_801E6D36; -extern short D_801E6D38; -extern s16 D_801E6D24; -extern s16 D_801E6D26; -extern s16 D_801E6D28; -extern s16 D_801E6D1C; -extern s16 D_801E6D1E; -extern s16 D_801E6D20; - -void func_8017B940(void) -{ - /* [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 u16 D_80126B5E; - extern u16 D_80126B66; - /* [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 u16 D_80126B62; - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801E6D2C); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801E6D2E); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801E6D30); - (*(s16 *)&D_801E6D34) = buf[0]; - (*(s16 *)&D_801E6D36) = buf[1]; - (*(s16 *)&D_801E6D38) = buf[2]; - D_801E6D24 = D_80114F30 + buf[0]; - D_801E6CAC = 0; - D_801E6D26 = D_80114F34 + buf[1]; - D_801E6D28 = D_80114F38 + buf[2]; - D_801E6D1C = D_80114F24 + buf[0]; - D_801E6D1E = D_80114F28 + buf[1]; - D_801E6D20 = D_80114F2C + buf[2]; -} - - - -// @class: struct -// @stuck: none — MATCH (62 ins) - -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void RotTransSV(void *a0, void *a1, void *a2); - -/* short-only (align 2) struct -> the 8-byte struct copy emits lwl/lwr/swl/swr */ - -/* PSX MATRIX_L48: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801E6CCC; -extern SV4 D_801E6CD4; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX_L48, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801E6CD4) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801E6CCC = svec; - - v0.a = -*(s16 *)(param_2 + 0xc); - v0.b = *(u16 *)(param_2 + 8); - v0.c = 0; - v1.a = 0; - v1.b = 0; - v1.c = -*(s16 *)(param_2 + 0xa); - ((void (*)(void *, void *))func_80049CAC)(&v0, &mtx); - - mtx.t[0] = (s32)svec.a; - mtx.t[1] = (s32)svec.b; - mtx.t[2] = (s32)svec.c; - func_8004914C(&mtx); - func_800491AC(&mtx); - - RotTransSV(&v1, &buf1, &buf2); - D_801E6CD4 = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX_L48, t[] at sp+0x2c */ - SV4_8017BB34 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4_8017BB34 svec; /* sp+0x40 */ - SV4_8017BB34 buf1; /* sp+0x48 : RotTransSV arg1 (-> (*(SV4_8017BB34*)&D_801E6CD4)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801E6CCC) = svec; - - v0.a = -*(s16 *)(param_2 + 0xc); - v0.b = *(u16 *)(param_2 + 8); - v0.c = 0; - v1.a = 0; - v1.b = 0; - v1.c = -*(s16 *)(param_2 + 0xa); - ((void (*)(void *, void *))func_80049CAC)(&v0, &mtx); - - mtx.t[0] = (s32)svec.a; - mtx.t[1] = (s32)svec.b; - mtx.t[2] = (s32)svec.c; - func_8004914C(&mtx); - func_800491AC(&mtx); - - RotTransSV(&v1, &buf1, &buf2); - (*(SV4_8017BB34*)&D_801E6CD4) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801E6CF4[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801E6CF4; - do { - if (*p != (void (*)(int))0) { - (*p)(param_1); - } - i = i + 1; - p = p + 1; - } while (i < 10); - return; -} - - - - -// @class: plumbing -// @stuck: none — MATCH (expected); short-typed global increment + signed compare, store-2 on overflow - -extern void func_8017B0E4(int, int); -extern s16 D_801E6CAC; -extern s16 D_801E7AB0; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801E6CAC = D_801E6CAC + 1; - if (D_801E6CAC >= 0x1F) { - D_801E7AB0 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801E6CAC; -extern s16 D_801E7AB0; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801E6CAC = D_801E6CAC + 1; - if (0x18 < D_801E6CAC) { - func_8012A4BC(); - D_801E7AB0 = 0; - } - return; -} - - - - -// @class: regalloc-order -// @stuck: none — MATCH (branch-polarity invert: fn-ptr non-zero call is the fall-through arm) - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -extern s16 D_801E6CAC; -extern void (*D_801E6CF0)(void); -extern short D_801E6D34; -extern short D_801E6D36; -extern short D_801E6D38; -extern s16 D_801E7AB0; - -extern s32 D_80114F24; -extern s32 D_80114F28; -extern s32 D_80114F2C; -extern s32 D_80114F30; -extern s32 D_80114F34; -extern s32 D_80114F38; - -void func_8017BD50(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801E6CAC = D_801E6CAC + 1; - if (D_801E6CAC >= 0x19) { - if (D_801E6CF0 != 0) { - (*D_801E6CF0)(); - } else { - D_80114F30 = D_80114F30 + D_801E6D34; - D_80114F34 = D_80114F34 + D_801E6D36; - D_80114F38 = D_80114F38 + D_801E6D38; - D_80114F24 = D_80114F24 + D_801E6D34; - D_80114F28 = D_80114F28 + D_801E6D36; - D_80114F2C = D_80114F2C + D_801E6D38; - func_8012A4BC(); - } - D_801E7AB0 = 0; - } -} - - - -extern void (*D_80190BF4[])(void); - -void func_8017BE60(void *a0) { - D_80190BF4[*(u8 *)((s32)a0 + 0x4)](); -} - - - -extern void (*D_80190C94[])(void); - -void func_8017BE9C(void *a0) { - D_80190C94[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_80190C9C[])(void); - -void func_8017BED8(void *a0) { - D_80190C9C[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_80190CA4[])(void); - -void func_8017BF14(void *a0) { - D_80190CA4[*(u16 *)((s32)a0 + 0x2)](); -} - - - - -/* Decl layer conformed to the TU (ov_SC03_001_jr_8017AE2C.c): - * - func_8012913C: the TU already declares `extern u8 *func_8012913C(s32 a0);` - * at line 7121 -- BELOW this splice point (3327), which is why cc1 reported the - * conflict at 7181. Copied verbatim; the s32 use is pushed to a cast at the call - * site, matching the idiom the TU itself uses at line 7145. Byte-neutral. - * - func_8012C750: not declared in this TU; conformed anyway to the canonical - * engine_core.h form (`s32 func_8012C750(s32 a0)`, DEFINE_func_8012C750) with the - * pointer arg cast at the call site, so a future macro expansion cannot collide. - */ -extern u8 *func_8012913C(s32 a0); -extern s32 func_8012C750(s32 a0); - - -/* $16-$19 are pinned: without them gcc's strength reduction splits the `s1` store - * base into TWO induction variables (base+0x18 with offsets -4/0, plus base+0x1C), - * burning an extra callee-saved reg and growing the frame to 0x48. s4 must stay - * UNPINNED -- a pin collapses `$v0 = $s4 + 1; $s4 = $v0` into `addiu $s4,$s4,1` and - * then sign-extends from $s4, losing the target's `addu $s4,$v0,$zero` + sll/sra on - * $v0 at the loop join. It still lands in $20 naturally once $16-$19 are taken. - */ -void func_8017BF50(s32 a0) -{ - - extern u8 D_801E6D50[]; - register s32 s3 asm("$19"); - register s16 *s0 asm("$16"); - register s32 *s1 asm("$17"); - register u8 *s2 asm("$18"); - s16 s4; - Buf8017BF50_8017BF50 buf; - - s3 = a0; - s0 = *(s16 **)(s3 + 0xDC); - if (s0 != 0) { - s2 = D_801E6D50; - s4 = 0; - s1 = (s32 *)(D_801E6D50 + 0x1C); - buf.unk06 = 0x158; - buf.unk0A = 0; - buf.unk08 = 0; - buf.unk0E = 0; - buf.unk10 = 0; - do { - u16 v1; - - v1 = (u16)*s0; - if ((v1 & 0xFFFF) == 0x8000) break; - - if (*(s16 *)(s3 + 0x70) != 0) { - buf.unk00 = *s0++; - buf.unk02 = *s0++; - buf.unk04 = *s0++; - if (((s32 (*)(void *))func_8012C750)(&buf) == 0) break; - } else { - s32 v3; - - v3 = ((s32 (*)(s32))func_8012913C)(0x11); - if (v3 == 0) break; - s1[-2] = *s0++; - s1[-1] = *s0++; - s1[0] = *s0++; - s1 += 8; - *(u8 **)(v3 + 0x30) = s2; - s2 += 0x20; - } - s4++; - } while (s4 < 0x10); - } - *(u16 *)(s3 + 2) += 1; -} - - - - -extern void func_800D23D0(void *a0); - -void func_8017C094(void) { - - extern s32 D_801151D4; - extern s16 D_801E6F50; - s16 diffs[3]; - s32 *ptr = (s32 *)D_801151D4; - - diffs[0] = (s16)(*(s32 *)((u8 *)ptr + 0x68) - *(s32 *)((u8 *)ptr + 0x5C)); - diffs[1] = (s16)(*(s32 *)((u8 *)ptr + 0x6C) - *(s32 *)((u8 *)ptr + 0x60)); - diffs[2] = (s16)(*(s32 *)((u8 *)ptr + 0x70) - *(s32 *)((u8 *)ptr + 0x64)); - - func_800D23D0(diffs); - - D_801E6F50 = (u16)diffs[1]; -} - - - -extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); - -void func_8017C100(s32 param_1) -{ - - extern u8 D_80190C00[]; - s32 s0; - - s0 = *(s32 *)(param_1 + 0x20); - if (*(s16 *)(param_1 + 0x2e) == 0) { - func_8001CB6C((u8 *)s0, (s32)D_80190C00, 0x3c0, 0xa0); - } else { - func_8001CC3C(s0, (s32)D_80190C00, 0x3c0, 0xa0); - } - *(u8 *)(s0 + 0x27) = 0xfc; - *(u16 *)(s0 + 0x1a) = 0x3c00; - *(u16 *)(s0 + 0x18) = 0x3c00; - *(u32 *)(s0 + 0x4) |= 0x01000000; - *(u32 *)(s0 + 0x34) = *(u32 *)(param_1 + 0x30); - (*(u16 *)(param_1 + 0x2))++; -} - - - -extern void RotMatrixYXZ(void *a0, void *a1); - - -void func_8017C1AC(s32 param_1) -{ - - extern s16 D_801E6F50; - SV4 sv4; - s32 s0; - s32 a1; - - s0 = *(s32 *)(param_1 + 0x20); - sv4.a = -0x20; - sv4.c = 0; - sv4.b = D_801E6F50; - a1 = *(s32 *)(s0 + 0x34); - RotMatrixYXZ(&sv4, a1); -} - - - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C810(s32 a0, s32 a1); -extern void func_8012A828(s32*, s32); -extern void func_8012B260(u8 *a0); - - -void func_8017C1EC(s32 a0) -{ - - extern u8 D_8018D540[]; - extern u8 D_80190C7C[]; - extern u8 D_80190C84[]; - s32 s0; - - s0 = ((s32 (*)(void))func_8012C1B8)(); - if (s0 == 0) { - ((void (*)(s32))func_8012CAE4)(a0); - return; - } - - func_8001C810(s0, (s32)D_80190C7C); - ((void (*)(s32, s32))func_8012A828)(a0, (s32)D_8018D540); - - *(s32 *)(a0 + 0x20) = s0; - *(s16 *)(s0 + 0x1A) = 0x3C00; - *(s16 *)(s0 + 0x18) = 0x3C00; - *(s16 *)(s0 + 0x10) = -0x20; - *(s16 *)(s0 + 0x12) = -1; - *(s32 *)(s0 + 0x4) |= 0x8040; - *(u16 *)(s0 + 0x2C) |= 0x10; - - ((void (*)(s32))func_8012B260)(a0); - - *(s32 *)(a0 + 0x58) = (s32)D_80190C84; - *(u16 *)(a0 + 0x2) += 1; -} - - - -extern void func_80049CAC(s32 a0, s32 a1); - -void func_8017C2B0(s32 a0) -{ - - extern u16 D_80126B62; - extern s16 D_801E6F50; - s32 unused[2]; /* dead 8-byte local — frame 0x28, not 0x20 */ - s32 s0; - - s0 = *(s32 *)(a0 + 0x20); - - if ((s32)*(s16 *)(a0 + 0xA) - (s32)(*(s16 *)&D_80126B62) >= 0x40) { - *(s16 *)(a0 + 0x5C) = 0x40; - } else { - *(s16 *)(a0 + 0x5C) = 0x800; - } - - if (*(s16 *)(s0 + 0x12) != D_801E6F50) { - *(s16 *)(s0 + 0x12) = D_801E6F50; - func_80049CAC(*(s32 *)(a0 + 0x20) + 0x10, *(s32 *)(a0 + 0x20) + 0x34); - *(u16 *)(s0 + 0x2C) |= 0x11; - } -} - - - -extern void (*D_80190CC4[])(void); - -void func_8017C338(void *a0) { - D_80190CC4[*(u16 *)((s32)a0 + 0x2)](); -} - - - - -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_800D20C0(void *a0, void *a1, s32 a2); -extern void func_800D23D0(void *a0); -extern s32 func_800D222C(s32 a0, void *a1, s32 a2); -extern s32 func_8001CF30(void *a0); -extern void func_80146C3C(void); - - -void func_8017C374(s32 param_1) { - - extern u8 D_80190CAC; - s32 obj = *(s32 *)(param_1 + 0x34); - Work8017 w; - short i; - s32 e; - s32 node; - - func_80146A6C(0x11, (void *)param_1, *(s16 *)(param_1 + 6), - (s16)(*(u16 *)(param_1 + 0xA) - 0x10), - *(s16 *)(param_1 + 0xE), 0, 0); - - w.x = *(u16 *)(param_1 + 6); - w.y = *(u16 *)(param_1 + 0xA); - w.z = *(u16 *)(param_1 + 0xE); - func_800D20C0(&w.x, &w.vx, 10); - *(s16 *)(param_1 + 6) = w.x; - *(s16 *)(param_1 + 0xE) = w.z; - w.vy = 0; - func_800D23D0(&w.vx); - - i = 0; - do { - e = func_80146A6C(0x12, (void *)param_1, *(s16 *)(obj + 6), - *(s16 *)(obj + 0xA), *(s16 *)(obj + 0xE), i, 0); - if (e != 0) { - *(s16 *)(e + 0x12) = w.vx; - *(s16 *)(e + 0x16) = w.vy; - *(s16 *)(e + 0x1A) = 0; - } - i = i + 1; - } while (i < 3); - - node = func_800D222C(param_1, &D_80190CAC, 0xFD); - if (node != 0) { - *(s32 *)(param_1 + 0x20) = node; - *(u32 *)(node + 4) = *(u32 *)(node + 4) | 0x5D000100; - ((void (*)(void *))func_8001CF30)((void *)node); - *(s16 *)(node + 0x18) = 0x4000; - *(s16 *)(node + 0x1A) = 0x200; - *(s16 *)(param_1 + 0x16) = 0x200; - *(s16 *)(param_1 + 0x14) = 0x1000; - *(s16 *)(node + 0x28) = 0x240; - *(s16 *)(node + 0x2A) = 0x180; - *(s16 *)(node + 0x10) = w.vx; - *(s16 *)(node + 0x12) = w.vy; - *(s16 *)(param_1 + 2) = *(s16 *)(param_1 + 2) + 1; - } else { - ((void (*)(s32))func_80146C3C)(param_1); - } -} - - -extern void func_80146C3C(void); -void func_8017C538(u8 *p) { - u8 *q; - s32 t; - s32 b; - q = *(u8 **)(p + 0x20); - *(u16 *)(p + 0x16) = *(u16 *)(p + 0x16) + *(u16 *)(p + 0x14); - if (*(s32 *)(p + 0x1C) < 8) { - *(s16 *)(p + 0x14) = *(u16 *)(p + 0x14) - 0x200; - } else { - *(s16 *)(p + 0x14) = *(u16 *)(p + 0x14) - 0x51; - } - b = *(u8 *)(q + 0x26) - 2; - *(s16 *)(q + 0x1A) = *(u16 *)(p + 0x16); - *(s8 *)(q + 0x26) = b; - *(s8 *)(q + 0x25) = b; - *(s8 *)(q + 0x24) = b; - t = *(s32 *)(p + 0x1C); - *(s32 *)(p + 0x1C) = t + 1; - if (t >= 0x1E) { - ((void (*)(u8 *))func_80146C3C)(p); - } -} - - -DEFINE_func_8017C5CC() /* dedup: shared engine-core @0x8017C5CC (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH (41 ins, relocation-masked); frame needed a 0x30 address-taken local - -extern s32 func_800D222C(s32 a0, void *a1, s32 a2); -extern s32 func_8001CF30(void *a0); -extern void func_80146C3C(void); -extern u8 D_80190CB8; - -void func_8017C608(s32 a0) { - s32 r; - s32 buf[12]; - - (void)&buf; - r = func_800D222C(a0, &D_80190CB8, 0x18); - if (r != 0) { - *(s32 *)(a0 + 0x20) = r; - *(u32 *)(r + 4) = *(u32 *)(r + 4) | 0x5C000140; - func_8001CF30((void *)r); - *(s16 *)(r + 0x10) = 0x400; - *(s16 *)(r + 0x18) = 0x3000; - *(s16 *)(r + 0x1A) = 0x3000; - *(s16 *)(r + 0x28) = 0x248; - *(s16 *)(r + 0x2A) = 0x180; - *(s16 *)(a0 + 2) = *(s16 *)(a0 + 2) + 1; - } else { - ((void (*)(s32))func_80146C3C)(a0); - } -} - - -extern void func_80146C3C(void); -void func_8017C6AC(int a0) { - int v0 = *(int *)(a0 + 0x1C); - register unsigned char *p __asm__("$5") = *(unsigned char **)(a0 + 0x20); - *(int *)(a0 + 0x1C) = v0 + 1; - if (v0 >= 0x1F) { - func_80146C3C(); - } else { - unsigned short hv = *(unsigned short *)(p + 0x1A) + 0x1E0; - signed char bv = *(unsigned char *)(p + 0x26) - 3; - *(unsigned short *)(p + 0x1A) = hv; - *(unsigned short *)(p + 0x18) = hv; - *(signed char *)(p + 0x26) = bv; - *(signed char *)(p + 0x25) = bv; - *(signed char *)(p + 0x24) = bv; - } -} - - -#define gte_ldv0(r0) __asm__ volatile ( \ - "lwc2 $0, 0( %0 );" \ - "lwc2 $1, 4( %0 )" \ - : \ - : "r"( r0 ) ) -#define gte_ldv3(r0, r1, r2) __asm__ volatile ( \ - "lwc2 $0, 0( %0 );" \ - "lwc2 $1, 4( %0 );" \ - "lwc2 $2, 0( %1 );" \ - "lwc2 $3, 4( %1 );" \ - "lwc2 $4, 0( %2 );" \ - "lwc2 $5, 4( %2 )" \ - : \ - : "r"( r0 ), "r"( r1 ), "r"( r2 ) ) -#define gte_ldv3c(r0) __asm__ volatile ( \ - "lwc2 $0, 0( %0 );" \ - "lwc2 $1, 4( %0 );" \ - "lwc2 $2, 8( %0 );" \ - "lwc2 $3, 12( %0 );" \ - "lwc2 $4, 16( %0 );" \ - "lwc2 $5, 20( %0 )" \ - : \ - : "r"( r0 ) ) -#define gte_rtps() __asm__ volatile ("nop;nop;rtps") -#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt") -#define gte_nclip() __asm__ volatile ("nop;nop;nclip") -#define gte_stsxy(r0) __asm__ volatile ( \ - "swc2 $14, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "memory" ) -#define gte_stsxy3(r0, r1, r2) __asm__ volatile ( \ - "swc2 $12, 0( %0 );" \ - "swc2 $13, 0( %1 );" \ - "swc2 $14, 0( %2 )" \ - : \ - : "r"( r0 ), "r"( r1 ), "r"( r2 ) \ - : "memory" ) -#define gte_stsxy3c(r0) __asm__ volatile ( \ - "swc2 $12, 0( %0 );" \ - "swc2 $13, 4( %0 );" \ - "swc2 $14, 8( %0 )" \ - : \ - : "r"( r0 ) \ - : "memory" ) -#define gte_stsxy3_f3(r0) __asm__ volatile ( \ - "swc2 $12, 8( %0 );" \ - "swc2 $13, 12( %0 );" \ - "swc2 $14, 16( %0 )" \ - : \ - : "r"( r0 ) \ - : "memory" ) -#define gte_stsxy3_ft3(r0) __asm__ volatile ( \ - "swc2 $12, 8( %0 );" \ - "swc2 $13, 16( %0 );" \ - "swc2 $14, 24( %0 )" \ - : \ - : "r"( r0 ) \ - : "memory" ) -#define gte_stsxy3_f4(r0) __asm__ volatile ( \ - "swc2 $12, 8( %0 );" \ - "swc2 $13, 12( %0 );" \ - "swc2 $14, 16( %0 )" \ - : \ - : "r"( r0 ) \ - : "memory" ) -#define gte_stsz3(r0, r1, r2) __asm__ volatile ( \ - "swc2 $17, 0( %0 );" \ - "swc2 $18, 0( %1 );" \ - "swc2 $19, 0( %2 )" \ - : \ - : "r"( r0 ), "r"( r1 ), "r"( r2 ) \ - : "memory" ) -#define gte_stsz4(r0, r1, r2, r3) __asm__ volatile ( \ - "swc2 $16, 0( %0 );" \ - "swc2 $17, 0( %1 );" \ - "swc2 $18, 0( %2 );" \ - "swc2 $19, 0( %3 )" \ - : \ - : "r"( r0 ), "r"( r1 ), "r"( r2 ), "r"( r3 ) \ - : "memory" ) -#define gte_stszotz(r0) __asm__ volatile ( \ - "mfc2 $12, $19;" \ - "nop;" \ - "sra $12, $12, 2;" \ - "sw $12, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "$12", "memory" ) -#define gte_stflg(r0) __asm__ volatile ( \ - "cfc2 $12, $31;" \ - "nop;" \ - "sw $12, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "$12", "memory" ) -#define gte_stopz(r0) __asm__ volatile ( \ - "swc2 $24, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "memory" ) - -void func_8017C710(s32 arg0) -{ - typedef struct { u32 w0, w1, w2; } Prim; - - extern s32 func_800491EC(void); - extern void func_800547D8(s32, MATRIX2 *); - extern void func_80052E38(MATRIX2 *); - extern u8 *D_800A5E60; - extern u8 D_800A6610[]; - extern short D_800B9A02; /* TU-visible spelling (engine_core.h + ov_SC01_000.c col-0); unsigned access forced at use — §8d sub-class (b) */ - - DVECTOR2 tmpxy[4]; - SVECTOR2 box[8]; - SVECTOR2 sxy[8]; - MATRIX2 mtx; - struct { long otz, flag, opz, sz0, sz1, sz2, sz3; } g; - - s32 lim; - s32 nparts; - s32 j; - u32 nprim; - u32 i; - Part *part; - Prim *prim; - u8 *pkt; - u32 ot; - u8 *vtx; - u8 *va, *vb, *vc, *vd; - u32 w, code; - u32 wx, wy, wz; - s32 xa32, xb32, t32; - s32 xmn1, xmx1, xmn2, xmx2; - s32 mnc, mxc; - s16 my, mny, mx, mn; - - lim = func_800491EC() + *(s32 *)(arg0 + 0x64); - func_800547D8(arg0 + 0x10, &mtx); - func_80052E38(&mtx); - - pkt = D_800A5E60; - part = *(Part **)(arg0 + 0xC); - nparts = *(s32 *)(*(s32 *)(arg0 + 8) + 8); - vtx = *(u8 **)(*(s32 *)(arg0 + 8) + 0x10); - ot = (u32)&D_800A6610[(*(u16 *)&D_800B9A02) << 14]; - - for (j = 0; j < nparts; j++, part++) { - wx = part->xx; - mn = wx; - mx = wx >> 16; - wy = part->yy; - mny = wy; - my = wy >> 16; - wz = part->zz; - box[0].vx = mn; box[0].vy = mny; - box[1].vx = mx; box[1].vy = mny; - box[2].vx = mn; box[2].vy = mny; - box[3].vx = mx; box[3].vy = mny; - box[4].vx = mn; box[4].vy = my; - box[5].vx = mx; box[5].vy = my; - box[6].vx = mn; box[6].vy = my; - box[7].vx = mx; box[7].vy = my; - wy = wz >> 16; - box[0].vz = wz; - box[1].vz = wz; - box[4].vz = wz; - box[5].vz = wz; - box[2].vz = wy; - box[3].vz = wy; - box[6].vz = wy; - box[7].vz = wy; - - gte_ldv3c(&box[0]); - gte_rtpt(); - gte_stsxy3(&sxy[0], &sxy[1], &sxy[2]); - gte_ldv0(&box[3]); - gte_rtps(); - gte_stsxy(&sxy[3]); - gte_ldv3c(&box[4]); - __asm__ volatile (""); /* §45-B live-length slider: +1 static insn splits the 228/230 allocno-priority tie (498/498 -> 497/498) */ - gte_rtpt(); - gte_stsxy3(&sxy[4], &sxy[5], &sxy[6]); - gte_ldv0(&box[7]); - gte_rtps(); - gte_stsxy(&sxy[7]); - gte_stszotz(&g.otz); - - if (lim >= g.otz) { - xa32 = sxy[0].vx; - xb32 = sxy[1].vx; - if (xb32 < xa32) { xmx1 = xa32; xmn1 = xb32; } else { xmn1 = xa32; xmx1 = xb32; } - t32 = sxy[2].vx; - if (xmx1 < t32) xmx1 = t32; else if (t32 < xmn1) xmn1 = t32; - t32 = sxy[3].vx; - if (xmx1 < t32) xmx1 = t32; else if (t32 < xmn1) xmn1 = t32; - xa32 = sxy[4].vx; - xb32 = sxy[5].vx; - if (xb32 < xa32) { xmx2 = xa32; xmn2 = xb32; } else { xmn2 = xa32; xmx2 = xb32; } - t32 = sxy[6].vx; - if (xmx2 < t32) xmx2 = t32; else if (t32 < xmn2) xmn2 = t32; - t32 = sxy[7].vx; - if (xmx2 < t32) xmx2 = t32; else if (t32 < xmn2) xmn2 = t32; - mnc = xmn1; - if (xmn2 < xmn1) mnc = xmn2; - mxc = xmx1; - if (mxc < xmx2) mxc = xmx2; - if ((s16)mxc >= -0xA0 && (s16)mnc < 0xA1) { - xa32 = sxy[0].vy; - xb32 = sxy[1].vy; - if (xb32 < xa32) { xmx1 = xa32; xmn1 = xb32; } else { xmn1 = xa32; xmx1 = xb32; } - t32 = sxy[2].vy; - if (xmx1 < t32) xmx1 = t32; else if (t32 < xmn1) xmn1 = t32; - t32 = sxy[3].vy; - if (xmx1 < t32) xmx1 = t32; else if (t32 < xmn1) xmn1 = t32; - xa32 = sxy[4].vy; - xb32 = sxy[5].vy; - if (xb32 < xa32) { xmx2 = xa32; xmn2 = xb32; } else { xmn2 = xa32; xmx2 = xb32; } - t32 = sxy[6].vy; - if (xmx2 < t32) xmx2 = t32; else if (t32 < xmn2) xmn2 = t32; - t32 = sxy[7].vy; - if (xmx2 < t32) xmx2 = t32; else if (t32 < xmn2) xmn2 = t32; - mnc = xmn1; - if (xmn2 < xmn1) mnc = xmn2; - mxc = xmx1; - if (mxc < xmx2) mxc = xmx2; - if ((s16)mxc >= -0x78 && (s16)mnc < 0x79) { - prim = (Prim *)part->prim; - nprim = part->nprim; - for (i = 0; i < nprim; i++, prim++) { - w = prim->w1; - va = vtx + (w & 0xFFFF); - vb = vtx + (w >> 16); - w = prim->w2; - vc = vtx + (w & 0xFFFF); - w = w >> 16; - gte_ldv3(va, vb, vc); - gte_rtpt(); - gte_stflg(&g.flag); - if (!(g.flag & 0x7F85E000)) { - gte_nclip(); - code = w & 7; - vd = vtx + (w & 0xFFF8); - gte_stopz(&g.opz); - if (g.opz > 0) { - switch (code) { - case 4: - case 5: - gte_stsxy3_f3(pkt); - gte_stsz3(&g.sz0, &g.sz1, &g.sz2); - if (((PolyF3 *)pkt)->x0 > ((PolyF3 *)pkt)->x1) { - mx = ((PolyF3 *)pkt)->x0; - mn = ((PolyF3 *)pkt)->x1; - } else { - mn = ((PolyF3 *)pkt)->x0; - mx = ((PolyF3 *)pkt)->x1; - } - if (((PolyF3 *)pkt)->x2 > mx) mx = ((PolyF3 *)pkt)->x2; - else if (((PolyF3 *)pkt)->x2 < mn) mn = ((PolyF3 *)pkt)->x2; - if (mx >= -0xA0 && mn < 0xA1) { - if (((PolyF3 *)pkt)->y0 > ((PolyF3 *)pkt)->y1) { - my = ((PolyF3 *)pkt)->y0; - mny = ((PolyF3 *)pkt)->y1; - } else { - mny = ((PolyF3 *)pkt)->y0; - my = ((PolyF3 *)pkt)->y1; - } - if (((PolyF3 *)pkt)->y2 > my) my = ((PolyF3 *)pkt)->y2; - else if (((PolyF3 *)pkt)->y2 < mny) mny = ((PolyF3 *)pkt)->y2; - if (my >= -0x78 && mny < 0x79) { - s32 za, zb; - u32 *otp; - if (g.sz0 > g.sz1) { - za = g.sz0; - if (za < g.sz2) za = g.sz2; - } else { - za = g.sz1; - if (za < g.sz2) za = g.sz2; - } - g.opz = za; - if (code != 4) g.opz = za + 0x20; - ((PolyF3 *)pkt)->rgbc = prim->w0; - otp = (u32 *)(((g.opz >> 2) << 2) + ot); - *(u32 *)pkt = (*otp & 0xFFFFFF) | 0x4000000; - *otp = (*otp & 0xFF000000) | ((u32)pkt & 0xFFFFFF); - pkt += 0x14; - } - } - break; - case 6: - case 7: - gte_stsxy3_ft3(pkt); - gte_stsz3(&g.sz0, &g.sz1, &g.sz2); - if (((PolyFT3 *)pkt)->x0 > ((PolyFT3 *)pkt)->x1) { - mx = ((PolyFT3 *)pkt)->x0; - mn = ((PolyFT3 *)pkt)->x1; - } else { - mn = ((PolyFT3 *)pkt)->x0; - mx = ((PolyFT3 *)pkt)->x1; - } - if (((PolyFT3 *)pkt)->x2 > mx) mx = ((PolyFT3 *)pkt)->x2; - else if (((PolyFT3 *)pkt)->x2 < mn) mn = ((PolyFT3 *)pkt)->x2; - if (mx >= -0xA0 && mn < 0xA1) { - if (((PolyFT3 *)pkt)->y0 > ((PolyFT3 *)pkt)->y1) { - my = ((PolyFT3 *)pkt)->y0; - mny = ((PolyFT3 *)pkt)->y1; - } else { - mny = ((PolyFT3 *)pkt)->y0; - my = ((PolyFT3 *)pkt)->y1; - } - if (((PolyFT3 *)pkt)->y2 > my) my = ((PolyFT3 *)pkt)->y2; - else if (((PolyFT3 *)pkt)->y2 < mny) mny = ((PolyFT3 *)pkt)->y2; - if (my >= -0x78 && mny < 0x79) { - s32 za, zb; - u32 *otp; - u32 *tp; - if (g.sz0 > g.sz1) { - za = g.sz0; - if (za < g.sz2) za = g.sz2; - } else { - za = g.sz1; - if (za < g.sz2) za = g.sz2; - } - g.opz = za; - if (code == 7) g.opz = za + 0x20; - tp = (u32 *)prim->w0; - ((PolyFT3 *)pkt)->rgbc = tp[0]; - ((PolyFT3 *)pkt)->uvc0 = tp[1]; - ((PolyFT3 *)pkt)->uvp1 = tp[2]; - ((PolyFT3 *)pkt)->uv2 = tp[3]; - otp = (u32 *)(((g.opz >> 2) << 2) + ot); - *(u32 *)pkt = (*otp & 0xFFFFFF) | 0x7000000; - *otp = (*otp & 0xFF000000) | ((u32)pkt & 0xFFFFFF); - pkt += 0x20; - } - } - break; - case 0: - case 1: - gte_stsxy3_f4(pkt); - gte_ldv0(vd); - gte_rtps(); - if (((PolyF4 *)pkt)->x0 > ((PolyF4 *)pkt)->x1) { - mx = ((PolyF4 *)pkt)->x0; - mn = ((PolyF4 *)pkt)->x1; - } else { - mn = ((PolyF4 *)pkt)->x0; - mx = ((PolyF4 *)pkt)->x1; - } - if (((PolyF4 *)pkt)->x2 > mx) mx = ((PolyF4 *)pkt)->x2; - else if (((PolyF4 *)pkt)->x2 < mn) mn = ((PolyF4 *)pkt)->x2; - if (((PolyF4 *)pkt)->y0 > ((PolyF4 *)pkt)->y1) { - my = ((PolyF4 *)pkt)->y0; - mny = ((PolyF4 *)pkt)->y1; - } else { - mny = ((PolyF4 *)pkt)->y0; - my = ((PolyF4 *)pkt)->y1; - } - if (((PolyF4 *)pkt)->y2 > my) my = ((PolyF4 *)pkt)->y2; - else if (((PolyF4 *)pkt)->y2 < mny) mny = ((PolyF4 *)pkt)->y2; - gte_stflg(&g.flag); - if (!(g.flag & 0x7F85E000)) { - gte_stsz4(&g.sz0, &g.sz1, &g.sz2, &g.sz3); - gte_stsxy((long *)&((PolyF4 *)pkt)->x3); - if (((PolyF4 *)pkt)->x3 < mn) mn = ((PolyF4 *)pkt)->x3; - else if (mx < ((PolyF4 *)pkt)->x3) mx = ((PolyF4 *)pkt)->x3; - if (mx >= -0xA0 && mn < 0xA1) { - if (((PolyF4 *)pkt)->y3 < mny) mny = ((PolyF4 *)pkt)->y3; - else if (my < ((PolyF4 *)pkt)->y3) my = ((PolyF4 *)pkt)->y3; - if (my >= -0x78 && mny < 0x79) { - s32 za, zb; - u32 *otp; - zb = g.sz2; - if (zb < g.sz3) zb = g.sz3; - za = g.sz0; - if (za < g.sz1) za = g.sz1; - if (za < zb) za = zb; - g.opz = za; - ((PolyF4 *)pkt)->rgbc = prim->w0; - otp = (u32 *)(((za >> 2) << 2) + ot); - *(u32 *)pkt = (*otp & 0xFFFFFF) | 0x5000000; - *otp = (*otp & 0xFF000000) | ((u32)pkt & 0xFFFFFF); - pkt += 0x18; - } - } - } - break; - case 2: - case 3: - gte_stsxy3c(&tmpxy[0]); - gte_ldv0(vd); - gte_rtps(); - if (tmpxy[0].vx > tmpxy[1].vx) { - mx = tmpxy[0].vx; - mn = tmpxy[1].vx; - } else { - mn = tmpxy[0].vx; - mx = tmpxy[1].vx; - } - if (tmpxy[2].vx > mx) mx = tmpxy[2].vx; - else if (tmpxy[2].vx < mn) mn = tmpxy[2].vx; - if (tmpxy[0].vy > tmpxy[1].vy) { - my = tmpxy[0].vy; - mny = tmpxy[1].vy; - } else { - mny = tmpxy[0].vy; - my = tmpxy[1].vy; - } - if (tmpxy[2].vy > my) my = tmpxy[2].vy; - else if (tmpxy[2].vy < mny) mny = tmpxy[2].vy; - gte_stflg(&g.flag); - if (!(g.flag & 0x7F85E000)) { - gte_stsz4(&g.sz0, &g.sz1, &g.sz2, &g.sz3); - gte_stsxy((long *)&((PolyFT4 *)pkt)->x3); - if (((PolyFT4 *)pkt)->x3 < mn) mn = ((PolyFT4 *)pkt)->x3; - else if (mx < ((PolyFT4 *)pkt)->x3) mx = ((PolyFT4 *)pkt)->x3; - if (mx >= -0xA0 && mn < 0xA1) { - if (((PolyFT4 *)pkt)->y3 < mny) mny = ((PolyFT4 *)pkt)->y3; - else if (my < ((PolyFT4 *)pkt)->y3) my = ((PolyFT4 *)pkt)->y3; - if (my >= -0x78 && mny < 0x79) { - s32 za, zb; - u32 *otp; - u32 *tp; - u32 uvw; - zb = g.sz2; - if (zb < g.sz3) zb = g.sz3; - za = g.sz0; - if (za < g.sz1) za = g.sz1; - if (za < zb) za = zb; - g.opz = za; - if (code == 3) g.opz = za + 0x20; - *(u32 *)&((PolyFT4 *)pkt)->x0 = *(u32 *)&tmpxy[0]; - *(u32 *)&((PolyFT4 *)pkt)->x1 = *(u32 *)&tmpxy[1]; - *(u32 *)&((PolyFT4 *)pkt)->x2 = *(u32 *)&tmpxy[2]; - tp = (u32 *)prim->w0; - ((PolyFT4 *)pkt)->rgbc = tp[0]; - ((PolyFT4 *)pkt)->uvc0 = tp[1]; - ((PolyFT4 *)pkt)->uvp1 = tp[2]; - uvw = tp[3]; - ((PolyFT4 *)pkt)->uv2 = uvw; - ((PolyFT4 *)pkt)->uv3 = uvw >> 16; - otp = (u32 *)(((g.opz >> 2) << 2) + ot); - *(u32 *)pkt = (*otp & 0xFFFFFF) | 0x9000000; - *otp = (*otp & 0xFF000000) | ((u32)pkt & 0xFFFFFF); - pkt += 0x28; - } - } - } - break; - } - } - } - } - } - } - } - } - D_800A5E60 = pkt; -} - - -extern void (*D_80190CE4[])(void); - -void func_8017D5F0(void *a0) { - D_80190CE4[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32, s32); -extern u32 D_80190CD4; - -void func_8017D62C(s32 arg0) { - s32 v0 = ((s32 (*)(s32))func_8012C1B8)(arg0); - *(s32*)((u8*)arg0 + 0x20) = v0; - if (v0 == 0) { - ((void (*)(s32))func_8012CAE4)(arg0); - } else { - func_8001C214(v0, 0); - *(s16*)((u8*)arg0 + 0x2) = 1; - *(s16*)((u8*)arg0 + 0x5C) = 0x20; - *(s32*)((u8*)arg0 + 0x58) = (u32)&D_80190CD4 | 0x40000000; - *(s16*)((u8*)(*(s32*)((u8*)arg0 + 0x20)) + 0x12) = *(u16*)((u8*)arg0 + 0xFC); - } -} - - -DEFINE_func_8017D6A8() /* dedup: shared engine-core @0x8017D6A8 (src/shared) */ - -DEFINE_func_8017D6B0() /* dedup: shared engine-core @0x8017D6B0 (src/shared) */ - - - -extern void func_8017DA08(void *arg0); -extern s32 func_8012AD50(void *arg0); - -/* 0x24-stride record at D_801E6F58 (4 entries; asm/ov_SC04_018/data/tail18.data.s) */ - - -void func_8017D6EC(void *arg0) { - - extern u8 D_80078EB1; - extern Ent_8017D6EC_8017D6EC D_801E6F58[]; - s32 i; - - if (D_80078EB1 == 7) { - for (i = 0; i < 4; i++) { - Ent_8017D6EC_8017D6EC *p = &D_801E6F58[i]; - - p->unk16 = i; - func_8017DA08(p); - if (i & 1) { - p->unk1C = 1; - } - } - func_8012AD50(arg0); - } -} - - - - - - -extern s32 func_8004787C(s32 a0); -extern void func_8012AD44(s32 *a0, s16 a1); -extern void func_8017D9B8(void); -extern void func_8017DAC4(void *arg0); - -void aF8017D77C(void *arg0) __asm__("func_8017D77C"); -void aF8017D77C(void *arg0) -{ - - extern u8 D_80078EB1; - extern u8 D_80078E78[]; - extern u8 D_800AF630[]; - /* [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 Ent_8017D6EC_8017DEE8 D_801E6F58[]; - u8 *m; - u8 *e78; - s32 k; - - m = D_800AF630; - e78 = D_80078E78; - - if (D_80078EB1 >= 9) { - s32 count; - s32 i; - u8 *base; - - base = (u8 *)D_801E6F58; - count = 0; - for (i = 0; i < 4; i++) { - if (*(s32 *)(base + i * 0x24 + 0x1C) == 0) { - count++; - } - } - if (count == 0) { - func_8012AD44((s32 *)arg0, 0); - return; - } - } - - for (k = 0; k < 4; k++) { - u8 *p = (u8 *)D_801E6F58 + k * 0x24; - s32 c; - - if (*(s32 *)(p + 0x1C) != 0) { - continue; - } - - { - s16 val = *(s16 *)(p + 0xC); - if (val < 0x401) { - *(s16 *)(p + 0xC) = val + 0xB; - } else if (*(s32 *)(p + 0x18) != 0) { - *(s32 *)(p + 0x18) -= 1; - } else { - *(s16 *)(p + 0xC) = val + 0xB; - } - } - - if (*(s16 *)(p + 0xC) >= 0x801) { - *(s16 *)(p + 0xC) = 0; - } - - c = (func_8004787C(*(s16 *)(p + 0xC)) / 64) & 0xFF; - c = c | (c << 16 | c << 8); - *(s32 *)(p + 0x4) = c; - - c = (func_8004787C(*(s16 *)(p + 0xC)) / 256) & 0xFF; - c = c | (c << 16 | c << 8); - *(s32 *)(p + 0x8) = c; - - if ((*(u16 *)(m + 0xA3AA) & 1) == 0) { - s16 cnt = *(u16 *)(p + 0xE) + 1; - *(u16 *)(p + 0xE) = cnt; - if (cnt >= 0x40) { - *(u16 *)(p + 0xE) = 0; - } - } - - { - s32 val2 = *(s16 *)(p + 0xC); - if (val2 == 0) { - *(s32 *)(p + 0x1C) = 1; - } else if (val2 >= 0x556) { - if (*(s32 *)(p + 0x20) == 0) { - *(s32 *)(p + 0x20) = 1; - if (e78[0x39] < 9) { - ((void (*)(void *))func_8017D9B8)(p); - } - } - } - } - - func_8017DAC4(p); - } -} - - - - -/* func_8017D9B8 - iterate through 4-entry array, call func_8017DA08 if any unk1C is non-zero */ - -extern void func_8017DA08(void *arg0); - - - - -void func_8017D9B8(void) { - - extern Ent_8017D6EC D_801E6F58[]; - s32 i = 0; - Ent_8017D6EC *p = &D_801E6F58[0]; - - while (i < 4) { - if (p->unk1C != 0) { - func_8017DA08(p); - break; - } - i++; - p = (Ent_8017D6EC *)((char *)p + 0x24); - } -} - - - -extern s32 rand(void); - -void func_8017DA08(void *arg0) { - - extern void (*D_80190CEC[])(void); - s32 base = (s32)arg0; - s32 r1; - s32 r2; - s32 h; - s32 t; - - *(s32 *)(base + 0x0) = (s32)D_80190CEC; - *(s32 *)(base + 0x4) = 0; - *(s32 *)(base + 0x8) = 0; - *(s16 *)(base + 0xC) = 0; - *(s16 *)(base + 0xE) = 0; - *(s16 *)(base + 0x10) = 0; - - r1 = rand(); - r2 = rand(); - h = *(s16 *)(base + 0x16) * 80; - t = (r1 & 7) * 5 - 0xA0; - *(s16 *)(base + 0x12) = h + t + (r2 & 0xF); - - *(s16 *)(base + 0x14) = -((rand() & 0xF) * 2); - *(s32 *)(base + 0x1C) = 0; - *(s32 *)(base + 0x20) = 0; - *(s32 *)(base + 0x18) = (*(u16 *)(base + 0x16) & 2) * 30; -} - - - - -/* func_8017DAC4 — build a 4-vertex SVECTOR quad from an 8-u16 source record, - * translate it by the actor's (0x12,0x14) offset, and hand it to the - * 0x80017714 draw helper — three records per call. - * - * Frame math: 0x10 arg-save + 0x38 local + 7 saved regs (s0..s5,ra) = 0x68. - * The local is the same block shape as the D_801AA000 global in - * ov_SC06_008_jr_8017C294 (SVECTOR v[4]; then six words), with the last - * word DEAD (idiom 6: the frame delta is a dead field, not codegen). - * - * Two levers, both required: - * (1) THE PRIM BASE IS A SOURCE-LEVEL POINTER, not `&prim` at the use sites. - * Writing the loop body as `prim.v[k].vx = ...` addresses every store - * sp-relative, costs no callee-saved register and comes out -3 ins - * ($s5 never allocated, no `addiu $s1,$sp,0x10`). Introducing `q = &prim` - * BEFORE the loop and using `q->` only inside it reproduces the target - * exactly: the pre-loop initialisers stay sp-relative (same block as q's - * set, so cse folds them back) while the loop body keeps $s1. - * (2) A chained assignment stores the INNERMOST target first. The target's - * order is `sw 0x34` then `sw 0x30`, so it must be written - * `prim.f20 = prim.f24 = x;` — `f24 = f20 = x` emits 0x30 then 0x34. - * - * The two induction pointers ($s4 walking the record and $s0 = $s4 + 0xE) - * fall out of a SINGLE `u16 *p` walked with `p += 8` — loop.c splits the - * eight DEST_ADDR givs onto two bases on its own; do not hand-write a - * second pointer. - * - * Byte-identical target asm in ov_SC04_019 and ov_SC05_017 (same TU name), - * so this body remaps to those overlays unchanged. - */ - - - -DEFINE_func_8017DAC4() /* dedup: shared engine-core @0x8017DAC4 (src/shared) */ - - -DEFINE_func_8017DBDC() /* dedup: shared engine-core @0x8017DBDC (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH - -extern u32 D_801E6FE8; -extern u16 D_80190D24[]; -extern u16 D_801E6FEC[]; -extern s32 D_80190D44; - -extern void func_800183E0(s32 a0); - -void func_8017DC0C(void) -{ - u32 i; - u16 *p; - u32 base; - u16 *tbl; - - i = 0; - tbl = D_80190D24; - base = D_801E6FE8 >> 8; - p = D_801E6FEC; - do { - *p = tbl[(base + i) & 0xF] | 0x8000; - i = i + 1; - p = p + 1; - } while (i < 0x10); - func_800183E0((s32)&D_80190D44); - D_801E6FE8 = D_801E6FE8 + 0x100; -} - - - -// @class: plumbing -// @stuck: none — MATCH (simple two-call wrapper, $s0 holds param across calls by default regalloc) - -extern void func_8017E038(void *arg0); -extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); -extern void func_800167B8(s32 a0); - -s32 func_8017DC98(s32 param_1) -{ - ((void (*)(void *, s32))func_8016EDEC)(func_8017E038, 0x1000000); - func_800167B8(0); - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - return 0; -} - - - -extern s32 func_800167F0(s32 a0); - -s32 func_8017DCE8(void) { - return (func_800167F0(0) & 0xffff) != 0; -} - - - - -extern void func_8017E0C0(void *a0); -extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); -extern s32 D_80126B9C; -extern u16 D_801270C0; - -s32 func_8017DD0C(s32 param_1) -{ - ((void (*)(void *, s32))func_8016EDEC)(func_8017E0C0, 0x1000000); - D_801270C0 = 2; - D_80126B9C = D_80126B9C | 0x4000000; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - *(s32 *)(param_1 + 0x28) = 0xA; - return 0; -} - - - -DEFINE_func_8017DD7C() /* dedup: shared engine-core @0x8017DD7C (src/shared) */ - - -extern void func_800D1EBC(void); - void func_8017DE2C(void) { - func_800D1EBC(); - } - - - -extern void func_800D1E28(void); - -s32 func_8017DE4C(void *a0) { - s32 *p = (s32 *)((u8 *)a0 + 0x28); - *p = *p - 1; - - if (*p == -1) { - func_800D1E28(); - (*(u8 *)((u8 *)a0 + 0x15))++; - } - - return 0; -} - - -DEFINE_func_8017DEA0() /* dedup: shared engine-core @0x8017DEA0 (src/shared) */ - - - -extern void (*D_80190D64[])(void); - -void func_8017DF34(void *a0) { - D_80190D64[*(u8 *)((s32)a0 + 0x15)](); -} - - - -extern void (*D_80190D6C[])(void); - -void func_8017DF70(void *a0) { - D_80190D6C[*(u8 *)((s32)a0 + 0x15)](); -} - - - -extern void (*D_80190D78[])(void); - -void func_8017DFAC(void *a0) { - D_80190D78[*(u8 *)((s32)a0 + 0x15)](); -} - - - -extern void (*D_80190D84[])(void); - -void func_8017DFE8(void *a0) { - D_80190D84[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_8017E024() /* dedup: shared engine-core @0x8017E024 (src/shared) */ - - - -extern void (*D_80191060[])(void); - -void func_8017E038(void *a0) { - D_80191060[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_8017E074() /* dedup: shared engine-core @0x8017E074 (src/shared) */ - -extern void func_80175414(s32 _arg0); -extern void func_8016F0E4(void); -extern void func_80165770(void); -void func_8017E088(void *a0) { - ((void (*)(void *))func_80175414)(a0); - ((s32 (*)(struct S *))func_8016F0E4)((struct S *)a0); - ((void (*)(void *))func_80165770)(a0); -} - - - -DEFINE_func_8017E0C0() /* dedup: shared engine-core @0x8017E0C0 (src/shared) */ - - -DEFINE_func_8017E0FC() /* dedup: shared engine-core @0x8017E0FC (src/shared) */ - -extern void func_8016F0E4(void); -void func_8017E110(void) { - func_8016F0E4(); -} - - - -extern void func_8012A018(s32 a, s32 b); -extern void func_8012A094(s32 a0); -extern void func_8017E1F4(void *a0); - - -void func_8017E130(void) { - - extern u8 D_80126948[]; - extern s32 D_80126950; - extern s32 D_80126954; - extern s32 D_8012695C; - extern s16 D_80126968; - extern s16 D_8012696A; - extern s16 D_8012696C; - extern s16 D_80126976; - extern s16 D_80126978; - extern s16 D_8012697A; - extern u8 D_801269E8; - u8 tmp = D_801269E8; - - D_80126954 = 0x1F4; - D_80126950 = 0x1F4; - D_8012695C = 0x4B0; - D_80126968 = 0x238; - D_8012696A = 0; - D_8012696C = 0; - D_80126976 = 0; - D_80126978 = 0; - D_8012697A = 0; - func_8012A018((s32)func_8017E1F4, 0); - D_801269E8 = tmp; - func_8012A094((s32)D_80126948); - func_8017E1F4(D_80126948); - func_8012A094((s32)D_80126948); - func_8017E1F4(D_80126948); -} - - - -extern void (*D_80191070[])(void); - -void func_8017E1F4(void *a0) { - D_80191070[*(u8 *)((s32)a0 + 0x4)](); -} - - - - - - - - - - - - - - - - - - -extern void func_8017E26C(s32 *a0, s32 a1); -extern void func_8017E3AC(s32 a0); -void func_8017E230(s32 *a0) -{ - s32 *new_var; - volatile long pad; - new_var = a0; - func_8017E26C(new_var, ((s32) new_var) + 0xA0); - func_8017E3AC((s32) new_var); -} - -DEFINE_func_8017E264() /* dedup: shared engine-core @0x8017E264 (src/shared) */ - - - - - -extern u16 func_801487F4(s32 *a0); -extern u16 func_80148800(s32 *a0); -extern s32 func_80012A60(s32 a0, s32 a1); - -void aF8017E26C(void *a0, u8 *a1) __asm__("func_8017E26C"); -void aF8017E26C(void *a0, u8 *a1) -{ - - extern s32 D_80126B58; - extern s16 D_8018D530[]; - /* Dead aggregate local (idiom 6): args(0x10) + saves(7*4) alone give a 0x30 - * frame; the target is 0x38, i.e. vars != 0. gcc-2.7.2 rounds the var area - * to 8, so ONE dead word reproduces it (s32 pad[2] overshoots to 0x40). */ - s32 frame_pad[1]; - u8 dir; - s32 lim; - s32 flags; - s32 held; - s32 cur; - - dir = *a1; - held = ((s32(*)(s32 *))func_801487F4)(&D_80126B58); - cur = ((s32(*)(s32 *))func_80148800)(&D_80126B58); - *(s16 *)((s32)a0 + 0x9C) = 0x5B; - - lim = 0; - if (cur & 3) { - lim = 0x555; - flags = cur; - *(s16 *)((s32)a0 + 0xA2) = 8; - } else if (*(s16 *)((s32)a0 + 0xA2) == 0) { - if (held & 3) { - lim = 0x555; - flags = held; - *(s16 *)((s32)a0 + 0x9C) = 0x2D; - } - } else { - *(s16 *)((s32)a0 + 0xA2) = *(s16 *)((s32)a0 + 0xA2) - 1; - } - - if (lim != 0) { - if (flags & 1) { - dir = (dir - 1) & 7; - } else if (flags & 2) { - dir = (dir + 1) & 7; - } - if ((s16)func_80012A60(*(s16 *)((s32)a0 + 0x1A), D_8018D530[dir]) < lim) { - *a1 = dir; - } - } - - *(s16 *)((s32)a0 + 0x22) = D_8018D530[*a1]; -} - - - - - /* 0x20: m@0, pad@0x12, t@0x14 */ - /* 8 bytes */ - -extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); -extern s32 func_80012ABC(s32 a0, s32 a1, s32 a2); -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); - -void func_8017E3AC(s32 param_1) -{ - extern s16 D_80126940; - extern s16 D_80126942; - extern s16 D_80126944; - - MATRIX m1; - SVECTOR svec_in; - SVECTOR svec_out; - register s32 lim __asm__("$16"); - - lim = *(u16 *)(param_1 + 0x9C); - - { - s32 delta = func_80012B04(*(s16 *)(param_1 + 0x1A), *(s16 *)(param_1 + 0x22), 0x14); - if ((s16)delta > (s16)lim) { - delta = lim; - } else if ((s16)delta < -(s16)lim) { - delta = -lim; - } - *(s16 *)(param_1 + 0x1A) = (*(u16 *)(param_1 + 0x1A) + delta) & 0xFFF; - *(s16 *)(param_1 + 0x18) = func_80012ABC(*(s16 *)(param_1 + 0x18), *(s16 *)(param_1 + 0x20), 4); - } - - *(s16 *)(param_1 + 0x1C) = func_80012ABC(*(s16 *)(param_1 + 0x1C), *(s16 *)(param_1 + 0x24), 4); - *(s32 *)(param_1 + 0x8) = (s16)func_80012C6C(*(s16 *)(param_1 + 0x8), *(s16 *)(param_1 + 0xC), 4); - *(s32 *)(param_1 + 0x10) = (s16)func_80012C6C(*(s16 *)(param_1 + 0x10), *(s16 *)(param_1 + 0x14), 4); - *(s16 *)(param_1 + 0x28) = func_80012C6C(*(s16 *)(param_1 + 0x28), *(s16 *)(param_1 + 0x2E), 0x10); - *(s16 *)(param_1 + 0x2A) = func_80012C6C(*(s16 *)(param_1 + 0x2A), *(s16 *)(param_1 + 0x30), 0x10); - *(s16 *)(param_1 + 0x2C) = func_80012C6C(*(s16 *)(param_1 + 0x2C), *(s16 *)(param_1 + 0x32), 0x10); - - { - s16 *p940 = &D_80126940; - *(s32 *)(param_1 + 0x48) = (s32)*(s16 *)(param_1 + 0x28) + *p940; - *(s32 *)(param_1 + 0x4C) = (s32)*(s16 *)(param_1 + 0x2A) + D_80126942; - *(s32 *)(param_1 + 0x50) = (s32)*(s16 *)(param_1 + 0x2C) + D_80126944; - func_80049CAC(param_1 + 0x18, (s32)&m1); - - m1.t[0] = *(s16 *)(param_1 + 0x28) + *p940; - m1.t[1] = *(s16 *)(param_1 + 0x2A) + D_80126942; - m1.t[2] = *(s16 *)(param_1 + 0x2C) + D_80126944; - } - svec_in.vx = 0; - svec_in.vy = 0; - svec_in.vz = *(s32 *)(param_1 + 0x10); - ((void (*)(s32, s32, s32))func_8012F14C)((s32)&m1, (s32)&svec_in, (s32)&svec_out); - - *(s32 *)(param_1 + 0x3C) = (s32)svec_out.vx; - *(s32 *)(param_1 + 0x40) = (s32)svec_out.vy; - *(s32 *)(param_1 + 0x44) = (s32)svec_out.vz; -} - - - -extern void func_80184CB8(s32*, s32); - extern short D_80191074; - void func_8017E5A0(void * arg0) { - *(short *)((char *)arg0 + 0x2) = 2; - ((void (*)(s32, s32))func_80184CB8)((int)arg0, (int)&D_80191074); - } - - -DEFINE_func_8017E5CC() /* dedup: shared engine-core @0x8017E5CC (src/shared) */ - - extern s32 func_80184FA4(void); -extern s32 func_80185BE0(s32 arg0); -extern u8 D_801B68D4[]; -extern u8 D_801B68E0[]; -extern void func_8017E5A0(void *arg0); -extern void func_80184ED4(s32, s32, s32, s32); - -void func_8017E628(a0) -void *a0; -{ - extern u8 D_801B68D4[]; - extern u8 D_801B68E0[]; - extern s32 func_80185BE0(s32 a0); - extern s32 func_80184FA4(void); - extern void func_80184ED4(s32, s32, s32, s32); - extern void func_8017E5A0(void *arg0); - - switch (*(u16 *)((s32)a0 + 0x34)) { - case 0: - if (func_80185BE0(5) == 0) { - return; - } - func_80184ED4((s32)a0, (s32)D_801B68D4, 0, 0x70); - *(u16 *)((s32)a0 + 0x34) = 1; - return; - case 1: - func_80185BE0(5); - if (((s32 (*)(s32))func_80184FA4)((s32)a0) == 0) { - return; - } - func_80184ED4((s32)a0, (s32)D_801B68E0, 1, 0x70); - *(u16 *)((s32)a0 + 0x34) = 2; - *(u16 *)(*(s32 *)((s32)a0 + 0xCC) + 0x108) = 0; - *(s32 *)(*(s32 *)((s32)a0 + 0xCC) + 0xB0) = 2; - return; - case 2: - if (((s32 (*)(s32))func_80184FA4)((s32)a0) != 0) { - *(u16 *)((s32)a0 + 0x34) = 3; - } - return; - case 3: - if (func_80185BE0(5) != 0) { - *(u16 *)((s32)a0 + 0x34) = 4; - func_80184ED4((s32)a0, (s32)D_801B68D4, 1, 0x70); - } - return; - case 4: - func_80185BE0(5); - if (((s32 (*)(s32))func_80184FA4)((s32)a0) != 0) { - func_8017E5A0(a0); - } - return; - } -} - - - -extern void (*D_801912A8[])(void); - -void func_8017E760(void *a0) { - D_801912A8[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void func_8012A828(s32 *a0, s32 a1); - extern short D_801B9B50; - void func_8017E79C(short *a0) { - *(short *)((char *)a0 + 0x2) = 0x2; - *(short *)((char *)a0 + 0x34) = 0; - func_8012A828((s32 *)a0, (s32)&D_801B9B50); - } - - -void func_8017E7CC(int param_1) -{ - extern short D_801B9AA8; - extern void func_8012A828(s32 *a0, s32 a1); - - *(short *)(param_1 + 2) = 3; - *(short *)(param_1 + 0x34) = 0; - func_8012A828((s32 *)param_1, (s32)&D_801B9AA8); - *(int *)(param_1 + 0x1c) = 0x10; -} - - - -extern void (*D_801912C8[])(void); - -void func_8017E810(void *a0) { - D_801912C8[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void func_80178CBC(s32 a0, s32 a1); - extern short D_801910A0; - void func_8017E84C(void * arg0) { - *(short *)((char *)arg0 + 0x2) = 4; - func_80178CBC((int)arg0, (int)&D_801910A0); - } - - - -extern void func_80178CBC(s32 a0, s32 a1); - extern short D_80191288; - void func_8017E878(void * arg0) { - *(short *)((char *)arg0 + 0x2) = 7; - func_80178CBC((int)arg0, (int)&D_80191288); - } - - - - -extern int func_80178970(void); -extern void func_80178D18(void); -extern void func_8012A828(s32*, s32); -extern short D_801B99A8; - -void func_8017E8A4(void *a0) { - if (func_80178970() != 0) { - ((void (*)(s32))func_80178D18)((s32)a0); - *(short *)((char *)a0 + 0x2) = 5; - *(short *)((char *)a0 + 0x34) = 2; - func_8012A828((s32 *)a0, (s32)&D_801B99A8); - } -} - - -extern s32 func_80029504(void); - -void func_8017E8FC(void) { - extern s16 D_80191110[]; - extern s32 D_80191270; - extern s32 D_801E7AAC; - - if (func_80029504() < 0x2BC) { - *(s32 *)(D_801E7AAC + 4) = (s32)D_80191110; - } else { - *(s32 *)(D_801E7AAC + 4) = (s32)&D_80191270; - } -} - - -extern s32 func_8012E544(s32 a0); -extern s32 func_80029504(void); -extern void func_80029514(s32); - -void func_8017E950(void) { - s32 v1 = func_8012E544(0x22B); - if (v1 != 0) { - *(s16 *)(v1 + 0x34) = 1; - } - if (func_80029504() < 0x2BC) { - func_80029514(0x2BC); - } -} - - -extern void func_8012C588(s32, s32); -void func_8017E99C(void) { - func_8012C588(0x22B, 0); -} - - - - -extern s32 func_80184BAC(s32 arg0, s32 arg1); -extern void func_8017E5A0(void *arg0); - -void func_8017E9C0(void *arg0) { - s32 v1; - - v1 = *(s32 *)((char *)arg0 + 0xCC); - *(s32 *)((char *)v1 + 0xB0) = 2; - if (func_80184BAC(8, 0x14) != 0) { - func_8017E5A0(arg0); - } -} - - -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); -extern void func_80184CB8(s32*, s32); - -void func_8017EAAC(void * arg0) { - - extern short D_80191074; - if (func_80178970() != 0) { - ((void (*)(s32))func_80178D18)((s32)arg0); - *(short *)((char *)arg0 + 0x2) = 2; - ((void (*)(s32, s32))func_80184CB8)((int)arg0, (int)&D_80191074); - } -} - - -extern s32 func_80029504(void); -extern void func_8012CAE4(void *a0); -extern s32 func_801847BC(void *a0, void *a1); -extern s32 func_80184BAC(s32 arg0, s32 arg1); -extern void func_80184CB8(s32*, s32); -extern s32 func_801788B8(s32 arg0, s32 arg1); -extern s16 D_8019107C; -extern s16 D_80191074; -extern void func_8017EDA4(void); - -void func_8017EAFC(void *a0) { - s32 v0; - void *v1; - - if (func_80029504() < 0x2A8) { - func_8012CAE4(a0); - } else { - v0 = func_801847BC(a0, &D_8019107C); - if (v0 != 0) { - v0 = func_80184BAC(8, 0x14); - *(s16 *)((char *)a0 + 0x2) = (v0 != 0) ? 2 : 1; - func_80184CB8((s32 *)a0, (s32)&D_80191074); - v1 = *(void **)((char *)a0 + 0x68); - *(s16 *)((char *)v1 + 0xC) = 0x7FFF; - *(s32 *)((char *)a0 + 0xD4) = func_801788B8((s32)a0, (s32)&func_8017EDA4); - } - } -} - - -extern void func_8012AD80(s32 a0); -extern s32 func_8012BEE8(s32 a0); -extern void func_8017E79C(short*); -void func_8017EBA0(s32 a0) { - func_8012AD80(a0); - if (func_8012BEE8(a0)) { - ((void (*)(s32))func_8017E79C)(a0); - } -} - - -extern void func_8017E7CC(); - void func_8017EBE0(u8 *a0) { - if (*(u16 *)((s32)a0 + 0x34) == 1) { - ((void (*)())func_8017E7CC)(); - } - } - - - - -extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); -extern s32 func_8012BEE8(s32 a0); -extern void func_8012B2CC(s32 a0); -extern void func_8012B200(u8*); -extern void func_8012B178(s32 a0, s32 a1); -extern void func_8012AD80(s32 a0); -extern void func_8012E8A8(s32 a0); - -void func_8017EC10(void *a0) { - switch (*(u16 *)((s32)a0 + 0x34)) { - case 0: - *(s16 *)(*(s32 *)((s32)a0 + 0x20) + 0x12) += func_8012B608(*(s16 *)(*(s32 *)((s32)a0 + 0x20) + 0x12), 0x800, 8); - if (func_8012BEE8(a0)) { - { s32 t = *(u16 *)((s32)a0 + 0x34) + 1; *(u16 *)((s32)a0 + 0x34) = t; } - *(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x12) = 0x800; - func_8012B2CC(a0); - ((void (*)(s32))func_8012B200)(a0); - func_8012B178(a0, (s32)-0x40000); - *(s32 *)((s32)a0 + 0x1C) = 0x20; - } - break; - case 1: - func_8012AD80(a0); - if (func_8012BEE8(a0)) { - { s32 t = *(u16 *)((s32)a0 + 0x34) + 1; *(u16 *)((s32)a0 + 0x34) = t; } - func_8012E8A8(a0); - } - break; - } -} - - -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(u8 *a0); -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); - func_8012B200((u8 *)arg0); - func_8012B178((s32)arg0, (s32)0xFFFC0000); - *(int *)(arg0 + 0x1c) = 0x20; -} - - -extern void func_8017EDA4(void); - -extern s32 func_8012BD14(s32 a0); -extern s32 func_80178BF8(); -extern void func_80172710(void); -extern s32 func_801848DC(void); -extern s32 func_8018625C(void *); - -s32 func_8017EDA4_body(void *a0) __asm__("func_8017EDA4"); - -s32 func_8017EDA4_body(void *a0) -{ - void *p; - u16 st; - - p = *(void **)((s32)a0 + 0x64); - st = *(u16 *)((s32)p + 2); - switch (st) { - case 2: - if (((s32 (*)(void *))func_801848DC)(a0) == 0) { - return 0; - } - p = *(void **)((s32)a0 + 0x64); - if (func_8018625C(p) != 0) { - return 0; - } - *(u16 *)((s32)*(void **)((s32)a0 + 0x64) + 2) = 3; - break; - case 5: - if (*(u16 *)((s32)p + 0x34) != 2) { - return 0; - } - if (func_8012BD14((s32)p) >= 0x4001) { - return 0; - } - *(u16 *)((s32)*(void **)((s32)a0 + 0x64) + 2) = 6; - break; - default: - return 0; - } - func_80178BF8(); - return (s32)func_80172710; -} - - -extern s32 D_8019133C; -extern s32 D_80191364; -extern s32 D_8019138C; -extern s32 D_801913B4; -extern s32 D_80191484; -extern s32 D_80191494; -extern s32 D_8019151C; -extern s32 D_8019152C; -extern s32 D_8019153C; -extern s32 D_8019154C; -extern s32 D_801E7AAC; - -void func_8017EE6C(void) -{ - s32 t; - s32 c; - - t = func_80029504(); - if (t < 0x276) { - c = func_80029178(0x10C) & 0xFF; - if (c != 0) { - *(s32 *)(D_801E7AAC + 4) = (s32)&D_80191364; - } else { - c = func_80029178(0x10D) & 0xFF; - if (c != 0) { - *(s32 *)(D_801E7AAC + 4) = (s32)&D_80191484; - } else { - *(s32 *)(D_801E7AAC + 4) = (s32)&D_8019133C; - } - } - } else if (t < 0x280) { - c = func_80029178(0x10C) & 0xFF; - if (c != 0) { - *(s32 *)(D_801E7AAC + 4) = (s32)&D_8019138C; - } else { - c = func_80029178(0x10D) & 0xFF; - if (c != 0) { - *(s32 *)(D_801E7AAC + 4) = (s32)&D_80191494; - } else { - *(s32 *)(D_801E7AAC + 4) = (s32)&D_801913B4; - } - } - } else if (t < 0x294) { - if (func_800D0F8C(0x63) != 0 || func_800D0F8C(0x64) != 0 || - func_800D0F8C(0x65) != 0 || func_800D0F8C(0x66) != 0) { - *(s32 *)(D_801E7AAC + 4) = (s32)&D_8019152C; - } else { - *(s32 *)(D_801E7AAC + 4) = (s32)&D_8019151C; - } - } else if (t < 0x2E4) { - *(s32 *)(D_801E7AAC + 4) = (s32)&D_8019153C; - } else { - *(s32 *)(D_801E7AAC + 4) = (s32)&D_8019154C; - } -} - - - -extern void func_80184CB8(s32*, s32); - extern short D_801912D8; - void func_8017F02C(void * arg0) { - *(short *)((char *)arg0 + 0x2) = 2; - ((void (*)(s32, s32))func_80184CB8)((int)arg0, (int)&D_801912D8); - } - - -DEFINE_func_8017F058() /* dedup: shared engine-core @0x8017F058 (src/shared) */ - - - -extern void func_80178CBC(s32 a0, s32 a1); - extern short D_80191304; - void func_8017F094(void * arg0) { - *(short *)((char *)arg0 + 0x2) = 4; - func_80178CBC((int)arg0, (int)&D_80191304); - } - - - - - -s32 func_8017F0C0(void) { - /* [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_801E79A0; - return !(D_801E79A0 ^ 1); -} - - -void func_8017F0D8(void) { - func_80029124(0x10C, 1); - func_80029124(0x10D, 0); -} - - -extern void func_80029124(s32 arg0, s32 arg1); - void func_8017F108(void) { - func_80029124(0x10C, 0); - func_80029124(0x10D, 1); - } - - -extern s32 D_801E7AAC; - -void func_8017F138(void) { - extern s32 D_801E79A0; - - if (D_801E79A0 == 1) { - *(s32 *)(D_801E7AAC + 4) = D_801E7AAC + 8; - } else { - *(s32 *)(D_801E7AAC + 4) = D_801E7AAC + 0x18; - } -} - - -DEFINE_func_8017F174() /* dedup: shared engine-core @0x8017F174 (src/shared) */ - -extern void func_80029514(int); -void func_8017F1A8(void) { - func_80029514(0x280); -} - - - - -extern s32 func_80029504(void); -extern s32 func_80184BAC(s32 arg0, s32 arg1); -extern void func_8017F02C(void *arg0); - -void func_8017F1C8(void *a0) -{ - 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) { - func_8017F02C(a0); - } -} - - -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); -extern void func_80178D18(void); -extern void func_80184CB8(s32*, s32); - -void func_8017F28C(void * arg0) { - - extern short D_801912D8; - if (func_80178970() != 0) { - ((void (*)(s32))func_80178D18)((s32)arg0); - *(short *)((char *)arg0 + 0x2) = 2; - ((void (*)(s32, s32))func_80184CB8)((int)arg0, (int)&D_801912D8); - } -} - - -extern s32 func_801847BC(void *a0, void *a1); -extern s32 func_80184BAC(s32 arg0, s32 arg1); -extern void func_80184CB8(s32*, s32); -extern s32 func_801788B8(s32 arg0, s32 arg1); -extern void (*D_801912E0)(void *); -extern short D_801912D8; -extern void func_8017F35C(void *); - -void func_8017F2DC(void *a0) { - s32 v0; - void *v1; - - if (func_801847BC(a0, &D_801912E0) != 0) { - if (func_80184BAC(8, 0x14) != 0) { - *(s16 *)((char *)a0 + 0x2) = 2; - } else { - *(s16 *)((char *)a0 + 0x2) = 1; - } - func_80184CB8((s32 *)a0, (s32)&D_801912D8); - v1 = *(void **)((char *)a0 + 0x68); - *(s16 *)((char *)v1 + 0xC) = 0x7FFF; - *(s32 *)((char *)a0 + 0xD4) = func_801788B8((s32)a0, (s32)&func_8017F35C); - } -} - - -/* func_8017F35C — ov_SC04_019 / src/ov_SC04_019/ov_SC04_019_jr_8017AE2C.c (47 ins) - * - * Body: MATCH standalone (match_one closeness 0) AND verified to emit the identical - * instruction stream when spliced into the real destination TU (§398 decl-environment - * check: whole-file cpp+cc1, byte-for-byte the same 47 instructions). - * - * WHY THE PREVIOUS ATTEMPT'S GATE FAILED (§376, and it is NOT a codegen problem): - * the destination TU already carries, at :5370, - * extern void func_8017F35C(void *); - * for the address-taken reference at :5385 `(s32)&func_8017F35C`. A definition - * spelled `s32 func_8017F35C(void *a0)` is rejected by gcc-2.7.2 with - * conflicting types for `func_8017F35C' - * (verified: cc1 exit 33). The conflict is the RETURN TYPE, so fix_arity_callers - * is a no-op and cast_self_callers does not fire (the site is `&fn`, not a call). - * The prior draft therefore never compiled inside the binary — which is why the - * whole-binary gate reported a residual while the isolated body was already clean. - * - * FIX, entirely inside this file, using THIS TU's own house pattern: the same - * situation was solved for the neighbour func_8017EDA4 at :5140 with a renamed C - * definition plus an assembler alias. No edit outside this draft is required, and - * the caller's `la $5,func_8017F35C` still resolves to this definition. - * - * §378 self-caller cast: the TU declares `extern s32 func_801848DC(void);` (:5136), - * so the one-argument call goes through a typed function-pointer cast exactly as both - * same-TU neighbours func_8017EDA4 (:5150) and func_8017F418 (:5407) do — gcc-2.7.2 - * folds it back to a direct `jal`, byte-neutral. - */ - -extern s32 func_8012E544(s32 a0); -extern s32 func_80178BF8(); -extern void func_80172710(void); -extern s32 func_801848DC(void); -extern s32 func_8018625C(void *); - -s32 func_8017F35C_body(void *a0) __asm__("func_8017F35C"); - -s32 func_8017F35C_body(void *a0) -{ - s32 t; - s32 ok; - - if (*(u16 *)((s32)*(void **)((s32)a0 + 0x64) + 2) != 2) { - return 0; - } - - t = func_8012E544(0x22A); - if (t == 0) { - ok = 1; - } else { - ok = 1; - if (*(u16 *)(t + 2) == 5) { - ok = (*(u16 *)(t + 0x34) == 2); - } - } - if (ok == 0) { - return 0; - } - - if (((s32 (*)(void *))func_801848DC)(a0) == 0) { - return 0; - } - if (func_8018625C(*(void **)((s32)a0 + 0x64)) != 0) { - return 0; - } - - *(u16 *)((s32)*(void **)((s32)a0 + 0x64) + 2) = 3; - func_80178BF8(); - return (s32)func_80172710; -} - - -extern s32 func_8012BD14(s32 a0); -extern s32 func_80178BF8(); -extern s32 func_801848DC(void); -extern void func_80172710(void); - -s32 func_8017F418(a0) -void *a0; -{ - void *p; - u16 st; - - p = *(void **)((s32)a0 + 0x64); - st = *(u16 *)((s32)p + 0x2); - switch (st) { - case 2: - if (((s32 (*)(void *))func_801848DC)(a0) == 0) { - return 0; - } - p = *(void **)((s32)a0 + 0x64); - goto hit; - case 5: - if (*(u16 *)((s32)p + 0x34) != 1) { - goto ret0; - } - goto check; - case 0xB: - if (*(u16 *)((s32)p + 0x34) != 0) { - goto ret0; - } - goto check; - case 8: - check: - if (func_8012BD14((s32)p) >= 0x4001) { - return 0; - } - goto hit; - default: - goto ret0; - } - - -hit: - { - void *p2 = *(void **)((s32)a0 + 0x64); - u16 v = *(u16 *)((s32)p2 + 0x2); - v = v + 1; - *(u16 *)((s32)p2 + 0x2) = v; - } - func_80178BF8(); - return (s32)func_80172710; - -ret0: - return 0; -} - - -extern short D_801B99A8; -extern u8 D_801E396C[]; -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_8017F500(arg0) -void *arg0; -{ - extern short D_801B99A8; - extern u8 D_801E396C[]; - - *(short *)((char *)arg0 + 0x2) = 5; - *(short *)((char *)arg0 + 0x34) = 0; - func_8012E88C((s32)arg0); - ((void (*)(s32, s32))func_8012A828)((s32)arg0, (s32)&D_801B99A8); - func_80184C90((s32)arg0); - func_80184ED4((s32)arg0, (s32)D_801E396C, 0, 0x60); -} - - -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); - -void func_8017F5BC(void *a0) { - D_801916E4[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern s32 func_80029504(void); -extern s32 func_80029178(s32 arg); -extern int func_800D0F8C(int a0); -extern void func_80178CBC(s32, s32); - -void func_8017F5F8(void *a0) { - - extern short D_80191694; - extern short D_801915EC; - s32 t; - s32 v; - - *(short *)((char *)a0 + 0x2) = 0x4; - t = func_80029504(); - v = 0; - if (t >= 0x280) { - if (t < 0x2B2) { - if ((func_80029178(0x107) & 0xFF) != 0) { - if (func_800D0F8C(0x63) != 0) { - v = 3; - } else if (func_800D0F8C(0x64) != 0) { - v = 3; - } else if (func_800D0F8C(0x65) != 0) { - v = 3; - } else if (func_800D0F8C(0x66) != 0) { - v = 3; - } else { - v = 2; - } - } else { - v = 1; - } - } else if (t < 0x2E4) { - v = 4; - } else { - v = 5; - } - } - if (v == 1) { - ((void (*)(s32 *, s32))func_80178CBC)((s32 *)a0, (s32)&D_80191694); - } else { - ((void (*)(s32 *, s32))func_80178CBC)((s32 *)a0, (s32)&D_801915EC); - } -} - - - -extern s32 func_80029504(void); -extern s32 func_80029178(s32 arg); -extern int func_800D0F8C(int a0); -extern void func_80178CBC(s32, s32); - -void func_8017F6D8(void *a0) { - - extern short D_801916C4; - extern short D_80191624; - s32 t; - s32 v; - - *(short *)((char *)a0 + 0x2) = 0x7; - t = func_80029504(); - v = 0; - if (t >= 0x280) { - if (t < 0x2B2) { - if ((func_80029178(0x107) & 0xFF) != 0) { - if (func_800D0F8C(0x63) != 0) { - v = 3; - } else if (func_800D0F8C(0x64) != 0) { - v = 3; - } else if (func_800D0F8C(0x65) != 0) { - v = 3; - } else if (func_800D0F8C(0x66) != 0) { - v = 3; - } else { - v = 2; - } - } else { - v = 1; - } - } else if (t < 0x2E4) { - v = 4; - } else { - v = 5; - } - } - if (v == 1) { - ((void (*)(s32 *, s32))func_80178CBC)((s32 *)a0, (s32)&D_801916C4); - } else { - ((void (*)(s32 *, s32))func_80178CBC)((s32 *)a0, (s32)&D_80191624); - } -} - - - -extern s32 func_80029504(void); -extern s32 func_80029178(s32 arg); -extern int func_800D0F8C(int a0); -extern void func_80178CBC(s32, s32); - -void func_8017F7B8(void *a0) { - - extern short D_801916C4; - extern short D_80191624; - s32 t; - s32 v; - - *(short *)((char *)a0 + 0x2) = 0xd; - t = func_80029504(); - v = 0; - if (t >= 0x280) { - if (t < 0x2B2) { - if ((func_80029178(0x107) & 0xFF) != 0) { - if (func_800D0F8C(0x63) != 0) { - v = 3; - } else if (func_800D0F8C(0x64) != 0) { - v = 3; - } else if (func_800D0F8C(0x65) != 0) { - v = 3; - } else if (func_800D0F8C(0x66) != 0) { - v = 3; - } else { - v = 2; - } - } else { - v = 1; - } - } else if (t < 0x2E4) { - v = 4; - } else { - v = 5; - } - } - if (v == 1) { - ((void (*)(s32 *, s32))func_80178CBC)((s32 *)a0, (s32)&D_801916C4); - } else { - ((void (*)(s32 *, s32))func_80178CBC)((s32 *)a0, (s32)&D_80191624); - } -} - - - -extern s32 func_80029504(void); -extern s32 func_80029178(s32 arg); -extern int func_800D0F8C(int a0); -extern void func_80178CBC(s32, s32); - -void func_8017F898(void *a0) { - - extern short D_801916C4; - extern short D_80191624; - s32 t; - s32 v; - - *(short *)((char *)a0 + 0x2) = 0xa; - t = func_80029504(); - v = 0; - if (t >= 0x280) { - if (t < 0x2B2) { - if ((func_80029178(0x107) & 0xFF) != 0) { - if (func_800D0F8C(0x63) != 0) { - v = 3; - } else if (func_800D0F8C(0x64) != 0) { - v = 3; - } else if (func_800D0F8C(0x65) != 0) { - v = 3; - } else if (func_800D0F8C(0x66) != 0) { - v = 3; - } else { - v = 2; - } - } else { - v = 1; - } - } else if (t < 0x2E4) { - v = 4; - } else { - v = 5; - } - } - if (v == 1) { - ((void (*)(s32 *, s32))func_80178CBC)((s32 *)a0, (s32)&D_801916C4); - } else { - ((void (*)(s32 *, s32))func_80178CBC)((s32 *)a0, (s32)&D_80191624); - } -} - - -extern s32 func_80029504(void); -extern s32 func_80029178(s32); -extern s32 func_800D0F8C(s32); -extern s32 D_801E7AAC; -extern void (*D_801915D4[])(void); - -void func_8017F978(void) -{ - s32 a0 = func_80029504(); - s32 v1; - - if (a0 < 0x280) { - v1 = 0; - } else if (a0 < 0x2B2) { - if ((func_80029178(0x107) & 0xFF) == 0) { - v1 = 1; - } else if (func_800D0F8C(0x63) != 0) { - v1 = 3; - } else if (func_800D0F8C(0x64) != 0) { - v1 = 3; - } else if (func_800D0F8C(0x65) != 0) { - v1 = 3; - } else if (func_800D0F8C(0x66) != 0) { - v1 = 3; - } else { - v1 = 2; - } - } else if (a0 < 0x2E4) { - v1 = 4; - } else { - v1 = 5; - } - - *(s32 *)(D_801E7AAC + 4) = (s32)D_801915D4[v1]; -} - - -extern void func_80029124(s32 a, s32 b); -void func_8017FA34(void) { - func_80029124(0x107, 0x1); -} - - -DEFINE_func_8017FA58() /* dedup: shared engine-core @0x8017FA58 (src/shared) */ - -DEFINE_func_8017FAAC() /* dedup: shared engine-core @0x8017FAAC (src/shared) */ - -extern s32 func_80184FA4(void); -extern s32 func_80185BE0(s32 arg0); -extern u8 D_801E3978[]; -extern void func_8017F564(); -extern void func_80184ED4(s32, s32, s32, s32); - -void func_8017FB0C(void *a0) -{ - u16 v1; - - v1 = *(u16 *)((s32)a0 + 0x34); - - if (v1 == 0) { - goto case0; - } - - if (v1 == 1) { - goto case1; - } - - return; - -case0: - if (func_80185BE0(0x10) == 0) { - return; - } - if (((s32 (*)(s32))func_80184FA4)((s32)a0) == 0) { - return; - } - ((void (*)(void *, void *, s32, s32))func_80184ED4)(a0, D_801E3978, 0, 0x60); - *(s16 *)((s32)a0 + 0x34) = 1; - return; - -case1: - *(s32 *)(*(s32 *)((s32)a0 + 0xCC) + 0xB0) = 2; - if (((s32 (*)(s32))func_80184FA4)((s32)a0) != 0) { - func_8017F564((s32)a0); - } -} - - -extern s16 D_80191570; -extern s32 func_80184FA4(void); -extern s32 func_80185BE0(s32 arg0); -extern u8 D_801E396C[]; -extern void func_80184CB8(s32*, s32); -extern void func_80184ED4(s32, s32, s32, s32); - -void func_8017FBB0(void *a0) { - s32 v0; - u16 v1; - - v1 = *(u16 *)((u8 *)a0 + 0x34); - switch (v1) { - case 0: - v0 = ((s32 (*)(void *))func_80184FA4)(a0); - if (v0 != 0) { - ((void (*)(void *, void *, s32, s32))func_80184ED4)(a0, D_801E396C, 1, 0x60); - *(u16 *)((u8 *)a0 + 0x34) = 1; - } - break; - case 1: - v0 = func_80185BE0(0x10); - if (v0 != 0) { - v0 = ((s32 (*)(void *))func_80184FA4)(a0); - if (v0 != 0) { - *(u16 *)((u8 *)a0 + 0x2) = 2; - ((void (*)(void *, void *))func_80184CB8)(a0, ((u8 *)&D_80191570)); - } - } - break; - } -} - - -extern s32 func_80184BD0(u8 a0, u8 a1, u8 a2, u8 a3); -extern void func_8012E88C(s32); -extern void func_8012A828(s32 *a0, s32 a1); -extern void func_80184C90(s32); -extern void func_80184ED4(s32, s32, s32, s32); -extern u8 D_801E3978[]; - -void func_8017FC58(void *arg0) { - - extern short D_801B99A8; - if (func_80184BD0(0xB, 0, 0xE, 0xF) != 0) { - return; - } - *(short *)((char *)arg0 + 0x2) = 0xB; - *(short *)((char *)arg0 + 0x34) = 0; - func_8012E88C((s32)arg0); - func_8012A828((s32 *)arg0, (s32)&D_801B99A8); - func_80184C90((s32)arg0); - func_80184ED4((s32)arg0, (s32)D_801E3978, 1, 0x60); -} - - - -extern int func_80178970(void); -extern void func_80178D18(void); -extern void func_80184CB8(s32*, s32); - -void func_8017FCD8(void * arg0) { - - extern short D_80191570; - if (func_80178970() != 0) { - ((void (*)(s32))func_80178D18)((s32)arg0); - *(short *)((char *)arg0 + 0x2) = 2; - ((void (*)(s32, s32))func_80184CB8)((int)arg0, (int)&D_80191570); - } -} - - -DEFINE_func_8017FD28() /* dedup: shared engine-core @0x8017FD28 (src/shared) */ - -DEFINE_func_8017FD88() /* dedup: shared engine-core @0x8017FD88 (src/shared) */ - - - -extern s32 func_801789AC(s32 arg0); -extern void func_80178D18(void); -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 short D_80191578; -extern short D_801B9950; - -void func_8017FDE4(void *a0) { - if (func_801789AC((s32)a0) != 0) { - ((void (*)(s32))func_80178D18)((s32)a0); - *(short *)((char *)a0 + 0x2) = 8; - func_8012E8E0((s32)a0, (s32)&D_80191578); - func_8012E88C((s32)a0); - func_80184C90((s32)a0); - func_8012A828((s32 *)a0, (s32)&D_801B9950); - } -} - - -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); - -void func_8017FF34(void *a0) { - D_80191814[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern s32 D_80126B9C; -extern s32 D_80191744; -extern s32 D_8019171C; -extern s32 func_80178B18(s32 param_1, s32 param_2); -extern int func_80178970(void); -extern void func_80178D18(void); -extern void func_80029514(s32); -extern void func_80184CB8(s32*, s32); - -void func_8017FF70(void *a0) { - u16 v1; - - v1 = *(u16 *)((s32)a0 + 0x34); - switch (v1) { - case 0: - if ((D_80126B9C & 0x8000000) != 0) { - *(u16 *)((s32)a0 + 0x34) = 1; - func_80178B18((s32)a0, (s32)&D_80191744); - } - break; - case 1: - if (((s32 (*)(s32))func_80178970)((s32)a0) != 0) { - ((void (*)(s32))func_80178D18)((s32)a0); - func_80029514(0x2B2); - *(u16 *)((s32)a0 + 0x34) = 2; - ((void (*)(s32, s32))func_80184CB8)((s32)a0, (s32)&D_8019171C); - } - break; - case 2: - break; - } -} - - - -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_8012B2CC(s32 a0); -extern void func_8012CAE4(void *a0); -extern void func_8012C1B8(void); -extern void func_8001C214(s32 a0, s32 a1); -extern s32 func_80029504(void); - -void func_8018001C(void *arg0) { - extern short D_801C7A90; - extern s32 D_8019171C; - extern short D_801B9B50; - s32 t; - s32 v; - s32 v1; - - t = func_80029504(); - if ((u32)(t - 0x2A8) >= 10) { - func_8012CAE4(arg0); - return; - } - v = ((s32 (*)())func_8012C1B8)(); - *(s32 *)((s32)arg0 + 0x20) = v; - if (v == 0) { - func_8012CAE4(arg0); - } - func_8001C214(*(s32 *)((s32)arg0 + 0x20), (s32)&D_801C7A90); - func_80184C90((s32)arg0); - v1 = *(s32 *)((s32)arg0 + 0x68); - *(short *)((s32)arg0 + 0x2) = 1; - *(short *)((s32)arg0 + 0x34) = 0; - *(short *)(v1 + 0xC) = 0x7FFF; - func_8012E8E0((s32)arg0, (s32)&(*(short *)&D_8019171C)); - func_8012B2CC((s32)arg0); - func_8012E88C((s32)arg0); - func_8012A828((s32 *)arg0, (s32)&D_801B9B50); -} - - -DEFINE_func_801800E0() /* dedup: shared engine-core @0x801800E0 (src/shared) */ - - - - - -s32 func_8018011C(void) { - /* [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_801E79A0; - return !(D_801E79A0 ^ 1); -} - - -extern void func_800D1724(s32); -void func_80180134(void) { - - extern s32 D_80190F88; - ((s32 (*)(s32 *))func_800D1724)(&D_80190F88); -} - - -DEFINE_func_8018015C() /* dedup: shared engine-core @0x8018015C (src/shared) */ - - -extern void func_80178CBC(s32 a0, s32 a1); - extern short D_80191874; - void func_80180164(void * arg0) { - *(short *)((char *)arg0 + 0x2) = 3; - func_80178CBC((int)arg0, (int)&D_80191874); - } - - -#include "common.h" - -DEFINE_func_80180190() /* dedup: shared engine-core @0x80180190 (src/shared) */ - - -extern s32 func_80029504(void); -extern void func_8012CAE4(void *a0); -extern void func_8012C1B8(void); -extern void func_8001C214(s32 a0, s32 a1); -extern void func_80184CB8(s32*, s32); -extern s32 func_801788B8(s32 arg0, s32 arg1); -extern s32 func_80180284(); - -void func_801801E0(void *arg0) { - extern short D_8019181C; - s32 t; - s32 v; - void *v1; - - t = func_80029504(); - if ((u32)(t - 0xC8) >= 0x1AE) { - func_8012CAE4(arg0); - return; - } - v = ((s32 (*)())func_8012C1B8)(); - *(s32 *)((char *)arg0 + 0x20) = v; - if (v == 0) { - func_8012CAE4(arg0); - } - func_8001C214(*(s32 *)((char *)arg0 + 0x20), 0); - *(s16 *)((char *)arg0 + 2) = 1; - func_80184CB8((s32 *)arg0, (s32)&D_8019181C); - v1 = *(void **)((char *)arg0 + 0x68); - *(s16 *)((char *)v1 + 0xC) = 0x7FFF; - *(s32 *)((char *)arg0 + 0xD4) = func_801788B8((s32)arg0, (s32)&func_80180284); -} - - - - -extern s32 func_800133E4(s16 *a0, s16 *a1); -extern s32 func_80178BF8(); -extern void func_80172710(void); -extern s32 D_80126B58; -extern s32 D_80126B9C; -extern u16 D_80126B5E; -extern u16 D_80126B66; - -s32 func_80180284(void *a0) -{ - extern s16 D_8019181C; - s16 *p; - s32 r; - - if (*(u16 *)(*(s32 *)((s32)a0 + 0x64) + 0x2) != 1) { - return 0; - } - p = (s16 *)&D_80126B58; - if ((D_80126B9C & 0x8000000) == 0) { - r = 0; - goto chain_fail; - } - p += 2; - if (func_800133E4((s16 *)&D_8019181C, p) >= 0x6401) { - r = 0; - goto chain_fail; - } - if (*(s16 *)&D_80126B5E >= 0x281) { - r = 0; - goto chain_fail; - } - r = *(s16 *)&D_80126B66 >= -0x380; -chain_fail: - if (r) { - *(u16 *)(*(s32 *)((s32)a0 + 0x64) + 0x2) = 2; - func_80178BF8(); - return (s32)func_80172710; - } - return 0; -} - - - -/* func_8018034C — state-entry init (family exemplar, reach x11). - * Sets the actor's state id (halfword @ +0x2) then runs the fixed - * five-call entry chain. Sibling style copied from func_80180164 - * in the same TU (cookbook §71). */ - -extern void func_8012E8E0(s32, s32); -extern void func_8012E88C(s32); -extern void func_8012A828(s32 *a0, s32 a1); /* fleet-canonical sig (TU L3775) */ -extern void func_80184C90(s32); -extern void func_80184ED4(s32, s32, s32, s32); - - -void func_8018034C(void *arg0) { - - extern short D_801918F4; - extern short D_801B9DF8; - extern short D_801B65B8; - *(short *)((char *)arg0 + 0x2) = 2; - func_8012E8E0((s32)arg0, (s32)&D_801918F4); - func_8012E88C((s32)arg0); - func_8012A828((s32 *)arg0, (s32)&D_801B9DF8); - func_80184C90((s32)arg0); - func_80184ED4((s32)arg0, (s32)&D_801B65B8, 0, 0x60); -} - - -DEFINE_func_801803BC() /* dedup: shared engine-core @0x801803BC (src/shared) */ - -DEFINE_func_8018042C() /* dedup: shared engine-core @0x8018042C (src/shared) */ - - -DEFINE_func_8018048C() /* dedup: shared engine-core @0x8018048C (src/shared) */ - - -extern void func_80178CBC(s32, s32); -extern short D_8019195C; - -void func_801804C8(s32 arg0) { - *(short *)((char *)arg0 + 0x2) = 0x5; - ((void (*)(s32 *, s32))func_80178CBC)((s32 *)arg0, (s32)&D_8019195C); - *(short *)((char *)arg0 + 0x34) = 0; -} - - - -extern s32 func_80184DD0(s32 a0); - -void func_80180504(s32 a0) { - - extern s32 D_80191918[]; - s32 idx = func_80184DD0(a0); - *(s32 *)(a0 + 0xE4) = D_80191918[idx]; -} - - - -extern s32 func_80029178(s32 arg); - extern void func_80029124(s32, s32); - s32 func_80180544(void) { - if ((func_80029178(0x110) & 0xFF) == 0) { - ((void (*)(void *, s32))func_80029124)((void *)0x110, 1); - return 1; - } - return 0; - } - - - -/* func_80180580 — guarded dispatch: ask func_80184BAC(9, 0x11); if it answers - * NON-zero, run func_8018034C on the incoming entity. The entity pointer is - * live across the jal, so it lands in $s0 and comes back out as $a0. - * §71 sibling: func_80181B34 in this same TU is the identical shape. - * §3-T4: target branch is `beqz $v0, ret` => the C condition is `!= 0` - * (the sibling's is `bnez` => `== 0`; polarity is read off the opcode). */ - -extern s32 func_80184BAC(s32 arg0, s32 arg1); -extern void func_8018034C(void *arg0); - -void func_80180580(void *arg0) { - if (func_80184BAC(9, 0x11) != 0) { - func_8018034C(arg0); - } -} - - -void func_801805C0(s32 arg0) { - extern void func_80185F54(void*, s32, s32); - extern s32 func_80185BE0(s32); - extern s32 func_80184FA4(void); - 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(void); - extern s32 func_80184BAC(s32 arg0, s32 arg1); - extern void func_8018042C(s32 a0); - extern void func_80184ED4(s32, s32, s32, s32); - - if (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; -extern void func_8012A828(s32 *a0, s32 a1); -extern void func_80178D18(void); - -void func_8018067C(arg0) -void * arg0; -{ - - extern s32 D_801B9DF8; - if (func_80178970() != 0) { - ((void (*)(s32))func_80178D18)((s32)arg0); - *(short *)((char *)arg0 + 0x2) = 3; - ((void (*)(s32, s32))func_8012A828)((int)arg0, (int)&(*(short *)&D_801B9DF8)); - } -} - - -extern void func_80185F54(void *, s32, s32); -extern s32 func_80185BE0(s32); -extern s32 func_80184FA4(void); -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); -extern void func_8012E88C(s32); -extern void func_8012A828(s32*, s32); -extern void func_80184C90(s32); -extern void func_80184ED4(s32, s32, s32, s32); -extern void func_80185FB8(s32, s32, s32); -extern s32 func_801788B8(s32, s32); -extern void func_80184CB8(s32*, s32); -extern s16 D_80191904; - -void func_80180740(void *a0) { - extern short D_801918F4; - extern s32 D_801B9DF8; - extern short D_801B65C8; - extern s32 func_80180814(void *a0); - void *s0 = a0; - s32 v0; - void *v1; - - if (func_801847BC(a0, &D_80191904) != 0) { - v0 = func_80184BAC(9, 0x11); - if (v0 != 0) { - *(short *)((char *)s0 + 2) = 3; - func_8012E88C((s32)s0); - ((void (*)(s32, s32))func_8012A828)((s32)s0, (s32)&(*(short *)&D_801B9DF8)); - func_80184C90((s32)s0); - func_80184ED4((s32)s0, (s32)&D_801B65C8, 0, 0x40); - } else { - *(short *)((char *)s0 + 2) = 1; - ((void (*)(s32, s32))func_80184CB8)((s32)s0, (s32)&D_801918F4); - } - func_80185FB8((s32)s0, 0xC, 1); - v1 = *(void **)((char *)s0 + 0x68); - *(short *)((char *)v1 + 0xC) = 0x7FFF; - *(s32 *)((char *)s0 + 0xD4) = func_801788B8((s32)s0, (s32)&func_80180814); - } -} - - - -extern s32 func_8012BD14(s32 a0); -extern s32 func_80178BF8(); -extern void func_80172710(void); - -s32 func_80180814(void *a0) -{ - s32 ptr; - u16 st; - - ptr = *(s32 *)((s32)a0 + 0x64); - st = *(u16 *)((s32)ptr + 0x2); - if (st != 3) { - return 0; - } - - if (func_8012BD14(ptr) >= 0x4001) { - return 0; - } - - { - s32 p; - u16 st2; - p = *(s32 *)((s32)a0 + 0x64); - st2 = *(u16 *)((s32)p + 0x2); - st2++; - *(u16 *)((s32)p + 0x2) = st2; - } - func_80178BF8(); - return (s32)func_80172710; -} - - - - -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_80184ED4(s32, s32, s32, s32); - - -void func_80180888(void *arg0) { - - extern short D_801919E0; - extern short D_801B6614; - /* [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 short D_801B9AA8; - *(short *)((char *)arg0 + 0x2) = 2; - func_8012E8E0((s32)arg0, (s32)&D_801919E0); - 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_801B6614, 0, 0x60); -} - - - - -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); - - -void func_801808FC(void *a0) { - - extern short D_801919E8; - extern short D_801B9B50; - *(short *)((char *)a0 + 0x2) = 3; - func_8012E8E0((s32)a0, (s32)&D_801919E8); - func_8012E88C((s32)a0); - func_8012A828((s32 *)a0, (s32)&D_801B9B50); - func_80184C90((s32)a0); -} - - -DEFINE_func_80180954() /* dedup: shared engine-core @0x80180954 (src/shared) */ - -extern void func_80184CB8(s32 *a0, s32 a1); - extern short D_801919E0; - void func_801809DC(short *a0) { - *(short *)((char *)a0 + 0x2) = 0x5; - func_80184CB8((s32 *)a0, (s32)&D_801919E0); - } - - -extern s32 func_801847BC(void *a0, void *a1); -extern s32 func_80184BAC(s32 a0, s32 a1); -extern void func_8012E88C(s32); -extern void func_8012A828(s32*, s32); -extern void func_80184C90(s32); -extern s32 func_801788B8(s32, s32); -extern void func_80184CB8(s32*, s32); -extern void func_8012E8E0(s32, s32); -extern s32 func_80184DD0(); -extern s32 func_80029504(void); -extern s32 func_80180CC0(void*); -extern s32 func_80180D38(void*); - -void func_80180A08(void *arg0) { - - extern short D_801919F0; - extern short D_801919E0; - extern short D_801919E8; - extern short D_801B9B50; - - void *s0 = arg0; - void *ptr; - s32 code; - s32 a0val; - s32 dd; - s32 sel; - - if (func_801847BC(arg0, &D_801919F0) == 0) { - return; - } - - func_80184CB8((s32 *)s0, (s32)&D_801919E0); - - ptr = *(void **)((u8 *)s0 + 0x68); - *(s16 *)((u8 *)ptr + 0xC) = 0x7FFF; - - *(s32 *)((u8 *)s0 + 0xD4) = func_801788B8((s32)s0, (s32)&func_80180CC0); - *(s32 *)((u8 *)s0 + 0xD8) = func_801788B8((s32)s0, (s32)&func_80180D38); - - dd = ((s32 (*)(void))func_80184DD0)(); - 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: - - { - s16 next_state; - switch (code) { - case 0: - *(s16 *)((u8 *)s0 + 0x2) = 3; - func_8012E8E0((s32)s0, (s32)&D_801919E8); - func_8012E88C((s32)s0); - func_8012A828((s32)s0, (s32)&D_801B9B50); - func_80184C90((s32)s0); - break; - case 1: - next_state = 5; - goto set_and_notify; - case 2: - next_state = 1; - set_and_notify: - *(s16 *)((u8 *)s0 + 0x2) = next_state; - func_80184CB8((s32 *)s0, (s32)&D_801919E0); - break; - } - } -} - - - -extern void (*D_80191A80[])(void); - -void func_80180B6C(void *a0) { - D_80191A80[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern s32 func_8018203C(s32 a0); -extern short D_801919E8; -extern short D_801B9B50; -extern void func_8012A828(s32*, s32); -extern void func_8012E88C(s32); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_80178CBC(s32, s32); - -void func_80180BA8(void *a0) { - s32 v0; - - *(short *)((char *)a0 + 0x2) = 9; - func_8012E8E0((s32)a0, (s32)&D_801919E8); - func_8012E88C((s32)a0); - ((void (*)(s32, s32))func_8012A828)((s32)a0, (s32)&D_801B9B50); - v0 = func_8018203C((s32)a0); - ((void (*)(s32, s32))func_80178CBC)((s32)a0, v0); -} - - - -extern void func_80178CBC(s32 a0, s32 a1); - extern short D_80191A20; - void func_80180C0C(void * arg0) { - *(short *)((char *)arg0 + 0x2) = 7; - func_80178CBC((int)arg0, (int)&D_80191A20); - } - - -extern s32 func_80029504(void); -extern s32 func_80184DD0(s32 a0); -extern s32 D_801E2344[]; -extern s32 D_801E22B4[]; -extern s32 D_80191A04[]; - -void func_80180C38(void *a0) { - s32 s1; - s32 v1; - - s1 = func_80184DD0((s32)a0); - v1 = func_80029504(); - if (s1 == 2) { - if (v1 < 0x276) { - *(s32 *)((s32)a0 + 0xE4) = (s32)D_801E2344; - } else { - *(s32 *)((s32)a0 + 0xE4) = (s32)D_801E22B4; - } - } else { - *(s32 *)((s32)a0 + 0xE4) = D_80191A04[s1]; - } -} - - - -extern void func_80172710(void); -extern s32 func_801848DC(void); -extern s32 func_8018625C(void *); -extern s32 func_80178BF8(void); - -s32 func_80180CC0(void *a0) -{ - void *s0 = a0; - void **v0p; - u16 v1; - - v0p = (void **)(s0 + 0x64); - v1 = *(u16 *)(*v0p + 0x2); - if (v1 != 0x5) { - return 0; - } - - if (func_801848DC() == 0) { - return 0; - } - - if (func_8018625C(*v0p) != 0) { - return 0; - } - - *(u16 *)(*v0p + 0x2) = 0x6; - func_80178BF8(); - - return (s32)func_80172710; -} - - - -/* func_80180D38 — state-machine callback registered by func_80180A08. - * - * Shape (read off the target, not off Ghidra — the Ghidra seed is for a - * different address entirely): - * - guard call func_8012BD14(a0->0x64), bail if result > 0x4000 - * - switch on the u16 at +2 of a0->0x64, cases 3 / 2 / 4 (gcc balances the - * tree on the middle case 3, hence `slti $v0,$v1,4` for "index > node->high") - * - the comparison constants for the case-2/case-4 sub-tests ride in the - * dispatch branch delay slots (§3-T4: read the constant off the delay slot, - * not off the branch line) — case 2 tests +0x34 == 1, case 4 tests +0x34 == 0 - * - the two adjacent globals get their own `lui $at` each => two separate - * symbols, NOT one array (§20 pointer-var rule does not apply here) - * - +0x34 is reloaded after the D_801E7010 store, and 0x64 is reloaded too: - * gcc-2.7.2 CSE invalidates memory on the global store, so re-express both - */ - -DEFINE_func_80180D38() /* dedup: shared engine-core @0x80180D38 (src/shared) */ - - -void func_80180E28(s32 a0) { - s32 s2; - s32 code; - s32 a0val; - s32 dd; - s32 sel; - - s2 = a0; - *(s32 *)(*(s32 *)(s2 + 0xCC) + 0xB0) = 2; - dd = func_80184DD0(a0); - 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: - func_80180888((void *)a0); - break; - case 1: - func_801809DC((void *)a0); - break; - case 2: - break; - } -} - - - -extern s32 func_80185BE0(s32 a0); -extern s32 func_80184FA4(void); -extern void func_80184ED4(s32, s32, s32, s32); -extern void func_801808FC(void *a0); - -void func_80180EE8(void *a0) -{ - - extern u8 D_801B6620[]; - if (*(u16 *)((s32)a0 + 0x34) == 0) { - if (func_80185BE0(6) == 0) { - return; - } - if (((s32 (*)(s32))func_80184FA4)((s32)a0) == 0) { - return; - } - ((void (*)(void *, void *, s32, s32))func_80184ED4)(a0, D_801B6620, 0, 0x40); - *(s16 *)((s32)a0 + 0x34) = 1; - return; - } - - *(s32 *)(*(s32 *)((s32)a0 + 0xCC) + 0xB0) = 2; - if (((s32 (*)(s32))func_80184FA4)((s32)a0) != 0) { - func_801808FC(a0); - } -} - - -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); -extern void func_8012E8E0(s32, s32); -extern void func_8012E88C(s32); -extern void func_8012A828(s32 *a0, s32 a1); -extern void func_80184C90(s32); - - -void func_80181020(void *a0) { - - extern short D_801919E8; - extern short D_801B9B50; - if (func_80178970() != 0) { - ((void (*)(s32))func_80178D18)((s32)a0); - *(short *)((char *)a0 + 0x2) = 3; - func_8012E8E0((s32)a0, (s32)&D_801919E8); - func_8012E88C((s32)a0); - func_8012A828((s32 *)a0, (s32)&D_801B9B50); - func_80184C90((s32)a0); - } -} - - -void func_80181090(void *arg0) { - extern short D_801B6614; - extern s32 func_80184FA4(void); - extern void func_80184ED4(s32, s32, s32, s32); - extern s32 func_80185BE0(s32); - extern void func_801809DC(short*); - if (*(u16 *)((s32)arg0 + 0x34) == 0) { - if (((s32 (*)(void))func_80184FA4)() != 0) { - func_80184ED4((s32)arg0, (s32)&D_801B6614, 1, 0x40); - *(s16 *)((s32)arg0 + 0x34) = 1; - *(s32 *)((s32)arg0 + 0x1C) = 0x20; - } - } else if (func_80185BE0(6) != 0) { - if (((s32 (*)(s32))func_80184FA4)((s32)arg0) != 0) { - ((void (*)(void *))func_801809DC)(arg0); - } - } -} - - -extern s32 func_80029504(void); -extern s32 func_80184BAC(s32 arg0, s32 arg1); -extern s32 func_80184DD0(s32 a0); -extern short D_801919E0; -extern void func_80184CB8(s32*, s32); - -void func_80181124(arg0) -void *arg0; -{ - extern s32 func_80029504(void); - extern s32 func_80184BAC(s32 arg0, s32 arg1); - extern void func_80184CB8(s32*, s32); - extern s32 func_80184DD0(s32 a0); - extern short D_801919E0; - - void *s2 = arg0; - s32 state; - s32 dd; - s32 sel; - s32 code; - s32 a0val; - - state = 2; - *(s32 *)(*(s32 *)((char *)s2 + 0xCC) + 0xB0) = state; - dd = func_80184DD0((s32)arg0); - sel = func_80029504(); - - if (dd == state && 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: - *(s16 *)((char *)s2 + 0x2) = 1; - func_80184CB8((s32 *)s2, (s32)&D_801919E0); - break; - case 1: - break; - case 2: - *(s16 *)((char *)s2 + 0x2) = 1; - func_80184CB8((s32 *)s2, (s32)&D_801919E0); - break; - } -} - - -#include "common.h" - -DEFINE_func_801811F4() /* dedup: shared engine-core @0x801811F4 (src/shared) */ - - -extern void func_80178CBC(s32 arg0, s32 arg1); - extern short D_80191A58; - void func_80181244(short *param) { - param[1] = 0xB; - func_80178CBC((int)param, (int)&D_80191A58); - } - - -DEFINE_func_80181270() /* dedup: shared engine-core @0x80181270 (src/shared) */ - - -extern void func_80184CB8(s32 *a0, s32 a1); - extern short D_80191AB0; - void func_801812D0(short *a0) { - *(short *)((char *)a0 + 0x2) = 0x2; - func_80184CB8((s32 *)a0, (s32)&D_80191AB0); - } - - - -DEFINE_func_801812FC() /* dedup: shared engine-core @0x801812FC (src/shared) */ - - -extern void func_80178CBC(s32 arg0, s32 arg1); - extern short D_80191AE8; - void func_80181338(short *param) { - param[1] = 4; - func_80178CBC((int)param, (int)&D_80191AE8); - } - - - -extern s32 func_80184DD0(s32 a0); - -void func_80181364(s32 a0) { - - extern s32 D_80191ACC[]; - s32 idx = func_80184DD0(a0); - *(s32 *)(a0 + 0xE4) = D_80191ACC[idx]; -} - - -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); -extern short D_80191AB0; - -void func_80181400(s32 *arg0) { - s32 res; - s32 flag; - *(s32 *)(*(s32 *)((s32)arg0 + 0xCC) + 0xB0) = 2; - res = func_8012E544(0x2A0); - if (res == 0) { - flag = 0; - } else { - flag = (*(u16 *)((char *)res + 2) == 3); - } - if (flag == 0) { - *(short *)((char *)arg0 + 0x2) = 1; - func_80184CB8((s32 *)arg0, (s32)&D_80191AB0); - } -} - - - -extern int func_80178970(void); -extern void func_80178D18(void); -extern void func_80184CB8(s32*, s32); - -void func_80181474(void * arg0) { - - extern short D_80191AB0; - if (func_80178970() != 0) { - ((void (*)(s32))func_80178D18)((s32)arg0); - *(short *)((char *)arg0 + 0x2) = 2; - ((void (*)(s32, s32))func_80184CB8)((int)arg0, (int)&D_80191AB0); - } -} - - -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); -extern s32 func_801848DC(void); -extern s32 func_8018625C(void *); -extern s32 func_80178BF8(void); - -s32 func_80181564(void *a0) -{ - void *s0 = a0; - void **v0p; - u16 v1; - - v0p = (void **)(s0 + 0x64); - v1 = *(u16 *)(*v0p + 0x2); - if (v1 != 0x2) { - return 0; - } - - if (func_801848DC() == 0) { - return 0; - } - - if (func_8018625C(*v0p) != 0) { - return 0; - } - - *(u16 *)(*v0p + 0x2) = 0x3; - func_80178BF8(); - - return (s32)func_80172710; -} - - -DEFINE_func_801815DC() /* dedup: shared engine-core @0x801815DC (src/shared) */ - -DEFINE_func_80181648() /* dedup: shared engine-core @0x80181648 (src/shared) */ - -extern void func_8012E88C(s32); -extern void func_8012A828(s32 *a0, s32 a1); -extern void func_80184C90(s32); -extern void func_80184ED4(s32, s32, s32, s32); - -void func_801816A8(void *arg0) { - extern short D_801B99A8; - extern u8 D_801B6638[]; - *(short *)((char *)arg0 + 0x2) = 6; - func_8012E88C((s32)arg0); - func_8012A828((s32 *)arg0, (s32)&D_801B99A8); - func_80184C90((s32)arg0); - *(short *)((char *)arg0 + 0x34) = 0; - func_80184ED4((s32)arg0, (s32)&D_801B6638, 1, 0x80); -} - - - -extern void func_80184CB8(s32*, s32); - extern short D_80191B34; - void func_8018170C(void * arg0) { - *(short *)((char *)arg0 + 0x2) = 7; - ((void (*)(s32, s32))func_80184CB8)((int)arg0, (int)&D_80191B34); - } - - -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) */ - - -#include "common.h" - -void func_801817B8(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) = 0xA; - func_8012E88C((s32)arg0); - func_8012A828((s32 *)arg0, (s32)&D_801B99A8); - func_80184C90((s32)arg0); - *(short *)((char *)arg0 + 0x34) = 0; -} diff --git a/src/ov_SC04_019/ov_SC04_019_jr_80181804.c b/src/ov_SC04_019/ov_SC04_019_jr_80181804.c deleted file mode 100644 index df32a5abf..000000000 --- a/src/ov_SC04_019/ov_SC04_019_jr_80181804.c +++ /dev/null @@ -1,4889 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8; -typedef void (*Handler)(struct Entry_8016E95C *); -extern void func_801458E0(void); -extern s32 D_800AE6AC; -extern s32 D_800AE6B0; -extern u8 D_80078E50; -extern void func_800D185C(u8 *a0); -extern void func_801458E8(void); -extern s32 func_80029504(void); -extern void func_80145B24(void); -extern u8 D_8018F74C; -extern u8 D_8018F6BC; -extern u8 D_8018F698; -extern u8 D_8018F674; -extern u8 D_8018F728; -extern u8 D_8018F704; -extern u8 D_8018F6E0; -extern u8 D_8018F650; -extern void func_80145934(void); -extern u8 D_8018F7DC; -extern u8 D_8018F7B8; -extern u8 D_8018F794; -extern u8 D_8018F770; -extern void func_80145A2C(void); -extern s32 func_800291DC(s32); -extern void func_800291C8(s32, s32); -extern void func_80162120(void); -extern void func_80029124(s32, s32); -extern s32 func_80165A50(s32); -extern void func_80029514(s32); -extern u8 D_80078EC0; -extern s32 func_80028FBC(void); -extern s32 func_80029000(void); -extern s32 func_80028D9C(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_80145BF8(void); -extern s32 func_800291B4(s32 arg); -extern void func_800291A0(s32, s32); -extern void func_80145C54(void); -extern s32 func_80145CEC(); -extern s32 func_80029178(s32 arg); -extern void func_80146014(s32 a0); -extern unsigned char D_8018EBD4[]; -extern unsigned char D_8018EC04[]; -extern unsigned char D_8018EC54[]; -extern unsigned char D_8018EC84[]; -extern unsigned char D_8018ECB4[]; -extern void func_80145EE8(s32 param_1); -extern void MoveImage(void *a0, s32 a1, s32 a2); -extern void func_80146074(void); -extern s32 func_80146128(void); -extern void func_80146360(void); -extern void func_801463A0(); -extern void func_8014607C(void); -extern s32 *D_80126B78; -extern u8 D_80078EC1; -extern s32 D_80078EC8; -extern s32 D_80126B9C; -extern s32 D_8011F730; -extern u16 D_801152B8; -extern u16 D_8012693A; -extern u8 D_80126BE0[]; -extern u8 D_801150F0[]; -extern void *memcpy(void *dst, const void *src, u32 n); -extern void func_80146FC4(s32 a0); -extern void func_80150A70(s32 a0); -extern void func_80147098(s32 *a0); -extern void func_8014A638(s32 arg0); -extern s32 func_80155458(s32 a0); -extern s32 func_80029104(void); -extern void func_80029344(void); -extern void func_8014ADE0(s32 a0); -extern void func_8014B350(s32 a0); -extern void func_8014B7A4(s16 *param_1); -extern s32 func_80161D58(s32 a0); -extern void func_80161A90(s32 a0); -extern void func_8014B504(u16 *a0); -extern void func_80149BEC(s32 a0); -extern void func_8014B5D0(s32 *a0); -extern void func_8014C99C(u8 *a0); -extern void func_8014B190(s32 s0); -extern void func_80148648(s32 a0, s32 a1); -extern s32 func_80149228(s32 a0); -extern void func_8014A59C(s32 a0); -extern void func_8016F14C(void *a0); -extern void func_80154418(void *a0); -extern void func_80154BE4(s32 a0); -extern void func_80165694(s32 arg0); -extern void func_801654A8(s32 a0); -extern void func_8014A680(s32 a0); -extern void func_8014A6A8(s32 a0); -extern void func_8014A71C(s32 a0); -extern void func_80172588(s32 *a0); -extern void func_801473DC(s32 *a0); -extern void func_80015978(s32 a0, s32 *a1); -extern void (*D_8018ED04[])(void *); -extern u8 D_80126BA4; -extern s32 D_80127098; -extern s32 D_80127094; -extern s32 D_80127090; -extern void func_80146534(void); -extern void func_8001D074(s32 a0, s32 a1); -extern void func_80146554(void); -extern void func_80146578(void); -extern void func_8001CFDC(s32, s32); -extern void func_8014659C(void); -extern void func_8001D074(s32, s32); -extern void func_801465C0(void); -extern void func_801465E4(void); -extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); -extern s32 D_8011F9D0; -extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); -extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 D_8011F750; -extern s32 D_8011F754; -extern u8 * func_801468C8(s32 arg0, u8 arg1); -extern s32 D_8011D030; -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); -extern s32 func_80146B9C(void *a0); -extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); -extern u16 D_8011DA28; -extern s32 func_80146B9C(void * arg0); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80146CA0(void *a0); -extern void func_80146CB4(void *a0); -extern void func_80146CC8(s32 a0); -extern void func_80146D30(s32 a0); -extern void func_80146D80(s32 *a0); -extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80146D90(s32 a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); -extern void func_80146E90(s32 *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80015954(s32 a0, s32 a1); -extern void func_80149374(s32 a0, s32 a1); -extern void func_80146F58(s32 a0, s32 a1); -extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 func_8012A68C(void); -extern s16 func_8012A758(void); -extern void func_8004978C(s16 *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern u8 D_80126DB0[]; -extern u16 D_80126DB6; -extern void func_8014704C(s32 *a0); -extern s32 func_80147054(void *a0); -extern void func_80147060(u8 * a0); -extern void func_8014706C(void *arg0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80147084(s32 *a0); -extern void func_8014708C(void *arg0); -extern s32 func_801470A0(void *a0); -extern void func_801470AC(s32 *a0); -extern void func_801470B4(s32 arg0); -extern void func_801470C0(s32 a0); -extern void func_80147118(s32 a0); -extern s16 D_80126BB8; -extern s16 D_80126BBA; -extern s16 D_80126BBC; -extern void func_80147264(s32 a0); -extern void func_80147290(void); -extern void func_801472B4(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void *D_8012707C; -extern void func_801472DC(void); -extern void func_801472F0(void *a0); -extern void func_80147364(u16, s32); -extern void func_80147300(u16 arg0); -extern void func_80147324(s32 arg0); -extern void func_801473EC(s32 *a0); -extern void func_80147460(s32 a0); -extern void func_80147514(); -extern void func_80147628(s32 a0); -extern void func_80147478(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); -extern s32 func_800129CC(s32 a0, s32 a1); -extern void func_80147514(s32 arg0); -extern void func_80013F3C(s32 a0); -extern void func_80012558(s32 a0, s32 a1); -extern void func_800126C4(s32 a0, s32 a1); -extern void func_800123F0(s32 a0, s32 a1); -extern void func_80147718(s32 a0); -extern void func_80147788(void *a0, s32 a1); -extern void func_801477A8(void *a0, s32 a1); -extern void func_801477C8(void *a0, s32 a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80147814(s32 a0, s32 a1); -extern void func_80147928(int a0, int a1); -extern void func_8014799C(int a0, int a1); -extern void func_80147A10(int a0, int a1); -extern void func_80147860(int a0, int a1, int a2, int a3); -extern void func_80147948(s32 a0, s32 a1, s32 a2); -extern void func_801479BC(s32 a0, s32 a1, s32 a2); -extern void func_80147A30(s32 a0, s32 a1, s32 a2); -extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147948(int a0, int a1, int a2); -extern void func_801479BC(int a0, int a1, int a2); -extern void func_80147A30(int a0, int a1, int a2); -extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147A84(s32 arg0); -extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147AAC(s32 arg0); -extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80147B5C(s32 a0, void *a1); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern void func_80147B18(s32 a0); -extern void func_80147B5C(s32 arg0, void *arg1); -extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147DC0(s32 a0, s32 a1); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147F50(s32 arg0); -extern void func_80148038(s32 a0, s32 a1); -extern s32 ratan2(s32 a0, s32 a1); -extern s32 csqrt(s32 a0); -extern s32 func_80012A60(s32 a0, s32 a1); -extern void func_80148094(int param_1, short *param_2, int *param_3); -extern void func_801485B8(s32 a0, s32 a1, s32 a2); -extern void func_801484B0(s32 a0, s32 a1); -extern s32 func_80154358(void *a0); -extern void func_801484E8(s32 a0, s32 a1); -extern void func_80148534(s32 a0, s32 a1); -extern void func_8014856C(s32 a0, s32 a1); -extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); -extern void func_80148634(void *a0); -extern u8 D_800B9A64; -extern s32 func_80014DC0(); -extern s32 func_80014D68(); -extern s32 func_80014D94(); -extern s32 func_80014CF8(); -extern void func_800120DC(); -extern s32 func_800CF8B4(); -extern u16 func_801487F4(s32 *a0); -extern u16 func_80148800(s32 *a0); -extern u8 func_8014880C(s32 *a0); -extern u16 func_80148818(s32 *a0); -extern s32 func_80047D3C(s32 a0); -extern s32 func_80148824(void *arg0); -extern s32 func_801488A8(u8 *a0); -extern s32 func_8014891C(s32 a0); -extern s32 func_80148980(u8 *a0); -extern s32 func_801489E8(s32 a0); -extern s32 func_80148A48(s32 a0); -extern int func_80148AFC(void *a0); -extern void func_80148AAC(u8 *a0); -extern s32 func_80148C18(void); -extern s32 func_80148C20(s32 a0, s16 a1); -extern s32 func_80148C34(s32 a0, s32 a1); -extern s32 func_80148C4C(s32 a0, s32 a1); -extern s32 func_80148C64(s32 a0, s32 a1); -extern s32 func_80148C7C(void); -extern s32 func_80148C84(s32 a0, s32 a1); -extern s32 func_80148C9C(s32 a0, s32 a1); -extern s32 func_80148CB4(s32 a0, s32 a1); -extern s32 func_80148CCC(s32 a0, s32 a1); -extern s32 func_80148CE4(void); -extern s32 func_80148CEC(void); -extern s32 func_80148CF4(s32 a0, s32 a1); -extern s32 func_80148D0C(s32 a0, s32 a1); -extern s32 func_80148D24(void *a0, int a1); -extern s32 func_80148D3C(void); -extern s32 func_80148F60(void); -extern s32 func_80148F68(s32 a0); -extern s32 func_80148F74(s32 a0); -extern s32 func_80148F80(s32 a0); -extern s32 func_80148F8C(s32 a0); -extern s32 func_80148F98(void); -extern s32 func_80148FA0(s32 a0); -extern s32 func_80148FAC(s32 a0); -extern s32 func_80148FB8(s32 a0); -extern s32 func_80148FC4(s32 a0); -extern s32 func_80148FD0(void); -extern s32 func_80148FD8(void); -extern s32 func_80148FE0(s32 a0); -extern s32 func_80148FEC(s32 a0); -extern s32 func_80148FF8(s32 a0); -extern s32 func_80149004(void); -extern void func_8014900C(s32 *a0); -extern void func_80149020(s32 *a0); -extern void func_80149034(s32 *a0); -extern void func_80149048(s32 *a0); -extern void func_8014905C(u8 *a0); -extern void func_801490E0(s32 *a0, s16 a1); -extern void func_801490E8(s32 *a0, s16 a1); -extern void func_801490F0(s32 *a0, s16 a1); -extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); -extern void func_801490F8(s32 a0, s32 a1); -extern s32 func_801491C4(s32 a0); -extern s32 func_80149184(s32 a0); -extern void func_80149204(s32 *a0); -extern void func_80149210(s32 a0, s32 a1); -extern s32 func_80149284(s32 *a0, s32 a1); -extern void func_80149350(s32 arg0); -extern void func_80149290(s32 a0); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_80149374(s32 arg0, s32 arg1); -extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8014942C(s32 arg0); -extern void func_8012EF70(s32 a0, s32 a1); -extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012EFB8(s32 a0); -extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); -extern void func_8014964C(s32 param_1, s32 param_2); -extern s32 func_801496D4(void *a0); -extern void func_8015AD08(); -extern void func_80149704(void); -extern void func_8015ACC4(); -extern void func_80149724(void); -extern u8 D_80078EBF; -extern s32 func_80149744(struct S_80149744 *a0); -extern void func_8015F7A0(); -extern void func_80149788(void); -extern void func_801653B8(); -extern void func_80149864(void); -extern s16 currentLocationId; -extern s32 func_8016F1AC(void); -extern s32 func_80149884(void); -extern void func_80160B00(); -extern void func_801498C0(void); -extern s32 func_80149AA8(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern void func_80146750(void *a0); -extern s32 func_801498E0(s32 *a0); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_80147364(u16 a0, s32 a1); -extern s32 func_800CCF28(s32 a0); -extern u8 D_80126B5C; -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_8015DAC4(s32 *a0); -extern void func_8015554C(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern void func_80149B14(s32 *a0); -extern u8 func_8014BEF8(void); -extern s32 func_80149B54(s32 * arg0); -extern void func_8015DE24(s32 *a0); -extern void func_80157510(s32 *a0); -extern void func_80149BAC(s32 *a0); -extern s32 func_80029178(s32 a0); -extern s32 func_80149C08(s32 arg0); -extern void func_801577C8(); -extern void func_80149C94(void); -extern void func_80157D20(void); -extern void func_80149CB4(void); -extern s32 func_80149CD4(s32 a0); -extern u8 func_8014B5B8(s32 *a0); -extern s32 func_80149D10(s32 a0); -extern s32 func_80149E94(s32 a0); -extern s32 func_80149DD8(s32 a0); -extern s32 func_80149D9C(s32 a0); -extern s32 func_80149F2C(s32 a0, s32 a1); -extern s32 func_80149E94(s32 arg0); -extern void func_80149FA8(void); -extern s32 D_8018EDCC[]; -extern s32 func_80149FB0(s32 a0); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern void func_8014A1B0(s32 a0, s32 a1); -extern s32 func_8014A048(s32 param_1); -extern u16 func_80156370(u16 a0); -extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); -extern void func_8015D4B4(); -extern void func_8014A218(void); -extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); -extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); -extern s32 func_8014A238(s32 arg0); -extern s32 func_8014A2E4(s32 a0); -extern void func_8014A380(s32 a0, s32 a1); -extern s16 D_801152B0; -extern s16 D_801152B4; -extern s32 func_8014A3E0(struct S_8014A3E0 *a0); -extern s32 func_8014A454(s32 a0); -extern s32 func_8014A4B4(void *a0); -extern void func_8015EDD4(); -extern void func_8014A4FC(void); -extern s32 func_8014A674(s32 *a0); -extern s32 func_8014A69C(s32 *a0); -extern s32 func_8014A6C4(s32 a0); -extern void func_8015E184(); -extern void func_8014A830(void); -extern s32 func_80029AF4(void); -extern s32 func_8014A850(s32 param_1); -extern void func_8014AA04(s32 a0); -extern void func_801599A4(void *a0); -extern void func_80159B3C(void *a0); -extern s32 func_80165A20(s32 a0); -extern void func_8014AB7C(); -extern void func_8014AC10(); -extern void func_8014AA28(void); -extern void func_8014AB5C(void); -extern void func_80162CCC(void); -extern void func_8014AB7C(s32 arg0); -extern void func_8014ABF0(void); -extern void func_80016714(void *a0, s32 a1); -extern void func_8014AC10(s32 arg0); -extern void func_8014ACC0(s32 a0, s32 a1); -extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); -extern void func_8014ACE8(void *a0, s32 a1, s32 a2); -extern void func_80146AFC(void *a0); -extern void func_8014ADA8(s32 a0, s32 a1); -extern void func_8014AD7C(s32 a0); -extern s32 D_80078E8C; -extern void func_8014B034(s32 arg0); -extern void func_8014B00C(s32 arg0); -extern void func_8014B084(void); -extern s16 D_80078E90; -extern void func_8014B034(s32 a0); -extern u8 D_80078EBA; -extern void func_800D10EC(void); -extern void func_8002AC98(void); -extern s32 func_8014B154(s32 *a0); -extern void func_8014B12C(void); -extern void func_8014B2F8(void); -extern void func_8014B4C4(void); -extern void func_8014B160(s32 a0); -extern s32 func_8016F1C4(void); -extern s16 D_80078E96; -extern s16 D_80078EB8; -extern u16 D_80078EA6; -extern void func_8014B2A8(void); -extern void func_8014B310(void); -extern void func_8014B2D0(void); -extern s32 D_80078E94; -extern s32 D_80078ECC; -extern void func_8014B33C(void); -extern u8 D_80062BF4[]; -extern void func_8014BC80(s32 a0, s32 a1); -extern void func_80019064(void *a0); -extern s32 D_80078E98; -extern void func_80166244(); -extern void func_8014B4D4(void *a0); -extern s16 D_80078E9A; -extern u8 D_80126D1C; -extern s32 D_80126D74; -extern void func_8014B598(s32 a0, s32 a1); -extern void func_8014B5B0(s32 *a0); -extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); -extern void func_8014B5D8(s32 s1); -extern s32 D_80078E9C; -extern s32 D_80078ED0; -extern void func_8014B6F0(s32 a0, s32 a1); -extern void func_8014B768(s32 a0, s32 a1); -extern void func_8014B944(s32 a0, s32 a1, s32 a2); -extern s32 D_80078EA4; -extern u16 D_80078EB2; -extern s16 D_80078EB4; -extern void func_8014BB0C(void); -extern void func_8014BB24(s32 a0, s32 a1, s32 a2); -extern void func_8014BC0C(s32 a0, s32 a1); -extern void func_8014BC44(s32 a0, s32 a1); -extern u8 D_800B9A17; -extern void func_8014BCC0(s32 a0, s32 a1); -extern u16 D_80078EB6; -extern s32 func_8014BCEC(s32 a0, s32 a1); -extern void func_8014BD24(s32 a0, s32 a1); -extern void func_8014BD60(s32 param_1, s32 param_2); -extern void func_8014BD98(s32 a0, u16 a1); -extern void func_8014BDC8(void); -extern void func_8014BDE0(void); -extern s32 func_8017267C(s32 *a0); -extern s32 func_80013294(void *a0, void *a1); -extern void func_80029ED4(s32 a0); -extern void func_8014BDE8(s32 a0); -extern void func_8014BE78(void); -extern void func_8014BE9C(void); -extern void func_80029124(s32 a0, s32 a1); -extern void func_8014BEC0(void); -extern void func_8014BF18(s32 a0); -extern void func_8014BF48(void); -extern u8 func_8014BF6C(void); -extern void func_8014BF8C(u8 arg0); -extern void func_8014BFB0(void); -extern u8 func_8014BFD4(void); -extern void func_8014BFF4(s32 a0, s32 a1); -extern void func_8014C010(s32 a0, s32 a1); -extern s32 func_8014C050(s32 a0, s32 a1); -extern s32 func_8014C088(s32 a0, s32 a1); -extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); -extern s32 func_8014C118(void * a0, s32 a1, s32 a2); -extern s32 func_8014C168(s32 * param_1, s32 param_2); -extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); -extern u8 D_8018EE54[]; -extern void func_8014C1A0(s32 arg0, s32 arg1); -extern s32 func_80013328(s32 a0, s32 a1); -extern s32 func_8014C59C(void *a0, void *a1); -extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); -extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); -extern s32 ratan2(s32 dx, s32 dy); -extern u8 D_8018EE5C; -extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); -extern s16 func_8014C5D0(s32 a0, s32 a1); -extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); -extern u8 D_80126D17; -extern void func_8014C6AC(void); -extern void func_8014C6C0(void); -extern u8 D_80126D1E; -extern void func_8014C6D0(void); -extern void func_8014C6E0(void); -extern s32 func_8014C860(s32 a0, s32 a1); -extern void func_8014C8C8(s32 a0, s32 *a1); -extern void func_8014C88C(s32 a0); -extern void func_8014C8C8(s32 dst, s32 * src); -extern void func_8014C8F0(s32 arg0); -extern u8 D_801151F0[]; -extern s32 func_8014C918(s32 a0, s32 a1); -extern s32 D_80126B50; -extern void func_8014C968(void); -extern void func_8014C978(void); -extern s32 func_8014C98C(void); -extern void func_80139914(s32 a0); -extern s32 func_8014CA00(s32 a0); -extern u16 func_8014CA70(s32 a0, s32 a1); -extern s32 func_8014CA14(s32 a0, s32 a1); -extern u16 func_8014CAE4(s32 *a0, s32 a1); -extern s32 func_8014CA88(s32 *a0, s32 a1); -extern s32 func_8014CAFC(void); -extern s32 func_8014CB0C(void); -extern s32 func_8014CB1C(void); -extern u8 D_80126D1F; -extern s32 func_8014CB2C(void); -extern s32 func_8014CB58(void); -extern u8 D_80126D1D; -extern void func_8014CB68(void); -extern s32 func_8014CB7C(void); -extern s32 func_8014CB8C(void); -extern short D_80126C9E; -extern void func_8014CB9C(struct Packed8 *a0); -extern s32 D_80126CDC; -extern void func_8014CBD8(void); -extern s16 D_80126CC4; -extern void func_8014CBE8(void); -extern void func_8014CBF8(void *a0); -extern void func_8014D3E0(s32 a0); -extern void func_8014D04C(void); -extern void func_8014CCB4(void); -extern void func_8014CC28(s32 a0); -extern void func_8014CD0C(u8 *a0); -extern s32 func_8014CF04(s32 a0, s32 a1, void *a2); -extern void func_8014CD80(s32 a0, void *a1, void *a2); -extern void func_8014D0A4(s32 a0); -extern s32 func_8014D2A0(s32 a0, void *a1, void *a2); -extern s32 func_8014D12C(s32 a0, void *a1, void *a2); -extern void func_8014D438(s32 a0); -extern void func_8014D3E0(s32 _arg0); -extern void func_8014D610(s32 a0, void *a1, void *a2); -extern s32 func_8014D4C0(s32 a0, void *a1, void *a2); -extern void func_8014D790(s32 a0); -extern void func_8014D738(void); -extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); -extern s32 func_8014D820(s32 a0, u16 *a1, u16 *a2); -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); -extern void func_8014DF94(s32 arg0); -extern void func_8014DF3C(void); -extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ -extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ -extern s16 D_801152AC; -extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); -extern void func_8014E48C(s32 a0); -extern void func_8014E434(void); -extern void func_8014E5B4(s32 a0, void *a1, void *a2); -extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); -extern void func_8014E6F8(struct SubE6F8 *a0); -extern void func_8014E6A0(void); -extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); -extern void func_8014E934(s32 _arg0); -extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); -extern s32 func_8014E98C(void *a0); -extern u16 D_800B99DA; -extern s32 D_801150D8; -extern s16 D_801152AA; -extern u8 D_80126720[]; -extern s16 D_80126724; -extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); -extern s32 func_8014ED80(struct SubED80 *a0); -extern int D_801E5BA8; -extern void func_8014ED28(s32 _arg0); -extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F24C(struct SubF24C *a0); -extern void func_8014F1F4(void); -extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F4C0(); -extern s32 func_8014F468(void); -extern int func_8014F74C(); -extern int func_8014F6F4(void); -extern u8 D_800D3918[]; -extern u8 D_801152A8[]; -extern s32 D_801152BC; -extern int func_8014F74C(s32 arg0); -extern s32 func_8014FA70(s32 a0); -extern s32 D_801E5BAC; -extern void func_8014FA04(s32 a0); -extern s32 func_8014FBC0(); -extern s32 func_8014FC18(u8 *self); -extern int func_8014FD54(int param_1); -extern void func_8014FCFC(void); -extern void func_80150170(void *a0); -extern s32 func_8014FE60(void *a0); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_8014FE60(void *e); -extern s32 func_80134510(s32 arg); -extern s32 func_80150150(s32 a, s32 b); -extern s32 func_80150460(s32 a, s32 b); -extern void func_801504D8(u16 *a0); -extern s32 func_80150480(s32 _arg0); -extern s32 func_80150528(void *a0, void *a1, void *a2); -extern s32 func_80150528(void *arg0, void *arg1, void *arg2); -extern s32 func_801506A4(s32 a0, s32 a1); -extern s32 func_801505FC(s32 a0); -extern s32 func_801506A4(s32 arg0, s32 arg1); -extern void func_80150820(s32 a0, s32 a1); -extern void func_8015086C(int param_1); -extern s32 func_801508B4(s32 a0); -extern s32 func_8015094C(s32 a0); -extern short func_801508F8(s32 a0); -extern s32 D_8018EE8C; -extern s32 D_80126990; -extern s32 D_80126994; -extern s32 func_80021174(s32 a0, s32 a1); -extern s32 func_8015094C(s32 param_1); -extern void func_80150B9C(void); -extern s32 func_80151184(s32 a0, s32 a1, s32 a2); -extern s32 func_80150BA4(s32 a0); -extern s32 func_801619D0(void *a0); -extern void func_80150BC8(s32 *a0); -extern s32 func_80150480(s32 a0); -extern u16 D_800AE6DC; -extern void func_80150C48(s32 a0); -extern int func_80151184(int arg, int a1, int a2); -extern int func_80150CA0(int arg); -extern void func_80150EC4(s32 a, s32 b); -extern void func_80150CC4(s32 a); -extern void func_80150CE4(s32 a); -extern void func_80150D04(s32 a); -extern void func_80150D24(s32 a); -extern void func_80150D44(s32 a); -extern void func_80150D64(s32 a); -extern void func_80150D84(s32 a); -extern void func_80150DA4(s32 a); -extern void func_80150DC4(s32 a); -extern void func_80150DE4(s32 a); -extern void func_80150E04(s32 a); -extern void func_80150E24(s32 a); -extern void func_80150E44(s32 a); -extern void func_80150EC4(s32 a0, s32 a1); -extern void func_80150E64(s32 a0); -extern void func_80150E84(s32 a0); -extern void func_80150EA4(s32 a0); -extern u8 D_800AE6C0; -extern s16 D_800AE6C8; -extern s16 D_800AE6CA; -extern s16 D_800AE6CC; -extern s32 D_800AE6C4; -extern s16 D_800AE6CE; -extern u8 D_800AE6BE; -extern u8 D_801201F8[]; -extern void func_80150F78(void); -extern void func_80150F80(s32 a0); -extern int func_80150FB4(int arg); -extern void func_80150FD8(s32 a0); -extern int func_80151014(int arg); -extern void func_80151038(s32 a0); -extern int func_80151070(int arg); -extern int func_80151094(int arg); -extern void func_801510B8(void); -extern void func_801510C0(void); -extern int func_801510C8(int arg); -extern int func_801510EC(int arg); -extern s32 func_8012DB84(void); -extern s32 func_80151110(void); -extern void func_80151130(void); -extern int func_80151138(int arg); -extern void func_8015115C(s32 *a0, s16 a1); -extern s32 func_80151164(s32 a0, s32 a1); -extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); -extern void func_801511A8(u8 *a0); -extern void func_801511C4(u8 *a0); -extern int func_80151204(int arg, int a1); -extern int func_801511E0(int arg); -extern int func_80151204(int a0, int a1); -extern void func_80151238(void *a0); -extern void func_8015126C(u16 *p); -extern void func_80151780(s32 a0); -extern void func_801516F0(s32 *a0); -extern void func_8015173C(s32 *a0); -extern s16 D_8011DB1A; -extern s32 D_80127518; -extern s32 D_801151FC; -extern s32 func_801725CC(u8 *a0); -extern s32 func_80029D3C(void); -extern void func_80151878(void); -extern void func_80153B58(s32 *a0); -extern s32 func_80151880(s32 a0); -extern s32 func_801518D8(s32 a0); -extern s32 func_80151944(void); -extern s32 func_80151924(void); -extern void func_8014E934(s32 a0); -extern s32 func_8014F3E8(s32 a0); -extern void func_801519C8(s32 a0); -extern void func_80151980(s32 a0); -extern M2C_UNK D_800D5880; -extern s32 D_800D58AC; -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801519C8(s32 arg0); -extern void func_80151C54(s32 a0); -extern void func_801542DC(s32 *a0, s32 a1); -extern void func_8015BDD0(s32 *a0); -extern void func_80165718(s32 a0); -extern u8 D_800D46E4[]; -extern void func_80151AE4(s32 arg0); -extern void (*D_8018EF34[])(void); -extern void func_80151D24(void *a0); -extern void func_80151DB0(s32 a0); -extern void func_80151D60(void *a0); -extern s32 func_80172630(u8 *a0); -extern s32 D_80062C14; -extern void func_80151DB0(s32 param_1); -extern void func_80151E78(s32 *a0); -extern void func_80151ECC(struct S80151ECC *a0); -extern void func_80151FB4(s32 a0); -extern void func_80151F38(s32 *a0); -extern void func_801553C0(s32 a0); -extern void func_80153C18(); -extern void (*D_8018EF58[])(void); -extern void func_80152058(void *a0); -extern void func_801520DC(s32 a0); -extern void func_80152094(s32 a0); -extern void func_80147324(s32 a0); -extern u8 D_80062C04[]; -extern M2C_UNK D_8018EF48; -extern void func_801520DC(s32 arg0); -extern void func_801470B4(s32 a0); -extern void func_8015369C(s32 a0); -extern void func_80152194(s32 *a0); -extern s32 func_801536DC(s32 a0); -extern void func_8015220C(s32 a0); -extern s32 func_80153800(s32 a0); -extern void func_801522CC(s32 a0); -extern void func_80152254(s32 *a0); -extern void (*D_8018EF6C[])(void); -extern void func_80152370(void *a0); -extern void func_801523F4(s32 a0); -extern void func_801523AC(s32 a0); -extern void func_8001382C(s32 a0, void *a1, void *a2); -extern u8 D_8018EF78[]; -extern void func_801523F4(s32 arg0); -extern void func_801525F4(int); -extern s32 func_801535F4(void *arg0); -extern void func_8015BF48(s32 *a0); -extern void func_80152500(int param_1); -extern void func_801525F4(s32 a0); -extern void (*D_8018EF88[])(void); -extern void func_80152698(void *a0); -extern void func_80152714(s32 a0); -extern void func_801526D4(s32 a0); -extern void func_80152790(s32 a0); -extern void (*D_8018EFA0[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018EF90; -extern void func_801528B0(s32 arg0); -extern void func_8015294C(s32 a0); -extern void func_80152A08(s32 a0); -extern void func_80152AC8(s32 a0); -extern void func_80152A50(s32 *a0); -extern void (*D_8018EFB4[])(void); -extern void func_80152B6C(void *a0); -extern void func_80152BF0(s32 a0); -extern void func_80152BA8(s32 a0); -extern void func_80152C80(s32 *a0); -extern void func_80152C40(s32 *a0); -extern void (*D_8018EFD0[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018EFC0; -extern void func_80152DA8(s32 arg0); -extern void func_80152E4C(s32 a0); -extern void func_80152EFC(s32 a0); -extern void func_80152FBC(s32 a0); -extern void func_80152F44(s32 *a0); -extern void (*D_8018EFE4[])(void); -extern void func_80153060(void *a0); -extern void func_801530E4(s32 a0); -extern void func_8015309C(s32 a0); -extern void func_80155440(s32 *a0); -extern void func_801530E4(s32 arg0); -extern void func_80153150(struct S80153150 *a0); -extern void func_801531BC(s32 a0); -extern void func_8015327C(s32 a0); -extern void func_80153204(s32 *a0); -extern void (*D_8018EFF8[])(void); -extern void func_80153320(void *a0); -extern void func_801533A4(s32 a0); -extern void func_8015335C(s32 a0); -extern void func_80153410(s32 *a0); -extern void func_80153490(s32 a0); -extern void func_80153550(s32 a0); -extern void func_801534D8(s32 *a0); -extern void (*D_8011DB28)(s32 a0); -extern s32 func_801536DC(s32 param_1); -extern void func_800139C8(s32 a0, void *a1, void *a2); -extern s32 func_80153978(s32 a0, u16 *src); -extern s32 func_80133784(s32 a0, void *src, s32 dst); -extern s32 func_801539F8(s32 a0, void *a1); -extern s32 func_801539F8(s32 a0, void * a1); -extern s32 func_8016DA04(s32 a0); -extern s32 func_80153BD8(s32 a0); -extern s32 func_80153BF0(s32 a0); -extern void func_80153C18(void); -extern u16 D_8011F748; -extern void func_80153C30(void); -extern void func_80153C74(s16 a0, s16 a1); -extern s16 D_8011DB18; -extern void func_80153C44(int a0, int a1, s16 a2); -extern s16 D_8011DB0C; -extern s32 D_80115210; -extern void func_80153C8C(void); -extern void func_80153C9C(void); -extern s32 func_80153CBC(void); -extern s32 D_8018F00C; -extern void (*D_8018F034[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018F014; -extern void func_80153D7C(s32 param_1); -extern void func_8015410C(void); -extern void func_80153E00(s32 param_1); -extern void func_80151664(void); -extern void func_80154134(u8 *a0); -extern void func_80154190(u8 *a0, s32 a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154218(u8 *a0, s32 a1, s32 a2); -extern void func_801541D8(u8 *a0, s32 a1, s32 a2); -extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); -extern void func_801542A4(); -extern void func_801542A4(s32 *a0, s32 a1); -extern void func_8015430C(); -extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); -extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); -extern s32 func_80154358(void * arg0); -extern void func_80154AB4(s32 a0, s32 a1); -extern void func_80154B20(s32 a0, s32 a1, s32 a2); -extern void func_80154AE0(s32 a0, s32 a1, s32 a2); -extern void func_80154B7C(u8 *a0, s32 a1); -extern void func_80154B4C(u8 *a0, s32 a1); -extern void func_80154BC8(void *a0, s32 a1, s32 a2); -extern void func_80154B98(void *a0, s32 a1, s32 a2); -extern u8 D_800D8D10[]; -extern s16 D_80078E9E; -extern void func_801550FC(s32 a0); -extern void func_80154ED8(s32 a0, s32 a1); -extern void func_80154F9C(s32 a0); -extern void func_800183E0(s32 a0); -extern void func_801550FC(s32 arg0); -extern void func_8001D150(s32, s32); -extern void func_8001D130(int, int); -extern void func_80155150(int param_1); -extern s32 D_800DE2A4[]; -extern void func_801552F4(s32 a0); -extern void func_80155344(s32 a0); -extern s32 func_80155394(s32 *a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80029178(s32); -extern int (*D_8018F080[])(void); -extern s32 func_80155458(s32 param_1); -extern s32 func_801659DC(u8 *a0); -extern s32 func_801554B8(void *arg0); -extern void func_801555F4(void *a0); -extern void func_80155518(s32 *a0); -extern void func_80155580(void *a0); -extern void (*D_8018F084[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern s32 func_80029B4C(s32 a0, s32 a1); -extern s32 func_80029BC8(s32 a0, s32 a1); -extern s32 func_80029C44(s32 a0, s32 a1); -extern s32 func_8015640C(s32 a0, s32 a1); -extern s32 rand(void); -extern u32 func_8015616C(s32 param_1, u16 param_2); -extern u16 func_80156370(u16 param_1); -extern s32 func_801564B0(s32 a0); -extern s32 func_8002A1B4(void); -extern s32 func_8002A400(void); -extern s32 func_8002A670(void); -extern s32 func_8002A8E0(void); -extern s32 D_801151E0[]; -extern s32 func_801565C0(void); -extern void func_80156A14(s32 *a0); -extern void func_80156648(s32 *a0); -extern u8 D_8011DAD8[]; -extern s32 func_8014C568(s16 *a0, s16 *a1); -extern void func_801567BC(s32 a0); -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018F4E8[]; -extern void func_80156A1C(s32 param_1, s32 param_2); -extern s32 D_801150E0[]; -extern void func_80156A88(s32 a0, s32 a1); -extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); -extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); -extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); -extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern s32 func_80135004(s32 a0, void *a1, s32 a2); -extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801575E4(void *a0); -extern void func_801574DC(s32 *a0); -extern void func_80157544(void *a0); -extern void (*D_8018F4F8[])(void); -extern void func_8014CC28(s32 a0); /* defined */ -extern s32 func_8014F3E8(s32 a0); /* declared */ -extern void func_8015BDD0(s32 *a0); /* defined */ -extern void func_801575E4(void *a0); /* defined */ -extern void func_80157580(s32 arg0); -extern u8 D_800D4F14[]; -extern void func_801576A8(void *arg0); -extern s32 func_8015773C(u8 *a0); -extern s32 func_8015771C(u8 *a0); -extern s32 func_8015773C(u8 * arg0); -extern int D_801E5BE0; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018F520[])(void); -extern void func_80157808(void *param_1); -extern void func_80157880(s32 a0); -extern s32 func_801725A4(u8 *a0); -extern u8 D_800D5128; -extern u8 D_8018F500; -extern void func_801578C0(s32 param_1); -extern void func_80147A84(int); -extern void func_80148038(int, int); -extern void func_80147460(int); -extern void func_80146D90(int); -extern void func_80161450(void *a0); -extern void func_80157A8C(int); -extern void func_80154A74(int, int); -extern unsigned char D_800D5178; -extern unsigned char D_8018F510; -extern void func_8015795C(int param_1); -extern void func_80161D20(s32 a0, s32 a1); -extern void func_80157A8C(s32 a0); -extern void func_8016706C(s32 a0); -extern u8 D_800D51AC[]; -extern void func_80157AC8(s32 param_1); -extern void func_80157B74(int param_1); -extern void func_8016158C(void *a0); -extern void func_8015BE04(s32 *a0); -extern void func_80157BC8(s32 a0); -extern void func_80157CCC(s32 a0); -extern void func_80157DC4(void *a0); -extern void func_80157FC4(void *a0); -extern void func_80157D74(u16 *a0); -extern void (*D_8018F560[])(void); -extern void func_80157E38(void *); -extern void func_80157E00(void *a0); -extern void func_80157E38(void * a0); -extern s32 func_80157F64(s32 *a0); -extern s32 func_80156600(void *a0); -extern void func_80157EA4(void *a0); -extern void (*D_8018F568[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018F534; -extern void func_80158038(void * param); -extern u8 D_800D524C[]; -extern void func_80161418(void *a0); -extern void func_801580B4(s32 a0); -extern void func_801581AC(s32 a0); -extern void (*D_8018F574[])(void); -extern void func_8015824C(void *a0); -extern void func_801582C0(void *); -extern void func_80158288(void *a0); -extern u8 D_800D52A8[]; -extern void func_801585A4(s32 *a0); -extern void func_801582C0(void *a0); -extern s32 func_801585AC(s32 *a0); -extern u8 D_800D52E8[]; -extern void func_80158344(s32 *a0); -extern s32 func_801615C4(void *a0, s32 a1); -extern u8 D_8018F544; -extern u8 D_800D533C; -extern void func_80158434(s32 param_1); -extern void func_80158548(s32 param_1); -extern void func_801585EC(u8 *a0); -extern void func_80158794(void); -extern s32 D_801E5BE8; -extern s32 D_801E5BF4; -extern s32 D_801E5BF8; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018F5B0[])(s32 *); -extern void func_80158AE4(void *a0); -extern void func_80158AB4(void *a0); -extern void func_8016F264(void); -extern void func_80165840(void); -extern void func_801658DC(void); -extern void func_80165A78(s32); -extern void func_80158AE4(void * a0); -extern M2C_UNK D_800D58D8; -extern void func_80158BB0(void *arg0); -extern s32 func_80159404(s32 a0, s32 a1); -extern void func_80158C40(s32 *a0); -extern void func_80158CD8(s32 *a0); -extern s32 func_80159434(s32 a0, s32 a1); -extern void func_80158D60(s32 a0); -extern M2C_UNK D_800D5904; -extern void func_80158E24(s32 *a0); -extern s32 D_8018F584[]; -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80158F00(int param_1); -extern u8 D_80110C3C[]; -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80158FA4(s32 param_1); -extern s32 func_801399F0(s32 a0); -extern u8 D_80110C94[]; -extern u8 D_80110CD4[]; -extern void func_80159070(void *a0); -extern s32 func_80029A94(s32); -extern void func_80175454(void); -extern void func_800298BC(void *); -extern void func_8002992C(s32); -extern void func_800CF804(void); -extern void func_800CF818(void); -extern u8 D_80110D0C[]; -extern void func_80159120(s32 a0); -extern void func_801592CC(s32 *a0); -extern u8 D_800AE6BD; -extern s32 D_801E5BF0; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018F800[])(void); -extern void func_80159698(void *a0); -extern s32 func_801596D4(void *a0); -extern void func_80174B6C(void); -extern void func_80129248(s16 a0); -extern void func_8013C938(void); -extern void func_8013CB20(void); -extern void func_8013C98C(void); -extern void func_8002850C(s32, s32, s32); -extern void func_80028620(s32, void *); -extern s16 D_800B9AAC[]; -extern s16 D_800B9B00; -extern u16 D_801270C0; -extern u32 D_800AFAE8[]; -extern char D_8018F620[]; -extern s32 func_801596F0(s32 param_1); -extern s32 func_80159874(void); -extern void func_800167B8(s32 a0); -extern s32 func_8015987C(s32 a0); -extern int func_800167F0(int arg); -extern int func_801598BC(void); -extern void func_80159968(void *a0); -extern void func_801598E0(u8 *a0); -extern void (*D_8018F8A4[])(void); -extern void func_80159A20(void *a0); -extern void func_801599E0(void *a0); -extern void func_80159A18(void); -extern void func_80159BE4(s32); -extern void func_80159B08(s32 *a0); -extern void func_80159B70(void *a0); -extern void func_80159B3C(void * a0); -extern void (*D_8018F9F8[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018F814; -extern void func_80159BE4(s32 arg0); -extern void func_8015A1C8(s32 a0); -extern void func_8015A2D8(s32); -extern void func_8015A1FC(s32 *a0); -extern void func_8015A264(void *a0); -extern void func_8015A230(s32 *a0); -extern void (*D_8018FA00[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018F824; -extern s32 func_80172608(u8 *a0); -extern void func_8015A2D8(s32 param_1); -extern u8 D_800D48DC; -extern s32 func_8015AB7C(s32 a0); -extern s32 D_8011F9C4; -extern s32 func_8015ABD4(s32 a0, s32 a1, s32 a2); -extern s32 func_80161CD0(s32 a0, s32 a1); -extern M2C_UNK D_8018F844; -extern void func_8015AC48(s32 arg0); -extern void func_8015AC90(s32 a0); -extern void func_8015ADB0(s32 a0); -extern void func_8015ACC4(s32 *arg0); -extern void func_8015AD3C(void *a0); -extern void func_8015AD08(void *arg0); -extern void (*D_8018FA08[])(void); -extern void func_8015ADB0(s32); -extern void func_8015AD78(s32 a0); -extern void func_8015ADB0(s32 arg0); -extern s32 D_800D4A9C; -extern int func_8015B6F4(int param_1); -extern u8 D_800D4F8C[]; -extern s32 func_8015B7B4(s32 a0); -extern u8 D_800D4BE0[]; -extern s32 func_8014A51C(void); -extern s32 func_8015B858(u8 *a0); -extern s32 D_800D4B48; -extern void func_8015B8F8(s32 *a0); -extern void func_8015BD8C(s32 *a0); -extern s32 func_8015BE94(); -extern void func_8015BE38(struct Obj *a0); -extern s32 func_8015BE74(void); -extern void func_80161124(void *a0); -extern s32 func_8015BE94(s32 *a0); -extern s32 func_8015AE2C(); -extern s32 func_8015BEC4(void); -extern s32 func_8015B950(s32 arg0); -extern s32 func_8015BEE4(void); -extern void func_8015BF04(s32 *a0); -extern void func_8015C0C4(s32 a0); -extern void func_8015BFF4(void *a0); -extern void func_8015BF7C(s32 *a0); -extern void func_8015C030(s32 *a0, s32 a1); -extern void func_8015BFB0(s32 *a0, s32 a1); -extern void (*D_8018FA30[])(void); -extern void func_8015C0C4(s32); -extern void func_8015C08C(s32 a0); -extern s32 func_8015C128(s32 param_1); -extern void func_8015C6A4(void); -extern void func_8015C788(s32 a0); -extern void func_8015C6AC(s32 *a0); -extern void func_8015C714(void *a0); -extern void func_8015C6E0(s32 *a0); -extern void (*D_8018FA3C[])(void); -extern void func_8015C788(s32); -extern void func_8015C750(s32 a0); -extern void func_8015CB94(s32 a0); -extern void func_8015CBCC(void); -extern void func_8015CBD4(void); -extern void func_8015CBDC(void); -extern void func_8015CBE4(void); -extern void func_8015CBEC(void); -extern void func_8015CBF4(void); -extern void func_8015CBFC(void); -extern void func_8015CC04(void); -extern void func_8015CC0C(s32 *param_1); -extern void func_8015CC74(s32 *a0); -extern void func_8015CC40(s32 *a0); -extern s32 func_8015CCD0(); -extern s32 func_8015CCB0(void); -extern s32 func_801725E0(u8 *a0); -extern s32 func_8015CCD0(s32 param_1); -extern s32 func_8015CD20(s32 arg0); -extern void func_8015CF24(s32 a0); -extern void func_8015D01C(); -extern void func_8015CF58(s32 *param_1); -extern void func_8015CFC0(s32 *a0); -extern void func_8015CF8C(s32 *a0); -extern void func_8015CFFC(void); -extern void func_8015D01C(int param_1); -extern void (*D_8018F8B0[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018FAE0; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018EBC4[]; -extern void func_8015D414(int param_1); -extern void func_8015D57C(s32); -extern void func_8015D480(s32 *a0); -extern s32 func_8015D4E8(s16 *a0); -extern void func_8015D4B4(s16 *a0); -extern void func_8015D524(s32 arg0); -extern void func_8015D544(s32 a0); -extern void func_801746DC(void); -extern void func_8015D57C(s32 arg0); -extern s32 func_80161B18(void *a0); -extern s32 func_80161B84(void *a0); -extern void func_80154150(int, int); -extern void func_80149374(int, int); -extern unsigned char D_8018FAF4[]; -extern void func_8015D5E8(int param_1); -extern int func_8015E0D4(int); -extern void func_8015DA5C(s32 a0); -extern void func_8015DB6C(s32 a0); -extern void func_8015DA90(s32 *a0); -extern void func_8015DAF8(s32 *a0); -extern void func_8015DB6C(s32); -extern void func_8015DB34(s32 a0); -extern void func_8015DCB8(s32 a0); -extern void func_8014BD60(s32 a0, s32 a1); -extern int func_8015DD74(int); -extern void func_8015DBD4(void *arg0); -extern int func_8015DC84(int a0); -extern s8 D_8018FB30[]; -extern void func_8015DCB8(s32 param_1); -extern int func_8015DD74(int arg0); -extern void func_8015DECC(s32 a0); -extern void func_8015DDF0(s32 *a0); -extern void func_8015DE58(s32 *a0); -extern void func_8015DECC(s32); -extern void func_8015DE94(s32 a0); -extern void func_8015E018(s32 a0); -extern void func_8015DF34(void *arg0); -extern int func_8015DFE4(int a0); -extern void func_8015E018(s32 param_1); -extern int func_8015E0D4(int a0); -extern void func_8015E22C(s32 a0); -extern void func_8015E150(s32 *a0); -extern s32 func_8015E1B8(s32 a0); -extern void func_8015E184(s32 *arg0); -extern void func_8015E22C(s32); -extern void func_8015E1F4(s32 a0); -extern u8 D_800D4FF4[]; -extern u8 D_800D5098[]; -extern u8 D_800D5060[]; -extern s32 func_8014A850(s32 a0); -extern void func_8015E40C(s32 a0); -extern void func_8015E588(void); -extern void func_8015E4B0(s32 a0); -extern void func_8015E288(s32 a0); -extern u16 D_8018FB78; -extern u16 D_8018FB7A; -extern u16 D_8018FB7C; -extern s32 D_8018FB80; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -extern void func_8013C9C4(void *a0); -extern s32 D_8018FB88; -extern void func_8015E5B0(u8 *self); -extern void func_8015E714(s32 *a0); -extern void func_8015E95C(s32); -extern void func_8015E84C(s32 *a0); -extern void func_8015E8E8(s32 *a0); -extern void func_8015E9B8(s32 *a0); -extern void func_8015E8B4(s32 *a0); -extern void func_8015E924(s32 a0); -extern void func_8015E95C(s32 a0); -extern s16 D_801152A0; -extern void func_80160818(s32 *a0); -extern void func_8015ED6C(s32 *a0); -extern void func_8015EE7C(s32); -extern void func_8015EDA0(s32 *a0); -extern s32 func_8015EE08(s32 a0); -extern void func_8015EDD4(s32 *arg0); -extern void func_8015EE44(s32 a0); -extern int D_800D4C48; -extern int D_8018F894; -extern void func_8015EE7C(s32 param_1); -extern void func_8015EEE0(void *arg0); -extern void func_8015EF9C(void); -extern void func_8015F080(s32); -extern void func_8015EFA4(s32 *a0); -extern void func_8015F00C(s32 *a0); -extern void func_8015EFD8(s32 *a0); -extern void func_8015F048(s32 a0); -extern void func_8015F080(s32 a0); -extern s32 D_80062BE8; -extern void func_801466F0(s32, s32, s32, s32, s32, s32, s32, s32); -extern s32 func_80161208(void); -extern void func_8015F118(void *a0); -extern void func_8015F260(s32 *a0); -extern void func_8015F380(); -extern void func_8015F2BC(s32 *a0); -extern void func_8015F324(s32 *a0); -extern void func_8015F2F0(s32 *a0); -extern void func_8015F360(void); -extern s32 func_801725B8(u8 *a0); -extern void func_8015F380(void* arg0); -extern void func_8015F738(s32 *a0); -extern void func_8015F848(s32 *a0); -extern void func_8015F76C(s32 *a0); -extern s32 func_8015F7D4(s32 a0); -extern void func_8015F7A0(s32 *arg0); -extern void func_8015F810(s32 *a0); -extern void func_80147078(s32 *, s16); -extern void func_80159B70(void *); -extern void func_8015F89C(void *arg0); -extern void func_8015F948(s32 *param_1); -extern void func_8015F9A4(void *arg0); -extern void func_8015FA24(s32 arg0); -extern void func_8015FBE0(s32 *a0); -extern void func_8015FA44(s32 *a0); -extern void func_8015FAAC(s32 *a0); -extern void func_8015FA78(s32 *a0); -extern s32 func_801612B8(void *a0, s32 a1); -extern void func_8016007C(s32 a0); -extern void func_8015FAE8(void *arg0); -extern void func_8015FCC8(void *param_1); -extern unsigned int D_8018FC0C[]; -extern void func_8015FD74(int param_1); -extern s32 func_80028DE0(void); -extern u8 func_80165700(s32 a0, s32 a1); -extern void func_8015FDCC(s32 a0); -extern u8 D_80078EC2; -extern u8 func_801656E8(s32 a0, s32 a1); -extern void func_80165670(s32 a0, s32 a1); -extern void func_8016004C(s32 a0); -extern void func_8015FF20(void *param_1); -extern void func_801601AC(s32 *a0); -extern void func_801600D0(s32 *a0); -extern void func_80160138(s32 *a0); -extern void func_80160104(s32 *a0); -extern void func_80160174(s32 *a0); -extern void func_801601E4(s32 *a0); -extern void func_80160244(s32 *a0); -extern void func_8016032C(void); -extern void func_80160410(s32 *a0); -extern void func_80160334(s32 *a0); -extern void func_8016039C(s32 *a0); -extern void func_80160368(s32 *a0); -extern void func_801603D8(s32 *a0); -extern u8 D_80062BD0; -extern void func_80160410(s32 * a0); -extern void func_801607B8(s32 *a0); -extern void func_801608C0(s32 *a0); -extern void func_801607E4(s32 *a0); -extern void func_8016084C(s32 *a0); -extern void func_80160888(s32 *a0); -extern void func_80160A28(s32 a0); -extern void func_80160A74(s32 *a0); -extern void func_80160BB4(s32 *a0); -extern void func_80160ACC(s32 *a0); -extern s32 func_80160B34(s32 a0); -extern void func_80160B00(s32 *arg0); -extern void func_80160B70(s32 a0); -extern void func_80160C28(void *arg0); -extern void func_80160CB4(s32 *a0); -extern void func_80160D10(void *arg0); -extern void func_80160DEC(u8 *a0); -extern void func_80160F00(); -extern void func_80160E3C(s32 *a0); -extern void func_80160EA4(); -extern void func_80160E70(s32 *a0); -extern void (*D_8018FCBC[])(void); -extern void func_80160EA4(void *a0); -extern void func_80160EE0(void); -extern void func_80160F00(void* arg0); -extern void func_800D0F4C(s32 a0); -extern u8 D_80110EC0; -extern void func_80160F70(s32 a0); -extern void func_80160FE0(s32 *a0); -extern void func_80161034(void *a0); -extern void func_80161094(s32 a0); -extern void func_801610FC(void); -extern void func_801483E8(void); -extern s32 func_80161A60(s32 a0); -extern void func_8016130C(void *a0, s32 a1); -extern void func_80161240(void *a0); -extern void func_80161374(void *a0, s32 a1); -extern void func_80161278(void *a0); -extern s32 func_801612B8(void * a0, s32 a1); -extern void func_8016163C(void *a0, s32 a1); -extern void func_80161774(void *a0, s32 a1); -extern s32 func_8016197C(s32 a0, s32 a1); -extern s32 func_80161488(void *a0); -extern void func_80161888(void *a0, s32 a1); -extern void func_801614E4(void *a0); -extern void func_8016191C(void *a0, s32 a1); -extern void func_8016151C(void *a0); -extern void func_80161554(void *a0); -extern s32 func_801615C4(void * arg0, s32 arg1); -extern s32 func_801619A4(s32 *a0); -extern s32 func_80161A00(s32 a0); -extern s32 func_80161A30(s32 a0); -extern int func_801497A8(void); -extern int func_80161BE0(void *param_1); -extern u16 D_8018FCEC[]; -extern void func_80161C98(int param_1, u32 param_2); -extern void func_80161E08(s32); -extern s32 func_80162438(s32); -extern s32 D_800AE6A8; -extern void func_800D1734(void *); -extern s32 D_8018FD50; -extern void func_80161D88(void); -extern void func_80161E08(s32 param_1); -extern int func_800291DC(int); -extern int func_800D0E30(void *a0); -extern int func_801620C4(void); -extern s32 func_800D0D7C(s32, s32); -extern int D_801E5C00[]; -extern void func_8016216C(void); -extern s32 func_801621CC(s32 arg0); -extern void func_801622C4(void); -extern void (*D_8018FD74[])(void); -extern void func_80162330(void *a0); -extern void func_8014706C(void *a0); -extern s32 func_8016236C(u8 *a0); -extern void func_800D0C48(s32 a0); -extern s32 func_801623B8(s32 *a0); -extern s32 func_800167F0(s32 a0); -extern s32 func_80162414(void); -extern s32 func_80162438(s32 _unused0); -extern int func_801626B8(void); -extern void func_80162714(void); -extern int D_801E5C58[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018FDBC[])(void); -extern void func_80162834(void *a0); -extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80162968(s32 a0); -extern s32 func_80162ACC(u8 *a0); -extern u8 D_800B5CB8; -extern s32 D_8018FDAC; -extern s32 D_800B5CBC; -extern u8 D_800B5CDF; -extern s32 D_800B5CEC; -extern void func_80162870(s32 param_1); -extern void func_801628F4(s32 *a0); -extern void func_80162968(s32 param_1); -extern void func_80162AC0(s32 *a0, s8 a1); -extern s32 func_80162AE0(u8 *a0); -extern void func_80162AF4(void); -extern void func_80162CC4(void); -extern s32 D_80126D40; -extern void func_80162B1C(void); -extern void func_80162D28(s32 *a0); -extern void func_80162D88(s32 *a0); -extern void func_80162DE8(s32 *a0); -extern void func_80162E48(s32 *a0); -extern void func_80162EA8(s32 *a0); -extern void func_80162F60(s32 arg0, s32 arg1); -extern void func_80162F80(s32 arg0, s32 arg1); -extern void func_80162FA0(s32 arg0, s32 arg1); -extern void func_80162F08(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80162FC0(s32 *a0); -extern void func_80162FF4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801630C4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163194(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg4); -extern void func_8016325C(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163234(s32 a0); -extern s32 D_80115100; -extern s32 func_801632E0(void); -extern s32 D_80115200; -extern s32 func_801632F0(void); -extern u16 D_80126B18[]; -extern void func_80163328(void); -extern s32 func_801633A8(void); -extern s32 func_80163408(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void func_80163534(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, u16 * a5); -extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); -extern char D_801E5054[8]; -extern void *memcpy(void *dst, const void *src, unsigned int n); -extern void func_801634D8(s32 param_1, u16 param_2, u16 param_3, s32 param_4, u16 param_5); -extern void func_80157158(); -extern void func_80163664(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801636D0(s32 a0, s32 a1); -extern s32 func_8016380C(struct S8016380C *a0, s32 a1); -extern void *memcpy(void *dst, void *src, s32 n); -extern s32 func_801638A0(u8 *a0, s32 a1); -extern s32 func_80163950(s32 a0); -extern void (*D_8018FDC4[])(void); -extern void func_80163A58(void *a0); -extern void func_80163A94(s32 param_1); -extern void func_80163C2C(s32 param_1); -extern void func_80163EC8(s32 param_1); -extern void func_80164270(s32 *a0); -extern void func_80164418(void); -extern void func_80163764(s32 a0); -extern void func_801642AC(s32 a0); -extern void func_8016432C(s32 a0); -extern void func_80164410(void); -extern s32 func_80012DBC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164530(s32 arg0); -extern void (*D_8018FE18[])(void); -extern void func_80164744(s32 param_1); -extern void func_8001C810(s32 a0, s32 a1); -extern void func_80164A74(s32 *a0); -extern void func_80164930(s32 a); -extern u16 D_800DF2E0; -extern s32 D_8018FDE0; -extern s16 D_8018FE14; -extern s16 D_8018FE12; -extern s16 D_8018FE10; -extern void func_801647A4(int param_1); -extern void func_80164ACC(); -extern void func_80164864(void *a0); -extern void func_80164930(s32 param_1); -extern s32 func_8014C308(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164ACC(s32 a0); -extern void (*D_8018FE24[])(void); -extern void func_80164BA0(void *a0); -extern void func_8001CD50(s32 a0, s32 a1); -extern void func_800233CC(void *, unsigned short); -extern void func_80164DD0(s32 a0); -extern void func_80164DB0(void); -extern u8 D_801E5CB8; -extern u8 D_801E5CB9; -extern u8 D_801E5CBA; -extern u8 D_801E5CBB; -extern u8 D_801E5CBC; -extern u8 D_801E5CBD; -extern u8 D_801E5CBE; -extern u8 D_801E5CBF; -extern void func_80164BDC(s32 param_1); -extern void func_80164E40(void); -extern void func_80164CD4(u8 *a0); -extern void func_80164D4C(void *arg0); -extern void (*D_8018FE34[])(void); -extern void func_80164EA4(void *a0); -extern void func_80165124(void *a0); -extern void func_80164EE0(int param_1); -extern s32 func_80165140(s32 a0); -extern void func_801651B8(void *a0); -extern void func_80164F44(void *arg0); -extern void func_80165024(void *a0); -extern void func_80165064(s32 *a0); -extern void func_801650C4(s32 *a0); -extern s32 func_80165140(s32 param_1); -extern s32 func_80165240(s32 a0, s32 a1, s32 a2); -extern s32 D_801E5CF8; -extern void func_801651B8(void * param_1); -extern u8 D_80126CF8; -extern void func_8016533C(void); -extern void func_801653F4(s32 a0); -extern void func_80165580(s32 a0); -extern void func_80165374(s32 a0); -extern void func_80165580(s32 _arg0); -extern void func_801653B8(s32 *a0); -extern s32 func_80165624(s32 a0); -extern u8 D_80078EC5; -extern void (*D_8018FE78[])(void); -extern u8 func_80165658(s32 a0, s32 a1); -extern void func_800CAE0C(s32 a0); -extern void func_801654A8(s32 arg0); -extern void func_80165B28(void *a0); -extern void func_801655E4(s32 a0); -extern u8 D_8018FEF4[]; -extern s32 D_8018FF14[]; -extern u8 D_8018FF90[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018FFB0[]; -extern u8 D_8018FFD0[]; -extern void func_800CAF6C(void); -extern void func_80165770(void); -extern void func_801657D8(void); -extern u8 D_80078EC3; -extern void func_801657A0(void); -extern s32 D_80078EA0; -extern s32 D_80078EA8; -extern u8 D_80078EBB; -extern s32 D_80078ED4; -extern s32 D_80078ED8; -extern s32 D_80078EDC; -extern u8 D_80078EE0; -extern void func_80165874(void); -extern s8 D_80078EC4; -extern void func_801658EC(void); -extern s32 func_80165900(void); -extern s32 func_80165910(void); -extern s32 D_8012672C; -extern s32 D_8012811C; -extern s32 D_80126B08; -extern void func_80165938(void); -extern void func_80165958(void); -extern s32 func_80165978(void); -extern void func_80165988(void); -extern s32 func_801659A8(void); -extern void func_801659B8(void); -extern s32 func_801659CC(void); -extern void func_80165A18(void); -extern s32 func_80165A50(s32 _arg0); -extern void func_80165AC8(void); -extern void func_80165A78(s32 arg0); -extern void (*D_8019006C[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_801900E8[])(void); -extern void func_80165BB4(u8 *a0); -extern void func_80165B6C(u8 *a0); -extern void func_80165C58(s32 arg0); -extern void func_80165BFC(void *a0); -extern void func_80165C78(void); -extern M2C_UNK D_801E5064; -extern void func_80165E2C(u16 *arg0); -extern s32 func_80165FA4(s32 a0, s32 a1, s32 a2); -extern s32 func_80167DBC(s32 a0, s32 a1, s32 a2); -extern s32 func_80167AE0(s32 a0, s32 a1, s32 a2); -extern void func_80165E90(void); -extern void func_80020F34(s32 a0, s32 a1); -extern s32 func_80165FA4(s32 arg0, s32 arg1, s32 arg2); -extern void (*D_801900F4[])(void); -extern void func_80166018(void *a0); -extern void func_80166054(s32 arg0); -extern void func_801661CC(s32 param_1); -extern void func_80166244(void* arg0); -extern void func_8016629C(void *a0); -extern void func_801662F4(void *a0); -extern void func_8016634C(void *a0); -extern void func_801663A4(void *a0); -extern void (*D_801900FC[])(void); -extern void func_801663FC(void *a0); -extern u8 D_800D387C[]; -extern u8 D_800D3888[]; -extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); -extern void func_800D1FC8(s32 a0, s32 a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern void func_801665B4(); -extern void func_80146C3C(); -extern void func_80166438(u8 *a0); -extern s32 func_80128ED8(s32 param_1, s32 *param_2); -extern void func_800D22E4(s32 a0); -extern void func_801665B4(s32 *a0); -extern void (*D_801901C4[])(void); -extern void func_80166618(void *a0); -extern void (*D_801901D4[])(void); -extern void func_80166654(void *a0); -extern s32 func_80166690(s32 param_1, s32 param_2); -extern s32 func_80166994(); -extern s32 func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern s32 func_80167540(s32 arg0); -extern void (*D_801901E4[])(void); -extern void func_801678B4(void *a0); -extern void RotMatrixYXZ(void *a0, void *a1); -extern void func_80048EAC(void *a0, void *a1); -extern s32 func_801670E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80146C3C(void); -extern void func_801678F0(s32 a0); -extern void (*D_801901F0[])(void); -extern void func_80167A9C(void *a0); -extern void func_80167AD8(void); -extern s32 func_80167AE0(s32 param_1, s32 param_2, s32 param_3); -extern void func_80168070(s32 a0, s16 *a1, s16 *a2, void *a3); -extern u8 D_80190150[]; -extern u8 D_80190164[]; -extern s32 func_80167DBC(s32 arg0, s32 arg1, s32 arg2); -extern void func_800D20C0(void *a0, void *a1, s32 a2); -extern void func_80017E68(void *a0, void *a1); -extern void func_800D23D0(void *a0); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern s32 D_801269A4; -extern s32 D_801269A8; -extern s32 D_801269AC; -extern void func_80168070(s32 param_1, s16 *param_2, s16 *param_3, void *param_4); -extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_8016829C(s32 a0); -extern s32 func_80166690(s32 a0, s32 a1); -extern void func_80168328(s32 arg0); -extern void func_801683D8(s32 a0); -extern void func_801684B4(s32 a0); -extern void func_80168540(s32 a0); -extern void func_801685EC(s32 a0); -extern void func_80168640(s32 a0); -extern s32 RotMatrixX(s32 a0, void *a1); -extern void func_80168664(void *arg0); -extern void (*D_80190208[])(void); -extern void func_80168744(void *a0); -extern void func_80168BDC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801687CC(s32 a0); -extern void func_80168780(s32 a0); -extern void func_80168828(void); -extern void func_801687CC(s32 param_1); -extern void func_80168828(); -extern void (*D_80190210[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_80190218[])(void); -extern void func_80168AA8(void *a0); -extern void func_80168AE4(s32 a0); -extern void func_800D2318(void); -extern void func_80168BDC(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void (*D_80190220[])(void); -extern void func_80168D58(void *a0); -extern void func_80168D94(int a0); -extern void func_80168F40(); -extern void func_80168EC4(s32 a0); -extern void func_80168F40(void *arg0); -extern void (*D_80190228[])(void); -extern void func_8016901C(void *a0); -extern void func_80169058(s32 a0); -extern s32 func_80169228(void); -extern void func_801691B8(void *a0); -extern void (*D_80190230[])(void); -extern void func_801693CC(void *a0); -extern void func_80169584(s32 param_1); -extern void func_80169408(s32 a0); -extern void func_8016951C(int param_1); -extern s32 func_80017758(void *a0, void *a1); -extern s32 func_80017DC4(void *a0, void *a1); -extern void func_801696D8(s32 a0, s32 a1); -extern void (*D_80190238[])(void); -extern void func_80169830(void *a0); -extern void func_8016986C(s32 a0); -extern s32 func_80169A4C(s32 a0, s32 a1); -extern void func_801699D0(void *arg0); -extern void (*D_801902EC[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_801902F4[])(void); -extern void func_80169F00(void *a0); -extern char D_801902A4[]; -extern char D_80190264[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8019032C[])(void); -extern void func_8016A020(void *a0); -extern void func_8016A05C(void *a0); -extern void func_8016A290(s32 a, void *b, void *c); -extern void func_8016A08C(s32 param_1); -extern void func_8016A1CC(int param_1); -extern void func_8016A290(s32 param_1, void *param_2, void *param_3); -extern void (*D_80190338[])(void); -extern void func_8016A700(void *a0); -extern s32 func_8016A73C(s32 arg0); -extern s32 func_8016A8FC(s32 a0); -extern void func_8016A890(s32 arg0); -extern void func_8016AA50(s32 param_1, s32 param_2); -extern void (*D_80190380[])(void); -extern void func_8016AB30(void *a0); -extern void func_8016B234(void); -extern void func_8016AFB0(s32 a0); -extern void func_8016B114(void *arg0); -extern s32 func_8016B448(s32, s32); -extern s32 func_8016BA48(s32 a0); -extern void func_8016B3F4(s32 a0); -extern s32 func_8016B428(s32 a0); -extern void func_8016B984(void *a0); -extern s32 func_8016B448(s32 arg0, s32 arg1); -extern void (*D_801903FC[])(void); -extern void func_8016B4BC(void *a0); -extern int func_8016B9F8(int); -extern int func_8016B834(int, int); -extern void func_8016B91C(int); -extern int D_801E6018; -extern void func_8016B4F8(int param_1); -extern s32 func_8016B9F8(s32 param_1); -extern void func_8016B6BC(s32, s32, s32, s32); -extern void func_8016B91C(s32); -extern s16 D_801903F0[]; -extern void func_8016B5C0(s32 param_1); -extern void func_8001CD9C(int, void *); -extern int *D_80190434[]; -extern unsigned short D_8019043C[]; -extern unsigned short D_80190444[]; -extern unsigned char D_801E6020[]; -extern int func_8016B834(int param_1, int param_2); -extern void func_8016B964(SrcB964 *a0, DstB964 *a1); -extern void func_8016B91C(s32 arg0); -extern s32 D_801E6018; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8019044C[])(void); -extern void func_8016BBA4(void *a0); -extern s32 func_8016BBE0(s32 param_1); -extern void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3); -extern M2C_UNK D_801E6154; -extern M2C_UNK D_801E6158; -extern void func_8016BCC0(void *arg0); -extern s32 func_8016BD78(s32 param_1); -extern s32 func_8016BEA0(s32 param_1); -extern void func_8016BF34(void *a0); -extern void func_8016BFD0(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern s32 D_801E60E0; -extern void (*D_8019047C[])(void); -extern void func_8016C14C(void *a0); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801E615C[]; -extern u8 D_801E6164[]; -extern u8 D_801E6114[]; -extern void func_8016C2C4(s32 param); -extern s32 func_8016C49C(s32 param_1_arg); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_8016C74C(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern short func_8016CF04(s32 a0, s32 a1); -extern void func_8016C83C(s32 a0); -extern void (*D_80190484[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_801904A0[])(void); -extern void func_8016D19C(void *a0); -extern void (*D_801904A8[])(void); -extern void func_8016D428(void *a0); -extern void func_8016D464(u8 *a0); -extern void func_8016D4DC(s32 a0); -extern void func_8016D5EC(s32 *a0); -extern short func_8016CBC0(void); -extern void func_8016D64C(int param_1); -extern void func_8016D778(s32 a0); -extern void func_800D20C0(); -extern void func_8016D848(s32 *a0); -extern void func_8016D984(s32 *a0); -extern void func_8016DBD8(u8 *a0); -extern void (*D_80190510[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801904B4; -extern u8 D_801904C0; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void (*D_80190544[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8019054C[])(void); -extern void func_8016DF20(void *a0); -extern void func_8016E3CC(s32 a0); -extern void func_8016E1CC(s32 a0); -extern void func_8016E26C(s32 *a0); -extern void func_8016E2E8(void *a0); -extern void func_8016E460(void *a0, void *a1); -extern void func_8016E358(void *a0); -extern void func_8016E460(void *arg0, void *arg1); -extern void (*D_801905A0[])(void); -extern void func_8016E5B8(void *a0); -extern void func_8016E5F4(s32 arg0); -extern void func_8016E778(); -extern void func_8016E688(void *a0); -extern void func_8016E6E4(s32 a0); -extern void func_8016E728(u8 *a0); -extern void func_8016E7C8(int param_1, short *p1, unsigned int *p2); -extern void func_8016E778(int param_1); -extern void func_8016E7C8(int param_1, short *param_2, unsigned int *param_3); -extern s32 D_80115218; -extern void func_8016E8F0(void); -extern void func_8016E918(short param_1, short param_2); -extern s32 func_8016E95C(); -extern u16 D_801905D4[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_801905C4[]; -extern void func_8016EB3C(s32 p); -extern void func_8016EBA8(u8 *param_1); -extern void func_8016ED6C(void); -extern s32 D_80126D70; -extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); -extern void func_8016ED8C(s32 a0, s32 a1, s32 a2); -extern void func_8016EE40(s32 a0, s32 a1, s32 a2); -extern void func_8016EDBC(s32 a0, s32 a1, s32 a2); -extern void func_8016EE94(); -extern void func_8016EDEC(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_8016EF78(s32 a0); -extern void func_8016EE40(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_801726D0(void *a0); -extern s32 D_80126D50; -extern s32 D_80126D54; -extern u8 D_80126D6C; -extern u8 D_80126D6D; -extern u8 D_80126D6E; -extern s32 D_80126D5C; -extern s32 D_80126D60; -extern s16 D_80126D64; -extern s16 D_80126D66; -extern s16 D_80126D68; -extern s16 D_80126D6A; -extern u8 D_80126D1A; -extern s32 D_80127058; -extern s32 D_8012705C; -extern s32 D_80127060; -extern s32 D_80127064; -extern s32 D_80127068; -extern s32 D_8012706C; -extern s32 D_80127070; -extern s32 D_80127074; -extern s16 D_80126D20; -extern void func_8016EE94(s32 a0, s32 a1); -extern s32 func_8016EFC8(s32); -extern s32 func_8016EFA8(s32 a0); -extern void func_8016F094(s32 *a0); -extern s32 func_8016F0AC(); -extern s32 D_801905F0; -extern void func_8016F250(void); -extern void func_8016F288(void); -extern void func_8016F2A8(void); -extern void func_8016F2C8(void); -extern void func_8016F2EC(void); -extern void func_8016F30C(void); -extern void func_8016F330(void); -extern void func_8016F350(void); -extern void func_8016F374(void); -extern void func_8016F388(void); -extern void func_8016F398(void); -extern s32 func_8016F44C(s32 a0); -extern void func_8016F470(s32 a0); -extern s32 func_8016F410(s32 a0); -extern void func_80175414(s32 _arg0); -extern s32 func_8016F4C4(s32); -extern s32 func_8016F494(s32 a0); -extern void func_8016F0E4(void); -extern s32 func_8016F4C4(s32 param_1); -extern void func_8016F4F4(void); -extern void func_801719A4(int a0, int a1); -extern void func_800D1724(s32 a0); -extern void func_80171928(void *a0); -extern void *D_8011F738; -extern void func_8016F4FC(void *a0); -extern void func_8014708C(void *a0); -extern void func_8016F540(void *a0); -extern void func_8016F578(s32 *a0); -extern void func_8016F5B0(void *a0); -extern void func_80147060(u8 *a0); -extern void func_8016F5E0(u8 *a0); -extern void func_8016F610(void *a0); -extern void func_8016F648(void *a0); -extern void func_8016F680(void *a0); -extern void func_8016F6B0(void *a0); -extern void (*D_80190668[])(void); -extern void func_8016F6E0(void *a0); -extern s32 func_80171990(u8 *a0); -extern void func_8016F764(void *a0); -extern void func_8016F71C(u8 *a0); -extern void (*D_80190670[])(void); -extern void func_8016F798(void *a0); -extern void func_8016F804(void *a0); -extern void func_8016F7D4(u8 *a0); -extern void func_80171928(void *); -extern void (*D_80190678[])(void); -extern void func_8016F834(void *a0); -extern void func_8016F8AC(u8 *a0); -extern void func_8016F870(u8 *a0); -extern void func_80172358(u8 *a0, u8 *a1); -extern void (*D_80190680[])(void); -extern void func_8016F8E4(void *a0); -extern void func_8016F95C(void *a0); -extern void func_8016F920(u8 *a0); -extern s32 func_80171CC4(void *a0, void *a1); -extern s32 func_80171D1C(void *a0, void *a1, s32 a2); -extern u16 D_8011F73E; -extern void (*D_80190688[])(void); -extern void func_8016F9C4(void *a0); -extern void func_80171B44(s32 *a0); -extern void func_8016FA44(s32 a0); -extern void func_8016FA00(s32 a0); -extern s32 func_80171C64(s32 a0, s32 a1); -extern void (*D_80190690[])(void); -extern void func_8016FA84(void *a0); -extern void func_8016FB10(void *a0); -extern void func_8016FAC0(u8 *a0); -extern void func_8016FB50(void *a0); -extern void (*D_8019069C[])(void); -extern void func_8016FB7C(void *a0); -extern void func_8016FC24(); -extern void func_8016FBB8(s32 a0); -extern s32 func_80171B4C(s32 a0, s32 a1); -extern void func_8016FC24(s32 a0); -extern void func_8016FC64(void *a0); -extern void (*D_801906A8[])(void); -extern void func_8016FC90(void *a0); -extern void func_8016FD08(u8 *a0); -extern void func_8016FCCC(u8 *a0); -extern s32 func_80172658(s32 *a0); -extern void func_8016FD08(u8 *s0); -extern void func_8016FD7C(s32 *a0); -extern void (*D_801906B4[])(void); -extern void func_8016FDB4(void *a0); -extern void func_8016FE2C(u8 *a0); -extern void func_8016FDF0(u8 *a0); -extern void func_8016FE2C(u8 * a0); -extern s32 func_8016FE78(s32 *a0); -extern s32 func_80172664(s32 *a0); -extern void func_8016FED0(s32 *a0); -extern void (*D_801906C4[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_801906D4[])(void); -extern void func_8016FFDC(void *a0); -extern void func_80170068(u8 *a0); -extern void func_80170018(u8 *a0); -extern void func_801700B8(u8 *a0); -extern void func_80170100(u8 *a0); -extern void (*D_801906DC[])(void); -extern void func_80170150(void *a0); -extern void func_801701C8(u8 *a0); -extern void func_8017018C(u8 *a0); -extern void func_801701C8(u8 * a0); -extern void (*D_801906E4[])(void); -extern void func_80170240(void *a0); -extern void func_801702B8(s32 a0); -extern void func_8017027C(u8 *a0); -extern s16 func_80171AB0(s32 a0, void *a1); -extern void (*D_801906EC[])(void); -extern void func_801702FC(void *a0); -extern void func_80170374(u8 *a0); -extern void func_80170338(u8 *a0); -extern s32 func_8014C168(s32 *a0, s32 a1); -extern void func_80170374(u8 * a0); -extern void (*D_801906F4[])(void); -extern void func_801703E0(void *a0); -extern void func_8017044C(u8 *a0); -extern void func_8017041C(u8 *a0); -extern void func_8017044C(u8 * a0); -extern void (*D_801906FC[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_80190704[])(void); -extern void func_80170548(void *a0); -extern void func_801705C0(u8 *a0); -extern void func_80170584(u8 *a0); -extern void func_801705C0(u8 * a0); -extern void (*D_8019070C[])(void); -extern void func_801705F8(void *a0); -extern void func_80170670(void *a0); -extern void func_80170634(u8 *a0); -extern void func_8012A568(void (*a0)(void)); -extern void (*D_80190714[])(void); -extern void func_801706AC(void *a0); -extern void func_80170718(void *a0); -extern void func_801706E8(u8 *a0); -extern void func_80129FF4(void); -extern void (*D_8019071C[])(void); -extern void func_80170748(void *a0); -extern void func_801707D4(void *a0); -extern void func_80170784(u8 *a0); -extern s32 func_80174ED4(void); -extern void (*D_80190724[])(void); -extern void func_80170810(void *a0); -extern void func_801708B0(void *a0); -extern u8 D_800D5DA8; -extern void func_8017084C(s32 a0); -extern u8 D_800D5A34[]; -extern void func_80170AD8(void *a0); -extern void func_80171904(s32 a0); -extern void func_80170B48(int a0); -extern void func_80170928(void); -extern u8 D_800D59EC[]; -extern void func_80170970(void); -extern u8 D_800D599C[]; -extern void func_801709B8(void); -extern u8 D_800D5934[]; -extern void func_80170A00(void); -extern void func_80170A48(void); -extern u8 D_800D5DC0[]; -extern void func_80170A90(void); -extern void (*D_8019072C[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_80190734[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8019073C[])(void); -extern void func_80170C74(void *a0); -extern s32 func_8017197C(u8 *a0); -extern void func_80170CF0(void *a0); -extern void func_80170CB0(u8 *a0); -extern void (*D_80190744[])(void); -extern void func_80170D68(void *a0); -extern void func_80170DE0(u8 *a0); -extern void func_80170DA4(u8 *a0); -extern s32 D_8011F73C; -extern s32 D_8011F740; -extern void func_801718AC(void *a0); -extern void func_80170DE0(u8 * _arg0); -extern void (*D_8019074C[])(void); -extern void func_80170E34(void *a0); -extern void func_80170EAC(u8 *a0); -extern void func_80170E70(u8 *a0); -extern int func_800D0F8C(int a0); -extern void func_80170EAC(u8 * _arg0); -extern void (*D_80190754[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8019075C[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_80190764[])(void); -extern void func_80171064(void *a0); -extern void func_801710DC(u8 *a0); -extern void func_801710A0(u8 *a0); -extern u16 D_8011F73A; -extern void func_801710DC(u8 * arg0); -extern void (*D_8019076C[])(void); -extern void func_80171120(void *a0); -extern void func_8017118C(u8 *a0); -extern void func_8017115C(u8 *a0); -extern void func_80142454(s32 a0); -extern void func_8017118C(u8 * a0); -extern void (*D_80190774[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8019077C[])(void); -extern void func_80171260(void *a0); -extern s32 func_80012F74(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80171384(void *a0); -extern void (*D_80190784[])(void); -extern void func_801714E4(void *a0); -extern void func_8017162C(void *a0); -extern void func_80171520(s32 a0); -extern s32 func_801716AC(s32 a0, void *a1, s32 *a2); -extern s32 func_80012FC8(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_800A5E94; -extern u8 D_800A5E95; -extern u8 D_800A5E96; -extern s32 func_801716AC(s32 a0, void * a1, s32 * a2); -extern int func_800D0FE0(int a0); -extern void func_801717A0(void *a0); -extern void func_8013E588(void *a0); -extern void func_801717F4(void *a0); -extern void func_80171824(void *a0); -extern void func_80171854(void *a0); -extern void func_80171884(void); -extern void func_80171A1C(u8 *a0); -extern void func_80171928(void * a0); -extern void func_8017196C(s32 *a0, s8 a1); -extern void func_80171A04(s32 *a0); -extern void func_80171A10(s32 *a0); -extern void func_80171A34(s32 *a0, s8 a1); -extern s32 func_80171A44(u8 *a0); -extern s32 func_80171A58(u8 *a0); -extern s32 func_80171A6C(u8 *a0); -extern void func_80171A80(s32 *a0, s32 a1); -extern s32 func_80171A88(s32 a0); -extern s16 func_80171AB0(s32 param_1, void * _arg1); -extern void func_80171B10(void *a0); -extern void func_80171EC8(s32 a0); -extern s32 func_80171C64(s32 param_1, s32 param_2); -extern s32 func_80171D78(s32 a0, s32 a1); -extern int func_8017250C(short *a0, short *a1); -extern s32 func_80171CC4(void * a0, void * a1); -extern s32 func_80171FFC(short *a0, short *a1, s32 a2); -extern s32 func_80171D1C(void * a0, void * a1, s32 a2); -extern s32 func_8017248C(s32 a0, s32 a1); -extern s32 func_80171E08(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_80047948(s32 a0); -extern s32 func_8004787C(s32 a0); -extern void func_80172170(s32 a0, s32 a1); -extern s32 func_8017209C(void *arg0, void *arg1, s32 arg2, s32 arg3); -extern void func_801722CC(s32 *a0); -extern void func_80172304(s32 *a0); -extern void func_80172310(u8 *a0); -extern void func_801723C4(s32 param_1, s32 param_2); -extern void func_80161C24(s32, s32); -extern void func_80172414(s32 a0); -extern s32 func_801724EC(s32 a0); -extern s32 func_8017248C(s32 arg0, s32 arg1); -extern s32 func_80013450(s32); -extern s32 func_80172560(u8 *a0, u8 *a1); -extern s32 func_8017261C(u8 *a0); -extern s32 func_80172644(u8 *a0); -extern s32 func_80172670(s32 *a0); -extern s32 func_80172688(s32 *a0); -extern s32 func_80172694(s32 *a0); -extern s32 func_801726A0(s32 *a0); -extern s32 func_801726AC(s32 *a0); -extern s32 func_801726B8(s32 *a0); -extern s32 func_801726C4(s32 *a0); -extern s32 func_80172760(s32 a0); -extern s32 func_80174650(s32); -extern void (*D_80127088)(void); -extern s32 D_801270BC; -extern s16 D_80126B0C; -extern void func_801726D0(void * _arg0); -extern void func_80172710(void); -extern void func_80174684(void *); -extern void func_80172738(void); -extern s16 D_80126B30; -extern s32 func_801727D0(void *a0); -extern void func_80172780(void *a0); -extern void func_80172844(u8 *a0); -extern void func_8017280C(u8 *a0); -extern void func_8017288C(void); -extern s32 func_801728E4(void *a0); -extern void func_80172894(void *a0); -extern void func_80172958(u8 *a0); -extern void func_80172920(u8 *a0); -extern s16 D_80126B36; -extern void func_80172958(u8 * a0); -extern void func_801729A8(void); -extern s32 func_801729F0(void *a0); -extern s16 D_80126B34; -extern s16 D_80126B32; -extern void func_801729B0(s32 a0); -extern void func_80172A8C(void *a0); -extern void func_80172A2C(int param_1); -extern void func_80172ACC(u8 *a0); -extern void func_80172B0C(void); -extern s32 func_80172B44(void *a0); -extern void func_80172B14(s16 a0); -extern s32 D_801150F8; -extern void func_80172BC8(void *a0); -extern void func_80172B80(u8 *a0); -extern void func_80172C48(void); -extern void (*D_801907C8[])(void); -extern void func_80172CA0(void *a0); -extern void func_80172D14(u8 *a0); -extern void func_80172CDC(u8 *a0); -extern void func_80172D14(u8 * a0); -extern void func_80172D60(void); -extern s32 D_80127508; -extern s32 func_80172DAC(void *a0); -extern void func_80172D68(s32 a0); -extern void func_80172E20(u8 *a0); -extern void func_80172DE8(u8 *a0); -extern void func_80172E20(u8 * a0); -extern void func_80172E8C(void); -extern void func_8017303C(void *); -extern void func_80172E94(void); -extern void func_80172ED4(void); -extern void func_80172EFC(void); -extern void func_80172F24(void); -extern u8 D_800D47F4[]; -extern void func_80172F4C(void); -extern void func_80172F9C(void); -extern u8 D_800D5C6C[]; -extern void func_80172FEC(void); -extern s32 func_80173078(void *a0); -extern void func_8017303C(void * a0); -extern void func_801730FC(struct S801730FC *a0); -extern void func_801730B4(s32 a0); -extern void func_8017316C(void); -extern s32 func_8017319C(void *a0); -extern void func_80173174(void); -extern u8 D_800D5AA0[]; -extern void func_80173220(void *a0); -extern void func_801731D8(s32 *a0); -extern M2C_UNK D_8019078C; -extern void func_80173220(void * arg0); -extern void func_80173294(void); -extern void func_801732C4(); -extern void func_8017329C(void); -extern void func_801732C4(s32 *a0); -extern void func_8017331C(); -extern void func_801732F4(void); -extern void func_8017331C(s32 *a0); -extern void func_80173374(); -extern void func_8017334C(void); -extern void func_80173374(s32 *a0); -extern void func_801733A4(void); -extern void func_801733CC(s32 a0); -extern void func_801734BC(s32 a0, s32 a1); -extern s16 D_80126B3E; -extern void func_80173460(s32 a0, s32 a1); -extern void func_801734BC(s32 arg0, s32 _unused1); -extern void (*D_801907F8[])(void); -extern void func_80173544(void *a0); -extern void func_801735B8(u8 *a0); -extern void func_80173580(u8 *a0); -extern s16 D_80126B40; -extern void func_801735EC(void *a0); -extern void func_80173648(u8 *a0); -extern void func_801736A8(void); -extern s32 func_8014C118(void *a0, s32 a1, s32 a2); -extern s32 func_801736FC(void *a0); -extern void func_801736B0(s32 a0, s32 a1); -extern void func_80173770(u8 *a0); -extern void func_80173738(u8 *a0); -extern void func_801723C4(s32 a0, s32 a1); -extern void func_801737B0(void); -extern s32 func_801737E8(void *a0); -extern void func_801737B8(s16 a0); -extern void func_8017385C(u8 *a0); -extern void func_80173824(u8 *a0); -extern void func_801738D4(void); -extern s32 func_8017390C(void *a0); -extern void func_801738DC(s16 a0); -extern void func_80173980(u8 *a0); -extern void func_80173948(u8 *a0); -extern void func_801739D8(u8 *a0); -extern void func_80173A20(void); -extern s32 D_8012750C; -extern void func_80173A60(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80173A28(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void (*D_80190834[])(void); -extern void func_80173B4C(void *a0); -extern void func_80173BC0(u8 *a0); -extern void func_80173B88(u8 *a0); -extern void func_80173C64(u8 *a0); -extern void func_80173E1C(s32 a0); -extern s16 D_80126938; -extern s16 D_80126B3A; -extern void func_800D128C(s32, s32); -extern void func_80174158(s32 a0); -extern void func_8002A088(s32); -extern void func_8002A2D4(s32); -extern void func_8002A544(s32); -extern void func_8002A7B4(s32); -extern s32 func_80174188(s32 a0); -extern void func_801741A8(s32 a0); -extern s32 func_800D0EC4(void); -extern void func_800D0F0C(s32, s32); -extern void func_80145EE8(s32); -extern void func_80173EF8(void *param_1); -extern s32 func_8014BCEC(s32, s32); -extern void func_801741A8(s32 _arg0); -extern s16 D_80126B3C; -extern s16 D_8011F9C8; -extern void func_801741EC(u8 *a0); -extern void func_80174274(void); -extern s32 func_801742A4(void *a0); -extern void func_8017427C(void); -extern void func_80174318(u8 *a0); -extern void func_801742E0(u8 *a0); -extern void func_80174354(void); -extern s32 func_80174384(void *a0); -extern void func_8017435C(void); -extern void func_801743F0(u8 *a0); -extern void func_801743C0(u8 *a0); -extern void func_801743F0(u8 * a0); -extern void func_80174430(void); -extern s32 func_80174474(void *a0); -extern void func_80174438(s32 a0); -extern void func_801744E0(u8 *a0); -extern void func_801744B0(u8 *a0); -extern void func_80174524(void); -extern void func_80174554(); -extern void func_8017452C(void); -extern void func_80174554(s32 arg0); -extern void func_801745AC(); -extern void func_80174584(void); -extern void func_801745AC(s32 *a0); -extern void func_80174604(void); -extern void func_801745DC(void); -extern void func_80174630(void); -extern s32 func_80174650(s32 _arg0); -extern void func_80174674(void); -extern void func_801746A4(void); -extern s32 func_800CF8CC(void); -extern void func_80174714(void); -extern s32 func_80174754(void); -extern s16 func_80174764(void); -extern s16 func_80174774(void); -extern s32 func_801747CC(void *a0); -extern void func_80174784(void); -extern s32 func_801747AC(s32 a0); -extern s32 func_80174808(u8 *a0); -extern void func_8017481C(void); -extern s32 func_80174888(void *a0); -extern void func_80174824(void); -extern void func_8017484C(s32 a0); -extern void func_801748C4(s32 a0); -extern void func_801748E4(void); -extern void func_8012A018(s32 a, s32 b); -extern s32 func_8017496C(void *a0); -extern void func_801748EC(void); -extern s32 func_801749C8(); -extern s32 func_801749A8(s32 a0); -extern void func_80174BBC(void *a0); -extern void func_8012A0E0(void); -extern void func_80174BF4(void *a0); -extern void (*D_8019088C[])(); -extern void func_80174BF4(void * arg0); -extern s32 func_80174CB0(s32, s32); -extern s32 func_80174C60(s32 a0); -extern void func_80174C80(s32 a0); -extern s32 D_8012697C; -extern u16 D_80126980; -extern s32 func_80174F28(void *a0); -extern void func_80174E9C(s32 a0); -extern void func_80174EF0(s32 a0, s16 a1); -extern s32 func_80175014(u8 *a0, u8 *a1, s32 a2); -extern void func_80174F64(u8 *a0); -extern void func_80174FBC(u8 *a0); -extern s32 func_8017509C(u8 *a0, s32 a1, u8 *a2, u8 *a3); -extern void func_80175184(s32 *a0); -extern void func_80175114(s32 *a0); -extern void func_80175184(); -extern void func_80175150(s32 *a0); -extern void (*D_8019089C[])(void*); -extern s32 func_80175268(s32); -extern void func_80175184(s32* arg0); -extern s32 func_80175218(void *a0); -extern void func_801751D8(void *a0); -extern void (*D_801908A4[])(s32); -extern s32 func_80175218(void * param_1); -extern void func_801752BC(s32 *a0); -extern u8 D_8011F7A8; -extern u8 D_8011F7A9; -extern u8 D_8011F7AD; -extern u8 D_8011F7AE; -extern void func_80175494(void); -extern void (*D_80190A0C[])(); -extern s32 func_801758FC(void); -extern s32 func_80175820(void); -extern s32 func_801759D8(void); -extern void func_8017553C(s32 *param); -extern void func_801757A0(s32 a0); -extern short D_800B9A02; -extern void func_80175590(void *arg0); -extern s16 D_800B9A02; -extern void func_801757A0(s32); -extern void func_80175624(void *a0); -extern void func_801757E0(int); -extern void func_80175668(void); -extern void (*D_80190A18[])(); -extern void func_80175690(s32 *param); -extern void func_80175DA8(s32 a0); -extern void func_80175AB8(s32 a0); -extern void func_80176144(s32 a0); -extern void func_801756E4(s32 arg0); -extern void func_80175798(void); -extern void func_80176734(s32 a0); -extern void func_80176218(s32 a0); -extern void func_80176D00(s32 a0); -extern void func_801757E0(s32 a0); -extern s32 func_80178004(s32 a0, s32 a1, s32 a2); -extern u8 D_8011F7B1; -extern u16 D_8011F7B4; -extern u16 D_8011F7B6; -extern s16 D_8011F81E; -extern void *func_80177784(void *a0, s32 a1, s32 a2, s32 a3); -extern u32 func_801783D0(s32 a0, s32 a1); -extern void *func_801777BC(void *a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern u16 D_8011F82C; -extern u16 D_8011F82A; -extern u32 * func_80176D94(void *param_1, u32 param_2, s16 param_3_); -extern void func_801778A8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80176FF4(s32 a0); -extern u16 D_8011F830; -extern u16 D_8011F82E; -extern u32 * func_801770E0(void *param_1, u32 param_2, s16 param_3_); -extern void func_80177340(s32 a0); -extern u8 D_8011F837; -extern u8 D_8011F7F0; -extern u8 D_8011F7AB; -extern u32 * func_8017742C(u32 *param_1, s32 param_2, s32 param_3); -extern void func_801776EC(u8 *a0); -extern void * func_80177784(void *a0, s32 a1, s32 a2, s32 a3); -extern uint * func_80177EA4(uint *param_1, int param_2, uint param_3, int param_4); -extern void func_80177F84(s32 param_1, s32 param_2); -extern u32 * func_80178298(u32 *param_1, u8 *param_2, short param_3, short param_4); -extern M2C_UNK D_801E52AC; -extern void func_80178438(u16 *arg0); -extern void func_801787D4(void); -extern void func_8012A908(void); -extern void func_8017869C(s32 a0); -extern void func_80130D0C(s32 a0); -extern void func_8013E370(void); -extern s32 D_8011DB08; -extern void func_8017849C(void); -extern void func_8013E4B4(void); -extern s16 D_801270C4; -extern s32 D_801274D8; -extern s16 D_801270C2; -extern u8 D_801270C6; -extern u8 D_801270C7; -extern s32 D_801274DC; -extern s32 D_801274E0; -extern void func_80178608(void); -extern void func_80178744(s32 a0, s32 a1); -extern void func_80178840(); -extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern s32 func_801788B8(s32 arg0, s32 arg1); -extern s32 func_801789AC(s32 arg0); -extern s16 D_801E7AB0; -extern int func_80178970(void); -extern s32 func_80178B18(s32 param_1, s32 param_2); -extern s32 func_80178B70(s32 param_1, s32 param_2); -extern void func_80178BB8(s32 a0, s32 a1); -extern s32 func_80178BF8(); -extern s32 D_801E6898; -extern short D_801E7B24; -extern void func_80178CBC(s32 arg0, s32 arg1); -extern void func_80178D18(void); -extern s32 func_80178D40(s32 arg0, s32 arg1); -extern void func_80179B28(s32 a0); -extern void func_80179B74(u16 *p); -extern void func_80179D30(u16 *a0); -extern void func_80179D78(u16 *a0); -extern void func_80179DCC(short a0); -extern void func_80179DF8(void); -extern void func_80179E1C(short a0); -extern void func_80179E48(s16 a0); -extern void func_80179E74(s16 a0); -extern void func_80179EA0(u16 *a0); -extern void func_80179EE8(short a0); -extern void func_80179F14(s16 a0, s16 a1); -extern void func_80179F44(void); -extern void func_80179F6C(short a0); -extern void func_80179F98(u16 *a0); -extern void func_80179FEC(u16 *a0); -extern void func_8017A040(u16 *a0); -extern s32 D_801E6CC4; -extern void func_8017A094(s32 arg0); -extern void func_8017A0C4(s32 arg0); -extern void func_8017A0F4(void); -extern void func_8017A11C(void); -extern s32 D_801E6CEC; -extern void func_8017A144(s32 a0); -extern void func_8017A180(void); -extern void func_8017A1A8(void); -extern void func_8017A1D0(void); -extern void func_8017A1F8(void); -extern void func_8017A220(void); -extern void func_8017A248(void); -extern void func_8017A270(void); -extern void func_8017A298(void); -extern void func_8017A2C0(void); -extern void func_8017A2E8(void); -extern void func_8017A310(void); -extern void func_8017A338(void); -extern void func_8017A360(void); -extern void func_8017A388(void); -extern s16 D_801E6CA8; -extern s32 func_8017A3B0(void); -extern short D_801E6CE4; -extern short D_801E6CE0; -extern int func_800D0CA0(int); -extern int func_8001AAA0(void); -extern int func_800D0CE0(void); -extern int func_8017A3D8(void); -extern void func_80172310(u8*); -extern void func_80172780(void*); -extern void func_80172894(void*); -extern void func_801729B0(s32); -extern void func_80172B14(s16); -extern void func_80172C50(u16 *); -extern void func_80172D68(s32); -extern void func_801733FC(s16, u16 *); -extern void func_80173460(s32, s32); -extern void func_801734BC(s32, s32); -extern void func_801736B0(s32, s32); -extern void func_801737B8(s16); -extern void func_801738DC(s16); -extern void func_80173A28(s32, s32, s32, s32, s32, s32); -extern void func_80174438(s32); -extern void func_8017A4AC(void); -extern s32 func_8017AD0C(s32 arg0); -extern s32 func_8017AD0C(s32); -extern s32 func_8017ADE8(s32 a0); -extern s32 func_8017AE08(void); -extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); -extern void func_8012B178(s32 a0, s32 a1); -extern void func_8012AD80(s32 a0); -extern s32 func_8012B030(u8 *a0); -extern s32 func_8012B744(void *a0, void *a1); -extern s32 func_8012BE98(s32 a0, u16 *a1); -extern s16 D_801E7A68; -extern s16 D_801E7A6A; -extern s16 D_801E7A74; -extern void func_8017AE2C(s32 param_1); -extern void func_8017B0E4(int param_1, int param_2); -extern s16 D_801E6CAC; -extern u16 D_801E6D2C; -extern u16 D_801E6D2E; -extern u16 D_801E6D30; -extern void func_8017B1D8(void); -extern s32 func_8017B238(s32 param_1, s32 param_2); -extern s32 func_8017B368(s32 param); -extern s32 func_8017B490(s32 param); -extern s32 func_8017B614(s32 param_1, s32 param_2); -extern s32 D_80114F30; -extern s32 D_80114F34; -extern s32 D_80114F38; -extern s32 D_80114F24; -extern s32 D_80114F28; -extern s32 D_80114F2C; -extern u8 D_8012694C; -extern s16 D_801E6D24; -extern s16 D_801E6D26; -extern s16 D_801E6D28; -extern s16 D_801E6D1C; -extern s16 D_801E6D1E; -extern s16 D_801E6D20; -extern void func_8017B7A8(void); -extern s16 D_801E6D3C; -extern s16 D_801E6D3E; -extern s16 D_801E6D40; -extern s16 D_801E6D44; -extern s16 D_801E6D46; -extern s16 D_801E6D48; -extern void func_8017B824(void); -extern void func_8017B880(void); -extern s32 func_8017B8E8(s32 src); -extern short D_801E6D34; -extern short D_801E6D36; -extern short D_801E6D38; -extern void func_8017B940(void); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void RotTransSV(void *a0, void *a1, void *a2); -extern SV4 D_801E6CCC; -extern SV4 D_801E6CD4; -extern void func_8017BA3C(s32 param_1, s32 param_2); -extern s32 func_8017BB34(s32 param_1, s32 param_2); -extern void (*D_801E6CF4[10])(int); -extern void func_8017BC38(int param_1); -extern void func_8017B0E4(int, int); -extern void func_8017BCA0(int param_1); -extern void func_8012A4BC(void); -extern void func_8017BCF4(int param_1); -extern void (*D_801E6CF0)(void); -extern void func_8017BD50(int param_1); -extern void (*D_80190BF4[])(void); -extern void func_8017BE60(void *a0); -extern void (*D_80190C94[])(void); -extern void func_8017BE9C(void *a0); -extern void (*D_80190C9C[])(void); -extern void func_8017BED8(void *a0); -extern void (*D_80190CA4[])(void); -extern void func_8017BF14(void *a0); -extern u8 *func_8012913C(s32 a0); -extern s32 func_8012C750(s32 a0); -extern void func_8017BF50(s32 a0); -extern void func_8017C094(void); -extern void func_8017C100(s32 param_1); -extern void func_8017C1AC(s32 param_1); -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8012A828(s32*, s32); -extern void func_8012B260(u8 *a0); -extern void func_8017C1EC(s32 a0); -extern void func_8017C2B0(s32 a0); -extern void (*D_80190CC4[])(void); -extern void func_8017C338(void *a0); -extern s32 func_800D222C(s32 a0, void *a1, s32 a2); -extern s32 func_8001CF30(void *a0); -extern void func_8017C374(s32 param_1); -extern void func_8017C538(u8 *p); -extern void (*D_80190CCC[])(void); -extern void func_8017C5CC(void *a0); -extern u8 D_80190CB8; -extern void func_8017C608(s32 a0); -extern void func_8017C6AC(int a0); -extern void func_8017C710(s32 arg0); -extern void (*D_80190CE4[])(void); -extern void func_8017D5F0(void *a0); -extern void func_8001C214(s32, s32); -extern u32 D_80190CD4; -extern void func_8017D62C(s32 arg0); -extern void func_8017D6A8(void); -extern void (*D_80190D1C[])(void); -extern void func_8017D6B0(s32 *param_1); -extern void func_8017DA08(void *arg0); -extern s32 func_8012AD50(void *arg0); -extern void func_8017D6EC(void *arg0); -extern void func_8012AD44(s32 *a0, s16 a1); -extern void func_8017D9B8(void); -extern void func_8017DAC4(void *arg0); -extern void aF8017D77C(); -extern void func_80017714(void *); -extern void func_8013CB84(void); -extern void func_8017DC0C(void); -extern void func_800D06E8(void); -extern void func_8017DBDC(void); -extern u32 D_801E6FE8; -extern u16 D_80190D24[]; -extern u16 D_801E6FEC[]; -extern s32 D_80190D44; -extern void func_8017E038(void *arg0); -extern s32 func_8017DC98(s32 param_1); -extern s32 func_8017DCE8(void); -extern void func_800D1E28(void); -extern s32 func_800D1D94(void); -extern void func_8001BFD0(void); -extern s32 func_8017DD7C(s32 a0); -extern void func_800D1EBC(void); -extern void func_8017DE2C(void); -extern s32 func_8017DE4C(void *a0); -extern void func_8002D4C8(s32, s32); -extern s32 func_800291B4(s32); -extern s32 func_80029524(void); -extern void func_800D0C48(s32); -extern s32 func_8017DEA0(s32 param_1); -extern void (*D_80190D64[])(void); -extern void func_8017DF34(void *a0); -extern void (*D_80190D6C[])(void); -extern void func_8017DF70(void *a0); -extern void (*D_80190D78[])(void); -extern void func_8017DFAC(void *a0); -extern void (*D_80190D84[])(void); -extern void func_8017DFE8(void *a0); -extern s32 D_80127050; -extern void func_8017E024(void); -extern void (*D_80191060[])(void); -extern void func_8017E038(void *a0); -extern void func_8017E074(void *a0); -extern void func_8017E088(void *a0); -extern void (*D_80191068[])(void); -extern void func_8017E0C0(void *a0); -extern void func_8017E0FC(u8 *a0); -extern void func_8017E110(void); -extern void func_8012A094(s32 a0); -extern void func_8017E1F4(void *a0); -extern void func_8017E130(void); -extern void (*D_80191070[])(void); -extern void func_8017E26C(s32 *a0, s32 a1); -extern void func_8017E3AC(s32 a0); -extern void func_8017E230(s32 *a0); -extern void func_8017E264(void *a0); -extern void aF8017E26C(); -extern s32 func_80012ABC(s32 a0, s32 a1, s32 a2); -extern void func_8017E3AC(s32 param_1); -extern void func_80184CB8(s32*, s32); -extern void func_8017E5A0(void * arg0); -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 short D_80191074; -extern short D_801B99A8; -extern void func_8017E5CC(void *arg0); -extern void (*D_801912A8[])(void); -extern void func_8017E760(void *a0); -extern void func_8017E79C(short *a0); -extern void (*D_801912C8[])(void); -extern void func_8017E810(void *a0); -extern void func_80178CBC(s32 a0, s32 a1); -extern void func_8017E84C(void * arg0); -extern void func_8017E878(void * arg0); -extern void func_8017E8FC(void); -extern s32 func_8012E544(s32 a0); -extern void func_8017E950(void); -extern void func_8012C588(s32, s32); -extern void func_8017E99C(void); -extern s32 func_80184BAC(s32 arg0, s32 arg1); -extern void func_8017E5A0(void *arg0); -extern void func_8017E9C0(void *arg0); -extern s32 func_80184BD0(u8 a0, u8 a1, u8 a2, u8 a3); -extern void func_8017EA0C(void *arg0); -extern void func_8017EAAC(void * arg0); -extern s32 func_801847BC(void *a0, void *a1); -extern s16 D_8019107C; -extern s16 D_80191074; -extern void func_8017EDA4(void); -extern void func_8017EAFC(void *a0); -extern s32 func_8012BEE8(s32 a0); -extern void func_8017E79C(short*); -extern void func_8017EBA0(s32 a0); -extern void func_8017E7CC(); -extern void func_8017EBE0(u8 *a0); -extern void func_8001C214(s32 a0, s32 a1); -extern void func_8012E88C(s32 a0); -extern void func_8012B200(u8 *a0); -extern void func_8017ECF4(void *arg0); -extern s32 D_8019133C; -extern s32 D_80191364; -extern s32 D_8019138C; -extern s32 D_801913B4; -extern s32 D_80191484; -extern s32 D_80191494; -extern s32 D_8019151C; -extern s32 D_8019152C; -extern s32 D_8019153C; -extern s32 D_8019154C; -extern s32 D_801E7AAC; -extern void func_8017EE6C(void); -extern void func_8017F02C(void * arg0); -extern void (*D_8019155C[])(void); -extern void func_8017F058(void *a0); -extern void func_8017F094(void * arg0); -extern s32 func_8017F0C0(void); -extern void func_8017F0D8(void); -extern void func_80029124(s32 arg0, s32 arg1); -extern void func_8017F108(void); -extern void func_8017F138(void); -extern void func_8017F174(void); -extern void func_80029514(int); -extern void func_8017F1A8(void); -extern void func_8017F224(void *a0); -extern void func_8017F28C(void * arg0); -extern void (*D_801912E0)(void *); -extern short D_801912D8; -extern void func_8017F35C(void *); -extern void func_8017F2DC(void *a0); -extern void func_8017F564(void *a0); -extern void (*D_801916E4[])(void); -extern void func_8017F5BC(void *a0); -extern void func_80178CBC(s32, s32); -extern void func_8017F5F8(void *a0); -extern void func_8017F6D8(void *a0); -extern void func_8017F7B8(void *a0); -extern void func_8017F898(void *a0); -extern s32 func_800D0F8C(s32); -extern void (*D_801915D4[])(void); -extern void func_8017F978(void); -extern void func_80029124(s32 a, s32 b); -extern void func_8017FA34(void); -extern void func_8017F500(void *a0); -extern void func_8017FA58(void *a0); -extern void func_80184CB8(s32 *a0, s32 a1); -extern s16 D_80191570; -extern void func_8017FAAC(void *a0); -extern s32 func_80184FA4(void); -extern s32 func_80185BE0(s32 arg0); -extern u8 D_801E3978[]; -extern void func_8017F564(); -extern void func_80184ED4(s32, s32, s32, s32); -extern void func_8017FB0C(void *a0); -extern u8 D_801E396C[]; -extern void func_8017FBB0(void *a0); -extern void func_8017FC58(void *arg0); -extern void func_8017FCD8(void * arg0); -extern void func_8017FD28(s32 arg0); -extern void func_8017FD88(void *arg0); -extern void (*D_80191814[])(void); -extern void func_8017FF34(void *a0); -extern s32 D_80191744; -extern s32 D_8019171C; -extern void func_8017FF70(void *a0); -extern void func_80184C90(s32 a0); -extern void func_8018001C(void *arg0); -extern void (*D_801918E4[])(void); -extern void func_801800E0(void *a0); -extern s32 func_8018011C(void); -extern void func_800D1724(s32); -extern void func_80180134(void); -extern void func_8018015C(void); -extern void func_80180164(void * arg0); -extern void func_80180190(void * arg0); -extern s32 func_80180284(); -extern void func_801801E0(void *arg0); -extern void func_8012A828(s32 *a0, s32 a1); /* fleet-canonical sig (TU L3775) */ -extern void func_8018034C(void *arg0); -extern void func_80185FB8(s32, s32, s32); -extern s32 D_801B9DF8; -extern short D_801B65C8; -extern void func_801803BC(void *arg0); -extern void func_80184ED4(s32 a0, s32 a1, s32 a2, s32 a3); -extern short D_801B65B8; -extern void func_8018042C(s32 a0); -extern void (*D_801919C4[])(void); -extern void func_8018048C(void *a0); -extern s32 func_80184DD0(s32 a0); -extern void func_80180504(s32 a0); -extern s32 func_80180544(void); -extern void func_80180580(void *arg0); -extern void func_80180618(void *arg0); -extern void func_8018067C(); -extern void func_80185F54(void *, s32, s32); -extern s32 func_80185BE0(s32); -extern void func_80184CB8(s32 *, s32); -extern void func_801806CC(void *arg0); -extern s32 func_8012BD14(s32 a0); -extern s32 func_80180814(void *a0); -extern void func_80180888(void *arg0); -extern void func_801808FC(void *a0); -extern void func_80180954(void *arg0); -extern void func_801809DC(short *a0); -extern s32 func_80184BAC(s32 a0, s32 a1); -extern s32 func_801788B8(s32, s32); -extern s32 func_80184DD0(); -extern s32 func_80180CC0(void*); -extern s32 func_80180D38(void*); -extern void func_80180A08(void *arg0); -extern void (*D_80191A80[])(void); -extern void func_80180B6C(void *a0); -extern s32 func_8018203C(s32 a0); -extern short D_801919E8; -extern short D_801B9B50; -extern void func_80180BA8(void *a0); -extern void func_80180C0C(void * arg0); -extern s32 D_801E2344[]; -extern s32 D_801E22B4[]; -extern s32 D_80191A04[]; -extern void func_80180C38(void *a0); -extern s32 func_801848DC(void); -extern s32 func_8018625C(void *); -extern s32 func_80178BF8(void); -extern s32 func_80180CC0(void *a0); -extern s32 func_80178BF8(); /* TU-canonical (ov_SC04_018_jr_8017AE2C.c L2541) */ -extern s16 D_801E7010; -extern s16 D_801E7012; -extern s32 func_80180D38(void *a0); -extern s32 func_80185BE0(s32 a0); -extern void func_80180EE8(void *a0); -extern void func_80181020(void *a0); -extern void func_80181090(void *arg0); -extern void func_801811F4(void * arg0); -extern void func_80181244(short *param); -extern void func_801812D0(short *a0); -extern void (*D_80191B20[])(void); -extern void func_801812FC(void *a0); -extern void func_80181338(short *param); -extern void func_80181364(s32 a0); -extern void func_801813A4(void *a0); -extern short D_80191AB0; -extern void func_80181400(s32 *arg0); -extern void func_80181474(void * arg0); -extern s32 func_80181564(void *a0); -extern s16 D_801B99A8; -extern u8 D_801B662C[]; -extern void func_80181998(void); -extern void func_801815DC(void *arg0); -extern void func_80181648(void *a0); -extern void func_801816A8(void *arg0); -extern void func_8018170C(void * arg0); -extern void func_80181738(void *arg0); -extern short D_80191B34; -extern void func_8018178C(void * arg0); -extern void func_801817B8(void *arg0); -/* ==== end §8b carried decl layer ==== */ - - -#include "common.h" - -extern s32 func_80185BE0(s32 a0); -extern s32 func_80184FA4(void); -extern void func_80184ED4(s32, s32, s32, s32); -extern void func_80184CB8(s32*, s32); -extern u8 D_801B66C0[]; -extern u8 D_801B6670[]; -extern u8 D_801B662C[]; -extern short D_80191B34; - -void func_80181804(void *a0) -{ - switch (*(u16 *)((s32)a0 + 0x34)) { - case 0: - if (func_80185BE0(0xD) == 0) { - return; - } - *(u16 *)((s32)a0 + 0x34) = 1; - func_80184ED4((s32)a0, (s32)D_801B66C0, 1, 0x80); - return; - case 1: - func_80185BE0(0xD); - if (((s32 (*)(s32))func_80184FA4)((s32)a0) == 0) { - return; - } - *(u16 *)((s32)a0 + 0x34) = 2; - func_80184ED4((s32)a0, (s32)D_801B6670, 1, 0x80); - return; - case 2: - if (((s32 (*)(s32))func_80184FA4)((s32)a0) == 0) { - return; - } - *(u16 *)((s32)a0 + 0x34) = 3; - *(s32 *)((s32)a0 + 0x1C) = 0x20; - return; - case 3: - if (func_80185BE0(3) == 0) { - return; - } - *(u16 *)((s32)a0 + 0x34) = 4; - func_80184ED4((s32)a0, (s32)D_801B662C, 1, 0x80); - return; - case 4: - func_80185BE0(3); - if (((s32 (*)(s32))func_80184FA4)((s32)a0) == 0) { - return; - } - *(u16 *)((s32)a0 + 0x2) = 1; - func_80184CB8((s32 *)a0, (s32)&D_80191B34); - return; - } -} - - - -extern void (*D_80191BDC[])(void); - -void func_80181924(void *a0) { - D_80191BDC[*(u16 *)((s32)a0 + 0x2)](); -} - - -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) */ - -DEFINE_func_801819B0() /* dedup: shared engine-core @0x801819B0 (src/shared) */ - - - -extern void func_8012E8E0(s32, s32); -extern void func_8012E88C(s32); -extern void func_8012A828(s32 *, s32); -extern void func_80178CBC(s32, s32); - -void func_801819C8(void *arg0) { - - extern s32 D_80191B3C; - extern s32 D_80191B74; - /* [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_801B9A50; - *(short *)((char *)arg0 + 0x2) = 5; - func_8012E8E0((s32)arg0, (s32)&D_80191B3C); - func_8012E88C((s32)arg0); - func_8012A828((s32 *)arg0, (s32)&D_801B9A50); - ((void (*)(s32 *, s32))func_80178CBC)((s32 *)arg0, (s32)&D_80191B74); -} - - - -extern s32 func_80184DD0(s32 a0); - -void func_80181A28(s32 a0) { - - extern s32 D_80191B58[]; - s32 idx = func_80184DD0(a0); - *(s32 *)(a0 + 0xE4) = D_80191B58[idx]; -} - - - -/* func_80181A68 — guarded dispatch: ask func_80184BAC(9, 0x12); if it answers - * NON-zero, run func_801815DC on the incoming entity. The entity pointer is - * live across the jal, so it lands in $s0 and comes back out as $a0. - * §71 sibling: func_80181B34 in this same TU is the identical shape. - * §3-T4: target branch is `beqz $v0, ret` => the C condition is `!= 0` - * (the sibling's is `bnez` => `== 0`; polarity is read off the opcode). */ - -extern s32 func_80184BAC(s32 arg0, s32 arg1); -extern void func_801815DC(void *arg0); - -void func_80181A68(void *arg0) { - if (func_80184BAC(9, 0x12) != 0) { - func_801815DC(arg0); - } -} - - -extern s32 func_80184FA4(void); -extern s32 func_80185BE0(s32 arg0); -extern u8 D_801B6638[]; -extern void func_80181648(void *a0); -extern void func_80184ED4(s32, s32, s32, s32); - -void func_80181AA8(void *a0) { - s32 v0; - - if (*(u16 *)((u8 *)a0 + 0x34) == 0) { - if ((v0 = func_80185BE0(3)) != 0 && (v0 = ((s32 (*)(void *))func_80184FA4)(a0)) != 0) { - ((void (*)(void *, void *, s32, s32))func_80184ED4)(a0, D_801B6638, 0, 0x80); - *(u16 *)((u8 *)a0 + 0x34) = 1; - } - } else { - if ((v0 = ((s32 (*)(void *))func_80184FA4)(a0)) != 0) { - func_80181648(a0); - } - } -} - - - -/* func_80181B34 — guarded dispatch: ask func_80184BAC(9, 0xF); if it answers - * zero, run func_801816A8 on the incoming entity. The entity pointer is live - * across the jal, so it lands in $s0 and comes back out as $a0. - * §3-T4: target branch is `bnez $v0, ret` => the C condition is `== 0`. */ - -extern s32 func_80184BAC(s32 arg0, s32 arg1); -extern void func_801816A8(void *arg0); - -void func_80181B34(void *arg0) { - if (func_80184BAC(9, 0xF) == 0) { - func_801816A8(arg0); - } -} - - -extern int func_80178970(void); -extern void func_80178D18(void); - -void func_80181B74(void *a0) { - 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_80181998(void); - extern s32 D_80191B3C; - extern short D_801C0D40; - - if (func_80178970() != 0) { - ((void (*)(s32))func_80178D18)((s32)a0); - *(short *)((char *)a0 + 0x2) = 3; - func_8012E8E0((s32)a0, (s32)&D_80191B3C); - func_8012E88C((s32)a0); - func_8012A828((s32 *)a0, (s32)&D_801C0D40); - func_80184C90((s32)a0); - ((void (*)(void))func_80181998)(); - } -} - - - -extern s32 func_80184FA4(void); -extern void func_80184ED4(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80185BE0(s32 a0); -extern void func_8018170C(void *a0); - -void func_80181BEC(void *arg0) { - - extern u8 D_801B662C[]; - if (*(u16 *)((char *)arg0 + 0x34) == 0) { - if (((s32 (*)(void))func_80184FA4)() != 0) { - func_80184ED4((s32)arg0, (s32)&D_801B662C[0], 1, 0x80); - *(s16 *)((char *)arg0 + 0x34) = 1; - } - } else if (func_80185BE0(3) != 0) { - if (((s32 (*)(s32))func_80184FA4)((s32)arg0) != 0) { - func_8018170C(arg0); - } - } -} - - - -/* func_80181C78 — guarded dispatch: ask func_80184BAC(15, 0x11); if it answers - * zero, run func_80181738 on the incoming entity. The entity pointer is live - * across the jal, so it lands in $s0 and comes back out as $a0. - * §3-T4: target branch is `bnez $v0, ret` => the C condition is `== 0`. */ - -extern s32 func_80184BAC(s32 arg0, s32 arg1); -extern void func_80181738(void *arg0); - -void func_80181C78(void *arg0) { - if (func_80184BAC(15, 0x11) == 0) { - func_80181738(arg0); - } -} - - -extern s32 func_80184FA4(void); -extern s32 func_80185BE0(s32 arg0); -extern u8 D_801B662C[]; -extern u8 D_801B6670[]; -extern u8 D_801B66C0[]; -extern void func_8018178C(void * arg0); -extern void func_80184ED4(s32, s32, s32, s32); - -void func_80181CB8(arg0) -void *arg0; -{ - extern u8 D_801B662C[]; - extern u8 D_801B6670[]; - extern u8 D_801B66C0[]; - - switch (*(u16 *)((s32)arg0 + 0x34)) { - case 0: - if (func_80185BE0(3) == 0) { - return; - } - *(u16 *)((s32)arg0 + 0x34) = 1; - func_80184ED4((s32)arg0, (s32)&D_801B662C, 0, 0x80); - return; - case 1: - func_80185BE0(3); - if (((s32 (*)(s32))func_80184FA4)((s32)arg0) == 0) { - return; - } - *(u16 *)((s32)arg0 + 0x34) = 2; - func_80184ED4((s32)arg0, (s32)&D_801B6670, 0, 0x80); - return; - case 2: - if (((s32 (*)(s32))func_80184FA4)((s32)arg0) != 0) { - *(u16 *)((s32)arg0 + 0x34) = 3; - } - return; - case 3: - if (func_80185BE0(13) == 0) { - return; - } - *(u16 *)((s32)arg0 + 0x34) = 4; - func_80184ED4((s32)arg0, (s32)&D_801B66C0, 0, 0x80); - return; - case 4: - func_80185BE0(13); - if (((s32 (*)(s32))func_80184FA4)((s32)arg0) != 0) { - func_8018178C(arg0); - } - return; - } -} - - - -/* func_80181DC4 — guarded dispatch: ask func_80184BAC(17, 0x12); if it answers - * zero, run func_801817B8 on the incoming entity. The entity pointer is live - * across the jal, so it lands in $s0 and comes back out as $a0. - * §3-T4: target branch is `bnez $v0, ret` => the C condition is `== 0`. */ - -extern s32 func_80184BAC(s32 arg0, s32 arg1); -extern void func_801817B8(void *arg0); - -void func_80181DC4(void *arg0) { - if (func_80184BAC(17, 0x12) == 0) { - func_801817B8(arg0); - } -} - - -void func_80181E04(void *a0) { - extern s32 func_801847BC(void *a0, void *a1); - extern void func_80181960(void); - extern s32 func_80184BAC(s32 arg0, s32 arg1); - 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_80181998(void); - extern void func_80184CB8(s32 *a0, s32 a1); - extern s32 func_801788B8(s32 arg0, s32 arg1); - extern s32 func_80181EFC(void *a0); - - extern s32 D_80191B44; - extern s32 D_80191B3C; - extern short D_801C0D40; - extern short D_80191B34; - - s32 v0; - void *v1; - - if (func_801847BC(a0, (void *)&D_80191B44) != 0) { - func_80181960(); - v0 = func_80184BAC(9, 0xF); - if (v0 != 0) { - *(s16 *)((char *)a0 + 2) = 3; - func_8012E8E0((s32)a0, (s32)&D_80191B3C); - func_8012E88C((s32)a0); - func_8012A828((s32 *)a0, (s32)&D_801C0D40); - func_80184C90((s32)a0); - ((void (*)(void))func_80181998)(); - } else { - if (func_80184BAC(0xF, 0x11) != 0) { - *(s16 *)((char *)a0 + 2) = 7; - } else if (func_80184BAC(0x11, 0x12) != 0) { - *(s16 *)((char *)a0 + 2) = 9; - } else { - *(s16 *)((char *)a0 + 2) = 1; - } - ((void (*)(s32 *, s32))func_80184CB8)((s32 *)a0, (s32)&D_80191B34); - } - v1 = *(void **)((char *)a0 + 0x68); - *(s16 *)((char *)v1 + 0xC) = 0x7FFF; - *(s32 *)((char *)a0 + 0xD4) = func_801788B8((s32)a0, (s32)&func_80181EFC); - } -} - - - -extern s32 func_8012BD14(s32 a0); -extern s32 func_80178BF8(); -extern void func_80172710(void); - -s32 func_80181EFC(void *a0) -{ - s32 ptr; - u16 st; - - ptr = *(s32 *)((s32)a0 + 0x64); - st = *(u16 *)((s32)ptr + 0x2); - if (st != 3) { - return 0; - } - - if (func_8012BD14(ptr) >= 0x4001) { - return 0; - } - - { - s32 p; - u16 st2; - p = *(s32 *)((s32)a0 + 0x64); - st2 = *(u16 *)((s32)p + 0x2); - st2++; - *(u16 *)((s32)p + 0x2) = st2; - } - func_80178BF8(); - return (s32)func_80172710; -} - - - - -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_80184ED4(s32, s32, s32, s32); - - -void func_80181F70(void *arg0) { - - extern short D_80191C08; - extern short D_801B66CC; - /* [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 short D_801B9AA8; - *(short *)((char *)arg0 + 0x2) = 2; - func_8012E8E0((s32)arg0, (s32)&D_80191C08); - 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_801B66CC, 0, 0x40); -} - - - - -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); - - -void func_80181FE4(void *a0) { - - extern short D_80191C10; - extern short D_801B9B50; - *(short *)((char *)a0 + 0x2) = 3; - func_8012E8E0((s32)a0, (s32)&D_80191C10); - func_8012E88C((s32)a0); - func_8012A828((s32 *)a0, (s32)&D_801B9B50); - func_80184C90((s32)a0); -} - - -extern s32 func_8012E544(s32 a0); -extern s32 func_80029504(void); - -s32 func_8018203C(s32 a0) { - - extern short D_80191E60; - extern short D_80191E88; - extern short D_80191CD8; - extern short D_80191D30; - extern short D_80191D88; - - s32 v; - s32 r; - - /* The two arms end in DIFFERENT branch senses/targets, so cross_jump finds - no common scheduled suffix and the two jal sites stay distinct (§193-C). */ - if (*(u16 *)a0 == 0x2A0) { - v = func_8012E544(0x2A3); - if (v == 0) { - goto zero; - } - goto chk; - } else { - v = func_8012E544(0x2A0); - if (v != 0) { - goto chk; - } - } -zero: - v = 0; - goto join; -chk: - v = (*(u16 *)(v + 2) == 3); -join: - if (v == 0) { - if (*(u16 *)a0 == 0x2A0) { - return (s32)&D_80191E60; - } - return (s32)&D_80191E88; - } - r = func_80029504(); - if (r < 0x2A8) { - return (s32)&D_80191CD8; - } - if (r < 0x2DA) { - return (s32)&D_80191D30; - } - return (s32)&D_80191D88; -} - - -DEFINE_func_80182120() /* dedup: shared engine-core @0x80182120 (src/shared) */ - - - -extern void func_80184CB8(s32*, s32); - extern short D_80191C08; - void func_801821A8(void * arg0) { - *(short *)((char *)arg0 + 0x2) = 5; - ((void (*)(s32, s32))func_80184CB8)((int)arg0, (int)&D_80191C08); - } - - -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) */ - -extern s32 func_80029504(void); -extern s32 func_8012E544(s32 a0); -extern short D_80191C10; -extern short D_80191CD8; -extern short D_80191D30; -extern short D_80191D88; -extern short D_80191E60; -extern short D_80191E88; -extern short D_801B9B50; -extern void func_8012A828(s32*, s32); -extern void func_8012E88C(s32); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_80178CBC(s32 arg0, s32 arg1); - -void func_80182378(a0) -void *a0; -{ - - extern short D_80191C10; - extern short D_801B9B50; - extern short D_80191E88; - extern short D_80191E60; - extern short D_80191CD8; - extern short D_80191D88; - extern short D_80191D30; - - s32 v; - s32 arg; - - *(short *)((char *)a0 + 0x2) = 9; - func_8012E8E0((s32)a0, (s32)&D_80191C10); - func_8012E88C((s32)a0); - func_8012A828((s32 *)a0, (s32)&D_801B9B50); - - - if (*(u16 *)a0 == 0x2A0) { - v = func_8012E544(0x2A3); - if (v == 0) { - goto zero; - } - goto chk; - } else { - v = func_8012E544(0x2A0); - if (v != 0) { - goto chk; - } - } -zero: - v = 0; - goto join; -chk: - v = (*(u16 *)(v + 2) == 3); -join: - if (v == 0) { - arg = (s32)&D_80191E88; - if (*(u16 *)a0 == 0x2A0) { - arg = (s32)&D_80191E60; - } - } else { - s32 t = func_80029504(); - if (t < 0x2A8) { - arg = (s32)&D_80191CD8; - } else if (t < 0x2DA) { - arg = (s32)&D_80191D30; - } else { - arg = (s32)&D_80191D88; - } - } - - func_80178CBC((s32 *)a0, arg); -} - - - -extern void func_80178CBC(s32 a0, s32 a1); - extern short D_80191C48; - void func_80182490(void * arg0) { - *(short *)((char *)arg0 + 0x2) = 7; - func_80178CBC((int)arg0, (int)&D_80191C48); - } - - -extern s32 func_80184DD0(s32 a0); -extern s32 func_80029504(void); -extern s32 D_80191C2C[]; -extern s32 D_801E24BC[]; -extern s32 D_801E2428[]; - -void func_801824BC(s32 a0) { - s32 s1; - s32 v1; - - s1 = func_80184DD0(a0); - v1 = func_80029504(); - if (s1 == 2) { - if (v1 < 0x276) { - *(s32 *)(a0 + 0xE4) = (s32)D_801E24BC; - } else { - *(s32 *)(a0 + 0xE4) = (s32)D_801E2428; - } - } else { - *(s32 *)(a0 + 0xE4) = D_80191C2C[s1]; - } -} - - - -extern void func_80172710(void); -extern s32 func_801848DC(void); -extern s32 func_8018625C(void *); -extern s32 func_80178BF8(void); - -s32 func_80182544(void *a0) -{ - void *s0 = a0; - void **v0p; - u16 v1; - - v0p = (void **)(s0 + 0x64); - v1 = *(u16 *)(*v0p + 0x2); - if (v1 != 0x5) { - return 0; - } - - if (func_801848DC() == 0) { - return 0; - } - - if (func_8018625C(*v0p) != 0) { - return 0; - } - - *(u16 *)(*v0p + 0x2) = 0x6; - func_80178BF8(); - - return (s32)func_80172710; -} - - - -/* func_801825BC — state-machine callback registered by func_80180A08. - * - * Shape (read off the target, not off Ghidra — the Ghidra seed is for a - * different address entirely): - * - guard call func_8012BD14(a0->0x64), bail if result > 0x4000 - * - switch on the u16 at +2 of a0->0x64, cases 3 / 2 / 4 (gcc balances the - * tree on the middle case 3, hence `slti $v0,$v1,4` for "index > node->high") - * - the comparison constants for the case-2/case-4 sub-tests ride in the - * dispatch branch delay slots (§3-T4: read the constant off the delay slot, - * not off the branch line) — case 2 tests +0x34 == 1, case 4 tests +0x34 == 0 - * - the two adjacent globals get their own `lui $at` each => two separate - * symbols, NOT one array (§20 pointer-var rule does not apply here) - * - +0x34 is reloaded after the D_801E7020 store, and 0x64 is reloaded too: - * gcc-2.7.2 CSE invalidates memory on the global store, so re-express both - */ - -extern s32 func_8012BD14(s32 a0); -extern s32 func_80178BF8(); /* TU-canonical (ov_SC04_018_jr_8017AE2C.c L2541) */ -extern void func_80172710(void); - -s32 func_801825BC(void *a0) -{ - - extern s16 D_801E7020; - extern s16 D_801E7022; - void *p; - u16 st; - - if (func_8012BD14(*(s32 *)((s32)a0 + 0x64)) > 0x4000) { - /* LOAD-BEARING zero-byte cross-jump barrier (cookbook §5a). - * Without it gcc's find_cross_jump merges this `move v0,0; j epi` - * tail with the identical case-2 failure tail -> 58 ins instead of - * 60, and the case-2 `beq` then loses its delay-slot fill. */ - __asm__ __volatile__(""); - return 0; - } - - p = *(void **)((s32)a0 + 0x64); - st = *(u16 *)((s32)p + 0x2); - switch (st) { - case 3: - *(s16 *)((s32)p + 0x2) = 8; - break; - case 2: - if (*(u16 *)((s32)p + 0x34) != 1) { - return 0; - } - goto hit; - case 4: - if (*(u16 *)((s32)p + 0x34) != 0) { - return 0; - } - hit: - D_801E7020 = st; - D_801E7022 = *(u16 *)((s32)p + 0x34); - *(s16 *)(*(s32 *)((s32)a0 + 0x64) + 0x2) = 10; - break; - default: - return 0; - } - - func_80178BF8(); - return (s32)func_80172710; -} - - -extern s32 func_80029504(void); -extern s32 func_80184BAC(s32 arg0, s32 arg1); -extern s32 func_80184DD0(s32 a0); - -void func_801826AC(arg0) -void *arg0; -{ - extern s32 func_80029504(void); - extern s32 func_80184BAC(s32 arg0, s32 arg1); - extern s32 func_80184DD0(s32 a0); - extern void func_80181F70(void *); - extern void func_801821A8(void *); - - void *s2 = arg0; - s32 state; - s32 dd; - s32 sel; - s32 code; - s32 a0val; - - state = 2; - *(s32 *)(*(s32 *)((char *)s2 + 0xCC) + 0xB0) = state; - dd = func_80184DD0((s32)arg0); - sel = func_80029504(); - - if (dd == state && sel < 0x276) { - a0val = 0xA; - } else { - if (func_80184BAC(0xA, 0x10) != 0) { - code = 0; - goto ladder_done; - } - a0val = 0x10; - } - if (func_80184BAC(a0val, 0x15) != 0) { - code = 1; - } else { - code = 2; - } -ladder_done: - - switch (code) { - case 0: - func_80181F70(s2); - break; - case 1: - func_801821A8(s2); - break; - case 2: - break; - } -} - - - -extern s32 func_80185BE0(s32 a0); -extern s32 func_80184FA4(void); -extern void func_80184ED4(s32, s32, s32, s32); -extern void func_80181FE4(void *a0); - -void func_8018276C(void *a0) -{ - - extern u8 D_801B66D8[]; - if (*(u16 *)((s32)a0 + 0x34) == 0) { - if (func_80185BE0(3) == 0) { - return; - } - if (((s32 (*)(s32))func_80184FA4)((s32)a0) == 0) { - return; - } - ((void (*)(void *, void *, s32, s32))func_80184ED4)(a0, D_801B66D8, 0, 0x40); - *(s16 *)((s32)a0 + 0x34) = 1; - return; - } - - *(s32 *)(*(s32 *)((s32)a0 + 0xCC) + 0xB0) = 2; - if (((s32 (*)(s32))func_80184FA4)((s32)a0) != 0) { - func_80181FE4(a0); - } -} - - - - -extern s32 func_80029504(void); -extern s32 func_80184BAC(s32 arg0, s32 arg1); -extern s32 func_80184DD0(s32 a0); -extern void func_80182120(void *arg0); - -void func_80182800(void *arg0) -{ - s32 s2; - s32 dd; - s32 sel; - s32 a0val; - s32 code; - - s2 = (s32)arg0; - *(s32 *)(*(s32 *)(s2 + 0xCC) + 0xB0) = 2; - dd = func_80184DD0(s2); - 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, 0x15) != 0) { - code = 1; - } else { - code = 2; - } -ladder_done: - - if (code == 1) { - goto call_engine; - } - if (code < 2) { - goto skip_engine; - } - if (code != 2) { - goto skip_engine; - } -call_engine: - func_80182120(arg0); -skip_engine: - return; -} - - - -extern int func_80178970(void); -extern void func_80178D18(void); -extern void func_8012E8E0(s32, s32); -extern void func_8012E88C(s32); -extern void func_8012A828(s32 *a0, s32 a1); -extern void func_80184C90(s32); - - -void func_801828B0(void *a0) { - - extern short D_80191C10; - extern short D_801B9B50; - if (func_80178970() != 0) { - ((void (*)(s32))func_80178D18)((s32)a0); - *(short *)((char *)a0 + 0x2) = 3; - func_8012E8E0((s32)a0, (s32)&D_80191C10); - func_8012E88C((s32)a0); - func_8012A828((s32 *)a0, (s32)&D_801B9B50); - func_80184C90((s32)a0); - } -} - - - -extern s32 func_80184FA4(void); -extern void func_80184ED4(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80185BE0(s32 a0); -extern void func_801821A8(void *a0); - -void func_80182920(void *arg0) { - - extern u8 D_801B66CC[]; - if (*(u16 *)((char *)arg0 + 0x34) == 0) { - if (((s32 (*)(void))func_80184FA4)() != 0) { - func_80184ED4((s32)arg0, (s32)&D_801B66CC[0], 1, 0x40); - *(s16 *)((char *)arg0 + 0x34) = 1; - } - } else if (func_80185BE0(3) != 0) { - if (((s32 (*)(s32))func_80184FA4)((s32)arg0) != 0) { - func_801821A8(arg0); - } - } -} - - -void func_801829AC(void *arg0) { - extern s32 func_80029504(void); - extern s32 func_80184BAC(s32 arg0, s32 arg1); - extern void func_80184CB8(s32*, s32); - extern s32 func_80184DD0(s32 a0); - extern short D_80191C08; - - void *s2 = arg0; - s32 state; - s32 dd; - s32 sel; - s32 code; - s32 a0val; - - state = 2; - *(s32 *)(*(s32 *)((char *)s2 + 0xCC) + 0xB0) = state; - dd = func_80184DD0((s32)arg0); - sel = func_80029504(); - - if (dd == state && sel < 0x276) { - a0val = 0xA; - } else { - if (func_80184BAC(0xA, 0x10) != 0) { - code = 0; - goto ladder_done; - } - a0val = 0x10; - } - if (func_80184BAC(a0val, 0x15) != 0) { - code = 1; - } else { - code = 2; - } -ladder_done: - - switch (code) { - case 0: - *(s16 *)((char *)s2 + 0x2) = 1; - func_80184CB8((s32 *)s2, (s32)&D_80191C08); - break; - case 1: - break; - case 2: - *(s16 *)((char *)s2 + 0x2) = 1; - func_80184CB8((s32 *)s2, (s32)&D_80191C08); - break; - } -} - - -#include "common.h" - -DEFINE_func_80182A7C() /* dedup: shared engine-core @0x80182A7C (src/shared) */ - - - -extern void func_80178CBC(s32 a0, s32 a1); - extern short D_80191EB0; - void func_80182ACC(void * arg0) { - *(short *)((char *)arg0 + 0x2) = 11; - func_80178CBC((int)arg0, (int)&D_80191EB0); - } - - -DEFINE_func_80182AF8() /* dedup: shared engine-core @0x80182AF8 (src/shared) */ - - - - -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_80184ED4(s32, s32, s32, s32); - - -void func_80182B58(void *arg0) { - - extern short D_80191F14; - extern short D_801B6700; - /* [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 short D_801B99A8; - *(short *)((char *)arg0 + 0x2) = 2; - func_8012E8E0((s32)arg0, (s32)&D_80191F14); - func_8012E88C((s32)arg0); - func_8012A828((s32 *)arg0, (s32)&D_801B99A8); - func_80184C90((s32)arg0); - *(short *)((char *)arg0 + 0x34) = 0; - func_80184ED4((s32)arg0, (s32)&D_801B6700, 0, 0x60); -} - - - - -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); - - -void func_80182BCC(void *a0) { - - extern short D_80191F1C; - extern short D_801C0D40; - *(short *)((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); -} - - -DEFINE_func_80182C24() /* dedup: shared engine-core @0x80182C24 (src/shared) */ - - -extern void (*D_80192014[])(void); - -void func_80182C98(void *a0) { - D_80192014[*(u16 *)((s32)a0 + 0x2)](); -} - - -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) */ - - - - -extern void func_8012E8E0(s32, s32); -extern void func_8012E88C(s32); -extern void func_8012A828(s32 *, s32); -extern void func_80178CBC(s32, s32); - -void func_80182D24(void *arg0) { - - extern s32 D_80191F1C; - extern s32 D_80191F94; - /* [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_801B9A50; - *(short *)((char *)arg0 + 0x2) = 5; - func_8012E8E0((s32)arg0, (s32)&D_80191F1C); - func_8012E88C((s32)arg0); - func_8012A828((s32 *)arg0, (s32)&D_801B9A50); - ((void (*)(s32 *, s32))func_80178CBC)((s32 *)arg0, (s32)&D_80191F94); -} - - - -extern s32 func_80184DD0(s32 a0); - -void func_80182D84(s32 a0) { - - extern s32 D_80191F38[]; - s32 idx = func_80184DD0(a0); - *(s32 *)(a0 + 0xE4) = D_80191F38[idx]; -} - - - -extern s32 func_80029178(s32 arg); - extern void func_80029124(s32, s32); - s32 func_80182DC4(void) { - if ((func_80029178(0x113) & 0xFF) == 0) { - ((void (*)(void *, s32))func_80029124)((void *)0x113, 1); - return 1; - } - return 0; - } - - - -/* func_80182E00 — guarded dispatch: ask func_80184BAC(7, 0xe); if it answers - * NON-zero, run func_80182B58 on the incoming entity. The entity pointer is - * live across the jal, so it lands in $s0 and comes back out as $a0. - * §71 sibling: func_80181B34 in this same TU is the identical shape. - * §3-T4: target branch is `beqz $v0, ret` => the C condition is `!= 0` - * (the sibling's is `bnez` => `== 0`; polarity is read off the opcode). */ - -extern s32 func_80184BAC(s32 arg0, s32 arg1); -extern void func_80182B58(void *arg0); - -void func_80182E00(void *arg0) { - if (func_80184BAC(7, 0xe) != 0) { - func_80182B58(arg0); - } -} - - -extern s32 func_80184FA4(void); -extern s32 func_80185BE0(s32 arg0); -extern void *D_801B670C; -extern void func_80182BCC(void *a0); -extern void func_80184ED4(s32, s32, s32, s32); - -void func_80182E40(s32 a0) { - s32 v0, v1; - - if (*(u16 *)(a0 + 0x34) == 0) { - if ((v0 = func_80185BE0(2)) != 0 && (v0 = ((s32 (*)(s32))func_80184FA4)(a0)) != 0) { - *(u16 *)(a0 + 0x34) = 1; - func_80184ED4(a0, (s32)&D_801B670C, 0, 0x60); - v1 = *(s32 *)(a0 + 0xCC); - *(s32 *)(v1 + 0xB0) = 2; - } - } else { - if ((v0 = ((s32 (*)(s32))func_80184FA4)(a0)) != 0) { - func_80182BCC(a0); - } - } -} - - - -/* func_80182ED8 — guarded dispatch: ask func_80184BAC(7, 0xE); if it answers - * zero, run func_80182C24 on the incoming entity. The entity pointer is live - * across the jal, so it lands in $s0 and comes back out as $a0. - * §3-T4: target branch is `bnez $v0, ret` => the C condition is `== 0`. */ - -extern s32 func_80184BAC(s32 arg0, s32 arg1); -extern void func_80182C24(void *arg0); - -void func_80182ED8(void *arg0) { - if (func_80184BAC(7, 0xE) == 0) { - func_80182C24(arg0); - } -} - - - -extern int func_80178970(void); -extern void func_80178D18(void); -extern void func_8012E8E0(s32, s32); -extern void func_8012E88C(s32); -extern void func_8012A828(s32 *a0, s32 a1); -extern void func_80184C90(s32); - - -void func_80182F18(void *a0) { - - extern short D_80191F1C; - extern short D_801C0D40; - if (func_80178970() != 0) { - ((void (*)(s32))func_80178D18)((s32)a0); - *(short *)((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); - } -} - - -extern s32 func_80184FA4(void); -extern s32 func_80185BE0(s32 arg0); -extern short D_80191F14; -extern short D_801B6700; -extern void func_80184CB8(s32*, s32); -extern void func_80184ED4(s32, s32, s32, s32); - -void func_80182F88(s32 a0) { - if (*(u16*)(a0 + 0x34) == 0) { - if (((s32 (*)(s32))func_80184FA4)(a0) != 0) { - *(s16*)(a0 + 0x34) = 1; - func_80184ED4(a0, (s32)&D_801B6700, 1, 0x60); - } - } else { - if (func_80185BE0(0x2) != 0) { - if (((s32 (*)(s32))func_80184FA4)(a0) != 0) { - *(s16*)(a0 + 0x2) = 1; - func_80184CB8((s32*)a0, (s32)&D_80191F14); - } - } - } -} - - -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); -extern s32 func_80178BF8(); -extern void func_80172710(void); - -s32 func_801830F4(void *a0) -{ - s32 ptr; - u16 st; - s32 cur; - s32 other; - - ptr = *(s32 *)((s32)a0 + 0x64); - st = *(u16 *)((s32)ptr + 0x2); - if (st != 3) { - return 0; - } - - cur = func_8012BD14(ptr); - if (cur >= 0x4001) { - return 0; - } - - other = func_8012E544(0x227); - if (other != 0) { - if (*(u16 *)((s32)other + 0x2) == 8) { - if (func_8012BD14(other) < cur) { - return 0; - } - } - } - - { - s32 p; - u16 st2; - p = *(s32 *)((s32)a0 + 0x64); - st2 = *(u16 *)((s32)p + 0x2); - st2++; - *(u16 *)((s32)p + 0x2) = st2; - } - func_80178BF8(); - return (s32)func_80172710; -} - - -extern void func_80184CB8(s32 *a0, s32 a1); - extern short D_80192030; - void func_801831AC(short *a0) { - *(short *)((char *)a0 + 0x2) = 0x2; - func_80184CB8((s32 *)a0, (s32)&D_80192030); - } - - -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_80184ED4(s32, s32, s32, s32); - -void func_801831D8(s32 *a0) { - extern short D_80192030; - extern short D_801B9AA8; - extern short D_801B6730; - *(u16 *)((s32)a0 + 2) = 5; - func_8012E8E0((s32)a0, (s32)&D_80192030); - func_8012E88C((s32)a0); - func_8012A828(a0, (s32)&D_801B9AA8); - func_80184C90((s32)a0); - func_80184ED4((s32)a0, (s32)&D_801B6730, 0, 0x40); -} - - -extern s32 D_801B673C; -extern short D_801B9AA8; -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_80183248(s32 a0) { - *(u16 *)(a0 + 2) = 6; - func_8012E88C(a0); - ((void (*)(s32, s32))func_8012A828)(a0, (s32)&D_801B9AA8); - func_80184C90(a0); - func_80184ED4(a0, (s32)&D_801B673C, 0, 0x40); -} - - -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*, s32); - extern short D_80192030; - void func_8018330C(void * arg0) { - *(short *)((char *)arg0 + 0x2) = 8; - ((void (*)(s32, s32))func_80184CB8)((int)arg0, (int)&D_80192030); - } - - - - -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_801788B8(s32 arg0, s32 arg1); -extern void func_80183578(void *a0); -extern s32 func_80183604(s32 param_1); - -void func_80183338(void *param_1) -{ - extern u8 D_80192040; - extern short D_80192030; - extern short D_801B9AA8; - extern s32 D_801B673C; - void *s0 = param_1; - void *v1; - s32 v0; - - if (func_801847BC(param_1, &D_80192040) != 0) { - v0 = func_80184BAC(7, 0xA); - if (v0 != 0) { - v0 = 2; - goto set_and_cb; - } - - v0 = func_80184BAC(0xA, 0xC); - if (v0 != 0) { - v0 = 6; - *(short *)((char *)s0 + 2) = v0; - func_8012E88C((s32)s0); - func_8012A828((s32 *)s0, (s32)&D_801B9AA8); - func_80184C90((s32)s0); - func_80184ED4((s32)s0, (s32)&D_801B673C, 0, 0x40); - goto tail; - } - - v0 = func_80184BAC(0xC, 0x14); - if (v0 != 0) { - v0 = 8; - } else { - v0 = 1; - } - - set_and_cb: - *(short *)((char *)s0 + 2) = v0; - func_80184CB8((s32 *)s0, (s32)&D_80192030); - - tail: - v1 = *(void **)((char *)s0 + 0x68); - *(short *)((char *)v1 + 0xC) = 0x7FFF; - *(s32 *)((char *)s0 + 0xD4) = func_801788B8((s32)s0, (s32)&func_80183578); - *(s32 *)((char *)s0 + 0xD8) = func_801788B8((s32)s0, (s32)&func_80183604); - } -} - - - -extern void (*D_8019211C[])(void); - -void func_80183438(void *a0) { - D_8019211C[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern void func_80178CBC(s32 a0, s32 a1); - extern short D_80192070; - void func_80183474(short *a0) { - *(short *)((char *)a0 + 0x2) = 0x4; - func_80178CBC((int)a0, (int)&D_80192070); - } - - - -extern void func_80178CBC(s32 a0, s32 a1); - extern short D_80192070; - void func_801834A0(void * arg0) { - *(short *)((char *)arg0 + 0x2) = 10; - func_80178CBC((int)arg0, (int)&D_80192070); - } - - -extern void func_80178CBC(s32 arg0, s32 arg1); - extern short D_801920C4; - void func_801834CC(short *a0) { - *(short *)((char *)a0 + 0x2) = 0xc; - func_80178CBC((s32 *)a0, (s32)&D_801920C4); - } - - - -extern s32 func_80184DD0(s32 a0); - -void func_801834F8(s32 a0) { - - extern s32 D_80192054[]; - s32 idx = func_80184DD0(a0); - *(s32 *)(a0 + 0xE4) = D_80192054[idx]; -} - - - -extern s32 func_80184DD0(s32 a0); - -void func_80183538(s32 a0) { - - extern s32 D_801920A8[]; - s32 idx = func_80184DD0(a0); - *(s32 *)(a0 + 0xE4) = D_801920A8[idx]; -} - - - - -extern void func_80172710(void); -extern s32 func_801848DC(void); -extern s32 func_8018625C(void *); -extern s32 func_80178BF8(void); - -/* §124 asm-label alias: TU decl layer carries `extern void func_80183578(void*)` - * (L9106, used address-only by banked func_801840E4), so a plain-name s32 - * definition is "conflicting types". Alias per ov_SC03_001_jr_801870B0.c L3309. */ -s32 aF80184350(void *arg0) __asm__("func_80183578"); - -s32 aF80184350(void *arg0) -{ - void *s0 = arg0; - - if ((*(u16 *)(*(s32 *)((char *)s0 + 0x64) + 2) != 2) && - (*(u16 *)(*(s32 *)((char *)s0 + 0x64) + 2) != 8)) { - return 0; - } - - if (((s32 (*)(void *))func_801848DC)(s0) == 0) { - return 0; - } - - if (func_8018625C(*(void **)((char *)s0 + 0x64)) != 0) { - return 0; - } - - *(u16 *)(*(s32 *)((char *)s0 + 0x64) + 2) += 1; - func_80178BF8(); - - return (s32)func_80172710; -} - - -DEFINE_func_80183604() /* dedup: shared engine-core @0x80183604 (src/shared) */ - - - -extern s32 func_80184BAC(s32 arg0, s32 arg1); -extern void func_801831AC(short*); - -void func_80183674(void *arg0) { - s32 v1; - - v1 = *(s32 *)((char *)arg0 + 0xCC); - *(s32 *)((char *)v1 + 0xB0) = 2; - if (func_80184BAC(7, 0x14) != 0) { - ((void (*)(void *))func_801831AC)(arg0); - } -} - - - -extern s32 func_80184BAC(s32 arg0, s32 arg1); -extern void func_801831D8(s32 *a0); - -void func_801836C0(s32 *a0) { - *(s32 *)((s32)a0[0x33] + 0xB0) = 2; - if (func_80184BAC(7, 10) != 0) { - return; - } - func_801831D8(a0); -} - - - -extern int func_80178970(void); -extern void func_80178D18(void); -extern void func_80184CB8(s32*, s32); - -void func_8018370C(void * arg0) { - - extern short D_80192030; - if (func_80178970() != 0) { - ((void (*)(s32))func_80178D18)((s32)arg0); - *(short *)((char *)arg0 + 0x2) = 2; - ((void (*)(s32, s32))func_80184CB8)((int)arg0, (int)&D_80192030); - } -} - - -extern s32 func_80184FA4(void); -extern s32 func_80185BE0(s32 a0); -extern void func_80183248(s32 a0); - -void func_8018375C(void *a0) { - if (func_80185BE0(2)) { - if (((s32 (*)(s32))func_80184FA4)((s32)a0)) { - func_80183248((s32)a0); - } - } -} - - -extern s32 func_80184FA4(); -extern void func_801832A8(); - -void func_801837A8(void *a0) { - *(s32 *)(*(s32 *)((char *)a0 + 0xCC) + 0xB0) = 2; - if (((s32 (*)(s32))func_80184FA4)((s32)a0)) { - func_801832A8(a0); - } -} - - -extern s32 func_80184FA4(void); -extern s32 func_80185BE0(s32 arg0); -extern void func_8018330C(void*); - -void func_801837EC(void *a0) { - if (func_80185BE0(2)) { - if (((s32 (*)(s32))func_80184FA4)((s32)a0)) { - ((void (*)(s32))func_8018330C)((s32)a0); - } - } -} - - -DEFINE_func_80183838() /* dedup: shared engine-core @0x80183838 (src/shared) */ - -#include "common.h" - -DEFINE_func_80183890() /* dedup: shared engine-core @0x80183890 (src/shared) */ - - -extern int func_80178970(void); -extern void func_8012A828(s32 *a0, s32 a1); -extern void func_8012E88C(s32); -extern void func_80178D18(void); - -void func_801838E0(arg0) -void *arg0; -{ - extern int func_80178970(void); - extern void func_80178D18(void); - extern void func_8012E88C(s32); - extern void func_8012A828(s32 *a0, s32 a1); - extern short D_801B9AA8; - - if (func_80178970() != 0) { - ((void (*)(s32))func_80178D18)((s32)arg0); - *(s16 *)((s32)arg0 + 2) = 6; - func_8012E88C((s32)arg0); - func_8012A828((s32 *)arg0, (s32)&D_801B9AA8); - } -} - - - -/* func_80183938 — state-entry init (family exemplar, reach x11). - * Sets the actor's state id (halfword @ +0x2) then runs the fixed - * five-call entry chain. Sibling style copied from func_80180164 - * in the same TU (cookbook §71). */ - -extern void func_8012E8E0(s32, s32); -extern void func_8012E88C(s32); -extern void func_8012A828(s32 *a0, s32 a1); /* fleet-canonical sig (TU L3775) */ -extern void func_80184C90(s32); -extern void func_80184ED4(s32, s32, s32, s32); - - -void func_80183938(void *arg0) { - - extern short D_80192150; - extern short D_801B9C50; - extern short D_801B67C8; - *(short *)((char *)arg0 + 0x2) = 2; - func_8012E8E0((s32)arg0, (s32)&D_80192150); - func_8012E88C((s32)arg0); - func_8012A828((s32 *)arg0, (s32)&D_801B9C50); - func_80184C90((s32)arg0); - func_80184ED4((s32)arg0, (s32)&D_801B67C8, 0, 0x60); -} - - -extern s32 D_801B67DC; -extern s32 D_801B9C50; -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_801839A8(s32 a0) { - *(u16 *)(a0 + 2) = 3; - func_8012E88C(a0); - ((void (*)(s32, s32))func_8012A828)(a0, (s32)&(*(short *)&D_801B9C50)); - func_80184C90(a0); - func_80184ED4(a0, (s32)&D_801B67DC, 0, 0x40); -} - - -DEFINE_func_80183A08() /* dedup: shared engine-core @0x80183A08 (src/shared) */ - - - -extern void (*D_80192230[])(void); - -void func_80183A68(void *a0) { - D_80192230[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void func_80178CBC(s32 a0, s32 a1); - extern short D_801921B8; - void func_80183AA4(void * arg0) { - *(short *)((char *)arg0 + 0x2) = 5; - func_80178CBC((int)arg0, (int)&D_801921B8); - } - - - -extern s32 func_80184DD0(s32 a0); - -void func_80183AD0(s32 a0) { - - extern s32 D_80192174[]; - s32 idx = func_80184DD0(a0); - *(s32 *)(a0 + 0xE4) = D_80192174[idx]; -} - - - -extern s32 func_80029178(s32 arg); - extern void func_80029124(s32, s32); - s32 func_80183B10(void) { - if ((func_80029178(0x115) & 0xFF) == 0) { - ((void (*)(void *, s32))func_80029124)((void *)0x115, 1); - return 1; - } - return 0; - } - - - -/* func_80183B4C — guarded dispatch: ask func_80184BAC(9, 0x11); if it answers - * NON-zero, run func_80183938 on the incoming entity. The entity pointer is - * live across the jal, so it lands in $s0 and comes back out as $a0. - * §71 sibling: func_80181B34 in this same TU is the identical shape. - * §3-T4: target branch is `beqz $v0, ret` => the C condition is `!= 0` - * (the sibling's is `bnez` => `== 0`; polarity is read off the opcode). */ - -extern s32 func_80184BAC(s32 arg0, s32 arg1); -extern void func_80183938(void *arg0); - -void func_80183B4C(void *arg0) { - if (func_80184BAC(9, 0x11) != 0) { - func_80183938(arg0); - } -} - - -extern s32 func_80184FA4(void); - extern void func_801839A8(); - void func_80183B8C(s32 param_1) { - if (((s32 (*)(void))func_80184FA4)() != 0) { - ((void (*)(s32))func_801839A8)(param_1); - } - } - - - - - - -void func_80183BC4(void *arg0) { - extern s32 D_801B67DC; - extern s32 func_80184FA4(void); - extern s32 func_80184BAC(s32 arg0, s32 arg1); - extern void func_80183A08(s32 a0); - extern void func_80184ED4(s32, s32, s32, s32); - - if (((s32 (*)(void))func_80184FA4)() != 0) { - if (func_80184BAC(9, 0x11) == 0) { - func_80183A08(arg0); - } else { - func_80184ED4((s32)arg0, (s32)&(*(short *)&D_801B67DC), 0, 0x40); - } - } -} - - -extern int func_80178970(void); -extern s32 D_801B9C50; -extern void func_8012A828(s32 *a0, s32 a1); -extern void func_80178D18(void); - -void func_80183C28(arg0) -void * arg0; -{ - - extern s32 D_801B9C50; - if (func_80178970() != 0) { - ((void (*)(s32))func_80178D18)((s32)arg0); - *(short *)((char *)arg0 + 0x2) = 3; - ((void (*)(s32, s32))func_8012A828)((int)arg0, (int)&(*(short *)&D_801B9C50)); - } -} - - -extern s32 func_80184FA4(void); -extern short D_80192150; -extern void func_80184CB8(s32*, s32); - -void func_80183C78(s32 a0) -{ - if (((s32 (*)(s32))func_80184FA4)(a0) != 0) { - *(s16 *)(a0 + 0x2) = 1; - ((void (*)(s32 *, s32 *))func_80184CB8)((s32*)a0, &D_80192150); - } -} - - -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 s16 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)&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); -extern s32 func_80178BF8(); -extern void func_80172710(void); - -s32 func_80183D80(void *a0) -{ - s32 ptr; - u16 st; - - ptr = *(s32 *)((s32)a0 + 0x64); - st = *(u16 *)((s32)ptr + 0x2); - if (st != 3) { - return 0; - } - - if (func_8012BD14(ptr) >= 0x4001) { - return 0; - } - - { - s32 p; - u16 st2; - p = *(s32 *)((s32)a0 + 0x64); - st2 = *(u16 *)((s32)p + 0x2); - st2++; - *(u16 *)((s32)p + 0x2) = st2; - } - func_80178BF8(); - return (s32)func_80172710; -} - - - -extern void func_80184CB8(s32*, s32); - extern short D_8019224C; - void func_80183DF4(void * arg0) { - *(short *)((char *)arg0 + 0x2) = 1; - ((void (*)(s32, s32))func_80184CB8)((int)arg0, (int)&D_8019224C); - } - - -extern short D_801B99A8; -extern void func_8012A828(s32*, s32); -extern void func_8012E88C(s32); -extern void func_80184C90(s32); - -void func_80183E20(arg0) -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) = 0x2; - func_8012E88C((s32)arg0); - func_8012A828((s32 *)arg0, (s32)&D_801B99A8); - func_80184C90((s32)arg0); - *(short *)((char *)arg0 + 0x34) = 0; -} - - diff --git a/src/ov_SC04_019/ov_SC04_019_jr_80183E6C.c b/src/ov_SC04_019/ov_SC04_019_jr_80183E6C.c deleted file mode 100644 index e60fd8751..000000000 --- a/src/ov_SC04_019/ov_SC04_019_jr_80183E6C.c +++ /dev/null @@ -1,4518 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8; -typedef void (*Handler)(struct Entry_8016E95C *); -extern void func_801458E0(void); -extern s32 D_800AE6AC; -extern s32 D_800AE6B0; -extern u8 D_80078E50; -extern void func_800D185C(u8 *a0); -extern void func_801458E8(void); -extern s32 func_80029504(void); -extern void func_80145B24(void); -extern u8 D_8018F74C; -extern u8 D_8018F6BC; -extern u8 D_8018F698; -extern u8 D_8018F674; -extern u8 D_8018F728; -extern u8 D_8018F704; -extern u8 D_8018F6E0; -extern u8 D_8018F650; -extern void func_80145934(void); -extern u8 D_8018F7DC; -extern u8 D_8018F7B8; -extern u8 D_8018F794; -extern u8 D_8018F770; -extern void func_80145A2C(void); -extern s32 func_800291DC(s32); -extern void func_800291C8(s32, s32); -extern void func_80162120(void); -extern void func_80029124(s32, s32); -extern s32 func_80165A50(s32); -extern void func_80029514(s32); -extern u8 D_80078EC0; -extern s32 func_80028FBC(void); -extern s32 func_80029000(void); -extern s32 func_80028D9C(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_80145BF8(void); -extern s32 func_800291B4(s32 arg); -extern void func_800291A0(s32, s32); -extern void func_80145C54(void); -extern s32 func_80145CEC(); -extern s32 func_80029178(s32 arg); -extern void func_80146014(s32 a0); -extern unsigned char D_8018EBD4[]; -extern unsigned char D_8018EC04[]; -extern unsigned char D_8018EC54[]; -extern unsigned char D_8018EC84[]; -extern unsigned char D_8018ECB4[]; -extern void func_80145EE8(s32 param_1); -extern void MoveImage(void *a0, s32 a1, s32 a2); -extern void func_80146074(void); -extern s32 func_80146128(void); -extern void func_80146360(void); -extern void func_801463A0(); -extern void func_8014607C(void); -extern s32 *D_80126B78; -extern u8 D_80078EC1; -extern s32 D_80078EC8; -extern s32 D_80126B9C; -extern s32 D_8011F730; -extern u16 D_801152B8; -extern u16 D_8012693A; -extern u8 D_80126BE0[]; -extern u8 D_801150F0[]; -extern void *memcpy(void *dst, const void *src, u32 n); -extern void func_80146FC4(s32 a0); -extern void func_80150A70(s32 a0); -extern void func_80147098(s32 *a0); -extern void func_8014A638(s32 arg0); -extern s32 func_80155458(s32 a0); -extern s32 func_80029104(void); -extern void func_80029344(void); -extern void func_8014ADE0(s32 a0); -extern void func_8014B350(s32 a0); -extern void func_8014B7A4(s16 *param_1); -extern s32 func_80161D58(s32 a0); -extern void func_80161A90(s32 a0); -extern void func_8014B504(u16 *a0); -extern void func_80149BEC(s32 a0); -extern void func_8014B5D0(s32 *a0); -extern void func_8014C99C(u8 *a0); -extern void func_8014B190(s32 s0); -extern void func_80148648(s32 a0, s32 a1); -extern s32 func_80149228(s32 a0); -extern void func_8014A59C(s32 a0); -extern void func_8016F14C(void *a0); -extern void func_80154418(void *a0); -extern void func_80154BE4(s32 a0); -extern void func_80165694(s32 arg0); -extern void func_801654A8(s32 a0); -extern void func_8014A680(s32 a0); -extern void func_8014A6A8(s32 a0); -extern void func_8014A71C(s32 a0); -extern void func_80172588(s32 *a0); -extern void func_801473DC(s32 *a0); -extern void func_80015978(s32 a0, s32 *a1); -extern void (*D_8018ED04[])(void *); -extern u8 D_80126BA4; -extern s32 D_80127098; -extern s32 D_80127094; -extern s32 D_80127090; -extern void func_80146534(void); -extern void func_8001D074(s32 a0, s32 a1); -extern void func_80146554(void); -extern void func_80146578(void); -extern void func_8001CFDC(s32, s32); -extern void func_8014659C(void); -extern void func_8001D074(s32, s32); -extern void func_801465C0(void); -extern void func_801465E4(void); -extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); -extern s32 D_8011F9D0; -extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); -extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 D_8011F750; -extern s32 D_8011F754; -extern u8 * func_801468C8(s32 arg0, u8 arg1); -extern s32 D_8011D030; -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); -extern s32 func_80146B9C(void *a0); -extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); -extern u16 D_8011DA28; -extern s32 func_80146B9C(void * arg0); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80146CA0(void *a0); -extern void func_80146CB4(void *a0); -extern void func_80146CC8(s32 a0); -extern void func_80146D30(s32 a0); -extern void func_80146D80(s32 *a0); -extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80146D90(s32 a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); -extern void func_80146E90(s32 *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80015954(s32 a0, s32 a1); -extern void func_80149374(s32 a0, s32 a1); -extern void func_80146F58(s32 a0, s32 a1); -extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 func_8012A68C(void); -extern s16 func_8012A758(void); -extern void func_8004978C(s16 *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern u8 D_80126DB0[]; -extern u16 D_80126DB6; -extern void func_8014704C(s32 *a0); -extern s32 func_80147054(void *a0); -extern void func_80147060(u8 * a0); -extern void func_8014706C(void *arg0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80147084(s32 *a0); -extern void func_8014708C(void *arg0); -extern s32 func_801470A0(void *a0); -extern void func_801470AC(s32 *a0); -extern void func_801470B4(s32 arg0); -extern void func_801470C0(s32 a0); -extern void func_80147118(s32 a0); -extern s16 D_80126BB8; -extern s16 D_80126BBA; -extern s16 D_80126BBC; -extern void func_80147264(s32 a0); -extern void func_80147290(void); -extern void func_801472B4(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void *D_8012707C; -extern void func_801472DC(void); -extern void func_801472F0(void *a0); -extern void func_80147364(u16, s32); -extern void func_80147300(u16 arg0); -extern void func_80147324(s32 arg0); -extern void func_801473EC(s32 *a0); -extern void func_80147460(s32 a0); -extern void func_80147514(); -extern void func_80147628(s32 a0); -extern void func_80147478(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); -extern s32 func_800129CC(s32 a0, s32 a1); -extern void func_80147514(s32 arg0); -extern void func_80013F3C(s32 a0); -extern void func_80012558(s32 a0, s32 a1); -extern void func_800126C4(s32 a0, s32 a1); -extern void func_800123F0(s32 a0, s32 a1); -extern void func_80147718(s32 a0); -extern void func_80147788(void *a0, s32 a1); -extern void func_801477A8(void *a0, s32 a1); -extern void func_801477C8(void *a0, s32 a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80147814(s32 a0, s32 a1); -extern void func_80147928(int a0, int a1); -extern void func_8014799C(int a0, int a1); -extern void func_80147A10(int a0, int a1); -extern void func_80147860(int a0, int a1, int a2, int a3); -extern void func_80147948(s32 a0, s32 a1, s32 a2); -extern void func_801479BC(s32 a0, s32 a1, s32 a2); -extern void func_80147A30(s32 a0, s32 a1, s32 a2); -extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147948(int a0, int a1, int a2); -extern void func_801479BC(int a0, int a1, int a2); -extern void func_80147A30(int a0, int a1, int a2); -extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147A84(s32 arg0); -extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147AAC(s32 arg0); -extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80147B5C(s32 a0, void *a1); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern void func_80147B18(s32 a0); -extern void func_80147B5C(s32 arg0, void *arg1); -extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147DC0(s32 a0, s32 a1); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147F50(s32 arg0); -extern void func_80148038(s32 a0, s32 a1); -extern s32 ratan2(s32 a0, s32 a1); -extern s32 csqrt(s32 a0); -extern s32 func_80012A60(s32 a0, s32 a1); -extern void func_80148094(int param_1, short *param_2, int *param_3); -extern void func_801485B8(s32 a0, s32 a1, s32 a2); -extern void func_801484B0(s32 a0, s32 a1); -extern s32 func_80154358(void *a0); -extern void func_801484E8(s32 a0, s32 a1); -extern void func_80148534(s32 a0, s32 a1); -extern void func_8014856C(s32 a0, s32 a1); -extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); -extern void func_80148634(void *a0); -extern u8 D_800B9A64; -extern s32 func_80014DC0(); -extern s32 func_80014D68(); -extern s32 func_80014D94(); -extern s32 func_80014CF8(); -extern void func_800120DC(); -extern s32 func_800CF8B4(); -extern u16 func_801487F4(s32 *a0); -extern u16 func_80148800(s32 *a0); -extern u8 func_8014880C(s32 *a0); -extern u16 func_80148818(s32 *a0); -extern s32 func_80047D3C(s32 a0); -extern s32 func_80148824(void *arg0); -extern s32 func_801488A8(u8 *a0); -extern s32 func_8014891C(s32 a0); -extern s32 func_80148980(u8 *a0); -extern s32 func_801489E8(s32 a0); -extern s32 func_80148A48(s32 a0); -extern int func_80148AFC(void *a0); -extern void func_80148AAC(u8 *a0); -extern s32 func_80148C18(void); -extern s32 func_80148C20(s32 a0, s16 a1); -extern s32 func_80148C34(s32 a0, s32 a1); -extern s32 func_80148C4C(s32 a0, s32 a1); -extern s32 func_80148C64(s32 a0, s32 a1); -extern s32 func_80148C7C(void); -extern s32 func_80148C84(s32 a0, s32 a1); -extern s32 func_80148C9C(s32 a0, s32 a1); -extern s32 func_80148CB4(s32 a0, s32 a1); -extern s32 func_80148CCC(s32 a0, s32 a1); -extern s32 func_80148CE4(void); -extern s32 func_80148CEC(void); -extern s32 func_80148CF4(s32 a0, s32 a1); -extern s32 func_80148D0C(s32 a0, s32 a1); -extern s32 func_80148D24(void *a0, int a1); -extern s32 func_80148D3C(void); -extern s32 func_80148F60(void); -extern s32 func_80148F68(s32 a0); -extern s32 func_80148F74(s32 a0); -extern s32 func_80148F80(s32 a0); -extern s32 func_80148F8C(s32 a0); -extern s32 func_80148F98(void); -extern s32 func_80148FA0(s32 a0); -extern s32 func_80148FAC(s32 a0); -extern s32 func_80148FB8(s32 a0); -extern s32 func_80148FC4(s32 a0); -extern s32 func_80148FD0(void); -extern s32 func_80148FD8(void); -extern s32 func_80148FE0(s32 a0); -extern s32 func_80148FEC(s32 a0); -extern s32 func_80148FF8(s32 a0); -extern s32 func_80149004(void); -extern void func_8014900C(s32 *a0); -extern void func_80149020(s32 *a0); -extern void func_80149034(s32 *a0); -extern void func_80149048(s32 *a0); -extern void func_8014905C(u8 *a0); -extern void func_801490E0(s32 *a0, s16 a1); -extern void func_801490E8(s32 *a0, s16 a1); -extern void func_801490F0(s32 *a0, s16 a1); -extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); -extern void func_801490F8(s32 a0, s32 a1); -extern s32 func_801491C4(s32 a0); -extern s32 func_80149184(s32 a0); -extern void func_80149204(s32 *a0); -extern void func_80149210(s32 a0, s32 a1); -extern s32 func_80149284(s32 *a0, s32 a1); -extern void func_80149350(s32 arg0); -extern void func_80149290(s32 a0); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_80149374(s32 arg0, s32 arg1); -extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8014942C(s32 arg0); -extern void func_8012EF70(s32 a0, s32 a1); -extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012EFB8(s32 a0); -extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); -extern void func_8014964C(s32 param_1, s32 param_2); -extern s32 func_801496D4(void *a0); -extern void func_8015AD08(); -extern void func_80149704(void); -extern void func_8015ACC4(); -extern void func_80149724(void); -extern u8 D_80078EBF; -extern s32 func_80149744(struct S_80149744 *a0); -extern void func_8015F7A0(); -extern void func_80149788(void); -extern void func_801653B8(); -extern void func_80149864(void); -extern s16 currentLocationId; -extern s32 func_8016F1AC(void); -extern s32 func_80149884(void); -extern void func_80160B00(); -extern void func_801498C0(void); -extern s32 func_80149AA8(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern void func_80146750(void *a0); -extern s32 func_801498E0(s32 *a0); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_80147364(u16 a0, s32 a1); -extern s32 func_800CCF28(s32 a0); -extern u8 D_80126B5C; -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_8015DAC4(s32 *a0); -extern void func_8015554C(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern void func_80149B14(s32 *a0); -extern u8 func_8014BEF8(void); -extern s32 func_80149B54(s32 * arg0); -extern void func_8015DE24(s32 *a0); -extern void func_80157510(s32 *a0); -extern void func_80149BAC(s32 *a0); -extern s32 func_80029178(s32 a0); -extern s32 func_80149C08(s32 arg0); -extern void func_801577C8(); -extern void func_80149C94(void); -extern void func_80157D20(void); -extern void func_80149CB4(void); -extern s32 func_80149CD4(s32 a0); -extern u8 func_8014B5B8(s32 *a0); -extern s32 func_80149D10(s32 a0); -extern s32 func_80149E94(s32 a0); -extern s32 func_80149DD8(s32 a0); -extern s32 func_80149D9C(s32 a0); -extern s32 func_80149F2C(s32 a0, s32 a1); -extern s32 func_80149E94(s32 arg0); -extern void func_80149FA8(void); -extern s32 D_8018EDCC[]; -extern s32 func_80149FB0(s32 a0); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern void func_8014A1B0(s32 a0, s32 a1); -extern s32 func_8014A048(s32 param_1); -extern u16 func_80156370(u16 a0); -extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); -extern void func_8015D4B4(); -extern void func_8014A218(void); -extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); -extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); -extern s32 func_8014A238(s32 arg0); -extern s32 func_8014A2E4(s32 a0); -extern void func_8014A380(s32 a0, s32 a1); -extern s16 D_801152B0; -extern s16 D_801152B4; -extern s32 func_8014A3E0(struct S_8014A3E0 *a0); -extern s32 func_8014A454(s32 a0); -extern s32 func_8014A4B4(void *a0); -extern void func_8015EDD4(); -extern void func_8014A4FC(void); -extern s32 func_8014A674(s32 *a0); -extern s32 func_8014A69C(s32 *a0); -extern s32 func_8014A6C4(s32 a0); -extern void func_8015E184(); -extern void func_8014A830(void); -extern s32 func_80029AF4(void); -extern s32 func_8014A850(s32 param_1); -extern void func_8014AA04(s32 a0); -extern void func_801599A4(void *a0); -extern void func_80159B3C(void *a0); -extern s32 func_80165A20(s32 a0); -extern void func_8014AB7C(); -extern void func_8014AC10(); -extern void func_8014AA28(void); -extern void func_8014AB5C(void); -extern void func_80162CCC(void); -extern void func_8014AB7C(s32 arg0); -extern void func_8014ABF0(void); -extern void func_80016714(void *a0, s32 a1); -extern void func_8014AC10(s32 arg0); -extern void func_8014ACC0(s32 a0, s32 a1); -extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); -extern void func_8014ACE8(void *a0, s32 a1, s32 a2); -extern void func_80146AFC(void *a0); -extern void func_8014ADA8(s32 a0, s32 a1); -extern void func_8014AD7C(s32 a0); -extern s32 D_80078E8C; -extern void func_8014B034(s32 arg0); -extern void func_8014B00C(s32 arg0); -extern void func_8014B084(void); -extern s16 D_80078E90; -extern void func_8014B034(s32 a0); -extern u8 D_80078EBA; -extern void func_800D10EC(void); -extern void func_8002AC98(void); -extern s32 func_8014B154(s32 *a0); -extern void func_8014B12C(void); -extern void func_8014B2F8(void); -extern void func_8014B4C4(void); -extern void func_8014B160(s32 a0); -extern s32 func_8016F1C4(void); -extern s16 D_80078E96; -extern s16 D_80078EB8; -extern u16 D_80078EA6; -extern void func_8014B2A8(void); -extern void func_8014B310(void); -extern void func_8014B2D0(void); -extern s32 D_80078E94; -extern s32 D_80078ECC; -extern void func_8014B33C(void); -extern u8 D_80062BF4[]; -extern void func_8014BC80(s32 a0, s32 a1); -extern void func_80019064(void *a0); -extern s32 D_80078E98; -extern void func_80166244(); -extern void func_8014B4D4(void *a0); -extern s16 D_80078E9A; -extern u8 D_80126D1C; -extern s32 D_80126D74; -extern void func_8014B598(s32 a0, s32 a1); -extern void func_8014B5B0(s32 *a0); -extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); -extern void func_8014B5D8(s32 s1); -extern s32 D_80078E9C; -extern s32 D_80078ED0; -extern void func_8014B6F0(s32 a0, s32 a1); -extern void func_8014B768(s32 a0, s32 a1); -extern void func_8014B944(s32 a0, s32 a1, s32 a2); -extern s32 D_80078EA4; -extern u16 D_80078EB2; -extern s16 D_80078EB4; -extern void func_8014BB0C(void); -extern void func_8014BB24(s32 a0, s32 a1, s32 a2); -extern void func_8014BC0C(s32 a0, s32 a1); -extern void func_8014BC44(s32 a0, s32 a1); -extern u8 D_800B9A17; -extern void func_8014BCC0(s32 a0, s32 a1); -extern u16 D_80078EB6; -extern s32 func_8014BCEC(s32 a0, s32 a1); -extern void func_8014BD24(s32 a0, s32 a1); -extern void func_8014BD60(s32 param_1, s32 param_2); -extern void func_8014BD98(s32 a0, u16 a1); -extern void func_8014BDC8(void); -extern void func_8014BDE0(void); -extern s32 func_8017267C(s32 *a0); -extern s32 func_80013294(void *a0, void *a1); -extern void func_80029ED4(s32 a0); -extern void func_8014BDE8(s32 a0); -extern void func_8014BE78(void); -extern void func_8014BE9C(void); -extern void func_80029124(s32 a0, s32 a1); -extern void func_8014BEC0(void); -extern void func_8014BF18(s32 a0); -extern void func_8014BF48(void); -extern u8 func_8014BF6C(void); -extern void func_8014BF8C(u8 arg0); -extern void func_8014BFB0(void); -extern u8 func_8014BFD4(void); -extern void func_8014BFF4(s32 a0, s32 a1); -extern void func_8014C010(s32 a0, s32 a1); -extern s32 func_8014C050(s32 a0, s32 a1); -extern s32 func_8014C088(s32 a0, s32 a1); -extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); -extern s32 func_8014C118(void * a0, s32 a1, s32 a2); -extern s32 func_8014C168(s32 * param_1, s32 param_2); -extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); -extern u8 D_8018EE54[]; -extern void func_8014C1A0(s32 arg0, s32 arg1); -extern s32 func_80013328(s32 a0, s32 a1); -extern s32 func_8014C59C(void *a0, void *a1); -extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); -extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); -extern s32 ratan2(s32 dx, s32 dy); -extern u8 D_8018EE5C; -extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); -extern s16 func_8014C5D0(s32 a0, s32 a1); -extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); -extern u8 D_80126D17; -extern void func_8014C6AC(void); -extern void func_8014C6C0(void); -extern u8 D_80126D1E; -extern void func_8014C6D0(void); -extern void func_8014C6E0(void); -extern s32 func_8014C860(s32 a0, s32 a1); -extern void func_8014C8C8(s32 a0, s32 *a1); -extern void func_8014C88C(s32 a0); -extern void func_8014C8C8(s32 dst, s32 * src); -extern void func_8014C8F0(s32 arg0); -extern u8 D_801151F0[]; -extern s32 func_8014C918(s32 a0, s32 a1); -extern s32 D_80126B50; -extern void func_8014C968(void); -extern void func_8014C978(void); -extern s32 func_8014C98C(void); -extern void func_80139914(s32 a0); -extern s32 func_8014CA00(s32 a0); -extern u16 func_8014CA70(s32 a0, s32 a1); -extern s32 func_8014CA14(s32 a0, s32 a1); -extern u16 func_8014CAE4(s32 *a0, s32 a1); -extern s32 func_8014CA88(s32 *a0, s32 a1); -extern s32 func_8014CAFC(void); -extern s32 func_8014CB0C(void); -extern s32 func_8014CB1C(void); -extern u8 D_80126D1F; -extern s32 func_8014CB2C(void); -extern s32 func_8014CB58(void); -extern u8 D_80126D1D; -extern void func_8014CB68(void); -extern s32 func_8014CB7C(void); -extern s32 func_8014CB8C(void); -extern short D_80126C9E; -extern void func_8014CB9C(struct Packed8 *a0); -extern s32 D_80126CDC; -extern void func_8014CBD8(void); -extern s16 D_80126CC4; -extern void func_8014CBE8(void); -extern void func_8014CBF8(void *a0); -extern void func_8014D3E0(s32 a0); -extern void func_8014D04C(void); -extern void func_8014CCB4(void); -extern void func_8014CC28(s32 a0); -extern void func_8014CD0C(u8 *a0); -extern s32 func_8014CF04(s32 a0, s32 a1, void *a2); -extern void func_8014CD80(s32 a0, void *a1, void *a2); -extern void func_8014D0A4(s32 a0); -extern s32 func_8014D2A0(s32 a0, void *a1, void *a2); -extern s32 func_8014D12C(s32 a0, void *a1, void *a2); -extern void func_8014D438(s32 a0); -extern void func_8014D3E0(s32 _arg0); -extern void func_8014D610(s32 a0, void *a1, void *a2); -extern s32 func_8014D4C0(s32 a0, void *a1, void *a2); -extern void func_8014D790(s32 a0); -extern void func_8014D738(void); -extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); -extern s32 func_8014D820(s32 a0, u16 *a1, u16 *a2); -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); -extern void func_8014DF94(s32 arg0); -extern void func_8014DF3C(void); -extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ -extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ -extern s16 D_801152AC; -extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); -extern void func_8014E48C(s32 a0); -extern void func_8014E434(void); -extern void func_8014E5B4(s32 a0, void *a1, void *a2); -extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); -extern void func_8014E6F8(struct SubE6F8 *a0); -extern void func_8014E6A0(void); -extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); -extern void func_8014E934(s32 _arg0); -extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); -extern s32 func_8014E98C(void *a0); -extern u16 D_800B99DA; -extern s32 D_801150D8; -extern s16 D_801152AA; -extern u8 D_80126720[]; -extern s16 D_80126724; -extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); -extern s32 func_8014ED80(struct SubED80 *a0); -extern int D_801E5BA8; -extern void func_8014ED28(s32 _arg0); -extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F24C(struct SubF24C *a0); -extern void func_8014F1F4(void); -extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F4C0(); -extern s32 func_8014F468(void); -extern int func_8014F74C(); -extern int func_8014F6F4(void); -extern u8 D_800D3918[]; -extern u8 D_801152A8[]; -extern s32 D_801152BC; -extern int func_8014F74C(s32 arg0); -extern s32 func_8014FA70(s32 a0); -extern s32 D_801E5BAC; -extern void func_8014FA04(s32 a0); -extern s32 func_8014FBC0(); -extern s32 func_8014FC18(u8 *self); -extern int func_8014FD54(int param_1); -extern void func_8014FCFC(void); -extern void func_80150170(void *a0); -extern s32 func_8014FE60(void *a0); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_8014FE60(void *e); -extern s32 func_80134510(s32 arg); -extern s32 func_80150150(s32 a, s32 b); -extern s32 func_80150460(s32 a, s32 b); -extern void func_801504D8(u16 *a0); -extern s32 func_80150480(s32 _arg0); -extern s32 func_80150528(void *a0, void *a1, void *a2); -extern s32 func_80150528(void *arg0, void *arg1, void *arg2); -extern s32 func_801506A4(s32 a0, s32 a1); -extern s32 func_801505FC(s32 a0); -extern s32 func_801506A4(s32 arg0, s32 arg1); -extern void func_80150820(s32 a0, s32 a1); -extern void func_8015086C(int param_1); -extern s32 func_801508B4(s32 a0); -extern s32 func_8015094C(s32 a0); -extern short func_801508F8(s32 a0); -extern s32 D_8018EE8C; -extern s32 D_80126990; -extern s32 D_80126994; -extern s32 func_80021174(s32 a0, s32 a1); -extern s32 func_8015094C(s32 param_1); -extern void func_80150B9C(void); -extern s32 func_80151184(s32 a0, s32 a1, s32 a2); -extern s32 func_80150BA4(s32 a0); -extern s32 func_801619D0(void *a0); -extern void func_80150BC8(s32 *a0); -extern s32 func_80150480(s32 a0); -extern u16 D_800AE6DC; -extern void func_80150C48(s32 a0); -extern int func_80151184(int arg, int a1, int a2); -extern int func_80150CA0(int arg); -extern void func_80150EC4(s32 a, s32 b); -extern void func_80150CC4(s32 a); -extern void func_80150CE4(s32 a); -extern void func_80150D04(s32 a); -extern void func_80150D24(s32 a); -extern void func_80150D44(s32 a); -extern void func_80150D64(s32 a); -extern void func_80150D84(s32 a); -extern void func_80150DA4(s32 a); -extern void func_80150DC4(s32 a); -extern void func_80150DE4(s32 a); -extern void func_80150E04(s32 a); -extern void func_80150E24(s32 a); -extern void func_80150E44(s32 a); -extern void func_80150EC4(s32 a0, s32 a1); -extern void func_80150E64(s32 a0); -extern void func_80150E84(s32 a0); -extern void func_80150EA4(s32 a0); -extern u8 D_800AE6C0; -extern s16 D_800AE6C8; -extern s16 D_800AE6CA; -extern s16 D_800AE6CC; -extern s32 D_800AE6C4; -extern s16 D_800AE6CE; -extern u8 D_800AE6BE; -extern u8 D_801201F8[]; -extern void func_80150F78(void); -extern void func_80150F80(s32 a0); -extern int func_80150FB4(int arg); -extern void func_80150FD8(s32 a0); -extern int func_80151014(int arg); -extern void func_80151038(s32 a0); -extern int func_80151070(int arg); -extern int func_80151094(int arg); -extern void func_801510B8(void); -extern void func_801510C0(void); -extern int func_801510C8(int arg); -extern int func_801510EC(int arg); -extern s32 func_8012DB84(void); -extern s32 func_80151110(void); -extern void func_80151130(void); -extern int func_80151138(int arg); -extern void func_8015115C(s32 *a0, s16 a1); -extern s32 func_80151164(s32 a0, s32 a1); -extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); -extern void func_801511A8(u8 *a0); -extern void func_801511C4(u8 *a0); -extern int func_80151204(int arg, int a1); -extern int func_801511E0(int arg); -extern int func_80151204(int a0, int a1); -extern void func_80151238(void *a0); -extern void func_8015126C(u16 *p); -extern void func_80151780(s32 a0); -extern void func_801516F0(s32 *a0); -extern void func_8015173C(s32 *a0); -extern s16 D_8011DB1A; -extern s32 D_80127518; -extern s32 D_801151FC; -extern s32 func_801725CC(u8 *a0); -extern s32 func_80029D3C(void); -extern void func_80151878(void); -extern void func_80153B58(s32 *a0); -extern s32 func_80151880(s32 a0); -extern s32 func_801518D8(s32 a0); -extern s32 func_80151944(void); -extern s32 func_80151924(void); -extern void func_8014E934(s32 a0); -extern s32 func_8014F3E8(s32 a0); -extern void func_801519C8(s32 a0); -extern void func_80151980(s32 a0); -extern M2C_UNK D_800D5880; -extern s32 D_800D58AC; -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801519C8(s32 arg0); -extern void func_80151C54(s32 a0); -extern void func_801542DC(s32 *a0, s32 a1); -extern void func_8015BDD0(s32 *a0); -extern void func_80165718(s32 a0); -extern u8 D_800D46E4[]; -extern void func_80151AE4(s32 arg0); -extern void (*D_8018EF34[])(void); -extern void func_80151D24(void *a0); -extern void func_80151DB0(s32 a0); -extern void func_80151D60(void *a0); -extern s32 func_80172630(u8 *a0); -extern s32 D_80062C14; -extern void func_80151DB0(s32 param_1); -extern void func_80151E78(s32 *a0); -extern void func_80151ECC(struct S80151ECC *a0); -extern void func_80151FB4(s32 a0); -extern void func_80151F38(s32 *a0); -extern void func_801553C0(s32 a0); -extern void func_80153C18(); -extern void (*D_8018EF58[])(void); -extern void func_80152058(void *a0); -extern void func_801520DC(s32 a0); -extern void func_80152094(s32 a0); -extern void func_80147324(s32 a0); -extern u8 D_80062C04[]; -extern M2C_UNK D_8018EF48; -extern void func_801520DC(s32 arg0); -extern void func_801470B4(s32 a0); -extern void func_8015369C(s32 a0); -extern void func_80152194(s32 *a0); -extern s32 func_801536DC(s32 a0); -extern void func_8015220C(s32 a0); -extern s32 func_80153800(s32 a0); -extern void func_801522CC(s32 a0); -extern void func_80152254(s32 *a0); -extern void (*D_8018EF6C[])(void); -extern void func_80152370(void *a0); -extern void func_801523F4(s32 a0); -extern void func_801523AC(s32 a0); -extern void func_8001382C(s32 a0, void *a1, void *a2); -extern u8 D_8018EF78[]; -extern void func_801523F4(s32 arg0); -extern void func_801525F4(int); -extern s32 func_801535F4(void *arg0); -extern void func_8015BF48(s32 *a0); -extern void func_80152500(int param_1); -extern void func_801525F4(s32 a0); -extern void (*D_8018EF88[])(void); -extern void func_80152698(void *a0); -extern void func_80152714(s32 a0); -extern void func_801526D4(s32 a0); -extern void func_80152790(s32 a0); -extern void (*D_8018EFA0[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018EF90; -extern void func_801528B0(s32 arg0); -extern void func_8015294C(s32 a0); -extern void func_80152A08(s32 a0); -extern void func_80152AC8(s32 a0); -extern void func_80152A50(s32 *a0); -extern void (*D_8018EFB4[])(void); -extern void func_80152B6C(void *a0); -extern void func_80152BF0(s32 a0); -extern void func_80152BA8(s32 a0); -extern void func_80152C80(s32 *a0); -extern void func_80152C40(s32 *a0); -extern void (*D_8018EFD0[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018EFC0; -extern void func_80152DA8(s32 arg0); -extern void func_80152E4C(s32 a0); -extern void func_80152EFC(s32 a0); -extern void func_80152FBC(s32 a0); -extern void func_80152F44(s32 *a0); -extern void (*D_8018EFE4[])(void); -extern void func_80153060(void *a0); -extern void func_801530E4(s32 a0); -extern void func_8015309C(s32 a0); -extern void func_80155440(s32 *a0); -extern void func_801530E4(s32 arg0); -extern void func_80153150(struct S80153150 *a0); -extern void func_801531BC(s32 a0); -extern void func_8015327C(s32 a0); -extern void func_80153204(s32 *a0); -extern void (*D_8018EFF8[])(void); -extern void func_80153320(void *a0); -extern void func_801533A4(s32 a0); -extern void func_8015335C(s32 a0); -extern void func_80153410(s32 *a0); -extern void func_80153490(s32 a0); -extern void func_80153550(s32 a0); -extern void func_801534D8(s32 *a0); -extern void (*D_8011DB28)(s32 a0); -extern s32 func_801536DC(s32 param_1); -extern void func_800139C8(s32 a0, void *a1, void *a2); -extern s32 func_80153978(s32 a0, u16 *src); -extern s32 func_80133784(s32 a0, void *src, s32 dst); -extern s32 func_801539F8(s32 a0, void *a1); -extern s32 func_801539F8(s32 a0, void * a1); -extern s32 func_8016DA04(s32 a0); -extern s32 func_80153BD8(s32 a0); -extern s32 func_80153BF0(s32 a0); -extern void func_80153C18(void); -extern u16 D_8011F748; -extern void func_80153C30(void); -extern void func_80153C74(s16 a0, s16 a1); -extern s16 D_8011DB18; -extern void func_80153C44(int a0, int a1, s16 a2); -extern s16 D_8011DB0C; -extern s32 D_80115210; -extern void func_80153C8C(void); -extern void func_80153C9C(void); -extern s32 func_80153CBC(void); -extern s32 D_8018F00C; -extern void (*D_8018F034[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018F014; -extern void func_80153D7C(s32 param_1); -extern void func_8015410C(void); -extern void func_80153E00(s32 param_1); -extern void func_80151664(void); -extern void func_80154134(u8 *a0); -extern void func_80154190(u8 *a0, s32 a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154218(u8 *a0, s32 a1, s32 a2); -extern void func_801541D8(u8 *a0, s32 a1, s32 a2); -extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); -extern void func_801542A4(); -extern void func_801542A4(s32 *a0, s32 a1); -extern void func_8015430C(); -extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); -extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); -extern s32 func_80154358(void * arg0); -extern void func_80154AB4(s32 a0, s32 a1); -extern void func_80154B20(s32 a0, s32 a1, s32 a2); -extern void func_80154AE0(s32 a0, s32 a1, s32 a2); -extern void func_80154B7C(u8 *a0, s32 a1); -extern void func_80154B4C(u8 *a0, s32 a1); -extern void func_80154BC8(void *a0, s32 a1, s32 a2); -extern void func_80154B98(void *a0, s32 a1, s32 a2); -extern u8 D_800D8D10[]; -extern s16 D_80078E9E; -extern void func_801550FC(s32 a0); -extern void func_80154ED8(s32 a0, s32 a1); -extern void func_80154F9C(s32 a0); -extern void func_800183E0(s32 a0); -extern void func_801550FC(s32 arg0); -extern void func_8001D150(s32, s32); -extern void func_8001D130(int, int); -extern void func_80155150(int param_1); -extern s32 D_800DE2A4[]; -extern void func_801552F4(s32 a0); -extern void func_80155344(s32 a0); -extern s32 func_80155394(s32 *a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80029178(s32); -extern int (*D_8018F080[])(void); -extern s32 func_80155458(s32 param_1); -extern s32 func_801659DC(u8 *a0); -extern s32 func_801554B8(void *arg0); -extern void func_801555F4(void *a0); -extern void func_80155518(s32 *a0); -extern void func_80155580(void *a0); -extern void (*D_8018F084[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern s32 func_80029B4C(s32 a0, s32 a1); -extern s32 func_80029BC8(s32 a0, s32 a1); -extern s32 func_80029C44(s32 a0, s32 a1); -extern s32 func_8015640C(s32 a0, s32 a1); -extern s32 rand(void); -extern u32 func_8015616C(s32 param_1, u16 param_2); -extern u16 func_80156370(u16 param_1); -extern s32 func_801564B0(s32 a0); -extern s32 func_8002A1B4(void); -extern s32 func_8002A400(void); -extern s32 func_8002A670(void); -extern s32 func_8002A8E0(void); -extern s32 D_801151E0[]; -extern s32 func_801565C0(void); -extern void func_80156A14(s32 *a0); -extern void func_80156648(s32 *a0); -extern u8 D_8011DAD8[]; -extern s32 func_8014C568(s16 *a0, s16 *a1); -extern void func_801567BC(s32 a0); -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018F4E8[]; -extern void func_80156A1C(s32 param_1, s32 param_2); -extern s32 D_801150E0[]; -extern void func_80156A88(s32 a0, s32 a1); -extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); -extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); -extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); -extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern s32 func_80135004(s32 a0, void *a1, s32 a2); -extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801575E4(void *a0); -extern void func_801574DC(s32 *a0); -extern void func_80157544(void *a0); -extern void (*D_8018F4F8[])(void); -extern void func_8014CC28(s32 a0); /* defined */ -extern s32 func_8014F3E8(s32 a0); /* declared */ -extern void func_8015BDD0(s32 *a0); /* defined */ -extern void func_801575E4(void *a0); /* defined */ -extern void func_80157580(s32 arg0); -extern u8 D_800D4F14[]; -extern void func_801576A8(void *arg0); -extern s32 func_8015773C(u8 *a0); -extern s32 func_8015771C(u8 *a0); -extern s32 func_8015773C(u8 * arg0); -extern int D_801E5BE0; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018F520[])(void); -extern void func_80157808(void *param_1); -extern void func_80157880(s32 a0); -extern s32 func_801725A4(u8 *a0); -extern u8 D_800D5128; -extern u8 D_8018F500; -extern void func_801578C0(s32 param_1); -extern void func_80147A84(int); -extern void func_80148038(int, int); -extern void func_80147460(int); -extern void func_80146D90(int); -extern void func_80161450(void *a0); -extern void func_80157A8C(int); -extern void func_80154A74(int, int); -extern unsigned char D_800D5178; -extern unsigned char D_8018F510; -extern void func_8015795C(int param_1); -extern void func_80161D20(s32 a0, s32 a1); -extern void func_80157A8C(s32 a0); -extern void func_8016706C(s32 a0); -extern u8 D_800D51AC[]; -extern void func_80157AC8(s32 param_1); -extern void func_80157B74(int param_1); -extern void func_8016158C(void *a0); -extern void func_8015BE04(s32 *a0); -extern void func_80157BC8(s32 a0); -extern void func_80157CCC(s32 a0); -extern void func_80157DC4(void *a0); -extern void func_80157FC4(void *a0); -extern void func_80157D74(u16 *a0); -extern void (*D_8018F560[])(void); -extern void func_80157E38(void *); -extern void func_80157E00(void *a0); -extern void func_80157E38(void * a0); -extern s32 func_80157F64(s32 *a0); -extern s32 func_80156600(void *a0); -extern void func_80157EA4(void *a0); -extern void (*D_8018F568[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018F534; -extern void func_80158038(void * param); -extern u8 D_800D524C[]; -extern void func_80161418(void *a0); -extern void func_801580B4(s32 a0); -extern void func_801581AC(s32 a0); -extern void (*D_8018F574[])(void); -extern void func_8015824C(void *a0); -extern void func_801582C0(void *); -extern void func_80158288(void *a0); -extern u8 D_800D52A8[]; -extern void func_801585A4(s32 *a0); -extern void func_801582C0(void *a0); -extern s32 func_801585AC(s32 *a0); -extern u8 D_800D52E8[]; -extern void func_80158344(s32 *a0); -extern s32 func_801615C4(void *a0, s32 a1); -extern u8 D_8018F544; -extern u8 D_800D533C; -extern void func_80158434(s32 param_1); -extern void func_80158548(s32 param_1); -extern void func_801585EC(u8 *a0); -extern void func_80158794(void); -extern s32 D_801E5BE8; -extern s32 D_801E5BF4; -extern s32 D_801E5BF8; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018F5B0[])(s32 *); -extern void func_80158AE4(void *a0); -extern void func_80158AB4(void *a0); -extern void func_8016F264(void); -extern void func_80165840(void); -extern void func_801658DC(void); -extern void func_80165A78(s32); -extern void func_80158AE4(void * a0); -extern M2C_UNK D_800D58D8; -extern void func_80158BB0(void *arg0); -extern s32 func_80159404(s32 a0, s32 a1); -extern void func_80158C40(s32 *a0); -extern void func_80158CD8(s32 *a0); -extern s32 func_80159434(s32 a0, s32 a1); -extern void func_80158D60(s32 a0); -extern M2C_UNK D_800D5904; -extern void func_80158E24(s32 *a0); -extern s32 D_8018F584[]; -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80158F00(int param_1); -extern u8 D_80110C3C[]; -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80158FA4(s32 param_1); -extern s32 func_801399F0(s32 a0); -extern u8 D_80110C94[]; -extern u8 D_80110CD4[]; -extern void func_80159070(void *a0); -extern s32 func_80029A94(s32); -extern void func_80175454(void); -extern void func_800298BC(void *); -extern void func_8002992C(s32); -extern void func_800CF804(void); -extern void func_800CF818(void); -extern u8 D_80110D0C[]; -extern void func_80159120(s32 a0); -extern void func_801592CC(s32 *a0); -extern u8 D_800AE6BD; -extern s32 D_801E5BF0; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018F800[])(void); -extern void func_80159698(void *a0); -extern s32 func_801596D4(void *a0); -extern void func_80174B6C(void); -extern void func_80129248(s16 a0); -extern void func_8013C938(void); -extern void func_8013CB20(void); -extern void func_8013C98C(void); -extern void func_8002850C(s32, s32, s32); -extern void func_80028620(s32, void *); -extern s16 D_800B9AAC[]; -extern s16 D_800B9B00; -extern u16 D_801270C0; -extern u32 D_800AFAE8[]; -extern char D_8018F620[]; -extern s32 func_801596F0(s32 param_1); -extern s32 func_80159874(void); -extern void func_800167B8(s32 a0); -extern s32 func_8015987C(s32 a0); -extern int func_800167F0(int arg); -extern int func_801598BC(void); -extern void func_80159968(void *a0); -extern void func_801598E0(u8 *a0); -extern void (*D_8018F8A4[])(void); -extern void func_80159A20(void *a0); -extern void func_801599E0(void *a0); -extern void func_80159A18(void); -extern void func_80159BE4(s32); -extern void func_80159B08(s32 *a0); -extern void func_80159B70(void *a0); -extern void func_80159B3C(void * a0); -extern void (*D_8018F9F8[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018F814; -extern void func_80159BE4(s32 arg0); -extern void func_8015A1C8(s32 a0); -extern void func_8015A2D8(s32); -extern void func_8015A1FC(s32 *a0); -extern void func_8015A264(void *a0); -extern void func_8015A230(s32 *a0); -extern void (*D_8018FA00[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018F824; -extern s32 func_80172608(u8 *a0); -extern void func_8015A2D8(s32 param_1); -extern u8 D_800D48DC; -extern s32 func_8015AB7C(s32 a0); -extern s32 D_8011F9C4; -extern s32 func_8015ABD4(s32 a0, s32 a1, s32 a2); -extern s32 func_80161CD0(s32 a0, s32 a1); -extern M2C_UNK D_8018F844; -extern void func_8015AC48(s32 arg0); -extern void func_8015AC90(s32 a0); -extern void func_8015ADB0(s32 a0); -extern void func_8015ACC4(s32 *arg0); -extern void func_8015AD3C(void *a0); -extern void func_8015AD08(void *arg0); -extern void (*D_8018FA08[])(void); -extern void func_8015ADB0(s32); -extern void func_8015AD78(s32 a0); -extern void func_8015ADB0(s32 arg0); -extern s32 D_800D4A9C; -extern int func_8015B6F4(int param_1); -extern u8 D_800D4F8C[]; -extern s32 func_8015B7B4(s32 a0); -extern u8 D_800D4BE0[]; -extern s32 func_8014A51C(void); -extern s32 func_8015B858(u8 *a0); -extern s32 D_800D4B48; -extern void func_8015B8F8(s32 *a0); -extern void func_8015BD8C(s32 *a0); -extern s32 func_8015BE94(); -extern void func_8015BE38(struct Obj *a0); -extern s32 func_8015BE74(void); -extern void func_80161124(void *a0); -extern s32 func_8015BE94(s32 *a0); -extern s32 func_8015AE2C(); -extern s32 func_8015BEC4(void); -extern s32 func_8015B950(s32 arg0); -extern s32 func_8015BEE4(void); -extern void func_8015BF04(s32 *a0); -extern void func_8015C0C4(s32 a0); -extern void func_8015BFF4(void *a0); -extern void func_8015BF7C(s32 *a0); -extern void func_8015C030(s32 *a0, s32 a1); -extern void func_8015BFB0(s32 *a0, s32 a1); -extern void (*D_8018FA30[])(void); -extern void func_8015C0C4(s32); -extern void func_8015C08C(s32 a0); -extern s32 func_8015C128(s32 param_1); -extern void func_8015C6A4(void); -extern void func_8015C788(s32 a0); -extern void func_8015C6AC(s32 *a0); -extern void func_8015C714(void *a0); -extern void func_8015C6E0(s32 *a0); -extern void (*D_8018FA3C[])(void); -extern void func_8015C788(s32); -extern void func_8015C750(s32 a0); -extern void func_8015CB94(s32 a0); -extern void func_8015CBCC(void); -extern void func_8015CBD4(void); -extern void func_8015CBDC(void); -extern void func_8015CBE4(void); -extern void func_8015CBEC(void); -extern void func_8015CBF4(void); -extern void func_8015CBFC(void); -extern void func_8015CC04(void); -extern void func_8015CC0C(s32 *param_1); -extern void func_8015CC74(s32 *a0); -extern void func_8015CC40(s32 *a0); -extern s32 func_8015CCD0(); -extern s32 func_8015CCB0(void); -extern s32 func_801725E0(u8 *a0); -extern s32 func_8015CCD0(s32 param_1); -extern s32 func_8015CD20(s32 arg0); -extern void func_8015CF24(s32 a0); -extern void func_8015D01C(); -extern void func_8015CF58(s32 *param_1); -extern void func_8015CFC0(s32 *a0); -extern void func_8015CF8C(s32 *a0); -extern void func_8015CFFC(void); -extern void func_8015D01C(int param_1); -extern void (*D_8018F8B0[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018FAE0; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018EBC4[]; -extern void func_8015D414(int param_1); -extern void func_8015D57C(s32); -extern void func_8015D480(s32 *a0); -extern s32 func_8015D4E8(s16 *a0); -extern void func_8015D4B4(s16 *a0); -extern void func_8015D524(s32 arg0); -extern void func_8015D544(s32 a0); -extern void func_801746DC(void); -extern void func_8015D57C(s32 arg0); -extern s32 func_80161B18(void *a0); -extern s32 func_80161B84(void *a0); -extern void func_80154150(int, int); -extern void func_80149374(int, int); -extern unsigned char D_8018FAF4[]; -extern void func_8015D5E8(int param_1); -extern int func_8015E0D4(int); -extern void func_8015DA5C(s32 a0); -extern void func_8015DB6C(s32 a0); -extern void func_8015DA90(s32 *a0); -extern void func_8015DAF8(s32 *a0); -extern void func_8015DB6C(s32); -extern void func_8015DB34(s32 a0); -extern void func_8015DCB8(s32 a0); -extern void func_8014BD60(s32 a0, s32 a1); -extern int func_8015DD74(int); -extern void func_8015DBD4(void *arg0); -extern int func_8015DC84(int a0); -extern s8 D_8018FB30[]; -extern void func_8015DCB8(s32 param_1); -extern int func_8015DD74(int arg0); -extern void func_8015DECC(s32 a0); -extern void func_8015DDF0(s32 *a0); -extern void func_8015DE58(s32 *a0); -extern void func_8015DECC(s32); -extern void func_8015DE94(s32 a0); -extern void func_8015E018(s32 a0); -extern void func_8015DF34(void *arg0); -extern int func_8015DFE4(int a0); -extern void func_8015E018(s32 param_1); -extern int func_8015E0D4(int a0); -extern void func_8015E22C(s32 a0); -extern void func_8015E150(s32 *a0); -extern s32 func_8015E1B8(s32 a0); -extern void func_8015E184(s32 *arg0); -extern void func_8015E22C(s32); -extern void func_8015E1F4(s32 a0); -extern u8 D_800D4FF4[]; -extern u8 D_800D5098[]; -extern u8 D_800D5060[]; -extern s32 func_8014A850(s32 a0); -extern void func_8015E40C(s32 a0); -extern void func_8015E588(void); -extern void func_8015E4B0(s32 a0); -extern void func_8015E288(s32 a0); -extern u16 D_8018FB78; -extern u16 D_8018FB7A; -extern u16 D_8018FB7C; -extern s32 D_8018FB80; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -extern void func_8013C9C4(void *a0); -extern s32 D_8018FB88; -extern void func_8015E5B0(u8 *self); -extern void func_8015E714(s32 *a0); -extern void func_8015E95C(s32); -extern void func_8015E84C(s32 *a0); -extern void func_8015E8E8(s32 *a0); -extern void func_8015E9B8(s32 *a0); -extern void func_8015E8B4(s32 *a0); -extern void func_8015E924(s32 a0); -extern void func_8015E95C(s32 a0); -extern s16 D_801152A0; -extern void func_80160818(s32 *a0); -extern void func_8015ED6C(s32 *a0); -extern void func_8015EE7C(s32); -extern void func_8015EDA0(s32 *a0); -extern s32 func_8015EE08(s32 a0); -extern void func_8015EDD4(s32 *arg0); -extern void func_8015EE44(s32 a0); -extern int D_800D4C48; -extern int D_8018F894; -extern void func_8015EE7C(s32 param_1); -extern void func_8015EEE0(void *arg0); -extern void func_8015EF9C(void); -extern void func_8015F080(s32); -extern void func_8015EFA4(s32 *a0); -extern void func_8015F00C(s32 *a0); -extern void func_8015EFD8(s32 *a0); -extern void func_8015F048(s32 a0); -extern void func_8015F080(s32 a0); -extern s32 D_80062BE8; -extern void func_801466F0(s32, s32, s32, s32, s32, s32, s32, s32); -extern s32 func_80161208(void); -extern void func_8015F118(void *a0); -extern void func_8015F260(s32 *a0); -extern void func_8015F380(); -extern void func_8015F2BC(s32 *a0); -extern void func_8015F324(s32 *a0); -extern void func_8015F2F0(s32 *a0); -extern void func_8015F360(void); -extern s32 func_801725B8(u8 *a0); -extern void func_8015F380(void* arg0); -extern void func_8015F738(s32 *a0); -extern void func_8015F848(s32 *a0); -extern void func_8015F76C(s32 *a0); -extern s32 func_8015F7D4(s32 a0); -extern void func_8015F7A0(s32 *arg0); -extern void func_8015F810(s32 *a0); -extern void func_80147078(s32 *, s16); -extern void func_80159B70(void *); -extern void func_8015F89C(void *arg0); -extern void func_8015F948(s32 *param_1); -extern void func_8015F9A4(void *arg0); -extern void func_8015FA24(s32 arg0); -extern void func_8015FBE0(s32 *a0); -extern void func_8015FA44(s32 *a0); -extern void func_8015FAAC(s32 *a0); -extern void func_8015FA78(s32 *a0); -extern s32 func_801612B8(void *a0, s32 a1); -extern void func_8016007C(s32 a0); -extern void func_8015FAE8(void *arg0); -extern void func_8015FCC8(void *param_1); -extern unsigned int D_8018FC0C[]; -extern void func_8015FD74(int param_1); -extern s32 func_80028DE0(void); -extern u8 func_80165700(s32 a0, s32 a1); -extern void func_8015FDCC(s32 a0); -extern u8 D_80078EC2; -extern u8 func_801656E8(s32 a0, s32 a1); -extern void func_80165670(s32 a0, s32 a1); -extern void func_8016004C(s32 a0); -extern void func_8015FF20(void *param_1); -extern void func_801601AC(s32 *a0); -extern void func_801600D0(s32 *a0); -extern void func_80160138(s32 *a0); -extern void func_80160104(s32 *a0); -extern void func_80160174(s32 *a0); -extern void func_801601E4(s32 *a0); -extern void func_80160244(s32 *a0); -extern void func_8016032C(void); -extern void func_80160410(s32 *a0); -extern void func_80160334(s32 *a0); -extern void func_8016039C(s32 *a0); -extern void func_80160368(s32 *a0); -extern void func_801603D8(s32 *a0); -extern u8 D_80062BD0; -extern void func_80160410(s32 * a0); -extern void func_801607B8(s32 *a0); -extern void func_801608C0(s32 *a0); -extern void func_801607E4(s32 *a0); -extern void func_8016084C(s32 *a0); -extern void func_80160888(s32 *a0); -extern void func_80160A28(s32 a0); -extern void func_80160A74(s32 *a0); -extern void func_80160BB4(s32 *a0); -extern void func_80160ACC(s32 *a0); -extern s32 func_80160B34(s32 a0); -extern void func_80160B00(s32 *arg0); -extern void func_80160B70(s32 a0); -extern void func_80160C28(void *arg0); -extern void func_80160CB4(s32 *a0); -extern void func_80160D10(void *arg0); -extern void func_80160DEC(u8 *a0); -extern void func_80160F00(); -extern void func_80160E3C(s32 *a0); -extern void func_80160EA4(); -extern void func_80160E70(s32 *a0); -extern void (*D_8018FCBC[])(void); -extern void func_80160EA4(void *a0); -extern void func_80160EE0(void); -extern void func_80160F00(void* arg0); -extern void func_800D0F4C(s32 a0); -extern u8 D_80110EC0; -extern void func_80160F70(s32 a0); -extern void func_80160FE0(s32 *a0); -extern void func_80161034(void *a0); -extern void func_80161094(s32 a0); -extern void func_801610FC(void); -extern void func_801483E8(void); -extern s32 func_80161A60(s32 a0); -extern void func_8016130C(void *a0, s32 a1); -extern void func_80161240(void *a0); -extern void func_80161374(void *a0, s32 a1); -extern void func_80161278(void *a0); -extern s32 func_801612B8(void * a0, s32 a1); -extern void func_8016163C(void *a0, s32 a1); -extern void func_80161774(void *a0, s32 a1); -extern s32 func_8016197C(s32 a0, s32 a1); -extern s32 func_80161488(void *a0); -extern void func_80161888(void *a0, s32 a1); -extern void func_801614E4(void *a0); -extern void func_8016191C(void *a0, s32 a1); -extern void func_8016151C(void *a0); -extern void func_80161554(void *a0); -extern s32 func_801615C4(void * arg0, s32 arg1); -extern s32 func_801619A4(s32 *a0); -extern s32 func_80161A00(s32 a0); -extern s32 func_80161A30(s32 a0); -extern int func_801497A8(void); -extern int func_80161BE0(void *param_1); -extern u16 D_8018FCEC[]; -extern void func_80161C98(int param_1, u32 param_2); -extern void func_80161E08(s32); -extern s32 func_80162438(s32); -extern s32 D_800AE6A8; -extern void func_800D1734(void *); -extern s32 D_8018FD50; -extern void func_80161D88(void); -extern void func_80161E08(s32 param_1); -extern int func_800291DC(int); -extern int func_800D0E30(void *a0); -extern int func_801620C4(void); -extern s32 func_800D0D7C(s32, s32); -extern int D_801E5C00[]; -extern void func_8016216C(void); -extern s32 func_801621CC(s32 arg0); -extern void func_801622C4(void); -extern void (*D_8018FD74[])(void); -extern void func_80162330(void *a0); -extern void func_8014706C(void *a0); -extern s32 func_8016236C(u8 *a0); -extern void func_800D0C48(s32 a0); -extern s32 func_801623B8(s32 *a0); -extern s32 func_800167F0(s32 a0); -extern s32 func_80162414(void); -extern s32 func_80162438(s32 _unused0); -extern int func_801626B8(void); -extern void func_80162714(void); -extern int D_801E5C58[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018FDBC[])(void); -extern void func_80162834(void *a0); -extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80162968(s32 a0); -extern s32 func_80162ACC(u8 *a0); -extern u8 D_800B5CB8; -extern s32 D_8018FDAC; -extern s32 D_800B5CBC; -extern u8 D_800B5CDF; -extern s32 D_800B5CEC; -extern void func_80162870(s32 param_1); -extern void func_801628F4(s32 *a0); -extern void func_80162968(s32 param_1); -extern void func_80162AC0(s32 *a0, s8 a1); -extern s32 func_80162AE0(u8 *a0); -extern void func_80162AF4(void); -extern void func_80162CC4(void); -extern s32 D_80126D40; -extern void func_80162B1C(void); -extern void func_80162D28(s32 *a0); -extern void func_80162D88(s32 *a0); -extern void func_80162DE8(s32 *a0); -extern void func_80162E48(s32 *a0); -extern void func_80162EA8(s32 *a0); -extern void func_80162F60(s32 arg0, s32 arg1); -extern void func_80162F80(s32 arg0, s32 arg1); -extern void func_80162FA0(s32 arg0, s32 arg1); -extern void func_80162F08(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80162FC0(s32 *a0); -extern void func_80162FF4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801630C4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163194(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg4); -extern void func_8016325C(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163234(s32 a0); -extern s32 D_80115100; -extern s32 func_801632E0(void); -extern s32 D_80115200; -extern s32 func_801632F0(void); -extern u16 D_80126B18[]; -extern void func_80163328(void); -extern s32 func_801633A8(void); -extern s32 func_80163408(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void func_80163534(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, u16 * a5); -extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); -extern char D_801E5054[8]; -extern void *memcpy(void *dst, const void *src, unsigned int n); -extern void func_801634D8(s32 param_1, u16 param_2, u16 param_3, s32 param_4, u16 param_5); -extern void func_80157158(); -extern void func_80163664(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801636D0(s32 a0, s32 a1); -extern s32 func_8016380C(struct S8016380C *a0, s32 a1); -extern void *memcpy(void *dst, void *src, s32 n); -extern s32 func_801638A0(u8 *a0, s32 a1); -extern s32 func_80163950(s32 a0); -extern void (*D_8018FDC4[])(void); -extern void func_80163A58(void *a0); -extern void func_80163A94(s32 param_1); -extern void func_80163C2C(s32 param_1); -extern void func_80163EC8(s32 param_1); -extern void func_80164270(s32 *a0); -extern void func_80164418(void); -extern void func_80163764(s32 a0); -extern void func_801642AC(s32 a0); -extern void func_8016432C(s32 a0); -extern void func_80164410(void); -extern s32 func_80012DBC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164530(s32 arg0); -extern void (*D_8018FE18[])(void); -extern void func_80164744(s32 param_1); -extern void func_8001C810(s32 a0, s32 a1); -extern void func_80164A74(s32 *a0); -extern void func_80164930(s32 a); -extern u16 D_800DF2E0; -extern s32 D_8018FDE0; -extern s16 D_8018FE14; -extern s16 D_8018FE12; -extern s16 D_8018FE10; -extern void func_801647A4(int param_1); -extern void func_80164ACC(); -extern void func_80164864(void *a0); -extern void func_80164930(s32 param_1); -extern s32 func_8014C308(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164ACC(s32 a0); -extern void (*D_8018FE24[])(void); -extern void func_80164BA0(void *a0); -extern void func_8001CD50(s32 a0, s32 a1); -extern void func_800233CC(void *, unsigned short); -extern void func_80164DD0(s32 a0); -extern void func_80164DB0(void); -extern u8 D_801E5CB8; -extern u8 D_801E5CB9; -extern u8 D_801E5CBA; -extern u8 D_801E5CBB; -extern u8 D_801E5CBC; -extern u8 D_801E5CBD; -extern u8 D_801E5CBE; -extern u8 D_801E5CBF; -extern void func_80164BDC(s32 param_1); -extern void func_80164E40(void); -extern void func_80164CD4(u8 *a0); -extern void func_80164D4C(void *arg0); -extern void (*D_8018FE34[])(void); -extern void func_80164EA4(void *a0); -extern void func_80165124(void *a0); -extern void func_80164EE0(int param_1); -extern s32 func_80165140(s32 a0); -extern void func_801651B8(void *a0); -extern void func_80164F44(void *arg0); -extern void func_80165024(void *a0); -extern void func_80165064(s32 *a0); -extern void func_801650C4(s32 *a0); -extern s32 func_80165140(s32 param_1); -extern s32 func_80165240(s32 a0, s32 a1, s32 a2); -extern s32 D_801E5CF8; -extern void func_801651B8(void * param_1); -extern u8 D_80126CF8; -extern void func_8016533C(void); -extern void func_801653F4(s32 a0); -extern void func_80165580(s32 a0); -extern void func_80165374(s32 a0); -extern void func_80165580(s32 _arg0); -extern void func_801653B8(s32 *a0); -extern s32 func_80165624(s32 a0); -extern u8 D_80078EC5; -extern void (*D_8018FE78[])(void); -extern u8 func_80165658(s32 a0, s32 a1); -extern void func_800CAE0C(s32 a0); -extern void func_801654A8(s32 arg0); -extern void func_80165B28(void *a0); -extern void func_801655E4(s32 a0); -extern u8 D_8018FEF4[]; -extern s32 D_8018FF14[]; -extern u8 D_8018FF90[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018FFB0[]; -extern u8 D_8018FFD0[]; -extern void func_800CAF6C(void); -extern void func_80165770(void); -extern void func_801657D8(void); -extern u8 D_80078EC3; -extern void func_801657A0(void); -extern s32 D_80078EA0; -extern s32 D_80078EA8; -extern u8 D_80078EBB; -extern s32 D_80078ED4; -extern s32 D_80078ED8; -extern s32 D_80078EDC; -extern u8 D_80078EE0; -extern void func_80165874(void); -extern s8 D_80078EC4; -extern void func_801658EC(void); -extern s32 func_80165900(void); -extern s32 func_80165910(void); -extern s32 D_8012672C; -extern s32 D_8012811C; -extern s32 D_80126B08; -extern void func_80165938(void); -extern void func_80165958(void); -extern s32 func_80165978(void); -extern void func_80165988(void); -extern s32 func_801659A8(void); -extern void func_801659B8(void); -extern s32 func_801659CC(void); -extern void func_80165A18(void); -extern s32 func_80165A50(s32 _arg0); -extern void func_80165AC8(void); -extern void func_80165A78(s32 arg0); -extern void (*D_8019006C[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_801900E8[])(void); -extern void func_80165BB4(u8 *a0); -extern void func_80165B6C(u8 *a0); -extern void func_80165C58(s32 arg0); -extern void func_80165BFC(void *a0); -extern void func_80165C78(void); -extern M2C_UNK D_801E5064; -extern void func_80165E2C(u16 *arg0); -extern s32 func_80165FA4(s32 a0, s32 a1, s32 a2); -extern s32 func_80167DBC(s32 a0, s32 a1, s32 a2); -extern s32 func_80167AE0(s32 a0, s32 a1, s32 a2); -extern void func_80165E90(void); -extern void func_80020F34(s32 a0, s32 a1); -extern s32 func_80165FA4(s32 arg0, s32 arg1, s32 arg2); -extern void (*D_801900F4[])(void); -extern void func_80166018(void *a0); -extern void func_80166054(s32 arg0); -extern void func_801661CC(s32 param_1); -extern void func_80166244(void* arg0); -extern void func_8016629C(void *a0); -extern void func_801662F4(void *a0); -extern void func_8016634C(void *a0); -extern void func_801663A4(void *a0); -extern void (*D_801900FC[])(void); -extern void func_801663FC(void *a0); -extern u8 D_800D387C[]; -extern u8 D_800D3888[]; -extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); -extern void func_800D1FC8(s32 a0, s32 a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern void func_801665B4(); -extern void func_80146C3C(); -extern void func_80166438(u8 *a0); -extern s32 func_80128ED8(s32 param_1, s32 *param_2); -extern void func_800D22E4(s32 a0); -extern void func_801665B4(s32 *a0); -extern void (*D_801901C4[])(void); -extern void func_80166618(void *a0); -extern void (*D_801901D4[])(void); -extern void func_80166654(void *a0); -extern s32 func_80166690(s32 param_1, s32 param_2); -extern s32 func_80166994(); -extern s32 func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern s32 func_80167540(s32 arg0); -extern void (*D_801901E4[])(void); -extern void func_801678B4(void *a0); -extern void RotMatrixYXZ(void *a0, void *a1); -extern void func_80048EAC(void *a0, void *a1); -extern s32 func_801670E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80146C3C(void); -extern void func_801678F0(s32 a0); -extern void (*D_801901F0[])(void); -extern void func_80167A9C(void *a0); -extern void func_80167AD8(void); -extern s32 func_80167AE0(s32 param_1, s32 param_2, s32 param_3); -extern void func_80168070(s32 a0, s16 *a1, s16 *a2, void *a3); -extern u8 D_80190150[]; -extern u8 D_80190164[]; -extern s32 func_80167DBC(s32 arg0, s32 arg1, s32 arg2); -extern void func_800D20C0(void *a0, void *a1, s32 a2); -extern void func_80017E68(void *a0, void *a1); -extern void func_800D23D0(void *a0); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern s32 D_801269A4; -extern s32 D_801269A8; -extern s32 D_801269AC; -extern void func_80168070(s32 param_1, s16 *param_2, s16 *param_3, void *param_4); -extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_8016829C(s32 a0); -extern s32 func_80166690(s32 a0, s32 a1); -extern void func_80168328(s32 arg0); -extern void func_801683D8(s32 a0); -extern void func_801684B4(s32 a0); -extern void func_80168540(s32 a0); -extern void func_801685EC(s32 a0); -extern void func_80168640(s32 a0); -extern s32 RotMatrixX(s32 a0, void *a1); -extern void func_80168664(void *arg0); -extern void (*D_80190208[])(void); -extern void func_80168744(void *a0); -extern void func_80168BDC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801687CC(s32 a0); -extern void func_80168780(s32 a0); -extern void func_80168828(void); -extern void func_801687CC(s32 param_1); -extern void func_80168828(); -extern void (*D_80190210[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_80190218[])(void); -extern void func_80168AA8(void *a0); -extern void func_80168AE4(s32 a0); -extern void func_800D2318(void); -extern void func_80168BDC(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void (*D_80190220[])(void); -extern void func_80168D58(void *a0); -extern void func_80168D94(int a0); -extern void func_80168F40(); -extern void func_80168EC4(s32 a0); -extern void func_80168F40(void *arg0); -extern void (*D_80190228[])(void); -extern void func_8016901C(void *a0); -extern void func_80169058(s32 a0); -extern s32 func_80169228(void); -extern void func_801691B8(void *a0); -extern void (*D_80190230[])(void); -extern void func_801693CC(void *a0); -extern void func_80169584(s32 param_1); -extern void func_80169408(s32 a0); -extern void func_8016951C(int param_1); -extern s32 func_80017758(void *a0, void *a1); -extern s32 func_80017DC4(void *a0, void *a1); -extern void func_801696D8(s32 a0, s32 a1); -extern void (*D_80190238[])(void); -extern void func_80169830(void *a0); -extern void func_8016986C(s32 a0); -extern s32 func_80169A4C(s32 a0, s32 a1); -extern void func_801699D0(void *arg0); -extern void (*D_801902EC[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_801902F4[])(void); -extern void func_80169F00(void *a0); -extern char D_801902A4[]; -extern char D_80190264[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8019032C[])(void); -extern void func_8016A020(void *a0); -extern void func_8016A05C(void *a0); -extern void func_8016A290(s32 a, void *b, void *c); -extern void func_8016A08C(s32 param_1); -extern void func_8016A1CC(int param_1); -extern void func_8016A290(s32 param_1, void *param_2, void *param_3); -extern void (*D_80190338[])(void); -extern void func_8016A700(void *a0); -extern s32 func_8016A73C(s32 arg0); -extern s32 func_8016A8FC(s32 a0); -extern void func_8016A890(s32 arg0); -extern void func_8016AA50(s32 param_1, s32 param_2); -extern void (*D_80190380[])(void); -extern void func_8016AB30(void *a0); -extern void func_8016B234(void); -extern void func_8016AFB0(s32 a0); -extern void func_8016B114(void *arg0); -extern s32 func_8016B448(s32, s32); -extern s32 func_8016BA48(s32 a0); -extern void func_8016B3F4(s32 a0); -extern s32 func_8016B428(s32 a0); -extern void func_8016B984(void *a0); -extern s32 func_8016B448(s32 arg0, s32 arg1); -extern void (*D_801903FC[])(void); -extern void func_8016B4BC(void *a0); -extern int func_8016B9F8(int); -extern int func_8016B834(int, int); -extern void func_8016B91C(int); -extern int D_801E6018; -extern void func_8016B4F8(int param_1); -extern s32 func_8016B9F8(s32 param_1); -extern void func_8016B6BC(s32, s32, s32, s32); -extern void func_8016B91C(s32); -extern s16 D_801903F0[]; -extern void func_8016B5C0(s32 param_1); -extern void func_8001CD9C(int, void *); -extern int *D_80190434[]; -extern unsigned short D_8019043C[]; -extern unsigned short D_80190444[]; -extern unsigned char D_801E6020[]; -extern int func_8016B834(int param_1, int param_2); -extern void func_8016B964(SrcB964 *a0, DstB964 *a1); -extern void func_8016B91C(s32 arg0); -extern s32 D_801E6018; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8019044C[])(void); -extern void func_8016BBA4(void *a0); -extern s32 func_8016BBE0(s32 param_1); -extern void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3); -extern M2C_UNK D_801E6154; -extern M2C_UNK D_801E6158; -extern void func_8016BCC0(void *arg0); -extern s32 func_8016BD78(s32 param_1); -extern s32 func_8016BEA0(s32 param_1); -extern void func_8016BF34(void *a0); -extern void func_8016BFD0(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern s32 D_801E60E0; -extern void (*D_8019047C[])(void); -extern void func_8016C14C(void *a0); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801E615C[]; -extern u8 D_801E6164[]; -extern u8 D_801E6114[]; -extern void func_8016C2C4(s32 param); -extern s32 func_8016C49C(s32 param_1_arg); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_8016C74C(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern short func_8016CF04(s32 a0, s32 a1); -extern void func_8016C83C(s32 a0); -extern void (*D_80190484[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_801904A0[])(void); -extern void func_8016D19C(void *a0); -extern void (*D_801904A8[])(void); -extern void func_8016D428(void *a0); -extern void func_8016D464(u8 *a0); -extern void func_8016D4DC(s32 a0); -extern void func_8016D5EC(s32 *a0); -extern short func_8016CBC0(void); -extern void func_8016D64C(int param_1); -extern void func_8016D778(s32 a0); -extern void func_800D20C0(); -extern void func_8016D848(s32 *a0); -extern void func_8016D984(s32 *a0); -extern void func_8016DBD8(u8 *a0); -extern void (*D_80190510[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801904B4; -extern u8 D_801904C0; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void (*D_80190544[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8019054C[])(void); -extern void func_8016DF20(void *a0); -extern void func_8016E3CC(s32 a0); -extern void func_8016E1CC(s32 a0); -extern void func_8016E26C(s32 *a0); -extern void func_8016E2E8(void *a0); -extern void func_8016E460(void *a0, void *a1); -extern void func_8016E358(void *a0); -extern void func_8016E460(void *arg0, void *arg1); -extern void (*D_801905A0[])(void); -extern void func_8016E5B8(void *a0); -extern void func_8016E5F4(s32 arg0); -extern void func_8016E778(); -extern void func_8016E688(void *a0); -extern void func_8016E6E4(s32 a0); -extern void func_8016E728(u8 *a0); -extern void func_8016E7C8(int param_1, short *p1, unsigned int *p2); -extern void func_8016E778(int param_1); -extern void func_8016E7C8(int param_1, short *param_2, unsigned int *param_3); -extern s32 D_80115218; -extern void func_8016E8F0(void); -extern void func_8016E918(short param_1, short param_2); -extern s32 func_8016E95C(); -extern u16 D_801905D4[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_801905C4[]; -extern void func_8016EB3C(s32 p); -extern void func_8016EBA8(u8 *param_1); -extern void func_8016ED6C(void); -extern s32 D_80126D70; -extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); -extern void func_8016ED8C(s32 a0, s32 a1, s32 a2); -extern void func_8016EE40(s32 a0, s32 a1, s32 a2); -extern void func_8016EDBC(s32 a0, s32 a1, s32 a2); -extern void func_8016EE94(); -extern void func_8016EDEC(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_8016EF78(s32 a0); -extern void func_8016EE40(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_801726D0(void *a0); -extern s32 D_80126D50; -extern s32 D_80126D54; -extern u8 D_80126D6C; -extern u8 D_80126D6D; -extern u8 D_80126D6E; -extern s32 D_80126D5C; -extern s32 D_80126D60; -extern s16 D_80126D64; -extern s16 D_80126D66; -extern s16 D_80126D68; -extern s16 D_80126D6A; -extern u8 D_80126D1A; -extern s32 D_80127058; -extern s32 D_8012705C; -extern s32 D_80127060; -extern s32 D_80127064; -extern s32 D_80127068; -extern s32 D_8012706C; -extern s32 D_80127070; -extern s32 D_80127074; -extern s16 D_80126D20; -extern void func_8016EE94(s32 a0, s32 a1); -extern s32 func_8016EFC8(s32); -extern s32 func_8016EFA8(s32 a0); -extern void func_8016F094(s32 *a0); -extern s32 func_8016F0AC(); -extern s32 D_801905F0; -extern void func_8016F250(void); -extern void func_8016F288(void); -extern void func_8016F2A8(void); -extern void func_8016F2C8(void); -extern void func_8016F2EC(void); -extern void func_8016F30C(void); -extern void func_8016F330(void); -extern void func_8016F350(void); -extern void func_8016F374(void); -extern void func_8016F388(void); -extern void func_8016F398(void); -extern s32 func_8016F44C(s32 a0); -extern void func_8016F470(s32 a0); -extern s32 func_8016F410(s32 a0); -extern void func_80175414(s32 _arg0); -extern s32 func_8016F4C4(s32); -extern s32 func_8016F494(s32 a0); -extern void func_8016F0E4(void); -extern s32 func_8016F4C4(s32 param_1); -extern void func_8016F4F4(void); -extern void func_801719A4(int a0, int a1); -extern void func_800D1724(s32 a0); -extern void func_80171928(void *a0); -extern void *D_8011F738; -extern void func_8016F4FC(void *a0); -extern void func_8014708C(void *a0); -extern void func_8016F540(void *a0); -extern void func_8016F578(s32 *a0); -extern void func_8016F5B0(void *a0); -extern void func_80147060(u8 *a0); -extern void func_8016F5E0(u8 *a0); -extern void func_8016F610(void *a0); -extern void func_8016F648(void *a0); -extern void func_8016F680(void *a0); -extern void func_8016F6B0(void *a0); -extern void (*D_80190668[])(void); -extern void func_8016F6E0(void *a0); -extern s32 func_80171990(u8 *a0); -extern void func_8016F764(void *a0); -extern void func_8016F71C(u8 *a0); -extern void (*D_80190670[])(void); -extern void func_8016F798(void *a0); -extern void func_8016F804(void *a0); -extern void func_8016F7D4(u8 *a0); -extern void func_80171928(void *); -extern void (*D_80190678[])(void); -extern void func_8016F834(void *a0); -extern void func_8016F8AC(u8 *a0); -extern void func_8016F870(u8 *a0); -extern void func_80172358(u8 *a0, u8 *a1); -extern void (*D_80190680[])(void); -extern void func_8016F8E4(void *a0); -extern void func_8016F95C(void *a0); -extern void func_8016F920(u8 *a0); -extern s32 func_80171CC4(void *a0, void *a1); -extern s32 func_80171D1C(void *a0, void *a1, s32 a2); -extern u16 D_8011F73E; -extern void (*D_80190688[])(void); -extern void func_8016F9C4(void *a0); -extern void func_80171B44(s32 *a0); -extern void func_8016FA44(s32 a0); -extern void func_8016FA00(s32 a0); -extern s32 func_80171C64(s32 a0, s32 a1); -extern void (*D_80190690[])(void); -extern void func_8016FA84(void *a0); -extern void func_8016FB10(void *a0); -extern void func_8016FAC0(u8 *a0); -extern void func_8016FB50(void *a0); -extern void (*D_8019069C[])(void); -extern void func_8016FB7C(void *a0); -extern void func_8016FC24(); -extern void func_8016FBB8(s32 a0); -extern s32 func_80171B4C(s32 a0, s32 a1); -extern void func_8016FC24(s32 a0); -extern void func_8016FC64(void *a0); -extern void (*D_801906A8[])(void); -extern void func_8016FC90(void *a0); -extern void func_8016FD08(u8 *a0); -extern void func_8016FCCC(u8 *a0); -extern s32 func_80172658(s32 *a0); -extern void func_8016FD08(u8 *s0); -extern void func_8016FD7C(s32 *a0); -extern void (*D_801906B4[])(void); -extern void func_8016FDB4(void *a0); -extern void func_8016FE2C(u8 *a0); -extern void func_8016FDF0(u8 *a0); -extern void func_8016FE2C(u8 * a0); -extern s32 func_8016FE78(s32 *a0); -extern s32 func_80172664(s32 *a0); -extern void func_8016FED0(s32 *a0); -extern void (*D_801906C4[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_801906D4[])(void); -extern void func_8016FFDC(void *a0); -extern void func_80170068(u8 *a0); -extern void func_80170018(u8 *a0); -extern void func_801700B8(u8 *a0); -extern void func_80170100(u8 *a0); -extern void (*D_801906DC[])(void); -extern void func_80170150(void *a0); -extern void func_801701C8(u8 *a0); -extern void func_8017018C(u8 *a0); -extern void func_801701C8(u8 * a0); -extern void (*D_801906E4[])(void); -extern void func_80170240(void *a0); -extern void func_801702B8(s32 a0); -extern void func_8017027C(u8 *a0); -extern s16 func_80171AB0(s32 a0, void *a1); -extern void (*D_801906EC[])(void); -extern void func_801702FC(void *a0); -extern void func_80170374(u8 *a0); -extern void func_80170338(u8 *a0); -extern s32 func_8014C168(s32 *a0, s32 a1); -extern void func_80170374(u8 * a0); -extern void (*D_801906F4[])(void); -extern void func_801703E0(void *a0); -extern void func_8017044C(u8 *a0); -extern void func_8017041C(u8 *a0); -extern void func_8017044C(u8 * a0); -extern void (*D_801906FC[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_80190704[])(void); -extern void func_80170548(void *a0); -extern void func_801705C0(u8 *a0); -extern void func_80170584(u8 *a0); -extern void func_801705C0(u8 * a0); -extern void (*D_8019070C[])(void); -extern void func_801705F8(void *a0); -extern void func_80170670(void *a0); -extern void func_80170634(u8 *a0); -extern void func_8012A568(void (*a0)(void)); -extern void (*D_80190714[])(void); -extern void func_801706AC(void *a0); -extern void func_80170718(void *a0); -extern void func_801706E8(u8 *a0); -extern void func_80129FF4(void); -extern void (*D_8019071C[])(void); -extern void func_80170748(void *a0); -extern void func_801707D4(void *a0); -extern void func_80170784(u8 *a0); -extern s32 func_80174ED4(void); -extern void (*D_80190724[])(void); -extern void func_80170810(void *a0); -extern void func_801708B0(void *a0); -extern u8 D_800D5DA8; -extern void func_8017084C(s32 a0); -extern u8 D_800D5A34[]; -extern void func_80170AD8(void *a0); -extern void func_80171904(s32 a0); -extern void func_80170B48(int a0); -extern void func_80170928(void); -extern u8 D_800D59EC[]; -extern void func_80170970(void); -extern u8 D_800D599C[]; -extern void func_801709B8(void); -extern u8 D_800D5934[]; -extern void func_80170A00(void); -extern void func_80170A48(void); -extern u8 D_800D5DC0[]; -extern void func_80170A90(void); -extern void (*D_8019072C[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_80190734[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8019073C[])(void); -extern void func_80170C74(void *a0); -extern s32 func_8017197C(u8 *a0); -extern void func_80170CF0(void *a0); -extern void func_80170CB0(u8 *a0); -extern void (*D_80190744[])(void); -extern void func_80170D68(void *a0); -extern void func_80170DE0(u8 *a0); -extern void func_80170DA4(u8 *a0); -extern s32 D_8011F73C; -extern s32 D_8011F740; -extern void func_801718AC(void *a0); -extern void func_80170DE0(u8 * _arg0); -extern void (*D_8019074C[])(void); -extern void func_80170E34(void *a0); -extern void func_80170EAC(u8 *a0); -extern void func_80170E70(u8 *a0); -extern int func_800D0F8C(int a0); -extern void func_80170EAC(u8 * _arg0); -extern void (*D_80190754[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8019075C[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_80190764[])(void); -extern void func_80171064(void *a0); -extern void func_801710DC(u8 *a0); -extern void func_801710A0(u8 *a0); -extern u16 D_8011F73A; -extern void func_801710DC(u8 * arg0); -extern void (*D_8019076C[])(void); -extern void func_80171120(void *a0); -extern void func_8017118C(u8 *a0); -extern void func_8017115C(u8 *a0); -extern void func_80142454(s32 a0); -extern void func_8017118C(u8 * a0); -extern void (*D_80190774[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8019077C[])(void); -extern void func_80171260(void *a0); -extern s32 func_80012F74(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80171384(void *a0); -extern void (*D_80190784[])(void); -extern void func_801714E4(void *a0); -extern void func_8017162C(void *a0); -extern void func_80171520(s32 a0); -extern s32 func_801716AC(s32 a0, void *a1, s32 *a2); -extern s32 func_80012FC8(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_800A5E94; -extern u8 D_800A5E95; -extern u8 D_800A5E96; -extern s32 func_801716AC(s32 a0, void * a1, s32 * a2); -extern int func_800D0FE0(int a0); -extern void func_801717A0(void *a0); -extern void func_8013E588(void *a0); -extern void func_801717F4(void *a0); -extern void func_80171824(void *a0); -extern void func_80171854(void *a0); -extern void func_80171884(void); -extern void func_80171A1C(u8 *a0); -extern void func_80171928(void * a0); -extern void func_8017196C(s32 *a0, s8 a1); -extern void func_80171A04(s32 *a0); -extern void func_80171A10(s32 *a0); -extern void func_80171A34(s32 *a0, s8 a1); -extern s32 func_80171A44(u8 *a0); -extern s32 func_80171A58(u8 *a0); -extern s32 func_80171A6C(u8 *a0); -extern void func_80171A80(s32 *a0, s32 a1); -extern s32 func_80171A88(s32 a0); -extern s16 func_80171AB0(s32 param_1, void * _arg1); -extern void func_80171B10(void *a0); -extern void func_80171EC8(s32 a0); -extern s32 func_80171C64(s32 param_1, s32 param_2); -extern s32 func_80171D78(s32 a0, s32 a1); -extern int func_8017250C(short *a0, short *a1); -extern s32 func_80171CC4(void * a0, void * a1); -extern s32 func_80171FFC(short *a0, short *a1, s32 a2); -extern s32 func_80171D1C(void * a0, void * a1, s32 a2); -extern s32 func_8017248C(s32 a0, s32 a1); -extern s32 func_80171E08(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_80047948(s32 a0); -extern s32 func_8004787C(s32 a0); -extern void func_80172170(s32 a0, s32 a1); -extern s32 func_8017209C(void *arg0, void *arg1, s32 arg2, s32 arg3); -extern void func_801722CC(s32 *a0); -extern void func_80172304(s32 *a0); -extern void func_80172310(u8 *a0); -extern void func_801723C4(s32 param_1, s32 param_2); -extern void func_80161C24(s32, s32); -extern void func_80172414(s32 a0); -extern s32 func_801724EC(s32 a0); -extern s32 func_8017248C(s32 arg0, s32 arg1); -extern s32 func_80013450(s32); -extern s32 func_80172560(u8 *a0, u8 *a1); -extern s32 func_8017261C(u8 *a0); -extern s32 func_80172644(u8 *a0); -extern s32 func_80172670(s32 *a0); -extern s32 func_80172688(s32 *a0); -extern s32 func_80172694(s32 *a0); -extern s32 func_801726A0(s32 *a0); -extern s32 func_801726AC(s32 *a0); -extern s32 func_801726B8(s32 *a0); -extern s32 func_801726C4(s32 *a0); -extern s32 func_80172760(s32 a0); -extern s32 func_80174650(s32); -extern void (*D_80127088)(void); -extern s32 D_801270BC; -extern s16 D_80126B0C; -extern void func_801726D0(void * _arg0); -extern void func_80172710(void); -extern void func_80174684(void *); -extern void func_80172738(void); -extern s16 D_80126B30; -extern s32 func_801727D0(void *a0); -extern void func_80172780(void *a0); -extern void func_80172844(u8 *a0); -extern void func_8017280C(u8 *a0); -extern void func_8017288C(void); -extern s32 func_801728E4(void *a0); -extern void func_80172894(void *a0); -extern void func_80172958(u8 *a0); -extern void func_80172920(u8 *a0); -extern s16 D_80126B36; -extern void func_80172958(u8 * a0); -extern void func_801729A8(void); -extern s32 func_801729F0(void *a0); -extern s16 D_80126B34; -extern s16 D_80126B32; -extern void func_801729B0(s32 a0); -extern void func_80172A8C(void *a0); -extern void func_80172A2C(int param_1); -extern void func_80172ACC(u8 *a0); -extern void func_80172B0C(void); -extern s32 func_80172B44(void *a0); -extern void func_80172B14(s16 a0); -extern s32 D_801150F8; -extern void func_80172BC8(void *a0); -extern void func_80172B80(u8 *a0); -extern void func_80172C48(void); -extern void (*D_801907C8[])(void); -extern void func_80172CA0(void *a0); -extern void func_80172D14(u8 *a0); -extern void func_80172CDC(u8 *a0); -extern void func_80172D14(u8 * a0); -extern void func_80172D60(void); -extern s32 D_80127508; -extern s32 func_80172DAC(void *a0); -extern void func_80172D68(s32 a0); -extern void func_80172E20(u8 *a0); -extern void func_80172DE8(u8 *a0); -extern void func_80172E20(u8 * a0); -extern void func_80172E8C(void); -extern void func_8017303C(void *); -extern void func_80172E94(void); -extern void func_80172ED4(void); -extern void func_80172EFC(void); -extern void func_80172F24(void); -extern u8 D_800D47F4[]; -extern void func_80172F4C(void); -extern void func_80172F9C(void); -extern u8 D_800D5C6C[]; -extern void func_80172FEC(void); -extern s32 func_80173078(void *a0); -extern void func_8017303C(void * a0); -extern void func_801730FC(struct S801730FC *a0); -extern void func_801730B4(s32 a0); -extern void func_8017316C(void); -extern s32 func_8017319C(void *a0); -extern void func_80173174(void); -extern u8 D_800D5AA0[]; -extern void func_80173220(void *a0); -extern void func_801731D8(s32 *a0); -extern M2C_UNK D_8019078C; -extern void func_80173220(void * arg0); -extern void func_80173294(void); -extern void func_801732C4(); -extern void func_8017329C(void); -extern void func_801732C4(s32 *a0); -extern void func_8017331C(); -extern void func_801732F4(void); -extern void func_8017331C(s32 *a0); -extern void func_80173374(); -extern void func_8017334C(void); -extern void func_80173374(s32 *a0); -extern void func_801733A4(void); -extern void func_801733CC(s32 a0); -extern void func_801734BC(s32 a0, s32 a1); -extern s16 D_80126B3E; -extern void func_80173460(s32 a0, s32 a1); -extern void func_801734BC(s32 arg0, s32 _unused1); -extern void (*D_801907F8[])(void); -extern void func_80173544(void *a0); -extern void func_801735B8(u8 *a0); -extern void func_80173580(u8 *a0); -extern s16 D_80126B40; -extern void func_801735EC(void *a0); -extern void func_80173648(u8 *a0); -extern void func_801736A8(void); -extern s32 func_8014C118(void *a0, s32 a1, s32 a2); -extern s32 func_801736FC(void *a0); -extern void func_801736B0(s32 a0, s32 a1); -extern void func_80173770(u8 *a0); -extern void func_80173738(u8 *a0); -extern void func_801723C4(s32 a0, s32 a1); -extern void func_801737B0(void); -extern s32 func_801737E8(void *a0); -extern void func_801737B8(s16 a0); -extern void func_8017385C(u8 *a0); -extern void func_80173824(u8 *a0); -extern void func_801738D4(void); -extern s32 func_8017390C(void *a0); -extern void func_801738DC(s16 a0); -extern void func_80173980(u8 *a0); -extern void func_80173948(u8 *a0); -extern void func_801739D8(u8 *a0); -extern void func_80173A20(void); -extern s32 D_8012750C; -extern void func_80173A60(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80173A28(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void (*D_80190834[])(void); -extern void func_80173B4C(void *a0); -extern void func_80173BC0(u8 *a0); -extern void func_80173B88(u8 *a0); -extern void func_80173C64(u8 *a0); -extern void func_80173E1C(s32 a0); -extern s16 D_80126938; -extern s16 D_80126B3A; -extern void func_800D128C(s32, s32); -extern void func_80174158(s32 a0); -extern void func_8002A088(s32); -extern void func_8002A2D4(s32); -extern void func_8002A544(s32); -extern void func_8002A7B4(s32); -extern s32 func_80174188(s32 a0); -extern void func_801741A8(s32 a0); -extern s32 func_800D0EC4(void); -extern void func_800D0F0C(s32, s32); -extern void func_80145EE8(s32); -extern void func_80173EF8(void *param_1); -extern s32 func_8014BCEC(s32, s32); -extern void func_801741A8(s32 _arg0); -extern s16 D_80126B3C; -extern s16 D_8011F9C8; -extern void func_801741EC(u8 *a0); -extern void func_80174274(void); -extern s32 func_801742A4(void *a0); -extern void func_8017427C(void); -extern void func_80174318(u8 *a0); -extern void func_801742E0(u8 *a0); -extern void func_80174354(void); -extern s32 func_80174384(void *a0); -extern void func_8017435C(void); -extern void func_801743F0(u8 *a0); -extern void func_801743C0(u8 *a0); -extern void func_801743F0(u8 * a0); -extern void func_80174430(void); -extern s32 func_80174474(void *a0); -extern void func_80174438(s32 a0); -extern void func_801744E0(u8 *a0); -extern void func_801744B0(u8 *a0); -extern void func_80174524(void); -extern void func_80174554(); -extern void func_8017452C(void); -extern void func_80174554(s32 arg0); -extern void func_801745AC(); -extern void func_80174584(void); -extern void func_801745AC(s32 *a0); -extern void func_80174604(void); -extern void func_801745DC(void); -extern void func_80174630(void); -extern s32 func_80174650(s32 _arg0); -extern void func_80174674(void); -extern void func_801746A4(void); -extern s32 func_800CF8CC(void); -extern void func_80174714(void); -extern s32 func_80174754(void); -extern s16 func_80174764(void); -extern s16 func_80174774(void); -extern s32 func_801747CC(void *a0); -extern void func_80174784(void); -extern s32 func_801747AC(s32 a0); -extern s32 func_80174808(u8 *a0); -extern void func_8017481C(void); -extern s32 func_80174888(void *a0); -extern void func_80174824(void); -extern void func_8017484C(s32 a0); -extern void func_801748C4(s32 a0); -extern void func_801748E4(void); -extern void func_8012A018(s32 a, s32 b); -extern s32 func_8017496C(void *a0); -extern void func_801748EC(void); -extern s32 func_801749C8(); -extern s32 func_801749A8(s32 a0); -extern void func_80174BBC(void *a0); -extern void func_8012A0E0(void); -extern void func_80174BF4(void *a0); -extern void (*D_8019088C[])(); -extern void func_80174BF4(void * arg0); -extern s32 func_80174CB0(s32, s32); -extern s32 func_80174C60(s32 a0); -extern void func_80174C80(s32 a0); -extern s32 D_8012697C; -extern u16 D_80126980; -extern s32 func_80174F28(void *a0); -extern void func_80174E9C(s32 a0); -extern void func_80174EF0(s32 a0, s16 a1); -extern s32 func_80175014(u8 *a0, u8 *a1, s32 a2); -extern void func_80174F64(u8 *a0); -extern void func_80174FBC(u8 *a0); -extern s32 func_8017509C(u8 *a0, s32 a1, u8 *a2, u8 *a3); -extern void func_80175184(s32 *a0); -extern void func_80175114(s32 *a0); -extern void func_80175184(); -extern void func_80175150(s32 *a0); -extern void (*D_8019089C[])(void*); -extern s32 func_80175268(s32); -extern void func_80175184(s32* arg0); -extern s32 func_80175218(void *a0); -extern void func_801751D8(void *a0); -extern void (*D_801908A4[])(s32); -extern s32 func_80175218(void * param_1); -extern void func_801752BC(s32 *a0); -extern u8 D_8011F7A8; -extern u8 D_8011F7A9; -extern u8 D_8011F7AD; -extern u8 D_8011F7AE; -extern void func_80175494(void); -extern void (*D_80190A0C[])(); -extern s32 func_801758FC(void); -extern s32 func_80175820(void); -extern s32 func_801759D8(void); -extern void func_8017553C(s32 *param); -extern void func_801757A0(s32 a0); -extern short D_800B9A02; -extern void func_80175590(void *arg0); -extern s16 D_800B9A02; -extern void func_801757A0(s32); -extern void func_80175624(void *a0); -extern void func_801757E0(int); -extern void func_80175668(void); -extern void (*D_80190A18[])(); -extern void func_80175690(s32 *param); -extern void func_80175DA8(s32 a0); -extern void func_80175AB8(s32 a0); -extern void func_80176144(s32 a0); -extern void func_801756E4(s32 arg0); -extern void func_80175798(void); -extern void func_80176734(s32 a0); -extern void func_80176218(s32 a0); -extern void func_80176D00(s32 a0); -extern void func_801757E0(s32 a0); -extern s32 func_80178004(s32 a0, s32 a1, s32 a2); -extern u8 D_8011F7B1; -extern u16 D_8011F7B4; -extern u16 D_8011F7B6; -extern s16 D_8011F81E; -extern void *func_80177784(void *a0, s32 a1, s32 a2, s32 a3); -extern u32 func_801783D0(s32 a0, s32 a1); -extern void *func_801777BC(void *a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern u16 D_8011F82C; -extern u16 D_8011F82A; -extern u32 * func_80176D94(void *param_1, u32 param_2, s16 param_3_); -extern void func_801778A8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80176FF4(s32 a0); -extern u16 D_8011F830; -extern u16 D_8011F82E; -extern u32 * func_801770E0(void *param_1, u32 param_2, s16 param_3_); -extern void func_80177340(s32 a0); -extern u8 D_8011F837; -extern u8 D_8011F7F0; -extern u8 D_8011F7AB; -extern u32 * func_8017742C(u32 *param_1, s32 param_2, s32 param_3); -extern void func_801776EC(u8 *a0); -extern void * func_80177784(void *a0, s32 a1, s32 a2, s32 a3); -extern uint * func_80177EA4(uint *param_1, int param_2, uint param_3, int param_4); -extern void func_80177F84(s32 param_1, s32 param_2); -extern u32 * func_80178298(u32 *param_1, u8 *param_2, short param_3, short param_4); -extern M2C_UNK D_801E52AC; -extern void func_80178438(u16 *arg0); -extern void func_801787D4(void); -extern void func_8012A908(void); -extern void func_8017869C(s32 a0); -extern void func_80130D0C(s32 a0); -extern void func_8013E370(void); -extern s32 D_8011DB08; -extern void func_8017849C(void); -extern void func_8013E4B4(void); -extern s16 D_801270C4; -extern s32 D_801274D8; -extern s16 D_801270C2; -extern u8 D_801270C6; -extern u8 D_801270C7; -extern s32 D_801274DC; -extern s32 D_801274E0; -extern void func_80178608(void); -extern void func_80178744(s32 a0, s32 a1); -extern void func_80178840(); -extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern s32 func_801788B8(s32 arg0, s32 arg1); -extern s32 func_801789AC(s32 arg0); -extern s16 D_801E7AB0; -extern int func_80178970(void); -extern s32 func_80178B18(s32 param_1, s32 param_2); -extern s32 func_80178B70(s32 param_1, s32 param_2); -extern void func_80178BB8(s32 a0, s32 a1); -extern s32 func_80178BF8(); -extern s32 D_801E6898; -extern short D_801E7B24; -extern void func_80178CBC(s32 arg0, s32 arg1); -extern void func_80178D18(void); -extern s32 func_80178D40(s32 arg0, s32 arg1); -extern void func_80179B28(s32 a0); -extern void func_80179B74(u16 *p); -extern void func_80179D30(u16 *a0); -extern void func_80179D78(u16 *a0); -extern void func_80179DCC(short a0); -extern void func_80179DF8(void); -extern void func_80179E1C(short a0); -extern void func_80179E48(s16 a0); -extern void func_80179E74(s16 a0); -extern void func_80179EA0(u16 *a0); -extern void func_80179EE8(short a0); -extern void func_80179F14(s16 a0, s16 a1); -extern void func_80179F44(void); -extern void func_80179F6C(short a0); -extern void func_80179F98(u16 *a0); -extern void func_80179FEC(u16 *a0); -extern void func_8017A040(u16 *a0); -extern s32 D_801E6CC4; -extern void func_8017A094(s32 arg0); -extern void func_8017A0C4(s32 arg0); -extern void func_8017A0F4(void); -extern void func_8017A11C(void); -extern s32 D_801E6CEC; -extern void func_8017A144(s32 a0); -extern void func_8017A180(void); -extern void func_8017A1A8(void); -extern void func_8017A1D0(void); -extern void func_8017A1F8(void); -extern void func_8017A220(void); -extern void func_8017A248(void); -extern void func_8017A270(void); -extern void func_8017A298(void); -extern void func_8017A2C0(void); -extern void func_8017A2E8(void); -extern void func_8017A310(void); -extern void func_8017A338(void); -extern void func_8017A360(void); -extern void func_8017A388(void); -extern s16 D_801E6CA8; -extern s32 func_8017A3B0(void); -extern short D_801E6CE4; -extern short D_801E6CE0; -extern int func_800D0CA0(int); -extern int func_8001AAA0(void); -extern int func_800D0CE0(void); -extern int func_8017A3D8(void); -extern void func_80172310(u8*); -extern void func_80172780(void*); -extern void func_80172894(void*); -extern void func_801729B0(s32); -extern void func_80172B14(s16); -extern void func_80172C50(u16 *); -extern void func_80172D68(s32); -extern void func_801733FC(s16, u16 *); -extern void func_80173460(s32, s32); -extern void func_801734BC(s32, s32); -extern void func_801736B0(s32, s32); -extern void func_801737B8(s16); -extern void func_801738DC(s16); -extern void func_80173A28(s32, s32, s32, s32, s32, s32); -extern void func_80174438(s32); -extern void func_8017A4AC(void); -extern s32 func_8017AD0C(s32 arg0); -extern s32 func_8017AD0C(s32); -extern s32 func_8017ADE8(s32 a0); -extern s32 func_8017AE08(void); -extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); -extern void func_8012B178(s32 a0, s32 a1); -extern void func_8012AD80(s32 a0); -extern s32 func_8012B030(u8 *a0); -extern s32 func_8012B744(void *a0, void *a1); -extern s32 func_8012BE98(s32 a0, u16 *a1); -extern s16 D_801E7A68; -extern s16 D_801E7A6A; -extern s16 D_801E7A74; -extern void func_8017AE2C(s32 param_1); -extern void func_8017B0E4(int param_1, int param_2); -extern s16 D_801E6CAC; -extern u16 D_801E6D2C; -extern u16 D_801E6D2E; -extern u16 D_801E6D30; -extern void func_8017B1D8(void); -extern s32 func_8017B238(s32 param_1, s32 param_2); -extern s32 func_8017B368(s32 param); -extern s32 func_8017B490(s32 param); -extern s32 func_8017B614(s32 param_1, s32 param_2); -extern s32 D_80114F30; -extern s32 D_80114F34; -extern s32 D_80114F38; -extern s32 D_80114F24; -extern s32 D_80114F28; -extern s32 D_80114F2C; -extern u8 D_8012694C; -extern s16 D_801E6D24; -extern s16 D_801E6D26; -extern s16 D_801E6D28; -extern s16 D_801E6D1C; -extern s16 D_801E6D1E; -extern s16 D_801E6D20; -extern void func_8017B7A8(void); -extern s16 D_801E6D3C; -extern s16 D_801E6D3E; -extern s16 D_801E6D40; -extern s16 D_801E6D44; -extern s16 D_801E6D46; -extern s16 D_801E6D48; -extern void func_8017B824(void); -extern void func_8017B880(void); -extern s32 func_8017B8E8(s32 src); -extern short D_801E6D34; -extern short D_801E6D36; -extern short D_801E6D38; -extern void func_8017B940(void); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void RotTransSV(void *a0, void *a1, void *a2); -extern SV4 D_801E6CCC; -extern SV4 D_801E6CD4; -extern void func_8017BA3C(s32 param_1, s32 param_2); -extern s32 func_8017BB34(s32 param_1, s32 param_2); -extern void (*D_801E6CF4[10])(int); -extern void func_8017BC38(int param_1); -extern void func_8017B0E4(int, int); -extern void func_8017BCA0(int param_1); -extern void func_8012A4BC(void); -extern void func_8017BCF4(int param_1); -extern void (*D_801E6CF0)(void); -extern void func_8017BD50(int param_1); -extern void (*D_80190BF4[])(void); -extern void func_8017BE60(void *a0); -extern void (*D_80190C94[])(void); -extern void func_8017BE9C(void *a0); -extern void (*D_80190C9C[])(void); -extern void func_8017BED8(void *a0); -extern void (*D_80190CA4[])(void); -extern void func_8017BF14(void *a0); -extern u8 *func_8012913C(s32 a0); -extern s32 func_8012C750(s32 a0); -extern void func_8017BF50(s32 a0); -extern void func_8017C094(void); -extern void func_8017C100(s32 param_1); -extern void func_8017C1AC(s32 param_1); -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8012A828(s32*, s32); -extern void func_8012B260(u8 *a0); -extern void func_8017C1EC(s32 a0); -extern void func_8017C2B0(s32 a0); -extern void (*D_80190CC4[])(void); -extern void func_8017C338(void *a0); -extern s32 func_800D222C(s32 a0, void *a1, s32 a2); -extern s32 func_8001CF30(void *a0); -extern void func_8017C374(s32 param_1); -extern void func_8017C538(u8 *p); -extern void (*D_80190CCC[])(void); -extern void func_8017C5CC(void *a0); -extern u8 D_80190CB8; -extern void func_8017C608(s32 a0); -extern void func_8017C6AC(int a0); -extern void func_8017C710(s32 arg0); -extern void (*D_80190CE4[])(void); -extern void func_8017D5F0(void *a0); -extern void func_8001C214(s32, s32); -extern u32 D_80190CD4; -extern void func_8017D62C(s32 arg0); -extern void func_8017D6A8(void); -extern void (*D_80190D1C[])(void); -extern void func_8017D6B0(s32 *param_1); -extern void func_8017DA08(void *arg0); -extern s32 func_8012AD50(void *arg0); -extern void func_8017D6EC(void *arg0); -extern void func_8012AD44(s32 *a0, s16 a1); -extern void func_8017D9B8(void); -extern void func_8017DAC4(void *arg0); -extern void aF8017D77C(); -extern void func_80017714(void *); -extern void func_8013CB84(void); -extern void func_8017DC0C(void); -extern void func_800D06E8(void); -extern void func_8017DBDC(void); -extern u32 D_801E6FE8; -extern u16 D_80190D24[]; -extern u16 D_801E6FEC[]; -extern s32 D_80190D44; -extern void func_8017E038(void *arg0); -extern s32 func_8017DC98(s32 param_1); -extern s32 func_8017DCE8(void); -extern void func_800D1E28(void); -extern s32 func_800D1D94(void); -extern void func_8001BFD0(void); -extern s32 func_8017DD7C(s32 a0); -extern void func_800D1EBC(void); -extern void func_8017DE2C(void); -extern s32 func_8017DE4C(void *a0); -extern void func_8002D4C8(s32, s32); -extern s32 func_800291B4(s32); -extern s32 func_80029524(void); -extern void func_800D0C48(s32); -extern s32 func_8017DEA0(s32 param_1); -extern void (*D_80190D64[])(void); -extern void func_8017DF34(void *a0); -extern void (*D_80190D6C[])(void); -extern void func_8017DF70(void *a0); -extern void (*D_80190D78[])(void); -extern void func_8017DFAC(void *a0); -extern void (*D_80190D84[])(void); -extern void func_8017DFE8(void *a0); -extern s32 D_80127050; -extern void func_8017E024(void); -extern void (*D_80191060[])(void); -extern void func_8017E038(void *a0); -extern void func_8017E074(void *a0); -extern void func_8017E088(void *a0); -extern void (*D_80191068[])(void); -extern void func_8017E0C0(void *a0); -extern void func_8017E0FC(u8 *a0); -extern void func_8017E110(void); -extern void func_8012A094(s32 a0); -extern void func_8017E1F4(void *a0); -extern void func_8017E130(void); -extern void (*D_80191070[])(void); -extern void func_8017E26C(s32 *a0, s32 a1); -extern void func_8017E3AC(s32 a0); -extern void func_8017E230(s32 *a0); -extern void func_8017E264(void *a0); -extern void aF8017E26C(); -extern s32 func_80012ABC(s32 a0, s32 a1, s32 a2); -extern void func_8017E3AC(s32 param_1); -extern void func_80184CB8(s32*, s32); -extern void func_8017E5A0(void * arg0); -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 short D_80191074; -extern short D_801B99A8; -extern void func_8017E5CC(void *arg0); -extern void (*D_801912A8[])(void); -extern void func_8017E760(void *a0); -extern void func_8017E79C(short *a0); -extern void (*D_801912C8[])(void); -extern void func_8017E810(void *a0); -extern void func_80178CBC(s32 a0, s32 a1); -extern void func_8017E84C(void * arg0); -extern void func_8017E878(void * arg0); -extern void func_8012C588(s32, s32); -extern void func_8017E99C(void); -extern s32 func_80184BAC(s32 arg0, s32 arg1); -extern void func_8017E5A0(void *arg0); -extern void func_8017E9C0(void *arg0); -extern void func_8017EAAC(void * arg0); -extern s32 func_8012BEE8(s32 a0); -extern void func_8017E79C(short*); -extern void func_8017EBA0(s32 a0); -extern void func_8017E7CC(); -extern void func_8017EBE0(u8 *a0); -extern void func_8017F02C(void * arg0); -extern void (*D_8019155C[])(void); -extern void func_8017F058(void *a0); -extern void func_8017F094(void * arg0); -extern s32 func_8017F0C0(void); -extern void func_80029124(s32 arg0, s32 arg1); -extern void func_8017F108(void); -extern void func_8017F174(void); -extern void func_80029514(int); -extern void func_8017F1A8(void); -extern void func_8017F28C(void * arg0); -extern void (*D_801916E4[])(void); -extern void func_8017F5BC(void *a0); -extern void func_80178CBC(s32, s32); -extern void func_8017F5F8(void *a0); -extern void func_8017F6D8(void *a0); -extern void func_8017F7B8(void *a0); -extern void func_8017F898(void *a0); -extern void func_80029124(s32 a, s32 b); -extern void func_8017FA34(void); -extern s32 func_80184BD0(u8 a0, u8 a1, u8 a2, u8 a3); -extern void func_8017F500(void *a0); -extern void func_8017FA58(void *a0); -extern void func_80184CB8(s32 *a0, s32 a1); -extern s16 D_80191570; -extern void func_8017FAAC(void *a0); -extern s32 func_80184FA4(void); -extern s32 func_80185BE0(s32 arg0); -extern u8 D_801E3978[]; -extern void func_8017F564(); -extern void func_80184ED4(s32, s32, s32, s32); -extern void func_8017FB0C(void *a0); -extern void func_8017FCD8(void * arg0); -extern void func_8017FD28(s32 arg0); -extern void func_8017FD88(void *arg0); -extern void (*D_80191814[])(void); -extern void func_8017FF34(void *a0); -extern void (*D_801918E4[])(void); -extern void func_801800E0(void *a0); -extern s32 func_8018011C(void); -extern void func_800D1724(s32); -extern void func_80180134(void); -extern void func_8018015C(void); -extern void func_80180164(void * arg0); -extern void func_80180190(void * arg0); -extern void func_8012A828(s32 *a0, s32 a1); /* fleet-canonical sig (TU L3775) */ -extern void func_8018034C(void *arg0); -extern void func_80185FB8(s32, s32, s32); -extern s32 D_801B9DF8; -extern short D_801B65C8; -extern void func_801803BC(void *arg0); -extern void func_8012E88C(s32 a0); -extern void func_80184C90(s32 a0); -extern void func_80184ED4(s32 a0, s32 a1, s32 a2, s32 a3); -extern short D_801B65B8; -extern void func_8018042C(s32 a0); -extern void (*D_801919C4[])(void); -extern void func_8018048C(void *a0); -extern s32 func_80184DD0(s32 a0); -extern void func_80180504(s32 a0); -extern s32 func_80180544(void); -extern void func_80180580(void *arg0); -extern s32 func_8012BD14(s32 a0); -extern s32 func_80180814(void *a0); -extern void func_80180888(void *arg0); -extern void func_801808FC(void *a0); -extern void func_80180954(void *arg0); -extern void func_801809DC(short *a0); -extern void (*D_80191A80[])(void); -extern void func_80180B6C(void *a0); -extern s32 func_8018203C(s32 a0); -extern short D_801919E8; -extern short D_801B9B50; -extern void func_80180BA8(void *a0); -extern void func_80180C0C(void * arg0); -extern s32 func_801848DC(void); -extern s32 func_8018625C(void *); -extern s32 func_80178BF8(void); -extern s32 func_80180CC0(void *a0); -extern s32 func_80178BF8(); /* TU-canonical (ov_SC04_018_jr_8017AE2C.c L2541) */ -extern s16 D_801E7010; -extern s16 D_801E7012; -extern s32 func_80180D38(void *a0); -extern s32 func_80185BE0(s32 a0); -extern void func_80180EE8(void *a0); -extern void func_80181020(void *a0); -extern void func_801811F4(void * arg0); -extern void func_80181244(short *param); -extern void func_801812D0(short *a0); -extern void (*D_80191B20[])(void); -extern void func_801812FC(void *a0); -extern void func_80181338(short *param); -extern void func_80181364(s32 a0); -extern void func_80181474(void * arg0); -extern s32 func_80181564(void *a0); -extern s16 D_801B99A8; -extern u8 D_801B662C[]; -extern void func_80181998(void); -extern void func_801815DC(void *arg0); -extern void func_80181648(void *a0); -extern void func_8018170C(void * arg0); -extern short D_80191B34; -extern void func_8018178C(void * arg0); -extern void (*D_80191BDC[])(void); -extern void func_80181924(void *a0); -extern s32 D_801D7598; -extern s32 D_801D2200; -extern s32 D_801E7018; -extern void func_801819B0(void); -extern void func_8012A828(s32 *, s32); -extern void func_801819C8(void *arg0); -extern void func_80181A28(s32 a0); -extern void func_80181A68(void *arg0); -extern u8 D_801B6638[]; -extern void func_80181AA8(void *a0); -extern void func_801816A8(void *arg0); -extern void func_80181B34(void *arg0); -extern void func_8018170C(void *a0); -extern void func_80181BEC(void *arg0); -extern void func_80181738(void *arg0); -extern void func_80181C78(void *arg0); -extern void func_801817B8(void *arg0); -extern void func_80181DC4(void *arg0); -extern s32 func_80181EFC(void *a0); -extern void func_80181F70(void *arg0); -extern void func_80181FE4(void *a0); -extern void func_80182120(void *arg0); -extern void func_801821A8(void * arg0); -extern void (*D_80191EE4[])(void); -extern void func_8018233C(s32 *param_1); -extern void func_80182490(void * arg0); -extern s32 func_80182544(void *a0); -extern s32 func_801825BC(void *a0); -extern void func_8018276C(void *a0); -extern void func_801828B0(void *a0); -extern void func_801821A8(void *a0); -extern void func_80182920(void *arg0); -extern void func_80182A7C(void * arg0); -extern void func_80182ACC(void * arg0); -extern void func_80182B58(void *arg0); -extern void func_80182BCC(void *a0); -extern void func_80182C24(void *arg0); -extern void (*D_80192014[])(void); -extern void func_80182C98(void *a0); -extern s32 D_801D7E84; -extern s32 D_801D6C98; -extern void func_80182D0C(void); -extern void func_80182D24(void *arg0); -extern void func_80182D84(s32 a0); -extern s32 func_80182DC4(void); -extern void func_80182E00(void *arg0); -extern void func_80182ED8(void *arg0); -extern void func_80182F18(void *a0); -extern void func_801831AC(short *a0); -extern s32 D_801B673C; -extern short D_801B9AA8; -extern void func_80183248(s32 a0); -extern void func_8018330C(void * arg0); -extern void (*D_8019211C[])(void); -extern void func_80183438(void *a0); -extern void func_80183474(short *a0); -extern void func_801834A0(void * arg0); -extern void func_801834CC(short *a0); -extern void func_801834F8(s32 a0); -extern void func_80183538(s32 a0); -extern s32 func_80183604(s32 param_1); -extern void func_801831AC(short*); -extern void func_80183674(void *arg0); -extern void func_801831D8(s32 *a0); -extern void func_801836C0(s32 *a0); -extern void func_8018370C(void * arg0); -extern s32 func_80184BAC(s32 a0, s32 a1); -extern short D_80192030; -extern void func_80183838(s32 *a0); -extern void func_80183890(void * arg0); -extern void func_80183938(void *arg0); -extern s32 D_801B67DC; -extern s32 D_801B9C50; -extern void func_801839A8(s32 a0); -extern short D_801B67C8; -extern void func_80183A08(s32 a0); -extern void (*D_80192230[])(void); -extern void func_80183A68(void *a0); -extern void func_80183AA4(void * arg0); -extern void func_80183AD0(s32 a0); -extern s32 func_80183B10(void); -extern void func_80183B4C(void *arg0); -extern void func_80183B8C(s32 param_1); -extern s32 func_80183D80(void *a0); -extern void func_80183DF4(void * arg0); -/* ==== end §8b carried decl layer ==== */ - -extern s32 func_80184FA4(void); -extern s32 func_80185BE0(s32 a0); -extern short D_8019224C; -extern u8 D_801B6810[]; -extern u8 D_801B681C[]; -extern void func_80184CB8(s32 *a0, s32 a1); -extern void func_80184ED4(s32, s32, s32, s32); - -void func_80183E6C(void *a0) -{ - extern u8 D_801B6810[]; - extern u8 D_801B681C[]; - extern short D_8019224C; - - switch (*(u16 *)((s32)a0 + 0x34)) { - case 0: - if (func_80185BE0(4) == 0) { - return; - } - func_80184ED4((s32)a0, (s32)D_801B6810, 0, 0x40); - *(u16 *)((s32)a0 + 0x34) = 1; - return; - case 1: - func_80185BE0(4); - if (((s32 (*)(s32))func_80184FA4)((s32)a0) == 0) { - return; - } - func_80184ED4((s32)a0, (s32)D_801B681C, 0, 0x40); - *(u16 *)((s32)a0 + 0x34) = 2; - return; - case 2: - *(s32 *)(*(s32 *)((s32)a0 + 0xCC) + 0xB0) = 2; - if (((s32 (*)(s32))func_80184FA4)((s32)a0) != 0) { - *(u16 *)((s32)a0 + 0x34) = 3; - } - return; - case 3: - if (func_80185BE0(4) == 0) { - return; - } - *(u16 *)((s32)a0 + 0x34) = 4; - func_80184ED4((s32)a0, (s32)D_801B6810, 1, 0x40); - return; - case 4: - func_80185BE0(4); - if (((s32 (*)(s32))func_80184FA4)((s32)a0) == 0) { - return; - } - *(u16 *)((s32)a0 + 0x2) = 5; - func_80184CB8((s32 *)a0, (s32)&D_8019224C); - return; - } -} - - -extern short D_801B99A8; - extern void func_8012A828(s32*, s32); -extern void func_8012E88C(s32); -extern void func_80184C90(s32); - -void func_80183FA8(arg0) -s32 *arg0; -{ - extern void func_8012E88C(s32 a0); - extern void func_8012A828(s32*, s32); - extern void func_80184C90(s32 a0); - extern short D_801B99A8; - - *(s16 *)((s32)arg0 + 2) = 9; - *(s16 *)((s32)arg0 + 0x34) = 0; - func_8012E88C((s32)arg0); - ((void (*)(s32, s32))func_8012A828)((s32)arg0, (s32)&D_801B99A8); - func_80184C90((s32)arg0); -} - - -extern s32 func_80184FA4(void); -extern s32 func_80185BE0(s32 a0); -extern short D_8019224C; -extern u8 D_801B6810[]; -extern u8 D_801B681C[]; -extern void func_80184CB8(s32 *a0, s32 a1); -extern void func_80184ED4(s32, s32, s32, s32); - -void func_80183FF4(void *a0) -{ - extern u8 D_801B6810[]; - extern u8 D_801B681C[]; - extern short D_8019224C; - - switch (*(u16 *)((s32)a0 + 0x34)) { - case 0: - if (func_80185BE0(4) == 0) { - return; - } - func_80184ED4((s32)a0, (s32)D_801B6810, 0, 0x40); - *(u16 *)((s32)a0 + 0x34) = 1; - return; - case 1: - func_80185BE0(4); - if (((s32 (*)(s32))func_80184FA4)((s32)a0) == 0) { - return; - } - func_80184ED4((s32)a0, (s32)D_801B681C, 1, 0x40); - *(u16 *)((s32)a0 + 0x34) = 2; - return; - case 2: - *(s32 *)(*(s32 *)((s32)a0 + 0xCC) + 0xB0) = 2; - if (((s32 (*)(s32))func_80184FA4)((s32)a0) != 0) { - *(u16 *)((s32)a0 + 0x34) = 3; - } - return; - case 3: - if (func_80185BE0(4) == 0) { - return; - } - *(u16 *)((s32)a0 + 0x34) = 4; - func_80184ED4((s32)a0, (s32)D_801B6810, 1, 0x40); - return; - case 4: - func_80185BE0(4); - if (((s32 (*)(s32))func_80184FA4)((s32)a0) == 0) { - return; - } - *(u16 *)((s32)a0 + 0x2) = 0xC; - func_80184CB8((s32 *)a0, (s32)&D_8019224C); - return; - } -} - - - -extern void (*D_80192414[])(void); - -void func_80184130(void *a0) { - D_80192414[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern s32 func_80184DD0(s32 a0); - -void func_8018416C(s32 a0) { - - extern s32 D_80192270[]; - s32 idx = func_80184DD0(a0); - *(s32 *)(a0 + 0xE4) = D_80192270[idx]; -} - - - -extern s32 func_80184DD0(s32 a0); - -void func_801841AC(s32 a0) { - - extern s32 D_80192270[]; - s32 idx = func_80184DD0(a0); - *(s32 *)(a0 + 0xE4) = D_80192270[idx]; -} - - - -extern s32 func_80184DD0(s32 a0); - -void func_801841EC(s32 a0) { - - extern s32 D_80192270[]; - s32 idx = func_80184DD0(a0); - *(s32 *)(a0 + 0xE4) = D_80192270[idx]; -} - - - -extern s32 func_80029178(s32 arg); - extern void func_80029124(s32, s32); - s32 func_8018422C(void) { - if ((func_80029178(0x116) & 0xFF) == 0) { - ((void (*)(void *, s32))func_80029124)((void *)0x116, 1); - return 1; - } - return 0; - } - - - - -extern void func_80178CBC(s32, s32); - extern short D_801922E4; - void func_80184268(short *a0) { - *(short *)((char *)a0 + 0x2) = 0x8; - *(short *)((char *)a0 + 0x34) = 0; - ((void (*)(s32 *, s32))func_80178CBC)((s32 *)a0, (s32)&D_801922E4); - } - - - - -extern void func_80178CBC(s32, s32); - extern short D_8019232C; - void func_80184298(short *a0) { - *(short *)((char *)a0 + 0x2) = 0xe; - *(short *)((char *)a0 + 0x34) = 0; - ((void (*)(s32 *, s32))func_80178CBC)((s32 *)a0, (s32)&D_8019232C); - } - - - - -extern void func_80178CBC(s32, s32); - extern short D_80192334; - void func_801842C8(short *a0) { - *(short *)((char *)a0 + 0x2) = 0x4; - *(short *)((char *)a0 + 0x34) = 0; - ((void (*)(s32 *, s32))func_80178CBC)((s32 *)a0, (s32)&D_80192334); - } - - -extern void func_80178CBC(s32 arg0, s32 arg1); -extern s16 D_801923A4; - -void func_801842F8(void *arg0) { - *(s16 *)((char *)arg0 + 0x2) = 0xB; - *(s16 *)((char *)arg0 + 0x34) = 0; - func_80178CBC((s32)arg0, &D_801923A4); -} - - - -extern s32 func_80184BAC(s32 arg0, s32 arg1); -extern void func_80183FA8(s32 *a0); - -void func_80184328(s32 *a0) { - *(s32 *)((s32)a0[0x33] + 0xB0) = 2; - if (func_80184BAC(7, 16) != 0) { - return; - } - func_80183FA8(a0); -} - - -#include "common.h" - -DEFINE_func_80184374() /* dedup: shared engine-core @0x80184374 (src/shared) */ - - - -extern s32 func_80184BAC(s32 arg0, s32 arg1); -extern void func_80183DF4(void*); - -void func_801843C4(s32 *a0) { - *(s32 *)((s32)a0[0x33] + 0xB0) = 2; - if (func_80184BAC(16, 20) != 0) { - return; - } - ((void (*)(s32 *))func_80183DF4)(a0); -} - - -extern int func_80178970(void); -extern short D_8019224C; -extern void func_80178D18(void); -extern void func_80184CB8(s32 *a0, s32 a1); - -void func_80184410(arg0) -void * arg0; -{ - - extern short D_8019224C; - if (func_80178970() != 0) { - ((void (*)(s32))func_80178D18)((s32)arg0); - *(short *)((char *)arg0 + 0x2) = 12; - ((void (*)(s32, s32))func_80184CB8)((int)arg0, (int)&D_8019224C); - } -} - - - - -DEFINE_func_80184460() /* dedup: shared engine-core @0x80184460 (src/shared) */ - - -extern s32 func_80184BAC(s32 a0, s32 a1); -extern short D_8019224C; -extern void func_80184CB8(s32*, s32); - - void func_801844AC(s32 *a0) { - *(s32 *)((s32)a0[0x33] + 0xB0) = 2; - if (func_80184BAC(0x6, 0x7) != 0) { - return; - } - *(short *)((char *)a0 + 0x2) = 6; - ((void (*)(s32 *, void *))func_80184CB8)(a0, (void *)&(*(s32 *)&D_8019224C)); - } - - -extern int func_80178970(void); -extern short D_801B99A8; -extern void func_8012A828(s32*, s32); -extern void func_80178D18(void); - -void func_80184504(arg0) -void *arg0; -{ - - extern short D_801B99A8; - if (func_80178970() != 0) { - ((void (*)(s32))func_80178D18)((s32)arg0); - *(short *)((char *)arg0 + 0x2) = 2; - ((void (*)(s32, s32))func_8012A828)((int)arg0, (int)&D_801B99A8); - *(short *)((char *)arg0 + 0x34) = 2; - } -} - - -extern int func_80178970(void); -extern short D_801B99A8; -extern void func_8012A828(s32*, s32); -extern void func_80178D18(void); - -void func_80184560(arg0) -void *arg0; -{ - extern short D_801B99A8; - if (func_80178970() != 0) { - ((void (*)(s32))func_80178D18)((s32)arg0); - *(short *)((char *)arg0 + 0x2) = 9; - ((void (*)(s32, s32))func_8012A828)((s32)arg0, (s32)&D_801B99A8); - *(short *)((char *)arg0 + 0x34) = 2; - } -} - - -extern s32 func_801847BC(void *a0, void *a1); -extern s32 func_80184BAC(s32 a0, s32 a1); -extern void func_80184CB8(s32 *a0, s32 a1); -extern s32 func_801788B8(s32 a0, s32 a1); -extern s32 func_8018465C(a0); -extern short D_8019224C; -extern short D_8019225C; - -void func_801845B8(void *a0) { - s32 v1; - - if (func_801847BC(a0, &D_8019225C) != 0) { - if (func_80184BAC(6, 7) != 0) { - *(s16 *)((char *)a0 + 0x2) = 5; - } else if (func_80184BAC(7, 0x10) != 0) { - *(s16 *)((char *)a0 + 0x2) = 6; - } else if (func_80184BAC(0x10, 0x14) != 0) { - *(s16 *)((char *)a0 + 0x2) = 0xC; - } else { - *(s16 *)((char *)a0 + 0x2) = 1; - } - func_80184CB8((s32 *)a0, (s32)&D_8019224C); - v1 = *(s32 *)((char *)a0 + 0x68); - *(s16 *)((char *)v1 + 0xC) = 0x7FFF; - func_801788B8((s32)a0, (s32)&func_8018465C); - } -} - - -extern s32 func_8012BD14(s32 a0); -extern s32 func_80178BF8(); -extern s32 func_801848DC(void); -extern s32 func_8018625C(void *); -extern void func_80172710(void); - -s32 func_8018465C(a0) -void *a0; -{ - u16 st; - - st = *(u16 *)(*(s32 *)((s32)a0 + 0x64) + 0x2); - switch (st) { - case 6: - case 0xC: - if (((s32 (*)(void *))func_801848DC)(a0) == 0) { - func_8018625C(*(void **)((s32)a0 + 0x64)); - return 0; - } - break; - case 2: - case 9: - if (*(u16 *)(*(s32 *)((s32)a0 + 0x64) + 0x34) != 2) { - return 0; - } - if (func_8012BD14(*(s32 *)((s32)a0 + 0x64)) > 0x4000) { - return 0; - } - break; - default: - return 0; - } - - *(u16 *)(*(s32 *)((s32)a0 + 0x64) + 0x2) = - *(u16 *)(*(s32 *)((s32)a0 + 0x64) + 0x2) + 1; - func_80178BF8(); - return (s32)func_80172710; -} - - -extern s32 func_80029504(void); -extern u8 D_80078EAE; - -s32 func_80184738() { - s32 v1 = func_80029504(); - - if ((u32)(v1 - 0x384) < 0x6E) { - return 0x65; - } - if ((u32)(v1 - 0x64) < 0x1E) { - return 0x28; - } - if (D_80078EAE == 1) { - return 0xF; - } - return 0x10; -} - - - -void func_8018479C(void *a0) { - *(s32 *)(*(s32 *)((s32)a0 + 0xcc) + 0xb0) = 1; - } - - - -void func_801847AC(void *a0) { - *(s32 *)(*(s32 *)((s32)a0 + 0xcc) + 0xb0) = 2; - } - - - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32, s32); -extern s32 func_8012E57C(s32 a0, s32 a1); - -s32 func_801847BC(void *a0, void *a1) { - - extern u8 D_801B85A8; - s32 v0; - s16 val; - - if (a1 == 0) { - a1 = (void *)&D_801B85A8; - } - *(void **)((char *)a0 + 0xD0) = a1; - if (*(s32 *)a1 != 0) { - v0 = ((s32 (*)(void))func_8012C1B8)(); - *(s32 *)((char *)a0 + 0x20) = v0; - if (v0 == 0) { - func_8012CAE4(a0); - return 0; - } - func_8001C214(v0, *(s32 *)a1); - } - val = *(s16 *)((char *)a1 + 0x12); - if (val == -1) { - return 1; - } - *(s32 *)((char *)a0 + 0xCC) = func_8012E57C(0x61, val); - return 1; -} - - - - - - - - - - - - - - - - - - - -extern void func_8012A828(s32*, s32); -void func_80184858(void *a0) -{ - s32 v0 = *((s32 *) (((s32) a0) + 0xD0)); - ((void (*)(s32, s32))func_8012A828)(v0, *((s32 *) ((*((s32 *) ((v0 = (s32) a0) + 0xD0))) + 0x4))); -} - - - - - - - - - - - - - - - - - - - -extern void func_8012A828(s32*, s32); -void func_80184884(void *a0) -{ - s32 v0 = *((s32 *) (((s32) a0) + 0xD0)); - ((void (*)(s32, s32))func_8012A828)(v0, *((s32 *) ((*((s32 *) ((v0 = (s32) a0) + 0xD0))) + 0x8))); -} - - - - - - - - - - - - - - - - - - - -extern void func_8012A828(s32*, s32); -void func_801848B0(void *a0) -{ - s32 v0 = *((s32 *) (((s32) a0) + 0xD0)); - ((void (*)(s32, s32))func_8012A828)(v0, *((s32 *) ((*((s32 *) ((v0 = (s32) a0) + 0xD0))) + 0xc))); -} - - - - -/* func_801848DC — ov_SC04_018 (TU: src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c) - * - * DECL SURFACE (§37 / §124 asm-label alias): - * The TU already carries three fleet-canonical forward decls - * `extern s32 func_801848DC(void);` (L5361, L5592, L5904 — all ABOVE the - * splice point at L6839), each used by a banked caller that invokes it with - * NO arguments (`if (func_801848DC() == 0)`). The byte-true signature takes - * a pointer in $a0 (`lw $a2, 0x64($a0)` at 0x801848E4), so the definition - * disagrees with the canonical decl on arity -> cc1 emits - * "conflicting types for `func_801848DC'". - * Neither a fleet widen nor a cast-at-use fixes an arity clash on the symbol - * being DEFINED, so the definition is emitted under the C identifier - * `aF801848DC` with an __asm__("func_801848DC") label. The C-level name - * never collides with the canonical decls, the emitted symbol is unchanged, - * and codegen is byte-identical (verified: match_one MATCH 33/33 with and - * without the alias). Precedent in this very TU: aF8018CB18 @ L8872. - * - * func_8012F2E8 / func_8012CB64 / D_80126B5E / D_80126B62 / D_80126B66 are - * reproduced VERBATIM from the TU's own decls (L7717-L7722, L7964-L7965, - * L8727-L8729) — identical types, so no second conflict hides behind the - * first. No shared header is touched. - * - * BODY: the original draft discarded the func_8012CB64 result and returned a - * literal 0, which forced `move $v0,$zero` into the epilogue and displaced - * `addiu $sp,$sp,0x30` into the jr delay slot (DIFF 3/33 @ idx 9/30/32). - * The target sets $v0=0 in the *branch* delay slot and falls through to a - * bare epilogue after `jal func_8012CB64`, i.e. it RETURNS the callee's - * value on the taken path — the exact shape of the banked sibling - * func_80185D10 (TU L7724-L7733). Early-return + tail-return reproduces it. - * - * ORACLE: .venv/bin/python tools/match_one.py func_801848DC \ - * --c .run/s7/ov_SC04_018/func_801848DC.c \ - * --asm-subdir asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C - */ - - -extern void func_8012F2E8(s32 a0, s32 a1, s32 a2); -extern s32 func_8012CB64(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); - -s32 aF801848DC(void *a0) __asm__("func_801848DC"); - -s32 aF801848DC(void *a0) { - - extern u16 D_80126B5E; - extern u16 D_80126B62; - extern u16 D_80126B66; - s16 out[3]; - s16 in[3]; - void *p; - - p = *(void **)((char *)a0 + 0x64); - if (*(u16 *)(*(s32 *)((char *)p + 0xCC) + 0x2) != 0x2) { - return 0; - } - - in[0] = D_80126B5E; - in[1] = D_80126B62; - in[2] = D_80126B66; - func_8012F2E8(*(s32 *)((char *)p + 0xCC), (s32)in, (s32)out); - return func_8012CB64((s32)out, -0xC0, 0x40, -0x60, 0); -} - - - -/* func_80184960 — 76 instructions */ - -extern s32 func_80184B04(s32 arg0); - -s32 func_80184960(s32 a0) { - - extern u8 D_80078E78[]; - extern u8 D_80078EB1; - extern u16 D_80078EAC; - extern s32 D_801E7998; - extern s16 D_801B86BC[]; - extern s16 D_801B86F0[]; - extern s32 D_801B85BC[][8]; - u8 *p; - s32 s0; - s32 t; - s32 q; - s32 r; - s32 b; - s32 c; - s32 idx; - - p = D_80078E78; - s0 = D_801B86BC[*(s16 *)(*(s32 *)(a0 + 0xD0) + 0x10)]; - if (s0 == -1) { - D_801E7998 = 0; - return 0; - } - - t = func_80184B04(a0); - q = t / 24; - r = t % 24; - b = D_80078EB1; - c = D_80078EAC; - - if (t == 0) { - idx = D_801B86F0[b] - 1; - } else if (c - q >= 5) { - idx = 7; - } else if (c == q && b - r >= 2) { - idx = 6; - } else { - idx = p[0x39]; - idx = D_801B86F0[idx] - 1; - } - - ((struct { s32 w; } *)&D_801E7998)->w = 1; - return D_801B85BC[idx][s0]; -} - - -extern s32 func_80184960(s32 arg); - extern void func_80184AC4(void *a0); - void func_80184A90(u8 *a0) { - *(s32 *)(a0 + 0xe0) = func_80184960((s32)a0); - func_80184AC4(a0); - } - - - - - -void func_80184AC4(void *a0) { - - extern u16 D_80078EAC; - extern u8 D_80078EB1; - extern short D_800BA2BA; - u16 idx1 = D_80078EAC; - u8 idx2 = D_80078EB1; - s32 ptr = *(s32 *)((char *)a0 + 0xD0); - s16 offset = *(s16 *)((char *)ptr + 0x10); - - *(short *)((char *)&D_800BA2BA + (offset << 2)) = idx2 + (idx1 * 24); -} - - -extern short D_800BA2BA; - s32 func_80184B04(s32 arg0) { - return *(short *)((char *)&D_800BA2BA + (*(short *)(*(s32 *)(arg0 + 0xd0) + 0x10) << 2)); - } - - - -extern void (*D_801B8720[])(void); - -void func_80184B2C(void *a0) { - D_801B8720[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80184B68() /* dedup: shared engine-core @0x80184B68 (src/shared) */ - - - -void func_80184B70(void *a0, s32 a1, s32 a2) -{ - - extern u8 D_80078EB1; - s32 v0; - register s32 v1 __asm__("$3"); - - v0 = D_80078EB1; - if (!(v0 < a1)) { - if (v0 < a2) { - v0 = 1; - v1 = *(s32 *)((s32)a0 + 0xCC); - } else { - v1 = *(s32 *)((s32)a0 + 0xCC); - v0 = 2; - } - } else { - v1 = *(s32 *)((s32)a0 + 0xCC); - v0 = 2; - } - *(s32 *)(v1 + 0xB0) = v0; -} - - - - - -DEFINE_func_80184BAC() /* dedup: shared engine-core @0x80184BAC (src/shared) */ - - - - - -s32 func_80184BD0(u8 a0, u8 a1, u8 a2, u8 a3) { - - extern u8 D_80078EB0; - s32 pad[8]; - s32 v0, h0, l0, h1, l1, x, y; - - v0 = 0; - h0 = a0; - l0 = a1; - x = (h0 << 8) | l0; - h1 = a2; - l1 = a3; - y = (h1 << 8) | l1; - - if ((s16)x <= *(s16 *)&D_80078EB0) { - v0 = (s16)y; - v0 = *(s16 *)&D_80078EB0 < v0; - } - return v0; -} - - - -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); - - -void func_80184C28(void *a0, s32 a1) -{ - Vec4s_80184C28 loc_10; - Vec4s_80184C28 loc_18; - Vec4s_80184C28 loc_20; - - loc_10.f0 = *(s16 *)((u8 *)a0 + 0x6); - loc_10.f1 = *(s16 *)((u8 *)a0 + 0xA); - loc_10.f2 = *(s16 *)((u8 *)a0 + 0xE); - - loc_18.f0 = 0; - loc_18.f1 = 0; - loc_18.f2 = (s16)(-a1); - - ((void(*)(s32, s32, s32))func_8012F214)((s32)a0, (s32)&loc_18, (s32)&loc_20); - func_8012CEB0((s32)&loc_10, (s32)&loc_20, 0); -} - - - - - -void func_80184C90(s32 a0) -{ - - extern s32 D_801B8728; - *(s32 *)(a0 + 0x58) = (u32)&D_801B8728 | 0x40000000; - *(s16 *)(a0 + 0x5C) = 0x800; -} - - -DEFINE_func_80184CB0() /* dedup: shared engine-core @0x80184CB0 (src/shared) */ - - - -extern void func_8012E8A8(u8 *a0); -extern void func_8012E8E0(s32 a0, s32 a1); - -void func_80184CB8(s32 *a0, s32 a1) { - func_8012E8A8((u8 *)a0); - *(s16 *)((s32)a0 + 0x98) = 0; - *(s16 *)((s32)a0 + 0x5C) = 0; - func_8012E8E0((s32)a0, a1); -} - - -extern s32 func_80029504(void); - -s32 func_80184D00(void) { - s32 v1 = func_80029504(); - - if (v1 < 0x14) { - return 0; - } - if (v1 < 0x46) { - return 1; - } - if (v1 < 0x64) { - return 2; - } - if (v1 < 0x82) { - return 3; - } - return 4; -} - - - -extern s32 func_80029504(void); - -s32 func_80184D5C(void) { - s32 v0 = func_80029504(); - - if (v0 < 0xC8) return 5; - if (v0 < 0x12C) return 0; - if (v0 < 0x258) return 1; - if (v0 < 0x2BC) return 2; - if (v0 < 0x2E4) return 3; - if (v0 < 0x384) return 4; - return 6; -} - - - - -extern s32 func_80029504(void); - -s32 aF80184DD0(void) __asm__("func_80184DD0"); -s32 aF80184DD0(void) -{ - s32 v0 = func_80029504(); - - if (v0 < 0xC8) return 5; - if (v0 < 0x12C) return 0; - if (v0 < 0x258) return 1; - if (v0 < 0x2B2) return 2; - if (v0 < 0x2E4) return 3; - if (v0 < 0x384) return 4; - return 6; -} - - -extern s32 func_80029504(void); - -s32 func_80184E44(void) { - s32 v1 = func_80029504(); - - if (v1 < 0x3b6) { - return 0; - } - if (v1 < 0x3e8) { - return 1; - } - if (v1 < 0x44c) { - return 2; - } - if (v1 < 0x4b0) { - return 3; - } - return 4; -} - - - -extern s32 func_80029504(void); - extern void func_80029514(s32 arg0); - void func_80184EA0(void) { - if (((s32 (*)(void))func_80029504)() == 0x3A2) { - ((void (*)(s32))func_80029514)(0x3AC); - } - } - - - - -extern s32 func_8012B744(void *a0, void *a1); -extern void func_8012B200(u8 *a0); - -void func_80184ED4(s32 a0, s32 a1, s32 a2, s32 a3) { - s32 idx; - s32 base; - u16 vals[3]; - s32 result; - s32 *v1; - - *(u8*)(a0 + 0x108) = a2; - a2 = a2 & 0xFF; - *(s32*)(a0 + 0xE8) = a1; - *(u8*)(a0 + 0x109) = a3; - - idx = *(s16*)a1; - - if (a2 == 0) { - *(u16*)(a0 + 0x106) = 2; - *(u16*)(a0 + 0x6) = *(u16*)(a1 + 4); - *(u16*)(a0 + 0xE) = *(u16*)(a1 + 6); - vals[0] = *(u16*)(a1 + 8); - vals[2] = *(u16*)(a1 + 10); - } else { - base = idx; - base = base * 4 + a1; - *(u16*)(a0 + 0x106) = (u16)(idx - 1); - *(u16*)(a0 + 0x6) = *(u16*)(base); - *(u16*)(a0 + 0xE) = *(u16*)(base + 2); - vals[0] = *(u16*)(base - 4); - vals[2] = *(u16*)(base - 2); - } - - result = func_8012B744((void*)(a0 + 4), vals); - - v1 = (s32*)(a0 + 0x20); - *(u16*)(*v1 + 0x12) = (u16)result; - func_8012B200((u8*)a0); -} - - - - - - -/* func_80184FA4 @ 0x80184FA4 — ov_SC04_018_jr_8017AE2C - * Decls copied verbatim from the TU (src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c): - * line 350 extern s32 func_8016F1AC(void); - * line 448 extern void func_8014B12C(void); <- void! call through a cast (idiom 9) - * line 2616 extern s32 func_8012B608(s32, s32, s32); - * line 2617 extern void func_8012B178(s32, s32); - * line 2618 extern void func_8012AD80(s32); - * line 2619 extern s32 func_8012B030(u8 *); - * line 2620 extern s32 func_8012B744(void *, void *); - * line 2621 extern s32 func_8012BE98(s32, u16 *); - * line 4926 extern s32 func_80184FA4(s32 a0); - */ - -extern s32 func_8016F1AC(void); -extern void func_8014B12C(void); -extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); -extern void func_8012B178(s32 a0, s32 a1); -extern void func_8012AD80(s32 a0); -extern s32 func_8012B030(u8 *a0); -extern s32 func_8012B744(void *a0, void *a1); -extern s32 func_8012BE98(s32 a0, u16 *a1); - -s32 aF80184FA4(s32 a0) __asm__("func_80184FA4"); -s32 aF80184FA4(s32 a0) -{ - u16 vals[3]; - s32 sh; - - if (func_8016F1AC() != 0) { - return 0; - } - - if (*(u8 *)(a0 + 0x108) == 0) { - if (*(s16 *)(*(s32 *)(a0 + 0xE8)) < *(s16 *)(a0 + 0x106)) { - return 1; - } - } else if (*(s16 *)(a0 + 0x106) <= 0) { - return 1; - } - - vals[0] = *(u16 *)(*(s16 *)(a0 + 0x106) * 4 + *(s32 *)(a0 + 0xE8)); - vals[2] = *(u16 *)(*(s16 *)(a0 + 0x106) * 4 + *(s32 *)(a0 + 0xE8) + 2); - - sh = *(u8 *)(a0 + 0x109); - sh = sh << 12; - - if (((s32 (*)(void))func_8014B12C)() != 0) { - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) = - func_8012B744((void *)(a0 + 4), vals); - sh = sh << 3; - } else { - s32 r = func_8012B608(*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12), - func_8012B744((void *)(a0 + 4), vals), 4); - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) = - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) + r; - } - - func_8012B178(a0, -sh); - func_8012AD80(a0); - *(u16 *)(a0 + 0xA) -= 0x10; - func_8012B030((u8 *)a0); - - if (((s32 (*)(void))func_8014B12C)() != 0) { - if (func_8012BE98(a0, vals) < 0x1001) { - if (*(u8 *)(a0 + 0x108) == 0) { - *(u16 *)(a0 + 0x106) = *(u16 *)(a0 + 0x106) + 1; - } else { - *(u16 *)(a0 + 0x106) = *(u16 *)(a0 + 0x106) - 1; - } - } - } else { - if (func_8012BE98(a0, vals) < 0x101) { - if (*(u8 *)(a0 + 0x108) == 0) { - *(u16 *)(a0 + 0x106) = *(u16 *)(a0 + 0x106) + 1; - } else { - *(u16 *)(a0 + 0x106) = *(u16 *)(a0 + 0x106) - 1; - } - } - } - return 0; -} - - - - -extern void func_8014B12C(void); -extern s32 func_8016F1C4(void); - -s32 func_8018516C(s32 a0) { - if (func_8016F1C4() != 0) { - return 0; - } - if (((s32 (*)(void))func_8014B12C)() != 0) { - return 2; - } - return 1; -} - - - -extern void (*D_801B8740[])(void); - -void func_801851B4(void *a0) { - D_801B8740[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_801851F0() /* dedup: shared engine-core @0x801851F0 (src/shared) */ - -DEFINE_func_801851F8() /* dedup: shared engine-core @0x801851F8 (src/shared) */ - -DEFINE_func_80185200() /* dedup: shared engine-core @0x80185200 (src/shared) */ - -DEFINE_func_80185208() /* dedup: shared engine-core @0x80185208 (src/shared) */ - -DEFINE_func_80185210() /* dedup: shared engine-core @0x80185210 (src/shared) */ - - -extern void func_80016714(void *a0, s32 a1); -extern void func_8012CAE4(void *a0); - - -void func_80185218(void *a0) { - - extern s32 D_801E7A88; - extern s32 D_801E799C; - func_80016714(&D_801E7A88, 0x14); - D_801E799C = 0; - func_8012CAE4(a0); -} - - -DEFINE_func_8018525C() /* dedup: shared engine-core @0x8018525C (src/shared) */ - - -/* §37 lever (A): conform to the TU's existing decl verbatim (TU lines 6430 / - * 6862 both say `void`); the s32 return is recovered by a cast at the call - * site below. Decl-only change => zero bytes move. */ -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32, s32); -extern void func_8001D0E8(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012E8E0(s32 a0, s32 a1); - - -void func_80185264(s32 a0) { - - extern s32 D_801C03D8[]; - extern s32 D_801B8738[]; - s32 v0; - s32 result; - - v0 = ((s32 (*)(void))func_8012C1B8)(); - *(s32 *)(a0 + 0x20) = v0; - if (v0 == 0) { - func_8012CAE4((void *)a0); - return; - } - - func_8001C214(v0, (s32)D_801C03D8); - func_8001D0E8(*(s32 *)(a0 + 0x20), 0x7FFF, 0x7FFF); - - result = *(s32 *)(a0 + 0x20); - *(s32 *)(result + 0x4) |= 0x40; - func_8012E8E0(a0, (s32)D_801B8738); - - *(s16 *)(a0 + 0x2) = 1; -} - - - -extern void func_80185978(s32 a0); -extern void func_80185904(s32 a0); -extern void func_801859D8(s32 a0); -extern void func_8018589C(s32 a0); - -void func_801852EC(s32 a0) { - - extern void (*D_801B8A18[])(s32); - u32 st; - - if (*(s16 *)(a0 + 0x10A) > 0) { - *(s16 *)(a0 + 0x10A) = *(s16 *)(a0 + 0x10A) - 1; - } - if (*(s16 *)(a0 + 0x108) != 0) { - *(s32 *)(a0 + 0xB0) = *(s16 *)(a0 + 0x108); - *(s16 *)(a0 + 0x108) = 0; - } - - st = *(u32 *)(a0 + 0xB0); - switch (st) { - case 1: - if (*(u16 *)(a0 + 0x2) != 2 || *(u16 *)(a0 + 0x34) == 0) { - if (*(s16 *)(a0 + 0xEA) != st) { - *(s16 *)(a0 + 0xEA) = st; - if (*(s16 *)(a0 + 0xE8) != 0) { - func_80185978(a0); - } else { - func_80185904(a0); - } - *(s16 *)(a0 + 0xE8) = 1; - } - } - break; - case 2: - if (*(u16 *)(a0 + 0x2) != 2 || *(u16 *)(a0 + 0x34) == 0) { - if (*(s16 *)(a0 + 0xEA) != st) { - *(s16 *)(a0 + 0xEA) = st; - if (*(s16 *)(a0 + 0xE8) != 0) { - func_801859D8(a0); - } else { - func_8018589C(a0); - } - *(s16 *)(a0 + 0xE8) = 1; - } - } - break; - case 3: - if (*(u16 *)(a0 + 0x2) != 2 || *(u16 *)(a0 + 0x34) == 0) { - func_80185904(a0); - } - break; - case 4: - if (*(u16 *)(a0 + 0x2) != 2 || *(u16 *)(a0 + 0x34) == 0) { - func_8018589C(a0); - } - break; - } - - D_801B8A18[*(u16 *)(a0 + 0x2)](a0); -} - - - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C810(s32 a0, s32 a1); -extern void func_8001C214(s32, s32); -extern void func_8001C97C(s32 a0); -extern void func_8001D0E8(s32 arg0, s32 arg1, s32 arg2); -extern void func_8018589C(s32 a0); -extern void *func_80185C6C(void *a0); - - - -void func_801854C4(s32 a0) { - - extern s32 D_801B8748[][2]; - extern u32 D_801B8760; - extern u32 D_801B877C; - extern s16 D_801B8788[]; - extern Blk12_801854C4_801854C4 D_801B8770; - s32 v0; - s16 idx; - s16 *p; - - v0 = ((s32 (*)(s32))func_8012C1B8)(a0); - *(s32 *)(a0 + 0x20) = v0; - if (v0 == 0) { - ((void (*)(s32))func_8012CAE4)(a0); - return; - } - - idx = *(s16 *)(a0 + 0x70); - p = &D_801B8788[idx]; - switch (idx) { - case 7: - case 9: - case 10: - case 12: - func_8001C810(v0, D_801B8748[*p][0]); - *(s32 *)(v0 + 4) |= 0x8040; - break; - default: - func_8001C214(v0, D_801B8748[*p][0]); - break; - } - - func_8001C97C(D_801B8748[*p][1]); - func_8001D0E8(*(s32 *)(a0 + 0x20), 0xC8, 0xB4); - *(s32 *)(a0 + 0x58) = (u32)&D_801B8760 | 0x40000000; - *(s16 *)(a0 + 0x5C) = 0x800; - *(s32 *)(*(s32 *)(a0 + 0x20) + 0x20) = (s32)&D_801B877C; - *(s16 *)(a0 + 0xE8) = 0; - *(Blk12_801854C4_801854C4 *)(a0 + 0xEC) = D_801B8770; - *(s16 *)(a0 + 0x10A) = 6; - func_8018589C(a0); - *(s32 *)(a0 + 0xDC) = (s32)func_80185C6C; -} - - - - -extern void func_80185D70(void *a0); -extern int func_80178970(void); -extern void func_80178D18(void); - -void func_80185664(void *a0) { - switch (*(u16 *)((s32)a0 + 0x34)) { - case 0: - break; - case 1: - func_80185D70(a0); - *(s16 *)((s32)a0 + 0x34) = 2; - break; - case 2: - if (((s32 (*)(s32))func_80178970)((s32)a0) != 0) { - ((void (*)(s32))func_80178D18)((s32)a0); - *(s16 *)((s32)a0 + 0x34) = 0; - } - break; - } -} - - - -extern s32 func_8018516C(s32 a0); -extern void func_80185904(s32 a0); -extern void func_8012E688(s32 param_1, u16 param_2, u16 param_3); -extern void func_80185EEC(void); - -void func_801856E0(s32 a0) { - s32 s0; - u16 v0; - u16 v1; - - if (func_8018516C(a0) == 2) { - func_80185904(a0); - } - s0 = a0; - - v0 = *(u16 *)(s0 + 0x84); - v0 = v0 + 1; - *(u16 *)(s0 + 0x84) = v0; - - if ((s16)v0 == 8) { - func_8012E688(s0, 0x514, 0); - } - - v0 = *(u16 *)(s0 + 0x100); - v1 = *(u16 *)(s0 + 0x102); - v0 = v0 + v1; - *(u16 *)(s0 + 0x100) = v0; - - if ((s16)v0 >= 0x50) { - *(u16 *)(s0 + 0x100) = 0x50; - } - - v0 = *(u16 *)(s0 + 0xFE); - v1 = *(u16 *)(s0 + 0x100); - v0 = v0 + v1; - *(u16 *)(s0 + 0xFE) = v0; - - if ((s16)v0 >= 0x600) { - func_80185904(s0); - } - - ((void (*)(s32))func_80185EEC)(s0); -} - - -extern void func_80185EEC(void); -void func_801857AC(void) { - func_80185EEC(); -} - - - -extern s32 func_8018516C(s32 a0); -extern void func_8018589C(s32 a0); -extern s32 func_8012BEE8(s32 a0); -extern void func_8012E688(s32 param_1, u16 param_2, u16 param_3); -extern void func_80185EEC(void); - -void func_801857CC(s32 a0) { - if (func_8018516C(a0) == 2) { - func_8018589C(a0); - } - if (*(u16 *)(a0 + 0x34) == 0) { - if (func_8012BEE8(a0) == 0) { - return; - } - *(u16 *)(a0 + 0x34) = 1; - } - *(u16 *)(a0 + 0x100) = *(u16 *)(a0 + 0x100) + *(u16 *)(a0 + 0x102); - if (*(s16 *)(a0 + 0x100) >= 0x50) { - *(u16 *)(a0 + 0x100) = 0x50; - } - *(u16 *)(a0 + 0xFE) = *(u16 *)(a0 + 0xFE) - *(u16 *)(a0 + 0x100); - if (*(s16 *)(a0 + 0xFE) <= 0) { - func_8012E688(a0, 0x515, 0); - func_8018589C(a0); - } else { - ((void (*)(s32))func_80185EEC)(a0); - } -} - - - -extern void func_80185EEC(void); - -void func_8018589C(s32 a0) { - - extern s32 D_801B8748[][2]; - extern s16 D_801B8788[]; - *(s16 *)(a0 + 0x2) = 2; - *(s16 *)(a0 + 0x34) = 0; - *(s16 *)(a0 + 0xFE) = 0; - *(s32 *)(*(s32 *)(a0 + 0x20) + 0x24) = - D_801B8748[D_801B8788[*(s16 *)(a0 + 0x70)]][1]; - *(s16 *)(a0 + 0x5C) = 0x800; - *(s32 *)(a0 + 0xB0) = 0; - ((void (*)(s32))func_80185EEC)(a0); -} - - - - -extern void func_80185EEC(void); - -void func_80185904(s32 a0) { - - extern s32 D_801B8748[][2]; - extern s16 D_801B8788[]; - s32 idx_val, ptr_val, data_val; - - *(s16 *)(a0 + 0x2) = 0x4; - *(s16 *)(a0 + 0x34) = 0; - *(s16 *)(a0 + 0xFE) = 0x600; - *(s16 *)(a0 + 0x100) = 0; - *(s16 *)(a0 + 0x102) = 0; - idx_val = D_801B8788[*(s16 *)(a0 + 0x70)]; - ptr_val = *(s32 *)(a0 + 0x20); - data_val = D_801B8748[idx_val][0]; - *(s32 *)(ptr_val + 0x24) = data_val; - *(s16 *)(a0 + 0x84) = 0; - *(s16 *)(a0 + 0x5C) = 0; - *(s32 *)(a0 + 0xB0) = 0; - ((s32 (*)(void))func_80185EEC)(); -} - - -DEFINE_func_80185978() /* dedup: shared engine-core @0x80185978 (src/shared) */ - - -extern void func_80185EEC(void); - -void func_801859D8(s32 a0) { - - extern s16 D_801B8788[]; - extern s32 D_801B8748[][2]; - *(s16 *)(a0 + 0x2) = 1; - *(s32 *)(a0 + 0x1C) = 8; - *(s16 *)(a0 + 0xFE) = 0x600; - *(s16 *)(a0 + 0x34) = 0; - *(s16 *)(a0 + 0x100) = 0; - *(s16 *)(a0 + 0x102) = 2; - *(s32 *)(*(s32 *)(a0 + 0x20) + 0x24) = D_801B8748[D_801B8788[*(s16 *)(a0 + 0x70)]][0]; - *(s16 *)(a0 + 0x5C) = 0x800; - *(s32 *)(a0 + 0xB0) = 0; - ((s32 (*)(void))func_80185EEC)(); -} - - - - - -void func_80185A58(s32 a0, s32 a1) -{ - - extern u8 D_801202A0[]; - u8 *p = D_801202A0; - u8 *end = p + 0x6480; - - if (p != end) { - do { - if (*(u16 *)p == 0x61 && *(s16 *)(p + 0x70) == a0) { - *(s32 *)(p + 0xB0) = a1; - return; - } - p += 0x10C; - } while (p != end); - } -} - - - -extern s32 func_8012E57C(s32 a0, s32 a1); -extern void func_8018602C(s32 a0, s32 a1); - -void func_80185AB0(s32 a0) { - s32 v0 = func_8012E57C(0x61, (s16)a0); - if (v0 != 0) { - if (*(u16 *)((char *)v0 + 0x2) == 2) { - *(s32 *)((char *)v0 + 0xB0) = 1; - } - func_8018602C(a0, 0x3C); - } -} - - - - -extern s32 func_8012E57C(s32 a0, s32 a1); - -void func_80185B10(s32 a0) { - void *p; - - p = (void *)func_8012E57C(0x61, (s16)a0); - if (p == 0) { - return; - } - if (*(u16 *)((char *)p + 0x2) == 0x4) { - *(s32 *)((char *)p + 0xB0) = 0x2; - } -} - - - - -extern s32 func_8012E57C(s32 a0, s32 a1); -extern void func_8018602C(s32 a0, s32 a1); - -void func_80185B58(s32 a0) { - s32 v1; - - v1 = func_8012E57C(0x61, (s32)(s16)a0); - if (v1 != 0) { - *(s16 *)((char *)v1 + 0x108) = 1; - func_8018602C(a0, 0x3C); - } -} - - - - -extern s32 func_8012E57C(s32 a0, s32 a1); - -void func_80185BA8(s32 a0) { - s32 shift_temp; - s32 v1; - - shift_temp = ((a0 << 16) >> 16); - v1 = func_8012E57C(0x61, shift_temp); - if (v1 != 0) { - *(s16 *)((char *)v1 + 0x108) = 2; - } -} - - -extern s32 func_8012E57C(s32 a0, s32 a1); -s32 func_80185BE0(s32 a0) { - void *p; - - p = (void *)func_8012E57C(0x61, (s16)a0); - if (p == 0) { - return 1; - } - switch (*(u16 *)((char *)p + 2)) { - case 1: - case 2: - *(s16 *)((char *)p + 0x108) = 1; - return 0; - case 3: - *(s16 *)((char *)p + 0x108) = 1; - return 0; - case 4: - *(s16 *)((char *)p + 0x108) = 1; - return 1; - } -} - - - -extern s16 currentLocationId; -extern s32 func_80185D10(void *a0); -extern s32 func_801862A8(void *a0); -extern s32 func_80178BF8(); -extern void func_80172710(void); - -void *func_80185C6C(void *a0) { - if (currentLocationId == 0x3069) { - return 0; - } - if (*(u16 *)((s32)a0 + 0x2) != 2) { - return 0; - } - if (*(u16 *)((s32)a0 + 0x34) != 0) { - return 0; - } - if (*(s16 *)((s32)a0 + 0x10A) != 0) { - return 0; - } - if (func_80185D10(a0) == 0) { - return 0; - } - if (func_801862A8(a0) != 0) { - return 0; - } - *(s16 *)((s32)a0 + 0x34) = 1; - func_80178BF8(); - return (void *)func_80172710; -} - - - - - -DEFINE_func_80185D10() /* dedup: shared engine-core @0x80185D10 (src/shared) */ - diff --git a/src/ov_SC04_019/ov_SC04_019_jr_80185D70.c b/src/ov_SC04_019/ov_SC04_019_jr_80185D70.c deleted file mode 100644 index dc1854bdb..000000000 --- a/src/ov_SC04_019/ov_SC04_019_jr_80185D70.c +++ /dev/null @@ -1,3461 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8; -typedef void (*Handler)(struct Entry_8016E95C *); -extern void func_801458E0(void); -extern s32 D_800AE6AC; -extern s32 D_800AE6B0; -extern u8 D_80078E50; -extern void func_800D185C(u8 *a0); -extern void func_801458E8(void); -extern s32 func_80029504(void); -extern void func_80145B24(void); -extern u8 D_8018F74C; -extern u8 D_8018F6BC; -extern u8 D_8018F698; -extern u8 D_8018F674; -extern u8 D_8018F728; -extern u8 D_8018F704; -extern u8 D_8018F6E0; -extern u8 D_8018F650; -extern void func_80145934(void); -extern u8 D_8018F7DC; -extern u8 D_8018F7B8; -extern u8 D_8018F794; -extern u8 D_8018F770; -extern void func_80145A2C(void); -extern s32 func_800291DC(s32); -extern void func_800291C8(s32, s32); -extern void func_80162120(void); -extern void func_80029124(s32, s32); -extern s32 func_80165A50(s32); -extern void func_80029514(s32); -extern u8 D_80078EC0; -extern s32 func_80028FBC(void); -extern s32 func_80029000(void); -extern s32 func_80028D9C(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_80145BF8(void); -extern s32 func_800291B4(s32 arg); -extern void func_800291A0(s32, s32); -extern void func_80145C54(void); -extern s32 func_80145CEC(); -extern s32 func_80029178(s32 arg); -extern void func_80146014(s32 a0); -extern unsigned char D_8018EBD4[]; -extern unsigned char D_8018EC04[]; -extern unsigned char D_8018EC54[]; -extern unsigned char D_8018EC84[]; -extern unsigned char D_8018ECB4[]; -extern void func_80145EE8(s32 param_1); -extern void MoveImage(void *a0, s32 a1, s32 a2); -extern void func_80146074(void); -extern s32 func_80146128(void); -extern void func_80146360(void); -extern void func_801463A0(); -extern void func_8014607C(void); -extern s32 *D_80126B78; -extern u8 D_80078EC1; -extern s32 D_80078EC8; -extern s32 D_80126B9C; -extern s32 D_8011F730; -extern u16 D_801152B8; -extern u16 D_8012693A; -extern u8 D_80126BE0[]; -extern u8 D_801150F0[]; -extern void *memcpy(void *dst, const void *src, u32 n); -extern void func_80146FC4(s32 a0); -extern void func_80150A70(s32 a0); -extern void func_80147098(s32 *a0); -extern void func_8014A638(s32 arg0); -extern s32 func_80155458(s32 a0); -extern s32 func_80029104(void); -extern void func_80029344(void); -extern void func_8014ADE0(s32 a0); -extern void func_8014B350(s32 a0); -extern void func_8014B7A4(s16 *param_1); -extern s32 func_80161D58(s32 a0); -extern void func_80161A90(s32 a0); -extern void func_8014B504(u16 *a0); -extern void func_80149BEC(s32 a0); -extern void func_8014B5D0(s32 *a0); -extern void func_8014C99C(u8 *a0); -extern void func_8014B190(s32 s0); -extern void func_80148648(s32 a0, s32 a1); -extern s32 func_80149228(s32 a0); -extern void func_8014A59C(s32 a0); -extern void func_8016F14C(void *a0); -extern void func_80154418(void *a0); -extern void func_80154BE4(s32 a0); -extern void func_80165694(s32 arg0); -extern void func_801654A8(s32 a0); -extern void func_8014A680(s32 a0); -extern void func_8014A6A8(s32 a0); -extern void func_8014A71C(s32 a0); -extern void func_80172588(s32 *a0); -extern void func_801473DC(s32 *a0); -extern void func_80015978(s32 a0, s32 *a1); -extern void (*D_8018ED04[])(void *); -extern u8 D_80126BA4; -extern s32 D_80127098; -extern s32 D_80127094; -extern s32 D_80127090; -extern void func_80146534(void); -extern void func_8001D074(s32 a0, s32 a1); -extern void func_80146554(void); -extern void func_80146578(void); -extern void func_8001CFDC(s32, s32); -extern void func_8014659C(void); -extern void func_8001D074(s32, s32); -extern void func_801465C0(void); -extern void func_801465E4(void); -extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); -extern s32 D_8011F9D0; -extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); -extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 D_8011F750; -extern s32 D_8011F754; -extern u8 * func_801468C8(s32 arg0, u8 arg1); -extern s32 D_8011D030; -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); -extern s32 func_80146B9C(void *a0); -extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); -extern u16 D_8011DA28; -extern s32 func_80146B9C(void * arg0); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80146CA0(void *a0); -extern void func_80146CB4(void *a0); -extern void func_80146CC8(s32 a0); -extern void func_80146D30(s32 a0); -extern void func_80146D80(s32 *a0); -extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80146D90(s32 a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); -extern void func_80146E90(s32 *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80015954(s32 a0, s32 a1); -extern void func_80149374(s32 a0, s32 a1); -extern void func_80146F58(s32 a0, s32 a1); -extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 func_8012A68C(void); -extern s16 func_8012A758(void); -extern void func_8004978C(s16 *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern u8 D_80126DB0[]; -extern u16 D_80126DB6; -extern void func_8014704C(s32 *a0); -extern s32 func_80147054(void *a0); -extern void func_80147060(u8 * a0); -extern void func_8014706C(void *arg0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80147084(s32 *a0); -extern void func_8014708C(void *arg0); -extern s32 func_801470A0(void *a0); -extern void func_801470AC(s32 *a0); -extern void func_801470B4(s32 arg0); -extern void func_801470C0(s32 a0); -extern void func_80147118(s32 a0); -extern s16 D_80126BB8; -extern s16 D_80126BBA; -extern s16 D_80126BBC; -extern void func_80147264(s32 a0); -extern void func_80147290(void); -extern void func_801472B4(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void *D_8012707C; -extern void func_801472DC(void); -extern void func_801472F0(void *a0); -extern void func_80147364(u16, s32); -extern void func_80147300(u16 arg0); -extern void func_80147324(s32 arg0); -extern void func_801473EC(s32 *a0); -extern void func_80147460(s32 a0); -extern void func_80147514(); -extern void func_80147628(s32 a0); -extern void func_80147478(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); -extern s32 func_800129CC(s32 a0, s32 a1); -extern void func_80147514(s32 arg0); -extern void func_80013F3C(s32 a0); -extern void func_80012558(s32 a0, s32 a1); -extern void func_800126C4(s32 a0, s32 a1); -extern void func_800123F0(s32 a0, s32 a1); -extern void func_80147718(s32 a0); -extern void func_80147788(void *a0, s32 a1); -extern void func_801477A8(void *a0, s32 a1); -extern void func_801477C8(void *a0, s32 a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80147814(s32 a0, s32 a1); -extern void func_80147928(int a0, int a1); -extern void func_8014799C(int a0, int a1); -extern void func_80147A10(int a0, int a1); -extern void func_80147860(int a0, int a1, int a2, int a3); -extern void func_80147948(s32 a0, s32 a1, s32 a2); -extern void func_801479BC(s32 a0, s32 a1, s32 a2); -extern void func_80147A30(s32 a0, s32 a1, s32 a2); -extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147948(int a0, int a1, int a2); -extern void func_801479BC(int a0, int a1, int a2); -extern void func_80147A30(int a0, int a1, int a2); -extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147A84(s32 arg0); -extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147AAC(s32 arg0); -extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80147B5C(s32 a0, void *a1); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern void func_80147B18(s32 a0); -extern void func_80147B5C(s32 arg0, void *arg1); -extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147DC0(s32 a0, s32 a1); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147F50(s32 arg0); -extern void func_80148038(s32 a0, s32 a1); -extern s32 ratan2(s32 a0, s32 a1); -extern s32 csqrt(s32 a0); -extern s32 func_80012A60(s32 a0, s32 a1); -extern void func_80148094(int param_1, short *param_2, int *param_3); -extern void func_801485B8(s32 a0, s32 a1, s32 a2); -extern void func_801484B0(s32 a0, s32 a1); -extern s32 func_80154358(void *a0); -extern void func_801484E8(s32 a0, s32 a1); -extern void func_80148534(s32 a0, s32 a1); -extern void func_8014856C(s32 a0, s32 a1); -extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); -extern void func_80148634(void *a0); -extern u8 D_800B9A64; -extern s32 func_80014DC0(); -extern s32 func_80014D68(); -extern s32 func_80014D94(); -extern s32 func_80014CF8(); -extern void func_800120DC(); -extern s32 func_800CF8B4(); -extern u16 func_801487F4(s32 *a0); -extern u16 func_80148800(s32 *a0); -extern u8 func_8014880C(s32 *a0); -extern u16 func_80148818(s32 *a0); -extern s32 func_80047D3C(s32 a0); -extern s32 func_80148824(void *arg0); -extern s32 func_801488A8(u8 *a0); -extern s32 func_8014891C(s32 a0); -extern s32 func_80148980(u8 *a0); -extern s32 func_801489E8(s32 a0); -extern s32 func_80148A48(s32 a0); -extern int func_80148AFC(void *a0); -extern void func_80148AAC(u8 *a0); -extern s32 func_80148C18(void); -extern s32 func_80148C20(s32 a0, s16 a1); -extern s32 func_80148C34(s32 a0, s32 a1); -extern s32 func_80148C4C(s32 a0, s32 a1); -extern s32 func_80148C64(s32 a0, s32 a1); -extern s32 func_80148C7C(void); -extern s32 func_80148C84(s32 a0, s32 a1); -extern s32 func_80148C9C(s32 a0, s32 a1); -extern s32 func_80148CB4(s32 a0, s32 a1); -extern s32 func_80148CCC(s32 a0, s32 a1); -extern s32 func_80148CE4(void); -extern s32 func_80148CEC(void); -extern s32 func_80148CF4(s32 a0, s32 a1); -extern s32 func_80148D0C(s32 a0, s32 a1); -extern s32 func_80148D24(void *a0, int a1); -extern s32 func_80148D3C(void); -extern s32 func_80148F60(void); -extern s32 func_80148F68(s32 a0); -extern s32 func_80148F74(s32 a0); -extern s32 func_80148F80(s32 a0); -extern s32 func_80148F8C(s32 a0); -extern s32 func_80148F98(void); -extern s32 func_80148FA0(s32 a0); -extern s32 func_80148FAC(s32 a0); -extern s32 func_80148FB8(s32 a0); -extern s32 func_80148FC4(s32 a0); -extern s32 func_80148FD0(void); -extern s32 func_80148FD8(void); -extern s32 func_80148FE0(s32 a0); -extern s32 func_80148FEC(s32 a0); -extern s32 func_80148FF8(s32 a0); -extern s32 func_80149004(void); -extern void func_8014900C(s32 *a0); -extern void func_80149020(s32 *a0); -extern void func_80149034(s32 *a0); -extern void func_80149048(s32 *a0); -extern void func_8014905C(u8 *a0); -extern void func_801490E0(s32 *a0, s16 a1); -extern void func_801490E8(s32 *a0, s16 a1); -extern void func_801490F0(s32 *a0, s16 a1); -extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); -extern void func_801490F8(s32 a0, s32 a1); -extern s32 func_801491C4(s32 a0); -extern s32 func_80149184(s32 a0); -extern void func_80149204(s32 *a0); -extern void func_80149210(s32 a0, s32 a1); -extern s32 func_80149284(s32 *a0, s32 a1); -extern void func_80149350(s32 arg0); -extern void func_80149290(s32 a0); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_80149374(s32 arg0, s32 arg1); -extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8014942C(s32 arg0); -extern void func_8012EF70(s32 a0, s32 a1); -extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012EFB8(s32 a0); -extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); -extern void func_8014964C(s32 param_1, s32 param_2); -extern s32 func_801496D4(void *a0); -extern void func_8015AD08(); -extern void func_80149704(void); -extern void func_8015ACC4(); -extern void func_80149724(void); -extern u8 D_80078EBF; -extern s32 func_80149744(struct S_80149744 *a0); -extern void func_8015F7A0(); -extern void func_80149788(void); -extern void func_801653B8(); -extern void func_80149864(void); -extern s16 currentLocationId; -extern s32 func_8016F1AC(void); -extern s32 func_80149884(void); -extern void func_80160B00(); -extern void func_801498C0(void); -extern s32 func_80149AA8(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern void func_80146750(void *a0); -extern s32 func_801498E0(s32 *a0); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_80147364(u16 a0, s32 a1); -extern s32 func_800CCF28(s32 a0); -extern u8 D_80126B5C; -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_8015DAC4(s32 *a0); -extern void func_8015554C(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern void func_80149B14(s32 *a0); -extern u8 func_8014BEF8(void); -extern s32 func_80149B54(s32 * arg0); -extern void func_8015DE24(s32 *a0); -extern void func_80157510(s32 *a0); -extern void func_80149BAC(s32 *a0); -extern s32 func_80029178(s32 a0); -extern s32 func_80149C08(s32 arg0); -extern void func_801577C8(); -extern void func_80149C94(void); -extern void func_80157D20(void); -extern void func_80149CB4(void); -extern s32 func_80149CD4(s32 a0); -extern u8 func_8014B5B8(s32 *a0); -extern s32 func_80149D10(s32 a0); -extern s32 func_80149E94(s32 a0); -extern s32 func_80149DD8(s32 a0); -extern s32 func_80149D9C(s32 a0); -extern s32 func_80149F2C(s32 a0, s32 a1); -extern s32 func_80149E94(s32 arg0); -extern void func_80149FA8(void); -extern s32 D_8018EDCC[]; -extern s32 func_80149FB0(s32 a0); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern void func_8014A1B0(s32 a0, s32 a1); -extern s32 func_8014A048(s32 param_1); -extern u16 func_80156370(u16 a0); -extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); -extern void func_8015D4B4(); -extern void func_8014A218(void); -extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); -extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); -extern s32 func_8014A238(s32 arg0); -extern s32 func_8014A2E4(s32 a0); -extern void func_8014A380(s32 a0, s32 a1); -extern s16 D_801152B0; -extern s16 D_801152B4; -extern s32 func_8014A3E0(struct S_8014A3E0 *a0); -extern s32 func_8014A454(s32 a0); -extern s32 func_8014A4B4(void *a0); -extern void func_8015EDD4(); -extern void func_8014A4FC(void); -extern s32 func_8014A674(s32 *a0); -extern s32 func_8014A69C(s32 *a0); -extern s32 func_8014A6C4(s32 a0); -extern void func_8015E184(); -extern void func_8014A830(void); -extern s32 func_80029AF4(void); -extern s32 func_8014A850(s32 param_1); -extern void func_8014AA04(s32 a0); -extern void func_801599A4(void *a0); -extern void func_80159B3C(void *a0); -extern s32 func_80165A20(s32 a0); -extern void func_8014AB7C(); -extern void func_8014AC10(); -extern void func_8014AA28(void); -extern void func_8014AB5C(void); -extern void func_80162CCC(void); -extern void func_8014AB7C(s32 arg0); -extern void func_8014ABF0(void); -extern void func_80016714(void *a0, s32 a1); -extern void func_8014AC10(s32 arg0); -extern void func_8014ACC0(s32 a0, s32 a1); -extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); -extern void func_8014ACE8(void *a0, s32 a1, s32 a2); -extern void func_80146AFC(void *a0); -extern void func_8014ADA8(s32 a0, s32 a1); -extern void func_8014AD7C(s32 a0); -extern s32 D_80078E8C; -extern void func_8014B034(s32 arg0); -extern void func_8014B00C(s32 arg0); -extern void func_8014B084(void); -extern s16 D_80078E90; -extern void func_8014B034(s32 a0); -extern u8 D_80078EBA; -extern void func_800D10EC(void); -extern void func_8002AC98(void); -extern s32 func_8014B154(s32 *a0); -extern void func_8014B12C(void); -extern void func_8014B2F8(void); -extern void func_8014B4C4(void); -extern void func_8014B160(s32 a0); -extern s32 func_8016F1C4(void); -extern s16 D_80078E96; -extern s16 D_80078EB8; -extern u16 D_80078EA6; -extern void func_8014B2A8(void); -extern void func_8014B310(void); -extern void func_8014B2D0(void); -extern s32 D_80078E94; -extern s32 D_80078ECC; -extern void func_8014B33C(void); -extern u8 D_80062BF4[]; -extern void func_8014BC80(s32 a0, s32 a1); -extern void func_80019064(void *a0); -extern s32 D_80078E98; -extern void func_80166244(); -extern void func_8014B4D4(void *a0); -extern s16 D_80078E9A; -extern u8 D_80126D1C; -extern s32 D_80126D74; -extern void func_8014B598(s32 a0, s32 a1); -extern void func_8014B5B0(s32 *a0); -extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); -extern void func_8014B5D8(s32 s1); -extern s32 D_80078E9C; -extern s32 D_80078ED0; -extern void func_8014B6F0(s32 a0, s32 a1); -extern void func_8014B768(s32 a0, s32 a1); -extern void func_8014B944(s32 a0, s32 a1, s32 a2); -extern s32 D_80078EA4; -extern u16 D_80078EB2; -extern s16 D_80078EB4; -extern void func_8014BB0C(void); -extern void func_8014BB24(s32 a0, s32 a1, s32 a2); -extern void func_8014BC0C(s32 a0, s32 a1); -extern void func_8014BC44(s32 a0, s32 a1); -extern u8 D_800B9A17; -extern void func_8014BCC0(s32 a0, s32 a1); -extern u16 D_80078EB6; -extern s32 func_8014BCEC(s32 a0, s32 a1); -extern void func_8014BD24(s32 a0, s32 a1); -extern void func_8014BD60(s32 param_1, s32 param_2); -extern void func_8014BD98(s32 a0, u16 a1); -extern void func_8014BDC8(void); -extern void func_8014BDE0(void); -extern s32 func_8017267C(s32 *a0); -extern s32 func_80013294(void *a0, void *a1); -extern void func_80029ED4(s32 a0); -extern void func_8014BDE8(s32 a0); -extern void func_8014BE78(void); -extern void func_8014BE9C(void); -extern void func_80029124(s32 a0, s32 a1); -extern void func_8014BEC0(void); -extern void func_8014BF18(s32 a0); -extern void func_8014BF48(void); -extern u8 func_8014BF6C(void); -extern void func_8014BF8C(u8 arg0); -extern void func_8014BFB0(void); -extern u8 func_8014BFD4(void); -extern void func_8014BFF4(s32 a0, s32 a1); -extern void func_8014C010(s32 a0, s32 a1); -extern s32 func_8014C050(s32 a0, s32 a1); -extern s32 func_8014C088(s32 a0, s32 a1); -extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); -extern s32 func_8014C118(void * a0, s32 a1, s32 a2); -extern s32 func_8014C168(s32 * param_1, s32 param_2); -extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); -extern u8 D_8018EE54[]; -extern void func_8014C1A0(s32 arg0, s32 arg1); -extern s32 func_80013328(s32 a0, s32 a1); -extern s32 func_8014C59C(void *a0, void *a1); -extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); -extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); -extern s32 ratan2(s32 dx, s32 dy); -extern u8 D_8018EE5C; -extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); -extern s16 func_8014C5D0(s32 a0, s32 a1); -extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); -extern u8 D_80126D17; -extern void func_8014C6AC(void); -extern void func_8014C6C0(void); -extern u8 D_80126D1E; -extern void func_8014C6D0(void); -extern void func_8014C6E0(void); -extern s32 func_8014C860(s32 a0, s32 a1); -extern void func_8014C8C8(s32 a0, s32 *a1); -extern void func_8014C88C(s32 a0); -extern void func_8014C8C8(s32 dst, s32 * src); -extern void func_8014C8F0(s32 arg0); -extern u8 D_801151F0[]; -extern s32 func_8014C918(s32 a0, s32 a1); -extern s32 D_80126B50; -extern void func_8014C968(void); -extern void func_8014C978(void); -extern s32 func_8014C98C(void); -extern void func_80139914(s32 a0); -extern s32 func_8014CA00(s32 a0); -extern u16 func_8014CA70(s32 a0, s32 a1); -extern s32 func_8014CA14(s32 a0, s32 a1); -extern u16 func_8014CAE4(s32 *a0, s32 a1); -extern s32 func_8014CA88(s32 *a0, s32 a1); -extern s32 func_8014CAFC(void); -extern s32 func_8014CB0C(void); -extern s32 func_8014CB1C(void); -extern u8 D_80126D1F; -extern s32 func_8014CB2C(void); -extern s32 func_8014CB58(void); -extern u8 D_80126D1D; -extern void func_8014CB68(void); -extern s32 func_8014CB7C(void); -extern s32 func_8014CB8C(void); -extern short D_80126C9E; -extern void func_8014CB9C(struct Packed8 *a0); -extern s32 D_80126CDC; -extern void func_8014CBD8(void); -extern s16 D_80126CC4; -extern void func_8014CBE8(void); -extern void func_8014CBF8(void *a0); -extern void func_8014D3E0(s32 a0); -extern void func_8014D04C(void); -extern void func_8014CCB4(void); -extern void func_8014CC28(s32 a0); -extern void func_8014CD0C(u8 *a0); -extern s32 func_8014CF04(s32 a0, s32 a1, void *a2); -extern void func_8014CD80(s32 a0, void *a1, void *a2); -extern void func_8014D0A4(s32 a0); -extern s32 func_8014D2A0(s32 a0, void *a1, void *a2); -extern s32 func_8014D12C(s32 a0, void *a1, void *a2); -extern void func_8014D438(s32 a0); -extern void func_8014D3E0(s32 _arg0); -extern void func_8014D610(s32 a0, void *a1, void *a2); -extern s32 func_8014D4C0(s32 a0, void *a1, void *a2); -extern void func_8014D790(s32 a0); -extern void func_8014D738(void); -extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); -extern s32 func_8014D820(s32 a0, u16 *a1, u16 *a2); -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); -extern void func_8014DF94(s32 arg0); -extern void func_8014DF3C(void); -extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ -extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ -extern s16 D_801152AC; -extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); -extern void func_8014E48C(s32 a0); -extern void func_8014E434(void); -extern void func_8014E5B4(s32 a0, void *a1, void *a2); -extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); -extern void func_8014E6F8(struct SubE6F8 *a0); -extern void func_8014E6A0(void); -extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); -extern void func_8014E934(s32 _arg0); -extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); -extern s32 func_8014E98C(void *a0); -extern u16 D_800B99DA; -extern s32 D_801150D8; -extern s16 D_801152AA; -extern u8 D_80126720[]; -extern s16 D_80126724; -extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); -extern s32 func_8014ED80(struct SubED80 *a0); -extern int D_801E5BA8; -extern void func_8014ED28(s32 _arg0); -extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F24C(struct SubF24C *a0); -extern void func_8014F1F4(void); -extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F4C0(); -extern s32 func_8014F468(void); -extern int func_8014F74C(); -extern int func_8014F6F4(void); -extern u8 D_800D3918[]; -extern u8 D_801152A8[]; -extern s32 D_801152BC; -extern int func_8014F74C(s32 arg0); -extern s32 func_8014FA70(s32 a0); -extern s32 D_801E5BAC; -extern void func_8014FA04(s32 a0); -extern s32 func_8014FBC0(); -extern s32 func_8014FC18(u8 *self); -extern int func_8014FD54(int param_1); -extern void func_8014FCFC(void); -extern void func_80150170(void *a0); -extern s32 func_8014FE60(void *a0); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_8014FE60(void *e); -extern s32 func_80134510(s32 arg); -extern s32 func_80150150(s32 a, s32 b); -extern s32 func_80150460(s32 a, s32 b); -extern void func_801504D8(u16 *a0); -extern s32 func_80150480(s32 _arg0); -extern s32 func_80150528(void *a0, void *a1, void *a2); -extern s32 func_80150528(void *arg0, void *arg1, void *arg2); -extern s32 func_801506A4(s32 a0, s32 a1); -extern s32 func_801505FC(s32 a0); -extern s32 func_801506A4(s32 arg0, s32 arg1); -extern void func_80150820(s32 a0, s32 a1); -extern void func_8015086C(int param_1); -extern s32 func_801508B4(s32 a0); -extern s32 func_8015094C(s32 a0); -extern short func_801508F8(s32 a0); -extern s32 D_8018EE8C; -extern s32 D_80126990; -extern s32 D_80126994; -extern s32 func_80021174(s32 a0, s32 a1); -extern s32 func_8015094C(s32 param_1); -extern void func_80150B9C(void); -extern s32 func_80151184(s32 a0, s32 a1, s32 a2); -extern s32 func_80150BA4(s32 a0); -extern s32 func_801619D0(void *a0); -extern void func_80150BC8(s32 *a0); -extern s32 func_80150480(s32 a0); -extern u16 D_800AE6DC; -extern void func_80150C48(s32 a0); -extern int func_80151184(int arg, int a1, int a2); -extern int func_80150CA0(int arg); -extern void func_80150EC4(s32 a, s32 b); -extern void func_80150CC4(s32 a); -extern void func_80150CE4(s32 a); -extern void func_80150D04(s32 a); -extern void func_80150D24(s32 a); -extern void func_80150D44(s32 a); -extern void func_80150D64(s32 a); -extern void func_80150D84(s32 a); -extern void func_80150DA4(s32 a); -extern void func_80150DC4(s32 a); -extern void func_80150DE4(s32 a); -extern void func_80150E04(s32 a); -extern void func_80150E24(s32 a); -extern void func_80150E44(s32 a); -extern void func_80150EC4(s32 a0, s32 a1); -extern void func_80150E64(s32 a0); -extern void func_80150E84(s32 a0); -extern void func_80150EA4(s32 a0); -extern u8 D_800AE6C0; -extern s16 D_800AE6C8; -extern s16 D_800AE6CA; -extern s16 D_800AE6CC; -extern s32 D_800AE6C4; -extern s16 D_800AE6CE; -extern u8 D_800AE6BE; -extern u8 D_801201F8[]; -extern void func_80150F78(void); -extern void func_80150F80(s32 a0); -extern int func_80150FB4(int arg); -extern void func_80150FD8(s32 a0); -extern int func_80151014(int arg); -extern void func_80151038(s32 a0); -extern int func_80151070(int arg); -extern int func_80151094(int arg); -extern void func_801510B8(void); -extern void func_801510C0(void); -extern int func_801510C8(int arg); -extern int func_801510EC(int arg); -extern s32 func_8012DB84(void); -extern s32 func_80151110(void); -extern void func_80151130(void); -extern int func_80151138(int arg); -extern void func_8015115C(s32 *a0, s16 a1); -extern s32 func_80151164(s32 a0, s32 a1); -extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); -extern void func_801511A8(u8 *a0); -extern void func_801511C4(u8 *a0); -extern int func_80151204(int arg, int a1); -extern int func_801511E0(int arg); -extern int func_80151204(int a0, int a1); -extern void func_80151238(void *a0); -extern void func_8015126C(u16 *p); -extern void func_80151780(s32 a0); -extern void func_801516F0(s32 *a0); -extern void func_8015173C(s32 *a0); -extern s16 D_8011DB1A; -extern s32 D_80127518; -extern s32 D_801151FC; -extern s32 func_801725CC(u8 *a0); -extern s32 func_80029D3C(void); -extern void func_80151878(void); -extern void func_80153B58(s32 *a0); -extern s32 func_80151880(s32 a0); -extern s32 func_801518D8(s32 a0); -extern s32 func_80151944(void); -extern s32 func_80151924(void); -extern void func_8014E934(s32 a0); -extern s32 func_8014F3E8(s32 a0); -extern void func_801519C8(s32 a0); -extern void func_80151980(s32 a0); -extern M2C_UNK D_800D5880; -extern s32 D_800D58AC; -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801519C8(s32 arg0); -extern void func_80151C54(s32 a0); -extern void func_801542DC(s32 *a0, s32 a1); -extern void func_8015BDD0(s32 *a0); -extern void func_80165718(s32 a0); -extern u8 D_800D46E4[]; -extern void func_80151AE4(s32 arg0); -extern void (*D_8018EF34[])(void); -extern void func_80151D24(void *a0); -extern void func_80151DB0(s32 a0); -extern void func_80151D60(void *a0); -extern s32 func_80172630(u8 *a0); -extern s32 D_80062C14; -extern void func_80151DB0(s32 param_1); -extern void func_80151E78(s32 *a0); -extern void func_80151ECC(struct S80151ECC *a0); -extern void func_80151FB4(s32 a0); -extern void func_80151F38(s32 *a0); -extern void func_801553C0(s32 a0); -extern void func_80153C18(); -extern void (*D_8018EF58[])(void); -extern void func_80152058(void *a0); -extern void func_801520DC(s32 a0); -extern void func_80152094(s32 a0); -extern void func_80147324(s32 a0); -extern u8 D_80062C04[]; -extern M2C_UNK D_8018EF48; -extern void func_801520DC(s32 arg0); -extern void func_801470B4(s32 a0); -extern void func_8015369C(s32 a0); -extern void func_80152194(s32 *a0); -extern s32 func_801536DC(s32 a0); -extern void func_8015220C(s32 a0); -extern s32 func_80153800(s32 a0); -extern void func_801522CC(s32 a0); -extern void func_80152254(s32 *a0); -extern void (*D_8018EF6C[])(void); -extern void func_80152370(void *a0); -extern void func_801523F4(s32 a0); -extern void func_801523AC(s32 a0); -extern void func_8001382C(s32 a0, void *a1, void *a2); -extern u8 D_8018EF78[]; -extern void func_801523F4(s32 arg0); -extern void func_801525F4(int); -extern s32 func_801535F4(void *arg0); -extern void func_8015BF48(s32 *a0); -extern void func_80152500(int param_1); -extern void func_801525F4(s32 a0); -extern void (*D_8018EF88[])(void); -extern void func_80152698(void *a0); -extern void func_80152714(s32 a0); -extern void func_801526D4(s32 a0); -extern void func_80152790(s32 a0); -extern void (*D_8018EFA0[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018EF90; -extern void func_801528B0(s32 arg0); -extern void func_8015294C(s32 a0); -extern void func_80152A08(s32 a0); -extern void func_80152AC8(s32 a0); -extern void func_80152A50(s32 *a0); -extern void (*D_8018EFB4[])(void); -extern void func_80152B6C(void *a0); -extern void func_80152BF0(s32 a0); -extern void func_80152BA8(s32 a0); -extern void func_80152C80(s32 *a0); -extern void func_80152C40(s32 *a0); -extern void (*D_8018EFD0[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018EFC0; -extern void func_80152DA8(s32 arg0); -extern void func_80152E4C(s32 a0); -extern void func_80152EFC(s32 a0); -extern void func_80152FBC(s32 a0); -extern void func_80152F44(s32 *a0); -extern void (*D_8018EFE4[])(void); -extern void func_80153060(void *a0); -extern void func_801530E4(s32 a0); -extern void func_8015309C(s32 a0); -extern void func_80155440(s32 *a0); -extern void func_801530E4(s32 arg0); -extern void func_80153150(struct S80153150 *a0); -extern void func_801531BC(s32 a0); -extern void func_8015327C(s32 a0); -extern void func_80153204(s32 *a0); -extern void (*D_8018EFF8[])(void); -extern void func_80153320(void *a0); -extern void func_801533A4(s32 a0); -extern void func_8015335C(s32 a0); -extern void func_80153410(s32 *a0); -extern void func_80153490(s32 a0); -extern void func_80153550(s32 a0); -extern void func_801534D8(s32 *a0); -extern void (*D_8011DB28)(s32 a0); -extern s32 func_801536DC(s32 param_1); -extern void func_800139C8(s32 a0, void *a1, void *a2); -extern s32 func_80153978(s32 a0, u16 *src); -extern s32 func_80133784(s32 a0, void *src, s32 dst); -extern s32 func_801539F8(s32 a0, void *a1); -extern s32 func_801539F8(s32 a0, void * a1); -extern s32 func_8016DA04(s32 a0); -extern s32 func_80153BD8(s32 a0); -extern s32 func_80153BF0(s32 a0); -extern void func_80153C18(void); -extern u16 D_8011F748; -extern void func_80153C30(void); -extern void func_80153C74(s16 a0, s16 a1); -extern s16 D_8011DB18; -extern void func_80153C44(int a0, int a1, s16 a2); -extern s16 D_8011DB0C; -extern s32 D_80115210; -extern void func_80153C8C(void); -extern void func_80153C9C(void); -extern s32 func_80153CBC(void); -extern s32 D_8018F00C; -extern void (*D_8018F034[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018F014; -extern void func_80153D7C(s32 param_1); -extern void func_8015410C(void); -extern void func_80153E00(s32 param_1); -extern void func_80151664(void); -extern void func_80154134(u8 *a0); -extern void func_80154190(u8 *a0, s32 a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154218(u8 *a0, s32 a1, s32 a2); -extern void func_801541D8(u8 *a0, s32 a1, s32 a2); -extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); -extern void func_801542A4(); -extern void func_801542A4(s32 *a0, s32 a1); -extern void func_8015430C(); -extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); -extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); -extern s32 func_80154358(void * arg0); -extern void func_80154AB4(s32 a0, s32 a1); -extern void func_80154B20(s32 a0, s32 a1, s32 a2); -extern void func_80154AE0(s32 a0, s32 a1, s32 a2); -extern void func_80154B7C(u8 *a0, s32 a1); -extern void func_80154B4C(u8 *a0, s32 a1); -extern void func_80154BC8(void *a0, s32 a1, s32 a2); -extern void func_80154B98(void *a0, s32 a1, s32 a2); -extern u8 D_800D8D10[]; -extern s16 D_80078E9E; -extern void func_801550FC(s32 a0); -extern void func_80154ED8(s32 a0, s32 a1); -extern void func_80154F9C(s32 a0); -extern void func_800183E0(s32 a0); -extern void func_801550FC(s32 arg0); -extern void func_8001D150(s32, s32); -extern void func_8001D130(int, int); -extern void func_80155150(int param_1); -extern s32 D_800DE2A4[]; -extern void func_801552F4(s32 a0); -extern void func_80155344(s32 a0); -extern s32 func_80155394(s32 *a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80029178(s32); -extern int (*D_8018F080[])(void); -extern s32 func_80155458(s32 param_1); -extern s32 func_801659DC(u8 *a0); -extern s32 func_801554B8(void *arg0); -extern void func_801555F4(void *a0); -extern void func_80155518(s32 *a0); -extern void func_80155580(void *a0); -extern void (*D_8018F084[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern s32 func_80029B4C(s32 a0, s32 a1); -extern s32 func_80029BC8(s32 a0, s32 a1); -extern s32 func_80029C44(s32 a0, s32 a1); -extern s32 func_8015640C(s32 a0, s32 a1); -extern s32 rand(void); -extern u32 func_8015616C(s32 param_1, u16 param_2); -extern u16 func_80156370(u16 param_1); -extern s32 func_801564B0(s32 a0); -extern s32 func_8002A1B4(void); -extern s32 func_8002A400(void); -extern s32 func_8002A670(void); -extern s32 func_8002A8E0(void); -extern s32 D_801151E0[]; -extern s32 func_801565C0(void); -extern void func_80156A14(s32 *a0); -extern void func_80156648(s32 *a0); -extern u8 D_8011DAD8[]; -extern s32 func_8014C568(s16 *a0, s16 *a1); -extern void func_801567BC(s32 a0); -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018F4E8[]; -extern void func_80156A1C(s32 param_1, s32 param_2); -extern s32 D_801150E0[]; -extern void func_80156A88(s32 a0, s32 a1); -extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); -extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); -extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); -extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern s32 func_80135004(s32 a0, void *a1, s32 a2); -extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801575E4(void *a0); -extern void func_801574DC(s32 *a0); -extern void func_80157544(void *a0); -extern void (*D_8018F4F8[])(void); -extern void func_8014CC28(s32 a0); /* defined */ -extern s32 func_8014F3E8(s32 a0); /* declared */ -extern void func_8015BDD0(s32 *a0); /* defined */ -extern void func_801575E4(void *a0); /* defined */ -extern void func_80157580(s32 arg0); -extern u8 D_800D4F14[]; -extern void func_801576A8(void *arg0); -extern s32 func_8015773C(u8 *a0); -extern s32 func_8015771C(u8 *a0); -extern s32 func_8015773C(u8 * arg0); -extern int D_801E5BE0; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018F520[])(void); -extern void func_80157808(void *param_1); -extern void func_80157880(s32 a0); -extern s32 func_801725A4(u8 *a0); -extern u8 D_800D5128; -extern u8 D_8018F500; -extern void func_801578C0(s32 param_1); -extern void func_80147A84(int); -extern void func_80148038(int, int); -extern void func_80147460(int); -extern void func_80146D90(int); -extern void func_80161450(void *a0); -extern void func_80157A8C(int); -extern void func_80154A74(int, int); -extern unsigned char D_800D5178; -extern unsigned char D_8018F510; -extern void func_8015795C(int param_1); -extern void func_80161D20(s32 a0, s32 a1); -extern void func_80157A8C(s32 a0); -extern void func_8016706C(s32 a0); -extern u8 D_800D51AC[]; -extern void func_80157AC8(s32 param_1); -extern void func_80157B74(int param_1); -extern void func_8016158C(void *a0); -extern void func_8015BE04(s32 *a0); -extern void func_80157BC8(s32 a0); -extern void func_80157CCC(s32 a0); -extern void func_80157DC4(void *a0); -extern void func_80157FC4(void *a0); -extern void func_80157D74(u16 *a0); -extern void (*D_8018F560[])(void); -extern void func_80157E38(void *); -extern void func_80157E00(void *a0); -extern void func_80157E38(void * a0); -extern s32 func_80157F64(s32 *a0); -extern s32 func_80156600(void *a0); -extern void func_80157EA4(void *a0); -extern void (*D_8018F568[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018F534; -extern void func_80158038(void * param); -extern u8 D_800D524C[]; -extern void func_80161418(void *a0); -extern void func_801580B4(s32 a0); -extern void func_801581AC(s32 a0); -extern void (*D_8018F574[])(void); -extern void func_8015824C(void *a0); -extern void func_801582C0(void *); -extern void func_80158288(void *a0); -extern u8 D_800D52A8[]; -extern void func_801585A4(s32 *a0); -extern void func_801582C0(void *a0); -extern s32 func_801585AC(s32 *a0); -extern u8 D_800D52E8[]; -extern void func_80158344(s32 *a0); -extern s32 func_801615C4(void *a0, s32 a1); -extern u8 D_8018F544; -extern u8 D_800D533C; -extern void func_80158434(s32 param_1); -extern void func_80158548(s32 param_1); -extern void func_801585EC(u8 *a0); -extern void func_80158794(void); -extern s32 D_801E5BE8; -extern s32 D_801E5BF4; -extern s32 D_801E5BF8; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018F5B0[])(s32 *); -extern void func_80158AE4(void *a0); -extern void func_80158AB4(void *a0); -extern void func_8016F264(void); -extern void func_80165840(void); -extern void func_801658DC(void); -extern void func_80165A78(s32); -extern void func_80158AE4(void * a0); -extern M2C_UNK D_800D58D8; -extern void func_80158BB0(void *arg0); -extern s32 func_80159404(s32 a0, s32 a1); -extern void func_80158C40(s32 *a0); -extern void func_80158CD8(s32 *a0); -extern s32 func_80159434(s32 a0, s32 a1); -extern void func_80158D60(s32 a0); -extern M2C_UNK D_800D5904; -extern void func_80158E24(s32 *a0); -extern s32 D_8018F584[]; -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80158F00(int param_1); -extern u8 D_80110C3C[]; -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80158FA4(s32 param_1); -extern s32 func_801399F0(s32 a0); -extern u8 D_80110C94[]; -extern u8 D_80110CD4[]; -extern void func_80159070(void *a0); -extern s32 func_80029A94(s32); -extern void func_80175454(void); -extern void func_800298BC(void *); -extern void func_8002992C(s32); -extern void func_800CF804(void); -extern void func_800CF818(void); -extern u8 D_80110D0C[]; -extern void func_80159120(s32 a0); -extern void func_801592CC(s32 *a0); -extern u8 D_800AE6BD; -extern s32 D_801E5BF0; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018F800[])(void); -extern void func_80159698(void *a0); -extern s32 func_801596D4(void *a0); -extern void func_80174B6C(void); -extern void func_80129248(s16 a0); -extern void func_8013C938(void); -extern void func_8013CB20(void); -extern void func_8013C98C(void); -extern void func_8002850C(s32, s32, s32); -extern void func_80028620(s32, void *); -extern s16 D_800B9AAC[]; -extern s16 D_800B9B00; -extern u16 D_801270C0; -extern u32 D_800AFAE8[]; -extern char D_8018F620[]; -extern s32 func_801596F0(s32 param_1); -extern s32 func_80159874(void); -extern void func_800167B8(s32 a0); -extern s32 func_8015987C(s32 a0); -extern int func_800167F0(int arg); -extern int func_801598BC(void); -extern void func_80159968(void *a0); -extern void func_801598E0(u8 *a0); -extern void (*D_8018F8A4[])(void); -extern void func_80159A20(void *a0); -extern void func_801599E0(void *a0); -extern void func_80159A18(void); -extern void func_80159BE4(s32); -extern void func_80159B08(s32 *a0); -extern void func_80159B70(void *a0); -extern void func_80159B3C(void * a0); -extern void (*D_8018F9F8[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018F814; -extern void func_80159BE4(s32 arg0); -extern void func_8015A1C8(s32 a0); -extern void func_8015A2D8(s32); -extern void func_8015A1FC(s32 *a0); -extern void func_8015A264(void *a0); -extern void func_8015A230(s32 *a0); -extern void (*D_8018FA00[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018F824; -extern s32 func_80172608(u8 *a0); -extern void func_8015A2D8(s32 param_1); -extern u8 D_800D48DC; -extern s32 func_8015AB7C(s32 a0); -extern s32 D_8011F9C4; -extern s32 func_8015ABD4(s32 a0, s32 a1, s32 a2); -extern s32 func_80161CD0(s32 a0, s32 a1); -extern M2C_UNK D_8018F844; -extern void func_8015AC48(s32 arg0); -extern void func_8015AC90(s32 a0); -extern void func_8015ADB0(s32 a0); -extern void func_8015ACC4(s32 *arg0); -extern void func_8015AD3C(void *a0); -extern void func_8015AD08(void *arg0); -extern void (*D_8018FA08[])(void); -extern void func_8015ADB0(s32); -extern void func_8015AD78(s32 a0); -extern void func_8015ADB0(s32 arg0); -extern s32 D_800D4A9C; -extern int func_8015B6F4(int param_1); -extern u8 D_800D4F8C[]; -extern s32 func_8015B7B4(s32 a0); -extern u8 D_800D4BE0[]; -extern s32 func_8014A51C(void); -extern s32 func_8015B858(u8 *a0); -extern s32 D_800D4B48; -extern void func_8015B8F8(s32 *a0); -extern void func_8015BD8C(s32 *a0); -extern s32 func_8015BE94(); -extern void func_8015BE38(struct Obj *a0); -extern s32 func_8015BE74(void); -extern void func_80161124(void *a0); -extern s32 func_8015BE94(s32 *a0); -extern s32 func_8015AE2C(); -extern s32 func_8015BEC4(void); -extern s32 func_8015B950(s32 arg0); -extern s32 func_8015BEE4(void); -extern void func_8015BF04(s32 *a0); -extern void func_8015C0C4(s32 a0); -extern void func_8015BFF4(void *a0); -extern void func_8015BF7C(s32 *a0); -extern void func_8015C030(s32 *a0, s32 a1); -extern void func_8015BFB0(s32 *a0, s32 a1); -extern void (*D_8018FA30[])(void); -extern void func_8015C0C4(s32); -extern void func_8015C08C(s32 a0); -extern s32 func_8015C128(s32 param_1); -extern void func_8015C6A4(void); -extern void func_8015C788(s32 a0); -extern void func_8015C6AC(s32 *a0); -extern void func_8015C714(void *a0); -extern void func_8015C6E0(s32 *a0); -extern void (*D_8018FA3C[])(void); -extern void func_8015C788(s32); -extern void func_8015C750(s32 a0); -extern void func_8015CB94(s32 a0); -extern void func_8015CBCC(void); -extern void func_8015CBD4(void); -extern void func_8015CBDC(void); -extern void func_8015CBE4(void); -extern void func_8015CBEC(void); -extern void func_8015CBF4(void); -extern void func_8015CBFC(void); -extern void func_8015CC04(void); -extern void func_8015CC0C(s32 *param_1); -extern void func_8015CC74(s32 *a0); -extern void func_8015CC40(s32 *a0); -extern s32 func_8015CCD0(); -extern s32 func_8015CCB0(void); -extern s32 func_801725E0(u8 *a0); -extern s32 func_8015CCD0(s32 param_1); -extern s32 func_8015CD20(s32 arg0); -extern void func_8015CF24(s32 a0); -extern void func_8015D01C(); -extern void func_8015CF58(s32 *param_1); -extern void func_8015CFC0(s32 *a0); -extern void func_8015CF8C(s32 *a0); -extern void func_8015CFFC(void); -extern void func_8015D01C(int param_1); -extern void (*D_8018F8B0[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018FAE0; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018EBC4[]; -extern void func_8015D414(int param_1); -extern void func_8015D57C(s32); -extern void func_8015D480(s32 *a0); -extern s32 func_8015D4E8(s16 *a0); -extern void func_8015D4B4(s16 *a0); -extern void func_8015D524(s32 arg0); -extern void func_8015D544(s32 a0); -extern void func_801746DC(void); -extern void func_8015D57C(s32 arg0); -extern s32 func_80161B18(void *a0); -extern s32 func_80161B84(void *a0); -extern void func_80154150(int, int); -extern void func_80149374(int, int); -extern unsigned char D_8018FAF4[]; -extern void func_8015D5E8(int param_1); -extern int func_8015E0D4(int); -extern void func_8015DA5C(s32 a0); -extern void func_8015DB6C(s32 a0); -extern void func_8015DA90(s32 *a0); -extern void func_8015DAF8(s32 *a0); -extern void func_8015DB6C(s32); -extern void func_8015DB34(s32 a0); -extern void func_8015DCB8(s32 a0); -extern void func_8014BD60(s32 a0, s32 a1); -extern int func_8015DD74(int); -extern void func_8015DBD4(void *arg0); -extern int func_8015DC84(int a0); -extern s8 D_8018FB30[]; -extern void func_8015DCB8(s32 param_1); -extern int func_8015DD74(int arg0); -extern void func_8015DECC(s32 a0); -extern void func_8015DDF0(s32 *a0); -extern void func_8015DE58(s32 *a0); -extern void func_8015DECC(s32); -extern void func_8015DE94(s32 a0); -extern void func_8015E018(s32 a0); -extern void func_8015DF34(void *arg0); -extern int func_8015DFE4(int a0); -extern void func_8015E018(s32 param_1); -extern int func_8015E0D4(int a0); -extern void func_8015E22C(s32 a0); -extern void func_8015E150(s32 *a0); -extern s32 func_8015E1B8(s32 a0); -extern void func_8015E184(s32 *arg0); -extern void func_8015E22C(s32); -extern void func_8015E1F4(s32 a0); -extern u8 D_800D4FF4[]; -extern u8 D_800D5098[]; -extern u8 D_800D5060[]; -extern s32 func_8014A850(s32 a0); -extern void func_8015E40C(s32 a0); -extern void func_8015E588(void); -extern void func_8015E4B0(s32 a0); -extern void func_8015E288(s32 a0); -extern u16 D_8018FB78; -extern u16 D_8018FB7A; -extern u16 D_8018FB7C; -extern s32 D_8018FB80; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -extern void func_8013C9C4(void *a0); -extern s32 D_8018FB88; -extern void func_8015E5B0(u8 *self); -extern void func_8015E714(s32 *a0); -extern void func_8015E95C(s32); -extern void func_8015E84C(s32 *a0); -extern void func_8015E8E8(s32 *a0); -extern void func_8015E9B8(s32 *a0); -extern void func_8015E8B4(s32 *a0); -extern void func_8015E924(s32 a0); -extern void func_8015E95C(s32 a0); -extern s16 D_801152A0; -extern void func_80160818(s32 *a0); -extern void func_8015ED6C(s32 *a0); -extern void func_8015EE7C(s32); -extern void func_8015EDA0(s32 *a0); -extern s32 func_8015EE08(s32 a0); -extern void func_8015EDD4(s32 *arg0); -extern void func_8015EE44(s32 a0); -extern int D_800D4C48; -extern int D_8018F894; -extern void func_8015EE7C(s32 param_1); -extern void func_8015EEE0(void *arg0); -extern void func_8015EF9C(void); -extern void func_8015F080(s32); -extern void func_8015EFA4(s32 *a0); -extern void func_8015F00C(s32 *a0); -extern void func_8015EFD8(s32 *a0); -extern void func_8015F048(s32 a0); -extern void func_8015F080(s32 a0); -extern s32 D_80062BE8; -extern void func_801466F0(s32, s32, s32, s32, s32, s32, s32, s32); -extern s32 func_80161208(void); -extern void func_8015F118(void *a0); -extern void func_8015F260(s32 *a0); -extern void func_8015F380(); -extern void func_8015F2BC(s32 *a0); -extern void func_8015F324(s32 *a0); -extern void func_8015F2F0(s32 *a0); -extern void func_8015F360(void); -extern s32 func_801725B8(u8 *a0); -extern void func_8015F380(void* arg0); -extern void func_8015F738(s32 *a0); -extern void func_8015F848(s32 *a0); -extern void func_8015F76C(s32 *a0); -extern s32 func_8015F7D4(s32 a0); -extern void func_8015F7A0(s32 *arg0); -extern void func_8015F810(s32 *a0); -extern void func_80147078(s32 *, s16); -extern void func_80159B70(void *); -extern void func_8015F89C(void *arg0); -extern void func_8015F948(s32 *param_1); -extern void func_8015F9A4(void *arg0); -extern void func_8015FA24(s32 arg0); -extern void func_8015FBE0(s32 *a0); -extern void func_8015FA44(s32 *a0); -extern void func_8015FAAC(s32 *a0); -extern void func_8015FA78(s32 *a0); -extern s32 func_801612B8(void *a0, s32 a1); -extern void func_8016007C(s32 a0); -extern void func_8015FAE8(void *arg0); -extern void func_8015FCC8(void *param_1); -extern unsigned int D_8018FC0C[]; -extern void func_8015FD74(int param_1); -extern s32 func_80028DE0(void); -extern u8 func_80165700(s32 a0, s32 a1); -extern void func_8015FDCC(s32 a0); -extern u8 D_80078EC2; -extern u8 func_801656E8(s32 a0, s32 a1); -extern void func_80165670(s32 a0, s32 a1); -extern void func_8016004C(s32 a0); -extern void func_8015FF20(void *param_1); -extern void func_801601AC(s32 *a0); -extern void func_801600D0(s32 *a0); -extern void func_80160138(s32 *a0); -extern void func_80160104(s32 *a0); -extern void func_80160174(s32 *a0); -extern void func_801601E4(s32 *a0); -extern void func_80160244(s32 *a0); -extern void func_8016032C(void); -extern void func_80160410(s32 *a0); -extern void func_80160334(s32 *a0); -extern void func_8016039C(s32 *a0); -extern void func_80160368(s32 *a0); -extern void func_801603D8(s32 *a0); -extern u8 D_80062BD0; -extern void func_80160410(s32 * a0); -extern void func_801607B8(s32 *a0); -extern void func_801608C0(s32 *a0); -extern void func_801607E4(s32 *a0); -extern void func_8016084C(s32 *a0); -extern void func_80160888(s32 *a0); -extern void func_80160A28(s32 a0); -extern void func_80160A74(s32 *a0); -extern void func_80160BB4(s32 *a0); -extern void func_80160ACC(s32 *a0); -extern s32 func_80160B34(s32 a0); -extern void func_80160B00(s32 *arg0); -extern void func_80160B70(s32 a0); -extern void func_80160C28(void *arg0); -extern void func_80160CB4(s32 *a0); -extern void func_80160D10(void *arg0); -extern void func_80160DEC(u8 *a0); -extern void func_80160F00(); -extern void func_80160E3C(s32 *a0); -extern void func_80160EA4(); -extern void func_80160E70(s32 *a0); -extern void (*D_8018FCBC[])(void); -extern void func_80160EA4(void *a0); -extern void func_80160EE0(void); -extern void func_80160F00(void* arg0); -extern void func_800D0F4C(s32 a0); -extern u8 D_80110EC0; -extern void func_80160F70(s32 a0); -extern void func_80160FE0(s32 *a0); -extern void func_80161034(void *a0); -extern void func_80161094(s32 a0); -extern void func_801610FC(void); -extern void func_801483E8(void); -extern s32 func_80161A60(s32 a0); -extern void func_8016130C(void *a0, s32 a1); -extern void func_80161240(void *a0); -extern void func_80161374(void *a0, s32 a1); -extern void func_80161278(void *a0); -extern s32 func_801612B8(void * a0, s32 a1); -extern void func_8016163C(void *a0, s32 a1); -extern void func_80161774(void *a0, s32 a1); -extern s32 func_8016197C(s32 a0, s32 a1); -extern s32 func_80161488(void *a0); -extern void func_80161888(void *a0, s32 a1); -extern void func_801614E4(void *a0); -extern void func_8016191C(void *a0, s32 a1); -extern void func_8016151C(void *a0); -extern void func_80161554(void *a0); -extern s32 func_801615C4(void * arg0, s32 arg1); -extern s32 func_801619A4(s32 *a0); -extern s32 func_80161A00(s32 a0); -extern s32 func_80161A30(s32 a0); -extern int func_801497A8(void); -extern int func_80161BE0(void *param_1); -extern u16 D_8018FCEC[]; -extern void func_80161C98(int param_1, u32 param_2); -extern void func_80161E08(s32); -extern s32 func_80162438(s32); -extern s32 D_800AE6A8; -extern void func_800D1734(void *); -extern s32 D_8018FD50; -extern void func_80161D88(void); -extern void func_80161E08(s32 param_1); -extern int func_800291DC(int); -extern int func_800D0E30(void *a0); -extern int func_801620C4(void); -extern s32 func_800D0D7C(s32, s32); -extern int D_801E5C00[]; -extern void func_8016216C(void); -extern s32 func_801621CC(s32 arg0); -extern void func_801622C4(void); -extern void (*D_8018FD74[])(void); -extern void func_80162330(void *a0); -extern void func_8014706C(void *a0); -extern s32 func_8016236C(u8 *a0); -extern void func_800D0C48(s32 a0); -extern s32 func_801623B8(s32 *a0); -extern s32 func_800167F0(s32 a0); -extern s32 func_80162414(void); -extern s32 func_80162438(s32 _unused0); -extern int func_801626B8(void); -extern void func_80162714(void); -extern int D_801E5C58[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018FDBC[])(void); -extern void func_80162834(void *a0); -extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80162968(s32 a0); -extern s32 func_80162ACC(u8 *a0); -extern u8 D_800B5CB8; -extern s32 D_8018FDAC; -extern s32 D_800B5CBC; -extern u8 D_800B5CDF; -extern s32 D_800B5CEC; -extern void func_80162870(s32 param_1); -extern void func_801628F4(s32 *a0); -extern void func_80162968(s32 param_1); -extern void func_80162AC0(s32 *a0, s8 a1); -extern s32 func_80162AE0(u8 *a0); -extern void func_80162AF4(void); -extern void func_80162CC4(void); -extern s32 D_80126D40; -extern void func_80162B1C(void); -extern void func_80162D28(s32 *a0); -extern void func_80162D88(s32 *a0); -extern void func_80162DE8(s32 *a0); -extern void func_80162E48(s32 *a0); -extern void func_80162EA8(s32 *a0); -extern void func_80162F60(s32 arg0, s32 arg1); -extern void func_80162F80(s32 arg0, s32 arg1); -extern void func_80162FA0(s32 arg0, s32 arg1); -extern void func_80162F08(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80162FC0(s32 *a0); -extern void func_80162FF4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801630C4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163194(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg4); -extern void func_8016325C(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163234(s32 a0); -extern s32 D_80115100; -extern s32 func_801632E0(void); -extern s32 D_80115200; -extern s32 func_801632F0(void); -extern u16 D_80126B18[]; -extern void func_80163328(void); -extern s32 func_801633A8(void); -extern s32 func_80163408(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void func_80163534(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, u16 * a5); -extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); -extern char D_801E5054[8]; -extern void *memcpy(void *dst, const void *src, unsigned int n); -extern void func_801634D8(s32 param_1, u16 param_2, u16 param_3, s32 param_4, u16 param_5); -extern void func_80157158(); -extern void func_80163664(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801636D0(s32 a0, s32 a1); -extern s32 func_8016380C(struct S8016380C *a0, s32 a1); -extern void *memcpy(void *dst, void *src, s32 n); -extern s32 func_801638A0(u8 *a0, s32 a1); -extern s32 func_80163950(s32 a0); -extern void (*D_8018FDC4[])(void); -extern void func_80163A58(void *a0); -extern void func_80163A94(s32 param_1); -extern void func_80163C2C(s32 param_1); -extern void func_80163EC8(s32 param_1); -extern void func_80164270(s32 *a0); -extern void func_80164418(void); -extern void func_80163764(s32 a0); -extern void func_801642AC(s32 a0); -extern void func_8016432C(s32 a0); -extern void func_80164410(void); -extern s32 func_80012DBC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164530(s32 arg0); -extern void (*D_8018FE18[])(void); -extern void func_80164744(s32 param_1); -extern void func_8001C810(s32 a0, s32 a1); -extern void func_80164A74(s32 *a0); -extern void func_80164930(s32 a); -extern u16 D_800DF2E0; -extern s32 D_8018FDE0; -extern s16 D_8018FE14; -extern s16 D_8018FE12; -extern s16 D_8018FE10; -extern void func_801647A4(int param_1); -extern void func_80164ACC(); -extern void func_80164864(void *a0); -extern void func_80164930(s32 param_1); -extern s32 func_8014C308(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164ACC(s32 a0); -extern void (*D_8018FE24[])(void); -extern void func_80164BA0(void *a0); -extern void func_8001CD50(s32 a0, s32 a1); -extern void func_800233CC(void *, unsigned short); -extern void func_80164DD0(s32 a0); -extern void func_80164DB0(void); -extern u8 D_801E5CB8; -extern u8 D_801E5CB9; -extern u8 D_801E5CBA; -extern u8 D_801E5CBB; -extern u8 D_801E5CBC; -extern u8 D_801E5CBD; -extern u8 D_801E5CBE; -extern u8 D_801E5CBF; -extern void func_80164BDC(s32 param_1); -extern void func_80164E40(void); -extern void func_80164CD4(u8 *a0); -extern void func_80164D4C(void *arg0); -extern void (*D_8018FE34[])(void); -extern void func_80164EA4(void *a0); -extern void func_80165124(void *a0); -extern void func_80164EE0(int param_1); -extern s32 func_80165140(s32 a0); -extern void func_801651B8(void *a0); -extern void func_80164F44(void *arg0); -extern void func_80165024(void *a0); -extern void func_80165064(s32 *a0); -extern void func_801650C4(s32 *a0); -extern s32 func_80165140(s32 param_1); -extern s32 func_80165240(s32 a0, s32 a1, s32 a2); -extern s32 D_801E5CF8; -extern void func_801651B8(void * param_1); -extern u8 D_80126CF8; -extern void func_8016533C(void); -extern void func_801653F4(s32 a0); -extern void func_80165580(s32 a0); -extern void func_80165374(s32 a0); -extern void func_80165580(s32 _arg0); -extern void func_801653B8(s32 *a0); -extern s32 func_80165624(s32 a0); -extern u8 D_80078EC5; -extern void (*D_8018FE78[])(void); -extern u8 func_80165658(s32 a0, s32 a1); -extern void func_800CAE0C(s32 a0); -extern void func_801654A8(s32 arg0); -extern void func_80165B28(void *a0); -extern void func_801655E4(s32 a0); -extern u8 D_8018FEF4[]; -extern s32 D_8018FF14[]; -extern u8 D_8018FF90[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018FFB0[]; -extern u8 D_8018FFD0[]; -extern void func_800CAF6C(void); -extern void func_80165770(void); -extern void func_801657D8(void); -extern u8 D_80078EC3; -extern void func_801657A0(void); -extern s32 D_80078EA0; -extern s32 D_80078EA8; -extern u8 D_80078EBB; -extern s32 D_80078ED4; -extern s32 D_80078ED8; -extern s32 D_80078EDC; -extern u8 D_80078EE0; -extern void func_80165874(void); -extern s8 D_80078EC4; -extern void func_801658EC(void); -extern s32 func_80165900(void); -extern s32 func_80165910(void); -extern s32 D_8012672C; -extern s32 D_8012811C; -extern s32 D_80126B08; -extern void func_80165938(void); -extern void func_80165958(void); -extern s32 func_80165978(void); -extern void func_80165988(void); -extern s32 func_801659A8(void); -extern void func_801659B8(void); -extern s32 func_801659CC(void); -extern void func_80165A18(void); -extern s32 func_80165A50(s32 _arg0); -extern void func_80165AC8(void); -extern void func_80165A78(s32 arg0); -extern void (*D_8019006C[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_801900E8[])(void); -extern void func_80165BB4(u8 *a0); -extern void func_80165B6C(u8 *a0); -extern void func_80165C58(s32 arg0); -extern void func_80165BFC(void *a0); -extern void func_80165C78(void); -extern M2C_UNK D_801E5064; -extern void func_80165E2C(u16 *arg0); -extern s32 func_80165FA4(s32 a0, s32 a1, s32 a2); -extern s32 func_80167DBC(s32 a0, s32 a1, s32 a2); -extern s32 func_80167AE0(s32 a0, s32 a1, s32 a2); -extern void func_80165E90(void); -extern void func_80020F34(s32 a0, s32 a1); -extern s32 func_80165FA4(s32 arg0, s32 arg1, s32 arg2); -extern void (*D_801900F4[])(void); -extern void func_80166018(void *a0); -extern void func_80166054(s32 arg0); -extern void func_801661CC(s32 param_1); -extern void func_80166244(void* arg0); -extern void func_8016629C(void *a0); -extern void func_801662F4(void *a0); -extern void func_8016634C(void *a0); -extern void func_801663A4(void *a0); -extern void (*D_801900FC[])(void); -extern void func_801663FC(void *a0); -extern u8 D_800D387C[]; -extern u8 D_800D3888[]; -extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); -extern void func_800D1FC8(s32 a0, s32 a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern void func_801665B4(); -extern void func_80146C3C(); -extern void func_80166438(u8 *a0); -extern s32 func_80128ED8(s32 param_1, s32 *param_2); -extern void func_800D22E4(s32 a0); -extern void func_801665B4(s32 *a0); -extern void (*D_801901C4[])(void); -extern void func_80166618(void *a0); -extern void (*D_801901D4[])(void); -extern void func_80166654(void *a0); -extern s32 func_80166690(s32 param_1, s32 param_2); -extern s32 func_80166994(); -extern s32 func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern s32 func_80167540(s32 arg0); -extern void (*D_801901E4[])(void); -extern void func_801678B4(void *a0); -extern void RotMatrixYXZ(void *a0, void *a1); -extern void func_80048EAC(void *a0, void *a1); -extern s32 func_801670E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80146C3C(void); -extern void func_801678F0(s32 a0); -extern void (*D_801901F0[])(void); -extern void func_80167A9C(void *a0); -extern void func_80167AD8(void); -extern s32 func_80167AE0(s32 param_1, s32 param_2, s32 param_3); -extern void func_80168070(s32 a0, s16 *a1, s16 *a2, void *a3); -extern u8 D_80190150[]; -extern u8 D_80190164[]; -extern s32 func_80167DBC(s32 arg0, s32 arg1, s32 arg2); -extern void func_800D20C0(void *a0, void *a1, s32 a2); -extern void func_80017E68(void *a0, void *a1); -extern void func_800D23D0(void *a0); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern s32 D_801269A4; -extern s32 D_801269A8; -extern s32 D_801269AC; -extern void func_80168070(s32 param_1, s16 *param_2, s16 *param_3, void *param_4); -extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_8016829C(s32 a0); -extern s32 func_80166690(s32 a0, s32 a1); -extern void func_80168328(s32 arg0); -extern void func_801683D8(s32 a0); -extern void func_801684B4(s32 a0); -extern void func_80168540(s32 a0); -extern void func_801685EC(s32 a0); -extern void func_80168640(s32 a0); -extern s32 RotMatrixX(s32 a0, void *a1); -extern void func_80168664(void *arg0); -extern void (*D_80190208[])(void); -extern void func_80168744(void *a0); -extern void func_80168BDC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801687CC(s32 a0); -extern void func_80168780(s32 a0); -extern void func_80168828(void); -extern void func_801687CC(s32 param_1); -extern void func_80168828(); -extern void (*D_80190210[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_80190218[])(void); -extern void func_80168AA8(void *a0); -extern void func_80168AE4(s32 a0); -extern void func_800D2318(void); -extern void func_80168BDC(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void (*D_80190220[])(void); -extern void func_80168D58(void *a0); -extern void func_80168D94(int a0); -extern void func_80168F40(); -extern void func_80168EC4(s32 a0); -extern void func_80168F40(void *arg0); -extern void (*D_80190228[])(void); -extern void func_8016901C(void *a0); -extern void func_80169058(s32 a0); -extern s32 func_80169228(void); -extern void func_801691B8(void *a0); -extern void (*D_80190230[])(void); -extern void func_801693CC(void *a0); -extern void func_80169584(s32 param_1); -extern void func_80169408(s32 a0); -extern void func_8016951C(int param_1); -extern s32 func_80017758(void *a0, void *a1); -extern s32 func_80017DC4(void *a0, void *a1); -extern void func_801696D8(s32 a0, s32 a1); -extern void (*D_80190238[])(void); -extern void func_80169830(void *a0); -extern void func_8016986C(s32 a0); -extern s32 func_80169A4C(s32 a0, s32 a1); -extern void func_801699D0(void *arg0); -extern void (*D_801902EC[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_801902F4[])(void); -extern void func_80169F00(void *a0); -extern char D_801902A4[]; -extern char D_80190264[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8019032C[])(void); -extern void func_8016A020(void *a0); -extern void func_8016A05C(void *a0); -extern void func_8016A290(s32 a, void *b, void *c); -extern void func_8016A08C(s32 param_1); -extern void func_8016A1CC(int param_1); -extern void func_8016A290(s32 param_1, void *param_2, void *param_3); -extern void (*D_80190338[])(void); -extern void func_8016A700(void *a0); -extern s32 func_8016A73C(s32 arg0); -extern s32 func_8016A8FC(s32 a0); -extern void func_8016A890(s32 arg0); -extern void func_8016AA50(s32 param_1, s32 param_2); -extern void (*D_80190380[])(void); -extern void func_8016AB30(void *a0); -extern void func_8016B234(void); -extern void func_8016AFB0(s32 a0); -extern void func_8016B114(void *arg0); -extern s32 func_8016B448(s32, s32); -extern s32 func_8016BA48(s32 a0); -extern void func_8016B3F4(s32 a0); -extern s32 func_8016B428(s32 a0); -extern void func_8016B984(void *a0); -extern s32 func_8016B448(s32 arg0, s32 arg1); -extern void (*D_801903FC[])(void); -extern void func_8016B4BC(void *a0); -extern int func_8016B9F8(int); -extern int func_8016B834(int, int); -extern void func_8016B91C(int); -extern int D_801E6018; -extern void func_8016B4F8(int param_1); -extern s32 func_8016B9F8(s32 param_1); -extern void func_8016B6BC(s32, s32, s32, s32); -extern void func_8016B91C(s32); -extern s16 D_801903F0[]; -extern void func_8016B5C0(s32 param_1); -extern void func_8001CD9C(int, void *); -extern int *D_80190434[]; -extern unsigned short D_8019043C[]; -extern unsigned short D_80190444[]; -extern unsigned char D_801E6020[]; -extern int func_8016B834(int param_1, int param_2); -extern void func_8016B964(SrcB964 *a0, DstB964 *a1); -extern void func_8016B91C(s32 arg0); -extern s32 D_801E6018; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8019044C[])(void); -extern void func_8016BBA4(void *a0); -extern s32 func_8016BBE0(s32 param_1); -extern void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3); -extern M2C_UNK D_801E6154; -extern M2C_UNK D_801E6158; -extern void func_8016BCC0(void *arg0); -extern s32 func_8016BD78(s32 param_1); -extern s32 func_8016BEA0(s32 param_1); -extern void func_8016BF34(void *a0); -extern void func_8016BFD0(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern s32 D_801E60E0; -extern void (*D_8019047C[])(void); -extern void func_8016C14C(void *a0); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801E615C[]; -extern u8 D_801E6164[]; -extern u8 D_801E6114[]; -extern void func_8016C2C4(s32 param); -extern s32 func_8016C49C(s32 param_1_arg); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_8016C74C(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern short func_8016CF04(s32 a0, s32 a1); -extern void func_8016C83C(s32 a0); -extern void (*D_80190484[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_801904A0[])(void); -extern void func_8016D19C(void *a0); -extern void (*D_801904A8[])(void); -extern void func_8016D428(void *a0); -extern void func_8016D464(u8 *a0); -extern void func_8016D4DC(s32 a0); -extern void func_8016D5EC(s32 *a0); -extern short func_8016CBC0(void); -extern void func_8016D64C(int param_1); -extern void func_8016D778(s32 a0); -extern void func_800D20C0(); -extern void func_8016D848(s32 *a0); -extern void func_8016D984(s32 *a0); -extern void func_8016DBD8(u8 *a0); -extern void (*D_80190510[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801904B4; -extern u8 D_801904C0; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void (*D_80190544[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8019054C[])(void); -extern void func_8016DF20(void *a0); -extern void func_8016E3CC(s32 a0); -extern void func_8016E1CC(s32 a0); -extern void func_8016E26C(s32 *a0); -extern void func_8016E2E8(void *a0); -extern void func_8016E460(void *a0, void *a1); -extern void func_8016E358(void *a0); -extern void func_8016E460(void *arg0, void *arg1); -extern void (*D_801905A0[])(void); -extern void func_8016E5B8(void *a0); -extern void func_8016E5F4(s32 arg0); -extern void func_8016E778(); -extern void func_8016E688(void *a0); -extern void func_8016E6E4(s32 a0); -extern void func_8016E728(u8 *a0); -extern void func_8016E7C8(int param_1, short *p1, unsigned int *p2); -extern void func_8016E778(int param_1); -extern void func_8016E7C8(int param_1, short *param_2, unsigned int *param_3); -extern s32 D_80115218; -extern void func_8016E8F0(void); -extern void func_8016E918(short param_1, short param_2); -extern s32 func_8016E95C(); -extern u16 D_801905D4[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_801905C4[]; -extern void func_8016EB3C(s32 p); -extern void func_8016EBA8(u8 *param_1); -extern void func_8016ED6C(void); -extern s32 D_80126D70; -extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); -extern void func_8016ED8C(s32 a0, s32 a1, s32 a2); -extern void func_8016EE40(s32 a0, s32 a1, s32 a2); -extern void func_8016EDBC(s32 a0, s32 a1, s32 a2); -extern void func_8016EE94(); -extern void func_8016EDEC(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_8016EF78(s32 a0); -extern void func_8016EE40(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_801726D0(void *a0); -extern s32 D_80126D50; -extern s32 D_80126D54; -extern u8 D_80126D6C; -extern u8 D_80126D6D; -extern u8 D_80126D6E; -extern s32 D_80126D5C; -extern s32 D_80126D60; -extern s16 D_80126D64; -extern s16 D_80126D66; -extern s16 D_80126D68; -extern s16 D_80126D6A; -extern u8 D_80126D1A; -extern s32 D_80127058; -extern s32 D_8012705C; -extern s32 D_80127060; -extern s32 D_80127064; -extern s32 D_80127068; -extern s32 D_8012706C; -extern s32 D_80127070; -extern s32 D_80127074; -extern s16 D_80126D20; -extern void func_8016EE94(s32 a0, s32 a1); -extern s32 func_8016EFC8(s32); -extern s32 func_8016EFA8(s32 a0); -extern void func_8016F094(s32 *a0); -extern s32 func_8016F0AC(); -extern s32 D_801905F0; -extern void func_8016F250(void); -extern void func_8016F288(void); -extern void func_8016F2A8(void); -extern void func_8016F2C8(void); -extern void func_8016F2EC(void); -extern void func_8016F30C(void); -extern void func_8016F330(void); -extern void func_8016F350(void); -extern void func_8016F374(void); -extern void func_8016F388(void); -extern void func_8016F398(void); -extern s32 func_8016F44C(s32 a0); -extern void func_8016F470(s32 a0); -extern s32 func_8016F410(s32 a0); -extern void func_80175414(s32 _arg0); -extern s32 func_8016F4C4(s32); -extern s32 func_8016F494(s32 a0); -extern void func_8016F0E4(void); -extern s32 func_8016F4C4(s32 param_1); -extern void func_8016F4F4(void); -extern void func_801719A4(int a0, int a1); -extern void func_800D1724(s32 a0); -extern void func_80171928(void *a0); -extern void *D_8011F738; -extern void func_8016F4FC(void *a0); -extern void func_8014708C(void *a0); -extern void func_8016F540(void *a0); -extern void func_8016F578(s32 *a0); -extern void func_8016F5B0(void *a0); -extern void func_80147060(u8 *a0); -extern void func_8016F5E0(u8 *a0); -extern void func_8016F610(void *a0); -extern void func_8016F648(void *a0); -extern void func_8016F680(void *a0); -extern void func_8016F6B0(void *a0); -extern void (*D_80190668[])(void); -extern void func_8016F6E0(void *a0); -extern s32 func_80171990(u8 *a0); -extern void func_8016F764(void *a0); -extern void func_8016F71C(u8 *a0); -extern void (*D_80190670[])(void); -extern void func_8016F798(void *a0); -extern void func_8016F804(void *a0); -extern void func_8016F7D4(u8 *a0); -extern void func_80171928(void *); -extern void (*D_80190678[])(void); -extern void func_8016F834(void *a0); -extern void func_8016F8AC(u8 *a0); -extern void func_8016F870(u8 *a0); -extern void func_80172358(u8 *a0, u8 *a1); -extern void (*D_80190680[])(void); -extern void func_8016F8E4(void *a0); -extern void func_8016F95C(void *a0); -extern void func_8016F920(u8 *a0); -extern s32 func_80171CC4(void *a0, void *a1); -extern s32 func_80171D1C(void *a0, void *a1, s32 a2); -extern u16 D_8011F73E; -extern void (*D_80190688[])(void); -extern void func_8016F9C4(void *a0); -extern void func_80171B44(s32 *a0); -extern void func_8016FA44(s32 a0); -extern void func_8016FA00(s32 a0); -extern s32 func_80171C64(s32 a0, s32 a1); -extern void (*D_80190690[])(void); -extern void func_8016FA84(void *a0); -extern void func_8016FB10(void *a0); -extern void func_8016FAC0(u8 *a0); -extern void func_8016FB50(void *a0); -extern void (*D_8019069C[])(void); -extern void func_8016FB7C(void *a0); -extern void func_8016FC24(); -extern void func_8016FBB8(s32 a0); -extern s32 func_80171B4C(s32 a0, s32 a1); -extern void func_8016FC24(s32 a0); -extern void func_8016FC64(void *a0); -extern void (*D_801906A8[])(void); -extern void func_8016FC90(void *a0); -extern void func_8016FD08(u8 *a0); -extern void func_8016FCCC(u8 *a0); -extern s32 func_80172658(s32 *a0); -extern void func_8016FD08(u8 *s0); -extern void func_8016FD7C(s32 *a0); -extern void (*D_801906B4[])(void); -extern void func_8016FDB4(void *a0); -extern void func_8016FE2C(u8 *a0); -extern void func_8016FDF0(u8 *a0); -extern void func_8016FE2C(u8 * a0); -extern s32 func_8016FE78(s32 *a0); -extern s32 func_80172664(s32 *a0); -extern void func_8016FED0(s32 *a0); -extern void (*D_801906C4[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_801906D4[])(void); -extern void func_8016FFDC(void *a0); -extern void func_80170068(u8 *a0); -extern void func_80170018(u8 *a0); -extern void func_801700B8(u8 *a0); -extern void func_80170100(u8 *a0); -extern void (*D_801906DC[])(void); -extern void func_80170150(void *a0); -extern void func_801701C8(u8 *a0); -extern void func_8017018C(u8 *a0); -extern void func_801701C8(u8 * a0); -extern void (*D_801906E4[])(void); -extern void func_80170240(void *a0); -extern void func_801702B8(s32 a0); -extern void func_8017027C(u8 *a0); -extern s16 func_80171AB0(s32 a0, void *a1); -extern void (*D_801906EC[])(void); -extern void func_801702FC(void *a0); -extern void func_80170374(u8 *a0); -extern void func_80170338(u8 *a0); -extern s32 func_8014C168(s32 *a0, s32 a1); -extern void func_80170374(u8 * a0); -extern void (*D_801906F4[])(void); -extern void func_801703E0(void *a0); -extern void func_8017044C(u8 *a0); -extern void func_8017041C(u8 *a0); -extern void func_8017044C(u8 * a0); -extern void (*D_801906FC[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_80190704[])(void); -extern void func_80170548(void *a0); -extern void func_801705C0(u8 *a0); -extern void func_80170584(u8 *a0); -extern void func_801705C0(u8 * a0); -extern void (*D_8019070C[])(void); -extern void func_801705F8(void *a0); -extern void func_80170670(void *a0); -extern void func_80170634(u8 *a0); -extern void func_8012A568(void (*a0)(void)); -extern void (*D_80190714[])(void); -extern void func_801706AC(void *a0); -extern void func_80170718(void *a0); -extern void func_801706E8(u8 *a0); -extern void func_80129FF4(void); -extern void (*D_8019071C[])(void); -extern void func_80170748(void *a0); -extern void func_801707D4(void *a0); -extern void func_80170784(u8 *a0); -extern s32 func_80174ED4(void); -extern void (*D_80190724[])(void); -extern void func_80170810(void *a0); -extern void func_801708B0(void *a0); -extern u8 D_800D5DA8; -extern void func_8017084C(s32 a0); -extern u8 D_800D5A34[]; -extern void func_80170AD8(void *a0); -extern void func_80171904(s32 a0); -extern void func_80170B48(int a0); -extern void func_80170928(void); -extern u8 D_800D59EC[]; -extern void func_80170970(void); -extern u8 D_800D599C[]; -extern void func_801709B8(void); -extern u8 D_800D5934[]; -extern void func_80170A00(void); -extern void func_80170A48(void); -extern u8 D_800D5DC0[]; -extern void func_80170A90(void); -extern void (*D_8019072C[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_80190734[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8019073C[])(void); -extern void func_80170C74(void *a0); -extern s32 func_8017197C(u8 *a0); -extern void func_80170CF0(void *a0); -extern void func_80170CB0(u8 *a0); -extern void (*D_80190744[])(void); -extern void func_80170D68(void *a0); -extern void func_80170DE0(u8 *a0); -extern void func_80170DA4(u8 *a0); -extern s32 D_8011F73C; -extern s32 D_8011F740; -extern void func_801718AC(void *a0); -extern void func_80170DE0(u8 * _arg0); -extern void (*D_8019074C[])(void); -extern void func_80170E34(void *a0); -extern void func_80170EAC(u8 *a0); -extern void func_80170E70(u8 *a0); -extern int func_800D0F8C(int a0); -extern void func_80170EAC(u8 * _arg0); -extern void (*D_80190754[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8019075C[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_80190764[])(void); -extern void func_80171064(void *a0); -extern void func_801710DC(u8 *a0); -extern void func_801710A0(u8 *a0); -extern u16 D_8011F73A; -extern void func_801710DC(u8 * arg0); -extern void (*D_8019076C[])(void); -extern void func_80171120(void *a0); -extern void func_8017118C(u8 *a0); -extern void func_8017115C(u8 *a0); -extern void func_80142454(s32 a0); -extern void func_8017118C(u8 * a0); -extern void (*D_80190774[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8019077C[])(void); -extern void func_80171260(void *a0); -extern s32 func_80012F74(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80171384(void *a0); -extern void (*D_80190784[])(void); -extern void func_801714E4(void *a0); -extern void func_8017162C(void *a0); -extern void func_80171520(s32 a0); -extern s32 func_801716AC(s32 a0, void *a1, s32 *a2); -extern s32 func_80012FC8(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_800A5E94; -extern u8 D_800A5E95; -extern u8 D_800A5E96; -extern s32 func_801716AC(s32 a0, void * a1, s32 * a2); -extern int func_800D0FE0(int a0); -extern void func_801717A0(void *a0); -extern void func_8013E588(void *a0); -extern void func_801717F4(void *a0); -extern void func_80171824(void *a0); -extern void func_80171854(void *a0); -extern void func_80171884(void); -extern void func_80171A1C(u8 *a0); -extern void func_80171928(void * a0); -extern void func_8017196C(s32 *a0, s8 a1); -extern void func_80171A04(s32 *a0); -extern void func_80171A10(s32 *a0); -extern void func_80171A34(s32 *a0, s8 a1); -extern s32 func_80171A44(u8 *a0); -extern s32 func_80171A58(u8 *a0); -extern s32 func_80171A6C(u8 *a0); -extern void func_80171A80(s32 *a0, s32 a1); -extern s32 func_80171A88(s32 a0); -extern s16 func_80171AB0(s32 param_1, void * _arg1); -extern void func_80171B10(void *a0); -extern void func_80171EC8(s32 a0); -extern s32 func_80171C64(s32 param_1, s32 param_2); -extern s32 func_80171D78(s32 a0, s32 a1); -extern int func_8017250C(short *a0, short *a1); -extern s32 func_80171CC4(void * a0, void * a1); -extern s32 func_80171FFC(short *a0, short *a1, s32 a2); -extern s32 func_80171D1C(void * a0, void * a1, s32 a2); -extern s32 func_8017248C(s32 a0, s32 a1); -extern s32 func_80171E08(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_80047948(s32 a0); -extern s32 func_8004787C(s32 a0); -extern void func_80172170(s32 a0, s32 a1); -extern s32 func_8017209C(void *arg0, void *arg1, s32 arg2, s32 arg3); -extern void func_801722CC(s32 *a0); -extern void func_80172304(s32 *a0); -extern void func_80172310(u8 *a0); -extern void func_801723C4(s32 param_1, s32 param_2); -extern void func_80161C24(s32, s32); -extern void func_80172414(s32 a0); -extern s32 func_801724EC(s32 a0); -extern s32 func_8017248C(s32 arg0, s32 arg1); -extern s32 func_80013450(s32); -extern s32 func_80172560(u8 *a0, u8 *a1); -extern s32 func_8017261C(u8 *a0); -extern s32 func_80172644(u8 *a0); -extern s32 func_80172670(s32 *a0); -extern s32 func_80172688(s32 *a0); -extern s32 func_80172694(s32 *a0); -extern s32 func_801726A0(s32 *a0); -extern s32 func_801726AC(s32 *a0); -extern s32 func_801726B8(s32 *a0); -extern s32 func_801726C4(s32 *a0); -extern s32 func_80172760(s32 a0); -extern s32 func_80174650(s32); -extern void (*D_80127088)(void); -extern s32 D_801270BC; -extern s16 D_80126B0C; -extern void func_801726D0(void * _arg0); -extern void func_80172710(void); -extern void func_80174684(void *); -extern void func_80172738(void); -extern s16 D_80126B30; -extern s32 func_801727D0(void *a0); -extern void func_80172780(void *a0); -extern void func_80172844(u8 *a0); -extern void func_8017280C(u8 *a0); -extern void func_8017288C(void); -extern s32 func_801728E4(void *a0); -extern void func_80172894(void *a0); -extern void func_80172958(u8 *a0); -extern void func_80172920(u8 *a0); -extern s16 D_80126B36; -extern void func_80172958(u8 * a0); -extern void func_801729A8(void); -extern s32 func_801729F0(void *a0); -extern s16 D_80126B34; -extern s16 D_80126B32; -extern void func_801729B0(s32 a0); -extern void func_80172A8C(void *a0); -extern void func_80172A2C(int param_1); -extern void func_80172ACC(u8 *a0); -extern void func_80172B0C(void); -extern s32 func_80172B44(void *a0); -extern void func_80172B14(s16 a0); -extern s32 D_801150F8; -extern void func_80172BC8(void *a0); -extern void func_80172B80(u8 *a0); -extern void func_80172C48(void); -extern void (*D_801907C8[])(void); -extern void func_80172CA0(void *a0); -extern void func_80172D14(u8 *a0); -extern void func_80172CDC(u8 *a0); -extern void func_80172D14(u8 * a0); -extern void func_80172D60(void); -extern s32 D_80127508; -extern s32 func_80172DAC(void *a0); -extern void func_80172D68(s32 a0); -extern void func_80172E20(u8 *a0); -extern void func_80172DE8(u8 *a0); -extern void func_80172E20(u8 * a0); -extern void func_80172E8C(void); -extern void func_8017303C(void *); -extern void func_80172E94(void); -extern void func_80172ED4(void); -extern void func_80172EFC(void); -extern void func_80172F24(void); -extern u8 D_800D47F4[]; -extern void func_80172F4C(void); -extern void func_80172F9C(void); -extern u8 D_800D5C6C[]; -extern void func_80172FEC(void); -extern s32 func_80173078(void *a0); -extern void func_8017303C(void * a0); -extern void func_801730FC(struct S801730FC *a0); -extern void func_801730B4(s32 a0); -extern void func_8017316C(void); -extern s32 func_8017319C(void *a0); -extern void func_80173174(void); -extern u8 D_800D5AA0[]; -extern void func_80173220(void *a0); -extern void func_801731D8(s32 *a0); -extern M2C_UNK D_8019078C; -extern void func_80173220(void * arg0); -extern void func_80173294(void); -extern void func_801732C4(); -extern void func_8017329C(void); -extern void func_801732C4(s32 *a0); -extern void func_8017331C(); -extern void func_801732F4(void); -extern void func_8017331C(s32 *a0); -extern void func_80173374(); -extern void func_8017334C(void); -extern void func_80173374(s32 *a0); -extern void func_801733A4(void); -extern void func_801733CC(s32 a0); -extern void func_801734BC(s32 a0, s32 a1); -extern s16 D_80126B3E; -extern void func_80173460(s32 a0, s32 a1); -extern void func_801734BC(s32 arg0, s32 _unused1); -extern void (*D_801907F8[])(void); -extern void func_80173544(void *a0); -extern void func_801735B8(u8 *a0); -extern void func_80173580(u8 *a0); -extern s16 D_80126B40; -extern void func_801735EC(void *a0); -extern void func_80173648(u8 *a0); -extern void func_801736A8(void); -extern s32 func_8014C118(void *a0, s32 a1, s32 a2); -extern s32 func_801736FC(void *a0); -extern void func_801736B0(s32 a0, s32 a1); -extern void func_80173770(u8 *a0); -extern void func_80173738(u8 *a0); -extern void func_801723C4(s32 a0, s32 a1); -extern void func_801737B0(void); -extern s32 func_801737E8(void *a0); -extern void func_801737B8(s16 a0); -extern void func_8017385C(u8 *a0); -extern void func_80173824(u8 *a0); -extern void func_801738D4(void); -extern s32 func_8017390C(void *a0); -extern void func_801738DC(s16 a0); -extern void func_80173980(u8 *a0); -extern void func_80173948(u8 *a0); -extern void func_801739D8(u8 *a0); -extern void func_80173A20(void); -extern s32 D_8012750C; -extern void func_80173A60(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80173A28(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void (*D_80190834[])(void); -extern void func_80173B4C(void *a0); -extern void func_80173BC0(u8 *a0); -extern void func_80173B88(u8 *a0); -extern void func_80173C64(u8 *a0); -extern void func_80173E1C(s32 a0); -extern s16 D_80126938; -extern s16 D_80126B3A; -extern void func_800D128C(s32, s32); -extern void func_80174158(s32 a0); -extern void func_8002A088(s32); -extern void func_8002A2D4(s32); -extern void func_8002A544(s32); -extern void func_8002A7B4(s32); -extern s32 func_80174188(s32 a0); -extern void func_801741A8(s32 a0); -extern s32 func_800D0EC4(void); -extern void func_800D0F0C(s32, s32); -extern void func_80145EE8(s32); -extern void func_80173EF8(void *param_1); -extern s32 func_8014BCEC(s32, s32); -extern void func_801741A8(s32 _arg0); -extern s16 D_80126B3C; -extern s16 D_8011F9C8; -extern void func_801741EC(u8 *a0); -extern void func_80174274(void); -extern s32 func_801742A4(void *a0); -extern void func_8017427C(void); -extern void func_80174318(u8 *a0); -extern void func_801742E0(u8 *a0); -extern void func_80174354(void); -extern s32 func_80174384(void *a0); -extern void func_8017435C(void); -extern void func_801743F0(u8 *a0); -extern void func_801743C0(u8 *a0); -extern void func_801743F0(u8 * a0); -extern void func_80174430(void); -extern s32 func_80174474(void *a0); -extern void func_80174438(s32 a0); -extern void func_801744E0(u8 *a0); -extern void func_801744B0(u8 *a0); -extern void func_80174524(void); -extern void func_80174554(); -extern void func_8017452C(void); -extern void func_80174554(s32 arg0); -extern void func_801745AC(); -extern void func_80174584(void); -extern void func_801745AC(s32 *a0); -extern void func_80174604(void); -extern void func_801745DC(void); -extern void func_80174630(void); -extern s32 func_80174650(s32 _arg0); -extern void func_80174674(void); -extern void func_801746A4(void); -extern s32 func_800CF8CC(void); -extern void func_80174714(void); -extern s32 func_80174754(void); -extern s16 func_80174764(void); -extern s16 func_80174774(void); -extern s32 func_801747CC(void *a0); -extern void func_80174784(void); -extern s32 func_801747AC(s32 a0); -extern s32 func_80174808(u8 *a0); -extern void func_8017481C(void); -extern s32 func_80174888(void *a0); -extern void func_80174824(void); -extern void func_8017484C(s32 a0); -extern void func_801748C4(s32 a0); -extern void func_801748E4(void); -extern void func_8012A018(s32 a, s32 b); -extern s32 func_8017496C(void *a0); -extern void func_801748EC(void); -extern s32 func_801749C8(); -extern s32 func_801749A8(s32 a0); -extern void func_80174BBC(void *a0); -extern void func_8012A0E0(void); -extern void func_80174BF4(void *a0); -extern void (*D_8019088C[])(); -extern void func_80174BF4(void * arg0); -extern s32 func_80174CB0(s32, s32); -extern s32 func_80174C60(s32 a0); -extern void func_80174C80(s32 a0); -extern s32 D_8012697C; -extern u16 D_80126980; -extern s32 func_80174F28(void *a0); -extern void func_80174E9C(s32 a0); -extern void func_80174EF0(s32 a0, s16 a1); -extern s32 func_80175014(u8 *a0, u8 *a1, s32 a2); -extern void func_80174F64(u8 *a0); -extern void func_80174FBC(u8 *a0); -extern s32 func_8017509C(u8 *a0, s32 a1, u8 *a2, u8 *a3); -extern void func_80175184(s32 *a0); -extern void func_80175114(s32 *a0); -extern void func_80175184(); -extern void func_80175150(s32 *a0); -extern void (*D_8019089C[])(void*); -extern s32 func_80175268(s32); -extern void func_80175184(s32* arg0); -extern s32 func_80175218(void *a0); -extern void func_801751D8(void *a0); -extern void (*D_801908A4[])(s32); -extern s32 func_80175218(void * param_1); -extern void func_801752BC(s32 *a0); -extern u8 D_8011F7A8; -extern u8 D_8011F7A9; -extern u8 D_8011F7AD; -extern u8 D_8011F7AE; -extern void func_80175414(s32 _arg0); -extern void func_80175494(void); -extern void (*D_80190A0C[])(); -extern s32 func_801758FC(void); -extern s32 func_80175820(void); -extern s32 func_801759D8(void); -extern void func_8017553C(s32 *param); -extern void func_801757A0(s32 a0); -extern short D_800B9A02; -extern void func_80175590(void *arg0); -extern s16 D_800B9A02; -extern void func_801757A0(s32); -extern void func_80175624(void *a0); -extern void func_801757E0(int); -extern void func_80175668(void); -extern void (*D_80190A18[])(); -extern void func_80175690(s32 *param); -extern void func_80175DA8(s32 a0); -extern void func_80175AB8(s32 a0); -extern void func_80176144(s32 a0); -extern void func_801756E4(s32 arg0); -extern void func_80175798(void); -extern void func_80176734(s32 a0); -extern void func_80176218(s32 a0); -extern void func_80176D00(s32 a0); -extern void func_801757E0(s32 a0); -extern s32 func_80178004(s32 a0, s32 a1, s32 a2); -extern u8 D_8011F7B1; -extern u16 D_8011F7B4; -extern u16 D_8011F7B6; -extern s16 D_8011F81E; -extern void *func_80177784(void *a0, s32 a1, s32 a2, s32 a3); -extern u32 func_801783D0(s32 a0, s32 a1); -extern void *func_801777BC(void *a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern u16 D_8011F82C; -extern u16 D_8011F82A; -extern u32 * func_80176D94(void *param_1, u32 param_2, s16 param_3_); -extern void func_801778A8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80176FF4(s32 a0); -extern u16 D_8011F830; -extern u16 D_8011F82E; -extern u32 * func_801770E0(void *param_1, u32 param_2, s16 param_3_); -extern void func_80177340(s32 a0); -extern u8 D_8011F837; -extern u8 D_8011F7F0; -extern u8 D_8011F7AB; -extern u32 * func_8017742C(u32 *param_1, s32 param_2, s32 param_3); -extern void func_801776EC(u8 *a0); -extern void * func_80177784(void *a0, s32 a1, s32 a2, s32 a3); -extern uint * func_80177EA4(uint *param_1, int param_2, uint param_3, int param_4); -extern void func_80177F84(s32 param_1, s32 param_2); -extern u32 * func_80178298(u32 *param_1, u8 *param_2, short param_3, short param_4); -extern M2C_UNK D_801E52AC; -extern void func_80178438(u16 *arg0); -extern void func_801787D4(void); -extern void func_8012A908(void); -extern void func_8017869C(s32 a0); -extern void func_80130D0C(s32 a0); -extern void func_8013E370(void); -extern s32 D_8011DB08; -extern void func_8017849C(void); -extern void func_8013E4B4(void); -extern s16 D_801270C4; -extern s32 D_801274D8; -extern s16 D_801270C2; -extern u8 D_801270C6; -extern u8 D_801270C7; -extern s32 D_801274DC; -extern s32 D_801274E0; -extern void func_80178608(void); -extern void func_80178744(s32 a0, s32 a1); -extern void func_80178840(); -extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern s32 func_801788B8(s32 arg0, s32 arg1); -extern s32 func_801789AC(s32 arg0); -extern s16 D_801E7AB0; -extern int func_80178970(void); -extern s32 func_80178B18(s32 param_1, s32 param_2); -extern s32 func_80178B70(s32 param_1, s32 param_2); -extern void func_80178BB8(s32 a0, s32 a1); -extern s32 func_80178BF8(); -extern s32 D_801E6898; -extern short D_801E7B24; -extern void func_80178CBC(s32 arg0, s32 arg1); -extern void func_80178D18(void); -extern s32 func_80178D40(s32 arg0, s32 arg1); -extern void func_80179B28(s32 a0); -extern void func_80179B74(u16 *p); -extern void func_80179D30(u16 *a0); -extern void func_80179D78(u16 *a0); -extern void func_80179DCC(short a0); -extern void func_80179DF8(void); -extern void func_80179E1C(short a0); -extern void func_80179E48(s16 a0); -extern void func_80179E74(s16 a0); -extern void func_80179EA0(u16 *a0); -extern void func_80179EE8(short a0); -extern void func_80179F14(s16 a0, s16 a1); -extern void func_80179F44(void); -extern void func_80179F6C(short a0); -extern void func_80179F98(u16 *a0); -extern void func_80179FEC(u16 *a0); -extern void func_8017A040(u16 *a0); -extern s32 D_801E6CC4; -extern void func_8017A094(s32 arg0); -extern void func_8017A0C4(s32 arg0); -extern void func_8017A0F4(void); -extern void func_8017A11C(void); -extern s32 D_801E6CEC; -extern void func_8017A144(s32 a0); -extern void func_8017A180(void); -extern void func_8017A1A8(void); -extern void func_8017A1D0(void); -extern void func_8017A1F8(void); -extern void func_8017A220(void); -extern void func_8017A248(void); -extern void func_8017A270(void); -extern void func_8017A298(void); -extern void func_8017A2C0(void); -extern void func_8017A2E8(void); -extern void func_8017A310(void); -extern void func_8017A338(void); -extern void func_8017A360(void); -extern void func_8017A388(void); -extern s16 D_801E6CA8; -extern s32 func_8017A3B0(void); -extern short D_801E6CE4; -extern short D_801E6CE0; -extern int func_800D0CA0(int); -extern int func_8001AAA0(void); -extern int func_800D0CE0(void); -extern int func_8017A3D8(void); -extern void func_80172310(u8*); -extern void func_80172780(void*); -extern void func_80172894(void*); -extern void func_801729B0(s32); -extern void func_80172B14(s16); -extern void func_80172C50(u16 *); -extern void func_80172D68(s32); -extern void func_801733FC(s16, u16 *); -extern void func_80173460(s32, s32); -extern void func_801734BC(s32, s32); -extern void func_801736B0(s32, s32); -extern void func_801737B8(s16); -extern void func_801738DC(s16); -extern void func_80173A28(s32, s32, s32, s32, s32, s32); -extern void func_80174438(s32); -extern void func_8017A4AC(void); -extern s32 func_8017AD0C(s32 arg0); -extern s32 func_8017AD0C(s32); -extern s32 func_8017ADE8(s32 a0); -extern s32 func_8017AE08(void); -extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); -extern void func_8012B178(s32 a0, s32 a1); -extern void func_8012AD80(s32 a0); -extern s32 func_8012B030(u8 *a0); -extern s32 func_8012B744(void *a0, void *a1); -extern s32 func_8012BE98(s32 a0, u16 *a1); -extern s16 D_801E7A68; -extern s16 D_801E7A6A; -extern s16 D_801E7A74; -extern void func_8017AE2C(s32 param_1); -extern void func_8017B0E4(int param_1, int param_2); -extern s16 D_801E6CAC; -extern u16 D_801E6D2C; -extern u16 D_801E6D2E; -extern u16 D_801E6D30; -extern void func_8017B1D8(void); -extern s32 func_8017B238(s32 param_1, s32 param_2); -extern s32 func_8017B368(s32 param); -extern s32 func_8017B490(s32 param); -extern s32 func_8017B614(s32 param_1, s32 param_2); -extern s32 D_80114F30; -extern s32 D_80114F34; -extern s32 D_80114F38; -extern s32 D_80114F24; -extern s32 D_80114F28; -extern s32 D_80114F2C; -extern u8 D_8012694C; -extern s16 D_801E6D24; -extern s16 D_801E6D26; -extern s16 D_801E6D28; -extern s16 D_801E6D1C; -extern s16 D_801E6D1E; -extern s16 D_801E6D20; -extern void func_8017B7A8(void); -extern s16 D_801E6D3C; -extern s16 D_801E6D3E; -extern s16 D_801E6D40; -extern s16 D_801E6D44; -extern s16 D_801E6D46; -extern s16 D_801E6D48; -extern void func_8017B824(void); -extern void func_8017B880(void); -extern s32 func_8017B8E8(s32 src); -extern short D_801E6D34; -extern short D_801E6D36; -extern short D_801E6D38; -extern void func_8017B940(void); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void RotTransSV(void *a0, void *a1, void *a2); -extern SV4 D_801E6CCC; -extern SV4 D_801E6CD4; -extern void func_8017BA3C(s32 param_1, s32 param_2); -extern s32 func_8017BB34(s32 param_1, s32 param_2); -extern void (*D_801E6CF4[10])(int); -extern void func_8017BC38(int param_1); -extern void func_8017B0E4(int, int); -extern void func_8017BCA0(int param_1); -extern void func_8012A4BC(void); -extern void func_8017BCF4(int param_1); -extern void (*D_801E6CF0)(void); -extern void func_8017BD50(int param_1); -extern void (*D_80190BF4[])(void); -extern void func_8017BE60(void *a0); -extern void (*D_80190C94[])(void); -extern void func_8017BE9C(void *a0); -extern void (*D_80190C9C[])(void); -extern void func_8017BED8(void *a0); -extern void (*D_80190CA4[])(void); -extern void func_8017BF14(void *a0); -extern u8 *func_8012913C(s32 a0); -extern s32 func_8012C750(s32 a0); -extern void func_8017BF50(s32 a0); -extern void func_8017C094(void); -extern void func_8017C100(s32 param_1); -extern void func_8017C1AC(s32 param_1); -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8012A828(s32*, s32); -extern void func_8012B260(u8 *a0); -extern void func_8017C1EC(s32 a0); -extern void func_8017C2B0(s32 a0); -extern void (*D_80190CC4[])(void); -extern void func_8017C338(void *a0); -extern s32 func_800D222C(s32 a0, void *a1, s32 a2); -extern s32 func_8001CF30(void *a0); -extern void func_8017C374(s32 param_1); -extern void func_8017C538(u8 *p); -extern void (*D_80190CCC[])(void); -extern void func_8017C5CC(void *a0); -extern u8 D_80190CB8; -extern void func_8017C608(s32 a0); -extern void func_8017C6AC(int a0); -extern void func_8017C710(s32 arg0); -extern void (*D_80190CE4[])(void); -extern void func_8017D5F0(void *a0); -extern void func_8001C214(s32, s32); -extern u32 D_80190CD4; -extern void func_8017D62C(s32 arg0); -extern void func_8017D6A8(void); -extern void (*D_80190D1C[])(void); -extern void func_8017D6B0(s32 *param_1); -extern void func_8017DA08(void *arg0); -extern s32 func_8012AD50(void *arg0); -extern void func_8017D6EC(void *arg0); -extern void func_8012AD44(s32 *a0, s16 a1); -extern void func_8017D9B8(void); -extern void func_8017DAC4(void *arg0); -extern void aF8017D77C(); -extern void func_80017714(void *); -extern u32 D_801E6FE8; -extern u16 D_80190D24[]; -extern u16 D_801E6FEC[]; -extern s32 D_80190D44; -extern void func_8017DC0C(void); -extern void func_8017E038(void *arg0); -extern s32 func_8017DC98(s32 param_1); -extern s32 func_8017DCE8(void); -extern void func_800D1E28(void); -extern s32 func_800D1D94(void); -extern void func_8001BFD0(void); -extern s32 func_8017DD7C(s32 a0); -extern void func_800D1EBC(void); -extern void func_8017DE2C(void); -extern s32 func_8017DE4C(void *a0); -extern void (*D_80190D64[])(void); -extern void func_8017DF34(void *a0); -extern void (*D_80190D6C[])(void); -extern void func_8017DF70(void *a0); -extern void (*D_80190D78[])(void); -extern void func_8017DFAC(void *a0); -extern void (*D_80190D84[])(void); -extern void func_8017DFE8(void *a0); -extern s32 D_80127050; -extern void func_8017E024(void); -extern void (*D_80191060[])(void); -extern void func_8017E038(void *a0); -extern void func_8017E074(void *a0); -extern void func_8017E088(void *a0); -extern void (*D_80191068[])(void); -extern void func_8017E0C0(void *a0); -extern void func_8017E0FC(u8 *a0); -extern void func_8017E110(void); -extern void func_8012A094(s32 a0); -extern void func_8017E1F4(void *a0); -extern void func_8017E130(void); -extern void (*D_80191070[])(void); -extern void func_8017E26C(s32 *a0, s32 a1); -extern void func_8017E3AC(s32 a0); -extern void func_8017E230(s32 *a0); -extern void func_8017E264(void *a0); -extern void aF8017E26C(); -extern s32 func_80012ABC(s32 a0, s32 a1, s32 a2); -extern void func_8017E3AC(s32 param_1); -extern void func_80184CB8(s32*, s32); -extern void func_8017E5A0(void * arg0); -extern void (*D_801912A8[])(void); -extern void func_8017E760(void *a0); -extern void func_8012A828(s32 *a0, s32 a1); -extern void func_8017E79C(short *a0); -extern void (*D_801912C8[])(void); -extern void func_8017E810(void *a0); -extern void func_80178CBC(s32 a0, s32 a1); -extern void func_8017E84C(void * arg0); -extern void func_8017E878(void * arg0); -extern void func_8012C588(s32, s32); -extern void func_8017E99C(void); -extern s32 func_80184BAC(s32 arg0, s32 arg1); -extern void func_8017E5A0(void *arg0); -extern void func_8017E9C0(void *arg0); -extern void func_8017EAAC(void * arg0); -extern s32 func_8012BEE8(s32 a0); -extern void func_8017E79C(short*); -extern void func_8017EBA0(s32 a0); -extern void func_8017E7CC(); -extern void func_8017EBE0(u8 *a0); -extern void func_8017F02C(void * arg0); -extern void (*D_8019155C[])(void); -extern void func_8017F058(void *a0); -extern void func_8017F094(void * arg0); -extern s32 func_8017F0C0(void); -extern void func_80029124(s32 arg0, s32 arg1); -extern void func_8017F108(void); -extern void func_80029514(int); -extern void func_8017F1A8(void); -extern void func_8017F28C(void * arg0); -extern void (*D_801916E4[])(void); -extern void func_8017F5BC(void *a0); -extern void func_80178CBC(s32, s32); -extern void func_8017F5F8(void *a0); -extern void func_8017F6D8(void *a0); -extern void func_8017F7B8(void *a0); -extern void func_8017F898(void *a0); -extern void func_80029124(s32 a, s32 b); -extern void func_8017FA34(void); -extern void func_8017FCD8(void * arg0); -extern void (*D_80191814[])(void); -extern void func_8017FF34(void *a0); -extern void (*D_801918E4[])(void); -extern void func_801800E0(void *a0); -extern s32 func_8018011C(void); -extern void func_8018015C(void); -extern void func_80180164(void * arg0); -extern void func_8012E8E0(s32, s32); -extern void func_8012E88C(s32); -extern void func_8012A828(s32 *a0, s32 a1); /* fleet-canonical sig (TU L3775) */ -extern void func_80184C90(s32); -extern void func_80184ED4(s32, s32, s32, s32); -extern void func_8018034C(void *arg0); -extern void (*D_801919C4[])(void); -extern void func_8018048C(void *a0); -extern s32 func_80184DD0(s32 a0); -extern void func_80180504(s32 a0); -extern s32 func_80180544(void); -extern void func_80180580(void *arg0); -extern s32 func_8012BD14(s32 a0); -extern s32 func_80180814(void *a0); -extern void func_80180888(void *arg0); -extern void func_8012E88C(s32 a0); -extern void func_80184C90(s32 a0); -extern void func_801808FC(void *a0); -extern void func_80184CB8(s32 *a0, s32 a1); -extern void func_801809DC(short *a0); -extern void (*D_80191A80[])(void); -extern void func_80180B6C(void *a0); -extern void func_80180C0C(void * arg0); -extern s32 func_801848DC(void); -extern s32 func_8018625C(void *); -extern s32 func_80178BF8(void); -extern s32 func_80180CC0(void *a0); -extern s32 func_80178BF8(); /* TU-canonical (ov_SC04_018_jr_8017AE2C.c L2541) */ -extern s32 func_80180D38(void *a0); -extern s32 func_80185BE0(s32 a0); -extern s32 func_80184FA4(void); -extern void func_80180EE8(void *a0); -extern void func_80181020(void *a0); -extern void func_80181244(short *param); -extern void func_801812D0(short *a0); -extern void (*D_80191B20[])(void); -extern void func_801812FC(void *a0); -extern void func_80181338(short *param); -extern void func_80181364(s32 a0); -extern void func_80181474(void * arg0); -extern s32 func_80181564(void *a0); -extern void func_8018170C(void * arg0); -extern void func_8018178C(void * arg0); -extern void (*D_80191BDC[])(void); -extern void func_80181924(void *a0); -extern s32 D_801D7598; -extern s32 D_801D2200; -extern void func_80181998(void); -extern s32 D_801E7018; -extern void func_801819B0(void); -extern void func_8012A828(s32 *, s32); -extern void func_801819C8(void *arg0); -extern void func_80181A28(s32 a0); -extern void func_801815DC(void *arg0); -extern void func_80181A68(void *arg0); -extern void func_801816A8(void *arg0); -extern void func_80181B34(void *arg0); -extern void func_80184ED4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_8018170C(void *a0); -extern void func_80181BEC(void *arg0); -extern void func_80181738(void *arg0); -extern void func_80181C78(void *arg0); -extern void func_801817B8(void *arg0); -extern void func_80181DC4(void *arg0); -extern s32 func_80181EFC(void *a0); -extern void func_80181F70(void *arg0); -extern void func_80181FE4(void *a0); -extern void func_801821A8(void * arg0); -extern void (*D_80191EE4[])(void); -extern void func_8018233C(s32 *param_1); -extern void func_80182490(void * arg0); -extern s32 func_80182544(void *a0); -extern s32 func_801825BC(void *a0); -extern void func_8018276C(void *a0); -extern void func_801828B0(void *a0); -extern void func_801821A8(void *a0); -extern void func_80182920(void *arg0); -extern void func_80182ACC(void * arg0); -extern void func_80182B58(void *arg0); -extern void func_80182BCC(void *a0); -extern void (*D_80192014[])(void); -extern void func_80182C98(void *a0); -extern s32 D_801D7E84; -extern void func_80182D0C(void); -extern void func_80182D24(void *arg0); -extern void func_80182D84(s32 a0); -extern s32 func_80182DC4(void); -extern void func_80182E00(void *arg0); -extern void func_80182C24(void *arg0); -extern void func_80182ED8(void *arg0); -extern void func_80182F18(void *a0); -extern void func_801831AC(short *a0); -extern void func_8018330C(void * arg0); -extern void (*D_8019211C[])(void); -extern void func_80183438(void *a0); -extern void func_80183474(short *a0); -extern void func_801834A0(void * arg0); -extern void func_801834CC(short *a0); -extern void func_801834F8(s32 a0); -extern void func_80183538(s32 a0); -extern void func_801831AC(short*); -extern void func_80183674(void *arg0); -extern void func_801831D8(s32 *a0); -extern void func_801836C0(s32 *a0); -extern void func_8018370C(void * arg0); -extern void func_80183938(void *arg0); -extern void (*D_80192230[])(void); -extern void func_80183A68(void *a0); -extern void func_80183AA4(void * arg0); -extern void func_80183AD0(s32 a0); -extern s32 func_80183B10(void); -extern void func_80183B4C(void *arg0); -extern void func_80183B8C(s32 param_1); -extern s32 func_80183D80(void *a0); -extern void func_80183DF4(void * arg0); -extern void (*D_80192414[])(void); -extern void func_80184130(void *a0); -extern void func_8018416C(s32 a0); -extern void func_801841AC(s32 a0); -extern void func_801841EC(s32 a0); -extern s32 func_8018422C(void); -extern void func_80184268(short *a0); -extern void func_80184298(short *a0); -extern void func_801842C8(short *a0); -extern s16 D_801923A4; -extern void func_801842F8(void *arg0); -extern void func_80183FA8(s32 *a0); -extern void func_80184328(s32 *a0); -extern void func_80183DF4(void*); -extern void func_801843C4(s32 *a0); -extern void func_80183E20(void *arg0); -extern void func_80184460(void *arg0); -extern void func_8018479C(void *a0); -extern void func_801847AC(void *a0); -extern s32 func_8012E57C(s32 a0, s32 a1); -extern s32 func_801847BC(void *a0, void *a1); -extern void func_80184858(void *a0); -extern void func_80184884(void *a0); -extern void func_801848B0(void *a0); -extern void func_8012F2E8(s32 a0, s32 a1, s32 a2); -extern s32 func_8012CB64(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern s32 aF801848DC(); -extern s32 func_80184B04(s32 arg0); -extern s32 func_80184960(s32 a0); -extern s32 func_80184960(s32 arg); -extern void func_80184A90(u8 *a0); -extern void func_80184AC4(void *a0); -extern short D_800BA2BA; -extern void (*D_801B8720[])(void); -extern void func_80184B2C(void *a0); -extern void func_80184B68(void); -extern void func_80184B70(void *a0, s32 a1, s32 a2); -extern s32 func_80184BD0(u8 a0, u8 a1, u8 a2, u8 a3); -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); -extern void func_80184C28(void *a0, s32 a1); -extern void func_80184CB0(void *a0); -extern void func_8012E8A8(u8 *a0); -extern s32 func_80184D00(void); -extern s32 func_80184D5C(void); -extern s32 aF80184DD0(); -extern s32 func_80184E44(void); -extern void func_80184EA0(void); -extern void func_8012B200(u8 *a0); -extern s32 aF80184FA4(); -extern s32 func_8018516C(s32 a0); -extern void (*D_801B8740[])(void); -extern void func_801851B4(void *a0); -extern void func_801851F0(void); -extern void func_801851F8(void); -extern void func_80185200(void); -extern void func_80185208(void); -extern void func_80185210(void); -extern void func_80185218(void *a0); -extern void func_8018525C(void); -extern void func_8001D0E8(s32 arg0, s32 arg1, s32 arg2); -extern void func_80185264(s32 a0); -extern void func_80185978(s32 a0); -extern void func_80185904(s32 a0); -extern void func_801859D8(s32 a0); -extern void func_8018589C(s32 a0); -extern void func_801852EC(s32 a0); -extern void func_8001C97C(s32 a0); -extern void *func_80185C6C(void *a0); -extern void func_801854C4(s32 a0); -extern void func_80185D70(void *a0); -extern void func_80185664(void *a0); -extern void func_8012E688(s32 param_1, u16 param_2, u16 param_3); -extern void func_80185EEC(void); -extern void func_801856E0(s32 a0); -extern void func_801857AC(void); -extern void func_801857CC(s32 a0); -extern s16 D_801B8788[]; -extern s32 D_801B8748[][2]; -extern void func_80185A58(s32 a0, s32 a1); -extern void func_8018602C(s32 a0, s32 a1); -extern void func_80185AB0(s32 a0); -extern void func_80185B10(s32 a0); -extern void func_80185B58(s32 a0); -extern void func_80185BA8(s32 a0); -extern s32 func_80185D10(void *a0); -extern s32 func_801862A8(void *a0); -extern void * func_80185C6C(void *a0); -/* ==== end §8b carried decl layer ==== */ - - - - -extern s32 func_80029504(void); -extern s32 func_80029178(s32 arg0); -extern s32 func_80184D00(void); -extern s32 func_80184E44(void); -extern void func_80178CBC(s32, s32); - -void func_80185D70(void *a0) { - - extern u8 D_80078E78[]; - extern void *D_801B89D0[]; - extern s32 D_801B89A0; - extern s32 D_801B89B8; - register void *s2 __asm__("$18") = a0; - register u8 *p __asm__("$17"); - register void *s0 __asm__("$16"); - s32 v0; - s16 v1; - - v0 = func_80029504(); - v1 = *(s16 *)((s32)s2 + 0x70); - p = D_80078E78; - s0 = D_801B89D0[v1]; - v1 -= 8; - switch (v1) { - case 1: - if (p[0x42] == 0) { - s0 = &D_801B89A0; - } - break; - case 0: - if (p[0x42] == 3) { - s0 = &D_801B89A0; - } - break; - case 4: - if ((u32)(v0 - 0x12C) < 0x12C) { - if ((func_80029178(0xFA) & 0xFF) != 0) { - s0 = &D_801B89B8; - } - } - break; - case 6: - if (p[0x42] == 6) { - s0 = &D_801B89A0; - } - if ((u32)(v0 - 0x64) < 0x1F4) { - s0 = &D_801B89B8; - } - if (func_80184E44() == 1) { - s0 = &D_801B89B8; - } - break; - case 5: - if (p[0x42] == 2) { - s0 = &D_801B89A0; - } - if (func_80184D00() == 3) { - s0 = &D_801B89B8; - } - if (func_80184E44() == 1) { - s0 = &D_801B89B8; - } - break; - } - ((void (*)(s32, s32))func_80178CBC)((s32)s2, (s32)s0); -} - - -/* - * Declaration reconciliation (byte-neutral) — these notes MUST travel with the body. - * - * 1. func_80185EEC (the function being defined). This TU already carries the - * canonical declaration - * extern s32 func_80185EEC(void); - * FIVE times above the splice point (L7450, L7492, L7504, L7534, L7559), and - * its banked callers reach it through `((void (*)(s32))func_80185EEC)(x)` - * casts. The real function takes one argument and returns void, so defining - * it under its own C name collides: - * 7740: conflicting types for `func_80185EEC' - * 7559: previous declaration of `func_80185EEC' - * Fix = the §37/§124 asm-label alias: define under the C name aF80185EEC - * carrying __asm__("func_80185EEC"). The emitted symbol is unchanged, the - * C-level name never meets the canonical declaration, blast radius is zero. - * - * 2. func_80185F20 (a callee). The TU DEFINES it BELOW the splice point - * (pre-splice L7740) as - * void func_80185F20(void *a0) - * so the invented prototype `extern void func_80185F20(s32 a0);` conflicted - * with that later definition: - * 7753: conflicting types for `func_80185F20' - * 7738: previous declaration of `func_80185F20' - * Fix = conform the prototype to the TU's own signature and push the type - * disagreement to a cast at the call site. Casting an s32 to void * emits - * no instruction, so this is byte-neutral. - * - * match_one.py still reports MATCH (13/13) after both changes. - */ - -extern void func_80185F20(void *a0); - -void aF80185EEC(s32 a0) __asm__("func_80185EEC"); - -void aF80185EEC(s32 a0) { - u16 v0; - s32 v1; - - v0 = *(u16 *)(a0 + 0xFE); - v1 = *(s32 *)(a0 + 0x20); - v0 = -v0; - *(s16 *)(a0 + 0xF4) = v0; - *(s32 *)(v1 + 0x20) = a0 + 0xEC; - func_80185F20((void *)a0); -} - - - -void func_80185F20(void *a0) { - if (*(u16 *)(a0 + 0x2) != 4) { - *(s16 *)(a0 + 0x5C) = 0x800; - } else if (*(s32 *)(a0 + 0xCC) != 1) { - *(s16 *)(a0 + 0x5C) = 0; - } else { - *(s16 *)(a0 + 0x5C) = 0x800; - } -} - - - -extern s32 func_8012E57C(s32 a0, s32 a1); - -void func_80185F54(void *a0, s32 a1, s32 a2) { - s32 v1 = func_8012E57C(0x61, (s32)(s16)a1); - if (v1 != 0) { - s32 v0 = *(s32 *)((char *)v1 + 0xCC); - if (v0 == 0) { - *(s32 *)((char *)v1 + 0xCC) = a2; - *(s32 *)((char *)v1 + 0xD0) = (s32)a0; - } - } -} - - - - -extern s32 func_8012E57C(s32 a0, s32 a1); - -void func_80185FB8(s32 a0, s32 a1, s32 a2) { - s32 s1; - s32 s0; - s32 v1; - s32 shift_temp; - - s1 = a0; - s0 = a2; - shift_temp = ((a1 << 16) >> 16); - v1 = func_8012E57C(0x61, shift_temp); - if (v1 == 0) { - return; - } - if (*(s32 *)((char *)v1 + 0xCC) != s0) { - return; - } - if (*(s32 *)((char *)v1 + 0xD0) != s1) { - return; - } - *(s32 *)((char *)v1 + 0xCC) = 0; - *(s32 *)((char *)v1 + 0xD0) = 0; -} - - - - -extern s32 func_8012E57C(s32 a0, s32 a1); - -void func_8018602C(s32 a0, s32 a1) { - s32 v1 = func_8012E57C(0x61, (s32)(s16)a0); - if (v1 != 0) { - if (*(s16 *)(v1 + 0x10A) < a1) { - *(s16 *)(v1 + 0x10A) = a1; - } - } -} - - -DEFINE_func_80186084() /* dedup: shared engine-core @0x80186084 (src/shared) */ - - - -DEFINE_func_801860C0() /* dedup: shared engine-core @0x801860C0 (src/shared) */ - - - - -/* func_8018613C — scan the 96-entry / 0x10C-stride D_801202A0 actor table for - * the lowest-scoring slot whose u16 tag at +0 is 0x61, then splat 3 words plus - * an align-1 8-byte block into the caller's struct. - * - * Byte-verified idioms (all four were needed; each was a real residual): - * - * 1. The 0x61 compare constant is NOT a source variable. gcc keeps it in a - * callee-saved reg and LICM sinks the `li` into the loop PREHEADER, so - * `addiu $s5,$zero,0x61` lands AFTER the guard branch's delay slot. Pinning - * an `s5` local puts the `li` in the entry block instead (+1 wrong slot). - * - * 2. The 8-byte copy at +0x10 is ONE align-1 struct assign, not two 4-byte - * ones. gcc's MIPS block move loads BOTH words first (lwl/lwr $a0, - * lwl/lwr $a1) then stores both; splitting it emits load/nop/store twice - * and costs an instruction (cookbook-index: "align-1 4xu8 struct assign - * emits the inline form"). - * - * 3. The parameter must NOT be register-pinned. With `register u8 *s2 - * __asm__("$18")` the entry-block `move` is a schedulable body insn and - * the list scheduler ranks the higher-priority `lui $s0` chain ahead of - * it, so the anti-dependent prologue `sw`s come out in regno order - * (s0,s1,s2,s3) instead of the target's def order (s2,s0,s1,s3). Letting - * gcc allocate the incoming parameter itself keeps the copy first and the - * whole prologue falls into place. (The other five pins are still needed.) - * - * 4. After the block store, gcc-2.7.2 CSE has invalidated memory, so - * a0->0x20 is RELOADED into a second pseudo — two separate C variables, - * not one reused variable (one variable => one pseudo => $a3 for both). - * The destination pointer must also be loaded BEFORE the source pointer: - * that source order is what lets the scheduler hoist `lw $v1,0x20($s2)` - * up into the first word-copy's load-delay slot. - */ - -extern s32 func_8012BD14(s32 a0); - -/* align-1 8-byte payload — drives the lwl/lwr + swl/swr inline block move */ - -void func_8018613C(void *a0) -{ - - extern u8 D_801202A0[]; - register u8 *s0 __asm__("$16"); - register s32 s1 __asm__("$17"); - register u8 *s3 __asm__("$19"); - register u8 *s4 __asm__("$20"); - u8 *s2; - u8 *v0; - u8 *v1; - u8 *a0p; - - s2 = (u8 *)a0; - s0 = D_801202A0; - s1 = 0x7FFF; - s3 = s0 + 0x6480; - - while (s0 != s3) { - if (*(u16 *)s0 == 0x61) { - s32 v1_val = func_8012BD14((s32)s0); - if (v1_val < s1) { - s1 = v1_val; - s4 = s0; - } - } - s0 += 0x10C; - } - - s0 = s4; - if (s1 == 0x7FFF) { - *(s16 *)((s32)s2 + 0x5C) = 0; - } else { - *(s32 *)(s2 + 0x4) = *(s32 *)(s0 + 0x4); - *(s32 *)(s2 + 0x8) = *(s32 *)(s0 + 0x8); - *(s32 *)(s2 + 0xC) = *(s32 *)(s0 + 0xC); - - v1 = *(u8 **)(s2 + 0x20); - v0 = *(u8 **)(s0 + 0x20); - *(struct Un8_8018613C *)(v1 + 0x10) = *(struct Un8_8018613C *)(v0 + 0x10); - - a0p = *(u8 **)(s2 + 0x20); - *(u16 *)(a0p + 0x12) = *(u16 *)(a0p + 0x12) - *(u16 *)(s0 + 0xFE); - - *(s16 *)((s32)s2 + 0x5C) = 0x800; - } -} - - -DEFINE_func_8018625C() /* dedup: shared engine-core @0x8018625C (src/shared) */ - - -/* func_801862A8 — scan the 96-entry / 0x10C-stride D_801202A0 actor table for - * an entry whose world position, transformed into a0's local frame, falls - * inside the box (x in [-0xA0,0x80), y in [-0xC0,0x80)). Returns 1 on the - * first hit, 0 if none. - * - * Two idioms carry this one: - * - * 1. ONE source pointer, TWO induction registers. The target walks $s1 (the - * record base, used for the +0 tag load and as the func_801863B4 argument) - * and $s0 = $s1 + 0xE, which serves the +6 / +0xA / +0xE / +0x20 fields as - * -8 / -4 / 0 / +0x12. That second register is loop.c's own giv: write - * ONE pointer `p` and address every field as `p + const`, and combine_givs - * rebases them all onto a single p+0xE representative. Writing the second - * pointer explicitly in source is what breaks it — gcc then treats it as a - * second biv AND still manufactures a giv at p+0xA, giving three IV - * registers and +2 instructions ($s4 spill, 69 ins). - * - * 2. The zero-byte `__asm__("")` fence before `return 1` (cookbook §34 - * toolkit). Without it, reorg.c cannot fill the `beqz` delay slot from - * the fall-through thread (`li v0,1` clobbers the branch's own operand), - * leaves the slot empty, and then relax_delay_slots' "conditional jump - * around an unconditional jump" rule INVERTS the branch into - * `bnez $v0, ` + `li $v0,1` — a strictly shorter tail (65 ins) - * that the original does not have. The asm insn stops both the eager - * filler and the inversion test (`next_active_insn` is no longer the `j`), - * so reorg falls back to copying `addiu $s1,$s1,0x10C` out of the branch - * target and advancing the label — the target's duplicated increment. - */ - -extern s32 func_801863B4(s32 a0); -extern void func_8012F2E8(s32 a0, s32 a1, s32 a2); -extern s32 func_8012CB64(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); - -s32 func_801862A8(void *a0) { - - extern u8 D_801202A0[]; - u8 *p; - u8 *end; - s32 t; - u16 tag; - s16 out[3]; - s16 in[3]; - - p = D_801202A0; - end = p + 0x6480; - if (p != end) { - do { - tag = *(u16 *)p; - if (tag != 0 && tag != 0x61 && func_801863B4((s32)p) != 0) { - t = *(s32 *)(p + 0x20); - if (t != 0 && *(s32 *)(t + 0x24) != 0 && *(s32 *)(t + 0x4) >= 0) { - in[0] = *(u16 *)(p + 0x6); - in[1] = *(u16 *)(p + 0xA); - in[2] = *(u16 *)(p + 0xE); - func_8012F2E8((s32)a0, (s32)in, (s32)out); - if (func_8012CB64((s32)out, -0xA0, 0x80, -0xC0, 0x80) != 0) { - __asm__(""); - return 1; - } - } - } - p += 0x10C; - } while (p != end); - } - return 0; -} - - - - - -s32 func_801863B4(s32 a0) { - - extern s16 D_801B8A44[]; - s16 *p; - s16 v; - s32 x; - - p = D_801B8A44; - v = *p; - if (*p != -1) { - x = *(u16 *)a0; - do { - if (x == v) { - return 1; - } - p++; - v = *p; - } while (*p != -1); - } - return 0; -} - - - -extern void func_8012F214(s32 arg0, s32 arg1, s32 arg2); - -void func_80186410(void) { - - extern s32 D_801B87D8; - extern s32 D_801E7AAC; - register s32 a0 __asm__("$4"); - u16 buffer[4]; - s32 val; - s32 *p; - - func_8012F214(a0, (s32)&D_801B87D8, (s32)buffer); - - val = buffer[0] | (((s16)buffer[2]) << 16); - - p = *(s32**)&D_801E7AAC; - p[1] = val; -} - - -s16 func_80186450(void) { - - extern s16 D_801E7030; - return D_801E7030; -} - - -extern void func_801864AC(void); -extern u8 D_800B9A15; -extern u8 D_800B9A13; -extern u16 D_80115110; -extern u16 D_80115112; -extern s16 D_80115126; -extern void *D_8011DB24; - -s32 func_80186460(s32 a0) { - void *func_ptr; - - D_800B9A15 = 1; - D_800B9A13 = 4; - D_80115110 = 3; - func_ptr = func_801864AC; - D_80115112 = 0; - D_80115126 = (s16)a0; - D_8011DB24 = func_ptr; - return (s32)func_ptr; -} - - - -extern void func_80029444(void); -extern void func_801754A8(void); -extern void func_80141C04(void); - -void func_801864AC(void) { - - extern u16 D_80115112; - extern u16 D_80115116; - extern void (*D_801B94B0[])(void); - u16 i; - func_80029444(); - func_801754A8(); - i = D_80115112; - D_801B94B0[i](); - func_80141C04(); - D_80115116++; -} - - - - -void func_8018651C(void) { - extern void func_800D24A0(s32 a0); - extern void func_80186570(void); - extern u16 D_8011511A; - extern u16 D_80115112; - extern s32 D_80115130; - extern s32 D_801E7700; - - func_800D24A0(3); - D_8011511A = 0; - func_80186570(); - D_80115130 = 0; - D_801E7700 = 0; - D_80115112++; - return; -} - diff --git a/src/ov_SC04_019/ov_SC04_019_jr_80186570.c b/src/ov_SC04_019/ov_SC04_019_jr_80186570.c deleted file mode 100644 index 7e89054a0..000000000 --- a/src/ov_SC04_019/ov_SC04_019_jr_80186570.c +++ /dev/null @@ -1,3687 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8; -typedef void (*Handler)(struct Entry_8016E95C *); -extern void func_801458E0(void); -extern s32 D_800AE6AC; -extern s32 D_800AE6B0; -extern u8 D_80078E50; -extern void func_800D185C(u8 *a0); -extern void func_801458E8(void); -extern s32 func_80029504(void); -extern void func_80145B24(void); -extern u8 D_8018F74C; -extern u8 D_8018F6BC; -extern u8 D_8018F698; -extern u8 D_8018F674; -extern u8 D_8018F728; -extern u8 D_8018F704; -extern u8 D_8018F6E0; -extern u8 D_8018F650; -extern void func_80145934(void); -extern u8 D_8018F7DC; -extern u8 D_8018F7B8; -extern u8 D_8018F794; -extern u8 D_8018F770; -extern void func_80145A2C(void); -extern s32 func_800291DC(s32); -extern void func_800291C8(s32, s32); -extern void func_80162120(void); -extern void func_80029124(s32, s32); -extern s32 func_80165A50(s32); -extern void func_80029514(s32); -extern u8 D_80078EC0; -extern s32 func_80028FBC(void); -extern s32 func_80029000(void); -extern s32 func_80028D9C(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_80145BF8(void); -extern s32 func_800291B4(s32 arg); -extern void func_800291A0(s32, s32); -extern void func_80145C54(void); -extern s32 func_80145CEC(); -extern s32 func_80029178(s32 arg); -extern void func_80146014(s32 a0); -extern unsigned char D_8018EBD4[]; -extern unsigned char D_8018EC04[]; -extern unsigned char D_8018EC54[]; -extern unsigned char D_8018EC84[]; -extern unsigned char D_8018ECB4[]; -extern void func_80145EE8(s32 param_1); -extern void MoveImage(void *a0, s32 a1, s32 a2); -extern void func_80146074(void); -extern s32 func_80146128(void); -extern void func_80146360(void); -extern void func_801463A0(); -extern void func_8014607C(void); -extern s32 *D_80126B78; -extern u8 D_80078EC1; -extern s32 D_80078EC8; -extern s32 D_80126B9C; -extern s32 D_8011F730; -extern u16 D_801152B8; -extern u16 D_8012693A; -extern u8 D_80126BE0[]; -extern u8 D_801150F0[]; -extern void *memcpy(void *dst, const void *src, u32 n); -extern void func_80146FC4(s32 a0); -extern void func_80150A70(s32 a0); -extern void func_80147098(s32 *a0); -extern void func_8014A638(s32 arg0); -extern s32 func_80155458(s32 a0); -extern s32 func_80029104(void); -extern void func_80029344(void); -extern void func_8014ADE0(s32 a0); -extern void func_8014B350(s32 a0); -extern void func_8014B7A4(s16 *param_1); -extern s32 func_80161D58(s32 a0); -extern void func_80161A90(s32 a0); -extern void func_8014B504(u16 *a0); -extern void func_80149BEC(s32 a0); -extern void func_8014B5D0(s32 *a0); -extern void func_8014C99C(u8 *a0); -extern void func_8014B190(s32 s0); -extern void func_80148648(s32 a0, s32 a1); -extern s32 func_80149228(s32 a0); -extern void func_8014A59C(s32 a0); -extern void func_8016F14C(void *a0); -extern void func_80154418(void *a0); -extern void func_80154BE4(s32 a0); -extern void func_80165694(s32 arg0); -extern void func_801654A8(s32 a0); -extern void func_8014A680(s32 a0); -extern void func_8014A6A8(s32 a0); -extern void func_8014A71C(s32 a0); -extern void func_80172588(s32 *a0); -extern void func_801473DC(s32 *a0); -extern void func_80015978(s32 a0, s32 *a1); -extern void (*D_8018ED04[])(void *); -extern u8 D_80126BA4; -extern s32 D_80127098; -extern s32 D_80127094; -extern s32 D_80127090; -extern void func_80146534(void); -extern void func_8001D074(s32 a0, s32 a1); -extern void func_80146554(void); -extern void func_80146578(void); -extern void func_8001CFDC(s32, s32); -extern void func_8014659C(void); -extern void func_8001D074(s32, s32); -extern void func_801465C0(void); -extern void func_801465E4(void); -extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); -extern s32 D_8011F9D0; -extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); -extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 D_8011F750; -extern s32 D_8011F754; -extern u8 * func_801468C8(s32 arg0, u8 arg1); -extern s32 D_8011D030; -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); -extern s32 func_80146B9C(void *a0); -extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); -extern u16 D_8011DA28; -extern s32 func_80146B9C(void * arg0); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80146CA0(void *a0); -extern void func_80146CB4(void *a0); -extern void func_80146CC8(s32 a0); -extern void func_80146D30(s32 a0); -extern void func_80146D80(s32 *a0); -extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80146D90(s32 a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); -extern void func_80146E90(s32 *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80015954(s32 a0, s32 a1); -extern void func_80149374(s32 a0, s32 a1); -extern void func_80146F58(s32 a0, s32 a1); -extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 func_8012A68C(void); -extern s16 func_8012A758(void); -extern void func_8004978C(s16 *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern u8 D_80126DB0[]; -extern u16 D_80126DB6; -extern void func_8014704C(s32 *a0); -extern s32 func_80147054(void *a0); -extern void func_80147060(u8 * a0); -extern void func_8014706C(void *arg0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80147084(s32 *a0); -extern void func_8014708C(void *arg0); -extern s32 func_801470A0(void *a0); -extern void func_801470AC(s32 *a0); -extern void func_801470B4(s32 arg0); -extern void func_801470C0(s32 a0); -extern void func_80147118(s32 a0); -extern s16 D_80126BB8; -extern s16 D_80126BBA; -extern s16 D_80126BBC; -extern void func_80147264(s32 a0); -extern void func_80147290(void); -extern void func_801472B4(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void *D_8012707C; -extern void func_801472DC(void); -extern void func_801472F0(void *a0); -extern void func_80147364(u16, s32); -extern void func_80147300(u16 arg0); -extern void func_80147324(s32 arg0); -extern void func_801473EC(s32 *a0); -extern void func_80147460(s32 a0); -extern void func_80147514(); -extern void func_80147628(s32 a0); -extern void func_80147478(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); -extern s32 func_800129CC(s32 a0, s32 a1); -extern void func_80147514(s32 arg0); -extern void func_80013F3C(s32 a0); -extern void func_80012558(s32 a0, s32 a1); -extern void func_800126C4(s32 a0, s32 a1); -extern void func_800123F0(s32 a0, s32 a1); -extern void func_80147718(s32 a0); -extern void func_80147788(void *a0, s32 a1); -extern void func_801477A8(void *a0, s32 a1); -extern void func_801477C8(void *a0, s32 a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80147814(s32 a0, s32 a1); -extern void func_80147928(int a0, int a1); -extern void func_8014799C(int a0, int a1); -extern void func_80147A10(int a0, int a1); -extern void func_80147860(int a0, int a1, int a2, int a3); -extern void func_80147948(s32 a0, s32 a1, s32 a2); -extern void func_801479BC(s32 a0, s32 a1, s32 a2); -extern void func_80147A30(s32 a0, s32 a1, s32 a2); -extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147948(int a0, int a1, int a2); -extern void func_801479BC(int a0, int a1, int a2); -extern void func_80147A30(int a0, int a1, int a2); -extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147A84(s32 arg0); -extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147AAC(s32 arg0); -extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80147B5C(s32 a0, void *a1); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern void func_80147B18(s32 a0); -extern void func_80147B5C(s32 arg0, void *arg1); -extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147DC0(s32 a0, s32 a1); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147F50(s32 arg0); -extern void func_80148038(s32 a0, s32 a1); -extern s32 ratan2(s32 a0, s32 a1); -extern s32 csqrt(s32 a0); -extern s32 func_80012A60(s32 a0, s32 a1); -extern void func_80148094(int param_1, short *param_2, int *param_3); -extern void func_801485B8(s32 a0, s32 a1, s32 a2); -extern void func_801484B0(s32 a0, s32 a1); -extern s32 func_80154358(void *a0); -extern void func_801484E8(s32 a0, s32 a1); -extern void func_80148534(s32 a0, s32 a1); -extern void func_8014856C(s32 a0, s32 a1); -extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); -extern void func_80148634(void *a0); -extern u8 D_800B9A64; -extern s32 func_80014DC0(); -extern s32 func_80014D68(); -extern s32 func_80014D94(); -extern s32 func_80014CF8(); -extern void func_800120DC(); -extern s32 func_800CF8B4(); -extern u16 func_801487F4(s32 *a0); -extern u16 func_80148800(s32 *a0); -extern u8 func_8014880C(s32 *a0); -extern u16 func_80148818(s32 *a0); -extern s32 func_80047D3C(s32 a0); -extern s32 func_80148824(void *arg0); -extern s32 func_801488A8(u8 *a0); -extern s32 func_8014891C(s32 a0); -extern s32 func_80148980(u8 *a0); -extern s32 func_801489E8(s32 a0); -extern s32 func_80148A48(s32 a0); -extern int func_80148AFC(void *a0); -extern void func_80148AAC(u8 *a0); -extern s32 func_80148C18(void); -extern s32 func_80148C20(s32 a0, s16 a1); -extern s32 func_80148C34(s32 a0, s32 a1); -extern s32 func_80148C4C(s32 a0, s32 a1); -extern s32 func_80148C64(s32 a0, s32 a1); -extern s32 func_80148C7C(void); -extern s32 func_80148C84(s32 a0, s32 a1); -extern s32 func_80148C9C(s32 a0, s32 a1); -extern s32 func_80148CB4(s32 a0, s32 a1); -extern s32 func_80148CCC(s32 a0, s32 a1); -extern s32 func_80148CE4(void); -extern s32 func_80148CEC(void); -extern s32 func_80148CF4(s32 a0, s32 a1); -extern s32 func_80148D0C(s32 a0, s32 a1); -extern s32 func_80148D24(void *a0, int a1); -extern s32 func_80148D3C(void); -extern s32 func_80148F60(void); -extern s32 func_80148F68(s32 a0); -extern s32 func_80148F74(s32 a0); -extern s32 func_80148F80(s32 a0); -extern s32 func_80148F8C(s32 a0); -extern s32 func_80148F98(void); -extern s32 func_80148FA0(s32 a0); -extern s32 func_80148FAC(s32 a0); -extern s32 func_80148FB8(s32 a0); -extern s32 func_80148FC4(s32 a0); -extern s32 func_80148FD0(void); -extern s32 func_80148FD8(void); -extern s32 func_80148FE0(s32 a0); -extern s32 func_80148FEC(s32 a0); -extern s32 func_80148FF8(s32 a0); -extern s32 func_80149004(void); -extern void func_8014900C(s32 *a0); -extern void func_80149020(s32 *a0); -extern void func_80149034(s32 *a0); -extern void func_80149048(s32 *a0); -extern void func_8014905C(u8 *a0); -extern void func_801490E0(s32 *a0, s16 a1); -extern void func_801490E8(s32 *a0, s16 a1); -extern void func_801490F0(s32 *a0, s16 a1); -extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); -extern void func_801490F8(s32 a0, s32 a1); -extern s32 func_801491C4(s32 a0); -extern s32 func_80149184(s32 a0); -extern void func_80149204(s32 *a0); -extern void func_80149210(s32 a0, s32 a1); -extern s32 func_80149284(s32 *a0, s32 a1); -extern void func_80149350(s32 arg0); -extern void func_80149290(s32 a0); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_80149374(s32 arg0, s32 arg1); -extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8014942C(s32 arg0); -extern void func_8012EF70(s32 a0, s32 a1); -extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012EFB8(s32 a0); -extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); -extern void func_8014964C(s32 param_1, s32 param_2); -extern s32 func_801496D4(void *a0); -extern void func_8015AD08(); -extern void func_80149704(void); -extern void func_8015ACC4(); -extern void func_80149724(void); -extern u8 D_80078EBF; -extern s32 func_80149744(struct S_80149744 *a0); -extern void func_8015F7A0(); -extern void func_80149788(void); -extern void func_801653B8(); -extern void func_80149864(void); -extern s16 currentLocationId; -extern s32 func_8016F1AC(void); -extern s32 func_80149884(void); -extern void func_80160B00(); -extern void func_801498C0(void); -extern s32 func_80149AA8(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern void func_80146750(void *a0); -extern s32 func_801498E0(s32 *a0); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_80147364(u16 a0, s32 a1); -extern s32 func_800CCF28(s32 a0); -extern u8 D_80126B5C; -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_8015DAC4(s32 *a0); -extern void func_8015554C(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern void func_80149B14(s32 *a0); -extern u8 func_8014BEF8(void); -extern s32 func_80149B54(s32 * arg0); -extern void func_8015DE24(s32 *a0); -extern void func_80157510(s32 *a0); -extern void func_80149BAC(s32 *a0); -extern s32 func_80029178(s32 a0); -extern s32 func_80149C08(s32 arg0); -extern void func_801577C8(); -extern void func_80149C94(void); -extern void func_80157D20(void); -extern void func_80149CB4(void); -extern s32 func_80149CD4(s32 a0); -extern u8 func_8014B5B8(s32 *a0); -extern s32 func_80149D10(s32 a0); -extern s32 func_80149E94(s32 a0); -extern s32 func_80149DD8(s32 a0); -extern s32 func_80149D9C(s32 a0); -extern s32 func_80149F2C(s32 a0, s32 a1); -extern s32 func_80149E94(s32 arg0); -extern void func_80149FA8(void); -extern s32 D_8018EDCC[]; -extern s32 func_80149FB0(s32 a0); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern void func_8014A1B0(s32 a0, s32 a1); -extern s32 func_8014A048(s32 param_1); -extern u16 func_80156370(u16 a0); -extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); -extern void func_8015D4B4(); -extern void func_8014A218(void); -extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); -extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); -extern s32 func_8014A238(s32 arg0); -extern s32 func_8014A2E4(s32 a0); -extern void func_8014A380(s32 a0, s32 a1); -extern s16 D_801152B0; -extern s16 D_801152B4; -extern s32 func_8014A3E0(struct S_8014A3E0 *a0); -extern s32 func_8014A454(s32 a0); -extern s32 func_8014A4B4(void *a0); -extern void func_8015EDD4(); -extern void func_8014A4FC(void); -extern s32 func_8014A674(s32 *a0); -extern s32 func_8014A69C(s32 *a0); -extern s32 func_8014A6C4(s32 a0); -extern void func_8015E184(); -extern void func_8014A830(void); -extern s32 func_80029AF4(void); -extern s32 func_8014A850(s32 param_1); -extern void func_8014AA04(s32 a0); -extern void func_801599A4(void *a0); -extern void func_80159B3C(void *a0); -extern s32 func_80165A20(s32 a0); -extern void func_8014AB7C(); -extern void func_8014AC10(); -extern void func_8014AA28(void); -extern void func_8014AB5C(void); -extern void func_80162CCC(void); -extern void func_8014AB7C(s32 arg0); -extern void func_8014ABF0(void); -extern void func_80016714(void *a0, s32 a1); -extern void func_8014AC10(s32 arg0); -extern void func_8014ACC0(s32 a0, s32 a1); -extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); -extern void func_8014ACE8(void *a0, s32 a1, s32 a2); -extern void func_80146AFC(void *a0); -extern void func_8014ADA8(s32 a0, s32 a1); -extern void func_8014AD7C(s32 a0); -extern s32 D_80078E8C; -extern void func_8014B034(s32 arg0); -extern void func_8014B00C(s32 arg0); -extern void func_8014B084(void); -extern s16 D_80078E90; -extern void func_8014B034(s32 a0); -extern u8 D_80078EBA; -extern void func_800D10EC(void); -extern void func_8002AC98(void); -extern s32 func_8014B154(s32 *a0); -extern void func_8014B12C(void); -extern void func_8014B2F8(void); -extern void func_8014B4C4(void); -extern void func_8014B160(s32 a0); -extern s32 func_8016F1C4(void); -extern s16 D_80078E96; -extern s16 D_80078EB8; -extern u16 D_80078EA6; -extern void func_8014B2A8(void); -extern void func_8014B310(void); -extern void func_8014B2D0(void); -extern s32 D_80078E94; -extern s32 D_80078ECC; -extern void func_8014B33C(void); -extern u8 D_80062BF4[]; -extern void func_8014BC80(s32 a0, s32 a1); -extern void func_80019064(void *a0); -extern s32 D_80078E98; -extern void func_80166244(); -extern void func_8014B4D4(void *a0); -extern s16 D_80078E9A; -extern u8 D_80126D1C; -extern s32 D_80126D74; -extern void func_8014B598(s32 a0, s32 a1); -extern void func_8014B5B0(s32 *a0); -extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); -extern void func_8014B5D8(s32 s1); -extern s32 D_80078E9C; -extern s32 D_80078ED0; -extern void func_8014B6F0(s32 a0, s32 a1); -extern void func_8014B768(s32 a0, s32 a1); -extern void func_8014B944(s32 a0, s32 a1, s32 a2); -extern s32 D_80078EA4; -extern u16 D_80078EB2; -extern s16 D_80078EB4; -extern void func_8014BB0C(void); -extern void func_8014BB24(s32 a0, s32 a1, s32 a2); -extern void func_8014BC0C(s32 a0, s32 a1); -extern void func_8014BC44(s32 a0, s32 a1); -extern u8 D_800B9A17; -extern void func_8014BCC0(s32 a0, s32 a1); -extern u16 D_80078EB6; -extern s32 func_8014BCEC(s32 a0, s32 a1); -extern void func_8014BD24(s32 a0, s32 a1); -extern void func_8014BD60(s32 param_1, s32 param_2); -extern void func_8014BD98(s32 a0, u16 a1); -extern void func_8014BDC8(void); -extern void func_8014BDE0(void); -extern s32 func_8017267C(s32 *a0); -extern s32 func_80013294(void *a0, void *a1); -extern void func_80029ED4(s32 a0); -extern void func_8014BDE8(s32 a0); -extern void func_8014BE78(void); -extern void func_8014BE9C(void); -extern void func_80029124(s32 a0, s32 a1); -extern void func_8014BEC0(void); -extern void func_8014BF18(s32 a0); -extern void func_8014BF48(void); -extern u8 func_8014BF6C(void); -extern void func_8014BF8C(u8 arg0); -extern void func_8014BFB0(void); -extern u8 func_8014BFD4(void); -extern void func_8014BFF4(s32 a0, s32 a1); -extern void func_8014C010(s32 a0, s32 a1); -extern s32 func_8014C050(s32 a0, s32 a1); -extern s32 func_8014C088(s32 a0, s32 a1); -extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); -extern s32 func_8014C118(void * a0, s32 a1, s32 a2); -extern s32 func_8014C168(s32 * param_1, s32 param_2); -extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); -extern u8 D_8018EE54[]; -extern void func_8014C1A0(s32 arg0, s32 arg1); -extern s32 func_80013328(s32 a0, s32 a1); -extern s32 func_8014C59C(void *a0, void *a1); -extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); -extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); -extern s32 ratan2(s32 dx, s32 dy); -extern u8 D_8018EE5C; -extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); -extern s16 func_8014C5D0(s32 a0, s32 a1); -extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); -extern u8 D_80126D17; -extern void func_8014C6AC(void); -extern void func_8014C6C0(void); -extern u8 D_80126D1E; -extern void func_8014C6D0(void); -extern void func_8014C6E0(void); -extern s32 func_8014C860(s32 a0, s32 a1); -extern void func_8014C8C8(s32 a0, s32 *a1); -extern void func_8014C88C(s32 a0); -extern void func_8014C8C8(s32 dst, s32 * src); -extern void func_8014C8F0(s32 arg0); -extern u8 D_801151F0[]; -extern s32 func_8014C918(s32 a0, s32 a1); -extern s32 D_80126B50; -extern void func_8014C968(void); -extern void func_8014C978(void); -extern s32 func_8014C98C(void); -extern void func_80139914(s32 a0); -extern s32 func_8014CA00(s32 a0); -extern u16 func_8014CA70(s32 a0, s32 a1); -extern s32 func_8014CA14(s32 a0, s32 a1); -extern u16 func_8014CAE4(s32 *a0, s32 a1); -extern s32 func_8014CA88(s32 *a0, s32 a1); -extern s32 func_8014CAFC(void); -extern s32 func_8014CB0C(void); -extern s32 func_8014CB1C(void); -extern u8 D_80126D1F; -extern s32 func_8014CB2C(void); -extern s32 func_8014CB58(void); -extern u8 D_80126D1D; -extern void func_8014CB68(void); -extern s32 func_8014CB7C(void); -extern s32 func_8014CB8C(void); -extern short D_80126C9E; -extern void func_8014CB9C(struct Packed8 *a0); -extern s32 D_80126CDC; -extern void func_8014CBD8(void); -extern s16 D_80126CC4; -extern void func_8014CBE8(void); -extern void func_8014CBF8(void *a0); -extern void func_8014D3E0(s32 a0); -extern void func_8014D04C(void); -extern void func_8014CCB4(void); -extern void func_8014CC28(s32 a0); -extern void func_8014CD0C(u8 *a0); -extern s32 func_8014CF04(s32 a0, s32 a1, void *a2); -extern void func_8014CD80(s32 a0, void *a1, void *a2); -extern void func_8014D0A4(s32 a0); -extern s32 func_8014D2A0(s32 a0, void *a1, void *a2); -extern s32 func_8014D12C(s32 a0, void *a1, void *a2); -extern void func_8014D438(s32 a0); -extern void func_8014D3E0(s32 _arg0); -extern void func_8014D610(s32 a0, void *a1, void *a2); -extern s32 func_8014D4C0(s32 a0, void *a1, void *a2); -extern void func_8014D790(s32 a0); -extern void func_8014D738(void); -extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); -extern s32 func_8014D820(s32 a0, u16 *a1, u16 *a2); -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); -extern void func_8014DF94(s32 arg0); -extern void func_8014DF3C(void); -extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ -extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ -extern s16 D_801152AC; -extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); -extern void func_8014E48C(s32 a0); -extern void func_8014E434(void); -extern void func_8014E5B4(s32 a0, void *a1, void *a2); -extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); -extern void func_8014E6F8(struct SubE6F8 *a0); -extern void func_8014E6A0(void); -extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); -extern void func_8014E934(s32 _arg0); -extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); -extern s32 func_8014E98C(void *a0); -extern u16 D_800B99DA; -extern s32 D_801150D8; -extern s16 D_801152AA; -extern u8 D_80126720[]; -extern s16 D_80126724; -extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); -extern s32 func_8014ED80(struct SubED80 *a0); -extern int D_801E5BA8; -extern void func_8014ED28(s32 _arg0); -extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F24C(struct SubF24C *a0); -extern void func_8014F1F4(void); -extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F4C0(); -extern s32 func_8014F468(void); -extern int func_8014F74C(); -extern int func_8014F6F4(void); -extern u8 D_800D3918[]; -extern u8 D_801152A8[]; -extern s32 D_801152BC; -extern int func_8014F74C(s32 arg0); -extern s32 func_8014FA70(s32 a0); -extern s32 D_801E5BAC; -extern void func_8014FA04(s32 a0); -extern s32 func_8014FBC0(); -extern s32 func_8014FC18(u8 *self); -extern int func_8014FD54(int param_1); -extern void func_8014FCFC(void); -extern void func_80150170(void *a0); -extern s32 func_8014FE60(void *a0); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_8014FE60(void *e); -extern s32 func_80134510(s32 arg); -extern s32 func_80150150(s32 a, s32 b); -extern s32 func_80150460(s32 a, s32 b); -extern void func_801504D8(u16 *a0); -extern s32 func_80150480(s32 _arg0); -extern s32 func_80150528(void *a0, void *a1, void *a2); -extern s32 func_80150528(void *arg0, void *arg1, void *arg2); -extern s32 func_801506A4(s32 a0, s32 a1); -extern s32 func_801505FC(s32 a0); -extern s32 func_801506A4(s32 arg0, s32 arg1); -extern void func_80150820(s32 a0, s32 a1); -extern void func_8015086C(int param_1); -extern s32 func_801508B4(s32 a0); -extern s32 func_8015094C(s32 a0); -extern short func_801508F8(s32 a0); -extern s32 D_8018EE8C; -extern s32 D_80126990; -extern s32 D_80126994; -extern s32 func_80021174(s32 a0, s32 a1); -extern s32 func_8015094C(s32 param_1); -extern void func_80150B9C(void); -extern s32 func_80151184(s32 a0, s32 a1, s32 a2); -extern s32 func_80150BA4(s32 a0); -extern s32 func_801619D0(void *a0); -extern void func_80150BC8(s32 *a0); -extern s32 func_80150480(s32 a0); -extern u16 D_800AE6DC; -extern void func_80150C48(s32 a0); -extern int func_80151184(int arg, int a1, int a2); -extern int func_80150CA0(int arg); -extern void func_80150EC4(s32 a, s32 b); -extern void func_80150CC4(s32 a); -extern void func_80150CE4(s32 a); -extern void func_80150D04(s32 a); -extern void func_80150D24(s32 a); -extern void func_80150D44(s32 a); -extern void func_80150D64(s32 a); -extern void func_80150D84(s32 a); -extern void func_80150DA4(s32 a); -extern void func_80150DC4(s32 a); -extern void func_80150DE4(s32 a); -extern void func_80150E04(s32 a); -extern void func_80150E24(s32 a); -extern void func_80150E44(s32 a); -extern void func_80150EC4(s32 a0, s32 a1); -extern void func_80150E64(s32 a0); -extern void func_80150E84(s32 a0); -extern void func_80150EA4(s32 a0); -extern u8 D_800AE6C0; -extern s16 D_800AE6C8; -extern s16 D_800AE6CA; -extern s16 D_800AE6CC; -extern s32 D_800AE6C4; -extern s16 D_800AE6CE; -extern u8 D_800AE6BE; -extern u8 D_801201F8[]; -extern void func_80150F78(void); -extern void func_80150F80(s32 a0); -extern int func_80150FB4(int arg); -extern void func_80150FD8(s32 a0); -extern int func_80151014(int arg); -extern void func_80151038(s32 a0); -extern int func_80151070(int arg); -extern int func_80151094(int arg); -extern void func_801510B8(void); -extern void func_801510C0(void); -extern int func_801510C8(int arg); -extern int func_801510EC(int arg); -extern s32 func_8012DB84(void); -extern s32 func_80151110(void); -extern void func_80151130(void); -extern int func_80151138(int arg); -extern void func_8015115C(s32 *a0, s16 a1); -extern s32 func_80151164(s32 a0, s32 a1); -extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); -extern void func_801511A8(u8 *a0); -extern void func_801511C4(u8 *a0); -extern int func_80151204(int arg, int a1); -extern int func_801511E0(int arg); -extern int func_80151204(int a0, int a1); -extern void func_80151238(void *a0); -extern void func_8015126C(u16 *p); -extern void func_80151780(s32 a0); -extern void func_801516F0(s32 *a0); -extern void func_8015173C(s32 *a0); -extern s16 D_8011DB1A; -extern s32 D_80127518; -extern s32 D_801151FC; -extern s32 func_801725CC(u8 *a0); -extern s32 func_80029D3C(void); -extern void func_80151878(void); -extern void func_80153B58(s32 *a0); -extern s32 func_80151880(s32 a0); -extern s32 func_801518D8(s32 a0); -extern s32 func_80151944(void); -extern s32 func_80151924(void); -extern void func_8014E934(s32 a0); -extern s32 func_8014F3E8(s32 a0); -extern void func_801519C8(s32 a0); -extern void func_80151980(s32 a0); -extern M2C_UNK D_800D5880; -extern s32 D_800D58AC; -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801519C8(s32 arg0); -extern void func_80151C54(s32 a0); -extern void func_801542DC(s32 *a0, s32 a1); -extern void func_8015BDD0(s32 *a0); -extern void func_80165718(s32 a0); -extern u8 D_800D46E4[]; -extern void func_80151AE4(s32 arg0); -extern void (*D_8018EF34[])(void); -extern void func_80151D24(void *a0); -extern void func_80151DB0(s32 a0); -extern void func_80151D60(void *a0); -extern s32 func_80172630(u8 *a0); -extern s32 D_80062C14; -extern void func_80151DB0(s32 param_1); -extern void func_80151E78(s32 *a0); -extern void func_80151ECC(struct S80151ECC *a0); -extern void func_80151FB4(s32 a0); -extern void func_80151F38(s32 *a0); -extern void func_801553C0(s32 a0); -extern void func_80153C18(); -extern void (*D_8018EF58[])(void); -extern void func_80152058(void *a0); -extern void func_801520DC(s32 a0); -extern void func_80152094(s32 a0); -extern void func_80147324(s32 a0); -extern u8 D_80062C04[]; -extern M2C_UNK D_8018EF48; -extern void func_801520DC(s32 arg0); -extern void func_801470B4(s32 a0); -extern void func_8015369C(s32 a0); -extern void func_80152194(s32 *a0); -extern s32 func_801536DC(s32 a0); -extern void func_8015220C(s32 a0); -extern s32 func_80153800(s32 a0); -extern void func_801522CC(s32 a0); -extern void func_80152254(s32 *a0); -extern void (*D_8018EF6C[])(void); -extern void func_80152370(void *a0); -extern void func_801523F4(s32 a0); -extern void func_801523AC(s32 a0); -extern void func_8001382C(s32 a0, void *a1, void *a2); -extern u8 D_8018EF78[]; -extern void func_801523F4(s32 arg0); -extern void func_801525F4(int); -extern s32 func_801535F4(void *arg0); -extern void func_8015BF48(s32 *a0); -extern void func_80152500(int param_1); -extern void func_801525F4(s32 a0); -extern void (*D_8018EF88[])(void); -extern void func_80152698(void *a0); -extern void func_80152714(s32 a0); -extern void func_801526D4(s32 a0); -extern void func_80152790(s32 a0); -extern void (*D_8018EFA0[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018EF90; -extern void func_801528B0(s32 arg0); -extern void func_8015294C(s32 a0); -extern void func_80152A08(s32 a0); -extern void func_80152AC8(s32 a0); -extern void func_80152A50(s32 *a0); -extern void (*D_8018EFB4[])(void); -extern void func_80152B6C(void *a0); -extern void func_80152BF0(s32 a0); -extern void func_80152BA8(s32 a0); -extern void func_80152C80(s32 *a0); -extern void func_80152C40(s32 *a0); -extern void (*D_8018EFD0[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018EFC0; -extern void func_80152DA8(s32 arg0); -extern void func_80152E4C(s32 a0); -extern void func_80152EFC(s32 a0); -extern void func_80152FBC(s32 a0); -extern void func_80152F44(s32 *a0); -extern void (*D_8018EFE4[])(void); -extern void func_80153060(void *a0); -extern void func_801530E4(s32 a0); -extern void func_8015309C(s32 a0); -extern void func_80155440(s32 *a0); -extern void func_801530E4(s32 arg0); -extern void func_80153150(struct S80153150 *a0); -extern void func_801531BC(s32 a0); -extern void func_8015327C(s32 a0); -extern void func_80153204(s32 *a0); -extern void (*D_8018EFF8[])(void); -extern void func_80153320(void *a0); -extern void func_801533A4(s32 a0); -extern void func_8015335C(s32 a0); -extern void func_80153410(s32 *a0); -extern void func_80153490(s32 a0); -extern void func_80153550(s32 a0); -extern void func_801534D8(s32 *a0); -extern void (*D_8011DB28)(s32 a0); -extern s32 func_801536DC(s32 param_1); -extern void func_800139C8(s32 a0, void *a1, void *a2); -extern s32 func_80153978(s32 a0, u16 *src); -extern s32 func_80133784(s32 a0, void *src, s32 dst); -extern s32 func_801539F8(s32 a0, void *a1); -extern s32 func_801539F8(s32 a0, void * a1); -extern s32 func_8016DA04(s32 a0); -extern s32 func_80153BD8(s32 a0); -extern s32 func_80153BF0(s32 a0); -extern void func_80153C18(void); -extern u16 D_8011F748; -extern void func_80153C30(void); -extern void func_80153C74(s16 a0, s16 a1); -extern s16 D_8011DB18; -extern void func_80153C44(int a0, int a1, s16 a2); -extern s16 D_8011DB0C; -extern s32 D_80115210; -extern void func_80153C8C(void); -extern void func_80153C9C(void); -extern s32 func_80153CBC(void); -extern s32 D_8018F00C; -extern void (*D_8018F034[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018F014; -extern void func_80153D7C(s32 param_1); -extern void func_8015410C(void); -extern void func_80153E00(s32 param_1); -extern void func_80151664(void); -extern void func_80154134(u8 *a0); -extern void func_80154190(u8 *a0, s32 a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154218(u8 *a0, s32 a1, s32 a2); -extern void func_801541D8(u8 *a0, s32 a1, s32 a2); -extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); -extern void func_801542A4(); -extern void func_801542A4(s32 *a0, s32 a1); -extern void func_8015430C(); -extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); -extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); -extern s32 func_80154358(void * arg0); -extern void func_80154AB4(s32 a0, s32 a1); -extern void func_80154B20(s32 a0, s32 a1, s32 a2); -extern void func_80154AE0(s32 a0, s32 a1, s32 a2); -extern void func_80154B7C(u8 *a0, s32 a1); -extern void func_80154B4C(u8 *a0, s32 a1); -extern void func_80154BC8(void *a0, s32 a1, s32 a2); -extern void func_80154B98(void *a0, s32 a1, s32 a2); -extern u8 D_800D8D10[]; -extern s16 D_80078E9E; -extern void func_801550FC(s32 a0); -extern void func_80154ED8(s32 a0, s32 a1); -extern void func_80154F9C(s32 a0); -extern void func_800183E0(s32 a0); -extern void func_801550FC(s32 arg0); -extern void func_8001D150(s32, s32); -extern void func_8001D130(int, int); -extern void func_80155150(int param_1); -extern s32 D_800DE2A4[]; -extern void func_801552F4(s32 a0); -extern void func_80155344(s32 a0); -extern s32 func_80155394(s32 *a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80029178(s32); -extern int (*D_8018F080[])(void); -extern s32 func_80155458(s32 param_1); -extern s32 func_801659DC(u8 *a0); -extern s32 func_801554B8(void *arg0); -extern void func_801555F4(void *a0); -extern void func_80155518(s32 *a0); -extern void func_80155580(void *a0); -extern void (*D_8018F084[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern s32 func_80029B4C(s32 a0, s32 a1); -extern s32 func_80029BC8(s32 a0, s32 a1); -extern s32 func_80029C44(s32 a0, s32 a1); -extern s32 func_8015640C(s32 a0, s32 a1); -extern s32 rand(void); -extern u32 func_8015616C(s32 param_1, u16 param_2); -extern u16 func_80156370(u16 param_1); -extern s32 func_801564B0(s32 a0); -extern s32 func_8002A1B4(void); -extern s32 func_8002A400(void); -extern s32 func_8002A670(void); -extern s32 func_8002A8E0(void); -extern s32 D_801151E0[]; -extern s32 func_801565C0(void); -extern void func_80156A14(s32 *a0); -extern void func_80156648(s32 *a0); -extern u8 D_8011DAD8[]; -extern s32 func_8014C568(s16 *a0, s16 *a1); -extern void func_801567BC(s32 a0); -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018F4E8[]; -extern void func_80156A1C(s32 param_1, s32 param_2); -extern s32 D_801150E0[]; -extern void func_80156A88(s32 a0, s32 a1); -extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); -extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); -extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); -extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern s32 func_80135004(s32 a0, void *a1, s32 a2); -extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801575E4(void *a0); -extern void func_801574DC(s32 *a0); -extern void func_80157544(void *a0); -extern void (*D_8018F4F8[])(void); -extern void func_8014CC28(s32 a0); /* defined */ -extern s32 func_8014F3E8(s32 a0); /* declared */ -extern void func_8015BDD0(s32 *a0); /* defined */ -extern void func_801575E4(void *a0); /* defined */ -extern void func_80157580(s32 arg0); -extern u8 D_800D4F14[]; -extern void func_801576A8(void *arg0); -extern s32 func_8015773C(u8 *a0); -extern s32 func_8015771C(u8 *a0); -extern s32 func_8015773C(u8 * arg0); -extern int D_801E5BE0; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018F520[])(void); -extern void func_80157808(void *param_1); -extern void func_80157880(s32 a0); -extern s32 func_801725A4(u8 *a0); -extern u8 D_800D5128; -extern u8 D_8018F500; -extern void func_801578C0(s32 param_1); -extern void func_80147A84(int); -extern void func_80148038(int, int); -extern void func_80147460(int); -extern void func_80146D90(int); -extern void func_80161450(void *a0); -extern void func_80157A8C(int); -extern void func_80154A74(int, int); -extern unsigned char D_800D5178; -extern unsigned char D_8018F510; -extern void func_8015795C(int param_1); -extern void func_80161D20(s32 a0, s32 a1); -extern void func_80157A8C(s32 a0); -extern void func_8016706C(s32 a0); -extern u8 D_800D51AC[]; -extern void func_80157AC8(s32 param_1); -extern void func_80157B74(int param_1); -extern void func_8016158C(void *a0); -extern void func_8015BE04(s32 *a0); -extern void func_80157BC8(s32 a0); -extern void func_80157CCC(s32 a0); -extern void func_80157DC4(void *a0); -extern void func_80157FC4(void *a0); -extern void func_80157D74(u16 *a0); -extern void (*D_8018F560[])(void); -extern void func_80157E38(void *); -extern void func_80157E00(void *a0); -extern void func_80157E38(void * a0); -extern s32 func_80157F64(s32 *a0); -extern s32 func_80156600(void *a0); -extern void func_80157EA4(void *a0); -extern void (*D_8018F568[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018F534; -extern void func_80158038(void * param); -extern u8 D_800D524C[]; -extern void func_80161418(void *a0); -extern void func_801580B4(s32 a0); -extern void func_801581AC(s32 a0); -extern void (*D_8018F574[])(void); -extern void func_8015824C(void *a0); -extern void func_801582C0(void *); -extern void func_80158288(void *a0); -extern u8 D_800D52A8[]; -extern void func_801585A4(s32 *a0); -extern void func_801582C0(void *a0); -extern s32 func_801585AC(s32 *a0); -extern u8 D_800D52E8[]; -extern void func_80158344(s32 *a0); -extern s32 func_801615C4(void *a0, s32 a1); -extern u8 D_8018F544; -extern u8 D_800D533C; -extern void func_80158434(s32 param_1); -extern void func_80158548(s32 param_1); -extern void func_801585EC(u8 *a0); -extern void func_80158794(void); -extern s32 D_801E5BE8; -extern s32 D_801E5BF4; -extern s32 D_801E5BF8; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018F5B0[])(s32 *); -extern void func_80158AE4(void *a0); -extern void func_80158AB4(void *a0); -extern void func_8016F264(void); -extern void func_80165840(void); -extern void func_801658DC(void); -extern void func_80165A78(s32); -extern void func_80158AE4(void * a0); -extern M2C_UNK D_800D58D8; -extern void func_80158BB0(void *arg0); -extern s32 func_80159404(s32 a0, s32 a1); -extern void func_80158C40(s32 *a0); -extern void func_80158CD8(s32 *a0); -extern s32 func_80159434(s32 a0, s32 a1); -extern void func_80158D60(s32 a0); -extern M2C_UNK D_800D5904; -extern void func_80158E24(s32 *a0); -extern s32 D_8018F584[]; -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80158F00(int param_1); -extern u8 D_80110C3C[]; -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80158FA4(s32 param_1); -extern s32 func_801399F0(s32 a0); -extern u8 D_80110C94[]; -extern u8 D_80110CD4[]; -extern void func_80159070(void *a0); -extern s32 func_80029A94(s32); -extern void func_80175454(void); -extern void func_800298BC(void *); -extern void func_8002992C(s32); -extern void func_800CF804(void); -extern void func_800CF818(void); -extern u8 D_80110D0C[]; -extern void func_80159120(s32 a0); -extern void func_801592CC(s32 *a0); -extern u8 D_800AE6BD; -extern s32 D_801E5BF0; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018F800[])(void); -extern void func_80159698(void *a0); -extern s32 func_801596D4(void *a0); -extern void func_80174B6C(void); -extern void func_80129248(s16 a0); -extern void func_8013C938(void); -extern void func_8013CB20(void); -extern void func_8013C98C(void); -extern void func_8002850C(s32, s32, s32); -extern void func_80028620(s32, void *); -extern s16 D_800B9AAC[]; -extern s16 D_800B9B00; -extern u16 D_801270C0; -extern u32 D_800AFAE8[]; -extern char D_8018F620[]; -extern s32 func_801596F0(s32 param_1); -extern s32 func_80159874(void); -extern void func_800167B8(s32 a0); -extern s32 func_8015987C(s32 a0); -extern int func_800167F0(int arg); -extern int func_801598BC(void); -extern void func_80159968(void *a0); -extern void func_801598E0(u8 *a0); -extern void (*D_8018F8A4[])(void); -extern void func_80159A20(void *a0); -extern void func_801599E0(void *a0); -extern void func_80159A18(void); -extern void func_80159BE4(s32); -extern void func_80159B08(s32 *a0); -extern void func_80159B70(void *a0); -extern void func_80159B3C(void * a0); -extern void (*D_8018F9F8[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018F814; -extern void func_80159BE4(s32 arg0); -extern void func_8015A1C8(s32 a0); -extern void func_8015A2D8(s32); -extern void func_8015A1FC(s32 *a0); -extern void func_8015A264(void *a0); -extern void func_8015A230(s32 *a0); -extern void (*D_8018FA00[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018F824; -extern s32 func_80172608(u8 *a0); -extern void func_8015A2D8(s32 param_1); -extern u8 D_800D48DC; -extern s32 func_8015AB7C(s32 a0); -extern s32 D_8011F9C4; -extern s32 func_8015ABD4(s32 a0, s32 a1, s32 a2); -extern s32 func_80161CD0(s32 a0, s32 a1); -extern M2C_UNK D_8018F844; -extern void func_8015AC48(s32 arg0); -extern void func_8015AC90(s32 a0); -extern void func_8015ADB0(s32 a0); -extern void func_8015ACC4(s32 *arg0); -extern void func_8015AD3C(void *a0); -extern void func_8015AD08(void *arg0); -extern void (*D_8018FA08[])(void); -extern void func_8015ADB0(s32); -extern void func_8015AD78(s32 a0); -extern void func_8015ADB0(s32 arg0); -extern s32 D_800D4A9C; -extern int func_8015B6F4(int param_1); -extern u8 D_800D4F8C[]; -extern s32 func_8015B7B4(s32 a0); -extern u8 D_800D4BE0[]; -extern s32 func_8014A51C(void); -extern s32 func_8015B858(u8 *a0); -extern s32 D_800D4B48; -extern void func_8015B8F8(s32 *a0); -extern void func_8015BD8C(s32 *a0); -extern s32 func_8015BE94(); -extern void func_8015BE38(struct Obj *a0); -extern s32 func_8015BE74(void); -extern void func_80161124(void *a0); -extern s32 func_8015BE94(s32 *a0); -extern s32 func_8015AE2C(); -extern s32 func_8015BEC4(void); -extern s32 func_8015B950(s32 arg0); -extern s32 func_8015BEE4(void); -extern void func_8015BF04(s32 *a0); -extern void func_8015C0C4(s32 a0); -extern void func_8015BFF4(void *a0); -extern void func_8015BF7C(s32 *a0); -extern void func_8015C030(s32 *a0, s32 a1); -extern void func_8015BFB0(s32 *a0, s32 a1); -extern void (*D_8018FA30[])(void); -extern void func_8015C0C4(s32); -extern void func_8015C08C(s32 a0); -extern s32 func_8015C128(s32 param_1); -extern void func_8015C6A4(void); -extern void func_8015C788(s32 a0); -extern void func_8015C6AC(s32 *a0); -extern void func_8015C714(void *a0); -extern void func_8015C6E0(s32 *a0); -extern void (*D_8018FA3C[])(void); -extern void func_8015C788(s32); -extern void func_8015C750(s32 a0); -extern void func_8015CB94(s32 a0); -extern void func_8015CBCC(void); -extern void func_8015CBD4(void); -extern void func_8015CBDC(void); -extern void func_8015CBE4(void); -extern void func_8015CBEC(void); -extern void func_8015CBF4(void); -extern void func_8015CBFC(void); -extern void func_8015CC04(void); -extern void func_8015CC0C(s32 *param_1); -extern void func_8015CC74(s32 *a0); -extern void func_8015CC40(s32 *a0); -extern s32 func_8015CCD0(); -extern s32 func_8015CCB0(void); -extern s32 func_801725E0(u8 *a0); -extern s32 func_8015CCD0(s32 param_1); -extern s32 func_8015CD20(s32 arg0); -extern void func_8015CF24(s32 a0); -extern void func_8015D01C(); -extern void func_8015CF58(s32 *param_1); -extern void func_8015CFC0(s32 *a0); -extern void func_8015CF8C(s32 *a0); -extern void func_8015CFFC(void); -extern void func_8015D01C(int param_1); -extern void (*D_8018F8B0[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018FAE0; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018EBC4[]; -extern void func_8015D414(int param_1); -extern void func_8015D57C(s32); -extern void func_8015D480(s32 *a0); -extern s32 func_8015D4E8(s16 *a0); -extern void func_8015D4B4(s16 *a0); -extern void func_8015D524(s32 arg0); -extern void func_8015D544(s32 a0); -extern void func_801746DC(void); -extern void func_8015D57C(s32 arg0); -extern s32 func_80161B18(void *a0); -extern s32 func_80161B84(void *a0); -extern void func_80154150(int, int); -extern void func_80149374(int, int); -extern unsigned char D_8018FAF4[]; -extern void func_8015D5E8(int param_1); -extern int func_8015E0D4(int); -extern void func_8015DA5C(s32 a0); -extern void func_8015DB6C(s32 a0); -extern void func_8015DA90(s32 *a0); -extern void func_8015DAF8(s32 *a0); -extern void func_8015DB6C(s32); -extern void func_8015DB34(s32 a0); -extern void func_8015DCB8(s32 a0); -extern void func_8014BD60(s32 a0, s32 a1); -extern int func_8015DD74(int); -extern void func_8015DBD4(void *arg0); -extern int func_8015DC84(int a0); -extern s8 D_8018FB30[]; -extern void func_8015DCB8(s32 param_1); -extern int func_8015DD74(int arg0); -extern void func_8015DECC(s32 a0); -extern void func_8015DDF0(s32 *a0); -extern void func_8015DE58(s32 *a0); -extern void func_8015DECC(s32); -extern void func_8015DE94(s32 a0); -extern void func_8015E018(s32 a0); -extern void func_8015DF34(void *arg0); -extern int func_8015DFE4(int a0); -extern void func_8015E018(s32 param_1); -extern int func_8015E0D4(int a0); -extern void func_8015E22C(s32 a0); -extern void func_8015E150(s32 *a0); -extern s32 func_8015E1B8(s32 a0); -extern void func_8015E184(s32 *arg0); -extern void func_8015E22C(s32); -extern void func_8015E1F4(s32 a0); -extern u8 D_800D4FF4[]; -extern u8 D_800D5098[]; -extern u8 D_800D5060[]; -extern s32 func_8014A850(s32 a0); -extern void func_8015E40C(s32 a0); -extern void func_8015E588(void); -extern void func_8015E4B0(s32 a0); -extern void func_8015E288(s32 a0); -extern u16 D_8018FB78; -extern u16 D_8018FB7A; -extern u16 D_8018FB7C; -extern s32 D_8018FB80; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -extern void func_8013C9C4(void *a0); -extern s32 D_8018FB88; -extern void func_8015E5B0(u8 *self); -extern void func_8015E714(s32 *a0); -extern void func_8015E95C(s32); -extern void func_8015E84C(s32 *a0); -extern void func_8015E8E8(s32 *a0); -extern void func_8015E9B8(s32 *a0); -extern void func_8015E8B4(s32 *a0); -extern void func_8015E924(s32 a0); -extern void func_8015E95C(s32 a0); -extern s16 D_801152A0; -extern void func_80160818(s32 *a0); -extern void func_8015ED6C(s32 *a0); -extern void func_8015EE7C(s32); -extern void func_8015EDA0(s32 *a0); -extern s32 func_8015EE08(s32 a0); -extern void func_8015EDD4(s32 *arg0); -extern void func_8015EE44(s32 a0); -extern int D_800D4C48; -extern int D_8018F894; -extern void func_8015EE7C(s32 param_1); -extern void func_8015EEE0(void *arg0); -extern void func_8015EF9C(void); -extern void func_8015F080(s32); -extern void func_8015EFA4(s32 *a0); -extern void func_8015F00C(s32 *a0); -extern void func_8015EFD8(s32 *a0); -extern void func_8015F048(s32 a0); -extern void func_8015F080(s32 a0); -extern s32 D_80062BE8; -extern void func_801466F0(s32, s32, s32, s32, s32, s32, s32, s32); -extern s32 func_80161208(void); -extern void func_8015F118(void *a0); -extern void func_8015F260(s32 *a0); -extern void func_8015F380(); -extern void func_8015F2BC(s32 *a0); -extern void func_8015F324(s32 *a0); -extern void func_8015F2F0(s32 *a0); -extern void func_8015F360(void); -extern s32 func_801725B8(u8 *a0); -extern void func_8015F380(void* arg0); -extern void func_8015F738(s32 *a0); -extern void func_8015F848(s32 *a0); -extern void func_8015F76C(s32 *a0); -extern s32 func_8015F7D4(s32 a0); -extern void func_8015F7A0(s32 *arg0); -extern void func_8015F810(s32 *a0); -extern void func_80147078(s32 *, s16); -extern void func_80159B70(void *); -extern void func_8015F89C(void *arg0); -extern void func_8015F948(s32 *param_1); -extern void func_8015F9A4(void *arg0); -extern void func_8015FA24(s32 arg0); -extern void func_8015FBE0(s32 *a0); -extern void func_8015FA44(s32 *a0); -extern void func_8015FAAC(s32 *a0); -extern void func_8015FA78(s32 *a0); -extern s32 func_801612B8(void *a0, s32 a1); -extern void func_8016007C(s32 a0); -extern void func_8015FAE8(void *arg0); -extern void func_8015FCC8(void *param_1); -extern unsigned int D_8018FC0C[]; -extern void func_8015FD74(int param_1); -extern s32 func_80028DE0(void); -extern u8 func_80165700(s32 a0, s32 a1); -extern void func_8015FDCC(s32 a0); -extern u8 D_80078EC2; -extern u8 func_801656E8(s32 a0, s32 a1); -extern void func_80165670(s32 a0, s32 a1); -extern void func_8016004C(s32 a0); -extern void func_8015FF20(void *param_1); -extern void func_801601AC(s32 *a0); -extern void func_801600D0(s32 *a0); -extern void func_80160138(s32 *a0); -extern void func_80160104(s32 *a0); -extern void func_80160174(s32 *a0); -extern void func_801601E4(s32 *a0); -extern void func_80160244(s32 *a0); -extern void func_8016032C(void); -extern void func_80160410(s32 *a0); -extern void func_80160334(s32 *a0); -extern void func_8016039C(s32 *a0); -extern void func_80160368(s32 *a0); -extern void func_801603D8(s32 *a0); -extern u8 D_80062BD0; -extern void func_80160410(s32 * a0); -extern void func_801607B8(s32 *a0); -extern void func_801608C0(s32 *a0); -extern void func_801607E4(s32 *a0); -extern void func_8016084C(s32 *a0); -extern void func_80160888(s32 *a0); -extern void func_80160A28(s32 a0); -extern void func_80160A74(s32 *a0); -extern void func_80160BB4(s32 *a0); -extern void func_80160ACC(s32 *a0); -extern s32 func_80160B34(s32 a0); -extern void func_80160B00(s32 *arg0); -extern void func_80160B70(s32 a0); -extern void func_80160C28(void *arg0); -extern void func_80160CB4(s32 *a0); -extern void func_80160D10(void *arg0); -extern void func_80160DEC(u8 *a0); -extern void func_80160F00(); -extern void func_80160E3C(s32 *a0); -extern void func_80160EA4(); -extern void func_80160E70(s32 *a0); -extern void (*D_8018FCBC[])(void); -extern void func_80160EA4(void *a0); -extern void func_80160EE0(void); -extern void func_80160F00(void* arg0); -extern void func_800D0F4C(s32 a0); -extern u8 D_80110EC0; -extern void func_80160F70(s32 a0); -extern void func_80160FE0(s32 *a0); -extern void func_80161034(void *a0); -extern void func_80161094(s32 a0); -extern void func_801610FC(void); -extern void func_801483E8(void); -extern s32 func_80161A60(s32 a0); -extern void func_8016130C(void *a0, s32 a1); -extern void func_80161240(void *a0); -extern void func_80161374(void *a0, s32 a1); -extern void func_80161278(void *a0); -extern s32 func_801612B8(void * a0, s32 a1); -extern void func_8016163C(void *a0, s32 a1); -extern void func_80161774(void *a0, s32 a1); -extern s32 func_8016197C(s32 a0, s32 a1); -extern s32 func_80161488(void *a0); -extern void func_80161888(void *a0, s32 a1); -extern void func_801614E4(void *a0); -extern void func_8016191C(void *a0, s32 a1); -extern void func_8016151C(void *a0); -extern void func_80161554(void *a0); -extern s32 func_801615C4(void * arg0, s32 arg1); -extern s32 func_801619A4(s32 *a0); -extern s32 func_80161A00(s32 a0); -extern s32 func_80161A30(s32 a0); -extern int func_801497A8(void); -extern int func_80161BE0(void *param_1); -extern u16 D_8018FCEC[]; -extern void func_80161C98(int param_1, u32 param_2); -extern void func_80161E08(s32); -extern s32 func_80162438(s32); -extern s32 D_800AE6A8; -extern void func_800D1734(void *); -extern s32 D_8018FD50; -extern void func_80161D88(void); -extern void func_80161E08(s32 param_1); -extern int func_800291DC(int); -extern int func_800D0E30(void *a0); -extern int func_801620C4(void); -extern s32 func_800D0D7C(s32, s32); -extern int D_801E5C00[]; -extern void func_8016216C(void); -extern s32 func_801621CC(s32 arg0); -extern void func_801622C4(void); -extern void (*D_8018FD74[])(void); -extern void func_80162330(void *a0); -extern void func_8014706C(void *a0); -extern s32 func_8016236C(u8 *a0); -extern void func_800D0C48(s32 a0); -extern s32 func_801623B8(s32 *a0); -extern s32 func_800167F0(s32 a0); -extern s32 func_80162414(void); -extern s32 func_80162438(s32 _unused0); -extern int func_801626B8(void); -extern void func_80162714(void); -extern int D_801E5C58[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018FDBC[])(void); -extern void func_80162834(void *a0); -extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80162968(s32 a0); -extern s32 func_80162ACC(u8 *a0); -extern u8 D_800B5CB8; -extern s32 D_8018FDAC; -extern s32 D_800B5CBC; -extern u8 D_800B5CDF; -extern s32 D_800B5CEC; -extern void func_80162870(s32 param_1); -extern void func_801628F4(s32 *a0); -extern void func_80162968(s32 param_1); -extern void func_80162AC0(s32 *a0, s8 a1); -extern s32 func_80162AE0(u8 *a0); -extern void func_80162AF4(void); -extern void func_80162CC4(void); -extern s32 D_80126D40; -extern void func_80162B1C(void); -extern void func_80162D28(s32 *a0); -extern void func_80162D88(s32 *a0); -extern void func_80162DE8(s32 *a0); -extern void func_80162E48(s32 *a0); -extern void func_80162EA8(s32 *a0); -extern void func_80162F60(s32 arg0, s32 arg1); -extern void func_80162F80(s32 arg0, s32 arg1); -extern void func_80162FA0(s32 arg0, s32 arg1); -extern void func_80162F08(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80162FC0(s32 *a0); -extern void func_80162FF4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801630C4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163194(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg4); -extern void func_8016325C(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163234(s32 a0); -extern s32 D_80115100; -extern s32 func_801632E0(void); -extern s32 D_80115200; -extern s32 func_801632F0(void); -extern u16 D_80126B18[]; -extern void func_80163328(void); -extern s32 func_801633A8(void); -extern s32 func_80163408(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void func_80163534(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, u16 * a5); -extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); -extern char D_801E5054[8]; -extern void *memcpy(void *dst, const void *src, unsigned int n); -extern void func_801634D8(s32 param_1, u16 param_2, u16 param_3, s32 param_4, u16 param_5); -extern void func_80157158(); -extern void func_80163664(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801636D0(s32 a0, s32 a1); -extern s32 func_8016380C(struct S8016380C *a0, s32 a1); -extern void *memcpy(void *dst, void *src, s32 n); -extern s32 func_801638A0(u8 *a0, s32 a1); -extern s32 func_80163950(s32 a0); -extern void (*D_8018FDC4[])(void); -extern void func_80163A58(void *a0); -extern void func_80163A94(s32 param_1); -extern void func_80163C2C(s32 param_1); -extern void func_80163EC8(s32 param_1); -extern void func_80164270(s32 *a0); -extern void func_80164418(void); -extern void func_80163764(s32 a0); -extern void func_801642AC(s32 a0); -extern void func_8016432C(s32 a0); -extern void func_80164410(void); -extern s32 func_80012DBC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164530(s32 arg0); -extern void (*D_8018FE18[])(void); -extern void func_80164744(s32 param_1); -extern void func_8001C810(s32 a0, s32 a1); -extern void func_80164A74(s32 *a0); -extern void func_80164930(s32 a); -extern u16 D_800DF2E0; -extern s32 D_8018FDE0; -extern s16 D_8018FE14; -extern s16 D_8018FE12; -extern s16 D_8018FE10; -extern void func_801647A4(int param_1); -extern void func_80164ACC(); -extern void func_80164864(void *a0); -extern void func_80164930(s32 param_1); -extern s32 func_8014C308(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164ACC(s32 a0); -extern void (*D_8018FE24[])(void); -extern void func_80164BA0(void *a0); -extern void func_8001CD50(s32 a0, s32 a1); -extern void func_800233CC(void *, unsigned short); -extern void func_80164DD0(s32 a0); -extern void func_80164DB0(void); -extern u8 D_801E5CB8; -extern u8 D_801E5CB9; -extern u8 D_801E5CBA; -extern u8 D_801E5CBB; -extern u8 D_801E5CBC; -extern u8 D_801E5CBD; -extern u8 D_801E5CBE; -extern u8 D_801E5CBF; -extern void func_80164BDC(s32 param_1); -extern void func_80164E40(void); -extern void func_80164CD4(u8 *a0); -extern void func_80164D4C(void *arg0); -extern void (*D_8018FE34[])(void); -extern void func_80164EA4(void *a0); -extern void func_80165124(void *a0); -extern void func_80164EE0(int param_1); -extern s32 func_80165140(s32 a0); -extern void func_801651B8(void *a0); -extern void func_80164F44(void *arg0); -extern void func_80165024(void *a0); -extern void func_80165064(s32 *a0); -extern void func_801650C4(s32 *a0); -extern s32 func_80165140(s32 param_1); -extern s32 func_80165240(s32 a0, s32 a1, s32 a2); -extern s32 D_801E5CF8; -extern void func_801651B8(void * param_1); -extern u8 D_80126CF8; -extern void func_8016533C(void); -extern void func_801653F4(s32 a0); -extern void func_80165580(s32 a0); -extern void func_80165374(s32 a0); -extern void func_80165580(s32 _arg0); -extern void func_801653B8(s32 *a0); -extern s32 func_80165624(s32 a0); -extern u8 D_80078EC5; -extern void (*D_8018FE78[])(void); -extern u8 func_80165658(s32 a0, s32 a1); -extern void func_800CAE0C(s32 a0); -extern void func_801654A8(s32 arg0); -extern void func_80165B28(void *a0); -extern void func_801655E4(s32 a0); -extern u8 D_8018FEF4[]; -extern s32 D_8018FF14[]; -extern u8 D_8018FF90[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018FFB0[]; -extern u8 D_8018FFD0[]; -extern void func_800CAF6C(void); -extern void func_80165770(void); -extern void func_801657D8(void); -extern u8 D_80078EC3; -extern void func_801657A0(void); -extern s32 D_80078EA0; -extern s32 D_80078EA8; -extern u8 D_80078EBB; -extern s32 D_80078ED4; -extern s32 D_80078ED8; -extern s32 D_80078EDC; -extern u8 D_80078EE0; -extern void func_80165874(void); -extern s8 D_80078EC4; -extern void func_801658EC(void); -extern s32 func_80165900(void); -extern s32 func_80165910(void); -extern s32 D_8012672C; -extern s32 D_8012811C; -extern s32 D_80126B08; -extern void func_80165938(void); -extern void func_80165958(void); -extern s32 func_80165978(void); -extern void func_80165988(void); -extern s32 func_801659A8(void); -extern void func_801659B8(void); -extern s32 func_801659CC(void); -extern void func_80165A18(void); -extern s32 func_80165A50(s32 _arg0); -extern void func_80165AC8(void); -extern void func_80165A78(s32 arg0); -extern void (*D_8019006C[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_801900E8[])(void); -extern void func_80165BB4(u8 *a0); -extern void func_80165B6C(u8 *a0); -extern void func_80165C58(s32 arg0); -extern void func_80165BFC(void *a0); -extern void func_80165C78(void); -extern M2C_UNK D_801E5064; -extern void func_80165E2C(u16 *arg0); -extern s32 func_80165FA4(s32 a0, s32 a1, s32 a2); -extern s32 func_80167DBC(s32 a0, s32 a1, s32 a2); -extern s32 func_80167AE0(s32 a0, s32 a1, s32 a2); -extern void func_80165E90(void); -extern void func_80020F34(s32 a0, s32 a1); -extern s32 func_80165FA4(s32 arg0, s32 arg1, s32 arg2); -extern void (*D_801900F4[])(void); -extern void func_80166018(void *a0); -extern void func_80166054(s32 arg0); -extern void func_801661CC(s32 param_1); -extern void func_80166244(void* arg0); -extern void func_8016629C(void *a0); -extern void func_801662F4(void *a0); -extern void func_8016634C(void *a0); -extern void func_801663A4(void *a0); -extern void (*D_801900FC[])(void); -extern void func_801663FC(void *a0); -extern u8 D_800D387C[]; -extern u8 D_800D3888[]; -extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); -extern void func_800D1FC8(s32 a0, s32 a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern void func_801665B4(); -extern void func_80146C3C(); -extern void func_80166438(u8 *a0); -extern s32 func_80128ED8(s32 param_1, s32 *param_2); -extern void func_800D22E4(s32 a0); -extern void func_801665B4(s32 *a0); -extern void (*D_801901C4[])(void); -extern void func_80166618(void *a0); -extern void (*D_801901D4[])(void); -extern void func_80166654(void *a0); -extern s32 func_80166690(s32 param_1, s32 param_2); -extern s32 func_80166994(); -extern s32 func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern s32 func_80167540(s32 arg0); -extern void (*D_801901E4[])(void); -extern void func_801678B4(void *a0); -extern void RotMatrixYXZ(void *a0, void *a1); -extern void func_80048EAC(void *a0, void *a1); -extern s32 func_801670E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80146C3C(void); -extern void func_801678F0(s32 a0); -extern void (*D_801901F0[])(void); -extern void func_80167A9C(void *a0); -extern void func_80167AD8(void); -extern s32 func_80167AE0(s32 param_1, s32 param_2, s32 param_3); -extern void func_80168070(s32 a0, s16 *a1, s16 *a2, void *a3); -extern u8 D_80190150[]; -extern u8 D_80190164[]; -extern s32 func_80167DBC(s32 arg0, s32 arg1, s32 arg2); -extern void func_800D20C0(void *a0, void *a1, s32 a2); -extern void func_80017E68(void *a0, void *a1); -extern void func_800D23D0(void *a0); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern s32 D_801269A4; -extern s32 D_801269A8; -extern s32 D_801269AC; -extern void func_80168070(s32 param_1, s16 *param_2, s16 *param_3, void *param_4); -extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_8016829C(s32 a0); -extern s32 func_80166690(s32 a0, s32 a1); -extern void func_80168328(s32 arg0); -extern void func_801683D8(s32 a0); -extern void func_801684B4(s32 a0); -extern void func_80168540(s32 a0); -extern void func_801685EC(s32 a0); -extern void func_80168640(s32 a0); -extern s32 RotMatrixX(s32 a0, void *a1); -extern void func_80168664(void *arg0); -extern void (*D_80190208[])(void); -extern void func_80168744(void *a0); -extern void func_80168BDC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801687CC(s32 a0); -extern void func_80168780(s32 a0); -extern void func_80168828(void); -extern void func_801687CC(s32 param_1); -extern void func_80168828(); -extern void (*D_80190210[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_80190218[])(void); -extern void func_80168AA8(void *a0); -extern void func_80168AE4(s32 a0); -extern void func_800D2318(void); -extern void func_80168BDC(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void (*D_80190220[])(void); -extern void func_80168D58(void *a0); -extern void func_80168D94(int a0); -extern void func_80168F40(); -extern void func_80168EC4(s32 a0); -extern void func_80168F40(void *arg0); -extern void (*D_80190228[])(void); -extern void func_8016901C(void *a0); -extern void func_80169058(s32 a0); -extern s32 func_80169228(void); -extern void func_801691B8(void *a0); -extern void (*D_80190230[])(void); -extern void func_801693CC(void *a0); -extern void func_80169584(s32 param_1); -extern void func_80169408(s32 a0); -extern void func_8016951C(int param_1); -extern s32 func_80017758(void *a0, void *a1); -extern s32 func_80017DC4(void *a0, void *a1); -extern void func_801696D8(s32 a0, s32 a1); -extern void (*D_80190238[])(void); -extern void func_80169830(void *a0); -extern void func_8016986C(s32 a0); -extern s32 func_80169A4C(s32 a0, s32 a1); -extern void func_801699D0(void *arg0); -extern void (*D_801902EC[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_801902F4[])(void); -extern void func_80169F00(void *a0); -extern char D_801902A4[]; -extern char D_80190264[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8019032C[])(void); -extern void func_8016A020(void *a0); -extern void func_8016A05C(void *a0); -extern void func_8016A290(s32 a, void *b, void *c); -extern void func_8016A08C(s32 param_1); -extern void func_8016A1CC(int param_1); -extern void func_8016A290(s32 param_1, void *param_2, void *param_3); -extern void (*D_80190338[])(void); -extern void func_8016A700(void *a0); -extern s32 func_8016A73C(s32 arg0); -extern s32 func_8016A8FC(s32 a0); -extern void func_8016A890(s32 arg0); -extern void func_8016AA50(s32 param_1, s32 param_2); -extern void (*D_80190380[])(void); -extern void func_8016AB30(void *a0); -extern void func_8016B234(void); -extern void func_8016AFB0(s32 a0); -extern void func_8016B114(void *arg0); -extern s32 func_8016B448(s32, s32); -extern s32 func_8016BA48(s32 a0); -extern void func_8016B3F4(s32 a0); -extern s32 func_8016B428(s32 a0); -extern void func_8016B984(void *a0); -extern s32 func_8016B448(s32 arg0, s32 arg1); -extern void (*D_801903FC[])(void); -extern void func_8016B4BC(void *a0); -extern int func_8016B9F8(int); -extern int func_8016B834(int, int); -extern void func_8016B91C(int); -extern int D_801E6018; -extern void func_8016B4F8(int param_1); -extern s32 func_8016B9F8(s32 param_1); -extern void func_8016B6BC(s32, s32, s32, s32); -extern void func_8016B91C(s32); -extern s16 D_801903F0[]; -extern void func_8016B5C0(s32 param_1); -extern void func_8001CD9C(int, void *); -extern int *D_80190434[]; -extern unsigned short D_8019043C[]; -extern unsigned short D_80190444[]; -extern unsigned char D_801E6020[]; -extern int func_8016B834(int param_1, int param_2); -extern void func_8016B964(SrcB964 *a0, DstB964 *a1); -extern void func_8016B91C(s32 arg0); -extern s32 D_801E6018; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8019044C[])(void); -extern void func_8016BBA4(void *a0); -extern s32 func_8016BBE0(s32 param_1); -extern void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3); -extern M2C_UNK D_801E6154; -extern M2C_UNK D_801E6158; -extern void func_8016BCC0(void *arg0); -extern s32 func_8016BD78(s32 param_1); -extern s32 func_8016BEA0(s32 param_1); -extern void func_8016BF34(void *a0); -extern void func_8016BFD0(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern s32 D_801E60E0; -extern void (*D_8019047C[])(void); -extern void func_8016C14C(void *a0); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801E615C[]; -extern u8 D_801E6164[]; -extern u8 D_801E6114[]; -extern void func_8016C2C4(s32 param); -extern s32 func_8016C49C(s32 param_1_arg); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_8016C74C(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern short func_8016CF04(s32 a0, s32 a1); -extern void func_8016C83C(s32 a0); -extern void (*D_80190484[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_801904A0[])(void); -extern void func_8016D19C(void *a0); -extern void (*D_801904A8[])(void); -extern void func_8016D428(void *a0); -extern void func_8016D464(u8 *a0); -extern void func_8016D4DC(s32 a0); -extern void func_8016D5EC(s32 *a0); -extern short func_8016CBC0(void); -extern void func_8016D64C(int param_1); -extern void func_8016D778(s32 a0); -extern void func_800D20C0(); -extern void func_8016D848(s32 *a0); -extern void func_8016D984(s32 *a0); -extern void func_8016DBD8(u8 *a0); -extern void (*D_80190510[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801904B4; -extern u8 D_801904C0; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void (*D_80190544[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8019054C[])(void); -extern void func_8016DF20(void *a0); -extern void func_8016E3CC(s32 a0); -extern void func_8016E1CC(s32 a0); -extern void func_8016E26C(s32 *a0); -extern void func_8016E2E8(void *a0); -extern void func_8016E460(void *a0, void *a1); -extern void func_8016E358(void *a0); -extern void func_8016E460(void *arg0, void *arg1); -extern void (*D_801905A0[])(void); -extern void func_8016E5B8(void *a0); -extern void func_8016E5F4(s32 arg0); -extern void func_8016E778(); -extern void func_8016E688(void *a0); -extern void func_8016E6E4(s32 a0); -extern void func_8016E728(u8 *a0); -extern void func_8016E7C8(int param_1, short *p1, unsigned int *p2); -extern void func_8016E778(int param_1); -extern void func_8016E7C8(int param_1, short *param_2, unsigned int *param_3); -extern s32 D_80115218; -extern void func_8016E8F0(void); -extern void func_8016E918(short param_1, short param_2); -extern s32 func_8016E95C(); -extern u16 D_801905D4[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_801905C4[]; -extern void func_8016EB3C(s32 p); -extern void func_8016EBA8(u8 *param_1); -extern void func_8016ED6C(void); -extern s32 D_80126D70; -extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); -extern void func_8016ED8C(s32 a0, s32 a1, s32 a2); -extern void func_8016EE40(s32 a0, s32 a1, s32 a2); -extern void func_8016EDBC(s32 a0, s32 a1, s32 a2); -extern void func_8016EE94(); -extern void func_8016EDEC(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_8016EF78(s32 a0); -extern void func_8016EE40(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_801726D0(void *a0); -extern s32 D_80126D50; -extern s32 D_80126D54; -extern u8 D_80126D6C; -extern u8 D_80126D6D; -extern u8 D_80126D6E; -extern s32 D_80126D5C; -extern s32 D_80126D60; -extern s16 D_80126D64; -extern s16 D_80126D66; -extern s16 D_80126D68; -extern s16 D_80126D6A; -extern u8 D_80126D1A; -extern s32 D_80127058; -extern s32 D_8012705C; -extern s32 D_80127060; -extern s32 D_80127064; -extern s32 D_80127068; -extern s32 D_8012706C; -extern s32 D_80127070; -extern s32 D_80127074; -extern s16 D_80126D20; -extern void func_8016EE94(s32 a0, s32 a1); -extern s32 func_8016EFC8(s32); -extern s32 func_8016EFA8(s32 a0); -extern void func_8016F094(s32 *a0); -extern s32 func_8016F0AC(); -extern s32 D_801905F0; -extern void func_8016F250(void); -extern void func_8016F288(void); -extern void func_8016F2A8(void); -extern void func_8016F2C8(void); -extern void func_8016F2EC(void); -extern void func_8016F30C(void); -extern void func_8016F330(void); -extern void func_8016F350(void); -extern void func_8016F374(void); -extern void func_8016F388(void); -extern void func_8016F398(void); -extern s32 func_8016F44C(s32 a0); -extern void func_8016F470(s32 a0); -extern s32 func_8016F410(s32 a0); -extern void func_80175414(s32 _arg0); -extern s32 func_8016F4C4(s32); -extern s32 func_8016F494(s32 a0); -extern void func_8016F0E4(void); -extern s32 func_8016F4C4(s32 param_1); -extern void func_8016F4F4(void); -extern void func_801719A4(int a0, int a1); -extern void func_800D1724(s32 a0); -extern void func_80171928(void *a0); -extern void *D_8011F738; -extern void func_8016F4FC(void *a0); -extern void func_8014708C(void *a0); -extern void func_8016F540(void *a0); -extern void func_8016F578(s32 *a0); -extern void func_8016F5B0(void *a0); -extern void func_80147060(u8 *a0); -extern void func_8016F5E0(u8 *a0); -extern void func_8016F610(void *a0); -extern void func_8016F648(void *a0); -extern void func_8016F680(void *a0); -extern void func_8016F6B0(void *a0); -extern void (*D_80190668[])(void); -extern void func_8016F6E0(void *a0); -extern s32 func_80171990(u8 *a0); -extern void func_8016F764(void *a0); -extern void func_8016F71C(u8 *a0); -extern void (*D_80190670[])(void); -extern void func_8016F798(void *a0); -extern void func_8016F804(void *a0); -extern void func_8016F7D4(u8 *a0); -extern void func_80171928(void *); -extern void (*D_80190678[])(void); -extern void func_8016F834(void *a0); -extern void func_8016F8AC(u8 *a0); -extern void func_8016F870(u8 *a0); -extern void func_80172358(u8 *a0, u8 *a1); -extern void (*D_80190680[])(void); -extern void func_8016F8E4(void *a0); -extern void func_8016F95C(void *a0); -extern void func_8016F920(u8 *a0); -extern s32 func_80171CC4(void *a0, void *a1); -extern s32 func_80171D1C(void *a0, void *a1, s32 a2); -extern u16 D_8011F73E; -extern void (*D_80190688[])(void); -extern void func_8016F9C4(void *a0); -extern void func_80171B44(s32 *a0); -extern void func_8016FA44(s32 a0); -extern void func_8016FA00(s32 a0); -extern s32 func_80171C64(s32 a0, s32 a1); -extern void (*D_80190690[])(void); -extern void func_8016FA84(void *a0); -extern void func_8016FB10(void *a0); -extern void func_8016FAC0(u8 *a0); -extern void func_8016FB50(void *a0); -extern void (*D_8019069C[])(void); -extern void func_8016FB7C(void *a0); -extern void func_8016FC24(); -extern void func_8016FBB8(s32 a0); -extern s32 func_80171B4C(s32 a0, s32 a1); -extern void func_8016FC24(s32 a0); -extern void func_8016FC64(void *a0); -extern void (*D_801906A8[])(void); -extern void func_8016FC90(void *a0); -extern void func_8016FD08(u8 *a0); -extern void func_8016FCCC(u8 *a0); -extern s32 func_80172658(s32 *a0); -extern void func_8016FD08(u8 *s0); -extern void func_8016FD7C(s32 *a0); -extern void (*D_801906B4[])(void); -extern void func_8016FDB4(void *a0); -extern void func_8016FE2C(u8 *a0); -extern void func_8016FDF0(u8 *a0); -extern void func_8016FE2C(u8 * a0); -extern s32 func_8016FE78(s32 *a0); -extern s32 func_80172664(s32 *a0); -extern void func_8016FED0(s32 *a0); -extern void (*D_801906C4[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_801906D4[])(void); -extern void func_8016FFDC(void *a0); -extern void func_80170068(u8 *a0); -extern void func_80170018(u8 *a0); -extern void func_801700B8(u8 *a0); -extern void func_80170100(u8 *a0); -extern void (*D_801906DC[])(void); -extern void func_80170150(void *a0); -extern void func_801701C8(u8 *a0); -extern void func_8017018C(u8 *a0); -extern void func_801701C8(u8 * a0); -extern void (*D_801906E4[])(void); -extern void func_80170240(void *a0); -extern void func_801702B8(s32 a0); -extern void func_8017027C(u8 *a0); -extern s16 func_80171AB0(s32 a0, void *a1); -extern void (*D_801906EC[])(void); -extern void func_801702FC(void *a0); -extern void func_80170374(u8 *a0); -extern void func_80170338(u8 *a0); -extern s32 func_8014C168(s32 *a0, s32 a1); -extern void func_80170374(u8 * a0); -extern void (*D_801906F4[])(void); -extern void func_801703E0(void *a0); -extern void func_8017044C(u8 *a0); -extern void func_8017041C(u8 *a0); -extern void func_8017044C(u8 * a0); -extern void (*D_801906FC[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_80190704[])(void); -extern void func_80170548(void *a0); -extern void func_801705C0(u8 *a0); -extern void func_80170584(u8 *a0); -extern void func_801705C0(u8 * a0); -extern void (*D_8019070C[])(void); -extern void func_801705F8(void *a0); -extern void func_80170670(void *a0); -extern void func_80170634(u8 *a0); -extern void func_8012A568(void (*a0)(void)); -extern void (*D_80190714[])(void); -extern void func_801706AC(void *a0); -extern void func_80170718(void *a0); -extern void func_801706E8(u8 *a0); -extern void func_80129FF4(void); -extern void (*D_8019071C[])(void); -extern void func_80170748(void *a0); -extern void func_801707D4(void *a0); -extern void func_80170784(u8 *a0); -extern s32 func_80174ED4(void); -extern void (*D_80190724[])(void); -extern void func_80170810(void *a0); -extern void func_801708B0(void *a0); -extern u8 D_800D5DA8; -extern void func_8017084C(s32 a0); -extern u8 D_800D5A34[]; -extern void func_80170AD8(void *a0); -extern void func_80171904(s32 a0); -extern void func_80170B48(int a0); -extern void func_80170928(void); -extern u8 D_800D59EC[]; -extern void func_80170970(void); -extern u8 D_800D599C[]; -extern void func_801709B8(void); -extern u8 D_800D5934[]; -extern void func_80170A00(void); -extern void func_80170A48(void); -extern u8 D_800D5DC0[]; -extern void func_80170A90(void); -extern void (*D_8019072C[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_80190734[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8019073C[])(void); -extern void func_80170C74(void *a0); -extern s32 func_8017197C(u8 *a0); -extern void func_80170CF0(void *a0); -extern void func_80170CB0(u8 *a0); -extern void (*D_80190744[])(void); -extern void func_80170D68(void *a0); -extern void func_80170DE0(u8 *a0); -extern void func_80170DA4(u8 *a0); -extern s32 D_8011F73C; -extern s32 D_8011F740; -extern void func_801718AC(void *a0); -extern void func_80170DE0(u8 * _arg0); -extern void (*D_8019074C[])(void); -extern void func_80170E34(void *a0); -extern void func_80170EAC(u8 *a0); -extern void func_80170E70(u8 *a0); -extern int func_800D0F8C(int a0); -extern void func_80170EAC(u8 * _arg0); -extern void (*D_80190754[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8019075C[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_80190764[])(void); -extern void func_80171064(void *a0); -extern void func_801710DC(u8 *a0); -extern void func_801710A0(u8 *a0); -extern u16 D_8011F73A; -extern void func_801710DC(u8 * arg0); -extern void (*D_8019076C[])(void); -extern void func_80171120(void *a0); -extern void func_8017118C(u8 *a0); -extern void func_8017115C(u8 *a0); -extern void func_80142454(s32 a0); -extern void func_8017118C(u8 * a0); -extern void (*D_80190774[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8019077C[])(void); -extern void func_80171260(void *a0); -extern s32 func_80012F74(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80171384(void *a0); -extern void (*D_80190784[])(void); -extern void func_801714E4(void *a0); -extern void func_8017162C(void *a0); -extern void func_80171520(s32 a0); -extern s32 func_801716AC(s32 a0, void *a1, s32 *a2); -extern s32 func_80012FC8(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_800A5E94; -extern u8 D_800A5E95; -extern u8 D_800A5E96; -extern s32 func_801716AC(s32 a0, void * a1, s32 * a2); -extern int func_800D0FE0(int a0); -extern void func_801717A0(void *a0); -extern void func_8013E588(void *a0); -extern void func_801717F4(void *a0); -extern void func_80171824(void *a0); -extern void func_80171854(void *a0); -extern void func_80171884(void); -extern void func_80171A1C(u8 *a0); -extern void func_80171928(void * a0); -extern void func_8017196C(s32 *a0, s8 a1); -extern void func_80171A04(s32 *a0); -extern void func_80171A10(s32 *a0); -extern void func_80171A34(s32 *a0, s8 a1); -extern s32 func_80171A44(u8 *a0); -extern s32 func_80171A58(u8 *a0); -extern s32 func_80171A6C(u8 *a0); -extern void func_80171A80(s32 *a0, s32 a1); -extern s32 func_80171A88(s32 a0); -extern s16 func_80171AB0(s32 param_1, void * _arg1); -extern void func_80171B10(void *a0); -extern void func_80171EC8(s32 a0); -extern s32 func_80171C64(s32 param_1, s32 param_2); -extern s32 func_80171D78(s32 a0, s32 a1); -extern int func_8017250C(short *a0, short *a1); -extern s32 func_80171CC4(void * a0, void * a1); -extern s32 func_80171FFC(short *a0, short *a1, s32 a2); -extern s32 func_80171D1C(void * a0, void * a1, s32 a2); -extern s32 func_8017248C(s32 a0, s32 a1); -extern s32 func_80171E08(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_80047948(s32 a0); -extern s32 func_8004787C(s32 a0); -extern void func_80172170(s32 a0, s32 a1); -extern s32 func_8017209C(void *arg0, void *arg1, s32 arg2, s32 arg3); -extern void func_801722CC(s32 *a0); -extern void func_80172304(s32 *a0); -extern void func_80172310(u8 *a0); -extern void func_801723C4(s32 param_1, s32 param_2); -extern void func_80161C24(s32, s32); -extern void func_80172414(s32 a0); -extern s32 func_801724EC(s32 a0); -extern s32 func_8017248C(s32 arg0, s32 arg1); -extern s32 func_80013450(s32); -extern s32 func_80172560(u8 *a0, u8 *a1); -extern s32 func_8017261C(u8 *a0); -extern s32 func_80172644(u8 *a0); -extern s32 func_80172670(s32 *a0); -extern s32 func_80172688(s32 *a0); -extern s32 func_80172694(s32 *a0); -extern s32 func_801726A0(s32 *a0); -extern s32 func_801726AC(s32 *a0); -extern s32 func_801726B8(s32 *a0); -extern s32 func_801726C4(s32 *a0); -extern s32 func_80172760(s32 a0); -extern s32 func_80174650(s32); -extern void (*D_80127088)(void); -extern s32 D_801270BC; -extern s16 D_80126B0C; -extern void func_801726D0(void * _arg0); -extern void func_80172710(void); -extern void func_80174684(void *); -extern void func_80172738(void); -extern s16 D_80126B30; -extern s32 func_801727D0(void *a0); -extern void func_80172780(void *a0); -extern void func_80172844(u8 *a0); -extern void func_8017280C(u8 *a0); -extern void func_8017288C(void); -extern s32 func_801728E4(void *a0); -extern void func_80172894(void *a0); -extern void func_80172958(u8 *a0); -extern void func_80172920(u8 *a0); -extern s16 D_80126B36; -extern void func_80172958(u8 * a0); -extern void func_801729A8(void); -extern s32 func_801729F0(void *a0); -extern s16 D_80126B34; -extern s16 D_80126B32; -extern void func_801729B0(s32 a0); -extern void func_80172A8C(void *a0); -extern void func_80172A2C(int param_1); -extern void func_80172ACC(u8 *a0); -extern void func_80172B0C(void); -extern s32 func_80172B44(void *a0); -extern void func_80172B14(s16 a0); -extern s32 D_801150F8; -extern void func_80172BC8(void *a0); -extern void func_80172B80(u8 *a0); -extern void func_80172C48(void); -extern void (*D_801907C8[])(void); -extern void func_80172CA0(void *a0); -extern void func_80172D14(u8 *a0); -extern void func_80172CDC(u8 *a0); -extern void func_80172D14(u8 * a0); -extern void func_80172D60(void); -extern s32 D_80127508; -extern s32 func_80172DAC(void *a0); -extern void func_80172D68(s32 a0); -extern void func_80172E20(u8 *a0); -extern void func_80172DE8(u8 *a0); -extern void func_80172E20(u8 * a0); -extern void func_80172E8C(void); -extern void func_8017303C(void *); -extern void func_80172E94(void); -extern void func_80172ED4(void); -extern void func_80172EFC(void); -extern void func_80172F24(void); -extern u8 D_800D47F4[]; -extern void func_80172F4C(void); -extern void func_80172F9C(void); -extern u8 D_800D5C6C[]; -extern void func_80172FEC(void); -extern s32 func_80173078(void *a0); -extern void func_8017303C(void * a0); -extern void func_801730FC(struct S801730FC *a0); -extern void func_801730B4(s32 a0); -extern void func_8017316C(void); -extern s32 func_8017319C(void *a0); -extern void func_80173174(void); -extern u8 D_800D5AA0[]; -extern void func_80173220(void *a0); -extern void func_801731D8(s32 *a0); -extern M2C_UNK D_8019078C; -extern void func_80173220(void * arg0); -extern void func_80173294(void); -extern void func_801732C4(); -extern void func_8017329C(void); -extern void func_801732C4(s32 *a0); -extern void func_8017331C(); -extern void func_801732F4(void); -extern void func_8017331C(s32 *a0); -extern void func_80173374(); -extern void func_8017334C(void); -extern void func_80173374(s32 *a0); -extern void func_801733A4(void); -extern void func_801733CC(s32 a0); -extern void func_801734BC(s32 a0, s32 a1); -extern s16 D_80126B3E; -extern void func_80173460(s32 a0, s32 a1); -extern void func_801734BC(s32 arg0, s32 _unused1); -extern void (*D_801907F8[])(void); -extern void func_80173544(void *a0); -extern void func_801735B8(u8 *a0); -extern void func_80173580(u8 *a0); -extern s16 D_80126B40; -extern void func_801735EC(void *a0); -extern void func_80173648(u8 *a0); -extern void func_801736A8(void); -extern s32 func_8014C118(void *a0, s32 a1, s32 a2); -extern s32 func_801736FC(void *a0); -extern void func_801736B0(s32 a0, s32 a1); -extern void func_80173770(u8 *a0); -extern void func_80173738(u8 *a0); -extern void func_801723C4(s32 a0, s32 a1); -extern void func_801737B0(void); -extern s32 func_801737E8(void *a0); -extern void func_801737B8(s16 a0); -extern void func_8017385C(u8 *a0); -extern void func_80173824(u8 *a0); -extern void func_801738D4(void); -extern s32 func_8017390C(void *a0); -extern void func_801738DC(s16 a0); -extern void func_80173980(u8 *a0); -extern void func_80173948(u8 *a0); -extern void func_801739D8(u8 *a0); -extern void func_80173A20(void); -extern s32 D_8012750C; -extern void func_80173A60(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80173A28(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void (*D_80190834[])(void); -extern void func_80173B4C(void *a0); -extern void func_80173BC0(u8 *a0); -extern void func_80173B88(u8 *a0); -extern void func_80173C64(u8 *a0); -extern void func_80173E1C(s32 a0); -extern s16 D_80126938; -extern s16 D_80126B3A; -extern void func_800D128C(s32, s32); -extern void func_80174158(s32 a0); -extern void func_8002A088(s32); -extern void func_8002A2D4(s32); -extern void func_8002A544(s32); -extern void func_8002A7B4(s32); -extern s32 func_80174188(s32 a0); -extern void func_801741A8(s32 a0); -extern s32 func_800D0EC4(void); -extern void func_800D0F0C(s32, s32); -extern void func_80145EE8(s32); -extern void func_80173EF8(void *param_1); -extern s32 func_8014BCEC(s32, s32); -extern void func_801741A8(s32 _arg0); -extern s16 D_80126B3C; -extern s16 D_8011F9C8; -extern void func_801741EC(u8 *a0); -extern void func_80174274(void); -extern s32 func_801742A4(void *a0); -extern void func_8017427C(void); -extern void func_80174318(u8 *a0); -extern void func_801742E0(u8 *a0); -extern void func_80174354(void); -extern s32 func_80174384(void *a0); -extern void func_8017435C(void); -extern void func_801743F0(u8 *a0); -extern void func_801743C0(u8 *a0); -extern void func_801743F0(u8 * a0); -extern void func_80174430(void); -extern s32 func_80174474(void *a0); -extern void func_80174438(s32 a0); -extern void func_801744E0(u8 *a0); -extern void func_801744B0(u8 *a0); -extern void func_80174524(void); -extern void func_80174554(); -extern void func_8017452C(void); -extern void func_80174554(s32 arg0); -extern void func_801745AC(); -extern void func_80174584(void); -extern void func_801745AC(s32 *a0); -extern void func_80174604(void); -extern void func_801745DC(void); -extern void func_80174630(void); -extern s32 func_80174650(s32 _arg0); -extern void func_80174674(void); -extern void func_801746A4(void); -extern s32 func_800CF8CC(void); -extern void func_80174714(void); -extern s32 func_80174754(void); -extern s16 func_80174764(void); -extern s16 func_80174774(void); -extern s32 func_801747CC(void *a0); -extern void func_80174784(void); -extern s32 func_801747AC(s32 a0); -extern s32 func_80174808(u8 *a0); -extern void func_8017481C(void); -extern s32 func_80174888(void *a0); -extern void func_80174824(void); -extern void func_8017484C(s32 a0); -extern void func_801748C4(s32 a0); -extern void func_801748E4(void); -extern void func_8012A018(s32 a, s32 b); -extern s32 func_8017496C(void *a0); -extern void func_801748EC(void); -extern s32 func_801749C8(); -extern s32 func_801749A8(s32 a0); -extern void func_80174BBC(void *a0); -extern void func_8012A0E0(void); -extern void func_80174BF4(void *a0); -extern void (*D_8019088C[])(); -extern void func_80174BF4(void * arg0); -extern s32 func_80174CB0(s32, s32); -extern s32 func_80174C60(s32 a0); -extern void func_80174C80(s32 a0); -extern s32 D_8012697C; -extern u16 D_80126980; -extern s32 func_80174F28(void *a0); -extern void func_80174E9C(s32 a0); -extern void func_80174EF0(s32 a0, s16 a1); -extern s32 func_80175014(u8 *a0, u8 *a1, s32 a2); -extern void func_80174F64(u8 *a0); -extern void func_80174FBC(u8 *a0); -extern s32 func_8017509C(u8 *a0, s32 a1, u8 *a2, u8 *a3); -extern void func_80175184(s32 *a0); -extern void func_80175114(s32 *a0); -extern void func_80175184(); -extern void func_80175150(s32 *a0); -extern void (*D_8019089C[])(void*); -extern s32 func_80175268(s32); -extern void func_80175184(s32* arg0); -extern s32 func_80175218(void *a0); -extern void func_801751D8(void *a0); -extern void (*D_801908A4[])(s32); -extern s32 func_80175218(void * param_1); -extern void func_801752BC(s32 *a0); -extern u8 D_8011F7A8; -extern u8 D_8011F7A9; -extern u8 D_8011F7AD; -extern u8 D_8011F7AE; -extern void func_80175494(void); -extern void (*D_80190A0C[])(); -extern s32 func_801758FC(void); -extern s32 func_80175820(void); -extern s32 func_801759D8(void); -extern void func_8017553C(s32 *param); -extern void func_801757A0(s32 a0); -extern short D_800B9A02; -extern void func_80175590(void *arg0); -extern s16 D_800B9A02; -extern void func_801757A0(s32); -extern void func_80175624(void *a0); -extern void func_801757E0(int); -extern void func_80175668(void); -extern void (*D_80190A18[])(); -extern void func_80175690(s32 *param); -extern void func_80175DA8(s32 a0); -extern void func_80175AB8(s32 a0); -extern void func_80176144(s32 a0); -extern void func_801756E4(s32 arg0); -extern void func_80175798(void); -extern void func_80176734(s32 a0); -extern void func_80176218(s32 a0); -extern void func_80176D00(s32 a0); -extern void func_801757E0(s32 a0); -extern s32 func_80178004(s32 a0, s32 a1, s32 a2); -extern u8 D_8011F7B1; -extern u16 D_8011F7B4; -extern u16 D_8011F7B6; -extern s16 D_8011F81E; -extern void *func_80177784(void *a0, s32 a1, s32 a2, s32 a3); -extern u32 func_801783D0(s32 a0, s32 a1); -extern void *func_801777BC(void *a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern u16 D_8011F82C; -extern u16 D_8011F82A; -extern u32 * func_80176D94(void *param_1, u32 param_2, s16 param_3_); -extern void func_801778A8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80176FF4(s32 a0); -extern u16 D_8011F830; -extern u16 D_8011F82E; -extern u32 * func_801770E0(void *param_1, u32 param_2, s16 param_3_); -extern void func_80177340(s32 a0); -extern u8 D_8011F837; -extern u8 D_8011F7F0; -extern u8 D_8011F7AB; -extern u32 * func_8017742C(u32 *param_1, s32 param_2, s32 param_3); -extern void func_801776EC(u8 *a0); -extern void * func_80177784(void *a0, s32 a1, s32 a2, s32 a3); -extern uint * func_80177EA4(uint *param_1, int param_2, uint param_3, int param_4); -extern void func_80177F84(s32 param_1, s32 param_2); -extern u32 * func_80178298(u32 *param_1, u8 *param_2, short param_3, short param_4); -extern M2C_UNK D_801E52AC; -extern void func_80178438(u16 *arg0); -extern void func_801787D4(void); -extern void func_8012A908(void); -extern void func_8017869C(s32 a0); -extern void func_80130D0C(s32 a0); -extern void func_8013E370(void); -extern s32 D_8011DB08; -extern void func_8017849C(void); -extern void func_8013E4B4(void); -extern s16 D_801270C4; -extern s32 D_801274D8; -extern s16 D_801270C2; -extern u8 D_801270C6; -extern u8 D_801270C7; -extern s32 D_801274DC; -extern s32 D_801274E0; -extern void func_80178608(void); -extern void func_80178744(s32 a0, s32 a1); -extern void func_80178840(); -extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern s32 func_801788B8(s32 arg0, s32 arg1); -extern s32 func_801789AC(s32 arg0); -extern s16 D_801E7AB0; -extern int func_80178970(void); -extern s32 func_80178B18(s32 param_1, s32 param_2); -extern s32 func_80178B70(s32 param_1, s32 param_2); -extern void func_80178BB8(s32 a0, s32 a1); -extern s32 func_80178BF8(); -extern s32 D_801E6898; -extern short D_801E7B24; -extern void func_80178CBC(s32 arg0, s32 arg1); -extern void func_80178D18(void); -extern s32 func_80178D40(s32 arg0, s32 arg1); -extern void func_80179B28(s32 a0); -extern void func_80179B74(u16 *p); -extern void func_80179D30(u16 *a0); -extern void func_80179D78(u16 *a0); -extern void func_80179DCC(short a0); -extern void func_80179DF8(void); -extern void func_80179E1C(short a0); -extern void func_80179E48(s16 a0); -extern void func_80179E74(s16 a0); -extern void func_80179EA0(u16 *a0); -extern void func_80179EE8(short a0); -extern void func_80179F14(s16 a0, s16 a1); -extern void func_80179F44(void); -extern void func_80179F6C(short a0); -extern void func_80179F98(u16 *a0); -extern void func_80179FEC(u16 *a0); -extern void func_8017A040(u16 *a0); -extern s32 D_801E6CC4; -extern void func_8017A094(s32 arg0); -extern void func_8017A0C4(s32 arg0); -extern void func_8017A0F4(void); -extern void func_8017A11C(void); -extern s32 D_801E6CEC; -extern void func_8017A144(s32 a0); -extern void func_8017A180(void); -extern void func_8017A1A8(void); -extern void func_8017A1D0(void); -extern void func_8017A1F8(void); -extern void func_8017A220(void); -extern void func_8017A248(void); -extern void func_8017A270(void); -extern void func_8017A298(void); -extern void func_8017A2C0(void); -extern void func_8017A2E8(void); -extern void func_8017A310(void); -extern void func_8017A338(void); -extern void func_8017A360(void); -extern void func_8017A388(void); -extern s16 D_801E6CA8; -extern s32 func_8017A3B0(void); -extern short D_801E6CE4; -extern short D_801E6CE0; -extern int func_800D0CA0(int); -extern int func_8001AAA0(void); -extern int func_800D0CE0(void); -extern int func_8017A3D8(void); -extern void func_80172310(u8*); -extern void func_80172780(void*); -extern void func_80172894(void*); -extern void func_801729B0(s32); -extern void func_80172B14(s16); -extern void func_80172C50(u16 *); -extern void func_80172D68(s32); -extern void func_801733FC(s16, u16 *); -extern void func_80173460(s32, s32); -extern void func_801734BC(s32, s32); -extern void func_801736B0(s32, s32); -extern void func_801737B8(s16); -extern void func_801738DC(s16); -extern void func_80173A28(s32, s32, s32, s32, s32, s32); -extern void func_80174438(s32); -extern void func_8017A4AC(void); -extern s32 func_8017AD0C(s32 arg0); -extern s32 func_8017AD0C(s32); -extern s32 func_8017ADE8(s32 a0); -extern s32 func_8017AE08(void); -extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); -extern void func_8012B178(s32 a0, s32 a1); -extern void func_8012AD80(s32 a0); -extern s32 func_8012B030(u8 *a0); -extern s32 func_8012B744(void *a0, void *a1); -extern s32 func_8012BE98(s32 a0, u16 *a1); -extern s16 D_801E7A68; -extern s16 D_801E7A6A; -extern s16 D_801E7A74; -extern void func_8017AE2C(s32 param_1); -extern void func_8017B0E4(int param_1, int param_2); -extern s16 D_801E6CAC; -extern u16 D_801E6D2C; -extern u16 D_801E6D2E; -extern u16 D_801E6D30; -extern void func_8017B1D8(void); -extern s32 func_8017B238(s32 param_1, s32 param_2); -extern s32 func_8017B368(s32 param); -extern s32 func_8017B490(s32 param); -extern s32 func_8017B614(s32 param_1, s32 param_2); -extern s32 D_80114F30; -extern s32 D_80114F34; -extern s32 D_80114F38; -extern s32 D_80114F24; -extern s32 D_80114F28; -extern s32 D_80114F2C; -extern u8 D_8012694C; -extern s16 D_801E6D24; -extern s16 D_801E6D26; -extern s16 D_801E6D28; -extern s16 D_801E6D1C; -extern s16 D_801E6D1E; -extern s16 D_801E6D20; -extern void func_8017B7A8(void); -extern s16 D_801E6D3C; -extern s16 D_801E6D3E; -extern s16 D_801E6D40; -extern s16 D_801E6D44; -extern s16 D_801E6D46; -extern s16 D_801E6D48; -extern void func_8017B824(void); -extern void func_8017B880(void); -extern s32 func_8017B8E8(s32 src); -extern short D_801E6D34; -extern short D_801E6D36; -extern short D_801E6D38; -extern void func_8017B940(void); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void RotTransSV(void *a0, void *a1, void *a2); -extern SV4 D_801E6CCC; -extern SV4 D_801E6CD4; -extern void func_8017BA3C(s32 param_1, s32 param_2); -extern s32 func_8017BB34(s32 param_1, s32 param_2); -extern void (*D_801E6CF4[10])(int); -extern void func_8017BC38(int param_1); -extern void func_8017B0E4(int, int); -extern void func_8017BCA0(int param_1); -extern void func_8012A4BC(void); -extern void func_8017BCF4(int param_1); -extern void (*D_801E6CF0)(void); -extern void func_8017BD50(int param_1); -extern void (*D_80190BF4[])(void); -extern void func_8017BE60(void *a0); -extern void (*D_80190C94[])(void); -extern void func_8017BE9C(void *a0); -extern void (*D_80190C9C[])(void); -extern void func_8017BED8(void *a0); -extern void (*D_80190CA4[])(void); -extern void func_8017BF14(void *a0); -extern u8 *func_8012913C(s32 a0); -extern s32 func_8012C750(s32 a0); -extern void func_8017BF50(s32 a0); -extern void func_8017C094(void); -extern void func_8017C100(s32 param_1); -extern void func_8017C1AC(s32 param_1); -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8012A828(s32*, s32); -extern void func_8012B260(u8 *a0); -extern void func_8017C1EC(s32 a0); -extern void func_8017C2B0(s32 a0); -extern void (*D_80190CC4[])(void); -extern void func_8017C338(void *a0); -extern s32 func_800D222C(s32 a0, void *a1, s32 a2); -extern s32 func_8001CF30(void *a0); -extern void func_8017C374(s32 param_1); -extern void func_8017C538(u8 *p); -extern void (*D_80190CCC[])(void); -extern void func_8017C5CC(void *a0); -extern u8 D_80190CB8; -extern void func_8017C608(s32 a0); -extern void func_8017C6AC(int a0); -extern void func_8017C710(s32 arg0); -extern void (*D_80190CE4[])(void); -extern void func_8017D5F0(void *a0); -extern void func_8001C214(s32, s32); -extern u32 D_80190CD4; -extern void func_8017D62C(s32 arg0); -extern void func_8017D6A8(void); -extern void (*D_80190D1C[])(void); -extern void func_8017D6B0(s32 *param_1); -extern void func_8017DA08(void *arg0); -extern s32 func_8012AD50(void *arg0); -extern void func_8017D6EC(void *arg0); -extern void func_8012AD44(s32 *a0, s16 a1); -extern void func_8017D9B8(void); -extern void func_8017DAC4(void *arg0); -extern void aF8017D77C(); -extern void func_80017714(void *); -extern u32 D_801E6FE8; -extern u16 D_80190D24[]; -extern u16 D_801E6FEC[]; -extern s32 D_80190D44; -extern void func_8017DC0C(void); -extern void func_8017E038(void *arg0); -extern s32 func_8017DC98(s32 param_1); -extern s32 func_8017DCE8(void); -extern void func_800D1E28(void); -extern s32 func_800D1D94(void); -extern void func_8001BFD0(void); -extern s32 func_8017DD7C(s32 a0); -extern void func_800D1EBC(void); -extern void func_8017DE2C(void); -extern s32 func_8017DE4C(void *a0); -extern void (*D_80190D64[])(void); -extern void func_8017DF34(void *a0); -extern void (*D_80190D6C[])(void); -extern void func_8017DF70(void *a0); -extern void (*D_80190D78[])(void); -extern void func_8017DFAC(void *a0); -extern void (*D_80190D84[])(void); -extern void func_8017DFE8(void *a0); -extern s32 D_80127050; -extern void func_8017E024(void); -extern void (*D_80191060[])(void); -extern void func_8017E038(void *a0); -extern void func_8017E074(void *a0); -extern void func_8017E088(void *a0); -extern void (*D_80191068[])(void); -extern void func_8017E0C0(void *a0); -extern void func_8017E0FC(u8 *a0); -extern void func_8017E110(void); -extern void func_8012A094(s32 a0); -extern void func_8017E1F4(void *a0); -extern void func_8017E130(void); -extern void (*D_80191070[])(void); -extern void func_8017E26C(s32 *a0, s32 a1); -extern void func_8017E3AC(s32 a0); -extern void func_8017E230(s32 *a0); -extern void func_8017E264(void *a0); -extern void aF8017E26C(); -extern s32 func_80012ABC(s32 a0, s32 a1, s32 a2); -extern void func_8017E3AC(s32 param_1); -extern void func_80184CB8(s32*, s32); -extern void func_8017E5A0(void * arg0); -extern void (*D_801912A8[])(void); -extern void func_8017E760(void *a0); -extern void func_8012A828(s32 *a0, s32 a1); -extern void func_8017E79C(short *a0); -extern void (*D_801912C8[])(void); -extern void func_8017E810(void *a0); -extern void func_80178CBC(s32 a0, s32 a1); -extern void func_8017E84C(void * arg0); -extern void func_8017E878(void * arg0); -extern void func_8012C588(s32, s32); -extern void func_8017E99C(void); -extern s32 func_80184BAC(s32 arg0, s32 arg1); -extern void func_8017E5A0(void *arg0); -extern void func_8017E9C0(void *arg0); -extern void func_8017EAAC(void * arg0); -extern s32 func_8012BEE8(s32 a0); -extern void func_8017E79C(short*); -extern void func_8017EBA0(s32 a0); -extern void func_8017E7CC(); -extern void func_8017EBE0(u8 *a0); -extern void func_8017F02C(void * arg0); -extern void (*D_8019155C[])(void); -extern void func_8017F058(void *a0); -extern void func_8017F094(void * arg0); -extern s32 func_8017F0C0(void); -extern void func_80029124(s32 arg0, s32 arg1); -extern void func_8017F108(void); -extern void func_80029514(int); -extern void func_8017F1A8(void); -extern void func_8017F28C(void * arg0); -extern void (*D_801916E4[])(void); -extern void func_8017F5BC(void *a0); -extern void func_80178CBC(s32, s32); -extern void func_8017F5F8(void *a0); -extern void func_8017F6D8(void *a0); -extern void func_8017F7B8(void *a0); -extern void func_8017F898(void *a0); -extern void func_80029124(s32 a, s32 b); -extern void func_8017FA34(void); -extern void func_8017FCD8(void * arg0); -extern void (*D_80191814[])(void); -extern void func_8017FF34(void *a0); -extern void (*D_801918E4[])(void); -extern void func_801800E0(void *a0); -extern s32 func_8018011C(void); -extern void func_8018015C(void); -extern void func_80180164(void * arg0); -extern void func_8012E8E0(s32, s32); -extern void func_8012E88C(s32); -extern void func_8012A828(s32 *a0, s32 a1); /* fleet-canonical sig (TU L3775) */ -extern void func_80184C90(s32); -extern void func_80184ED4(s32, s32, s32, s32); -extern void func_8018034C(void *arg0); -extern void (*D_801919C4[])(void); -extern void func_8018048C(void *a0); -extern s32 func_80184DD0(s32 a0); -extern void func_80180504(s32 a0); -extern s32 func_80180544(void); -extern void func_80180580(void *arg0); -extern s32 func_8012BD14(s32 a0); -extern s32 func_80180814(void *a0); -extern void func_80180888(void *arg0); -extern void func_8012E88C(s32 a0); -extern void func_80184C90(s32 a0); -extern void func_801808FC(void *a0); -extern void func_80184CB8(s32 *a0, s32 a1); -extern void func_801809DC(short *a0); -extern void (*D_80191A80[])(void); -extern void func_80180B6C(void *a0); -extern void func_80180C0C(void * arg0); -extern s32 func_801848DC(void); -extern s32 func_8018625C(void *); -extern s32 func_80178BF8(void); -extern s32 func_80180CC0(void *a0); -extern s32 func_80178BF8(); /* TU-canonical (ov_SC04_018_jr_8017AE2C.c L2541) */ -extern s32 func_80180D38(void *a0); -extern s32 func_80185BE0(s32 a0); -extern s32 func_80184FA4(void); -extern void func_80180EE8(void *a0); -extern void func_80181020(void *a0); -extern void func_80181244(short *param); -extern void func_801812D0(short *a0); -extern void (*D_80191B20[])(void); -extern void func_801812FC(void *a0); -extern void func_80181338(short *param); -extern void func_80181364(s32 a0); -extern void func_80181474(void * arg0); -extern s32 func_80181564(void *a0); -extern void func_8018170C(void * arg0); -extern void func_8018178C(void * arg0); -extern void (*D_80191BDC[])(void); -extern void func_80181924(void *a0); -extern s32 D_801D7598; -extern s32 D_801D2200; -extern void func_80181998(void); -extern s32 D_801E7018; -extern void func_801819B0(void); -extern void func_8012A828(s32 *, s32); -extern void func_801819C8(void *arg0); -extern void func_80181A28(s32 a0); -extern void func_801815DC(void *arg0); -extern void func_80181A68(void *arg0); -extern void func_801816A8(void *arg0); -extern void func_80181B34(void *arg0); -extern void func_80184ED4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_8018170C(void *a0); -extern void func_80181BEC(void *arg0); -extern void func_80181738(void *arg0); -extern void func_80181C78(void *arg0); -extern void func_801817B8(void *arg0); -extern void func_80181DC4(void *arg0); -extern s32 func_80181EFC(void *a0); -extern void func_80181F70(void *arg0); -extern void func_80181FE4(void *a0); -extern void func_801821A8(void * arg0); -extern void (*D_80191EE4[])(void); -extern void func_8018233C(s32 *param_1); -extern void func_80182490(void * arg0); -extern s32 func_80182544(void *a0); -extern s32 func_801825BC(void *a0); -extern void func_8018276C(void *a0); -extern void func_801828B0(void *a0); -extern void func_801821A8(void *a0); -extern void func_80182920(void *arg0); -extern void func_80182ACC(void * arg0); -extern void func_80182B58(void *arg0); -extern void func_80182BCC(void *a0); -extern void (*D_80192014[])(void); -extern void func_80182C98(void *a0); -extern s32 D_801D7E84; -extern void func_80182D0C(void); -extern void func_80182D24(void *arg0); -extern void func_80182D84(s32 a0); -extern s32 func_80182DC4(void); -extern void func_80182E00(void *arg0); -extern void func_80182C24(void *arg0); -extern void func_80182ED8(void *arg0); -extern void func_80182F18(void *a0); -extern void func_801831AC(short *a0); -extern void func_8018330C(void * arg0); -extern void (*D_8019211C[])(void); -extern void func_80183438(void *a0); -extern void func_80183474(short *a0); -extern void func_801834A0(void * arg0); -extern void func_801834CC(short *a0); -extern void func_801834F8(s32 a0); -extern void func_80183538(s32 a0); -extern void func_801831AC(short*); -extern void func_80183674(void *arg0); -extern void func_801831D8(s32 *a0); -extern void func_801836C0(s32 *a0); -extern void func_8018370C(void * arg0); -extern void func_80183938(void *arg0); -extern void (*D_80192230[])(void); -extern void func_80183A68(void *a0); -extern void func_80183AA4(void * arg0); -extern void func_80183AD0(s32 a0); -extern s32 func_80183B10(void); -extern void func_80183B4C(void *arg0); -extern void func_80183B8C(s32 param_1); -extern s32 func_80183D80(void *a0); -extern void func_80183DF4(void * arg0); -extern void (*D_80192414[])(void); -extern void func_80184130(void *a0); -extern void func_8018416C(s32 a0); -extern void func_801841AC(s32 a0); -extern void func_801841EC(s32 a0); -extern s32 func_8018422C(void); -extern void func_80184268(short *a0); -extern void func_80184298(short *a0); -extern void func_801842C8(short *a0); -extern s16 D_801923A4; -extern void func_801842F8(void *arg0); -extern void func_80183FA8(s32 *a0); -extern void func_80184328(s32 *a0); -extern void func_80183DF4(void*); -extern void func_801843C4(s32 *a0); -extern void func_80183E20(void *arg0); -extern void func_80184460(void *arg0); -extern void func_8018479C(void *a0); -extern void func_801847AC(void *a0); -extern s32 func_8012E57C(s32 a0, s32 a1); -extern s32 func_801847BC(void *a0, void *a1); -extern void func_80184858(void *a0); -extern void func_80184884(void *a0); -extern void func_801848B0(void *a0); -extern void func_8012F2E8(s32 a0, s32 a1, s32 a2); -extern s32 func_8012CB64(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern s32 aF801848DC(); -extern s32 func_80184B04(s32 arg0); -extern s32 func_80184960(s32 a0); -extern s32 func_80184960(s32 arg); -extern void func_80184A90(u8 *a0); -extern void func_80184AC4(void *a0); -extern short D_800BA2BA; -extern void (*D_801B8720[])(void); -extern void func_80184B2C(void *a0); -extern void func_80184B68(void); -extern void func_80184B70(void *a0, s32 a1, s32 a2); -extern s32 func_80184BD0(u8 a0, u8 a1, u8 a2, u8 a3); -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); -extern void func_80184C28(void *a0, s32 a1); -extern void func_80184CB0(void *a0); -extern void func_8012E8A8(u8 *a0); -extern s32 func_80184D00(void); -extern s32 func_80184D5C(void); -extern s32 aF80184DD0(); -extern s32 func_80184E44(void); -extern void func_80184EA0(void); -extern void func_8012B200(u8 *a0); -extern s32 aF80184FA4(); -extern s32 func_8018516C(s32 a0); -extern void (*D_801B8740[])(void); -extern void func_801851B4(void *a0); -extern void func_801851F0(void); -extern void func_801851F8(void); -extern void func_80185200(void); -extern void func_80185208(void); -extern void func_80185210(void); -extern void func_80185218(void *a0); -extern void func_8018525C(void); -extern void func_8001D0E8(s32 arg0, s32 arg1, s32 arg2); -extern void func_80185264(s32 a0); -extern void func_80185978(s32 a0); -extern void func_80185904(s32 a0); -extern void func_801859D8(s32 a0); -extern void func_8018589C(s32 a0); -extern void func_801852EC(s32 a0); -extern void func_8001C97C(s32 a0); -extern void *func_80185C6C(void *a0); -extern void func_801854C4(s32 a0); -extern void func_80185D70(void *a0); -extern void func_80185664(void *a0); -extern void func_8012E688(s32 param_1, u16 param_2, u16 param_3); -extern void func_80185EEC(void); -extern void func_801856E0(s32 a0); -extern void func_801857AC(void); -extern void func_801857CC(s32 a0); -extern s16 D_801B8788[]; -extern s32 D_801B8748[][2]; -extern void func_80185A58(s32 a0, s32 a1); -extern void func_8018602C(s32 a0, s32 a1); -extern void func_80185AB0(s32 a0); -extern void func_80185B10(s32 a0); -extern void func_80185B58(s32 a0); -extern void func_80185BA8(s32 a0); -extern s32 func_80185D10(void *a0); -extern s32 func_801862A8(void *a0); -extern void * func_80185C6C(void *a0); -extern s32 func_80029178(s32 arg0); -extern void func_80185F20(void *a0); -extern void aF80185EEC(); -extern void func_80185F54(void *a0, s32 a1, s32 a2); -extern void func_80185FB8(s32 a0, s32 a1, s32 a2); -extern void (*D_801B8A3C[])(void); -extern void func_80186084(void *a0); -extern void func_801860C0(void *a0); -extern void func_8018613C(void *a0); -extern s32 func_8018625C(void *a0); -extern s32 func_801863B4(s32 a0); -extern void func_8012F214(s32 arg0, s32 arg1, s32 arg2); -extern void func_80186410(void); -extern s16 func_80186450(void); -extern void func_80029444(void); -extern void func_801754A8(void); -extern void func_80141C04(void); -extern void func_801864AC(void); -/* ==== end §8b carried decl layer ==== */ - - -void func_80186570(void) { - - extern s16 D_801E7030; - extern s16 D_80115118; - extern s16 D_80115126; - extern s32 D_80115134; - extern u8 D_80115138[]; - extern u8 D_80115140[]; - extern u8 D_80115148[]; - extern u8 D_80115158[]; - extern u16 D_8011515A; - extern s32 D_801B9268[]; - extern s32 D_801B9428[]; - extern s32 D_801B943C[]; - extern s16 D_801B9450[]; - extern s32 D_801B9458[]; - extern u8 D_801B9282; - extern u8 D_801B9284; - extern u8 D_801B928E; - extern u8 D_801B9290; - extern u8 D_801B929A; - extern u8 D_801B929C; - extern u8 D_801B92A6; - extern u8 D_801B92A8; - extern s32 D_801E92B4; - extern s32 D_801E92E0; - extern s32 D_801E96A4; - extern s32 D_801E9968; - extern u8 D_801E7714[]; - extern s32 D_801E775C[]; - extern s32 D_801E7774[]; - extern u16 D_801E778C; - extern u16 D_801E7794; - extern u8 D_801E77B0[]; - extern u8 *D_801E3D40[]; - extern u8 D_801E3D38[]; - extern u8 D_801E3D3E; - extern u8 *D_801E3D58; - extern u16 D_800B99D8; - extern u16 D_800B99DA; - extern s32 D_80078E8C; - extern s16 D_80078E92; - extern u8 D_80078EBA; - - extern s32 func_80029504(void); - extern s32 func_80029178(s32 arg); - extern s32 func_800291B4(s32 arg); - extern void func_80029124(s32, s32); - extern void func_8002AC00(s32 a0); - extern s32 func_80029FE4(void); - extern s32 func_801EADC4(void); - extern void func_80186E24(void); - - u8 *base; - s32 iVar5; - short i; - short count; - short flagCount; - short found; - short cnt; - short k; - short j; - u8 *p; - u8 *rec; - s32 *fld; - s32 kind; - s32 *dst; - - D_801E7030 = 0; - base = (u8 *)&D_80115118; - *(s16 *)base = 0; - D_801E7794 = 0; - iVar5 = func_80029504(); - - D_80115134 = D_801B9268[D_80115126]; - count = 4; - if (D_80115126 != 3) { - count = 3; - } - - i = 0; - while (i < 8) { - if (i < count) { - u8 *q = base + 0x40; - D_80115138[i] = *(u16 *)(D_80115134 + i * 0x20); - *(u16 *)(q + i * 2) = *(u16 *)(D_80115134 + i * 0x20 + 2); - } else { - *(u16 *)(D_80115158 + (i << 1)) = 0; - D_80115138[i] = 0; - } - *(u16 *)(D_80115148 + (i << 1)) = 0; - D_80115140[i] = 0; - i = i + 1; - } - - if (D_80115126 == 3) { - if ((u8)func_80029178(0x11D) != 0) { - func_8002AC00(0x23); - if (((u8)func_80029178(0x1D) != 0) && - ((u8)func_80029178(0x1E) != 0) && - ((u8)func_80029178(0x1F) != 0) && - ((u8)func_80029178(0x20) != 0) && - ((u8)func_80029178(0x21) != 0) && - (((u8)func_80029178(0x1B) != 0) || - ((u8)func_80029178(0x1C) != 0))) { - func_8002AC00(0x29); - } - if (func_80029FE4() >= 0x1B) { - func_8002AC00(0x2A); - } - i = 0; - cnt = 0; - while (i < 0x2A) { - if (func_800291B4((s32)i + 0x63) & 0x40) { - cnt = cnt + 1; - } - i = i + 1; - } - if (cnt >= 0x2A) { - func_8002AC00(0x2B); - } - } - - flagCount = 0; - for (i = 0; i < 7; i++) { - D_801E77B0[i] = 0; - } - - for (k = 0; k < 4; k++) { - if (iVar5 < D_801B9450[k]) { - break; - } - } - k = k + 2; - if ((u8)func_80029178(0x11D) != 0) { - k = 6; - } - - for (i = 0; i < k; i++) { - found = 0; - p = D_801E3D40[i]; - for (j = 0; j < D_801E3D38[i]; j++) { - if (func_800291B4(*p++ + 0x62) & 0x80) { - found = 1; - break; - } - } - if (found) { - D_801E77B0[flagCount++] = i; - } - } - - found = 0; - p = D_801E3D58; - for (j = 0; j < D_801E3D3E; j++) { - if (func_800291B4(*p++ + 0x62) & 0x80) { - found = 1; - break; - } - } - if (found) { - D_801E77B0[flagCount++] = 6; - } - D_8011515A = flagCount | 0x100; - } - - for (i = 0; i < 6; i++) { - D_801E7774[i] = 0; - } - __asm__ __volatile__("" :: "r"(p)); - - if (D_80115126 == 4) { - rec = (u8 *)func_801EADC4(); - if (rec != 0) { - s32 *tbl; - s32 *tbl2; - i = 0; - tbl = D_801E775C; - tbl2 = tbl + 6; - fld = (s32 *)(rec - 0x10); - do { - kind = fld[6]; - if ((u32)(kind - 10) < 2) { - *(s32 *)(kind * 4 + (s32)tbl) = (s32)rec; - } else { - *(s32 *)(i++ * 4 + (s32)tbl2) = (s32)rec; - } - fld += 4; - rec += 0x10; - } while (fld[0] != 0); - } - } - - if (D_80115126 == 5) { - rec = D_801E7714; - for (i = 0; i < 6; i++) { - s32 *pp = (s32 *)(rec + 4); - switch (i) { - case 0: - pp[1] = 9; - if (iVar5 < 0x258) { - pp[0] = (s32)&D_801E92B4; - } else { - pp[0] = (s32)&D_801E92E0; - } - D_801E7774[0] = (s32)rec; - break; - case 1: - pp[1] = 0xB; - if (((u8)func_80029178(0x11A) != 0) && - ((u32)D_80078E8C >= 0x32)) { - pp[0] = (s32)&D_801E9968; - } else { - func_80029124(0x11A, 0); - pp[0] = (s32)&D_801E96A4; - } - D_801E7774[1] = (s32)rec; - break; - case 2: - *(s32 *)((s32)pp + 4) = 3; - pp[0] = D_801B9428[(u16)((u32)D_800B99D8 % 5)]; - D_801E7774[2] = (s32)rec; - break; - case 3: - pp[1] = 0x19; - for (k = 0; k < 4; k++) { - if (iVar5 < D_801B9450[k]) { - break; - } - } - { - s32 v3 = D_801B9458[k]; - if (v3 != 0) { - pp[0] = v3; - D_801E7774[3] = (s32)rec; - } - } - break; - case 4: - if (iVar5 < 0x3B6) { - *(s32 *)((s32)pp + 4) = 0xC; - pp[0] = D_801B943C[(u16)((u32)D_800B99DA % 5)]; - D_801E7774[4] = (s32)rec; - } - break; - } - rec += 0x10; - } - } - - D_801E778C = 0; - if (D_80115126 == 0) { - s32 t2; - if (D_80078EBA == 4) { - D_801E778C = 0x14; - } - if (iVar5 < 0x258) { - t2 = 6; - D_801B92A6 = t2; - D_801B929A = t2; - D_801B928E = t2; - D_801B9282 = t2; - t2 = 8; - } else { - t2 = 7; - D_801B92A6 = t2; - D_801B929A = t2; - D_801B928E = t2; - D_801B9282 = t2; - t2 = 0x6D; - } - D_801B92A8 = t2; - D_801B929C = t2; - D_801B9290 = t2; - D_801B9284 = t2; - } - - if ((D_80115126 == 1) && (D_80078E92 >= 0x438)) { - D_801E778C = 3; - } - - func_80186E24(); -} - -#include "common.h" -extern char *strcpy(char *, const char *); - -/* mode selector */ -extern s16 D_80115126; - -/* phase 1 — default-string fill */ -extern char D_801E58D0[]; -extern char D_801E58F0[]; -extern char D_801E5910[]; -extern char D_801E56F0[]; -extern char D_801E5934[]; -extern char D_801E7034[]; -extern char D_801E7274[]; -extern char D_801E74B4[]; - -/* phase 2 — mode dispatch */ -extern s32 func_80029178(s32); -extern s32 func_80029504(void); -extern s32 func_800291B4(s32); -extern u8 D_801B92CC[]; -extern u8 D_801B92AC[]; -extern u8 D_801B92D4[]; -extern u8 D_801B92DC[]; -extern s16 D_8011515A; -extern u8 *D_801E76F4; - -/* phase 3 — item name + quantity render */ -extern u8 D_8010EDE8[]; /* stride 12, +0 = char *name */ -extern u8 D_8010EDEC[]; /* stride 12, +4 = u16 qty */ -extern s16 D_801E778C; -extern u32 func_801783D0(s32, s32); -extern char D_801E704F[]; - -/* phase 4 — side table */ -extern u8 D_8011514A; -extern u8 D_801E77B0[]; -extern u8 *D_801E3D40[]; -extern u8 D_801E3D38[]; -extern u8 *D_801E76FC; -extern s16 D_8011515E; -extern s32 func_800D0F8C(s32); -extern char *D_801B8F0C; -extern char D_801E70B4[]; - -/* phase 5 — mode 3 builder */ -extern u8 D_8010F468[]; /* stride 8, +0 = char *name */ -extern s16 D_800A6586[]; -extern char D_801E728F[]; -extern char D_801E728A[]; -extern char *D_801B8F10[]; - -/* phase 6 — 64-entry filter */ -extern u16 D_8011511A; -extern u8 D_801E77B8[]; -extern s16 D_8011515C; -extern u8 D_8011514C; - -/* phase 7 — mode 4 builder */ -extern u8 *D_801B8F14[]; -extern u8 *D_801E7774[]; -extern char *D_801B8E84[]; -extern char D_801E74B8[]; - -/* phase 8 — mode 5 builder */ -extern char *D_801B8F44; -extern char D_801E74C0[]; - -#define COPY2(d_, s_) \ - while (*(s_) != 0) { \ - *(d_)++ = *(s_)++; \ - *(d_)++ = *(s_)++; \ - } - -#define RENDER_QTY(dst_, q_, sep_, cnt_, k_, dp_) \ - { \ - (k_) = -0x1000; \ - for ((cnt_) = 3; (cnt_) >= 0; (cnt_)--) { \ - if (((q_) & (k_)) != 0) { \ - break; \ - } \ - (k_) >>= 4; \ - } \ - (dp_) = (dst_); \ - for ((k_) = 0; (k_) < (cnt_) + 1; (k_)++, (q_) >>= 4) { \ - *(dp_) = ((q_) & 0xF) + 0x4F; \ - (dp_)--; \ - *(dp_) = (sep_); \ - (dp_)--; \ - } \ - *(dp_) = 0x46; \ - (dp_)[-1] = 0x81; \ - } - -void func_80186E24(void) -{ - s32 pad[2]; - s16 i; - s16 cnt; - s16 k; - s32 b; - u8 *s; - char *d; - char *srcA; - char *srcB; - register char *tmpl __asm__("$17"); - register s32 count __asm__("$19"); - register u8 *table __asm__("$20"); - register s32 descCount __asm__("$19"); - register u8 *table2 __asm__("$20"); - - /* ---- phase 1: default template + 16-row fill ---- */ - srcA = D_801E58D0; - srcB = D_801E58F0; - if (D_80115126 == 4) { - tmpl = D_801E5910; - } else { - tmpl = D_801E56F0; - if (D_80115126 == 5) { - tmpl = D_801E5934; - } - } - - for (i = 0; i < 16; i++) { - strcpy(&D_801E7034[i * 36], srcA); - strcpy(&D_801E7274[i * 36], srcB); - strcpy(&D_801E74B4[i * 36], tmpl); - } - - /* ---- phase 2: item table / count dispatch ---- */ - switch (D_80115126) { - case 0: - { - #define flags i - - if ((u8)func_80029178(0xFB) != 0) { - flags = 1; - } else { - flags = (((u32 (*)(void))func_80029504)() >= 0x258); - } - if ((u8)func_80029178(0x9B) != 0) { - flags |= 2; - } - if ((u8)func_800291B4(0x5B) >= 3) { - flags |= 4; - } - count = D_801B92CC[flags]; - D_8011515A = count | 0x100; - table = *(u8 **)(D_801B92AC + flags * 4); - D_801E76F4 = table; - #undef flags - } - break; - case 1: - count = 7; - if (((u32 (*)(void))func_80029504)() < 0x258) { - count = 5; - } - table = D_801B92D4; - D_8011515A = count | 0x100; - D_801E76F4 = table; - break; - case 5: - table = D_801B92DC; - D_801E76F4 = table; - count = 7; - break; - default: - count = 0; - break; - } - - /* ---- phase 3: name copy + quantity render ---- */ - i = 0; - if (count != 0) { - do { - s32 pct; - s32 sub; - s32 raw; - u16 q; - - b = table[i]; - s = *(u8 **)(D_8010EDE8 + b * 12); - d = &D_801E7034[i * 36]; - COPY2(d, s) - - pct = D_801E778C; - sub = pct; - if (pct != 0) { - if (D_80115126 == 0) { - raw = (*(s16 *)(D_8010EDE8 + b * 12 + 4) * (100 - pct)) / 100; - } else { - raw = *(u16 *)(D_8010EDEC + b * 12) - sub; - } - } else { - raw = *(u16 *)(D_8010F468 - 0x67C + b * 12); - } - - q = ((s32 (*)(s16, s32))func_801783D0)(raw, 0); - RENDER_QTY(&D_801E704F[i * 36], q, 0x82, cnt, k, d) - - i++; - } while (i < count); - } - - /* ---- phase 4: side-table lookup + conditional strcpy ---- */ - { - u8 sel = D_801E77B0[D_8011514A]; - - table2 = D_801E3D40[sel]; - descCount = D_801E3D38[sel]; - D_801E76FC = table2; - D_8011515E = descCount | 0x100; - - if (D_80115126 == 0) { - if (func_800D0F8C(0xA) != 0) { - strcpy(D_801E70B4, D_801B8F0C); - } - } - } - - /* ---- phase 5 (mode 3): second builder + the 64-entry filter ---- */ - if (D_80115126 == 3) { - i = 0; - if (descCount != 0) { - do { - register s32 zr __asm__("$0"); - s32 id; - - b = table2[i]; - s = *(u8 **)(D_8010F468 + b * 8); - d = &D_801E7274[i * 36]; - COPY2(d, s) - - id = b + zr; - cnt = (u8)func_800291B4(id + 0x62); - if ((cnt & 0x80) != 0) { - if ((cnt & 0x40) == 0) { - u16 q = ((s32 (*)(s16, s32))func_801783D0)(D_800A6586[id], 0); - RENDER_QTY(&D_801E728F[i * 36], q, 0x82, cnt, k, d) - } else { - strcpy(&D_801E728A[i * 36], D_801B8F0C + 2); - } - } else { - strcpy(&D_801E7274[i * 36], D_801B8F10[0]); - } - - i++; - } while (i < descCount); - } - - if (D_8011511A != 1 && D_8011511A != 2) { - i = 0; - cnt = 0; - - for (; i < 0x40; i++) { - if ((func_800291B4(i + 0x63) & 0x40) != 0) { - D_801E77B8[cnt++] = i; - } - } - - D_8011515C = cnt | 0x100; - if (D_8011514C >= cnt) { - if (cnt != 0) { - D_8011514C = cnt - 1; - } else { - D_8011514C = 0; - } - } - } - } - - /* ---- phase 6 (mode 4): 6-entry name/description assembly ---- */ - if (D_80115126 == 4) { - i = 0; - do { - s32 *p; - - s = D_801B8F14[i]; - d = &D_801E74B8[i * 36]; - d[0] = s[0]; - d[1] = s[1]; - - d = &D_801E74B8[i * 36 + 4]; - p = ((s32 *)D_801E7774)[i]; - if (p != 0) { - s = (u8 *)D_801B8E84[p[2]]; - - COPY2(d, s) - } else { - strcpy(&D_801E74B8[i * 36 + 0x16], (char *)D_801B8F14[i + 6]); - } - - i++; - } while (i < 6); - } - - /* ---- phase 7 (mode 5): 6-entry variant ---- */ - if (D_80115126 == 5) { - i = 0; - do { - s32 *p; - - d = &D_801E74B4[i * 36]; - if (i == 0) { - s = (u8 *)D_801B8F44; - } else { - s = (u8 *)D_801B8F10[i]; - d += 8; - } - - COPY2(d, s) - - p = ((s32 *)D_801E7774)[i]; - if (p != 0) { - strcpy(&D_801E74C0[i * 36], D_801B8E84[p[2]]); - } - - i++; - } while (i < 6); - } -} - - - - - -void func_801877B0(void) { - - extern s32 D_801151D0; - extern s32 D_801151C8[]; - extern u16 xf02 __asm__("D_800B9A02"); - extern s16 xa __asm__("D_8011511A"); - extern u16 xb __asm__("D_8011511A"); - extern s32 func_8014168C(s32 a0); - extern u8 D_80115138[]; - extern s32 D_801E7700; - extern s32 D_80115130; - extern void func_80139954(void); - extern s32 func_801376E8(s32 a0, s32 a1); - extern s32 D_801B9410; - extern s32 D_801E7704; - extern void func_80137B80(void); - extern s32 func_80188428(void); - extern void func_80188778(void); - extern s32 func_80188E1C(s32 a0, s32 a1); - extern u8 D_800B9A15; - extern s16 D_801E7030; - extern u16 D_80115112; - - s32 pad[2]; - s32 v; - s32 r2; - s32 ret; - s16 rn; - s32 b; - s32 *p30; - u16 *p12; - - D_801151D0 = ((s32 *)D_801151C8)[xf02]; - ret = func_80188428(); - func_80188778(); - r2 = func_8014168C(xa); - b = D_80115138[xb]; - if (D_801E7700 == 0) { - v = func_80188E1C(b, (s16)r2); - } else { - v = D_801E7700; - } - if (v != 0) { - p30 = &D_80115130; - if (v != *p30) { - *p30 = v; - func_80139954(); - D_801E7704 = func_801376E8(v, &D_801B9410); - } - } - func_80137B80(); - rn = ret; - if (rn < 0) { - func_80139954(); - D_800B9A15 = 0; - if (D_801E7030 == 0) { - func_8002D4C8(0x474, 0); - } - p12 = &D_80115112; - *p12 += 2; - } -} - - - diff --git a/src/ov_SC04_019/ov_SC04_019_jr_801878E8.c b/src/ov_SC04_019/ov_SC04_019_jr_801878E8.c deleted file mode 100644 index d4d4e6dc7..000000000 --- a/src/ov_SC04_019/ov_SC04_019_jr_801878E8.c +++ /dev/null @@ -1,3962 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8; -typedef void (*Handler)(struct Entry_8016E95C *); -extern void func_801458E0(void); -extern s32 D_800AE6AC; -extern s32 D_800AE6B0; -extern u8 D_80078E50; -extern void func_800D185C(u8 *a0); -extern void func_801458E8(void); -extern s32 func_80029504(void); -extern void func_80145B24(void); -extern u8 D_8018F74C; -extern u8 D_8018F6BC; -extern u8 D_8018F698; -extern u8 D_8018F674; -extern u8 D_8018F728; -extern u8 D_8018F704; -extern u8 D_8018F6E0; -extern u8 D_8018F650; -extern void func_80145934(void); -extern u8 D_8018F7DC; -extern u8 D_8018F7B8; -extern u8 D_8018F794; -extern u8 D_8018F770; -extern void func_80145A2C(void); -extern s32 func_800291DC(s32); -extern void func_800291C8(s32, s32); -extern void func_80162120(void); -extern void func_80029124(s32, s32); -extern s32 func_80165A50(s32); -extern void func_80029514(s32); -extern u8 D_80078EC0; -extern s32 func_80028FBC(void); -extern s32 func_80029000(void); -extern s32 func_80028D9C(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_80145BF8(void); -extern s32 func_800291B4(s32 arg); -extern void func_800291A0(s32, s32); -extern void func_80145C54(void); -extern s32 func_80145CEC(); -extern s32 func_80029178(s32 arg); -extern void func_80146014(s32 a0); -extern unsigned char D_8018EBD4[]; -extern unsigned char D_8018EC04[]; -extern unsigned char D_8018EC54[]; -extern unsigned char D_8018EC84[]; -extern unsigned char D_8018ECB4[]; -extern void func_80145EE8(s32 param_1); -extern void MoveImage(void *a0, s32 a1, s32 a2); -extern void func_80146074(void); -extern s32 func_80146128(void); -extern void func_80146360(void); -extern void func_801463A0(); -extern void func_8014607C(void); -extern s32 *D_80126B78; -extern u8 D_80078EC1; -extern s32 D_80078EC8; -extern s32 D_80126B9C; -extern s32 D_8011F730; -extern u16 D_801152B8; -extern u16 D_8012693A; -extern u8 D_80126BE0[]; -extern u8 D_801150F0[]; -extern void *memcpy(void *dst, const void *src, u32 n); -extern void func_80146FC4(s32 a0); -extern void func_80150A70(s32 a0); -extern void func_80147098(s32 *a0); -extern void func_8014A638(s32 arg0); -extern s32 func_80155458(s32 a0); -extern s32 func_80029104(void); -extern void func_80029344(void); -extern void func_8014ADE0(s32 a0); -extern void func_8014B350(s32 a0); -extern void func_8014B7A4(s16 *param_1); -extern s32 func_80161D58(s32 a0); -extern void func_80161A90(s32 a0); -extern void func_8014B504(u16 *a0); -extern void func_80149BEC(s32 a0); -extern void func_8014B5D0(s32 *a0); -extern void func_8014C99C(u8 *a0); -extern void func_8014B190(s32 s0); -extern void func_80148648(s32 a0, s32 a1); -extern s32 func_80149228(s32 a0); -extern void func_8014A59C(s32 a0); -extern void func_8016F14C(void *a0); -extern void func_80154418(void *a0); -extern void func_80154BE4(s32 a0); -extern void func_80165694(s32 arg0); -extern void func_801654A8(s32 a0); -extern void func_8014A680(s32 a0); -extern void func_8014A6A8(s32 a0); -extern void func_8014A71C(s32 a0); -extern void func_80172588(s32 *a0); -extern void func_801473DC(s32 *a0); -extern void func_80015978(s32 a0, s32 *a1); -extern void (*D_8018ED04[])(void *); -extern u8 D_80126BA4; -extern s32 D_80127098; -extern s32 D_80127094; -extern s32 D_80127090; -extern void func_80146534(void); -extern void func_8001D074(s32 a0, s32 a1); -extern void func_80146554(void); -extern void func_80146578(void); -extern void func_8001CFDC(s32, s32); -extern void func_8014659C(void); -extern void func_8001D074(s32, s32); -extern void func_801465C0(void); -extern void func_801465E4(void); -extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); -extern s32 D_8011F9D0; -extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); -extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 D_8011F750; -extern s32 D_8011F754; -extern u8 * func_801468C8(s32 arg0, u8 arg1); -extern s32 D_8011D030; -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); -extern s32 func_80146B9C(void *a0); -extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); -extern u16 D_8011DA28; -extern s32 func_80146B9C(void * arg0); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80146CA0(void *a0); -extern void func_80146CB4(void *a0); -extern void func_80146CC8(s32 a0); -extern void func_80146D30(s32 a0); -extern void func_80146D80(s32 *a0); -extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80146D90(s32 a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); -extern void func_80146E90(s32 *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80015954(s32 a0, s32 a1); -extern void func_80149374(s32 a0, s32 a1); -extern void func_80146F58(s32 a0, s32 a1); -extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 func_8012A68C(void); -extern s16 func_8012A758(void); -extern void func_8004978C(s16 *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern u8 D_80126DB0[]; -extern u16 D_80126DB6; -extern void func_8014704C(s32 *a0); -extern s32 func_80147054(void *a0); -extern void func_80147060(u8 * a0); -extern void func_8014706C(void *arg0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80147084(s32 *a0); -extern void func_8014708C(void *arg0); -extern s32 func_801470A0(void *a0); -extern void func_801470AC(s32 *a0); -extern void func_801470B4(s32 arg0); -extern void func_801470C0(s32 a0); -extern void func_80147118(s32 a0); -extern s16 D_80126BB8; -extern s16 D_80126BBA; -extern s16 D_80126BBC; -extern void func_80147264(s32 a0); -extern void func_80147290(void); -extern void func_801472B4(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void *D_8012707C; -extern void func_801472DC(void); -extern void func_801472F0(void *a0); -extern void func_80147364(u16, s32); -extern void func_80147300(u16 arg0); -extern void func_80147324(s32 arg0); -extern void func_801473EC(s32 *a0); -extern void func_80147460(s32 a0); -extern void func_80147514(); -extern void func_80147628(s32 a0); -extern void func_80147478(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); -extern s32 func_800129CC(s32 a0, s32 a1); -extern void func_80147514(s32 arg0); -extern void func_80013F3C(s32 a0); -extern void func_80012558(s32 a0, s32 a1); -extern void func_800126C4(s32 a0, s32 a1); -extern void func_800123F0(s32 a0, s32 a1); -extern void func_80147718(s32 a0); -extern void func_80147788(void *a0, s32 a1); -extern void func_801477A8(void *a0, s32 a1); -extern void func_801477C8(void *a0, s32 a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80147814(s32 a0, s32 a1); -extern void func_80147928(int a0, int a1); -extern void func_8014799C(int a0, int a1); -extern void func_80147A10(int a0, int a1); -extern void func_80147860(int a0, int a1, int a2, int a3); -extern void func_80147948(s32 a0, s32 a1, s32 a2); -extern void func_801479BC(s32 a0, s32 a1, s32 a2); -extern void func_80147A30(s32 a0, s32 a1, s32 a2); -extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147948(int a0, int a1, int a2); -extern void func_801479BC(int a0, int a1, int a2); -extern void func_80147A30(int a0, int a1, int a2); -extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147A84(s32 arg0); -extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147AAC(s32 arg0); -extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80147B5C(s32 a0, void *a1); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern void func_80147B18(s32 a0); -extern void func_80147B5C(s32 arg0, void *arg1); -extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147DC0(s32 a0, s32 a1); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147F50(s32 arg0); -extern void func_80148038(s32 a0, s32 a1); -extern s32 ratan2(s32 a0, s32 a1); -extern s32 csqrt(s32 a0); -extern s32 func_80012A60(s32 a0, s32 a1); -extern void func_80148094(int param_1, short *param_2, int *param_3); -extern void func_801485B8(s32 a0, s32 a1, s32 a2); -extern void func_801484B0(s32 a0, s32 a1); -extern s32 func_80154358(void *a0); -extern void func_801484E8(s32 a0, s32 a1); -extern void func_80148534(s32 a0, s32 a1); -extern void func_8014856C(s32 a0, s32 a1); -extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); -extern void func_80148634(void *a0); -extern u8 D_800B9A64; -extern s32 func_80014DC0(); -extern s32 func_80014D68(); -extern s32 func_80014D94(); -extern s32 func_80014CF8(); -extern void func_800120DC(); -extern s32 func_800CF8B4(); -extern u16 func_801487F4(s32 *a0); -extern u16 func_80148800(s32 *a0); -extern u8 func_8014880C(s32 *a0); -extern u16 func_80148818(s32 *a0); -extern s32 func_80047D3C(s32 a0); -extern s32 func_80148824(void *arg0); -extern s32 func_801488A8(u8 *a0); -extern s32 func_8014891C(s32 a0); -extern s32 func_80148980(u8 *a0); -extern s32 func_801489E8(s32 a0); -extern s32 func_80148A48(s32 a0); -extern int func_80148AFC(void *a0); -extern void func_80148AAC(u8 *a0); -extern s32 func_80148C18(void); -extern s32 func_80148C20(s32 a0, s16 a1); -extern s32 func_80148C34(s32 a0, s32 a1); -extern s32 func_80148C4C(s32 a0, s32 a1); -extern s32 func_80148C64(s32 a0, s32 a1); -extern s32 func_80148C7C(void); -extern s32 func_80148C84(s32 a0, s32 a1); -extern s32 func_80148C9C(s32 a0, s32 a1); -extern s32 func_80148CB4(s32 a0, s32 a1); -extern s32 func_80148CCC(s32 a0, s32 a1); -extern s32 func_80148CE4(void); -extern s32 func_80148CEC(void); -extern s32 func_80148CF4(s32 a0, s32 a1); -extern s32 func_80148D0C(s32 a0, s32 a1); -extern s32 func_80148D24(void *a0, int a1); -extern s32 func_80148D3C(void); -extern s32 func_80148F60(void); -extern s32 func_80148F68(s32 a0); -extern s32 func_80148F74(s32 a0); -extern s32 func_80148F80(s32 a0); -extern s32 func_80148F8C(s32 a0); -extern s32 func_80148F98(void); -extern s32 func_80148FA0(s32 a0); -extern s32 func_80148FAC(s32 a0); -extern s32 func_80148FB8(s32 a0); -extern s32 func_80148FC4(s32 a0); -extern s32 func_80148FD0(void); -extern s32 func_80148FD8(void); -extern s32 func_80148FE0(s32 a0); -extern s32 func_80148FEC(s32 a0); -extern s32 func_80148FF8(s32 a0); -extern s32 func_80149004(void); -extern void func_8014900C(s32 *a0); -extern void func_80149020(s32 *a0); -extern void func_80149034(s32 *a0); -extern void func_80149048(s32 *a0); -extern void func_8014905C(u8 *a0); -extern void func_801490E0(s32 *a0, s16 a1); -extern void func_801490E8(s32 *a0, s16 a1); -extern void func_801490F0(s32 *a0, s16 a1); -extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); -extern void func_801490F8(s32 a0, s32 a1); -extern s32 func_801491C4(s32 a0); -extern s32 func_80149184(s32 a0); -extern void func_80149204(s32 *a0); -extern void func_80149210(s32 a0, s32 a1); -extern s32 func_80149284(s32 *a0, s32 a1); -extern void func_80149350(s32 arg0); -extern void func_80149290(s32 a0); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_80149374(s32 arg0, s32 arg1); -extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8014942C(s32 arg0); -extern void func_8012EF70(s32 a0, s32 a1); -extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012EFB8(s32 a0); -extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); -extern void func_8014964C(s32 param_1, s32 param_2); -extern s32 func_801496D4(void *a0); -extern void func_8015AD08(); -extern void func_80149704(void); -extern void func_8015ACC4(); -extern void func_80149724(void); -extern u8 D_80078EBF; -extern s32 func_80149744(struct S_80149744 *a0); -extern void func_8015F7A0(); -extern void func_80149788(void); -extern void func_801653B8(); -extern void func_80149864(void); -extern s16 currentLocationId; -extern s32 func_8016F1AC(void); -extern s32 func_80149884(void); -extern void func_80160B00(); -extern void func_801498C0(void); -extern s32 func_80149AA8(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern void func_80146750(void *a0); -extern s32 func_801498E0(s32 *a0); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_80147364(u16 a0, s32 a1); -extern s32 func_800CCF28(s32 a0); -extern u8 D_80126B5C; -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_8015DAC4(s32 *a0); -extern void func_8015554C(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern void func_80149B14(s32 *a0); -extern u8 func_8014BEF8(void); -extern s32 func_80149B54(s32 * arg0); -extern void func_8015DE24(s32 *a0); -extern void func_80157510(s32 *a0); -extern void func_80149BAC(s32 *a0); -extern s32 func_80029178(s32 a0); -extern s32 func_80149C08(s32 arg0); -extern void func_801577C8(); -extern void func_80149C94(void); -extern void func_80157D20(void); -extern void func_80149CB4(void); -extern s32 func_80149CD4(s32 a0); -extern u8 func_8014B5B8(s32 *a0); -extern s32 func_80149D10(s32 a0); -extern s32 func_80149E94(s32 a0); -extern s32 func_80149DD8(s32 a0); -extern s32 func_80149D9C(s32 a0); -extern s32 func_80149F2C(s32 a0, s32 a1); -extern s32 func_80149E94(s32 arg0); -extern void func_80149FA8(void); -extern s32 D_8018EDCC[]; -extern s32 func_80149FB0(s32 a0); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern void func_8014A1B0(s32 a0, s32 a1); -extern s32 func_8014A048(s32 param_1); -extern u16 func_80156370(u16 a0); -extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); -extern void func_8015D4B4(); -extern void func_8014A218(void); -extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); -extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); -extern s32 func_8014A238(s32 arg0); -extern s32 func_8014A2E4(s32 a0); -extern void func_8014A380(s32 a0, s32 a1); -extern s16 D_801152B0; -extern s16 D_801152B4; -extern s32 func_8014A3E0(struct S_8014A3E0 *a0); -extern s32 func_8014A454(s32 a0); -extern s32 func_8014A4B4(void *a0); -extern void func_8015EDD4(); -extern void func_8014A4FC(void); -extern s32 func_8014A674(s32 *a0); -extern s32 func_8014A69C(s32 *a0); -extern s32 func_8014A6C4(s32 a0); -extern void func_8015E184(); -extern void func_8014A830(void); -extern s32 func_80029AF4(void); -extern s32 func_8014A850(s32 param_1); -extern void func_8014AA04(s32 a0); -extern void func_801599A4(void *a0); -extern void func_80159B3C(void *a0); -extern s32 func_80165A20(s32 a0); -extern void func_8014AB7C(); -extern void func_8014AC10(); -extern void func_8014AA28(void); -extern void func_8014AB5C(void); -extern void func_80162CCC(void); -extern void func_8014AB7C(s32 arg0); -extern void func_8014ABF0(void); -extern void func_80016714(void *a0, s32 a1); -extern void func_8014AC10(s32 arg0); -extern void func_8014ACC0(s32 a0, s32 a1); -extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); -extern void func_8014ACE8(void *a0, s32 a1, s32 a2); -extern void func_80146AFC(void *a0); -extern void func_8014ADA8(s32 a0, s32 a1); -extern void func_8014AD7C(s32 a0); -extern s32 D_80078E8C; -extern void func_8014B034(s32 arg0); -extern void func_8014B00C(s32 arg0); -extern void func_8014B084(void); -extern s16 D_80078E90; -extern void func_8014B034(s32 a0); -extern u8 D_80078EBA; -extern void func_800D10EC(void); -extern void func_8002AC98(void); -extern s32 func_8014B154(s32 *a0); -extern void func_8014B12C(void); -extern void func_8014B2F8(void); -extern void func_8014B4C4(void); -extern void func_8014B160(s32 a0); -extern s32 func_8016F1C4(void); -extern s16 D_80078E96; -extern s16 D_80078EB8; -extern u16 D_80078EA6; -extern void func_8014B2A8(void); -extern void func_8014B310(void); -extern void func_8014B2D0(void); -extern s32 D_80078E94; -extern s32 D_80078ECC; -extern void func_8014B33C(void); -extern u8 D_80062BF4[]; -extern void func_8014BC80(s32 a0, s32 a1); -extern void func_80019064(void *a0); -extern s32 D_80078E98; -extern void func_80166244(); -extern void func_8014B4D4(void *a0); -extern s16 D_80078E9A; -extern u8 D_80126D1C; -extern s32 D_80126D74; -extern void func_8014B598(s32 a0, s32 a1); -extern void func_8014B5B0(s32 *a0); -extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); -extern void func_8014B5D8(s32 s1); -extern s32 D_80078E9C; -extern s32 D_80078ED0; -extern void func_8014B6F0(s32 a0, s32 a1); -extern void func_8014B768(s32 a0, s32 a1); -extern void func_8014B944(s32 a0, s32 a1, s32 a2); -extern s32 D_80078EA4; -extern u16 D_80078EB2; -extern s16 D_80078EB4; -extern void func_8014BB0C(void); -extern void func_8014BB24(s32 a0, s32 a1, s32 a2); -extern void func_8014BC0C(s32 a0, s32 a1); -extern void func_8014BC44(s32 a0, s32 a1); -extern u8 D_800B9A17; -extern void func_8014BCC0(s32 a0, s32 a1); -extern u16 D_80078EB6; -extern s32 func_8014BCEC(s32 a0, s32 a1); -extern void func_8014BD24(s32 a0, s32 a1); -extern void func_8014BD60(s32 param_1, s32 param_2); -extern void func_8014BD98(s32 a0, u16 a1); -extern void func_8014BDC8(void); -extern void func_8014BDE0(void); -extern s32 func_8017267C(s32 *a0); -extern s32 func_80013294(void *a0, void *a1); -extern void func_80029ED4(s32 a0); -extern void func_8014BDE8(s32 a0); -extern void func_8014BE78(void); -extern void func_8014BE9C(void); -extern void func_80029124(s32 a0, s32 a1); -extern void func_8014BEC0(void); -extern void func_8014BF18(s32 a0); -extern void func_8014BF48(void); -extern u8 func_8014BF6C(void); -extern void func_8014BF8C(u8 arg0); -extern void func_8014BFB0(void); -extern u8 func_8014BFD4(void); -extern void func_8014BFF4(s32 a0, s32 a1); -extern void func_8014C010(s32 a0, s32 a1); -extern s32 func_8014C050(s32 a0, s32 a1); -extern s32 func_8014C088(s32 a0, s32 a1); -extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); -extern s32 func_8014C118(void * a0, s32 a1, s32 a2); -extern s32 func_8014C168(s32 * param_1, s32 param_2); -extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); -extern u8 D_8018EE54[]; -extern void func_8014C1A0(s32 arg0, s32 arg1); -extern s32 func_80013328(s32 a0, s32 a1); -extern s32 func_8014C59C(void *a0, void *a1); -extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); -extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); -extern s32 ratan2(s32 dx, s32 dy); -extern u8 D_8018EE5C; -extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); -extern s16 func_8014C5D0(s32 a0, s32 a1); -extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); -extern u8 D_80126D17; -extern void func_8014C6AC(void); -extern void func_8014C6C0(void); -extern u8 D_80126D1E; -extern void func_8014C6D0(void); -extern void func_8014C6E0(void); -extern s32 func_8014C860(s32 a0, s32 a1); -extern void func_8014C8C8(s32 a0, s32 *a1); -extern void func_8014C88C(s32 a0); -extern void func_8014C8C8(s32 dst, s32 * src); -extern void func_8014C8F0(s32 arg0); -extern u8 D_801151F0[]; -extern s32 func_8014C918(s32 a0, s32 a1); -extern s32 D_80126B50; -extern void func_8014C968(void); -extern void func_8014C978(void); -extern s32 func_8014C98C(void); -extern void func_80139914(s32 a0); -extern s32 func_8014CA00(s32 a0); -extern u16 func_8014CA70(s32 a0, s32 a1); -extern s32 func_8014CA14(s32 a0, s32 a1); -extern u16 func_8014CAE4(s32 *a0, s32 a1); -extern s32 func_8014CA88(s32 *a0, s32 a1); -extern s32 func_8014CAFC(void); -extern s32 func_8014CB0C(void); -extern s32 func_8014CB1C(void); -extern u8 D_80126D1F; -extern s32 func_8014CB2C(void); -extern s32 func_8014CB58(void); -extern u8 D_80126D1D; -extern void func_8014CB68(void); -extern s32 func_8014CB7C(void); -extern s32 func_8014CB8C(void); -extern short D_80126C9E; -extern void func_8014CB9C(struct Packed8 *a0); -extern s32 D_80126CDC; -extern void func_8014CBD8(void); -extern s16 D_80126CC4; -extern void func_8014CBE8(void); -extern void func_8014CBF8(void *a0); -extern void func_8014D3E0(s32 a0); -extern void func_8014D04C(void); -extern void func_8014CCB4(void); -extern void func_8014CC28(s32 a0); -extern void func_8014CD0C(u8 *a0); -extern s32 func_8014CF04(s32 a0, s32 a1, void *a2); -extern void func_8014CD80(s32 a0, void *a1, void *a2); -extern void func_8014D0A4(s32 a0); -extern s32 func_8014D2A0(s32 a0, void *a1, void *a2); -extern s32 func_8014D12C(s32 a0, void *a1, void *a2); -extern void func_8014D438(s32 a0); -extern void func_8014D3E0(s32 _arg0); -extern void func_8014D610(s32 a0, void *a1, void *a2); -extern s32 func_8014D4C0(s32 a0, void *a1, void *a2); -extern void func_8014D790(s32 a0); -extern void func_8014D738(void); -extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); -extern s32 func_8014D820(s32 a0, u16 *a1, u16 *a2); -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); -extern void func_8014DF94(s32 arg0); -extern void func_8014DF3C(void); -extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ -extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ -extern s16 D_801152AC; -extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); -extern void func_8014E48C(s32 a0); -extern void func_8014E434(void); -extern void func_8014E5B4(s32 a0, void *a1, void *a2); -extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); -extern void func_8014E6F8(struct SubE6F8 *a0); -extern void func_8014E6A0(void); -extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); -extern void func_8014E934(s32 _arg0); -extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); -extern s32 func_8014E98C(void *a0); -extern u16 D_800B99DA; -extern s32 D_801150D8; -extern s16 D_801152AA; -extern u8 D_80126720[]; -extern s16 D_80126724; -extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); -extern s32 func_8014ED80(struct SubED80 *a0); -extern int D_801E5BA8; -extern void func_8014ED28(s32 _arg0); -extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F24C(struct SubF24C *a0); -extern void func_8014F1F4(void); -extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F4C0(); -extern s32 func_8014F468(void); -extern int func_8014F74C(); -extern int func_8014F6F4(void); -extern u8 D_800D3918[]; -extern u8 D_801152A8[]; -extern s32 D_801152BC; -extern int func_8014F74C(s32 arg0); -extern s32 func_8014FA70(s32 a0); -extern s32 D_801E5BAC; -extern void func_8014FA04(s32 a0); -extern s32 func_8014FBC0(); -extern s32 func_8014FC18(u8 *self); -extern int func_8014FD54(int param_1); -extern void func_8014FCFC(void); -extern void func_80150170(void *a0); -extern s32 func_8014FE60(void *a0); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_8014FE60(void *e); -extern s32 func_80134510(s32 arg); -extern s32 func_80150150(s32 a, s32 b); -extern s32 func_80150460(s32 a, s32 b); -extern void func_801504D8(u16 *a0); -extern s32 func_80150480(s32 _arg0); -extern s32 func_80150528(void *a0, void *a1, void *a2); -extern s32 func_80150528(void *arg0, void *arg1, void *arg2); -extern s32 func_801506A4(s32 a0, s32 a1); -extern s32 func_801505FC(s32 a0); -extern s32 func_801506A4(s32 arg0, s32 arg1); -extern void func_80150820(s32 a0, s32 a1); -extern void func_8015086C(int param_1); -extern s32 func_801508B4(s32 a0); -extern s32 func_8015094C(s32 a0); -extern short func_801508F8(s32 a0); -extern s32 D_8018EE8C; -extern s32 D_80126990; -extern s32 D_80126994; -extern s32 func_80021174(s32 a0, s32 a1); -extern s32 func_8015094C(s32 param_1); -extern void func_80150B9C(void); -extern s32 func_80151184(s32 a0, s32 a1, s32 a2); -extern s32 func_80150BA4(s32 a0); -extern s32 func_801619D0(void *a0); -extern void func_80150BC8(s32 *a0); -extern s32 func_80150480(s32 a0); -extern u16 D_800AE6DC; -extern void func_80150C48(s32 a0); -extern int func_80151184(int arg, int a1, int a2); -extern int func_80150CA0(int arg); -extern void func_80150EC4(s32 a, s32 b); -extern void func_80150CC4(s32 a); -extern void func_80150CE4(s32 a); -extern void func_80150D04(s32 a); -extern void func_80150D24(s32 a); -extern void func_80150D44(s32 a); -extern void func_80150D64(s32 a); -extern void func_80150D84(s32 a); -extern void func_80150DA4(s32 a); -extern void func_80150DC4(s32 a); -extern void func_80150DE4(s32 a); -extern void func_80150E04(s32 a); -extern void func_80150E24(s32 a); -extern void func_80150E44(s32 a); -extern void func_80150EC4(s32 a0, s32 a1); -extern void func_80150E64(s32 a0); -extern void func_80150E84(s32 a0); -extern void func_80150EA4(s32 a0); -extern u8 D_800AE6C0; -extern s16 D_800AE6C8; -extern s16 D_800AE6CA; -extern s16 D_800AE6CC; -extern s32 D_800AE6C4; -extern s16 D_800AE6CE; -extern u8 D_800AE6BE; -extern u8 D_801201F8[]; -extern void func_80150F78(void); -extern void func_80150F80(s32 a0); -extern int func_80150FB4(int arg); -extern void func_80150FD8(s32 a0); -extern int func_80151014(int arg); -extern void func_80151038(s32 a0); -extern int func_80151070(int arg); -extern int func_80151094(int arg); -extern void func_801510B8(void); -extern void func_801510C0(void); -extern int func_801510C8(int arg); -extern int func_801510EC(int arg); -extern s32 func_8012DB84(void); -extern s32 func_80151110(void); -extern void func_80151130(void); -extern int func_80151138(int arg); -extern void func_8015115C(s32 *a0, s16 a1); -extern s32 func_80151164(s32 a0, s32 a1); -extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); -extern void func_801511A8(u8 *a0); -extern void func_801511C4(u8 *a0); -extern int func_80151204(int arg, int a1); -extern int func_801511E0(int arg); -extern int func_80151204(int a0, int a1); -extern void func_80151238(void *a0); -extern void func_8015126C(u16 *p); -extern void func_80151780(s32 a0); -extern void func_801516F0(s32 *a0); -extern void func_8015173C(s32 *a0); -extern s16 D_8011DB1A; -extern s32 D_80127518; -extern s32 D_801151FC; -extern s32 func_801725CC(u8 *a0); -extern s32 func_80029D3C(void); -extern void func_80151878(void); -extern void func_80153B58(s32 *a0); -extern s32 func_80151880(s32 a0); -extern s32 func_801518D8(s32 a0); -extern s32 func_80151944(void); -extern s32 func_80151924(void); -extern void func_8014E934(s32 a0); -extern s32 func_8014F3E8(s32 a0); -extern void func_801519C8(s32 a0); -extern void func_80151980(s32 a0); -extern M2C_UNK D_800D5880; -extern s32 D_800D58AC; -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801519C8(s32 arg0); -extern void func_80151C54(s32 a0); -extern void func_801542DC(s32 *a0, s32 a1); -extern void func_8015BDD0(s32 *a0); -extern void func_80165718(s32 a0); -extern u8 D_800D46E4[]; -extern void func_80151AE4(s32 arg0); -extern void (*D_8018EF34[])(void); -extern void func_80151D24(void *a0); -extern void func_80151DB0(s32 a0); -extern void func_80151D60(void *a0); -extern s32 func_80172630(u8 *a0); -extern s32 D_80062C14; -extern void func_80151DB0(s32 param_1); -extern void func_80151E78(s32 *a0); -extern void func_80151ECC(struct S80151ECC *a0); -extern void func_80151FB4(s32 a0); -extern void func_80151F38(s32 *a0); -extern void func_801553C0(s32 a0); -extern void func_80153C18(); -extern void (*D_8018EF58[])(void); -extern void func_80152058(void *a0); -extern void func_801520DC(s32 a0); -extern void func_80152094(s32 a0); -extern void func_80147324(s32 a0); -extern u8 D_80062C04[]; -extern M2C_UNK D_8018EF48; -extern void func_801520DC(s32 arg0); -extern void func_801470B4(s32 a0); -extern void func_8015369C(s32 a0); -extern void func_80152194(s32 *a0); -extern s32 func_801536DC(s32 a0); -extern void func_8015220C(s32 a0); -extern s32 func_80153800(s32 a0); -extern void func_801522CC(s32 a0); -extern void func_80152254(s32 *a0); -extern void (*D_8018EF6C[])(void); -extern void func_80152370(void *a0); -extern void func_801523F4(s32 a0); -extern void func_801523AC(s32 a0); -extern void func_8001382C(s32 a0, void *a1, void *a2); -extern u8 D_8018EF78[]; -extern void func_801523F4(s32 arg0); -extern void func_801525F4(int); -extern s32 func_801535F4(void *arg0); -extern void func_8015BF48(s32 *a0); -extern void func_80152500(int param_1); -extern void func_801525F4(s32 a0); -extern void (*D_8018EF88[])(void); -extern void func_80152698(void *a0); -extern void func_80152714(s32 a0); -extern void func_801526D4(s32 a0); -extern void func_80152790(s32 a0); -extern void (*D_8018EFA0[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018EF90; -extern void func_801528B0(s32 arg0); -extern void func_8015294C(s32 a0); -extern void func_80152A08(s32 a0); -extern void func_80152AC8(s32 a0); -extern void func_80152A50(s32 *a0); -extern void (*D_8018EFB4[])(void); -extern void func_80152B6C(void *a0); -extern void func_80152BF0(s32 a0); -extern void func_80152BA8(s32 a0); -extern void func_80152C80(s32 *a0); -extern void func_80152C40(s32 *a0); -extern void (*D_8018EFD0[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018EFC0; -extern void func_80152DA8(s32 arg0); -extern void func_80152E4C(s32 a0); -extern void func_80152EFC(s32 a0); -extern void func_80152FBC(s32 a0); -extern void func_80152F44(s32 *a0); -extern void (*D_8018EFE4[])(void); -extern void func_80153060(void *a0); -extern void func_801530E4(s32 a0); -extern void func_8015309C(s32 a0); -extern void func_80155440(s32 *a0); -extern void func_801530E4(s32 arg0); -extern void func_80153150(struct S80153150 *a0); -extern void func_801531BC(s32 a0); -extern void func_8015327C(s32 a0); -extern void func_80153204(s32 *a0); -extern void (*D_8018EFF8[])(void); -extern void func_80153320(void *a0); -extern void func_801533A4(s32 a0); -extern void func_8015335C(s32 a0); -extern void func_80153410(s32 *a0); -extern void func_80153490(s32 a0); -extern void func_80153550(s32 a0); -extern void func_801534D8(s32 *a0); -extern void (*D_8011DB28)(s32 a0); -extern s32 func_801536DC(s32 param_1); -extern void func_800139C8(s32 a0, void *a1, void *a2); -extern s32 func_80153978(s32 a0, u16 *src); -extern s32 func_80133784(s32 a0, void *src, s32 dst); -extern s32 func_801539F8(s32 a0, void *a1); -extern s32 func_801539F8(s32 a0, void * a1); -extern s32 func_8016DA04(s32 a0); -extern s32 func_80153BD8(s32 a0); -extern s32 func_80153BF0(s32 a0); -extern void func_80153C18(void); -extern u16 D_8011F748; -extern void func_80153C30(void); -extern void func_80153C74(s16 a0, s16 a1); -extern s16 D_8011DB18; -extern void func_80153C44(int a0, int a1, s16 a2); -extern s16 D_8011DB0C; -extern s32 D_80115210; -extern void func_80153C8C(void); -extern void func_80153C9C(void); -extern s32 func_80153CBC(void); -extern s32 D_8018F00C; -extern void (*D_8018F034[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018F014; -extern void func_80153D7C(s32 param_1); -extern void func_8015410C(void); -extern void func_80153E00(s32 param_1); -extern void func_80151664(void); -extern void func_80154134(u8 *a0); -extern void func_80154190(u8 *a0, s32 a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154218(u8 *a0, s32 a1, s32 a2); -extern void func_801541D8(u8 *a0, s32 a1, s32 a2); -extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); -extern void func_801542A4(); -extern void func_801542A4(s32 *a0, s32 a1); -extern void func_8015430C(); -extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); -extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); -extern s32 func_80154358(void * arg0); -extern void func_80154AB4(s32 a0, s32 a1); -extern void func_80154B20(s32 a0, s32 a1, s32 a2); -extern void func_80154AE0(s32 a0, s32 a1, s32 a2); -extern void func_80154B7C(u8 *a0, s32 a1); -extern void func_80154B4C(u8 *a0, s32 a1); -extern void func_80154BC8(void *a0, s32 a1, s32 a2); -extern void func_80154B98(void *a0, s32 a1, s32 a2); -extern u8 D_800D8D10[]; -extern s16 D_80078E9E; -extern void func_801550FC(s32 a0); -extern void func_80154ED8(s32 a0, s32 a1); -extern void func_80154F9C(s32 a0); -extern void func_800183E0(s32 a0); -extern void func_801550FC(s32 arg0); -extern void func_8001D150(s32, s32); -extern void func_8001D130(int, int); -extern void func_80155150(int param_1); -extern s32 D_800DE2A4[]; -extern void func_801552F4(s32 a0); -extern void func_80155344(s32 a0); -extern s32 func_80155394(s32 *a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80029178(s32); -extern int (*D_8018F080[])(void); -extern s32 func_80155458(s32 param_1); -extern s32 func_801659DC(u8 *a0); -extern s32 func_801554B8(void *arg0); -extern void func_801555F4(void *a0); -extern void func_80155518(s32 *a0); -extern void func_80155580(void *a0); -extern void (*D_8018F084[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern s32 func_80029B4C(s32 a0, s32 a1); -extern s32 func_80029BC8(s32 a0, s32 a1); -extern s32 func_80029C44(s32 a0, s32 a1); -extern s32 func_8015640C(s32 a0, s32 a1); -extern s32 rand(void); -extern u32 func_8015616C(s32 param_1, u16 param_2); -extern u16 func_80156370(u16 param_1); -extern s32 func_801564B0(s32 a0); -extern s32 func_8002A1B4(void); -extern s32 func_8002A400(void); -extern s32 func_8002A670(void); -extern s32 func_8002A8E0(void); -extern s32 D_801151E0[]; -extern s32 func_801565C0(void); -extern void func_80156A14(s32 *a0); -extern void func_80156648(s32 *a0); -extern u8 D_8011DAD8[]; -extern s32 func_8014C568(s16 *a0, s16 *a1); -extern void func_801567BC(s32 a0); -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018F4E8[]; -extern void func_80156A1C(s32 param_1, s32 param_2); -extern s32 D_801150E0[]; -extern void func_80156A88(s32 a0, s32 a1); -extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); -extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); -extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); -extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern s32 func_80135004(s32 a0, void *a1, s32 a2); -extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801575E4(void *a0); -extern void func_801574DC(s32 *a0); -extern void func_80157544(void *a0); -extern void (*D_8018F4F8[])(void); -extern void func_8014CC28(s32 a0); /* defined */ -extern s32 func_8014F3E8(s32 a0); /* declared */ -extern void func_8015BDD0(s32 *a0); /* defined */ -extern void func_801575E4(void *a0); /* defined */ -extern void func_80157580(s32 arg0); -extern u8 D_800D4F14[]; -extern void func_801576A8(void *arg0); -extern s32 func_8015773C(u8 *a0); -extern s32 func_8015771C(u8 *a0); -extern s32 func_8015773C(u8 * arg0); -extern int D_801E5BE0; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018F520[])(void); -extern void func_80157808(void *param_1); -extern void func_80157880(s32 a0); -extern s32 func_801725A4(u8 *a0); -extern u8 D_800D5128; -extern u8 D_8018F500; -extern void func_801578C0(s32 param_1); -extern void func_80147A84(int); -extern void func_80148038(int, int); -extern void func_80147460(int); -extern void func_80146D90(int); -extern void func_80161450(void *a0); -extern void func_80157A8C(int); -extern void func_80154A74(int, int); -extern unsigned char D_800D5178; -extern unsigned char D_8018F510; -extern void func_8015795C(int param_1); -extern void func_80161D20(s32 a0, s32 a1); -extern void func_80157A8C(s32 a0); -extern void func_8016706C(s32 a0); -extern u8 D_800D51AC[]; -extern void func_80157AC8(s32 param_1); -extern void func_80157B74(int param_1); -extern void func_8016158C(void *a0); -extern void func_8015BE04(s32 *a0); -extern void func_80157BC8(s32 a0); -extern void func_80157CCC(s32 a0); -extern void func_80157DC4(void *a0); -extern void func_80157FC4(void *a0); -extern void func_80157D74(u16 *a0); -extern void (*D_8018F560[])(void); -extern void func_80157E38(void *); -extern void func_80157E00(void *a0); -extern void func_80157E38(void * a0); -extern s32 func_80157F64(s32 *a0); -extern s32 func_80156600(void *a0); -extern void func_80157EA4(void *a0); -extern void (*D_8018F568[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018F534; -extern void func_80158038(void * param); -extern u8 D_800D524C[]; -extern void func_80161418(void *a0); -extern void func_801580B4(s32 a0); -extern void func_801581AC(s32 a0); -extern void (*D_8018F574[])(void); -extern void func_8015824C(void *a0); -extern void func_801582C0(void *); -extern void func_80158288(void *a0); -extern u8 D_800D52A8[]; -extern void func_801585A4(s32 *a0); -extern void func_801582C0(void *a0); -extern s32 func_801585AC(s32 *a0); -extern u8 D_800D52E8[]; -extern void func_80158344(s32 *a0); -extern s32 func_801615C4(void *a0, s32 a1); -extern u8 D_8018F544; -extern u8 D_800D533C; -extern void func_80158434(s32 param_1); -extern void func_80158548(s32 param_1); -extern void func_801585EC(u8 *a0); -extern void func_80158794(void); -extern s32 D_801E5BE8; -extern s32 D_801E5BF4; -extern s32 D_801E5BF8; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018F5B0[])(s32 *); -extern void func_80158AE4(void *a0); -extern void func_80158AB4(void *a0); -extern void func_8016F264(void); -extern void func_80165840(void); -extern void func_801658DC(void); -extern void func_80165A78(s32); -extern void func_80158AE4(void * a0); -extern M2C_UNK D_800D58D8; -extern void func_80158BB0(void *arg0); -extern s32 func_80159404(s32 a0, s32 a1); -extern void func_80158C40(s32 *a0); -extern void func_80158CD8(s32 *a0); -extern s32 func_80159434(s32 a0, s32 a1); -extern void func_80158D60(s32 a0); -extern M2C_UNK D_800D5904; -extern void func_80158E24(s32 *a0); -extern s32 D_8018F584[]; -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80158F00(int param_1); -extern u8 D_80110C3C[]; -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80158FA4(s32 param_1); -extern s32 func_801399F0(s32 a0); -extern u8 D_80110C94[]; -extern u8 D_80110CD4[]; -extern void func_80159070(void *a0); -extern s32 func_80029A94(s32); -extern void func_80175454(void); -extern void func_800298BC(void *); -extern void func_8002992C(s32); -extern void func_800CF804(void); -extern void func_800CF818(void); -extern u8 D_80110D0C[]; -extern void func_80159120(s32 a0); -extern void func_801592CC(s32 *a0); -extern u8 D_800AE6BD; -extern s32 D_801E5BF0; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018F800[])(void); -extern void func_80159698(void *a0); -extern s32 func_801596D4(void *a0); -extern void func_80174B6C(void); -extern void func_80129248(s16 a0); -extern void func_8013C938(void); -extern void func_8013CB20(void); -extern void func_8013C98C(void); -extern void func_8002850C(s32, s32, s32); -extern void func_80028620(s32, void *); -extern s16 D_800B9AAC[]; -extern s16 D_800B9B00; -extern u16 D_801270C0; -extern u32 D_800AFAE8[]; -extern char D_8018F620[]; -extern s32 func_801596F0(s32 param_1); -extern s32 func_80159874(void); -extern void func_800167B8(s32 a0); -extern s32 func_8015987C(s32 a0); -extern int func_800167F0(int arg); -extern int func_801598BC(void); -extern void func_80159968(void *a0); -extern void func_801598E0(u8 *a0); -extern void (*D_8018F8A4[])(void); -extern void func_80159A20(void *a0); -extern void func_801599E0(void *a0); -extern void func_80159A18(void); -extern void func_80159BE4(s32); -extern void func_80159B08(s32 *a0); -extern void func_80159B70(void *a0); -extern void func_80159B3C(void * a0); -extern void (*D_8018F9F8[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018F814; -extern void func_80159BE4(s32 arg0); -extern void func_8015A1C8(s32 a0); -extern void func_8015A2D8(s32); -extern void func_8015A1FC(s32 *a0); -extern void func_8015A264(void *a0); -extern void func_8015A230(s32 *a0); -extern void (*D_8018FA00[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018F824; -extern s32 func_80172608(u8 *a0); -extern void func_8015A2D8(s32 param_1); -extern u8 D_800D48DC; -extern s32 func_8015AB7C(s32 a0); -extern s32 D_8011F9C4; -extern s32 func_8015ABD4(s32 a0, s32 a1, s32 a2); -extern s32 func_80161CD0(s32 a0, s32 a1); -extern M2C_UNK D_8018F844; -extern void func_8015AC48(s32 arg0); -extern void func_8015AC90(s32 a0); -extern void func_8015ADB0(s32 a0); -extern void func_8015ACC4(s32 *arg0); -extern void func_8015AD3C(void *a0); -extern void func_8015AD08(void *arg0); -extern void (*D_8018FA08[])(void); -extern void func_8015ADB0(s32); -extern void func_8015AD78(s32 a0); -extern void func_8015ADB0(s32 arg0); -extern s32 D_800D4A9C; -extern int func_8015B6F4(int param_1); -extern u8 D_800D4F8C[]; -extern s32 func_8015B7B4(s32 a0); -extern u8 D_800D4BE0[]; -extern s32 func_8014A51C(void); -extern s32 func_8015B858(u8 *a0); -extern s32 D_800D4B48; -extern void func_8015B8F8(s32 *a0); -extern void func_8015BD8C(s32 *a0); -extern s32 func_8015BE94(); -extern void func_8015BE38(struct Obj *a0); -extern s32 func_8015BE74(void); -extern void func_80161124(void *a0); -extern s32 func_8015BE94(s32 *a0); -extern s32 func_8015AE2C(); -extern s32 func_8015BEC4(void); -extern s32 func_8015B950(s32 arg0); -extern s32 func_8015BEE4(void); -extern void func_8015BF04(s32 *a0); -extern void func_8015C0C4(s32 a0); -extern void func_8015BFF4(void *a0); -extern void func_8015BF7C(s32 *a0); -extern void func_8015C030(s32 *a0, s32 a1); -extern void func_8015BFB0(s32 *a0, s32 a1); -extern void (*D_8018FA30[])(void); -extern void func_8015C0C4(s32); -extern void func_8015C08C(s32 a0); -extern s32 func_8015C128(s32 param_1); -extern void func_8015C6A4(void); -extern void func_8015C788(s32 a0); -extern void func_8015C6AC(s32 *a0); -extern void func_8015C714(void *a0); -extern void func_8015C6E0(s32 *a0); -extern void (*D_8018FA3C[])(void); -extern void func_8015C788(s32); -extern void func_8015C750(s32 a0); -extern void func_8015CB94(s32 a0); -extern void func_8015CBCC(void); -extern void func_8015CBD4(void); -extern void func_8015CBDC(void); -extern void func_8015CBE4(void); -extern void func_8015CBEC(void); -extern void func_8015CBF4(void); -extern void func_8015CBFC(void); -extern void func_8015CC04(void); -extern void func_8015CC0C(s32 *param_1); -extern void func_8015CC74(s32 *a0); -extern void func_8015CC40(s32 *a0); -extern s32 func_8015CCD0(); -extern s32 func_8015CCB0(void); -extern s32 func_801725E0(u8 *a0); -extern s32 func_8015CCD0(s32 param_1); -extern s32 func_8015CD20(s32 arg0); -extern void func_8015CF24(s32 a0); -extern void func_8015D01C(); -extern void func_8015CF58(s32 *param_1); -extern void func_8015CFC0(s32 *a0); -extern void func_8015CF8C(s32 *a0); -extern void func_8015CFFC(void); -extern void func_8015D01C(int param_1); -extern void (*D_8018F8B0[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018FAE0; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018EBC4[]; -extern void func_8015D414(int param_1); -extern void func_8015D57C(s32); -extern void func_8015D480(s32 *a0); -extern s32 func_8015D4E8(s16 *a0); -extern void func_8015D4B4(s16 *a0); -extern void func_8015D524(s32 arg0); -extern void func_8015D544(s32 a0); -extern void func_801746DC(void); -extern void func_8015D57C(s32 arg0); -extern s32 func_80161B18(void *a0); -extern s32 func_80161B84(void *a0); -extern void func_80154150(int, int); -extern void func_80149374(int, int); -extern unsigned char D_8018FAF4[]; -extern void func_8015D5E8(int param_1); -extern int func_8015E0D4(int); -extern void func_8015DA5C(s32 a0); -extern void func_8015DB6C(s32 a0); -extern void func_8015DA90(s32 *a0); -extern void func_8015DAF8(s32 *a0); -extern void func_8015DB6C(s32); -extern void func_8015DB34(s32 a0); -extern void func_8015DCB8(s32 a0); -extern void func_8014BD60(s32 a0, s32 a1); -extern int func_8015DD74(int); -extern void func_8015DBD4(void *arg0); -extern int func_8015DC84(int a0); -extern s8 D_8018FB30[]; -extern void func_8015DCB8(s32 param_1); -extern int func_8015DD74(int arg0); -extern void func_8015DECC(s32 a0); -extern void func_8015DDF0(s32 *a0); -extern void func_8015DE58(s32 *a0); -extern void func_8015DECC(s32); -extern void func_8015DE94(s32 a0); -extern void func_8015E018(s32 a0); -extern void func_8015DF34(void *arg0); -extern int func_8015DFE4(int a0); -extern void func_8015E018(s32 param_1); -extern int func_8015E0D4(int a0); -extern void func_8015E22C(s32 a0); -extern void func_8015E150(s32 *a0); -extern s32 func_8015E1B8(s32 a0); -extern void func_8015E184(s32 *arg0); -extern void func_8015E22C(s32); -extern void func_8015E1F4(s32 a0); -extern u8 D_800D4FF4[]; -extern u8 D_800D5098[]; -extern u8 D_800D5060[]; -extern s32 func_8014A850(s32 a0); -extern void func_8015E40C(s32 a0); -extern void func_8015E588(void); -extern void func_8015E4B0(s32 a0); -extern void func_8015E288(s32 a0); -extern u16 D_8018FB78; -extern u16 D_8018FB7A; -extern u16 D_8018FB7C; -extern s32 D_8018FB80; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -extern void func_8013C9C4(void *a0); -extern s32 D_8018FB88; -extern void func_8015E5B0(u8 *self); -extern void func_8015E714(s32 *a0); -extern void func_8015E95C(s32); -extern void func_8015E84C(s32 *a0); -extern void func_8015E8E8(s32 *a0); -extern void func_8015E9B8(s32 *a0); -extern void func_8015E8B4(s32 *a0); -extern void func_8015E924(s32 a0); -extern void func_8015E95C(s32 a0); -extern s16 D_801152A0; -extern void func_80160818(s32 *a0); -extern void func_8015ED6C(s32 *a0); -extern void func_8015EE7C(s32); -extern void func_8015EDA0(s32 *a0); -extern s32 func_8015EE08(s32 a0); -extern void func_8015EDD4(s32 *arg0); -extern void func_8015EE44(s32 a0); -extern int D_800D4C48; -extern int D_8018F894; -extern void func_8015EE7C(s32 param_1); -extern void func_8015EEE0(void *arg0); -extern void func_8015EF9C(void); -extern void func_8015F080(s32); -extern void func_8015EFA4(s32 *a0); -extern void func_8015F00C(s32 *a0); -extern void func_8015EFD8(s32 *a0); -extern void func_8015F048(s32 a0); -extern void func_8015F080(s32 a0); -extern s32 D_80062BE8; -extern void func_801466F0(s32, s32, s32, s32, s32, s32, s32, s32); -extern s32 func_80161208(void); -extern void func_8015F118(void *a0); -extern void func_8015F260(s32 *a0); -extern void func_8015F380(); -extern void func_8015F2BC(s32 *a0); -extern void func_8015F324(s32 *a0); -extern void func_8015F2F0(s32 *a0); -extern void func_8015F360(void); -extern s32 func_801725B8(u8 *a0); -extern void func_8015F380(void* arg0); -extern void func_8015F738(s32 *a0); -extern void func_8015F848(s32 *a0); -extern void func_8015F76C(s32 *a0); -extern s32 func_8015F7D4(s32 a0); -extern void func_8015F7A0(s32 *arg0); -extern void func_8015F810(s32 *a0); -extern void func_80147078(s32 *, s16); -extern void func_80159B70(void *); -extern void func_8015F89C(void *arg0); -extern void func_8015F948(s32 *param_1); -extern void func_8015F9A4(void *arg0); -extern void func_8015FA24(s32 arg0); -extern void func_8015FBE0(s32 *a0); -extern void func_8015FA44(s32 *a0); -extern void func_8015FAAC(s32 *a0); -extern void func_8015FA78(s32 *a0); -extern s32 func_801612B8(void *a0, s32 a1); -extern void func_8016007C(s32 a0); -extern void func_8015FAE8(void *arg0); -extern void func_8015FCC8(void *param_1); -extern unsigned int D_8018FC0C[]; -extern void func_8015FD74(int param_1); -extern s32 func_80028DE0(void); -extern u8 func_80165700(s32 a0, s32 a1); -extern void func_8015FDCC(s32 a0); -extern u8 D_80078EC2; -extern u8 func_801656E8(s32 a0, s32 a1); -extern void func_80165670(s32 a0, s32 a1); -extern void func_8016004C(s32 a0); -extern void func_8015FF20(void *param_1); -extern void func_801601AC(s32 *a0); -extern void func_801600D0(s32 *a0); -extern void func_80160138(s32 *a0); -extern void func_80160104(s32 *a0); -extern void func_80160174(s32 *a0); -extern void func_801601E4(s32 *a0); -extern void func_80160244(s32 *a0); -extern void func_8016032C(void); -extern void func_80160410(s32 *a0); -extern void func_80160334(s32 *a0); -extern void func_8016039C(s32 *a0); -extern void func_80160368(s32 *a0); -extern void func_801603D8(s32 *a0); -extern u8 D_80062BD0; -extern void func_80160410(s32 * a0); -extern void func_801607B8(s32 *a0); -extern void func_801608C0(s32 *a0); -extern void func_801607E4(s32 *a0); -extern void func_8016084C(s32 *a0); -extern void func_80160888(s32 *a0); -extern void func_80160A28(s32 a0); -extern void func_80160A74(s32 *a0); -extern void func_80160BB4(s32 *a0); -extern void func_80160ACC(s32 *a0); -extern s32 func_80160B34(s32 a0); -extern void func_80160B00(s32 *arg0); -extern void func_80160B70(s32 a0); -extern void func_80160C28(void *arg0); -extern void func_80160CB4(s32 *a0); -extern void func_80160D10(void *arg0); -extern void func_80160DEC(u8 *a0); -extern void func_80160F00(); -extern void func_80160E3C(s32 *a0); -extern void func_80160EA4(); -extern void func_80160E70(s32 *a0); -extern void (*D_8018FCBC[])(void); -extern void func_80160EA4(void *a0); -extern void func_80160EE0(void); -extern void func_80160F00(void* arg0); -extern void func_800D0F4C(s32 a0); -extern u8 D_80110EC0; -extern void func_80160F70(s32 a0); -extern void func_80160FE0(s32 *a0); -extern void func_80161034(void *a0); -extern void func_80161094(s32 a0); -extern void func_801610FC(void); -extern void func_801483E8(void); -extern s32 func_80161A60(s32 a0); -extern void func_8016130C(void *a0, s32 a1); -extern void func_80161240(void *a0); -extern void func_80161374(void *a0, s32 a1); -extern void func_80161278(void *a0); -extern s32 func_801612B8(void * a0, s32 a1); -extern void func_8016163C(void *a0, s32 a1); -extern void func_80161774(void *a0, s32 a1); -extern s32 func_8016197C(s32 a0, s32 a1); -extern s32 func_80161488(void *a0); -extern void func_80161888(void *a0, s32 a1); -extern void func_801614E4(void *a0); -extern void func_8016191C(void *a0, s32 a1); -extern void func_8016151C(void *a0); -extern void func_80161554(void *a0); -extern s32 func_801615C4(void * arg0, s32 arg1); -extern s32 func_801619A4(s32 *a0); -extern s32 func_80161A00(s32 a0); -extern s32 func_80161A30(s32 a0); -extern int func_801497A8(void); -extern int func_80161BE0(void *param_1); -extern u16 D_8018FCEC[]; -extern void func_80161C98(int param_1, u32 param_2); -extern void func_80161E08(s32); -extern s32 func_80162438(s32); -extern s32 D_800AE6A8; -extern void func_800D1734(void *); -extern s32 D_8018FD50; -extern void func_80161D88(void); -extern void func_80161E08(s32 param_1); -extern int func_800291DC(int); -extern int func_800D0E30(void *a0); -extern int func_801620C4(void); -extern s32 func_800D0D7C(s32, s32); -extern int D_801E5C00[]; -extern void func_8016216C(void); -extern s32 func_801621CC(s32 arg0); -extern void func_801622C4(void); -extern void (*D_8018FD74[])(void); -extern void func_80162330(void *a0); -extern void func_8014706C(void *a0); -extern s32 func_8016236C(u8 *a0); -extern void func_800D0C48(s32 a0); -extern s32 func_801623B8(s32 *a0); -extern s32 func_800167F0(s32 a0); -extern s32 func_80162414(void); -extern s32 func_80162438(s32 _unused0); -extern int func_801626B8(void); -extern void func_80162714(void); -extern int D_801E5C58[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018FDBC[])(void); -extern void func_80162834(void *a0); -extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80162968(s32 a0); -extern s32 func_80162ACC(u8 *a0); -extern u8 D_800B5CB8; -extern s32 D_8018FDAC; -extern s32 D_800B5CBC; -extern u8 D_800B5CDF; -extern s32 D_800B5CEC; -extern void func_80162870(s32 param_1); -extern void func_801628F4(s32 *a0); -extern void func_80162968(s32 param_1); -extern void func_80162AC0(s32 *a0, s8 a1); -extern s32 func_80162AE0(u8 *a0); -extern void func_80162AF4(void); -extern void func_80162CC4(void); -extern s32 D_80126D40; -extern void func_80162B1C(void); -extern void func_80162D28(s32 *a0); -extern void func_80162D88(s32 *a0); -extern void func_80162DE8(s32 *a0); -extern void func_80162E48(s32 *a0); -extern void func_80162EA8(s32 *a0); -extern void func_80162F60(s32 arg0, s32 arg1); -extern void func_80162F80(s32 arg0, s32 arg1); -extern void func_80162FA0(s32 arg0, s32 arg1); -extern void func_80162F08(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80162FC0(s32 *a0); -extern void func_80162FF4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801630C4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163194(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg4); -extern void func_8016325C(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163234(s32 a0); -extern s32 D_80115100; -extern s32 func_801632E0(void); -extern s32 D_80115200; -extern s32 func_801632F0(void); -extern u16 D_80126B18[]; -extern void func_80163328(void); -extern s32 func_801633A8(void); -extern s32 func_80163408(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void func_80163534(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, u16 * a5); -extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); -extern char D_801E5054[8]; -extern void *memcpy(void *dst, const void *src, unsigned int n); -extern void func_801634D8(s32 param_1, u16 param_2, u16 param_3, s32 param_4, u16 param_5); -extern void func_80157158(); -extern void func_80163664(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801636D0(s32 a0, s32 a1); -extern s32 func_8016380C(struct S8016380C *a0, s32 a1); -extern void *memcpy(void *dst, void *src, s32 n); -extern s32 func_801638A0(u8 *a0, s32 a1); -extern s32 func_80163950(s32 a0); -extern void (*D_8018FDC4[])(void); -extern void func_80163A58(void *a0); -extern void func_80163A94(s32 param_1); -extern void func_80163C2C(s32 param_1); -extern void func_80163EC8(s32 param_1); -extern void func_80164270(s32 *a0); -extern void func_80164418(void); -extern void func_80163764(s32 a0); -extern void func_801642AC(s32 a0); -extern void func_8016432C(s32 a0); -extern void func_80164410(void); -extern s32 func_80012DBC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164530(s32 arg0); -extern void (*D_8018FE18[])(void); -extern void func_80164744(s32 param_1); -extern void func_8001C810(s32 a0, s32 a1); -extern void func_80164A74(s32 *a0); -extern void func_80164930(s32 a); -extern u16 D_800DF2E0; -extern s32 D_8018FDE0; -extern s16 D_8018FE14; -extern s16 D_8018FE12; -extern s16 D_8018FE10; -extern void func_801647A4(int param_1); -extern void func_80164ACC(); -extern void func_80164864(void *a0); -extern void func_80164930(s32 param_1); -extern s32 func_8014C308(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164ACC(s32 a0); -extern void (*D_8018FE24[])(void); -extern void func_80164BA0(void *a0); -extern void func_8001CD50(s32 a0, s32 a1); -extern void func_800233CC(void *, unsigned short); -extern void func_80164DD0(s32 a0); -extern void func_80164DB0(void); -extern u8 D_801E5CB8; -extern u8 D_801E5CB9; -extern u8 D_801E5CBA; -extern u8 D_801E5CBB; -extern u8 D_801E5CBC; -extern u8 D_801E5CBD; -extern u8 D_801E5CBE; -extern u8 D_801E5CBF; -extern void func_80164BDC(s32 param_1); -extern void func_80164E40(void); -extern void func_80164CD4(u8 *a0); -extern void func_80164D4C(void *arg0); -extern void (*D_8018FE34[])(void); -extern void func_80164EA4(void *a0); -extern void func_80165124(void *a0); -extern void func_80164EE0(int param_1); -extern s32 func_80165140(s32 a0); -extern void func_801651B8(void *a0); -extern void func_80164F44(void *arg0); -extern void func_80165024(void *a0); -extern void func_80165064(s32 *a0); -extern void func_801650C4(s32 *a0); -extern s32 func_80165140(s32 param_1); -extern s32 func_80165240(s32 a0, s32 a1, s32 a2); -extern s32 D_801E5CF8; -extern void func_801651B8(void * param_1); -extern u8 D_80126CF8; -extern void func_8016533C(void); -extern void func_801653F4(s32 a0); -extern void func_80165580(s32 a0); -extern void func_80165374(s32 a0); -extern void func_80165580(s32 _arg0); -extern void func_801653B8(s32 *a0); -extern s32 func_80165624(s32 a0); -extern u8 D_80078EC5; -extern void (*D_8018FE78[])(void); -extern u8 func_80165658(s32 a0, s32 a1); -extern void func_800CAE0C(s32 a0); -extern void func_801654A8(s32 arg0); -extern void func_80165B28(void *a0); -extern void func_801655E4(s32 a0); -extern u8 D_8018FEF4[]; -extern s32 D_8018FF14[]; -extern u8 D_8018FF90[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018FFB0[]; -extern u8 D_8018FFD0[]; -extern void func_800CAF6C(void); -extern void func_80165770(void); -extern void func_801657D8(void); -extern u8 D_80078EC3; -extern void func_801657A0(void); -extern s32 D_80078EA0; -extern s32 D_80078EA8; -extern u8 D_80078EBB; -extern s32 D_80078ED4; -extern s32 D_80078ED8; -extern s32 D_80078EDC; -extern u8 D_80078EE0; -extern void func_80165874(void); -extern s8 D_80078EC4; -extern void func_801658EC(void); -extern s32 func_80165900(void); -extern s32 func_80165910(void); -extern s32 D_8012672C; -extern s32 D_8012811C; -extern s32 D_80126B08; -extern void func_80165938(void); -extern void func_80165958(void); -extern s32 func_80165978(void); -extern void func_80165988(void); -extern s32 func_801659A8(void); -extern void func_801659B8(void); -extern s32 func_801659CC(void); -extern void func_80165A18(void); -extern s32 func_80165A50(s32 _arg0); -extern void func_80165AC8(void); -extern void func_80165A78(s32 arg0); -extern void (*D_8019006C[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_801900E8[])(void); -extern void func_80165BB4(u8 *a0); -extern void func_80165B6C(u8 *a0); -extern void func_80165C58(s32 arg0); -extern void func_80165BFC(void *a0); -extern void func_80165C78(void); -extern M2C_UNK D_801E5064; -extern void func_80165E2C(u16 *arg0); -extern s32 func_80165FA4(s32 a0, s32 a1, s32 a2); -extern s32 func_80167DBC(s32 a0, s32 a1, s32 a2); -extern s32 func_80167AE0(s32 a0, s32 a1, s32 a2); -extern void func_80165E90(void); -extern void func_80020F34(s32 a0, s32 a1); -extern s32 func_80165FA4(s32 arg0, s32 arg1, s32 arg2); -extern void (*D_801900F4[])(void); -extern void func_80166018(void *a0); -extern void func_80166054(s32 arg0); -extern void func_801661CC(s32 param_1); -extern void func_80166244(void* arg0); -extern void func_8016629C(void *a0); -extern void func_801662F4(void *a0); -extern void func_8016634C(void *a0); -extern void func_801663A4(void *a0); -extern void (*D_801900FC[])(void); -extern void func_801663FC(void *a0); -extern u8 D_800D387C[]; -extern u8 D_800D3888[]; -extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); -extern void func_800D1FC8(s32 a0, s32 a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern void func_801665B4(); -extern void func_80146C3C(); -extern void func_80166438(u8 *a0); -extern s32 func_80128ED8(s32 param_1, s32 *param_2); -extern void func_800D22E4(s32 a0); -extern void func_801665B4(s32 *a0); -extern void (*D_801901C4[])(void); -extern void func_80166618(void *a0); -extern void (*D_801901D4[])(void); -extern void func_80166654(void *a0); -extern s32 func_80166690(s32 param_1, s32 param_2); -extern s32 func_80166994(); -extern s32 func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern s32 func_80167540(s32 arg0); -extern void (*D_801901E4[])(void); -extern void func_801678B4(void *a0); -extern void RotMatrixYXZ(void *a0, void *a1); -extern void func_80048EAC(void *a0, void *a1); -extern s32 func_801670E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80146C3C(void); -extern void func_801678F0(s32 a0); -extern void (*D_801901F0[])(void); -extern void func_80167A9C(void *a0); -extern void func_80167AD8(void); -extern s32 func_80167AE0(s32 param_1, s32 param_2, s32 param_3); -extern void func_80168070(s32 a0, s16 *a1, s16 *a2, void *a3); -extern u8 D_80190150[]; -extern u8 D_80190164[]; -extern s32 func_80167DBC(s32 arg0, s32 arg1, s32 arg2); -extern void func_800D20C0(void *a0, void *a1, s32 a2); -extern void func_80017E68(void *a0, void *a1); -extern void func_800D23D0(void *a0); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern s32 D_801269A4; -extern s32 D_801269A8; -extern s32 D_801269AC; -extern void func_80168070(s32 param_1, s16 *param_2, s16 *param_3, void *param_4); -extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_8016829C(s32 a0); -extern s32 func_80166690(s32 a0, s32 a1); -extern void func_80168328(s32 arg0); -extern void func_801683D8(s32 a0); -extern void func_801684B4(s32 a0); -extern void func_80168540(s32 a0); -extern void func_801685EC(s32 a0); -extern void func_80168640(s32 a0); -extern s32 RotMatrixX(s32 a0, void *a1); -extern void func_80168664(void *arg0); -extern void (*D_80190208[])(void); -extern void func_80168744(void *a0); -extern void func_80168BDC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801687CC(s32 a0); -extern void func_80168780(s32 a0); -extern void func_80168828(void); -extern void func_801687CC(s32 param_1); -extern void func_80168828(); -extern void (*D_80190210[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_80190218[])(void); -extern void func_80168AA8(void *a0); -extern void func_80168AE4(s32 a0); -extern void func_800D2318(void); -extern void func_80168BDC(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void (*D_80190220[])(void); -extern void func_80168D58(void *a0); -extern void func_80168D94(int a0); -extern void func_80168F40(); -extern void func_80168EC4(s32 a0); -extern void func_80168F40(void *arg0); -extern void (*D_80190228[])(void); -extern void func_8016901C(void *a0); -extern void func_80169058(s32 a0); -extern s32 func_80169228(void); -extern void func_801691B8(void *a0); -extern void (*D_80190230[])(void); -extern void func_801693CC(void *a0); -extern void func_80169584(s32 param_1); -extern void func_80169408(s32 a0); -extern void func_8016951C(int param_1); -extern s32 func_80017758(void *a0, void *a1); -extern s32 func_80017DC4(void *a0, void *a1); -extern void func_801696D8(s32 a0, s32 a1); -extern void (*D_80190238[])(void); -extern void func_80169830(void *a0); -extern void func_8016986C(s32 a0); -extern s32 func_80169A4C(s32 a0, s32 a1); -extern void func_801699D0(void *arg0); -extern void (*D_801902EC[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_801902F4[])(void); -extern void func_80169F00(void *a0); -extern char D_801902A4[]; -extern char D_80190264[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8019032C[])(void); -extern void func_8016A020(void *a0); -extern void func_8016A05C(void *a0); -extern void func_8016A290(s32 a, void *b, void *c); -extern void func_8016A08C(s32 param_1); -extern void func_8016A1CC(int param_1); -extern void func_8016A290(s32 param_1, void *param_2, void *param_3); -extern void (*D_80190338[])(void); -extern void func_8016A700(void *a0); -extern s32 func_8016A73C(s32 arg0); -extern s32 func_8016A8FC(s32 a0); -extern void func_8016A890(s32 arg0); -extern void func_8016AA50(s32 param_1, s32 param_2); -extern void (*D_80190380[])(void); -extern void func_8016AB30(void *a0); -extern void func_8016B234(void); -extern void func_8016AFB0(s32 a0); -extern void func_8016B114(void *arg0); -extern s32 func_8016B448(s32, s32); -extern s32 func_8016BA48(s32 a0); -extern void func_8016B3F4(s32 a0); -extern s32 func_8016B428(s32 a0); -extern void func_8016B984(void *a0); -extern s32 func_8016B448(s32 arg0, s32 arg1); -extern void (*D_801903FC[])(void); -extern void func_8016B4BC(void *a0); -extern int func_8016B9F8(int); -extern int func_8016B834(int, int); -extern void func_8016B91C(int); -extern int D_801E6018; -extern void func_8016B4F8(int param_1); -extern s32 func_8016B9F8(s32 param_1); -extern void func_8016B6BC(s32, s32, s32, s32); -extern void func_8016B91C(s32); -extern s16 D_801903F0[]; -extern void func_8016B5C0(s32 param_1); -extern void func_8001CD9C(int, void *); -extern int *D_80190434[]; -extern unsigned short D_8019043C[]; -extern unsigned short D_80190444[]; -extern unsigned char D_801E6020[]; -extern int func_8016B834(int param_1, int param_2); -extern void func_8016B964(SrcB964 *a0, DstB964 *a1); -extern void func_8016B91C(s32 arg0); -extern s32 D_801E6018; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8019044C[])(void); -extern void func_8016BBA4(void *a0); -extern s32 func_8016BBE0(s32 param_1); -extern void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3); -extern M2C_UNK D_801E6154; -extern M2C_UNK D_801E6158; -extern void func_8016BCC0(void *arg0); -extern s32 func_8016BD78(s32 param_1); -extern s32 func_8016BEA0(s32 param_1); -extern void func_8016BF34(void *a0); -extern void func_8016BFD0(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern s32 D_801E60E0; -extern void (*D_8019047C[])(void); -extern void func_8016C14C(void *a0); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801E615C[]; -extern u8 D_801E6164[]; -extern u8 D_801E6114[]; -extern void func_8016C2C4(s32 param); -extern s32 func_8016C49C(s32 param_1_arg); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_8016C74C(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern short func_8016CF04(s32 a0, s32 a1); -extern void func_8016C83C(s32 a0); -extern void (*D_80190484[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_801904A0[])(void); -extern void func_8016D19C(void *a0); -extern void (*D_801904A8[])(void); -extern void func_8016D428(void *a0); -extern void func_8016D464(u8 *a0); -extern void func_8016D4DC(s32 a0); -extern void func_8016D5EC(s32 *a0); -extern short func_8016CBC0(void); -extern void func_8016D64C(int param_1); -extern void func_8016D778(s32 a0); -extern void func_800D20C0(); -extern void func_8016D848(s32 *a0); -extern void func_8016D984(s32 *a0); -extern void func_8016DBD8(u8 *a0); -extern void (*D_80190510[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801904B4; -extern u8 D_801904C0; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void (*D_80190544[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8019054C[])(void); -extern void func_8016DF20(void *a0); -extern void func_8016E3CC(s32 a0); -extern void func_8016E1CC(s32 a0); -extern void func_8016E26C(s32 *a0); -extern void func_8016E2E8(void *a0); -extern void func_8016E460(void *a0, void *a1); -extern void func_8016E358(void *a0); -extern void func_8016E460(void *arg0, void *arg1); -extern void (*D_801905A0[])(void); -extern void func_8016E5B8(void *a0); -extern void func_8016E5F4(s32 arg0); -extern void func_8016E778(); -extern void func_8016E688(void *a0); -extern void func_8016E6E4(s32 a0); -extern void func_8016E728(u8 *a0); -extern void func_8016E7C8(int param_1, short *p1, unsigned int *p2); -extern void func_8016E778(int param_1); -extern void func_8016E7C8(int param_1, short *param_2, unsigned int *param_3); -extern s32 D_80115218; -extern void func_8016E8F0(void); -extern void func_8016E918(short param_1, short param_2); -extern s32 func_8016E95C(); -extern u16 D_801905D4[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_801905C4[]; -extern void func_8016EB3C(s32 p); -extern void func_8016EBA8(u8 *param_1); -extern void func_8016ED6C(void); -extern s32 D_80126D70; -extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); -extern void func_8016ED8C(s32 a0, s32 a1, s32 a2); -extern void func_8016EE40(s32 a0, s32 a1, s32 a2); -extern void func_8016EDBC(s32 a0, s32 a1, s32 a2); -extern void func_8016EE94(); -extern void func_8016EDEC(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_8016EF78(s32 a0); -extern void func_8016EE40(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_801726D0(void *a0); -extern s32 D_80126D50; -extern s32 D_80126D54; -extern u8 D_80126D6C; -extern u8 D_80126D6D; -extern u8 D_80126D6E; -extern s32 D_80126D5C; -extern s32 D_80126D60; -extern s16 D_80126D64; -extern s16 D_80126D66; -extern s16 D_80126D68; -extern s16 D_80126D6A; -extern u8 D_80126D1A; -extern s32 D_80127058; -extern s32 D_8012705C; -extern s32 D_80127060; -extern s32 D_80127064; -extern s32 D_80127068; -extern s32 D_8012706C; -extern s32 D_80127070; -extern s32 D_80127074; -extern s16 D_80126D20; -extern void func_8016EE94(s32 a0, s32 a1); -extern s32 func_8016EFC8(s32); -extern s32 func_8016EFA8(s32 a0); -extern void func_8016F094(s32 *a0); -extern s32 func_8016F0AC(); -extern s32 D_801905F0; -extern void func_8016F250(void); -extern void func_8016F288(void); -extern void func_8016F2A8(void); -extern void func_8016F2C8(void); -extern void func_8016F2EC(void); -extern void func_8016F30C(void); -extern void func_8016F330(void); -extern void func_8016F350(void); -extern void func_8016F374(void); -extern void func_8016F388(void); -extern void func_8016F398(void); -extern s32 func_8016F44C(s32 a0); -extern void func_8016F470(s32 a0); -extern s32 func_8016F410(s32 a0); -extern void func_80175414(s32 _arg0); -extern s32 func_8016F4C4(s32); -extern s32 func_8016F494(s32 a0); -extern void func_8016F0E4(void); -extern s32 func_8016F4C4(s32 param_1); -extern void func_8016F4F4(void); -extern void func_801719A4(int a0, int a1); -extern void func_800D1724(s32 a0); -extern void func_80171928(void *a0); -extern void *D_8011F738; -extern void func_8016F4FC(void *a0); -extern void func_8014708C(void *a0); -extern void func_8016F540(void *a0); -extern void func_8016F578(s32 *a0); -extern void func_8016F5B0(void *a0); -extern void func_80147060(u8 *a0); -extern void func_8016F5E0(u8 *a0); -extern void func_8016F610(void *a0); -extern void func_8016F648(void *a0); -extern void func_8016F680(void *a0); -extern void func_8016F6B0(void *a0); -extern void (*D_80190668[])(void); -extern void func_8016F6E0(void *a0); -extern s32 func_80171990(u8 *a0); -extern void func_8016F764(void *a0); -extern void func_8016F71C(u8 *a0); -extern void (*D_80190670[])(void); -extern void func_8016F798(void *a0); -extern void func_8016F804(void *a0); -extern void func_8016F7D4(u8 *a0); -extern void func_80171928(void *); -extern void (*D_80190678[])(void); -extern void func_8016F834(void *a0); -extern void func_8016F8AC(u8 *a0); -extern void func_8016F870(u8 *a0); -extern void func_80172358(u8 *a0, u8 *a1); -extern void (*D_80190680[])(void); -extern void func_8016F8E4(void *a0); -extern void func_8016F95C(void *a0); -extern void func_8016F920(u8 *a0); -extern s32 func_80171CC4(void *a0, void *a1); -extern s32 func_80171D1C(void *a0, void *a1, s32 a2); -extern u16 D_8011F73E; -extern void (*D_80190688[])(void); -extern void func_8016F9C4(void *a0); -extern void func_80171B44(s32 *a0); -extern void func_8016FA44(s32 a0); -extern void func_8016FA00(s32 a0); -extern s32 func_80171C64(s32 a0, s32 a1); -extern void (*D_80190690[])(void); -extern void func_8016FA84(void *a0); -extern void func_8016FB10(void *a0); -extern void func_8016FAC0(u8 *a0); -extern void func_8016FB50(void *a0); -extern void (*D_8019069C[])(void); -extern void func_8016FB7C(void *a0); -extern void func_8016FC24(); -extern void func_8016FBB8(s32 a0); -extern s32 func_80171B4C(s32 a0, s32 a1); -extern void func_8016FC24(s32 a0); -extern void func_8016FC64(void *a0); -extern void (*D_801906A8[])(void); -extern void func_8016FC90(void *a0); -extern void func_8016FD08(u8 *a0); -extern void func_8016FCCC(u8 *a0); -extern s32 func_80172658(s32 *a0); -extern void func_8016FD08(u8 *s0); -extern void func_8016FD7C(s32 *a0); -extern void (*D_801906B4[])(void); -extern void func_8016FDB4(void *a0); -extern void func_8016FE2C(u8 *a0); -extern void func_8016FDF0(u8 *a0); -extern void func_8016FE2C(u8 * a0); -extern s32 func_8016FE78(s32 *a0); -extern s32 func_80172664(s32 *a0); -extern void func_8016FED0(s32 *a0); -extern void (*D_801906C4[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_801906D4[])(void); -extern void func_8016FFDC(void *a0); -extern void func_80170068(u8 *a0); -extern void func_80170018(u8 *a0); -extern void func_801700B8(u8 *a0); -extern void func_80170100(u8 *a0); -extern void (*D_801906DC[])(void); -extern void func_80170150(void *a0); -extern void func_801701C8(u8 *a0); -extern void func_8017018C(u8 *a0); -extern void func_801701C8(u8 * a0); -extern void (*D_801906E4[])(void); -extern void func_80170240(void *a0); -extern void func_801702B8(s32 a0); -extern void func_8017027C(u8 *a0); -extern s16 func_80171AB0(s32 a0, void *a1); -extern void (*D_801906EC[])(void); -extern void func_801702FC(void *a0); -extern void func_80170374(u8 *a0); -extern void func_80170338(u8 *a0); -extern s32 func_8014C168(s32 *a0, s32 a1); -extern void func_80170374(u8 * a0); -extern void (*D_801906F4[])(void); -extern void func_801703E0(void *a0); -extern void func_8017044C(u8 *a0); -extern void func_8017041C(u8 *a0); -extern void func_8017044C(u8 * a0); -extern void (*D_801906FC[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_80190704[])(void); -extern void func_80170548(void *a0); -extern void func_801705C0(u8 *a0); -extern void func_80170584(u8 *a0); -extern void func_801705C0(u8 * a0); -extern void (*D_8019070C[])(void); -extern void func_801705F8(void *a0); -extern void func_80170670(void *a0); -extern void func_80170634(u8 *a0); -extern void func_8012A568(void (*a0)(void)); -extern void (*D_80190714[])(void); -extern void func_801706AC(void *a0); -extern void func_80170718(void *a0); -extern void func_801706E8(u8 *a0); -extern void func_80129FF4(void); -extern void (*D_8019071C[])(void); -extern void func_80170748(void *a0); -extern void func_801707D4(void *a0); -extern void func_80170784(u8 *a0); -extern s32 func_80174ED4(void); -extern void (*D_80190724[])(void); -extern void func_80170810(void *a0); -extern void func_801708B0(void *a0); -extern u8 D_800D5DA8; -extern void func_8017084C(s32 a0); -extern u8 D_800D5A34[]; -extern void func_80170AD8(void *a0); -extern void func_80171904(s32 a0); -extern void func_80170B48(int a0); -extern void func_80170928(void); -extern u8 D_800D59EC[]; -extern void func_80170970(void); -extern u8 D_800D599C[]; -extern void func_801709B8(void); -extern u8 D_800D5934[]; -extern void func_80170A00(void); -extern void func_80170A48(void); -extern u8 D_800D5DC0[]; -extern void func_80170A90(void); -extern void (*D_8019072C[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_80190734[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8019073C[])(void); -extern void func_80170C74(void *a0); -extern s32 func_8017197C(u8 *a0); -extern void func_80170CF0(void *a0); -extern void func_80170CB0(u8 *a0); -extern void (*D_80190744[])(void); -extern void func_80170D68(void *a0); -extern void func_80170DE0(u8 *a0); -extern void func_80170DA4(u8 *a0); -extern s32 D_8011F73C; -extern s32 D_8011F740; -extern void func_801718AC(void *a0); -extern void func_80170DE0(u8 * _arg0); -extern void (*D_8019074C[])(void); -extern void func_80170E34(void *a0); -extern void func_80170EAC(u8 *a0); -extern void func_80170E70(u8 *a0); -extern int func_800D0F8C(int a0); -extern void func_80170EAC(u8 * _arg0); -extern void (*D_80190754[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8019075C[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_80190764[])(void); -extern void func_80171064(void *a0); -extern void func_801710DC(u8 *a0); -extern void func_801710A0(u8 *a0); -extern u16 D_8011F73A; -extern void func_801710DC(u8 * arg0); -extern void (*D_8019076C[])(void); -extern void func_80171120(void *a0); -extern void func_8017118C(u8 *a0); -extern void func_8017115C(u8 *a0); -extern void func_80142454(s32 a0); -extern void func_8017118C(u8 * a0); -extern void (*D_80190774[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8019077C[])(void); -extern void func_80171260(void *a0); -extern s32 func_80012F74(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80171384(void *a0); -extern void (*D_80190784[])(void); -extern void func_801714E4(void *a0); -extern void func_8017162C(void *a0); -extern void func_80171520(s32 a0); -extern s32 func_801716AC(s32 a0, void *a1, s32 *a2); -extern s32 func_80012FC8(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_800A5E94; -extern u8 D_800A5E95; -extern u8 D_800A5E96; -extern s32 func_801716AC(s32 a0, void * a1, s32 * a2); -extern int func_800D0FE0(int a0); -extern void func_801717A0(void *a0); -extern void func_8013E588(void *a0); -extern void func_801717F4(void *a0); -extern void func_80171824(void *a0); -extern void func_80171854(void *a0); -extern void func_80171884(void); -extern void func_80171A1C(u8 *a0); -extern void func_80171928(void * a0); -extern void func_8017196C(s32 *a0, s8 a1); -extern void func_80171A04(s32 *a0); -extern void func_80171A10(s32 *a0); -extern void func_80171A34(s32 *a0, s8 a1); -extern s32 func_80171A44(u8 *a0); -extern s32 func_80171A58(u8 *a0); -extern s32 func_80171A6C(u8 *a0); -extern void func_80171A80(s32 *a0, s32 a1); -extern s32 func_80171A88(s32 a0); -extern s16 func_80171AB0(s32 param_1, void * _arg1); -extern void func_80171B10(void *a0); -extern void func_80171EC8(s32 a0); -extern s32 func_80171C64(s32 param_1, s32 param_2); -extern s32 func_80171D78(s32 a0, s32 a1); -extern int func_8017250C(short *a0, short *a1); -extern s32 func_80171CC4(void * a0, void * a1); -extern s32 func_80171FFC(short *a0, short *a1, s32 a2); -extern s32 func_80171D1C(void * a0, void * a1, s32 a2); -extern s32 func_8017248C(s32 a0, s32 a1); -extern s32 func_80171E08(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_80047948(s32 a0); -extern s32 func_8004787C(s32 a0); -extern void func_80172170(s32 a0, s32 a1); -extern s32 func_8017209C(void *arg0, void *arg1, s32 arg2, s32 arg3); -extern void func_801722CC(s32 *a0); -extern void func_80172304(s32 *a0); -extern void func_80172310(u8 *a0); -extern void func_801723C4(s32 param_1, s32 param_2); -extern void func_80161C24(s32, s32); -extern void func_80172414(s32 a0); -extern s32 func_801724EC(s32 a0); -extern s32 func_8017248C(s32 arg0, s32 arg1); -extern s32 func_80013450(s32); -extern s32 func_80172560(u8 *a0, u8 *a1); -extern s32 func_8017261C(u8 *a0); -extern s32 func_80172644(u8 *a0); -extern s32 func_80172670(s32 *a0); -extern s32 func_80172688(s32 *a0); -extern s32 func_80172694(s32 *a0); -extern s32 func_801726A0(s32 *a0); -extern s32 func_801726AC(s32 *a0); -extern s32 func_801726B8(s32 *a0); -extern s32 func_801726C4(s32 *a0); -extern s32 func_80172760(s32 a0); -extern s32 func_80174650(s32); -extern void (*D_80127088)(void); -extern s32 D_801270BC; -extern s16 D_80126B0C; -extern void func_801726D0(void * _arg0); -extern void func_80172710(void); -extern void func_80174684(void *); -extern void func_80172738(void); -extern s16 D_80126B30; -extern s32 func_801727D0(void *a0); -extern void func_80172780(void *a0); -extern void func_80172844(u8 *a0); -extern void func_8017280C(u8 *a0); -extern void func_8017288C(void); -extern s32 func_801728E4(void *a0); -extern void func_80172894(void *a0); -extern void func_80172958(u8 *a0); -extern void func_80172920(u8 *a0); -extern s16 D_80126B36; -extern void func_80172958(u8 * a0); -extern void func_801729A8(void); -extern s32 func_801729F0(void *a0); -extern s16 D_80126B34; -extern s16 D_80126B32; -extern void func_801729B0(s32 a0); -extern void func_80172A8C(void *a0); -extern void func_80172A2C(int param_1); -extern void func_80172ACC(u8 *a0); -extern void func_80172B0C(void); -extern s32 func_80172B44(void *a0); -extern void func_80172B14(s16 a0); -extern s32 D_801150F8; -extern void func_80172BC8(void *a0); -extern void func_80172B80(u8 *a0); -extern void func_80172C48(void); -extern void (*D_801907C8[])(void); -extern void func_80172CA0(void *a0); -extern void func_80172D14(u8 *a0); -extern void func_80172CDC(u8 *a0); -extern void func_80172D14(u8 * a0); -extern void func_80172D60(void); -extern s32 D_80127508; -extern s32 func_80172DAC(void *a0); -extern void func_80172D68(s32 a0); -extern void func_80172E20(u8 *a0); -extern void func_80172DE8(u8 *a0); -extern void func_80172E20(u8 * a0); -extern void func_80172E8C(void); -extern void func_8017303C(void *); -extern void func_80172E94(void); -extern void func_80172ED4(void); -extern void func_80172EFC(void); -extern void func_80172F24(void); -extern u8 D_800D47F4[]; -extern void func_80172F4C(void); -extern void func_80172F9C(void); -extern u8 D_800D5C6C[]; -extern void func_80172FEC(void); -extern s32 func_80173078(void *a0); -extern void func_8017303C(void * a0); -extern void func_801730FC(struct S801730FC *a0); -extern void func_801730B4(s32 a0); -extern void func_8017316C(void); -extern s32 func_8017319C(void *a0); -extern void func_80173174(void); -extern u8 D_800D5AA0[]; -extern void func_80173220(void *a0); -extern void func_801731D8(s32 *a0); -extern M2C_UNK D_8019078C; -extern void func_80173220(void * arg0); -extern void func_80173294(void); -extern void func_801732C4(); -extern void func_8017329C(void); -extern void func_801732C4(s32 *a0); -extern void func_8017331C(); -extern void func_801732F4(void); -extern void func_8017331C(s32 *a0); -extern void func_80173374(); -extern void func_8017334C(void); -extern void func_80173374(s32 *a0); -extern void func_801733A4(void); -extern void func_801733CC(s32 a0); -extern void func_801734BC(s32 a0, s32 a1); -extern s16 D_80126B3E; -extern void func_80173460(s32 a0, s32 a1); -extern void func_801734BC(s32 arg0, s32 _unused1); -extern void (*D_801907F8[])(void); -extern void func_80173544(void *a0); -extern void func_801735B8(u8 *a0); -extern void func_80173580(u8 *a0); -extern s16 D_80126B40; -extern void func_801735EC(void *a0); -extern void func_80173648(u8 *a0); -extern void func_801736A8(void); -extern s32 func_8014C118(void *a0, s32 a1, s32 a2); -extern s32 func_801736FC(void *a0); -extern void func_801736B0(s32 a0, s32 a1); -extern void func_80173770(u8 *a0); -extern void func_80173738(u8 *a0); -extern void func_801723C4(s32 a0, s32 a1); -extern void func_801737B0(void); -extern s32 func_801737E8(void *a0); -extern void func_801737B8(s16 a0); -extern void func_8017385C(u8 *a0); -extern void func_80173824(u8 *a0); -extern void func_801738D4(void); -extern s32 func_8017390C(void *a0); -extern void func_801738DC(s16 a0); -extern void func_80173980(u8 *a0); -extern void func_80173948(u8 *a0); -extern void func_801739D8(u8 *a0); -extern void func_80173A20(void); -extern s32 D_8012750C; -extern void func_80173A60(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80173A28(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void (*D_80190834[])(void); -extern void func_80173B4C(void *a0); -extern void func_80173BC0(u8 *a0); -extern void func_80173B88(u8 *a0); -extern void func_80173C64(u8 *a0); -extern void func_80173E1C(s32 a0); -extern s16 D_80126938; -extern s16 D_80126B3A; -extern void func_800D128C(s32, s32); -extern void func_80174158(s32 a0); -extern void func_8002A088(s32); -extern void func_8002A2D4(s32); -extern void func_8002A544(s32); -extern void func_8002A7B4(s32); -extern s32 func_80174188(s32 a0); -extern void func_801741A8(s32 a0); -extern s32 func_800D0EC4(void); -extern void func_800D0F0C(s32, s32); -extern void func_80145EE8(s32); -extern void func_80173EF8(void *param_1); -extern s32 func_8014BCEC(s32, s32); -extern void func_801741A8(s32 _arg0); -extern s16 D_80126B3C; -extern s16 D_8011F9C8; -extern void func_801741EC(u8 *a0); -extern void func_80174274(void); -extern s32 func_801742A4(void *a0); -extern void func_8017427C(void); -extern void func_80174318(u8 *a0); -extern void func_801742E0(u8 *a0); -extern void func_80174354(void); -extern s32 func_80174384(void *a0); -extern void func_8017435C(void); -extern void func_801743F0(u8 *a0); -extern void func_801743C0(u8 *a0); -extern void func_801743F0(u8 * a0); -extern void func_80174430(void); -extern s32 func_80174474(void *a0); -extern void func_80174438(s32 a0); -extern void func_801744E0(u8 *a0); -extern void func_801744B0(u8 *a0); -extern void func_80174524(void); -extern void func_80174554(); -extern void func_8017452C(void); -extern void func_80174554(s32 arg0); -extern void func_801745AC(); -extern void func_80174584(void); -extern void func_801745AC(s32 *a0); -extern void func_80174604(void); -extern void func_801745DC(void); -extern void func_80174630(void); -extern s32 func_80174650(s32 _arg0); -extern void func_80174674(void); -extern void func_801746A4(void); -extern s32 func_800CF8CC(void); -extern void func_80174714(void); -extern s32 func_80174754(void); -extern s16 func_80174764(void); -extern s16 func_80174774(void); -extern s32 func_801747CC(void *a0); -extern void func_80174784(void); -extern s32 func_801747AC(s32 a0); -extern s32 func_80174808(u8 *a0); -extern void func_8017481C(void); -extern s32 func_80174888(void *a0); -extern void func_80174824(void); -extern void func_8017484C(s32 a0); -extern void func_801748C4(s32 a0); -extern void func_801748E4(void); -extern void func_8012A018(s32 a, s32 b); -extern s32 func_8017496C(void *a0); -extern void func_801748EC(void); -extern s32 func_801749C8(); -extern s32 func_801749A8(s32 a0); -extern void func_80174BBC(void *a0); -extern void func_8012A0E0(void); -extern void func_80174BF4(void *a0); -extern void (*D_8019088C[])(); -extern void func_80174BF4(void * arg0); -extern s32 func_80174CB0(s32, s32); -extern s32 func_80174C60(s32 a0); -extern void func_80174C80(s32 a0); -extern s32 D_8012697C; -extern u16 D_80126980; -extern s32 func_80174F28(void *a0); -extern void func_80174E9C(s32 a0); -extern void func_80174EF0(s32 a0, s16 a1); -extern s32 func_80175014(u8 *a0, u8 *a1, s32 a2); -extern void func_80174F64(u8 *a0); -extern void func_80174FBC(u8 *a0); -extern s32 func_8017509C(u8 *a0, s32 a1, u8 *a2, u8 *a3); -extern void func_80175184(s32 *a0); -extern void func_80175114(s32 *a0); -extern void func_80175184(); -extern void func_80175150(s32 *a0); -extern void (*D_8019089C[])(void*); -extern s32 func_80175268(s32); -extern void func_80175184(s32* arg0); -extern s32 func_80175218(void *a0); -extern void func_801751D8(void *a0); -extern void (*D_801908A4[])(s32); -extern s32 func_80175218(void * param_1); -extern void func_801752BC(s32 *a0); -extern u8 D_8011F7A8; -extern u8 D_8011F7A9; -extern u8 D_8011F7AD; -extern u8 D_8011F7AE; -extern void func_80175414(s32 _arg0); -extern void func_80175494(void); -extern void (*D_80190A0C[])(); -extern s32 func_801758FC(void); -extern s32 func_80175820(void); -extern s32 func_801759D8(void); -extern void func_8017553C(s32 *param); -extern void func_801757A0(s32 a0); -extern short D_800B9A02; -extern void func_80175590(void *arg0); -extern s16 D_800B9A02; -extern void func_801757A0(s32); -extern void func_80175624(void *a0); -extern void func_801757E0(int); -extern void func_80175668(void); -extern void (*D_80190A18[])(); -extern void func_80175690(s32 *param); -extern void func_80175DA8(s32 a0); -extern void func_80175AB8(s32 a0); -extern void func_80176144(s32 a0); -extern void func_801756E4(s32 arg0); -extern void func_80175798(void); -extern void func_80176734(s32 a0); -extern void func_80176218(s32 a0); -extern void func_80176D00(s32 a0); -extern void func_801757E0(s32 a0); -extern s32 func_80178004(s32 a0, s32 a1, s32 a2); -extern u8 D_8011F7B1; -extern u16 D_8011F7B4; -extern u16 D_8011F7B6; -extern s16 D_8011F81E; -extern void *func_80177784(void *a0, s32 a1, s32 a2, s32 a3); -extern u32 func_801783D0(s32 a0, s32 a1); -extern void *func_801777BC(void *a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern u16 D_8011F82C; -extern u16 D_8011F82A; -extern u32 * func_80176D94(void *param_1, u32 param_2, s16 param_3_); -extern void func_801778A8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80176FF4(s32 a0); -extern u16 D_8011F830; -extern u16 D_8011F82E; -extern u32 * func_801770E0(void *param_1, u32 param_2, s16 param_3_); -extern void func_80177340(s32 a0); -extern u8 D_8011F837; -extern u8 D_8011F7F0; -extern u8 D_8011F7AB; -extern u32 * func_8017742C(u32 *param_1, s32 param_2, s32 param_3); -extern void func_801776EC(u8 *a0); -extern void * func_80177784(void *a0, s32 a1, s32 a2, s32 a3); -extern uint * func_80177EA4(uint *param_1, int param_2, uint param_3, int param_4); -extern void func_80177F84(s32 param_1, s32 param_2); -extern u32 * func_80178298(u32 *param_1, u8 *param_2, short param_3, short param_4); -extern M2C_UNK D_801E52AC; -extern void func_80178438(u16 *arg0); -extern void func_801787D4(void); -extern void func_8012A908(void); -extern void func_8017869C(s32 a0); -extern void func_80130D0C(s32 a0); -extern void func_8013E370(void); -extern s32 D_8011DB08; -extern void func_8017849C(void); -extern void func_8013E4B4(void); -extern s16 D_801270C4; -extern s32 D_801274D8; -extern s16 D_801270C2; -extern u8 D_801270C6; -extern u8 D_801270C7; -extern s32 D_801274DC; -extern s32 D_801274E0; -extern void func_80178608(void); -extern void func_80178744(s32 a0, s32 a1); -extern void func_80178840(); -extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern s32 func_801788B8(s32 arg0, s32 arg1); -extern s32 func_801789AC(s32 arg0); -extern s16 D_801E7AB0; -extern int func_80178970(void); -extern s32 func_80178B18(s32 param_1, s32 param_2); -extern s32 func_80178B70(s32 param_1, s32 param_2); -extern void func_80178BB8(s32 a0, s32 a1); -extern s32 func_80178BF8(); -extern s32 D_801E6898; -extern short D_801E7B24; -extern void func_80178CBC(s32 arg0, s32 arg1); -extern void func_80178D18(void); -extern s32 func_80178D40(s32 arg0, s32 arg1); -extern void func_80179B28(s32 a0); -extern void func_80179B74(u16 *p); -extern void func_80179D30(u16 *a0); -extern void func_80179D78(u16 *a0); -extern void func_80179DCC(short a0); -extern void func_80179DF8(void); -extern void func_80179E1C(short a0); -extern void func_80179E48(s16 a0); -extern void func_80179E74(s16 a0); -extern void func_80179EA0(u16 *a0); -extern void func_80179EE8(short a0); -extern void func_80179F14(s16 a0, s16 a1); -extern void func_80179F44(void); -extern void func_80179F6C(short a0); -extern void func_80179F98(u16 *a0); -extern void func_80179FEC(u16 *a0); -extern void func_8017A040(u16 *a0); -extern s32 D_801E6CC4; -extern void func_8017A094(s32 arg0); -extern void func_8017A0C4(s32 arg0); -extern void func_8017A0F4(void); -extern void func_8017A11C(void); -extern s32 D_801E6CEC; -extern void func_8017A144(s32 a0); -extern void func_8017A180(void); -extern void func_8017A1A8(void); -extern void func_8017A1D0(void); -extern void func_8017A1F8(void); -extern void func_8017A220(void); -extern void func_8017A248(void); -extern void func_8017A270(void); -extern void func_8017A298(void); -extern void func_8017A2C0(void); -extern void func_8017A2E8(void); -extern void func_8017A310(void); -extern void func_8017A338(void); -extern void func_8017A360(void); -extern void func_8017A388(void); -extern s16 D_801E6CA8; -extern s32 func_8017A3B0(void); -extern short D_801E6CE4; -extern short D_801E6CE0; -extern int func_800D0CA0(int); -extern int func_8001AAA0(void); -extern int func_800D0CE0(void); -extern int func_8017A3D8(void); -extern void func_80172310(u8*); -extern void func_80172780(void*); -extern void func_80172894(void*); -extern void func_801729B0(s32); -extern void func_80172B14(s16); -extern void func_80172C50(u16 *); -extern void func_80172D68(s32); -extern void func_801733FC(s16, u16 *); -extern void func_80173460(s32, s32); -extern void func_801734BC(s32, s32); -extern void func_801736B0(s32, s32); -extern void func_801737B8(s16); -extern void func_801738DC(s16); -extern void func_80173A28(s32, s32, s32, s32, s32, s32); -extern void func_80174438(s32); -extern void func_8017A4AC(void); -extern s32 func_8017AD0C(s32 arg0); -extern s32 func_8017AD0C(s32); -extern s32 func_8017ADE8(s32 a0); -extern s32 func_8017AE08(void); -extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); -extern void func_8012B178(s32 a0, s32 a1); -extern void func_8012AD80(s32 a0); -extern s32 func_8012B030(u8 *a0); -extern s32 func_8012B744(void *a0, void *a1); -extern s32 func_8012BE98(s32 a0, u16 *a1); -extern s16 D_801E7A68; -extern s16 D_801E7A6A; -extern s16 D_801E7A74; -extern void func_8017AE2C(s32 param_1); -extern void func_8017B0E4(int param_1, int param_2); -extern s16 D_801E6CAC; -extern u16 D_801E6D2C; -extern u16 D_801E6D2E; -extern u16 D_801E6D30; -extern void func_8017B1D8(void); -extern s32 func_8017B238(s32 param_1, s32 param_2); -extern s32 func_8017B368(s32 param); -extern s32 func_8017B490(s32 param); -extern s32 func_8017B614(s32 param_1, s32 param_2); -extern s32 D_80114F30; -extern s32 D_80114F34; -extern s32 D_80114F38; -extern s32 D_80114F24; -extern s32 D_80114F28; -extern s32 D_80114F2C; -extern u8 D_8012694C; -extern s16 D_801E6D24; -extern s16 D_801E6D26; -extern s16 D_801E6D28; -extern s16 D_801E6D1C; -extern s16 D_801E6D1E; -extern s16 D_801E6D20; -extern void func_8017B7A8(void); -extern s16 D_801E6D3C; -extern s16 D_801E6D3E; -extern s16 D_801E6D40; -extern s16 D_801E6D44; -extern s16 D_801E6D46; -extern s16 D_801E6D48; -extern void func_8017B824(void); -extern void func_8017B880(void); -extern s32 func_8017B8E8(s32 src); -extern short D_801E6D34; -extern short D_801E6D36; -extern short D_801E6D38; -extern void func_8017B940(void); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void RotTransSV(void *a0, void *a1, void *a2); -extern SV4 D_801E6CCC; -extern SV4 D_801E6CD4; -extern void func_8017BA3C(s32 param_1, s32 param_2); -extern s32 func_8017BB34(s32 param_1, s32 param_2); -extern void (*D_801E6CF4[10])(int); -extern void func_8017BC38(int param_1); -extern void func_8017B0E4(int, int); -extern void func_8017BCA0(int param_1); -extern void func_8012A4BC(void); -extern void func_8017BCF4(int param_1); -extern void (*D_801E6CF0)(void); -extern void func_8017BD50(int param_1); -extern void (*D_80190BF4[])(void); -extern void func_8017BE60(void *a0); -extern void (*D_80190C94[])(void); -extern void func_8017BE9C(void *a0); -extern void (*D_80190C9C[])(void); -extern void func_8017BED8(void *a0); -extern void (*D_80190CA4[])(void); -extern void func_8017BF14(void *a0); -extern u8 *func_8012913C(s32 a0); -extern s32 func_8012C750(s32 a0); -extern void func_8017BF50(s32 a0); -extern void func_8017C094(void); -extern void func_8017C100(s32 param_1); -extern void func_8017C1AC(s32 param_1); -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8012A828(s32*, s32); -extern void func_8012B260(u8 *a0); -extern void func_8017C1EC(s32 a0); -extern void func_8017C2B0(s32 a0); -extern void (*D_80190CC4[])(void); -extern void func_8017C338(void *a0); -extern s32 func_800D222C(s32 a0, void *a1, s32 a2); -extern s32 func_8001CF30(void *a0); -extern void func_8017C374(s32 param_1); -extern void func_8017C538(u8 *p); -extern void (*D_80190CCC[])(void); -extern void func_8017C5CC(void *a0); -extern u8 D_80190CB8; -extern void func_8017C608(s32 a0); -extern void func_8017C6AC(int a0); -extern void func_8017C710(s32 arg0); -extern void (*D_80190CE4[])(void); -extern void func_8017D5F0(void *a0); -extern void func_8001C214(s32, s32); -extern u32 D_80190CD4; -extern void func_8017D62C(s32 arg0); -extern void func_8017D6A8(void); -extern void (*D_80190D1C[])(void); -extern void func_8017D6B0(s32 *param_1); -extern void func_8017DA08(void *arg0); -extern s32 func_8012AD50(void *arg0); -extern void func_8017D6EC(void *arg0); -extern void func_8012AD44(s32 *a0, s16 a1); -extern void func_8017D9B8(void); -extern void func_8017DAC4(void *arg0); -extern void aF8017D77C(); -extern void func_80017714(void *); -extern u32 D_801E6FE8; -extern u16 D_80190D24[]; -extern u16 D_801E6FEC[]; -extern s32 D_80190D44; -extern void func_8017DC0C(void); -extern void func_8017E038(void *arg0); -extern s32 func_8017DC98(s32 param_1); -extern s32 func_8017DCE8(void); -extern void func_800D1E28(void); -extern s32 func_800D1D94(void); -extern void func_8001BFD0(void); -extern s32 func_8017DD7C(s32 a0); -extern void func_800D1EBC(void); -extern void func_8017DE2C(void); -extern s32 func_8017DE4C(void *a0); -extern void (*D_80190D64[])(void); -extern void func_8017DF34(void *a0); -extern void (*D_80190D6C[])(void); -extern void func_8017DF70(void *a0); -extern void (*D_80190D78[])(void); -extern void func_8017DFAC(void *a0); -extern void (*D_80190D84[])(void); -extern void func_8017DFE8(void *a0); -extern s32 D_80127050; -extern void func_8017E024(void); -extern void (*D_80191060[])(void); -extern void func_8017E038(void *a0); -extern void func_8017E074(void *a0); -extern void func_8017E088(void *a0); -extern void (*D_80191068[])(void); -extern void func_8017E0C0(void *a0); -extern void func_8017E0FC(u8 *a0); -extern void func_8017E110(void); -extern void func_8012A094(s32 a0); -extern void func_8017E1F4(void *a0); -extern void func_8017E130(void); -extern void (*D_80191070[])(void); -extern void func_8017E26C(s32 *a0, s32 a1); -extern void func_8017E3AC(s32 a0); -extern void func_8017E230(s32 *a0); -extern void func_8017E264(void *a0); -extern void aF8017E26C(); -extern s32 func_80012ABC(s32 a0, s32 a1, s32 a2); -extern void func_8017E3AC(s32 param_1); -extern void func_80184CB8(s32*, s32); -extern void func_8017E5A0(void * arg0); -extern void (*D_801912A8[])(void); -extern void func_8017E760(void *a0); -extern void func_8012A828(s32 *a0, s32 a1); -extern void func_8017E79C(short *a0); -extern void (*D_801912C8[])(void); -extern void func_8017E810(void *a0); -extern void func_80178CBC(s32 a0, s32 a1); -extern void func_8017E84C(void * arg0); -extern void func_8017E878(void * arg0); -extern void func_8012C588(s32, s32); -extern void func_8017E99C(void); -extern s32 func_80184BAC(s32 arg0, s32 arg1); -extern void func_8017E5A0(void *arg0); -extern void func_8017E9C0(void *arg0); -extern void func_8017EAAC(void * arg0); -extern s32 func_8012BEE8(s32 a0); -extern void func_8017E79C(short*); -extern void func_8017EBA0(s32 a0); -extern void func_8017E7CC(); -extern void func_8017EBE0(u8 *a0); -extern void func_8017F02C(void * arg0); -extern void (*D_8019155C[])(void); -extern void func_8017F058(void *a0); -extern void func_8017F094(void * arg0); -extern s32 func_8017F0C0(void); -extern void func_80029124(s32 arg0, s32 arg1); -extern void func_8017F108(void); -extern void func_80029514(int); -extern void func_8017F1A8(void); -extern void func_8017F28C(void * arg0); -extern void (*D_801916E4[])(void); -extern void func_8017F5BC(void *a0); -extern void func_80178CBC(s32, s32); -extern void func_8017F5F8(void *a0); -extern void func_8017F6D8(void *a0); -extern void func_8017F7B8(void *a0); -extern void func_8017F898(void *a0); -extern void func_80029124(s32 a, s32 b); -extern void func_8017FA34(void); -extern void func_8017FCD8(void * arg0); -extern void (*D_80191814[])(void); -extern void func_8017FF34(void *a0); -extern void (*D_801918E4[])(void); -extern void func_801800E0(void *a0); -extern s32 func_8018011C(void); -extern void func_8018015C(void); -extern void func_80180164(void * arg0); -extern void func_8012E8E0(s32, s32); -extern void func_8012E88C(s32); -extern void func_8012A828(s32 *a0, s32 a1); /* fleet-canonical sig (TU L3775) */ -extern void func_80184C90(s32); -extern void func_80184ED4(s32, s32, s32, s32); -extern void func_8018034C(void *arg0); -extern void (*D_801919C4[])(void); -extern void func_8018048C(void *a0); -extern s32 func_80184DD0(s32 a0); -extern void func_80180504(s32 a0); -extern s32 func_80180544(void); -extern void func_80180580(void *arg0); -extern s32 func_8012BD14(s32 a0); -extern s32 func_80180814(void *a0); -extern void func_80180888(void *arg0); -extern void func_8012E88C(s32 a0); -extern void func_80184C90(s32 a0); -extern void func_801808FC(void *a0); -extern void func_80184CB8(s32 *a0, s32 a1); -extern void func_801809DC(short *a0); -extern void (*D_80191A80[])(void); -extern void func_80180B6C(void *a0); -extern void func_80180C0C(void * arg0); -extern s32 func_801848DC(void); -extern s32 func_8018625C(void *); -extern s32 func_80178BF8(void); -extern s32 func_80180CC0(void *a0); -extern s32 func_80178BF8(); /* TU-canonical (ov_SC04_018_jr_8017AE2C.c L2541) */ -extern s32 func_80180D38(void *a0); -extern s32 func_80185BE0(s32 a0); -extern s32 func_80184FA4(void); -extern void func_80180EE8(void *a0); -extern void func_80181020(void *a0); -extern void func_80181244(short *param); -extern void func_801812D0(short *a0); -extern void (*D_80191B20[])(void); -extern void func_801812FC(void *a0); -extern void func_80181338(short *param); -extern void func_80181364(s32 a0); -extern void func_80181474(void * arg0); -extern s32 func_80181564(void *a0); -extern void func_8018170C(void * arg0); -extern void func_8018178C(void * arg0); -extern void (*D_80191BDC[])(void); -extern void func_80181924(void *a0); -extern s32 D_801D7598; -extern s32 D_801D2200; -extern void func_80181998(void); -extern s32 D_801E7018; -extern void func_801819B0(void); -extern void func_8012A828(s32 *, s32); -extern void func_801819C8(void *arg0); -extern void func_80181A28(s32 a0); -extern void func_801815DC(void *arg0); -extern void func_80181A68(void *arg0); -extern void func_801816A8(void *arg0); -extern void func_80181B34(void *arg0); -extern void func_80184ED4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_8018170C(void *a0); -extern void func_80181BEC(void *arg0); -extern void func_80181738(void *arg0); -extern void func_80181C78(void *arg0); -extern void func_801817B8(void *arg0); -extern void func_80181DC4(void *arg0); -extern s32 func_80181EFC(void *a0); -extern void func_80181F70(void *arg0); -extern void func_80181FE4(void *a0); -extern void func_801821A8(void * arg0); -extern void (*D_80191EE4[])(void); -extern void func_8018233C(s32 *param_1); -extern void func_80182490(void * arg0); -extern s32 func_80182544(void *a0); -extern s32 func_801825BC(void *a0); -extern void func_8018276C(void *a0); -extern void func_801828B0(void *a0); -extern void func_801821A8(void *a0); -extern void func_80182920(void *arg0); -extern void func_80182ACC(void * arg0); -extern void func_80182B58(void *arg0); -extern void func_80182BCC(void *a0); -extern void (*D_80192014[])(void); -extern void func_80182C98(void *a0); -extern s32 D_801D7E84; -extern void func_80182D0C(void); -extern void func_80182D24(void *arg0); -extern void func_80182D84(s32 a0); -extern s32 func_80182DC4(void); -extern void func_80182E00(void *arg0); -extern void func_80182C24(void *arg0); -extern void func_80182ED8(void *arg0); -extern void func_80182F18(void *a0); -extern void func_801831AC(short *a0); -extern void func_8018330C(void * arg0); -extern void (*D_8019211C[])(void); -extern void func_80183438(void *a0); -extern void func_80183474(short *a0); -extern void func_801834A0(void * arg0); -extern void func_801834CC(short *a0); -extern void func_801834F8(s32 a0); -extern void func_80183538(s32 a0); -extern void func_801831AC(short*); -extern void func_80183674(void *arg0); -extern void func_801831D8(s32 *a0); -extern void func_801836C0(s32 *a0); -extern void func_8018370C(void * arg0); -extern void func_80183938(void *arg0); -extern void (*D_80192230[])(void); -extern void func_80183A68(void *a0); -extern void func_80183AA4(void * arg0); -extern void func_80183AD0(s32 a0); -extern s32 func_80183B10(void); -extern void func_80183B4C(void *arg0); -extern void func_80183B8C(s32 param_1); -extern s32 func_80183D80(void *a0); -extern void func_80183DF4(void * arg0); -extern void (*D_80192414[])(void); -extern void func_80184130(void *a0); -extern void func_8018416C(s32 a0); -extern void func_801841AC(s32 a0); -extern void func_801841EC(s32 a0); -extern s32 func_8018422C(void); -extern void func_80184268(short *a0); -extern void func_80184298(short *a0); -extern void func_801842C8(short *a0); -extern s16 D_801923A4; -extern void func_801842F8(void *arg0); -extern void func_80183FA8(s32 *a0); -extern void func_80184328(s32 *a0); -extern void func_80183DF4(void*); -extern void func_801843C4(s32 *a0); -extern void func_80183E20(void *arg0); -extern void func_80184460(void *arg0); -extern void func_8018479C(void *a0); -extern void func_801847AC(void *a0); -extern s32 func_8012E57C(s32 a0, s32 a1); -extern s32 func_801847BC(void *a0, void *a1); -extern void func_80184858(void *a0); -extern void func_80184884(void *a0); -extern void func_801848B0(void *a0); -extern s32 func_80184B04(s32 arg0); -extern s32 func_80184960(s32 a0); -extern s32 func_80184960(s32 arg); -extern void func_80184A90(u8 *a0); -extern void func_80184AC4(void *a0); -extern short D_800BA2BA; -extern void (*D_801B8720[])(void); -extern void func_80184B2C(void *a0); -extern void func_80184B68(void); -extern void func_80184B70(void *a0, s32 a1, s32 a2); -extern s32 func_80184BD0(u8 a0, u8 a1, u8 a2, u8 a3); -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); -extern void func_80184C28(void *a0, s32 a1); -extern void func_80184CB0(void *a0); -extern void func_8012E8A8(u8 *a0); -extern s32 func_80184D00(void); -extern s32 func_80184D5C(void); -extern s32 aF80184DD0(); -extern s32 func_80184E44(void); -extern void func_80184EA0(void); -extern void func_8012B200(u8 *a0); -extern s32 aF80184FA4(); -extern s32 func_8018516C(s32 a0); -extern void (*D_801B8740[])(void); -extern void func_801851B4(void *a0); -extern void func_801851F0(void); -extern void func_801851F8(void); -extern void func_80185200(void); -extern void func_80185208(void); -extern void func_80185210(void); -extern void func_80185218(void *a0); -extern void func_8018525C(void); -extern void func_8001D0E8(s32 arg0, s32 arg1, s32 arg2); -extern void func_80185264(s32 a0); -extern void func_80185978(s32 a0); -extern void func_80185904(s32 a0); -extern void func_801859D8(s32 a0); -extern void func_8018589C(s32 a0); -extern void func_801852EC(s32 a0); -extern void func_8001C97C(s32 a0); -extern void *func_80185C6C(void *a0); -extern void func_801854C4(s32 a0); -extern void func_80185D70(void *a0); -extern void func_80185664(void *a0); -extern void func_8012E688(s32 param_1, u16 param_2, u16 param_3); -extern void func_80185EEC(void); -extern void func_801856E0(s32 a0); -extern void func_801857AC(void); -extern void func_801857CC(s32 a0); -extern s16 D_801B8788[]; -extern s32 D_801B8748[][2]; -extern void func_80185A58(s32 a0, s32 a1); -extern void func_8018602C(s32 a0, s32 a1); -extern void func_80185AB0(s32 a0); -extern void func_80185B10(s32 a0); -extern void func_80185B58(s32 a0); -extern void func_80185BA8(s32 a0); -extern s32 func_80185D10(void *a0); -extern s32 func_801862A8(void *a0); -extern void * func_80185C6C(void *a0); -extern void func_80185F20(void *a0); -extern void aF80185EEC(); -extern void func_80185F54(void *a0, s32 a1, s32 a2); -extern void func_80185FB8(s32 a0, s32 a1, s32 a2); -extern void (*D_801B8A3C[])(void); -extern void func_80186084(void *a0); -extern void func_801860C0(void *a0); -extern void func_8018613C(void *a0); -extern s32 func_801863B4(s32 a0); -extern void func_8012F2E8(s32 a0, s32 a1, s32 a2); -extern s32 func_8012CB64(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_8012F214(s32 arg0, s32 arg1, s32 arg2); -extern void func_80186410(void); -extern s16 func_80186450(void); -extern void func_80029444(void); -extern void func_801754A8(void); -extern void func_80141C04(void); -extern void func_801864AC(void); -/* ==== end §8b carried decl layer ==== */ - - -extern s16 D_800B9A02; -extern u8 D_801151C8[]; -extern u16 D_80115112; -extern u8 D_80115138[]; -extern u8 D_80115148[]; -extern s32 D_80115130; -extern u8 D_800B9A15; - -extern s16 D_801E7708; -extern s32 D_801E7700; -extern s32 D_801E7704; -extern s16 D_801E7790; -extern s16 D_801E7798; -extern s16 D_801E779C; -extern s16 D_801E77A0; -extern s16 D_801E77A4; -extern s16 D_801E77A8; -extern s16 D_801E77AC; -extern s32 D_801E7778; -extern s16 D_801E7030; - -extern s32 D_801EC928; -extern s32 D_801E930C; -extern s32 D_801E9968; -extern s32 D_801B9410; -extern u8 D_801B94A4[]; -extern s32 D_801B946C[]; -extern s32 resLoad_lastId; - -extern s32 rand(void); -extern int func_8001AAA0(void); -extern s32 func_800149E0(s32 a0); -extern void func_80029124(s32, s32); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_80137B80(void); -extern s32 func_801376E8(s32 a0, s32 a1); -extern void func_80139954(void); -extern void func_80139A68(s32 a0, u16 a1); -extern s32 func_801399F0(s32 a0); -extern s16 func_8014168C(s16 a0); -extern s32 func_8017ADE8(s32 a0); -extern void func_80188778(void); -extern s32 func_80189540(s32 a0, s16 a1); -extern s16 func_80189E54(s32 a0); - -void func_801878E8(void) { - /* [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 u16 D_801E770C; - extern s16 D_801E7710; - /* [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_801151D0; - extern s16 D_801E7794; - extern s16 D_80115126; - extern u16 D_8011511A; - s32 s0; - s32 pad[2]; - (void)&pad; - - D_801151D0 = *(s32 *)&D_801151C8[(u16)D_800B9A02 * 4]; - - if (D_80115126 == 4) { - if (func_801399F0(D_801E7704) != 0) { - if (D_80115148[0] == 0) { - if (D_801E7700 == (s32)&D_801EC928) { - D_801E7708 = 0x60; - D_801E7710 = 0; - D_801E770C = 0; - D_801E7700 = 0; - if (resLoad_lastId == 0x16) { - D_801E7790 = 1; - ((s32 (*)(s32))func_8001AAA0)(0x35); - } else { - D_801E7790 = 0; - } - D_80115112 = 6; - } else { - D_80115112 = D_80115112 - 1; - } - } else { - D_801E7700 = 0; - func_8017ADE8(0x12); - func_8002D4C8(0x46F, 0); - D_8011511A = 0; - D_80115112 = D_80115112 - 1; - } - - if (D_801E7700 != 0) { - D_80115130 = D_801E7700; - func_80139954(); - D_801E7704 = func_801376E8(D_801E7700, (s32)&D_801B9410); - } - } - } else if (D_80115126 == 5) { - if (D_801E7700 != 0) { - if ((D_801E77AC = func_801399F0(D_801E7704)) != 0) { - D_801E7700 = 0; - } - } else if ((func_800149E0(0) & 0x50) != 0 || D_801E77AC > 0) { - switch (D_801E7794) { - case 0: - D_801E7794 = -1; - break; - - case 1: - if (D_801E77AC < 0) { - D_801E7700 = (s32)&D_801E930C; - } else if (D_801E77AC == 1) { - u16 *p = &D_80115112; - D_801E7030 = 1; - func_80139954(); - D_800B9A15 = 0; - *p = *p + 1; - } else { - D_801E7794 = -2; - } - break; - - case 2: - D_801E77A8 = 0; - D_801E7798 = 0; - /* fallthrough */ - case 5: - case 6: - D_801E7794 = ((u16)D_801E7794 + 1) | 0x100; - break; - - case 3: - if (D_801E77AC == 1) { - D_801E7794 = (u16)D_801E7794 + 1; - if (D_801E77A8 == 0) { - if (func_80189E54(-0xA) != 0) { - func_8002D4C8(0x472, 0); - D_801E7794 = 0x10C; - break; - } - func_8002D4C8(0x5EE, 0); - D_801E7798 = 0; - D_801E77A8 = 0; - D_801E779C = rand() % 9 + 3; - func_80139A68(D_801E779C, 0); - } else { - func_80139A68(D_801E779C, 0); - D_801E7794 = 0x106; - break; - } - } - D_801E7794 = ((u16)D_801E7794 + 1) | 0x100; - break; - - case 4: - case 12: - case 13: - if (D_801E7798 != 0) { - func_80189E54(D_801E7798); - func_8002D4C8(0x5EE, 0); - } - D_801E7794 = -1; - break; - - case 7: - D_801E77A4 = (u16)D_801E77AC - 1; - D_801E77A0 = rand() % 13 + 1; - func_80139A68(D_801E77A0, 0); - D_801E7794 = ((u16)D_801E7794 + 1) | 0x100; - break; - - case 8: - case 9: - if (D_801E779C == D_801E77A0) { - D_801E77A0 = rand() % 13 + 1; - func_80139A68(D_801E77A0, 0); - D_801E7794 = 0x109; - break; - } - if (D_801E77A4 == 0 ? D_801E779C < D_801E77A0 : D_801E77A0 < D_801E779C) { - if (D_801E7798 == 0) { - D_801E7798 = 0xA; - } - D_801E7798 = (u16)D_801E7798 * 2; - func_80139A68(D_801E7798, 0); - func_8002D4C8(0x5EE, 0); - if (D_801E7798 >= 0x2800) { - func_80029124(0x11A, 1); - D_801E7794 = 0x10D; - *(s32 *)(D_801E7778 + 4) = (s32)&D_801E9968; - } else { - s32 r; - D_801E77A8 = (u16)D_801E77A8 + 1; - s0 = D_801B94A4[D_801E77A8]; - r = rand() % (9 - s0 * 2); - s0 = s0 + 3; - D_801E779C = r + s0; - func_80139A68(D_801E7798, 0); - D_801E7794 = 0x10A; - } - } else { - D_801E7798 = 0; - D_801E77A8 = 0; - D_801E7794 = 0x10B; - func_8002D4C8(0xC62, 0); - } - break; - - case 10: - case 11: - D_801E7794 = 0x103; - break; - } - - if (D_801E7794 < 0) { - func_8017ADE8(0xA); - if (D_801E7794 == -1) { - func_8002D4C8(0x46F, 0); - } - { - u16 *p = &D_80115112; - D_801E7794 = 0; - *p = *p - 1; - } - } - if (D_801E7794 >= 0x100) { - s32 t = D_801E7794 & 0xFF; - D_801E7794 = t; - D_801E7700 = D_801B946C[t]; - } - - if (D_801E7700 != 0) { - D_80115130 = D_801E7700; - func_80139954(); - D_801E7704 = func_801376E8(D_801E7700, (s32)&D_801B9410); - } - } - } else { - if (D_801E7700 != 0) { - if (func_801399F0(D_801E7704) != 0) { - D_801E7700 = 0; - } - } else if ((func_800149E0(0) & 0x50) != 0) { - u16 idx = D_8011511A; - if (D_80115138[idx] == 8) { - func_80189540(0xF, func_8014168C((s16)idx)); - } - if (D_801E7030 != 0) { - func_80139954(); - D_800B9A15 = 0; - func_8002D4C8(0x474, 0); - D_80115112 = D_80115112 + 1; - } else { - func_8002D4C8(0x46F, 0); - D_80115112 = D_80115112 - 1; - } - } - } - - func_80188778(); - func_80137B80(); -} - - -extern s16 func_8014168C(s16 a0); -extern void func_8014BB24(s32 a0, s32 a1, s32 a2); -extern void func_8014B944(s32 a0, s32 a1, s32 a2); -extern void func_8014B2A8(void); -extern void func_801EA0E4(s32 a0); -extern void func_8014BD24(s32 a0, s32 a1); -extern void func_80189EA0(void); -extern s32 func_801621CC(s32 arg0); -extern void func_801622C4(void); -extern void func_80139954(void); -extern void func_80188778(void); -extern void func_80137B80(void); -extern s32 func_801376E8(s32 a0, s32 a1); -extern int func_8001AAA0(void); -extern s32 func_801399F0(s32 a0); -extern void func_8002D4C8(s32 a0, s32 a1); - -void func_801880EC(void) -{ - - extern s32 D_80126B58; - extern u8 D_801151C8[]; - extern s32 D_801151D0; - extern s16 D_801E7708; - extern u16 D_8011511A; - extern s16 D_801B9414[]; - extern u16 D_801E770C; - extern s16 D_801E7710; - extern u8 D_800B9A15; - extern u16 D_80115112; - extern s32 D_801E7700; - extern s32 D_801EC970; - extern s32 D_80115130; - extern s32 D_801B9410; - extern s16 D_801E7790; - extern s32 D_801E7704; - register s16 s0 __asm__("$16"); - register s32 s1 __asm__("$17"); - register s32 s2 __asm__("$18"); - register s32 base __asm__("$19"); - s32 pad[2]; - (void)&pad; - - D_801151D0 = *(s32 *)&D_801151C8[(u16)D_800B9A02 * 4]; - base = (s32)&D_80126B58; - - if (D_801E7708 != 0) { - D_801E7708 = D_801E7708 - 1; - s0 = func_8014168C((s16)D_8011511A); - - if ((s16)s0 != 3) { - s2 = 8; - s1 = 0x3E7; - } else { - s2 = 3; - s1 = 0x18; - } - - if (D_801E7708 >= 0x3F) { - if ((s16)D_801E770C != 0xFF) { - D_801E770C += 0x10; - if ((s16)D_801E770C >= 0x100) { - D_801E770C = 0xFF; - } - } else { - D_801E7710 = *(u16 *)&D_801E7710 + 0x10; - if (D_801E7710 >= 0x100) { - D_801E7710 = 0xFF; - } - } - } else { - if (D_801E7708 < 0x20) { - if (D_801E7710 != 0) { - D_801E7710 -= 0x10; - if ((s16)D_801E7710 < 0) { - D_801E7710 = 0; - } - } else { - D_801E770C -= 0x10; - if ((s16)D_801E770C < 0) { - D_801E770C = 0; - } - } - } else if (D_801E7708 == 0x30) { - s0 = (s16)s0; - func_8014BB24(base, D_801B9414[s0], 1); - func_8014B944(base, 0x1000000, 1); - if (s0 == 2) { - func_8014B2A8(); - } - func_801EA0E4(s2); - func_8014BD24(base, s1); - } - } - - func_80189EA0(); - if (D_801E7708 == 0) { - if (func_801621CC(s2) != 0) { - func_801622C4(); - func_80139954(); - D_800B9A15 = 0; - D_80115112 = 4; - return; - } - } - } else { - if (D_801E7700 == 0) { - D_801E7700 = (s32)&D_801EC970; - D_80115130 = (s32)&D_801EC970; - func_80139954(); - D_801E7704 = func_801376E8(D_801E7700, (s32)&D_801B9410); - if (D_801E7790 != 0) { - ((s32 (*)(s32))func_8001AAA0)(0x16); - } - } else { - if (func_801399F0(D_801E7704) != 0) { - D_801E7700 = 0; - func_8002D4C8(0x46F, 0); - D_8011511A = 0; - D_80115112 = 2; - } - } - } - - func_80188778(); - func_80137B80(); -} - - - - -s32 func_80188428(void) { - - extern s32 func_80014ED4(s32 a0); - extern s32 func_80015018(s32 a0); - extern s16 func_8014168C(s16 a0); - extern s32 func_80189540(s32 a0, s16 a1); - extern void func_8002D4C8(s32 a0, s32 a1); - extern void func_80186E24(void); - - extern s32 D_801E7700; - extern u16 D_8011511A; - extern u16 D_80115120; - extern u16 D_80115122; - extern u8 D_80115138[]; - extern u8 D_80115140[]; - extern u8 D_8011514E; - extern u8 D_80115143; - - s32 flags; - s32 pad; - s16 effectVal; - s32 byteVal; - s16 changed; - u16 *p; - u8 *pcur; - u8 *pmax; - s16 ret; - s32 v; - u8 b; - u8 bb; - u8 m; - s16 d; - register s32 zr __asm__("$0"); - - changed = 0; - flags = func_80014ED4(0); - if ((u16)flags != 0) { - D_801E7700 = 0; - } - pad = func_80015018(0); - p = &D_8011511A; - effectVal = func_8014168C(*(s16 *)p); - byteVal = D_80115138[*p]; - - if (flags & 0x40) { - ret = func_80189540(byteVal, effectVal); - { - s16 ret2 = ret; - return ret & -(ret2 != 0); - } - } else if (flags & 0x10) { - pad = byteVal + zr; - if (pad < 7) { - return -1; - } - func_8002D4C8(0x473, 0); - if (pad != 0xD) { - *p = 0; - } else { - *p = 1; - } - return 0; - } else { - pcur = (u8 *)&D_8011511A + (*p * 2 + 0x2E); - pmax = (u8 *)&D_8011511A + (*p * 2 + 0x3E); - - if ((u16)pad != 0) { - if ((u16)pad == D_80115120) { - if (--D_80115122 == 0) { - flags = pad & 0xF000; - D_80115122 = 3; - } - } else { - D_80115120 = pad; - D_80115122 = 8; - } - } else { - D_80115120 = 0; - D_80115122 = 0xC; - } - - if (flags & 0x1000) { - v = pcur[0] - 1; - pcur[0] = v; - changed = 1; - if ((u8)v >= 0x80) { - if (byteVal < 10) { - pcur[0] = pmax[0] - 1; - } else { - pcur[0] = 0; - changed = 0; - } - } - } - if (flags & 0x4000) { - b = pcur[0]; - v = b + 1; - pcur[0] = v; - changed = 1; - if ((u8)v >= pmax[0]) { - if (byteVal < 10) { - pcur[0] = 0; - } else { - pcur[0] = b; - changed = 0; - } - } - } - - if (byteVal == 7 || byteVal == 8) { - if (flags & 0x8000) { - v = pcur[1] - 1; - pcur[1] = v; - changed = 1; - if ((u8)v > 0x7F) { - pcur[1] = pmax[1] - 1; - } - } - if (flags & 0x2000) { - v = pcur[1] + 1; - pcur[1] = v; - changed = 1; - if (pmax[1] <= (u8)v) { - pcur[1] = 0; - } - } - } else { - u16 idx2; - bb = pcur[0]; - idx2 = D_8011511A; - m = D_80115140[idx2]; - d = (s8)bb - (s8)m; - if (d >= 6) { - D_80115140[idx2] = bb - 5; - } else if (d < 0) { - D_80115140[idx2] = bb; - } - } - - if (changed != 0) { - func_8002D4C8(0x45A, 0); - if (byteVal + zr == 0xC) { - D_8011514E = 0; - D_80115143 = 0; - func_80186E24(); - } - } - return 0; - } -} - - - -/* func_80188778 — build the SC03 HUD display list for this frame. - * 144 ins, frame 0x30, no stack locals. match_one: MATCH (closeness 0). - * - * TU: src/ov_SC03_001/ov_SC03_001_jr_8018A3A8.c (INCLUDE_ASM at line 3540) - * - * --------------------------------------------------------------------------- - * WHERE THE SHAPE CAME FROM (§71 — the already-matched neighbours in this TU) - * ((s32 * (*)(s32 *, Panel_S40_8018B238_80188778 *, s16))func_801889B8)(line 3586) : the panel walker. Its Panel_8017E978_8018B478 - * is 0x20 bytes -> the `w++` (+0x20) stride here, - * and its 3rd param is `s16 idx` -> the sll/sra - * pair at the top of the loop feeding BOTH the - * D_80115158 index and $a2. - * It also supplies the RC-12 `+ zr` lever below. - * func_8018BCD4 (line 3651) : the §36 bitfield-store OT-link idiom and the - * `volatile u16 *pbh` double read of D_800B9A02. - * - * --------------------------------------------------------------------------- - * THE SIX LEVERS THAT WERE ACTUALLY LOAD-BEARING (each byte-verified by - * removing it and re-running tools/match_one.py): - * - * 1. D_80115158 must be a STRUCT array, not `extern s16 D_80115158[]`. - * Symptom: an extra `la` hoisted into a callee-saved reg (+3 ins, $s4 saved). - * Mechanism: gcc-2.7.2 expand_expr rewrites `arr[i]` with a NON-CONSTANT - * index as `*(&arr + i*size)`, so the address reaches memory_address() as - * (plus SYMBOL_REF (mult reg 2)) -> not a legitimate MIPS address -> - * force_operand materialises the whole symbol into a register, which loop.c - * then hoists. A COMPONENT_REF goes through get_inner_reference instead, - * whose offset is force_reg'd, giving (plus SYMBOL_REF reg) — the legitimate - * assembler-macro form `lh $v0, D_80115158($v0)` that maspsx expands to - * lui/addu/lh %lo. (Same reason `D_800AE7BC[i].ot` already worked.) - * Cookbook index entry: "an extra `la` / the address hoisted into a - * callee-saved register across calls" -> §20 + gcc-2.7.2-map/cse_expr.md §H. - * - * 2. `register s32 n __asm__("$2")` (§17 register pin). Without it reorg fills - * the INNER `bne`'s delay slot by stealing `addu $a0,$s0,$zero` from the - * fall-through instead of taking `addiu $v0,4` from the else thread, which - * leaves an extra `j` in the stream. The pin does not change which register - * n gets (it was $v0 either way) — it changes what reorg's resource analysis - * can see, and that flips the choice. - * - * 3/4. BOTH `n = 3` sites must be `n = 3 + zr` (RC-12, the $0-ADD OPAQUE COPY - * documented on func_801889B8 in this same TU). `(plus (reg 0) 3)` is not a - * plain constant load, so - * - it survives the noop-move deletion that otherwise eats the outer else - * arm entirely (its value is already in $v0 from the compare constant), - * - and being the SAME rtx in both arms it stays cross-jumpable, so the - * outer `bne` targets the shared insn and reorg COPIES it into the delay - * slot. That copy is the target's "redundant" `addiu $v0,$zero,3`. - * Making only one of the two opaque gives 145 ins; making neither gives a - * `nop` in that delay slot. - * - * 5. `__asm__("")` at the head of the loop's if-body (§5a/§34 zero-byte fence). - * reorg.c stop_search_p halts fill_simple_delay_slots' forward scan on an asm - * insn, so the `beqz` slot is filled from the branch TARGET instead — the - * duplicated `addiu $v0,$s1,1` the target has in both the delay slot and - * after the call. Without it the function is one instruction short. - * - * 6. `__asm__ __volatile__("" ::: "memory")` before the D_801151D0 store. - * The OT-link store is MEM_IN_STRUCT_P + varying while D_801151D0 is a plain - * SYMBOL_REF, which is exactly the pair gcc-2.7.2's true_dependence drop - * clause discards (§37 /s-DEP LATTICE), so the scheduler hoists the global - * store above the read-modify-write. The fence restores the order. - * (Re-declaring D_801151D0 as a one-field struct via a §37 asm-label alias - * works identically; the fence is the smaller edit.) - * - * Also note: the loop guard is `if (n != 0)` + do-while, NOT `for (i=0;iw = 0x02000000; - ((PTag_S40_8018B238_80188778 *)ot)->addr = - ((PTag_S40_8018B238_80188778 *)(D_800AE7BC[*pbh].ot + 2))->addr; - ((PTag_S40_8018B238_80188778 *)(D_800AE7BC[*pbh].ot + 2))->addr = (u32)ot; - ot += 10; - __asm__ __volatile__("" ::: "memory"); /* lever 6 */ - D_801151D0 = (s32)ot; -} - - - -/* func_801889B8 — "draw one HUD panel" (family exemplar), 115 ins, frame 0x88. - * - * Re-derived from the .s (the earlier DIFF verdict was on a different draft shape). - * Banked structural sibling (same author, expanded form): - * src/ov_SC06_008/ov_SC06_008_jr_8013F350.c func_8013FAF8 - * u8 sp18[72]; s32 sp60[2]; -> sp18 @0x18, sp60 @0x60, frame 0x88 - * flag != 0 ? 0x585858 : 0x808080 / sp60[0] += -0x282828 - * func_800D29F8(flagN, func_800D27DC(flagN != 0, ...), ...) - * - * Three levers were needed; all three are byte-verified by tools/match_one.py: - * - * 1. The flag is BRANCHLESS here (xor/sltu/negu/andi), unlike the sibling's - * if/else — that is `-(a != b) & 0xFF`, i.e. store_flag normalized to -1 - * then truncated to u8. - * - * 2. RC-12 ($0-ADD OPAQUE COPY, docs/gcc-2.7.2-map/regalloc.md). The target - * keeps the flag in TWO live regs — `beqz $s0` (ternary 1) reads the andi's - * own dest while `$s4` (the copy) feeds everything after it. A plain - * `flag2 = flag;` is destroyed by cse.c make_regs_eqv head-promotion: the - * longer-lived copy becomes canonical and canon_reg rewrites ternary 1 to - * read $s4 (the single residual instruction in every plain-C spelling). - * `flag2 = flag + zr;` with `register s32 zr __asm__("$0")` is a (plus rA - * (reg 0)) — not a reg-reg set, so no qty merge and no canon — and - * assembles to the byte-identical `addu $s4, $s0, $zero`. The same lever - * materializes the tail copy `addu $s0, $s4, $zero`. - * - * 3. `w` must be pinned to $18: unpinned, global.c's density order hands $s1 - * to `w` and $s2 to `ot` (the target's grant is the other way round). The - * pin lands on a LOCAL fed from the parameter, never on the parameter - * itself (S3). Pin-free spellings (plain local, $0-add copy, routing `ot` - * through a local instead) were all tried and all leave the 22-diff swap. - */ - - - - -extern void func_80024054(void *a0, void *a1); -extern s32 *func_800D2650(s32 *, void *, s32, s32, s32, s32); -extern s32 func_800D27DC(s32, s32 *, void *, s32, s32); -extern s32 *func_800D29F8(s32, s32, void *, s32, s32); -extern s32 *func_80189214(s32 *, void *, s32, void *, s32); -extern s32 func_80188B84(void *, s32, s32, s32, s32 *); - -s32 *func_801889B8(s32 *ot, Panel_8017E978_801889B8 *w0, s16 idx) { - - extern u16 D_8011511A; - register Panel_8017E978_801889B8 *w __asm__("$18"); - u8 sp18[72]; - s32 sp60[2]; - register s32 zr __asm__("$0"); - s32 flag; - s32 flag2; - s32 flag3; - s32 flag4; - s16 i; - Prim4_8017E978_801889B8 *p; - s32 r; - - w = w0; - flag = -(D_8011511A != idx) & 0xFF; - func_80024054(w->f14, sp18); - flag2 = flag + zr; - ot = func_800D2650(ot, sp18, w->f10, w->f12, 1, - flag != 0 ? 0x585858 : 0x808080); - ot = func_80189214(ot, w->f18, idx, w->f8, - flag2 != 0 ? 0x585858 : 0x808080); - i = 0; - flag3 = flag2; - p = w->f18; - for (;;) { - r = func_80188B84(w->f1C, w->f0, idx, i++, sp60); - if (r == 0) { - break; - } - if (r < 0) { - func_80024054((void *)r, sp18); - if (flag3 != 0) { - sp60[0] += -0x282828; - } - ot = func_800D2650(ot, sp18, p->f0, p->f2, 1, sp60[0]); - } - p++; - } - flag4 = flag2 + zr; - return func_800D29F8(flag4, - func_800D27DC(flag4 != 0, ot, w->f4, w->fC, 0), - w->f8, w->fE, 0); -} - - - -/* func_80188B84 — "resolve one HUD sub-item's tile pointer", 166 ins, jtbl_801E597C - * (8 entries, minval 7 -> `addiu $a1,$a1,-7` + HImode re-extension, so the switch value is - * `(s16)arg1` with cases 7..14 — the same construction as the already-matched twin - * func_80188E1C in this overlay). Case bodies are emitted in SOURCE order, so the order here - * is 10/11/13, 12, 7/8, 14, default (block order after the jr: 80188C0C, 80188C5C, 80188CB8, - * 80188D10, 80188DC4). Case 9 is ABSENT: its jtbl slot (index 2) points at the default label. - * - * Structural sibling that fixed the whole engine idiom (already matched): - * src/ov_SC03_099/ov_SC03_099_jr_8013FFD8.c func_8013FFD8 - * `*arg2 = 0x808080; ret = 0; switch(...) … return ret;`, the `s16 v1 = (s16)arg1;` - * per-case truncation temp, `return 1` on the zero probe, `D_8010EDE8[v3 * 3]`, - * `*arg2 = 0x804040`. - * - * Four register/shape constraints read off the target: - * - * (a) the default arm's `< (mode == 5 ? 4 : 3)` must be a VALUE (`ok`), not a COND_EXPR in the - * `if`. do_jump's COND_EXPR case emits one conditional branch PER ARM (`bnez`+`beqz`, - * +4 ins); the target converges both `slti`s on a single `beqz`, which is the store-then- - * test form. `v1` must also be an s32 temp taken BEFORE the `mode == 5` test — a short - * local is re-extended inside each arm instead of being shared (+2 ins). The body then - * re-derives `(s16)arg3` (the ternary's label ends the cse block) and combine folds - * sra16+sll2 into the target's `sra $v0,$v0,14`. - * - * (b) `D_8010F468[(k + 1) * 2]` must go through the temp `e`. Written inline, fold - * distributes the +1 into the address (`sll $v0,$s0,3` + `lw $s0,8($at)`) and the - * function is one instruction short; a VAR_DECL leaf blocks the distribution and gives - * the target's `addiu $v0,$s0,1; sll $v0,$v0,3`. - * - * (c) `n` must be built IN PLACE (`n = A; n = n * B;`). As one expression the first `lbu` - * is a block-local quantity, local-alloc hands it $a0, and arg0's allocno then CONFLICTS - * with $a0 — so arg0 is copied out to $t1 and the target's `addu $t0,$a1,$zero` (the arg1 - * copy) never appears. In-place, arg0 keeps $a0 and the whole prologue falls into place. - * - * (d) RC-12 ($0-ADD OPAQUE COPY, docs/gcc-2.7.2-map/regalloc.md, and the same lever the - * matched func_801889B8 above needed). The target keeps arg1 in TWO registers: $a1 is - * consumed in place by the switch index (`addiu $a1,$a1,-7`) while the default arm reads - * the copy in $t0. A plain `mode = arg1;` is coalesced away and arg1 keeps $a1, pushing - * the switch index to $t0. `mode = arg1 + zr` is a (plus rA (reg 0)) — not a reg-reg set, - * so nothing merges it — and assembles to the byte-identical `addu $t0,$a1,$zero`. - * Finally `n = func_800291B4(c)` REUSES n as the second probe's temp: that 8th reference - * is what lifts n's allocno priority above the per-case `j` allocnos, so n gets $v1 and - * `j` gets $a1/$a0 instead of the other way round (the last 23-instruction residual). - */ - -s32 func_80188B84(void *arg0, s32 arg1, s32 arg2, s32 arg3, s32 *arg4) { - - extern s32 func_800291B4(s32 arg); - - extern u8 D_80115140[]; - extern u8 D_80115158[]; - extern u8 D_80115159[]; - extern u8 D_8018E2C8[]; - extern u8 D_801E77B0[]; - extern u8 D_801E77B8[]; - extern s32 D_8010EDE8[]; - extern s32 D_8010F468[]; - extern s32 D_801B8F08; - - register s32 zr __asm__("$0"); - s32 ret; - s32 n; - s32 mode; - - *arg4 = 0x808080; - n = D_80115159[(s16)arg2 * 2]; - n = n * D_80115158[(s16)arg2 * 2]; - ret = 0; - mode = arg1 + zr; - - switch ((s16)arg1) { /* jtbl_801E597C */ - case 10: - case 11: - case 13: { - s32 j = arg3 + D_80115140[(s16)arg2]; - if ((s16)arg3 < 6 && (s16)j < (s16)n) { - ret = ((s32 *)arg0)[(s16)j]; - } - break; - } - - case 12: { - s32 j = arg3 + D_80115140[(s16)arg2]; - if ((s16)arg3 < 6 && (s16)j < (s16)n) { - ret = ((s32 *)arg0)[D_801E77B0[(s16)j]]; - } - break; - } - - case 7: - case 8: { - s16 v1 = (s16)arg3; - if (v1 < 0xC) { - s32 t = func_800291B4(D_8018E2C8[v1]) & 0xFF; - if (t == 0) { - return 1; - } - ret = D_8010EDE8[t * 3]; - } - break; - } - - case 14: { - s32 j = arg3 + D_80115140[(s16)arg2]; - if ((s16)arg3 < 6 && (s16)j < (s16)n) { - s32 k = D_801E77B8[(s16)j]; - s32 c = k + 0x63; - if (k < 0 || (func_800291B4(c) & 0x40) == 0) { - ret = D_801B8F08; - } else { - s32 e = k + 1; - ret = D_8010F468[e * 2]; - n = func_800291B4(c); - if (n & 0x20) { - *arg4 = 0x804040; - } - } - } - break; - } - - default: { - s32 v1 = (s16)arg3; - s32 ok = ((s16)mode == 5) ? (v1 < 4) : (v1 < 3); - if (ok) { - ret = ((s32 *)arg0)[(s16)arg3]; - } - break; - } - } - - return ret; -} diff --git a/src/ov_SC04_019/ov_SC04_019_jr_80188E1C.c b/src/ov_SC04_019/ov_SC04_019_jr_80188E1C.c deleted file mode 100644 index 1d10565d6..000000000 --- a/src/ov_SC04_019/ov_SC04_019_jr_80188E1C.c +++ /dev/null @@ -1,5871 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8; -typedef void (*Handler)(struct Entry_8016E95C *); -extern void func_801458E0(void); -extern s32 D_800AE6AC; -extern s32 D_800AE6B0; -extern u8 D_80078E50; -extern void func_800D185C(u8 *a0); -extern void func_801458E8(void); -extern s32 func_80029504(void); -extern void func_80145B24(void); -extern u8 D_8018F74C; -extern u8 D_8018F6BC; -extern u8 D_8018F698; -extern u8 D_8018F674; -extern u8 D_8018F728; -extern u8 D_8018F704; -extern u8 D_8018F6E0; -extern u8 D_8018F650; -extern void func_80145934(void); -extern u8 D_8018F7DC; -extern u8 D_8018F7B8; -extern u8 D_8018F794; -extern u8 D_8018F770; -extern void func_80145A2C(void); -extern s32 func_800291DC(s32); -extern void func_800291C8(s32, s32); -extern void func_80162120(void); -extern void func_80029124(s32, s32); -extern s32 func_80165A50(s32); -extern void func_80029514(s32); -extern u8 D_80078EC0; -extern s32 func_80028FBC(void); -extern s32 func_80029000(void); -extern s32 func_80028D9C(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_80145BF8(void); -extern s32 func_800291B4(s32 arg); -extern void func_800291A0(s32, s32); -extern void func_80145C54(void); -extern s32 func_80145CEC(); -extern s32 func_80029178(s32 arg); -extern void func_80146014(s32 a0); -extern unsigned char D_8018EBD4[]; -extern unsigned char D_8018EC04[]; -extern unsigned char D_8018EC54[]; -extern unsigned char D_8018EC84[]; -extern unsigned char D_8018ECB4[]; -extern void func_80145EE8(s32 param_1); -extern void MoveImage(void *a0, s32 a1, s32 a2); -extern void func_80146074(void); -extern s32 func_80146128(void); -extern void func_80146360(void); -extern void func_801463A0(); -extern void func_8014607C(void); -extern s32 *D_80126B78; -extern u8 D_80078EC1; -extern s32 D_80078EC8; -extern s32 D_80126B9C; -extern s32 D_8011F730; -extern u16 D_801152B8; -extern u16 D_8012693A; -extern u8 D_80126BE0[]; -extern u8 D_801150F0[]; -extern void *memcpy(void *dst, const void *src, u32 n); -extern void func_80146FC4(s32 a0); -extern void func_80150A70(s32 a0); -extern void func_80147098(s32 *a0); -extern void func_8014A638(s32 arg0); -extern s32 func_80155458(s32 a0); -extern s32 func_80029104(void); -extern void func_80029344(void); -extern void func_8014ADE0(s32 a0); -extern void func_8014B350(s32 a0); -extern void func_8014B7A4(s16 *param_1); -extern s32 func_80161D58(s32 a0); -extern void func_80161A90(s32 a0); -extern void func_8014B504(u16 *a0); -extern void func_80149BEC(s32 a0); -extern void func_8014B5D0(s32 *a0); -extern void func_8014C99C(u8 *a0); -extern void func_8014B190(s32 s0); -extern void func_80148648(s32 a0, s32 a1); -extern s32 func_80149228(s32 a0); -extern void func_8014A59C(s32 a0); -extern void func_8016F14C(void *a0); -extern void func_80154418(void *a0); -extern void func_80154BE4(s32 a0); -extern void func_80165694(s32 arg0); -extern void func_801654A8(s32 a0); -extern void func_8014A680(s32 a0); -extern void func_8014A6A8(s32 a0); -extern void func_8014A71C(s32 a0); -extern void func_80172588(s32 *a0); -extern void func_801473DC(s32 *a0); -extern void func_80015978(s32 a0, s32 *a1); -extern void (*D_8018ED04[])(void *); -extern u8 D_80126BA4; -extern s32 D_80127098; -extern s32 D_80127094; -extern s32 D_80127090; -extern void func_80146534(void); -extern void func_8001D074(s32 a0, s32 a1); -extern void func_80146554(void); -extern void func_80146578(void); -extern void func_8001CFDC(s32, s32); -extern void func_8014659C(void); -extern void func_8001D074(s32, s32); -extern void func_801465C0(void); -extern void func_801465E4(void); -extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); -extern s32 D_8011F9D0; -extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); -extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 D_8011F750; -extern s32 D_8011F754; -extern u8 * func_801468C8(s32 arg0, u8 arg1); -extern s32 D_8011D030; -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); -extern s32 func_80146B9C(void *a0); -extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); -extern u16 D_8011DA28; -extern s32 func_80146B9C(void * arg0); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80146CA0(void *a0); -extern void func_80146CB4(void *a0); -extern void func_80146CC8(s32 a0); -extern void func_80146D30(s32 a0); -extern void func_80146D80(s32 *a0); -extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80146D90(s32 a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); -extern void func_80146E90(s32 *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80015954(s32 a0, s32 a1); -extern void func_80149374(s32 a0, s32 a1); -extern void func_80146F58(s32 a0, s32 a1); -extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 func_8012A68C(void); -extern s16 func_8012A758(void); -extern void func_8004978C(s16 *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern u8 D_80126DB0[]; -extern u16 D_80126DB6; -extern void func_8014704C(s32 *a0); -extern s32 func_80147054(void *a0); -extern void func_80147060(u8 * a0); -extern void func_8014706C(void *arg0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80147084(s32 *a0); -extern void func_8014708C(void *arg0); -extern s32 func_801470A0(void *a0); -extern void func_801470AC(s32 *a0); -extern void func_801470B4(s32 arg0); -extern void func_801470C0(s32 a0); -extern void func_80147118(s32 a0); -extern s16 D_80126BB8; -extern s16 D_80126BBA; -extern s16 D_80126BBC; -extern void func_80147264(s32 a0); -extern void func_80147290(void); -extern void func_801472B4(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void *D_8012707C; -extern void func_801472DC(void); -extern void func_801472F0(void *a0); -extern void func_80147364(u16, s32); -extern void func_80147300(u16 arg0); -extern void func_80147324(s32 arg0); -extern void func_801473EC(s32 *a0); -extern void func_80147460(s32 a0); -extern void func_80147514(); -extern void func_80147628(s32 a0); -extern void func_80147478(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); -extern s32 func_800129CC(s32 a0, s32 a1); -extern void func_80147514(s32 arg0); -extern void func_80013F3C(s32 a0); -extern void func_80012558(s32 a0, s32 a1); -extern void func_800126C4(s32 a0, s32 a1); -extern void func_800123F0(s32 a0, s32 a1); -extern void func_80147718(s32 a0); -extern void func_80147788(void *a0, s32 a1); -extern void func_801477A8(void *a0, s32 a1); -extern void func_801477C8(void *a0, s32 a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80147814(s32 a0, s32 a1); -extern void func_80147928(int a0, int a1); -extern void func_8014799C(int a0, int a1); -extern void func_80147A10(int a0, int a1); -extern void func_80147860(int a0, int a1, int a2, int a3); -extern void func_80147948(s32 a0, s32 a1, s32 a2); -extern void func_801479BC(s32 a0, s32 a1, s32 a2); -extern void func_80147A30(s32 a0, s32 a1, s32 a2); -extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147948(int a0, int a1, int a2); -extern void func_801479BC(int a0, int a1, int a2); -extern void func_80147A30(int a0, int a1, int a2); -extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147A84(s32 arg0); -extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147AAC(s32 arg0); -extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80147B5C(s32 a0, void *a1); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern void func_80147B18(s32 a0); -extern void func_80147B5C(s32 arg0, void *arg1); -extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147DC0(s32 a0, s32 a1); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147F50(s32 arg0); -extern void func_80148038(s32 a0, s32 a1); -extern s32 ratan2(s32 a0, s32 a1); -extern s32 csqrt(s32 a0); -extern s32 func_80012A60(s32 a0, s32 a1); -extern void func_80148094(int param_1, short *param_2, int *param_3); -extern void func_801485B8(s32 a0, s32 a1, s32 a2); -extern void func_801484B0(s32 a0, s32 a1); -extern s32 func_80154358(void *a0); -extern void func_801484E8(s32 a0, s32 a1); -extern void func_80148534(s32 a0, s32 a1); -extern void func_8014856C(s32 a0, s32 a1); -extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); -extern void func_80148634(void *a0); -extern u8 D_800B9A64; -extern s32 func_80014DC0(); -extern s32 func_80014D68(); -extern s32 func_80014D94(); -extern s32 func_80014CF8(); -extern void func_800120DC(); -extern s32 func_800CF8B4(); -extern u16 func_801487F4(s32 *a0); -extern u16 func_80148800(s32 *a0); -extern u8 func_8014880C(s32 *a0); -extern u16 func_80148818(s32 *a0); -extern s32 func_80047D3C(s32 a0); -extern s32 func_80148824(void *arg0); -extern s32 func_801488A8(u8 *a0); -extern s32 func_8014891C(s32 a0); -extern s32 func_80148980(u8 *a0); -extern s32 func_801489E8(s32 a0); -extern s32 func_80148A48(s32 a0); -extern int func_80148AFC(void *a0); -extern void func_80148AAC(u8 *a0); -extern s32 func_80148C18(void); -extern s32 func_80148C20(s32 a0, s16 a1); -extern s32 func_80148C34(s32 a0, s32 a1); -extern s32 func_80148C4C(s32 a0, s32 a1); -extern s32 func_80148C64(s32 a0, s32 a1); -extern s32 func_80148C7C(void); -extern s32 func_80148C84(s32 a0, s32 a1); -extern s32 func_80148C9C(s32 a0, s32 a1); -extern s32 func_80148CB4(s32 a0, s32 a1); -extern s32 func_80148CCC(s32 a0, s32 a1); -extern s32 func_80148CE4(void); -extern s32 func_80148CEC(void); -extern s32 func_80148CF4(s32 a0, s32 a1); -extern s32 func_80148D0C(s32 a0, s32 a1); -extern s32 func_80148D24(void *a0, int a1); -extern s32 func_80148D3C(void); -extern s32 func_80148F60(void); -extern s32 func_80148F68(s32 a0); -extern s32 func_80148F74(s32 a0); -extern s32 func_80148F80(s32 a0); -extern s32 func_80148F8C(s32 a0); -extern s32 func_80148F98(void); -extern s32 func_80148FA0(s32 a0); -extern s32 func_80148FAC(s32 a0); -extern s32 func_80148FB8(s32 a0); -extern s32 func_80148FC4(s32 a0); -extern s32 func_80148FD0(void); -extern s32 func_80148FD8(void); -extern s32 func_80148FE0(s32 a0); -extern s32 func_80148FEC(s32 a0); -extern s32 func_80148FF8(s32 a0); -extern s32 func_80149004(void); -extern void func_8014900C(s32 *a0); -extern void func_80149020(s32 *a0); -extern void func_80149034(s32 *a0); -extern void func_80149048(s32 *a0); -extern void func_8014905C(u8 *a0); -extern void func_801490E0(s32 *a0, s16 a1); -extern void func_801490E8(s32 *a0, s16 a1); -extern void func_801490F0(s32 *a0, s16 a1); -extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); -extern void func_801490F8(s32 a0, s32 a1); -extern s32 func_801491C4(s32 a0); -extern s32 func_80149184(s32 a0); -extern void func_80149204(s32 *a0); -extern void func_80149210(s32 a0, s32 a1); -extern s32 func_80149284(s32 *a0, s32 a1); -extern void func_80149350(s32 arg0); -extern void func_80149290(s32 a0); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_80149374(s32 arg0, s32 arg1); -extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8014942C(s32 arg0); -extern void func_8012EF70(s32 a0, s32 a1); -extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012EFB8(s32 a0); -extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); -extern void func_8014964C(s32 param_1, s32 param_2); -extern s32 func_801496D4(void *a0); -extern void func_8015AD08(); -extern void func_80149704(void); -extern void func_8015ACC4(); -extern void func_80149724(void); -extern u8 D_80078EBF; -extern s32 func_80149744(struct S_80149744 *a0); -extern void func_8015F7A0(); -extern void func_80149788(void); -extern void func_801653B8(); -extern void func_80149864(void); -extern s16 currentLocationId; -extern s32 func_8016F1AC(void); -extern s32 func_80149884(void); -extern void func_80160B00(); -extern void func_801498C0(void); -extern s32 func_80149AA8(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern void func_80146750(void *a0); -extern s32 func_801498E0(s32 *a0); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_80147364(u16 a0, s32 a1); -extern s32 func_800CCF28(s32 a0); -extern u8 D_80126B5C; -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_8015DAC4(s32 *a0); -extern void func_8015554C(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern void func_80149B14(s32 *a0); -extern u8 func_8014BEF8(void); -extern s32 func_80149B54(s32 * arg0); -extern void func_8015DE24(s32 *a0); -extern void func_80157510(s32 *a0); -extern void func_80149BAC(s32 *a0); -extern s32 func_80029178(s32 a0); -extern s32 func_80149C08(s32 arg0); -extern void func_801577C8(); -extern void func_80149C94(void); -extern void func_80157D20(void); -extern void func_80149CB4(void); -extern s32 func_80149CD4(s32 a0); -extern u8 func_8014B5B8(s32 *a0); -extern s32 func_80149D10(s32 a0); -extern s32 func_80149E94(s32 a0); -extern s32 func_80149DD8(s32 a0); -extern s32 func_80149D9C(s32 a0); -extern s32 func_80149F2C(s32 a0, s32 a1); -extern s32 func_80149E94(s32 arg0); -extern void func_80149FA8(void); -extern s32 D_8018EDCC[]; -extern s32 func_80149FB0(s32 a0); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern void func_8014A1B0(s32 a0, s32 a1); -extern s32 func_8014A048(s32 param_1); -extern u16 func_80156370(u16 a0); -extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); -extern void func_8015D4B4(); -extern void func_8014A218(void); -extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); -extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); -extern s32 func_8014A238(s32 arg0); -extern s32 func_8014A2E4(s32 a0); -extern void func_8014A380(s32 a0, s32 a1); -extern s16 D_801152B0; -extern s16 D_801152B4; -extern s32 func_8014A3E0(struct S_8014A3E0 *a0); -extern s32 func_8014A454(s32 a0); -extern s32 func_8014A4B4(void *a0); -extern void func_8015EDD4(); -extern void func_8014A4FC(void); -extern s32 func_8014A674(s32 *a0); -extern s32 func_8014A69C(s32 *a0); -extern s32 func_8014A6C4(s32 a0); -extern void func_8015E184(); -extern void func_8014A830(void); -extern s32 func_80029AF4(void); -extern s32 func_8014A850(s32 param_1); -extern void func_8014AA04(s32 a0); -extern void func_801599A4(void *a0); -extern void func_80159B3C(void *a0); -extern s32 func_80165A20(s32 a0); -extern void func_8014AB7C(); -extern void func_8014AC10(); -extern void func_8014AA28(void); -extern void func_8014AB5C(void); -extern void func_80162CCC(void); -extern void func_8014AB7C(s32 arg0); -extern void func_8014ABF0(void); -extern void func_80016714(void *a0, s32 a1); -extern void func_8014AC10(s32 arg0); -extern void func_8014ACC0(s32 a0, s32 a1); -extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); -extern void func_8014ACE8(void *a0, s32 a1, s32 a2); -extern void func_80146AFC(void *a0); -extern void func_8014ADA8(s32 a0, s32 a1); -extern void func_8014AD7C(s32 a0); -extern s32 D_80078E8C; -extern void func_8014B034(s32 arg0); -extern void func_8014B00C(s32 arg0); -extern void func_8014B084(void); -extern s16 D_80078E90; -extern void func_8014B034(s32 a0); -extern u8 D_80078EBA; -extern void func_800D10EC(void); -extern void func_8002AC98(void); -extern s32 func_8014B154(s32 *a0); -extern void func_8014B12C(void); -extern void func_8014B2F8(void); -extern void func_8014B4C4(void); -extern void func_8014B160(s32 a0); -extern s32 func_8016F1C4(void); -extern s16 D_80078E96; -extern s16 D_80078EB8; -extern u16 D_80078EA6; -extern void func_8014B2A8(void); -extern void func_8014B310(void); -extern void func_8014B2D0(void); -extern s32 D_80078E94; -extern s32 D_80078ECC; -extern void func_8014B33C(void); -extern u8 D_80062BF4[]; -extern void func_8014BC80(s32 a0, s32 a1); -extern void func_80019064(void *a0); -extern s32 D_80078E98; -extern void func_80166244(); -extern void func_8014B4D4(void *a0); -extern s16 D_80078E9A; -extern u8 D_80126D1C; -extern s32 D_80126D74; -extern void func_8014B598(s32 a0, s32 a1); -extern void func_8014B5B0(s32 *a0); -extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); -extern void func_8014B5D8(s32 s1); -extern s32 D_80078E9C; -extern s32 D_80078ED0; -extern void func_8014B6F0(s32 a0, s32 a1); -extern void func_8014B768(s32 a0, s32 a1); -extern void func_8014B944(s32 a0, s32 a1, s32 a2); -extern s32 D_80078EA4; -extern u16 D_80078EB2; -extern s16 D_80078EB4; -extern void func_8014BB0C(void); -extern void func_8014BB24(s32 a0, s32 a1, s32 a2); -extern void func_8014BC0C(s32 a0, s32 a1); -extern void func_8014BC44(s32 a0, s32 a1); -extern u8 D_800B9A17; -extern void func_8014BCC0(s32 a0, s32 a1); -extern u16 D_80078EB6; -extern s32 func_8014BCEC(s32 a0, s32 a1); -extern void func_8014BD24(s32 a0, s32 a1); -extern void func_8014BD60(s32 param_1, s32 param_2); -extern void func_8014BD98(s32 a0, u16 a1); -extern void func_8014BDC8(void); -extern void func_8014BDE0(void); -extern s32 func_8017267C(s32 *a0); -extern s32 func_80013294(void *a0, void *a1); -extern void func_80029ED4(s32 a0); -extern void func_8014BDE8(s32 a0); -extern void func_8014BE78(void); -extern void func_8014BE9C(void); -extern void func_80029124(s32 a0, s32 a1); -extern void func_8014BEC0(void); -extern void func_8014BF18(s32 a0); -extern void func_8014BF48(void); -extern u8 func_8014BF6C(void); -extern void func_8014BF8C(u8 arg0); -extern void func_8014BFB0(void); -extern u8 func_8014BFD4(void); -extern void func_8014BFF4(s32 a0, s32 a1); -extern void func_8014C010(s32 a0, s32 a1); -extern s32 func_8014C050(s32 a0, s32 a1); -extern s32 func_8014C088(s32 a0, s32 a1); -extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); -extern s32 func_8014C118(void * a0, s32 a1, s32 a2); -extern s32 func_8014C168(s32 * param_1, s32 param_2); -extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); -extern u8 D_8018EE54[]; -extern void func_8014C1A0(s32 arg0, s32 arg1); -extern s32 func_80013328(s32 a0, s32 a1); -extern s32 func_8014C59C(void *a0, void *a1); -extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); -extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); -extern s32 ratan2(s32 dx, s32 dy); -extern u8 D_8018EE5C; -extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); -extern s16 func_8014C5D0(s32 a0, s32 a1); -extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); -extern u8 D_80126D17; -extern void func_8014C6AC(void); -extern void func_8014C6C0(void); -extern u8 D_80126D1E; -extern void func_8014C6D0(void); -extern void func_8014C6E0(void); -extern s32 func_8014C860(s32 a0, s32 a1); -extern void func_8014C8C8(s32 a0, s32 *a1); -extern void func_8014C88C(s32 a0); -extern void func_8014C8C8(s32 dst, s32 * src); -extern void func_8014C8F0(s32 arg0); -extern u8 D_801151F0[]; -extern s32 func_8014C918(s32 a0, s32 a1); -extern s32 D_80126B50; -extern void func_8014C968(void); -extern void func_8014C978(void); -extern s32 func_8014C98C(void); -extern void func_80139914(s32 a0); -extern s32 func_8014CA00(s32 a0); -extern u16 func_8014CA70(s32 a0, s32 a1); -extern s32 func_8014CA14(s32 a0, s32 a1); -extern u16 func_8014CAE4(s32 *a0, s32 a1); -extern s32 func_8014CA88(s32 *a0, s32 a1); -extern s32 func_8014CAFC(void); -extern s32 func_8014CB0C(void); -extern s32 func_8014CB1C(void); -extern u8 D_80126D1F; -extern s32 func_8014CB2C(void); -extern s32 func_8014CB58(void); -extern u8 D_80126D1D; -extern void func_8014CB68(void); -extern s32 func_8014CB7C(void); -extern s32 func_8014CB8C(void); -extern short D_80126C9E; -extern void func_8014CB9C(struct Packed8 *a0); -extern s32 D_80126CDC; -extern void func_8014CBD8(void); -extern s16 D_80126CC4; -extern void func_8014CBE8(void); -extern void func_8014CBF8(void *a0); -extern void func_8014D3E0(s32 a0); -extern void func_8014D04C(void); -extern void func_8014CCB4(void); -extern void func_8014CC28(s32 a0); -extern void func_8014CD0C(u8 *a0); -extern s32 func_8014CF04(s32 a0, s32 a1, void *a2); -extern void func_8014CD80(s32 a0, void *a1, void *a2); -extern void func_8014D0A4(s32 a0); -extern s32 func_8014D2A0(s32 a0, void *a1, void *a2); -extern s32 func_8014D12C(s32 a0, void *a1, void *a2); -extern void func_8014D438(s32 a0); -extern void func_8014D3E0(s32 _arg0); -extern void func_8014D610(s32 a0, void *a1, void *a2); -extern s32 func_8014D4C0(s32 a0, void *a1, void *a2); -extern void func_8014D790(s32 a0); -extern void func_8014D738(void); -extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); -extern s32 func_8014D820(s32 a0, u16 *a1, u16 *a2); -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); -extern void func_8014DF94(s32 arg0); -extern void func_8014DF3C(void); -extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ -extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ -extern s16 D_801152AC; -extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); -extern void func_8014E48C(s32 a0); -extern void func_8014E434(void); -extern void func_8014E5B4(s32 a0, void *a1, void *a2); -extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); -extern void func_8014E6F8(struct SubE6F8 *a0); -extern void func_8014E6A0(void); -extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); -extern void func_8014E934(s32 _arg0); -extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); -extern s32 func_8014E98C(void *a0); -extern s32 D_801150D8; -extern s16 D_801152AA; -extern u8 D_80126720[]; -extern s16 D_80126724; -extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); -extern s32 func_8014ED80(struct SubED80 *a0); -extern int D_801E5BA8; -extern void func_8014ED28(s32 _arg0); -extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F24C(struct SubF24C *a0); -extern void func_8014F1F4(void); -extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F4C0(); -extern s32 func_8014F468(void); -extern int func_8014F74C(); -extern int func_8014F6F4(void); -extern u8 D_800D3918[]; -extern u8 D_801152A8[]; -extern s32 D_801152BC; -extern int func_8014F74C(s32 arg0); -extern s32 func_8014FA70(s32 a0); -extern s32 D_801E5BAC; -extern void func_8014FA04(s32 a0); -extern s32 func_8014FBC0(); -extern s32 func_8014FC18(u8 *self); -extern int func_8014FD54(int param_1); -extern void func_8014FCFC(void); -extern void func_80150170(void *a0); -extern s32 func_8014FE60(void *a0); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_8014FE60(void *e); -extern s32 func_80134510(s32 arg); -extern s32 func_80150150(s32 a, s32 b); -extern s32 func_80150460(s32 a, s32 b); -extern void func_801504D8(u16 *a0); -extern s32 func_80150480(s32 _arg0); -extern s32 func_80150528(void *a0, void *a1, void *a2); -extern s32 func_80150528(void *arg0, void *arg1, void *arg2); -extern s32 func_801506A4(s32 a0, s32 a1); -extern s32 func_801505FC(s32 a0); -extern s32 func_801506A4(s32 arg0, s32 arg1); -extern void func_80150820(s32 a0, s32 a1); -extern void func_8015086C(int param_1); -extern s32 func_801508B4(s32 a0); -extern s32 func_8015094C(s32 a0); -extern short func_801508F8(s32 a0); -extern s32 D_8018EE8C; -extern s32 D_80126990; -extern s32 D_80126994; -extern s32 func_80021174(s32 a0, s32 a1); -extern s32 func_8015094C(s32 param_1); -extern void func_80150B9C(void); -extern s32 func_80151184(s32 a0, s32 a1, s32 a2); -extern s32 func_80150BA4(s32 a0); -extern s32 func_801619D0(void *a0); -extern void func_80150BC8(s32 *a0); -extern s32 func_80150480(s32 a0); -extern u16 D_800AE6DC; -extern void func_80150C48(s32 a0); -extern int func_80151184(int arg, int a1, int a2); -extern int func_80150CA0(int arg); -extern void func_80150EC4(s32 a, s32 b); -extern void func_80150CC4(s32 a); -extern void func_80150CE4(s32 a); -extern void func_80150D04(s32 a); -extern void func_80150D24(s32 a); -extern void func_80150D44(s32 a); -extern void func_80150D64(s32 a); -extern void func_80150D84(s32 a); -extern void func_80150DA4(s32 a); -extern void func_80150DC4(s32 a); -extern void func_80150DE4(s32 a); -extern void func_80150E04(s32 a); -extern void func_80150E24(s32 a); -extern void func_80150E44(s32 a); -extern void func_80150EC4(s32 a0, s32 a1); -extern void func_80150E64(s32 a0); -extern void func_80150E84(s32 a0); -extern void func_80150EA4(s32 a0); -extern u8 D_800AE6C0; -extern s16 D_800AE6C8; -extern s16 D_800AE6CA; -extern s16 D_800AE6CC; -extern s32 D_800AE6C4; -extern s16 D_800AE6CE; -extern u8 D_800AE6BE; -extern u8 D_801201F8[]; -extern void func_80150F78(void); -extern void func_80150F80(s32 a0); -extern int func_80150FB4(int arg); -extern void func_80150FD8(s32 a0); -extern int func_80151014(int arg); -extern void func_80151038(s32 a0); -extern int func_80151070(int arg); -extern int func_80151094(int arg); -extern void func_801510B8(void); -extern void func_801510C0(void); -extern int func_801510C8(int arg); -extern int func_801510EC(int arg); -extern s32 func_8012DB84(void); -extern s32 func_80151110(void); -extern void func_80151130(void); -extern int func_80151138(int arg); -extern void func_8015115C(s32 *a0, s16 a1); -extern s32 func_80151164(s32 a0, s32 a1); -extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); -extern void func_801511A8(u8 *a0); -extern void func_801511C4(u8 *a0); -extern int func_80151204(int arg, int a1); -extern int func_801511E0(int arg); -extern int func_80151204(int a0, int a1); -extern void func_80151238(void *a0); -extern void func_8015126C(u16 *p); -extern void func_80151780(s32 a0); -extern void func_801516F0(s32 *a0); -extern void func_8015173C(s32 *a0); -extern s16 D_8011DB1A; -extern s32 D_80127518; -extern s32 D_801151FC; -extern s32 func_801725CC(u8 *a0); -extern s32 func_80029D3C(void); -extern void func_80151878(void); -extern void func_80153B58(s32 *a0); -extern s32 func_80151880(s32 a0); -extern s32 func_801518D8(s32 a0); -extern s32 func_80151944(void); -extern s32 func_80151924(void); -extern void func_8014E934(s32 a0); -extern s32 func_8014F3E8(s32 a0); -extern void func_801519C8(s32 a0); -extern void func_80151980(s32 a0); -extern M2C_UNK D_800D5880; -extern s32 D_800D58AC; -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801519C8(s32 arg0); -extern void func_80151C54(s32 a0); -extern void func_801542DC(s32 *a0, s32 a1); -extern void func_8015BDD0(s32 *a0); -extern void func_80165718(s32 a0); -extern u8 D_800D46E4[]; -extern void func_80151AE4(s32 arg0); -extern void (*D_8018EF34[])(void); -extern void func_80151D24(void *a0); -extern void func_80151DB0(s32 a0); -extern void func_80151D60(void *a0); -extern s32 func_80172630(u8 *a0); -extern s32 D_80062C14; -extern void func_80151DB0(s32 param_1); -extern void func_80151E78(s32 *a0); -extern void func_80151ECC(struct S80151ECC *a0); -extern void func_80151FB4(s32 a0); -extern void func_80151F38(s32 *a0); -extern void func_801553C0(s32 a0); -extern void func_80153C18(); -extern void (*D_8018EF58[])(void); -extern void func_80152058(void *a0); -extern void func_801520DC(s32 a0); -extern void func_80152094(s32 a0); -extern void func_80147324(s32 a0); -extern u8 D_80062C04[]; -extern M2C_UNK D_8018EF48; -extern void func_801520DC(s32 arg0); -extern void func_801470B4(s32 a0); -extern void func_8015369C(s32 a0); -extern void func_80152194(s32 *a0); -extern s32 func_801536DC(s32 a0); -extern void func_8015220C(s32 a0); -extern s32 func_80153800(s32 a0); -extern void func_801522CC(s32 a0); -extern void func_80152254(s32 *a0); -extern void (*D_8018EF6C[])(void); -extern void func_80152370(void *a0); -extern void func_801523F4(s32 a0); -extern void func_801523AC(s32 a0); -extern void func_8001382C(s32 a0, void *a1, void *a2); -extern u8 D_8018EF78[]; -extern void func_801523F4(s32 arg0); -extern void func_801525F4(int); -extern s32 func_801535F4(void *arg0); -extern void func_8015BF48(s32 *a0); -extern void func_80152500(int param_1); -extern void func_801525F4(s32 a0); -extern void (*D_8018EF88[])(void); -extern void func_80152698(void *a0); -extern void func_80152714(s32 a0); -extern void func_801526D4(s32 a0); -extern void func_80152790(s32 a0); -extern void (*D_8018EFA0[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018EF90; -extern void func_801528B0(s32 arg0); -extern void func_8015294C(s32 a0); -extern void func_80152A08(s32 a0); -extern void func_80152AC8(s32 a0); -extern void func_80152A50(s32 *a0); -extern void (*D_8018EFB4[])(void); -extern void func_80152B6C(void *a0); -extern void func_80152BF0(s32 a0); -extern void func_80152BA8(s32 a0); -extern void func_80152C80(s32 *a0); -extern void func_80152C40(s32 *a0); -extern void (*D_8018EFD0[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018EFC0; -extern void func_80152DA8(s32 arg0); -extern void func_80152E4C(s32 a0); -extern void func_80152EFC(s32 a0); -extern void func_80152FBC(s32 a0); -extern void func_80152F44(s32 *a0); -extern void (*D_8018EFE4[])(void); -extern void func_80153060(void *a0); -extern void func_801530E4(s32 a0); -extern void func_8015309C(s32 a0); -extern void func_80155440(s32 *a0); -extern void func_801530E4(s32 arg0); -extern void func_80153150(struct S80153150 *a0); -extern void func_801531BC(s32 a0); -extern void func_8015327C(s32 a0); -extern void func_80153204(s32 *a0); -extern void (*D_8018EFF8[])(void); -extern void func_80153320(void *a0); -extern void func_801533A4(s32 a0); -extern void func_8015335C(s32 a0); -extern void func_80153410(s32 *a0); -extern void func_80153490(s32 a0); -extern void func_80153550(s32 a0); -extern void func_801534D8(s32 *a0); -extern void (*D_8011DB28)(s32 a0); -extern s32 func_801536DC(s32 param_1); -extern void func_800139C8(s32 a0, void *a1, void *a2); -extern s32 func_80153978(s32 a0, u16 *src); -extern s32 func_80133784(s32 a0, void *src, s32 dst); -extern s32 func_801539F8(s32 a0, void *a1); -extern s32 func_801539F8(s32 a0, void * a1); -extern s32 func_8016DA04(s32 a0); -extern s32 func_80153BD8(s32 a0); -extern s32 func_80153BF0(s32 a0); -extern void func_80153C18(void); -extern u16 D_8011F748; -extern void func_80153C30(void); -extern void func_80153C74(s16 a0, s16 a1); -extern s16 D_8011DB18; -extern void func_80153C44(int a0, int a1, s16 a2); -extern s16 D_8011DB0C; -extern s32 D_80115210; -extern void func_80153C8C(void); -extern void func_80153C9C(void); -extern s32 func_80153CBC(void); -extern s32 D_8018F00C; -extern void (*D_8018F034[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018F014; -extern void func_80153D7C(s32 param_1); -extern void func_8015410C(void); -extern void func_80153E00(s32 param_1); -extern void func_80151664(void); -extern void func_80154134(u8 *a0); -extern void func_80154190(u8 *a0, s32 a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154218(u8 *a0, s32 a1, s32 a2); -extern void func_801541D8(u8 *a0, s32 a1, s32 a2); -extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); -extern void func_801542A4(); -extern void func_801542A4(s32 *a0, s32 a1); -extern void func_8015430C(); -extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); -extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); -extern s32 func_80154358(void * arg0); -extern void func_80154AB4(s32 a0, s32 a1); -extern void func_80154B20(s32 a0, s32 a1, s32 a2); -extern void func_80154AE0(s32 a0, s32 a1, s32 a2); -extern void func_80154B7C(u8 *a0, s32 a1); -extern void func_80154B4C(u8 *a0, s32 a1); -extern void func_80154BC8(void *a0, s32 a1, s32 a2); -extern void func_80154B98(void *a0, s32 a1, s32 a2); -extern u8 D_800D8D10[]; -extern s16 D_80078E9E; -extern void func_801550FC(s32 a0); -extern void func_80154ED8(s32 a0, s32 a1); -extern void func_80154F9C(s32 a0); -extern void func_800183E0(s32 a0); -extern void func_801550FC(s32 arg0); -extern void func_8001D150(s32, s32); -extern void func_8001D130(int, int); -extern void func_80155150(int param_1); -extern s32 D_800DE2A4[]; -extern void func_801552F4(s32 a0); -extern void func_80155344(s32 a0); -extern s32 func_80155394(s32 *a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80029178(s32); -extern int (*D_8018F080[])(void); -extern s32 func_80155458(s32 param_1); -extern s32 func_801659DC(u8 *a0); -extern s32 func_801554B8(void *arg0); -extern void func_801555F4(void *a0); -extern void func_80155518(s32 *a0); -extern void func_80155580(void *a0); -extern void (*D_8018F084[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern s32 func_80029B4C(s32 a0, s32 a1); -extern s32 func_80029BC8(s32 a0, s32 a1); -extern s32 func_80029C44(s32 a0, s32 a1); -extern s32 func_8015640C(s32 a0, s32 a1); -extern s32 rand(void); -extern u32 func_8015616C(s32 param_1, u16 param_2); -extern u16 func_80156370(u16 param_1); -extern s32 func_801564B0(s32 a0); -extern s32 func_8002A1B4(void); -extern s32 func_8002A400(void); -extern s32 func_8002A670(void); -extern s32 func_8002A8E0(void); -extern s32 D_801151E0[]; -extern s32 func_801565C0(void); -extern void func_80156A14(s32 *a0); -extern void func_80156648(s32 *a0); -extern u8 D_8011DAD8[]; -extern s32 func_8014C568(s16 *a0, s16 *a1); -extern void func_801567BC(s32 a0); -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018F4E8[]; -extern void func_80156A1C(s32 param_1, s32 param_2); -extern s32 D_801150E0[]; -extern void func_80156A88(s32 a0, s32 a1); -extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); -extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); -extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); -extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern s32 func_80135004(s32 a0, void *a1, s32 a2); -extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801575E4(void *a0); -extern void func_801574DC(s32 *a0); -extern void func_80157544(void *a0); -extern void (*D_8018F4F8[])(void); -extern void func_8014CC28(s32 a0); /* defined */ -extern s32 func_8014F3E8(s32 a0); /* declared */ -extern void func_8015BDD0(s32 *a0); /* defined */ -extern void func_801575E4(void *a0); /* defined */ -extern void func_80157580(s32 arg0); -extern u8 D_800D4F14[]; -extern void func_801576A8(void *arg0); -extern s32 func_8015773C(u8 *a0); -extern s32 func_8015771C(u8 *a0); -extern s32 func_8015773C(u8 * arg0); -extern int D_801E5BE0; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018F520[])(void); -extern void func_80157808(void *param_1); -extern void func_80157880(s32 a0); -extern s32 func_801725A4(u8 *a0); -extern u8 D_800D5128; -extern u8 D_8018F500; -extern void func_801578C0(s32 param_1); -extern void func_80147A84(int); -extern void func_80148038(int, int); -extern void func_80147460(int); -extern void func_80146D90(int); -extern void func_80161450(void *a0); -extern void func_80157A8C(int); -extern void func_80154A74(int, int); -extern unsigned char D_800D5178; -extern unsigned char D_8018F510; -extern void func_8015795C(int param_1); -extern void func_80161D20(s32 a0, s32 a1); -extern void func_80157A8C(s32 a0); -extern void func_8016706C(s32 a0); -extern u8 D_800D51AC[]; -extern void func_80157AC8(s32 param_1); -extern void func_80157B74(int param_1); -extern void func_8016158C(void *a0); -extern void func_8015BE04(s32 *a0); -extern void func_80157BC8(s32 a0); -extern void func_80157CCC(s32 a0); -extern void func_80157DC4(void *a0); -extern void func_80157FC4(void *a0); -extern void func_80157D74(u16 *a0); -extern void (*D_8018F560[])(void); -extern void func_80157E38(void *); -extern void func_80157E00(void *a0); -extern void func_80157E38(void * a0); -extern s32 func_80157F64(s32 *a0); -extern s32 func_80156600(void *a0); -extern void func_80157EA4(void *a0); -extern void (*D_8018F568[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018F534; -extern void func_80158038(void * param); -extern u8 D_800D524C[]; -extern void func_80161418(void *a0); -extern void func_801580B4(s32 a0); -extern void func_801581AC(s32 a0); -extern void (*D_8018F574[])(void); -extern void func_8015824C(void *a0); -extern void func_801582C0(void *); -extern void func_80158288(void *a0); -extern u8 D_800D52A8[]; -extern void func_801585A4(s32 *a0); -extern void func_801582C0(void *a0); -extern s32 func_801585AC(s32 *a0); -extern u8 D_800D52E8[]; -extern void func_80158344(s32 *a0); -extern s32 func_801615C4(void *a0, s32 a1); -extern u8 D_8018F544; -extern u8 D_800D533C; -extern void func_80158434(s32 param_1); -extern void func_80158548(s32 param_1); -extern void func_801585EC(u8 *a0); -extern void func_80158794(void); -extern s32 D_801E5BE8; -extern s32 D_801E5BF4; -extern s32 D_801E5BF8; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018F5B0[])(s32 *); -extern void func_80158AE4(void *a0); -extern void func_80158AB4(void *a0); -extern void func_8016F264(void); -extern void func_80165840(void); -extern void func_801658DC(void); -extern void func_80165A78(s32); -extern void func_80158AE4(void * a0); -extern M2C_UNK D_800D58D8; -extern void func_80158BB0(void *arg0); -extern s32 func_80159404(s32 a0, s32 a1); -extern void func_80158C40(s32 *a0); -extern void func_80158CD8(s32 *a0); -extern s32 func_80159434(s32 a0, s32 a1); -extern void func_80158D60(s32 a0); -extern M2C_UNK D_800D5904; -extern void func_80158E24(s32 *a0); -extern s32 D_8018F584[]; -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80158F00(int param_1); -extern u8 D_80110C3C[]; -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80158FA4(s32 param_1); -extern s32 func_801399F0(s32 a0); -extern u8 D_80110C94[]; -extern u8 D_80110CD4[]; -extern void func_80159070(void *a0); -extern s32 func_80029A94(s32); -extern void func_80175454(void); -extern void func_800298BC(void *); -extern void func_8002992C(s32); -extern void func_800CF804(void); -extern void func_800CF818(void); -extern u8 D_80110D0C[]; -extern void func_80159120(s32 a0); -extern void func_801592CC(s32 *a0); -extern u8 D_800AE6BD; -extern s32 D_801E5BF0; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018F800[])(void); -extern void func_80159698(void *a0); -extern s32 func_801596D4(void *a0); -extern void func_80174B6C(void); -extern void func_80129248(s16 a0); -extern void func_8013C938(void); -extern void func_8013CB20(void); -extern void func_8013C98C(void); -extern void func_8002850C(s32, s32, s32); -extern void func_80028620(s32, void *); -extern s16 D_800B9AAC[]; -extern s16 D_800B9B00; -extern u16 D_801270C0; -extern u32 D_800AFAE8[]; -extern char D_8018F620[]; -extern s32 func_801596F0(s32 param_1); -extern s32 func_80159874(void); -extern void func_800167B8(s32 a0); -extern s32 func_8015987C(s32 a0); -extern int func_800167F0(int arg); -extern int func_801598BC(void); -extern void func_80159968(void *a0); -extern void func_801598E0(u8 *a0); -extern void (*D_8018F8A4[])(void); -extern void func_80159A20(void *a0); -extern void func_801599E0(void *a0); -extern void func_80159A18(void); -extern void func_80159BE4(s32); -extern void func_80159B08(s32 *a0); -extern void func_80159B70(void *a0); -extern void func_80159B3C(void * a0); -extern void (*D_8018F9F8[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018F814; -extern void func_80159BE4(s32 arg0); -extern void func_8015A1C8(s32 a0); -extern void func_8015A2D8(s32); -extern void func_8015A1FC(s32 *a0); -extern void func_8015A264(void *a0); -extern void func_8015A230(s32 *a0); -extern void (*D_8018FA00[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018F824; -extern s32 func_80172608(u8 *a0); -extern void func_8015A2D8(s32 param_1); -extern u8 D_800D48DC; -extern s32 func_8015AB7C(s32 a0); -extern s32 D_8011F9C4; -extern s32 func_8015ABD4(s32 a0, s32 a1, s32 a2); -extern s32 func_80161CD0(s32 a0, s32 a1); -extern M2C_UNK D_8018F844; -extern void func_8015AC48(s32 arg0); -extern void func_8015AC90(s32 a0); -extern void func_8015ADB0(s32 a0); -extern void func_8015ACC4(s32 *arg0); -extern void func_8015AD3C(void *a0); -extern void func_8015AD08(void *arg0); -extern void (*D_8018FA08[])(void); -extern void func_8015ADB0(s32); -extern void func_8015AD78(s32 a0); -extern void func_8015ADB0(s32 arg0); -extern s32 D_800D4A9C; -extern int func_8015B6F4(int param_1); -extern u8 D_800D4F8C[]; -extern s32 func_8015B7B4(s32 a0); -extern u8 D_800D4BE0[]; -extern s32 func_8014A51C(void); -extern s32 func_8015B858(u8 *a0); -extern s32 D_800D4B48; -extern void func_8015B8F8(s32 *a0); -extern void func_8015BD8C(s32 *a0); -extern s32 func_8015BE94(); -extern void func_8015BE38(struct Obj *a0); -extern s32 func_8015BE74(void); -extern void func_80161124(void *a0); -extern s32 func_8015BE94(s32 *a0); -extern s32 func_8015AE2C(); -extern s32 func_8015BEC4(void); -extern s32 func_8015B950(s32 arg0); -extern s32 func_8015BEE4(void); -extern void func_8015BF04(s32 *a0); -extern void func_8015C0C4(s32 a0); -extern void func_8015BFF4(void *a0); -extern void func_8015BF7C(s32 *a0); -extern void func_8015C030(s32 *a0, s32 a1); -extern void func_8015BFB0(s32 *a0, s32 a1); -extern void (*D_8018FA30[])(void); -extern void func_8015C0C4(s32); -extern void func_8015C08C(s32 a0); -extern s32 func_8015C128(s32 param_1); -extern void func_8015C6A4(void); -extern void func_8015C788(s32 a0); -extern void func_8015C6AC(s32 *a0); -extern void func_8015C714(void *a0); -extern void func_8015C6E0(s32 *a0); -extern void (*D_8018FA3C[])(void); -extern void func_8015C788(s32); -extern void func_8015C750(s32 a0); -extern void func_8015CB94(s32 a0); -extern void func_8015CBCC(void); -extern void func_8015CBD4(void); -extern void func_8015CBDC(void); -extern void func_8015CBE4(void); -extern void func_8015CBEC(void); -extern void func_8015CBF4(void); -extern void func_8015CBFC(void); -extern void func_8015CC04(void); -extern void func_8015CC0C(s32 *param_1); -extern void func_8015CC74(s32 *a0); -extern void func_8015CC40(s32 *a0); -extern s32 func_8015CCD0(); -extern s32 func_8015CCB0(void); -extern s32 func_801725E0(u8 *a0); -extern s32 func_8015CCD0(s32 param_1); -extern s32 func_8015CD20(s32 arg0); -extern void func_8015CF24(s32 a0); -extern void func_8015D01C(); -extern void func_8015CF58(s32 *param_1); -extern void func_8015CFC0(s32 *a0); -extern void func_8015CF8C(s32 *a0); -extern void func_8015CFFC(void); -extern void func_8015D01C(int param_1); -extern void (*D_8018F8B0[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018FAE0; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018EBC4[]; -extern void func_8015D414(int param_1); -extern void func_8015D57C(s32); -extern void func_8015D480(s32 *a0); -extern s32 func_8015D4E8(s16 *a0); -extern void func_8015D4B4(s16 *a0); -extern void func_8015D524(s32 arg0); -extern void func_8015D544(s32 a0); -extern void func_801746DC(void); -extern void func_8015D57C(s32 arg0); -extern s32 func_80161B18(void *a0); -extern s32 func_80161B84(void *a0); -extern void func_80154150(int, int); -extern void func_80149374(int, int); -extern unsigned char D_8018FAF4[]; -extern void func_8015D5E8(int param_1); -extern int func_8015E0D4(int); -extern void func_8015DA5C(s32 a0); -extern void func_8015DB6C(s32 a0); -extern void func_8015DA90(s32 *a0); -extern void func_8015DAF8(s32 *a0); -extern void func_8015DB6C(s32); -extern void func_8015DB34(s32 a0); -extern void func_8015DCB8(s32 a0); -extern void func_8014BD60(s32 a0, s32 a1); -extern int func_8015DD74(int); -extern void func_8015DBD4(void *arg0); -extern int func_8015DC84(int a0); -extern s8 D_8018FB30[]; -extern void func_8015DCB8(s32 param_1); -extern int func_8015DD74(int arg0); -extern void func_8015DECC(s32 a0); -extern void func_8015DDF0(s32 *a0); -extern void func_8015DE58(s32 *a0); -extern void func_8015DECC(s32); -extern void func_8015DE94(s32 a0); -extern void func_8015E018(s32 a0); -extern void func_8015DF34(void *arg0); -extern int func_8015DFE4(int a0); -extern void func_8015E018(s32 param_1); -extern int func_8015E0D4(int a0); -extern void func_8015E22C(s32 a0); -extern void func_8015E150(s32 *a0); -extern s32 func_8015E1B8(s32 a0); -extern void func_8015E184(s32 *arg0); -extern void func_8015E22C(s32); -extern void func_8015E1F4(s32 a0); -extern u8 D_800D4FF4[]; -extern u8 D_800D5098[]; -extern u8 D_800D5060[]; -extern s32 func_8014A850(s32 a0); -extern void func_8015E40C(s32 a0); -extern void func_8015E588(void); -extern void func_8015E4B0(s32 a0); -extern void func_8015E288(s32 a0); -extern u16 D_8018FB78; -extern u16 D_8018FB7A; -extern u16 D_8018FB7C; -extern s32 D_8018FB80; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -extern void func_8013C9C4(void *a0); -extern s32 D_8018FB88; -extern void func_8015E5B0(u8 *self); -extern void func_8015E714(s32 *a0); -extern void func_8015E95C(s32); -extern void func_8015E84C(s32 *a0); -extern void func_8015E8E8(s32 *a0); -extern void func_8015E9B8(s32 *a0); -extern void func_8015E8B4(s32 *a0); -extern void func_8015E924(s32 a0); -extern void func_8015E95C(s32 a0); -extern s16 D_801152A0; -extern void func_80160818(s32 *a0); -extern void func_8015ED6C(s32 *a0); -extern void func_8015EE7C(s32); -extern void func_8015EDA0(s32 *a0); -extern s32 func_8015EE08(s32 a0); -extern void func_8015EDD4(s32 *arg0); -extern void func_8015EE44(s32 a0); -extern int D_800D4C48; -extern int D_8018F894; -extern void func_8015EE7C(s32 param_1); -extern void func_8015EEE0(void *arg0); -extern void func_8015EF9C(void); -extern void func_8015F080(s32); -extern void func_8015EFA4(s32 *a0); -extern void func_8015F00C(s32 *a0); -extern void func_8015EFD8(s32 *a0); -extern void func_8015F048(s32 a0); -extern void func_8015F080(s32 a0); -extern s32 D_80062BE8; -extern void func_801466F0(s32, s32, s32, s32, s32, s32, s32, s32); -extern s32 func_80161208(void); -extern void func_8015F118(void *a0); -extern void func_8015F260(s32 *a0); -extern void func_8015F380(); -extern void func_8015F2BC(s32 *a0); -extern void func_8015F324(s32 *a0); -extern void func_8015F2F0(s32 *a0); -extern void func_8015F360(void); -extern s32 func_801725B8(u8 *a0); -extern void func_8015F380(void* arg0); -extern void func_8015F738(s32 *a0); -extern void func_8015F848(s32 *a0); -extern void func_8015F76C(s32 *a0); -extern s32 func_8015F7D4(s32 a0); -extern void func_8015F7A0(s32 *arg0); -extern void func_8015F810(s32 *a0); -extern void func_80147078(s32 *, s16); -extern void func_80159B70(void *); -extern void func_8015F89C(void *arg0); -extern void func_8015F948(s32 *param_1); -extern void func_8015F9A4(void *arg0); -extern void func_8015FA24(s32 arg0); -extern void func_8015FBE0(s32 *a0); -extern void func_8015FA44(s32 *a0); -extern void func_8015FAAC(s32 *a0); -extern void func_8015FA78(s32 *a0); -extern s32 func_801612B8(void *a0, s32 a1); -extern void func_8016007C(s32 a0); -extern void func_8015FAE8(void *arg0); -extern void func_8015FCC8(void *param_1); -extern unsigned int D_8018FC0C[]; -extern void func_8015FD74(int param_1); -extern s32 func_80028DE0(void); -extern u8 func_80165700(s32 a0, s32 a1); -extern void func_8015FDCC(s32 a0); -extern u8 D_80078EC2; -extern u8 func_801656E8(s32 a0, s32 a1); -extern void func_80165670(s32 a0, s32 a1); -extern void func_8016004C(s32 a0); -extern void func_8015FF20(void *param_1); -extern void func_801601AC(s32 *a0); -extern void func_801600D0(s32 *a0); -extern void func_80160138(s32 *a0); -extern void func_80160104(s32 *a0); -extern void func_80160174(s32 *a0); -extern void func_801601E4(s32 *a0); -extern void func_80160244(s32 *a0); -extern void func_8016032C(void); -extern void func_80160410(s32 *a0); -extern void func_80160334(s32 *a0); -extern void func_8016039C(s32 *a0); -extern void func_80160368(s32 *a0); -extern void func_801603D8(s32 *a0); -extern u8 D_80062BD0; -extern void func_80160410(s32 * a0); -extern void func_801607B8(s32 *a0); -extern void func_801608C0(s32 *a0); -extern void func_801607E4(s32 *a0); -extern void func_8016084C(s32 *a0); -extern void func_80160888(s32 *a0); -extern void func_80160A28(s32 a0); -extern void func_80160A74(s32 *a0); -extern void func_80160BB4(s32 *a0); -extern void func_80160ACC(s32 *a0); -extern s32 func_80160B34(s32 a0); -extern void func_80160B00(s32 *arg0); -extern void func_80160B70(s32 a0); -extern void func_80160C28(void *arg0); -extern void func_80160CB4(s32 *a0); -extern void func_80160D10(void *arg0); -extern void func_80160DEC(u8 *a0); -extern void func_80160F00(); -extern void func_80160E3C(s32 *a0); -extern void func_80160EA4(); -extern void func_80160E70(s32 *a0); -extern void (*D_8018FCBC[])(void); -extern void func_80160EA4(void *a0); -extern void func_80160EE0(void); -extern void func_80160F00(void* arg0); -extern void func_800D0F4C(s32 a0); -extern u8 D_80110EC0; -extern void func_80160F70(s32 a0); -extern void func_80160FE0(s32 *a0); -extern void func_80161034(void *a0); -extern void func_80161094(s32 a0); -extern void func_801610FC(void); -extern void func_801483E8(void); -extern s32 func_80161A60(s32 a0); -extern void func_8016130C(void *a0, s32 a1); -extern void func_80161240(void *a0); -extern void func_80161374(void *a0, s32 a1); -extern void func_80161278(void *a0); -extern s32 func_801612B8(void * a0, s32 a1); -extern void func_8016163C(void *a0, s32 a1); -extern void func_80161774(void *a0, s32 a1); -extern s32 func_8016197C(s32 a0, s32 a1); -extern s32 func_80161488(void *a0); -extern void func_80161888(void *a0, s32 a1); -extern void func_801614E4(void *a0); -extern void func_8016191C(void *a0, s32 a1); -extern void func_8016151C(void *a0); -extern void func_80161554(void *a0); -extern s32 func_801615C4(void * arg0, s32 arg1); -extern s32 func_801619A4(s32 *a0); -extern s32 func_80161A00(s32 a0); -extern s32 func_80161A30(s32 a0); -extern int func_801497A8(void); -extern int func_80161BE0(void *param_1); -extern u16 D_8018FCEC[]; -extern void func_80161C98(int param_1, u32 param_2); -extern void func_80161E08(s32); -extern s32 func_80162438(s32); -extern s32 D_800AE6A8; -extern void func_800D1734(void *); -extern s32 D_8018FD50; -extern void func_80161D88(void); -extern void func_80161E08(s32 param_1); -extern int func_800291DC(int); -extern int func_800D0E30(void *a0); -extern int func_801620C4(void); -extern s32 func_800D0D7C(s32, s32); -extern int D_801E5C00[]; -extern void func_8016216C(void); -extern s32 func_801621CC(s32 arg0); -extern void func_801622C4(void); -extern void (*D_8018FD74[])(void); -extern void func_80162330(void *a0); -extern void func_8014706C(void *a0); -extern s32 func_8016236C(u8 *a0); -extern void func_800D0C48(s32 a0); -extern s32 func_801623B8(s32 *a0); -extern s32 func_800167F0(s32 a0); -extern s32 func_80162414(void); -extern s32 func_80162438(s32 _unused0); -extern int func_801626B8(void); -extern void func_80162714(void); -extern int D_801E5C58[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018FDBC[])(void); -extern void func_80162834(void *a0); -extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80162968(s32 a0); -extern s32 func_80162ACC(u8 *a0); -extern u8 D_800B5CB8; -extern s32 D_8018FDAC; -extern s32 D_800B5CBC; -extern u8 D_800B5CDF; -extern s32 D_800B5CEC; -extern void func_80162870(s32 param_1); -extern void func_801628F4(s32 *a0); -extern void func_80162968(s32 param_1); -extern void func_80162AC0(s32 *a0, s8 a1); -extern s32 func_80162AE0(u8 *a0); -extern void func_80162AF4(void); -extern void func_80162CC4(void); -extern s32 D_80126D40; -extern void func_80162B1C(void); -extern void func_80162D28(s32 *a0); -extern void func_80162D88(s32 *a0); -extern void func_80162DE8(s32 *a0); -extern void func_80162E48(s32 *a0); -extern void func_80162EA8(s32 *a0); -extern void func_80162F60(s32 arg0, s32 arg1); -extern void func_80162F80(s32 arg0, s32 arg1); -extern void func_80162FA0(s32 arg0, s32 arg1); -extern void func_80162F08(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80162FC0(s32 *a0); -extern void func_80162FF4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801630C4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163194(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg4); -extern void func_8016325C(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163234(s32 a0); -extern s32 D_80115100; -extern s32 func_801632E0(void); -extern s32 D_80115200; -extern s32 func_801632F0(void); -extern u16 D_80126B18[]; -extern void func_80163328(void); -extern s32 func_801633A8(void); -extern s32 func_80163408(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void func_80163534(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, u16 * a5); -extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); -extern char D_801E5054[8]; -extern void *memcpy(void *dst, const void *src, unsigned int n); -extern void func_801634D8(s32 param_1, u16 param_2, u16 param_3, s32 param_4, u16 param_5); -extern void func_80157158(); -extern void func_80163664(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801636D0(s32 a0, s32 a1); -extern s32 func_8016380C(struct S8016380C *a0, s32 a1); -extern void *memcpy(void *dst, void *src, s32 n); -extern s32 func_801638A0(u8 *a0, s32 a1); -extern s32 func_80163950(s32 a0); -extern void (*D_8018FDC4[])(void); -extern void func_80163A58(void *a0); -extern void func_80163A94(s32 param_1); -extern void func_80163C2C(s32 param_1); -extern void func_80163EC8(s32 param_1); -extern void func_80164270(s32 *a0); -extern void func_80164418(void); -extern void func_80163764(s32 a0); -extern void func_801642AC(s32 a0); -extern void func_8016432C(s32 a0); -extern void func_80164410(void); -extern s32 func_80012DBC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164530(s32 arg0); -extern void (*D_8018FE18[])(void); -extern void func_80164744(s32 param_1); -extern void func_8001C810(s32 a0, s32 a1); -extern void func_80164A74(s32 *a0); -extern void func_80164930(s32 a); -extern u16 D_800DF2E0; -extern s32 D_8018FDE0; -extern s16 D_8018FE14; -extern s16 D_8018FE12; -extern s16 D_8018FE10; -extern void func_801647A4(int param_1); -extern void func_80164ACC(); -extern void func_80164864(void *a0); -extern void func_80164930(s32 param_1); -extern s32 func_8014C308(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164ACC(s32 a0); -extern void (*D_8018FE24[])(void); -extern void func_80164BA0(void *a0); -extern void func_8001CD50(s32 a0, s32 a1); -extern void func_800233CC(void *, unsigned short); -extern void func_80164DD0(s32 a0); -extern void func_80164DB0(void); -extern u8 D_801E5CB8; -extern u8 D_801E5CB9; -extern u8 D_801E5CBA; -extern u8 D_801E5CBB; -extern u8 D_801E5CBC; -extern u8 D_801E5CBD; -extern u8 D_801E5CBE; -extern u8 D_801E5CBF; -extern void func_80164BDC(s32 param_1); -extern void func_80164E40(void); -extern void func_80164CD4(u8 *a0); -extern void func_80164D4C(void *arg0); -extern void (*D_8018FE34[])(void); -extern void func_80164EA4(void *a0); -extern void func_80165124(void *a0); -extern void func_80164EE0(int param_1); -extern s32 func_80165140(s32 a0); -extern void func_801651B8(void *a0); -extern void func_80164F44(void *arg0); -extern void func_80165024(void *a0); -extern void func_80165064(s32 *a0); -extern void func_801650C4(s32 *a0); -extern s32 func_80165140(s32 param_1); -extern s32 func_80165240(s32 a0, s32 a1, s32 a2); -extern s32 D_801E5CF8; -extern void func_801651B8(void * param_1); -extern u8 D_80126CF8; -extern void func_8016533C(void); -extern void func_801653F4(s32 a0); -extern void func_80165580(s32 a0); -extern void func_80165374(s32 a0); -extern void func_80165580(s32 _arg0); -extern void func_801653B8(s32 *a0); -extern s32 func_80165624(s32 a0); -extern u8 D_80078EC5; -extern void (*D_8018FE78[])(void); -extern u8 func_80165658(s32 a0, s32 a1); -extern void func_800CAE0C(s32 a0); -extern void func_801654A8(s32 arg0); -extern void func_80165B28(void *a0); -extern void func_801655E4(s32 a0); -extern u8 D_8018FEF4[]; -extern s32 D_8018FF14[]; -extern u8 D_8018FF90[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018FFB0[]; -extern u8 D_8018FFD0[]; -extern void func_800CAF6C(void); -extern void func_80165770(void); -extern void func_801657D8(void); -extern u8 D_80078EC3; -extern void func_801657A0(void); -extern s32 D_80078EA0; -extern s32 D_80078EA8; -extern u8 D_80078EBB; -extern s32 D_80078ED4; -extern s32 D_80078ED8; -extern s32 D_80078EDC; -extern u8 D_80078EE0; -extern void func_80165874(void); -extern s8 D_80078EC4; -extern void func_801658EC(void); -extern s32 func_80165900(void); -extern s32 func_80165910(void); -extern s32 D_8012672C; -extern s32 D_8012811C; -extern s32 D_80126B08; -extern void func_80165938(void); -extern void func_80165958(void); -extern s32 func_80165978(void); -extern void func_80165988(void); -extern s32 func_801659A8(void); -extern void func_801659B8(void); -extern s32 func_801659CC(void); -extern void func_80165A18(void); -extern s32 func_80165A50(s32 _arg0); -extern void func_80165AC8(void); -extern void func_80165A78(s32 arg0); -extern void (*D_8019006C[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_801900E8[])(void); -extern void func_80165BB4(u8 *a0); -extern void func_80165B6C(u8 *a0); -extern void func_80165C58(s32 arg0); -extern void func_80165BFC(void *a0); -extern void func_80165C78(void); -extern M2C_UNK D_801E5064; -extern void func_80165E2C(u16 *arg0); -extern s32 func_80165FA4(s32 a0, s32 a1, s32 a2); -extern s32 func_80167DBC(s32 a0, s32 a1, s32 a2); -extern s32 func_80167AE0(s32 a0, s32 a1, s32 a2); -extern void func_80165E90(void); -extern void func_80020F34(s32 a0, s32 a1); -extern s32 func_80165FA4(s32 arg0, s32 arg1, s32 arg2); -extern void (*D_801900F4[])(void); -extern void func_80166018(void *a0); -extern void func_80166054(s32 arg0); -extern void func_801661CC(s32 param_1); -extern void func_80166244(void* arg0); -extern void func_8016629C(void *a0); -extern void func_801662F4(void *a0); -extern void func_8016634C(void *a0); -extern void func_801663A4(void *a0); -extern void (*D_801900FC[])(void); -extern void func_801663FC(void *a0); -extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); -extern void func_800D1FC8(s32 a0, s32 a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern void func_801665B4(); -extern void func_80146C3C(); -extern void func_80166438(u8 *a0); -extern s32 func_80128ED8(s32 param_1, s32 *param_2); -extern void func_800D22E4(s32 a0); -extern void func_801665B4(s32 *a0); -extern void (*D_801901C4[])(void); -extern void func_80166618(void *a0); -extern void (*D_801901D4[])(void); -extern void func_80166654(void *a0); -extern s32 func_80166690(s32 param_1, s32 param_2); -extern s32 func_80166994(); -extern s32 func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern s32 func_80167540(s32 arg0); -extern void (*D_801901E4[])(void); -extern void func_801678B4(void *a0); -extern void RotMatrixYXZ(void *a0, void *a1); -extern void func_80048EAC(void *a0, void *a1); -extern s32 func_801670E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80146C3C(void); -extern void func_801678F0(s32 a0); -extern void (*D_801901F0[])(void); -extern void func_80167A9C(void *a0); -extern void func_80167AD8(void); -extern s32 func_80167AE0(s32 param_1, s32 param_2, s32 param_3); -extern void func_80168070(s32 a0, s16 *a1, s16 *a2, void *a3); -extern u8 D_80190150[]; -extern u8 D_80190164[]; -extern s32 func_80167DBC(s32 arg0, s32 arg1, s32 arg2); -extern void func_800D20C0(void *a0, void *a1, s32 a2); -extern void func_80017E68(void *a0, void *a1); -extern void func_800D23D0(void *a0); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern s32 D_801269A4; -extern s32 D_801269A8; -extern s32 D_801269AC; -extern void func_80168070(s32 param_1, s16 *param_2, s16 *param_3, void *param_4); -extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_8016829C(s32 a0); -extern s32 func_80166690(s32 a0, s32 a1); -extern void func_80168328(s32 arg0); -extern void func_801683D8(s32 a0); -extern void func_801684B4(s32 a0); -extern void func_80168540(s32 a0); -extern void func_801685EC(s32 a0); -extern void func_80168640(s32 a0); -extern s32 RotMatrixX(s32 a0, void *a1); -extern void func_80168664(void *arg0); -extern void (*D_80190208[])(void); -extern void func_80168744(void *a0); -extern void func_80168BDC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801687CC(s32 a0); -extern void func_80168780(s32 a0); -extern void func_80168828(void); -extern void func_801687CC(s32 param_1); -extern void func_80168828(); -extern void (*D_80190210[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_80190218[])(void); -extern void func_80168AA8(void *a0); -extern void func_80168AE4(s32 a0); -extern void func_800D2318(void); -extern void func_80168BDC(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void (*D_80190220[])(void); -extern void func_80168D58(void *a0); -extern void func_80168D94(int a0); -extern void func_80168F40(); -extern void func_80168EC4(s32 a0); -extern void func_80168F40(void *arg0); -extern void (*D_80190228[])(void); -extern void func_8016901C(void *a0); -extern void func_80169058(s32 a0); -extern s32 func_80169228(void); -extern void func_801691B8(void *a0); -extern void (*D_80190230[])(void); -extern void func_801693CC(void *a0); -extern void func_80169584(s32 param_1); -extern void func_80169408(s32 a0); -extern void func_8016951C(int param_1); -extern s32 func_80017758(void *a0, void *a1); -extern s32 func_80017DC4(void *a0, void *a1); -extern void func_801696D8(s32 a0, s32 a1); -extern void (*D_80190238[])(void); -extern void func_80169830(void *a0); -extern void func_8016986C(s32 a0); -extern s32 func_80169A4C(s32 a0, s32 a1); -extern void func_801699D0(void *arg0); -extern void (*D_801902EC[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_801902F4[])(void); -extern void func_80169F00(void *a0); -extern char D_801902A4[]; -extern char D_80190264[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8019032C[])(void); -extern void func_8016A020(void *a0); -extern void func_8016A05C(void *a0); -extern void func_8016A290(s32 a, void *b, void *c); -extern void func_8016A08C(s32 param_1); -extern void func_8016A1CC(int param_1); -extern void func_8016A290(s32 param_1, void *param_2, void *param_3); -extern void (*D_80190338[])(void); -extern void func_8016A700(void *a0); -extern s32 func_8016A73C(s32 arg0); -extern s32 func_8016A8FC(s32 a0); -extern void func_8016A890(s32 arg0); -extern void func_8016AA50(s32 param_1, s32 param_2); -extern void (*D_80190380[])(void); -extern void func_8016AB30(void *a0); -extern void func_8016B234(void); -extern void func_8016AFB0(s32 a0); -extern void func_8016B114(void *arg0); -extern s32 func_8016B448(s32, s32); -extern s32 func_8016BA48(s32 a0); -extern void func_8016B3F4(s32 a0); -extern s32 func_8016B428(s32 a0); -extern void func_8016B984(void *a0); -extern s32 func_8016B448(s32 arg0, s32 arg1); -extern void (*D_801903FC[])(void); -extern void func_8016B4BC(void *a0); -extern int func_8016B9F8(int); -extern int func_8016B834(int, int); -extern void func_8016B91C(int); -extern int D_801E6018; -extern void func_8016B4F8(int param_1); -extern s32 func_8016B9F8(s32 param_1); -extern void func_8016B6BC(s32, s32, s32, s32); -extern void func_8016B91C(s32); -extern s16 D_801903F0[]; -extern void func_8016B5C0(s32 param_1); -extern void func_8001CD9C(int, void *); -extern int *D_80190434[]; -extern unsigned short D_8019043C[]; -extern unsigned short D_80190444[]; -extern unsigned char D_801E6020[]; -extern int func_8016B834(int param_1, int param_2); -extern void func_8016B964(SrcB964 *a0, DstB964 *a1); -extern void func_8016B91C(s32 arg0); -extern s32 D_801E6018; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8019044C[])(void); -extern void func_8016BBA4(void *a0); -extern s32 func_8016BBE0(s32 param_1); -extern void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3); -extern M2C_UNK D_801E6154; -extern M2C_UNK D_801E6158; -extern void func_8016BCC0(void *arg0); -extern s32 func_8016BD78(s32 param_1); -extern s32 func_8016BEA0(s32 param_1); -extern void func_8016BF34(void *a0); -extern void func_8016BFD0(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern s32 D_801E60E0; -extern void (*D_8019047C[])(void); -extern void func_8016C14C(void *a0); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801E615C[]; -extern u8 D_801E6164[]; -extern u8 D_801E6114[]; -extern void func_8016C2C4(s32 param); -extern s32 func_8016C49C(s32 param_1_arg); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_8016C74C(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern short func_8016CF04(s32 a0, s32 a1); -extern void func_8016C83C(s32 a0); -extern void (*D_80190484[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_801904A0[])(void); -extern void func_8016D19C(void *a0); -extern void (*D_801904A8[])(void); -extern void func_8016D428(void *a0); -extern void func_8016D464(u8 *a0); -extern void func_8016D4DC(s32 a0); -extern void func_8016D5EC(s32 *a0); -extern short func_8016CBC0(void); -extern void func_8016D64C(int param_1); -extern void func_8016D778(s32 a0); -extern void func_800D20C0(); -extern void func_8016D848(s32 *a0); -extern void func_8016D984(s32 *a0); -extern void func_8016DBD8(u8 *a0); -extern void (*D_80190510[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801904B4; -extern u8 D_801904C0; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void (*D_80190544[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8019054C[])(void); -extern void func_8016DF20(void *a0); -extern void func_8016E3CC(s32 a0); -extern void func_8016E1CC(s32 a0); -extern void func_8016E26C(s32 *a0); -extern void func_8016E2E8(void *a0); -extern void func_8016E460(void *a0, void *a1); -extern void func_8016E358(void *a0); -extern void func_8016E460(void *arg0, void *arg1); -extern void (*D_801905A0[])(void); -extern void func_8016E5B8(void *a0); -extern void func_8016E5F4(s32 arg0); -extern void func_8016E778(); -extern void func_8016E688(void *a0); -extern void func_8016E6E4(s32 a0); -extern void func_8016E728(u8 *a0); -extern void func_8016E7C8(int param_1, short *p1, unsigned int *p2); -extern void func_8016E778(int param_1); -extern void func_8016E7C8(int param_1, short *param_2, unsigned int *param_3); -extern s32 D_80115218; -extern void func_8016E8F0(void); -extern void func_8016E918(short param_1, short param_2); -extern s32 func_8016E95C(); -extern u16 D_801905D4[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_801905C4[]; -extern void func_8016EB3C(s32 p); -extern void func_8016EBA8(u8 *param_1); -extern void func_8016ED6C(void); -extern s32 D_80126D70; -extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); -extern void func_8016ED8C(s32 a0, s32 a1, s32 a2); -extern void func_8016EE40(s32 a0, s32 a1, s32 a2); -extern void func_8016EDBC(s32 a0, s32 a1, s32 a2); -extern void func_8016EE94(); -extern void func_8016EDEC(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_8016EF78(s32 a0); -extern void func_8016EE40(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_801726D0(void *a0); -extern s32 D_80126D50; -extern s32 D_80126D54; -extern u8 D_80126D6C; -extern u8 D_80126D6D; -extern u8 D_80126D6E; -extern s32 D_80126D5C; -extern s32 D_80126D60; -extern s16 D_80126D64; -extern s16 D_80126D66; -extern s16 D_80126D68; -extern s16 D_80126D6A; -extern u8 D_80126D1A; -extern s32 D_80127058; -extern s32 D_8012705C; -extern s32 D_80127060; -extern s32 D_80127064; -extern s32 D_80127068; -extern s32 D_8012706C; -extern s32 D_80127070; -extern s32 D_80127074; -extern s16 D_80126D20; -extern void func_8016EE94(s32 a0, s32 a1); -extern s32 func_8016EFC8(s32); -extern s32 func_8016EFA8(s32 a0); -extern void func_8016F094(s32 *a0); -extern s32 func_8016F0AC(); -extern s32 D_801905F0; -extern void func_8016F250(void); -extern void func_8016F288(void); -extern void func_8016F2A8(void); -extern void func_8016F2C8(void); -extern void func_8016F2EC(void); -extern void func_8016F30C(void); -extern void func_8016F330(void); -extern void func_8016F350(void); -extern void func_8016F374(void); -extern void func_8016F388(void); -extern void func_8016F398(void); -extern s32 func_8016F44C(s32 a0); -extern void func_8016F470(s32 a0); -extern s32 func_8016F410(s32 a0); -extern void func_80175414(s32 _arg0); -extern s32 func_8016F4C4(s32); -extern s32 func_8016F494(s32 a0); -extern void func_8016F0E4(void); -extern s32 func_8016F4C4(s32 param_1); -extern void func_8016F4F4(void); -extern void func_801719A4(int a0, int a1); -extern void func_800D1724(s32 a0); -extern void func_80171928(void *a0); -extern void *D_8011F738; -extern void func_8016F4FC(void *a0); -extern void func_8014708C(void *a0); -extern void func_8016F540(void *a0); -extern void func_8016F578(s32 *a0); -extern void func_8016F5B0(void *a0); -extern void func_80147060(u8 *a0); -extern void func_8016F5E0(u8 *a0); -extern void func_8016F610(void *a0); -extern void func_8016F648(void *a0); -extern void func_8016F680(void *a0); -extern void func_8016F6B0(void *a0); -extern void (*D_80190668[])(void); -extern void func_8016F6E0(void *a0); -extern s32 func_80171990(u8 *a0); -extern void func_8016F764(void *a0); -extern void func_8016F71C(u8 *a0); -extern void (*D_80190670[])(void); -extern void func_8016F798(void *a0); -extern void func_8016F804(void *a0); -extern void func_8016F7D4(u8 *a0); -extern void func_80171928(void *); -extern void (*D_80190678[])(void); -extern void func_8016F834(void *a0); -extern void func_8016F8AC(u8 *a0); -extern void func_8016F870(u8 *a0); -extern void func_80172358(u8 *a0, u8 *a1); -extern void (*D_80190680[])(void); -extern void func_8016F8E4(void *a0); -extern void func_8016F95C(void *a0); -extern void func_8016F920(u8 *a0); -extern s32 func_80171CC4(void *a0, void *a1); -extern s32 func_80171D1C(void *a0, void *a1, s32 a2); -extern u16 D_8011F73E; -extern void (*D_80190688[])(void); -extern void func_8016F9C4(void *a0); -extern void func_80171B44(s32 *a0); -extern void func_8016FA44(s32 a0); -extern void func_8016FA00(s32 a0); -extern s32 func_80171C64(s32 a0, s32 a1); -extern void (*D_80190690[])(void); -extern void func_8016FA84(void *a0); -extern void func_8016FB10(void *a0); -extern void func_8016FAC0(u8 *a0); -extern void func_8016FB50(void *a0); -extern void (*D_8019069C[])(void); -extern void func_8016FB7C(void *a0); -extern void func_8016FC24(); -extern void func_8016FBB8(s32 a0); -extern s32 func_80171B4C(s32 a0, s32 a1); -extern void func_8016FC24(s32 a0); -extern void func_8016FC64(void *a0); -extern void (*D_801906A8[])(void); -extern void func_8016FC90(void *a0); -extern void func_8016FD08(u8 *a0); -extern void func_8016FCCC(u8 *a0); -extern s32 func_80172658(s32 *a0); -extern void func_8016FD08(u8 *s0); -extern void func_8016FD7C(s32 *a0); -extern void (*D_801906B4[])(void); -extern void func_8016FDB4(void *a0); -extern void func_8016FE2C(u8 *a0); -extern void func_8016FDF0(u8 *a0); -extern void func_8016FE2C(u8 * a0); -extern s32 func_8016FE78(s32 *a0); -extern s32 func_80172664(s32 *a0); -extern void func_8016FED0(s32 *a0); -extern void (*D_801906C4[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_801906D4[])(void); -extern void func_8016FFDC(void *a0); -extern void func_80170068(u8 *a0); -extern void func_80170018(u8 *a0); -extern void func_801700B8(u8 *a0); -extern void func_80170100(u8 *a0); -extern void (*D_801906DC[])(void); -extern void func_80170150(void *a0); -extern void func_801701C8(u8 *a0); -extern void func_8017018C(u8 *a0); -extern void func_801701C8(u8 * a0); -extern void (*D_801906E4[])(void); -extern void func_80170240(void *a0); -extern void func_801702B8(s32 a0); -extern void func_8017027C(u8 *a0); -extern s16 func_80171AB0(s32 a0, void *a1); -extern void (*D_801906EC[])(void); -extern void func_801702FC(void *a0); -extern void func_80170374(u8 *a0); -extern void func_80170338(u8 *a0); -extern s32 func_8014C168(s32 *a0, s32 a1); -extern void func_80170374(u8 * a0); -extern void (*D_801906F4[])(void); -extern void func_801703E0(void *a0); -extern void func_8017044C(u8 *a0); -extern void func_8017041C(u8 *a0); -extern void func_8017044C(u8 * a0); -extern void (*D_801906FC[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_80190704[])(void); -extern void func_80170548(void *a0); -extern void func_801705C0(u8 *a0); -extern void func_80170584(u8 *a0); -extern void func_801705C0(u8 * a0); -extern void (*D_8019070C[])(void); -extern void func_801705F8(void *a0); -extern void func_80170670(void *a0); -extern void func_80170634(u8 *a0); -extern void func_8012A568(void (*a0)(void)); -extern void (*D_80190714[])(void); -extern void func_801706AC(void *a0); -extern void func_80170718(void *a0); -extern void func_801706E8(u8 *a0); -extern void func_80129FF4(void); -extern void (*D_8019071C[])(void); -extern void func_80170748(void *a0); -extern void func_801707D4(void *a0); -extern void func_80170784(u8 *a0); -extern s32 func_80174ED4(void); -extern void (*D_80190724[])(void); -extern void func_80170810(void *a0); -extern void func_801708B0(void *a0); -extern u8 D_800D5DA8; -extern void func_8017084C(s32 a0); -extern u8 D_800D5A34[]; -extern void func_80170AD8(void *a0); -extern void func_80171904(s32 a0); -extern void func_80170B48(int a0); -extern void func_80170928(void); -extern u8 D_800D59EC[]; -extern void func_80170970(void); -extern u8 D_800D599C[]; -extern void func_801709B8(void); -extern u8 D_800D5934[]; -extern void func_80170A00(void); -extern void func_80170A48(void); -extern u8 D_800D5DC0[]; -extern void func_80170A90(void); -extern void (*D_8019072C[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_80190734[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8019073C[])(void); -extern void func_80170C74(void *a0); -extern s32 func_8017197C(u8 *a0); -extern void func_80170CF0(void *a0); -extern void func_80170CB0(u8 *a0); -extern void (*D_80190744[])(void); -extern void func_80170D68(void *a0); -extern void func_80170DE0(u8 *a0); -extern void func_80170DA4(u8 *a0); -extern s32 D_8011F73C; -extern s32 D_8011F740; -extern void func_801718AC(void *a0); -extern void func_80170DE0(u8 * _arg0); -extern void (*D_8019074C[])(void); -extern void func_80170E34(void *a0); -extern void func_80170EAC(u8 *a0); -extern void func_80170E70(u8 *a0); -extern int func_800D0F8C(int a0); -extern void func_80170EAC(u8 * _arg0); -extern void (*D_80190754[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8019075C[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_80190764[])(void); -extern void func_80171064(void *a0); -extern void func_801710DC(u8 *a0); -extern void func_801710A0(u8 *a0); -extern u16 D_8011F73A; -extern void func_801710DC(u8 * arg0); -extern void (*D_8019076C[])(void); -extern void func_80171120(void *a0); -extern void func_8017118C(u8 *a0); -extern void func_8017115C(u8 *a0); -extern void func_80142454(s32 a0); -extern void func_8017118C(u8 * a0); -extern void (*D_80190774[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8019077C[])(void); -extern void func_80171260(void *a0); -extern s32 func_80012F74(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80171384(void *a0); -extern void (*D_80190784[])(void); -extern void func_801714E4(void *a0); -extern void func_8017162C(void *a0); -extern void func_80171520(s32 a0); -extern s32 func_801716AC(s32 a0, void *a1, s32 *a2); -extern s32 func_80012FC8(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_800A5E94; -extern u8 D_800A5E95; -extern u8 D_800A5E96; -extern s32 func_801716AC(s32 a0, void * a1, s32 * a2); -extern int func_800D0FE0(int a0); -extern void func_801717A0(void *a0); -extern void func_8013E588(void *a0); -extern void func_801717F4(void *a0); -extern void func_80171824(void *a0); -extern void func_80171854(void *a0); -extern void func_80171884(void); -extern void func_80171A1C(u8 *a0); -extern void func_80171928(void * a0); -extern void func_8017196C(s32 *a0, s8 a1); -extern void func_80171A04(s32 *a0); -extern void func_80171A10(s32 *a0); -extern void func_80171A34(s32 *a0, s8 a1); -extern s32 func_80171A44(u8 *a0); -extern s32 func_80171A58(u8 *a0); -extern s32 func_80171A6C(u8 *a0); -extern void func_80171A80(s32 *a0, s32 a1); -extern s32 func_80171A88(s32 a0); -extern s16 func_80171AB0(s32 param_1, void * _arg1); -extern void func_80171B10(void *a0); -extern void func_80171EC8(s32 a0); -extern s32 func_80171C64(s32 param_1, s32 param_2); -extern s32 func_80171D78(s32 a0, s32 a1); -extern int func_8017250C(short *a0, short *a1); -extern s32 func_80171CC4(void * a0, void * a1); -extern s32 func_80171FFC(short *a0, short *a1, s32 a2); -extern s32 func_80171D1C(void * a0, void * a1, s32 a2); -extern s32 func_8017248C(s32 a0, s32 a1); -extern s32 func_80171E08(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_80047948(s32 a0); -extern s32 func_8004787C(s32 a0); -extern void func_80172170(s32 a0, s32 a1); -extern s32 func_8017209C(void *arg0, void *arg1, s32 arg2, s32 arg3); -extern void func_801722CC(s32 *a0); -extern void func_80172304(s32 *a0); -extern void func_80172310(u8 *a0); -extern void func_801723C4(s32 param_1, s32 param_2); -extern void func_80161C24(s32, s32); -extern void func_80172414(s32 a0); -extern s32 func_801724EC(s32 a0); -extern s32 func_8017248C(s32 arg0, s32 arg1); -extern s32 func_80013450(s32); -extern s32 func_80172560(u8 *a0, u8 *a1); -extern s32 func_8017261C(u8 *a0); -extern s32 func_80172644(u8 *a0); -extern s32 func_80172670(s32 *a0); -extern s32 func_80172688(s32 *a0); -extern s32 func_80172694(s32 *a0); -extern s32 func_801726A0(s32 *a0); -extern s32 func_801726AC(s32 *a0); -extern s32 func_801726B8(s32 *a0); -extern s32 func_801726C4(s32 *a0); -extern s32 func_80172760(s32 a0); -extern s32 func_80174650(s32); -extern void (*D_80127088)(void); -extern s32 D_801270BC; -extern s16 D_80126B0C; -extern void func_801726D0(void * _arg0); -extern void func_80172710(void); -extern void func_80174684(void *); -extern void func_80172738(void); -extern s16 D_80126B30; -extern s32 func_801727D0(void *a0); -extern void func_80172780(void *a0); -extern void func_80172844(u8 *a0); -extern void func_8017280C(u8 *a0); -extern void func_8017288C(void); -extern s32 func_801728E4(void *a0); -extern void func_80172894(void *a0); -extern void func_80172958(u8 *a0); -extern void func_80172920(u8 *a0); -extern s16 D_80126B36; -extern void func_80172958(u8 * a0); -extern void func_801729A8(void); -extern s32 func_801729F0(void *a0); -extern s16 D_80126B34; -extern s16 D_80126B32; -extern void func_801729B0(s32 a0); -extern void func_80172A8C(void *a0); -extern void func_80172A2C(int param_1); -extern void func_80172ACC(u8 *a0); -extern void func_80172B0C(void); -extern s32 func_80172B44(void *a0); -extern void func_80172B14(s16 a0); -extern s32 D_801150F8; -extern void func_80172BC8(void *a0); -extern void func_80172B80(u8 *a0); -extern void func_80172C48(void); -extern void (*D_801907C8[])(void); -extern void func_80172CA0(void *a0); -extern void func_80172D14(u8 *a0); -extern void func_80172CDC(u8 *a0); -extern void func_80172D14(u8 * a0); -extern void func_80172D60(void); -extern s32 D_80127508; -extern s32 func_80172DAC(void *a0); -extern void func_80172D68(s32 a0); -extern void func_80172E20(u8 *a0); -extern void func_80172DE8(u8 *a0); -extern void func_80172E20(u8 * a0); -extern void func_80172E8C(void); -extern void func_8017303C(void *); -extern void func_80172E94(void); -extern void func_80172ED4(void); -extern void func_80172EFC(void); -extern void func_80172F24(void); -extern u8 D_800D47F4[]; -extern void func_80172F4C(void); -extern void func_80172F9C(void); -extern u8 D_800D5C6C[]; -extern void func_80172FEC(void); -extern s32 func_80173078(void *a0); -extern void func_8017303C(void * a0); -extern void func_801730FC(struct S801730FC *a0); -extern void func_801730B4(s32 a0); -extern void func_8017316C(void); -extern s32 func_8017319C(void *a0); -extern void func_80173174(void); -extern u8 D_800D5AA0[]; -extern void func_80173220(void *a0); -extern void func_801731D8(s32 *a0); -extern M2C_UNK D_8019078C; -extern void func_80173220(void * arg0); -extern void func_80173294(void); -extern void func_801732C4(); -extern void func_8017329C(void); -extern void func_801732C4(s32 *a0); -extern void func_8017331C(); -extern void func_801732F4(void); -extern void func_8017331C(s32 *a0); -extern void func_80173374(); -extern void func_8017334C(void); -extern void func_80173374(s32 *a0); -extern void func_801733A4(void); -extern void func_801733CC(s32 a0); -extern void func_801734BC(s32 a0, s32 a1); -extern s16 D_80126B3E; -extern void func_80173460(s32 a0, s32 a1); -extern void func_801734BC(s32 arg0, s32 _unused1); -extern void (*D_801907F8[])(void); -extern void func_80173544(void *a0); -extern void func_801735B8(u8 *a0); -extern void func_80173580(u8 *a0); -extern s16 D_80126B40; -extern void func_801735EC(void *a0); -extern void func_80173648(u8 *a0); -extern void func_801736A8(void); -extern s32 func_8014C118(void *a0, s32 a1, s32 a2); -extern s32 func_801736FC(void *a0); -extern void func_801736B0(s32 a0, s32 a1); -extern void func_80173770(u8 *a0); -extern void func_80173738(u8 *a0); -extern void func_801723C4(s32 a0, s32 a1); -extern void func_801737B0(void); -extern s32 func_801737E8(void *a0); -extern void func_801737B8(s16 a0); -extern void func_8017385C(u8 *a0); -extern void func_80173824(u8 *a0); -extern void func_801738D4(void); -extern s32 func_8017390C(void *a0); -extern void func_801738DC(s16 a0); -extern void func_80173980(u8 *a0); -extern void func_80173948(u8 *a0); -extern void func_801739D8(u8 *a0); -extern void func_80173A20(void); -extern s32 D_8012750C; -extern void func_80173A60(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80173A28(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void (*D_80190834[])(void); -extern void func_80173B4C(void *a0); -extern void func_80173BC0(u8 *a0); -extern void func_80173B88(u8 *a0); -extern void func_80173C64(u8 *a0); -extern void func_80173E1C(s32 a0); -extern s16 D_80126938; -extern s16 D_80126B3A; -extern void func_800D128C(s32, s32); -extern void func_80174158(s32 a0); -extern void func_8002A088(s32); -extern void func_8002A2D4(s32); -extern void func_8002A544(s32); -extern void func_8002A7B4(s32); -extern s32 func_80174188(s32 a0); -extern void func_801741A8(s32 a0); -extern s32 func_800D0EC4(void); -extern void func_800D0F0C(s32, s32); -extern void func_80145EE8(s32); -extern void func_80173EF8(void *param_1); -extern s32 func_8014BCEC(s32, s32); -extern void func_801741A8(s32 _arg0); -extern s16 D_80126B3C; -extern s16 D_8011F9C8; -extern void func_801741EC(u8 *a0); -extern void func_80174274(void); -extern s32 func_801742A4(void *a0); -extern void func_8017427C(void); -extern void func_80174318(u8 *a0); -extern void func_801742E0(u8 *a0); -extern void func_80174354(void); -extern s32 func_80174384(void *a0); -extern void func_8017435C(void); -extern void func_801743F0(u8 *a0); -extern void func_801743C0(u8 *a0); -extern void func_801743F0(u8 * a0); -extern void func_80174430(void); -extern s32 func_80174474(void *a0); -extern void func_80174438(s32 a0); -extern void func_801744E0(u8 *a0); -extern void func_801744B0(u8 *a0); -extern void func_80174524(void); -extern void func_80174554(); -extern void func_8017452C(void); -extern void func_80174554(s32 arg0); -extern void func_801745AC(); -extern void func_80174584(void); -extern void func_801745AC(s32 *a0); -extern void func_80174604(void); -extern void func_801745DC(void); -extern void func_80174630(void); -extern s32 func_80174650(s32 _arg0); -extern void func_80174674(void); -extern void func_801746A4(void); -extern s32 func_800CF8CC(void); -extern void func_80174714(void); -extern s32 func_80174754(void); -extern s16 func_80174764(void); -extern s16 func_80174774(void); -extern s32 func_801747CC(void *a0); -extern void func_80174784(void); -extern s32 func_801747AC(s32 a0); -extern s32 func_80174808(u8 *a0); -extern void func_8017481C(void); -extern s32 func_80174888(void *a0); -extern void func_80174824(void); -extern void func_8017484C(s32 a0); -extern void func_801748C4(s32 a0); -extern void func_801748E4(void); -extern void func_8012A018(s32 a, s32 b); -extern s32 func_8017496C(void *a0); -extern void func_801748EC(void); -extern s32 func_801749C8(); -extern s32 func_801749A8(s32 a0); -extern void func_80174BBC(void *a0); -extern void func_8012A0E0(void); -extern void func_80174BF4(void *a0); -extern void (*D_8019088C[])(); -extern void func_80174BF4(void * arg0); -extern s32 func_80174CB0(s32, s32); -extern s32 func_80174C60(s32 a0); -extern void func_80174C80(s32 a0); -extern s32 D_8012697C; -extern u16 D_80126980; -extern s32 func_80174F28(void *a0); -extern void func_80174E9C(s32 a0); -extern void func_80174EF0(s32 a0, s16 a1); -extern s32 func_80175014(u8 *a0, u8 *a1, s32 a2); -extern void func_80174F64(u8 *a0); -extern void func_80174FBC(u8 *a0); -extern s32 func_8017509C(u8 *a0, s32 a1, u8 *a2, u8 *a3); -extern void func_80175184(s32 *a0); -extern void func_80175114(s32 *a0); -extern void func_80175184(); -extern void func_80175150(s32 *a0); -extern void (*D_8019089C[])(void*); -extern s32 func_80175268(s32); -extern void func_80175184(s32* arg0); -extern s32 func_80175218(void *a0); -extern void func_801751D8(void *a0); -extern void (*D_801908A4[])(s32); -extern s32 func_80175218(void * param_1); -extern void func_801752BC(s32 *a0); -extern u8 D_8011F7A8; -extern u8 D_8011F7A9; -extern u8 D_8011F7AD; -extern u8 D_8011F7AE; -extern void func_80175494(void); -extern void (*D_80190A0C[])(); -extern s32 func_801758FC(void); -extern s32 func_80175820(void); -extern s32 func_801759D8(void); -extern void func_8017553C(s32 *param); -extern void func_801757A0(s32 a0); -extern short D_800B9A02; -extern void func_80175590(void *arg0); -extern s16 D_800B9A02; -extern void func_801757A0(s32); -extern void func_80175624(void *a0); -extern void func_801757E0(int); -extern void func_80175668(void); -extern void (*D_80190A18[])(); -extern void func_80175690(s32 *param); -extern void func_80175DA8(s32 a0); -extern void func_80175AB8(s32 a0); -extern void func_80176144(s32 a0); -extern void func_801756E4(s32 arg0); -extern void func_80175798(void); -extern void func_80176734(s32 a0); -extern void func_80176218(s32 a0); -extern void func_80176D00(s32 a0); -extern void func_801757E0(s32 a0); -extern s32 func_80178004(s32 a0, s32 a1, s32 a2); -extern u8 D_8011F7B1; -extern u16 D_8011F7B4; -extern u16 D_8011F7B6; -extern s16 D_8011F81E; -extern void *func_80177784(void *a0, s32 a1, s32 a2, s32 a3); -extern u32 func_801783D0(s32 a0, s32 a1); -extern void *func_801777BC(void *a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern u16 D_8011F82C; -extern u16 D_8011F82A; -extern u32 * func_80176D94(void *param_1, u32 param_2, s16 param_3_); -extern void func_801778A8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80176FF4(s32 a0); -extern u16 D_8011F830; -extern u16 D_8011F82E; -extern u32 * func_801770E0(void *param_1, u32 param_2, s16 param_3_); -extern void func_80177340(s32 a0); -extern u8 D_8011F837; -extern u8 D_8011F7F0; -extern u8 D_8011F7AB; -extern u32 * func_8017742C(u32 *param_1, s32 param_2, s32 param_3); -extern void func_801776EC(u8 *a0); -extern void * func_80177784(void *a0, s32 a1, s32 a2, s32 a3); -extern uint * func_80177EA4(uint *param_1, int param_2, uint param_3, int param_4); -extern void func_80177F84(s32 param_1, s32 param_2); -extern u32 * func_80178298(u32 *param_1, u8 *param_2, short param_3, short param_4); -extern M2C_UNK D_801E52AC; -extern void func_80178438(u16 *arg0); -extern void func_801787D4(void); -extern void func_8012A908(void); -extern void func_8017869C(s32 a0); -extern void func_80130D0C(s32 a0); -extern void func_8013E370(void); -extern s32 D_8011DB08; -extern void func_8017849C(void); -extern void func_8013E4B4(void); -extern s16 D_801270C4; -extern s32 D_801274D8; -extern s16 D_801270C2; -extern u8 D_801270C6; -extern u8 D_801270C7; -extern s32 D_801274DC; -extern s32 D_801274E0; -extern void func_80178608(void); -extern void func_80178744(s32 a0, s32 a1); -extern void func_80178840(); -extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern s32 func_801788B8(s32 arg0, s32 arg1); -extern s32 func_801789AC(s32 arg0); -extern s16 D_801E7AB0; -extern int func_80178970(void); -extern s32 func_80178B18(s32 param_1, s32 param_2); -extern s32 func_80178B70(s32 param_1, s32 param_2); -extern void func_80178BB8(s32 a0, s32 a1); -extern s32 func_80178BF8(); -extern s32 D_801E6898; -extern short D_801E7B24; -extern void func_80178CBC(s32 arg0, s32 arg1); -extern void func_80178D18(void); -extern s32 func_80178D40(s32 arg0, s32 arg1); -extern void func_80179B28(s32 a0); -extern void func_80179B74(u16 *p); -extern void func_80179D30(u16 *a0); -extern void func_80179D78(u16 *a0); -extern void func_80179DCC(short a0); -extern void func_80179DF8(void); -extern void func_80179E1C(short a0); -extern void func_80179E48(s16 a0); -extern void func_80179E74(s16 a0); -extern void func_80179EA0(u16 *a0); -extern void func_80179EE8(short a0); -extern void func_80179F14(s16 a0, s16 a1); -extern void func_80179F44(void); -extern void func_80179F6C(short a0); -extern void func_80179F98(u16 *a0); -extern void func_80179FEC(u16 *a0); -extern void func_8017A040(u16 *a0); -extern s32 D_801E6CC4; -extern void func_8017A094(s32 arg0); -extern void func_8017A0C4(s32 arg0); -extern void func_8017A0F4(void); -extern void func_8017A11C(void); -extern s32 D_801E6CEC; -extern void func_8017A144(s32 a0); -extern void func_8017A180(void); -extern void func_8017A1A8(void); -extern void func_8017A1D0(void); -extern void func_8017A1F8(void); -extern void func_8017A220(void); -extern void func_8017A248(void); -extern void func_8017A270(void); -extern void func_8017A298(void); -extern void func_8017A2C0(void); -extern void func_8017A2E8(void); -extern void func_8017A310(void); -extern void func_8017A338(void); -extern void func_8017A360(void); -extern void func_8017A388(void); -extern s16 D_801E6CA8; -extern s32 func_8017A3B0(void); -extern short D_801E6CE4; -extern short D_801E6CE0; -extern int func_800D0CA0(int); -extern int func_8001AAA0(void); -extern int func_800D0CE0(void); -extern int func_8017A3D8(void); -extern void func_80172310(u8*); -extern void func_80172780(void*); -extern void func_80172894(void*); -extern void func_801729B0(s32); -extern void func_80172B14(s16); -extern void func_80172C50(u16 *); -extern void func_80172D68(s32); -extern void func_801733FC(s16, u16 *); -extern void func_80173460(s32, s32); -extern void func_801734BC(s32, s32); -extern void func_801736B0(s32, s32); -extern void func_801737B8(s16); -extern void func_801738DC(s16); -extern void func_80173A28(s32, s32, s32, s32, s32, s32); -extern void func_80174438(s32); -extern void func_8017A4AC(void); -extern s32 func_8017AD0C(s32 arg0); -extern s32 func_8017AD0C(s32); -extern s32 func_8017ADE8(s32 a0); -extern s32 func_8017AE08(void); -extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); -extern void func_8012B178(s32 a0, s32 a1); -extern void func_8012AD80(s32 a0); -extern s32 func_8012B030(u8 *a0); -extern s32 func_8012B744(void *a0, void *a1); -extern s32 func_8012BE98(s32 a0, u16 *a1); -extern s16 D_801E7A68; -extern s16 D_801E7A6A; -extern s16 D_801E7A74; -extern void func_8017AE2C(s32 param_1); -extern void func_8017B0E4(int param_1, int param_2); -extern s16 D_801E6CAC; -extern u16 D_801E6D2C; -extern u16 D_801E6D2E; -extern u16 D_801E6D30; -extern void func_8017B1D8(void); -extern s32 func_8017B238(s32 param_1, s32 param_2); -extern s32 func_8017B368(s32 param); -extern s32 func_8017B490(s32 param); -extern s32 func_8017B614(s32 param_1, s32 param_2); -extern s32 D_80114F30; -extern s32 D_80114F34; -extern s32 D_80114F38; -extern s32 D_80114F24; -extern s32 D_80114F28; -extern s32 D_80114F2C; -extern u8 D_8012694C; -extern s16 D_801E6D24; -extern s16 D_801E6D26; -extern s16 D_801E6D28; -extern s16 D_801E6D1C; -extern s16 D_801E6D1E; -extern s16 D_801E6D20; -extern void func_8017B7A8(void); -extern s16 D_801E6D3C; -extern s16 D_801E6D3E; -extern s16 D_801E6D40; -extern s16 D_801E6D44; -extern s16 D_801E6D46; -extern s16 D_801E6D48; -extern void func_8017B824(void); -extern void func_8017B880(void); -extern s32 func_8017B8E8(s32 src); -extern short D_801E6D34; -extern short D_801E6D36; -extern short D_801E6D38; -extern void func_8017B940(void); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void RotTransSV(void *a0, void *a1, void *a2); -extern SV4 D_801E6CCC; -extern SV4 D_801E6CD4; -extern void func_8017BA3C(s32 param_1, s32 param_2); -extern s32 func_8017BB34(s32 param_1, s32 param_2); -extern void (*D_801E6CF4[10])(int); -extern void func_8017BC38(int param_1); -extern void func_8017B0E4(int, int); -extern void func_8017BCA0(int param_1); -extern void func_8012A4BC(void); -extern void func_8017BCF4(int param_1); -extern void (*D_801E6CF0)(void); -extern void func_8017BD50(int param_1); -extern void (*D_80190BF4[])(void); -extern void func_8017BE60(void *a0); -extern void (*D_80190C94[])(void); -extern void func_8017BE9C(void *a0); -extern void (*D_80190C9C[])(void); -extern void func_8017BED8(void *a0); -extern void (*D_80190CA4[])(void); -extern void func_8017BF14(void *a0); -extern u8 *func_8012913C(s32 a0); -extern s32 func_8012C750(s32 a0); -extern void func_8017BF50(s32 a0); -extern void func_8017C094(void); -extern void func_8017C100(s32 param_1); -extern void func_8017C1AC(s32 param_1); -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8012A828(s32*, s32); -extern void func_8012B260(u8 *a0); -extern void func_8017C1EC(s32 a0); -extern void func_8017C2B0(s32 a0); -extern void (*D_80190CC4[])(void); -extern void func_8017C338(void *a0); -extern s32 func_800D222C(s32 a0, void *a1, s32 a2); -extern s32 func_8001CF30(void *a0); -extern void func_8017C374(s32 param_1); -extern void func_8017C538(u8 *p); -extern void (*D_80190CCC[])(void); -extern void func_8017C5CC(void *a0); -extern u8 D_80190CB8; -extern void func_8017C608(s32 a0); -extern void func_8017C6AC(int a0); -extern void func_8017C710(s32 arg0); -extern void (*D_80190CE4[])(void); -extern void func_8017D5F0(void *a0); -extern void func_8001C214(s32, s32); -extern u32 D_80190CD4; -extern void func_8017D62C(s32 arg0); -extern void func_8017D6A8(void); -extern void (*D_80190D1C[])(void); -extern void func_8017D6B0(s32 *param_1); -extern void func_8017DA08(void *arg0); -extern s32 func_8012AD50(void *arg0); -extern void func_8017D6EC(void *arg0); -extern void func_8012AD44(s32 *a0, s16 a1); -extern void func_8017D9B8(void); -extern void func_8017DAC4(void *arg0); -extern void aF8017D77C(); -extern void func_80017714(void *); -extern u32 D_801E6FE8; -extern u16 D_80190D24[]; -extern u16 D_801E6FEC[]; -extern s32 D_80190D44; -extern void func_8017DC0C(void); -extern void func_8017E038(void *arg0); -extern s32 func_8017DC98(s32 param_1); -extern s32 func_8017DCE8(void); -extern void func_800D1E28(void); -extern s32 func_800D1D94(void); -extern void func_8001BFD0(void); -extern s32 func_8017DD7C(s32 a0); -extern void func_800D1EBC(void); -extern void func_8017DE2C(void); -extern s32 func_8017DE4C(void *a0); -extern void (*D_80190D64[])(void); -extern void func_8017DF34(void *a0); -extern void (*D_80190D6C[])(void); -extern void func_8017DF70(void *a0); -extern void (*D_80190D78[])(void); -extern void func_8017DFAC(void *a0); -extern void (*D_80190D84[])(void); -extern void func_8017DFE8(void *a0); -extern s32 D_80127050; -extern void func_8017E024(void); -extern void (*D_80191060[])(void); -extern void func_8017E038(void *a0); -extern void func_8017E074(void *a0); -extern void func_8017E088(void *a0); -extern void (*D_80191068[])(void); -extern void func_8017E0C0(void *a0); -extern void func_8017E0FC(u8 *a0); -extern void func_8017E110(void); -extern void func_8012A094(s32 a0); -extern void func_8017E1F4(void *a0); -extern void func_8017E130(void); -extern void (*D_80191070[])(void); -extern void func_8017E26C(s32 *a0, s32 a1); -extern void func_8017E3AC(s32 a0); -extern void func_8017E230(s32 *a0); -extern void func_8017E264(void *a0); -extern void aF8017E26C(); -extern s32 func_80012ABC(s32 a0, s32 a1, s32 a2); -extern void func_8017E3AC(s32 param_1); -extern void func_80184CB8(s32*, s32); -extern void func_8017E5A0(void * arg0); -extern void (*D_801912A8[])(void); -extern void func_8017E760(void *a0); -extern void func_8012A828(s32 *a0, s32 a1); -extern void func_8017E79C(short *a0); -extern void (*D_801912C8[])(void); -extern void func_8017E810(void *a0); -extern void func_80178CBC(s32 a0, s32 a1); -extern void func_8017E84C(void * arg0); -extern void func_8017E878(void * arg0); -extern void func_8012C588(s32, s32); -extern void func_8017E99C(void); -extern s32 func_80184BAC(s32 arg0, s32 arg1); -extern void func_8017E5A0(void *arg0); -extern void func_8017E9C0(void *arg0); -extern void func_8017EAAC(void * arg0); -extern s32 func_8012BEE8(s32 a0); -extern void func_8017E79C(short*); -extern void func_8017EBA0(s32 a0); -extern void func_8017E7CC(); -extern void func_8017EBE0(u8 *a0); -extern void func_8017F02C(void * arg0); -extern void (*D_8019155C[])(void); -extern void func_8017F058(void *a0); -extern void func_8017F094(void * arg0); -extern s32 func_8017F0C0(void); -extern void func_80029124(s32 arg0, s32 arg1); -extern void func_8017F108(void); -extern void func_80029514(int); -extern void func_8017F1A8(void); -extern void func_8017F28C(void * arg0); -extern void (*D_801916E4[])(void); -extern void func_8017F5BC(void *a0); -extern void func_80178CBC(s32, s32); -extern void func_8017F5F8(void *a0); -extern void func_8017F6D8(void *a0); -extern void func_8017F7B8(void *a0); -extern void func_8017F898(void *a0); -extern void func_80029124(s32 a, s32 b); -extern void func_8017FA34(void); -extern void func_8017FCD8(void * arg0); -extern void (*D_80191814[])(void); -extern void func_8017FF34(void *a0); -extern void (*D_801918E4[])(void); -extern void func_801800E0(void *a0); -extern s32 func_8018011C(void); -extern void func_8018015C(void); -extern void func_80180164(void * arg0); -extern void func_8012E8E0(s32, s32); -extern void func_8012E88C(s32); -extern void func_8012A828(s32 *a0, s32 a1); /* fleet-canonical sig (TU L3775) */ -extern void func_80184C90(s32); -extern void func_80184ED4(s32, s32, s32, s32); -extern void func_8018034C(void *arg0); -extern void (*D_801919C4[])(void); -extern void func_8018048C(void *a0); -extern s32 func_80184DD0(s32 a0); -extern void func_80180504(s32 a0); -extern s32 func_80180544(void); -extern void func_80180580(void *arg0); -extern s32 func_8012BD14(s32 a0); -extern s32 func_80180814(void *a0); -extern void func_80180888(void *arg0); -extern void func_8012E88C(s32 a0); -extern void func_80184C90(s32 a0); -extern void func_801808FC(void *a0); -extern void func_80184CB8(s32 *a0, s32 a1); -extern void func_801809DC(short *a0); -extern void (*D_80191A80[])(void); -extern void func_80180B6C(void *a0); -extern void func_80180C0C(void * arg0); -extern s32 func_801848DC(void); -extern s32 func_8018625C(void *); -extern s32 func_80178BF8(void); -extern s32 func_80180CC0(void *a0); -extern s32 func_80178BF8(); /* TU-canonical (ov_SC04_018_jr_8017AE2C.c L2541) */ -extern s32 func_80180D38(void *a0); -extern s32 func_80185BE0(s32 a0); -extern s32 func_80184FA4(void); -extern void func_80180EE8(void *a0); -extern void func_80181020(void *a0); -extern void func_80181244(short *param); -extern void func_801812D0(short *a0); -extern void (*D_80191B20[])(void); -extern void func_801812FC(void *a0); -extern void func_80181338(short *param); -extern void func_80181364(s32 a0); -extern void func_80181474(void * arg0); -extern s32 func_80181564(void *a0); -extern void func_8018170C(void * arg0); -extern void func_8018178C(void * arg0); -extern void (*D_80191BDC[])(void); -extern void func_80181924(void *a0); -extern s32 D_801D7598; -extern s32 D_801D2200; -extern void func_80181998(void); -extern s32 D_801E7018; -extern void func_801819B0(void); -extern void func_8012A828(s32 *, s32); -extern void func_801819C8(void *arg0); -extern void func_80181A28(s32 a0); -extern void func_801815DC(void *arg0); -extern void func_80181A68(void *arg0); -extern void func_801816A8(void *arg0); -extern void func_80181B34(void *arg0); -extern void func_80184ED4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_8018170C(void *a0); -extern void func_80181BEC(void *arg0); -extern void func_80181738(void *arg0); -extern void func_80181C78(void *arg0); -extern void func_801817B8(void *arg0); -extern void func_80181DC4(void *arg0); -extern s32 func_80181EFC(void *a0); -extern void func_80181F70(void *arg0); -extern void func_80181FE4(void *a0); -extern void func_801821A8(void * arg0); -extern void (*D_80191EE4[])(void); -extern void func_8018233C(s32 *param_1); -extern void func_80182490(void * arg0); -extern s32 func_80182544(void *a0); -extern s32 func_801825BC(void *a0); -extern void func_8018276C(void *a0); -extern void func_801828B0(void *a0); -extern void func_801821A8(void *a0); -extern void func_80182920(void *arg0); -extern void func_80182ACC(void * arg0); -extern void func_80182B58(void *arg0); -extern void func_80182BCC(void *a0); -extern void (*D_80192014[])(void); -extern void func_80182C98(void *a0); -extern s32 D_801D7E84; -extern void func_80182D0C(void); -extern void func_80182D24(void *arg0); -extern void func_80182D84(s32 a0); -extern s32 func_80182DC4(void); -extern void func_80182E00(void *arg0); -extern void func_80182C24(void *arg0); -extern void func_80182ED8(void *arg0); -extern void func_80182F18(void *a0); -extern void func_801831AC(short *a0); -extern void func_8018330C(void * arg0); -extern void (*D_8019211C[])(void); -extern void func_80183438(void *a0); -extern void func_80183474(short *a0); -extern void func_801834A0(void * arg0); -extern void func_801834CC(short *a0); -extern void func_801834F8(s32 a0); -extern void func_80183538(s32 a0); -extern void func_801831AC(short*); -extern void func_80183674(void *arg0); -extern void func_801831D8(s32 *a0); -extern void func_801836C0(s32 *a0); -extern void func_8018370C(void * arg0); -extern void func_80183938(void *arg0); -extern void (*D_80192230[])(void); -extern void func_80183A68(void *a0); -extern void func_80183AA4(void * arg0); -extern void func_80183AD0(s32 a0); -extern s32 func_80183B10(void); -extern void func_80183B4C(void *arg0); -extern void func_80183B8C(s32 param_1); -extern s32 func_80183D80(void *a0); -extern void func_80183DF4(void * arg0); -extern void (*D_80192414[])(void); -extern void func_80184130(void *a0); -extern void func_8018416C(s32 a0); -extern void func_801841AC(s32 a0); -extern void func_801841EC(s32 a0); -extern s32 func_8018422C(void); -extern void func_80184268(short *a0); -extern void func_80184298(short *a0); -extern void func_801842C8(short *a0); -extern s16 D_801923A4; -extern void func_801842F8(void *arg0); -extern void func_80183FA8(s32 *a0); -extern void func_80184328(s32 *a0); -extern void func_80183DF4(void*); -extern void func_801843C4(s32 *a0); -extern void func_80183E20(void *arg0); -extern void func_80184460(void *arg0); -extern void func_8018479C(void *a0); -extern void func_801847AC(void *a0); -extern s32 func_8012E57C(s32 a0, s32 a1); -extern s32 func_801847BC(void *a0, void *a1); -extern void func_80184858(void *a0); -extern void func_80184884(void *a0); -extern void func_801848B0(void *a0); -extern s32 func_80184B04(s32 arg0); -extern s32 func_80184960(s32 a0); -extern s32 func_80184960(s32 arg); -extern void func_80184A90(u8 *a0); -extern void func_80184AC4(void *a0); -extern short D_800BA2BA; -extern void (*D_801B8720[])(void); -extern void func_80184B2C(void *a0); -extern void func_80184B68(void); -extern void func_80184B70(void *a0, s32 a1, s32 a2); -extern s32 func_80184BD0(u8 a0, u8 a1, u8 a2, u8 a3); -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); -extern void func_80184C28(void *a0, s32 a1); -extern void func_80184CB0(void *a0); -extern void func_8012E8A8(u8 *a0); -extern s32 func_80184D00(void); -extern s32 func_80184D5C(void); -extern s32 aF80184DD0(); -extern s32 func_80184E44(void); -extern void func_80184EA0(void); -extern void func_8012B200(u8 *a0); -extern s32 aF80184FA4(); -extern s32 func_8018516C(s32 a0); -extern void (*D_801B8740[])(void); -extern void func_801851B4(void *a0); -extern void func_801851F0(void); -extern void func_801851F8(void); -extern void func_80185200(void); -extern void func_80185208(void); -extern void func_80185210(void); -extern void func_80185218(void *a0); -extern void func_8018525C(void); -extern void func_8001D0E8(s32 arg0, s32 arg1, s32 arg2); -extern void func_80185264(s32 a0); -extern void func_80185978(s32 a0); -extern void func_80185904(s32 a0); -extern void func_801859D8(s32 a0); -extern void func_8018589C(s32 a0); -extern void func_801852EC(s32 a0); -extern void func_8001C97C(s32 a0); -extern void *func_80185C6C(void *a0); -extern void func_801854C4(s32 a0); -extern void func_80185D70(void *a0); -extern void func_80185664(void *a0); -extern void func_8012E688(s32 param_1, u16 param_2, u16 param_3); -extern void func_80185EEC(void); -extern void func_801856E0(s32 a0); -extern void func_801857AC(void); -extern void func_801857CC(s32 a0); -extern s16 D_801B8788[]; -extern s32 D_801B8748[][2]; -extern void func_80185A58(s32 a0, s32 a1); -extern void func_8018602C(s32 a0, s32 a1); -extern void func_80185AB0(s32 a0); -extern void func_80185B10(s32 a0); -extern void func_80185B58(s32 a0); -extern void func_80185BA8(s32 a0); -extern s32 func_80185D10(void *a0); -extern s32 func_801862A8(void *a0); -extern void * func_80185C6C(void *a0); -extern void func_80185F20(void *a0); -extern void aF80185EEC(); -extern void func_80185F54(void *a0, s32 a1, s32 a2); -extern void func_80185FB8(s32 a0, s32 a1, s32 a2); -extern void (*D_801B8A3C[])(void); -extern void func_80186084(void *a0); -extern void func_801860C0(void *a0); -extern void func_8018613C(void *a0); -extern s32 func_801863B4(s32 a0); -extern void func_8012F2E8(s32 a0, s32 a1, s32 a2); -extern s32 func_8012CB64(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_8012F214(s32 arg0, s32 arg1, s32 arg2); -extern void func_80186410(void); -extern s16 func_80186450(void); -extern void func_80029444(void); -extern void func_801754A8(void); -extern void func_80141C04(void); -extern void func_801864AC(void); -extern u8 D_801151C8[]; -extern u16 D_80115112; -extern u8 D_80115138[]; -extern u8 D_80115148[]; -extern s32 D_80115130; -extern u8 D_800B9A15; -extern s16 D_801E7708; -extern s32 D_801E7700; -extern s32 D_801E7704; -extern s16 D_801E7790; -extern s16 D_801E7798; -extern s16 D_801E779C; -extern s16 D_801E77A0; -extern s16 D_801E77A4; -extern s16 D_801E77A8; -extern s16 D_801E77AC; -extern s32 D_801E7778; -extern s16 D_801E7030; -extern s32 D_801EC928; -extern s32 D_801E930C; -extern s32 D_801E9968; -extern s32 D_801B9410; -extern u8 D_801B94A4[]; -extern s32 D_801B946C[]; -extern s32 resLoad_lastId; -extern s32 func_800149E0(s32 a0); -extern void func_80137B80(void); -extern s32 func_801376E8(s32 a0, s32 a1); -extern void func_80139954(void); -extern void func_80139A68(s32 a0, u16 a1); -extern s16 func_8014168C(s16 a0); -extern void func_80188778(void); -extern s32 func_80189540(s32 a0, s16 a1); -extern s16 func_80189E54(s32 a0); -extern void func_801878E8(void); -extern void func_801EA0E4(s32 a0); -extern void func_80189EA0(void); -extern void func_801880EC(void); -extern s32 func_80188428(void); -extern void func_80024054(void *a0, void *a1); -extern s32 *func_800D2650(s32 *, void *, s32, s32, s32, s32); -extern s32 func_800D27DC(s32, s32 *, void *, s32, s32); -extern s32 *func_800D29F8(s32, s32, void *, s32, s32); -extern s32 *func_80189214(s32 *, void *, s32, void *, s32); -extern s32 func_80188B84(void *, s32, s32, s32, s32 *); -extern s32 * func_801889B8(s32 *ot, Panel_8017E978_801889B8 *w0, s16 idx); -/* ==== end §8b carried decl layer ==== */ - -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8_80188E1C; - -/* func_80188E1C — ov_SC04_018 / ov_SC04_018_jr_801878E8, 254 ins, jtbl_801E599C (8 entries, - * minval 7 -> `addiu $a0,$a0,-7` + HImode re-extension, so the switch index type is short). - * - * Modelled on the ALREADY-MATCHED structural twin in the same overlay, - * src/ov_SC04_018/ov_SC04_018_jr_8013FFD8.c:1065 `func_8014032C` — same family: - * `result = D_801117EC;` default, `switch ((short)param_1)`, `((short)param_2)` at every use, - * `func_800291B4(D_8018E2C8[...]) & 0xFF` -> `result = D_8018E388[uVar3];`. - * Case bodies are emitted in SOURCE order, so the source order here is 10,7,8,13,14,11,default - * (read off the block order after the jr: 80188E70, 80188EB8, 80188F28, 80189004, 80189044, - * 80189108, 801891E0). - * - * Cases 9 and 12 are ABSENT from the source: their jtbl slots (indices 2 and 5) point at the - * default label 0x801891E0, which is also the out-of-range target of `beqz $v0,.L801891E0`. - * - * Three register/shape constraints read off the target: - * (a) each `& 0xFF` temp is BLOCK-SCOPED. A single function-scope temp gives one pseudo whose - * live range crosses the calls in cases 13/14, so gcc pins it to $s0; the target keeps it in - * $v1 / $v0 (dead before the call) and uses $s0 only for the value that IS live across a call. - * (b) case 14 uses u8 (QImode) locals. `lbu` into an s32 local is provably <=0xFF, so gcc folds - * `(v & 0xFF)` away; the target emits `andi $v1,$a0,0xFF` for the compare and - * `andi $s3,$a0,0xFF` for `n + 0x62`, which is the QImode-pseudo widening pattern. - * Case 13 has NO such andi, so there the local is s32 — the two cases are deliberately - * asymmetric (cookbook §160d). Case 14 also REUSES that one variable for `v + 1` - * (`v = v + 1`, not `u8 n = v + 1`): two pseudos gave `addiu $v0,$a0,1; andi $s3,$v0`, - * one pseudo gives the target's in-place `addiu $a0,$a0,1; andi $s3,$a0`. That was the - * last 2-instruction residual. - * (c) in case 11 the arms whose `lui/addiu $s1,%hi/%lo(sym)` sits BEFORE the branch (filling the - * `lw` load-delay slot) are assign-then-conditionally-override, not if/else: the address - * materialisation has to be in the SAME basic block as the load for the post-reload scheduler - * to hoist it. The arm at .L801891B4 keeps its `nop`, so that one is a plain `if`. - */ - - -s32 func_80188E1C(s32 param_1, s32 param_2) { - extern void *func_80189DDC(s32 a0); - extern s16 D_80115126; - extern u8 D_801117EC[]; - extern u8 * D_801E76F4; - extern u8 * D_801E76FC; - extern u8 D_801E77B8[]; - extern u8 D_8018E2C8[]; - extern void * D_8018E388[]; - extern void * D_801E3D58[]; - extern void * D_801B93D4[]; - extern void * D_801B93F0[]; - extern s32 * D_801E7774[]; - extern s16 D_8010EDEE; - extern u8 D_8010EDF2; - extern s16 D_800A6586[]; - extern u8 D_801E8CEC[]; - extern u8 D_801E9174[]; - extern u8 D_801ECAA8[]; - extern u8 D_801ECAD4[]; - extern u8 D_801ECAEC[]; - extern u8 D_801ECB18[]; - - /* [T51] scoped in: these must not constrain the rest of the TU (cookbook §103). */ - - void *result; - - result = D_801117EC; - switch ((short)param_1) { - case 10: - if (D_80115126 != 5) { - result = D_8018E388[D_801E76F4[(short)param_2]]; - } else { - result = D_801B93D4[(short)param_2]; - } - break; - - case 7: { - s32 t = func_800291B4(D_8018E2C8[(short)param_2]) & 0xFF; - if (t != 0) { - s32 idx = t * 0xC; - if (*(s16 *)((u8 *)&D_8010EDEE + idx) != 0 && - D_80115126 == *((u8 *)&D_8010EDF2 + idx)) { - result = func_80189DDC(((short)param_2 & 3) + 6); - func_80139A68(*(s16 *)((u8 *)&D_8010EDEE + idx), 0); - } else { - result = func_80189DDC(5); - } - } - break; - } - - case 8: - if (D_80115148[0] != 0) { - s32 t = func_800291B4(D_8018E2C8[(short)param_2]) & 0xFF; - if (t != 0) { - s32 idx = t * 0xC; - if (*(s16 *)((u8 *)&D_8010EDEE + idx) != 0 && - D_80115126 == *((u8 *)&D_8010EDF2 + idx)) { - result = func_80189DDC(((short)param_2 & 3) + 6); - func_80139A68(*(s16 *)((u8 *)&D_8010EDEE + idx), 0); - } else { - result = func_80189DDC(5); - } - } - } else { - s32 t = func_800291B4(D_8018E2C8[(short)param_2]) & 0xFF; - if (t != 0) { - result = D_8018E388[t]; - } - } - break; - - case 13: { - s32 e = D_801E76FC[(short)param_2]; - if ((func_800291B4(e + 0x62) & 0x80) != 0) { - result = D_801E3D58[e]; - } - break; - } - - case 14: { - u8 v = D_801E77B8[(short)param_2]; - if (v != 0xFF) { - s32 code; - v = v + 1; - code = v + 0x62; - if ((func_800291B4(code) & 0xF0) == 0xC0) { - result = func_80189DDC(((short)param_2 & 1) | 6); - func_80139A68((s16)(D_800A6586[v] * 9 / 10), 0); - } else if ((func_800291B4(code) & 0xF0) == 0xE0) { - result = D_801E8CEC; - } - } - break; - } - - case 11: - if (D_80115126 == 4) { - if (D_80115148[0] == 0) { - result = D_801ECAA8; - if (D_801E7774[(short)param_2] == 0) { - result = D_801B93F0[(short)param_2]; - } - } else { - s32 *p = D_801E7774[(short)param_2]; - if (p != 0) { - result = D_801ECB18; - if (p[1] != 0) { - result = D_801ECAEC; - } - } else { - result = D_801ECAD4; - } - } - } else { - if (D_801E7774[(short)param_2] != 0) { - result = D_801E9174; - } - } - break; - - default: - result = func_80189DDC(0); - break; - } - return (s32)result; -} - -/* func_80189214 — ov_SC04_019 (203 ins). STATE: MATCH (203/203). - * - * Cross-overlay twin: the SAME function is already banked byte-proven in - * src/ov_SC04_018/ov_SC04_018_jr_80188E1C.c:3279. The two targets' .s are - * instruction-identical and — verified with tools/reloc_identity.py against - * asm/ov_SC04_019/.../func_80189214.s — reference the SAME 16 relocations - * (D_80115138/40/48/58, D_80115116, D_8011511A, D_801B8DDA, D_801B8DEE, - * D_800B9A02, D_800AE7BC, func_8014168C): AGREE, no per-overlay respell. - * - * A previous t5-era attempt on this card left this exact body and the whole- - * binary byte-gate refused it. Re-probed here THREE ways, all green: - * 1. match_one standalone -> MATCH (203 ins) - * 2. match_one on the FULL host TU with this body spliced over the - * INCLUDE_ASM at :3220 -> MATCH (203 ins) (no decl conflict: - * the TU's own file-scope prototype :3046 `extern s32 *func_80189214( - * s32 *, void *, s32, void *, s32);` agrees with this definition, and the - * block-scope Env_8018C960_80189EA0 typedef cannot collide with the - * identically-named block-scope one in func_80189EA0 at :3672) - * 3. cc1 .s of the whole TU with vs. without this body, $L-renumbering - * normalised -> ZERO other function changed. The only new diagnostic is - * a benign "type mismatch with previous external decl" on D_800AE7BC - * (this body now declares it first; func_80189EA0's codegen is byte- - * identical either way, and the build has no -Werror). - * => the earlier gate refusal was NOT this body. It is an integration/harness - * failure (R42/R43 class), not a codegen one. - * - * Levers (all inherited byte-proven from the ov_SC04_018 twin): - * §20 &D_800B9A02 taken into pointer LOCALS (pb / pb2) -> the address is - * force_reg'd once (lui+addiu -> $a2, copied to $t2 for the loop) - * instead of a %lo per use; the second local is what keeps the loop's - * base in $t2 rather than re-materialising it. - * §263 `((s32 (*)(s32))func_8014168C)((s16)idx)` — the cast-call keeps the - * one-argument shape whose `jal`+`nop` delay slot the target has. - * --- `idx2 = idx + zr` (zr pinned to $0) is the CSE BARRIER that stops the - * two `(s16)idx` sign-extensions folding into one: the target keeps the - * RAW $a2 in $s4 across the call and re-extends (sll/sra) for the - * D_8011511A compare. - * --- the `__asm__ volatile("" :: "r"(pb) x5)` before the loop is a - * register-pressure fence; `__asm__("" ::: "memory")` inside the loop - * is the store-order barrier that puts `sw 0x4000000,0($s0)` after the - * D_801B8DDA/DEE half-word store. - * --- $t3 = 8 and the 0xFFFFFF / 0xFF000000 masks are loop-invariant LOCALS - * (eight/m24/mhi), which is what hoists them into the loop preheader. - */ - -extern s16 func_8014168C(s16 a0); - -s32 *func_80189214(s32 *ot, void *a1p, s32 idx, void *a3p, s32 tag) { - - typedef struct { u32 *ot; u32 pad[4]; } Env_8018C960_80189EA0; /* 0x14 stride */ - - extern u8 D_80115138[]; - extern u8 D_80115140[]; - extern u8 D_80115148[]; - extern u8 D_80115158[]; - extern u16 D_80115116; - extern u16 D_8011511A; - extern u16 D_801B8DDA; - extern u16 D_801B8DEE; - extern s16 D_800B9A02; - extern Env_8018C960_80189EA0 D_800AE7BC[]; - - register s32 zr __asm__("$0"); - u16 *pb; - u16 *p; - s32 c; - register s32 tv __asm__("$3"); - s32 idx2; - s16 t; - register u32 c0 __asm__("$3"); - - c = D_80115138[(s16)idx]; - *(u32 *)ot = 0x4000000; - tv = tag; - *((u8 *)ot + 0xC) = 0x30; - *((u8 *)ot + 0xD) = 0x48; - ot[1] = tv | 0x64000000; - *(s16 *)((u8 *)ot + 0xE) = 0x4056; - idx2 = idx + zr; - - if (c < 10) { - t = ((s32 (*)(s32))func_8014168C)((s16)idx) * 2; - } else { - t = (D_80115148[(s16)idx * 2] - D_80115140[(s16)idx]) * 2; - } - - p = (u16 *)(t * 2 + (s32)a1p); - *(s16 *)((u8 *)ot + 0x8) = p[0] - 8; - *(s16 *)((u8 *)ot + 0xA) = p[1]; - *(s16 *)((u8 *)ot + 0x12) = 8; - *(s16 *)((u8 *)ot + 0x10) = 8; - - pb = (u16 *)&D_800B9A02; - c0 = ot[0]; - ot[0] = (c0 & 0xFF000000) | (D_800AE7BC[*pb].ot[2] & 0xFFFFFF); - D_800AE7BC[*pb].ot[2] = - (D_800AE7BC[*pb].ot[2] & 0xFF000000) | (((u32)ot) & 0xFFFFFF); - - ot += 5; - - if (c >= 10) { - s32 m = D_8011511A; - if ((m == (s16)idx2) && ((D_80115116 & 8) != 0)) { - s16 j; - s32 k; - u8 *q; - s16 y; - u16 *pb2; - u32 m24; - u32 mhi; - s32 eight; - - j = 0; - k = m; - eight = 8; - __asm__ volatile("" :: "r"(pb), "r"(pb), "r"(pb), "r"(pb), "r"(pb)); - pb2 = (u16 *)&D_800B9A02; - m24 = 0xFFFFFF; - mhi = 0xFF000000; - q = (u8 *)ot + 0x14; - for (; j < 2; j++) { - if (j == 0) { - if (D_80115140[k] == 0) { - continue; - } - q[-7] = 0x30; - y = D_801B8DDA - 2; - } else { - s32 k2 = k * 2; - if ((((s8 *)D_80115158)[k2] - ((s8 *)D_80115140)[k]) < 7) { - continue; - } - q[-7] = 0x38; - y = D_801B8DEE + 1; - } - *(s16 *)(q - 10) = y; - __asm__("" ::: "memory"); - *((u32 *)ot) = 0x4000000; - q[-8] = 0x78; - *((u32 *)(q - 0x10)) = 0x64808080; - *(s16 *)(q - 6) = 0x4056; - *(s16 *)(q - 0xC) = ((s32 *)a3p)[2] + ((s32 *)a3p)[3] - 0xC; - *(s16 *)(q - 4) = eight; - *(s16 *)(q - 2) = eight; - *((u32 *)ot) = ((*(u32 *)ot) & mhi) | (D_800AE7BC[*pb2].ot[2] & m24); - { - register u32 *op __asm__("$4"); - op = D_800AE7BC[*pb2].ot; - op[2] = (op[2] & mhi) | (((u32)ot) & m24); - } - q += 0x14; - ot += 5; - } - } - } - return ot; -} - - -extern void func_8002D4C8(s32 a0, s32 a1); -extern s32 func_800291B4(s32 arg); -extern void func_800291A0(s32, s32); -extern void func_80029124(s32, s32); -extern void func_80029514(s32); -extern s32 func_800D0EC4(void); -extern void func_800D0F0C(s32, s32); -extern int func_800D0F8C(int a0); -extern int func_800D0FE0(int a0); -extern void func_800D128C(s32, s32); -extern void func_80139A44(s32 a0, u16 a1); -extern void func_80139A68(s32 a0, u16 a1); -extern s32 func_8017ADE8(s32 a0); -extern s16 func_80189E54(s32 a0); -extern u16 D_80115112; -extern u8 D_80115148[]; -extern s32 D_801E7700; -extern s16 D_801E7030; -extern s32 D_801EC928; - -#define REC_S16(base, idx) (*(s16 *)((u8 *)&(base) + (s32)(idx) * 0xC)) -#define REC_U16(base, idx) (*(u16 *)((u8 *)&(base) + (s32)(idx) * 0xC)) -#define REC_U8(base, idx) (*(u8 *)((u8 *)&(base) + (s32)(idx) * 0xC)) - -s32 func_80189540(s32 arg0, s16 arg1) -{ - extern s16 D_800A6586[]; - extern s16 D_8010EDEC; - extern s16 D_8010EDEE; - extern u8 D_8010EDF1; - extern u8 D_8010EDF2; - extern u16 D_8011511A; - extern u8 D_8011514C; - extern s16 D_8011514E; - extern s16 D_80115126; - extern s8 D_801B9420[]; - extern void (*D_801E3CEC[])(void); - extern s32 D_801E3E1C[]; - extern u8 *D_801E76F4; - extern u8 *D_801E76FC; - extern s16 D_801E778C; - extern s16 D_801E7794; - extern u8 D_801E77B8[]; - extern s32 D_801E92E0; - extern s32 D_801E9664; - extern s32 D_801E96A4; - extern s32 D_801E96C8; - extern void func_80186E24(void); - extern void func_80189E14(); - /* frame knob: the target's frame is 0x38 (vars=16); ours is vars=8 without - * this 8-byte unreferenced local. Emits no code. */ - s32 unused_[2]; - - /* (s16)(arg0-1) reproduces the target's HImode re-extension - * (addiu a0,a0,-1; sll 16; sra 16; sltiu 0xF) while keeping the prototype - * compatible with this TU's file-scope decl (s32, s16). */ - switch ((s16)(arg0 - 1)) { - case 0: - case 1: - case 3: - case 5: - if (arg1 == 2) { - return -1; - } - func_8002D4C8(0x46F, 0); - D_8011511A = arg1 + 1; - return 0; - - case 2: - if (arg1 == 2) { - return -1; - } - D_8011511A = 2; - func_8002D4C8(0x46F, 0); - return 0; - - case 4: - if (arg1 == 1) { - D_801E7030 = 1; - func_8002D4C8(0x474, 0); - return -1; - } - if (arg1 == 3) { - return -1; - } - func_8002D4C8(0x46F, 0); - if (arg1 != 0) { - D_8011511A = arg1; - } else { - D_8011511A = 2; - } - return 0; - - case 11: - D_8011511A = 3; - D_8011514E = 0; - func_8002D4C8(0x46F, 0); - return 0; - - case 12: - { - register s32 f13 __asm__("$16"); - register s32 i13 __asm__("$17"); - register s32 c13 __asm__("$18"); - register u8 *q __asm__("$5"); - s16 d; - i13 = D_801E76FC[arg1]; - c13 = i13 + 0x62; - f13 = ((u8 (*)(s32))func_800291B4)(c13); - if ((f13 & 0xF0) != 0x80) { - goto bad472; - } - if (func_80189E54(-D_800A6586[i13]) != 0) { - L801896C8: - func_80189E14(3); - goto bad472; - } - func_800291A0(c13, f13 | 0x40); - func_80186E24(); - __asm__ __volatile__("" : "=r"(q) : "0"(&D_8011514C)); - d = (s8)q[0] - (s8)q[-0xA]; - if (d >= 6) { - q[-0xA] = q[0] - 5; - } else if (d < 0) { - q[-0xA] = q[0]; - } - func_80189E14(1); - func_8002D4C8(0x5EE, 0); - return 0; - } - - case 13: - { - register s32 f14 __asm__("$16"); - s32 i14; - register s32 n14 __asm__("$17"); - s32 t14; - s32 c14; - i14 = arg1; - t14 = D_801E77B8[i14]; - n14 = t14 + 1; - __asm__("" : "=r"(t14) : "0"(t14)); /* stales (plus t14 1) in cse; dead output -> deleted by flow */ - c14 = n14 + 0x62; - f14 = ((u8 (*)(s32))func_800291B4)(c14); - if ((f14 & 0xF0) != 0xC0) { - goto bad472; - } - func_80189E54(D_800A6586[n14] * 9 / 10); - func_800291A0(c14, f14 & 0xBF); - func_80186E24(); - D_801E77B8[i14] = 0xFF; - func_80189E14(4); - func_8002D4C8(0x5EE, 0); - return 0; - } - - case 9: - { - s32 b10 = D_801E76F4[arg1]; - s32 m10; - s32 w10; - __asm__ __volatile__("" : "=r"(m10) : "0"(b10)); - if (m10 < 0x6F) { - register s16 slot __asm__("$16"); - register s16 sraw __asm__("$2"); - s16 val; - s16 x; - if (m10 == 0xA) { - if (func_800D0F8C(0xA) != 0) { - goto bad472; - } - } - sraw = ((s16 (*)(void))func_800D0EC4)(); - slot = sraw; - if (sraw == 0) { - func_80189E14(2); - func_8002D4C8(0x45F, 0); - return 0; - } - x = D_801E778C; - if (x != 0) { - if (D_80115126 == 0) { - val = REC_S16(D_8010EDEC, b10) * (100 - x) / 100; - } else { - val = REC_U16(D_8010EDEC, b10) - x; - } - } else { - val = REC_U16(D_8010EDEC, b10); - } - if (func_80189E54(-val) != 0) { - func_80189E14(3); - func_8002D4C8(0x472, 3); - return 0; - } - func_8002D4C8(0x5EE, 0); - __asm__("addu %0,%1,$zero" : "=r"(w10) : "r"(b10)); - func_800D0F0C(slot, w10); - if (w10 == 0xA) { - func_80186E24(); - } - } else { - if (func_80189E54(-REC_S16(D_8010EDEC, m10)) != 0) { - goto L801896C8; - } - func_800D128C(b10, 0); - } - func_80189E14(1); - return 0; - } - - case 6: - { - s32 c7; - s32 k7; - s32 a7; - L801899B0: - c7 = (s32)arg1 + 0x2F; - k7 = ((u8 (*)(s32))func_800291B4)(c7); - if (k7 == 0) { - goto bad472; - } - a7 = REC_S16(D_8010EDEE, k7); - if (a7 == 0 || D_80115126 != REC_U8(D_8010EDF2, k7)) { - func_80189E14(5); - goto bad472; - } - func_80189E54(a7); - ((void (*)(s32))func_800D0FE0)(c7); - if (k7 == 0xA) { - func_80186E24(); - } - func_80189E14(4); - func_8002D4C8(0x5EE, 0); - return 0; - } - - case 7: - { - s32 k8; - register s32 f8 __asm__("$2"); - register s32 g8 __asm__("$16"); - register s32 t8 __asm__("$2"); - register s32 cv __asm__("$2"); - s32 p8; - register u16 *c __asm__("$3"); - if (D_80115148[0] != 0) { - goto L801899B0; - } - k8 = ((u8 (*)(s32))func_800291B4)((s32)arg1 + 0x2F); - if (k8 == 0) { - goto bad472; - } - f8 = REC_S16(D_8010EDEC, k8); - if (f8 >= 0) { - D_801E7700 = (s32)&D_801E96C8; - goto bad472; - } - __asm__ __volatile__("" : "=r"(g8) : "0"(f8)); - t8 = g8 & 0x4000; - if (t8 != 0) { - p8 = ((s32 *)D_801E3CEC)[k8]; - } else { - p8 = D_801E3E1C[(REC_U8(D_8010EDF1, k8) - 0x14) >> 1]; - } - D_801E7700 = (s32)&D_801E9664; - func_80139A44(p8, 0); - c = &D_80115112; - cv = *c; - cv = cv + 1; - *c = cv; - return 0; - } - - case 14: - { - register u16 f15 __asm__("$16"); - register s32 t15 __asm__("$2"); - s32 c15; - s32 k15; - s32 n15; - c15 = (s32)arg1 + 0x2F; - k15 = ((u8 (*)(s32))func_800291B4)(c15); - f15 = REC_U16(D_8010EDEC, k15); - n15 = REC_U8(D_8010EDF1, k15); - t15 = f15 & 0x4000; - if (t15 != 0) { - s32 m15; - __asm__ __volatile__("" : "=r"(m15) : "0"(n15)); - func_80029124(m15, 1); - ((void (*)(s32))func_800D0FE0)(c15); - D_801E7030 = n15 - 0x1C; - if (m15 != 0x1F) { - return 0; - } - func_80029514(0x64); - func_80029124(0xEB, 1); - func_80029124(0x91, 1); - func_800291A0(0xCE, 1); - return 0; - } - func_800D0F0C(c15, n15); - return 0; - } - - case 10: - { - typedef struct Rec { - s32 unk0; - s32 unk4; - s32 unk8; - void (*unkC)(void); - } Rec; - extern Rec *D_801E7774[]; - Rec **pp; - Rec *r; - Rec **pp2; - register s32 dv __asm__("$2"); - Rec **base; - Rec *r2; - s32 t; - s32 u; - if (D_80115126 == 4) { - if (D_80115148[0] == 0) { - s32 i11 = arg1; - if (D_801E7774[i11] != 0) { - goto bad472; - } - if (func_80189E54(D_801B9420[i11]) != 0) { - goto L801896C8; - } - D_801E7700 = (s32)&D_801EC928; - D_80115112 = D_80115112 + 1; - ((void (*)(s32, s32))func_80139A68)((s16)(arg1 + 1), 0); - func_8002D4C8(0x5EE, 0); - return 0; - } - base = D_801E7774; - pp = &base[arg1]; - r = *pp; - if (r == 0) { - goto bad472; - } - if (r->unk4 == 0) { - goto bad472; - } - D_801E7700 = r->unk4; - if (r->unkC != 0) { - r->unkC(); - } - ((void (*)(s32))func_8017ADE8)((*pp)->unk8); - goto tail45D; - } - base = D_801E7774; - pp2 = &base[arg1]; - r2 = *pp2; - if (r2 == 0) { - goto bad472; - } - t = (*(Rec * volatile *)pp2)->unk8; - __asm__ __volatile__(""); - D_801E7700 = r2->unk4; - ((void (*)(s32))func_8017ADE8)(t); - u = D_801E7700; - D_801E7794 = 0; - if (u == (s32)&D_801E92E0) { - D_801E7794 = 1; - } - if (u == (s32)&D_801E96A4) { - D_801E7794 = 2; - } - tail45D: - func_8002D4C8(0x45D, 0); - dv = D_80115112; - dv = dv + 1; - D_80115112 = dv; - return 0; - } - } - goto done; - -bad472: - func_8002D4C8(0x472, 0); -done: - return 0; -} - - -DEFINE_func_80189DDC() /* dedup: shared engine-core @0x80189DDC (src/shared) */ - - -extern s16 D_80115126; -extern s32 D_801B92E4[]; -extern s32 D_801E7700; - -void func_80189E14(a0) -s32 a0; -{ - D_801E7700 = (s32) D_801B92E4[D_80115126 * 10 + (s16) a0]; -} - - - - -extern s32 D_80078E8C; -s16 func_80189E54(s32 a0) -{ - s32 v1 = D_80078E8C + a0; - if (v1 > 99999) v1 = 99999; - if (v1 < 0) return 1; - D_80078E8C = v1; - return 0; -} - - - -/* func_80189EA0 — ov_SC03_001 (133 ins), exemplar of a 5-member open-only - * h_norm cluster. Builds the full-screen fade overlay: a DR_MODE-style 8-byte - * GP0 packet (0xE1000015), a 320x240 semi-transparent gouraud quad (POLY_G4, - * code 0x3A), and a second 8-byte GP0 packet (0xE1000240), each linked into the - * current OT with the psyq `addPrim` idiom. The type shapes and the - * `((PTag *)x)->addr = ((PTag *)ot)->addr; ((PTag *)ot)->addr = (u32)x;` pair - * are copied VERBATIM from the already-matched neighbour func_8018BCD4 in this - * same TU (§71) — Env_* / PTag_* there are the fleet-canonical shapes. - * - * Levers that were load-bearing (all byte-tested; the draft is PIN-FREE): - * §20 &D_801151D0 / &D_800B9A02 taken into pointer LOCALS -> each address is - * force_reg'd once (lui+addiu -> $t2 / $a3) instead of a %lo per use. - * §36 the 24-bit BITFIELD store, not a hand-written mask, is what emits - * 0x00FFFFFF (lui+ori) ahead of 0xFF000000 (lui) while the body ANDs the - * destination first — expmed's store_fixed_bit_field signature. - * §37 asm-label aliases for D_801E770C/D_801E7710: the TU canon is u16/s16 - * but the target does a bare `lbu %lo(sym)`, and a plain block-scope - * `extern u8` would be a conflicting redeclaration. - * --- `volatile` on the OT index read keeps all SIX *pbh loads alive; a plain - * read cse-folds them and the function loses ~25 instructions. - * S1 the whole body is ONE branch-free basic block and every store ties at - * the same priority, so forward asm order == source statement order — - * the POLY_G4 block below is a literal transcription of the target. - * S2 `p` is destructively updated (multi-set -> no birthing boost) so its - * `addiu +8` floats up into the preceding load-delay gap, while `r` is a - * FRESH single-set local (boosted) so its `addiu +0x24` sinks to sit - * immediately before `sb 3($a0)`. Both placements are the target's. - * --- the bare `p = r;` before r's uses is a COMBINE BARRIER: without a SET - * of `p` between `r = p + 9` and r's first use, `can_combine_p` lets - * combine substitute `r` -> `p + 0x24` into every MEM offset and the - * `addiu` disappears entirely (and, at the tail, `p += 2` folds to - * `addiu $t3,$t3,0x2C` off the stale base instead of `addiu $t3,$a0,8`). - * It also fixes the register rotation for free — verified that adding or - * removing `register __asm__` pins on p/r/pbh is a byte no-op. - */ - -/* ---- TU-visible spellings (file scope of ov_SC03_001_jr_8018A3A8.c) ---- */ - -void func_80189EA0(void) { - - extern s32 D_801151D0; - extern u16 D_801E770C; - extern s16 D_801E7710; - /* §100/§120: draft-local, uniquely-named types — they live in the BODY so - * they cannot collide with the TU's own Env_8018BCD4 / PTag_8018BCD4. */ - typedef struct { u32 addr : 24; u32 len : 8; } PTag_8018C960_80189EA0; - typedef struct { u32 *ot; u32 pad[4]; } Env_8018C960_80189EA0; /* 0x14 stride */ - typedef struct { - u32 tag; /* 0x00 */ - u8 r0, g0, b0, code; /* 0x04..0x07 */ - s16 x0, y0; /* 0x08, 0x0A */ - u8 r1, g1, b1, p1; /* 0x0C..0x0F */ - s16 x1, y1; /* 0x10, 0x12 */ - u8 r2, g2, b2, p2; /* 0x14..0x17 */ - s16 x2, y2; /* 0x18, 0x1A */ - u8 r3, g3, b3, p3; /* 0x1C..0x1F */ - s16 x3, y3; /* 0x20, 0x22 */ - } PG4_8018C960_80189EA0; /* -> 0x24 */ - - extern Env_8018C960_80189EA0 D_800AE7BC[]; - extern u8 aD801EF1EC __asm__("D_801E770C"); - extern u8 aD801EF1F0 __asm__("D_801E7710"); - - u32 **pp; - volatile u16 *pbh; - u32 *p; - u32 *r; - u8 c1, c2; - - pp = (u32 **)&D_801151D0; - pbh = (volatile u16 *)&D_800B9A02; - - p = *pp; - ((PTag_8018C960_80189EA0 *)p)->len = 1; - p[1] = 0xE1000015; - ((PTag_8018C960_80189EA0 *)p)->addr = ((PTag_8018C960_80189EA0 *)D_800AE7BC[*pbh].ot)->addr; - ((PTag_8018C960_80189EA0 *)D_800AE7BC[*pbh].ot)->addr = (u32)p; - - p += 2; - ((PG4_8018C960_80189EA0 *)p)->tag = 0x08000000; - ((PG4_8018C960_80189EA0 *)p)->code = 0x3A; - ((PG4_8018C960_80189EA0 *)p)->x2 = -160; - ((PG4_8018C960_80189EA0 *)p)->x0 = -160; - ((PG4_8018C960_80189EA0 *)p)->x3 = 160; - ((PG4_8018C960_80189EA0 *)p)->x1 = 160; - c1 = aD801EF1EC; - ((PG4_8018C960_80189EA0 *)p)->b1 = c1; - ((PG4_8018C960_80189EA0 *)p)->b0 = c1; - ((PG4_8018C960_80189EA0 *)p)->g1 = c1; - ((PG4_8018C960_80189EA0 *)p)->g0 = c1; - ((PG4_8018C960_80189EA0 *)p)->r1 = c1; - ((PG4_8018C960_80189EA0 *)p)->r0 = c1; - c2 = aD801EF1F0; - ((PG4_8018C960_80189EA0 *)p)->y1 = -120; - ((PG4_8018C960_80189EA0 *)p)->b3 = c2; - ((PG4_8018C960_80189EA0 *)p)->b2 = c2; - ((PG4_8018C960_80189EA0 *)p)->g3 = c2; - ((PG4_8018C960_80189EA0 *)p)->g2 = c2; - ((PG4_8018C960_80189EA0 *)p)->r3 = c2; - ((PG4_8018C960_80189EA0 *)p)->r2 = c2; - ((PG4_8018C960_80189EA0 *)p)->y0 = -120; - ((PG4_8018C960_80189EA0 *)p)->y3 = 120; - ((PG4_8018C960_80189EA0 *)p)->y2 = 120; - - ((PTag_8018C960_80189EA0 *)p)->addr = ((PTag_8018C960_80189EA0 *)D_800AE7BC[*pbh].ot)->addr; - ((PTag_8018C960_80189EA0 *)D_800AE7BC[*pbh].ot)->addr = (u32)p; - - r = p + 9; /* 0x24 */ - p = r; /* COMBINE BARRIER — see header */ - ((PTag_8018C960_80189EA0 *)r)->len = 1; - r[1] = 0xE1000240; - ((PTag_8018C960_80189EA0 *)r)->addr = ((PTag_8018C960_80189EA0 *)D_800AE7BC[*pbh].ot)->addr; - ((PTag_8018C960_80189EA0 *)D_800AE7BC[*pbh].ot)->addr = (u32)r; - - p += 2; - *pp = p; -} - - -extern void func_8001D074(s32 a0, s32 a1); -extern void func_800233CC(void *, unsigned short); -extern void func_8001CD50(s32 a0, s32 a1); - -extern s32 D_801E77E8[]; -extern s32 D_801E7804; - -void func_8018A0B4(void) { - s32 i; - - i = 0; - do { - D_801E77E8[i] = ((s32 (*)(s32, s32))func_8001D074)(0x3E, 0x7D); - (&D_801E7804)[i * 0x10] = 0; - func_800233CC(&(&D_801E7804)[i * 0x10] - 1, 0x30); - func_8001CD50(D_801E77E8[i], (s32)(&(&D_801E7804)[i * 0x10] - 1)); - ((s32 *)D_801E77E8[i])[1] |= 0xD0000040; - i++; - } while (i < 6); -} - - -extern s32 D_801E7984[]; - -void func_8018A168(a0, a1) -s32 a0; -s32 a1; -{ - extern s32 D_801E7984[]; - register s32 rv __asm__("$2"); - s32 x = 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; -extern s32 func_8018A224(); - -s32 func_8018A1D0(s32 a0) { - s32 res; - res = D_801E0498[a0](); - if (res == -1) { - return -1; - } - return func_8018A224(D_801E7980, res); -} - - - - -extern u16 D_800B99DA; -extern u8 D_801E04E0[]; -extern void func_8018A2E0(u16 *a0, s32 a1); - -typedef struct { - u16 f0; - u16 f1; - u16 f2; - s16 f3; -} Ent_8018A224; - -s32 func_8018A224(Ent_8018A224 *arg0, s32 arg1) -{ - u8 rect[4]; - s32 step; - register s32 q __asm__("$3"); - register s32 half __asm__("$2"); - - step = 0x50; - if (D_801E04E0[D_800B99DA & 0xF] == 0) { - step = 0x60; - } - arg1 += 1; - q = (step * arg1) / 32; - half = q / 2; - rect[0] = q; - rect[1] = q; - rect[2] = half; - rect[3] = 0; - if (arg0->f3 != -1) { - do { - func_8018A2E0(&arg0->f0, *(s32 *)rect); - arg0++; - } while (arg0->f3 != -1); - } -} - - - -/* func_8018A2E0 (ov_SC04_018, ov_SC04_018_jr_8017AE2C) — MATCH (250 ins) - * - * Shadow/marker quad renderer: builds an outer quad (D_801E00B0 offset table) - * through RotNclip4, rejects it on OTZ, builds the inner quad (D_801E0130) - * through RotTransPers4, then emits 4 semi-transparent POLY_G4 (0x24 each) + - * one semi-transparent POLY_F4 (0x18) out of one 0xA8 packet allocation. - * - * Levers that closed the residual (all byte-verified against the .s): - * - frame 0xE0 with locals starting at 0x30: STARTING_FRAME_OFFSET == - * outgoing-args size (RotNclip4 takes 11 args -> 0x2C -> 0x30). `pad0[16]` - * is the DEAD 0x20-byte first local (§136 idiom 6) that puts va at sp+0x50. - * - `sxy[8]` is ONE array: RotNclip4 fills [0..3], RotTransPers4 fills [4..7], - * and the loop indexes the whole thing (idx values run 0..7). - * - `register u16 *dst __asm__("$4")`: a HARD-reg dst is not a biv, so loop.c - * cannot strength-reduce its +2/+4 accesses into a second IV. That is what - * gives ONE register with offsets 0/2/4 (unpinned -> 254 ins, extra IV). - * - `p2 = p1 + 2` (two walked source pointers): `p1[0]` is a bare deref - * (excluded from givs, loop-map L1 rule 4) so p1 stays the biv used at - * offset 0, and p2 is the second IV carrying the -2/0 offset cluster. - * - `while` loops with `i++` written BEFORE the pointer bumps: the increment - * LUID order decides which bump fills the first load-delay slot. - * - `s16 idx[4]` as a real ARRAY (ARRAY_REF => MEM_IN_STRUCT_P): that makes - * the varying-address packet store conflict with the stack slots, so CSE - * cannot forward idx[1..3] and gcc re-loads them with `lh` (an - * INDIRECT_REF `*(s16*)(buf+0x82)` forwards them and loses the reloads). - * - `D_800A651C[][5]` / `D_801E01Dx[][4]` two-dimensional externs: the 1-D - * `sym + byte_offset` spelling makes gcc materialise `&D_800A651C` into a - * hoisted callee-saved register ($s5, +4 ins); the 2-D array-ref keeps the - * symbol folded in the MEM address (gas `lw $2,sym($1)` macro) and makes the - * table index a REDUCED GIV, whose preheader init lands AFTER the hoisted - * `addiu $s3,$sp,0x30` movable (target order s3 -> s2 -> s0). - * - `type2 = type + zr` ($zero pin): the target keeps TWO pseudos for - * (attr & 0xFF) — $a0 for the pre-call use and $s1 for the post-call one — - * so a plain second variable would be propagated away by CSE. - * - `pk[7] = 0x3A` written AFTER the 0x1C colour store: it only conflicts with - * the 0x04 store, so the scheduler sinks it into the `lh 0xB6($sp)` delay - * slot exactly as in the target (§135 idiom 4, source order sets the sink). - */ - -extern void func_8012E32C(void); -extern void func_8018A6C8(void *, s32); -extern s32 RotNclip4(s32, s32, s32, s32, s32 *, s32 *, s32 *, s32 *, s32 *, s32 *, s32 *); -extern s32 RotTransPers4(s32, s32, s32, s32, s32 *, s32 *, s32 *, s32 *, s32 *, s32 *); -extern void *func_80010A08(s32); -extern s32 AddPrim(s32, void *); -extern void func_8012E28C(s32, s32); - -void func_8018A2E0(u16 *a0, s32 a1) -{ - - extern s32 D_800A651C[][5]; - extern u16 D_801E00B0[]; - extern u16 D_801E0130[]; - extern u16 D_801E01D0[][4]; - extern u16 D_801E01D2[][4]; - extern u16 D_801E01D4[][4]; - extern u16 D_801E01D6[][4]; - register s32 zr __asm__("$0"); - - u16 pad0[16]; /* dead: locals begin at sp+0x30, va must land at sp+0x50 */ - u16 va[16]; /* sp+0x50 — outer quad, 4 x SVECTOR */ - u16 vb[16]; /* sp+0x70 — inner quad, 4 x SVECTOR */ - s32 sxy[8]; /* sp+0x90 — [0..3] RotNclip4, [4..7] RotTransPers4 */ - s16 idx[4]; /* sp+0xB0 */ - s32 p; /* sp+0xB8 */ - s32 otz; /* sp+0xBC */ - s32 flag; /* sp+0xC0 */ - - u16 attr; - s32 type; - s32 type2; - u16 *p1; - u16 *p2; - register u16 *dst __asm__("$4"); - s32 i; - u8 *pk; - s32 j; - - func_8012E32C(); - - attr = a0[3]; - type = attr & 0xFF; - type2 = type + zr; - if ((attr & 0xF00) == 0x200) { - func_8018A6C8(a0, a1); - return; - } - - p1 = (u16 *)((u8 *)D_801E00B0 + type * 0x20); - i = 0; - p2 = p1 + 2; - dst = va; - while (i < 4) { - dst[0] = a0[0] + p1[0]; - dst[1] = a0[1] + p2[-1]; - dst[2] = a0[2] + p2[0]; - i++; - p1 += 4; - p2 += 4; - dst += 4; - } - - if (RotNclip4((s32)&va[0], (s32)&va[4], (s32)&va[8], (s32)&va[12], - &sxy[0], &sxy[1], &sxy[2], &sxy[3], &p, &otz, &flag) <= 0) { - return; - } - - otz -= 0x10; - if (otz < 0) { - return; - } - if (otz >= 0x1000) { - return; - } - - p1 = (u16 *)((u8 *)D_801E0130 + type2 * 0x20); - i = 0; - p2 = p1 + 2; - dst = vb; - while (i < 4) { - dst[0] = a0[0] + p1[0]; - dst[1] = a0[1] + p2[-1]; - dst[2] = a0[2] + p2[0]; - i++; - p1 += 4; - p2 += 4; - dst += 4; - } - - RotTransPers4((s32)&vb[0], (s32)&vb[4], (s32)&vb[8], (s32)&vb[12], - &sxy[4], &sxy[5], &sxy[6], &sxy[7], &p, &flag); - - pk = func_80010A08(0xA8); - - for (j = 0; j < 4; j++) { - idx[0] = D_801E01D0[j][0]; - idx[1] = D_801E01D2[j][0]; - idx[2] = D_801E01D4[j][0]; - idx[3] = D_801E01D6[j][0]; - *(s32 *)(pk + 0x4) = a1 & -(idx[0] < 4); - *(s32 *)(pk + 0xC) = a1 & -(idx[1] < 4); - *(s32 *)(pk + 0x14) = a1 & -(idx[2] < 4); - *(s32 *)(pk + 0x1C) = a1 & -(idx[3] < 4); - pk[7] = 0x3A; - *(u32 *)(pk + 0x0) = 0x08000000; - *(s32 *)(pk + 0x8) = sxy[idx[0]]; - *(s32 *)(pk + 0x10) = sxy[idx[1]]; - *(s32 *)(pk + 0x18) = sxy[idx[2]]; - *(s32 *)(pk + 0x20) = sxy[idx[3]]; - AddPrim(D_800A651C[(u16)D_800B9A02][0] + (otz * 4), pk); - pk += 0x24; - } - - *(s32 *)(pk + 0x4) = a1; - pk[7] = 0x2A; - *(u32 *)(pk + 0x0) = 0x05000000; - *(s32 *)(pk + 0x8) = sxy[0]; - *(s32 *)(pk + 0xC) = sxy[1]; - *(s32 *)(pk + 0x10) = sxy[2]; - *(s32 *)(pk + 0x14) = sxy[3]; - AddPrim(D_800A651C[(u16)D_800B9A02][0] + (otz * 4), pk); - func_8012E28C(otz, 1); -} - - -extern s32 D_801E77E8[]; -extern s32 D_801E7800[]; - -void func_8018A6C8(void *a0, s32 a1) { - s32 v1; - s32 *a2; - - v1 = ((u16 *)a0)[3] >> 12; - a2 = (s32 *)D_801E77E8[v1]; - a2[1] &= 0x7FFFFFFF; - D_801E7800[v1 * 16] = a1; - ((u16 *)a2)[4] = ((u16 *)a0)[0]; - ((u16 *)a2)[5] = ((u16 *)a0)[1]; - ((u16 *)a2)[6] = ((u16 *)a0)[2]; - ((u16 *)a2)[9] = (((u16 *)a0)[3] & 0xF) << 10; -} - - -DEFINE_func_8018A740() /* dedup: shared engine-core @0x8018A740 (src/shared) */ - - - -extern s32 func_80184BAC(s32 arg0, s32 arg1); -extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_8012BEE8(s32 a0); -extern s32 rand(void); - -void func_8018A77C(s32 param_1) { - - extern u8 D_801E0500[][4]; - s32 i; - s32 v1; - s32 uVar1; - - if (func_80184BAC(7, 0x13) == 0) { - return; - } - for (i = 0; i < 4; i++) { - if (D_801E0500[*(s16 *)(param_1 + 0x100)][i] == *(s32 *)(param_1 + 0x1c)) { - func_8012C658(0x140, - *(u8 *)(param_1 + 0xfc) | ((*(s16 *)(param_1 + 0xfe) << 8) & 0xff00), - param_1); - break; - } - } - if (func_8012BEE8(param_1) == 0) { - return; - } - *(s32 *)(param_1 + 0x1c) = 0x50; - uVar1 = rand(); - v1 = *(u16 *)(param_1 + 0xfe) + (uVar1 & 0xf) - 7; - v1 &= 0xff; - *(u16 *)(param_1 + 0xfe) = v1; - uVar1 = rand(); - v1 = *(u16 *)(param_1 + 0xfc) + (uVar1 & 0xf) - 7; - v1 &= 0xff; - *(u16 *)(param_1 + 0xfc) = v1; - uVar1 = rand(); - *(s16 *)(param_1 + 0x100) = uVar1 % 7; -} - - -DEFINE_func_8018A898() /* dedup: shared engine-core @0x8018A898 (src/shared) */ - - -extern void (*D_801E0524[])(void); - -void func_8018A8D4(void *a0) { - D_801E0524[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_801E0534[])(void); - -void func_8018A910(void *a0) { - D_801E0534[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_801E0544[])(void); - -void func_8018A94C(void *a0) { - D_801E0544[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8018A988() /* dedup: shared engine-core @0x8018A988 (src/shared) */ - - -extern s32 func_8012BEE8(s32 a0); -extern s32 rand(void); - -void func_8018A990(s32 param_1) { - s32 uVar1; - s32 iVar2; - register s32 iVar3 __asm__("$3"); - register s32 iVar4 __asm__("$16"); - u32 uVar3; - - uVar1 = *(u16 *)(param_1 + 0x34); - if (uVar1 == 1) { - goto case1; - } - if (uVar1 < 2) { - if (uVar1 == 0) { - goto case0; - } - return; - } - if (uVar1 == 2) { - goto case2; - } - if (uVar1 != 3) { - return; - } - goto case3; - -case0: - iVar2 = func_8012BEE8(param_1); - if (iVar2 == 0) { - return; - } - *(s32 *)(param_1 + 0x1c) = 0x40; - *(u16 *)(param_1 + 0x34) = *(u16 *)(param_1 + 0x34) + 1; - uVar3 = rand(); - iVar4 = uVar3 & 0x3fff; - iVar4 = iVar4 + 0x7800; - uVar3 = rand(); - if ((uVar3 & 1) == 0) { - iVar4 = -iVar4; - } - *(s32 *)(param_1 + 0xe0) = iVar4; - *(s32 *)(param_1 + 0xe4) = 0; - return; - -case1: - iVar3 = *(s32 *)(param_1 + 0xe4); - iVar3 = iVar3 + *(s32 *)(param_1 + 0xe0); - *(s32 *)(param_1 + 0xdc) = *(s32 *)(param_1 + 0xdc) + iVar3; - *(s32 *)(param_1 + 0xe4) = iVar3; - *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12) = *(u16 *)(param_1 + 0xde); - iVar2 = func_8012BEE8(param_1); - if (iVar2 == 0) { - return; - } - *(u16 *)(param_1 + 0x34) = *(u16 *)(param_1 + 0x34) + 1; - uVar3 = rand(); - uVar3 = uVar3 & 0x3f; - goto tail; - -case2: - *(s32 *)(param_1 + 0xdc) = *(s32 *)(param_1 + 0xdc) + *(s32 *)(param_1 + 0xe4); - *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12) = *(u16 *)(param_1 + 0xde); - iVar2 = func_8012BEE8(param_1); - if (iVar2 == 0) { - return; - } - *(s32 *)(param_1 + 0x1c) = 0x40; - *(u16 *)(param_1 + 0x34) = *(u16 *)(param_1 + 0x34) + 1; - *(s32 *)(param_1 + 0xe0) = -*(s32 *)(param_1 + 0xe0); - return; - -case3: - __asm__ __volatile__("" ::: "memory"); - iVar3 = *(s32 *)(param_1 + 0xe4); - iVar3 = iVar3 + *(s32 *)(param_1 + 0xe0); - *(s32 *)(param_1 + 0xdc) = *(s32 *)(param_1 + 0xdc) + iVar3; - *(s32 *)(param_1 + 0xe4) = iVar3; - *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12) = *(u16 *)(param_1 + 0xde); - iVar2 = func_8012BEE8(param_1); - if (iVar2 == 0) { - return; - } - *(u16 *)(param_1 + 0x34) = 0; - uVar3 = rand(); - uVar3 = uVar3 & 0xff; - -tail: - *(u32 *)(param_1 + 0x1c) = uVar3 + 0x40; -} - - -DEFINE_func_8018AB3C() /* dedup: shared engine-core @0x8018AB3C (src/shared) */ - - - -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern s32 RotTransPers(s32, s32, s32 *, s32 *); -extern void func_8002D4C8(s32 a0, s32 a1); - -void func_8018AB78(void) -{ - - extern u16 D_800B99DA; - extern s32 D_80126B58; - extern u8 D_800AF648; - extern s32 D_801E055C; - extern s32 func_80013450(s32); - s32 *p = &D_80126B58; - s32 sxy, pv, flag; - s16 x; - s32 pan; - s32 dist; - s32 vol; - - if (!(D_800B99DA & 1)) { - func_8004914C(&D_800AF648); - func_800491AC(&D_800AF648); - if (RotTransPers((s32)&D_801E055C, (s32)&sxy, &pv, &flag) <= 0 || flag < 0) { - func_8002D4C8(4, 0x7E6); - } else { - x = *(u16 *)&sxy + 0xA0; - *(s16 *)&sxy = x; - if (x < 0) { - x = 0; - *(s16 *)&sxy = x; - } else if (x >= 0x141) { - x = 0x140; - *(s16 *)&sxy = x; - } - x = *(s16 *)&sxy; - pan = (x * 15) / 320; - dist = ((s32 (*)(s32, s32))func_80013450)((s32)(p + 1), (s32)&D_801E055C); - if (dist >= 0x240) { - dist = 0x23F; - } - { - s32 panpart; - vol = ((0x23F - dist) * 127) / 576; - panpart = ((pan << 8) & 0xF00) | 0x3000; - func_8002D4C8(0x7E6, panpart | (vol & 0x7F)); - } - } - } -} - - - -extern s32 D_801E01F0; -extern s32 D_801E7980; -extern void func_8018A168(s32 arg0, s32 arg1); - -void func_8018ACD4(void) { - D_801E7980 = &D_801E01F0; - func_8018A168(0x474, 0x4B0); -} - - - -extern s32 D_801E0228; -extern s32 D_801E7980; -extern void func_8018A168(s32 arg0, s32 arg1); - -void func_8018AD08(void) { - D_801E7980 = &D_801E0228; - func_8018A168(0x474, 0x4EC); -} - - - -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); - -void func_8018AD70(void) { - D_801E7980 = &D_801E0288; - func_8018A168(0x474, 0x4B0); -} - - - -extern s32 D_801E02C0; -extern s32 D_801E7980; -extern void func_8018A168(s32 arg0, s32 arg1); - -void func_8018ADA4(void) { - D_801E7980 = &D_801E02C0; - func_8018A168(0x474, 0x528); -} - - -s32 func_8018ADD8(void) { - extern s32 D_801E02F8; - extern s32 D_801E7980; - extern void func_8018A168(s32, s32); - s32 s0; - - D_801E7980 = (s32)&D_801E02F8; - s0 = ((s32 (*)(s32, s32))func_8018A168)(0x168, 0x1A4); - if (s0 == -1) { - s0 = ((s32 (*)(s32, s32))func_8018A168)(0x474, 0x4EC); - } - if ((u32)(func_80029504() - 0xC8) < 0xDC) { - return -1; - } - return s0; -} - - - -extern s32 D_801E0338; -extern s32 D_801E7980; -extern void func_8018A168(s32 arg0, s32 arg1); - -void func_8018AE4C(void) { - D_801E7980 = &D_801E0338; - func_8018A168(0x474, 0x1A4); -} - - - - -extern s32 func_80029504(void); -extern void func_8018A168(s32 arg0, s32 arg1); - -s32 func_8018AE80(void) { - - extern s32 D_801E0370; - s32 v; - D_801E7980 = (s32)&D_801E0370; - v = func_80029504(); - if ((u32)(v - 0x64) < 0x1F4) { - return -1; - } - func_8018A168(0x96, 0xF0); -} - - - -extern s32 D_801E0390; -extern s32 D_801E7980; -extern void func_8018A168(s32 arg0, s32 arg1); - -void func_8018AECC(void) { - D_801E7980 = &D_801E0390; - func_8018A168(0x12c, 0x1A4); -} - - -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); - -void func_8018AF34(void) { - D_801E7980 = &D_801E0440; - func_8018A168(0x474, 0x4B0); -} - - - - -extern s32 func_80029504(void); -extern void func_8018A168(s32 arg0, s32 arg1); - -s32 func_8018AF68(void) { - - extern s32 D_801E0470; - s32 v; - D_801E7980 = (s32)&D_801E0470; - v = func_80029504(); - if ((u32)(v - 0x64) < 0x1F4) { - return -1; - } - func_8018A168(0x474, 0x78); -} - - - -extern s32 D_801E0488; -extern s32 D_801E7980; -extern void func_8018A168(s32 arg0, s32 arg1); - -void func_8018AFB4(void) { - D_801E7980 = &D_801E0488; - func_8018A168(0x564, 0x1A4); -} - - -DEFINE_func_8018AFE8() /* dedup: shared engine-core @0x8018AFE8 (src/shared) */ - - - -extern u8 D_80078EB0; -extern u8 D_80078EB1; -extern s32 D_801E77E8[]; -extern s32 D_801E7984[]; -extern s32 D_801E799C; -extern s32 func_8018A1D0(s32); -extern void func_8018AB78(void); - -void func_8018AFF0(void) { - s32 i; - - (*(s32 *)D_801E7984) = (((D_80078EB1 << 4) - D_80078EB1) << 2) + D_80078EB0; - for (i = 0; i < 6; i++) { - *(s32 *)(D_801E77E8[i] + 4) |= 0x80000000; - } - for (i = 2; i < 18; i++) { - ((void (*)(s32))func_8018A1D0)(i); - } - func_8018AB78(); - if (D_801E799C != 0) { - D_801E799C--; - } -} - - -DEFINE_func_8018B0AC() /* dedup: shared engine-core @0x8018B0AC (src/shared) */ - -DEFINE_func_8018B158() /* dedup: shared engine-core @0x8018B158 (src/shared) */ - -extern void func_8012B200(u8 *a0); - -/* - * func_8018B19C -- ov_SC04_018 / ov_SC04_018_jr_80188E1C, 71 ins, family reach x6. - * - * STEP 0 sibling: this is a direct extension of the shared-engine-core macro - * DEFINE_func_80144558() (src/shared/engine_core.h) -- identical prologue - * through the func_80128EA8 call and the three field copies (+8/+0xA/+0xC - * from param_1+6/+0xA/+0xE), but instead of calling func_8012B200(param_1) at - * the end, this variant sets a handful of extra fields directly and calls - * func_8012B0B4 (angle -> velocity split), matching the idiom seen at - * src/ov_SC03_099/ov_SC03_099_jr_8017BEBC.c:func_8017F9C4/func_8017FB58 and - * the DEFINE_func_8012B0B4() macro itself (single u32 result word written - * through the output pointer). - */ -extern void func_8012C194(void); -extern void func_8012CAE4(void *a0); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3); - -void func_8018B19C(u8 *arg0) -{ - - extern u8 D_800D387C[]; - extern u8 D_800D3888[]; - register u8 *param_1 __asm__("$16"); /* $s0 */ - s32 raw; - u32 buf[6]; - - param_1 = arg0; - { - register s32 s0 __asm__("$17"); /* $s1 -- scoped: dead after func_80128EA8 */ - s0 = ((s32 (*)(void))func_8012C194)(); - if (s0 == 0) { - func_8012CAE4(param_1); - return; - } - *(s32 *)(param_1 + 0xCC) = s0; - func_8001CC3C(s0, 0, 0, 0); - *(s32 *)(s0 + 0x20) = (s32)D_800D387C; - *(u8 *)(s0 + 0x27) = 0x9C; - *(u16 *)(s0 + 0x1A) = 0x3000; - *(u16 *)(s0 + 0x18) = 0x3000; - *(u32 *)(s0 + 4) = *(u32 *)(s0 + 4) | 0x50000000; - func_80128EA8(s0, (s32)(param_1 + 0xD0), (s32)D_800D3888); - } - { - s32 obj = *(s32 *)(param_1 + 0xCC); - *(u16 *)(obj + 8) = *(u16 *)(param_1 + 6); - *(u16 *)(obj + 0xA) = *(u16 *)(param_1 + 0xA); - *(u16 *)(obj + 0xC) = *(u16 *)(param_1 + 0xE); - } - raw = *(s16 *)(param_1 + 0x70); - *(s32 *)(param_1 + 0x1C) = 0x5A; - *(u16 *)(param_1 + 2) = 1; - *(s32 *)(param_1 + 0x10) = 0; - *(s32 *)(param_1 + 0x14) = 0xFFF80000; - *(s32 *)(param_1 + 0x18) = 0; - func_8012B0B4((unsigned int *)buf, (raw & 0xFF00) >> 4, (raw & 0xFF) << 6); - { - register s32 full __asm__("$2"); - register s32 low __asm__("$3"); - full = *(s32 *)buf; - low = *(s16 *)buf; - *(s32 *)(param_1 + 0x48) = 0; - *(s32 *)(param_1 + 0x44) = low; - *(s32 *)(param_1 + 0x4C) = full >> 16; - } -} - - - - -extern void func_8012AD80(s32 a0); -extern s32 func_80128ED8(s32 a0, s32 *a1); -extern s32 func_8012BEE8(s32 a0); -extern void func_80016714(void *a0, s32 a1); -extern void func_8012C218(void *a0); - -void func_8018B2B8(void *arg0) { - s32 temp_s1; - s32 temp_v1; - - temp_s1 = *(s32 *)((s32)arg0 + 0xCC); - func_8012AD80((s32)arg0); - temp_v1 = *(s32 *)((s32)arg0 + 0xCC); - *(u16 *)(temp_v1 + 8) = *(u16 *)((s32)arg0 + 6); - *(u16 *)(temp_v1 + 0xA) = *(u16 *)((s32)arg0 + 0xA); - *(u16 *)(temp_v1 + 0xC) = *(u16 *)((s32)arg0 + 0xE); - if ((*(s32 *)((s32)arg0 + 0x1C) & 7) == 0) { - func_80128ED8(temp_s1, (s32 *)((s32)arg0 + 0xD0)); - } - if (func_8012BEE8((s32)arg0) != 0) { - func_80016714((void *)temp_s1, 0x38); - func_8012C218(arg0); - } -} - - - -extern void func_8012B414(int a0); - void func_8018B354(s32 arg0) { - s32 temp_v1 = *(s32 *)(arg0 + 0x20); - *(s16 *)(temp_v1 + 0x14) += 0x8; - ((void (*)(void))func_8012B414)(); - } - - -DEFINE_func_8018B388() /* dedup: shared engine-core @0x8018B388 (src/shared) */ - - - -extern u16 D_800B99DA; -extern s32 func_8004787C(s32); - -void func_8018B400(void *arg0) { - u32 ret; - u8 *v1; - - ret = func_8004787C(D_800B99DA * 48); - v1 = *(u8 **)((char *)arg0 + 0x20); - *(u16 *)(v1 + 0x10) = ret >> 5; -} - - -extern s32 D_801B60B0[]; -extern s32 D_801E053C[]; -extern s32 func_80029504(void); -extern void func_8001C810(s32 a0, s32 a1); -extern void func_8001D0E8(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8012E8E0(s32 a0, s32 a1); - -void func_8018B448(a0) -s32 a0; -{ - s32 v0; - if ((u32)(func_80029504() - 0x181) < 0x55) { - func_8012CAE4((void *)a0); - return; - } - *(s32 *)(a0 + 0x20) = v0 = ((s32 (*)(void))func_8012C1B8)(); - if (v0 == 0) { - func_8012CAE4((void *)a0); - return; - } - func_8001C810(v0, (s32)D_801B60B0); - *(s32 *)(*(s32 *)(a0 + 0x20) + 4) |= 0x8000; - func_8001D0E8(*(s32 *)(a0 + 0x20), 0x7FFF, 0x7FFF); - func_8012E8E0(a0, (s32)D_801E053C); - *(s16 *)(a0 + 0x2) = 1; - return; -} - - -extern s32 D_801B65B0[]; -extern s32 D_801E054C[]; -extern void func_8001C214(s32, s32); -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8012E8E0(s32 a0, s32 a1); - -void func_8018B4EC(a0) -s32 a0; -{ - extern s32 D_801B65B0[]; - extern s32 D_801E054C[]; - s32 v0; - - v0 = ((s32 (*)(void))func_8012C1B8)(); - *(s32 *)(a0 + 0x20) = v0; - if (v0 == 0) { - func_8012CAE4((void *)a0); - } else { - func_8001C214(v0, (s32)D_801B65B0); - func_8012E8E0(a0, (s32)D_801E054C); - *(s16 *)(a0 + 0x2) = 1; - *(s16 *)(a0 + 0x34) = 0; - *(s32 *)(a0 + 0xDC) = 0; - *(s32 *)(a0 + 0xE0) = 0; - *(s32 *)(a0 + 0xE4) = 0; - } -} - - -DEFINE_func_8018B564() /* dedup: shared engine-core @0x8018B564 (src/shared) */ - - -extern void (*D_801E056C[])(void); - -void func_8018B570(void *a0) { - D_801E056C[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern s32 func_80184BAC(s32 arg0, s32 arg1); -extern s32 func_80184D00(void); -extern s32 func_80184E44(void); -extern u8 D_80078EBA; - -s32 func_8018B5AC() { - s32 v0; - - v0 = ((s32 (*)(void))func_80184D00)(); - if (v0 == 3) { - return 1; - } - v0 = func_80184E44(); - if (v0 == 1) { - return 1; - } - if (D_80078EBA != 2) { - return func_80184BAC(0xC, 0x14) == 0; - } - return 1; -} - - -DEFINE_func_8018B614() /* dedup: shared engine-core @0x8018B614 (src/shared) */ - -DEFINE_func_8018B660() /* dedup: shared engine-core @0x8018B660 (src/shared) */ - -extern s32 func_8012E57C(s32 a0, s32 a1); - -void func_8018B6A0(void *a0) { - s32 v0; - - v0 = func_8012E57C(0x61, 0xD); - *(s32 *)((char *)a0 + 0xCC) = v0; - v0 = func_8018B5AC(); - - if (v0 != 0) { - v0 = 2; - } else { - v0 = 1; - } - - *(s16 *)((char *)a0 + 0x2) = v0; -} - - -DEFINE_func_8018B6E8() /* dedup: shared engine-core @0x8018B6E8 (src/shared) */ - - - -extern void (*D_801E0580[])(void); - -void func_8018B6F4(void *a0) { - D_801E0580[*(u16 *)((s32)a0 + 0x2)](); -} - - - - -extern s32 func_80184BAC(s32 arg0, s32 arg1); -extern u8 D_80078EBA; -extern void func_8018B6E8(s32*); - -void func_8018B730(void *a0) { - s32 v0; - *(s32 *)(*(s32 *)((s32)a0 + 0xcc) + 0xb0) = 1; - if (D_80078EBA == 3) { - v0 = 0; - } else { - v0 = func_80184BAC(7, 0x13) != 0; - } - if (!v0) { - ((void (*)(void *))func_8018B6E8)(a0); - } -} - - -extern s32 func_80184BAC(s32 arg0, s32 arg1); -extern u8 D_80078EBA; - -void func_8018B798(void *a0) { - s32 v0; - *(s32 *)(*(s32 *)((s32)a0 + 0xCC) + 0xB0) = 2; - if (D_80078EBA == 3) { - v0 = 0; - } else { - v0 = func_80184BAC(7, 0x13) != 0; - } - if (v0 != 0) { - *(u16 *)((char *)a0 + 2) = 1; - } -} - - -DEFINE_func_8018B7FC() /* dedup: shared engine-core @0x8018B7FC (src/shared) */ - -DEFINE_func_8018B868() /* dedup: shared engine-core @0x8018B868 (src/shared) */ - - - -extern void (*D_801E0594[])(void); - -void func_8018B874(void *a0) { - D_801E0594[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern s32 func_80029178(s32 arg); -extern s32 func_80029504(void); -extern s32 func_80184BAC(s32 arg0, s32 arg1); - -s32 func_8018B8B0() { - if ((u32)(func_80029504() - 0x12C) < 0x12C) { - if ((func_80029178(0xFA) & 0xFF) != 0) { - return 0; - } - } - return (0U < (u32)func_80184BAC(0xA, 0x14)) ? 1 : 0; -} - - -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 func_8018B948(a0) -s32 a0; -{ - s32 *v1; - v1 = *(s32 **)((s32)a0 + 0xCC); - *(s32 *)((s32)v1 + 0xB0) = 2; - if (func_8018B8B0() != 0) { - *(s16 *)((s32)a0 + 0x2) = 1; - } -} - - - - -extern s32 func_8012E57C(s32 a0, s32 a1); -extern s32 func_8018B8B0(void); - -void func_8018B988(void *a0) { - s32 v0; - - v0 = func_8012E57C(0x61, 0xC); - *(s32 *)((char *)a0 + 0xCC) = v0; - v0 = func_8018B8B0(); - - if (v0 != 0) { - v0 = 1; - } else { - v0 = 2; - } - - *(s16 *)((char *)a0 + 0x2) = v0; -} - - -DEFINE_func_8018B9D0() /* dedup: shared engine-core @0x8018B9D0 (src/shared) */ - - -extern void (*D_801E05A8[])(void); - -void func_8018B9DC(void *a0) { - D_801E05A8[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8018BA18() /* dedup: shared engine-core @0x8018BA18 (src/shared) */ - -extern u8 D_80078EBA; -extern s32 func_80184BAC(s32 arg0, s32 arg1); - -void func_8018BA80(void *a0) { - s32 v0; - *(s32 *)(*(s32 *)((s32)a0 + 0xCC) + 0xB0) = 2; - if (D_80078EBA == 0) { - v0 = 0; - } else { - v0 = func_80184BAC(0xB, 0x10) != 0; - } - if (v0 != 0) { - *(u16 *)((char *)a0 + 2) = 1; - } -} - - -extern s32 func_8012E57C(s32 a0, s32 a1); -extern s32 func_80184BAC(s32 arg0, s32 arg1); -extern u8 D_80078EBA; - -void func_8018BAE4(a0) -void *a0; -{ - s32 v0; - v0 = func_8012E57C(0x61, 0x9); - *(s32 *)((char *)a0 + 0xCC) = v0; - if (D_80078EBA == 0) { - v0 = 0; - } else { - v0 = func_80184BAC(0xB, 0x10); - v0 = (0U < (u32)v0) ? 1 : 0; - } - if (v0 != 0) { - v0 = 1; - } else { - v0 = 2; - } - *(s16 *)((char *)a0 + 0x2) = v0; -} - - -extern u8 D_80078EBA; -extern s32 func_80184BAC(s32 arg0, s32 arg1); -extern s32 func_80029504(void); -extern s32 func_80184D00(void); -extern s32 func_80184E44(void); - -s32 func_8018BB50(void) { - u8 d = D_80078EBA; - s32 v1; - s32 v0; - - if (d == 6) { - if (func_80184BAC(0, 0xC) == 0) { - return 0; - } - } else if (d == 0) { - if (func_80184BAC(0, 0xC) != 0) { - return 0; - } - } - - v1 = func_80029504(); - if (v1 < 0xC8) { - v1 = func_80184D00(); - if (v1 < 0) { - return v1; - } - if (v1 < 3) { - goto common; - } - v0 = v1 < 5; - if (!v0) { - goto ret0; - } - v0 = 0; -ret0: - return v0; - } else { - if (v1 < 0x258) { - return 0; - } - } - if (v1 < 0x384) { -common: - return func_80184BAC(2, 0x12) == 0; - } - if (func_80184BAC(2, 0x12) == 0) { - return func_80184E44() != 1; - } - return 0; -} - - - -extern void (*D_801E05B4[])(void); - -void func_8018BC3C(void *a0) { - D_801E05B4[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern s32 func_8018BB50(void); -extern u8 D_801E7A96; - -void func_8018BC78(s32 a0) { - if (func_8018BB50() != 0) { - *(s32 *)(*(s32 *)(a0 + 0xCC) + 0xB0) = 1; - D_801E7A96 = 1; - } else { - *(s32 *)(*(s32 *)(a0 + 0xCC) + 0xB0) = 2; - D_801E7A96 = 0; - } -} - - -extern s32 func_8012E57C(s32 a0, s32 a1); -extern s32 func_8018BB50(void); -extern u8 D_801E7A96; - -void func_8018BCDC(a0) -s32 a0; -{ - *(s16 *)(a0 + 0x2) = 1; - *(s32 *)(a0 + 0xCC) = func_8012E57C(0x61, 0xE); - if (func_8018BB50() != 0) { - *(s32 *)(*(s32 *)(a0 + 0xCC) + 0xB0) = 1; - D_801E7A96 = 1; - } else { - *(s32 *)(*(s32 *)(a0 + 0xCC) + 0xB0) = 2; - D_801E7A96 = 0; - } -} - - - -extern void (*D_801E05BC[])(void); - -void func_8018BD58(void *a0) { - D_801E05BC[*(u16 *)((s32)a0 + 0x2)](); -} - - - -void func_8018BD94(void *a0) { - *(s32 *)(*(s32 *)((s32)a0 + 0xcc) + 0xb0) = 1; - } - - -DEFINE_func_8018BDA4() /* dedup: shared engine-core @0x8018BDA4 (src/shared) */ - - -extern void func_80184CB8(s32*, s32); - extern short D_801E05C4; - void func_8018BDE0(void * arg0) { - *(short *)((char *)arg0 + 0x2) = 2; - ((void (*)(s32, s32))func_80184CB8)((int)arg0, (int)&D_801E05C4); - } - - - -extern void func_80184CB8(s32*, s32); - extern short D_801E05C4; - void func_8018BE0C(void * arg0) { - *(short *)((char *)arg0 + 0x2) = 3; - ((void (*)(s32, s32))func_80184CB8)((int)arg0, (int)&D_801E05C4); - } - - - -extern void (*D_801E0690[])(void); - -void func_8018BE38(void *a0) { - D_801E0690[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern s32 D_801E05E0[]; -extern s32 D_801E05F4[]; -extern s32 func_80029504(void); -extern s32 func_80184D00(void); -extern s32 func_80184DD0(s32); - -void func_8018BE74(a0) -s32 a0; -{ - - extern s32 D_801E05E0[]; - extern s32 D_801E05F4[]; - - s32 v1 = func_80029504(); - - if (v1 < 0xC8) { - s32 v0 = ((s32 (*)(void))func_80184D00)(); - *(s32 *)(a0 + 0xE4) = D_801E05E0[v0]; - } else { - s32 v0 = ((s32 (*)(void))func_80184DD0)(); - *(s32 *)(a0 + 0xE4) = D_801E05F4[v0]; - } -} - - -extern s32 func_8014CB1C(void); - s32 func_8018BEE8(void) { - return func_8014CB1C() != 0; - } - - -DEFINE_func_8018BF08() /* dedup: shared engine-core @0x8018BF08 (src/shared) */ - - - - -extern void func_80178CBC(s32, s32); - extern short D_801E0648; - void func_8018BF34(short *a0) { - *(short *)((char *)a0 + 0x2) = 0x5; - *(short *)((char *)a0 + 0x34) = 0; - ((void (*)(s32 *, s32))func_80178CBC)((s32 *)a0, (s32)&D_801E0648); - } - - -extern s32 func_80184BAC(s32 arg0, s32 arg1); - -void func_8018BF64(void *arg0) { - register s32 *s0 asm("$16") = arg0; - s32 v0, v1; - *(s32 *)((u8 *)(*(s32 **)((u8 *)s0 + 0xCC)) + 0xB0) = 2; - v0 = func_80184BAC(6, 0x12); - if (v0 != 0) { - v1 = 1; - } else { - v0 = func_80184BAC(0x12, 0x15); - v1 = (v0 != 0) << 1; - } - if (v1 != 0) { - func_8018BDE0(s0); - } -} - - -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); - } -} - - -DEFINE_func_8018C038() /* dedup: shared engine-core @0x8018C038 (src/shared) */ - -extern int func_80178970(void); -extern void func_80178D18(void); -extern void func_80184CB8(s32 *, s32); - -void func_8018C0B0(void *arg0) { - extern short D_801E05C4; - s32 s0 = (s32)arg0; - - if ((*(u16 *)(s0 + 0x34) == 0) && (func_80178970() != 0)) { - ((void (*)(s32))func_80178D18)(s0); - *(s16 *)(s0 + 0x2) = 3; - func_80184CB8((s32 *)s0, (s32)&D_801E05C4); - } -} - - - - -extern s32 D_801E05CC; -extern s16 D_801E05C4; -extern s32 func_801847BC(void *, void *); -extern s32 func_80184BAC(s32, s32); -extern void func_80184CB8(s32 *, s32); -extern s32 func_801788B8(s32, s32); -extern s32 func_8018C1E0(void*); - -void func_8018C114(void *arg0) { - s32 s0 = (s32)arg0; - s32 m; - s32 r = 1; - - if (func_801847BC(arg0, &D_801E05CC) == 0) { - return; - } - if (func_80184BAC(6, 0x12) != 0) { - m = 1; - } else { - m = (func_80184BAC(0x12, 0x15) != 0) << 1; - } - switch (m) { - case 0: - r = 1; - break; - case 1: - r = 2; - break; - case 2: - r = 3; - break; - default: - goto tail; - } - *(s16 *)((char *)s0 + 0x2) = r; - func_80184CB8((s32 *)s0, (s32)&D_801E05C4); -tail:; - { - s32 v1 = *(s32 *)((char *)s0 + 0x68); - *(s16 *)((char *)v1 + 0xC) = 0x7FFF; - } - *(s32 *)((char *)s0 + 0xD4) = func_801788B8((s32)s0, (s32)&func_8018C1E0); -} - - -DEFINE_func_8018C1E0() /* dedup: shared engine-core @0x8018C1E0 (src/shared) */ - - -extern void func_80184CB8(s32*, s32); - extern short D_801E06A8; - void func_8018C24C(void * arg0) { - *(short *)((char *)arg0 + 0x2) = 2; - ((void (*)(s32, s32))func_80184CB8)((int)arg0, (int)&D_801E06A8); - } - - -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); - -void func_8018C368(void *a0) { - D_801E077C[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void func_80178CBC(s32 a0, s32 a1); - extern short D_801E070C; - void func_8018C3A4(void * arg0) { - *(short *)((char *)arg0 + 0x2) = 4; - func_80178CBC((int)arg0, (int)&D_801E070C); - } - - -extern s32 func_800D0EC4(); -s32 func_8018C3D0(void) { - return func_800D0EC4() == 0; -} - - -DEFINE_func_8018C3F0() /* dedup: shared engine-core @0x8018C3F0 (src/shared) */ - -extern s32 func_80029504(void); -extern s32 func_80184D00(void); -extern s32 func_80184E44(void); -extern s32 func_80184BAC(s32 arg0, s32 arg1); - -void func_8018C494(void *a0) { - s32 v1 = func_80029504(); - s32 v0; - - if (v1 < 0xC8) { - v0 = func_80184D00(); - v1 = 3; - if (v0 == v1) goto call_func_8018C24C; - goto call_func_80184BAC; - } else if (v1 >= 0x258) { - if (v1 < 0x384) { - goto call_func_80184BAC; - } else { - v0 = func_80184E44(); - v1 = 1; - if (v0 == v1) goto call_func_8018C24C; - } - -call_func_80184BAC: - v0 = func_80184BAC(0xA, 0x10); - if (v0 != 0) return; - } else { - return; - } - -call_func_8018C24C: - func_8018C24C(a0); -} - - - -extern s32 func_80029504(void); -extern s32 func_80184D00(void); -extern s32 func_80184E44(void); -extern s32 func_80184BAC(s32 arg0, s32 arg1); -extern void func_80184CB8(s32*, s32); - -void func_8018C518(void *a0) { - - extern short D_801E06A8; - void *s0 = a0; - s32 v1 = func_80029504(); - s32 v0; - - if (v1 < 0xC8) { - v0 = func_80184D00(); - v1 = 3; - if (v0 == v1) { - return; - } - v0 = func_80184BAC(0xA, 0x10); - if (v0 == 0) { - return; - } - v0 = 1; - } else if (v1 < 0x258) { - v0 = 1; - } else if (v1 < 0x384) { - v0 = func_80184BAC(0xA, 0x10); - if (v0 == 0) { - return; - } - v0 = 1; - } else { - v0 = func_80184E44(); - v1 = 1; - if (v0 == v1) { - return; - } - v0 = func_80184BAC(0xA, 0x10); - if (v0 == 0) { - return; - } - v0 = 1; - } - - *(s16 *)((char *)s0 + 0x2) = 0x1; - ((void (*)(s32, s32))func_80184CB8)((s32)s0, (s32)&D_801E06A8); -} - - - -extern int func_80178970(void); -extern void func_80178D18(void); -extern void func_80184CB8(s32*, s32); - -void func_8018C5AC(void * arg0) { - - extern short D_801E06A8; - if (func_80178970() != 0) { - ((void (*)(s32))func_80178D18)((s32)arg0); - *(short *)((char *)arg0 + 0x2) = 2; - ((void (*)(s32, s32))func_80184CB8)((int)arg0, (int)&D_801E06A8); - } -} - - - -extern void (*D_801E3AF4[])(void); - -void func_8018C5FC(void *a0) { - D_801E3AF4[*(u16 *)((s32)a0 + 0x2)](); -} - - - - -/* Declarations conformed to the TU (ov_SC04_018_jr_8017AE2C.c) — lever (A): - * func_8012A828 : TU declares `extern void func_8012A828(s32*, s32);` - * at L3460 / L4615 / L5083 / L5372 / L5859 / L6004 / L6155 / - * L6479 / L6504 / L6529. The draft's `(s32, s32)` form caused - * the 7697-vs-6529 conflict. Conformed here; the type - * disagreement is pushed to a cast at the call site. - * D_8018D540 : TU declares `extern u8 D_8018D540[];` (block scope, L3467). - * Conformed; `(s32)D_8018D540` == `(s32)&D_8018D540`. - * func_801788B8 : verbatim from TU L2532 / L7756 (below the splice point). - * func_8012C354, D_801E39E0, func_8018C730, func_8018C638 : no other - * declaration anywhere in the TU (func_8018C730 / func_8018C638 - * appear only as INCLUDE_ASM, which emits no C declaration). - * - * Body: the original draft was NOT byte-correct. `*(u16 *)(x + 2) = 1;` must be - * sequenced BEFORE the func_8012A828 call, not after it — with it after, gcc - * coalesces the store base onto $a0 (`sh v0,2(a0)`) and re-emits the arg copy, - * giving a 6-instruction ADDRESSING/cse diff. Moved above the call; both stores - * now retire off $s0 and the sh lands in the jal delay slot, as in the target. */ - -extern s32 func_8012C354(s32 a0, s32 a1); -extern void func_8012A828(s32*, s32); -extern s32 func_801788B8(s32 arg0, s32 arg1); - -extern s32 func_8018C730(); - -void func_8018C638(s32 a0) { - - extern M2C_UNK D_801E39E0; - extern u8 D_8018D540[]; - s32 s0 = a0; - if (func_8012C354(a0, (s32)&D_801E39E0)) { - *(u8 *)(s0 + 0xC0) = 1; - *(u16 *)(s0 + 0x2) = 1; - func_8012A828((s32 *)s0, (s32)D_8018D540); - func_801788B8(s0, (s32)func_8018C730); - } -} - - -DEFINE_func_8018C69C() /* dedup: shared engine-core @0x8018C69C (src/shared) */ - - -extern void func_80178CBC(s32, s32); - -void func_8018C6A4(s32 *a0) -{ - - extern signed char D_801E3AD0[]; - s32 v0; - - v0 = *(s16 *)((s32)a0 + 0x70); - v0 = v0 * 4; - ((void (*)(s32 *, s32))func_80178CBC)(a0, *(s32 *)((s32)D_801E3AD0 + v0)); - *(s16 *)((s32)a0 + 0x2) = 0x3; -} - - - -extern int func_80178970(void); -extern void func_80178D18(void); - -void func_8018C6F0(s32 a0) { - if (func_80178970() != 0) { - ((void (*)(s32))func_80178D18)(a0); - *(s16 *)(a0 + 2) = 1; - } -} - - -extern s32 func_8012BD14(s32 a0); -extern s32 func_80178BF8(); -extern void func_80172710(void); - -s32 func_8018C730(a0) -void *a0; -{ - if (func_8012BD14(*(s32 *)((s32)a0 + 0x64)) > 0x1000) { - return 0; - } - *(s16 *)(*(s32 *)((s32)a0 + 0x64) + 0x2) = 2; - func_80178BF8(); - return (s32)func_80172710; -} - - - -extern void (*D_801E3BA4[])(void); - -void func_8018C78C(void *a0) { - D_801E3BA4[*(u16 *)((s32)a0 + 0x2)](); -} - - -void func_8018C7C8(s32 a0) { - extern u8 D_801E3B9C[]; - extern void func_8012E8E0(s32 a0, s32 a1); - func_8012E8E0(a0, (s32)D_801E3B9C); -} - - -extern s32 func_80029504(void); -extern s32 func_80029178(s32 arg); -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); - -void func_8018C7F0(s32 a0) { - extern u8 D_801DE748[]; - extern u8 D_801E3B9C[]; - s32 v0; - s32 v1; - - v1 = func_80029504(); - if (v1 < 200) goto L850; - if (v1 < 600) { - if ((func_80029178(0x106) & 0xFF) == 0) goto L850; - goto L840; - } else { - if (v1 >= 630) goto L850; - } -L840: - v0 = ((s32 (*)(void))func_8012C1B8)(); - *(s32 *)(a0 + 0x20) = v0; - if (v0 != 0) goto L860; -L850: - func_8012CAE4((void *)a0); - return; -L860: - func_8001C214(v0, (s32)D_801DE748); - func_8012E8E0(a0, (s32)D_801E3B9C); - *(s16 *)(*(s32 *)(a0 + 0x68) + 0xC) = 0x7FFF; - *(s16 *)(a0 + 0x2) = 1; -} - - - - -s32 func_8018C8A8(void) -{ - - extern u16 D_80126B5E; - extern u16 D_80126B66; - extern u16 D_80126B62; - s16 v1; - s32 result; - - v1 = *(s16 *)&D_80126B5E; - if (v1 < 0x400) { - result = 0; - } else if (v1 >= 0x501) { - result = 0; - } else { - v1 = *(s16 *)&D_80126B66; - if (v1 < 0x580) { - result = 0; - } else if (v1 >= 0x601) { - result = 0; - } else { - v1 = *(s16 *)&D_80126B62; - result = (v1 >= -0x200); - } - } - return result; -} - - -extern void func_8012B2CC(s32 arg); - void func_8018C90C(void *a0) { - s32 v1 = *(s32 *)((s32)a0 + 0x20); - *(s16 *)((s32)a0 + 0x2) = 2; - *(s16 *)(v1 + 0x12) = -0x600; - func_8012B2CC((s32)a0); - } - - -extern void func_8012B2CC(s32 arg); -void func_8018C93C(void *a0) { - s32 v1 = *(s32 *)((s32)a0 + 0x20); - *(s16 *)((s32)a0 + 0x2) = 4; - *(s16 *)(v1 + 0x12) = 0x600; - func_8012B2CC((s32)a0); -} - - - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32, s32); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern s32 func_801788B8(s32 arg0, s32 arg1); -extern s32 func_80029504(void); -extern s32 func_80029178(s32 arg); -extern void func_8018CB18(void); - -void func_8018C96C(void *arg0) { - - extern u8 D_801DE040[]; - extern u8 D_801DE130[]; - extern u8 D_801E3BAC[]; - extern u8 D_801E3BBC[]; - s32 v0; - s32 t; - s32 *p; - - v0 = ((s32 (*)(void *))func_8012C1B8)(arg0); - *(s32 *)((char *)arg0 + 0x20) = v0; - if (v0 == 0) { - func_8012CAE4(arg0); - } else { - func_8001C214(v0, *(s16 *)((char *)arg0 + 0x70) == 0 ? (s32)&D_801DE040[0] : (s32)&D_801DE130[0]); - *(s16 *)((char *)arg0 + 0x5C) = 0x800; - *(s32 *)((char *)arg0 + 0x58) = - (s32)&D_801E3BBC[*(s16 *)((char *)arg0 + 0x70) * 0x10] | 0x40000000; - func_8012E8E0((s32)arg0, (s32)&D_801E3BAC[*(s16 *)((char *)arg0 + 0x70) * 8]); - *(s16 *)(*(s32 *)((char *)arg0 + 0x68) + 0xC) = 0x7FFF; - t = func_80029504(); - if ((func_80029178(0xF6) & 0xFF) == 0 && t < 0xE6) { - if (*(s16 *)((char *)arg0 + 0x70) == 0) { - *(s16 *)((char *)arg0 + 0x2) = 1; - *(s16 *)((char *)arg0 + 0x34) = 0; - func_801788B8((s32)arg0, (s32)func_8018CB18); - } else { - s32 *q = *(s32 **)((char *)arg0 + 0x20); - *(s16 *)((char *)arg0 + 0x2) = 3; - *(s16 *)((char *)arg0 + 0x34) = 0; - *(s16 *)((char *)q + 0x12) = 0; - *(s32 *)((char *)arg0 + 0x1C) = 0x30; - } - } else { - if (*(s16 *)((char *)arg0 + 0x70) == 0) { - p = *(s32 **)((char *)arg0 + 0x20); - *(s16 *)((char *)arg0 + 0x2) = 2; - *(s16 *)((char *)p + 0x12) = -0x600; - func_8012B2CC((s32)arg0); - } else { - p = *(s32 **)((char *)arg0 + 0x20); - *(s16 *)((char *)arg0 + 0x2) = 4; - *(s16 *)((char *)p + 0x12) = 0x600; - func_8012B2CC((s32)arg0); - } - } - } -} - - - -extern void (*D_801E3CEC[])(void); - -void func_8018CADC(void *a0) { - D_801E3CEC[*(u16 *)((s32)a0 + 0x2)](); -} - - - - -/* func_8018CB18 — state-2 gate for the SC04_018 actor state machine. - * - * Reads the actor's linked object (a0->0x64), requires its state word (+0x2) == 1 - * and the actor's own +0x34 flag clear, then asks func_8018C8A8() for permission; - * on success it stamps 1 into the linked object's +0x34, pokes func_80178BF8() and - * returns the address of the next callback (func_80172710). - * - * DECL SURFACE (§73 / §37): the TU already carries a fleet-canonical forward decl - * `extern void func_8018CB18(void);` (ov_SC04_018_jr_8017AE2C.c L7759) - * used only to take the function's ADDRESS at L7786. The byte-true signature - * disagrees on BOTH §73 axes (return void->s32 AND params void->void*), so neither - * the fleet widen nor a cast-at-use fixes it. Instead the definition is emitted - * under the C identifier `aF8018CB18` with an __asm__("func_8018CB18") label - * (§37 asm-label alias, the proven function-definition form — cf. - * src/ov_SC03_099/ov_SC03_099_after.c L533). The C-level name never collides with - * the canonical decl, the emitted symbol is unchanged, and codegen is byte-identical - * (verified: match_one MATCH 31/31 with and without the alias). - * - * ORACLE: .venv/bin/python tools/match_one.py func_8018CB18 \ - * --c .run/s7/ov_SC04_018/func_8018CB18.c \ - * --asm-subdir asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C -> MATCH (31 ins) - */ - -extern s32 func_8018C8A8(void); -extern s32 func_80178BF8(); /* TU-canonical (ov_SC04_018_jr_8017AE2C.c L2539) */ -extern void func_80172710(void); /* TU-canonical (ov_SC04_018_jr_8017AE2C.c L2231) */ - -s32 aF8018CB18(void *a0) __asm__("func_8018CB18"); - -s32 aF8018CB18(void *a0) -{ - if (*(u16 *)(*(s32 *)((s32)a0 + 0x64) + 0x2) != 1) { - return 0; - } - if (*(u16 *)((s32)a0 + 0x34) != 0) { - return 0; - } - if (func_8018C8A8() == 0) { - return 0; - } - *(s16 *)(*(s32 *)((s32)a0 + 0x64) + 0x34) = 1; - func_80178BF8(); - return (s32)func_80172710; -} - - -extern void func_80029124(s32, s32); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_800D0F4C(s32 a0); -extern s32 func_8012E57C(s32 a0, s32 a1); - - -void func_8018CB94(void *a0) -{ - s32 result; - - *(u16 *)((s32)a0 + 0x34) = *(u16 *)((s32)a0 + 0x34) + 1; - - func_8002D4C8(0x7A0, 0); - func_80029124(0xF6, 1); - func_800D0F4C(0x59); - - result = func_8012E57C(0x1F2, 1); - - if (result) { - *(u16 *)(result + 0x34) = *(u16 *)(result + 0x34) + 1; - } -} - - - - - -s32 func_8018CC04(void) { - /* [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_801E79A0; - return !(D_801E79A0 ^ 2); -} - - -extern void func_8002D4C8(s32 arg0, s32 arg1); - void func_8018CC1C(void) { - func_8002D4C8(0x7E0, 0); - } diff --git a/src/ov_SC04_019/ov_SC04_019_jr_8018CC40.c b/src/ov_SC04_019/ov_SC04_019_jr_8018CC40.c deleted file mode 100644 index ee93863b3..000000000 --- a/src/ov_SC04_019/ov_SC04_019_jr_8018CC40.c +++ /dev/null @@ -1,3345 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8; -typedef void (*Handler)(struct Entry_8016E95C *); -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8_80188E1C; -extern void func_801458E0(void); -extern s32 D_800AE6AC; -extern s32 D_800AE6B0; -extern u8 D_80078E50; -extern void func_800D185C(u8 *a0); -extern void func_801458E8(void); -extern s32 func_80029504(void); -extern void func_80145B24(void); -extern u8 D_8018F74C; -extern u8 D_8018F6BC; -extern u8 D_8018F698; -extern u8 D_8018F674; -extern u8 D_8018F728; -extern u8 D_8018F704; -extern u8 D_8018F6E0; -extern u8 D_8018F650; -extern void func_80145934(void); -extern u8 D_8018F7DC; -extern u8 D_8018F7B8; -extern u8 D_8018F794; -extern u8 D_8018F770; -extern void func_80145A2C(void); -extern s32 func_800291DC(s32); -extern void func_800291C8(s32, s32); -extern void func_80162120(void); -extern void func_80029124(s32, s32); -extern s32 func_80165A50(s32); -extern void func_80029514(s32); -extern u8 D_80078EC0; -extern s32 func_80028FBC(void); -extern s32 func_80029000(void); -extern s32 func_80028D9C(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_80145BF8(void); -extern s32 func_800291B4(s32 arg); -extern void func_800291A0(s32, s32); -extern void func_80145C54(void); -extern s32 func_80145CEC(); -extern s32 func_80029178(s32 arg); -extern void func_80146014(s32 a0); -extern unsigned char D_8018EBD4[]; -extern unsigned char D_8018EC04[]; -extern unsigned char D_8018EC54[]; -extern unsigned char D_8018EC84[]; -extern unsigned char D_8018ECB4[]; -extern void func_80145EE8(s32 param_1); -extern void MoveImage(void *a0, s32 a1, s32 a2); -extern void func_80146074(void); -extern s32 func_80146128(void); -extern void func_80146360(void); -extern void func_801463A0(); -extern void func_8014607C(void); -extern s32 *D_80126B78; -extern u8 D_80078EC1; -extern s32 D_80078EC8; -extern s32 D_80126B9C; -extern s32 D_8011F730; -extern u16 D_801152B8; -extern u16 D_8012693A; -extern u8 D_80126BE0[]; -extern u8 D_801150F0[]; -extern void *memcpy(void *dst, const void *src, u32 n); -extern void func_80146FC4(s32 a0); -extern void func_80150A70(s32 a0); -extern void func_80147098(s32 *a0); -extern void func_8014A638(s32 arg0); -extern s32 func_80155458(s32 a0); -extern s32 func_80029104(void); -extern void func_80029344(void); -extern void func_8014ADE0(s32 a0); -extern void func_8014B350(s32 a0); -extern void func_8014B7A4(s16 *param_1); -extern s32 func_80161D58(s32 a0); -extern void func_80161A90(s32 a0); -extern void func_8014B504(u16 *a0); -extern void func_80149BEC(s32 a0); -extern void func_8014B5D0(s32 *a0); -extern void func_8014C99C(u8 *a0); -extern void func_8014B190(s32 s0); -extern void func_80148648(s32 a0, s32 a1); -extern s32 func_80149228(s32 a0); -extern void func_8014A59C(s32 a0); -extern void func_8016F14C(void *a0); -extern void func_80154418(void *a0); -extern void func_80154BE4(s32 a0); -extern void func_80165694(s32 arg0); -extern void func_801654A8(s32 a0); -extern void func_8014A680(s32 a0); -extern void func_8014A6A8(s32 a0); -extern void func_8014A71C(s32 a0); -extern void func_80172588(s32 *a0); -extern void func_801473DC(s32 *a0); -extern void func_80015978(s32 a0, s32 *a1); -extern void (*D_8018ED04[])(void *); -extern u8 D_80126BA4; -extern s32 D_80127098; -extern s32 D_80127094; -extern s32 D_80127090; -extern void func_80146534(void); -extern void func_8001D074(s32 a0, s32 a1); -extern void func_80146554(void); -extern void func_80146578(void); -extern void func_8001CFDC(s32, s32); -extern void func_8014659C(void); -extern void func_8001D074(s32, s32); -extern void func_801465C0(void); -extern void func_801465E4(void); -extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); -extern s32 D_8011F9D0; -extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); -extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 D_8011F750; -extern s32 D_8011F754; -extern u8 * func_801468C8(s32 arg0, u8 arg1); -extern s32 D_8011D030; -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); -extern s32 func_80146B9C(void *a0); -extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); -extern u16 D_8011DA28; -extern s32 func_80146B9C(void * arg0); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80146CA0(void *a0); -extern void func_80146CB4(void *a0); -extern void func_80146CC8(s32 a0); -extern void func_80146D30(s32 a0); -extern void func_80146D80(s32 *a0); -extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80146D90(s32 a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); -extern void func_80146E90(s32 *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80015954(s32 a0, s32 a1); -extern void func_80149374(s32 a0, s32 a1); -extern void func_80146F58(s32 a0, s32 a1); -extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 func_8012A68C(void); -extern s16 func_8012A758(void); -extern void func_8004978C(s16 *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern u8 D_80126DB0[]; -extern u16 D_80126DB6; -extern void func_8014704C(s32 *a0); -extern s32 func_80147054(void *a0); -extern void func_80147060(u8 * a0); -extern void func_8014706C(void *arg0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80147084(s32 *a0); -extern void func_8014708C(void *arg0); -extern s32 func_801470A0(void *a0); -extern void func_801470AC(s32 *a0); -extern void func_801470B4(s32 arg0); -extern void func_801470C0(s32 a0); -extern void func_80147118(s32 a0); -extern s16 D_80126BB8; -extern s16 D_80126BBA; -extern s16 D_80126BBC; -extern void func_80147264(s32 a0); -extern void func_80147290(void); -extern void func_801472B4(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void *D_8012707C; -extern void func_801472DC(void); -extern void func_801472F0(void *a0); -extern void func_80147364(u16, s32); -extern void func_80147300(u16 arg0); -extern void func_80147324(s32 arg0); -extern void func_801473EC(s32 *a0); -extern void func_80147460(s32 a0); -extern void func_80147514(); -extern void func_80147628(s32 a0); -extern void func_80147478(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); -extern s32 func_800129CC(s32 a0, s32 a1); -extern void func_80147514(s32 arg0); -extern void func_80013F3C(s32 a0); -extern void func_80012558(s32 a0, s32 a1); -extern void func_800126C4(s32 a0, s32 a1); -extern void func_800123F0(s32 a0, s32 a1); -extern void func_80147718(s32 a0); -extern void func_80147788(void *a0, s32 a1); -extern void func_801477A8(void *a0, s32 a1); -extern void func_801477C8(void *a0, s32 a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80147814(s32 a0, s32 a1); -extern void func_80147928(int a0, int a1); -extern void func_8014799C(int a0, int a1); -extern void func_80147A10(int a0, int a1); -extern void func_80147860(int a0, int a1, int a2, int a3); -extern void func_80147948(s32 a0, s32 a1, s32 a2); -extern void func_801479BC(s32 a0, s32 a1, s32 a2); -extern void func_80147A30(s32 a0, s32 a1, s32 a2); -extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147948(int a0, int a1, int a2); -extern void func_801479BC(int a0, int a1, int a2); -extern void func_80147A30(int a0, int a1, int a2); -extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147A84(s32 arg0); -extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147AAC(s32 arg0); -extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80147B5C(s32 a0, void *a1); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern void func_80147B18(s32 a0); -extern void func_80147B5C(s32 arg0, void *arg1); -extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147DC0(s32 a0, s32 a1); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147F50(s32 arg0); -extern void func_80148038(s32 a0, s32 a1); -extern s32 ratan2(s32 a0, s32 a1); -extern s32 csqrt(s32 a0); -extern s32 func_80012A60(s32 a0, s32 a1); -extern void func_80148094(int param_1, short *param_2, int *param_3); -extern void func_801485B8(s32 a0, s32 a1, s32 a2); -extern void func_801484B0(s32 a0, s32 a1); -extern s32 func_80154358(void *a0); -extern void func_801484E8(s32 a0, s32 a1); -extern void func_80148534(s32 a0, s32 a1); -extern void func_8014856C(s32 a0, s32 a1); -extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); -extern void func_80148634(void *a0); -extern u8 D_800B9A64; -extern s32 func_80014DC0(); -extern s32 func_80014D68(); -extern s32 func_80014D94(); -extern s32 func_80014CF8(); -extern void func_800120DC(); -extern s32 func_800CF8B4(); -extern u16 func_801487F4(s32 *a0); -extern u16 func_80148800(s32 *a0); -extern u8 func_8014880C(s32 *a0); -extern u16 func_80148818(s32 *a0); -extern s32 func_80047D3C(s32 a0); -extern s32 func_80148824(void *arg0); -extern s32 func_801488A8(u8 *a0); -extern s32 func_8014891C(s32 a0); -extern s32 func_80148980(u8 *a0); -extern s32 func_801489E8(s32 a0); -extern s32 func_80148A48(s32 a0); -extern int func_80148AFC(void *a0); -extern void func_80148AAC(u8 *a0); -extern s32 func_80148C18(void); -extern s32 func_80148C20(s32 a0, s16 a1); -extern s32 func_80148C34(s32 a0, s32 a1); -extern s32 func_80148C4C(s32 a0, s32 a1); -extern s32 func_80148C64(s32 a0, s32 a1); -extern s32 func_80148C7C(void); -extern s32 func_80148C84(s32 a0, s32 a1); -extern s32 func_80148C9C(s32 a0, s32 a1); -extern s32 func_80148CB4(s32 a0, s32 a1); -extern s32 func_80148CCC(s32 a0, s32 a1); -extern s32 func_80148CE4(void); -extern s32 func_80148CEC(void); -extern s32 func_80148CF4(s32 a0, s32 a1); -extern s32 func_80148D0C(s32 a0, s32 a1); -extern s32 func_80148D24(void *a0, int a1); -extern s32 func_80148D3C(void); -extern s32 func_80148F60(void); -extern s32 func_80148F68(s32 a0); -extern s32 func_80148F74(s32 a0); -extern s32 func_80148F80(s32 a0); -extern s32 func_80148F8C(s32 a0); -extern s32 func_80148F98(void); -extern s32 func_80148FA0(s32 a0); -extern s32 func_80148FAC(s32 a0); -extern s32 func_80148FB8(s32 a0); -extern s32 func_80148FC4(s32 a0); -extern s32 func_80148FD0(void); -extern s32 func_80148FD8(void); -extern s32 func_80148FE0(s32 a0); -extern s32 func_80148FEC(s32 a0); -extern s32 func_80148FF8(s32 a0); -extern s32 func_80149004(void); -extern void func_8014900C(s32 *a0); -extern void func_80149020(s32 *a0); -extern void func_80149034(s32 *a0); -extern void func_80149048(s32 *a0); -extern void func_8014905C(u8 *a0); -extern void func_801490E0(s32 *a0, s16 a1); -extern void func_801490E8(s32 *a0, s16 a1); -extern void func_801490F0(s32 *a0, s16 a1); -extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); -extern void func_801490F8(s32 a0, s32 a1); -extern s32 func_801491C4(s32 a0); -extern s32 func_80149184(s32 a0); -extern void func_80149204(s32 *a0); -extern void func_80149210(s32 a0, s32 a1); -extern s32 func_80149284(s32 *a0, s32 a1); -extern void func_80149350(s32 arg0); -extern void func_80149290(s32 a0); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_80149374(s32 arg0, s32 arg1); -extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8014942C(s32 arg0); -extern void func_8012EF70(s32 a0, s32 a1); -extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012EFB8(s32 a0); -extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); -extern void func_8014964C(s32 param_1, s32 param_2); -extern s32 func_801496D4(void *a0); -extern void func_8015AD08(); -extern void func_80149704(void); -extern void func_8015ACC4(); -extern void func_80149724(void); -extern u8 D_80078EBF; -extern s32 func_80149744(struct S_80149744 *a0); -extern void func_8015F7A0(); -extern void func_80149788(void); -extern void func_801653B8(); -extern void func_80149864(void); -extern s16 currentLocationId; -extern s32 func_8016F1AC(void); -extern s32 func_80149884(void); -extern void func_80160B00(); -extern void func_801498C0(void); -extern s32 func_80149AA8(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern void func_80146750(void *a0); -extern s32 func_801498E0(s32 *a0); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_80147364(u16 a0, s32 a1); -extern s32 func_800CCF28(s32 a0); -extern u8 D_80126B5C; -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_8015DAC4(s32 *a0); -extern void func_8015554C(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern void func_80149B14(s32 *a0); -extern u8 func_8014BEF8(void); -extern s32 func_80149B54(s32 * arg0); -extern void func_8015DE24(s32 *a0); -extern void func_80157510(s32 *a0); -extern void func_80149BAC(s32 *a0); -extern s32 func_80029178(s32 a0); -extern s32 func_80149C08(s32 arg0); -extern void func_801577C8(); -extern void func_80149C94(void); -extern void func_80157D20(void); -extern void func_80149CB4(void); -extern s32 func_80149CD4(s32 a0); -extern u8 func_8014B5B8(s32 *a0); -extern s32 func_80149D10(s32 a0); -extern s32 func_80149E94(s32 a0); -extern s32 func_80149DD8(s32 a0); -extern s32 func_80149D9C(s32 a0); -extern s32 func_80149F2C(s32 a0, s32 a1); -extern s32 func_80149E94(s32 arg0); -extern void func_80149FA8(void); -extern s32 D_8018EDCC[]; -extern s32 func_80149FB0(s32 a0); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern void func_8014A1B0(s32 a0, s32 a1); -extern s32 func_8014A048(s32 param_1); -extern u16 func_80156370(u16 a0); -extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); -extern void func_8015D4B4(); -extern void func_8014A218(void); -extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); -extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); -extern s32 func_8014A238(s32 arg0); -extern s32 func_8014A2E4(s32 a0); -extern void func_8014A380(s32 a0, s32 a1); -extern s16 D_801152B0; -extern s16 D_801152B4; -extern s32 func_8014A3E0(struct S_8014A3E0 *a0); -extern s32 func_8014A454(s32 a0); -extern s32 func_8014A4B4(void *a0); -extern void func_8015EDD4(); -extern void func_8014A4FC(void); -extern s32 func_8014A674(s32 *a0); -extern s32 func_8014A69C(s32 *a0); -extern s32 func_8014A6C4(s32 a0); -extern void func_8015E184(); -extern void func_8014A830(void); -extern s32 func_80029AF4(void); -extern s32 func_8014A850(s32 param_1); -extern void func_8014AA04(s32 a0); -extern void func_801599A4(void *a0); -extern void func_80159B3C(void *a0); -extern s32 func_80165A20(s32 a0); -extern void func_8014AB7C(); -extern void func_8014AC10(); -extern void func_8014AA28(void); -extern void func_8014AB5C(void); -extern void func_80162CCC(void); -extern void func_8014AB7C(s32 arg0); -extern void func_8014ABF0(void); -extern void func_80016714(void *a0, s32 a1); -extern void func_8014AC10(s32 arg0); -extern void func_8014ACC0(s32 a0, s32 a1); -extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); -extern void func_8014ACE8(void *a0, s32 a1, s32 a2); -extern void func_80146AFC(void *a0); -extern void func_8014ADA8(s32 a0, s32 a1); -extern void func_8014AD7C(s32 a0); -extern s32 D_80078E8C; -extern void func_8014B034(s32 arg0); -extern void func_8014B00C(s32 arg0); -extern void func_8014B084(void); -extern s16 D_80078E90; -extern void func_8014B034(s32 a0); -extern u8 D_80078EBA; -extern void func_800D10EC(void); -extern void func_8002AC98(void); -extern s32 func_8014B154(s32 *a0); -extern void func_8014B12C(void); -extern void func_8014B2F8(void); -extern void func_8014B4C4(void); -extern void func_8014B160(s32 a0); -extern s32 func_8016F1C4(void); -extern s16 D_80078E96; -extern s16 D_80078EB8; -extern u16 D_80078EA6; -extern void func_8014B2A8(void); -extern void func_8014B310(void); -extern void func_8014B2D0(void); -extern s32 D_80078E94; -extern s32 D_80078ECC; -extern void func_8014B33C(void); -extern u8 D_80062BF4[]; -extern void func_8014BC80(s32 a0, s32 a1); -extern void func_80019064(void *a0); -extern s32 D_80078E98; -extern void func_80166244(); -extern void func_8014B4D4(void *a0); -extern s16 D_80078E9A; -extern u8 D_80126D1C; -extern s32 D_80126D74; -extern void func_8014B598(s32 a0, s32 a1); -extern void func_8014B5B0(s32 *a0); -extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); -extern void func_8014B5D8(s32 s1); -extern s32 D_80078E9C; -extern s32 D_80078ED0; -extern void func_8014B6F0(s32 a0, s32 a1); -extern void func_8014B768(s32 a0, s32 a1); -extern void func_8014B944(s32 a0, s32 a1, s32 a2); -extern s32 D_80078EA4; -extern u16 D_80078EB2; -extern s16 D_80078EB4; -extern void func_8014BB0C(void); -extern void func_8014BB24(s32 a0, s32 a1, s32 a2); -extern void func_8014BC0C(s32 a0, s32 a1); -extern void func_8014BC44(s32 a0, s32 a1); -extern u8 D_800B9A17; -extern void func_8014BCC0(s32 a0, s32 a1); -extern u16 D_80078EB6; -extern s32 func_8014BCEC(s32 a0, s32 a1); -extern void func_8014BD24(s32 a0, s32 a1); -extern void func_8014BD60(s32 param_1, s32 param_2); -extern void func_8014BD98(s32 a0, u16 a1); -extern void func_8014BDC8(void); -extern void func_8014BDE0(void); -extern s32 func_8017267C(s32 *a0); -extern s32 func_80013294(void *a0, void *a1); -extern void func_80029ED4(s32 a0); -extern void func_8014BDE8(s32 a0); -extern void func_8014BE78(void); -extern void func_8014BE9C(void); -extern void func_80029124(s32 a0, s32 a1); -extern void func_8014BEC0(void); -extern void func_8014BF18(s32 a0); -extern void func_8014BF48(void); -extern u8 func_8014BF6C(void); -extern void func_8014BF8C(u8 arg0); -extern void func_8014BFB0(void); -extern u8 func_8014BFD4(void); -extern void func_8014BFF4(s32 a0, s32 a1); -extern void func_8014C010(s32 a0, s32 a1); -extern s32 func_8014C050(s32 a0, s32 a1); -extern s32 func_8014C088(s32 a0, s32 a1); -extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); -extern s32 func_8014C118(void * a0, s32 a1, s32 a2); -extern s32 func_8014C168(s32 * param_1, s32 param_2); -extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); -extern u8 D_8018EE54[]; -extern void func_8014C1A0(s32 arg0, s32 arg1); -extern s32 func_80013328(s32 a0, s32 a1); -extern s32 func_8014C59C(void *a0, void *a1); -extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); -extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); -extern s32 ratan2(s32 dx, s32 dy); -extern u8 D_8018EE5C; -extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); -extern s16 func_8014C5D0(s32 a0, s32 a1); -extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); -extern u8 D_80126D17; -extern void func_8014C6AC(void); -extern void func_8014C6C0(void); -extern u8 D_80126D1E; -extern void func_8014C6D0(void); -extern void func_8014C6E0(void); -extern s32 func_8014C860(s32 a0, s32 a1); -extern void func_8014C8C8(s32 a0, s32 *a1); -extern void func_8014C88C(s32 a0); -extern void func_8014C8C8(s32 dst, s32 * src); -extern void func_8014C8F0(s32 arg0); -extern u8 D_801151F0[]; -extern s32 func_8014C918(s32 a0, s32 a1); -extern s32 D_80126B50; -extern void func_8014C968(void); -extern void func_8014C978(void); -extern s32 func_8014C98C(void); -extern void func_80139914(s32 a0); -extern s32 func_8014CA00(s32 a0); -extern u16 func_8014CA70(s32 a0, s32 a1); -extern s32 func_8014CA14(s32 a0, s32 a1); -extern u16 func_8014CAE4(s32 *a0, s32 a1); -extern s32 func_8014CA88(s32 *a0, s32 a1); -extern s32 func_8014CAFC(void); -extern s32 func_8014CB0C(void); -extern s32 func_8014CB1C(void); -extern u8 D_80126D1F; -extern s32 func_8014CB2C(void); -extern s32 func_8014CB58(void); -extern u8 D_80126D1D; -extern void func_8014CB68(void); -extern s32 func_8014CB7C(void); -extern s32 func_8014CB8C(void); -extern short D_80126C9E; -extern void func_8014CB9C(struct Packed8 *a0); -extern s32 D_80126CDC; -extern void func_8014CBD8(void); -extern s16 D_80126CC4; -extern void func_8014CBE8(void); -extern void func_8014CBF8(void *a0); -extern void func_8014D3E0(s32 a0); -extern void func_8014D04C(void); -extern void func_8014CCB4(void); -extern void func_8014CC28(s32 a0); -extern void func_8014CD0C(u8 *a0); -extern s32 func_8014CF04(s32 a0, s32 a1, void *a2); -extern void func_8014CD80(s32 a0, void *a1, void *a2); -extern void func_8014D0A4(s32 a0); -extern s32 func_8014D2A0(s32 a0, void *a1, void *a2); -extern s32 func_8014D12C(s32 a0, void *a1, void *a2); -extern void func_8014D438(s32 a0); -extern void func_8014D3E0(s32 _arg0); -extern void func_8014D610(s32 a0, void *a1, void *a2); -extern s32 func_8014D4C0(s32 a0, void *a1, void *a2); -extern void func_8014D790(s32 a0); -extern void func_8014D738(void); -extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); -extern s32 func_8014D820(s32 a0, u16 *a1, u16 *a2); -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); -extern void func_8014DF94(s32 arg0); -extern void func_8014DF3C(void); -extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ -extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ -extern s16 D_801152AC; -extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); -extern void func_8014E48C(s32 a0); -extern void func_8014E434(void); -extern void func_8014E5B4(s32 a0, void *a1, void *a2); -extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); -extern void func_8014E6F8(struct SubE6F8 *a0); -extern void func_8014E6A0(void); -extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); -extern void func_8014E934(s32 _arg0); -extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); -extern s32 func_8014E98C(void *a0); -extern s32 D_801150D8; -extern s16 D_801152AA; -extern u8 D_80126720[]; -extern s16 D_80126724; -extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); -extern s32 func_8014ED80(struct SubED80 *a0); -extern int D_801E5BA8; -extern void func_8014ED28(s32 _arg0); -extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F24C(struct SubF24C *a0); -extern void func_8014F1F4(void); -extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); -extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); -extern s32 func_8014F4C0(); -extern s32 func_8014F468(void); -extern int func_8014F74C(); -extern int func_8014F6F4(void); -extern u8 D_800D3918[]; -extern u8 D_801152A8[]; -extern s32 D_801152BC; -extern int func_8014F74C(s32 arg0); -extern s32 func_8014FA70(s32 a0); -extern s32 D_801E5BAC; -extern void func_8014FA04(s32 a0); -extern s32 func_8014FBC0(); -extern s32 func_8014FC18(u8 *self); -extern int func_8014FD54(int param_1); -extern void func_8014FCFC(void); -extern void func_80150170(void *a0); -extern s32 func_8014FE60(void *a0); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_8014FE60(void *e); -extern s32 func_80134510(s32 arg); -extern s32 func_80150150(s32 a, s32 b); -extern s32 func_80150460(s32 a, s32 b); -extern void func_801504D8(u16 *a0); -extern s32 func_80150480(s32 _arg0); -extern s32 func_80150528(void *a0, void *a1, void *a2); -extern s32 func_80150528(void *arg0, void *arg1, void *arg2); -extern s32 func_801506A4(s32 a0, s32 a1); -extern s32 func_801505FC(s32 a0); -extern s32 func_801506A4(s32 arg0, s32 arg1); -extern void func_80150820(s32 a0, s32 a1); -extern void func_8015086C(int param_1); -extern s32 func_801508B4(s32 a0); -extern s32 func_8015094C(s32 a0); -extern short func_801508F8(s32 a0); -extern s32 D_8018EE8C; -extern s32 D_80126990; -extern s32 D_80126994; -extern s32 func_80021174(s32 a0, s32 a1); -extern s32 func_8015094C(s32 param_1); -extern void func_80150B9C(void); -extern s32 func_80151184(s32 a0, s32 a1, s32 a2); -extern s32 func_80150BA4(s32 a0); -extern s32 func_801619D0(void *a0); -extern void func_80150BC8(s32 *a0); -extern s32 func_80150480(s32 a0); -extern u16 D_800AE6DC; -extern void func_80150C48(s32 a0); -extern int func_80151184(int arg, int a1, int a2); -extern int func_80150CA0(int arg); -extern void func_80150EC4(s32 a, s32 b); -extern void func_80150CC4(s32 a); -extern void func_80150CE4(s32 a); -extern void func_80150D04(s32 a); -extern void func_80150D24(s32 a); -extern void func_80150D44(s32 a); -extern void func_80150D64(s32 a); -extern void func_80150D84(s32 a); -extern void func_80150DA4(s32 a); -extern void func_80150DC4(s32 a); -extern void func_80150DE4(s32 a); -extern void func_80150E04(s32 a); -extern void func_80150E24(s32 a); -extern void func_80150E44(s32 a); -extern void func_80150EC4(s32 a0, s32 a1); -extern void func_80150E64(s32 a0); -extern void func_80150E84(s32 a0); -extern void func_80150EA4(s32 a0); -extern u8 D_800AE6C0; -extern s16 D_800AE6C8; -extern s16 D_800AE6CA; -extern s16 D_800AE6CC; -extern s32 D_800AE6C4; -extern s16 D_800AE6CE; -extern u8 D_800AE6BE; -extern u8 D_801201F8[]; -extern void func_80150F78(void); -extern void func_80150F80(s32 a0); -extern int func_80150FB4(int arg); -extern void func_80150FD8(s32 a0); -extern int func_80151014(int arg); -extern void func_80151038(s32 a0); -extern int func_80151070(int arg); -extern int func_80151094(int arg); -extern void func_801510B8(void); -extern void func_801510C0(void); -extern int func_801510C8(int arg); -extern int func_801510EC(int arg); -extern s32 func_8012DB84(void); -extern s32 func_80151110(void); -extern void func_80151130(void); -extern int func_80151138(int arg); -extern void func_8015115C(s32 *a0, s16 a1); -extern s32 func_80151164(s32 a0, s32 a1); -extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); -extern void func_801511A8(u8 *a0); -extern void func_801511C4(u8 *a0); -extern int func_80151204(int arg, int a1); -extern int func_801511E0(int arg); -extern int func_80151204(int a0, int a1); -extern void func_80151238(void *a0); -extern void func_8015126C(u16 *p); -extern void func_80151780(s32 a0); -extern void func_801516F0(s32 *a0); -extern void func_8015173C(s32 *a0); -extern s16 D_8011DB1A; -extern s32 D_80127518; -extern s32 D_801151FC; -extern s32 func_801725CC(u8 *a0); -extern s32 func_80029D3C(void); -extern void func_80151878(void); -extern void func_80153B58(s32 *a0); -extern s32 func_80151880(s32 a0); -extern s32 func_801518D8(s32 a0); -extern s32 func_80151944(void); -extern s32 func_80151924(void); -extern void func_8014E934(s32 a0); -extern s32 func_8014F3E8(s32 a0); -extern void func_801519C8(s32 a0); -extern void func_80151980(s32 a0); -extern M2C_UNK D_800D5880; -extern s32 D_800D58AC; -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801519C8(s32 arg0); -extern void func_80151C54(s32 a0); -extern void func_801542DC(s32 *a0, s32 a1); -extern void func_8015BDD0(s32 *a0); -extern void func_80165718(s32 a0); -extern u8 D_800D46E4[]; -extern void func_80151AE4(s32 arg0); -extern void (*D_8018EF34[])(void); -extern void func_80151D24(void *a0); -extern void func_80151DB0(s32 a0); -extern void func_80151D60(void *a0); -extern s32 func_80172630(u8 *a0); -extern s32 D_80062C14; -extern void func_80151DB0(s32 param_1); -extern void func_80151E78(s32 *a0); -extern void func_80151ECC(struct S80151ECC *a0); -extern void func_80151FB4(s32 a0); -extern void func_80151F38(s32 *a0); -extern void func_801553C0(s32 a0); -extern void func_80153C18(); -extern void (*D_8018EF58[])(void); -extern void func_80152058(void *a0); -extern void func_801520DC(s32 a0); -extern void func_80152094(s32 a0); -extern void func_80147324(s32 a0); -extern u8 D_80062C04[]; -extern M2C_UNK D_8018EF48; -extern void func_801520DC(s32 arg0); -extern void func_801470B4(s32 a0); -extern void func_8015369C(s32 a0); -extern void func_80152194(s32 *a0); -extern s32 func_801536DC(s32 a0); -extern void func_8015220C(s32 a0); -extern s32 func_80153800(s32 a0); -extern void func_801522CC(s32 a0); -extern void func_80152254(s32 *a0); -extern void (*D_8018EF6C[])(void); -extern void func_80152370(void *a0); -extern void func_801523F4(s32 a0); -extern void func_801523AC(s32 a0); -extern void func_8001382C(s32 a0, void *a1, void *a2); -extern u8 D_8018EF78[]; -extern void func_801523F4(s32 arg0); -extern void func_801525F4(int); -extern s32 func_801535F4(void *arg0); -extern void func_8015BF48(s32 *a0); -extern void func_80152500(int param_1); -extern void func_801525F4(s32 a0); -extern void (*D_8018EF88[])(void); -extern void func_80152698(void *a0); -extern void func_80152714(s32 a0); -extern void func_801526D4(s32 a0); -extern void func_80152790(s32 a0); -extern void (*D_8018EFA0[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018EF90; -extern void func_801528B0(s32 arg0); -extern void func_8015294C(s32 a0); -extern void func_80152A08(s32 a0); -extern void func_80152AC8(s32 a0); -extern void func_80152A50(s32 *a0); -extern void (*D_8018EFB4[])(void); -extern void func_80152B6C(void *a0); -extern void func_80152BF0(s32 a0); -extern void func_80152BA8(s32 a0); -extern void func_80152C80(s32 *a0); -extern void func_80152C40(s32 *a0); -extern void (*D_8018EFD0[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018EFC0; -extern void func_80152DA8(s32 arg0); -extern void func_80152E4C(s32 a0); -extern void func_80152EFC(s32 a0); -extern void func_80152FBC(s32 a0); -extern void func_80152F44(s32 *a0); -extern void (*D_8018EFE4[])(void); -extern void func_80153060(void *a0); -extern void func_801530E4(s32 a0); -extern void func_8015309C(s32 a0); -extern void func_80155440(s32 *a0); -extern void func_801530E4(s32 arg0); -extern void func_80153150(struct S80153150 *a0); -extern void func_801531BC(s32 a0); -extern void func_8015327C(s32 a0); -extern void func_80153204(s32 *a0); -extern void (*D_8018EFF8[])(void); -extern void func_80153320(void *a0); -extern void func_801533A4(s32 a0); -extern void func_8015335C(s32 a0); -extern void func_80153410(s32 *a0); -extern void func_80153490(s32 a0); -extern void func_80153550(s32 a0); -extern void func_801534D8(s32 *a0); -extern void (*D_8011DB28)(s32 a0); -extern s32 func_801536DC(s32 param_1); -extern void func_800139C8(s32 a0, void *a1, void *a2); -extern s32 func_80153978(s32 a0, u16 *src); -extern s32 func_80133784(s32 a0, void *src, s32 dst); -extern s32 func_801539F8(s32 a0, void *a1); -extern s32 func_801539F8(s32 a0, void * a1); -extern s32 func_8016DA04(s32 a0); -extern s32 func_80153BD8(s32 a0); -extern s32 func_80153BF0(s32 a0); -extern void func_80153C18(void); -extern u16 D_8011F748; -extern void func_80153C30(void); -extern void func_80153C74(s16 a0, s16 a1); -extern s16 D_8011DB18; -extern void func_80153C44(int a0, int a1, s16 a2); -extern s16 D_8011DB0C; -extern s32 D_80115210; -extern void func_80153C8C(void); -extern void func_80153C9C(void); -extern s32 func_80153CBC(void); -extern s32 D_8018F00C; -extern void (*D_8018F034[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018F014; -extern void func_80153D7C(s32 param_1); -extern void func_8015410C(void); -extern void func_80153E00(s32 param_1); -extern void func_80151664(void); -extern void func_80154134(u8 *a0); -extern void func_80154190(u8 *a0, s32 a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154218(u8 *a0, s32 a1, s32 a2); -extern void func_801541D8(u8 *a0, s32 a1, s32 a2); -extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); -extern void func_801542A4(); -extern void func_801542A4(s32 *a0, s32 a1); -extern void func_8015430C(); -extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); -extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); -extern s32 func_80154358(void * arg0); -extern void func_80154AB4(s32 a0, s32 a1); -extern void func_80154B20(s32 a0, s32 a1, s32 a2); -extern void func_80154AE0(s32 a0, s32 a1, s32 a2); -extern void func_80154B7C(u8 *a0, s32 a1); -extern void func_80154B4C(u8 *a0, s32 a1); -extern void func_80154BC8(void *a0, s32 a1, s32 a2); -extern void func_80154B98(void *a0, s32 a1, s32 a2); -extern u8 D_800D8D10[]; -extern s16 D_80078E9E; -extern void func_801550FC(s32 a0); -extern void func_80154ED8(s32 a0, s32 a1); -extern void func_80154F9C(s32 a0); -extern void func_800183E0(s32 a0); -extern void func_801550FC(s32 arg0); -extern void func_8001D150(s32, s32); -extern void func_8001D130(int, int); -extern void func_80155150(int param_1); -extern s32 D_800DE2A4[]; -extern void func_801552F4(s32 a0); -extern void func_80155344(s32 a0); -extern s32 func_80155394(s32 *a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80029178(s32); -extern int (*D_8018F080[])(void); -extern s32 func_80155458(s32 param_1); -extern s32 func_801659DC(u8 *a0); -extern s32 func_801554B8(void *arg0); -extern void func_801555F4(void *a0); -extern void func_80155518(s32 *a0); -extern void func_80155580(void *a0); -extern void (*D_8018F084[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern s32 func_80029B4C(s32 a0, s32 a1); -extern s32 func_80029BC8(s32 a0, s32 a1); -extern s32 func_80029C44(s32 a0, s32 a1); -extern s32 func_8015640C(s32 a0, s32 a1); -extern s32 rand(void); -extern u32 func_8015616C(s32 param_1, u16 param_2); -extern u16 func_80156370(u16 param_1); -extern s32 func_801564B0(s32 a0); -extern s32 func_8002A1B4(void); -extern s32 func_8002A400(void); -extern s32 func_8002A670(void); -extern s32 func_8002A8E0(void); -extern s32 D_801151E0[]; -extern s32 func_801565C0(void); -extern void func_80156A14(s32 *a0); -extern void func_80156648(s32 *a0); -extern u8 D_8011DAD8[]; -extern s32 func_8014C568(s16 *a0, s16 *a1); -extern void func_801567BC(s32 a0); -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018F4E8[]; -extern void func_80156A1C(s32 param_1, s32 param_2); -extern s32 D_801150E0[]; -extern void func_80156A88(s32 a0, s32 a1); -extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); -extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); -extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); -extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern s32 func_80135004(s32 a0, void *a1, s32 a2); -extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801575E4(void *a0); -extern void func_801574DC(s32 *a0); -extern void func_80157544(void *a0); -extern void (*D_8018F4F8[])(void); -extern void func_8014CC28(s32 a0); /* defined */ -extern s32 func_8014F3E8(s32 a0); /* declared */ -extern void func_8015BDD0(s32 *a0); /* defined */ -extern void func_801575E4(void *a0); /* defined */ -extern void func_80157580(s32 arg0); -extern u8 D_800D4F14[]; -extern void func_801576A8(void *arg0); -extern s32 func_8015773C(u8 *a0); -extern s32 func_8015771C(u8 *a0); -extern s32 func_8015773C(u8 * arg0); -extern int D_801E5BE0; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018F520[])(void); -extern void func_80157808(void *param_1); -extern void func_80157880(s32 a0); -extern s32 func_801725A4(u8 *a0); -extern u8 D_800D5128; -extern u8 D_8018F500; -extern void func_801578C0(s32 param_1); -extern void func_80147A84(int); -extern void func_80148038(int, int); -extern void func_80147460(int); -extern void func_80146D90(int); -extern void func_80161450(void *a0); -extern void func_80157A8C(int); -extern void func_80154A74(int, int); -extern unsigned char D_800D5178; -extern unsigned char D_8018F510; -extern void func_8015795C(int param_1); -extern void func_80161D20(s32 a0, s32 a1); -extern void func_80157A8C(s32 a0); -extern void func_8016706C(s32 a0); -extern u8 D_800D51AC[]; -extern void func_80157AC8(s32 param_1); -extern void func_80157B74(int param_1); -extern void func_8016158C(void *a0); -extern void func_8015BE04(s32 *a0); -extern void func_80157BC8(s32 a0); -extern void func_80157CCC(s32 a0); -extern void func_80157DC4(void *a0); -extern void func_80157FC4(void *a0); -extern void func_80157D74(u16 *a0); -extern void (*D_8018F560[])(void); -extern void func_80157E38(void *); -extern void func_80157E00(void *a0); -extern void func_80157E38(void * a0); -extern s32 func_80157F64(s32 *a0); -extern s32 func_80156600(void *a0); -extern void func_80157EA4(void *a0); -extern void (*D_8018F568[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018F534; -extern void func_80158038(void * param); -extern u8 D_800D524C[]; -extern void func_80161418(void *a0); -extern void func_801580B4(s32 a0); -extern void func_801581AC(s32 a0); -extern void (*D_8018F574[])(void); -extern void func_8015824C(void *a0); -extern void func_801582C0(void *); -extern void func_80158288(void *a0); -extern u8 D_800D52A8[]; -extern void func_801585A4(s32 *a0); -extern void func_801582C0(void *a0); -extern s32 func_801585AC(s32 *a0); -extern u8 D_800D52E8[]; -extern void func_80158344(s32 *a0); -extern s32 func_801615C4(void *a0, s32 a1); -extern u8 D_8018F544; -extern u8 D_800D533C; -extern void func_80158434(s32 param_1); -extern void func_80158548(s32 param_1); -extern void func_801585EC(u8 *a0); -extern void func_80158794(void); -extern s32 D_801E5BE8; -extern s32 D_801E5BF4; -extern s32 D_801E5BF8; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018F5B0[])(s32 *); -extern void func_80158AE4(void *a0); -extern void func_80158AB4(void *a0); -extern void func_8016F264(void); -extern void func_80165840(void); -extern void func_801658DC(void); -extern void func_80165A78(s32); -extern void func_80158AE4(void * a0); -extern M2C_UNK D_800D58D8; -extern void func_80158BB0(void *arg0); -extern s32 func_80159404(s32 a0, s32 a1); -extern void func_80158C40(s32 *a0); -extern void func_80158CD8(s32 *a0); -extern s32 func_80159434(s32 a0, s32 a1); -extern void func_80158D60(s32 a0); -extern M2C_UNK D_800D5904; -extern void func_80158E24(s32 *a0); -extern s32 D_8018F584[]; -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80158F00(int param_1); -extern u8 D_80110C3C[]; -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80158FA4(s32 param_1); -extern s32 func_801399F0(s32 a0); -extern u8 D_80110C94[]; -extern u8 D_80110CD4[]; -extern void func_80159070(void *a0); -extern s32 func_80029A94(s32); -extern void func_80175454(void); -extern void func_800298BC(void *); -extern void func_8002992C(s32); -extern void func_800CF804(void); -extern void func_800CF818(void); -extern u8 D_80110D0C[]; -extern void func_80159120(s32 a0); -extern void func_801592CC(s32 *a0); -extern u8 D_800AE6BD; -extern s32 D_801E5BF0; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018F800[])(void); -extern void func_80159698(void *a0); -extern s32 func_801596D4(void *a0); -extern void func_80174B6C(void); -extern void func_80129248(s16 a0); -extern void func_8013C938(void); -extern void func_8013CB20(void); -extern void func_8013C98C(void); -extern void func_8002850C(s32, s32, s32); -extern void func_80028620(s32, void *); -extern s16 D_800B9AAC[]; -extern s16 D_800B9B00; -extern u16 D_801270C0; -extern u32 D_800AFAE8[]; -extern char D_8018F620[]; -extern s32 func_801596F0(s32 param_1); -extern s32 func_80159874(void); -extern void func_800167B8(s32 a0); -extern s32 func_8015987C(s32 a0); -extern int func_800167F0(int arg); -extern int func_801598BC(void); -extern void func_80159968(void *a0); -extern void func_801598E0(u8 *a0); -extern void (*D_8018F8A4[])(void); -extern void func_80159A20(void *a0); -extern void func_801599E0(void *a0); -extern void func_80159A18(void); -extern void func_80159BE4(s32); -extern void func_80159B08(s32 *a0); -extern void func_80159B70(void *a0); -extern void func_80159B3C(void * a0); -extern void (*D_8018F9F8[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018F814; -extern void func_80159BE4(s32 arg0); -extern void func_8015A1C8(s32 a0); -extern void func_8015A2D8(s32); -extern void func_8015A1FC(s32 *a0); -extern void func_8015A264(void *a0); -extern void func_8015A230(s32 *a0); -extern void (*D_8018FA00[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018F824; -extern s32 func_80172608(u8 *a0); -extern void func_8015A2D8(s32 param_1); -extern u8 D_800D48DC; -extern s32 func_8015AB7C(s32 a0); -extern s32 D_8011F9C4; -extern s32 func_8015ABD4(s32 a0, s32 a1, s32 a2); -extern s32 func_80161CD0(s32 a0, s32 a1); -extern M2C_UNK D_8018F844; -extern void func_8015AC48(s32 arg0); -extern void func_8015AC90(s32 a0); -extern void func_8015ADB0(s32 a0); -extern void func_8015ACC4(s32 *arg0); -extern void func_8015AD3C(void *a0); -extern void func_8015AD08(void *arg0); -extern void (*D_8018FA08[])(void); -extern void func_8015ADB0(s32); -extern void func_8015AD78(s32 a0); -extern void func_8015ADB0(s32 arg0); -extern s32 D_800D4A9C; -extern int func_8015B6F4(int param_1); -extern u8 D_800D4F8C[]; -extern s32 func_8015B7B4(s32 a0); -extern u8 D_800D4BE0[]; -extern s32 func_8014A51C(void); -extern s32 func_8015B858(u8 *a0); -extern s32 D_800D4B48; -extern void func_8015B8F8(s32 *a0); -extern void func_8015BD8C(s32 *a0); -extern s32 func_8015BE94(); -extern void func_8015BE38(struct Obj *a0); -extern s32 func_8015BE74(void); -extern void func_80161124(void *a0); -extern s32 func_8015BE94(s32 *a0); -extern s32 func_8015AE2C(); -extern s32 func_8015BEC4(void); -extern s32 func_8015B950(s32 arg0); -extern s32 func_8015BEE4(void); -extern void func_8015BF04(s32 *a0); -extern void func_8015C0C4(s32 a0); -extern void func_8015BFF4(void *a0); -extern void func_8015BF7C(s32 *a0); -extern void func_8015C030(s32 *a0, s32 a1); -extern void func_8015BFB0(s32 *a0, s32 a1); -extern void (*D_8018FA30[])(void); -extern void func_8015C0C4(s32); -extern void func_8015C08C(s32 a0); -extern s32 func_8015C128(s32 param_1); -extern void func_8015C6A4(void); -extern void func_8015C788(s32 a0); -extern void func_8015C6AC(s32 *a0); -extern void func_8015C714(void *a0); -extern void func_8015C6E0(s32 *a0); -extern void (*D_8018FA3C[])(void); -extern void func_8015C788(s32); -extern void func_8015C750(s32 a0); -extern void func_8015CB94(s32 a0); -extern void func_8015CBCC(void); -extern void func_8015CBD4(void); -extern void func_8015CBDC(void); -extern void func_8015CBE4(void); -extern void func_8015CBEC(void); -extern void func_8015CBF4(void); -extern void func_8015CBFC(void); -extern void func_8015CC04(void); -extern void func_8015CC0C(s32 *param_1); -extern void func_8015CC74(s32 *a0); -extern void func_8015CC40(s32 *a0); -extern s32 func_8015CCD0(); -extern s32 func_8015CCB0(void); -extern s32 func_801725E0(u8 *a0); -extern s32 func_8015CCD0(s32 param_1); -extern s32 func_8015CD20(s32 arg0); -extern void func_8015CF24(s32 a0); -extern void func_8015D01C(); -extern void func_8015CF58(s32 *param_1); -extern void func_8015CFC0(s32 *a0); -extern void func_8015CF8C(s32 *a0); -extern void func_8015CFFC(void); -extern void func_8015D01C(int param_1); -extern void (*D_8018F8B0[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018FAE0; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018EBC4[]; -extern void func_8015D414(int param_1); -extern void func_8015D57C(s32); -extern void func_8015D480(s32 *a0); -extern s32 func_8015D4E8(s16 *a0); -extern void func_8015D4B4(s16 *a0); -extern void func_8015D524(s32 arg0); -extern void func_8015D544(s32 a0); -extern void func_801746DC(void); -extern void func_8015D57C(s32 arg0); -extern s32 func_80161B18(void *a0); -extern s32 func_80161B84(void *a0); -extern void func_80154150(int, int); -extern void func_80149374(int, int); -extern unsigned char D_8018FAF4[]; -extern void func_8015D5E8(int param_1); -extern int func_8015E0D4(int); -extern void func_8015DA5C(s32 a0); -extern void func_8015DB6C(s32 a0); -extern void func_8015DA90(s32 *a0); -extern void func_8015DAF8(s32 *a0); -extern void func_8015DB6C(s32); -extern void func_8015DB34(s32 a0); -extern void func_8015DCB8(s32 a0); -extern void func_8014BD60(s32 a0, s32 a1); -extern int func_8015DD74(int); -extern void func_8015DBD4(void *arg0); -extern int func_8015DC84(int a0); -extern s8 D_8018FB30[]; -extern void func_8015DCB8(s32 param_1); -extern int func_8015DD74(int arg0); -extern void func_8015DECC(s32 a0); -extern void func_8015DDF0(s32 *a0); -extern void func_8015DE58(s32 *a0); -extern void func_8015DECC(s32); -extern void func_8015DE94(s32 a0); -extern void func_8015E018(s32 a0); -extern void func_8015DF34(void *arg0); -extern int func_8015DFE4(int a0); -extern void func_8015E018(s32 param_1); -extern int func_8015E0D4(int a0); -extern void func_8015E22C(s32 a0); -extern void func_8015E150(s32 *a0); -extern s32 func_8015E1B8(s32 a0); -extern void func_8015E184(s32 *arg0); -extern void func_8015E22C(s32); -extern void func_8015E1F4(s32 a0); -extern u8 D_800D4FF4[]; -extern u8 D_800D5098[]; -extern u8 D_800D5060[]; -extern s32 func_8014A850(s32 a0); -extern void func_8015E40C(s32 a0); -extern void func_8015E588(void); -extern void func_8015E4B0(s32 a0); -extern void func_8015E288(s32 a0); -extern u16 D_8018FB78; -extern u16 D_8018FB7A; -extern u16 D_8018FB7C; -extern s32 D_8018FB80; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -extern void func_8013C9C4(void *a0); -extern s32 D_8018FB88; -extern void func_8015E5B0(u8 *self); -extern void func_8015E714(s32 *a0); -extern void func_8015E95C(s32); -extern void func_8015E84C(s32 *a0); -extern void func_8015E8E8(s32 *a0); -extern void func_8015E9B8(s32 *a0); -extern void func_8015E8B4(s32 *a0); -extern void func_8015E924(s32 a0); -extern void func_8015E95C(s32 a0); -extern s16 D_801152A0; -extern void func_80160818(s32 *a0); -extern void func_8015ED6C(s32 *a0); -extern void func_8015EE7C(s32); -extern void func_8015EDA0(s32 *a0); -extern s32 func_8015EE08(s32 a0); -extern void func_8015EDD4(s32 *arg0); -extern void func_8015EE44(s32 a0); -extern int D_800D4C48; -extern int D_8018F894; -extern void func_8015EE7C(s32 param_1); -extern void func_8015EEE0(void *arg0); -extern void func_8015EF9C(void); -extern void func_8015F080(s32); -extern void func_8015EFA4(s32 *a0); -extern void func_8015F00C(s32 *a0); -extern void func_8015EFD8(s32 *a0); -extern void func_8015F048(s32 a0); -extern void func_8015F080(s32 a0); -extern s32 D_80062BE8; -extern void func_801466F0(s32, s32, s32, s32, s32, s32, s32, s32); -extern s32 func_80161208(void); -extern void func_8015F118(void *a0); -extern void func_8015F260(s32 *a0); -extern void func_8015F380(); -extern void func_8015F2BC(s32 *a0); -extern void func_8015F324(s32 *a0); -extern void func_8015F2F0(s32 *a0); -extern void func_8015F360(void); -extern s32 func_801725B8(u8 *a0); -extern void func_8015F380(void* arg0); -extern void func_8015F738(s32 *a0); -extern void func_8015F848(s32 *a0); -extern void func_8015F76C(s32 *a0); -extern s32 func_8015F7D4(s32 a0); -extern void func_8015F7A0(s32 *arg0); -extern void func_8015F810(s32 *a0); -extern void func_80147078(s32 *, s16); -extern void func_80159B70(void *); -extern void func_8015F89C(void *arg0); -extern void func_8015F948(s32 *param_1); -extern void func_8015F9A4(void *arg0); -extern void func_8015FA24(s32 arg0); -extern void func_8015FBE0(s32 *a0); -extern void func_8015FA44(s32 *a0); -extern void func_8015FAAC(s32 *a0); -extern void func_8015FA78(s32 *a0); -extern s32 func_801612B8(void *a0, s32 a1); -extern void func_8016007C(s32 a0); -extern void func_8015FAE8(void *arg0); -extern void func_8015FCC8(void *param_1); -extern unsigned int D_8018FC0C[]; -extern void func_8015FD74(int param_1); -extern s32 func_80028DE0(void); -extern u8 func_80165700(s32 a0, s32 a1); -extern void func_8015FDCC(s32 a0); -extern u8 D_80078EC2; -extern u8 func_801656E8(s32 a0, s32 a1); -extern void func_80165670(s32 a0, s32 a1); -extern void func_8016004C(s32 a0); -extern void func_8015FF20(void *param_1); -extern void func_801601AC(s32 *a0); -extern void func_801600D0(s32 *a0); -extern void func_80160138(s32 *a0); -extern void func_80160104(s32 *a0); -extern void func_80160174(s32 *a0); -extern void func_801601E4(s32 *a0); -extern void func_80160244(s32 *a0); -extern void func_8016032C(void); -extern void func_80160410(s32 *a0); -extern void func_80160334(s32 *a0); -extern void func_8016039C(s32 *a0); -extern void func_80160368(s32 *a0); -extern void func_801603D8(s32 *a0); -extern u8 D_80062BD0; -extern void func_80160410(s32 * a0); -extern void func_801607B8(s32 *a0); -extern void func_801608C0(s32 *a0); -extern void func_801607E4(s32 *a0); -extern void func_8016084C(s32 *a0); -extern void func_80160888(s32 *a0); -extern void func_80160A28(s32 a0); -extern void func_80160A74(s32 *a0); -extern void func_80160BB4(s32 *a0); -extern void func_80160ACC(s32 *a0); -extern s32 func_80160B34(s32 a0); -extern void func_80160B00(s32 *arg0); -extern void func_80160B70(s32 a0); -extern void func_80160C28(void *arg0); -extern void func_80160CB4(s32 *a0); -extern void func_80160D10(void *arg0); -extern void func_80160DEC(u8 *a0); -extern void func_80160F00(); -extern void func_80160E3C(s32 *a0); -extern void func_80160EA4(); -extern void func_80160E70(s32 *a0); -extern void (*D_8018FCBC[])(void); -extern void func_80160EA4(void *a0); -extern void func_80160EE0(void); -extern void func_80160F00(void* arg0); -extern void func_800D0F4C(s32 a0); -extern u8 D_80110EC0; -extern void func_80160F70(s32 a0); -extern void func_80160FE0(s32 *a0); -extern void func_80161034(void *a0); -extern void func_80161094(s32 a0); -extern void func_801610FC(void); -extern void func_801483E8(void); -extern s32 func_80161A60(s32 a0); -extern void func_8016130C(void *a0, s32 a1); -extern void func_80161240(void *a0); -extern void func_80161374(void *a0, s32 a1); -extern void func_80161278(void *a0); -extern s32 func_801612B8(void * a0, s32 a1); -extern void func_8016163C(void *a0, s32 a1); -extern void func_80161774(void *a0, s32 a1); -extern s32 func_8016197C(s32 a0, s32 a1); -extern s32 func_80161488(void *a0); -extern void func_80161888(void *a0, s32 a1); -extern void func_801614E4(void *a0); -extern void func_8016191C(void *a0, s32 a1); -extern void func_8016151C(void *a0); -extern void func_80161554(void *a0); -extern s32 func_801615C4(void * arg0, s32 arg1); -extern s32 func_801619A4(s32 *a0); -extern s32 func_80161A00(s32 a0); -extern s32 func_80161A30(s32 a0); -extern int func_801497A8(void); -extern int func_80161BE0(void *param_1); -extern u16 D_8018FCEC[]; -extern void func_80161C98(int param_1, u32 param_2); -extern void func_80161E08(s32); -extern s32 func_80162438(s32); -extern s32 D_800AE6A8; -extern void func_800D1734(void *); -extern s32 D_8018FD50; -extern void func_80161D88(void); -extern void func_80161E08(s32 param_1); -extern int func_800291DC(int); -extern int func_800D0E30(void *a0); -extern int func_801620C4(void); -extern s32 func_800D0D7C(s32, s32); -extern int D_801E5C00[]; -extern void func_8016216C(void); -extern s32 func_801621CC(s32 arg0); -extern void func_801622C4(void); -extern void (*D_8018FD74[])(void); -extern void func_80162330(void *a0); -extern void func_8014706C(void *a0); -extern s32 func_8016236C(u8 *a0); -extern void func_800D0C48(s32 a0); -extern s32 func_801623B8(s32 *a0); -extern s32 func_800167F0(s32 a0); -extern s32 func_80162414(void); -extern s32 func_80162438(s32 _unused0); -extern int func_801626B8(void); -extern void func_80162714(void); -extern int D_801E5C58[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018FDBC[])(void); -extern void func_80162834(void *a0); -extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80162968(s32 a0); -extern s32 func_80162ACC(u8 *a0); -extern u8 D_800B5CB8; -extern s32 D_8018FDAC; -extern s32 D_800B5CBC; -extern u8 D_800B5CDF; -extern s32 D_800B5CEC; -extern void func_80162870(s32 param_1); -extern void func_801628F4(s32 *a0); -extern void func_80162968(s32 param_1); -extern void func_80162AC0(s32 *a0, s8 a1); -extern s32 func_80162AE0(u8 *a0); -extern void func_80162AF4(void); -extern void func_80162CC4(void); -extern s32 D_80126D40; -extern void func_80162B1C(void); -extern void func_80162D28(s32 *a0); -extern void func_80162D88(s32 *a0); -extern void func_80162DE8(s32 *a0); -extern void func_80162E48(s32 *a0); -extern void func_80162EA8(s32 *a0); -extern void func_80162F60(s32 arg0, s32 arg1); -extern void func_80162F80(s32 arg0, s32 arg1); -extern void func_80162FA0(s32 arg0, s32 arg1); -extern void func_80162F08(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80162FC0(s32 *a0); -extern void func_80162FF4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801630C4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163194(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg4); -extern void func_8016325C(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80163234(s32 a0); -extern s32 D_80115100; -extern s32 func_801632E0(void); -extern s32 D_80115200; -extern s32 func_801632F0(void); -extern u16 D_80126B18[]; -extern void func_80163328(void); -extern s32 func_801633A8(void); -extern s32 func_80163408(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void func_80163534(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, u16 * a5); -extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); -extern char D_801E5054[8]; -extern void *memcpy(void *dst, const void *src, unsigned int n); -extern void func_801634D8(s32 param_1, u16 param_2, u16 param_3, s32 param_4, u16 param_5); -extern void func_80157158(); -extern void func_80163664(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); -extern void func_801636D0(s32 a0, s32 a1); -extern s32 func_8016380C(struct S8016380C *a0, s32 a1); -extern void *memcpy(void *dst, void *src, s32 n); -extern s32 func_801638A0(u8 *a0, s32 a1); -extern s32 func_80163950(s32 a0); -extern void (*D_8018FDC4[])(void); -extern void func_80163A58(void *a0); -extern void func_80163A94(s32 param_1); -extern void func_80163C2C(s32 param_1); -extern void func_80163EC8(s32 param_1); -extern void func_80164270(s32 *a0); -extern void func_80164418(void); -extern void func_80163764(s32 a0); -extern void func_801642AC(s32 a0); -extern void func_8016432C(s32 a0); -extern void func_80164410(void); -extern s32 func_80012DBC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164530(s32 arg0); -extern void (*D_8018FE18[])(void); -extern void func_80164744(s32 param_1); -extern void func_8001C810(s32 a0, s32 a1); -extern void func_80164A74(s32 *a0); -extern void func_80164930(s32 a); -extern u16 D_800DF2E0; -extern s32 D_8018FDE0; -extern s16 D_8018FE14; -extern s16 D_8018FE12; -extern s16 D_8018FE10; -extern void func_801647A4(int param_1); -extern void func_80164ACC(); -extern void func_80164864(void *a0); -extern void func_80164930(s32 param_1); -extern s32 func_8014C308(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80164ACC(s32 a0); -extern void (*D_8018FE24[])(void); -extern void func_80164BA0(void *a0); -extern void func_8001CD50(s32 a0, s32 a1); -extern void func_800233CC(void *, unsigned short); -extern void func_80164DD0(s32 a0); -extern void func_80164DB0(void); -extern u8 D_801E5CB8; -extern u8 D_801E5CB9; -extern u8 D_801E5CBA; -extern u8 D_801E5CBB; -extern u8 D_801E5CBC; -extern u8 D_801E5CBD; -extern u8 D_801E5CBE; -extern u8 D_801E5CBF; -extern void func_80164BDC(s32 param_1); -extern void func_80164E40(void); -extern void func_80164CD4(u8 *a0); -extern void func_80164D4C(void *arg0); -extern void (*D_8018FE34[])(void); -extern void func_80164EA4(void *a0); -extern void func_80165124(void *a0); -extern void func_80164EE0(int param_1); -extern s32 func_80165140(s32 a0); -extern void func_801651B8(void *a0); -extern void func_80164F44(void *arg0); -extern void func_80165024(void *a0); -extern void func_80165064(s32 *a0); -extern void func_801650C4(s32 *a0); -extern s32 func_80165140(s32 param_1); -extern s32 func_80165240(s32 a0, s32 a1, s32 a2); -extern s32 D_801E5CF8; -extern void func_801651B8(void * param_1); -extern u8 D_80126CF8; -extern void func_8016533C(void); -extern void func_801653F4(s32 a0); -extern void func_80165580(s32 a0); -extern void func_80165374(s32 a0); -extern void func_80165580(s32 _arg0); -extern void func_801653B8(s32 *a0); -extern s32 func_80165624(s32 a0); -extern u8 D_80078EC5; -extern void (*D_8018FE78[])(void); -extern u8 func_80165658(s32 a0, s32 a1); -extern void func_800CAE0C(s32 a0); -extern void func_801654A8(s32 arg0); -extern void func_80165B28(void *a0); -extern void func_801655E4(s32 a0); -extern u8 D_8018FEF4[]; -extern s32 D_8018FF14[]; -extern u8 D_8018FF90[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018FFB0[]; -extern u8 D_8018FFD0[]; -extern void func_800CAF6C(void); -extern void func_80165770(void); -extern void func_801657D8(void); -extern u8 D_80078EC3; -extern void func_801657A0(void); -extern s32 D_80078EA0; -extern s32 D_80078EA8; -extern u8 D_80078EBB; -extern s32 D_80078ED4; -extern s32 D_80078ED8; -extern s32 D_80078EDC; -extern u8 D_80078EE0; -extern void func_80165874(void); -extern s8 D_80078EC4; -extern void func_801658EC(void); -extern s32 func_80165900(void); -extern s32 func_80165910(void); -extern s32 D_8012672C; -extern s32 D_8012811C; -extern s32 D_80126B08; -extern void func_80165938(void); -extern void func_80165958(void); -extern s32 func_80165978(void); -extern void func_80165988(void); -extern s32 func_801659A8(void); -extern void func_801659B8(void); -extern s32 func_801659CC(void); -extern void func_80165A18(void); -extern s32 func_80165A50(s32 _arg0); -extern void func_80165AC8(void); -extern void func_80165A78(s32 arg0); -extern void (*D_8019006C[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_801900E8[])(void); -extern void func_80165BB4(u8 *a0); -extern void func_80165B6C(u8 *a0); -extern void func_80165C58(s32 arg0); -extern void func_80165BFC(void *a0); -extern void func_80165C78(void); -extern M2C_UNK D_801E5064; -extern void func_80165E2C(u16 *arg0); -extern s32 func_80165FA4(s32 a0, s32 a1, s32 a2); -extern s32 func_80167DBC(s32 a0, s32 a1, s32 a2); -extern s32 func_80167AE0(s32 a0, s32 a1, s32 a2); -extern void func_80165E90(void); -extern void func_80020F34(s32 a0, s32 a1); -extern s32 func_80165FA4(s32 arg0, s32 arg1, s32 arg2); -extern void (*D_801900F4[])(void); -extern void func_80166018(void *a0); -extern void func_80166054(s32 arg0); -extern void func_801661CC(s32 param_1); -extern void func_80166244(void* arg0); -extern void func_8016629C(void *a0); -extern void func_801662F4(void *a0); -extern void func_8016634C(void *a0); -extern void func_801663A4(void *a0); -extern void (*D_801900FC[])(void); -extern void func_801663FC(void *a0); -extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); -extern void func_800D1FC8(s32 a0, s32 a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern void func_801665B4(); -extern void func_80146C3C(); -extern void func_80166438(u8 *a0); -extern s32 func_80128ED8(s32 param_1, s32 *param_2); -extern void func_800D22E4(s32 a0); -extern void func_801665B4(s32 *a0); -extern void (*D_801901C4[])(void); -extern void func_80166618(void *a0); -extern void (*D_801901D4[])(void); -extern void func_80166654(void *a0); -extern s32 func_80166690(s32 param_1, s32 param_2); -extern s32 func_80166994(); -extern s32 func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern s32 func_80167540(s32 arg0); -extern void (*D_801901E4[])(void); -extern void func_801678B4(void *a0); -extern void RotMatrixYXZ(void *a0, void *a1); -extern void func_80048EAC(void *a0, void *a1); -extern s32 func_801670E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80146C3C(void); -extern void func_801678F0(s32 a0); -extern void (*D_801901F0[])(void); -extern void func_80167A9C(void *a0); -extern void func_80167AD8(void); -extern s32 func_80167AE0(s32 param_1, s32 param_2, s32 param_3); -extern void func_80168070(s32 a0, s16 *a1, s16 *a2, void *a3); -extern u8 D_80190150[]; -extern u8 D_80190164[]; -extern s32 func_80167DBC(s32 arg0, s32 arg1, s32 arg2); -extern void func_800D20C0(void *a0, void *a1, s32 a2); -extern void func_80017E68(void *a0, void *a1); -extern void func_800D23D0(void *a0); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern s32 D_801269A4; -extern s32 D_801269A8; -extern s32 D_801269AC; -extern void func_80168070(s32 param_1, s16 *param_2, s16 *param_3, void *param_4); -extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_8016829C(s32 a0); -extern s32 func_80166690(s32 a0, s32 a1); -extern void func_80168328(s32 arg0); -extern void func_801683D8(s32 a0); -extern void func_801684B4(s32 a0); -extern void func_80168540(s32 a0); -extern void func_801685EC(s32 a0); -extern void func_80168640(s32 a0); -extern s32 RotMatrixX(s32 a0, void *a1); -extern void func_80168664(void *arg0); -extern void (*D_80190208[])(void); -extern void func_80168744(void *a0); -extern void func_80168BDC(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801687CC(s32 a0); -extern void func_80168780(s32 a0); -extern void func_80168828(void); -extern void func_801687CC(s32 param_1); -extern void func_80168828(); -extern void (*D_80190210[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_80190218[])(void); -extern void func_80168AA8(void *a0); -extern void func_80168AE4(s32 a0); -extern void func_800D2318(void); -extern void func_80168BDC(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void (*D_80190220[])(void); -extern void func_80168D58(void *a0); -extern void func_80168D94(int a0); -extern void func_80168F40(); -extern void func_80168EC4(s32 a0); -extern void func_80168F40(void *arg0); -extern void (*D_80190228[])(void); -extern void func_8016901C(void *a0); -extern void func_80169058(s32 a0); -extern s32 func_80169228(void); -extern void func_801691B8(void *a0); -extern void (*D_80190230[])(void); -extern void func_801693CC(void *a0); -extern void func_80169584(s32 param_1); -extern void func_80169408(s32 a0); -extern void func_8016951C(int param_1); -extern s32 func_80017758(void *a0, void *a1); -extern s32 func_80017DC4(void *a0, void *a1); -extern void func_801696D8(s32 a0, s32 a1); -extern void (*D_80190238[])(void); -extern void func_80169830(void *a0); -extern void func_8016986C(s32 a0); -extern s32 func_80169A4C(s32 a0, s32 a1); -extern void func_801699D0(void *arg0); -extern void (*D_801902EC[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_801902F4[])(void); -extern void func_80169F00(void *a0); -extern char D_801902A4[]; -extern char D_80190264[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8019032C[])(void); -extern void func_8016A020(void *a0); -extern void func_8016A05C(void *a0); -extern void func_8016A290(s32 a, void *b, void *c); -extern void func_8016A08C(s32 param_1); -extern void func_8016A1CC(int param_1); -extern void func_8016A290(s32 param_1, void *param_2, void *param_3); -extern void (*D_80190338[])(void); -extern void func_8016A700(void *a0); -extern s32 func_8016A73C(s32 arg0); -extern s32 func_8016A8FC(s32 a0); -extern void func_8016A890(s32 arg0); -extern void func_8016AA50(s32 param_1, s32 param_2); -extern void (*D_80190380[])(void); -extern void func_8016AB30(void *a0); -extern void func_8016B234(void); -extern void func_8016AFB0(s32 a0); -extern void func_8016B114(void *arg0); -extern s32 func_8016B448(s32, s32); -extern s32 func_8016BA48(s32 a0); -extern void func_8016B3F4(s32 a0); -extern s32 func_8016B428(s32 a0); -extern void func_8016B984(void *a0); -extern s32 func_8016B448(s32 arg0, s32 arg1); -extern void (*D_801903FC[])(void); -extern void func_8016B4BC(void *a0); -extern int func_8016B9F8(int); -extern int func_8016B834(int, int); -extern void func_8016B91C(int); -extern int D_801E6018; -extern void func_8016B4F8(int param_1); -extern s32 func_8016B9F8(s32 param_1); -extern void func_8016B6BC(s32, s32, s32, s32); -extern void func_8016B91C(s32); -extern s16 D_801903F0[]; -extern void func_8016B5C0(s32 param_1); -extern void func_8001CD9C(int, void *); -extern int *D_80190434[]; -extern unsigned short D_8019043C[]; -extern unsigned short D_80190444[]; -extern unsigned char D_801E6020[]; -extern int func_8016B834(int param_1, int param_2); -extern void func_8016B964(SrcB964 *a0, DstB964 *a1); -extern void func_8016B91C(s32 arg0); -extern s32 D_801E6018; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8019044C[])(void); -extern void func_8016BBA4(void *a0); -extern s32 func_8016BBE0(s32 param_1); -extern void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3); -extern M2C_UNK D_801E6154; -extern M2C_UNK D_801E6158; -extern void func_8016BCC0(void *arg0); -extern s32 func_8016BD78(s32 param_1); -extern s32 func_8016BEA0(s32 param_1); -extern void func_8016BF34(void *a0); -extern void func_8016BFD0(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern s32 D_801E60E0; -extern void (*D_8019047C[])(void); -extern void func_8016C14C(void *a0); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801E615C[]; -extern u8 D_801E6164[]; -extern u8 D_801E6114[]; -extern void func_8016C2C4(s32 param); -extern s32 func_8016C49C(s32 param_1_arg); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_8016C74C(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern short func_8016CF04(s32 a0, s32 a1); -extern void func_8016C83C(s32 a0); -extern void (*D_80190484[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_801904A0[])(void); -extern void func_8016D19C(void *a0); -extern void (*D_801904A8[])(void); -extern void func_8016D428(void *a0); -extern void func_8016D464(u8 *a0); -extern void func_8016D4DC(s32 a0); -extern void func_8016D5EC(s32 *a0); -extern short func_8016CBC0(void); -extern void func_8016D64C(int param_1); -extern void func_8016D778(s32 a0); -extern void func_800D20C0(); -extern void func_8016D848(s32 *a0); -extern void func_8016D984(s32 *a0); -extern void func_8016DBD8(u8 *a0); -extern void (*D_80190510[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801904B4; -extern u8 D_801904C0; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void (*D_80190544[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8019054C[])(void); -extern void func_8016DF20(void *a0); -extern void func_8016E3CC(s32 a0); -extern void func_8016E1CC(s32 a0); -extern void func_8016E26C(s32 *a0); -extern void func_8016E2E8(void *a0); -extern void func_8016E460(void *a0, void *a1); -extern void func_8016E358(void *a0); -extern void func_8016E460(void *arg0, void *arg1); -extern void (*D_801905A0[])(void); -extern void func_8016E5B8(void *a0); -extern void func_8016E5F4(s32 arg0); -extern void func_8016E778(); -extern void func_8016E688(void *a0); -extern void func_8016E6E4(s32 a0); -extern void func_8016E728(u8 *a0); -extern void func_8016E7C8(int param_1, short *p1, unsigned int *p2); -extern void func_8016E778(int param_1); -extern void func_8016E7C8(int param_1, short *param_2, unsigned int *param_3); -extern s32 D_80115218; -extern void func_8016E8F0(void); -extern void func_8016E918(short param_1, short param_2); -extern s32 func_8016E95C(); -extern u16 D_801905D4[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_801905C4[]; -extern void func_8016EB3C(s32 p); -extern void func_8016EBA8(u8 *param_1); -extern void func_8016ED6C(void); -extern s32 D_80126D70; -extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); -extern void func_8016ED8C(s32 a0, s32 a1, s32 a2); -extern void func_8016EE40(s32 a0, s32 a1, s32 a2); -extern void func_8016EDBC(s32 a0, s32 a1, s32 a2); -extern void func_8016EE94(); -extern void func_8016EDEC(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_8016EF78(s32 a0); -extern void func_8016EE40(s32 _arg0, s32 _arg1, s32 _arg2); -extern void func_801726D0(void *a0); -extern s32 D_80126D50; -extern s32 D_80126D54; -extern u8 D_80126D6C; -extern u8 D_80126D6D; -extern u8 D_80126D6E; -extern s32 D_80126D5C; -extern s32 D_80126D60; -extern s16 D_80126D64; -extern s16 D_80126D66; -extern s16 D_80126D68; -extern s16 D_80126D6A; -extern u8 D_80126D1A; -extern s32 D_80127058; -extern s32 D_8012705C; -extern s32 D_80127060; -extern s32 D_80127064; -extern s32 D_80127068; -extern s32 D_8012706C; -extern s32 D_80127070; -extern s32 D_80127074; -extern s16 D_80126D20; -extern void func_8016EE94(s32 a0, s32 a1); -extern s32 func_8016EFC8(s32); -extern s32 func_8016EFA8(s32 a0); -extern void func_8016F094(s32 *a0); -extern s32 func_8016F0AC(); -extern s32 D_801905F0; -extern void func_8016F250(void); -extern void func_8016F288(void); -extern void func_8016F2A8(void); -extern void func_8016F2C8(void); -extern void func_8016F2EC(void); -extern void func_8016F30C(void); -extern void func_8016F330(void); -extern void func_8016F350(void); -extern void func_8016F374(void); -extern void func_8016F388(void); -extern void func_8016F398(void); -extern s32 func_8016F44C(s32 a0); -extern void func_8016F470(s32 a0); -extern s32 func_8016F410(s32 a0); -extern void func_80175414(s32 _arg0); -extern s32 func_8016F4C4(s32); -extern s32 func_8016F494(s32 a0); -extern void func_8016F0E4(void); -extern s32 func_8016F4C4(s32 param_1); -extern void func_8016F4F4(void); -extern void func_801719A4(int a0, int a1); -extern void func_800D1724(s32 a0); -extern void func_80171928(void *a0); -extern void *D_8011F738; -extern void func_8016F4FC(void *a0); -extern void func_8014708C(void *a0); -extern void func_8016F540(void *a0); -extern void func_8016F578(s32 *a0); -extern void func_8016F5B0(void *a0); -extern void func_80147060(u8 *a0); -extern void func_8016F5E0(u8 *a0); -extern void func_8016F610(void *a0); -extern void func_8016F648(void *a0); -extern void func_8016F680(void *a0); -extern void func_8016F6B0(void *a0); -extern void (*D_80190668[])(void); -extern void func_8016F6E0(void *a0); -extern s32 func_80171990(u8 *a0); -extern void func_8016F764(void *a0); -extern void func_8016F71C(u8 *a0); -extern void (*D_80190670[])(void); -extern void func_8016F798(void *a0); -extern void func_8016F804(void *a0); -extern void func_8016F7D4(u8 *a0); -extern void func_80171928(void *); -extern void (*D_80190678[])(void); -extern void func_8016F834(void *a0); -extern void func_8016F8AC(u8 *a0); -extern void func_8016F870(u8 *a0); -extern void func_80172358(u8 *a0, u8 *a1); -extern void (*D_80190680[])(void); -extern void func_8016F8E4(void *a0); -extern void func_8016F95C(void *a0); -extern void func_8016F920(u8 *a0); -extern s32 func_80171CC4(void *a0, void *a1); -extern s32 func_80171D1C(void *a0, void *a1, s32 a2); -extern u16 D_8011F73E; -extern void (*D_80190688[])(void); -extern void func_8016F9C4(void *a0); -extern void func_80171B44(s32 *a0); -extern void func_8016FA44(s32 a0); -extern void func_8016FA00(s32 a0); -extern s32 func_80171C64(s32 a0, s32 a1); -extern void (*D_80190690[])(void); -extern void func_8016FA84(void *a0); -extern void func_8016FB10(void *a0); -extern void func_8016FAC0(u8 *a0); -extern void func_8016FB50(void *a0); -extern void (*D_8019069C[])(void); -extern void func_8016FB7C(void *a0); -extern void func_8016FC24(); -extern void func_8016FBB8(s32 a0); -extern s32 func_80171B4C(s32 a0, s32 a1); -extern void func_8016FC24(s32 a0); -extern void func_8016FC64(void *a0); -extern void (*D_801906A8[])(void); -extern void func_8016FC90(void *a0); -extern void func_8016FD08(u8 *a0); -extern void func_8016FCCC(u8 *a0); -extern s32 func_80172658(s32 *a0); -extern void func_8016FD08(u8 *s0); -extern void func_8016FD7C(s32 *a0); -extern void (*D_801906B4[])(void); -extern void func_8016FDB4(void *a0); -extern void func_8016FE2C(u8 *a0); -extern void func_8016FDF0(u8 *a0); -extern void func_8016FE2C(u8 * a0); -extern s32 func_8016FE78(s32 *a0); -extern s32 func_80172664(s32 *a0); -extern void func_8016FED0(s32 *a0); -extern void (*D_801906C4[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_801906D4[])(void); -extern void func_8016FFDC(void *a0); -extern void func_80170068(u8 *a0); -extern void func_80170018(u8 *a0); -extern void func_801700B8(u8 *a0); -extern void func_80170100(u8 *a0); -extern void (*D_801906DC[])(void); -extern void func_80170150(void *a0); -extern void func_801701C8(u8 *a0); -extern void func_8017018C(u8 *a0); -extern void func_801701C8(u8 * a0); -extern void (*D_801906E4[])(void); -extern void func_80170240(void *a0); -extern void func_801702B8(s32 a0); -extern void func_8017027C(u8 *a0); -extern s16 func_80171AB0(s32 a0, void *a1); -extern void (*D_801906EC[])(void); -extern void func_801702FC(void *a0); -extern void func_80170374(u8 *a0); -extern void func_80170338(u8 *a0); -extern s32 func_8014C168(s32 *a0, s32 a1); -extern void func_80170374(u8 * a0); -extern void (*D_801906F4[])(void); -extern void func_801703E0(void *a0); -extern void func_8017044C(u8 *a0); -extern void func_8017041C(u8 *a0); -extern void func_8017044C(u8 * a0); -extern void (*D_801906FC[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_80190704[])(void); -extern void func_80170548(void *a0); -extern void func_801705C0(u8 *a0); -extern void func_80170584(u8 *a0); -extern void func_801705C0(u8 * a0); -extern void (*D_8019070C[])(void); -extern void func_801705F8(void *a0); -extern void func_80170670(void *a0); -extern void func_80170634(u8 *a0); -extern void func_8012A568(void (*a0)(void)); -extern void (*D_80190714[])(void); -extern void func_801706AC(void *a0); -extern void func_80170718(void *a0); -extern void func_801706E8(u8 *a0); -extern void func_80129FF4(void); -extern void (*D_8019071C[])(void); -extern void func_80170748(void *a0); -extern void func_801707D4(void *a0); -extern void func_80170784(u8 *a0); -extern s32 func_80174ED4(void); -extern void (*D_80190724[])(void); -extern void func_80170810(void *a0); -extern void func_801708B0(void *a0); -extern u8 D_800D5DA8; -extern void func_8017084C(s32 a0); -extern u8 D_800D5A34[]; -extern void func_80170AD8(void *a0); -extern void func_80171904(s32 a0); -extern void func_80170B48(int a0); -extern void func_80170928(void); -extern u8 D_800D59EC[]; -extern void func_80170970(void); -extern u8 D_800D599C[]; -extern void func_801709B8(void); -extern u8 D_800D5934[]; -extern void func_80170A00(void); -extern void func_80170A48(void); -extern u8 D_800D5DC0[]; -extern void func_80170A90(void); -extern void (*D_8019072C[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_80190734[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8019073C[])(void); -extern void func_80170C74(void *a0); -extern s32 func_8017197C(u8 *a0); -extern void func_80170CF0(void *a0); -extern void func_80170CB0(u8 *a0); -extern void (*D_80190744[])(void); -extern void func_80170D68(void *a0); -extern void func_80170DE0(u8 *a0); -extern void func_80170DA4(u8 *a0); -extern s32 D_8011F73C; -extern s32 D_8011F740; -extern void func_801718AC(void *a0); -extern void func_80170DE0(u8 * _arg0); -extern void (*D_8019074C[])(void); -extern void func_80170E34(void *a0); -extern void func_80170EAC(u8 *a0); -extern void func_80170E70(u8 *a0); -extern int func_800D0F8C(int a0); -extern void func_80170EAC(u8 * _arg0); -extern void (*D_80190754[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8019075C[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_80190764[])(void); -extern void func_80171064(void *a0); -extern void func_801710DC(u8 *a0); -extern void func_801710A0(u8 *a0); -extern u16 D_8011F73A; -extern void func_801710DC(u8 * arg0); -extern void (*D_8019076C[])(void); -extern void func_80171120(void *a0); -extern void func_8017118C(u8 *a0); -extern void func_8017115C(u8 *a0); -extern void func_80142454(s32 a0); -extern void func_8017118C(u8 * a0); -extern void (*D_80190774[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8019077C[])(void); -extern void func_80171260(void *a0); -extern s32 func_80012F74(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80171384(void *a0); -extern void (*D_80190784[])(void); -extern void func_801714E4(void *a0); -extern void func_8017162C(void *a0); -extern void func_80171520(s32 a0); -extern s32 func_801716AC(s32 a0, void *a1, s32 *a2); -extern s32 func_80012FC8(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_800A5E94; -extern u8 D_800A5E95; -extern u8 D_800A5E96; -extern s32 func_801716AC(s32 a0, void * a1, s32 * a2); -extern int func_800D0FE0(int a0); -extern void func_801717A0(void *a0); -extern void func_8013E588(void *a0); -extern void func_801717F4(void *a0); -extern void func_80171824(void *a0); -extern void func_80171854(void *a0); -extern void func_80171884(void); -extern void func_80171A1C(u8 *a0); -extern void func_80171928(void * a0); -extern void func_8017196C(s32 *a0, s8 a1); -extern void func_80171A04(s32 *a0); -extern void func_80171A10(s32 *a0); -extern void func_80171A34(s32 *a0, s8 a1); -extern s32 func_80171A44(u8 *a0); -extern s32 func_80171A58(u8 *a0); -extern s32 func_80171A6C(u8 *a0); -extern void func_80171A80(s32 *a0, s32 a1); -extern s32 func_80171A88(s32 a0); -extern s16 func_80171AB0(s32 param_1, void * _arg1); -extern void func_80171B10(void *a0); -extern void func_80171EC8(s32 a0); -extern s32 func_80171C64(s32 param_1, s32 param_2); -extern s32 func_80171D78(s32 a0, s32 a1); -extern int func_8017250C(short *a0, short *a1); -extern s32 func_80171CC4(void * a0, void * a1); -extern s32 func_80171FFC(short *a0, short *a1, s32 a2); -extern s32 func_80171D1C(void * a0, void * a1, s32 a2); -extern s32 func_8017248C(s32 a0, s32 a1); -extern s32 func_80171E08(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_80047948(s32 a0); -extern s32 func_8004787C(s32 a0); -extern void func_80172170(s32 a0, s32 a1); -extern s32 func_8017209C(void *arg0, void *arg1, s32 arg2, s32 arg3); -extern void func_801722CC(s32 *a0); -extern void func_80172304(s32 *a0); -extern void func_80172310(u8 *a0); -extern void func_801723C4(s32 param_1, s32 param_2); -extern void func_80161C24(s32, s32); -extern void func_80172414(s32 a0); -extern s32 func_801724EC(s32 a0); -extern s32 func_8017248C(s32 arg0, s32 arg1); -extern s32 func_80013450(s32); -extern s32 func_80172560(u8 *a0, u8 *a1); -extern s32 func_8017261C(u8 *a0); -extern s32 func_80172644(u8 *a0); -extern s32 func_80172670(s32 *a0); -extern s32 func_80172688(s32 *a0); -extern s32 func_80172694(s32 *a0); -extern s32 func_801726A0(s32 *a0); -extern s32 func_801726AC(s32 *a0); -extern s32 func_801726B8(s32 *a0); -extern s32 func_801726C4(s32 *a0); -extern s32 func_80172760(s32 a0); -extern s32 func_80174650(s32); -extern void (*D_80127088)(void); -extern s32 D_801270BC; -extern s16 D_80126B0C; -extern void func_801726D0(void * _arg0); -extern void func_80172710(void); -extern void func_80174684(void *); -extern void func_80172738(void); -extern s16 D_80126B30; -extern s32 func_801727D0(void *a0); -extern void func_80172780(void *a0); -extern void func_80172844(u8 *a0); -extern void func_8017280C(u8 *a0); -extern void func_8017288C(void); -extern s32 func_801728E4(void *a0); -extern void func_80172894(void *a0); -extern void func_80172958(u8 *a0); -extern void func_80172920(u8 *a0); -extern s16 D_80126B36; -extern void func_80172958(u8 * a0); -extern void func_801729A8(void); -extern s32 func_801729F0(void *a0); -extern s16 D_80126B34; -extern s16 D_80126B32; -extern void func_801729B0(s32 a0); -extern void func_80172A8C(void *a0); -extern void func_80172A2C(int param_1); -extern void func_80172ACC(u8 *a0); -extern void func_80172B0C(void); -extern s32 func_80172B44(void *a0); -extern void func_80172B14(s16 a0); -extern s32 D_801150F8; -extern void func_80172BC8(void *a0); -extern void func_80172B80(u8 *a0); -extern void func_80172C48(void); -extern void (*D_801907C8[])(void); -extern void func_80172CA0(void *a0); -extern void func_80172D14(u8 *a0); -extern void func_80172CDC(u8 *a0); -extern void func_80172D14(u8 * a0); -extern void func_80172D60(void); -extern s32 D_80127508; -extern s32 func_80172DAC(void *a0); -extern void func_80172D68(s32 a0); -extern void func_80172E20(u8 *a0); -extern void func_80172DE8(u8 *a0); -extern void func_80172E20(u8 * a0); -extern void func_80172E8C(void); -extern void func_8017303C(void *); -extern void func_80172E94(void); -extern void func_80172ED4(void); -extern void func_80172EFC(void); -extern void func_80172F24(void); -extern u8 D_800D47F4[]; -extern void func_80172F4C(void); -extern void func_80172F9C(void); -extern u8 D_800D5C6C[]; -extern void func_80172FEC(void); -extern s32 func_80173078(void *a0); -extern void func_8017303C(void * a0); -extern void func_801730FC(struct S801730FC *a0); -extern void func_801730B4(s32 a0); -extern void func_8017316C(void); -extern s32 func_8017319C(void *a0); -extern void func_80173174(void); -extern u8 D_800D5AA0[]; -extern void func_80173220(void *a0); -extern void func_801731D8(s32 *a0); -extern M2C_UNK D_8019078C; -extern void func_80173220(void * arg0); -extern void func_80173294(void); -extern void func_801732C4(); -extern void func_8017329C(void); -extern void func_801732C4(s32 *a0); -extern void func_8017331C(); -extern void func_801732F4(void); -extern void func_8017331C(s32 *a0); -extern void func_80173374(); -extern void func_8017334C(void); -extern void func_80173374(s32 *a0); -extern void func_801733A4(void); -extern void func_801733CC(s32 a0); -extern void func_801734BC(s32 a0, s32 a1); -extern s16 D_80126B3E; -extern void func_80173460(s32 a0, s32 a1); -extern void func_801734BC(s32 arg0, s32 _unused1); -extern void (*D_801907F8[])(void); -extern void func_80173544(void *a0); -extern void func_801735B8(u8 *a0); -extern void func_80173580(u8 *a0); -extern s16 D_80126B40; -extern void func_801735EC(void *a0); -extern void func_80173648(u8 *a0); -extern void func_801736A8(void); -extern s32 func_8014C118(void *a0, s32 a1, s32 a2); -extern s32 func_801736FC(void *a0); -extern void func_801736B0(s32 a0, s32 a1); -extern void func_80173770(u8 *a0); -extern void func_80173738(u8 *a0); -extern void func_801723C4(s32 a0, s32 a1); -extern void func_801737B0(void); -extern s32 func_801737E8(void *a0); -extern void func_801737B8(s16 a0); -extern void func_8017385C(u8 *a0); -extern void func_80173824(u8 *a0); -extern void func_801738D4(void); -extern s32 func_8017390C(void *a0); -extern void func_801738DC(s16 a0); -extern void func_80173980(u8 *a0); -extern void func_80173948(u8 *a0); -extern void func_801739D8(u8 *a0); -extern void func_80173A20(void); -extern s32 D_8012750C; -extern void func_80173A60(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80173A28(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void (*D_80190834[])(void); -extern void func_80173B4C(void *a0); -extern void func_80173BC0(u8 *a0); -extern void func_80173B88(u8 *a0); -extern void func_80173C64(u8 *a0); -extern void func_80173E1C(s32 a0); -extern s16 D_80126938; -extern s16 D_80126B3A; -extern void func_800D128C(s32, s32); -extern void func_80174158(s32 a0); -extern void func_8002A088(s32); -extern void func_8002A2D4(s32); -extern void func_8002A544(s32); -extern void func_8002A7B4(s32); -extern s32 func_80174188(s32 a0); -extern void func_801741A8(s32 a0); -extern s32 func_800D0EC4(void); -extern void func_800D0F0C(s32, s32); -extern void func_80145EE8(s32); -extern void func_80173EF8(void *param_1); -extern s32 func_8014BCEC(s32, s32); -extern void func_801741A8(s32 _arg0); -extern s16 D_80126B3C; -extern s16 D_8011F9C8; -extern void func_801741EC(u8 *a0); -extern void func_80174274(void); -extern s32 func_801742A4(void *a0); -extern void func_8017427C(void); -extern void func_80174318(u8 *a0); -extern void func_801742E0(u8 *a0); -extern void func_80174354(void); -extern s32 func_80174384(void *a0); -extern void func_8017435C(void); -extern void func_801743F0(u8 *a0); -extern void func_801743C0(u8 *a0); -extern void func_801743F0(u8 * a0); -extern void func_80174430(void); -extern s32 func_80174474(void *a0); -extern void func_80174438(s32 a0); -extern void func_801744E0(u8 *a0); -extern void func_801744B0(u8 *a0); -extern void func_80174524(void); -extern void func_80174554(); -extern void func_8017452C(void); -extern void func_80174554(s32 arg0); -extern void func_801745AC(); -extern void func_80174584(void); -extern void func_801745AC(s32 *a0); -extern void func_80174604(void); -extern void func_801745DC(void); -extern void func_80174630(void); -extern s32 func_80174650(s32 _arg0); -extern void func_80174674(void); -extern void func_801746A4(void); -extern s32 func_800CF8CC(void); -extern void func_80174714(void); -extern s32 func_80174754(void); -extern s16 func_80174764(void); -extern s16 func_80174774(void); -extern s32 func_801747CC(void *a0); -extern void func_80174784(void); -extern s32 func_801747AC(s32 a0); -extern s32 func_80174808(u8 *a0); -extern void func_8017481C(void); -extern s32 func_80174888(void *a0); -extern void func_80174824(void); -extern void func_8017484C(s32 a0); -extern void func_801748C4(s32 a0); -extern void func_801748E4(void); -extern void func_8012A018(s32 a, s32 b); -extern s32 func_8017496C(void *a0); -extern void func_801748EC(void); -extern s32 func_801749C8(); -extern s32 func_801749A8(s32 a0); -extern void func_80174BBC(void *a0); -extern void func_8012A0E0(void); -extern void func_80174BF4(void *a0); -extern void (*D_8019088C[])(); -extern void func_80174BF4(void * arg0); -extern s32 func_80174CB0(s32, s32); -extern s32 func_80174C60(s32 a0); -extern void func_80174C80(s32 a0); -extern s32 D_8012697C; -extern u16 D_80126980; -extern s32 func_80174F28(void *a0); -extern void func_80174E9C(s32 a0); -extern void func_80174EF0(s32 a0, s16 a1); -extern s32 func_80175014(u8 *a0, u8 *a1, s32 a2); -extern void func_80174F64(u8 *a0); -extern void func_80174FBC(u8 *a0); -extern s32 func_8017509C(u8 *a0, s32 a1, u8 *a2, u8 *a3); -extern void func_80175184(s32 *a0); -extern void func_80175114(s32 *a0); -extern void func_80175184(); -extern void func_80175150(s32 *a0); -extern void (*D_8019089C[])(void*); -extern s32 func_80175268(s32); -extern void func_80175184(s32* arg0); -extern s32 func_80175218(void *a0); -extern void func_801751D8(void *a0); -extern void (*D_801908A4[])(s32); -extern s32 func_80175218(void * param_1); -extern void func_801752BC(s32 *a0); -extern u8 D_8011F7A8; -extern u8 D_8011F7A9; -extern u8 D_8011F7AD; -extern u8 D_8011F7AE; -extern void func_80175494(void); -extern void (*D_80190A0C[])(); -extern s32 func_801758FC(void); -extern s32 func_80175820(void); -extern s32 func_801759D8(void); -extern void func_8017553C(s32 *param); -extern void func_801757A0(s32 a0); -extern short D_800B9A02; -extern void func_80175590(void *arg0); -extern s16 D_800B9A02; -extern void func_801757A0(s32); -extern void func_80175624(void *a0); -extern void func_801757E0(int); -extern void func_80175668(void); -extern void (*D_80190A18[])(); -extern void func_80175690(s32 *param); -extern void func_80175DA8(s32 a0); -extern void func_80175AB8(s32 a0); -extern void func_80176144(s32 a0); -extern void func_801756E4(s32 arg0); -extern void func_80175798(void); -extern void func_80176734(s32 a0); -extern void func_80176218(s32 a0); -extern void func_80176D00(s32 a0); -extern void func_801757E0(s32 a0); -extern s32 func_80178004(s32 a0, s32 a1, s32 a2); -extern u8 D_8011F7B1; -extern u16 D_8011F7B4; -extern u16 D_8011F7B6; -extern s16 D_8011F81E; -extern void *func_80177784(void *a0, s32 a1, s32 a2, s32 a3); -extern u32 func_801783D0(s32 a0, s32 a1); -extern void *func_801777BC(void *a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern u16 D_8011F82C; -extern u16 D_8011F82A; -extern u32 * func_80176D94(void *param_1, u32 param_2, s16 param_3_); -extern void func_801778A8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80176FF4(s32 a0); -extern u16 D_8011F830; -extern u16 D_8011F82E; -extern u32 * func_801770E0(void *param_1, u32 param_2, s16 param_3_); -extern void func_80177340(s32 a0); -extern u8 D_8011F837; -extern u8 D_8011F7F0; -extern u8 D_8011F7AB; -extern u32 * func_8017742C(u32 *param_1, s32 param_2, s32 param_3); -extern void func_801776EC(u8 *a0); -extern void * func_80177784(void *a0, s32 a1, s32 a2, s32 a3); -extern uint * func_80177EA4(uint *param_1, int param_2, uint param_3, int param_4); -extern void func_80177F84(s32 param_1, s32 param_2); -extern u32 * func_80178298(u32 *param_1, u8 *param_2, short param_3, short param_4); -extern M2C_UNK D_801E52AC; -extern void func_80178438(u16 *arg0); -extern void func_801787D4(void); -extern void func_8012A908(void); -extern void func_8017869C(s32 a0); -extern void func_80130D0C(s32 a0); -extern void func_8013E370(void); -extern s32 D_8011DB08; -extern void func_8017849C(void); -extern void func_8013E4B4(void); -extern s16 D_801270C4; -extern s32 D_801274D8; -extern s16 D_801270C2; -extern u8 D_801270C6; -extern u8 D_801270C7; -extern s32 D_801274DC; -extern s32 D_801274E0; -extern void func_80178608(void); -extern void func_80178744(s32 a0, s32 a1); -extern void func_80178840(); -extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern s32 func_801788B8(s32 arg0, s32 arg1); -extern s32 func_801789AC(s32 arg0); -extern s16 D_801E7AB0; -extern int func_80178970(void); -extern s32 func_80178B18(s32 param_1, s32 param_2); -extern s32 func_80178B70(s32 param_1, s32 param_2); -extern void func_80178BB8(s32 a0, s32 a1); -extern s32 func_80178BF8(); -extern s32 D_801E6898; -extern short D_801E7B24; -extern void func_80178CBC(s32 arg0, s32 arg1); -extern void func_80178D18(void); -extern s32 func_80178D40(s32 arg0, s32 arg1); -extern void func_80179B28(s32 a0); -extern void func_80179B74(u16 *p); -extern void func_80179D30(u16 *a0); -extern void func_80179D78(u16 *a0); -extern void func_80179DCC(short a0); -extern void func_80179DF8(void); -extern void func_80179E1C(short a0); -extern void func_80179E48(s16 a0); -extern void func_80179E74(s16 a0); -extern void func_80179EA0(u16 *a0); -extern void func_80179EE8(short a0); -extern void func_80179F14(s16 a0, s16 a1); -extern void func_80179F44(void); -extern void func_80179F6C(short a0); -extern void func_80179F98(u16 *a0); -extern void func_80179FEC(u16 *a0); -extern void func_8017A040(u16 *a0); -extern s32 D_801E6CC4; -extern void func_8017A094(s32 arg0); -extern void func_8017A0C4(s32 arg0); -extern void func_8017A0F4(void); -extern void func_8017A11C(void); -extern s32 D_801E6CEC; -extern void func_8017A144(s32 a0); -extern void func_8017A180(void); -extern void func_8017A1A8(void); -extern void func_8017A1D0(void); -extern void func_8017A1F8(void); -extern void func_8017A220(void); -extern void func_8017A248(void); -extern void func_8017A270(void); -extern void func_8017A298(void); -extern void func_8017A2C0(void); -extern void func_8017A2E8(void); -extern void func_8017A310(void); -extern void func_8017A338(void); -extern void func_8017A360(void); -extern void func_8017A388(void); -extern s16 D_801E6CA8; -extern s32 func_8017A3B0(void); -extern short D_801E6CE4; -extern short D_801E6CE0; -extern int func_800D0CA0(int); -extern int func_8001AAA0(void); -extern int func_800D0CE0(void); -extern int func_8017A3D8(void); -extern void func_80172310(u8*); -extern void func_80172780(void*); -extern void func_80172894(void*); -extern void func_801729B0(s32); -extern void func_80172B14(s16); -extern void func_80172C50(u16 *); -extern void func_80172D68(s32); -extern void func_801733FC(s16, u16 *); -extern void func_80173460(s32, s32); -extern void func_801734BC(s32, s32); -extern void func_801736B0(s32, s32); -extern void func_801737B8(s16); -extern void func_801738DC(s16); -extern void func_80173A28(s32, s32, s32, s32, s32, s32); -extern void func_80174438(s32); -extern void func_8017A4AC(void); -extern s32 func_8017AD0C(s32 arg0); -extern s32 func_8017AD0C(s32); -extern s32 func_8017ADE8(s32 a0); -extern s32 func_8017AE08(void); -extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); -extern void func_8012B178(s32 a0, s32 a1); -extern void func_8012AD80(s32 a0); -extern s32 func_8012B030(u8 *a0); -extern s32 func_8012B744(void *a0, void *a1); -extern s32 func_8012BE98(s32 a0, u16 *a1); -extern s16 D_801E7A68; -extern s16 D_801E7A6A; -extern s16 D_801E7A74; -extern void func_8017AE2C(s32 param_1); -extern void func_8017B0E4(int param_1, int param_2); -extern s16 D_801E6CAC; -extern u16 D_801E6D2C; -extern u16 D_801E6D2E; -extern u16 D_801E6D30; -extern void func_8017B1D8(void); -extern s32 func_8017B238(s32 param_1, s32 param_2); -extern s32 func_8017B368(s32 param); -extern s32 func_8017B490(s32 param); -extern s32 func_8017B614(s32 param_1, s32 param_2); -extern s32 D_80114F30; -extern s32 D_80114F34; -extern s32 D_80114F38; -extern s32 D_80114F24; -extern s32 D_80114F28; -extern s32 D_80114F2C; -extern u8 D_8012694C; -extern s16 D_801E6D24; -extern s16 D_801E6D26; -extern s16 D_801E6D28; -extern s16 D_801E6D1C; -extern s16 D_801E6D1E; -extern s16 D_801E6D20; -extern void func_8017B7A8(void); -extern s16 D_801E6D3C; -extern s16 D_801E6D3E; -extern s16 D_801E6D40; -extern s16 D_801E6D44; -extern s16 D_801E6D46; -extern s16 D_801E6D48; -extern void func_8017B824(void); -extern void func_8017B880(void); -extern s32 func_8017B8E8(s32 src); -extern short D_801E6D34; -extern short D_801E6D36; -extern short D_801E6D38; -extern void func_8017B940(void); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void RotTransSV(void *a0, void *a1, void *a2); -extern SV4 D_801E6CCC; -extern SV4 D_801E6CD4; -extern void func_8017BA3C(s32 param_1, s32 param_2); -extern s32 func_8017BB34(s32 param_1, s32 param_2); -extern void (*D_801E6CF4[10])(int); -extern void func_8017BC38(int param_1); -extern void func_8017B0E4(int, int); -extern void func_8017BCA0(int param_1); -extern void func_8012A4BC(void); -extern void func_8017BCF4(int param_1); -extern void (*D_801E6CF0)(void); -extern void func_8017BD50(int param_1); -extern void (*D_80190BF4[])(void); -extern void func_8017BE60(void *a0); -extern void (*D_80190C94[])(void); -extern void func_8017BE9C(void *a0); -extern void (*D_80190C9C[])(void); -extern void func_8017BED8(void *a0); -extern void (*D_80190CA4[])(void); -extern void func_8017BF14(void *a0); -extern u8 *func_8012913C(s32 a0); -extern s32 func_8012C750(s32 a0); -extern void func_8017BF50(s32 a0); -extern void func_8017C094(void); -extern void func_8017C100(s32 param_1); -extern void func_8017C1AC(s32 param_1); -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8012A828(s32*, s32); -extern void func_8012B260(u8 *a0); -extern void func_8017C1EC(s32 a0); -extern void func_8017C2B0(s32 a0); -extern void (*D_80190CC4[])(void); -extern void func_8017C338(void *a0); -extern s32 func_800D222C(s32 a0, void *a1, s32 a2); -extern s32 func_8001CF30(void *a0); -extern void func_8017C374(s32 param_1); -extern void func_8017C538(u8 *p); -extern void (*D_80190CCC[])(void); -extern void func_8017C5CC(void *a0); -extern u8 D_80190CB8; -extern void func_8017C608(s32 a0); -extern void func_8017C6AC(int a0); -extern void func_8017C710(s32 arg0); -extern void (*D_80190CE4[])(void); -extern void func_8017D5F0(void *a0); -extern void func_8001C214(s32, s32); -extern u32 D_80190CD4; -extern void func_8017D62C(s32 arg0); -extern void func_8017D6A8(void); -extern void (*D_80190D1C[])(void); -extern void func_8017D6B0(s32 *param_1); -extern void func_8017DA08(void *arg0); -extern s32 func_8012AD50(void *arg0); -extern void func_8017D6EC(void *arg0); -extern void func_8012AD44(s32 *a0, s16 a1); -extern void func_8017D9B8(void); -extern void func_8017DAC4(void *arg0); -extern void aF8017D77C(); -extern void func_80017714(void *); -extern u32 D_801E6FE8; -extern u16 D_80190D24[]; -extern u16 D_801E6FEC[]; -extern s32 D_80190D44; -extern void func_8017DC0C(void); -extern void func_8017E038(void *arg0); -extern s32 func_8017DC98(s32 param_1); -extern s32 func_8017DCE8(void); -extern void func_800D1E28(void); -extern s32 func_800D1D94(void); -extern void func_8001BFD0(void); -extern s32 func_8017DD7C(s32 a0); -extern void func_800D1EBC(void); -extern void func_8017DE2C(void); -extern s32 func_8017DE4C(void *a0); -extern void (*D_80190D64[])(void); -extern void func_8017DF34(void *a0); -extern void (*D_80190D6C[])(void); -extern void func_8017DF70(void *a0); -extern void (*D_80190D78[])(void); -extern void func_8017DFAC(void *a0); -extern void (*D_80190D84[])(void); -extern void func_8017DFE8(void *a0); -extern s32 D_80127050; -extern void func_8017E024(void); -extern void (*D_80191060[])(void); -extern void func_8017E038(void *a0); -extern void func_8017E074(void *a0); -extern void func_8017E088(void *a0); -extern void (*D_80191068[])(void); -extern void func_8017E0C0(void *a0); -extern void func_8017E0FC(u8 *a0); -extern void func_8017E110(void); -extern void func_8012A094(s32 a0); -extern void func_8017E1F4(void *a0); -extern void func_8017E130(void); -extern void (*D_80191070[])(void); -extern void func_8017E26C(s32 *a0, s32 a1); -extern void func_8017E3AC(s32 a0); -extern void func_8017E230(s32 *a0); -extern void func_8017E264(void *a0); -extern void aF8017E26C(); -extern s32 func_80012ABC(s32 a0, s32 a1, s32 a2); -extern void func_8017E3AC(s32 param_1); -extern void func_80184CB8(s32*, s32); -extern void func_8017E5A0(void * arg0); -extern void (*D_801912A8[])(void); -extern void func_8017E760(void *a0); -extern void func_8012A828(s32 *a0, s32 a1); -extern void func_8017E79C(short *a0); -extern void (*D_801912C8[])(void); -extern void func_8017E810(void *a0); -extern void func_80178CBC(s32 a0, s32 a1); -extern void func_8017E84C(void * arg0); -extern void func_8017E878(void * arg0); -extern void func_8012C588(s32, s32); -extern void func_8017E99C(void); -extern s32 func_80184BAC(s32 arg0, s32 arg1); -extern void func_8017E5A0(void *arg0); -extern void func_8017E9C0(void *arg0); -extern void func_8017EAAC(void * arg0); -extern s32 func_8012BEE8(s32 a0); -extern void func_8017E79C(short*); -extern void func_8017EBA0(s32 a0); -extern void func_8017E7CC(); -extern void func_8017EBE0(u8 *a0); -extern void func_8017F02C(void * arg0); -extern void (*D_8019155C[])(void); -extern void func_8017F058(void *a0); -extern void func_8017F094(void * arg0); -extern s32 func_8017F0C0(void); -extern void func_80029124(s32 arg0, s32 arg1); -extern void func_8017F108(void); -extern void func_80029514(int); -extern void func_8017F1A8(void); -extern void func_8017F28C(void * arg0); -extern void (*D_801916E4[])(void); -extern void func_8017F5BC(void *a0); -extern void func_80178CBC(s32, s32); -extern void func_8017F5F8(void *a0); -extern void func_8017F6D8(void *a0); -extern void func_8017F7B8(void *a0); -extern void func_8017F898(void *a0); -extern void func_80029124(s32 a, s32 b); -extern void func_8017FA34(void); -extern void func_8017FCD8(void * arg0); -extern void (*D_80191814[])(void); -extern void func_8017FF34(void *a0); -extern void (*D_801918E4[])(void); -extern void func_801800E0(void *a0); -extern s32 func_8018011C(void); -extern void func_8018015C(void); -extern void func_80180164(void * arg0); -extern void func_8012E8E0(s32, s32); -extern void func_8012E88C(s32); -extern void func_8012A828(s32 *a0, s32 a1); /* fleet-canonical sig (TU L3775) */ -extern void func_80184C90(s32); -extern void func_80184ED4(s32, s32, s32, s32); -extern void func_8018034C(void *arg0); -extern void (*D_801919C4[])(void); -extern void func_8018048C(void *a0); -extern s32 func_80184DD0(s32 a0); -extern void func_80180504(s32 a0); -extern s32 func_80180544(void); -extern void func_80180580(void *arg0); -extern s32 func_8012BD14(s32 a0); -extern s32 func_80180814(void *a0); -extern void func_80180888(void *arg0); -extern void func_8012E88C(s32 a0); -extern void func_80184C90(s32 a0); -extern void func_801808FC(void *a0); -extern void func_80184CB8(s32 *a0, s32 a1); -extern void func_801809DC(short *a0); -extern void (*D_80191A80[])(void); -extern void func_80180B6C(void *a0); -extern void func_80180C0C(void * arg0); -extern s32 func_801848DC(void); -extern s32 func_8018625C(void *); -extern s32 func_80178BF8(void); -extern s32 func_80180CC0(void *a0); -extern s32 func_80178BF8(); /* TU-canonical (ov_SC04_018_jr_8017AE2C.c L2541) */ -extern s32 func_80180D38(void *a0); -extern s32 func_80185BE0(s32 a0); -extern s32 func_80184FA4(void); -extern void func_80180EE8(void *a0); -extern void func_80181020(void *a0); -extern void func_80181244(short *param); -extern void func_801812D0(short *a0); -extern void (*D_80191B20[])(void); -extern void func_801812FC(void *a0); -extern void func_80181338(short *param); -extern void func_80181364(s32 a0); -extern void func_80181474(void * arg0); -extern s32 func_80181564(void *a0); -extern void func_8018170C(void * arg0); -extern void func_8018178C(void * arg0); -extern void (*D_80191BDC[])(void); -extern void func_80181924(void *a0); -extern s32 D_801D7598; -extern s32 D_801D2200; -extern void func_80181998(void); -extern s32 D_801E7018; -extern void func_801819B0(void); -extern void func_8012A828(s32 *, s32); -extern void func_801819C8(void *arg0); -extern void func_80181A28(s32 a0); -extern void func_801815DC(void *arg0); -extern void func_80181A68(void *arg0); -extern void func_801816A8(void *arg0); -extern void func_80181B34(void *arg0); -extern void func_80184ED4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_8018170C(void *a0); -extern void func_80181BEC(void *arg0); -extern void func_80181738(void *arg0); -extern void func_80181C78(void *arg0); -extern void func_801817B8(void *arg0); -extern void func_80181DC4(void *arg0); -extern s32 func_80181EFC(void *a0); -extern void func_80181F70(void *arg0); -extern void func_80181FE4(void *a0); -extern void func_801821A8(void * arg0); -extern void (*D_80191EE4[])(void); -extern void func_8018233C(s32 *param_1); -extern void func_80182490(void * arg0); -extern s32 func_80182544(void *a0); -extern s32 func_801825BC(void *a0); -extern void func_8018276C(void *a0); -extern void func_801828B0(void *a0); -extern void func_801821A8(void *a0); -extern void func_80182920(void *arg0); -extern void func_80182ACC(void * arg0); -extern void func_80182B58(void *arg0); -extern void func_80182BCC(void *a0); -extern void (*D_80192014[])(void); -extern void func_80182C98(void *a0); -extern s32 D_801D7E84; -extern void func_80182D0C(void); -extern void func_80182D24(void *arg0); -extern void func_80182D84(s32 a0); -extern s32 func_80182DC4(void); -extern void func_80182E00(void *arg0); -extern void func_80182C24(void *arg0); -extern void func_80182ED8(void *arg0); -extern void func_80182F18(void *a0); -extern void func_801831AC(short *a0); -extern void func_8018330C(void * arg0); -extern void (*D_8019211C[])(void); -extern void func_80183438(void *a0); -extern void func_80183474(short *a0); -extern void func_801834A0(void * arg0); -extern void func_801834CC(short *a0); -extern void func_801834F8(s32 a0); -extern void func_80183538(s32 a0); -extern void func_801831AC(short*); -extern void func_80183674(void *arg0); -extern void func_801831D8(s32 *a0); -extern void func_801836C0(s32 *a0); -extern void func_8018370C(void * arg0); -extern void func_80183938(void *arg0); -extern void (*D_80192230[])(void); -extern void func_80183A68(void *a0); -extern void func_80183AA4(void * arg0); -extern void func_80183AD0(s32 a0); -extern s32 func_80183B10(void); -extern void func_80183B4C(void *arg0); -extern void func_80183B8C(s32 param_1); -extern s32 func_80183D80(void *a0); -extern void func_80183DF4(void * arg0); -extern void (*D_80192414[])(void); -extern void func_80184130(void *a0); -extern void func_8018416C(s32 a0); -extern void func_801841AC(s32 a0); -extern void func_801841EC(s32 a0); -extern s32 func_8018422C(void); -extern void func_80184268(short *a0); -extern void func_80184298(short *a0); -extern void func_801842C8(short *a0); -extern s16 D_801923A4; -extern void func_801842F8(void *arg0); -extern void func_80183FA8(s32 *a0); -extern void func_80184328(s32 *a0); -extern void func_80183DF4(void*); -extern void func_801843C4(s32 *a0); -extern void func_80183E20(void *arg0); -extern void func_80184460(void *arg0); -extern void func_8018479C(void *a0); -extern void func_801847AC(void *a0); -extern s32 func_8012E57C(s32 a0, s32 a1); -extern s32 func_801847BC(void *a0, void *a1); -extern void func_80184858(void *a0); -extern void func_80184884(void *a0); -extern void func_801848B0(void *a0); -extern s32 func_80184B04(s32 arg0); -extern s32 func_80184960(s32 a0); -extern s32 func_80184960(s32 arg); -extern void func_80184A90(u8 *a0); -extern void func_80184AC4(void *a0); -extern short D_800BA2BA; -extern void (*D_801B8720[])(void); -extern void func_80184B2C(void *a0); -extern void func_80184B68(void); -extern void func_80184B70(void *a0, s32 a1, s32 a2); -extern s32 func_80184BD0(u8 a0, u8 a1, u8 a2, u8 a3); -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); -extern void func_80184C28(void *a0, s32 a1); -extern void func_80184CB0(void *a0); -extern void func_8012E8A8(u8 *a0); -extern s32 func_80184D00(void); -extern s32 func_80184D5C(void); -extern s32 aF80184DD0(); -extern s32 func_80184E44(void); -extern void func_80184EA0(void); -extern void func_8012B200(u8 *a0); -extern s32 aF80184FA4(); -extern s32 func_8018516C(s32 a0); -extern void (*D_801B8740[])(void); -extern void func_801851B4(void *a0); -extern void func_801851F0(void); -extern void func_801851F8(void); -extern void func_80185200(void); -extern void func_80185208(void); -extern void func_80185210(void); -extern void func_80185218(void *a0); -extern void func_8018525C(void); -extern void func_8001D0E8(s32 arg0, s32 arg1, s32 arg2); -extern void func_80185264(s32 a0); -extern void func_80185978(s32 a0); -extern void func_80185904(s32 a0); -extern void func_801859D8(s32 a0); -extern void func_8018589C(s32 a0); -extern void func_801852EC(s32 a0); -extern void func_8001C97C(s32 a0); -extern void *func_80185C6C(void *a0); -extern void func_801854C4(s32 a0); -extern void func_80185D70(void *a0); -extern void func_80185664(void *a0); -extern void func_8012E688(s32 param_1, u16 param_2, u16 param_3); -extern void func_80185EEC(void); -extern void func_801856E0(s32 a0); -extern void func_801857AC(void); -extern void func_801857CC(s32 a0); -extern s16 D_801B8788[]; -extern s32 D_801B8748[][2]; -extern void func_80185A58(s32 a0, s32 a1); -extern void func_8018602C(s32 a0, s32 a1); -extern void func_80185AB0(s32 a0); -extern void func_80185B10(s32 a0); -extern void func_80185B58(s32 a0); -extern void func_80185BA8(s32 a0); -extern s32 func_80185D10(void *a0); -extern s32 func_801862A8(void *a0); -extern void * func_80185C6C(void *a0); -extern void func_80185F20(void *a0); -extern void aF80185EEC(); -extern void func_80185F54(void *a0, s32 a1, s32 a2); -extern void func_80185FB8(s32 a0, s32 a1, s32 a2); -extern void (*D_801B8A3C[])(void); -extern void func_80186084(void *a0); -extern void func_801860C0(void *a0); -extern void func_8018613C(void *a0); -extern s32 func_801863B4(s32 a0); -extern void func_8012F2E8(s32 a0, s32 a1, s32 a2); -extern s32 func_8012CB64(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_8012F214(s32 arg0, s32 arg1, s32 arg2); -extern void func_80186410(void); -extern s16 func_80186450(void); -extern void func_80029444(void); -extern void func_801754A8(void); -extern void func_80141C04(void); -extern void func_801864AC(void); -extern u8 D_801151C8[]; -extern u16 D_80115112; -extern u8 D_80115138[]; -extern u8 D_80115148[]; -extern s32 D_80115130; -extern u8 D_800B9A15; -extern s16 D_801E7708; -extern s32 D_801E7700; -extern s32 D_801E7704; -extern s16 D_801E7790; -extern s16 D_801E7798; -extern s16 D_801E779C; -extern s16 D_801E77A0; -extern s16 D_801E77A4; -extern s16 D_801E77A8; -extern s16 D_801E77AC; -extern s32 D_801E7778; -extern s16 D_801E7030; -extern s32 D_801EC928; -extern s32 D_801E930C; -extern s32 D_801E9968; -extern s32 D_801B9410; -extern u8 D_801B94A4[]; -extern s32 D_801B946C[]; -extern s32 resLoad_lastId; -extern s32 func_800149E0(s32 a0); -extern void func_80137B80(void); -extern s32 func_801376E8(s32 a0, s32 a1); -extern void func_80139954(void); -extern void func_80139A68(s32 a0, u16 a1); -extern s16 func_8014168C(s16 a0); -extern void func_80188778(void); -extern s32 func_80189540(s32 a0, s16 a1); -extern s16 func_80189E54(s32 a0); -extern void func_801878E8(void); -extern void func_801EA0E4(s32 a0); -extern void func_80189EA0(void); -extern void func_801880EC(void); -extern s32 func_80188428(void); -extern void func_80024054(void *a0, void *a1); -extern s32 *func_800D2650(s32 *, void *, s32, s32, s32, s32); -extern s32 func_800D27DC(s32, s32 *, void *, s32, s32); -extern s32 *func_800D29F8(s32, s32, void *, s32, s32); -extern s32 *func_80189214(s32 *, void *, s32, void *, s32); -extern s32 func_80188B84(void *, s32, s32, s32, s32 *); -extern s32 * func_801889B8(s32 *ot, Panel_8017E978_801889B8 *w0, s16 idx); -extern s32 func_80188E1C(s32 param_1, s32 param_2); -extern void func_8012E32C(void); -extern void func_8018A6C8(void *, s32); -extern s32 RotNclip4(s32, s32, s32, s32, s32 *, s32 *, s32 *, s32 *, s32 *, s32 *, s32 *); -extern s32 RotTransPers4(s32, s32, s32, s32, s32 *, s32 *, s32 *, s32 *, s32 *, s32 *); -extern void *func_80010A08(s32); -extern s32 AddPrim(s32, void *); -extern void func_8012E28C(s32, s32); -extern void func_8018A2E0(u16 *a0, s32 a1); -extern void (*D_801E04F0[])(void); -extern void func_8018A740(void *a0); -extern void func_8018A77C(s32 param_1); -extern void (*D_801E051C[])(void); -extern void func_8018A898(void *a0); -extern void (*D_801E0524[])(void); -extern void func_8018A8D4(void *a0); -extern void (*D_801E0534[])(void); -extern void func_8018A910(void *a0); -extern void (*D_801E0544[])(void); -extern void func_8018A94C(void *a0); -extern void func_8018A988(void); -extern void func_8018A990(s32 param_1); -extern void (*D_801E0554[])(void); -extern void func_8018AB3C(void *a0); -extern s32 RotTransPers(s32, s32, s32 *, s32 *); -extern void func_8018AB78(void); -extern s32 D_801E01F0; -extern s32 D_801E7980; -extern void func_8018A168(s32 arg0, s32 arg1); -extern void func_8018ACD4(void); -extern s32 D_801E0228; -extern void func_8018AD08(void); -extern s32 D_801E0260; -extern void func_8018AD3C(void); -extern s32 D_801E0288; -extern void func_8018AD70(void); -extern s32 D_801E02C0; -extern void func_8018ADA4(void); -extern s32 D_801E0338; -extern void func_8018AE4C(void); -extern s32 func_8018AE80(void); -extern s32 D_801E0390; -extern void func_8018AECC(void); -extern s32 D_801E03E0; -extern void func_8018AF00(void); -extern s32 D_801E0440; -extern void func_8018AF34(void); -extern s32 func_8018AF68(void); -extern s32 D_801E0488; -extern void func_8018AFB4(void); -extern s32 func_8018AFE8(void); -extern void func_8012C194(void); -extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3); -extern void func_8018B19C(u8 *arg0); -extern void func_8012B414(int a0); -extern void func_8018B354(s32 arg0); -extern void func_8018B564(void *a0); -extern void (*D_801E056C[])(void); -extern void func_8018B570(void *a0); -extern void func_8018B6A0(void *a0); -extern void func_8018B6E8(s32 *a0); -extern void (*D_801E0580[])(void); -extern void func_8018B6F4(void *a0); -extern void func_8018B868(void *a0); -extern void (*D_801E0594[])(void); -extern void func_8018B874(void *a0); -extern void func_8018B9D0(void *a0); -extern void (*D_801E05A8[])(void); -extern void func_8018B9DC(void *a0); -extern void (*D_801E05B4[])(void); -extern void func_8018BC3C(void *a0); -extern void (*D_801E05BC[])(void); -extern void func_8018BD58(void *a0); -extern void func_8018BD94(void *a0); -extern void func_8018BDE0(void * arg0); -extern void func_8018BE0C(void * arg0); -extern void (*D_801E0690[])(void); -extern void func_8018BE38(void *a0); -extern s32 func_8018BEE8(void); -extern void func_8018BF08(void); -extern void func_8018BF34(short *a0); -extern void func_8018C24C(void * arg0); -extern void (*D_801E077C[])(void); -extern void func_8018C368(void *a0); -extern void func_8018C3A4(void * arg0); -extern s32 func_800D0EC4(); -extern s32 func_8018C3D0(void); -extern void func_8018C518(void *a0); -extern void func_8018C5AC(void * arg0); -extern void (*D_801E3AF4[])(void); -extern void func_8018C5FC(void *a0); -extern s32 func_8012C354(s32 a0, s32 a1); -extern s32 func_8018C730(); -extern void func_8018C638(s32 a0); -extern void func_8018C69C(void); -extern void func_8018C6A4(s32 *a0); -extern void func_8018C6F0(s32 a0); -extern void (*D_801E3BA4[])(void); -extern void func_8018C78C(void *a0); -extern s32 func_8018C8A8(void); -extern void func_8012B2CC(s32 arg); -extern void func_8018C90C(void *a0); -extern void func_8018CB18(void); -extern void func_8018C96C(void *arg0); -extern void (*D_801E3CEC[])(void); -extern void func_8018CADC(void *a0); -extern s32 func_80178BF8(); /* TU-canonical (ov_SC04_018_jr_8017AE2C.c L2539) */ -extern void func_80172710(void); /* TU-canonical (ov_SC04_018_jr_8017AE2C.c L2231) */ -extern s32 aF8018CB18(); -extern void func_8018CB94(void *a0); -extern s32 func_8018CC04(void); -extern void func_8002D4C8(s32 arg0, s32 arg1); -extern void func_8018CC1C(void); -/* ==== end §8b carried decl layer ==== */ - - -extern int func_80178970(void); -extern void func_80178D18(void); - -/* ov_SC04_018 :: func_8018CC40 — actor state machine, jump-table switch on the - * u16 state word at +0x34. Jump table = jtbl_801E59F8 (6 entries, index 0..5). - * - * KEY IDIOM (the whole crack): the table is indexed from ZERO — the target does - * lhu $v1,0x34($s0) ; sltiu $v0,$v1,6 ; sll $v0,$v1,2 - * with NO `addiu $v1,$v1,-1`. gcc-2.7.2 sets minval = the LOWEST case label, so - * a switch whose cases are 1..5 emits the subtract and `sltiu ...,5` (78 ins, - * every later index shifted by one). Writing an explicit empty `case 0: break;` - * pulls minval down to 0, kills the subtract, and gcc's jump optimizer threads - * case 0's empty body straight onto the epilogue — which is exactly what the real - * jtbl shows (entry[0] = 0x8018CD60 = the function end, entries[1..5] = the five - * real case bodies). 77 ins, byte-exact. - * - * The callees are the loose/unprototyped engine helpers: func_80178970 and - * func_80178D18 are defined `(void)` in this overlay, but every caller in this TU - * passes the actor pointer in $a0 anyway (K&R decls in the original source), so - * they are declared here with empty parameter lists and CALLED with a0. - */ - -extern s32 func_800D0F8C(s32); -extern void func_80178CBC(); -extern void func_8018C90C(); -extern u8 D_801E3C2C[]; -extern u8 D_801E3C44[]; - -void func_8018CC40(void *a0) -{ - s32 *p; - s32 t; - - switch (*(u16 *)((char *)a0 + 0x34)) { - case 0: - break; - case 1: - if (func_800D0F8C(0x59) == 0) { - func_80178CBC(a0, D_801E3C2C); - *(u16 *)((char *)a0 + 0x34) = 2; - } else { - func_80178CBC(a0, D_801E3C44); - *(u16 *)((char *)a0 + 0x34) = 3; - } - break; - case 2: - if (((s32 (*)(s32))func_80178970)(a0) != 0) { - ((void (*)(s32))func_80178D18)(a0); - *(u16 *)((char *)a0 + 0x2) = 1; - *(u16 *)((char *)a0 + 0x34) = 0; - } - break; - case 3: - ((s32 (*)(s32))func_80178970)(a0); - *(s32 *)((char *)a0 + 0x1C) = 0; - break; - case 4: - ((s32 (*)(s32))func_80178970)(a0); - p = *(s32 **)((char *)a0 + 0x20); - *(u16 *)((char *)p + 0x12) = *(u16 *)((char *)p + 0x12) - 0x20; - t = *(s32 *)((char *)a0 + 0x1C) + 1; - *(s32 *)((char *)a0 + 0x1C) = t; - if (t >= 0x30) { - *(u16 *)((char *)a0 + 0x34) = 5; - } - break; - case 5: - if (((s32 (*)(s32))func_80178970)(a0) != 0) { - ((void (*)(s32))func_80178D18)(a0); - func_8018C90C(a0); - } - break; - } -} - - -extern s32 func_8012BEE8(s32 a0); -extern void func_8018C93C(void *a0); - -void func_8018CD74(void *a0) { - u16 v1; - - v1 = *(u16 *)((char *)a0 + 0x34); - if (v1 == 0) { - return; - } - if (v1 != 1) { - return; - } - { - u16 *p = (u16 *)*(s32 *)((char *)a0 + 0x20); - - *(u16 *)((char *)p + 0x12) = *(u16 *)((char *)p + 0x12) + 0x20; - if (((s32 (*)(void))func_8012BEE8)()) { - func_8018C93C(a0); - } - } -} - - -DEFINE_func_8018CDDC() /* dedup: shared engine-core @0x8018CDDC (src/shared) */ - -DEFINE_func_8018CDE4() /* dedup: shared engine-core @0x8018CDE4 (src/shared) */ - -extern void func_80029124(s32, s32); -extern s32 func_800291B4(s32 arg); -extern s32 func_800D0FE0(s32); -extern void func_800D0F0C(s32, s32); - -extern s16 D_8010EDEC; -extern u8 D_8010EDF1; -extern s32 D_801E3D60; -extern u32 D_801E3D74; -extern s32 D_801E3EA4; - -typedef struct { - s16 unk00; /* 0x00 */ - s16 pad02; /* 0x02 */ - s32 unk04; /* 0x04 */ - s32 unk08; /* 0x08 */ - s32 unk0C; /* 0x0C */ -} Struct801E79D8; - -extern Struct801E79D8 D_801E79D8; - -void func_8018CDEC(void) { - s16 i; - - D_801E79D8.unk00 = 0; - for (i = 0; i < 0xC; i++) { - s32 slot = i + 0x2F; - s32 id = func_800291B4(slot) & 0xFF; - if (id != 0) { - register s32 tmp __asm__("$2"); - register s32 t __asm__("$5"); - register s32 rb __asm__("$6"); - s16 flags; - s32 m; - tmp = (id << 1) + id; - t = tmp << 2; - flags = *(s16 *)((u8 *)&D_8010EDEC + t); - if (flags < 0) { - rb = *(u8 *)((u8 *)&D_8010EDF1 + t); - m = rb & 0xFF; - if (flags & 0x4000) { - D_801E79D8.unk08 = (&D_801E3D60)[id]; - D_801E79D8.unk0C = (&D_801E3D74)[id]; - func_80029124(m, 1); - func_800D0FE0(slot); - D_801E79D8.unk00 = 2; - return; - } else { - register s32 sc __asm__("$4"); - register s32 d __asm__("$2"); - sc = slot; - __asm__("" : "=r"(sc) : "0"(sc)); - d = rb - 0x14; - __asm__("" : "=r"(d) : "0"(d)); - D_801E79D8.unk04 = (&D_801E3EA4)[d >> 1]; - ((void (*)(s32))func_800D0F0C)(sc); - D_801E79D8.unk00 = 1; - return; - } - } - } - } -} - - - - - - - - diff --git a/src/ov_SC04_019/ov_SC04_019_o0b.c b/src/ov_SC04_019/ov_SC04_019_o0b.c deleted file mode 100644 index 13967115d..000000000 --- a/src/ov_SC04_019/ov_SC04_019_o0b.c +++ /dev/null @@ -1,30 +0,0 @@ -#include "common.h" -#include "../shared/func_80144B9C.h" - - -/* func_801457A4 @ 0x801457A4 — an -O0 function stranded at the whale's end boundary (it is the - * FIRST fn of the -O2 "after" segment, but its target is -O0: frame-pointer + per-case stack - * reloads). It can only bank in an -O0 object, so it lives here: _o0b is already -O0-compiled and - * its .text ends exactly at 0x801457A4 (right after func_80144B9C), placing this fn at its true - * address with no linker/Makefile change. Its stub was removed from ov_SC01_077_after.c. Def sig - * conformed byte-neutrally to func_80144B9C.h's decl `void *func_801457A4(s32)` (the whale calls it - * that way); byte-proven at -O0 (match_one --o0 79/79) and by the whole-binary gate. Phase-29 bank. */ -extern int D_8018CF28; - -void *func_801457A4(s32 param_1) { - switch (param_1) { - case 0x1010: - case 0x1052: - case 0x1077: - case 0x1094: - case 0x2013: - case 0x2015 ... 0x201a: - case 0x2055 ... 0x205b: - case 0x207a ... 0x2080: - case 0x2097 ... 0x209d: - return (void *)(&D_8018CF28)[param_1 & 0xffff0fff]; - default: - return (void *)D_8018CF28; - break; - } -} diff --git a/src/ov_SC04_019/ov_SC04_019_o0c.c b/src/ov_SC04_019/ov_SC04_019_o0c.c deleted file mode 100644 index 9e44d6fbb..000000000 --- a/src/ov_SC04_019/ov_SC04_019_o0c.c +++ /dev/null @@ -1,1154 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -extern void func_80128288(void); -extern void func_80128158(void); -extern void func_801285E4(void); -extern void func_80128178(void); -extern void func_80128678(void); -extern void func_80128198(void); -extern void func_80128714(void); -extern void func_801281B8(void); -extern void func_8013E67C(void); -extern void func_801281D8(void); -extern void func_8013E558(void); -extern void func_801281F8(void); -extern s32 D_801E4434; -extern s32 func_80128218(void); -extern void func_80128A28(void); -extern void func_80128228(void); -extern void func_80128AF4(void); -extern void func_80128248(void); -extern void func_801282EC(void); -extern void func_80128268(void); -extern u16 D_800B99F6; -extern void (*D_8018D4AC[])(void); -extern void func_80011B7C(int); -extern void func_801282CC(void); -extern void func_8001C0C8(void); -extern void func_80015310(void); -extern void func_80129258(void); -extern void func_801378F0(void); -extern void func_80010E14(void); -extern s16 currentLocationId; -extern s32 func_80029504(void); -extern s32 func_800CF854(s32); -extern s32 func_80128998(void); -extern s32 func_801289F0(void); -extern s32 func_801288E8(s32); -extern s32 func_80128940(s32); -extern s32 func_80029178(s32); -extern s32 func_801288B0(void); -extern void func_80011C10(void); -extern void func_8012832C(void); -extern void func_80129220(void); -extern void func_80011E24(void); -extern void func_80128C14(void); -extern void func_8002AEF8(void); -extern void func_800CFBBC(void); -extern void SsUtReverbOff(void); -extern void func_8013C98C(void); -extern void func_80129C40(s32 a0); -extern void func_800D0630(void); -extern void func_80145CEC(void); -extern void func_80144B9C(void); -extern u8 D_800B9A17; -extern u8 D_800B9A10; -extern void func_80128420(void); -extern s32 func_800D0588(void); -extern void func_801284B8(void); -extern void func_80175308(void); -extern void func_8016E8F0(void); -extern void func_80175494(void); -extern u8 D_800B9A64; -extern void func_801284F0(void); -extern void func_80146074(void); -extern void func_8012853C(void); -extern void func_80178608(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern s32 func_80011A3C(void); -extern short currentLocationId; -extern short D_800B99F2; -extern void func_80128564(void); -extern u8 D_800B9A11; -extern void func_801285D4(void); -extern s32 func_800D18DC(void); -extern void func_8014607C(void); -extern void func_801287B8(void); -extern s32 D_801E5A14; -extern void func_80029444(void); -extern void func_800D1754(void); -extern s32 D_80126B58; -extern u16 D_800B99DA; -extern void func_80129CF8(void); -extern void func_8017849C(void); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_801505FC(s32 a0); -extern void func_801508B4(void *a0); -extern void func_80165E90(void); -extern void func_801627E8(void); -extern void func_80162B1C(void); -extern void func_80165CA0(void); -extern void func_80129010(void); -extern void func_8013CA14(void); -extern void func_800190AC(void); -extern void func_8012956C(void); -extern void func_8016E95C(void); -extern void func_801754A8(void); -extern void func_8013BC7C(void *arg0); -extern void func_8013BCDC(void); -extern void func_801379FC(void); -extern void func_8001212C(void); -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); -extern u8 D_800AEFD0; -extern int D_800C7C60; -extern int *D_800C7C64; -extern int D_800A2E20; -extern int D_800AF558; -extern int D_801E4434; -extern int func_801288E8(int arg0); -extern u8 D_800AF560; -extern s32 func_80128940(s32 _arg0); -extern int D_800AECB0; -extern u8 D_800AECB8; -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4); -extern s16 D_800B9A00; -extern M2C_UNK (*D_8018D1E0)(); -extern s16 (*D_8018D1E4)(); -extern M2C_UNK (*D_8018D1EC)(); -extern s32 (*D_8018D1F0)(); -extern s32 D_801E5A10; -extern void func_80010AE0(s32 a0); -extern void func_80018450(s32 a0, s32 a1); -extern void func_800183E0(s32 a0); -extern void func_80128D60(s32 a0, s32 *a1, s32 *a2); -extern s32 func_80128DB4(s32 a0, s32 *a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern M2C_UNK D_801E4438; -extern void func_80128FAC(u16 *arg0); -extern s16 D_8011DB2C; -extern s16 D_8011DB30; -extern s32 D_80126AEC; -extern u8 *func_8012913C(s32 a0); -extern u8 * func_801290DC(s32 a0, u8 *a1); -extern void func_8001D074(s32 a, s32 b); -extern u8 *func_801291C0(void); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 * func_8012913C(s32 arg0); -extern void func_80016714(void *a0, s32 a1); -extern u8 * func_801291C0(void); -extern void func_80129248(s16 a0); -extern void func_801292C8(u8 *a0); -extern void func_8012927C(void); -extern void func_8012931C(struct vec *a0); -extern void func_80129350(s32 a0, s32 a1); -extern void func_80129374(s32 a0, s32 a1); -extern s16 D_800B9AAC[]; -extern s16 D_800B9AAE[]; -extern s16 D_800B9AB0[]; -extern s16 D_800B9AB2[]; -extern s16 D_800B9AB4[]; -extern s16 D_800B9AB6[]; -extern s16 D_800B9AB8[]; -extern s16 D_800B9ABA[]; -extern void func_80129398(void); -extern s16 D_80114EE0; -extern void func_80129428(void); -extern void func_8012943C(void); -extern s32 D_8005128C; -extern u8 D_800B9A78; -extern void func_801298F4(void *arg0); -extern void func_801299C8(s32 a, s32 b, s32 c); -extern void func_8012944C(void); -extern unsigned short D_800B99F0; -extern void func_8012A328(void); -extern void func_80053308(s32); -extern s32 func_80012F74(s32, s32, s32, s32); /* canonical s32 (engine_core); (s16)-cast the return for the sll/sra */ -extern void GsSetRefView2L(void *); -extern s8 D_801150D6; /* canonical (engine_core macro): s8 — access via *(u8*)& for lbu */ -extern u8 D_80127504; -extern s32 D_80126E60[]; -extern s32 D_80126F04[]; -extern u8 D_80126948[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_80126FA8[]; -extern u8 D_800AF630[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_800AE688[]; -extern s32 D_801151D4; /* canonical (10 siblings): scalar s32 — store (s32)ptr */ -extern void func_8012A018(s32 a, s32 b); -extern void func_80129FF4(void); -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_80126940; -extern s16 D_80126942; -extern s16 D_80126944; -extern void func_8012A048(void *a0, s32 a1, u8 a2); -extern void *memcpy(void *, const void *, unsigned int); -extern void func_8012A094(s32 a0); -extern void func_8012A100(s8 a0); -extern void func_8012A0E0(void); -extern s8 D_801150D6; -extern s32 D_80120204; -extern s32 D_80120200; -extern s32 D_8012020C; -extern s32 D_80120208; -extern s16 D_80120218; -extern s16 D_80120210; -extern s16 D_8012021A; -extern s16 D_80120212; -extern s16 D_8012021C; -extern s16 D_80120214; -extern s16 D_80120226; -extern s16 D_80120220; -extern s16 D_80120228; -extern s16 D_80120222; -extern s16 D_8012022A; -extern s16 D_80120224; -extern s32 D_80120294; -extern s16 D_80120298; -extern s16 D_8012029A; -extern void func_8012A110(void); -extern s8 D_801152C0; -extern void func_8012A2F4(void); -extern s16 D_80127080; -extern s16 D_801152C2; -extern void func_8012A304(s32 a0, s32 a1); -extern s32 D_801151D4; -extern void func_8012A4BC(void); -extern void func_8012A598(void *a0); -extern void func_8012A568(void (*a0)(void)); -extern void func_8012A62C(s32); -extern void func_8012A5F8(void (*a0)(void), s32 a1); -extern void func_8012A62C(s32 a0); -extern void func_8012A7D4(void *a0, void *a1); -extern s32 func_8012A6D0(void *a0, void *a1); -extern s16 func_8012A68C(void); -extern s16 func_8012A79C(s16 *a0, s16 *a1); -extern s16 func_8012A758(void); -extern s32 ratan2(s32 a0, s32 a1); -extern void func_8012A7D4(void *arg0, void *arg1); -extern void func_8012AAAC(); -extern void func_8012A828(s32 a0, void * a1); -extern int func_8012ACE0(void *a0); -extern void func_8012A860(void *a0, int a1); -extern void func_8012A8B0(u8 *a0, s32 a1); -extern void func_8012A8E8(void); -extern u8 D_801202A0[]; -extern u16 D_801270C0; -extern void func_8012A988(u8 *a0); -extern void func_8012A908(void); -extern s32 func_8012ACE0(void *a0); -extern M2C_UNK D_8018D540; -extern void func_8012ACA0(void *arg0); -extern s32 func_8012ACE0(void *o); -extern void func_8012AD44(s32 *a0, s16 a1); -extern s32 func_8012AD50(void * arg0); -extern void func_8012AD64(s32 *a0, s16 a1); -extern void func_8012AD6C(void *a0); -extern void func_8012AD80(s32 a0); -extern void func_8012ADE4(u8 *a0); -extern s32 *D_80126B78; -extern s32 *D_80126B90; -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80013478(s32 a0, s32 a1); -extern s32 func_8012AE00(s32 a0); -extern s32 func_8012AF0C(s32 a0, s32 a1); -extern s32 func_80134510(s32 arg); -extern s32 func_8012B030(u8 *a0); -extern int func_80047948(int a0); -extern int func_8004787C(int a0); -extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_8012B14C(s32 a0, s32 a1); -extern void func_8012B178(s32 a0, s32 a1); -extern void func_8012B1B4(s32 a0, s32 a1); -extern void func_8012B200(u8 *a0); -extern void func_8012B21C(void *a0); -extern void func_8012B23C(s32 a0); -extern void func_8012B260(u8 *a0); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern void RotMatrixYXZ(void *m, void *p); -extern void func_8012B370(int a0); -extern void func_8004978C(s16 *a0, void *a1); -extern void func_8012B414(int a0); -extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); -extern s32 func_8012B6D4(s16 *a0, s16 *a1); -extern s32 func_8012B70C(s16 *a0, s16 *a1); -extern s32 ratan2(s32 x, s32 y); -extern s32 func_8012B744(void *a0, void *a1); -extern s16 D_80126CB8; -extern s16 D_80126CB4; -extern s32 func_8012B864(s32 a0); -extern s32 func_8012B8A4(s16 *a0); -extern s32 func_8012B8E4(s32 arg0, s32 arg1); -extern s32 func_8012BA10(s32 arg0, s32 arg1); -extern s32 func_8012BB3C(s32 arg0, s32 arg1, u32 arg2, s32 arg3); -extern void Square0(s32 *a0, s32 *a1); -extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1); -extern s16 D_80126CBA; -extern s32 func_8012BCCC(s32 a0); -extern void func_80013350(s32 a0, void *a1); -extern u8 D_80126B5C; -extern void func_8012BD14(s32 a0); -extern s32 func_8012BDBC(s32 a0, s32 a1); -extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2); -extern void func_8012BE98(s32 a0, u16 *a1); -extern void func_8012BE54(s32 a0); -extern s32 func_800132BC(s32 a0, s32 a1); -extern void func_8012BE98(s32 arg0, u16 * arg1); -extern s32 func_8012BEE8(s32 a0); -extern s32 func_8012BF10(s32 a0, s32 a1); -extern void func_8012BF4C(s32 *a0, s32 a1); -extern void func_8012BF54(void *a0); -extern void func_8012BF68(void *a0); -extern s16 D_80126CB0; -extern s32 func_8012BF7C(s16 *a0); -extern s16 D_80126CAC; -extern short D_80126CAE; -extern int func_8012BFA8(short *a0); -extern s32 D_801274D4; -extern s32 D_801274E0; -extern s32 func_8012C044(s32 a0); -extern void func_8012C194(void); -extern void func_8001CFDC(s32 a, s32 b); -extern void func_8012C1B8(void); -extern u8 D_800B3DF0[]; -extern s32 func_8012C1DC(s32 a0); -extern void func_8012C218(void *a0); -extern u8 D_80126720[]; -extern u16 * func_8012C284(u16 *a0); -extern u8 D_80120194[]; -extern s32 func_8012C2D0(void); -extern s32 func_8012C31C(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32 a0, s32 a1); -extern u8 D_80078EAE; -extern s32 func_8012C354(s32 a0, s32 a1); -extern void func_8001C810(s32 a0, s32 a1); -extern s32 func_8012C438(s32 a0, s32 a1); -extern s32 func_8012C890(s32 a0, s32 a1, s32 a2); -extern s32 func_8012C51C(void *a0, s32 a1); -extern s32 func_8012C588(s32 a0, s32 a1); -extern void func_8012C724(s32 a0, s32 a1); -extern s32 func_8012C820(u8 *a0); -extern s32 D_80190A24; -extern s16 D_801270C4; -extern u16 D_801274E4[]; -extern s32 D_8011DB08; -extern s32 func_8012CB64(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); -extern s32 func_8012CC88(s32 a, s32 b, s32 c); -extern u8 D_800D3918[]; -extern void func_8012CBA4(s32 a0); -extern void func_8012CBCC(s32 a0); -extern void func_8012CBF4(s32 a0); -extern void func_8012CC1C(s32 arg0, s32 arg1); -extern void func_8012CC40(s32 arg0, s32 arg1); -extern s32 func_8012CC88(s32 a0, s32 a1, s32 a2); -extern void func_8012CC64(s32 a0, s32 a1); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern s32 func_8012CE2C(s32 a0); -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); -extern void func_8012CFA8(s32 arg0); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_8012D3B4(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012D098(u16 *param_1, u32 param_2); -extern void func_8012D098(); -extern void func_8012D38C(int a0); -extern void func_8012D3AC(void); -extern s32 AddPrim(s32, void *); -extern s32 RotTransPers(s32, s32, s32 *, s32 *); -extern void SetLineF2(void *); -extern void *func_80010A08(s32); -extern void func_8004914C(void *); -extern void func_800491AC(void *); -extern s32 D_800A651C; -extern u8 D_800AF648; -extern s16 D_800B9A02; -extern void func_8012D4B4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_8012D5DC(void); -extern s16 D_80126B98; -extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2); -extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern int func_8012D664(); -extern void func_8012D624(s32 a0); -extern int func_8012D664(int arg0, int arg1, int arg2); -extern s32 func_8012D714(s32 param_1, u32 param_2); -extern void func_8012F568(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void func_8014C978(void); -extern M2C_UNK D_8018D558; -extern M2C_UNK D_8018D560; -extern s32 func_8012DB84(void); -extern s32 func_8012DE2C(s32 a0); -extern s32 func_8012DDA4(void); -extern s32 func_8012DBD0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8012DDA4(); -extern s32 func_8012DF34(s32 a0, s32 a1, s32 a2); -extern s16 D_80126B9A; -extern u8 D_801152A8[]; -extern void func_8012DFBC(void); -extern void func_8012DFCC(void); -extern void func_8012E014(s32 arg0); -extern void func_8012E138(void); -extern void func_8012DFD4(u8 *a0); -extern s32 func_8012E27C(void); -extern void func_8012E284(void); -extern s32 GetTPage(s32, s32, s32, s32); -extern s32 func_8005A600(s32, s32, s32, s32, s32); -extern void func_8012E28C(s32 arg0, s32 arg1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void func_8012E32C(void); -extern s32 func_8012E470(s32 a0); -extern void func_8012E4C8(s32 a0); -extern s32 func_8012E504(s32 a0, s32 a1); -extern s32 func_8012E544(s32 a0); -extern s32 func_8012E57C(s32 a0, s32 a1); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E688(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E88C(u8 *a0); -extern void func_8012E8A8(u8 *a0); -extern void func_8012E8C4(u8 *a0); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8016AA50(int, int); -extern void func_8016B428(int); -extern void func_80019064(void *); -extern int D_8018D568; -extern void func_8012E9C0(int param_1); -extern void func_8012EC04(s32 param_1, s32 param_2, s32 *param_3); -extern s32 func_8002A4FC(s32 a0); -extern s32 func_8012EECC(s32 a0); -extern void func_8012EFB8(s32 a0); -extern void func_8012EF34(s32 a0, s32 a1); -extern void func_8012EF70(s32 a0, s32 a1); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8012F0BC(s32 *a0, s32 *a1, s32 *a2); -extern void RotTransSV(s32 a0, s32 a1, void *a2); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_8012F1A4(s32 *a0, s32 a1, s32 *a2); -extern void func_8012F2E8(s32 a0, s32 a1, s32 a2); -extern s16 D_80126CB6; -extern void func_8012F374(s32 a0, s32 a1); -extern void *memcpy(void *, const void *, u32); -extern u8 D_80126C38; -extern u8 D_80126C40; -extern u16 D_80126B94; -extern u16 D_80126B96; -extern void func_8012F568(s32 param_1, s32 param_2, s32 param_3, s32 param_4, s32 param_5, s32 param_6); -extern void func_80131B14(); -extern void func_80131E00(struct S80131E00 *a0, s32 a1); -extern s32 func_80131A34(s32, s32); -extern void func_80131CA8(int a0, int a1); -extern void func_8012F5F4(s32 arg0); -extern void func_80131C78(s32 a0); -extern void func_8012F68C(s32 arg0); -extern void func_8012F75C(s32 a0); -extern s32 func_8012BEE8(s32); -extern void func_8012F7B4(s32 a0); -extern void func_80131170(); -extern void func_80131CA8(); -extern unsigned char D_8018D584[]; -extern void func_8012F828(int param_1); -extern void func_80131340(s32 a0); -extern void func_8012F87C(s32 a0); -extern void func_80131170(s32 a0, s32 a1, s32 a2); -extern u8 D_8018D590[]; -extern void func_8012F8C8(u8* arg0); -extern void func_8012F91C(s32 a0); -extern s32 func_80131A34(s32 a0, s32 a1); -extern void func_80131CA8(s32 a0, s32 a1); -extern void func_8012F968(s32 param_1); -extern void func_801319E0(s32 a0); -extern s32 func_80143B6C(s32 a0, s32 a1); -extern void func_8012FB54(s32 a0); -extern void func_8012FC30(s32 a0); -extern void func_8012FCA4(int a0); -extern s32 func_8012FCC4(s32 param_1); -extern void func_8012FDA8(int param_1); -extern void func_8012FE70(s32 a0); -extern void func_8012FF00(s32 a0); -extern void func_8012FF4C(s32 a0); -extern void func_80130D48(s32 a0); -extern void func_8012FF98(u8 *a0); -extern s32 func_80131AC8(void *a0); -extern void func_8013001C(void *a0); -extern void func_80130088(void *a0); -extern s32 func_8012BCCC(s32); -extern void func_801300F4(s32 a0); -extern void func_801301E8(u8 *a0); -extern void func_80130278(s32 arg0); -extern void func_80130314(s32 a0); -extern void func_80130360(s32 a0); -extern void func_8012E364(void); -extern void func_801303A0(s32 a0); -extern void func_801303EC(void *a0); -extern void func_80143CD4(s32 a0); -extern void func_800CB0E8(s32 a0); -extern void func_80130438(s32 a0); -extern void func_801319E0(int); -extern int func_80131D68(int, int); -extern int func_8012BEE8(int); -extern void func_80131CA8(int, int); -extern void func_80130514(int param_1); -extern void func_801305CC(u8 *a0); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_80130740(void *a0, u16 *a1); -extern s32 func_801312D0(s32 a0, void *a1); -extern void func_801307B0(s32 a0); -extern void func_80130858(s32 a0); -extern void func_80130898(u8 *a0); -extern void func_801308DC(s32 a0); -extern void func_80166244(); -extern void func_80130974(int param_1); -extern void func_80130AC4(s32 a0); -extern int func_80131A34(int a0, int a1); -extern void func_80130AF0(int param_1); -extern void (*D_8018D5A4[])(void); -extern void func_80130D0C(void *a0); -extern s32 rand(void); -extern u8 D_80078E78[]; -extern u16 D_80078EB2; -extern u16 D_80078EB4; -extern s16 D_8018D5F4[]; -extern s16 D_8018D624[]; -extern s16 D_8018D684[]; -extern s16 D_8018D68C[]; -extern s16 D_8018D6AC[]; -extern void func_80130D48(s32 arg0); -extern void func_80131170(s32 p, s32 b, s32 c); -extern s32 func_801312D0(s32 param_1, void *param_2); -extern void func_8002A04C(s32 a0); -extern void func_801319E0(s32 arg0); -extern s32 func_80131CF4(s32 a0); -extern void (*D_8018D6E4[])(struct S80131E00 *a0); -extern void func_80131E38(u8 *a0); -extern void func_80131E7C(s32 a0); -extern void func_80131EE4(void); -extern void (*D_8018D73C[])(void); -extern void func_80131EEC(void *a0); -extern void (*D_8018D784[])(void); -extern void func_80131F28(void *a0); -extern void (*D_8018D78C[])(void); -extern void func_80131F64(void *a0); -extern void (*D_8018D794[])(void); -extern void func_80131FA0(void *a0); -extern void (*D_8018D79C[])(void); -extern void func_80131FDC(void *a0); -extern void func_801320D0(void); -extern void func_8001C214(int, int); -extern int D_8018D744; -extern void func_801320D8(int param_1); -extern s32 func_80132144(s32 param_1); -extern int D_8018D764; -extern void func_801321B0(int param_1); -extern int D_8018D774; -extern void func_8013221C(int param_1); -extern void func_8005C324(int dst, int src, int n) __asm__("memcpy"); /* Phase-24: 0x8005C324 is named memcpy for overlays (whale needs it); keep the non-builtin C name here (else built-in codegen), emit via asm-label */ -extern void func_801325B8(int a0, int a1, int a2, int a3, int a4); -extern void func_80132288(int *param_1, int *param_2, int param_3); -extern void func_801325B8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_8013240C(s32 a0); -extern void func_8013277C(void); -extern void func_80020F34(s32 a0, s32 a1); -extern void func_80054514(s32 a0, s32 a1); -extern void func_80132784(s32 a0, s32 a1, u32 a2); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_80132DC4(s32 a0, s32 a1, s32 a2); -extern s32 func_80132E6C(s16 *a0); -extern void func_80132EC4(void *a0, s16 a1); -extern s32 func_80132EF4(s32 a0, s32 a1); -extern void func_801330E0(void * param_1, s16 * param_2, s32 param_3); -extern void func_80133060(u8 *a0, s32 *a1, s32 a2); -extern void func_8013339C(short *param_1, short *param_2); -extern s32 func_8013361C(s16 *a0, s16 *a1, s16 *a2, s16 *a3); -extern s32 D_801E5A80; -extern s32 D_801E5A84[]; -extern int D_801E5A88; -extern void func_80136BC4(s32 a0); -extern void func_801336E8(void *a0, int a1, int a2); -extern void func_80136BC4(s32); -extern void func_8013373C(s16 arg0); -extern s32 func_80133784(s32 arg0, void *arg1, s32 arg2); -extern s32 func_80133CD4(); -extern s32 func_8013435C(s16 *a0, s16 *a1, s32 a2, s16 *a3); -extern s32 func_801343C4(s32 angle, s32 p1, s32 p2); -extern s32 func_80134510(s32 param); -extern s32 func_801345F8(s32 arg); -extern s32 func_801347A0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134A28(s32 a0, s32 a1, s32 a2); -extern s32 func_80134C20(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134FB8(s32 a0, s32 a1, s32 a2); -extern s32 func_80135004(s32 arg0, s32 p1, s32 p2); -extern u8 D_8018D7A8; -extern u8 D_8018D7A4; -extern s16 *D_8018D7AC; -extern u8 D_8018D7B0; -extern int D_801E5A80; -extern u16 D_801E5A90; -extern int func_80134A74(int, s16, s16, int); -extern int func_80135168(u16 arg0, u16 *p1, u16 *p2); -extern s16 func_80135480(void *param_1, s32 param_2, s16 *param_3, s16 *param_4); -extern s32 func_80136334(void *arg0, s32 arg1, s32 arg2); -extern s32 func_80136824(s32 arg0, s32 arg1, s32 arg2); -extern s16 *D_8018D7AC; /* holds a pointer value (*(u16**)&D_8018D7AC) */ -extern s32 func_80136A94(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80136C3C(void); -extern void func_80136C1C(void); -extern void func_80136C44(void); -extern void func_80136C4C(void); -extern void (*D_8018D7C0[])(void); -extern void func_80136C54(void); -extern s32 func_80136C90(); -extern void func_80136D00(void); -extern void SetLineG2(void *); -extern void func_80136D08(s32 arg0, s32 arg1); -extern void func_80136EC4(void); -extern short D_800B9A02; -extern u8 D_800A6518[]; -extern void GsSortLine(void *a0, void *a1, s32 a2); -extern void func_80136ECC(s16 a0, s16 a1, s16 a2, s16 a3, u8 r, u8 g, u8 b); -extern void func_80137030(s16 a0, s16 a1); -extern void ApplyMatrixSV(void *m, Svec_801372B0 *in, Svec_801372B0 *out); -extern void aGsSortLine(Gline_801372B0 *p, void *ot, s32 z) __asm__("GsSortLine"); -extern void aF80137030(s32 x, s32 y) __asm__("func_80137030"); -extern void func_80137178(s32 x, s32 y); -extern u8 D_800AF630[]; -extern u16 aD800B9A02 __asm__("D_800B9A02"); -extern void func_801372B0(void); -extern void func_80137614(s32 a0, s32 a1, s32 a2); -extern void func_801375EC(s32 a0, s16 a1); -extern s32 func_801399A8(void); -extern void func_801377B4(s32 a0, s32 a1, s32 a2); -extern s32 func_8013767C(s32 a0); -extern void func_801376E8(int a0, int a1); -extern void func_801376C8(int a0); -extern s32 D_80127524; -extern s32 D_80127528; -extern void func_80137840(s32 a0); -extern void func_80139634(void *); -extern void func_80139DC8(void); -extern s16 D_8012752E; -extern void func_801379D8(void); -extern void func_801379EC(void); -extern int D_8018D814; -extern int D_801269F0; -extern void func_80138BE0(int p); -extern void func_80137B80(void); -extern void func_801392FC(); -extern void func_801397B0(s32 a0); -extern void func_80137DD4(s32 a0, u8 *a1, u8 *a2); -extern void func_80139680(s32 a0, u8 *a1); -extern u16 D_800B99D8; -extern void func_80137BD8(s32 a0); -extern unsigned char D_80126A0E; -extern short D_80126A0A; -extern s16 D_801269F4; -extern int D_800A5E60; -extern int func_80137D08(int arg0, int arg1, short arg2); -extern void func_80137FD8(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_801380E0(s32 arg0); -extern void func_801387B8(s32 arg0); -extern void func_80138948(void *a0); -extern s16 func_80138DB8(s32 a0, u8 a1, s32 a2); -extern void func_80138B88(s32 a0); -extern void func_8013895C(s32 a0); -extern s16 D_80127540[4]; -extern s32 func_80139D04(s32 a0, s32 a1); -extern s32 func_80138DE0(u8 *arg0, u8 arg1, s32 arg2); -extern void func_80139B18(s32 a0); -extern void func_80138AB4(s32 a0); -extern void (*D_8018D818[])(void); -extern void func_80138C30(void *a0); -extern s32 func_80139BE0(s32); -extern s32 func_80138C60(s32 arg0); -extern void func_8013A9F8(s32 a0, s32 a1); -extern void func_80138D58(s32 a0, u16 a1); -extern s32 func_80014E80(s32 a0, s32 a1); -extern s32 func_80138ED0(u8 *param_1, u32 param_2, u8 *param_3); -extern s32 func_8013914C(s32 a0, s32 a1); -extern void func_800599B8(u16 *); -extern u16 D_80127C0C[]; -extern s32 D_80127548[]; -extern s32 func_80139220(s32 a0); -extern void func_801391F0(void *a0); -extern void func_801392C8(void *a0); -extern void func_801395D4(void *); -extern s32 GetTPage(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80052460(s32 a0, s32 a1, s32 a2); -extern void func_801392FC(s32 arg0, s32 arg1, u8 *arg2); -extern void func_80059888(void *a0, s32 a1, s32 a2, s32 a3); -extern void func_801395D4(void * a0); -extern void func_80139634(void *a0); -extern void func_80139680(s32 arg0, u8 * arg1); -extern void func_8001931C(void); -extern s16 D_8012752C; -extern void func_80139788(void); -extern u8 D_8018D85C; -extern u8 D_8018D8A0; -extern void GsSortSprite(void *a0, u8 *a1, s32 a2); -extern void func_801397B0(s32 arg0); -extern void func_8013A8B0(s32 *a0); -extern void func_80139914(s32 arg0); -extern u16 D_80126A08; -extern s32 D_801269F0; -extern s32 *D_80126A30; -extern void func_80139954(void); -extern s32 D_80126A3C; -extern s32 func_801399F0(s32 a0); -extern s32 D_80127520; -extern void func_80139A34(s32 a0); -extern s32 D_80127530[4]; -extern void func_80139A44(s32 a0, u16 a1); -extern void func_80139A68(s32 a0, u16 a1); -extern void func_80139A8C(s32 a0); -extern void func_80139C7C(u8 *a0); -extern s16 D_8012811A; -extern void func_80139DEC(void); -extern void func_80139DF4(s32 a0); -extern void func_80139E84(s32 a0); -extern void func_80139F0C(s32 a0); -extern void func_80139FBC(struct obj *a0); -extern s32 func_8001B22C(void *a0); -extern void func_80139FE8(void *a0); -extern void func_8013A0A4(struct S8013A0A4 *a0); -extern void func_8013A164(struct S8013A164 *a0); -extern void func_8013A1E8(s32 a0); -extern void func_8013A250(struct S8013A250 *a0); -extern void func_8013A2BC(s32 a0); -extern void func_8013A378(void); -extern u8 D_8011DA80[]; -extern void func_8013A530(); -extern void func_8013A448(void *a0); -extern void func_8013A4C4(struct S8013A4C4 *a0); -extern void func_8013A380(void); -extern void func_80015D4C(); -extern void func_80015F04(); -extern void func_8013AA24(s32 a0, s32 a1); -extern void func_8013A530(int param_1); -extern void func_8013A860(void); -extern s32 func_8013A8BC(void); -extern void func_8013A9B4(s32 a0, s32 a1); -extern s32 func_8013A8FC(s32 arg0); -extern void func_8013AD38(void *a0, s32 a1, void *a2, void *a3); -extern void func_8013B204(s32 a0, s32 a1); -extern void func_8013AF20(); -extern void func_8013B274(s32 a0, s32 a1, void *a2); -extern s32 D_800A5E60; -extern s32 func_8013AB54(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */ -extern u8 D_8018D8E4[]; /* sign table, alt (when a1 < 0xC00) */ -extern void func_8013AD38(void *flag, s32 a1, void *out2, void *out3); -extern void func_8013AF20(u32 *param_1, u16 *param_2, u16 *param_3, u8 *param_4); -extern s16 D_8018D95C, D_8018D95E, D_8018D960, D_8018D962, D_8018D964, D_8018D966; -extern u16 D_800D45F6; -/* ==== end §8b carried decl layer ==== */ - - - -void func_8013B568(s32 arg0) { - - extern s32 D_8018D968; - D_8018D968 = arg0; -} - - - -/* func_8013B598 (ov_SC01_077_o0, -O0): fills entry a0 of the 0x1C-stride table at - * D_801E79E8 from a 3-halfword source record. - * - * -O0 CONSTANT-OFFSET FOLD (the quirk that stalled this -O0 cluster in Phase 19): - * at -O0 gcc-2.7.2 folds a constant offset into the memory operand ONLY through a - * COMPONENT_REF / a real ARRAY_REF on an array-typed DECL: - * D_801E79E8[a0].f4 = ... -> lui $at,%hi(sym); addu $at,$at,idx; sh %lo(sym+4)($at) - * A CAST base defeats it (NOP_EXPR over the ADDR_EXPR), and so does pointer indexing: - * ((S *)D_801E79E8)[a0].f4 -> lui;addiu;addu;sh 4(reg) (+2 ins per store) - * a1[1] -> addiu $v1,$a0,2; lhu 0($v1) (+1 ins per load) - * So the table extern must carry the FULL struct type (not the pad-only canonical - * E_3B7AC), and the source record must be read as ->field, not as a[i]. Casting the - * incoming POINTER is harmless (a NOP on a register), only the base decl's type matters. - * - * Both types are body-scoped (cookbook §100) and the extern is declared inside the body, - * matching the established -O0 sibling pattern in src/ov_SC07_010/ov_SC07_010_o0.c - * (func_8013B7AC: `extern E_3B7AC D_801A9420[];` in-body). NOTE FOR BANKING: the canonical - * sig-layer decl `extern E_3B7AC D_801E79E8[];` (f0 + pad only) CANNOT be used here — it has - * no f4/f6/f8/fC members. The in-body decl below must be the one that survives; do not also - * emit a file-scope E_3B7AC decl for D_801E79E8 (conflicting types). - * - * 66/66 instructions byte-identical (match_one --o0). - */ -void func_8013B598(s32 a0, u16 *a1) { - extern Spr_8013B598_8013B598 D_801E79E8[]; - - D_801E79E8[a0].f0 = 1; - D_801E79E8[a0].f4 = ((Src_8013B598_8013B598 *)a1)->f0; - D_801E79E8[a0].f6 = ((Src_8013B598_8013B598 *)a1)->f2; - D_801E79E8[a0].f8 = ((Src_8013B598_8013B598 *)a1)->f4; - D_801E79E8[a0].fC = 0x100; -} - - - - -void func_8013B6A0(s32 idx, u16 *src, s32 val) -{ - extern Ent_8013B6A0_8013B6A0 D_801E79E8[]; - - D_801E79E8[idx].f0 = 1; - D_801E79E8[idx].f4 = ((Src_8013B6A0_8013B6A0 *)src)->f0; - D_801E79E8[idx].f6 = ((Src_8013B6A0_8013B6A0 *)src)->f2; - D_801E79E8[idx].f8 = ((Src_8013B6A0_8013B6A0 *)src)->f4; - D_801E79E8[idx].fC = val; -} - - - /* sizeof 0x1C stride */ -void func_8013B7AC(int a0) { - extern E_3B7AC_8013B7AC D_801E79E8[]; - D_801E79E8[a0].f0 = 0; } - - - - -void func_8013B7F4(s32 a0, s32 a1) { - - extern s32 D_801E7B1C; - func_8013B83C(a0, a1, D_801E7B1C); -} - - -extern s32 D_801E7AB8; -extern s32 D_801E7B1C; - -void func_8013B83C(s32 a0, s32 a1, s32 a2) { - /* sizeof 0x1C */ - extern Ent_8013B83C D_801DAA08_e[] __asm__("D_801E79E8"); - extern s32 D_801E7A9C; - extern s32 D_801E7AA0; - extern s32 D_801E7AA4; - extern s32 D_801E7AC8; - extern s32 D_801E7B18; - extern s32 D_801E7B20; - extern s16 D_800B9A0E; - extern void func_80052D90(s32 a0, void *a1); - extern void func_8013C08C(void *a0, s32 a1); - s32 i; - - D_801E7AB8 = 0; - D_801E7AA4 = 0; - D_801E7AA0 = 0; - D_801E7A9C = 0; - func_80052D90(0, &D_801E7AC8); - if (a0 == 0) { - return; - } - D_801E7B18 = a2 + 500; - D_801E7B1C = a2; - for (i = 0; i < 4; i++) { - D_801DAA08_e[i].f0 = 0; - D_801DAA08_e[i].f4 = D_801DAA08_e[i].f6 = D_801DAA08_e[i].f8 = 0x6000; - D_801DAA08_e[i].fC = 0x100; - D_801DAA08_e[i].f18 = 0; - } - switch (*(u8 *)a0) { - case 0x42: - if (D_800B9A0E == 0) { - func_8013BD74(&D_801E7AB8, a0); - } else { - func_8013BD74(&D_801E7AB8, a1); - } - D_801E7B20 = 0; - break; - case 0x43: - func_8013C08C(&D_801E7AB8, a0); - D_801E7B20 = 1; - break; - case 0x44: - func_8013C08C(&D_801E7AB8, a0); - D_801E7B20 = 2; - break; - case 0x45: - func_8013C08C(&D_801E7AB8, a0); - D_801E7B20 = 3; - break; - case 0x46: - func_8013C08C(&D_801E7AB8, a0); - D_801E7B20 = 4; - break; - case 0x47: - func_8013C08C(&D_801E7AB8, a0); - D_801E7B20 = 5; - break; - case 0x48: - func_8013C08C(&D_801E7AB8, a0); - D_801E7B20 = 6; - break; - case 0x49: - func_8013C08C(&D_801E7AB8, a0); - D_801E7B20 = 9; - break; - case 0x4A: - func_8013C08C(&D_801E7AB8, a0); - D_801E7B20 = 0xC; - break; - case 0x4B: - func_8013C08C(&D_801E7AB8, a0); - D_801E7B20 = 0xD; - break; - case 0x4C: - func_8013C08C(&D_801E7AB8, a0); - D_801E7B20 = 0xE; - break; - case 0x4D: - func_8013C08C(&D_801E7AB8, a0); - D_801E7B20 = 0xF; - break; - case 0x4E: - func_8013C08C(&D_801E7AB8, a0); - D_801E7B20 = 0x10; - break; - } -} - - - - -void func_8013BC7C(void *arg0) { - - extern void (*D_8018D1C4[])(void *); - D_8018D1C4[((S_8013BC7C_8013BC7C *)arg0)->f68](arg0); -} - - - -/* func_8013BCDC (ov_SC01_077_o0, -O0): guarded indirect call through D_8018D968. - * D_8018D968 is declared `extern s32` in the TU (canonical-sig layer) and holds a - * function pointer; read it as an s32, test non-null, cast to fn-ptr and call. - * Frame residual: target frame is 0x30 (saves $ra/$fp/$s0 at 0x28/0x24/0x20) — 16 - * bytes of var_size above the minimal 0x20. At -O0 (no DCE) an unused 16-byte local - * reserves exactly that var region (cookbook §42 lever 3, frame-pad induction) with - * zero body instructions. 22/22 byte-identical via rtu_match. */ -void func_8013BCDC(void) { - - extern s32 D_8018D968; - s32 pad[4]; - if (D_8018D968 != 0) { - ((void (*)(void))D_8018D968)(); - } -} - - - -void func_8013BD34(s32 a0) { - - extern s32 D_801E7AB8; - func_8013BD74(&D_801E7AB8, a0); -} - - - -extern s16 D_801E7990; -extern s16 D_801E7992; -extern s16 D_801E7994; -extern s16 D_801E7996; - -void func_8013BD74(void *a0, s32 a1) { - /* §100 draft-LOCAL types: file-scope typedefs are NOT carried by extract_unit/remap_hseq, so a - file-scope E_13BD74 banks the exemplar and then fails every sibling with `E_13BD74' - undeclared (the §94 type-carry class, measured on ov_SC01_000). Block scope travels with the - body and is byte-neutral (a type emits no code). */ - s32 *q; - s32 *p; - s32 i; - s32 unused0; - s32 unused1; - P_13BD74 *e; - P_13BD74 *end; - s32 unused2; - s32 base; - s32 unused3; - - D_801E7990 = -0xA0; - D_801E7992 = -0x78; - D_801E7994 = 0x140; - D_801E7996 = 0xF0; - ((E_13BD74 *)a0)->f8 = (void *)a1; - ((E_13BD74 *)a0)->fC = (void *)(a1 + 8); - base = a1 + 0x4008; - if (((u8 *)a1)[4] == 0) { - p = (s32 *)((E_13BD74 *)a0)->fC; - for (i = 0; i < 0x1000; i++) { - if (*p != 0) { - *p += (s32)((E_13BD74 *)a0)->fC; - q = (s32 *)*p; - q[0] += (s32)q; - q[5] += (s32)q; - e = (P_13BD74 *)q[5]; - q[6] = q[6] * 12 + q[5]; - end = (P_13BD74 *)q[6]; - while (e < end) { - switch (e->code) { - case 0x24: - case 0x2C: - case 0x34: - case 0x3C: - *(s32 *)e = (*(s32 *)e & 0xFFFFFF) + base; - break; - case 0x26: - case 0x2E: - case 0x36: - case 0x3E: - *(s32 *)e = (*(s32 *)e & 0xFFFFFF) + base; - break; - } - e++; - } - } - p++; - } - ((u8 *)a1)[4] = 1; - } -} - - -DEFINE_func_8013C08C() /* dedup: shared engine-core @0x8013C08C (src/shared) */ - - - -void func_8013C0F8(int param_1) { - int iVar1; - int iVar2; - unsigned int local_18; - unsigned int local_14; - Bar *local_10; - Foo *local_c; - - iVar1 = param_1 + 0x14; - if (*(char *)(param_1 + 4) == '\0') { - iVar2 = iVar1 + *(int *)(param_1 + 0xc); - *(int *)(param_1 + 0xc) = iVar2; - *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + iVar1; - local_c = (Foo *)iVar1; - for (local_18 = 0; local_18 < *(unsigned int *)(param_1 + 8); local_18++, local_c++) { - local_c->field10 = local_c->field10 + iVar1; - local_10 = (Bar *)local_c->field10; - for (local_14 = 0; local_14 < local_c->count; local_14++, local_10++) { - switch (local_10->tag) { - case 0x24: - case 0x2c: - case 0x34: - case 0x3c: - *(unsigned int *)local_10 = (*(unsigned int *)local_10 & 0xffffff) + iVar2; - break; - case 0x26: - case 0x2e: - case 0x36: - case 0x3e: - *(unsigned int *)local_10 = (*(unsigned int *)local_10 & 0xffffff) + iVar2; - break; - } - } - } - *(unsigned char *)(param_1 + 4) = 1; - } -} - -DEFINE_func_8013C360() /* dedup: shared engine-core @0x8013C360 (src/shared) */ - - -void func_8013C414(s32 param_1, s32 param_2) -{ - s32 base10; /* 0x00 */ - s32 p; /* 0x04 */ - s32 q; /* 0x08 */ - s32 base4008; /* 0x0C */ - s32 lo; /* 0x10 */ - u32 i; /* 0x14 */ - s32 unused; /* 0x18 */ - s32 base8; /* 0x1C */ - T3Reloc *r; /* 0x20 */ - T3Reloc *s; /* 0x24 */ - - if (*(s32 *)(param_2 + 4) == 0) { - base10 = param_2 + 0x10; - base4008 = param_1 + 0x4008; - lo = *(s32 *)(param_2 + 0xC) + base10; - base8 = param_1 + 8; - p = base10; - for (i = 0; i < *(u32 *)(param_2 + 8); i++) { - *(s32 *)p = *(s32 *)p + base8; - if (*(s32 *)(p + 4) != 0) { - *(s32 *)(p + 4) = *(s32 *)(p + 4) + base10; - q = *(s32 *)(p + 4); - *(s32 *)q = *(s32 *)q + q; - *(s32 *)(q + 0x14) = *(s32 *)(q + 0x14) + q; - r = (T3Reloc *)*(s32 *)(q + 0x14); - *(s32 *)(q + 0x18) = *(s32 *)(q + 0x18) * 0xC + *(s32 *)(q + 0x14); - s = (T3Reloc *)*(s32 *)(q + 0x18); - while (r < s) { - switch (r->type) { - case 0x24: - case 0x2C: - case 0x34: - case 0x3C: - if ((*(u32 *)r) & 0x800000) { - (*(u32 *)r) = ((*(u32 *)r) & 0x7FFFFF) + lo; - } else { - (*(u32 *)r) = ((*(u32 *)r) & 0xFFFFFF) + base4008; - } - break; - case 0x26: - case 0x2E: - case 0x36: - case 0x3E: - if ((*(u32 *)r) & 0x800000) { - (*(u32 *)r) = ((*(u32 *)r) & 0x7FFFFF) + lo; - } else { - (*(u32 *)r) = ((*(u32 *)r) & 0xFFFFFF) + base4008; - } - break; - } - r++; - } - } - p = p + 0xC; - } - *(s32 *)(param_2 + 4) = 1; - p = param_2 + 0x10; - for (i = 0; i < *(u32 *)(param_2 + 8); i++) { - if (*(s32 *)(p + 8) == 0) { - *(s32 *)(p + 8) = *(s32 *)(*(s32 *)p); - } - p = p + 0xC; - } - } else { - p = param_2 + 0x10; - for (i = 0; i < *(u32 *)(param_2 + 8); i++) { - *(s32 *)(*(s32 *)p) = *(s32 *)(p + 8); - p = p + 0xC; - } - } -} - - - -void func_8013C938(void) { - - extern s32 D_801E7AB8; - D_801E7AB8 = 1; -} - - - -void func_8013C964(void) { - - extern s32 D_801E7AB8; - D_801E7AB8 = 0; -} - diff --git a/tools/pads_audit.py b/tools/pads_audit.py index c890109df..245525f0e 100644 --- a/tools/pads_audit.py +++ b/tools/pads_audit.py @@ -22,7 +22,14 @@ def carves(tu): out.append((a, end)) return out def compiled_tables(tu): - cmd = subprocess.run(['make', '-n', '-W', 'src/%s/%s.c' % (b, tu), 'build/src/%s/%s.o' % (b, tu), 'BINARY=%s' % b], capture_output=True, text=True).stdout + # Phase 35 T3: the TU's source comes from the binary's source dir through the oracle — a twin's objects + # (build/src//_x.o) are compiled from src//_x.c (R33; a hand-built src// path + # found no compile line for a twin and raised IndexError here). + sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) + import corpus + prim = corpus.twin_of(b) or b + src = os.path.join(corpus.src_dir(b), tu.replace(b, prim, 1) + '.c') + cmd = subprocess.run(['make', '-n', '-W', src, 'build/src/%s/%s.o' % (b, tu), 'BINARY=%s' % b], capture_output=True, text=True).stdout line = [l for l in cmd.splitlines() if 'cc1' in l][0] line = re.sub(r'\|\s*\.venv/bin/python\s+tools/jtbl_rodata_pads\.py[^|]*', '', line) line = re.sub(r'\|\s*[^|]*mipsel-linux-gnu-as.*$', '', line)